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

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 (297) hide show
  1. package/README.md +54 -35
  2. package/dist/custom-elements.json +1924 -1924
  3. package/dist/storybook/assets/{ActionBar.stories-hJ_5cm-P.js → ActionBar.stories-CSxtZl7v.js} +1 -1
  4. package/dist/storybook/assets/{ActionItem.stories-Bjx2803w.js → ActionItem.stories-BWcMRMP3.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-Cj0YgZ6f.js → Avatar.stories-CYTUGXzH.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-Lh_sQFCU.js → AvatarGroup.stories-CSYBYo_5.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-BL7RUibx.js → Badge.stories-LuF4BuVr.js} +1 -1
  8. package/dist/storybook/assets/{Button-BPHNcxqK.js → Button-CrXCMxHb.js} +1 -1
  9. package/dist/storybook/assets/{Button.stories-CAYO4gdU.js → Button.stories-JVwxdrdM.js} +1 -1
  10. package/dist/storybook/assets/{ButtonGroup.stories-Cd13Us5K.js → ButtonGroup.stories-qtq64a1H.js} +1 -1
  11. package/dist/storybook/assets/{Celebrate.stories-D_KE3Qze.js → Celebrate.stories-DjTtaSd6.js} +1 -1
  12. package/dist/storybook/assets/{Checkbox.stories-Aj1xgZVn.js → Checkbox.stories-v1Pr5mL6.js} +1 -1
  13. package/dist/storybook/assets/{CircularProgress.stories-BecV_v6d.js → CircularProgress.stories-DkV7PJ4D.js} +1 -1
  14. package/dist/storybook/assets/{ClipboardMixin.stories-DU-WiZ2f.js → ClipboardMixin.stories-Dh5c7uSM.js} +1 -1
  15. package/dist/storybook/assets/{Color-6BZIO3FS-BYl4KZZn.js → Color-6BZIO3FS-B1gcREt6.js} +1 -1
  16. package/dist/storybook/assets/{Colors.stories-BMUVUy2q.js → Colors.stories-DnubtRqn.js} +1 -1
  17. package/dist/storybook/assets/{CombinedEffects.stories-FHcPKFm6.js → CombinedEffects.stories-By6akSve.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin-EMUnfT5y.js → ComponentStatesMixin-CPLGv3h-.js} +1 -1
  19. package/dist/storybook/assets/{ComponentStatesMixin.stories-SXq0kzS9.js → ComponentStatesMixin.stories-CiQ_lyhm.js} +1 -1
  20. package/dist/storybook/assets/{CopyToClipboard.stories-u43lhvcI.js → CopyToClipboard.stories-cJ7rl3mj.js} +1 -1
  21. package/dist/storybook/assets/{Debounce.stories-BdCn5qgO.js → Debounce.stories-Bw-goobU.js} +1 -1
  22. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DxiEJ_jx.js → DocsRenderer-LL677BLK-CNW57dGQ.js} +3 -3
  23. package/dist/storybook/assets/{Dropdown.stories-BWSRwjIF.js → Dropdown.stories-CwC3HXXd.js} +1 -1
  24. package/dist/storybook/assets/{EmptyState.stories-BpobeZL5.js → EmptyState.stories-BUEJwuhP.js} +1 -1
  25. package/dist/storybook/assets/{Events.stories-CP5kMzpr.js → Events.stories-D1mf9buv.js} +1 -1
  26. package/dist/storybook/assets/{Heading.stories-CbJD-oTB.js → Heading.stories-DO906G4P.js} +1 -1
  27. package/dist/storybook/assets/{HueRipple.stories-BOABJ7zw.js → HueRipple.stories-BOySRSZB.js} +1 -1
  28. package/dist/storybook/assets/{Icon.stories-CWlUHL4j.js → Icon.stories-BsqgTbdG.js} +1 -1
  29. package/dist/storybook/assets/{IconButton.stories-BWBs-OLT.js → IconButton.stories-aza1AAKk.js} +1 -1
  30. package/dist/storybook/assets/{LinearProgress.stories-LZ0GZoxF.js → LinearProgress.stories-CDYmiiex.js} +1 -1
  31. package/dist/storybook/assets/{Pagination.stories-CbLaR3P9.js → Pagination.stories-LXB-x7YB.js} +1 -1
  32. package/dist/storybook/assets/{Popover.stories-JHrWqYZw.js → Popover.stories-DY1HesPJ.js} +1 -1
  33. package/dist/storybook/assets/{ReadyMixin-B1H2a9x8.js → ReadyMixin-DmOC67IJ.js} +1 -1
  34. package/dist/storybook/assets/{RovingTabindexMixin.stories-UMHpYG73.js → RovingTabindexMixin.stories-BWy0Rq8d.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-VQtNSlls.js → Rtc.stories-DrmdqqbI.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-CYdi8Tgp.js → ScrollShadow.stories-DiKFPazh.js} +1 -1
  37. package/dist/storybook/assets/{Switch.stories-D8F2hZCf.js → Switch.stories-BgFnw8_z.js} +1 -1
  38. package/dist/storybook/assets/{Tab.stories-wgBP0lTj.js → Tab.stories-c2wLMooF.js} +1 -1
  39. package/dist/storybook/assets/{Tabs.stories-C00rr5sf.js → Tabs.stories-CjH8seNP.js} +1 -1
  40. package/dist/storybook/assets/{Throttle.stories-BhQEfJbS.js → Throttle.stories-CXysc_QE.js} +1 -1
  41. package/dist/storybook/assets/{Tooltip.stories-CGoZ5qTn.js → Tooltip.stories-6qzyByPm.js} +1 -1
  42. package/dist/storybook/assets/{Upload.stories-B3K-HAXw.js → Upload.stories-BLxykydQ.js} +1 -1
  43. package/dist/storybook/assets/{UploadItem.stories-71ArSoUh.js → UploadItem.stories-CcfcqdJW.js} +1 -1
  44. package/dist/storybook/assets/{Welcome.stories-CihlfFXS.js → Welcome.stories-CzYS_3fH.js} +1 -1
  45. package/dist/storybook/assets/{Widget.stories-1u4KbiJM.js → Widget.stories-Du7T4LAI.js} +1 -1
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-B3Jitxw9.js → WithTooltip-65CFNBJE-D4LfXdYt.js} +1 -1
  47. package/dist/storybook/assets/{blocks-C1HaXuQB.js → blocks-DR3fGePu.js} +5 -5
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-Dy9Lt9fs.js → formatter-EIJCOSYU-Cf01216O.js} +1 -1
  49. package/dist/storybook/assets/if-defined-DaMmbcIU.js +1 -0
  50. package/dist/storybook/assets/{iframe-Dx6IxWXF.js → iframe-CQArUhO8.js} +4 -4
  51. package/dist/storybook/assets/{index-OrjedSVh.js → index-B1uI_67G.js} +1 -1
  52. package/dist/storybook/assets/{onFind-YTqjw6W0.js → onFind-BpFkN2Rh.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-DEvwTrmx.js → onFind.stories-Cxdeg69X.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-D5mO-Lin.js → onRemove.stories-BHEWpNrE.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-C3Rcz0Eb.js → onVisible.stories-DFJ3S_ZS.js} +1 -1
  56. package/dist/storybook/assets/{style-map-CiMHry7H.js → style-map-DJ83UC3V.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-DIZnuhb2.js → syntaxhighlighter-ED5Y7EFY-zYN83mxK.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/dist/storybook/assets/if-defined-CA2KmTqA.js +0 -1
  62. package/src/legacy/tool-ui/src/main/resources/settings.properties +0 -1
  63. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +0 -81
  64. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +0 -170
  65. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +0 -393
  66. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +0 -141
  67. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +0 -78
  68. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +0 -718
  69. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +0 -633
  70. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +0 -18
  71. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +0 -406
  72. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +0 -1
  73. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +0 -151
  74. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +0 -194
  75. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +0 -785
  76. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +0 -35
  77. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +0 -65
  78. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +0 -129
  79. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +0 -433
  80. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +0 -743
  81. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +0 -17
  82. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +0 -478
  83. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +0 -2406
  84. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +0 -2
  85. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +0 -446
  86. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +0 -62
  87. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +0 -53
  88. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +0 -1049
  89. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +0 -16
  90. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +0 -84
  91. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +0 -68
  92. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +0 -536
  93. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +0 -22
  94. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +0 -5
  95. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +0 -107
  96. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +0 -1491
  97. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +0 -29
  98. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +0 -2427
  99. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +0 -470
  100. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +0 -32
  101. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +0 -31
  102. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +0 -485
  103. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +0 -264
  104. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +0 -16
  105. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +0 -31
  106. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +0 -100
  107. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +0 -49
  108. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +0 -2403
  109. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +0 -5
  110. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +0 -40
  111. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +0 -14
  112. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +0 -123
  113. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +0 -19
  114. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +0 -148
  115. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +0 -24
  116. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +0 -14
  117. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +0 -32
  118. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +0 -890
  119. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +0 -758
  120. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +0 -86
  121. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +0 -1005
  122. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +0 -47
  123. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +0 -211
  124. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +0 -215
  125. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +0 -160
  126. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +0 -154
  127. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +0 -281
  128. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +0 -255
  129. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +0 -56
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +0 -874
  131. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +0 -100
  132. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +0 -357
  133. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +0 -360
  134. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +0 -27
  135. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +0 -224
  136. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +0 -147
  137. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +0 -8
  138. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +0 -2417
  139. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +0 -8
  140. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +0 -52
  141. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +0 -13
  142. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +0 -177
  143. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +0 -90
  144. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +0 -1
  145. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +0 -1
  146. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +0 -20
  147. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +0 -770
  148. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +0 -16
  149. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +0 -54
  150. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +0 -29
  151. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +0 -35
  152. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -42
  153. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +0 -37
  154. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -288
  155. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +0 -38
  156. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +0 -38
  157. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +0 -38
  158. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +0 -257
  159. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +0 -38
  160. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +0 -33
  161. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +0 -33
  162. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +0 -195
  163. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +0 -34
  164. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +0 -34
  165. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +0 -134
  166. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +0 -32
  167. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +0 -34
  168. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +0 -31
  169. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +0 -63
  170. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +0 -48
  171. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +0 -291
  172. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +0 -39
  173. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +0 -37
  174. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +0 -105
  175. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +0 -41
  176. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +0 -72
  177. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +0 -46
  178. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -84
  179. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +0 -54
  180. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +0 -183
  181. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +0 -45
  182. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +0 -346
  183. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +0 -226
  184. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +0 -118
  185. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +0 -5
  186. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +0 -113
  187. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +0 -16
  188. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +0 -32
  189. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +0 -13
  190. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +0 -1
  191. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +0 -1
  192. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +0 -1
  193. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +0 -1
  194. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +0 -1
  195. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +0 -1
  196. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +0 -1
  197. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +0 -1
  198. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +0 -1
  199. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +0 -5
  200. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +0 -1
  201. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +0 -1
  202. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +0 -1
  203. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +0 -1
  204. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +0 -1
  205. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +0 -1
  206. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +0 -1
  207. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +0 -1
  208. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +0 -1
  209. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +0 -40
  210. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +0 -1
  211. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +0 -1
  212. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +0 -909
  213. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +0 -68
  214. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +0 -8
  215. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +0 -274
  216. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  217. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +0 -250
  218. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +0 -90
  219. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +0 -124
  220. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +0 -46
  221. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +0 -124
  222. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +0 -1019
  223. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +0 -199
  224. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +0 -339
  225. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +0 -96
  226. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +0 -348
  227. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -110
  228. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +0 -29
  229. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +0 -428
  230. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +0 -63
  231. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +0 -690
  232. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +0 -12
  233. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  234. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +0 -15
  235. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  236. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +0 -86
  237. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +0 -60
  238. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +0 -208
  239. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +0 -102
  240. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +0 -365
  241. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +0 -239
  242. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +0 -604
  243. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +0 -57
  244. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +0 -26
  245. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +0 -16
  246. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +0 -4
  247. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +0 -474
  248. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +0 -66
  249. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +0 -97
  250. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +0 -342
  251. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +0 -50
  252. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +0 -207
  253. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +0 -26
  254. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +0 -4
  255. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +0 -485
  256. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +0 -40
  257. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +0 -842
  258. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +0 -368
  259. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +0 -128
  260. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +0 -13
  261. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +0 -96
  262. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +0 -3
  263. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +0 -280
  264. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +0 -94
  265. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +0 -57
  266. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +0 -97
  267. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +0 -88
  268. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +0 -613
  269. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +0 -13
  270. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +0 -905
  271. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +0 -819
  272. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +0 -80
  273. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +0 -98
  274. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +0 -84
  275. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +0 -87
  276. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +0 -13
  277. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +0 -223
  278. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +0 -559
  279. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +0 -1281
  280. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +0 -4
  281. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +0 -359
  282. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +0 -1
  283. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +0 -1
  284. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +0 -1
  285. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +0 -1
  286. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +0 -1
  287. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +0 -1
  288. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +0 -1
  289. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +0 -33
  290. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +0 -217
  291. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +0 -7
  292. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +0 -19
  293. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +0 -7
  294. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +0 -13
  295. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +0 -25
  296. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +0 -33
  297. 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
- })