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,22 @@
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 DocumentService from '@typo3/core/document-service';
15
+ import DateTimePicker from '@typo3/backend/date-time-picker';
16
+
17
+ DocumentService.ready().then(() => {
18
+ const dateTimePickers: NodeListOf<HTMLInputElement>|null = document.querySelectorAll('.t3js-datetimepicker');
19
+ dateTimePickers?.forEach((element) => {
20
+ DateTimePicker.initialize(element);
21
+ });
22
+ });
@@ -0,0 +1,78 @@
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 DocumentService from '@typo3/core/document-service';
15
+ import RegularEvent from '@typo3/core/event/regular-event';
16
+ import DebounceEvent from '@typo3/core/event/debounce-event';
17
+
18
+ DocumentService.ready().then(() => {
19
+ const searchField = document.getElementById('search-field') as HTMLInputElement;
20
+ const filterContainer = document.getElementById('t3js-filter-container');
21
+
22
+ new RegularEvent('click', (e: MouseEvent, target: HTMLButtonElement): void => {
23
+ e.preventDefault();
24
+
25
+ searchField.value = target.dataset.filter;
26
+ filterContainer.dispatchEvent(new CustomEvent('typo3:styleguide:update-icons', {
27
+ detail: {
28
+ searchValue: searchField.value
29
+ }
30
+ }));
31
+ }).delegateTo(document, '.t3js-filter-buttons button');
32
+
33
+ new DebounceEvent('input', (e: Event): void => {
34
+ filterContainer.dispatchEvent(new CustomEvent('typo3:styleguide:update-icons', {
35
+ detail: {
36
+ searchValue: (e.target as HTMLInputElement).value
37
+ }
38
+ }));
39
+ }).bindTo(searchField);
40
+
41
+ new RegularEvent('typo3:styleguide:update-icons', (e: CustomEvent): void => {
42
+ const typedQuery = e.detail.searchValue;
43
+ const iconContainerElements = Array.from(filterContainer.querySelectorAll('[data-icon-identifier]') as NodeListOf<HTMLElement>);
44
+ if (typedQuery === '') {
45
+ iconContainerElements.map((iconContainer) => iconContainer.hidden = false);
46
+ } else {
47
+ if (typedQuery.includes('type:')) {
48
+ const [ , type ] = typedQuery.split(':');
49
+
50
+ switch (type.toLowerCase()) {
51
+ case 'bitmap':
52
+ iconContainerElements.forEach((iconContainer): void => {
53
+ const containsIconsOfType = iconContainer.querySelector('img:not([src$=".svg"])') !== null;
54
+ iconContainer.hidden = !containsIconsOfType;
55
+ });
56
+ break;
57
+ case 'font':
58
+ iconContainerElements.forEach((iconContainer): void => {
59
+ const containsIconsOfType = iconContainer.querySelector('i.fa') !== null;
60
+ iconContainer.hidden = !containsIconsOfType;
61
+ });
62
+ break;
63
+ case 'vector':
64
+ iconContainerElements.forEach((iconContainer): void => {
65
+ const containsIconsOfType = iconContainer.querySelector('img[src$=".svg"]') !== null;
66
+ iconContainer.hidden = !containsIconsOfType;
67
+ });
68
+ break;
69
+ default:
70
+ }
71
+ } else {
72
+ iconContainerElements.forEach((iconContainer): void => {
73
+ iconContainer.hidden = !iconContainer.matches('[data-icon-identifier*="' + typedQuery + '"]');
74
+ });
75
+ }
76
+ }
77
+ }).bindTo(filterContainer);
78
+ });
@@ -0,0 +1,78 @@
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 NProgress from 'nprogress';
15
+ import Notification from '@typo3/backend/notification';
16
+ import RegularEvent from '@typo3/core/event/regular-event';
17
+ import AjaxRequest from '@typo3/core/ajax/ajax-request';
18
+ import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
19
+
20
+ let itemProcessing = 0;
21
+
22
+ function setButtonStates(scope: HTMLElement, action: string): void {
23
+ for (const _button of scope.children) {
24
+ if (_button.nodeType !== 1 || _button.nodeName !== 'BUTTON') {
25
+ continue;
26
+ }
27
+
28
+ const button = _button as HTMLElement;
29
+ if (button.dataset.generatorAction === action) {
30
+ button.classList.remove('disabled');
31
+ button.hidden = false;
32
+ button.querySelector('typo3-backend-icon').identifier = 'actions-' + action;
33
+ } else {
34
+ button.classList.add('disabled');
35
+ button.hidden = true;
36
+ }
37
+ }
38
+ }
39
+
40
+ new RegularEvent('click', (e: MouseEvent, target: HTMLButtonElement): void => {
41
+ e.preventDefault();
42
+
43
+ for (const children of target.parentElement.children) {
44
+ if (children.nodeType === 1) {
45
+ children.classList.add('disabled');
46
+ }
47
+ }
48
+ target.querySelector('typo3-backend-icon').identifier = 'spinner-circle';
49
+
50
+ NProgress.start();
51
+ itemProcessing++;
52
+
53
+ // Trigger generate action
54
+ new AjaxRequest(target.dataset.href).get().then(async (response: AjaxResponse): Promise<void> => {
55
+ const json = await response.resolve('application/json');
56
+ if (json.status === false) {
57
+ NProgress.done();
58
+ Notification.error(json.title, json.body, 5);
59
+ target.querySelector('typo3-backend-icon').identifier = 'actions-' + target.dataset.generatorAction;
60
+ target.classList.remove('disabled');
61
+ return;
62
+ }
63
+ itemProcessing--;
64
+ Notification.showMessage(json.title, json.body, json.status, 5);
65
+ // Hide nprogress only if all items done loading/processing
66
+ if (itemProcessing === 0) {
67
+ NProgress.done();
68
+ }
69
+ // Set button states
70
+ setButtonStates(target.parentElement, target.dataset.generatorAction === 'plus' ? 'delete' : 'plus');
71
+ }).catch((error: AjaxResponse): void => {
72
+ // Action failed, reset to its original state
73
+ NProgress.done();
74
+ Notification.error('', error.response.status + ' ' + error.response.statusText, 5);
75
+ target.querySelector('typo3-backend-icon').identifier = 'actions-' + target.dataset.generatorAction;
76
+ target.classList.remove('disabled');
77
+ });
78
+ }).delegateTo(document, '.t3js-generator-action');
@@ -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 Notification from '@typo3/backend/notification';
15
+ import ImmediateAction from '@typo3/backend/action-button/immediate-action';
16
+ import DeferredAction from '@typo3/backend/action-button/deferred-action';
17
+ import RegularEvent from '@typo3/core/event/regular-event';
18
+
19
+ /**
20
+ * Action used when an operation execution time is unknown.
21
+ */
22
+ class RenderNotifications {
23
+ constructor() {
24
+ this.registerEvents();
25
+ }
26
+
27
+ private registerEvents() {
28
+ new RegularEvent('click', (e: MouseEvent, target: HTMLButtonElement): void => {
29
+ const severity = target.dataset.severity as 'notice' | 'info' | 'success' | 'warning' | 'error';
30
+ const title = target.dataset.title;
31
+ const message = target.dataset.message;
32
+ const duration = parseInt(target.dataset.duration, 10);
33
+ const includeActions = target.dataset.includeActions === '1';
34
+
35
+ Notification[severity](title, message, duration, this.createActions(includeActions));
36
+ }).delegateTo(document, 'button[data-action="trigger-notification"]');
37
+ }
38
+
39
+ private createActions(includeActions: boolean) {
40
+ if (!includeActions) {
41
+ return [];
42
+ }
43
+
44
+ return [
45
+ {
46
+ label: 'Immediate action',
47
+ action: new ImmediateAction(function () {
48
+ alert('Immediate action done');
49
+ }),
50
+ },
51
+ {
52
+ label: 'Deferred action',
53
+ action: new DeferredAction(function () {
54
+ return new Promise(resolve => setTimeout(() => {
55
+ alert('Deferred action done after 3000 ms');
56
+ resolve();
57
+ }, 3000));
58
+ }),
59
+ }
60
+ ];
61
+ }
62
+ }
63
+
64
+ export default new RenderNotifications();
@@ -0,0 +1,78 @@
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 } from 'lit/decorators';
15
+ import { PseudoButtonLitElement } from '@typo3/backend/element/pseudo-button';
16
+ import Modal from '@typo3/backend/modal';
17
+ import { SeverityEnum } from '@typo3/backend/enum/severity';
18
+ import DeferredAction from '@typo3/backend/action-button/deferred-action';
19
+ import AjaxDataHandler from '@typo3/backend/ajax-data-handler';
20
+ import Viewport from '@typo3/backend/viewport';
21
+ import type ResponseInterface from '@typo3/backend/ajax-data-handler/response-interface';
22
+
23
+ /**
24
+ * Module: @typo3/sys-note/delete-button
25
+ *
26
+ * @example
27
+ * <typo3-sysnote-delete-button uid="42" return-url="">
28
+ * ...
29
+ * </typo3-sysnote-delete-button>
30
+ */
31
+ @customElement('typo3-sysnote-delete-button')
32
+ export class DeleteButton extends PseudoButtonLitElement {
33
+ @property({ type: Number }) uid: number;
34
+ @property({ type: String, attribute: 'return-url' }) returnUrl: string;
35
+ @property({ type: String, attribute: 'modal-title' }) modalTitle: string;
36
+ @property({ type: String, attribute: 'modal-content' }) modalContent: string;
37
+ @property({ type: String, attribute: 'modal-button-ok' }) okButtonLabel: string;
38
+ @property({ type: String, attribute: 'modal-button-cancel' }) cancelButtonLabel: string;
39
+
40
+ protected override buttonActivated(): void {
41
+ Modal.advanced({
42
+ content: this.modalContent,
43
+ title: this.modalTitle,
44
+ severity: SeverityEnum.warning,
45
+ size: Modal.sizes.small,
46
+ buttons: [
47
+ {
48
+ text: this.cancelButtonLabel || 'Close',
49
+ btnClass: 'btn-default',
50
+ trigger: function(): void {
51
+ Modal.dismiss();
52
+ },
53
+ }, {
54
+ text: this.okButtonLabel || 'OK',
55
+ btnClass: 'btn-warning',
56
+ action: new DeferredAction(async (): Promise<void> => {
57
+ await this.deleteRecord();
58
+ }),
59
+ },
60
+ ]
61
+ });
62
+ }
63
+
64
+ private async deleteRecord(): Promise<ResponseInterface> {
65
+ const processing = AjaxDataHandler.process(`cmd[sys_note][${this.uid}][delete]=1`);
66
+ processing.then((): void => {
67
+ Viewport.ContentContainer.setUrl(this.returnUrl);
68
+ });
69
+
70
+ return processing;
71
+ }
72
+ }
73
+
74
+ declare global {
75
+ interface HTMLElementTagNameMap {
76
+ 'typo3-sysnote-delete-button': DeleteButton;
77
+ }
78
+ }
@@ -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 DocumentService from '@typo3/core/document-service';
15
+ import RegularEvent from '@typo3/core/event/regular-event';
16
+ import '@typo3/backend/color-picker';
17
+
18
+ enum Selectors {
19
+ editIconSelector = '.t3js-toggle',
20
+ }
21
+
22
+ /**
23
+ * Module: @typo3/tstemplate/constant-editor
24
+ * Various functions related to the Constant Editor
25
+ * e.g. updating the field and working with colors
26
+ */
27
+ class ConstantEditor {
28
+ constructor() {
29
+ DocumentService.ready().then((document: Document): void => {
30
+ if (document.querySelectorAll('typo3-backend-color-picker').length) {
31
+ import('@typo3/backend/color-picker');
32
+ }
33
+ this.registerEvents();
34
+ });
35
+ }
36
+
37
+ private registerEvents(): void {
38
+ new RegularEvent('click', this.changeProperty)
39
+ .delegateTo(document, Selectors.editIconSelector);
40
+ }
41
+
42
+ /**
43
+ * initially register event listeners
44
+ */
45
+ private changeProperty(this: HTMLElement): void {
46
+ const constantName: string = this.getAttribute('rel');
47
+ const defaultDiv: HTMLDivElement = document.getElementById('defaultTS-' + constantName) as HTMLDivElement;
48
+ const userDiv: HTMLDivElement = document.getElementById('userTS-' + constantName) as HTMLDivElement;
49
+ const checkBox: HTMLInputElement = document.getElementById('check-' + constantName) as HTMLInputElement;
50
+ const toggleState: string = this.dataset.bsToggle;
51
+
52
+ if (toggleState === 'edit') {
53
+ defaultDiv.style.display = 'none';
54
+ userDiv.style.removeProperty('display');
55
+ checkBox.removeAttribute('disabled');
56
+ } else if (toggleState === 'undo') {
57
+ userDiv.style.display = 'none';
58
+ defaultDiv.style.removeProperty('display');
59
+ checkBox.setAttribute('disabled', 'disabled');
60
+ }
61
+ }
62
+ }
63
+
64
+ export default new ConstantEditor();
@@ -0,0 +1,31 @@
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 RegularEvent from '@typo3/core/event/regular-event';
15
+
16
+ class InformationModule {
17
+ constructor() {
18
+ this.registerEventListeners();
19
+ }
20
+
21
+ private registerEventListeners(): void {
22
+ new RegularEvent('typo3:datahandler:process', (e: CustomEvent): void => {
23
+ const payload = e.detail.payload;
24
+ if (payload.action === 'delete' && !payload.hasErrors) {
25
+ document.location.reload();
26
+ }
27
+ }).bindTo(document);
28
+ }
29
+ }
30
+
31
+ export default new InformationModule();
@@ -0,0 +1,77 @@
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 DocumentService from '@typo3/core/document-service';
15
+ import { default as Modal } from '@typo3/backend/modal';
16
+ import { topLevelModuleImport } from '@typo3/backend/utility/top-level-module-import';
17
+ import { html, type TemplateResult } from 'lit';
18
+ import { until } from 'lit/directives/until';
19
+ import AjaxRequest from '@typo3/core/ajax/ajax-request';
20
+ import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
21
+ import type { JavaScriptItemPayload } from '@typo3/core/java-script-item-processor';
22
+
23
+ /**
24
+ * @todo: This could be code-de-duplicated with ext:backend pagetsconfig/pagetconfig-includes.ts,
25
+ * by making "Show t3editor code in a modal" a more general solution.
26
+ * Main trigger is t3js-pagetsconfig-includes-modal vs. t3js-typoscript-analyzer-modal
27
+ */
28
+ class TemplateAnalyzer {
29
+ constructor() {
30
+ this.registerEventListeners();
31
+ }
32
+
33
+ private async registerEventListeners(): Promise<void> {
34
+ await DocumentService.ready();
35
+
36
+ document.querySelectorAll('.t3js-typoscript-analyzer-modal').forEach((link: HTMLAnchorElement): void => {
37
+ link.addEventListener('click', (e: Event): void => {
38
+ e.preventDefault();
39
+
40
+ const type = Modal.types.default;
41
+ const title = link.dataset.modalTitle || link.textContent.trim();
42
+ const url = link.getAttribute('href');
43
+ const size = Modal.sizes.large;
44
+ const content = html`${until(
45
+ this.fetchModalContent(url),
46
+ html`<div class="modal-loading"><typo3-backend-spinner size="large"></typo3-backend-spinner></div>`
47
+ )}`;
48
+ Modal.advanced({ type, title, size, content });
49
+ });
50
+ });
51
+ }
52
+
53
+ private async fetchModalContent(url: string): Promise<TemplateResult> {
54
+ // no `await` purpose (webcomponents initialize lazily)
55
+ topLevelModuleImport('@typo3/backend/code-editor/element/code-mirror-element.js');
56
+
57
+ const response: AjaxResponse = await (new AjaxRequest(url)).get();
58
+ const source: string = await response.resolve();
59
+
60
+ const mode: JavaScriptItemPayload = {
61
+ name: '@typo3/backend/code-editor/language/typoscript.js',
62
+ flags: 2 /* FLAG_USE_IMPORTMAP */,
63
+ exportName: 'typoscript',
64
+ items: [
65
+ { type: 'invoke', args: [] }
66
+ ]
67
+ };
68
+
69
+ return html`
70
+ <typo3-t3editor-codemirror .mode="${mode}" nolazyload readonly class="flex-grow-1 mh-100">
71
+ <textarea readonly disabled class="form-control">${source}</textarea>
72
+ </typo3-t3editor-codemirror>
73
+ `;
74
+ }
75
+ }
76
+
77
+ export default new TemplateAnalyzer();