Skip to content

Commit 0021141

Browse files
committed
Rename buttons namespace
1 parent 41ebb62 commit 0021141

8 files changed

Lines changed: 82 additions & 44 deletions

File tree

Component/Form/FormViewModel.php

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22

33
namespace Loki\AdminComponents\Component\Form;
44

5+
use Loki\AdminComponents\Ui\Button\ButtonsResolver;
56
use Loki\AdminComponents\Form\Field\Field;
67
use Loki\AdminComponents\Form\Field\FieldFactory;
7-
use Loki\AdminComponents\Form\FieldResolver;
8+
use Loki\AdminComponents\Form\Field\FieldResolver;
89
use Loki\AdminComponents\Form\Fieldset\Fieldset;
910
use Loki\AdminComponents\Form\Fieldset\FieldsetFactory;
1011
use Loki\AdminComponents\Form\ItemConvertorInterface;
11-
use Loki\AdminComponents\Ui\Button;
12-
use Loki\AdminComponents\Ui\ButtonFactory;
12+
use Loki\AdminComponents\Ui\Button\Button;
13+
use Loki\AdminComponents\Ui\Button\ButtonFactory;
1314
use Loki\Components\Component\ComponentViewModel;
1415
use Magento\Framework\App\RequestInterface;
1516
use Magento\Framework\DataObject;
1617
use Magento\Framework\Exception\LocalizedException;
1718
use Magento\Framework\ObjectManagerInterface;
1819
use Magento\Framework\UrlFactory;
20+
use Throwable;
1921

2022
/**
2123
* @method FormRepository getRepository()
@@ -31,6 +33,7 @@ public function __construct(
3133
protected FieldsetFactory $fieldsetFactory,
3234
protected RequestInterface $request,
3335
protected FieldResolver $fieldResolver,
36+
protected ButtonsResolver $buttonsResolver,
3437
protected array $itemFilters = [],
3538
) {
3639
}
@@ -53,8 +56,9 @@ private function getItemData(): array
5356
{
5457
try {
5558
$item = $this->getRepository()->getItem();
56-
} catch(\Throwable $e) {
59+
} catch (Throwable $e) {
5760
$this->getContext()->getMessageManager()->addErrorMessage($e->getMessage());
61+
5862
return [];
5963
}
6064

@@ -77,43 +81,14 @@ public function getIndexUrl(): string
7781

7882
/**
7983
* @return Button[]
80-
* @todo Move this to Form
8184
*/
8285
public function getButtons(): array
8386
{
84-
$buttonDefinitions = $this->getBlock()->getButtons();
85-
if (!empty($buttonDefinitions)) {
86-
$buttons = [];
87-
foreach ($buttonDefinitions as $buttonDefinition) {
88-
$buttons[] = $this->buttonFactory->create(
89-
method: (string)$buttonDefinition['method'],
90-
label: (string)$buttonDefinition['label'],
91-
cssClass: isset($buttonDefinition['cssClass']) ? (string)$buttonDefinition['cssClass'] : '',
92-
url: isset($buttonDefinition['url']) ? (string)$buttonDefinition['url'] : '',
93-
primary: $buttonDefinition['primary'] ?? false,
94-
);
95-
}
96-
97-
return $buttons;
98-
}
99-
100-
$item = $this->getValue();
101-
if ($item instanceof DataObject && $item->getId() > 0) {
102-
return [
103-
$this->buttonFactory->createCloseAction(),
104-
$this->buttonFactory->createDeleteAction(),
105-
$this->buttonFactory->createSaveContinueAction(),
106-
$this->buttonFactory->createSaveDuplicateAction(),
107-
$this->buttonFactory->createSaveCloseAction(),
108-
];
109-
}
110-
111-
return [
112-
$this->buttonFactory->createCloseAction(),
113-
$this->buttonFactory->createSaveCloseAction(),
114-
// @todo: This looses current changes when creating a new item
115-
//$this->buttonFactory->createSaveContinueAction(),
116-
];
87+
return $this->buttonsResolver->resolve(
88+
$this->getBlock(),
89+
$this->getRepository()->getProvider(),
90+
$this->getValue()
91+
);
11792
}
11893

