@brightspot/ui 3.0.1 → 5.0.1

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 (589) hide show
  1. package/README.md +56 -37
  2. package/dist/storybook/assets/{ActionBar.stories-BTkFDNZF.js → ActionBar.stories-IDc5Jeit.js} +1 -1
  3. package/dist/storybook/assets/{ActionItem.stories-BY1vOUMp.js → ActionItem.stories-FKbziuZR.js} +1 -1
  4. package/dist/storybook/assets/{Avatar.stories-BViF7cJM.js → Avatar.stories-BsAnn4F7.js} +1 -1
  5. package/dist/storybook/assets/{AvatarGroup.stories-DBLtdzWj.js → AvatarGroup.stories-BmNNGA4K.js} +1 -1
  6. package/dist/storybook/assets/{Badge.stories-BJzAykeL.js → Badge.stories-BMb_-0Io.js} +1 -1
  7. package/dist/storybook/assets/{Button-BS_DVZrR.js → Button-D3vjfsjz.js} +1 -1
  8. package/dist/storybook/assets/{Button.stories-CMa8tsGq.js → Button.stories-VndkwLDv.js} +1 -1
  9. package/dist/storybook/assets/{ButtonGroup.stories-Dorf10Q3.js → ButtonGroup.stories-BvbNykTx.js} +1 -1
  10. package/dist/storybook/assets/{Celebrate.stories-C0RndH03.js → Celebrate.stories-DrrL3txs.js} +1 -1
  11. package/dist/storybook/assets/{Checkbox.stories-DuM_lJ8J.js → Checkbox.stories-BS4H3-cO.js} +1 -1
  12. package/dist/storybook/assets/{CircularProgress.stories-Bv2S_R-k.js → CircularProgress.stories-YQfbjx-O.js} +1 -1
  13. package/dist/storybook/assets/{ClipboardMixin.stories-Bd1tO-g7.js → ClipboardMixin.stories-DjsApoGs.js} +1 -1
  14. package/dist/storybook/assets/{Color-6BZIO3FS-CKpudxYg.js → Color-6BZIO3FS-D23VaL29.js} +1 -1
  15. package/dist/storybook/assets/{Colors.stories-CLQ--V38.js → Colors.stories-B0Eo-AgP.js} +1 -1
  16. package/dist/storybook/assets/{CombinedEffects.stories-DnT8sQ2Z.js → CombinedEffects.stories-CJv4PhDZ.js} +1 -1
  17. package/dist/storybook/assets/{ComponentStatesMixin-Rv-1Sy61.js → ComponentStatesMixin-Bn8b1Qpq.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin.stories-DNs2OQFK.js → ComponentStatesMixin.stories-CM9Nn1Vr.js} +1 -1
  19. package/dist/storybook/assets/{CopyToClipboard.stories-Bz6tBGbk.js → CopyToClipboard.stories-DdwTxinQ.js} +1 -1
  20. package/dist/storybook/assets/{Debounce.stories-B2zRBNPi.js → Debounce.stories-bdqs8xGz.js} +1 -1
  21. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DW8rd1PO.js → DocsRenderer-LL677BLK-CdjX43FI.js} +3 -3
  22. package/dist/storybook/assets/{Dropdown.stories-hnwE4FQe.js → Dropdown.stories-wY7jzy1b.js} +1 -1
  23. package/dist/storybook/assets/{EmptyState.stories-D8NwBW4d.js → EmptyState.stories-FpHAx68-.js} +1 -1
  24. package/dist/storybook/assets/{Events.stories-uC-17Dli.js → Events.stories-gJAakVdu.js} +1 -1
  25. package/dist/storybook/assets/{Heading.stories-gU4dU4SQ.js → Heading.stories-BqFtaYkf.js} +1 -1
  26. package/dist/storybook/assets/{HueRipple.stories-C9mL5X65.js → HueRipple.stories-Bk1g8tT8.js} +1 -1
  27. package/dist/storybook/assets/{Icon.stories-CODM5nby.js → Icon.stories-sxRLpE9W.js} +1 -1
  28. package/dist/storybook/assets/{IconButton.stories-B2ua_wfB.js → IconButton.stories-DjmbahEP.js} +1 -1
  29. package/dist/storybook/assets/{LinearProgress.stories-orcCd9Ym.js → LinearProgress.stories-DwJQwdLl.js} +1 -1
  30. package/dist/storybook/assets/{Pagination.stories-C4ygdgfN.js → Pagination.stories-Cp-E5mN-.js} +1 -1
  31. package/dist/storybook/assets/{Popover.stories-BCIIWmTA.js → Popover.stories-BRW3tYFh.js} +1 -1
  32. package/dist/storybook/assets/{ReadyMixin-Cxdzrrfi.js → ReadyMixin-Btxswj_k.js} +1 -1
  33. package/dist/storybook/assets/{RovingTabindexMixin.stories-DOwFdYhD.js → RovingTabindexMixin.stories-CU7heX4w.js} +1 -1
  34. package/dist/storybook/assets/{Rtc.stories-CHCfV1TF.js → Rtc.stories-CGkrXg7-.js} +1 -1
  35. package/dist/storybook/assets/{ScrollShadow.stories-BVa9OI5n.js → ScrollShadow.stories-HPqnieYi.js} +1 -1
  36. package/dist/storybook/assets/{Switch.stories-iU97zahz.js → Switch.stories-SIix50Dz.js} +1 -1
  37. package/dist/storybook/assets/{Tab.stories-Bibe-F62.js → Tab.stories-BJ0Dl--1.js} +1 -1
  38. package/dist/storybook/assets/{Tabs.stories-CF4_aHnK.js → Tabs.stories-DEV7dhqr.js} +1 -1
  39. package/dist/storybook/assets/{Throttle.stories-DIuUxjiJ.js → Throttle.stories-5l5dcEMx.js} +1 -1
  40. package/dist/storybook/assets/{Tooltip.stories-vob7VYrU.js → Tooltip.stories-CJrvBRM9.js} +1 -1
  41. package/dist/storybook/assets/{Upload.stories-2Tow92Sk.js → Upload.stories-HAndUW3D.js} +1 -1
  42. package/dist/storybook/assets/{UploadItem.stories-BDmgA2i-.js → UploadItem.stories-B-8IM6rL.js} +1 -1
  43. package/dist/storybook/assets/{Welcome.stories-CxDC5l_l.js → Welcome.stories-Cy7QZEXf.js} +1 -1
  44. package/dist/storybook/assets/{Widget.stories-Dj_P7LE4.js → Widget.stories-DyTOXrSZ.js} +1 -1
  45. package/dist/storybook/assets/{WithTooltip-65CFNBJE-C1mqF-R9.js → WithTooltip-65CFNBJE-BF-px3XD.js} +1 -1
  46. package/dist/storybook/assets/{blocks-CDIBgsPi.js → blocks-B-r6Fucc.js} +5 -5
  47. package/dist/storybook/assets/{formatter-EIJCOSYU-DlWS8Eh5.js → formatter-EIJCOSYU-BhTCWHea.js} +1 -1
  48. package/dist/storybook/assets/if-defined-CxLwFifW.js +1 -0
  49. package/dist/storybook/assets/{iframe-BgFj0b5u.css → iframe-D0roG0J-.css} +1 -1
  50. package/dist/storybook/assets/{iframe-B3sUtE0N.js → iframe-XJ17FJi7.js} +3 -3
  51. package/dist/storybook/assets/{index-CP948hPJ.js → index-CQ_bLab5.js} +1 -1
  52. package/dist/storybook/assets/{onFind-DtBCGkmC.js → onFind-RCD4BqgZ.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-CdMaO-FL.js → onFind.stories-CD7vXuRn.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-CnNXun2Y.js → onRemove.stories-Dm8HrW-w.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-ZnFebS7S.js → onVisible.stories-CigtHPTK.js} +1 -1
  56. package/dist/storybook/assets/{style-map-Imekj22o.js → style-map-C3PJ2niZ.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CqsAEB33.js → syntaxhighlighter-ED5Y7EFY-DIlzdeob.js} +1 -1
  58. package/dist/storybook/iframe.html +3 -3
  59. package/dist/storybook/project.json +1 -1
  60. package/dist/tailwind.config.d.ts +4 -1
  61. package/dist/tailwind.config.d.ts.map +1 -1
  62. package/dist/tailwind.config.js +0 -2
  63. package/dist/tailwind.config.js.map +1 -1
  64. package/dist/tailwind.config.ts +0 -2
  65. package/package.json +20 -4
  66. package/src/legacy/tool-ui/src/AIInline.css +123 -0
  67. package/src/legacy/tool-ui/src/ActionBar.css +41 -0
  68. package/src/legacy/tool-ui/src/Admin.css +258 -0
  69. package/src/legacy/tool-ui/src/AdobeStock.css +3 -0
  70. package/src/legacy/tool-ui/src/AnalyticsWidget.css +34 -0
  71. package/src/legacy/tool-ui/src/AnalyticsWidget.ts +158 -0
  72. package/src/legacy/tool-ui/src/Apis.css +31 -0
  73. package/src/legacy/tool-ui/src/AppetizeioEmbedded.css +58 -0
  74. package/src/legacy/tool-ui/src/AssociatedContentWidget.css +68 -0
  75. package/src/legacy/tool-ui/src/AutoExpand.css +33 -0
  76. package/src/legacy/tool-ui/src/Avatar.css +31 -0
  77. package/src/legacy/tool-ui/src/BackgroundTasks.css +29 -0
  78. package/src/legacy/tool-ui/src/Base.css +80 -0
  79. package/src/legacy/tool-ui/src/Board.css +160 -0
  80. package/src/legacy/tool-ui/src/Board.ts +515 -0
  81. package/src/legacy/tool-ui/src/BroadcastAlertBanner.ts +93 -0
  82. package/src/legacy/tool-ui/src/BulkUpload.css +51 -0
  83. package/src/legacy/tool-ui/src/BulkWorkflow.css +47 -0
  84. package/src/legacy/tool-ui/src/BulkWorkflow.ts +110 -0
  85. package/src/legacy/tool-ui/src/BulletedList.css +11 -0
  86. package/src/legacy/tool-ui/src/CIGCluster/README.md +32 -0
  87. package/src/legacy/tool-ui/src/CIGCluster/index.ts +144 -0
  88. package/src/legacy/tool-ui/src/CIGCluster.css +60 -0
  89. package/src/legacy/tool-ui/src/Calendar.css +110 -0
  90. package/src/legacy/tool-ui/src/Card.css +28 -0
  91. package/src/legacy/tool-ui/src/Celebrate.ts +87 -0
  92. package/src/legacy/tool-ui/src/Chart.ts +53 -0
  93. package/src/legacy/tool-ui/src/ChartCompat.ts +413 -0
  94. package/src/legacy/tool-ui/src/ChartTable.ts +22 -0
  95. package/src/legacy/tool-ui/src/Checkbox.css +22 -0
  96. package/src/legacy/tool-ui/src/CodeMirror.css +173 -0
  97. package/src/legacy/tool-ui/src/Collections.css +74 -0
  98. package/src/legacy/tool-ui/src/ColorInputSpectrum.css +140 -0
  99. package/src/legacy/tool-ui/src/ComboInput.css +253 -0
  100. package/src/legacy/tool-ui/src/Compat.css +383 -0
  101. package/src/legacy/tool-ui/src/ComponentStatesMixin.ts +27 -0
  102. package/src/legacy/tool-ui/src/ContentColors.css +19 -0
  103. package/src/legacy/tool-ui/src/ContentEdit.css +1065 -0
  104. package/src/legacy/tool-ui/src/ContentEditDrawer.css +274 -0
  105. package/src/legacy/tool-ui/src/ContentEditDrawer.ts +217 -0
  106. package/src/legacy/tool-ui/src/ContentEditPanel.ts +188 -0
  107. package/src/legacy/tool-ui/src/ContentEditSites.ts +101 -0
  108. package/src/legacy/tool-ui/src/ContentForm.css +87 -0
  109. package/src/legacy/tool-ui/src/ContentForm.ts +104 -0
  110. package/src/legacy/tool-ui/src/ContentInputGroup.css +678 -0
  111. package/src/legacy/tool-ui/src/ContentInputGroup.ts +86 -0
  112. package/src/legacy/tool-ui/src/ContentReporting.css +54 -0
  113. package/src/legacy/tool-ui/src/ContentSelector.css +215 -0
  114. package/src/legacy/tool-ui/src/ContentSelectorActions.ts +428 -0
  115. package/src/legacy/tool-ui/src/ContentSummary.css +176 -0
  116. package/src/legacy/tool-ui/src/ContentSummary.ts +223 -0
  117. package/src/legacy/tool-ui/src/ContentTemplatesWidget.css +54 -0
  118. package/src/legacy/tool-ui/src/ContentTools.css +109 -0
  119. package/src/legacy/tool-ui/src/ContentType.css +27 -0
  120. package/src/legacy/tool-ui/src/Conversation.css +325 -0
  121. package/src/legacy/tool-ui/src/Conversation.ts +836 -0
  122. package/src/legacy/tool-ui/src/CopySiteWidget.css +8 -0
  123. package/src/legacy/tool-ui/src/CopyToClipboard/README.md +23 -0
  124. package/src/legacy/tool-ui/src/CopyToClipboard/index.ts +54 -0
  125. package/src/legacy/tool-ui/src/CopyToClipboard.css +10 -0
  126. package/src/legacy/tool-ui/src/Crosslinker.css +486 -0
  127. package/src/legacy/tool-ui/src/Crosslinker.ts +46 -0
  128. package/src/legacy/tool-ui/src/CustomKeyboard.css +25 -0
  129. package/src/legacy/tool-ui/src/DashboardRow.css +54 -0
  130. package/src/legacy/tool-ui/src/DashboardWidget.css +444 -0
  131. package/src/legacy/tool-ui/src/DateStringField.css +82 -0
  132. package/src/legacy/tool-ui/src/DateTimeInput.css +11 -0
  133. package/src/legacy/tool-ui/src/Dialog.css +441 -0
  134. package/src/legacy/tool-ui/src/Diff.css +280 -0
  135. package/src/legacy/tool-ui/src/Diff.ts +89 -0
  136. package/src/legacy/tool-ui/src/Downloads.css +7 -0
  137. package/src/legacy/tool-ui/src/Dropdown.css +63 -0
  138. package/src/legacy/tool-ui/src/EditFieldUpdateCache.ts +129 -0
  139. package/src/legacy/tool-ui/src/EmbeddedInputGroup/README.md +3 -0
  140. package/src/legacy/tool-ui/src/EmbeddedInputGroup/index.ts +189 -0
  141. package/src/legacy/tool-ui/src/EmbeddedInputGroup.css +75 -0
  142. package/src/legacy/tool-ui/src/Enhancement.css +135 -0
  143. package/src/legacy/tool-ui/src/Entry.ts +893 -0
  144. package/src/legacy/tool-ui/src/EventEmitterMixin.ts +71 -0
  145. package/src/legacy/tool-ui/src/ExternalCalendars.ts +34 -0
  146. package/src/legacy/tool-ui/src/ExternalItemObjects.ts +36 -0
  147. package/src/legacy/tool-ui/src/FileInput.css +150 -0
  148. package/src/legacy/tool-ui/src/FocusRegions.ts +530 -0
  149. package/src/legacy/tool-ui/src/FormFilter.css +93 -0
  150. package/src/legacy/tool-ui/src/FullscreenView.css +152 -0
  151. package/src/legacy/tool-ui/src/GCA.css +9 -0
  152. package/src/legacy/tool-ui/src/Global.d.ts +219 -0
  153. package/src/legacy/tool-ui/src/GraphQL.css +74 -0
  154. package/src/legacy/tool-ui/src/GraphQLApis.css +4 -0
  155. package/src/legacy/tool-ui/src/Guide.css +193 -0
  156. package/src/legacy/tool-ui/src/GuideField.css +25 -0
  157. package/src/legacy/tool-ui/src/Hierarchy.css +68 -0
  158. package/src/legacy/tool-ui/src/Icon/index.css +11 -0
  159. package/src/legacy/tool-ui/src/Icon/index.ts +69 -0
  160. package/src/legacy/tool-ui/src/ImageEditor.css +522 -0
  161. package/src/legacy/tool-ui/src/ImageRecognition.css +11 -0
  162. package/src/legacy/tool-ui/src/Incompatible.css +42 -0
  163. package/src/legacy/tool-ui/src/InputRow.css +26 -0
  164. package/src/legacy/tool-ui/src/Label.css +33 -0
  165. package/src/legacy/tool-ui/src/LabeledCheckbox.css +13 -0
  166. package/src/legacy/tool-ui/src/Link.css +4 -0
  167. package/src/legacy/tool-ui/src/LinkCarousel.css +77 -0
  168. package/src/legacy/tool-ui/src/LinkList.css +53 -0
  169. package/src/legacy/tool-ui/src/LinkTable.css +105 -0
  170. package/src/legacy/tool-ui/src/ListManager.css +27 -0
  171. package/src/legacy/tool-ui/src/LiveBlog.css +290 -0
  172. package/src/legacy/tool-ui/src/LiveBlog.ts +47 -0
  173. package/src/legacy/tool-ui/src/Loader.svg +16 -0
  174. package/src/legacy/tool-ui/src/LocationMap.css +25 -0
  175. package/src/legacy/tool-ui/src/LookingGlass.css +31 -0
  176. package/src/legacy/tool-ui/src/LucideDynamicLoader.ts +31 -0
  177. package/src/legacy/tool-ui/src/MailPublishing.css +32 -0
  178. package/src/legacy/tool-ui/src/Mention.css +34 -0
  179. package/src/legacy/tool-ui/src/MenuView.css +659 -0
  180. package/src/legacy/tool-ui/src/Message.css +239 -0
  181. package/src/legacy/tool-ui/src/Month.css +65 -0
  182. package/src/legacy/tool-ui/src/NavRail/index.css +47 -0
  183. package/src/legacy/tool-ui/src/NavRail/index.ts +40 -0
  184. package/src/legacy/tool-ui/src/Notification.css +197 -0
  185. package/src/legacy/tool-ui/src/Notifications.ts +139 -0
  186. package/src/legacy/tool-ui/src/Page.css +884 -0
  187. package/src/legacy/tool-ui/src/PageNav.ts +108 -0
  188. package/src/legacy/tool-ui/src/PaginatedResult.css +20 -0
  189. package/src/legacy/tool-ui/src/Pagination.css +119 -0
  190. package/src/legacy/tool-ui/src/PastePopup.css +11 -0
  191. package/src/legacy/tool-ui/src/PlaceholderEditableMixin.ts +86 -0
  192. package/src/legacy/tool-ui/src/Popup.css +413 -0
  193. package/src/legacy/tool-ui/src/PostPublish.ts +12 -0
  194. package/src/legacy/tool-ui/src/PrePublish.ts +63 -0
  195. package/src/legacy/tool-ui/src/Preview.css +134 -0
  196. package/src/legacy/tool-ui/src/PrivilegeAccessWidget.css +27 -0
  197. package/src/legacy/tool-ui/src/ProfileDropdown.css +95 -0
  198. package/src/legacy/tool-ui/src/ProseMirror-table.css +179 -0
  199. package/src/legacy/tool-ui/src/ProseMirror.css +180 -0
  200. package/src/legacy/tool-ui/src/ProseMirrorContainer.css +40 -0
  201. package/src/legacy/tool-ui/src/ProseMirrorEnhancementMenu.css +68 -0
  202. package/src/legacy/tool-ui/src/ProseMirrorFindReplace.css +132 -0
  203. package/src/legacy/tool-ui/src/QueryField.css +77 -0
  204. package/src/legacy/tool-ui/src/README.md +235 -0
  205. package/src/legacy/tool-ui/src/RadialProgressBar.css +11 -0
  206. package/src/legacy/tool-ui/src/RadialProgressBar.ts +73 -0
  207. package/src/legacy/tool-ui/src/Radio.css +22 -0
  208. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +470 -0
  209. package/src/legacy/tool-ui/src/RepeatableContentSelector.css +177 -0
  210. package/src/legacy/tool-ui/src/RepeatableTextInput.css +71 -0
  211. package/src/legacy/tool-ui/src/Revision.css +70 -0
  212. package/src/legacy/tool-ui/src/Revisions.css +292 -0
  213. package/src/legacy/tool-ui/src/RichText.css +15 -0
  214. package/src/legacy/tool-ui/src/SearchControlsToggle.ts +90 -0
  215. package/src/legacy/tool-ui/src/SearchFields.css +109 -0
  216. package/src/legacy/tool-ui/src/SearchInput.css +27 -0
  217. package/src/legacy/tool-ui/src/SearchResult.css +523 -0
  218. package/src/legacy/tool-ui/src/SearchWidget.css +441 -0
  219. package/src/legacy/tool-ui/src/SearchWidget.ts +154 -0
  220. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +109 -0
  221. package/src/legacy/tool-ui/src/SharePreview.css +71 -0
  222. package/src/legacy/tool-ui/src/SkipLinks.css +23 -0
  223. package/src/legacy/tool-ui/src/SkipLinks.ts +112 -0
  224. package/src/legacy/tool-ui/src/SlackAuthentication.css +9 -0
  225. package/src/legacy/tool-ui/src/Sortable.css +50 -0
  226. package/src/legacy/tool-ui/src/Spellcheck.css +34 -0
  227. package/src/legacy/tool-ui/src/StyleEmbeddedContent.css +62 -0
  228. package/src/legacy/tool-ui/src/Suggestions.css +53 -0
  229. package/src/legacy/tool-ui/src/Suggestions.ts +209 -0
  230. package/src/legacy/tool-ui/src/TabBar.css +174 -0
  231. package/src/legacy/tool-ui/src/TabContainer.css +40 -0
  232. package/src/legacy/tool-ui/src/Table.css +107 -0
  233. package/src/legacy/tool-ui/src/TableSizerPopup.css +42 -0
  234. package/src/legacy/tool-ui/src/Taxonomy.css +60 -0
  235. package/src/legacy/tool-ui/src/TextInput.css +40 -0
  236. package/src/legacy/tool-ui/src/Theme.css +64 -0
  237. package/src/legacy/tool-ui/src/ThemeBundleEditor.css +93 -0
  238. package/src/legacy/tool-ui/src/TimedContent.css +74 -0
  239. package/src/legacy/tool-ui/src/Toggleable/README.md +90 -0
  240. package/src/legacy/tool-ui/src/Toggleable/index.ts +230 -0
  241. package/src/legacy/tool-ui/src/Translation.css +115 -0
  242. package/src/legacy/tool-ui/src/Translation.ts +20 -0
  243. package/src/legacy/tool-ui/src/TreeList.css +45 -0
  244. package/src/legacy/tool-ui/src/Types.ts +44 -0
  245. package/src/legacy/tool-ui/src/Utilities.css +7 -0
  246. package/src/legacy/tool-ui/src/ViewMirror.css +7 -0
  247. package/src/legacy/tool-ui/src/ViewPreview.css +59 -0
  248. package/src/legacy/tool-ui/src/ViewWatchers.css +69 -0
  249. package/src/legacy/tool-ui/src/Viewers.css +21 -0
  250. package/src/legacy/tool-ui/src/Week.css +23 -0
  251. package/src/legacy/tool-ui/src/Widget.css +622 -0
  252. package/src/legacy/tool-ui/src/WorkStreams.css +97 -0
  253. package/src/legacy/tool-ui/src/Workflow.css +100 -0
  254. package/src/legacy/tool-ui/src/Workstreams.ts +52 -0
  255. package/src/legacy/tool-ui/src/WrappingMixin.ts +77 -0
  256. package/src/legacy/tool-ui/src/additional-tailwind-classes.txt +205 -0
  257. package/src/legacy/tool-ui/src/bsp-tracking.d.ts +27 -0
  258. package/src/legacy/tool-ui/src/dialog/README.md +83 -0
  259. package/src/legacy/tool-ui/src/dialog/index.ts +465 -0
  260. package/src/legacy/tool-ui/src/dom/README.md +63 -0
  261. package/src/legacy/tool-ui/src/dom/Tether.ts +135 -0
  262. package/src/legacy/tool-ui/src/dom/TetherLayout.ts +149 -0
  263. package/src/legacy/tool-ui/src/dom/aria.ts +123 -0
  264. package/src/legacy/tool-ui/src/dom/closest.ts +5 -0
  265. package/src/legacy/tool-ui/src/dom/create.ts +46 -0
  266. package/src/legacy/tool-ui/src/dom/find.ts +5 -0
  267. package/src/legacy/tool-ui/src/dom/findAll.ts +5 -0
  268. package/src/legacy/tool-ui/src/dom/focusable.ts +29 -0
  269. package/src/legacy/tool-ui/src/dom/ifClick.ts +18 -0
  270. package/src/legacy/tool-ui/src/dom/ifMatches.ts +17 -0
  271. package/src/legacy/tool-ui/src/dom/ifUnmodified.ts +16 -0
  272. package/src/legacy/tool-ui/src/dom/insertBefore.ts +4 -0
  273. package/src/legacy/tool-ui/src/dom/insertFirst.ts +4 -0
  274. package/src/legacy/tool-ui/src/dom/insertLast.ts +4 -0
  275. package/src/legacy/tool-ui/src/dom/keyboard.ts +176 -0
  276. package/src/legacy/tool-ui/src/dom/onFind.ts +277 -0
  277. package/src/legacy/tool-ui/src/dom/onFindOnce.ts +31 -0
  278. package/src/legacy/tool-ui/src/dom/onRTEReady.ts +105 -0
  279. package/src/legacy/tool-ui/src/dom/onRemove.ts +27 -0
  280. package/src/legacy/tool-ui/src/dom/onVisible.ts +29 -0
  281. package/src/legacy/tool-ui/src/dom/popupMenu.d.ts +6 -0
  282. package/src/legacy/tool-ui/src/dom/popupMenu.js +282 -0
  283. package/src/legacy/tool-ui/src/dom/previousUntil.ts +22 -0
  284. package/src/legacy/tool-ui/src/dropdown/README.md +9 -0
  285. package/src/legacy/tool-ui/src/dropdown/index.ts +105 -0
  286. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.less +168 -0
  287. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.ts +15 -0
  288. package/src/legacy/tool-ui/src/form/CodeInput/index.ts +87 -0
  289. package/src/legacy/tool-ui/src/form/FormFilter/README.md +31 -0
  290. package/src/legacy/tool-ui/src/form/FormFilter/index.ts +340 -0
  291. package/src/legacy/tool-ui/src/form/Input/index.less +43 -0
  292. package/src/legacy/tool-ui/src/form/Input/index.ts +92 -0
  293. package/src/legacy/tool-ui/src/form/SearchInput/README.md +23 -0
  294. package/src/legacy/tool-ui/src/form/SearchInput/index.ts +89 -0
  295. package/src/legacy/tool-ui/src/form/TextAreaInput/index.less +11 -0
  296. package/src/legacy/tool-ui/src/form/TextAreaInput/index.ts +36 -0
  297. package/src/legacy/tool-ui/src/graphql/GraphQL.ts +49 -0
  298. package/src/legacy/tool-ui/src/graphql/GraphQLPreview.ts +23 -0
  299. package/src/legacy/tool-ui/src/main/webapp/dist/011a678e3efe41981754.png +1 -0
  300. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js +2 -0
  301. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js.LICENSE.txt +10 -0
  302. package/src/legacy/tool-ui/src/main/webapp/dist/194137260531ee29a5f2.svg +1 -0
  303. package/src/legacy/tool-ui/src/main/webapp/dist/1946.156c6821383df2638492.js +1 -0
  304. package/src/legacy/tool-ui/src/main/webapp/dist/1950.3594aaa4f20df28f39d9.js +1 -0
  305. package/src/legacy/tool-ui/src/main/webapp/dist/1e8408af1a34bdf61457.png +1 -0
  306. package/src/legacy/tool-ui/src/main/webapp/dist/2111.3956b5196a514b2c0131.js +1 -0
  307. package/src/legacy/tool-ui/src/main/webapp/dist/2111.a937b0cafa8cf7c039d2.css +1 -0
  308. package/src/legacy/tool-ui/src/main/webapp/dist/2129.6b044e5564dd3dbb2f94.js +1 -0
  309. package/src/legacy/tool-ui/src/main/webapp/dist/2314.420883b6638f35f40e70.js +1 -0
  310. package/src/legacy/tool-ui/src/main/webapp/dist/2456.5bcfb782c2ec27de32ed.js +1 -0
  311. package/src/legacy/tool-ui/src/main/webapp/dist/2537.e8f1359bedd328bf57f4.js +1 -0
  312. package/src/legacy/tool-ui/src/main/webapp/dist/2565.4ca31a6a46de85cd3b31.js +1 -0
  313. package/src/legacy/tool-ui/src/main/webapp/dist/270.3011484ff80f3093083a.js +1 -0
  314. package/src/legacy/tool-ui/src/main/webapp/dist/2825.c1342ac2662d11fd4125.js +1 -0
  315. package/src/legacy/tool-ui/src/main/webapp/dist/2947.f96d21c44c05980974ef.js +1 -0
  316. package/src/legacy/tool-ui/src/main/webapp/dist/3532.c358dfbb2cde0f802c7f.js +1 -0
  317. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js +2 -0
  318. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js.LICENSE.txt +1 -0
  319. package/src/legacy/tool-ui/src/main/webapp/dist/3611.61837ffa933f74502094.js +1 -0
  320. package/src/legacy/tool-ui/src/main/webapp/dist/3790.74b7037d430ed0a47d0c.js +1 -0
  321. package/src/legacy/tool-ui/src/main/webapp/dist/3995.afbec58662cafb46ec2c.js +1 -0
  322. package/src/legacy/tool-ui/src/main/webapp/dist/4017.c3ed1ca3be18b5c080c8.js +1 -0
  323. package/src/legacy/tool-ui/src/main/webapp/dist/4093.152620c022c3013502b7.js +1 -0
  324. package/src/legacy/tool-ui/src/main/webapp/dist/4114.57fe159e416e716f8cbc.js +1 -0
  325. package/src/legacy/tool-ui/src/main/webapp/dist/4168.a224af7c5c5f6f2ddd7b.js +1 -0
  326. package/src/legacy/tool-ui/src/main/webapp/dist/4374.37147747a254da8f5f8a.js +1 -0
  327. package/src/legacy/tool-ui/src/main/webapp/dist/4450.16dd5684292fd0a7ea7f.js +1 -0
  328. package/src/legacy/tool-ui/src/main/webapp/dist/4478.93f64e6a6ccb35a6c6d4.js +1 -0
  329. package/src/legacy/tool-ui/src/main/webapp/dist/44b38a404dec4643c46b.png +1 -0
  330. package/src/legacy/tool-ui/src/main/webapp/dist/4582.243dbaa3d8a8648f6f40.js +1 -0
  331. package/src/legacy/tool-ui/src/main/webapp/dist/4709.4f6b707e225e481a928e.js +1 -0
  332. package/src/legacy/tool-ui/src/main/webapp/dist/4790.10d75f7c7f8e54ce83a1.js +1 -0
  333. package/src/legacy/tool-ui/src/main/webapp/dist/4795.034ebc93a67b7a3d6536.js +1 -0
  334. package/src/legacy/tool-ui/src/main/webapp/dist/4850.6b944738520f69c98070.js +1 -0
  335. package/src/legacy/tool-ui/src/main/webapp/dist/4a4ee777ddc0d4cedee4.png +1 -0
  336. package/src/legacy/tool-ui/src/main/webapp/dist/5001.a61ae5608398d5d98ab1.js +1 -0
  337. package/src/legacy/tool-ui/src/main/webapp/dist/5030.1e8b82e1444067d492b1.js +1 -0
  338. package/src/legacy/tool-ui/src/main/webapp/dist/5055.620ccb3717b4a6427f09.js +1 -0
  339. package/src/legacy/tool-ui/src/main/webapp/dist/5098.33613009827cfc80aafb.js +1 -0
  340. package/src/legacy/tool-ui/src/main/webapp/dist/5385.6656501b67424994820b.js +1 -0
  341. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js +2 -0
  342. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js.LICENSE.txt +11 -0
  343. package/src/legacy/tool-ui/src/main/webapp/dist/5617.c81ecb679371ca302f1f.js +1 -0
  344. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js +2 -0
  345. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js.LICENSE.txt +8 -0
  346. package/src/legacy/tool-ui/src/main/webapp/dist/6047.291dd2d4b3f79be2c64d.js +1 -0
  347. package/src/legacy/tool-ui/src/main/webapp/dist/6086.7ca02b827506f29db590.js +1 -0
  348. package/src/legacy/tool-ui/src/main/webapp/dist/6216.cf8adc1990ee1111f065.js +1 -0
  349. package/src/legacy/tool-ui/src/main/webapp/dist/6497.b7d8dcbf0e7c8d8d538d.js +1 -0
  350. package/src/legacy/tool-ui/src/main/webapp/dist/6565.0e5abc3bd344c53ae154.js +1 -0
  351. package/src/legacy/tool-ui/src/main/webapp/dist/7033.4cd6efbe12e7aaa35745.js +1 -0
  352. package/src/legacy/tool-ui/src/main/webapp/dist/7202.1e5b8f21215ea6eae20a.js +1 -0
  353. package/src/legacy/tool-ui/src/main/webapp/dist/7361.793163ca71dfac69d9eb.js +1 -0
  354. package/src/legacy/tool-ui/src/main/webapp/dist/75.e45c9aec6e7409bfe21d.js +1 -0
  355. package/src/legacy/tool-ui/src/main/webapp/dist/7524.2990be869cf0a2988d17.js +1 -0
  356. package/src/legacy/tool-ui/src/main/webapp/dist/7554.bb243c1fb06a125f6353.js +1 -0
  357. package/src/legacy/tool-ui/src/main/webapp/dist/7718.a937b0cafa8cf7c039d2.css +1 -0
  358. package/src/legacy/tool-ui/src/main/webapp/dist/7718.f5996ddd99f2353c7785.js +1 -0
  359. package/src/legacy/tool-ui/src/main/webapp/dist/7741.0b2789c4e783af835763.js +1 -0
  360. package/src/legacy/tool-ui/src/main/webapp/dist/7769.d47f40cc83035fc2392a.js +1 -0
  361. package/src/legacy/tool-ui/src/main/webapp/dist/7863.2a1d1fd229778a47e10b.js +1 -0
  362. package/src/legacy/tool-ui/src/main/webapp/dist/7923.8a92f55de8387f7a8a35.js +1 -0
  363. package/src/legacy/tool-ui/src/main/webapp/dist/8684.7171c731d38a9873d6df.js +1 -0
  364. package/src/legacy/tool-ui/src/main/webapp/dist/8752.3d02a0f42ec39786fdf0.js +1 -0
  365. package/src/legacy/tool-ui/src/main/webapp/dist/8897.bfeed19f2a4acbb6d67c.js +1 -0
  366. package/src/legacy/tool-ui/src/main/webapp/dist/8934.e90ceca8169fc25e4e1b.js +1 -0
  367. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js +2 -0
  368. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js.LICENSE.txt +9 -0
  369. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js +2 -0
  370. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js.LICENSE.txt +33 -0
  371. package/src/legacy/tool-ui/src/main/webapp/dist/9561.64eab18c8c1bbc4ad8ec.js +1 -0
  372. package/src/legacy/tool-ui/src/main/webapp/dist/9576.174d6a99544d17e7416d.js +1 -0
  373. package/src/legacy/tool-ui/src/main/webapp/dist/983.eedba1cd484aa5bee0c4.js +1 -0
  374. package/src/legacy/tool-ui/src/main/webapp/dist/Appetizeio.185641211f7c0e42a455.js +1 -0
  375. package/src/legacy/tool-ui/src/main/webapp/dist/CISpectrum.74db7dc80b3a6797a167.js +1 -0
  376. package/src/legacy/tool-ui/src/main/webapp/dist/Chart.223ea4ee9e3e32b67a26.js +1 -0
  377. package/src/legacy/tool-ui/src/main/webapp/dist/ChartCompat.4dd096dd030942227ec6.js +1 -0
  378. package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.5ddffe054374f883d6f8.js +1 -0
  379. package/src/legacy/tool-ui/src/main/webapp/dist/ImageEditor.14e3b3035666436f53a5.js +1 -0
  380. package/src/legacy/tool-ui/src/main/webapp/dist/LocationMap.72a510c0f5ff236f596e.js +1 -0
  381. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.e8521581e28e90ef6f30.js +500 -0
  382. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.e8521581e28e90ef6f30.js.LICENSE.txt +8 -0
  383. package/src/legacy/tool-ui/src/main/webapp/dist/RegionMap.f6f963eda2cb616b9661.js +1 -0
  384. package/src/legacy/tool-ui/src/main/webapp/dist/TimedContent.4bb4dc83ffbe4019dd7b.js +1 -0
  385. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js +2 -0
  386. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js.LICENSE.txt +23 -0
  387. package/src/legacy/tool-ui/src/main/webapp/dist/c6e9c007f41bd4d26c20.png +1 -0
  388. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.map +1 -0
  389. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js +2 -0
  390. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js.LICENSE.txt +7 -0
  391. package/src/legacy/tool-ui/src/main/webapp/dist/lucide.woff2 +0 -0
  392. package/src/legacy/tool-ui/src/main/webapp/dist/preview.d46d98e5ca9dba0a0f5a.js +1 -0
  393. package/src/legacy/tool-ui/src/main/webapp/dist/v4.a6f53058dbb04a69aa5c.css +3 -0
  394. package/src/legacy/tool-ui/src/main/webapp/dist/v4.de442a0b430071a7803d.js +92 -0
  395. package/src/legacy/tool-ui/src/main/webapp/dist/v4.de442a0b430071a7803d.js.LICENSE.txt +71 -0
  396. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5ce74760f3fb482bec5e.js +92 -0
  397. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5ce74760f3fb482bec5e.js.LICENSE.txt +78 -0
  398. package/src/legacy/tool-ui/src/main/webapp/dist/v5.68dab4082aba302779ed.css +5 -0
  399. package/src/legacy/tool-ui/src/main/webapp/style/v3/ExternalPreviewFrame.less +6 -0
  400. package/src/legacy/tool-ui/src/main/webapp/style/v3/WidgetSearchAdvancedQuery.less +24 -0
  401. package/src/legacy/tool-ui/src/main/webapp/style/v3/element.less +11 -0
  402. package/src/legacy/tool-ui/src/main/webapp/style/v3/icon/ajax-loader.gif +0 -0
  403. package/src/legacy/tool-ui/src/main/webapp/style/v3/index.less +98 -0
  404. package/src/legacy/tool-ui/src/main/webapp/style/v3/repeatable.less +89 -0
  405. package/src/legacy/tool-ui/src/main/webapp/style/v3/variables.less +53 -0
  406. package/src/legacy/tool-ui/src/main/webapp/v4/ActionBar.less +44 -0
  407. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.less +253 -0
  408. package/src/legacy/tool-ui/src/main/webapp/v4/AdobeStock.less +20 -0
  409. package/src/legacy/tool-ui/src/main/webapp/v4/Apis.less +43 -0
  410. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.less +36 -0
  411. package/src/legacy/tool-ui/src/main/webapp/v4/Avatar.less +30 -0
  412. package/src/legacy/tool-ui/src/main/webapp/v4/BackgroundTasks.less +52 -0
  413. package/src/legacy/tool-ui/src/main/webapp/v4/Badge.less +10 -0
  414. package/src/legacy/tool-ui/src/main/webapp/v4/Board.less +311 -0
  415. package/src/legacy/tool-ui/src/main/webapp/v4/BulletedList.less +17 -0
  416. package/src/legacy/tool-ui/src/main/webapp/v4/Button.less +105 -0
  417. package/src/legacy/tool-ui/src/main/webapp/v4/CIGCluster.less +55 -0
  418. package/src/legacy/tool-ui/src/main/webapp/v4/Card.less +53 -0
  419. package/src/legacy/tool-ui/src/main/webapp/v4/Checkbox.less +99 -0
  420. package/src/legacy/tool-ui/src/main/webapp/v4/Collections.less +49 -0
  421. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.less +319 -0
  422. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.less +403 -0
  423. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.less +73 -0
  424. package/src/legacy/tool-ui/src/main/webapp/v4/Compat.less +7 -0
  425. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.less +1512 -0
  426. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditDrawer.less +329 -0
  427. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditSites.less +5 -0
  428. package/src/legacy/tool-ui/src/main/webapp/v4/ContentForm.less +174 -0
  429. package/src/legacy/tool-ui/src/main/webapp/v4/ContentInputGroup.less +669 -0
  430. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.less +39 -0
  431. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSelector.less +268 -0
  432. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSummary.less +238 -0
  433. package/src/legacy/tool-ui/src/main/webapp/v4/ContentTools.less +73 -0
  434. package/src/legacy/tool-ui/src/main/webapp/v4/ContentType.less +24 -0
  435. package/src/legacy/tool-ui/src/main/webapp/v4/CopyToClipboard.less +20 -0
  436. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardRow.less +40 -0
  437. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardWidget.less +193 -0
  438. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.less +52 -0
  439. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.less +148 -0
  440. package/src/legacy/tool-ui/src/main/webapp/v4/DateTimeInput.less +58 -0
  441. package/src/legacy/tool-ui/src/main/webapp/v4/Diff.less +322 -0
  442. package/src/legacy/tool-ui/src/main/webapp/v4/Downloads.css +11 -0
  443. package/src/legacy/tool-ui/src/main/webapp/v4/Draggable.less +42 -0
  444. package/src/legacy/tool-ui/src/main/webapp/v4/Dropdown.less +76 -0
  445. package/src/legacy/tool-ui/src/main/webapp/v4/EmbeddedInputGroup.less +141 -0
  446. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.less +157 -0
  447. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemImport.less +3 -0
  448. package/src/legacy/tool-ui/src/main/webapp/v4/FileInput.less +194 -0
  449. package/src/legacy/tool-ui/src/main/webapp/v4/FormFilter.less +189 -0
  450. package/src/legacy/tool-ui/src/main/webapp/v4/Frame.less +26 -0
  451. package/src/legacy/tool-ui/src/main/webapp/v4/GraphQLApis.less +4 -0
  452. package/src/legacy/tool-ui/src/main/webapp/v4/Grid.less +48 -0
  453. package/src/legacy/tool-ui/src/main/webapp/v4/Guide.less +209 -0
  454. package/src/legacy/tool-ui/src/main/webapp/v4/GuideField.less +108 -0
  455. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.less +89 -0
  456. package/src/legacy/tool-ui/src/main/webapp/v4/Highlight.less +5 -0
  457. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.less +53 -0
  458. package/src/legacy/tool-ui/src/main/webapp/v4/IconButton.less +111 -0
  459. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.less +922 -0
  460. package/src/legacy/tool-ui/src/main/webapp/v4/Input.less +15 -0
  461. package/src/legacy/tool-ui/src/main/webapp/v4/InputRow.less +35 -0
  462. package/src/legacy/tool-ui/src/main/webapp/v4/Label.less +12 -0
  463. package/src/legacy/tool-ui/src/main/webapp/v4/LabeledCheckbox.less +35 -0
  464. package/src/legacy/tool-ui/src/main/webapp/v4/Link.less +93 -0
  465. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.less +143 -0
  466. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.less +150 -0
  467. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.less +112 -0
  468. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.less +62 -0
  469. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.less +30 -0
  470. package/src/legacy/tool-ui/src/main/webapp/v4/Message.less +189 -0
  471. package/src/legacy/tool-ui/src/main/webapp/v4/Month.less +102 -0
  472. package/src/legacy/tool-ui/src/main/webapp/v4/Notification.less +278 -0
  473. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.less +21 -0
  474. package/src/legacy/tool-ui/src/main/webapp/v4/NumberedList.less +17 -0
  475. package/src/legacy/tool-ui/src/main/webapp/v4/Page.less +922 -0
  476. package/src/legacy/tool-ui/src/main/webapp/v4/PaginatedResult.less +89 -0
  477. package/src/legacy/tool-ui/src/main/webapp/v4/Pagination.less +80 -0
  478. package/src/legacy/tool-ui/src/main/webapp/v4/Popup.less +415 -0
  479. package/src/legacy/tool-ui/src/main/webapp/v4/PrePublish.less +5 -0
  480. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.less +495 -0
  481. package/src/legacy/tool-ui/src/main/webapp/v4/ProfileDropdown.less +66 -0
  482. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.less +147 -0
  483. package/src/legacy/tool-ui/src/main/webapp/v4/RadialProgressBar.less +20 -0
  484. package/src/legacy/tool-ui/src/main/webapp/v4/Repeatable.less +102 -0
  485. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.less +731 -0
  486. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentSelector.less +296 -0
  487. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableTextInput.less +156 -0
  488. package/src/legacy/tool-ui/src/main/webapp/v4/Reset.less +373 -0
  489. package/src/legacy/tool-ui/src/main/webapp/v4/Revision.less +50 -0
  490. package/src/legacy/tool-ui/src/main/webapp/v4/RichText.less +32 -0
  491. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.less +197 -0
  492. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.less +403 -0
  493. package/src/legacy/tool-ui/src/main/webapp/v4/SearchInput.less +65 -0
  494. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.less +479 -0
  495. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidget.less +697 -0
  496. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidgetAdvanced.less +115 -0
  497. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.less +95 -0
  498. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.less +242 -0
  499. package/src/legacy/tool-ui/src/main/webapp/v4/StandardForm.less +12 -0
  500. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.less +131 -0
  501. package/src/legacy/tool-ui/src/main/webapp/v4/Suggestions.less +121 -0
  502. package/src/legacy/tool-ui/src/main/webapp/v4/TabBar.less +258 -0
  503. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.less +26 -0
  504. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.less +84 -0
  505. package/src/legacy/tool-ui/src/main/webapp/v4/Text.less +41 -0
  506. package/src/legacy/tool-ui/src/main/webapp/v4/TextInput.less +32 -0
  507. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.less +106 -0
  508. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.less +202 -0
  509. package/src/legacy/tool-ui/src/main/webapp/v4/TreeList.less +93 -0
  510. package/src/legacy/tool-ui/src/main/webapp/v4/Utils.css +14 -0
  511. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.less +737 -0
  512. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.less +42 -0
  513. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.less +147 -0
  514. package/src/legacy/tool-ui/src/main/webapp/v4/Viewers.less +70 -0
  515. package/src/legacy/tool-ui/src/main/webapp/v4/Week.less +32 -0
  516. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.less +224 -0
  517. package/src/legacy/tool-ui/src/main/webapp/v4/Workflow.less +153 -0
  518. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.less +77 -0
  519. package/src/legacy/tool-ui/src/main/webapp/v4/bsp-rings-bg.svg +9 -0
  520. package/src/legacy/tool-ui/src/main/webapp/v4/graphql/GraphQL.less +171 -0
  521. package/src/legacy/tool-ui/src/main/webapp/v4/mail-publishing/MailPublishing.less +38 -0
  522. package/src/legacy/tool-ui/src/main/webapp/v4/rte/Mention.less +35 -0
  523. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.less +759 -0
  524. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirrorContainer.less +29 -0
  525. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInline.less +244 -0
  526. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.less +11 -0
  527. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/CollabEditing.less +18 -0
  528. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.less +21 -0
  529. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/Enhancement.less +67 -0
  530. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.less +45 -0
  531. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ProsemirrorEnhancementMenu.less +113 -0
  532. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/ProseMirrorFindReplace.less +174 -0
  533. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.less +383 -0
  534. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.less +42 -0
  535. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.less +821 -0
  536. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/views/PastePopup.less +5 -0
  537. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck.less +73 -0
  538. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/ProseMirror-table.less +137 -0
  539. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerPopup.less +19 -0
  540. package/src/legacy/tool-ui/src/main/webapp/v4/theme/Theme.less +224 -0
  541. package/src/legacy/tool-ui/src/main/webapp/v4/translation/Translation.less +114 -0
  542. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AnalyticsWidget.less +18 -0
  543. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.less +19 -0
  544. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.less +410 -0
  545. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskRelatedWidget.less +3 -0
  546. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentFilters.less +23 -0
  547. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.less +92 -0
  548. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.less +65 -0
  549. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkWorkflow.less +103 -0
  550. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.less +109 -0
  551. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarAccessOverview.less +26 -0
  552. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarEventSummary.less +15 -0
  553. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.less +3 -0
  554. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentColors.less +17 -0
  555. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentTemplatesWidget.less +123 -0
  556. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Conversation.less +537 -0
  557. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CopySiteWidget.less +13 -0
  558. package/src/legacy/tool-ui/src/main/webapp/v4/widget/FormSubmission.less +3 -0
  559. package/src/legacy/tool-ui/src/main/webapp/v4/widget/LiveBlog.less +158 -0
  560. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.less +16 -0
  561. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.less +10 -0
  562. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.less +280 -0
  563. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SavedSearch.less +13 -0
  564. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SemRushDashboardWidget.less +6 -0
  565. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SlackAuthentication.less +13 -0
  566. package/src/legacy/tool-ui/src/main/webapp/v4/widget/WorkStreams.less +39 -0
  567. package/src/legacy/tool-ui/src/platform.ts +25 -0
  568. package/src/legacy/tool-ui/src/rtc/Socket.ts +205 -0
  569. package/src/legacy/tool-ui/src/rtc/index.ts +276 -0
  570. package/src/legacy/tool-ui/src/table/README.md +3 -0
  571. package/src/legacy/tool-ui/src/table/index.ts +107 -0
  572. package/src/legacy/tool-ui/src/theme/ColorRotator.ts +32 -0
  573. package/src/legacy/tool-ui/src/theme/Theme.ts +516 -0
  574. package/src/legacy/tool-ui/src/theme/index.ts +7 -0
  575. package/src/legacy/tool-ui/src/util/README.md +42 -0
  576. package/src/legacy/tool-ui/src/util/debounce.ts +22 -0
  577. package/src/legacy/tool-ui/src/util/getComponentKey.ts +25 -0
  578. package/src/legacy/tool-ui/src/util/noise.ts +51 -0
  579. package/src/legacy/tool-ui/src/util/repaint.ts +17 -0
  580. package/src/legacy/tool-ui/src/util/storage.ts +21 -0
  581. package/src/legacy/tool-ui/src/util/string.ts +15 -0
  582. package/src/legacy/tool-ui/src/util/svg.ts +46 -0
  583. package/src/legacy/tool-ui/src/util/throttle.ts +37 -0
  584. package/src/legacy/tool-ui/src/util/transition.ts +5 -0
  585. package/src/legacy/tool-ui/src/v5.css +149 -0
  586. package/src/legacy/tool-ui/src/v5.ts +2081 -0
  587. package/src/legacy/tool-ui/src/widget/README.md +27 -0
  588. package/src/legacy/tool-ui/src/widget/index.ts +160 -0
  589. package/dist/storybook/assets/if-defined-DxmT9CH8.js +0 -1
