typo3-typescript-sources 13.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/sync-and-publish.yml +265 -0
- package/.last-synced-tag +1 -0
- package/LICENSE.txt +339 -0
- package/README-TYPO3.md +166 -0
- package/README.md +28 -0
- package/adminpanel/admin-panel.ts +375 -0
- package/adminpanel/modules/cache.ts +27 -0
- package/adminpanel/modules/preview.ts +75 -0
- package/backend/action-button/abstract-action.ts +22 -0
- package/backend/action-button/deferred-action.ts +41 -0
- package/backend/action-button/immediate-action.ts +31 -0
- package/backend/action-dispatcher.ts +104 -0
- package/backend/ajax-data-handler/message-interface.ts +18 -0
- package/backend/ajax-data-handler/response-interface.ts +20 -0
- package/backend/ajax-data-handler.ts +214 -0
- package/backend/backend-exception.ts +22 -0
- package/backend/broadcast-message.ts +50 -0
- package/backend/broadcast-service.ts +52 -0
- package/backend/browse-database.ts +38 -0
- package/backend/clear-cache.ts +88 -0
- package/backend/clipboard-panel.ts +240 -0
- package/backend/close-current-window.ts +2 -0
- package/backend/code-editor/autocomplete/completion-result.ts +105 -0
- package/backend/code-editor/autocomplete/ts-code-completion.ts +142 -0
- package/backend/code-editor/autocomplete/ts-parser.ts +485 -0
- package/backend/code-editor/autocomplete/ts-ref.ts +164 -0
- package/backend/code-editor/element/code-mirror-element.ts +282 -0
- package/backend/code-editor/language/typoscript.ts +181 -0
- package/backend/code-editor/stream-parser/typoscript.ts +1600 -0
- package/backend/color-picker.ts +158 -0
- package/backend/color-scheme-switch.ts +179 -0
- package/backend/column-selector-button.ts +302 -0
- package/backend/context-help.ts +68 -0
- package/backend/context-menu-actions.ts +322 -0
- package/backend/context-menu.ts +751 -0
- package/backend/copy-to-clipboard.ts +79 -0
- package/backend/date-time-picker.ts +270 -0
- package/backend/document-save-actions.ts +159 -0
- package/backend/drag-tooltip.ts +285 -0
- package/backend/drag-uploader.ts +914 -0
- package/backend/element/alert-element.ts +116 -0
- package/backend/element/dispatch-modal-button.ts +50 -0
- package/backend/element/draggable-resizable-element.ts +249 -0
- package/backend/element/editable-page-title.ts +306 -0
- package/backend/element/icon-element.ts +84 -0
- package/backend/element/immediate-action-element.ts +89 -0
- package/backend/element/pagination.ts +59 -0
- package/backend/element/progress-bar-element.ts +172 -0
- package/backend/element/progress-tracker-element.ts +119 -0
- package/backend/element/pseudo-button.ts +58 -0
- package/backend/element/spinner-element.ts +51 -0
- package/backend/element/thumbnail-element.ts +80 -0
- package/backend/element-browser.ts +182 -0
- package/backend/enum/data-transfer-types.ts +21 -0
- package/backend/enum/icon-types.ts +31 -0
- package/backend/enum/key-types.ts +27 -0
- package/backend/enum/severity.ts +20 -0
- package/backend/enum/viewport/scaffold-identifier.ts +24 -0
- package/backend/event/client-request.ts +25 -0
- package/backend/event/consumable.ts +18 -0
- package/backend/event/consumer-scope.ts +54 -0
- package/backend/event/event-dispatcher.ts +26 -0
- package/backend/event/interaction-request-assignment.ts +24 -0
- package/backend/event/interaction-request-map.ts +75 -0
- package/backend/event/interaction-request.ts +48 -0
- package/backend/event/trigger-request.ts +56 -0
- package/backend/form/submit-interceptor.ts +66 -0
- package/backend/form-engine/container/files-control-container.ts +716 -0
- package/backend/form-engine/container/flex-form-container-container.ts +166 -0
- package/backend/form-engine/container/flex-form-section-container.ts +210 -0
- package/backend/form-engine/container/inline-control-container.ts +1230 -0
- package/backend/form-engine/container/site-language-container.ts +616 -0
- package/backend/form-engine/element/abstract-sortable-select-items.ts +186 -0
- package/backend/form-engine/element/category-element.ts +160 -0
- package/backend/form-engine/element/color-element.ts +81 -0
- package/backend/form-engine/element/datetime-element.ts +66 -0
- package/backend/form-engine/element/extra/char-counter.ts +112 -0
- package/backend/form-engine/element/extra/select-box-filter.ts +85 -0
- package/backend/form-engine/element/folder-element.ts +66 -0
- package/backend/form-engine/element/group-element.ts +47 -0
- package/backend/form-engine/element/json-element.ts +52 -0
- package/backend/form-engine/element/link-element.ts +121 -0
- package/backend/form-engine/element/mfa-info-element.ts +169 -0
- package/backend/form-engine/element/modifier/resizable.ts +27 -0
- package/backend/form-engine/element/modifier/tabbable.ts +29 -0
- package/backend/form-engine/element/online-media-form-element.ts +65 -0
- package/backend/form-engine/element/password-element.ts +71 -0
- package/backend/form-engine/element/select-multiple-side-by-side-element.ts +83 -0
- package/backend/form-engine/element/select-single-element.ts +82 -0
- package/backend/form-engine/element/select-tree-element.ts +148 -0
- package/backend/form-engine/element/select-tree-toolbar.ts +118 -0
- package/backend/form-engine/element/select-tree.ts +210 -0
- package/backend/form-engine/element/slug-element.ts +243 -0
- package/backend/form-engine/element/suggest/result-container.ts +118 -0
- package/backend/form-engine/element/suggest/result-item.ts +90 -0
- package/backend/form-engine/element/table-permission-element.ts +101 -0
- package/backend/form-engine/element/table-wizard-element.ts +427 -0
- package/backend/form-engine/element/text-element.ts +52 -0
- package/backend/form-engine/element/text-table-element.ts +31 -0
- package/backend/form-engine/field-control/add-record.ts +40 -0
- package/backend/form-engine/field-control/edit-popup.ts +64 -0
- package/backend/form-engine/field-control/insert-clipboard.ts +50 -0
- package/backend/form-engine/field-control/link-popup.ts +53 -0
- package/backend/form-engine/field-control/list-module.ts +40 -0
- package/backend/form-engine/field-control/password-generator.ts +102 -0
- package/backend/form-engine/field-control/reset-selection.ts +48 -0
- package/backend/form-engine/field-wizard/localization-state-selector.ts +67 -0
- package/backend/form-engine/field-wizard/value-picker.ts +123 -0
- package/backend/form-engine/field-wizard/value-slider.ts +86 -0
- package/backend/form-engine/inline-relation/ajax-dispatcher.ts +124 -0
- package/backend/form-engine/inline-relation/inline-response-interface.ts +41 -0
- package/backend/form-engine-link-browser-adapter.ts +129 -0
- package/backend/form-engine-review.ts +155 -0
- package/backend/form-engine-suggest.ts +133 -0
- package/backend/form-engine-validation.ts +686 -0
- package/backend/form-engine.ts +1391 -0
- package/backend/global-event-handler.ts +252 -0
- package/backend/grid-editor.ts +1077 -0
- package/backend/hashing/md5.ts +252 -0
- package/backend/helper.ts +24 -0
- package/backend/hotkeys/hotkey-storage.ts +63 -0
- package/backend/hotkeys.ts +216 -0
- package/backend/icons.ts +236 -0
- package/backend/image-manipulation.ts +885 -0
- package/backend/info-window.ts +46 -0
- package/backend/input/clearable.ts +128 -0
- package/backend/input/index.d.ts +8 -0
- package/backend/java-script-module-import-event-handler.ts +19 -0
- package/backend/key-bindings.ts +42 -0
- package/backend/layout-module/drag-drop.ts +359 -0
- package/backend/layout-module/paste.ts +165 -0
- package/backend/link-browser.ts +89 -0
- package/backend/live-search/element/backend-search.ts +34 -0
- package/backend/live-search/element/hint.ts +33 -0
- package/backend/live-search/element/provider/default-result-item.ts +52 -0
- package/backend/live-search/element/provider/page-provider-result-item.ts +52 -0
- package/backend/live-search/element/result/item/action/action-container.ts +135 -0
- package/backend/live-search/element/result/item/action/action.ts +56 -0
- package/backend/live-search/element/result/item/item-container.ts +224 -0
- package/backend/live-search/element/result/item/item.ts +74 -0
- package/backend/live-search/element/result/result-container.ts +110 -0
- package/backend/live-search/element/result/result-detail-container.ts +50 -0
- package/backend/live-search/element/result/result-pagination.ts +122 -0
- package/backend/live-search/element/search-option-item.ts +70 -0
- package/backend/live-search/live-search-configurator.ts +54 -0
- package/backend/live-search/live-search-shortcut.ts +29 -0
- package/backend/live-search/result-types/backend-module-result-type.ts +8 -0
- package/backend/live-search/result-types/default-result-type.ts +21 -0
- package/backend/live-search/result-types/page-result-type.ts +23 -0
- package/backend/localization.ts +390 -0
- package/backend/login-refresh.ts +525 -0
- package/backend/login.ts +179 -0
- package/backend/mail-link-handler.ts +45 -0
- package/backend/modal-interface.ts +19 -0
- package/backend/modal.ts +685 -0
- package/backend/module/iframe.ts +125 -0
- package/backend/module/router.ts +275 -0
- package/backend/module-menu.ts +550 -0
- package/backend/module.ts +133 -0
- package/backend/multi-record-selection-action.ts +44 -0
- package/backend/multi-record-selection-delete-action.ts +108 -0
- package/backend/multi-record-selection-edit-action.ts +56 -0
- package/backend/multi-record-selection.ts +468 -0
- package/backend/multi-step-wizard.ts +568 -0
- package/backend/new-content-element-wizard-button.ts +51 -0
- package/backend/new-multiple-pages.ts +108 -0
- package/backend/new-record-wizard.ts +680 -0
- package/backend/notification.ts +366 -0
- package/backend/offset.ts +40 -0
- package/backend/online-media.ts +110 -0
- package/backend/page-actions.ts +91 -0
- package/backend/page-link-handler.ts +51 -0
- package/backend/pagetsconfig/pagetsconfig-includes.ts +77 -0
- package/backend/popover.ts +165 -0
- package/backend/record-download-button.ts +104 -0
- package/backend/record-link-handler.ts +31 -0
- package/backend/record-search.ts +44 -0
- package/backend/recordlist.ts +230 -0
- package/backend/resource/resource.ts +35 -0
- package/backend/security/element/csp-reports.ts +406 -0
- package/backend/security/element/sudo-mode.ts +249 -0
- package/backend/security/sudo-mode-interceptor.ts +19 -0
- package/backend/settings/editor/editable-setting.ts +231 -0
- package/backend/settings/editor.ts +451 -0
- package/backend/settings/enum/settings-mode.enum.ts +24 -0
- package/backend/settings/type/base.ts +200 -0
- package/backend/settings/type/bool.ts +56 -0
- package/backend/settings/type/color.ts +64 -0
- package/backend/settings/type/int.ts +85 -0
- package/backend/settings/type/number.ts +61 -0
- package/backend/settings/type/page.ts +100 -0
- package/backend/settings/type/string.ts +77 -0
- package/backend/settings/type/stringlist.ts +87 -0
- package/backend/severity.ts +88 -0
- package/backend/site-inline-actions.ts +32 -0
- package/backend/sortable-table.ts +208 -0
- package/backend/storage/abstract-client-storage.ts +76 -0
- package/backend/storage/browser-session.ts +28 -0
- package/backend/storage/client.ts +28 -0
- package/backend/storage/module-state-storage.ts +118 -0
- package/backend/storage/persistent.ts +204 -0
- package/backend/switch-user.ts +82 -0
- package/backend/tabs.ts +72 -0
- package/backend/telephone-link-handler.ts +40 -0
- package/backend/tests/backend/storage/browser-storage-test.ts +87 -0
- package/backend/tests/backend/storage/client-test.ts +87 -0
- package/backend/tests/backend/utility/dom-helper-test.ts +51 -0
- package/backend/tests/backend-exception-test.ts +28 -0
- package/backend/tests/element/immediate-action-element-test.ts +81 -0
- package/backend/tests/form-engine-validation-test.ts +304 -0
- package/backend/tests/grid-editor-test.ts +29 -0
- package/backend/tests/hashing/md5Test.ts +28 -0
- package/backend/tests/icons-test.ts +23 -0
- package/backend/tests/notification-test.ts +161 -0
- package/backend/tests/popover-test.ts +83 -0
- package/backend/toolbar/clear-cache-menu.ts +88 -0
- package/backend/toolbar/live-search.ts +284 -0
- package/backend/toolbar/shortcut-menu.ts +254 -0
- package/backend/toolbar/system-information-menu.ts +161 -0
- package/backend/toolbar.ts +41 -0
- package/backend/tree/file-storage-browser.ts +194 -0
- package/backend/tree/file-storage-tree-container.ts +465 -0
- package/backend/tree/file-storage-tree.ts +42 -0
- package/backend/tree/page-browser.ts +272 -0
- package/backend/tree/page-tree-element.ts +602 -0
- package/backend/tree/page-tree.ts +152 -0
- package/backend/tree/tree-module-state.ts +159 -0
- package/backend/tree/tree-node-toggle.ts +31 -0
- package/backend/tree/tree-node.ts +97 -0
- package/backend/tree/tree-toolbar.ts +117 -0
- package/backend/tree/tree.ts +1595 -0
- package/backend/url-link-handler.ts +36 -0
- package/backend/user-pass-login.ts +255 -0
- package/backend/user-settings-manager.ts +189 -0
- package/backend/utility/collapse-state-persister.ts +205 -0
- package/backend/utility/collapse-state-search.ts +183 -0
- package/backend/utility/dom-helper.ts +91 -0
- package/backend/utility/drag-drop-utility.ts +47 -0
- package/backend/utility/message-utility.ts +45 -0
- package/backend/utility/top-level-module-import.ts +32 -0
- package/backend/utility.ts +194 -0
- package/backend/viewport/abstract-container.ts +22 -0
- package/backend/viewport/content-container.ts +98 -0
- package/backend/viewport/loader.ts +28 -0
- package/backend/viewport/navigation-container.ts +119 -0
- package/backend/viewport/resizable-navigation.ts +176 -0
- package/backend/viewport/toolbar.ts +27 -0
- package/backend/viewport/topbar.ts +39 -0
- package/backend/viewport.ts +46 -0
- package/backend/window-manager.ts +84 -0
- package/backend/wizard/move-content-element.ts +107 -0
- package/backend/wizard/move-page.ts +74 -0
- package/backend/wizard.ts +331 -0
- package/belog/backend-log.ts +88 -0
- package/beuser/backend-user-listing.ts +40 -0
- package/beuser/permissions.ts +291 -0
- package/core/ajax/ajax-request-types.ts +15 -0
- package/core/ajax/ajax-request.ts +202 -0
- package/core/ajax/ajax-response.ts +57 -0
- package/core/ajax/input-transformer.ts +92 -0
- package/core/ajax/simple-response-interface.ts +5 -0
- package/core/authentication/mfa-provider/totp.ts +54 -0
- package/core/cache/dedupe-async-task.ts +95 -0
- package/core/directive/markdown.ts +82 -0
- package/core/directive/nl2br.ts +16 -0
- package/core/document-service.ts +35 -0
- package/core/event/debounce-event.ts +40 -0
- package/core/event/event-interface.ts +24 -0
- package/core/event/regular-event.ts +58 -0
- package/core/event/request-animation-frame-event.ts +42 -0
- package/core/event/throttle-event.ts +54 -0
- package/core/java-script-item-handler.ts +29 -0
- package/core/java-script-item-processor.ts +171 -0
- package/core/lit-helper.ts +126 -0
- package/core/literals.ts +17 -0
- package/core/referrer-refresh.ts +2 -0
- package/core/security-utility.ts +89 -0
- package/core/tests/ajax/ajax-request-test.ts +290 -0
- package/core/tests/ajax/input-transformer-test.ts +64 -0
- package/core/tests/cache/dedupe-async-task-test.ts +152 -0
- package/core/tests/event/throttle-event-test.ts +47 -0
- package/core/tests/literals-test.ts +24 -0
- package/core/tests/security-utility-test.ts +50 -0
- package/core/utility/types.ts +9 -0
- package/dashboard/chart-initializer.ts +136 -0
- package/dashboard/dashboard.ts +1487 -0
- package/extensionmanager/distribution-image.ts +55 -0
- package/extensionmanager/main.ts +291 -0
- package/extensionmanager/repository.ts +195 -0
- package/extensionmanager/update.ts +118 -0
- package/extensionmanager/upload-form.ts +42 -0
- package/filelist/browse-files.ts +148 -0
- package/filelist/browse-folders.ts +94 -0
- package/filelist/context-menu-actions.ts +335 -0
- package/filelist/create-folder.ts +69 -0
- package/filelist/file-delete.ts +69 -0
- package/filelist/file-list-actions.ts +132 -0
- package/filelist/file-list-dragdrop.ts +139 -0
- package/filelist/file-list-rename-handler.ts +128 -0
- package/filelist/file-list-transfer-handler.ts +138 -0
- package/filelist/file-list.ts +396 -0
- package/filelist/file-replace.ts +37 -0
- package/filelist/linkbrowser-file-handler.ts +94 -0
- package/filelist/linkbrowser-folder-handler.ts +74 -0
- package/filelist/rename-file.ts +109 -0
- package/form/backend/form-editor/component/property-grid-editor.ts +340 -0
- package/form/backend/form-editor/core.ts +2104 -0
- package/form/backend/form-editor/helper.ts +226 -0
- package/form/backend/form-editor/inspector-component.ts +2323 -0
- package/form/backend/form-editor/mediator.ts +941 -0
- package/form/backend/form-editor/modals-component.ts +433 -0
- package/form/backend/form-editor/stage-component.ts +908 -0
- package/form/backend/form-editor/tree-component.ts +548 -0
- package/form/backend/form-editor/view-model.ts +1343 -0
- package/form/backend/form-editor.ts +846 -0
- package/form/backend/form-manager/main.ts +39 -0
- package/form/backend/form-manager/view-model.ts +789 -0
- package/form/backend/form-manager.ts +180 -0
- package/form/backend/helper.ts +60 -0
- package/form/frontend/date-picker.ts +38 -0
- package/frontend/default_frontend.ts +82 -0
- package/impexp/context-menu-actions.ts +50 -0
- package/impexp/import-export.ts +62 -0
- package/indexed-search/pagination.ts +26 -0
- package/indexed-search/statistics.ts +50 -0
- package/info/translation-status.ts +48 -0
- package/install/ajax/ajax-queue.ts +83 -0
- package/install/init-install.ts +2 -0
- package/install/init-installer.ts +2 -0
- package/install/install.ts +25 -0
- package/install/installer.ts +458 -0
- package/install/message-interface.ts +18 -0
- package/install/module/abstract-inline-module.ts +27 -0
- package/install/module/abstract-interactable-module.ts +107 -0
- package/install/module/environment/environment-check.ts +92 -0
- package/install/module/environment/folder-structure.ts +145 -0
- package/install/module/environment/image-processing.ts +141 -0
- package/install/module/environment/mail-test.ts +127 -0
- package/install/module/environment/php-info.ts +50 -0
- package/install/module/environment/system-information.ts +50 -0
- package/install/module/maintenance/cache.ts +59 -0
- package/install/module/maintenance/clear-tables.ts +134 -0
- package/install/module/maintenance/clear-typo3temp-files.ts +137 -0
- package/install/module/maintenance/create-admin.ts +126 -0
- package/install/module/maintenance/database-analyzer.ts +266 -0
- package/install/module/maintenance/dump-autoload.ts +58 -0
- package/install/module/maintenance/language-packs.ts +338 -0
- package/install/module/maintenance/reset-backend-user-uc.ts +58 -0
- package/install/module/password-strength.ts +56 -0
- package/install/module/settings/change-install-tool-password.ts +101 -0
- package/install/module/settings/extension-configuration.ts +224 -0
- package/install/module/settings/features.ts +102 -0
- package/install/module/settings/local-configuration.ts +316 -0
- package/install/module/settings/presets.ts +147 -0
- package/install/module/settings/system-maintainer.ts +111 -0
- package/install/module/upgrade/core-update.ts +255 -0
- package/install/module/upgrade/extension-compat-tester.ts +195 -0
- package/install/module/upgrade/extension-scanner.ts +381 -0
- package/install/module/upgrade/tca-ext-tables-check.ts +93 -0
- package/install/module/upgrade/tca-migrations-check.ts +101 -0
- package/install/module/upgrade/upgrade-docs.ts +310 -0
- package/install/module/upgrade/upgrade-wizards.ts +612 -0
- package/install/renderable/clearable.ts +113 -0
- package/install/renderable/flash-message.ts +64 -0
- package/install/renderable/info-box.ts +66 -0
- package/install/renderable/language-packs.ts +304 -0
- package/install/renderable/offset-group.ts +38 -0
- package/install/renderable/severity.ts +49 -0
- package/install/renderable/wrap-group.ts +36 -0
- package/install/router.ts +468 -0
- package/linkvalidator/linkvalidator-modal.ts +45 -0
- package/linkvalidator/linkvalidator.ts +101 -0
- package/lowlevel/query-generator.ts +132 -0
- package/lowlevel/reference-index.ts +44 -0
- package/opendocs/toolbar/opendocs-menu.ts +117 -0
- package/package.json +34 -0
- package/recycler/recycler.ts +539 -0
- package/redirects/event-handler.ts +108 -0
- package/redirects/form-engine-evaluation.ts +34 -0
- package/redirects/redirects-module.ts +58 -0
- package/rte-ckeditor/ckeditor5.ts +402 -0
- package/rte-ckeditor/css-prefixer.ts +94 -0
- package/rte-ckeditor/legacy/ckeditor5-bundle.ts +17 -0
- package/rte-ckeditor/legacy/ckeditor5-inspector.ts +2 -0
- package/rte-ckeditor/plugin/typo3-link.ts +810 -0
- package/rte-ckeditor/plugin/whitespace.ts +114 -0
- package/rte-ckeditor/rte-link-browser.ts +112 -0
- package/rte-ckeditor/tests/css-prefixer-test.ts +314 -0
- package/scheduler/scheduler-add-group.ts +119 -0
- package/scheduler/scheduler-editable-group-name.ts +307 -0
- package/scheduler/scheduler-sortable-groups.ts +59 -0
- package/scheduler/scheduler.ts +466 -0
- package/setup/setup-module.ts +122 -0
- package/styleguide/checkbox-demo.ts +5 -0
- package/styleguide/element/theme-switcher-element.ts +101 -0
- package/styleguide/filter.ts +22 -0
- package/styleguide/find-icons.ts +78 -0
- package/styleguide/processing-indicator.ts +78 -0
- package/styleguide/render-notifications.ts +64 -0
- package/sys-note/element/delete-button.ts +78 -0
- package/tstemplate/constant-editor.ts +64 -0
- package/tstemplate/information-module.ts +31 -0
- package/tstemplate/template-analyzer.ts +77 -0
- package/viewpage/main.ts +253 -0
- package/workspaces/backend.ts +979 -0
- package/workspaces/preview.ts +232 -0
- package/workspaces/renderable/comment-view.ts +79 -0
- package/workspaces/renderable/diff-view.ts +58 -0
- package/workspaces/renderable/history-view.ts +97 -0
- package/workspaces/renderable/record-information.ts +118 -0
- package/workspaces/renderable/record-table.ts +355 -0
- package/workspaces/renderable/send-to-stage-form.ts +108 -0
- package/workspaces/toolbar/workspaces-menu.ts +190 -0
- package/workspaces/utility/icon-helper.ts +57 -0
- package/workspaces/workspaces.ts +136 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Popover as BootstrapPopover } from 'bootstrap';
|
|
2
|
+
import Popover from '@typo3/backend/popover.js';
|
|
3
|
+
import { expect } from '@open-wc/testing';
|
|
4
|
+
import type { } from 'mocha';
|
|
5
|
+
|
|
6
|
+
describe('@typo3/backend/popover-test', () => {
|
|
7
|
+
describe('initialize', () => {
|
|
8
|
+
const element = document.createElement('div');
|
|
9
|
+
element.dataset.bsToggle = 'popover';
|
|
10
|
+
document.body.append(element);
|
|
11
|
+
|
|
12
|
+
it('works with default selector', () => {
|
|
13
|
+
Popover.initialize();
|
|
14
|
+
expect(element.outerHTML).to.equal('<div data-bs-toggle="popover"></div>');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const element2 = document.createElement('div');
|
|
18
|
+
element2.dataset.bsToggle = 'popover';
|
|
19
|
+
element2.dataset.title = 'foo';
|
|
20
|
+
document.body.append(element2);
|
|
21
|
+
it('works with default selector and title attribute', () => {
|
|
22
|
+
Popover.initialize();
|
|
23
|
+
expect(element2.outerHTML).to.equal('<div data-bs-toggle="popover" data-title="foo" data-bs-title="foo"></div>');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const element3 = document.createElement('div');
|
|
27
|
+
element3.dataset.bsToggle = 'popover';
|
|
28
|
+
element3.dataset.bsContent = 'foo';
|
|
29
|
+
document.body.append(element3);
|
|
30
|
+
it('works with default selector and content attribute', () => {
|
|
31
|
+
Popover.initialize();
|
|
32
|
+
expect(element3.outerHTML).to.equal('<div data-bs-toggle="popover" data-bs-content="foo"></div>');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const element4 = document.createElement('div');
|
|
36
|
+
element4.classList.add('t3js-popover');
|
|
37
|
+
document.body.append(element4);
|
|
38
|
+
it('works with custom selector', () => {
|
|
39
|
+
Popover.initialize('.t3js-popover');
|
|
40
|
+
expect(element4.outerHTML).to.equal('<div class="t3js-popover"></div>');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe('call setOptions', () => {
|
|
45
|
+
const element = document.createElement('div');
|
|
46
|
+
element.classList.add('t3js-test-set-options');
|
|
47
|
+
element.dataset.title = 'foo-title';
|
|
48
|
+
element.dataset.bsContent = 'foo-content';
|
|
49
|
+
document.body.append(element);
|
|
50
|
+
|
|
51
|
+
it('can set title', () => {
|
|
52
|
+
Popover.initialize('.t3js-test-set-options');
|
|
53
|
+
expect(element.getAttribute('data-title')).to.equal('foo-title');
|
|
54
|
+
expect(element.getAttribute('data-bs-content')).to.equal('foo-content');
|
|
55
|
+
Popover.setOptions(element, <BootstrapPopover.Options>{
|
|
56
|
+
'title': 'bar-title'
|
|
57
|
+
});
|
|
58
|
+
expect(element.getAttribute('data-title')).to.equal('foo-title');
|
|
59
|
+
expect(element.getAttribute('data-bs-content')).to.equal('foo-content');
|
|
60
|
+
expect(element.getAttribute('data-bs-original-title')).to.equal('bar-title');
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const element2 = document.createElement('div');
|
|
64
|
+
element2.classList.add('t3js-test-set-options2');
|
|
65
|
+
element2.dataset.title = 'foo-title';
|
|
66
|
+
element2.dataset.bsContent = 'foo-content';
|
|
67
|
+
document.body.append(element2);
|
|
68
|
+
|
|
69
|
+
it('can set content', () => {
|
|
70
|
+
Popover.initialize('.t3js-test-set-options2');
|
|
71
|
+
// Popover must be visible before the content can be updated manually via setOptions()
|
|
72
|
+
Popover.show(element2);
|
|
73
|
+
expect(element2.getAttribute('data-title')).to.equal('foo-title');
|
|
74
|
+
expect(element2.getAttribute('data-bs-content')).to.equal('foo-content');
|
|
75
|
+
Popover.setOptions(element2, <BootstrapPopover.Options>{
|
|
76
|
+
'content': 'bar-content'
|
|
77
|
+
});
|
|
78
|
+
expect(element2.getAttribute('data-title')).to.equal('foo-title');
|
|
79
|
+
expect(element2.getAttribute('data-bs-content')).to.equal('bar-content');
|
|
80
|
+
expect(element2.getAttribute('data-bs-original-title')).to.equal('foo-title');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the TYPO3 CMS project.
|
|
3
|
+
*
|
|
4
|
+
* It is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU General Public License, either version 2
|
|
6
|
+
* of the License, or any later version.
|
|
7
|
+
*
|
|
8
|
+
* For the full copyright and license information, please read the
|
|
9
|
+
* LICENSE.txt file that was distributed with this source code.
|
|
10
|
+
*
|
|
11
|
+
* The TYPO3 project - inspiring people to share!
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
15
|
+
import Icons from '../icons';
|
|
16
|
+
import Notification from '../notification';
|
|
17
|
+
import Viewport from '../viewport';
|
|
18
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
19
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
20
|
+
|
|
21
|
+
enum Identifiers {
|
|
22
|
+
containerSelector = '#typo3-cms-backend-backend-toolbaritems-clearcachetoolbaritem',
|
|
23
|
+
menuItemSelector = '.t3js-toolbar-cache-flush-action',
|
|
24
|
+
toolbarIconSelector = '.toolbar-item-icon .t3js-icon',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Module: @typo3/backend/toolbar/clear-cache-menu
|
|
29
|
+
* main functionality for clearing caches via the top bar
|
|
30
|
+
* reloading the clear cache icon
|
|
31
|
+
*/
|
|
32
|
+
class ClearCacheMenu {
|
|
33
|
+
constructor() {
|
|
34
|
+
Viewport.Topbar.Toolbar.registerEvent(this.initializeEvents);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Registers listeners for the icons inside the dropdown to trigger
|
|
39
|
+
* the clear cache call
|
|
40
|
+
*/
|
|
41
|
+
private readonly initializeEvents = (): void => {
|
|
42
|
+
const toolbarItemContainer = document.querySelector(Identifiers.containerSelector);
|
|
43
|
+
|
|
44
|
+
new RegularEvent('click', (e: Event, menuItem: HTMLAnchorElement): void => {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
if (menuItem.href) {
|
|
47
|
+
this.clearCache(menuItem.href);
|
|
48
|
+
}
|
|
49
|
+
}).delegateTo(toolbarItemContainer, Identifiers.menuItemSelector);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Calls TYPO3 to clear a cache, then changes the topbar icon
|
|
54
|
+
* to a spinner. Restores the original topbar icon when the request completed.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} ajaxUrl The URL to load
|
|
57
|
+
*/
|
|
58
|
+
private clearCache(ajaxUrl: string): void {
|
|
59
|
+
const toolbarItemContainer = document.querySelector(Identifiers.containerSelector);
|
|
60
|
+
// Close clear cache menu
|
|
61
|
+
toolbarItemContainer.classList.remove('open');
|
|
62
|
+
|
|
63
|
+
const toolbarItemIcon = toolbarItemContainer.querySelector(Identifiers.toolbarIconSelector);
|
|
64
|
+
const existingIcon = toolbarItemIcon.cloneNode(true);
|
|
65
|
+
|
|
66
|
+
Icons.getIcon('spinner-circle', Icons.sizes.small).then((spinner: string): void => {
|
|
67
|
+
toolbarItemIcon.replaceWith(document.createRange().createContextualFragment(spinner));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
(new AjaxRequest(ajaxUrl)).post({}).then(
|
|
71
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
72
|
+
const data = await response.resolve();
|
|
73
|
+
if (data.success === true) {
|
|
74
|
+
Notification.success(data.title, data.message);
|
|
75
|
+
} else if (data.success === false) {
|
|
76
|
+
Notification.error(data.title, data.message);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
(): void => {
|
|
80
|
+
Notification.error(TYPO3.lang['flushCaches.error'], TYPO3.lang['flushCaches.error.description']);
|
|
81
|
+
},
|
|
82
|
+
).finally((): void => {
|
|
83
|
+
toolbarItemContainer.querySelector(Identifiers.toolbarIconSelector).replaceWith(existingIcon);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export default new ClearCacheMenu();
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the TYPO3 CMS project.
|
|
3
|
+
*
|
|
4
|
+
* It is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU General Public License, either version 2
|
|
6
|
+
* of the License, or any later version.
|
|
7
|
+
*
|
|
8
|
+
* For the full copyright and license information, please read the
|
|
9
|
+
* LICENSE.txt file that was distributed with this source code.
|
|
10
|
+
*
|
|
11
|
+
* The TYPO3 project - inspiring people to share!
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { lll } from '@typo3/core/lit-helper';
|
|
15
|
+
import Modal from '../modal';
|
|
16
|
+
import '@typo3/backend/element/icon-element';
|
|
17
|
+
import '@typo3/backend/input/clearable';
|
|
18
|
+
import '../live-search/element/hint';
|
|
19
|
+
import '../live-search/element/result/result-pagination';
|
|
20
|
+
import '../live-search/element/search-option-item';
|
|
21
|
+
import '../live-search/live-search-shortcut';
|
|
22
|
+
import DocumentService from '@typo3/core/document-service';
|
|
23
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
24
|
+
import DebounceEvent from '@typo3/core/event/debounce-event';
|
|
25
|
+
import { SeverityEnum } from '@typo3/backend/enum/severity';
|
|
26
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
27
|
+
import BrowserSession from '@typo3/backend/storage/browser-session';
|
|
28
|
+
import { componentName as resultContainerComponentName, type ResultContainer } from '@typo3/backend/live-search/element/result/result-container';
|
|
29
|
+
import { ModuleStateStorage } from '@typo3/backend/storage/module-state-storage';
|
|
30
|
+
import type { ResultItemInterface } from '@typo3/backend/live-search/element/result/item/item';
|
|
31
|
+
import type { Pagination, ResultPagination } from '@typo3/backend/live-search/element/result/result-pagination';
|
|
32
|
+
|
|
33
|
+
enum Identifiers {
|
|
34
|
+
toolbarItem = '.t3js-topbar-button-search',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface SearchOption {
|
|
38
|
+
key: string;
|
|
39
|
+
value: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type SearchResponse = {
|
|
43
|
+
pagination: Pagination,
|
|
44
|
+
results: ResultItemInterface[]|null;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export interface ChooseItemEventData {
|
|
48
|
+
resultItem: ResultItemInterface;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface InvokeOptionEventData {
|
|
52
|
+
active: boolean;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface SelectPageEventData {
|
|
56
|
+
offset: number;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Module: @typo3/backend/toolbar/live-search
|
|
62
|
+
* Global search to deal with everything in the backend that is search-related
|
|
63
|
+
* @exports @typo3/backend/toolbar/live-search
|
|
64
|
+
*/
|
|
65
|
+
class LiveSearch {
|
|
66
|
+
private currentSearchRequest: AjaxRequest|null = null;
|
|
67
|
+
|
|
68
|
+
constructor() {
|
|
69
|
+
DocumentService.ready().then((): void => {
|
|
70
|
+
this.registerEvents();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private registerEvents(): void {
|
|
75
|
+
new RegularEvent('click', (): void => {
|
|
76
|
+
this.openSearchModal();
|
|
77
|
+
}).delegateTo(document, Identifiers.toolbarItem);
|
|
78
|
+
|
|
79
|
+
new RegularEvent('typo3:live-search:trigger-open', (): void => {
|
|
80
|
+
if (Modal.currentModal) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
this.openSearchModal();
|
|
85
|
+
}).bindTo(document);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private openSearchModal(): void {
|
|
89
|
+
const url = new URL(TYPO3.settings.ajaxUrls.livesearch_form, window.location.origin);
|
|
90
|
+
const moduleStateStorage = ModuleStateStorage.current('web');
|
|
91
|
+
if (moduleStateStorage.identifier) {
|
|
92
|
+
url.searchParams.set('pageId', moduleStateStorage.identifier);
|
|
93
|
+
}
|
|
94
|
+
url.searchParams.set('query', BrowserSession.get('livesearch-term') ?? '');
|
|
95
|
+
url.searchParams.set('offset', BrowserSession.get('livesearch-offset') ?? '0');
|
|
96
|
+
|
|
97
|
+
const persistedSearchOptions = Object.entries(BrowserSession.getByPrefix('livesearch-option-'))
|
|
98
|
+
.filter((item: [string, string]) => item[1] === '1')
|
|
99
|
+
.map((item: [string, string]): SearchOption => {
|
|
100
|
+
const trimmedKey = item[0].replace('livesearch-option-', '');
|
|
101
|
+
const [key, value] = trimmedKey.split('-', 2);
|
|
102
|
+
return { key, value };
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const searchOptions = this.composeSearchOptions(persistedSearchOptions);
|
|
106
|
+
for (const [optionKey, optionValues] of Object.entries(searchOptions)) {
|
|
107
|
+
for (const optionValue of optionValues) {
|
|
108
|
+
url.searchParams.append(`${optionKey}[]`, optionValue);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const modal = Modal.advanced({
|
|
113
|
+
type: Modal.types.ajax,
|
|
114
|
+
content: url.toString(),
|
|
115
|
+
title: lll('labels.search'),
|
|
116
|
+
severity: SeverityEnum.notice,
|
|
117
|
+
size: Modal.sizes.medium,
|
|
118
|
+
ajaxCallback: (): void => {
|
|
119
|
+
const liveSearchContainer = modal.querySelector('typo3-backend-live-search');
|
|
120
|
+
const searchForm = liveSearchContainer.querySelector('form');
|
|
121
|
+
const searchField = searchForm.querySelector('input[type="search"]') as HTMLInputElement;
|
|
122
|
+
const offsetField = searchForm.querySelector('input[name="offset"]') as HTMLInputElement;
|
|
123
|
+
|
|
124
|
+
new RegularEvent('livesearch:demand-changed', (): void => {
|
|
125
|
+
offsetField.value = '0';
|
|
126
|
+
searchForm.requestSubmit();
|
|
127
|
+
}).bindTo(liveSearchContainer);
|
|
128
|
+
|
|
129
|
+
new RegularEvent('livesearch:pagination-selected', (e: CustomEvent<SelectPageEventData>): void => {
|
|
130
|
+
offsetField.value = e.detail.offset.toString(10);
|
|
131
|
+
searchForm.requestSubmit();
|
|
132
|
+
}).bindTo(liveSearchContainer);
|
|
133
|
+
|
|
134
|
+
new RegularEvent('submit', (e: SubmitEvent): void => {
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
|
|
137
|
+
const formData = new FormData(searchForm);
|
|
138
|
+
this.search(formData).then((): void => {
|
|
139
|
+
const query = formData.get('query').toString();
|
|
140
|
+
const offset = formData.get('offset')?.toString();
|
|
141
|
+
BrowserSession.set('livesearch-term', query);
|
|
142
|
+
if (offset) {
|
|
143
|
+
BrowserSession.set('livesearch-offset', offset);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const optionCounterElement = searchForm.querySelector('[data-active-options-counter]') as HTMLElement;
|
|
147
|
+
const count = parseInt(optionCounterElement.dataset.activeOptionsCounter, 10);
|
|
148
|
+
optionCounterElement.querySelector('output').textContent = count.toString(10);
|
|
149
|
+
optionCounterElement.classList.toggle('hidden', count === 0);
|
|
150
|
+
}).bindTo(searchForm);
|
|
151
|
+
|
|
152
|
+
searchField.clearable({
|
|
153
|
+
onClear: (): void => {
|
|
154
|
+
searchForm.requestSubmit();
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
const searchResultContainer: ResultContainer = document.querySelector('typo3-backend-live-search-result-container');
|
|
159
|
+
new RegularEvent('live-search:item-chosen', (): void => {
|
|
160
|
+
Modal.dismiss();
|
|
161
|
+
}).bindTo(searchResultContainer);
|
|
162
|
+
|
|
163
|
+
new RegularEvent('typo3:live-search:option-invoked', (e: CustomEvent<InvokeOptionEventData>): void => {
|
|
164
|
+
const optionCounterElement = searchForm.querySelector('[data-active-options-counter]') as HTMLElement;
|
|
165
|
+
let count = parseInt(optionCounterElement.dataset.activeOptionsCounter, 10);
|
|
166
|
+
count = e.detail.active ? count + 1 : count - 1;
|
|
167
|
+
|
|
168
|
+
// Update data attribute only, the visible text content is updated in the submit handler
|
|
169
|
+
optionCounterElement.dataset.activeOptionsCounter = count.toString(10);
|
|
170
|
+
|
|
171
|
+
liveSearchContainer.dispatchEvent(new CustomEvent('livesearch:demand-changed'));
|
|
172
|
+
}).bindTo(liveSearchContainer);
|
|
173
|
+
|
|
174
|
+
new DebounceEvent('input', (): void => {
|
|
175
|
+
liveSearchContainer.dispatchEvent(new CustomEvent('livesearch:demand-changed'));
|
|
176
|
+
}).bindTo(searchField);
|
|
177
|
+
|
|
178
|
+
new RegularEvent('keydown', this.handleKeyDown).bindTo(searchField);
|
|
179
|
+
|
|
180
|
+
searchForm.requestSubmit();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* The events `modal-loaded` and `typo3-modal-shown` are dispatched in any order, therefore we have to listen to
|
|
186
|
+
* both events to handle search field focus. Unfortunately, there's currently a bug that makes it impossible using
|
|
187
|
+
* Promises instead, which would be much better: https://forge.typo3.org/issues/100026
|
|
188
|
+
*
|
|
189
|
+
* Once the aforementioned issue is fixed, we may use this instead:
|
|
190
|
+
*
|
|
191
|
+
* ```
|
|
192
|
+
* Promise.all([
|
|
193
|
+
* new Promise(res1 => modal.addEventListener('modal-loaded', res1)),
|
|
194
|
+
* new Promise(res2 => modal.addEventListener('typo3-modal-shown', res2))
|
|
195
|
+
* ]).then((): void => {
|
|
196
|
+
* // do stuff here
|
|
197
|
+
* });
|
|
198
|
+
*/
|
|
199
|
+
['modal-loaded', 'typo3-modal-shown'].forEach((eventToListenOn: string) => {
|
|
200
|
+
modal.addEventListener(eventToListenOn, () => {
|
|
201
|
+
const searchField = modal.querySelector('input[type="search"]') as HTMLInputElement|null;
|
|
202
|
+
if (searchField !== null) {
|
|
203
|
+
searchField.focus();
|
|
204
|
+
searchField.select();
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
private composeSearchOptions(searchOptions: SearchOption[]): { [key: string]: string[] } {
|
|
211
|
+
const composedSearchOptions: { [key: string]: string[] } = {};
|
|
212
|
+
searchOptions.forEach((searchOption: SearchOption): void => {
|
|
213
|
+
if (composedSearchOptions[searchOption.key] === undefined) {
|
|
214
|
+
composedSearchOptions[searchOption.key] = [];
|
|
215
|
+
}
|
|
216
|
+
composedSearchOptions[searchOption.key].push(searchOption.value);
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
return composedSearchOptions;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private readonly search = async (formData: FormData): Promise<void> => {
|
|
223
|
+
const query = formData.get('query').toString();
|
|
224
|
+
|
|
225
|
+
if (query === '') {
|
|
226
|
+
this.updateSearchResults(null);
|
|
227
|
+
} else {
|
|
228
|
+
const searchResultContainer = document.querySelector(resultContainerComponentName) as ResultContainer;
|
|
229
|
+
searchResultContainer.loading = true;
|
|
230
|
+
|
|
231
|
+
this.currentSearchRequest?.abort();
|
|
232
|
+
try {
|
|
233
|
+
this.currentSearchRequest = new AjaxRequest(TYPO3.settings.ajaxUrls.livesearch);
|
|
234
|
+
const response = await this.currentSearchRequest.post(formData);
|
|
235
|
+
const json = await response.raw().json();
|
|
236
|
+
this.currentSearchRequest = null;
|
|
237
|
+
this.updateSearchResults(json);
|
|
238
|
+
} catch (err: unknown) {
|
|
239
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
240
|
+
// Request has been aborted, do not flood the error console
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Something else happened, throw again
|
|
245
|
+
throw err;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
private handleKeyDown(e: KeyboardEvent): void {
|
|
251
|
+
if (e.key !== 'ArrowDown') {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
e.preventDefault();
|
|
256
|
+
|
|
257
|
+
// Select first available result item
|
|
258
|
+
const firstSearchResultItem = document.querySelector('typo3-backend-live-search').querySelector('typo3-backend-live-search-result-item') as HTMLElement|null;
|
|
259
|
+
firstSearchResultItem?.focus();
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
private updateSearchResults(response: SearchResponse): void {
|
|
263
|
+
const searchResultContainer: ResultContainer = document.querySelector('typo3-backend-live-search-result-container');
|
|
264
|
+
searchResultContainer.results = response?.results ?? null;
|
|
265
|
+
searchResultContainer.loading = false;
|
|
266
|
+
|
|
267
|
+
this.updatePagination(response?.pagination ?? null);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
private updatePagination(pagination: Pagination): void {
|
|
271
|
+
const paginationElement: ResultPagination = document.querySelector('typo3-backend-live-search-result-pagination');
|
|
272
|
+
paginationElement.pagination = pagination;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
let liveSearchObject: LiveSearch;
|
|
277
|
+
if (!top.TYPO3.LiveSearch) {
|
|
278
|
+
liveSearchObject = new LiveSearch();
|
|
279
|
+
top.TYPO3.LiveSearch = liveSearchObject;
|
|
280
|
+
} else {
|
|
281
|
+
liveSearchObject = top.TYPO3.LiveSearch;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export default liveSearchObject;
|