11994
/**

Component/Grid/GridViewModel.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Loki\AdminComponents\Grid\Filter\StaticFilterInterface;
88
use Loki\AdminComponents\Grid\MassAction\MassActionFactory;
99
use Loki\AdminComponents\Grid\State\FilterState;
10-
use Loki\AdminComponents\Ui\ButtonInterface;
10+
use Loki\AdminComponents\Ui\Button\ButtonInterface;
1111
use Magento\Framework\DataObject;
1212
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
1313
use Magento\Framework\UrlFactory;
@@ -20,7 +20,7 @@
2020
use Loki\AdminComponents\Grid\MassAction\MassActionInterface;
2121
use Loki\AdminComponents\Grid\State;
2222
use Loki\AdminComponents\Grid\StateManager;
23-
use Loki\AdminComponents\Ui\ButtonFactory;
23+
use Loki\AdminComponents\Ui\Button\ButtonFactory;
2424
use Loki\Components\Component\ComponentViewModel;
2525
use Loki\Components\Util\CamelCaseConvertor;
2626

Ui/Button.php renamed to Ui/Button/Button.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php declare(strict_types=1);
22

3-
namespace Loki\AdminComponents\Ui;
3+
namespace Loki\AdminComponents\Ui\Button;
44

55
class Button implements ButtonInterface
66
{
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php declare(strict_types=1);
22

3-
namespace Loki\AdminComponents\Ui;
3+
namespace Loki\AdminComponents\Ui\Button;
44

55
use Magento\Framework\ObjectManagerInterface;
66

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php declare(strict_types=1);
22

3-
namespace Loki\AdminComponents\Ui;
3+
namespace Loki\AdminComponents\Ui\Button;
44

55
interface ButtonInterface
66
{

Ui/Button/ButtonsResolver.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Loki\AdminComponents\Ui\Button;
5+
6+
use Loki\AdminComponents\Provider\FormProviderInterface;
7+
use Magento\Framework\DataObject;
8+
use Magento\Framework\View\Element\AbstractBlock;
9+
10+
class ButtonsResolver
11+
{
12+
public function __construct(
13+
private ButtonFactory $buttonFactory,
14+
) {
15+
}
16+
17+
/**
18+
* @return Button[]
19+
*/
20+
public function resolve(
21+
AbstractBlock $block,
22+
object $provider,
23+
mixed $item
24+
): array {
25+
if ($provider instanceof FormProviderInterface) {
26+
return $provider->getForm()->getButtons();
27+
}
28+
29+
$buttonDefinitions = $block->getButtons();
30+
if (!empty($buttonDefinitions)) {
31+
$buttons = [];
32+
foreach ($buttonDefinitions as $buttonDefinition) {
33+
$buttons[] = $this->buttonFactory->create(
34+
method: (string)$buttonDefinition['method'],
35+
label: (string)$buttonDefinition['label'],
36+
cssClass: isset($buttonDefinition['cssClass']) ? (string)$buttonDefinition['cssClass'] : '',
37+
url: isset($buttonDefinition['url']) ? (string)$buttonDefinition['url'] : '',
38+
primary: $buttonDefinition['primary'] ?? false,
39+
);
40+
}
41+
42+
return $buttons;
43+
}
44+
45+
if ($item instanceof DataObject && $item->getId() > 0) {
46+
return [
47+
$this->buttonFactory->createCloseAction(),
48+
$this->buttonFactory->createDeleteAction(),
49+
$this->buttonFactory->createSaveContinueAction(),
50+
$this->buttonFactory->createSaveDuplicateAction(),
51+
$this->buttonFactory->createSaveCloseAction(),
52+
];
53+
}
54+
55+
return [
56+
$this->buttonFactory->createCloseAction(),
57+
$this->buttonFactory->createSaveCloseAction(),
58+
// @todo: This looses current changes when creating a new item
59+
//$this->buttonFactory->createSaveContinueAction(),
60+
];
61+
}
62+
}

etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<item name="repository" xsi:type="object">Loki\AdminComponents\ProviderHandler\RepositoryHandler</item>
88
<item name="collection" xsi:type="object">Loki\AdminComponents\ProviderHandler\CollectionHandler</item>
99
<item name="array" xsi:type="object">Loki\AdminComponents\ProviderHandler\ArrayHandler</item>
10+
<item name="form" xsi:type="object">Loki\AdminComponents\ProviderHandler\FormHandler</item>
1011
</argument>
1112
</arguments>
1213
</type>

view/adminhtml/templates/ui/button.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
declare(strict_types=1);
33

4-
use Loki\AdminComponents\Ui\ButtonInterface;
4+
use Loki\AdminComponents\Ui\Button\ButtonInterface;
55
use Magento\Framework\Escaper;
66
use Magento\Framework\View\Element\Template;
77

0 commit comments

Comments
 (0)