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.
Files changed (415) hide show
  1. package/.github/workflows/sync-and-publish.yml +265 -0
  2. package/.last-synced-tag +1 -0
  3. package/LICENSE.txt +339 -0
  4. package/README-TYPO3.md +166 -0
  5. package/README.md +28 -0
  6. package/adminpanel/admin-panel.ts +375 -0
  7. package/adminpanel/modules/cache.ts +27 -0
  8. package/adminpanel/modules/preview.ts +75 -0
  9. package/backend/action-button/abstract-action.ts +22 -0
  10. package/backend/action-button/deferred-action.ts +41 -0
  11. package/backend/action-button/immediate-action.ts +31 -0
  12. package/backend/action-dispatcher.ts +104 -0
  13. package/backend/ajax-data-handler/message-interface.ts +18 -0
  14. package/backend/ajax-data-handler/response-interface.ts +20 -0
  15. package/backend/ajax-data-handler.ts +214 -0
  16. package/backend/backend-exception.ts +22 -0
  17. package/backend/broadcast-message.ts +50 -0
  18. package/backend/broadcast-service.ts +52 -0
  19. package/backend/browse-database.ts +38 -0
  20. package/backend/clear-cache.ts +88 -0
  21. package/backend/clipboard-panel.ts +240 -0
  22. package/backend/close-current-window.ts +2 -0
  23. package/backend/code-editor/autocomplete/completion-result.ts +105 -0
  24. package/backend/code-editor/autocomplete/ts-code-completion.ts +142 -0
  25. package/backend/code-editor/autocomplete/ts-parser.ts +485 -0
  26. package/backend/code-editor/autocomplete/ts-ref.ts +164 -0
  27. package/backend/code-editor/element/code-mirror-element.ts +282 -0
  28. package/backend/code-editor/language/typoscript.ts +181 -0
  29. package/backend/code-editor/stream-parser/typoscript.ts +1600 -0
  30. package/backend/color-picker.ts +158 -0
  31. package/backend/color-scheme-switch.ts +179 -0
  32. package/backend/column-selector-button.ts +302 -0
  33. package/backend/context-help.ts +68 -0
  34. package/backend/context-menu-actions.ts +322 -0
  35. package/backend/context-menu.ts +751 -0
  36. package/backend/copy-to-clipboard.ts +79 -0
  37. package/backend/date-time-picker.ts +270 -0
  38. package/backend/document-save-actions.ts +159 -0
  39. package/backend/drag-tooltip.ts +285 -0
  40. package/backend/drag-uploader.ts +914 -0
  41. package/backend/element/alert-element.ts +116 -0
  42. package/backend/element/dispatch-modal-button.ts +50 -0
  43. package/backend/element/draggable-resizable-element.ts +249 -0
  44. package/backend/element/editable-page-title.ts +306 -0
  45. package/backend/element/icon-element.ts +84 -0
  46. package/backend/element/immediate-action-element.ts +89 -0
  47. package/backend/element/pagination.ts +59 -0
  48. package/backend/element/progress-bar-element.ts +172 -0
  49. package/backend/element/progress-tracker-element.ts +119 -0
  50. package/backend/element/pseudo-button.ts +58 -0
  51. package/backend/element/spinner-element.ts +51 -0
  52. package/backend/element/thumbnail-element.ts +80 -0
  53. package/backend/element-browser.ts +182 -0
  54. package/backend/enum/data-transfer-types.ts +21 -0
  55. package/backend/enum/icon-types.ts +31 -0
  56. package/backend/enum/key-types.ts +27 -0
  57. package/backend/enum/severity.ts +20 -0
  58. package/backend/enum/viewport/scaffold-identifier.ts +24 -0
  59. package/backend/event/client-request.ts +25 -0
  60. package/backend/event/consumable.ts +18 -0
  61. package/backend/event/consumer-scope.ts +54 -0
  62. package/backend/event/event-dispatcher.ts +26 -0
  63. package/backend/event/interaction-request-assignment.ts +24 -0
  64. package/backend/event/interaction-request-map.ts +75 -0
  65. package/backend/event/interaction-request.ts +48 -0
  66. package/backend/event/trigger-request.ts +56 -0
  67. package/backend/form/submit-interceptor.ts +66 -0
  68. package/backend/form-engine/container/files-control-container.ts +716 -0
  69. package/backend/form-engine/container/flex-form-container-container.ts +166 -0
  70. package/backend/form-engine/container/flex-form-section-container.ts +210 -0
  71. package/backend/form-engine/container/inline-control-container.ts +1230 -0
  72. package/backend/form-engine/container/site-language-container.ts +616 -0
  73. package/backend/form-engine/element/abstract-sortable-select-items.ts +186 -0
  74. package/backend/form-engine/element/category-element.ts +160 -0
  75. package/backend/form-engine/element/color-element.ts +81 -0
  76. package/backend/form-engine/element/datetime-element.ts +66 -0
  77. package/backend/form-engine/element/extra/char-counter.ts +112 -0
  78. package/backend/form-engine/element/extra/select-box-filter.ts +85 -0
  79. package/backend/form-engine/element/folder-element.ts +66 -0
  80. package/backend/form-engine/element/group-element.ts +47 -0
  81. package/backend/form-engine/element/json-element.ts +52 -0
  82. package/backend/form-engine/element/link-element.ts +121 -0
  83. package/backend/form-engine/element/mfa-info-element.ts +169 -0
  84. package/backend/form-engine/element/modifier/resizable.ts +27 -0
  85. package/backend/form-engine/element/modifier/tabbable.ts +29 -0
  86. package/backend/form-engine/element/online-media-form-element.ts +65 -0
  87. package/backend/form-engine/element/password-element.ts +71 -0
  88. package/backend/form-engine/element/select-multiple-side-by-side-element.ts +83 -0
  89. package/backend/form-engine/element/select-single-element.ts +82 -0
  90. package/backend/form-engine/element/select-tree-element.ts +148 -0
  91. package/backend/form-engine/element/select-tree-toolbar.ts +118 -0
  92. package/backend/form-engine/element/select-tree.ts +210 -0
  93. package/backend/form-engine/element/slug-element.ts +243 -0
  94. package/backend/form-engine/element/suggest/result-container.ts +118 -0
  95. package/backend/form-engine/element/suggest/result-item.ts +90 -0
  96. package/backend/form-engine/element/table-permission-element.ts +101 -0
  97. package/backend/form-engine/element/table-wizard-element.ts +427 -0
  98. package/backend/form-engine/element/text-element.ts +52 -0
  99. package/backend/form-engine/element/text-table-element.ts +31 -0
  100. package/backend/form-engine/field-control/add-record.ts +40 -0
  101. package/backend/form-engine/field-control/edit-popup.ts +64 -0
  102. package/backend/form-engine/field-control/insert-clipboard.ts +50 -0
  103. package/backend/form-engine/field-control/link-popup.ts +53 -0
  104. package/backend/form-engine/field-control/list-module.ts +40 -0
  105. package/backend/form-engine/field-control/password-generator.ts +102 -0
  106. package/backend/form-engine/field-control/reset-selection.ts +48 -0
  107. package/backend/form-engine/field-wizard/localization-state-selector.ts +67 -0
  108. package/backend/form-engine/field-wizard/value-picker.ts +123 -0
  109. package/backend/form-engine/field-wizard/value-slider.ts +86 -0
  110. package/backend/form-engine/inline-relation/ajax-dispatcher.ts +124 -0
  111. package/backend/form-engine/inline-relation/inline-response-interface.ts +41 -0
  112. package/backend/form-engine-link-browser-adapter.ts +129 -0
  113. package/backend/form-engine-review.ts +155 -0
  114. package/backend/form-engine-suggest.ts +133 -0
  115. package/backend/form-engine-validation.ts +686 -0
  116. package/backend/form-engine.ts +1391 -0
  117. package/backend/global-event-handler.ts +252 -0
  118. package/backend/grid-editor.ts +1077 -0
  119. package/backend/hashing/md5.ts +252 -0
  120. package/backend/helper.ts +24 -0
  121. package/backend/hotkeys/hotkey-storage.ts +63 -0
  122. package/backend/hotkeys.ts +216 -0
  123. package/backend/icons.ts +236 -0
  124. package/backend/image-manipulation.ts +885 -0
  125. package/backend/info-window.ts +46 -0
  126. package/backend/input/clearable.ts +128 -0
  127. package/backend/input/index.d.ts +8 -0
  128. package/backend/java-script-module-import-event-handler.ts +19 -0
  129. package/backend/key-bindings.ts +42 -0
  130. package/backend/layout-module/drag-drop.ts +359 -0
  131. package/backend/layout-module/paste.ts +165 -0
  132. package/backend/link-browser.ts +89 -0
  133. package/backend/live-search/element/backend-search.ts +34 -0
  134. package/backend/live-search/element/hint.ts +33 -0
  135. package/backend/live-search/element/provider/default-result-item.ts +52 -0
  136. package/backend/live-search/element/provider/page-provider-result-item.ts +52 -0
  137. package/backend/live-search/element/result/item/action/action-container.ts +135 -0
  138. package/backend/live-search/element/result/item/action/action.ts +56 -0
  139. package/backend/live-search/element/result/item/item-container.ts +224 -0
  140. package/backend/live-search/element/result/item/item.ts +74 -0
  141. package/backend/live-search/element/result/result-container.ts +110 -0
  142. package/backend/live-search/element/result/result-detail-container.ts +50 -0
  143. package/backend/live-search/element/result/result-pagination.ts +122 -0
  144. package/backend/live-search/element/search-option-item.ts +70 -0
  145. package/backend/live-search/live-search-configurator.ts +54 -0
  146. package/backend/live-search/live-search-shortcut.ts +29 -0
  147. package/backend/live-search/result-types/backend-module-result-type.ts +8 -0
  148. package/backend/live-search/result-types/default-result-type.ts +21 -0
  149. package/backend/live-search/result-types/page-result-type.ts +23 -0
  150. package/backend/localization.ts +390 -0
  151. package/backend/login-refresh.ts +525 -0
  152. package/backend/login.ts +179 -0
  153. package/backend/mail-link-handler.ts +45 -0
  154. package/backend/modal-interface.ts +19 -0
  155. package/backend/modal.ts +685 -0
  156. package/backend/module/iframe.ts +125 -0
  157. package/backend/module/router.ts +275 -0
  158. package/backend/module-menu.ts +550 -0
  159. package/backend/module.ts +133 -0
  160. package/backend/multi-record-selection-action.ts +44 -0
  161. package/backend/multi-record-selection-delete-action.ts +108 -0
  162. package/backend/multi-record-selection-edit-action.ts +56 -0
  163. package/backend/multi-record-selection.ts +468 -0
  164. package/backend/multi-step-wizard.ts +568 -0
  165. package/backend/new-content-element-wizard-button.ts +51 -0
  166. package/backend/new-multiple-pages.ts +108 -0
  167. package/backend/new-record-wizard.ts +680 -0
  168. package/backend/notification.ts +366 -0
  169. package/backend/offset.ts +40 -0
  170. package/backend/online-media.ts +110 -0
  171. package/backend/page-actions.ts +91 -0
  172. package/backend/page-link-handler.ts +51 -0
  173. package/backend/pagetsconfig/pagetsconfig-includes.ts +77 -0
  174. package/backend/popover.ts +165 -0
  175. package/backend/record-download-button.ts +104 -0
  176. package/backend/record-link-handler.ts +31 -0
  177. package/backend/record-search.ts +44 -0
  178. package/backend/recordlist.ts +230 -0
  179. package/backend/resource/resource.ts +35 -0
  180. package/backend/security/element/csp-reports.ts +406 -0
  181. package/backend/security/element/sudo-mode.ts +249 -0
  182. package/backend/security/sudo-mode-interceptor.ts +19 -0
  183. package/backend/settings/editor/editable-setting.ts +231 -0
  184. package/backend/settings/editor.ts +451 -0
  185. package/backend/settings/enum/settings-mode.enum.ts +24 -0
  186. package/backend/settings/type/base.ts +200 -0
  187. package/backend/settings/type/bool.ts +56 -0
  188. package/backend/settings/type/color.ts +64 -0
  189. package/backend/settings/type/int.ts +85 -0
  190. package/backend/settings/type/number.ts +61 -0
  191. package/backend/settings/type/page.ts +100 -0
  192. package/backend/settings/type/string.ts +77 -0
  193. package/backend/settings/type/stringlist.ts +87 -0
  194. package/backend/severity.ts +88 -0
  195. package/backend/site-inline-actions.ts +32 -0
  196. package/backend/sortable-table.ts +208 -0
  197. package/backend/storage/abstract-client-storage.ts +76 -0
  198. package/backend/storage/browser-session.ts +28 -0
  199. package/backend/storage/client.ts +28 -0
  200. package/backend/storage/module-state-storage.ts +118 -0
  201. package/backend/storage/persistent.ts +204 -0
  202. package/backend/switch-user.ts +82 -0
  203. package/backend/tabs.ts +72 -0
  204. package/backend/telephone-link-handler.ts +40 -0
  205. package/backend/tests/backend/storage/browser-storage-test.ts +87 -0
  206. package/backend/tests/backend/storage/client-test.ts +87 -0
  207. package/backend/tests/backend/utility/dom-helper-test.ts +51 -0
  208. package/backend/tests/backend-exception-test.ts +28 -0
  209. package/backend/tests/element/immediate-action-element-test.ts +81 -0
  210. package/backend/tests/form-engine-validation-test.ts +304 -0
  211. package/backend/tests/grid-editor-test.ts +29 -0
  212. package/backend/tests/hashing/md5Test.ts +28 -0
  213. package/backend/tests/icons-test.ts +23 -0
  214. package/backend/tests/notification-test.ts +161 -0
  215. package/backend/tests/popover-test.ts +83 -0
  216. package/backend/toolbar/clear-cache-menu.ts +88 -0
  217. package/backend/toolbar/live-search.ts +284 -0
  218. package/backend/toolbar/shortcut-menu.ts +254 -0
  219. package/backend/toolbar/system-information-menu.ts +161 -0
  220. package/backend/toolbar.ts +41 -0
  221. package/backend/tree/file-storage-browser.ts +194 -0
  222. package/backend/tree/file-storage-tree-container.ts +465 -0
  223. package/backend/tree/file-storage-tree.ts +42 -0
  224. package/backend/tree/page-browser.ts +272 -0
  225. package/backend/tree/page-tree-element.ts +602 -0
  226. package/backend/tree/page-tree.ts +152 -0
  227. package/backend/tree/tree-module-state.ts +159 -0
  228. package/backend/tree/tree-node-toggle.ts +31 -0
  229. package/backend/tree/tree-node.ts +97 -0
  230. package/backend/tree/tree-toolbar.ts +117 -0
  231. package/backend/tree/tree.ts +1595 -0
  232. package/backend/url-link-handler.ts +36 -0
  233. package/backend/user-pass-login.ts +255 -0
  234. package/backend/user-settings-manager.ts +189 -0
  235. package/backend/utility/collapse-state-persister.ts +205 -0
  236. package/backend/utility/collapse-state-search.ts +183 -0
  237. package/backend/utility/dom-helper.ts +91 -0
  238. package/backend/utility/drag-drop-utility.ts +47 -0
  239. package/backend/utility/message-utility.ts +45 -0
  240. package/backend/utility/top-level-module-import.ts +32 -0
  241. package/backend/utility.ts +194 -0
  242. package/backend/viewport/abstract-container.ts +22 -0
  243. package/backend/viewport/content-container.ts +98 -0
  244. package/backend/viewport/loader.ts +28 -0
  245. package/backend/viewport/navigation-container.ts +119 -0
  246. package/backend/viewport/resizable-navigation.ts +176 -0
  247. package/backend/viewport/toolbar.ts +27 -0
  248. package/backend/viewport/topbar.ts +39 -0
  249. package/backend/viewport.ts +46 -0
  250. package/backend/window-manager.ts +84 -0
  251. package/backend/wizard/move-content-element.ts +107 -0
  252. package/backend/wizard/move-page.ts +74 -0
  253. package/backend/wizard.ts +331 -0
  254. package/belog/backend-log.ts +88 -0
  255. package/beuser/backend-user-listing.ts +40 -0
  256. package/beuser/permissions.ts +291 -0
  257. package/core/ajax/ajax-request-types.ts +15 -0
  258. package/core/ajax/ajax-request.ts +202 -0
  259. package/core/ajax/ajax-response.ts +57 -0
  260. package/core/ajax/input-transformer.ts +92 -0
  261. package/core/ajax/simple-response-interface.ts +5 -0
  262. package/core/authentication/mfa-provider/totp.ts +54 -0
  263. package/core/cache/dedupe-async-task.ts +95 -0
  264. package/core/directive/markdown.ts +82 -0
  265. package/core/directive/nl2br.ts +16 -0
  266. package/core/document-service.ts +35 -0
  267. package/core/event/debounce-event.ts +40 -0
  268. package/core/event/event-interface.ts +24 -0
  269. package/core/event/regular-event.ts +58 -0
  270. package/core/event/request-animation-frame-event.ts +42 -0
  271. package/core/event/throttle-event.ts +54 -0
  272. package/core/java-script-item-handler.ts +29 -0
  273. package/core/java-script-item-processor.ts +171 -0
  274. package/core/lit-helper.ts +126 -0
  275. package/core/literals.ts +17 -0
  276. package/core/referrer-refresh.ts +2 -0
  277. package/core/security-utility.ts +89 -0
  278. package/core/tests/ajax/ajax-request-test.ts +290 -0
  279. package/core/tests/ajax/input-transformer-test.ts +64 -0
  280. package/core/tests/cache/dedupe-async-task-test.ts +152 -0
  281. package/core/tests/event/throttle-event-test.ts +47 -0
  282. package/core/tests/literals-test.ts +24 -0
  283. package/core/tests/security-utility-test.ts +50 -0
  284. package/core/utility/types.ts +9 -0
  285. package/dashboard/chart-initializer.ts +136 -0
  286. package/dashboard/dashboard.ts +1487 -0
  287. package/extensionmanager/distribution-image.ts +55 -0
  288. package/extensionmanager/main.ts +291 -0
  289. package/extensionmanager/repository.ts +195 -0
  290. package/extensionmanager/update.ts +118 -0
  291. package/extensionmanager/upload-form.ts +42 -0
  292. package/filelist/browse-files.ts +148 -0
  293. package/filelist/browse-folders.ts +94 -0
  294. package/filelist/context-menu-actions.ts +335 -0
  295. package/filelist/create-folder.ts +69 -0
  296. package/filelist/file-delete.ts +69 -0
  297. package/filelist/file-list-actions.ts +132 -0
  298. package/filelist/file-list-dragdrop.ts +139 -0
  299. package/filelist/file-list-rename-handler.ts +128 -0
  300. package/filelist/file-list-transfer-handler.ts +138 -0
  301. package/filelist/file-list.ts +396 -0
  302. package/filelist/file-replace.ts +37 -0
  303. package/filelist/linkbrowser-file-handler.ts +94 -0
  304. package/filelist/linkbrowser-folder-handler.ts +74 -0
  305. package/filelist/rename-file.ts +109 -0
  306. package/form/backend/form-editor/component/property-grid-editor.ts +340 -0
  307. package/form/backend/form-editor/core.ts +2104 -0
  308. package/form/backend/form-editor/helper.ts +226 -0
  309. package/form/backend/form-editor/inspector-component.ts +2323 -0
  310. package/form/backend/form-editor/mediator.ts +941 -0
  311. package/form/backend/form-editor/modals-component.ts +433 -0
  312. package/form/backend/form-editor/stage-component.ts +908 -0
  313. package/form/backend/form-editor/tree-component.ts +548 -0
  314. package/form/backend/form-editor/view-model.ts +1343 -0
  315. package/form/backend/form-editor.ts +846 -0
  316. package/form/backend/form-manager/main.ts +39 -0
  317. package/form/backend/form-manager/view-model.ts +789 -0
  318. package/form/backend/form-manager.ts +180 -0
  319. package/form/backend/helper.ts +60 -0
  320. package/form/frontend/date-picker.ts +38 -0
  321. package/frontend/default_frontend.ts +82 -0
  322. package/impexp/context-menu-actions.ts +50 -0
  323. package/impexp/import-export.ts +62 -0
  324. package/indexed-search/pagination.ts +26 -0
  325. package/indexed-search/statistics.ts +50 -0
  326. package/info/translation-status.ts +48 -0
  327. package/install/ajax/ajax-queue.ts +83 -0
  328. package/install/init-install.ts +2 -0
  329. package/install/init-installer.ts +2 -0
  330. package/install/install.ts +25 -0
  331. package/install/installer.ts +458 -0
  332. package/install/message-interface.ts +18 -0
  333. package/install/module/abstract-inline-module.ts +27 -0
  334. package/install/module/abstract-interactable-module.ts +107 -0
  335. package/install/module/environment/environment-check.ts +92 -0
  336. package/install/module/environment/folder-structure.ts +145 -0
  337. package/install/module/environment/image-processing.ts +141 -0
  338. package/install/module/environment/mail-test.ts +127 -0
  339. package/install/module/environment/php-info.ts +50 -0
  340. package/install/module/environment/system-information.ts +50 -0
  341. package/install/module/maintenance/cache.ts +59 -0
  342. package/install/module/maintenance/clear-tables.ts +134 -0
  343. package/install/module/maintenance/clear-typo3temp-files.ts +137 -0
  344. package/install/module/maintenance/create-admin.ts +126 -0
  345. package/install/module/maintenance/database-analyzer.ts +266 -0
  346. package/install/module/maintenance/dump-autoload.ts +58 -0
  347. package/install/module/maintenance/language-packs.ts +338 -0
  348. package/install/module/maintenance/reset-backend-user-uc.ts +58 -0
  349. package/install/module/password-strength.ts +56 -0
  350. package/install/module/settings/change-install-tool-password.ts +101 -0
  351. package/install/module/settings/extension-configuration.ts +224 -0
  352. package/install/module/settings/features.ts +102 -0
  353. package/install/module/settings/local-configuration.ts +316 -0
  354. package/install/module/settings/presets.ts +147 -0
  355. package/install/module/settings/system-maintainer.ts +111 -0
  356. package/install/module/upgrade/core-update.ts +255 -0
  357. package/install/module/upgrade/extension-compat-tester.ts +195 -0
  358. package/install/module/upgrade/extension-scanner.ts +381 -0
  359. package/install/module/upgrade/tca-ext-tables-check.ts +93 -0
  360. package/install/module/upgrade/tca-migrations-check.ts +101 -0
  361. package/install/module/upgrade/upgrade-docs.ts +310 -0
  362. package/install/module/upgrade/upgrade-wizards.ts +612 -0
  363. package/install/renderable/clearable.ts +113 -0
  364. package/install/renderable/flash-message.ts +64 -0
  365. package/install/renderable/info-box.ts +66 -0
  366. package/install/renderable/language-packs.ts +304 -0
  367. package/install/renderable/offset-group.ts +38 -0
  368. package/install/renderable/severity.ts +49 -0
  369. package/install/renderable/wrap-group.ts +36 -0
  370. package/install/router.ts +468 -0
  371. package/linkvalidator/linkvalidator-modal.ts +45 -0
  372. package/linkvalidator/linkvalidator.ts +101 -0
  373. package/lowlevel/query-generator.ts +132 -0
  374. package/lowlevel/reference-index.ts +44 -0
  375. package/opendocs/toolbar/opendocs-menu.ts +117 -0
  376. package/package.json +34 -0
  377. package/recycler/recycler.ts +539 -0
  378. package/redirects/event-handler.ts +108 -0
  379. package/redirects/form-engine-evaluation.ts +34 -0
  380. package/redirects/redirects-module.ts +58 -0
  381. package/rte-ckeditor/ckeditor5.ts +402 -0
  382. package/rte-ckeditor/css-prefixer.ts +94 -0
  383. package/rte-ckeditor/legacy/ckeditor5-bundle.ts +17 -0
  384. package/rte-ckeditor/legacy/ckeditor5-inspector.ts +2 -0
  385. package/rte-ckeditor/plugin/typo3-link.ts +810 -0
  386. package/rte-ckeditor/plugin/whitespace.ts +114 -0
  387. package/rte-ckeditor/rte-link-browser.ts +112 -0
  388. package/rte-ckeditor/tests/css-prefixer-test.ts +314 -0
  389. package/scheduler/scheduler-add-group.ts +119 -0
  390. package/scheduler/scheduler-editable-group-name.ts +307 -0
  391. package/scheduler/scheduler-sortable-groups.ts +59 -0
  392. package/scheduler/scheduler.ts +466 -0
  393. package/setup/setup-module.ts +122 -0
  394. package/styleguide/checkbox-demo.ts +5 -0
  395. package/styleguide/element/theme-switcher-element.ts +101 -0
  396. package/styleguide/filter.ts +22 -0
  397. package/styleguide/find-icons.ts +78 -0
  398. package/styleguide/processing-indicator.ts +78 -0
  399. package/styleguide/render-notifications.ts +64 -0
  400. package/sys-note/element/delete-button.ts +78 -0
  401. package/tstemplate/constant-editor.ts +64 -0
  402. package/tstemplate/information-module.ts +31 -0
  403. package/tstemplate/template-analyzer.ts +77 -0
  404. package/viewpage/main.ts +253 -0
  405. package/workspaces/backend.ts +979 -0
  406. package/workspaces/preview.ts +232 -0
  407. package/workspaces/renderable/comment-view.ts +79 -0
  408. package/workspaces/renderable/diff-view.ts +58 -0
  409. package/workspaces/renderable/history-view.ts +97 -0
  410. package/workspaces/renderable/record-information.ts +118 -0
  411. package/workspaces/renderable/record-table.ts +355 -0
  412. package/workspaces/renderable/send-to-stage-form.ts +108 -0
  413. package/workspaces/toolbar/workspaces-menu.ts +190 -0
  414. package/workspaces/utility/icon-helper.ts +57 -0
  415. package/workspaces/workspaces.ts +136 -0
