diff --git a/Configuration/Form/FormElements/GridColumn.yaml b/Configuration/Form/FormElements/GridColumn.yaml index 70c9f2a7e..af3583e80 100644 --- a/Configuration/Form/FormElements/GridColumn.yaml +++ b/Configuration/Form/FormElements/GridColumn.yaml @@ -56,8 +56,8 @@ prototypes: formEditor: translationFiles: 1686735592: 'EXT:bootstrap_package/Resources/Private/Language/FormGridColumn.xlf' - dynamicRequireJsModules: + dynamicJavaScriptModules: additionalViewModelModules: - 1686735592: 'TYPO3/CMS/BootstrapPackage/Backend/FormEditor/GridColumnViewModel' + 1686735592: '@bk2k/bootstrap-package/backend/form-editor/grid-column-view-model.js' formEditorPartials: FormElement-GridColumn: Stage/Fieldset diff --git a/Configuration/JavaScriptModules.php b/Configuration/JavaScriptModules.php new file mode 100644 index 000000000..37af116a5 --- /dev/null +++ b/Configuration/JavaScriptModules.php @@ -0,0 +1,18 @@ + [ + 'core', + 'form', + ], + 'imports' => [ + '@bk2k/bootstrap-package/' => 'EXT:bootstrap_package/Resources/Public/JavaScript/ESM/', + ], +]; diff --git a/Resources/Public/JavaScript/Backend/FormEditor/GridColumnViewModel.js b/Resources/Public/JavaScript/Backend/FormEditor/GridColumnViewModel.js deleted file mode 100644 index 7ef8a25c8..000000000 --- a/Resources/Public/JavaScript/Backend/FormEditor/GridColumnViewModel.js +++ /dev/null @@ -1,130 +0,0 @@ -define([ - 'jquery', - 'TYPO3/CMS/Form/Backend/FormEditor/Helper' -], function ($, Helper) { - 'use strict'; - - return (function ($, Helper) { - - /** - * @private - * - * @var object - */ - var _formEditorApp = null; - - /** - * @private - * - * @return object - */ - function getFormEditorApp() { - return _formEditorApp; - }; - - /** - * @private - * - * @return object - */ - function getPublisherSubscriber() { - return getFormEditorApp().getPublisherSubscriber(); - }; - - /** - * @private - * - * @return object - */ - function getUtility() { - return getFormEditorApp().getUtility(); - }; - - /** - * @private - * - * @param object - * @return object - */ - function getHelper() { - return Helper; - }; - - /** - * @private - * - * @return object - */ - function getCurrentlySelectedFormElement() { - return getFormEditorApp().getCurrentlySelectedFormElement(); - }; - - /** - * @private - * - * @param mixed test - * @param string message - * @param int messageCode - * @return void - */ - function assert(test, message, messageCode) { - return getFormEditorApp().assert(test, message, messageCode); - }; - - /** - * @private - * - * @return void - * @throws 1491643380 - */ - function _helperSetup() { - assert('function' === $.type(Helper.bootstrap), - 'The view model helper does not implement the method "bootstrap"', - 1491643380 - ); - Helper.bootstrap(getFormEditorApp()); - }; - - /** - * @private - * - * @return void - */ - function _subscribeEvents() { - /** - * @private - * - * @param string - * @param array - * args[0] = formElement - * args[1] = template - * @return void - */ - getPublisherSubscriber().subscribe('view/stage/abstract/render/template/perform', function (topic, args) { - if (args[0].get('type') === 'GridColumn') { - getFormEditorApp().getViewModel().getStage().renderSimpleTemplateWithValidators(args[0], args[1]); - } - }); - }; - - /** - * @public - * - * @param object formEditorApp - * @return void - */ - function bootstrap(formEditorApp) { - _formEditorApp = formEditorApp; - _helperSetup(); - _subscribeEvents(); - }; - - /** - * Publish the public methods. - * Implements the "Revealing Module Pattern". - */ - return { - bootstrap: bootstrap - }; - })($, Helper); -}); diff --git a/Resources/Public/JavaScript/ESM/backend/form-editor/grid-column-view-model.js b/Resources/Public/JavaScript/ESM/backend/form-editor/grid-column-view-model.js new file mode 100644 index 000000000..70f0b41b9 --- /dev/null +++ b/Resources/Public/JavaScript/ESM/backend/form-editor/grid-column-view-model.js @@ -0,0 +1,48 @@ +/** + * Module: @bk2k/bootstrap-package/backend/form-editor/grid-column-view-model.js + */ + +import $ from 'jquery'; +import * as StageComponent from '@typo3/form/backend/form-editor/stage-component.js'; + +/** + * @private + * + * @return object + */ +function getPublisherSubscriber(formEditorApp) { + return formEditorApp.getPublisherSubscriber(); +} + +/** + * @private + * + * @return void + */ +function subscribeEvents(formEditorApp) { + /** + * @private + * + * @param string + * @param array + * args[0] = formElement + * args[1] = template + * @return void + * @subscribe view/stage/abstract/render/template/perform + */ + getPublisherSubscriber(formEditorApp).subscribe('view/stage/abstract/render/template/perform', function (topic, args) { + if (args[0].get('type') === 'GridColumn') { + StageComponent.renderCheckboxTemplate(args[0], args[1]); + } + }); +} + +/** + * @public + * + * @param object formEditorApp + * @return void + */ +export function bootstrap(formEditorApp) { + subscribeEvents(formEditorApp); +}