88use Loki \AdminComponents \Grid \Filter \StaticFilterInterface ;
99use Loki \AdminComponents \Grid \MassAction \MassActionFactory ;
1010use Loki \AdminComponents \Grid \State \FilterState ;
11+ use Loki \AdminComponents \Ui \ButtonInterface ;
1112use Magento \Framework \Data \OptionSourceInterface ;
1213use Magento \Framework \DataObject ;
1314use Magento \Framework \Model \ResourceModel \Db \AbstractDb ;
@@ -270,31 +271,39 @@ public function getCellTemplates(): array
270271 }
271272
272273 /**
273- * @return Button []
274+ * @return ButtonInterface []
274275 */
275276 public function getButtons (): array
276277 {
277- $ buttons = [];
278278 $ buttonActions = (array )$ this ->getBlock ()->getButtonActions ();
279- if (!empty ($ buttonActions )) {
280- foreach ($ buttonActions as $ buttonAction ) {
281- if (!is_array ($ buttonAction )) {
282- continue ;
283- }
279+ if (empty ($ buttonActions )) {
280+ return [];
281+ }
284282
285- if (!isset ($ buttonAction ['method ' ]) || !isset ($ buttonAction ['label ' ])) {
286- continue ;
287- }
283+ $ buttons = [];
288284
289- $ buttons [] = $ this ->buttonFactory ->create (
290- (string )$ buttonAction ['method ' ],
291- (string )$ buttonAction ['label ' ],
292- isset ($ buttonAction ['cssClass ' ]) ? (string )$ buttonAction ['cssClass ' ] : '' ,
293- isset ($ buttonAction ['url ' ]) ? (string )$ buttonAction ['url ' ] : '' ,
294- isset ($ buttonAction ['subButtons ' ]) ? (string )$ buttonAction ['subButtons ' ] : [],
295- isset ($ buttonAction ['primary ' ]) ? (bool )$ buttonAction ['primary ' ] : false ,
296- );
285+ foreach ($ buttonActions as $ buttonAction ) {
286+ if ($ buttonAction instanceof ButtonInterface) {
287+ $ buttons [] = $ buttonAction ;
288+ continue ;
297289 }
290+
291+ if (!is_array ($ buttonAction )) {
292+ continue ;
293+ }
294+
295+ if (!isset ($ buttonAction ['method ' ]) || !isset ($ buttonAction ['label ' ])) {
296+ continue ;
297+ }
298+
299+ $ buttons [] = $ this ->buttonFactory ->create (
300+ (string )$ buttonAction ['method ' ],
301+ (string )$ buttonAction ['label ' ],
302+ isset ($ buttonAction ['cssClass ' ]) ? (string )$ buttonAction ['cssClass ' ] : '' ,
303+ isset ($ buttonAction ['url ' ]) ? (string )$ buttonAction ['url ' ] : '' ,
304+ isset ($ buttonAction ['subButtons ' ]) ? (string )$ buttonAction ['subButtons ' ] : [],
305+ isset ($ buttonAction ['primary ' ]) ? (bool )$ buttonAction ['primary ' ] : false ,
306+ );
298307 }
299308
300309 return $ buttons ;
@@ -317,6 +326,7 @@ public function getMassActions(): array
317326 $ massAction ['label ' ],
318327 $ massAction ['url ' ],
319328 isset ($ massAction ['url_parameters ' ]) ? $ massAction ['url_parameters ' ] : [],
329+ $ massAction ,
320330 );
321331 }
322332 }
0 commit comments