@@ -0,0 +1,113 @@
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
+ class Clearable {
15
+ constructor() {
16
+ if (typeof HTMLInputElement.prototype.clearable === 'function') {
17
+ return;
18
+ }
19
+
20
+ this.registerClearable();
21
+ }
22
+
23
+ private static createCloseButton(clearButtonTitle: string): HTMLButtonElement {
24
+ // The inlined markup represents the current generated markup from the
25
+ // icon api for the icon actions-close that can be found in the official
26
+ // icon repository and is registered in the backend icon api.
27
+ //
28
+ // It´s not possible to use/open the backend icon api without opening
29
+ // new possible vectors for attackers to sniff system information.
30
+ //
31
+ // When the icon definition of actions-close changes also the inline
32
+ // icon should be updated.
33
+ //
34
+ // https://github.com/typo3/typo3.icons
35
+ const closeIcon = `
36
+ <span class="t3js-icon icon icon-size-small icon-state-default icon-actions-close" data-identifier="actions-close">
37
+ <span class="icon-markup">
38
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
39
+ <g fill="currentColor">
40
+ <path d="M11.9 5.5 9.4 8l2.5 2.5c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L8 9.4l-2.5 2.5c-.2.2-.5.2-.7 0l-.7-.7c-.2-.2-.2-.5 0-.7L6.6 8 4.1 5.5c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0L8 6.6l2.5-2.5c.2-.2.5-.2.7 0l.7.7c.2.2.2.5 0 .7z"/>
41
+ </g>
42
+ </svg>
43
+ </span>
44
+ </span>
45
+ `;
46
+
47
+ const closeButton = document.createElement('button');
48
+ closeButton.type = 'button';
49
+ closeButton.tabIndex = -1;
50
+ closeButton.title = clearButtonTitle;
51
+ closeButton.ariaLabel = clearButtonTitle;
52
+ closeButton.innerHTML = closeIcon;
53
+ closeButton.style.visibility = 'hidden';
54
+ closeButton.classList.add('close');
55
+
56
+ return closeButton;
57
+ }
58
+
59
+ private registerClearable(): void {
60
+ HTMLInputElement.prototype.clearable = function(options: Options = {}): void {
61
+ if (this.dataset.clearable) {
62
+ // input field is already clearable, nothing to do here
63
+ return;
64
+ }
65
+
66
+ if (typeof options !== 'object') {
67
+ throw new Error('Passed options must be an object, ' + typeof options + ' given');
68
+ }
69
+
70
+ this.classList.add('form-control-clearable');
71
+
72
+ const wrap = document.createElement('div');
73
+ wrap.classList.add('form-control-clearable-wrapper');
74
+ this.parentNode.insertBefore(wrap, this);
75
+ wrap.appendChild(this);
76
+
77
+ let clearButtonTitle = 'Clear input';
78
+ if (this.dataset.clearableLabel) {
79
+ clearButtonTitle = this.dataset.clearableLabel;
80
+ } else if ('lang' in top.TYPO3 && top.TYPO3.lang['labels.inputfield.clearButton.title']) {
81
+ clearButtonTitle = top.TYPO3.lang['labels.inputfield.clearButton.title'];
82
+ }
83
+
84
+ const clearButton = Clearable.createCloseButton(clearButtonTitle);
85
+
86
+ const toggleClearButtonVisibility = (): void => {
87
+ clearButton.style.visibility = this.value.length === 0 ? 'hidden' : 'visible';
88
+ };
89
+
90
+ clearButton.addEventListener('click', (e: Event): void => {
91
+ e.preventDefault();
92
+
93
+ this.value = '';
94
+
95
+ if (typeof options.onClear === 'function') {
96
+ options.onClear(this);
97
+ }
98
+
99
+ this.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
100
+ toggleClearButtonVisibility();
101
+ });
102
+ wrap.appendChild(clearButton);
103
+
104
+ this.addEventListener('focus', toggleClearButtonVisibility);
105
+ this.addEventListener('keyup', toggleClearButtonVisibility);
106
+
107
+ toggleClearButtonVisibility();
108
+ this.dataset.clearable = 'true';
109
+ };
110
+ }
111
+ }
112
+
113
+ export default new Clearable();
@@ -0,0 +1,64 @@
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 Severity from './severity';
15
+ import { customElement, property } from 'lit/decorators';
16
+ import { html, LitElement, nothing, type TemplateResult } from 'lit';
17
+
18
+ /**
19
+ * Module: @typo3/install/module/flash-message
20
+ */
21
+ @customElement('typo3-install-flashmessage')
22
+ export class FlashMessage extends LitElement {
23
+ @property({ type: Number }) severity: number;
24
+ @property({ type: String }) subject: string;
25
+ @property({ type: String }) content: string;
26
+
27
+ public static create(severity: number, subject: string, content: string = ''): FlashMessage {
28
+ const isInIframe = window.location !== window.parent.location;
29
+ const doc = isInIframe ? window.parent.document : document;
30
+ const message = doc.createElement('typo3-install-flashmessage');
31
+ message.severity = severity;
32
+ message.subject = subject;
33
+
34
+ if (content) {
35
+ message.content = content;
36
+ }
37
+
38
+ return message;
39
+ }
40
+
41
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
42
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
43
+ return this;
44
+ }
45
+
46
+ protected override render(): TemplateResult {
47
+ let content: TemplateResult | symbol = nothing;
48
+ if (this.content) {
49
+ content = html`<p class="alert-message">${this.content}</p>`;
50
+ }
51
+ return html`
52
+ <div class="t3js-message alert alert-${Severity.getCssClass(this.severity)}">
53
+ <div class="alert-title">${this.subject}</div>
54
+ ${content}
55
+ </div>
56
+ `;
57
+ }
58
+ }
59
+
60
+ declare global {
61
+ interface HTMLElementTagNameMap {
62
+ 'typo3-install-flashmessage': FlashMessage;
63
+ }
64
+ }
@@ -0,0 +1,66 @@
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 Severity from './severity';
15
+ import { customElement, property } from 'lit/decorators';
16
+ import { html, LitElement, nothing, type TemplateResult } from 'lit';
17
+
18
+ /**
19
+ * Module: @typo3/install/module/info-box
20
+ */
21
+ @customElement('typo3-install-infobox')
22
+ export class InfoBox extends LitElement {
23
+ @property({ type: Number }) severity: number;
24
+ @property({ type: String }) subject: string;
25
+ @property({ type: String }) content: string;
26
+
27
+ public static create(severity: number, subject: string, content: string = ''): InfoBox {
28
+ const isInIframe = window.location !== window.parent.location;
29
+ const doc = isInIframe ? window.parent.document : document;
30
+ const infobox = doc.createElement('typo3-install-infobox');
31
+ infobox.severity = severity;
32
+ infobox.subject = subject;
33
+
34
+ if (content) {
35
+ infobox.content = content;
36
+ }
37
+
38
+ return infobox;
39
+ }
40
+
41
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
42
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
43
+ return this;
44
+ }
45
+
46
+ protected override render(): TemplateResult {
47
+ let content: TemplateResult | symbol = nothing;
48
+ if (this.content) {
49
+ content = html`<div class="callout-body">${this.content}</div>`;
50
+ }
51
+ return html`
52
+ <div class="t3js-infobox callout callout-sm callout-${Severity.getCssClass(this.severity)}">
53
+ <div class="callout-content">
54
+ <div class="callout-title">${this.subject}</div>
55
+ ${content}
56
+ </div>
57
+ </div>
58
+ `;
59
+ }
60
+ }
61
+
62
+ declare global {
63
+ interface HTMLElementTagNameMap {
64
+ 'typo3-install-infobox': InfoBox;
65
+ }
66
+ }
@@ -0,0 +1,304 @@
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 { customElement, property, state } from 'lit/decorators';
15
+ import { LitElement, type TemplateResult, html, nothing } from 'lit';
16
+ import { classMap } from 'lit/directives/class-map';
17
+
18
+ type Language = {
19
+ iso: string,
20
+ name: string,
21
+ active: boolean,
22
+ lastUpdate: string,
23
+ dependencies: string[]
24
+ };
25
+
26
+ type ExtensionPack = {
27
+ iso: string,
28
+ exists: boolean,
29
+ lastUpdate: string
30
+ };
31
+
32
+ type Extension = {
33
+ key: string,
34
+ title: string,
35
+ type: string,
36
+ icon: string,
37
+ packs: ExtensionPack[]
38
+ };
39
+
40
+ export type LanguagePacksGetDataResponse = {
41
+ languages: Language[],
42
+ extensions: Extension[],
43
+ activeLanguages: string[],
44
+ activeExtensions: string[],
45
+ };
46
+
47
+ export type ActivateLanguageEvent = {
48
+ iso: string,
49
+ };
50
+ export type DeactivateLanguageEvent = {
51
+ iso: string,
52
+ };
53
+ export type DownloadPacksEvent = {
54
+ iso?: string,
55
+ extension?: string
56
+ };
57
+
58
+ @customElement('typo3-install-language-matrix')
59
+ export class LanguageMatrixElement extends LitElement {
60
+ @property({ type: Boolean }) configurationIsWritable: boolean = false;
61
+ @property({ type: Object }) data: LanguagePacksGetDataResponse | null = null;
62
+
63
+ @state()
64
+ private addLanguagesActive: boolean = false;
65
+
66
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
67
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
68
+ return this;
69
+ }
70
+
71
+ protected override render(): TemplateResult {
72
+ return html`
73
+ <div>
74
+ <h2>Active languages</h2>
75
+ <div class="table-fit">
76
+ <table class="table table-striped">
77
+ <thead>
78
+ <tr>
79
+ <th>
80
+ <div class="btn-group">
81
+ ${this.globalActions()}
82
+ </div>
83
+ </th>
84
+ <th>Locale</th>
85
+ <th>Dependencies</th>
86
+ <th>Last update</th>
87
+ </tr>
88
+ </thead>
89
+ <tbody>
90
+ ${this.renderLanguages()}
91
+ </tbody>
92
+ </table>
93
+ </div>
94
+ </div>
95
+ `;
96
+ }
97
+
98
+ private globalActions(): TemplateResult {
99
+ const updateButtonClasses = {
100
+ 'btn': true,
101
+ 'btn-default': true,
102
+ 'update-all': true,
103
+ 'disabled': !this.hasActiveLanguages()
104
+ };
105
+
106
+ return html`
107
+ ${this.configurationIsWritable ? html`
108
+ <button class="btn btn-default t3js-languagePacks-addLanguage-toggle"
109
+ @click=${() => this.addLanguagesActive = !this.addLanguagesActive}>
110
+ <typo3-backend-icon identifier=${this.addLanguagesActive ? 'actions-minus' : 'actions-plus'} size="small"></typo3-backend-icon>
111
+ Add language
112
+ </button>
113
+ ` : nothing}
114
+ <button class=${classMap(updateButtonClasses)} ?disabled=${!this.hasActiveLanguages()}
115
+ @click=${() => this.dispatchEvent(new CustomEvent<DownloadPacksEvent>('download-packs'))}>
116
+ <typo3-backend-icon identifier="actions-download" size="small"></typo3-backend-icon>
117
+ Update all
118
+ </button>
119
+ `;
120
+ }
121
+
122
+ private renderLanguageActions(language: Language): TemplateResult[] {
123
+ const actions: TemplateResult[] = [];
124
+ const { iso } = language;
125
+ const eventData = { detail: { iso } };
126
+
127
+ if (language.active) {
128
+ if (this.configurationIsWritable) {
129
+ actions.push(html`
130
+ <button class="btn btn-default" title="Deactivate"
131
+ @click=${() => this.dispatchEvent(new CustomEvent<DeactivateLanguageEvent>('deactivate-language', eventData))}>
132
+ <typo3-backend-icon identifier="actions-minus" size="small"></typo3-backend-icon>
133
+ </button>
134
+ `);
135
+ }
136
+
137
+ actions.push(html`
138
+ <button class="btn btn-default" title="Download language packs"
139
+ @click=${() => this.dispatchEvent(new CustomEvent<DownloadPacksEvent>('download-packs', eventData))}>
140
+ <typo3-backend-icon identifier="actions-download" size="small"></typo3-backend-icon>
141
+ </button>
142
+ `);
143
+ } else {
144
+ if (this.configurationIsWritable) {
145
+ actions.push(html`
146
+ <button class="btn btn-default" title="Activate"
147
+ @click=${() => this.dispatchEvent(new CustomEvent<ActivateLanguageEvent>('activate-language', eventData))}>
148
+ <typo3-backend-icon identifier="actions-plus" size="small"></typo3-backend-icon>
149
+ </button>
150
+ `);
151
+ }
152
+ }
153
+
154
+ return actions;
155
+ }
156
+
157
+ private renderLanguages(): TemplateResult[] {
158
+ return this.data.languages
159
+ .filter(language => this.addLanguagesActive ? !language.active : language.active)
160
+ .map(language => html`
161
+ <tr class=${classMap({ 't3-languagePacks-inactive': !language.active })}>
162
+ <td>
163
+ <div class="btn-group">
164
+ ${this.renderLanguageActions(language)}
165
+ </div>
166
+ ${language.name}
167
+ </td>
168
+ <td>${language.iso}</td>
169
+ <td>${language.dependencies.join(', ')}</td>
170
+ <td>${language.lastUpdate === null ? '' : language.lastUpdate}</td>
171
+ </tr>
172
+ `);
173
+ }
174
+
175
+ private hasActiveLanguages() {
176
+ return Array.isArray(this.data.activeLanguages) && this.data.activeLanguages.length;
177
+ }
178
+ }
179
+
180
+ @customElement('typo3-install-extension-matrix')
181
+ export class ExtensionMatrixElement extends LitElement {
182
+ @property({ type: Object }) data: LanguagePacksGetDataResponse | null = null;
183
+
184
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
185
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
186
+ return this;
187
+ }
188
+
189
+ protected override render(): TemplateResult {
190
+ if (this.data.extensions.length === 0) {
191
+ return html`
192
+ <typo3-install-infobox
193
+ severity="0"
194
+ subject="Language packs have been found for every installed extension."
195
+ content="To download the latest changes, use the refresh button in the list above.">
196
+ </typo3-install-infobox>
197
+ `;
198
+ }
199
+
200
+ return html`
201
+ <div>
202
+ <h2>Translation status</h2>
203
+ <div class="table-fit">
204
+ <table class="table table-striped">
205
+ <thead>
206
+ <tr>
207
+ <th>Extension</th>
208
+ <th>Key</th>
209
+ ${this.headerActions()}
210
+ </thead>
211
+ <tbody>
212
+ ${this.renderExtensions()}
213
+ </tbody>
214
+ </table>
215
+ </div>
216
+ </div>
217
+ `;
218
+ }
219
+
220
+ private headerActions(): TemplateResult[] {
221
+ return this.data.activeLanguages.map(activeLanguage => html`
222
+ <th>
223
+ <button class="btn btn-default" title="Download and update all language packs"
224
+ @click=${() => this.dispatchEvent(new CustomEvent<DownloadPacksEvent>('download-packs', { detail: { iso: activeLanguage } }))}>
225
+ <typo3-backend-icon identifier="actions-download" size="small"></typo3-backend-icon>
226
+ ${activeLanguage}
227
+ </button>
228
+ </th>
229
+ `);
230
+ }
231
+
232
+ private renderExtensions(): TemplateResult[] {
233
+ return this.data.extensions.map(extension => html`
234
+ <tr>
235
+ <td>
236
+ ${extension.icon ? html`
237
+ <img src="${extension.icon}" alt="${extension.title}" style="max-height: 16px; max-width: 16px;">
238
+ ` : nothing}
239
+ ${extension.title}
240
+ </td>
241
+ <td>${extension.key}</td>
242
+ ${this.renderExtensionActions(extension)}
243
+ </tr>
244
+ `);
245
+ }
246
+
247
+ private renderExtensionActions(extension: Extension): TemplateResult[] {
248
+ const cells: TemplateResult[] = [];
249
+
250
+ this.data.activeLanguages.forEach((language: string): void => {
251
+ let cell: TemplateResult | typeof nothing = nothing;
252
+
253
+ extension.packs.forEach((pack: ExtensionPack): void => {
254
+ if (pack.iso !== language) {
255
+ return;
256
+ }
257
+
258
+ let tooltip;
259
+ if (pack.exists !== true) {
260
+ if (pack.lastUpdate !== null) {
261
+ tooltip = 'No language pack available for ' + pack.iso + ' when tried at ' + pack.lastUpdate + '. Click to re-try.';
262
+ } else {
263
+ tooltip = 'Language pack not downloaded. Click to download';
264
+ }
265
+ } else if (pack.lastUpdate === null) {
266
+ tooltip = 'Downloaded. Click to renew';
267
+ } else {
268
+ tooltip = 'Language pack downloaded at ' + pack.lastUpdate + '. Click to renew';
269
+ }
270
+
271
+ const eventData = {
272
+ detail: {
273
+ iso: pack.iso,
274
+ extension: extension.key
275
+ }
276
+ };
277
+ cell = html`
278
+ <td>
279
+ <button class="btn btn-default" title=${tooltip}
280
+ @click=${() => this.dispatchEvent(new CustomEvent<DownloadPacksEvent>('download-packs', eventData))}>
281
+ <typo3-backend-icon identifier="actions-download" size="small"></typo3-backend-icon>
282
+ </button>
283
+ </td>
284
+ `;
285
+ });
286
+
287
+ // Render empty colum to avoid disturbed table build up if pack was not found for language.
288
+ if (cell === nothing) {
289
+ cell = html`<td></td>`;
290
+ }
291
+
292
+ cells.push(cell);
293
+ });
294
+
295
+ return cells;
296
+ }
297
+ }
298
+
299
+ declare global {
300
+ interface HTMLElementTagNameMap {
301
+ 'typo3-install-language-matrix': LanguageMatrixElement;
302
+ 'typo3-install-extension-matrix': ExtensionMatrixElement;
303
+ }
304
+ }
@@ -0,0 +1,38 @@
1
+ import { LitElement, type TemplateResult, html } from 'lit';
2
+ import { customElement, property } from 'lit/decorators';
3
+
4
+ @customElement('typo3-install-offset-group')
5
+ class OffsetGroupElement extends LitElement {
6
+ @property({ type: String }) offsetId: string | null = null;
7
+ @property({ type: Array }) values: string[] | null = null;
8
+
9
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
10
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
11
+ return this;
12
+ }
13
+
14
+ protected override render(): TemplateResult {
15
+ return html`
16
+ <div class="form-multigroup-wrap">
17
+ <div class="form-multigroup-item">
18
+ <div class="input-group">
19
+ <div class="input-group-text">x</div>
20
+ <input id="${this.offsetId}_offset_x" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[0]?.trim()}"/>
21
+ </div>
22
+ </div>
23
+ <div class="form-multigroup-item">
24
+ <div class="input-group">
25
+ <div class="input-group-text">y</div>
26
+ <input id="${this.offsetId}_offset_y" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[1]?.trim()}"/>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ `;
31
+ }
32
+ }
33
+
34
+ declare global {
35
+ interface HTMLElementTagNameMap {
36
+ 'typo3-install-offset-group': OffsetGroupElement;
37
+ }
38
+ }
@@ -0,0 +1,49 @@
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
+ /**
15
+ * Module: @typo3/install/module/severity
16
+ */
17
+ class Severity {
18
+ public readonly loading: number = -3;
19
+ public readonly notice: number = -2;
20
+ public readonly info: number = -1;
21
+ public readonly ok: number = 0;
22
+ public readonly warning: number = 1;
23
+ public readonly error: number = 2;
24
+
25
+ public getCssClass(severity: number): string {
26
+ let severityClass;
27
+ switch (severity) {
28
+ case this.loading:
29
+ case this.notice:
30
+ severityClass = 'notice';
31
+ break;
32
+ case this.ok:
33
+ severityClass = 'success';
34
+ break;
35
+ case this.warning:
36
+ severityClass = 'warning';
37
+ break;
38
+ case this.error:
39
+ severityClass = 'danger';
40
+ break;
41
+ case this.info:
42
+ default:
43
+ severityClass = 'info';
44
+ }
45
+ return severityClass;
46
+ }
47
+ }
48
+
49
+ export default new Severity();
@@ -0,0 +1,36 @@
1
+ import { LitElement, type TemplateResult, html } from 'lit';
2
+ import { customElement, property } from 'lit/decorators';
3
+
4
+ @customElement('typo3-install-wrap-group')
5
+ class WrapGroupElement extends LitElement {
6
+ @property({ type: String }) wrapId: string | null = null;
7
+ @property({ type: Array }) values: string[] | null = null;
8
+
9
+ protected override createRenderRoot(): HTMLElement | ShadowRoot {
10
+ // @todo Switch to Shadow DOM once Bootstrap CSS style can be applied correctly
11
+ return this;
12
+ }
13
+
14
+ protected override render(): TemplateResult {
15
+ return html`
16
+ <div class="form-multigroup-wrap">
17
+ <div class="form-multigroup-item">
18
+ <div class="input-group">
19
+ <input id="${this.wrapId}_wrap_start" class="form-control t3js-emconf-wrapfield" data-target="#${this.wrapId}" value="${this.values[0].trim()}"/>
20
+ </div>
21
+ </div>
22
+ <div class="form-multigroup-item">
23
+ <div class="input-group">
24
+ <input id="${this.wrapId}_wrap_end" class="form-control t3js-emconf-wrapfield" data-target="#${this.wrapId}" value="${this.values[0].trim()}"/>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ `;
29
+ }
30
+ }
31
+
32
+ declare global {
33
+ interface HTMLElementTagNameMap {
34
+ 'typo3-install-wrap-group': WrapGroupElement;
35
+ }
36
+ }