@@ -0,0 +1,465 @@
1
+ import { LitElement, html } from 'lit'
2
+ import { customElement, property, queryAsync } from 'lit/decorators.js'
3
+ import { ComponentStatesMixin } from '../ComponentStatesMixin'
4
+ import { EventEmitterMixin } from '../EventEmitterMixin'
5
+ import onFind from '../dom/onFind'
6
+ import onRemove from '../dom/onRemove'
7
+ import { v1 as uuid } from 'uuid'
8
+ import { focusRegionManager } from '../FocusRegions'
9
+
10
+ @customElement('btu-dialog')
11
+ export default class Dialog extends ComponentStatesMixin(
12
+ EventEmitterMixin(LitElement),
13
+ ) {
14
+ static get tagName() {
15
+ return 'BTU-DIALOG'
16
+ }
17
+
18
+ @queryAsync(':scope > dialog')
19
+ private _dialog?: Promise<HTMLDialogElement>
20
+
21
+ @property({ type: Boolean })
22
+ private _unsavedChanges = false
23
+
24
+ private _contextObserver?: MutationObserver
25
+ private _popupElement?: HTMLElement
26
+
27
+ /*
28
+ Adding this functionality to our WC since it's not recommended
29
+ to open native <dialog>s directly using their `open` attribute.
30
+ See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/open
31
+ */
32
+ @property({ attribute: 'auto-open', type: Boolean })
33
+ public autoOpen = true
34
+
35
+ @property({ attribute: 'remove-on-close', type: Boolean })
36
+ public removeOnClose = true
37
+
38
+ @property({ type: String, reflect: true, attribute: 'enter-from' })
39
+ public enterFrom: 'left' | 'right' | 'center' = 'center'
40
+
41
+ @property({ type: Boolean, reflect: true })
42
+ public loaded = false
43
+
44
+ private set unsavedChanges(value: boolean) {
45
+ const oldValue = this._unsavedChanges
46
+ this._unsavedChanges = value
47
+ if (oldValue !== value) {
48
+ this.dispatchEvent(
49
+ new CustomEvent('btu-dialog-unsaved-changes-state-changed', {
50
+ detail: value,
51
+ bubbles: true,
52
+ composed: true,
53
+ }),
54
+ )
55
+ }
56
+ }
57
+
58
+ private async _setupChangeDetection(form: HTMLFormElement) {
59
+ // Check for changes...
60
+ const hasStateChanges = () => {
61
+ // First check the form itself
62
+ if (form.classList.contains('state-changed')) {
63
+ return true
64
+ }
65
+
66
+ // Then check for any descendants with state-changed
67
+ if (form.querySelector('.state-changed')) {
68
+ return true
69
+ }
70
+
71
+ return false
72
+ }
73
+
74
+ // Check overall state
75
+ const updateChangeState = () => {
76
+ const hasChanges = hasStateChanges()
77
+ const isProcessing = form.classList.contains('is-processingFiles')
78
+
79
+ this.unsavedChanges = hasChanges || isProcessing
80
+ }
81
+
82
+ // Watch for class changes that might indicate state changes
83
+ const observer = new MutationObserver(() => {
84
+ requestAnimationFrame(updateChangeState)
85
+ })
86
+
87
+ observer.observe(form, {
88
+ attributes: true,
89
+ attributeFilter: ['class'],
90
+ subtree: true,
91
+ })
92
+
93
+ // Handle form removal
94
+ // false positives can happen on post-back when a frame reloads without its original <form>.
95
+ onRemove(form, () => {
96
+ observer.disconnect()
97
+ this.unsavedChanges = false
98
+ })
99
+
100
+ // Run initial state check
101
+ updateChangeState()
102
+
103
+ // Clean up when dialog is closed
104
+ this.addEventListener(
105
+ 'btu-dialog-closed',
106
+ () => {
107
+ observer.disconnect()
108
+ },
109
+ { once: true },
110
+ )
111
+ }
112
+
113
+ /**
114
+ * Caches the Popup element reference for performance
115
+ */
116
+ private _cachePopupElement(): void {
117
+ if (!this._popupElement) {
118
+ this._popupElement =
119
+ this.querySelector<HTMLElement>(':scope > dialog > .Popup') || undefined
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Detects the Popup's enter direction and sets enterFrom property
125
+ */
126
+ private _detectEnterFrom(): void {
127
+ if (!this._popupElement) return
128
+
129
+ if (this._popupElement.classList.contains('is-fromRight')) {
130
+ this.enterFrom = 'right'
131
+ } else if (this._popupElement.classList.contains('is-fromLeft')) {
132
+ this.enterFrom = 'left'
133
+ } else {
134
+ this.enterFrom = 'center'
135
+ }
136
+ }
137
+
138
+ /**
139
+ * Detects if the Popup is fully loaded and ready
140
+ */
141
+ private _detectLoadedState(): void {
142
+ if (!this._popupElement) return
143
+
144
+ // Check if Popup has all three classes indicating it's loaded
145
+ const isLoaded =
146
+ this._popupElement.classList.contains('loaded') &&
147
+ this._popupElement.classList.contains('is-ready') &&
148
+ this._popupElement.classList.contains('is-visible')
149
+
150
+ this.loaded = isLoaded
151
+ }
152
+
153
+ /**
154
+ * Checks if an element is relevant for context annotation
155
+ */
156
+ private _isRelevantElement(element: Element): boolean {
157
+ const relevantSelectors =
158
+ '.ActionBar, .Message, .Admin, form, .TC, .AIChat-wrapper, .fixedScrollable'
159
+
160
+ return (
161
+ element.matches(relevantSelectors) ||
162
+ element.querySelector(relevantSelectors) !== null
163
+ )
164
+ }
165
+
166
+ /**
167
+ * Helper to find elements within a scope (either specific element or entire dialog)
168
+ */
169
+ private _findInScope(scope: Element | Document, selector: string): Element[] {
170
+ const elements: Element[] = []
171
+
172
+ if (scope instanceof Element && scope.matches(selector)) {
173
+ elements.push(scope)
174
+ }
175
+
176
+ elements.push(...Array.from(scope.querySelectorAll(selector)))
177
+ return elements
178
+ }
179
+
180
+ /**
181
+ * Sets up MutationObserver to watch for dynamically added content
182
+ */
183
+ private _setupContextObserver(dialog: HTMLDialogElement): void {
184
+ let annotationFrame: number
185
+ const pendingTargets = new Set<Element>()
186
+
187
+ this._contextObserver = new MutationObserver((mutations) => {
188
+ let shouldCheckEnterFrom = false
189
+ let shouldCheckLoadedState = false
190
+
191
+ // Collect newly added elements that need annotation
192
+ for (const mutation of mutations) {
193
+ // Handle childList mutations (elements added/removed)
194
+ if (mutation.type === 'childList') {
195
+ for (const node of mutation.addedNodes) {
196
+ if (node instanceof Element) {
197
+ // Check if Popup was added
198
+ if (
199
+ node.matches('.Popup') ||
200
+ node.querySelector('.Popup') !== null
201
+ ) {
202
+ // Clear cache so it gets refreshed
203
+ this._popupElement = undefined
204
+ this._cachePopupElement()
205
+ shouldCheckEnterFrom = true
206
+ shouldCheckLoadedState = true
207
+ }
208
+
209
+ if (this._isRelevantElement(node)) {
210
+ pendingTargets.add(node)
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ // Handle attribute mutations (class changes on Popup)
217
+ if (
218
+ mutation.type === 'attributes' &&
219
+ mutation.attributeName === 'class'
220
+ ) {
221
+ const target = mutation.target
222
+ if (target instanceof Element && target.matches('.Popup')) {
223
+ shouldCheckLoadedState = true
224
+ }
225
+ }
226
+ }
227
+
228
+ // Re-detect enterFrom if Popup was added
229
+ if (shouldCheckEnterFrom) {
230
+ this._detectEnterFrom()
231
+ }
232
+
233
+ // Re-detect loaded state if Popup classes changed
234
+ if (shouldCheckLoadedState) {
235
+ this._detectLoadedState()
236
+ }
237
+
238
+ // Bail if no relevant changes
239
+ if (pendingTargets.size === 0) return
240
+
241
+ // Debounce annotation updates
242
+ if (!annotationFrame) {
243
+ annotationFrame = window.requestAnimationFrame(() => {
244
+ pendingTargets.forEach((target) =>
245
+ this._annotateDialogContext(target),
246
+ )
247
+ pendingTargets.clear()
248
+ annotationFrame = 0
249
+ })
250
+ }
251
+ })
252
+
253
+ // Watch for new elements and class changes on Popup
254
+ this._contextObserver.observe(dialog, {
255
+ childList: true,
256
+ subtree: true,
257
+ attributes: true,
258
+ attributeFilter: ['class'],
259
+ })
260
+ }
261
+
262
+ /**
263
+ * Marks ancestors with a class, stopping at boundary or if class already exists
264
+ */
265
+ private _markAncestors(
266
+ element: Element,
267
+ className: string,
268
+ boundary: Element,
269
+ ): void {
270
+ let ancestor = element.parentElement
271
+ while (ancestor && ancestor !== boundary) {
272
+ if (ancestor.classList.contains(className)) break
273
+ ancestor.classList.add(className)
274
+ ancestor = ancestor.parentElement
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Annotates dialog DOM with context classes to replace expensive :has() CSS selectors
280
+ */
281
+ private _annotateDialogContext(targetElement?: Element): void {
282
+ const dialog = this.querySelector(':scope > dialog')
283
+ if (!dialog) return
284
+
285
+ const popupContent = dialog.querySelector('.Popup-content')
286
+ if (!popupContent) return
287
+
288
+ // Skip if already fully annotated
289
+ if (!targetElement && popupContent.classList.contains('has-ActionBar')) {
290
+ return
291
+ }
292
+
293
+ const scope = targetElement || dialog
294
+ const isEditing = popupContent.classList.contains('is-editing')
295
+
296
+ // Mark if Admin nav exists
297
+ if (dialog.querySelector('.Admin .Admin-nav')) {
298
+ popupContent.classList.add('has-AdminNav')
299
+ }
300
+
301
+ // Only proceed if not in editing mode and no Admin nav
302
+ const hasAdminNav = popupContent.classList.contains('has-AdminNav')
303
+ if (isEditing || hasAdminNav) return
304
+
305
+ // Find and process ActionBars
306
+ const actionBars = this._findInScope(scope, '.ActionBar')
307
+ if (actionBars.length === 0) return
308
+
309
+ popupContent.classList.add('has-ActionBar')
310
+
311
+ // Mark ancestors of ActionBars that have substantive content
312
+ actionBars.forEach((actionBar) => {
313
+ const hasContent = actionBar.querySelector(
314
+ ':scope > *:not(.ImageEditor-closeButton)',
315
+ )
316
+ if (hasContent) {
317
+ this._markAncestors(actionBar, 'has-ActionBarContent', popupContent)
318
+ }
319
+ })
320
+
321
+ // Mark ancestors of status messages
322
+ const messages = this._findInScope(
323
+ scope,
324
+ '.Message.is-success, .Widget-title + .Message.is-error, .Widget-title + .Message.message-info, .PostPublish-form .Message.is-error, form[action*="translation/request"] > .Message',
325
+ )
326
+ messages.forEach((message) => {
327
+ this._markAncestors(message, 'has-StatusMessage', dialog)
328
+ })
329
+
330
+ // Mark elements that appear immediately before an ActionBar
331
+ const candidates = this._findInScope(
332
+ scope,
333
+ 'form, .TC, .AIChat-wrapper, .fixedScrollable',
334
+ )
335
+ candidates.forEach((element) => {
336
+ const isBeforeActionBar =
337
+ element.nextElementSibling?.classList.contains('ActionBar')
338
+ const isPrePublishScrollable =
339
+ element.classList.contains('fixedScrollable') &&
340
+ element.closest('.Widget.PrePublish')
341
+
342
+ if (isBeforeActionBar && !isPrePublishScrollable) {
343
+ element.classList.add('before-ActionBar')
344
+ }
345
+ })
346
+ }
347
+
348
+ private async _handleClose(e?: Event): Promise<void> {
349
+ if (e?.defaultPrevented) return
350
+
351
+ const dialog = await this._dialog
352
+ if (!dialog) return
353
+
354
+ // Check if we should prevent closing
355
+ if (this._unsavedChanges) {
356
+ if (!confirm(window.BRIGHTSPOT?.ui.tooltips.confirmPopupUnsaved)) {
357
+ e?.preventDefault()
358
+ return
359
+ }
360
+ }
361
+
362
+ // Close dialog and perform cleanup
363
+ dialog.close()
364
+ this.emit('btu-dialog-closed')
365
+
366
+ // remove focus regions associated with this dialog
367
+ focusRegionManager.destroyLayer(dialog)
368
+
369
+ // Support for legacy jquery popups
370
+ if (this._popupElement) {
371
+ window.jQuery?.(this._popupElement).trigger('close.popup')
372
+ }
373
+
374
+ // Remove this host element from the DOM if configured
375
+ if (this.removeOnClose) {
376
+ this.remove()
377
+ }
378
+ }
379
+
380
+ async connectedCallback() {
381
+ super.connectedCallback()
382
+
383
+ this.id = `i${uuid()}`
384
+ }
385
+
386
+ async disconnectedCallback() {
387
+ super.disconnectedCallback()
388
+
389
+ // Clean up the context observer
390
+ this._contextObserver?.disconnect()
391
+ this._contextObserver = undefined
392
+
393
+ // Clear cached popup element
394
+ this._popupElement = undefined
395
+
396
+ await this._dialog?.then((d) => {
397
+ d.removeEventListener('cancel', this._handleClose)
398
+ d.close()
399
+ })
400
+ }
401
+
402
+ async firstUpdated() {
403
+ // Wait for a form to be present in the dialog before setting up change detection
404
+ onFind(`#${this.id} form`, (form: HTMLFormElement) => {
405
+ this._setupChangeDetection(form)
406
+ })
407
+
408
+ await this._dialog?.then((d) => {
409
+ /* Look for children of the dialog when it is attached and move them into the dialog. */
410
+ const children = this.querySelector(
411
+ ':scope > .Popup, :scope > .QueryField-frame, :scope > .ContentEdit-workflow, :scope > *:not(dialog)',
412
+ )
413
+
414
+ if (!children) return
415
+
416
+ d.addEventListener('cancel', (e: Event) => {
417
+ if (e.defaultPrevented) return
418
+ this._handleClose(e)
419
+ })
420
+
421
+ d.appendChild(children)
422
+
423
+ // Cache Popup element reference and detect its properties
424
+ this._cachePopupElement()
425
+ this._detectEnterFrom()
426
+ this._annotateDialogContext()
427
+ this._detectLoadedState()
428
+ // Set up observer to handle dynamically added content
429
+ this._setupContextObserver(d)
430
+ })
431
+
432
+ if (this.autoOpen) {
433
+ // Special case to open global search as a non-modal because we don't want a scrim.
434
+ if (this.querySelector(':scope > dialog > .Popup[name="miscSearch"')) {
435
+ await this._dialog?.then((d) => d.show())
436
+ } else {
437
+ await this._dialog?.then((d) => d.showModal())
438
+ }
439
+ }
440
+
441
+ this.emit('btu-dialog-ready')
442
+ }
443
+
444
+ createRenderRoot() {
445
+ return this
446
+ }
447
+
448
+ public close(e?: Event): void {
449
+ this._handleClose(e)
450
+ }
451
+
452
+ public show(): void {
453
+ this._dialog?.then((d) => d.showModal())
454
+ }
455
+
456
+ render() {
457
+ return html`<dialog></dialog>`
458
+ }
459
+ }
460
+
461
+ declare global {
462
+ interface HTMLElementTagNameMap {
463
+ 'btu-dialog': Dialog
464
+ }
465
+ }
@@ -0,0 +1,63 @@
1
+ # Tether
2
+
3
+ The Tether library makes it possible to visually maintain the position of an element next to another regardless of source-order or changes to the viewport.
4
+
5
+ ## Examples
6
+
7
+ Javascript
8
+
9
+ ```
10
+ import Tether from 'dom/Tether'
11
+
12
+ const tether = new Tether(referenceElem, elem)
13
+ ```
14
+
15
+ or
16
+
17
+ ```
18
+ import Tether from 'dom/Tether'
19
+
20
+ Tether.toggle(referenceElem, elem, () => {...})
21
+ ```
22
+
23
+ ## Custom CSS Properties
24
+
25
+ | Name | Description |
26
+ | ------------- | ----------------------------------------------------- |
27
+ | `--Tether-rh` | Height (in pixels) of the reference element. |
28
+ | `--Tether-rl` | Left coordinate (in pixels) of the reference element. |
29
+ | `--Tether-rt` | Top coordinate (in pixels) of the reference element. |
30
+ | `--Tether-rw` | Width (in pixels) of the reference element. |
31
+
32
+ ## Attributes
33
+
34
+ | Name | Values | Description |
35
+ | ---------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
36
+ | `data-tether-rx` | `l`, `r` (readonly) | Indicates the tether placement on the x-axis relative to the reference. `l` means "left", or, to the left of the reference and `r` means "right", or, to the right of the reference. |
37
+ | `data-tether-ry` | `b`, `t` (readonly) | Indicates the tether placement on the y-axis relative to the reference. `b` means "bottom", or, below the reference and `t` means "top", or, above the reference. |
38
+
39
+ ## Properties
40
+
41
+ | Name | Description |
42
+ | ----------- | ----------------------------------------------------------------- |
43
+ | `element` | Returns the Tethered dom element. |
44
+ | `reference` | Returns the reference dom element which `element` is tethered to. |
45
+
46
+ ## Methods
47
+
48
+ | Name | Description |
49
+ | ----------- | --------------------------- |
50
+ | `destroy()` | Destroys the Tether layout. |
51
+
52
+ ## Static Properties
53
+
54
+ | Name | Description |
55
+ | ---------------- | ------------------------------------------- |
56
+ | `Tether.toggles` | Returns a Map of all Tether toggle objects. |
57
+
58
+ ## Static Methods
59
+
60
+ | Name | Params | Description |
61
+ | ------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
62
+ | `Tether.getReference(element)` | `element`: DOMElement | Returns the reference dom element which the provided element is tethered to. |
63
+ | `Tether.toggle(reference, element, toggle)` | `reference`: DOMElement, `element`: DOMElement, `toggle`: A function or boolean | Handles toggling between creating a new tether or destroying one. Also handles how to auto-close the tethered element when an outside click occurs. If the `toggle` argument is a boolean then the Tether class will either create a new tether (true) or destroy and existing tether (false). If the argument is a function then it must return a boolean and it is used to toggle in the same manner as described above. |
@@ -0,0 +1,135 @@
1
+ import ifClick from '../dom/ifClick'
2
+ import TetherLayout from './TetherLayout'
3
+
4
+ type ToggleFn = () => boolean
5
+ type ToggleFnOrBoolean = ToggleFn | boolean
6
+
7
+ interface Toggle {
8
+ tether: Tether
9
+ closeListener?: (evt: Event) => void
10
+ }
11
+
12
+ export default class Tether {
13
+ static #layout = new TetherLayout()
14
+ static #toggles: WeakMap<HTMLElement, Toggle> = new WeakMap()
15
+
16
+ static get toggles() {
17
+ return this.#toggles
18
+ }
19
+
20
+ static toggle(
21
+ reference: HTMLElement,
22
+ element: HTMLElement,
23
+ toggle: ToggleFnOrBoolean,
24
+ ) {
25
+ let toggleFn: ToggleFn
26
+ let toggled = typeof toggle === 'boolean' ? toggle : false
27
+
28
+ function isToggleFn(
29
+ fnOrBoolean: ToggleFnOrBoolean,
30
+ ): fnOrBoolean is ToggleFn {
31
+ return typeof fnOrBoolean === 'function'
32
+ }
33
+
34
+ // When toggle arg is a function, use it to "close" the element
35
+ // automatically when the user clicks outside.
36
+ if (isToggleFn(toggle)) {
37
+ toggleFn = toggle
38
+ toggled = toggleFn()
39
+ }
40
+
41
+ if (toggled) {
42
+ const tether = new Tether(reference, element)
43
+ let closeListener: undefined | ((evt: Event) => void) = undefined
44
+
45
+ if (isToggleFn(toggle)) {
46
+ window.addEventListener(
47
+ 'click',
48
+ (closeListener = ifClick((args) => {
49
+ if (!(args instanceof Event)) return
50
+ const target = args.target
51
+ if (!(target instanceof HTMLElement)) return
52
+ if (!reference.contains(target) && !element.contains(target)) {
53
+ const parent = target.closest('[data-tether-rx]')
54
+
55
+ if (!parent || parent.contains(reference)) {
56
+ toggleFn()
57
+ if (closeListener !== undefined) {
58
+ window.removeEventListener('click', closeListener, true)
59
+ }
60
+ tether.destroy()
61
+ Tether.#toggles.delete(reference)
62
+ }
63
+ }
64
+ })),
65
+ true,
66
+ )
67
+ }
68
+
69
+ Tether.#toggles.set(reference, {
70
+ tether,
71
+ closeListener,
72
+ })
73
+ } else {
74
+ const t = Tether.#toggles.get(reference)
75
+
76
+ if (t) {
77
+ if (t.closeListener !== undefined) {
78
+ window.removeEventListener('click', t.closeListener, true)
79
+ }
80
+
81
+ t.tether.destroy()
82
+ Tether.#toggles.delete(reference)
83
+ }
84
+ }
85
+
86
+ return toggled
87
+ }
88
+
89
+ /* Given a dom element, find the Tether reference element attached to it. */
90
+ static getReference(element: HTMLElement) {
91
+ for (const tether of Tether.#layout.tethers) {
92
+ if (tether.#element === element) {
93
+ return tether.#reference
94
+ }
95
+ }
96
+
97
+ return null
98
+ }
99
+
100
+ #reference: HTMLElement
101
+ #element: HTMLElement
102
+
103
+ get element() {
104
+ return this.#element
105
+ }
106
+
107
+ get reference() {
108
+ return this.#reference
109
+ }
110
+
111
+ constructor(reference: HTMLElement, element: HTMLElement) {
112
+ this.#reference = reference
113
+ this.#element = element
114
+
115
+ // conditionally moves tethered element to end of Page or Popup to avoid z-index issues
116
+ if (
117
+ reference.classList.contains('ComboInput') &&
118
+ !element.parentElement?.hasAttribute('data-tether-anchor')
119
+ ) {
120
+ if (reference.closest('dialog') !== null) {
121
+ reference.closest('dialog')?.append(element)
122
+ } else if (reference.closest('.Popup') === null) {
123
+ document.querySelector('.Page')?.append(element)
124
+ } else {
125
+ reference.closest('.Popup')?.append(element)
126
+ }
127
+ }
128
+
129
+ Tether.#layout.add(this)
130
+ }
131
+
132
+ destroy() {
133
+ Tether.#layout.remove(this)
134
+ }
135
+ }