diff --git a/assets/controllers/dropdown.js b/assets/controllers/dropdown.js new file mode 100644 index 00000000..abbefd06 --- /dev/null +++ b/assets/controllers/dropdown.js @@ -0,0 +1,15 @@ +import {Controller} from '@hotwired/stimulus' + +export default class extends Controller { + static values = { + toggledClass: { type: String, default: 'show' }, + } + + static targets = [ + 'content', + ]; + + toggle() { + this.contentTarget.classList.toggle(this.toggledClassValue) + } +} diff --git a/assets/package.json b/assets/package.json index 36305897..afcc6e62 100755 --- a/assets/package.json +++ b/assets/package.json @@ -19,6 +19,11 @@ "main": "controllers/state.js", "fetch": "eager", "enabled": true + }, + "dropdown": { + "main": "controllers/dropdown.js", + "fetch": "eager", + "enabled": true } }, "importmap": { diff --git a/src/Action/Type/Dropdown/DropdownActionType.php b/src/Action/Type/Dropdown/DropdownActionType.php new file mode 100644 index 00000000..146365f0 --- /dev/null +++ b/src/Action/Type/Dropdown/DropdownActionType.php @@ -0,0 +1,36 @@ +getAction(); + $itemAction->setDataTable($action->getDataTable()); + + $itemActions[] = $itemAction->createView($view->parent); + } + + $view->vars['actions'] = $itemActions; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->define('actions') + ->allowedTypes(ActionBuilderInterface::class.'[]') + ->required() + ; + } +} diff --git a/src/Action/Type/Dropdown/LinkDropdownItemActionType.php b/src/Action/Type/Dropdown/LinkDropdownItemActionType.php new file mode 100644 index 00000000..ef94012c --- /dev/null +++ b/src/Action/Type/Dropdown/LinkDropdownItemActionType.php @@ -0,0 +1,16 @@ +set('kreyu_data_table.action.type.form', FormActionType::class) ->tag('kreyu_data_table.action.type') ; + + $services + ->set('kreyu_data_table.action.type.dropdown', DropdownActionType::class) + ->tag('kreyu_data_table.action.type') + ; + + $services + ->set('kreyu_data_table.action.type.link_dropdown_item', LinkDropdownItemActionType::class) + ->tag('kreyu_data_table.action.type') + ; }; diff --git a/src/Resources/views/themes/base.html.twig b/src/Resources/views/themes/base.html.twig index fafa635e..cd8796a5 100755 --- a/src/Resources/views/themes/base.html.twig +++ b/src/Resources/views/themes/base.html.twig @@ -632,6 +632,25 @@ {% endblock %} +{% block action_dropdown_control %} +