@brightspot/ui 3.0.1-cms-ui-migration.2 → 3.0.1-cms-ui-migration.4

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 (320) hide show
  1. package/README.md +56 -37
  2. package/dist/custom-elements.json +1807 -1807
  3. package/dist/storybook/assets/{ActionBar.stories-hJ_5cm-P.js → ActionBar.stories-BZAVK1QG.js} +1 -1
  4. package/dist/storybook/assets/{ActionItem.stories-Bjx2803w.js → ActionItem.stories-BqiWvlWi.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-Cj0YgZ6f.js → Avatar.stories-DkdB6hd_.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-Lh_sQFCU.js → AvatarGroup.stories-DODqaIix.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-BL7RUibx.js → Badge.stories-DZoum08S.js} +1 -1
  8. package/dist/storybook/assets/{Button-BPHNcxqK.js → Button-BkmBgNO-.js} +1 -1
  9. package/dist/storybook/assets/{Button.stories-CAYO4gdU.js → Button.stories-BFhCL2dp.js} +1 -1
  10. package/dist/storybook/assets/{ButtonGroup.stories-Cd13Us5K.js → ButtonGroup.stories-DlTGTvkq.js} +1 -1
  11. package/dist/storybook/assets/{Celebrate.stories-D_KE3Qze.js → Celebrate.stories-m4d4zTEz.js} +1 -1
  12. package/dist/storybook/assets/{Checkbox.stories-Aj1xgZVn.js → Checkbox.stories-Y253YeU7.js} +1 -1
  13. package/dist/storybook/assets/{CircularProgress.stories-BecV_v6d.js → CircularProgress.stories-6BD8uV5G.js} +1 -1
  14. package/dist/storybook/assets/{ClipboardMixin.stories-DU-WiZ2f.js → ClipboardMixin.stories-BkH66rIU.js} +1 -1
  15. package/dist/storybook/assets/{Color-6BZIO3FS-BYl4KZZn.js → Color-6BZIO3FS-iG0OjPBU.js} +1 -1
  16. package/dist/storybook/assets/{Colors.stories-BMUVUy2q.js → Colors.stories-BxiyQnEg.js} +1 -1
  17. package/dist/storybook/assets/{CombinedEffects.stories-FHcPKFm6.js → CombinedEffects.stories-Bs3U7qRl.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin-EMUnfT5y.js → ComponentStatesMixin-DampYb5c.js} +1 -1
  19. package/dist/storybook/assets/{ComponentStatesMixin.stories-SXq0kzS9.js → ComponentStatesMixin.stories-CZ2OW7as.js} +1 -1
  20. package/dist/storybook/assets/{CopyToClipboard.stories-u43lhvcI.js → CopyToClipboard.stories-CdlghjaE.js} +1 -1
  21. package/dist/storybook/assets/{Debounce.stories-BdCn5qgO.js → Debounce.stories-CymT8PnT.js} +1 -1
  22. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DxiEJ_jx.js → DocsRenderer-LL677BLK-dqHCo-GE.js} +3 -3
  23. package/dist/storybook/assets/{Dropdown.stories-BWSRwjIF.js → Dropdown.stories-B6JwKg-I.js} +1 -1
  24. package/dist/storybook/assets/{EmptyState.stories-BpobeZL5.js → EmptyState.stories-Bk229lPH.js} +1 -1
  25. package/dist/storybook/assets/{Events.stories-CP5kMzpr.js → Events.stories-C8-k9cx8.js} +1 -1
  26. package/dist/storybook/assets/{Heading.stories-CbJD-oTB.js → Heading.stories-DIdnAQRG.js} +1 -1
  27. package/dist/storybook/assets/{HueRipple.stories-BOABJ7zw.js → HueRipple.stories-B1gXAEaH.js} +1 -1
  28. package/dist/storybook/assets/{Icon.stories-CWlUHL4j.js → Icon.stories--1VJ0_yt.js} +1 -1
  29. package/dist/storybook/assets/{IconButton.stories-BWBs-OLT.js → IconButton.stories-CS2rEIir.js} +1 -1
  30. package/dist/storybook/assets/{LinearProgress.stories-LZ0GZoxF.js → LinearProgress.stories-Bx0CQQls.js} +1 -1
  31. package/dist/storybook/assets/{Pagination.stories-CbLaR3P9.js → Pagination.stories-B4AogTXB.js} +1 -1
  32. package/dist/storybook/assets/{Popover.stories-JHrWqYZw.js → Popover.stories-BR88DPgU.js} +1 -1
  33. package/dist/storybook/assets/{ReadyMixin-B1H2a9x8.js → ReadyMixin-n6qZO39Y.js} +1 -1
  34. package/dist/storybook/assets/{RovingTabindexMixin.stories-UMHpYG73.js → RovingTabindexMixin.stories-1xTJSMSv.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-VQtNSlls.js → Rtc.stories-Rt0A_rUZ.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-CYdi8Tgp.js → ScrollShadow.stories-CjLdJyYu.js} +1 -1
  37. package/dist/storybook/assets/{Switch.stories-D8F2hZCf.js → Switch.stories-CF8wO4v2.js} +1 -1
  38. package/dist/storybook/assets/{Tab.stories-wgBP0lTj.js → Tab.stories-C8XNshog.js} +1 -1
  39. package/dist/storybook/assets/{Tabs.stories-C00rr5sf.js → Tabs.stories-B01l4rQx.js} +1 -1
  40. package/dist/storybook/assets/{Throttle.stories-BhQEfJbS.js → Throttle.stories-Bpi0K5j9.js} +1 -1
  41. package/dist/storybook/assets/{Tooltip.stories-CGoZ5qTn.js → Tooltip.stories-BC4zMiZ1.js} +1 -1
  42. package/dist/storybook/assets/{Upload.stories-B3K-HAXw.js → Upload.stories-2pWv_fZ1.js} +1 -1
  43. package/dist/storybook/assets/{UploadItem.stories-71ArSoUh.js → UploadItem.stories-aLeAUM7y.js} +1 -1
  44. package/dist/storybook/assets/{Welcome.stories-CihlfFXS.js → Welcome.stories-DJV83eb7.js} +1 -1
  45. package/dist/storybook/assets/{Widget.stories-1u4KbiJM.js → Widget.stories-Cz0i2o6L.js} +1 -1
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-B3Jitxw9.js → WithTooltip-65CFNBJE-D8QwVYG8.js} +1 -1
  47. package/dist/storybook/assets/{blocks-C1HaXuQB.js → blocks-BFmpEZRy.js} +5 -5
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-Dy9Lt9fs.js → formatter-EIJCOSYU-CdwdJOPy.js} +1 -1
  49. package/dist/storybook/assets/if-defined-gbJXriW-.js +1 -0
  50. package/dist/storybook/assets/{iframe-Dx6IxWXF.js → iframe-CyssRDCd.js} +4 -4
  51. package/dist/storybook/assets/{index-OrjedSVh.js → index-B82i8dhg.js} +1 -1
  52. package/dist/storybook/assets/{onFind-YTqjw6W0.js → onFind-BFI1uIxr.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-DEvwTrmx.js → onFind.stories-zZjQs_Gn.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-D5mO-Lin.js → onRemove.stories-pFBwAIex.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-C3Rcz0Eb.js → onVisible.stories-5dErOVRq.js} +1 -1
  56. package/dist/storybook/assets/{style-map-CiMHry7H.js → style-map-D0EcLEWO.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-DIZnuhb2.js → syntaxhighlighter-ED5Y7EFY--2h_dVga.js} +1 -1
  58. package/dist/storybook/iframe.html +1 -1
  59. package/dist/storybook/project.json +1 -1
  60. package/package.json +16 -2
  61. package/src/legacy/tool-ui/src/AnalyticsWidget.css +1 -1
  62. package/src/legacy/tool-ui/src/Board.css +1 -1
  63. package/src/legacy/tool-ui/src/BulkUpload.css +1 -1
  64. package/src/legacy/tool-ui/src/ComboInput.css +1 -1
  65. package/src/legacy/tool-ui/src/Compat.css +5 -5
  66. package/src/legacy/tool-ui/src/ContentEditDrawer.css +1 -1
  67. package/src/legacy/tool-ui/src/Dialog.css +1 -1
  68. package/src/legacy/tool-ui/src/FormFilter.css +1 -1
  69. package/src/legacy/tool-ui/src/Icon/index.css +1 -1
  70. package/src/legacy/tool-ui/src/ImageEditor.css +1 -1
  71. package/src/legacy/tool-ui/src/Incompatible.css +2 -2
  72. package/src/legacy/tool-ui/src/LinkCarousel.css +1 -1
  73. package/src/legacy/tool-ui/src/Page.css +1 -1
  74. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +1 -1
  75. package/src/legacy/tool-ui/src/RichText.css +1 -1
  76. package/src/legacy/tool-ui/src/SearchWidget.css +2 -2
  77. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +1 -1
  78. package/src/legacy/tool-ui/src/Widget.css +1 -1
  79. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e5d7f655e174ddd85f5.css +5 -0
  80. package/dist/storybook/assets/if-defined-CA2KmTqA.js +0 -1
  81. package/docs/adr/0001-retire-cms-ui-package-fold-under-src-legacy.md +0 -78
  82. package/docs/adr/0002-yarn-workspaces-preserve-cms-ui-deps.md +0 -130
  83. package/docs/adr/0003-bundle-equivalence-as-fold-acceptance-criterion.md +0 -286
  84. package/src/legacy/tool-ui/src/main/resources/settings.properties +0 -1
  85. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +0 -81
  86. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e3fdf0f0b20b4e3c170.css +0 -5
  87. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +0 -170
  88. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +0 -393
  89. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +0 -141
  90. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +0 -78
  91. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +0 -718
  92. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +0 -633
  93. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +0 -18
  94. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +0 -406
  95. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +0 -1
  96. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +0 -151
  97. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +0 -194
  98. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +0 -785
  99. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +0 -35
  100. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +0 -65
  101. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +0 -129
  102. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +0 -433
  103. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +0 -743
  104. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +0 -17
  105. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +0 -478
  106. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +0 -2406
  107. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +0 -2
  108. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +0 -446
  109. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +0 -62
  110. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +0 -53
  111. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +0 -1049
  112. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +0 -16
  113. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +0 -84
  114. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +0 -68
  115. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +0 -536
  116. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +0 -22
  117. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +0 -5
  118. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +0 -107
  119. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +0 -1491
  120. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +0 -29
  121. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +0 -2427
  122. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +0 -470
  123. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +0 -32
  124. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +0 -31
  125. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +0 -485
  126. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +0 -264
  127. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +0 -16
  128. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +0 -31
  129. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +0 -100
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +0 -49
  131. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +0 -2403
  132. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +0 -5
  133. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +0 -40
  134. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +0 -14
  135. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +0 -123
  136. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +0 -19
  137. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +0 -148
  138. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +0 -24
  139. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +0 -14
  140. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +0 -32
  141. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +0 -890
  142. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +0 -758
  143. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +0 -86
  144. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +0 -1005
  145. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +0 -47
  146. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +0 -211
  147. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +0 -215
  148. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +0 -160
  149. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +0 -154
  150. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +0 -281
  151. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +0 -255
  152. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +0 -56
  153. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +0 -874
  154. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +0 -100
  155. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +0 -357
  156. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +0 -360
  157. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +0 -27
  158. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +0 -224
  159. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +0 -147
  160. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +0 -8
  161. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +0 -2417
  162. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +0 -8
  163. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +0 -52
  164. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +0 -13
  165. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +0 -177
  166. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +0 -90
  167. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +0 -1
  168. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +0 -1
  169. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +0 -20
  170. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +0 -770
  171. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +0 -16
  172. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +0 -54
  173. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +0 -29
  174. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +0 -35
  175. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -42
  176. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +0 -37
  177. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -288
  178. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +0 -38
  179. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +0 -38
  180. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +0 -38
  181. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +0 -257
  182. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +0 -38
  183. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +0 -33
  184. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +0 -33
  185. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +0 -195
  186. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +0 -34
  187. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +0 -34
  188. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +0 -134
  189. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +0 -32
  190. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +0 -34
  191. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +0 -31
  192. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +0 -63
  193. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +0 -48
  194. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +0 -291
  195. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +0 -39
  196. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +0 -37
  197. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +0 -105
  198. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +0 -41
  199. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +0 -72
  200. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +0 -46
  201. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -84
  202. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +0 -54
  203. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +0 -183
  204. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +0 -45
  205. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +0 -346
  206. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +0 -226
  207. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +0 -118
  208. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +0 -5
  209. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +0 -113
  210. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +0 -16
  211. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +0 -32
  212. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +0 -13
  213. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +0 -1
  214. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +0 -1
  215. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +0 -1
  216. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +0 -1
  217. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +0 -1
  218. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +0 -1
  219. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +0 -1
  220. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +0 -1
  221. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +0 -1
  222. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +0 -5
  223. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +0 -1
  224. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +0 -1
  225. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +0 -1
  226. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +0 -1
  227. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +0 -1
  228. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +0 -1
  229. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +0 -1
  230. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +0 -1
  231. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +0 -1
  232. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +0 -40
  233. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +0 -1
  234. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +0 -1
  235. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +0 -909
  236. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +0 -68
  237. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +0 -8
  238. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +0 -274
  239. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  240. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +0 -250
  241. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +0 -90
  242. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +0 -124
  243. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +0 -46
  244. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +0 -124
  245. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +0 -1019
  246. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +0 -199
  247. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +0 -339
  248. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +0 -96
  249. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +0 -348
  250. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -110
  251. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +0 -29
  252. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +0 -428
  253. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +0 -63
  254. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +0 -690
  255. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +0 -12
  256. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  257. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +0 -15
  258. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  259. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +0 -86
  260. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +0 -60
  261. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +0 -208
  262. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +0 -102
  263. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +0 -365
  264. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +0 -239
  265. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +0 -604
  266. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +0 -57
  267. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +0 -26
  268. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +0 -16
  269. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +0 -4
  270. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +0 -474
  271. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +0 -66
  272. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +0 -97
  273. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +0 -342
  274. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +0 -50
  275. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +0 -207
  276. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +0 -26
  277. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +0 -4
  278. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +0 -485
  279. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +0 -40
  280. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +0 -842
  281. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +0 -368
  282. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +0 -128
  283. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +0 -13
  284. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +0 -96
  285. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +0 -3
  286. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +0 -280
  287. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +0 -94
  288. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +0 -57
  289. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +0 -97
  290. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +0 -88
  291. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +0 -613
  292. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +0 -13
  293. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +0 -905
  294. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +0 -819
  295. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +0 -80
  296. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +0 -98
  297. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +0 -84
  298. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +0 -87
  299. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +0 -13
  300. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +0 -223
  301. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +0 -559
  302. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +0 -1281
  303. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +0 -4
  304. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +0 -359
  305. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +0 -1
  306. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +0 -1
  307. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +0 -1
  308. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +0 -1
  309. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +0 -1
  310. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +0 -1
  311. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +0 -1
  312. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +0 -33
  313. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +0 -217
  314. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +0 -7
  315. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +0 -19
  316. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +0 -7
  317. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +0 -13
  318. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +0 -25
  319. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +0 -33
  320. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.js +0 -61
@@ -1,890 +0,0 @@
1
- import create from './dom/create'
2
- import find from './dom/find'
3
- import findAll from './dom/findAll'
4
- import insertBefore from './dom/insertBefore'
5
- import onFind from './dom/onFind'
6
- import onFindOnce from './dom/onFindOnce'
7
- import onRemove from './dom/onRemove'
8
- import storage from './util/storage'
9
- import { tabbable } from 'tabbable'
10
- import {
11
- getFirstAndLastFocusableDescendants,
12
- getFocusableDescendants,
13
- } from '../../../dom/focusable'
14
- import { trapFocusWithin } from '../../../dom/keyboard'
15
-
16
- const tooltips = window.BRIGHTSPOT?.ui.tooltips
17
-
18
- onFind('.Page .Container-broadcast', (broadcast) => {
19
- const page = broadcast.closest('.Page')
20
- const observer = new ResizeObserver((entries) => {
21
- setBroadcastProperties(page, broadcast)
22
- })
23
- observer.observe(broadcast)
24
- setBroadcastProperties(page, broadcast)
25
- })
26
-
27
- // Toggle the main nav and the sub-nav items.
28
- onFind('.Page-nav', (nav) => {
29
- nav.setAttribute('inert', '')
30
- nav.addEventListener('keydown', (e) => {
31
- switch (e.key) {
32
- case 'Enter':
33
- document.activeElement
34
- .closest('li')
35
- .setAttribute(
36
- 'aria-expanded',
37
- document.activeElement.closest('li').matches('.is-expanded'),
38
- )
39
- break
40
- case 'ArrowUp':
41
- case 'ArrowLeft':
42
- _changeFocus(e.target.closest('li'), -1)
43
- e.preventDefault()
44
- e.stopPropagation()
45
- break
46
-
47
- case 'ArrowRight':
48
- case 'ArrowDown':
49
- _changeFocus(e.target.closest('li'), 1)
50
- e.preventDefault()
51
- e.stopPropagation()
52
- break
53
-
54
- case 'Escape':
55
- if (
56
- document.activeElement.closest('li').getAttribute('aria-expanded') ===
57
- 'false' ||
58
- document.activeElement.parentElement.parentElement.parentElement.classList.contains(
59
- 'selected',
60
- )
61
- ) {
62
- toggleMenu(nav.closest('.Page'), true)
63
- } else if (
64
- !e.target.closest('li').classList.contains('is-expanded') &&
65
- !e.target
66
- .closest('li')
67
- .closest('ul')
68
- .classList.contains('is-expanded')
69
- ) {
70
- toggleMenu(nav.closest('.Page'), true)
71
- } else {
72
- const linkParent = e.target.closest('.isNested')
73
- linkParent.classList.remove('is-expanded')
74
- linkParent.firstElementChild.focus()
75
- }
76
- break
77
- }
78
- })
79
-
80
- const toggle = insertBefore(
81
- create('button', {
82
- className: 'Page-navToggle',
83
- title: tooltips.menu.open,
84
- 'aria-label': tooltips.menu.open,
85
- 'aria-haspopup': 'true',
86
- 'aria-expanded': 'false',
87
- onclick: (e) => {
88
- toggleMenu(nav.closest('.Page'))
89
- },
90
- onkeydown: (e) => {
91
- const mainBody = nav.closest('.Page')
92
- const link = find(nav, ':scope > li')
93
- switch (e.key) {
94
- case 'ArrowUp':
95
- case 'ArrowLeft':
96
- nav.lastElementChild.querySelector('a').focus()
97
- break
98
-
99
- case 'ArrowDown':
100
- case 'ArrowRight':
101
- if (
102
- link.classList.contains('isNested') &&
103
- link.classList.contains('selected')
104
- ) {
105
- link
106
- .querySelector('ul')
107
- .firstElementChild.querySelector('a')
108
- .focus()
109
- } else {
110
- link.querySelector('a').focus()
111
- }
112
- break
113
- }
114
- },
115
- }),
116
- nav,
117
- )
118
-
119
- for (const item of findAll(nav, '.isNested')) {
120
- const key = `BSP.Page.navItemExpanded.${item.textContent.trim()}`
121
- const link = find(item, ':scope > a')
122
- const isExpanded = storage.get(key)
123
- const title = isExpanded ? tooltips.collapse : tooltips.expand
124
- const linkToggle = create('div', {
125
- className: 'Page-navItemToggle',
126
- 'aria-label': title,
127
- })
128
-
129
- link.setAttribute('tabindex', 0)
130
- item.setAttribute(
131
- 'aria-expanded',
132
- item.classList.toggle('is-expanded', isExpanded),
133
- )
134
- link.appendChild(linkToggle)
135
- link.title = title
136
- link.addEventListener('click', (e) => {
137
- e.preventDefault()
138
- const isExpanded = item.classList.toggle('is-expanded')
139
- link.title = isExpanded ? tooltips.collapse : tooltips.expand
140
- linkToggle.setAttribute('aria-label', link.title)
141
- storage.toggle(key, isExpanded)
142
- item.setAttribute('aria-expanded', isExpanded)
143
- if (isExpanded) {
144
- setTimeout(
145
- () => item.scrollIntoView({ behavior: 'smooth', block: 'nearest' }),
146
- 100,
147
- )
148
- }
149
- })
150
- }
151
-
152
- // Hide the nav when clicking outside of it.
153
- window.addEventListener('click', (e) => {
154
- if (
155
- !nav.contains(e.target) &&
156
- !toggle.contains(e.target) &&
157
- !window.BRIGHTSPOT?.ui.cms.enableV5UI
158
- ) {
159
- toggleMenu(nav.closest('.Page'), true)
160
- }
161
- })
162
- })
163
-
164
- // Rearrange all the controls in the header.
165
- onFind('.toolUserDisplay', (userDisplay) => {
166
- const notifications = userDisplay.querySelector('.toolUserNotifications')
167
- const notificationLink = userDisplay.querySelector('.toolUserNotifications a')
168
-
169
- userDisplay.parentNode.insertBefore(
170
- create(
171
- 'div',
172
- {
173
- className: 'Page-notifications',
174
- 'data-new': notificationLink.dataset.new,
175
- 'data-count': notificationLink.dataset.count,
176
- 'data-count-label': notificationLink.dataset.countLabel,
177
- },
178
- Array.from(notifications.children),
179
- ),
180
- userDisplay.nextSibling,
181
- )
182
-
183
- notifications.remove()
184
- })
185
-
186
- // Copy the profile actions into the profile popup.
187
- onFind('.Popup[name="profilePanel"] .p-tud > h1', (heading) => {
188
- const controls = create('div', { className: 'Widget-controls' })
189
-
190
- for (let link of document.querySelectorAll('.toolUserControls a')) {
191
- link = link.cloneNode(true)
192
-
193
- if (link.getAttribute('target')) {
194
- link.setAttribute('data-popup-mode', 'local')
195
- } else {
196
- link.setAttribute('target', '_top')
197
- }
198
-
199
- controls.appendChild(link)
200
- }
201
-
202
- heading.parentNode.insertBefore(controls, heading.nextSibling)
203
- })
204
-
205
- onFind('.ProfileDropdown-items > li', (listItem) => {
206
- listItem.addEventListener('click', (e) => {
207
- e.target.dispatchEvent(new CustomEvent('close', { bubbles: true }))
208
- })
209
- })
210
-
211
- function setBroadcastProperties(page, broadcast) {
212
- if (broadcast) {
213
- page.style.setProperty(
214
- '--Page-headerBottom',
215
- `calc(var(--Page-headerHeight) + ${broadcast.clientHeight}px)`,
216
- )
217
- }
218
- }
219
-
220
- function toggleMenu(pageEl, forceClose = false) {
221
- const nav = pageEl?.querySelector('.Page-nav')
222
- const willClose =
223
- pageEl.classList.contains('is-navigating') || forceClose === true
224
-
225
- willClose ? nav?.setAttribute('inert', '') : nav?.removeAttribute('inert')
226
-
227
- // When opened, move focus to the first focusable item in the nav.
228
- if (!willClose) {
229
- nav
230
- .querySelector(':scope .selected li:first-of-type')
231
- ?.querySelector('a')
232
- ?.focus()
233
- }
234
-
235
- const label = willClose ? tooltips.menu.open : tooltips.menu.close
236
-
237
- pageEl.classList.toggle(
238
- 'is-navigating',
239
- forceClose === true ? false : undefined,
240
- )
241
-
242
- const button = pageEl?.querySelector('.Page-navToggle')
243
- if (!button) return
244
- button.title = label
245
- button.setAttribute('aria-label', label)
246
- button.setAttribute('aria-expanded', !willClose)
247
- }
248
-
249
- // _changeFocus: focuses on the element currently being accessed by the keyboard based on the move value
250
- // move = -1 for arrow up or arrow left.
251
- // move = 1 for arrow down or arrow right
252
- function _changeFocus(currentFocus, move) {
253
- const nav = document.querySelector('.Page-nav')
254
-
255
- if (!currentFocus) {
256
- return
257
- }
258
-
259
- let currentFocusClassList = currentFocus.classList
260
- currentFocusClassList.remove('is-active')
261
-
262
- if (
263
- (currentFocusClassList.contains('selected') &&
264
- currentFocusClassList.contains('isNested')) ||
265
- currentFocusClassList.contains('is-expanded')
266
- ) {
267
- const firstEl = currentFocus.querySelector('ul').firstElementChild
268
- if (firstEl != null) {
269
- _changeFocus(firstEl, move)
270
- }
271
- }
272
-
273
- let nextFocus
274
- let currentFocusSibling
275
- const closestLi = currentFocus.closest('ul').closest('li')
276
- const closestNested = currentFocus.closest('.isNested')
277
-
278
- if (move === 1) {
279
- currentFocusSibling = currentFocus.nextSibling
280
- const containsIsExpanded = currentFocus.classList.contains('is-expanded')
281
-
282
- if (currentFocusSibling !== null) {
283
- if (containsIsExpanded) {
284
- nextFocus = currentFocus.querySelector('ul').firstElementChild
285
- } else if (currentFocusSibling.tagName === 'LI') {
286
- nextFocus = currentFocusSibling
287
- }
288
- } else {
289
- if (!containsIsExpanded) {
290
- if (closestNested.nextSibling !== null) {
291
- nextFocus = closestLi.nextSibling
292
- } else {
293
- nextFocus =
294
- nav.firstElementChild.querySelector('ul').firstElementChild
295
- }
296
- }
297
- }
298
- nextFocus.querySelector('a').focus()
299
- } else {
300
- currentFocusSibling = currentFocus.previousSibling
301
- if (currentFocusSibling !== null) {
302
- if (currentFocusSibling.tagName === 'LI') {
303
- nextFocus = currentFocusSibling
304
- nextFocus.querySelector('a').focus()
305
- }
306
- if (currentFocus.classList.contains('isNested')) {
307
- nextFocus = currentFocusSibling.querySelector('ul').lastElementChild
308
- nextFocus.querySelector('a').focus()
309
- }
310
- } else {
311
- const focusPreviousSibling = closestNested.previousSibling
312
- if (closestLi.classList.contains('isNested')) {
313
- nextFocus = closestLi
314
- } else if (focusPreviousSibling !== null) {
315
- if (focusPreviousSibling.classList.contains('selected')) {
316
- nextFocus = focusPreviousSibling.querySelector('ul').lastElementChild
317
- } else {
318
- nextFocus = closestLi
319
- }
320
- }
321
- if (closestNested.classList.contains('selected')) {
322
- const navLastChild = nav.lastElementChild
323
- if (navLastChild.classList.contains('is-expanded')) {
324
- nextFocus = navLastChild.querySelector('ul').lastElementChild
325
- } else {
326
- nextFocus = navLastChild
327
- }
328
- }
329
- nextFocus.querySelector('a').focus()
330
- }
331
- }
332
- }
333
-
334
- onFindOnce('.Page-login', () => {
335
- const pageLogin = document.querySelector('.Page-login')
336
- const loginId = pageLogin.querySelector('label')?.htmlFor
337
- if (loginId) document.getElementById(loginId)?.focus()
338
- })
339
-
340
- // Reloads the guide to the current subject (last item in a list of subjects).
341
- const subjects = []
342
- let currentHref
343
-
344
- function reloadGuide() {
345
- if (!document.querySelector('.Page').classList.contains('is-guideOpen')) {
346
- return
347
- }
348
-
349
- const { href, name } = subjects[subjects.length - 1]
350
-
351
- if (href && href !== currentHref) {
352
- currentHref = href
353
- const container = document.querySelector('.Page-guide')
354
-
355
- if (!container.querySelector(`:scope > .frame[name="${name}"]`)) {
356
- const frame = document.createElement('div')
357
-
358
- frame.classList.add('frame')
359
- frame.setAttribute('name', name)
360
- container.appendChild(frame)
361
-
362
- const params = new URLSearchParams()
363
-
364
- params.append('subject', href)
365
-
366
- const link = document.createElement('a')
367
- link.href = `${
368
- document.querySelector('.Page-guideLink a').href
369
- }?${params}`
370
- link.target = name
371
-
372
- document.body.appendChild(link)
373
- link.click()
374
- document.body.removeChild(link)
375
- }
376
-
377
- // Remove guides associated with removed popups.
378
- for (const frame of container.querySelectorAll(':scope > .frame')) {
379
- const frameName = frame.getAttribute('name')
380
-
381
- if (!subjects.some(({ name }) => name === frameName)) {
382
- container.removeChild(frame)
383
- }
384
- }
385
- }
386
- }
387
-
388
- function isFieldGuidePopup(div) {
389
- const subject = div.dataset.href
390
- const params = new URLSearchParams(subject)
391
- return params.get('isFieldGuide') === 'true'
392
- }
393
-
394
- // When a page or a popup opens, set it to the current subject.
395
- let subjectIndex = 0
396
-
397
- onFind(['.Page', '.Popup'], (element) => {
398
- // exclude calendar popup
399
- if (element.getAttribute('name') === 'DateStringCalendarFrame') {
400
- return
401
- }
402
-
403
- const href = element.dataset.href
404
-
405
- if (href) {
406
- subjects.push({
407
- href,
408
- name: `guide-${++subjectIndex}`,
409
- })
410
-
411
- if (isSubjectType(href)) {
412
- element.setAttribute('data-subject-type', 'true')
413
- }
414
-
415
- reloadGuide()
416
-
417
- onRemove(element, () => {
418
- subjects.splice(subjects.indexOf(href), 1)
419
- reloadGuide()
420
- })
421
- }
422
- })
423
-
424
- onFind('.Page-guideLink a', (link) => {
425
- const page = link.closest('.Page')
426
-
427
- if (page.classList.contains('is-guideOpen')) {
428
- link.setAttribute('aria-expanded', 'true')
429
- }
430
-
431
- link.addEventListener(
432
- 'click',
433
- (event) => {
434
- event.preventDefault()
435
- event.stopPropagation()
436
- const guideField = page.querySelector("div.Popup[name='guideField']")
437
- // Close the field level guide if it is open as both guide views should not be open at the same time
438
- if (guideField) {
439
- let button = guideField.querySelector('.closeButton')
440
- button.click()
441
- }
442
-
443
- const navToggle = page.querySelector('.Page-navToggle')
444
- if (navToggle?.getAttribute('aria-expanded') === 'true') {
445
- navToggle.click()
446
- }
447
-
448
- page.classList.add('is-guideOpen')
449
- link.setAttribute('aria-expanded', 'true')
450
- // Move focus to the guide close button once guide is opened
451
- const closeButton = '.Page-guide a.Guide-close'
452
- onFindOnce(closeButton, () => {
453
- const button = document.querySelector(closeButton)
454
- button.focus()
455
- })
456
- reloadGuide()
457
- },
458
- { capture: true },
459
- )
460
- })
461
-
462
- onFind('.Guide-close', (link) => {
463
- const page = link.closest('.Page')
464
-
465
- link.addEventListener(
466
- 'click',
467
- (event) => {
468
- event.preventDefault()
469
- event.stopPropagation()
470
- document
471
- .querySelector('.CIG-row.is-openPopup')
472
- ?.classList.remove('.is-openPopup')
473
- page.classList.remove('is-guideOpen')
474
- const guideLink = page.querySelector('.Page-guideLink a')
475
- guideLink.setAttribute('aria-expanded', 'false')
476
- guideLink.focus()
477
- fetch(link.href)
478
- },
479
- { capture: true },
480
- )
481
- })
482
-
483
- onFind(
484
- '.Popup[name="edit-guide"] .ActionBar > button[name="action-save"]',
485
- (button) => {
486
- button.addEventListener('click', () => {
487
- let frame = $(button).popup('source').frame('container')[0]
488
-
489
- if (frame) {
490
- if (frame.classList.contains('Guide-embedded')) {
491
- frame = frame.closest('.Guide')?.closest('.frame')
492
- }
493
-
494
- if (frame) {
495
- frame.parentNode?.removeChild(frame)
496
- }
497
- }
498
- })
499
- },
500
- )
501
-
502
- // If guide is open, scroll to the field that was clicked on
503
- onFind('a.CIG-guide', (link) => {
504
- link.addEventListener('click', (event) => {
505
- if (!document.querySelector('.Page').classList.contains('is-guideOpen')) {
506
- return
507
- }
508
- event.preventDefault()
509
- event.stopPropagation()
510
-
511
- const href = link.getAttribute('href')
512
- const params = href.substring(href.indexOf('?') + 1)
513
- const urlParams = new URLSearchParams(params)
514
- const fieldName = urlParams.get('fieldName')
515
-
516
- const item = document.querySelector(
517
- 'div.Guide-field[data-field="' + fieldName + '"]',
518
- )
519
- if (!item) {
520
- return
521
- }
522
- item.scrollIntoView({ behavior: 'smooth' })
523
- })
524
- })
525
-
526
- // Remove extra frame if editing a field level note after saving
527
- onFind('div.Popup[name="edit-guide"] button[name="action-save"]', (button) => {
528
- button.addEventListener('click', (event) => {
529
- const div = button.closest('div.Popup[name="edit-guide"]')
530
- if (!isFieldGuidePopup(div)) {
531
- return
532
- }
533
- const guideDiv = div.parentElement.querySelector(
534
- 'div.Popup[name="guideField"]',
535
- )
536
- guideDiv.parentElement.removeChild(guideDiv)
537
- })
538
- })
539
-
540
- // Refresh the main guide when closing the field level guide after closing
541
- onFind('div.Popup[name="edit-guide"] button.closeButton', (button) => {
542
- button.addEventListener('click', (event) => {
543
- const div = button.closest('div.Popup[name="edit-guide"]')
544
- if (!isFieldGuidePopup(div)) {
545
- return
546
- }
547
- // If the main guide has never been opened yet, no need to manually refresh the frame as it will update when it is
548
- // opened the first time
549
- const frameList = document.querySelectorAll('div.Page-guide>div.frame')
550
- if (!frameList.length) {
551
- return
552
- }
553
- const page = document.querySelector('.Page')
554
- let typeSubject
555
- let frame
556
- // If there are multiple frames (ex: popups), the last frame should be selected
557
- if (frameList.length > 1 && page.querySelector('div.Popup')?.dataset.href) {
558
- typeSubject = page.querySelector('div.Popup').dataset.href
559
- frame = frameList.item(frameList.length - 1)
560
- } else {
561
- typeSubject = document.querySelector('.Page').dataset.href
562
- frame = frameList.item(0)
563
- }
564
- if (!typeSubject) {
565
- return
566
- }
567
- const typeParams = new URLSearchParams()
568
- typeParams.append('subject', typeSubject)
569
- const link = create('a')
570
- link.href = `${
571
- document.querySelector('.Page-guideLink a').href
572
- }?${typeParams}`
573
- link.target = frame.getAttribute('name')
574
-
575
- document.body.appendChild(link)
576
- link.click()
577
- document.body.removeChild(link)
578
- })
579
- })
580
-
581
- onFind('.aria--skiptoContent', (btn) => {
582
- btn.addEventListener('click', (evt) => {
583
- // Choose the strategy for where focus should move:
584
- // Move focus to the <main> element (default).
585
- const main = document.querySelector('body main')
586
- let el = main
587
-
588
- // Move focus to Content Edit form?
589
- const ce = main.querySelector('.ContentEdit')
590
- if (ce) {
591
- el = ce.querySelector('.ContentEdit-left') ?? ce
592
- }
593
-
594
- // Move focus to the inner ".main"? (ie: when left-rail is present in settings pages.)
595
- const mm = main.querySelector('.main')
596
- if (mm) {
597
- el = mm
598
- }
599
-
600
- // Move focus to search results?
601
- const sres = main.querySelector(':scope .SearchWidget-result')
602
- if (sres) {
603
- el = sres
604
- }
605
-
606
- // Move focus to advanced search results?
607
- const advs = main.querySelector(':scope > .SearchWidget .SearchResult-view')
608
- if (advs) {
609
- el = advs
610
- }
611
-
612
- // Actually move focus.
613
- if (el) {
614
- el.setAttribute('tabindex', '-1')
615
- el.focus({ focusVisible: true })
616
- }
617
- })
618
- })
619
-
620
- function isSubjectType(subject) {
621
- const params = new URLSearchParams(subject)
622
- return (
623
- params.get('typeId') != null ||
624
- params.get('id') != null ||
625
- subject.includes('?typeId=') ||
626
- subject.includes('?id=')
627
- )
628
- }
629
-
630
- // SEARCH tabbing order functions
631
- function handleKeyDownForFocusTrap(
632
- e,
633
- hiddenSearch,
634
- closestPopup,
635
- isFullScreen = false,
636
- ) {
637
- if (e.key !== 'Tab') return
638
-
639
- const isGlobalSearchPopup =
640
- closestPopup !== document && closestPopup?.matches('.is-fromTop')
641
- const isQueryField =
642
- closestPopup !== document && closestPopup?.matches('[name="queryField"]')
643
-
644
- const selectors = {
645
- header:
646
- (isFullScreen && 'header.Page-header') ||
647
- (isGlobalSearchPopup && '.Page-search.toolSearch') ||
648
- null,
649
- popupClose: 'button.Popup-close.closeButton',
650
- searchInput: '.SearchInput.SearchWidget-query',
651
- actionsToggle: '.SearchWidget-actionsToggle',
652
- reset: '.action.action-cancel',
653
- contentTypeForm: '.searchFiltersType.SearchWidget-type',
654
- searchFiltersRest: '.searchFiltersRest',
655
- searchHistory: '.SearchWidget-history',
656
- create: '.SearchWidget-create',
657
- results: '.SearchWidget-result',
658
- pageGuide: isFullScreen ? '.Page-guide' : null,
659
- queryFieldDone: isQueryField ? '.QueryField-button' : null,
660
- }
661
-
662
- const elementGroups = Object.values(selectors)
663
- .filter((selector) => selector)
664
- .map((selector) => {
665
- const startIndex =
666
- selector === '.searchFiltersRest' && !hiddenSearch ? 1 : 0
667
- const domElement = selector.includes('Page-search.toolSearch')
668
- ? document
669
- : closestPopup
670
-
671
- return getFocusableDescendants(selector, domElement, startIndex)
672
- })
673
- .filter((group) => group !== null)
674
-
675
- trapFocusWithin(e, elementGroups, !isFullScreen)
676
- }
677
-
678
- function searchFilterFocus(e, array) {
679
- let lastItem
680
- let secondLastItem
681
-
682
- // If the last item is the Search Icon, the item before is the Combo Input.
683
- if (array[array.length - 1].classList.contains('ContentSelector-search')) {
684
- lastItem = array.pop()
685
- secondLastItem = array.pop()
686
- } else if (array[array.length - 1].classList.contains('ComboInput')) {
687
- // There is no Search Icon. Combo Input is the last item.
688
- lastItem = array.pop()
689
- }
690
-
691
- if (lastItem) {
692
- const itemsToAdd = secondLastItem ? [secondLastItem, lastItem] : [lastItem]
693
-
694
- if (itemsToAdd.length > 0) {
695
- array.splice(1, 0, ...itemsToAdd)
696
- }
697
- }
698
-
699
- let nextContainer = null
700
- if (array[0].nextElementSibling instanceof HTMLElement) {
701
- nextContainer = array[0].nextElementSibling
702
- }
703
-
704
- const newArray = nextContainer
705
- ? tabbable(nextContainer, { includeContainer: true })
706
- : []
707
- const activeElementIsHTMLElement =
708
- e.target instanceof HTMLElement || e.target instanceof SVGElement
709
- const currentActiveIndex =
710
- e.target && activeElementIsHTMLElement
711
- ? array.indexOf(document.activeElement)
712
- : -1
713
- const keyType = e.shiftKey ? 'back' : 'forward'
714
-
715
- if (keyType === 'forward') {
716
- if (currentActiveIndex >= 0 && currentActiveIndex < array.length - 1) {
717
- e.preventDefault()
718
- array[currentActiveIndex + 1]?.focus()
719
- } else if (currentActiveIndex === array.length - 1) {
720
- e.preventDefault()
721
- newArray[0]?.focus()
722
- }
723
- } else if (keyType === 'back') {
724
- if (activeElementIsHTMLElement && e.target === newArray[0]) {
725
- e.preventDefault()
726
- array[array.length - 1]?.focus()
727
- } else if (currentActiveIndex > 0) {
728
- e.preventDefault()
729
- array[currentActiveIndex - 1]?.focus()
730
- }
731
- }
732
- }
733
-
734
- function handleSearchWidget(findSelector, e) {
735
- if (e.key !== 'Tab') return
736
- onFind(findSelector, (el) => {
737
- const tabbableArray = tabbable(el, { includeContainer: true })
738
- if (tabbableArray && tabbableArray.length > 0) {
739
- searchFilterFocus(e, tabbableArray)
740
- }
741
- })
742
- }
743
-
744
- /*
745
- Change tabbing order to match the visual order for the Users & Roles and Dashboards admin pages,
746
- Search fullscreen pages and popups, and Content Edit pages
747
- */
748
- window.addEventListener('keydown', (e) => {
749
- if (e.key !== 'Tab') return
750
-
751
- const isAdminPage = document.querySelector('.Admin-main')
752
- const isContentEdit = document.querySelector('.content-edit')
753
- const isFullscreenSearch = document.querySelector(
754
- '.SearchWidget[name="searchAdvancedFull"]',
755
- )
756
- const isFullscreenRTE = e.target.closest('.ProseMirror-fullscreen-container')
757
-
758
- const visiblePopup = e.target.closest('.Popup.is-visible')
759
- const popupSource = visiblePopup?.dataset.popupSourceClass
760
-
761
- const isContentEditPopup = visiblePopup?.querySelector('.ContentEdit')
762
- const isGlobalSearchPopup = visiblePopup?.matches('[name="miscSearch"]')
763
- const isContentSelectorSearchPopup = popupSource?.includes(
764
- 'ContentSelector-search',
765
- )
766
- const isQueryFieldPopup = visiblePopup?.matches('[name="queryField"]')
767
- const isSearchPopup =
768
- isGlobalSearchPopup || isContentSelectorSearchPopup || isQueryFieldPopup
769
-
770
- const isBulkWorkflow = document.querySelector('.BulkWorkflow')
771
-
772
- if (
773
- !isSearchPopup &&
774
- !isFullscreenSearch &&
775
- !isFullscreenRTE &&
776
- !isContentEdit &&
777
- !isAdminPage &&
778
- !visiblePopup &&
779
- !isBulkWorkflow
780
- )
781
- return
782
-
783
- // SEARCH WIDGET
784
- const searchSelector =
785
- '.searchFilter.searchFilter-record.SearchWidget-filter.is-record.is-multiple.searchFilter-multiple'
786
- if (isBulkWorkflow) {
787
- const currentGroup = getFirstAndLastFocusableDescendants(isBulkWorkflow)
788
- if (!currentGroup) return
789
- trapFocusWithin(e, [currentGroup])
790
- } else if (isSearchPopup) {
791
- // check for search popups that have a search input that is display: none
792
- const searchQueryElement = visiblePopup.querySelector('.SearchWidget-query')
793
- const hiddenSearch =
794
- window.getComputedStyle(searchQueryElement).display === 'none'
795
- handleSearchWidget('.Popup ' + searchSelector, e)
796
- handleKeyDownForFocusTrap(e, hiddenSearch, visiblePopup)
797
- } else if (isFullscreenSearch && !visiblePopup) {
798
- handleSearchWidget(searchSelector, e)
799
- handleKeyDownForFocusTrap(e, false, document, true)
800
- }
801
-
802
- // FULLSCREEN RTE
803
- else if (isFullscreenRTE) {
804
- const elementGroups = [
805
- getFirstAndLastFocusableDescendants(isFullscreenRTE),
806
- ].filter((element) => element !== null)
807
- trapFocusWithin(e, elementGroups)
808
- }
809
-
810
- // CONTENT EDIT
811
- else if (isContentEditPopup || (!visiblePopup && isContentEdit)) {
812
- const contentEdit = isContentEditPopup ? visiblePopup : document
813
- const isV5UI = window.BRIGHTSPOT?.ui.cms.enableV5UI
814
-
815
- const elementGroups = [
816
- getFocusableDescendants('.Page-header', contentEdit),
817
- isV5UI ? getFocusableDescendants('btu-nav-rail', contentEdit) : null,
818
- isV5UI ? getFocusableDescendants('.Page-guide', contentEdit) : null,
819
- isV5UI ? getFocusableDescendants('.Page-askAi', contentEdit) : null,
820
- // V4-only "back" button
821
- !isV5UI
822
- ? getFocusableDescendants(
823
- '.popup-objectId-edit-heading.Link',
824
- contentEdit,
825
- )
826
- : null,
827
- // Legacy V4 Content Edit title
828
- !isV5UI
829
- ? getFocusableDescendants('.ContentEdit-title.breadcrumbs', contentEdit)
830
- : null,
831
- // V5-only content edit popup close button
832
- isV5UI && isContentEditPopup
833
- ? getFocusableDescendants(
834
- ':scope > .Popup-content > .Popup-close',
835
- contentEdit,
836
- )
837
- : null,
838
- getFocusableDescendants('.ContentEdit-top', contentEdit),
839
- getFocusableDescendants('.ContentEdit-left', contentEdit),
840
- getFocusableDescendants('.ContentEditDrawer.is-open', contentEdit),
841
- getFocusableDescendants('.ContentEdit-preview:not([inert])', contentEdit),
842
- getFocusableDescendants('.ContentEdit-right.is-visible', contentEdit),
843
- getFocusableDescendants('.ContentEdit-toolbar', contentEdit),
844
- !isV5UI ? getFocusableDescendants('.Page-guide', contentEdit) : null,
845
- !isV5UI ? getFocusableDescendants('.Page-askAi', contentEdit) : null,
846
- ].filter((element) => element !== null)
847
-
848
- trapFocusWithin(e, elementGroups, !!isContentEditPopup)
849
- }
850
-
851
- // DASHBOARDS and USERS & ROLES
852
- else if (isAdminPage && !visiblePopup) {
853
- const isV5UI = window.BRIGHTSPOT?.ui.cms.enableV5UI
854
-
855
- const elementGroups = [
856
- getFocusableDescendants('.Page-header', document),
857
- isV5UI ? getFocusableDescendants('btu-nav-rail', document) : null,
858
- isV5UI ? getFocusableDescendants('.Page-guide', document) : null,
859
- isV5UI ? getFocusableDescendants('.Page-askAi', document) : null,
860
- getFocusableDescendants(
861
- '.frame.loaded[name$="Result"] > ul.pagination',
862
- document,
863
- ),
864
- getFocusableDescendants('.leftNav.Admin-nav .Widget-controls', document),
865
- getFocusableDescendants(
866
- '.leftNav.Admin-nav .Widget-controls + ul.LinkTable',
867
- document,
868
- ),
869
- getFocusableDescendants('form[target$="Result"]', document),
870
- getFocusableDescendants(
871
- '.leftNav.Admin-nav form[target="dashboardsResult"] + ul.LinkTable',
872
- document,
873
- ),
874
- getFocusableDescendants(
875
- '.frame.loaded[name$="Result"] > ul.pagination + ul.LinkTable',
876
- document,
877
- ),
878
- ].filter((element) => element !== null)
879
-
880
- trapFocusWithin(e, elementGroups, false)
881
- }
882
-
883
- // REMAINING POPUPS
884
- else if (visiblePopup) {
885
- const elementGroups = [
886
- getFirstAndLastFocusableDescendants(visiblePopup),
887
- ].filter((element) => element !== null)
888
- trapFocusWithin(e, elementGroups)
889
- }
890
- })