@uva-glass/component-library 3.55.3 → 3.55.5

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 (253) hide show
  1. package/dist/{Accordion-BpnBHYIx.js → Accordion-DvblEUVu.js} +16 -17
  2. package/dist/{Accordion-BpnBHYIx.js.map → Accordion-DvblEUVu.js.map} +1 -1
  3. package/dist/{AddCatalogueLinkForm-Cy6fPNvN.js → AddCatalogueLinkForm-rph4K9P0.js} +24 -25
  4. package/dist/{AddCatalogueLinkForm-Cy6fPNvN.js.map → AddCatalogueLinkForm-rph4K9P0.js.map} +1 -1
  5. package/dist/{CheckboxButtonBar-CalU0IYK.js → CheckboxButtonBar-5UMIFMKH.js} +2 -2
  6. package/dist/{CheckboxButtonBar-CalU0IYK.js.map → CheckboxButtonBar-5UMIFMKH.js.map} +1 -1
  7. package/dist/{ControlsButton-zemVxTlg.js → ControlsButton-B1XRpMUM.js} +15 -16
  8. package/dist/{ControlsButton-zemVxTlg.js.map → ControlsButton-B1XRpMUM.js.map} +1 -1
  9. package/dist/{Drawer-Ggofac6y.js → Drawer-e7UFHVg9.js} +29 -30
  10. package/dist/{Drawer-Ggofac6y.js.map → Drawer-e7UFHVg9.js.map} +1 -1
  11. package/dist/{FieldHint-D0HtbTnt.js → FieldHint-fxnEOsVZ.js} +2 -2
  12. package/dist/{FieldHint-D0HtbTnt.js.map → FieldHint-fxnEOsVZ.js.map} +1 -1
  13. package/dist/Fieldset-0LFsZ3Mz.js +22 -0
  14. package/dist/{Fieldset-CoNu_Owa.js.map → Fieldset-0LFsZ3Mz.js.map} +1 -1
  15. package/dist/{Lexical.prod-DIglXatJ.js → Lexical.prod-sbwgNRjw.js} +575 -568
  16. package/dist/Lexical.prod-sbwgNRjw.js.map +1 -0
  17. package/dist/{LexicalClipboard.prod-Bnzu0sh_.js → LexicalClipboard.prod-DdImsyd1.js} +82 -82
  18. package/dist/{LexicalClipboard.prod-Bnzu0sh_.js.map → LexicalClipboard.prod-DdImsyd1.js.map} +1 -1
  19. package/dist/{LexicalExtension.prod-COPHoPpX.js → LexicalExtension.prod-jTSDl1mh.js} +208 -198
  20. package/dist/LexicalExtension.prod-jTSDl1mh.js.map +1 -0
  21. package/dist/{LexicalLink.prod-Bf9JUdMv.js → LexicalLink.prod-BKLNLyu8.js} +155 -149
  22. package/dist/LexicalLink.prod-BKLNLyu8.js.map +1 -0
  23. package/dist/{LexicalList.prod-DRz8vsM9.js → LexicalList.prod-DEtc4lSr.js} +222 -222
  24. package/dist/{LexicalList.prod-DRz8vsM9.js.map → LexicalList.prod-DEtc4lSr.js.map} +1 -1
  25. package/dist/{LexicalTable.prod-D16GW-aZ.js → LexicalTable.prod-CpIPDW6z.js} +436 -428
  26. package/dist/LexicalTable.prod-CpIPDW6z.js.map +1 -0
  27. package/dist/LexicalUtils.prod-DjjGkphN.js +360 -0
  28. package/dist/LexicalUtils.prod-DjjGkphN.js.map +1 -0
  29. package/dist/{LinkContextMenu-m_CGQEiX.js → LinkContextMenu-CTkNPiIW.js} +2 -2
  30. package/dist/{LinkContextMenu-m_CGQEiX.js.map → LinkContextMenu-CTkNPiIW.js.map} +1 -1
  31. package/dist/{ModalDialog-HUkDdAJ-.js → ModalDialog-N50NGnd4.js} +2 -2
  32. package/dist/{ModalDialog-HUkDdAJ-.js.map → ModalDialog-N50NGnd4.js.map} +1 -1
  33. package/dist/{PageOverlay-D_wG2oie.js → PageOverlay-S4xsqJha.js} +2 -2
  34. package/dist/{PageOverlay-D_wG2oie.js.map → PageOverlay-S4xsqJha.js.map} +1 -1
  35. package/dist/{PasteHandlerPlugin-DjD1wryY.js → PasteHandlerPlugin-YpQruA-w.js} +4 -4
  36. package/dist/{PasteHandlerPlugin-DjD1wryY.js.map → PasteHandlerPlugin-YpQruA-w.js.map} +1 -1
  37. package/dist/{RteEditor.module-Jk80F1FA.js → RteEditor.module-BJLUYSpf.js} +9 -10
  38. package/dist/{RteEditor.module-Jk80F1FA.js.map → RteEditor.module-BJLUYSpf.js.map} +1 -1
  39. package/dist/{Sortable.module-BTUOSbOU.js → Sortable.module-8SoaHfuE.js} +6 -7
  40. package/dist/{Sortable.module-BTUOSbOU.js.map → Sortable.module-8SoaHfuE.js.map} +1 -1
  41. package/dist/{SortableProvider-Dc7hwkb5.js → SortableProvider-8HYiBXJS.js} +2 -2
  42. package/dist/{SortableProvider-Dc7hwkb5.js.map → SortableProvider-8HYiBXJS.js.map} +1 -1
  43. package/dist/Spinner-BpElTDIu.js +30 -0
  44. package/dist/{Spinner-D8tWqg9j.js.map → Spinner-BpElTDIu.js.map} +1 -1
  45. package/dist/{TableCellResizerPlugin-CgYsYsuY.js → TableCellResizerPlugin-Ceof6StD.js} +17 -17
  46. package/dist/{TableCellResizerPlugin-CgYsYsuY.js.map → TableCellResizerPlugin-Ceof6StD.js.map} +1 -1
  47. package/dist/{TextArea-DqKIpOfT.js → TextArea-CuASC9bX.js} +16 -17
  48. package/dist/{TextArea-DqKIpOfT.js.map → TextArea-CuASC9bX.js.map} +1 -1
  49. package/dist/{Tooltip-BzB3jznk.js → Tooltip-D27p9kh4.js} +13 -14
  50. package/dist/{Tooltip-BzB3jznk.js.map → Tooltip-D27p9kh4.js.map} +1 -1
  51. package/dist/{chunk-SZQXB3JV-D0XG4Tlp.js → chunk-SZQXB3JV-KiB8lSa9.js} +5 -5
  52. package/dist/{chunk-SZQXB3JV-D0XG4Tlp.js.map → chunk-SZQXB3JV-KiB8lSa9.js.map} +1 -1
  53. package/dist/{client-UU-mS47K.js → client-CHQ7u_QI.js} +9 -9
  54. package/dist/{client-UU-mS47K.js.map → client-CHQ7u_QI.js.map} +1 -1
  55. package/dist/components/Accordion/Accordion.js +1 -1
  56. package/dist/components/Accordion/Accordion.stories.js +1 -1
  57. package/dist/components/Accordion/Accordion.test.js +4 -7
  58. package/dist/components/Accordion/Accordion.test.js.map +1 -1
  59. package/dist/components/Accordion/index.js +1 -1
  60. package/dist/components/AccordionCard/AccordionCard.test.js +3 -6
  61. package/dist/components/AccordionCard/AccordionCard.test.js.map +1 -1
  62. package/dist/components/ActionList/ActionList.test.js +3 -6
  63. package/dist/components/ActionList/ActionList.test.js.map +1 -1
  64. package/dist/components/AppStatusBar/AppStatusBar.test.js +2 -5
  65. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -1
  66. package/dist/components/Attention/Attention.test.js +2 -5
  67. package/dist/components/Attention/Attention.test.js.map +1 -1
  68. package/dist/components/Backdrop/Backdrop.test.js +2 -5
  69. package/dist/components/Backdrop/Backdrop.test.js.map +1 -1
  70. package/dist/components/Buttons/Button.stories.js +1 -1
  71. package/dist/components/Buttons/Button.test.js +2 -5
  72. package/dist/components/Buttons/Button.test.js.map +1 -1
  73. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  74. package/dist/components/Buttons/LinkButton.test.js +2 -5
  75. package/dist/components/Buttons/LinkButton.test.js.map +1 -1
  76. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  77. package/dist/components/Buttons/MenuButton.test.js +2 -5
  78. package/dist/components/Buttons/MenuButton.test.js.map +1 -1
  79. package/dist/components/Card/Card.test.js +2 -5
  80. package/dist/components/Card/Card.test.js.map +1 -1
  81. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  82. package/dist/components/Checkbox/Checkbox.test.js +3 -6
  83. package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
  84. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
  85. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +2 -2
  86. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -6
  87. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js.map +1 -1
  88. package/dist/components/CheckboxButtonBar/index.js +1 -1
  89. package/dist/components/CheckboxTree/CheckboxTree.js +1 -2
  90. package/dist/components/CheckboxTree/CheckboxTree.stories.js +3 -4
  91. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  92. package/dist/components/CheckboxTree/index.js +1 -2
  93. package/dist/components/Chip/Chip.stories.js +1 -1
  94. package/dist/components/ControlsButton/ControlsButton.js +1 -1
  95. package/dist/components/ControlsButton/ControlsButton.stories.js +2 -2
  96. package/dist/components/ControlsButton/index.js +1 -1
  97. package/dist/components/Drawer/Drawer.js +1 -1
  98. package/dist/components/Drawer/Drawer.stories.js +2 -2
  99. package/dist/components/Drawer/index.js +1 -1
  100. package/dist/components/FeedbackBar/FeedbackBar.test.js +2 -5
  101. package/dist/components/FeedbackBar/FeedbackBar.test.js.map +1 -1
  102. package/dist/components/FieldHint/FieldHint.js +1 -1
  103. package/dist/components/FieldHint/FieldHint.stories.js +1 -1
  104. package/dist/components/FieldHint/index.js +1 -1
  105. package/dist/components/Fieldset/Fieldset.js +1 -1
  106. package/dist/components/Fieldset/Fieldset.stories.js +1 -1
  107. package/dist/components/Fieldset/index.js +1 -1
  108. package/dist/components/FormInput/FormInput.js +1 -2
  109. package/dist/components/FormInput/FormInput.stories.js +2 -3
  110. package/dist/components/FormInput/FormInput.stories.js.map +1 -1
  111. package/dist/components/FormInput/index.js +1 -2
  112. package/dist/components/IconButton/IconButton.stories.js +6 -7
  113. package/dist/components/IconButton/IconButton.stories.js.map +1 -1
  114. package/dist/components/InputField/InputField.stories.js +1 -3
  115. package/dist/components/InputField/InputField.stories.js.map +1 -1
  116. package/dist/components/Label/Label.test.js +2 -5
  117. package/dist/components/Label/Label.test.js.map +1 -1
  118. package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -4
  119. package/dist/components/MetaDataBar/MetaDataBar.test.js.map +1 -1
  120. package/dist/components/ModalDialog/ModalDialog.js +1 -1
  121. package/dist/components/ModalDialog/ModalDialog.stories.js +2 -2
  122. package/dist/components/ModalDialog/index.js +1 -1
  123. package/dist/components/MultiSelect/MultiSelect.js +1 -2
  124. package/dist/components/MultiSelect/MultiSelect.stories.js +2 -3
  125. package/dist/components/MultiSelect/MultiSelect.stories.js.map +1 -1
  126. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -2
  127. package/dist/components/MultiSelect/index.js +1 -2
  128. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  129. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +2 -5
  130. package/dist/components/MultiSelectBox/MultiSelectBox.test.js.map +1 -1
  131. package/dist/components/Notification/Notification.stories.js +1 -1
  132. package/dist/components/Notification/Notification.test.js +2 -5
  133. package/dist/components/Notification/Notification.test.js.map +1 -1
  134. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +6 -7
  135. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js.map +1 -1
  136. package/dist/components/PageOverlay/PageOverlay.js +1 -1
  137. package/dist/components/PageOverlay/PageOverlay.stories.js +1 -1
  138. package/dist/components/PageOverlay/index.js +1 -1
  139. package/dist/components/PeriodSelector/PeriodSelector.js +1 -2
  140. package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -3
  141. package/dist/components/PeriodSelector/PeriodSelector.stories.js.map +1 -1
  142. package/dist/components/PeriodSelector/index.js +1 -2
  143. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +0 -2
  144. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js.map +1 -1
  145. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  146. package/dist/components/RadioGroup/Radiogroup.test.js +2 -5
  147. package/dist/components/RadioGroup/Radiogroup.test.js.map +1 -1
  148. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -2
  149. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -3
  150. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js.map +1 -1
  151. package/dist/components/RadioTabSelector/index.js +1 -2
  152. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -2
  153. package/dist/components/RteEditor/EditorHeader/index.js +1 -2
  154. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +2 -2
  155. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
  156. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
  157. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +30 -30
  158. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -2
  159. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -2
  160. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -2
  161. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  162. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -2
  163. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  164. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -2
  165. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +6 -6
  166. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
  167. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
  168. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
  169. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  170. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -2
  171. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -2
  172. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +16 -16
  173. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -2
  174. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -2
  175. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -2
  176. package/dist/components/RteEditor/Plugins/index.js +3 -3
  177. package/dist/components/RteEditor/RteEditor.js +1 -2
  178. package/dist/components/RteEditor/RteEditor.stories.js +1 -2
  179. package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
  180. package/dist/components/RteEditor/UvaTheme/UvaTheme.js +1 -1
  181. package/dist/components/RteEditor/helpers.js +5 -5
  182. package/dist/components/RteEditor/index.js +1 -2
  183. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +14 -14
  184. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +19 -19
  185. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  186. package/dist/components/Sortable/Sortable.js +1 -1
  187. package/dist/components/Sortable/Sortable.stories.js +1 -1
  188. package/dist/components/Sortable/SortableProvider.js +1 -1
  189. package/dist/components/Sortable/components/SortableContainer.js +1 -1
  190. package/dist/components/Sortable/components/SortableHandle.js +1 -1
  191. package/dist/components/Sortable/components/SortableItem.js +2 -2
  192. package/dist/components/Spinner/Spinner.js +1 -1
  193. package/dist/components/Spinner/Spinner.stories.js +1 -1
  194. package/dist/components/Spinner/index.js +1 -1
  195. package/dist/components/StatusBadge/StatusBadge.test.js +2 -5
  196. package/dist/components/StatusBadge/StatusBadge.test.js.map +1 -1
  197. package/dist/components/TextArea/TextArea.js +1 -1
  198. package/dist/components/TextArea/TextArea.stories.js +2 -2
  199. package/dist/components/TextArea/TextArea.test.js +4 -7
  200. package/dist/components/TextArea/TextArea.test.js.map +1 -1
  201. package/dist/components/TextArea/index.js +1 -1
  202. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  203. package/dist/components/Tooltip/Tooltip.js +1 -1
  204. package/dist/components/Tooltip/Tooltip.stories.js +1 -1
  205. package/dist/components/Tooltip/index.js +1 -1
  206. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  207. package/dist/components/VarIndicator/VarIndicator.test.js +3 -6
  208. package/dist/components/VarIndicator/VarIndicator.test.js.map +1 -1
  209. package/dist/components/index.js +12 -13
  210. package/dist/{components-C4MCdrDH.js → components-DAwjkky5.js} +436 -436
  211. package/dist/components-DAwjkky5.js.map +1 -0
  212. package/dist/{dist-2TKCXdYZ.js → dist-BIkFjHck.js} +181 -181
  213. package/dist/{dist-2TKCXdYZ.js.map → dist-BIkFjHck.js.map} +1 -1
  214. package/dist/{esm-UNe_gmRA.js → esm-ipAmzhQq.js} +4 -4
  215. package/dist/{esm-UNe_gmRA.js.map → esm-ipAmzhQq.js.map} +1 -1
  216. package/dist/{helpers-BBSxTGRl.js → helpers-MNJmfDe_.js} +7 -7
  217. package/dist/{helpers-BBSxTGRl.js.map → helpers-MNJmfDe_.js.map} +1 -1
  218. package/dist/index.js +12 -13
  219. package/dist/{react-18-CRbkdI-3.js → react-18-Dwpebadr.js} +2 -2
  220. package/dist/{react-18-CRbkdI-3.js.map → react-18-Dwpebadr.js.map} +1 -1
  221. package/dist/{react.esm-CzIhAqlo.js → react.esm-R7eBXTUI.js} +587 -587
  222. package/dist/{react.esm-CzIhAqlo.js.map → react.esm-R7eBXTUI.js.map} +1 -1
  223. package/dist/setupTests.js +1 -2
  224. package/dist/setupTests.js.map +1 -1
  225. package/dist/storybook__react.d.js +97 -97
  226. package/dist/storybook__react.d.js.map +1 -1
  227. package/dist/{test-DQruvi8i.js → test-Cr_l59hN.js} +12 -10
  228. package/dist/{test-DQruvi8i.js.map → test-Cr_l59hN.js.map} +1 -1
  229. package/package.json +27 -27
  230. package/dist/Fieldset-CoNu_Owa.js +0 -23
  231. package/dist/Lexical.prod-DIglXatJ.js.map +0 -1
  232. package/dist/LexicalExtension.prod-COPHoPpX.js.map +0 -1
  233. package/dist/LexicalLink.prod-Bf9JUdMv.js.map +0 -1
  234. package/dist/LexicalTable.prod-D16GW-aZ.js.map +0 -1
  235. package/dist/LexicalUtils.prod-BBTLliac.js +0 -360
  236. package/dist/LexicalUtils.prod-BBTLliac.js.map +0 -1
  237. package/dist/Spinner-D8tWqg9j.js +0 -31
  238. package/dist/components-C4MCdrDH.js.map +0 -1
  239. /package/dist/assets/favicon/{android-chrome-192x192.png → src/assets/favicon/android-chrome-192x192.png} +0 -0
  240. /package/dist/assets/favicon/{android-chrome-512x512.png → src/assets/favicon/android-chrome-512x512.png} +0 -0
  241. /package/dist/assets/favicon/{apple-touch-icon.png → src/assets/favicon/apple-touch-icon.png} +0 -0
  242. /package/dist/assets/favicon/{favicon-16x16.png → src/assets/favicon/favicon-16x16.png} +0 -0
  243. /package/dist/assets/favicon/{favicon-32x32.png → src/assets/favicon/favicon-32x32.png} +0 -0
  244. /package/dist/assets/favicon/{favicon.ico → src/assets/favicon/favicon.ico} +0 -0
  245. /package/dist/assets/favicon/{favicon.svg → src/assets/favicon/favicon.svg} +0 -0
  246. /package/dist/assets/favicon/{site.webmanifest → src/assets/favicon/site.webmanifest} +0 -0
  247. /package/dist/assets/fonts/{SourceSans3-Regular.otf.woff → src/assets/fonts/SourceSans3-Regular.otf.woff} +0 -0
  248. /package/dist/assets/fonts/{SourceSans3-Regular.otf.woff2 → src/assets/fonts/SourceSans3-Regular.otf.woff2} +0 -0
  249. /package/dist/assets/fonts/{SourceSans3-Semibold.otf.woff → src/assets/fonts/SourceSans3-Semibold.otf.woff} +0 -0
  250. /package/dist/assets/fonts/{SourceSans3-Semibold.otf.woff2 → src/assets/fonts/SourceSans3-Semibold.otf.woff2} +0 -0
  251. /package/dist/assets/{fonts.css → src/css/fonts.css} +0 -0
  252. /package/dist/assets/{globals.css → src/css/globals.css} +0 -0
  253. /package/dist/assets/{variables.css → src/css/variables.css} +0 -0
@@ -2,10 +2,9 @@ import { t as e } from "./clsx-BD2qMUU1.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { forwardRef as n, useId as r, useImperativeHandle as i, useState as a } from "react";
4
4
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
- import './assets/Accordion.css';//#region src/components/Accordion/Accordion.module.css
6
- var c = "_accordion_19w0n_1", l = "_accordion__title_19w0n_6", u = "_accordion__content_19w0n_66", d = {
7
- accordion: c,
8
- accordion__title: l,
5
+ import './assets/Accordion.css';var c = {
6
+ accordion: "_accordion_19w0n_1",
7
+ accordion__title: "_accordion__title_19w0n_6",
9
8
  "accordion__title-icon": "_accordion__title-icon_19w0n_21",
10
9
  "accordion__title-icon-right": "_accordion__title-icon-right_19w0n_22",
11
10
  "accordion__title-icon--margin-0": "_accordion__title-icon--margin-0_19w0n_28",
@@ -17,10 +16,10 @@ var c = "_accordion_19w0n_1", l = "_accordion__title_19w0n_6", u = "_accordion__
17
16
  "accordion__title-icon--margin-200": "_accordion__title-icon--margin-200_19w0n_52",
18
17
  "accordion__title-icon--expanded": "_accordion__title-icon--expanded_19w0n_60",
19
18
  "accordion__title-icon-right--expanded": "_accordion__title-icon-right--expanded_19w0n_61",
20
- accordion__content: u,
19
+ accordion__content: "_accordion__content_19w0n_66",
21
20
  "accordion__content--expanded": "_accordion__content--expanded_19w0n_70"
22
- }, f = n(({ title: n, content: c, expanded: l = !1, cheveronPlacement: u = "right", cheveronMargin: f = "050" }, p) => {
23
- let [m, h] = a(l), g = r();
21
+ }, l = n(({ title: n, content: l, expanded: u = !1, cheveronPlacement: d = "right", cheveronMargin: f = "050" }, p) => {
22
+ let [m, h] = a(u), g = r();
24
23
  function _(e) {
25
24
  let { code: t } = e;
26
25
  (t === "Enter" || t === "Space") && h(!m);
@@ -34,9 +33,9 @@ var c = "_accordion_19w0n_1", l = "_accordion__title_19w0n_6", u = "_accordion__
34
33
  closeContent: v,
35
34
  openContent: y
36
35
  })), /* @__PURE__ */ o("div", { children: /* @__PURE__ */ s("div", {
37
- className: d.accordion,
36
+ className: c.accordion,
38
37
  children: [/* @__PURE__ */ s("div", {
39
- className: d.accordion__title,
38
+ className: c.accordion__title,
40
39
  id: g,
41
40
  role: "button",
42
41
  tabIndex: 0,
@@ -44,26 +43,26 @@ var c = "_accordion_19w0n_1", l = "_accordion__title_19w0n_6", u = "_accordion__
44
43
  onKeyUp: _,
45
44
  "aria-expanded": m,
46
45
  children: [
47
- u === "left" && /* @__PURE__ */ o(t, {
48
- className: e(d["accordion__title-icon"], d[`accordion__title-icon--margin-${f}`], { [d["accordion__title-icon--expanded"]]: m }),
46
+ d === "left" && /* @__PURE__ */ o(t, {
47
+ className: e(c["accordion__title-icon"], c[`accordion__title-icon--margin-${f}`], { [c["accordion__title-icon--expanded"]]: m }),
49
48
  name: "CheveronLeft",
50
49
  size: 16
51
50
  }),
52
51
  n,
53
- u === "right" && /* @__PURE__ */ o(t, {
54
- className: e(d["accordion__title-icon-right"], d[`accordion__title-icon--margin-${f}`], { [d["accordion__title-icon-right--expanded"]]: m }),
52
+ d === "right" && /* @__PURE__ */ o(t, {
53
+ className: e(c["accordion__title-icon-right"], c[`accordion__title-icon--margin-${f}`], { [c["accordion__title-icon-right--expanded"]]: m }),
55
54
  name: "CheveronLeft",
56
55
  size: 16
57
56
  })
58
57
  ]
59
58
  }), /* @__PURE__ */ o("div", {
60
59
  "aria-labelledby": g,
61
- className: e(d.accordion__content, { [d["accordion__content--expanded"]]: m }),
62
- children: c
60
+ className: e(c.accordion__content, { [c["accordion__content--expanded"]]: m }),
61
+ children: l
63
62
  })]
64
63
  }) });
65
64
  });
66
65
  //#endregion
67
- export { f as t };
66
+ export { l as t };
68
67
 
69
- //# sourceMappingURL=Accordion-BpnBHYIx.js.map
68
+ //# sourceMappingURL=Accordion-DvblEUVu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion-BpnBHYIx.js","names":[],"sources":["../src/components/Accordion/Accordion.module.css","../src/components/Accordion/Accordion.tsx"],"sourcesContent":[".accordion {\n overflow: hidden;\n position: relative;\n}\n\n.accordion__title {\n align-items: center;\n display: flex;\n gap: 0.5rem;\n}\n\n.accordion__title:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n\n.accordion__title:focus-visible {\n text-decoration: underline;\n}\n\n.accordion__title-icon,\n.accordion__title-icon-right {\n transform: rotate(-90deg);\n transition: transform 300ms ease-in;\n margin-right: 0.25rem;\n}\n\n.accordion__title-icon--margin-0 {\n margin: 0;\n}\n\n.accordion__title-icon--margin-025 {\n margin: 0 0.25rem;\n}\n\n.accordion__title-icon--margin-050 {\n margin: 0 0.5rem;\n}\n\n.accordion__title-icon--margin-075 {\n margin: 0 0.75rem;\n}\n\n.accordion__title-icon--margin-100 {\n margin: 0 1rem;\n}\n\n.accordion__title-icon--margin-150 {\n margin: 0 1.5rem;\n}\n\n.accordion__title-icon--margin-200 {\n margin: 0 2rem;\n}\n\n.accordion__title-icon-right {\n margin-left: auto;\n}\n\n.accordion__title-icon--expanded,\n.accordion__title-icon-right--expanded {\n transform: rotate(90deg);\n transition: transform 300ms ease-out;\n}\n\n.accordion__content {\n display: none;\n}\n\n.accordion__content--expanded {\n display: block;\n}\n","import { clsx } from 'clsx';\nimport { forwardRef, useId, useImperativeHandle, useState } from 'react';\n\nimport type { KeyboardEvent, ReactNode } from 'react';\n\nimport styles from './Accordion.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface AccordionProps {\n /** Clickable title (always visible). */\n title: ReactNode;\n /** Main content (hidden when expanded is false). */\n content: ReactNode;\n /** Indicator if Accordion should be expanded by default.*/\n expanded?: boolean;\n /** Indicator for cheveron icon placement.*/\n cheveronPlacement?: 'left' | 'right';\n /** Indicator for cheveron icon margin. By default '050'. */\n cheveronMargin?: '0' | '025' | '050' | '075' | '100' | '150' | '200';\n}\n\nexport interface AccordionMethods {\n closeContent: () => void;\n openContent: () => void;\n}\n\n/** A controller for accordion display toggling of content with click on a title. */\nexport const Accordion = forwardRef<AccordionMethods, AccordionProps>(\n ({ title, content, expanded = false, cheveronPlacement = 'right', cheveronMargin = '050' }, ref) => {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const accordionId = useId();\n\n function onKeyUp(event: KeyboardEvent<HTMLDivElement>) {\n const { code } = event;\n\n if (code === 'Enter' || code === 'Space') {\n setIsExpanded(!isExpanded);\n }\n }\n\n const closeContent = () => {\n setIsExpanded(false);\n };\n\n const openContent = () => {\n setIsExpanded(true);\n };\n\n useImperativeHandle(ref, () => ({\n closeContent,\n openContent,\n }));\n\n return (\n <div>\n <div className={styles['accordion']}>\n <div\n className={styles['accordion__title']}\n id={accordionId}\n role=\"button\"\n tabIndex={0}\n onClick={() => setIsExpanded(!isExpanded)}\n onKeyUp={onKeyUp}\n aria-expanded={isExpanded}\n >\n {cheveronPlacement === 'left' && (\n <Icon\n className={clsx(\n styles['accordion__title-icon'],\n styles[`accordion__title-icon--margin-${cheveronMargin}`],\n {\n [styles['accordion__title-icon--expanded']]: isExpanded,\n }\n )}\n name=\"CheveronLeft\"\n size={16}\n />\n )}\n\n {title}\n {cheveronPlacement === 'right' && (\n <Icon\n className={clsx(\n styles['accordion__title-icon-right'],\n styles[`accordion__title-icon--margin-${cheveronMargin}`],\n {\n [styles['accordion__title-icon-right--expanded']]: isExpanded,\n }\n )}\n name=\"CheveronLeft\"\n size={16}\n />\n )}\n </div>\n <div\n aria-labelledby={accordionId}\n className={clsx(styles.accordion__content, { [styles['accordion__content--expanded']]: isExpanded })}\n >\n {content}\n </div>\n </div>\n </div>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;GC4Ba,IAAY,GACtB,EAAE,UAAO,YAAS,cAAW,IAAO,uBAAoB,SAAS,oBAAiB,SAAS,MAAQ;CAClG,IAAM,CAAC,GAAY,KAAiB,EAAS,EAAS,EAChD,IAAc,GAAO;CAE3B,SAAS,EAAQ,GAAsC;EACrD,IAAM,EAAE,YAAS;AAEjB,GAAI,MAAS,WAAW,MAAS,YAC/B,EAAc,CAAC,EAAW;;CAI9B,IAAM,UAAqB;AACzB,IAAc,GAAM;IAGhB,UAAoB;AACxB,IAAc,GAAK;;AAQrB,QALA,EAAoB,UAAY;EAC9B;EACA;EACD,EAAE,EAGD,kBAAC,OAAD,EAAA,UACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,OAAD;GACE,WAAW,EAAO;GAClB,IAAI;GACJ,MAAK;GACL,UAAU;GACV,eAAe,EAAc,CAAC,EAAW;GAChC;GACT,iBAAe;aAPjB;IASG,MAAsB,UACrB,kBAAC,GAAD;KACE,WAAW,EACT,EAAO,0BACP,EAAO,iCAAiC,MACxC,GACG,EAAO,qCAAqC,GAC9C,CACF;KACD,MAAK;KACL,MAAM;KACN,CAAA;IAGH;IACA,MAAsB,WACrB,kBAAC,GAAD;KACE,WAAW,EACT,EAAO,gCACP,EAAO,iCAAiC,MACxC,GACG,EAAO,2CAA2C,GACpD,CACF;KACD,MAAK;KACL,MAAM;KACN,CAAA;IAEA;MACN,kBAAC,OAAD;GACE,mBAAiB;GACjB,WAAW,EAAK,EAAO,oBAAoB,GAAG,EAAO,kCAAkC,GAAY,CAAC;aAEnG;GACG,CAAA,CACF;KACF,CAAA;EAGX"}
1
+ {"version":3,"file":"Accordion-DvblEUVu.js","names":[],"sources":["../src/components/Accordion/Accordion.module.css","../src/components/Accordion/Accordion.tsx"],"sourcesContent":[".accordion {\n overflow: hidden;\n position: relative;\n}\n\n.accordion__title {\n align-items: center;\n display: flex;\n gap: 0.5rem;\n}\n\n.accordion__title:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n\n.accordion__title:focus-visible {\n text-decoration: underline;\n}\n\n.accordion__title-icon,\n.accordion__title-icon-right {\n transform: rotate(-90deg);\n transition: transform 300ms ease-in;\n margin-right: 0.25rem;\n}\n\n.accordion__title-icon--margin-0 {\n margin: 0;\n}\n\n.accordion__title-icon--margin-025 {\n margin: 0 0.25rem;\n}\n\n.accordion__title-icon--margin-050 {\n margin: 0 0.5rem;\n}\n\n.accordion__title-icon--margin-075 {\n margin: 0 0.75rem;\n}\n\n.accordion__title-icon--margin-100 {\n margin: 0 1rem;\n}\n\n.accordion__title-icon--margin-150 {\n margin: 0 1.5rem;\n}\n\n.accordion__title-icon--margin-200 {\n margin: 0 2rem;\n}\n\n.accordion__title-icon-right {\n margin-left: auto;\n}\n\n.accordion__title-icon--expanded,\n.accordion__title-icon-right--expanded {\n transform: rotate(90deg);\n transition: transform 300ms ease-out;\n}\n\n.accordion__content {\n display: none;\n}\n\n.accordion__content--expanded {\n display: block;\n}\n","import { clsx } from 'clsx';\nimport { forwardRef, useId, useImperativeHandle, useState } from 'react';\n\nimport type { KeyboardEvent, ReactNode } from 'react';\n\nimport styles from './Accordion.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface AccordionProps {\n /** Clickable title (always visible). */\n title: ReactNode;\n /** Main content (hidden when expanded is false). */\n content: ReactNode;\n /** Indicator if Accordion should be expanded by default.*/\n expanded?: boolean;\n /** Indicator for cheveron icon placement.*/\n cheveronPlacement?: 'left' | 'right';\n /** Indicator for cheveron icon margin. By default '050'. */\n cheveronMargin?: '0' | '025' | '050' | '075' | '100' | '150' | '200';\n}\n\nexport interface AccordionMethods {\n closeContent: () => void;\n openContent: () => void;\n}\n\n/** A controller for accordion display toggling of content with click on a title. */\nexport const Accordion = forwardRef<AccordionMethods, AccordionProps>(\n ({ title, content, expanded = false, cheveronPlacement = 'right', cheveronMargin = '050' }, ref) => {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const accordionId = useId();\n\n function onKeyUp(event: KeyboardEvent<HTMLDivElement>) {\n const { code } = event;\n\n if (code === 'Enter' || code === 'Space') {\n setIsExpanded(!isExpanded);\n }\n }\n\n const closeContent = () => {\n setIsExpanded(false);\n };\n\n const openContent = () => {\n setIsExpanded(true);\n };\n\n useImperativeHandle(ref, () => ({\n closeContent,\n openContent,\n }));\n\n return (\n <div>\n <div className={styles['accordion']}>\n <div\n className={styles['accordion__title']}\n id={accordionId}\n role=\"button\"\n tabIndex={0}\n onClick={() => setIsExpanded(!isExpanded)}\n onKeyUp={onKeyUp}\n aria-expanded={isExpanded}\n >\n {cheveronPlacement === 'left' && (\n <Icon\n className={clsx(\n styles['accordion__title-icon'],\n styles[`accordion__title-icon--margin-${cheveronMargin}`],\n {\n [styles['accordion__title-icon--expanded']]: isExpanded,\n }\n )}\n name=\"CheveronLeft\"\n size={16}\n />\n )}\n\n {title}\n {cheveronPlacement === 'right' && (\n <Icon\n className={clsx(\n styles['accordion__title-icon-right'],\n styles[`accordion__title-icon--margin-${cheveronMargin}`],\n {\n [styles['accordion__title-icon-right--expanded']]: isExpanded,\n }\n )}\n name=\"CheveronLeft\"\n size={16}\n />\n )}\n </div>\n <div\n aria-labelledby={accordionId}\n className={clsx(styles.accordion__content, { [styles['accordion__content--expanded']]: isExpanded })}\n >\n {content}\n </div>\n </div>\n </div>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;GC4Ba,IAAY,GACtB,EAAE,UAAO,YAAS,cAAW,IAAO,uBAAoB,SAAS,oBAAiB,SAAS,MAAQ;CAClG,IAAM,CAAC,GAAY,KAAiB,EAAS,EAAS,EAChD,IAAc,GAAO;CAE3B,SAAS,EAAQ,GAAsC;EACrD,IAAM,EAAE,YAAS;AAEjB,GAAI,MAAS,WAAW,MAAS,YAC/B,EAAc,CAAC,EAAW;;CAI9B,IAAM,UAAqB;AACzB,IAAc,GAAM;IAGhB,UAAoB;AACxB,IAAc,GAAK;;AAQrB,QALA,EAAoB,UAAY;EAC9B;EACA;EACD,EAAE,EAGD,kBAAC,OAAD,EAAA,UACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,OAAD;GACE,WAAW,EAAO;GAClB,IAAI;GACJ,MAAK;GACL,UAAU;GACV,eAAe,EAAc,CAAC,EAAW;GAChC;GACT,iBAAe;aAPjB;IASG,MAAsB,UACrB,kBAAC,GAAD;KACE,WAAW,EACT,EAAO,0BACP,EAAO,iCAAiC,MACxC,GACG,EAAO,qCAAqC,GAC9C,CACF;KACD,MAAK;KACL,MAAM;KACN,CAAA;IAGH;IACA,MAAsB,WACrB,kBAAC,GAAD;KACE,WAAW,EACT,EAAO,gCACP,EAAO,iCAAiC,MACxC,GACG,EAAO,2CAA2C,GACpD,CACF;KACD,MAAK;KACL,MAAM;KACN,CAAA;IAEA;MACN,kBAAC,OAAD;GACE,mBAAiB;GACjB,WAAW,EAAK,EAAO,oBAAoB,GAAG,EAAO,kCAAkC,GAAY,CAAC;aAEnG;GACG,CAAA,CACF;KACF,CAAA;EAGX"}
@@ -7,22 +7,21 @@ import { useLanguage as a } from "./components/RteEditor/Providers/LanguageProvi
7
7
  import { useTranslation as o } from "./components/RteEditor/hooks/useTranslation.js";
8
8
  import { useEffect as s, useId as c, useRef as l } from "react";
9
9
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
10
- import './assets/AddCatalogueLinkForm.css';//#region src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.module.css
11
- var f = "_courselinkform_16a4f_1", p = "_courselinkform__footer_16a4f_13", m = "_courselinkform__results_16a4f_20", h = {
12
- courselinkform: f,
10
+ import './assets/AddCatalogueLinkForm.css';var f = {
11
+ courselinkform: "_courselinkform_16a4f_1",
13
12
  "courselinkform__input-field": "_courselinkform__input-field_16a4f_7",
14
- courselinkform__footer: p,
13
+ courselinkform__footer: "_courselinkform__footer_16a4f_13",
15
14
  "courselinkform__results-wrapper": "_courselinkform__results-wrapper_16a4f_20",
16
15
  "courselinkform__results-header": "_courselinkform__results-header_16a4f_24",
17
- courselinkform__results: m,
16
+ courselinkform__results: "_courselinkform__results_16a4f_20",
18
17
  "courselinkform__result-message": "_courselinkform__result-message_16a4f_41",
19
18
  "courselinkform__result-item": "_courselinkform__result-item_16a4f_51"
20
- }, g = ({ linkType: f, onCloseHandler: p, onSearchHandler: m, searchResponse: g, onSelect: _ }) => {
19
+ }, p = ({ linkType: p, onCloseHandler: m, onSearchHandler: h, searchResponse: g, onSelect: _ }) => {
21
20
  let v = o(), y = `search_${c()}`, b = l(null), x = l(null), { currentLanguage: S } = a(), C = (e) => {
22
21
  let t = e.target.value;
23
- m && m(t, f);
22
+ h && h(t, p);
24
23
  }, w = () => {
25
- p();
24
+ m();
26
25
  }, T = (e) => {
27
26
  e.key === "ArrowDown" && (e.preventDefault(), (x.current?.querySelector("button"))?.focus());
28
27
  }, E = (e, t, n, r) => {
@@ -48,19 +47,19 @@ var f = "_courselinkform_16a4f_1", p = "_courselinkform__footer_16a4f_13", m = "
48
47
  }
49
48
  };
50
49
  return s(() => {
51
- b.current && (m("", f), b.current.value = "", b.current.focus());
50
+ b.current && (h("", p), b.current.value = "", b.current.focus());
52
51
  }, []), /* @__PURE__ */ d("div", {
53
- className: h.courselinkform,
52
+ className: f.courselinkform,
54
53
  children: [/* @__PURE__ */ d(n, {
55
54
  gap: "050",
56
55
  children: [
57
56
  /* @__PURE__ */ d(r, {
58
- className: h["courselinkform__input-field"],
57
+ className: f["courselinkform__input-field"],
59
58
  children: [/* @__PURE__ */ u(t, {
60
59
  htmlFor: y,
61
- children: v.cataloguelinks[f === "course" ? "searchCourseFieldLabel" : "searchProgrammeFieldLabel"]
60
+ children: v.cataloguelinks[p === "course" ? "searchCourseFieldLabel" : "searchProgrammeFieldLabel"]
62
61
  }), /* @__PURE__ */ u("div", {
63
- className: h["linkform__input-url-wrapper"],
62
+ className: f["linkform__input-url-wrapper"],
64
63
  children: /* @__PURE__ */ u(i, {
65
64
  id: y,
66
65
  placeholder: v.cataloguelinks.searchFieldPlaceholder,
@@ -72,26 +71,26 @@ var f = "_courselinkform_16a4f_1", p = "_courselinkform__footer_16a4f_13", m = "
72
71
  })]
73
72
  }),
74
73
  g && g.state === "pending" && /* @__PURE__ */ u("div", {
75
- className: h["courselinkform__result-message"],
74
+ className: f["courselinkform__result-message"],
76
75
  children: v.cataloguelinks.loading
77
76
  }),
78
77
  g && g.results.length === 0 && g.state === "ready" && /* @__PURE__ */ u("div", {
79
- className: h["courselinkform__result-message"],
78
+ className: f["courselinkform__result-message"],
80
79
  children: v.cataloguelinks.noResults
81
80
  }),
82
81
  g && g.results.length > 0 && /* @__PURE__ */ d("div", {
83
- className: h["courselinkform__results-wrapper"],
82
+ className: f["courselinkform__results-wrapper"],
84
83
  children: [/* @__PURE__ */ d("div", {
85
- className: h["courselinkform__results-header"],
86
- children: [/* @__PURE__ */ u("span", { children: v.cataloguelinks[f === "course" ? "resultCourseListCatalogNumber" : "resultProgrammeListCatalogNumber"] }), /* @__PURE__ */ u("span", { children: v.cataloguelinks.resultListName })]
84
+ className: f["courselinkform__results-header"],
85
+ children: [/* @__PURE__ */ u("span", { children: v.cataloguelinks[p === "course" ? "resultCourseListCatalogNumber" : "resultProgrammeListCatalogNumber"] }), /* @__PURE__ */ u("span", { children: v.cataloguelinks.resultListName })]
87
86
  }), /* @__PURE__ */ u("div", {
88
- className: h.courselinkform__results,
87
+ className: f.courselinkform__results,
89
88
  ref: x,
90
89
  children: g.results.map(({ id: e, code: t, name: n }) => /* @__PURE__ */ d("button", {
91
90
  type: "button",
92
- className: h["courselinkform__result-item"],
93
- onClick: () => _ && _(t, n[S], f),
94
- onKeyDown: (e) => E(e, t, n[S], f),
91
+ className: f["courselinkform__result-item"],
92
+ onClick: () => _ && _(t, n[S], p),
93
+ onKeyDown: (e) => E(e, t, n[S], p),
95
94
  tabIndex: 0,
96
95
  "aria-label": `${t} ${n[S]}`,
97
96
  children: [/* @__PURE__ */ u("span", { children: t }), /* @__PURE__ */ u("span", { children: n[S] })]
@@ -100,7 +99,7 @@ var f = "_courselinkform_16a4f_1", p = "_courselinkform__footer_16a4f_13", m = "
100
99
  })
101
100
  ]
102
101
  }), /* @__PURE__ */ u("div", {
103
- className: h.courselinkform__footer,
102
+ className: f.courselinkform__footer,
104
103
  children: /* @__PURE__ */ u(e, {
105
104
  variant: "secondary",
106
105
  onClick: w,
@@ -112,6 +111,6 @@ var f = "_courselinkform_16a4f_1", p = "_courselinkform__footer_16a4f_13", m = "
112
111
  });
113
112
  };
114
113
  //#endregion
115
- export { g as t };
114
+ export { p as t };
116
115
 
117
- //# sourceMappingURL=AddCatalogueLinkForm-Cy6fPNvN.js.map
116
+ //# sourceMappingURL=AddCatalogueLinkForm-rph4K9P0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddCatalogueLinkForm-Cy6fPNvN.js","names":[],"sources":["../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.module.css","../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.tsx"],"sourcesContent":[".courselinkform {\n font-family: inherit;\n font-size: inherit;\n width: 30rem;\n}\n\n.courselinkform__input-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.courselinkform__footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin-top: 1rem;\n}\n\n.courselinkform__results-wrapper {\n position: relative;\n}\n\n.courselinkform__results-header {\n align-items: center;\n display: flex;\n font-size: var(--font-size-text-base);\n gap: 0.5rem;\n padding: 0.5rem;\n text-align: left;\n width: 100%;\n}\n\n.courselinkform__results {\n border: 1px solid var(--color-grey-300);\n border-radius: 0.25rem;\n max-height: 10rem;\n overflow-y: auto;\n}\n\n.courselinkform__result-message {\n align-items: center;\n color: var(--color-grey-600);\n display: flex;\n font-size: var(--font-size-text-non-essential);\n height: 2rem;\n justify-content: flex-start;\n padding: 0 0.5rem;\n}\n\n.courselinkform__result-item {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: var(--font-size-text-base);\n gap: 0.5rem;\n min-height: 2.5rem;\n padding: 0.5rem;\n text-align: left;\n width: 100%;\n}\n\n.courselinkform__results-header span,\n.courselinkform__result-item span {\n line-height: 1.4;\n width: calc(100% - 9rem);\n}\n\n.courselinkform__results-header span:first-child,\n.courselinkform__result-item span:first-child {\n width: 9rem;\n}\n\n.courselinkform__result-item:focus-visible {\n background-color: var(--color-grey-300);\n outline: none;\n}\n\n.courselinkform__result-item:hover,\n.courselinkform__result-item:focus-visible {\n background-color: var(--color-grey-300);\n}\n\n.courselinkform__result-item:not(:last-child) {\n border-bottom: 1px solid var(--color-grey-300);\n}\n","import { useEffect, useId, useRef } from 'react';\r\n\r\nimport type { KeyboardEvent } from 'react';\r\n\r\nimport styles from './AddCatalogueLinkForm.module.css';\r\n\r\nimport { Button } from 'components/Buttons';\r\nimport { FormField } from 'components/FormField';\r\nimport { Label } from 'components/Label';\r\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\r\nimport { InputField } from 'components/InputField';\r\nimport { useLanguage } from 'components/RteEditor/Providers/LanguageProvider';\r\nimport { Repeater } from 'components/Repeater';\r\n\r\ntype SearchResult = {\r\n code: string;\r\n id: string;\r\n name: {\r\n EN: string;\r\n NL: string;\r\n };\r\n programmeType: string;\r\n};\r\n\r\nexport type SearchResponse = {\r\n state: 'idle' | 'pending' | 'ready';\r\n results: SearchResult[];\r\n};\r\n\r\ninterface AddCatalogueLinkFormProps {\r\n linkType: 'course' | 'programme';\r\n onCloseHandler: () => void;\r\n onSearchHandler: (query: string, type: 'course' | 'programme') => void;\r\n searchResponse?: SearchResponse;\r\n onSelect?: (code: string, label: string, type: 'course' | 'programme') => void;\r\n}\r\n\r\nexport const AddCatalogueLinkForm = ({\r\n linkType,\r\n onCloseHandler,\r\n onSearchHandler,\r\n searchResponse,\r\n onSelect,\r\n}: AddCatalogueLinkFormProps) => {\r\n const t = useTranslation();\r\n const searchId = `search_${useId()}`;\r\n const searchFieldRef = useRef<HTMLInputElement>(null);\r\n const resultListRef = useRef<HTMLDivElement>(null);\r\n const { currentLanguage } = useLanguage();\r\n\r\n const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const query = event.target.value;\r\n if (onSearchHandler) {\r\n onSearchHandler(query, linkType);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n onCloseHandler();\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n const container = resultListRef.current;\r\n const firstFocusable = container?.querySelector<HTMLElement>('button');\r\n firstFocusable?.focus();\r\n }\r\n };\r\n\r\n const onResultKeyDown = (\r\n event: KeyboardEvent<HTMLButtonElement>,\r\n code: string,\r\n name: string,\r\n linkType: 'course' | 'programme'\r\n ) => {\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleClose();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n onSelect && onSelect(code, name, linkType);\r\n break;\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const nextElement = event.currentTarget.nextElementSibling;\r\n (nextElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const previousElement = event.currentTarget.previousElementSibling;\r\n (previousElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'Tab':\r\n event.preventDefault();\r\n handleClose();\r\n break;\r\n default:\r\n event.preventDefault();\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (searchFieldRef.current) {\r\n onSearchHandler('', linkType);\r\n searchFieldRef.current.value = '';\r\n searchFieldRef.current.focus();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div className={styles['courselinkform']}>\r\n <Repeater gap=\"050\">\r\n <FormField className={styles['courselinkform__input-field']}>\r\n <Label htmlFor={searchId}>\r\n {t.cataloguelinks[linkType === 'course' ? 'searchCourseFieldLabel' : 'searchProgrammeFieldLabel']}\r\n </Label>\r\n <div className={styles['linkform__input-url-wrapper']}>\r\n <InputField\r\n id={searchId}\r\n placeholder={t.cataloguelinks.searchFieldPlaceholder}\r\n onChange={handleSearch}\r\n onKeyDown={handleKeyDown}\r\n ref={searchFieldRef}\r\n aria-label={t.aria.labels.searchField}\r\n />\r\n </div>\r\n </FormField>\r\n {searchResponse && searchResponse.state === 'pending' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.loading}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length === 0 && searchResponse.state === 'ready' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.noResults}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length > 0 && (\r\n <div className={styles['courselinkform__results-wrapper']}>\r\n <div className={styles['courselinkform__results-header']}>\r\n <span>\r\n {\r\n t.cataloguelinks[\r\n linkType === 'course' ? 'resultCourseListCatalogNumber' : 'resultProgrammeListCatalogNumber'\r\n ]\r\n }\r\n </span>\r\n <span>{t.cataloguelinks.resultListName}</span>\r\n </div>\r\n <div className={styles['courselinkform__results']} ref={resultListRef}>\r\n {searchResponse.results.map(({ id, code, name }) => (\r\n <button\r\n key={id}\r\n type=\"button\"\r\n className={styles['courselinkform__result-item']}\r\n onClick={() => onSelect && onSelect(code, name[currentLanguage], linkType)}\r\n onKeyDown={(event) => onResultKeyDown(event, code, name[currentLanguage], linkType)}\r\n tabIndex={0}\r\n aria-label={`${code} ${name[currentLanguage]}`}\r\n >\r\n <span>{code}</span>\r\n <span>{name[currentLanguage]}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </Repeater>\r\n <div className={styles['courselinkform__footer']}>\r\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\r\n {t.common.cancel}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;GCqCa,KAAwB,EACnC,aACA,mBACA,oBACA,mBACA,kBAC+B;CAC/B,IAAM,IAAI,GAAgB,EACpB,IAAW,UAAU,GAAO,IAC5B,IAAiB,EAAyB,KAAK,EAC/C,IAAgB,EAAuB,KAAK,EAC5C,EAAE,uBAAoB,GAAa,EAEnC,KAAgB,MAA+C;EACnE,IAAM,IAAQ,EAAM,OAAO;AAC3B,EAAI,KACF,EAAgB,GAAO,EAAS;IAI9B,UAAoB;AACxB,KAAgB;IAGZ,KAAiB,MAA2C;AAChE,EAAI,EAAM,QAAQ,gBAChB,EAAM,gBAAgB,GACJ,EAAc,SACE,cAA2B,SAAS,GACtD,OAAO;IAIrB,KACJ,GACA,GACA,GACA,MACG;AACH,UAAQ,EAAM,KAAd;GACE,KAAK;AAGH,IAFA,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACvB,GAAa;AACb;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,KAAY,EAAS,GAAM,GAAM,EAAS;AAC1C;GACF,KAAK;AAGiB,IAFpB,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACH,EAAM,cAAc,oBACJ,OAAO;AAC3C;GAEF,KAAK;AAGqB,IAFxB,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACC,EAAM,cAAc,wBACJ,OAAO;AAC/C;GAEF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,GAAa;AACb;GACF;AACE,MAAM,gBAAgB;AACtB;;;AAaN,QATA,QAAgB;AACd,EAAI,EAAe,YACjB,EAAgB,IAAI,EAAS,EAC7B,EAAe,QAAQ,QAAQ,IAC/B,EAAe,QAAQ,OAAO;IAG/B,EAAE,CAAC,EAGJ,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,GAAD;GAAU,KAAI;aAAd;IACE,kBAAC,GAAD;KAAW,WAAW,EAAO;eAA7B,CACE,kBAAC,GAAD;MAAO,SAAS;gBACb,EAAE,eAAe,MAAa,WAAW,2BAA2B;MAC/D,CAAA,EACR,kBAAC,OAAD;MAAK,WAAW,EAAO;gBACrB,kBAAC,GAAD;OACE,IAAI;OACJ,aAAa,EAAE,eAAe;OAC9B,UAAU;OACV,WAAW;OACX,KAAK;OACL,cAAY,EAAE,KAAK,OAAO;OAC1B,CAAA;MACE,CAAA,CACI;;IACX,KAAkB,EAAe,UAAU,aAC1C,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAoC,EAAE,eAAe;KAAc,CAAA;IAE3F,KAAkB,EAAe,QAAQ,WAAW,KAAK,EAAe,UAAU,WACjF,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAoC,EAAE,eAAe;KAAgB,CAAA;IAE7F,KAAkB,EAAe,QAAQ,SAAS,KACjD,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,QAAD,EAAA,UAEI,EAAE,eACA,MAAa,WAAW,kCAAkC,qCAGzD,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,EAAE,eAAe,gBAAsB,CAAA,CAC1C;SACN,kBAAC,OAAD;MAAK,WAAW,EAAO;MAA4B,KAAK;gBACrD,EAAe,QAAQ,KAAK,EAAE,OAAI,SAAM,cACvC,kBAAC,UAAD;OAEE,MAAK;OACL,WAAW,EAAO;OAClB,eAAe,KAAY,EAAS,GAAM,EAAK,IAAkB,EAAS;OAC1E,YAAY,MAAU,EAAgB,GAAO,GAAM,EAAK,IAAkB,EAAS;OACnF,UAAU;OACV,cAAY,GAAG,EAAK,GAAG,EAAK;iBAP9B,CASE,kBAAC,QAAD,EAAA,UAAO,GAAY,CAAA,EACnB,kBAAC,QAAD,EAAA,UAAO,EAAK,IAAwB,CAAA,CAC7B;SAVF,EAUE,CACT;MACE,CAAA,CACF;;IAEC;MACX,kBAAC,OAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD;IAAQ,SAAS;IAAa,SAAS;IAAa,cAAY,EAAE,OAAO;IAAQ,MAAK;cACnF,EAAE,OAAO;IACH,CAAA;GACL,CAAA,CACF"}
1
+ {"version":3,"file":"AddCatalogueLinkForm-rph4K9P0.js","names":[],"sources":["../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.module.css","../src/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.tsx"],"sourcesContent":[".courselinkform {\n font-family: inherit;\n font-size: inherit;\n width: 30rem;\n}\n\n.courselinkform__input-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.courselinkform__footer {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin-top: 1rem;\n}\n\n.courselinkform__results-wrapper {\n position: relative;\n}\n\n.courselinkform__results-header {\n align-items: center;\n display: flex;\n font-size: var(--font-size-text-base);\n gap: 0.5rem;\n padding: 0.5rem;\n text-align: left;\n width: 100%;\n}\n\n.courselinkform__results {\n border: 1px solid var(--color-grey-300);\n border-radius: 0.25rem;\n max-height: 10rem;\n overflow-y: auto;\n}\n\n.courselinkform__result-message {\n align-items: center;\n color: var(--color-grey-600);\n display: flex;\n font-size: var(--font-size-text-non-essential);\n height: 2rem;\n justify-content: flex-start;\n padding: 0 0.5rem;\n}\n\n.courselinkform__result-item {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: var(--font-size-text-base);\n gap: 0.5rem;\n min-height: 2.5rem;\n padding: 0.5rem;\n text-align: left;\n width: 100%;\n}\n\n.courselinkform__results-header span,\n.courselinkform__result-item span {\n line-height: 1.4;\n width: calc(100% - 9rem);\n}\n\n.courselinkform__results-header span:first-child,\n.courselinkform__result-item span:first-child {\n width: 9rem;\n}\n\n.courselinkform__result-item:focus-visible {\n background-color: var(--color-grey-300);\n outline: none;\n}\n\n.courselinkform__result-item:hover,\n.courselinkform__result-item:focus-visible {\n background-color: var(--color-grey-300);\n}\n\n.courselinkform__result-item:not(:last-child) {\n border-bottom: 1px solid var(--color-grey-300);\n}\n","import { useEffect, useId, useRef } from 'react';\r\n\r\nimport type { KeyboardEvent } from 'react';\r\n\r\nimport styles from './AddCatalogueLinkForm.module.css';\r\n\r\nimport { Button } from 'components/Buttons';\r\nimport { FormField } from 'components/FormField';\r\nimport { Label } from 'components/Label';\r\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\r\nimport { InputField } from 'components/InputField';\r\nimport { useLanguage } from 'components/RteEditor/Providers/LanguageProvider';\r\nimport { Repeater } from 'components/Repeater';\r\n\r\ntype SearchResult = {\r\n code: string;\r\n id: string;\r\n name: {\r\n EN: string;\r\n NL: string;\r\n };\r\n programmeType: string;\r\n};\r\n\r\nexport type SearchResponse = {\r\n state: 'idle' | 'pending' | 'ready';\r\n results: SearchResult[];\r\n};\r\n\r\ninterface AddCatalogueLinkFormProps {\r\n linkType: 'course' | 'programme';\r\n onCloseHandler: () => void;\r\n onSearchHandler: (query: string, type: 'course' | 'programme') => void;\r\n searchResponse?: SearchResponse;\r\n onSelect?: (code: string, label: string, type: 'course' | 'programme') => void;\r\n}\r\n\r\nexport const AddCatalogueLinkForm = ({\r\n linkType,\r\n onCloseHandler,\r\n onSearchHandler,\r\n searchResponse,\r\n onSelect,\r\n}: AddCatalogueLinkFormProps) => {\r\n const t = useTranslation();\r\n const searchId = `search_${useId()}`;\r\n const searchFieldRef = useRef<HTMLInputElement>(null);\r\n const resultListRef = useRef<HTMLDivElement>(null);\r\n const { currentLanguage } = useLanguage();\r\n\r\n const handleSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const query = event.target.value;\r\n if (onSearchHandler) {\r\n onSearchHandler(query, linkType);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n onCloseHandler();\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n const container = resultListRef.current;\r\n const firstFocusable = container?.querySelector<HTMLElement>('button');\r\n firstFocusable?.focus();\r\n }\r\n };\r\n\r\n const onResultKeyDown = (\r\n event: KeyboardEvent<HTMLButtonElement>,\r\n code: string,\r\n name: string,\r\n linkType: 'course' | 'programme'\r\n ) => {\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleClose();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n onSelect && onSelect(code, name, linkType);\r\n break;\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const nextElement = event.currentTarget.nextElementSibling;\r\n (nextElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const previousElement = event.currentTarget.previousElementSibling;\r\n (previousElement as HTMLButtonElement)?.focus();\r\n break;\r\n }\r\n case 'Tab':\r\n event.preventDefault();\r\n handleClose();\r\n break;\r\n default:\r\n event.preventDefault();\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (searchFieldRef.current) {\r\n onSearchHandler('', linkType);\r\n searchFieldRef.current.value = '';\r\n searchFieldRef.current.focus();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div className={styles['courselinkform']}>\r\n <Repeater gap=\"050\">\r\n <FormField className={styles['courselinkform__input-field']}>\r\n <Label htmlFor={searchId}>\r\n {t.cataloguelinks[linkType === 'course' ? 'searchCourseFieldLabel' : 'searchProgrammeFieldLabel']}\r\n </Label>\r\n <div className={styles['linkform__input-url-wrapper']}>\r\n <InputField\r\n id={searchId}\r\n placeholder={t.cataloguelinks.searchFieldPlaceholder}\r\n onChange={handleSearch}\r\n onKeyDown={handleKeyDown}\r\n ref={searchFieldRef}\r\n aria-label={t.aria.labels.searchField}\r\n />\r\n </div>\r\n </FormField>\r\n {searchResponse && searchResponse.state === 'pending' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.loading}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length === 0 && searchResponse.state === 'ready' && (\r\n <div className={styles['courselinkform__result-message']}>{t.cataloguelinks.noResults}</div>\r\n )}\r\n {searchResponse && searchResponse.results.length > 0 && (\r\n <div className={styles['courselinkform__results-wrapper']}>\r\n <div className={styles['courselinkform__results-header']}>\r\n <span>\r\n {\r\n t.cataloguelinks[\r\n linkType === 'course' ? 'resultCourseListCatalogNumber' : 'resultProgrammeListCatalogNumber'\r\n ]\r\n }\r\n </span>\r\n <span>{t.cataloguelinks.resultListName}</span>\r\n </div>\r\n <div className={styles['courselinkform__results']} ref={resultListRef}>\r\n {searchResponse.results.map(({ id, code, name }) => (\r\n <button\r\n key={id}\r\n type=\"button\"\r\n className={styles['courselinkform__result-item']}\r\n onClick={() => onSelect && onSelect(code, name[currentLanguage], linkType)}\r\n onKeyDown={(event) => onResultKeyDown(event, code, name[currentLanguage], linkType)}\r\n tabIndex={0}\r\n aria-label={`${code} ${name[currentLanguage]}`}\r\n >\r\n <span>{code}</span>\r\n <span>{name[currentLanguage]}</span>\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </Repeater>\r\n <div className={styles['courselinkform__footer']}>\r\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\r\n {t.common.cancel}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;;GCqCa,KAAwB,EACnC,aACA,mBACA,oBACA,mBACA,kBAC+B;CAC/B,IAAM,IAAI,GAAgB,EACpB,IAAW,UAAU,GAAO,IAC5B,IAAiB,EAAyB,KAAK,EAC/C,IAAgB,EAAuB,KAAK,EAC5C,EAAE,uBAAoB,GAAa,EAEnC,KAAgB,MAA+C;EACnE,IAAM,IAAQ,EAAM,OAAO;AAC3B,EAAI,KACF,EAAgB,GAAO,EAAS;IAI9B,UAAoB;AACxB,KAAgB;IAGZ,KAAiB,MAA2C;AAChE,EAAI,EAAM,QAAQ,gBAChB,EAAM,gBAAgB,GACJ,EAAc,SACE,cAA2B,SAAS,GACtD,OAAO;IAIrB,KACJ,GACA,GACA,GACA,MACG;AACH,UAAQ,EAAM,KAAd;GACE,KAAK;AAGH,IAFA,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACvB,GAAa;AACb;GACF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,KAAY,EAAS,GAAM,GAAM,EAAS;AAC1C;GACF,KAAK;AAGiB,IAFpB,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACH,EAAM,cAAc,oBACJ,OAAO;AAC3C;GAEF,KAAK;AAGqB,IAFxB,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACC,EAAM,cAAc,wBACJ,OAAO;AAC/C;GAEF,KAAK;AAEH,IADA,EAAM,gBAAgB,EACtB,GAAa;AACb;GACF;AACE,MAAM,gBAAgB;AACtB;;;AAaN,QATA,QAAgB;AACd,EAAI,EAAe,YACjB,EAAgB,IAAI,EAAS,EAC7B,EAAe,QAAQ,QAAQ,IAC/B,EAAe,QAAQ,OAAO;IAG/B,EAAE,CAAC,EAGJ,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,GAAD;GAAU,KAAI;aAAd;IACE,kBAAC,GAAD;KAAW,WAAW,EAAO;eAA7B,CACE,kBAAC,GAAD;MAAO,SAAS;gBACb,EAAE,eAAe,MAAa,WAAW,2BAA2B;MAC/D,CAAA,EACR,kBAAC,OAAD;MAAK,WAAW,EAAO;gBACrB,kBAAC,GAAD;OACE,IAAI;OACJ,aAAa,EAAE,eAAe;OAC9B,UAAU;OACV,WAAW;OACX,KAAK;OACL,cAAY,EAAE,KAAK,OAAO;OAC1B,CAAA;MACE,CAAA,CACI;;IACX,KAAkB,EAAe,UAAU,aAC1C,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAoC,EAAE,eAAe;KAAc,CAAA;IAE3F,KAAkB,EAAe,QAAQ,WAAW,KAAK,EAAe,UAAU,WACjF,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAoC,EAAE,eAAe;KAAgB,CAAA;IAE7F,KAAkB,EAAe,QAAQ,SAAS,KACjD,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,OAAD;MAAK,WAAW,EAAO;gBAAvB,CACE,kBAAC,QAAD,EAAA,UAEI,EAAE,eACA,MAAa,WAAW,kCAAkC,qCAGzD,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,EAAE,eAAe,gBAAsB,CAAA,CAC1C;SACN,kBAAC,OAAD;MAAK,WAAW,EAAO;MAA4B,KAAK;gBACrD,EAAe,QAAQ,KAAK,EAAE,OAAI,SAAM,cACvC,kBAAC,UAAD;OAEE,MAAK;OACL,WAAW,EAAO;OAClB,eAAe,KAAY,EAAS,GAAM,EAAK,IAAkB,EAAS;OAC1E,YAAY,MAAU,EAAgB,GAAO,GAAM,EAAK,IAAkB,EAAS;OACnF,UAAU;OACV,cAAY,GAAG,EAAK,GAAG,EAAK;iBAP9B,CASE,kBAAC,QAAD,EAAA,UAAO,GAAY,CAAA,EACnB,kBAAC,QAAD,EAAA,UAAO,EAAK,IAAwB,CAAA,CAC7B;SAVF,EAUE,CACT;MACE,CAAA,CACF;;IAEC;MACX,kBAAC,OAAD;GAAK,WAAW,EAAO;aACrB,kBAAC,GAAD;IAAQ,SAAS;IAAa,SAAS;IAAa,cAAY,EAAE,OAAO;IAAQ,MAAK;cACnF,EAAE,OAAO;IACH,CAAA;GACL,CAAA,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./clsx-BD2qMUU1.js";
2
2
  import { t } from "./Label-o0BcWTUS.js";
3
3
  import { t as n } from "./FeedbackBox-Bu7uB9DP.js";
4
- import { t as r } from "./ControlsButton-zemVxTlg.js";
4
+ import { t as r } from "./ControlsButton-B1XRpMUM.js";
5
5
  import { useState as i } from "react";
6
6
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
7
  import './assets/CheckboxButtonBar.css';//#region src/components/CheckboxButtonBar/CheckboxButtonBar.module.css
@@ -76,4 +76,4 @@ var s = {
76
76
  //#endregion
77
77
  export { c as t };
78
78
 
79
- //# sourceMappingURL=CheckboxButtonBar-CalU0IYK.js.map
79
+ //# sourceMappingURL=CheckboxButtonBar-5UMIFMKH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxButtonBar-CalU0IYK.js","names":[],"sources":["../src/components/CheckboxButtonBar/CheckboxButtonBar.module.css","../src/components/CheckboxButtonBar/CheckboxButtonBar.tsx"],"sourcesContent":[".checkbox-button-bar__container {\n display: flex;\n flex-wrap: wrap;\n}\n\n.checkbox-button-bar__container--label-left {\n align-items: baseline;\n flex-direction: row;\n gap: 1rem;\n}\n\n.checkbox-button-bar__container--label-top {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.checkbox-button-bar__row-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.checkbox-button-bar__row-container--segmented {\n flex-direction: row;\n}\n\n.checkbox-button-bar__row {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-700);\n border-radius: 0.5rem;\n display: flex;\n flex-wrap: nowrap;\n gap: 0.25rem;\n padding: 0.25rem;\n}\n\n.checkbox-button-bar__row--not-valid {\n border-color: var(--color-red-600);\n}\n\n.checkbox-button-bar__sub-text {\n color: var(--color-grey-700);\n font-size: var(--font-size-text-non-essential);\n}\n","import { useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './CheckboxButtonBar.module.css';\n\nimport { Label } from 'components/Label';\nimport { FeedbackBox } from 'components/FeedbackBox';\nimport { ControlsButton } from 'components/ControlsButton';\n\ntype CheckboxProps = {\n label: string | ReactNode;\n value: string;\n prefix?: string;\n tooltip?: ReactNode;\n tooltipPosition?: 'left' | 'center' | 'right';\n disabled?: boolean;\n};\n\nexport interface CheckboxButtonBarProps {\n /** array with objects with label, value, prefix and disabled*/\n checkboxes: CheckboxProps[];\n //** array with value(s) */\n defaultValues?: string[];\n label?: string;\n /** optional sub-label text (only displayed when label is positioned 'top') */\n subLabel?: string;\n /** 'top' | 'left' */\n labelPosition?: 'top' | 'left';\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** error text to display under the bar */\n notValidatedText?: string;\n /** returns an array with only one value */\n actAsRadioButtonBar?: boolean;\n /** optional footer text */\n footerText?: string;\n /** disables all checkboxes in the bar */\n disableGroup?: boolean;\n /** `true` to sepearte each button in their own bordered container */\n segmented?: boolean;\n /** `true` sets forceSquared on all buttons */\n forceSquared?: boolean;\n onSetValues: (value: string[]) => void;\n}\n\nexport const CheckboxButtonBar = ({\n checkboxes,\n defaultValues,\n label,\n subLabel = '',\n labelPosition = 'top',\n required = false,\n notValid = false,\n notValidatedText = '',\n actAsRadioButtonBar = false,\n footerText = '',\n disableGroup = false,\n segmented = false,\n forceSquared = false,\n onSetValues,\n}: CheckboxButtonBarProps) => {\n const [currentValues, setCurrentValues] = useState<string[]>(\n defaultValues && !actAsRadioButtonBar\n ? defaultValues.map(String)\n : defaultValues && actAsRadioButtonBar\n ? defaultValues.slice(0, 1)\n : []\n );\n\n const handleChange = (value: string) => {\n let values = currentValues;\n\n if (actAsRadioButtonBar) {\n setCurrentValues([value]);\n onSetValues([value]);\n } else {\n if (values.includes(value)) {\n values = values.filter((val) => val !== value);\n } else {\n values = [...values, value];\n }\n setCurrentValues(values);\n onSetValues(values);\n }\n };\n\n return (\n <div\n className={clsx(\n styles['checkbox-button-bar__container'],\n styles[`checkbox-button-bar__container--label-${labelPosition}`]\n )}\n >\n {(label || subLabel) && (\n <div>\n {label && (\n <Label htmlFor=\"\" required={required}>\n {label}\n </Label>\n )}\n\n {subLabel && labelPosition === 'top' && (\n <div className={styles['checkbox-button-bar__sub-text']}>{subLabel}</div>\n )}\n </div>\n )}\n\n <div\n className={clsx(styles['checkbox-button-bar__row-container'], {\n [styles['checkbox-button-bar__row-container--segmented']]: segmented,\n })}\n >\n {segmented ? (\n checkboxes.map(({ label, value, prefix, tooltip, tooltipPosition, disabled }) => (\n <div\n key={value}\n className={clsx(styles['checkbox-button-bar__row'], {\n [styles['checkbox-button-bar__row--not-valid']]: notValid || notValidatedText,\n })}\n >\n <ControlsButton\n type={actAsRadioButtonBar ? 'radio' : 'checkbox'}\n label={label}\n prefix={prefix}\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n forceSquared={forceSquared}\n value={value}\n checked={currentValues.includes(value)}\n disabled={disabled || disableGroup}\n onSetValue={(event) => handleChange(event.target.value)}\n />\n </div>\n ))\n ) : (\n <div\n className={clsx(styles['checkbox-button-bar__row'], {\n [styles['checkbox-button-bar__row--not-valid']]: notValid || notValidatedText,\n })}\n >\n {checkboxes.map(({ label, value, prefix, tooltip, tooltipPosition, disabled }) => (\n <ControlsButton\n key={value}\n type={actAsRadioButtonBar ? 'radio' : 'checkbox'}\n label={label}\n prefix={prefix}\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n forceSquared={forceSquared}\n value={value}\n checked={currentValues.includes(value)}\n disabled={disabled || disableGroup}\n onSetValue={(event) => handleChange(event.target.value)}\n />\n ))}\n </div>\n )}\n </div>\n\n {footerText && <div className={styles['checkbox-button-bar__sub-text']}>{footerText}</div>}\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;GCiDa,KAAqB,EAChC,eACA,kBACA,UACA,cAAW,IACX,mBAAgB,OAChB,cAAW,IACX,cAAW,IACX,sBAAmB,IACnB,yBAAsB,IACtB,gBAAa,IACb,kBAAe,IACf,eAAY,IACZ,kBAAe,IACf,qBAC4B;CAC5B,IAAM,CAAC,GAAe,KAAoB,EACxC,KAAiB,CAAC,IACd,EAAc,IAAI,OAAO,GACzB,KAAiB,IACf,EAAc,MAAM,GAAG,EAAE,GACzB,EAAE,CACT,EAEK,KAAgB,MAAkB;EACtC,IAAI,IAAS;AAEb,EAAI,KACF,EAAiB,CAAC,EAAM,CAAC,EACzB,EAAY,CAAC,EAAM,CAAC,KAEpB,AAGE,IAHE,EAAO,SAAS,EAAM,GACf,EAAO,QAAQ,MAAQ,MAAQ,EAAM,GAErC,CAAC,GAAG,GAAQ,EAAM,EAE7B,EAAiB,EAAO,EACxB,EAAY,EAAO;;AAIvB,QACE,kBAAC,OAAD;EACE,WAAW,EACT,EAAO,mCACP,EAAO,yCAAyC,KACjD;YAJH;IAMI,KAAS,MACT,kBAAC,OAAD,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;IAAO,SAAQ;IAAa;cACzB;IACK,CAAA,EAGT,KAAY,MAAkB,SAC7B,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAmC;IAAe,CAAA,CAEvE,EAAA,CAAA;GAGR,kBAAC,OAAD;IACE,WAAW,EAAK,EAAO,uCAAuC,GAC3D,EAAO,mDAAmD,GAC5D,CAAC;cAED,IACC,EAAW,KAAK,EAAE,UAAO,UAAO,WAAQ,YAAS,oBAAiB,kBAChE,kBAAC,OAAD;KAEE,WAAW,EAAK,EAAO,6BAA6B,GACjD,EAAO,yCAAyC,KAAY,GAC9D,CAAC;eAEF,kBAAC,GAAD;MACE,MAAM,IAAsB,UAAU;MAC/B;MACC;MACC;MACQ;MACH;MACP;MACP,SAAS,EAAc,SAAS,EAAM;MACtC,UAAU,KAAY;MACtB,aAAa,MAAU,EAAa,EAAM,OAAO,MAAM;MACvD,CAAA;KACE,EAjBC,EAiBD,CACN,GAEF,kBAAC,OAAD;KACE,WAAW,EAAK,EAAO,6BAA6B,GACjD,EAAO,yCAAyC,KAAY,GAC9D,CAAC;eAED,EAAW,KAAK,EAAE,UAAO,UAAO,WAAQ,YAAS,oBAAiB,kBACjE,kBAAC,GAAD;MAEE,MAAM,IAAsB,UAAU;MAC/B;MACC;MACC;MACQ;MACH;MACP;MACP,SAAS,EAAc,SAAS,EAAM;MACtC,UAAU,KAAY;MACtB,aAAa,MAAU,EAAa,EAAM,OAAO,MAAM;MACvD,EAXK,EAWL,CACF;KACE,CAAA;IAEJ,CAAA;GAEL,KAAc,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAmC;IAAiB,CAAA;GACzF,MAAqB,MAAM,kBAAC,GAAD;IAAa,OAAM;IAAQ,UAAU;IAAoB,CAAA;GACjF"}
1
+ {"version":3,"file":"CheckboxButtonBar-5UMIFMKH.js","names":[],"sources":["../src/components/CheckboxButtonBar/CheckboxButtonBar.module.css","../src/components/CheckboxButtonBar/CheckboxButtonBar.tsx"],"sourcesContent":[".checkbox-button-bar__container {\n display: flex;\n flex-wrap: wrap;\n}\n\n.checkbox-button-bar__container--label-left {\n align-items: baseline;\n flex-direction: row;\n gap: 1rem;\n}\n\n.checkbox-button-bar__container--label-top {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.checkbox-button-bar__row-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.checkbox-button-bar__row-container--segmented {\n flex-direction: row;\n}\n\n.checkbox-button-bar__row {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-700);\n border-radius: 0.5rem;\n display: flex;\n flex-wrap: nowrap;\n gap: 0.25rem;\n padding: 0.25rem;\n}\n\n.checkbox-button-bar__row--not-valid {\n border-color: var(--color-red-600);\n}\n\n.checkbox-button-bar__sub-text {\n color: var(--color-grey-700);\n font-size: var(--font-size-text-non-essential);\n}\n","import { useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './CheckboxButtonBar.module.css';\n\nimport { Label } from 'components/Label';\nimport { FeedbackBox } from 'components/FeedbackBox';\nimport { ControlsButton } from 'components/ControlsButton';\n\ntype CheckboxProps = {\n label: string | ReactNode;\n value: string;\n prefix?: string;\n tooltip?: ReactNode;\n tooltipPosition?: 'left' | 'center' | 'right';\n disabled?: boolean;\n};\n\nexport interface CheckboxButtonBarProps {\n /** array with objects with label, value, prefix and disabled*/\n checkboxes: CheckboxProps[];\n //** array with value(s) */\n defaultValues?: string[];\n label?: string;\n /** optional sub-label text (only displayed when label is positioned 'top') */\n subLabel?: string;\n /** 'top' | 'left' */\n labelPosition?: 'top' | 'left';\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** error text to display under the bar */\n notValidatedText?: string;\n /** returns an array with only one value */\n actAsRadioButtonBar?: boolean;\n /** optional footer text */\n footerText?: string;\n /** disables all checkboxes in the bar */\n disableGroup?: boolean;\n /** `true` to sepearte each button in their own bordered container */\n segmented?: boolean;\n /** `true` sets forceSquared on all buttons */\n forceSquared?: boolean;\n onSetValues: (value: string[]) => void;\n}\n\nexport const CheckboxButtonBar = ({\n checkboxes,\n defaultValues,\n label,\n subLabel = '',\n labelPosition = 'top',\n required = false,\n notValid = false,\n notValidatedText = '',\n actAsRadioButtonBar = false,\n footerText = '',\n disableGroup = false,\n segmented = false,\n forceSquared = false,\n onSetValues,\n}: CheckboxButtonBarProps) => {\n const [currentValues, setCurrentValues] = useState<string[]>(\n defaultValues && !actAsRadioButtonBar\n ? defaultValues.map(String)\n : defaultValues && actAsRadioButtonBar\n ? defaultValues.slice(0, 1)\n : []\n );\n\n const handleChange = (value: string) => {\n let values = currentValues;\n\n if (actAsRadioButtonBar) {\n setCurrentValues([value]);\n onSetValues([value]);\n } else {\n if (values.includes(value)) {\n values = values.filter((val) => val !== value);\n } else {\n values = [...values, value];\n }\n setCurrentValues(values);\n onSetValues(values);\n }\n };\n\n return (\n <div\n className={clsx(\n styles['checkbox-button-bar__container'],\n styles[`checkbox-button-bar__container--label-${labelPosition}`]\n )}\n >\n {(label || subLabel) && (\n <div>\n {label && (\n <Label htmlFor=\"\" required={required}>\n {label}\n </Label>\n )}\n\n {subLabel && labelPosition === 'top' && (\n <div className={styles['checkbox-button-bar__sub-text']}>{subLabel}</div>\n )}\n </div>\n )}\n\n <div\n className={clsx(styles['checkbox-button-bar__row-container'], {\n [styles['checkbox-button-bar__row-container--segmented']]: segmented,\n })}\n >\n {segmented ? (\n checkboxes.map(({ label, value, prefix, tooltip, tooltipPosition, disabled }) => (\n <div\n key={value}\n className={clsx(styles['checkbox-button-bar__row'], {\n [styles['checkbox-button-bar__row--not-valid']]: notValid || notValidatedText,\n })}\n >\n <ControlsButton\n type={actAsRadioButtonBar ? 'radio' : 'checkbox'}\n label={label}\n prefix={prefix}\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n forceSquared={forceSquared}\n value={value}\n checked={currentValues.includes(value)}\n disabled={disabled || disableGroup}\n onSetValue={(event) => handleChange(event.target.value)}\n />\n </div>\n ))\n ) : (\n <div\n className={clsx(styles['checkbox-button-bar__row'], {\n [styles['checkbox-button-bar__row--not-valid']]: notValid || notValidatedText,\n })}\n >\n {checkboxes.map(({ label, value, prefix, tooltip, tooltipPosition, disabled }) => (\n <ControlsButton\n key={value}\n type={actAsRadioButtonBar ? 'radio' : 'checkbox'}\n label={label}\n prefix={prefix}\n tooltip={tooltip}\n tooltipPosition={tooltipPosition}\n forceSquared={forceSquared}\n value={value}\n checked={currentValues.includes(value)}\n disabled={disabled || disableGroup}\n onSetValue={(event) => handleChange(event.target.value)}\n />\n ))}\n </div>\n )}\n </div>\n\n {footerText && <div className={styles['checkbox-button-bar__sub-text']}>{footerText}</div>}\n {notValidatedText !== '' && <FeedbackBox level=\"error\" feedback={notValidatedText} />}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;GCiDa,KAAqB,EAChC,eACA,kBACA,UACA,cAAW,IACX,mBAAgB,OAChB,cAAW,IACX,cAAW,IACX,sBAAmB,IACnB,yBAAsB,IACtB,gBAAa,IACb,kBAAe,IACf,eAAY,IACZ,kBAAe,IACf,qBAC4B;CAC5B,IAAM,CAAC,GAAe,KAAoB,EACxC,KAAiB,CAAC,IACd,EAAc,IAAI,OAAO,GACzB,KAAiB,IACf,EAAc,MAAM,GAAG,EAAE,GACzB,EAAE,CACT,EAEK,KAAgB,MAAkB;EACtC,IAAI,IAAS;AAEb,EAAI,KACF,EAAiB,CAAC,EAAM,CAAC,EACzB,EAAY,CAAC,EAAM,CAAC,KAEpB,AAGE,IAHE,EAAO,SAAS,EAAM,GACf,EAAO,QAAQ,MAAQ,MAAQ,EAAM,GAErC,CAAC,GAAG,GAAQ,EAAM,EAE7B,EAAiB,EAAO,EACxB,EAAY,EAAO;;AAIvB,QACE,kBAAC,OAAD;EACE,WAAW,EACT,EAAO,mCACP,EAAO,yCAAyC,KACjD;YAJH;IAMI,KAAS,MACT,kBAAC,OAAD,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;IAAO,SAAQ;IAAa;cACzB;IACK,CAAA,EAGT,KAAY,MAAkB,SAC7B,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAmC;IAAe,CAAA,CAEvE,EAAA,CAAA;GAGR,kBAAC,OAAD;IACE,WAAW,EAAK,EAAO,uCAAuC,GAC3D,EAAO,mDAAmD,GAC5D,CAAC;cAED,IACC,EAAW,KAAK,EAAE,UAAO,UAAO,WAAQ,YAAS,oBAAiB,kBAChE,kBAAC,OAAD;KAEE,WAAW,EAAK,EAAO,6BAA6B,GACjD,EAAO,yCAAyC,KAAY,GAC9D,CAAC;eAEF,kBAAC,GAAD;MACE,MAAM,IAAsB,UAAU;MAC/B;MACC;MACC;MACQ;MACH;MACP;MACP,SAAS,EAAc,SAAS,EAAM;MACtC,UAAU,KAAY;MACtB,aAAa,MAAU,EAAa,EAAM,OAAO,MAAM;MACvD,CAAA;KACE,EAjBC,EAiBD,CACN,GAEF,kBAAC,OAAD;KACE,WAAW,EAAK,EAAO,6BAA6B,GACjD,EAAO,yCAAyC,KAAY,GAC9D,CAAC;eAED,EAAW,KAAK,EAAE,UAAO,UAAO,WAAQ,YAAS,oBAAiB,kBACjE,kBAAC,GAAD;MAEE,MAAM,IAAsB,UAAU;MAC/B;MACC;MACC;MACQ;MACH;MACP;MACP,SAAS,EAAc,SAAS,EAAM;MACtC,UAAU,KAAY;MACtB,aAAa,MAAU,EAAa,EAAM,OAAO,MAAM;MACvD,EAXK,EAWL,CACF;KACE,CAAA;IAEJ,CAAA;GAEL,KAAc,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAmC;IAAiB,CAAA;GACzF,MAAqB,MAAM,kBAAC,GAAD;IAAa,OAAM;IAAQ,UAAU;IAAoB,CAAA;GACjF"}
@@ -2,8 +2,7 @@ import { t as e } from "./clsx-BD2qMUU1.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { useId as n } from "react";
4
4
  import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
5
- import './assets/ControlsButton.css';//#region src/components/ControlsButton/ControlsButton.module.css
6
- var o = "_periods__item_t81b2_160", s = {
5
+ import './assets/ControlsButton.css';var o = {
7
6
  "controls-input": "_controls-input_t81b2_1",
8
7
  "controls-button": "_controls-button_t81b2_40",
9
8
  "controls-button--squared": "_controls-button--squared_t81b2_58",
@@ -16,26 +15,26 @@ var o = "_periods__item_t81b2_160", s = {
16
15
  "controls-button__tooltip--center": "_controls-button__tooltip--center_t81b2_110",
17
16
  "controls-button__tooltip--right": "_controls-button__tooltip--right_t81b2_115",
18
17
  "controls-button--checked": "_controls-button--checked_t81b2_160",
19
- periods__item: o
20
- }, c = ({ type: o = "checkbox", label: c, value: l, iconName: u, prefix: d, tooltip: f, tooltipPosition: p = "center", name: m, forceSquared: h = !1, checked: g, disabled: _, onSetValue: v }) => {
18
+ periods__item: "_periods__item_t81b2_160"
19
+ }, s = ({ type: s = "checkbox", label: c, value: l, iconName: u, prefix: d, tooltip: f, tooltipPosition: p = "center", name: m, forceSquared: h = !1, checked: g, disabled: _, onSetValue: v }) => {
21
20
  let y = n(), b = (typeof c == "string" ? c : l).replace(/\s+/g, "_"), x = `${y}${b}`, S = `${x}-tooltip`;
22
21
  return /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i("input", {
23
- type: o,
22
+ type: s,
24
23
  id: x,
25
24
  name: m ?? b,
26
25
  disabled: _,
27
26
  value: l,
28
27
  checked: g,
29
28
  onChange: v,
30
- className: s["controls-input"],
29
+ className: o["controls-input"],
31
30
  "aria-describedby": f ? S : void 0
32
31
  }), /* @__PURE__ */ a("label", {
33
32
  htmlFor: x,
34
- className: e(s["controls-button"], [
35
- h && s["controls-button--squared"],
36
- d && s["controls-button--with-prefix"],
37
- u && s["controls-button--with-icon"],
38
- g && s["controls-button--checked"]
33
+ className: e(o["controls-button"], [
34
+ h && o["controls-button--squared"],
35
+ d && o["controls-button--with-prefix"],
36
+ u && o["controls-button--with-icon"],
37
+ g && o["controls-button--checked"]
39
38
  ]),
40
39
  children: [
41
40
  u && /* @__PURE__ */ i(t, {
@@ -43,22 +42,22 @@ var o = "_periods__item_t81b2_160", s = {
43
42
  size: 20
44
43
  }),
45
44
  /* @__PURE__ */ a("div", {
46
- className: s["controls-button__wrapper"],
45
+ className: o["controls-button__wrapper"],
47
46
  children: [d && /* @__PURE__ */ i("div", {
48
- className: s["controls-button__prefix"],
47
+ className: o["controls-button__prefix"],
49
48
  children: d
50
49
  }), c]
51
50
  }),
52
51
  f && /* @__PURE__ */ i("div", {
53
52
  id: S,
54
53
  role: "tooltip",
55
- className: e(s["controls-button__tooltip"], s[`controls-button__tooltip--${p}`]),
54
+ className: e(o["controls-button__tooltip"], o[`controls-button__tooltip--${p}`]),
56
55
  children: f
57
56
  })
58
57
  ]
59
58
  })] });
60
59
  };
61
60
  //#endregion
62
- export { c as t };
61
+ export { s as t };
63
62
 
64
- //# sourceMappingURL=ControlsButton-zemVxTlg.js.map
63
+ //# sourceMappingURL=ControlsButton-B1XRpMUM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlsButton-zemVxTlg.js","names":[],"sources":["../src/components/ControlsButton/ControlsButton.module.css","../src/components/ControlsButton/ControlsButton.tsx"],"sourcesContent":[".controls-input {\n aspect-ratio: unset;\n cursor: pointer;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n}\n\n.controls-input:focus-visible + label {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.controls-input:checked + label,\n[type=\"radio\"]:checked:hover + label {\n background-color: var(--color-navy-600);\n color: var(--color-uva-white);\n font-weight: var(--semibold);\n}\n\n.controls-input:disabled + label,\n.controls-input:disabled:hover + label {\n background-color: var(--color-grey-400);\n color: var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.controls-input:disabled:checked + label {\n background-color: var(--color-grey-500);\n color: var(--color-grey-900);\n font-weight: var(--semibold);\n}\n\n.controls-input:hover + label {\n background-color: var(--color-grey-300);\n color: var(--color-uva-black);\n}\n\n.controls-button {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid transparent;\n border-radius: 0.25rem;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-flex;\n font-size: var(--font-size-default);\n height: 2.25rem;\n justify-content: center;\n min-width: 2.25rem;\n padding: 0.5rem;\n position: relative;\n user-select: none;\n white-space: nowrap;\n}\n\n.controls-button--squared {\n width: 2.25rem;\n}\n\n.controls-button::after {\n content: \"\";\n min-height: 2.625rem;\n min-width: 2.625rem;\n position: absolute;\n width: 100%;\n}\n\n.controls-button--with-prefix {\n height: auto;\n padding: 0.125rem 0.5rem;\n width: auto;\n}\n\n.controls-button--with-icon {\n gap: 0.5rem;\n}\n\n.controls-button__wrapper {\n align-items: center;\n display: flex;\n flex-direction: column;\n}\n\n.controls-button__prefix {\n color: var(--color-uva-700);\n font-size: var(--font-size-text-non-essential);\n}\n\n.controls-button__tooltip {\n background-color: var(--color-uva-white);\n box-shadow: 0 0 0.25rem 0 rgba(0 0 0 / 25%);\n color: var(--color-grey-700);\n display: none;\n font-size: var(--font-size-text-non-essential);\n font-style: italic;\n font-weight: normal;\n padding: 0.5rem 1rem;\n position: absolute;\n text-align: center;\n top: calc(100% + 0.5rem);\n z-index: 1;\n}\n\n.controls-button__tooltip--left {\n left: 0rem;\n}\n\n.controls-button__tooltip--center {\n left: 50%;\n transform: translateX(-50%);\n}\n\n.controls-button__tooltip--right {\n right: 0rem;\n}\n\n.controls-button__tooltip::before {\n border-color: transparent transparent var(--color-grey-400) transparent;\n border-style: solid;\n border-width: 0.5rem;\n bottom: calc(100% + 0.125rem);\n content: \"\";\n filter: blur(0.125rem);\n position: absolute;\n z-index: -1;\n}\n\n.controls-button__tooltip::after {\n border-color: transparent transparent var(--color-uva-white) transparent;\n border-style: solid;\n border-width: 0.5rem;\n bottom: 100%;\n content: \"\";\n position: absolute;\n}\n\n.controls-button:hover .controls-button__tooltip,\n.controls-input:focus-visible + label .controls-button__tooltip {\n display: block;\n}\n\n.controls-button__tooltip--left::before,\n.controls-button__tooltip--left::after {\n left: 0.5rem;\n}\n\n.controls-button__tooltip--center::before,\n.controls-button__tooltip--center::after {\n left: 50%;\n transform: translateX(-50%);\n}\n\n.controls-button__tooltip--right::before,\n.controls-button__tooltip--right::after {\n right: 0.5rem;\n}\n\n.controls-button--checked span.periods__item,\n.controls-button--checked [data-period-item] {\n border: 1px solid var(--color-uva-white) !important;\n}\n","import { useId } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport type { ChangeEvent, ReactNode } from 'react';\r\nimport type { IconProps } from 'components/Icon';\r\n\r\nimport styles from './ControlsButton.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface ControlsButtonProps {\r\n /** to set type/behaviour of input radio or checkbox */\r\n type?: 'radio' | 'checkbox';\r\n /** button label */\r\n label: string | ReactNode;\r\n /** button value */\r\n value: string;\r\n /** set if icon is needed in font of label */\r\n iconName?: IconProps['name'];\r\n /** set if prefix is needed above of label */\r\n prefix?: string;\r\n /** set tooltip */\r\n tooltip?: ReactNode;\r\n /** set horizontal position of the tooltip */\r\n tooltipPosition?: 'left' | 'center' | 'right';\r\n /** set if used as radiogroup */\r\n name?: string;\r\n /** `true` to set squared button; otherwise, `false`. The default is `false`. Note: hides icon */\r\n forceSquared?: boolean;\r\n /** to set default status */\r\n checked?: boolean;\r\n /** `true` to disable the button; otherwise, `false`. The default is `false`. */\r\n disabled?: boolean;\r\n /** The callback function that is invoked when the radio button changes value. */\r\n onSetValue: (event: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport const ControlsButton = ({\r\n type = 'checkbox',\r\n label,\r\n value,\r\n iconName,\r\n prefix,\r\n tooltip,\r\n tooltipPosition = 'center',\r\n name,\r\n forceSquared = false,\r\n checked,\r\n disabled,\r\n onSetValue,\r\n}: ControlsButtonProps) => {\r\n const idPrefix = useId();\r\n const labelString = typeof label === 'string' ? label : value;\r\n const sanitizedLabel = labelString.replace(/\\s+/g, '_');\r\n const baseId = `${idPrefix}${sanitizedLabel}`;\r\n const tooltipId = `${baseId}-tooltip`;\r\n\r\n return (\r\n <>\r\n <input\r\n type={type}\r\n id={baseId}\r\n name={name ?? sanitizedLabel}\r\n disabled={disabled}\r\n value={value}\r\n checked={checked}\r\n onChange={onSetValue}\r\n className={styles['controls-input']}\r\n aria-describedby={tooltip ? tooltipId : undefined}\r\n />\r\n <label\r\n htmlFor={baseId}\r\n className={clsx(styles['controls-button'], [\r\n forceSquared && styles['controls-button--squared'],\r\n prefix && styles['controls-button--with-prefix'],\r\n iconName && styles['controls-button--with-icon'],\r\n checked && styles['controls-button--checked'],\r\n ])}\r\n >\r\n {iconName && <Icon name={iconName} size={20} />}\r\n <div className={styles['controls-button__wrapper']}>\r\n {prefix && <div className={styles['controls-button__prefix']}>{prefix}</div>}\r\n {label}\r\n </div>\r\n {tooltip && (\r\n <div\r\n id={tooltipId}\r\n role=\"tooltip\"\r\n className={clsx(styles['controls-button__tooltip'], styles[`controls-button__tooltip--${tooltipPosition}`])}\r\n >\r\n {tooltip}\r\n </div>\r\n )}\r\n </label>\r\n </>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;GCqCa,KAAkB,EAC7B,UAAO,YACP,UACA,UACA,aACA,WACA,YACA,qBAAkB,UAClB,SACA,kBAAe,IACf,YACA,aACA,oBACyB;CACzB,IAAM,IAAW,GAAO,EAElB,KADc,OAAO,KAAU,WAAW,IAAQ,GACrB,QAAQ,QAAQ,IAAI,EACjD,IAAS,GAAG,IAAW,KACvB,IAAY,GAAG,EAAO;AAE5B,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,SAAD;EACQ;EACN,IAAI;EACJ,MAAM,KAAQ;EACJ;EACH;EACE;EACT,UAAU;EACV,WAAW,EAAO;EAClB,oBAAkB,IAAU,IAAY,KAAA;EACxC,CAAA,EACF,kBAAC,SAAD;EACE,SAAS;EACT,WAAW,EAAK,EAAO,oBAAoB;GACzC,KAAgB,EAAO;GACvB,KAAU,EAAO;GACjB,KAAY,EAAO;GACnB,KAAW,EAAO;GACnB,CAAC;YAPJ;GASG,KAAY,kBAAC,GAAD;IAAM,MAAM;IAAU,MAAM;IAAM,CAAA;GAC/C,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACG,KAAU,kBAAC,OAAD;KAAK,WAAW,EAAO;eAA6B;KAAa,CAAA,EAC3E,EACG;;GACL,KACC,kBAAC,OAAD;IACE,IAAI;IACJ,MAAK;IACL,WAAW,EAAK,EAAO,6BAA6B,EAAO,6BAA6B,KAAmB;cAE1G;IACG,CAAA;GAEF;IACP,EAAA,CAAA"}
1
+ {"version":3,"file":"ControlsButton-B1XRpMUM.js","names":[],"sources":["../src/components/ControlsButton/ControlsButton.module.css","../src/components/ControlsButton/ControlsButton.tsx"],"sourcesContent":[".controls-input {\n aspect-ratio: unset;\n cursor: pointer;\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n}\n\n.controls-input:focus-visible + label {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.controls-input:checked + label,\n[type=\"radio\"]:checked:hover + label {\n background-color: var(--color-navy-600);\n color: var(--color-uva-white);\n font-weight: var(--semibold);\n}\n\n.controls-input:disabled + label,\n.controls-input:disabled:hover + label {\n background-color: var(--color-grey-400);\n color: var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.controls-input:disabled:checked + label {\n background-color: var(--color-grey-500);\n color: var(--color-grey-900);\n font-weight: var(--semibold);\n}\n\n.controls-input:hover + label {\n background-color: var(--color-grey-300);\n color: var(--color-uva-black);\n}\n\n.controls-button {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid transparent;\n border-radius: 0.25rem;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-flex;\n font-size: var(--font-size-default);\n height: 2.25rem;\n justify-content: center;\n min-width: 2.25rem;\n padding: 0.5rem;\n position: relative;\n user-select: none;\n white-space: nowrap;\n}\n\n.controls-button--squared {\n width: 2.25rem;\n}\n\n.controls-button::after {\n content: \"\";\n min-height: 2.625rem;\n min-width: 2.625rem;\n position: absolute;\n width: 100%;\n}\n\n.controls-button--with-prefix {\n height: auto;\n padding: 0.125rem 0.5rem;\n width: auto;\n}\n\n.controls-button--with-icon {\n gap: 0.5rem;\n}\n\n.controls-button__wrapper {\n align-items: center;\n display: flex;\n flex-direction: column;\n}\n\n.controls-button__prefix {\n color: var(--color-uva-700);\n font-size: var(--font-size-text-non-essential);\n}\n\n.controls-button__tooltip {\n background-color: var(--color-uva-white);\n box-shadow: 0 0 0.25rem 0 rgba(0 0 0 / 25%);\n color: var(--color-grey-700);\n display: none;\n font-size: var(--font-size-text-non-essential);\n font-style: italic;\n font-weight: normal;\n padding: 0.5rem 1rem;\n position: absolute;\n text-align: center;\n top: calc(100% + 0.5rem);\n z-index: 1;\n}\n\n.controls-button__tooltip--left {\n left: 0rem;\n}\n\n.controls-button__tooltip--center {\n left: 50%;\n transform: translateX(-50%);\n}\n\n.controls-button__tooltip--right {\n right: 0rem;\n}\n\n.controls-button__tooltip::before {\n border-color: transparent transparent var(--color-grey-400) transparent;\n border-style: solid;\n border-width: 0.5rem;\n bottom: calc(100% + 0.125rem);\n content: \"\";\n filter: blur(0.125rem);\n position: absolute;\n z-index: -1;\n}\n\n.controls-button__tooltip::after {\n border-color: transparent transparent var(--color-uva-white) transparent;\n border-style: solid;\n border-width: 0.5rem;\n bottom: 100%;\n content: \"\";\n position: absolute;\n}\n\n.controls-button:hover .controls-button__tooltip,\n.controls-input:focus-visible + label .controls-button__tooltip {\n display: block;\n}\n\n.controls-button__tooltip--left::before,\n.controls-button__tooltip--left::after {\n left: 0.5rem;\n}\n\n.controls-button__tooltip--center::before,\n.controls-button__tooltip--center::after {\n left: 50%;\n transform: translateX(-50%);\n}\n\n.controls-button__tooltip--right::before,\n.controls-button__tooltip--right::after {\n right: 0.5rem;\n}\n\n.controls-button--checked span.periods__item,\n.controls-button--checked [data-period-item] {\n border: 1px solid var(--color-uva-white) !important;\n}\n","import { useId } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport type { ChangeEvent, ReactNode } from 'react';\r\nimport type { IconProps } from 'components/Icon';\r\n\r\nimport styles from './ControlsButton.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface ControlsButtonProps {\r\n /** to set type/behaviour of input radio or checkbox */\r\n type?: 'radio' | 'checkbox';\r\n /** button label */\r\n label: string | ReactNode;\r\n /** button value */\r\n value: string;\r\n /** set if icon is needed in font of label */\r\n iconName?: IconProps['name'];\r\n /** set if prefix is needed above of label */\r\n prefix?: string;\r\n /** set tooltip */\r\n tooltip?: ReactNode;\r\n /** set horizontal position of the tooltip */\r\n tooltipPosition?: 'left' | 'center' | 'right';\r\n /** set if used as radiogroup */\r\n name?: string;\r\n /** `true` to set squared button; otherwise, `false`. The default is `false`. Note: hides icon */\r\n forceSquared?: boolean;\r\n /** to set default status */\r\n checked?: boolean;\r\n /** `true` to disable the button; otherwise, `false`. The default is `false`. */\r\n disabled?: boolean;\r\n /** The callback function that is invoked when the radio button changes value. */\r\n onSetValue: (event: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport const ControlsButton = ({\r\n type = 'checkbox',\r\n label,\r\n value,\r\n iconName,\r\n prefix,\r\n tooltip,\r\n tooltipPosition = 'center',\r\n name,\r\n forceSquared = false,\r\n checked,\r\n disabled,\r\n onSetValue,\r\n}: ControlsButtonProps) => {\r\n const idPrefix = useId();\r\n const labelString = typeof label === 'string' ? label : value;\r\n const sanitizedLabel = labelString.replace(/\\s+/g, '_');\r\n const baseId = `${idPrefix}${sanitizedLabel}`;\r\n const tooltipId = `${baseId}-tooltip`;\r\n\r\n return (\r\n <>\r\n <input\r\n type={type}\r\n id={baseId}\r\n name={name ?? sanitizedLabel}\r\n disabled={disabled}\r\n value={value}\r\n checked={checked}\r\n onChange={onSetValue}\r\n className={styles['controls-input']}\r\n aria-describedby={tooltip ? tooltipId : undefined}\r\n />\r\n <label\r\n htmlFor={baseId}\r\n className={clsx(styles['controls-button'], [\r\n forceSquared && styles['controls-button--squared'],\r\n prefix && styles['controls-button--with-prefix'],\r\n iconName && styles['controls-button--with-icon'],\r\n checked && styles['controls-button--checked'],\r\n ])}\r\n >\r\n {iconName && <Icon name={iconName} size={20} />}\r\n <div className={styles['controls-button__wrapper']}>\r\n {prefix && <div className={styles['controls-button__prefix']}>{prefix}</div>}\r\n {label}\r\n </div>\r\n {tooltip && (\r\n <div\r\n id={tooltipId}\r\n role=\"tooltip\"\r\n className={clsx(styles['controls-button__tooltip'], styles[`controls-button__tooltip--${tooltipPosition}`])}\r\n >\r\n {tooltip}\r\n </div>\r\n )}\r\n </label>\r\n </>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;;GCqCa,KAAkB,EAC7B,UAAO,YACP,UACA,UACA,aACA,WACA,YACA,qBAAkB,UAClB,SACA,kBAAe,IACf,YACA,aACA,oBACyB;CACzB,IAAM,IAAW,GAAO,EAElB,KADc,OAAO,KAAU,WAAW,IAAQ,GACrB,QAAQ,QAAQ,IAAI,EACjD,IAAS,GAAG,IAAW,KACvB,IAAY,GAAG,EAAO;AAE5B,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,SAAD;EACQ;EACN,IAAI;EACJ,MAAM,KAAQ;EACJ;EACH;EACE;EACT,UAAU;EACV,WAAW,EAAO;EAClB,oBAAkB,IAAU,IAAY,KAAA;EACxC,CAAA,EACF,kBAAC,SAAD;EACE,SAAS;EACT,WAAW,EAAK,EAAO,oBAAoB;GACzC,KAAgB,EAAO;GACvB,KAAU,EAAO;GACjB,KAAY,EAAO;GACnB,KAAW,EAAO;GACnB,CAAC;YAPJ;GASG,KAAY,kBAAC,GAAD;IAAM,MAAM;IAAU,MAAM;IAAM,CAAA;GAC/C,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACG,KAAU,kBAAC,OAAD;KAAK,WAAW,EAAO;eAA6B;KAAa,CAAA,EAC3E,EACG;;GACL,KACC,kBAAC,OAAD;IACE,IAAI;IACJ,MAAK;IACL,WAAW,EAAK,EAAO,6BAA6B,EAAO,6BAA6B,KAAmB;cAE1G;IACG,CAAA;GAEF;IACP,EAAA,CAAA"}
@@ -6,32 +6,31 @@ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
6
  import { useDialog as c } from "@react-aria/dialog";
7
7
  import { FocusScope as l } from "@react-aria/focus";
8
8
  import { OverlayContainer as u, useModal as d, useOverlay as f, usePreventScroll as p } from "@react-aria/overlays";
9
- import './assets/Drawer.css';//#region src/components/Drawer/Drawer.module.css
10
- var m = "_drawer_1g9hi_1", h = "_drawer__content_1g9hi_22", g = "_drawer__header_1g9hi_32", _ = "_drawer__footer_1g9hi_39", v = "_drawer__heading_1g9hi_26", y = "_drawer__buttons_1g9hi_64", b = {
11
- drawer: m,
12
- drawer__content: h,
13
- drawer__header: g,
14
- drawer__footer: _,
15
- drawer__heading: v,
9
+ import './assets/Drawer.css';var m = {
10
+ drawer: "_drawer_1g9hi_1",
11
+ drawer__content: "_drawer__content_1g9hi_22",
12
+ drawer__header: "_drawer__header_1g9hi_32",
13
+ drawer__footer: "_drawer__footer_1g9hi_39",
14
+ drawer__heading: "_drawer__heading_1g9hi_26",
16
15
  "drawer--open": "_drawer--open_1g9hi_59",
17
- drawer__buttons: y
18
- }, x = 200;
19
- function S({ buttons: m, children: h, isOpen: g, onClose: _, title: v, closeButtonAriaValueText: y = "Close", ...S }) {
20
- let [C, w] = a(b.drawer), { modalProps: T } = d({ isDisabled: !g }), E = i(null);
16
+ drawer__buttons: "_drawer__buttons_1g9hi_64"
17
+ }, h = 200;
18
+ function g({ buttons: g, children: _, isOpen: v, onClose: y, title: b, closeButtonAriaValueText: x = "Close", ...S }) {
19
+ let [C, w] = a(m.drawer), { modalProps: T } = d({ isDisabled: !v }), E = i(null);
21
20
  function D() {
22
- w(b.drawer), globalThis.setTimeout(() => {
23
- _();
24
- }, x);
21
+ w(m.drawer), globalThis.setTimeout(() => {
22
+ y();
23
+ }, h);
25
24
  }
26
25
  let { overlayProps: O, underlayProps: k } = f({
27
26
  isDismissable: !0,
28
27
  isKeyboardDismissDisabled: !1,
29
- isOpen: g,
28
+ isOpen: v,
30
29
  onClose: D
31
30
  }, E), { dialogProps: A, titleProps: j } = c({}, E);
32
- return p({ isDisabled: !g }), r(() => {
33
- w(e(b.drawer, { [b["drawer--open"]]: g }));
34
- }, [g]), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(t, {
31
+ return p({ isDisabled: !v }), r(() => {
32
+ w(e(m.drawer, { [m["drawer--open"]]: v }));
33
+ }, [v]), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(t, {
35
34
  ...k,
36
35
  children: /* @__PURE__ */ o(l, {
37
36
  contain: !0,
@@ -45,25 +44,25 @@ function S({ buttons: m, children: h, isOpen: g, onClose: _, title: v, closeButt
45
44
  ref: E,
46
45
  children: [
47
46
  /* @__PURE__ */ s("header", {
48
- className: b.drawer__header,
47
+ className: m.drawer__header,
49
48
  children: [/* @__PURE__ */ o("h1", {
50
- className: b.drawer__heading,
49
+ className: m.drawer__heading,
51
50
  ...j,
52
- children: v
51
+ children: b
53
52
  }), /* @__PURE__ */ o(n, {
54
- "aria-label": y,
53
+ "aria-label": x,
55
54
  onClick: D
56
55
  })]
57
56
  }),
58
57
  /* @__PURE__ */ o("div", {
59
- className: b.drawer__content,
60
- children: h
58
+ className: m.drawer__content,
59
+ children: _
61
60
  }),
62
- m && /* @__PURE__ */ o("footer", {
63
- className: b.drawer__footer,
61
+ g && /* @__PURE__ */ o("footer", {
62
+ className: m.drawer__footer,
64
63
  children: /* @__PURE__ */ o("div", {
65
- className: b.drawer__buttons,
66
- children: m
64
+ className: m.drawer__buttons,
65
+ children: g
67
66
  })
68
67
  })
69
68
  ]
@@ -72,6 +71,6 @@ function S({ buttons: m, children: h, isOpen: g, onClose: _, title: v, closeButt
72
71
  }) });
73
72
  }
74
73
  //#endregion
75
- export { S as t };
74
+ export { g as t };
76
75
 
77
- //# sourceMappingURL=Drawer-Ggofac6y.js.map
76
+ //# sourceMappingURL=Drawer-e7UFHVg9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer-Ggofac6y.js","names":[],"sources":["../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.tsx"],"sourcesContent":[".drawer {\n background-color: var(--color-uva-white);\n bottom: 0;\n box-shadow: 0 0 0.75rem 0.25rem rgb(0 0 0 / 10%);\n display: flex;\n flex-direction: column;\n left: 10vw;\n max-width: 90vw;\n min-width: 25rem;\n padding: 2.5rem 2rem;\n position: fixed;\n right: 0;\n top: 0;\n transform: translateX(100%);\n transform-origin: right;\n transition-duration: 200ms;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: 100%;\n}\n\n.drawer__content {\n /**\n * Drawer content height cannot exceed the available height, dictated by its parent.\n * Subtracting top and bottom padding from .drawer as well as the height and bottom margin of\n * .drawer__heading from the parent's height gives us the maximum height the content should be.\n */\n max-height: calc(100vh - 7rem);\n overflow-y: auto;\n}\n\n.drawer__header {\n display: flex;\n gap: 2rem;\n justify-content: space-between;\n position: relative;\n}\n\n.drawer__footer {\n gap: 2rem;\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.drawer__heading {\n font-size: var(--font-size-s);\n line-height: var(--line-height-s);\n margin: 0.25rem 0 0.5rem;\n padding-right: 2rem;\n}\n\n@media only screen and (min-width: 40rem) {\n .drawer {\n left: auto;\n max-width: 37.5rem;\n }\n}\n\n.drawer--open {\n transform: translateX(0);\n transition-duration: 250ms;\n}\n\n.drawer__buttons {\n display: flex;\n flex-flow: row wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n margin: 2.5rem 0 0;\n}\n","import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Drawer.module.css';\n\nimport { Backdrop } from 'components/Backdrop/Backdrop';\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'> {\n /** The buttons to render in the drawer. */\n buttons?: ReactNode;\n /** true if the drawer should be open; otherwise, false. The default is false. */\n isOpen?: boolean;\n /** The callback method that is invoked when the drawer is closed. */\n onClose: () => void;\n /** The title of the drawer. */\n title: string;\n /** The aria-label of the close button. */\n closeButtonAriaValueText?: string;\n}\n\nconst closingDelay = 200;\n\n/** Represents a Drawer component. */\nexport function Drawer({\n buttons,\n children,\n isOpen,\n onClose,\n title,\n closeButtonAriaValueText = 'Close',\n ...restProps\n}: PropsWithChildren<DrawerProps>) {\n const [containerClassNames, setContainerClassNames] = useState(styles.drawer);\n // Hide content outside the modal from screen readers.\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const contentRef = useRef<HTMLDivElement>(null);\n\n function onCloseDrawer() {\n setContainerClassNames(styles.drawer);\n\n globalThis.setTimeout(() => {\n onClose();\n }, closingDelay);\n }\n\n // Handle interacting outside the dialog and pressing\n // the Escape key to close the modal.\n const { overlayProps, underlayProps } = useOverlay(\n { isDismissable: true, isKeyboardDismissDisabled: false, isOpen, onClose: onCloseDrawer },\n contentRef\n );\n\n // Get props for the dialog and its title\n const { dialogProps, titleProps } = useDialog({}, contentRef);\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n // setting class name after render so that element can slide in after it is mounted and slide out\n // before it is unmounted\n setContainerClassNames(clsx(styles.drawer, { [styles['drawer--open']]: isOpen }));\n }, [isOpen]);\n\n return (\n <OverlayContainer>\n <Backdrop {...underlayProps}>\n <FocusScope contain restoreFocus>\n <aside\n {...modalProps}\n {...overlayProps}\n {...dialogProps}\n {...restProps}\n className={containerClassNames}\n ref={contentRef}\n >\n <header className={styles.drawer__header}>\n <h1 className={styles.drawer__heading} {...titleProps}>\n {title}\n </h1>\n\n <OverlayCloseButton aria-label={closeButtonAriaValueText} onClick={onCloseDrawer} />\n </header>\n\n <div className={styles.drawer__content}>{children}</div>\n\n {buttons && (\n <footer className={styles.drawer__footer}>\n <div className={styles.drawer__buttons}>{buttons}</div>\n </footer>\n )}\n </aside>\n </FocusScope>\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;GC0BM,IAAe;AAGrB,SAAgB,EAAO,EACrB,YACA,aACA,WACA,YACA,UACA,8BAA2B,SAC3B,GAAG,KAC8B;CACjC,IAAM,CAAC,GAAqB,KAA0B,EAAS,EAAO,OAAO,EAEvE,EAAE,kBAAe,EAAS,EAAE,YAAY,CAAC,GAAQ,CAAC,EAClD,IAAa,EAAuB,KAAK;CAE/C,SAAS,IAAgB;AAGvB,EAFA,EAAuB,EAAO,OAAO,EAErC,WAAW,iBAAiB;AAC1B,MAAS;KACR,EAAa;;CAKlB,IAAM,EAAE,iBAAc,qBAAkB,EACtC;EAAE,eAAe;EAAM,2BAA2B;EAAO;EAAQ,SAAS;EAAe,EACzF,EACD,EAGK,EAAE,gBAAa,kBAAe,EAAU,EAAE,EAAE,EAAW;AAU7D,QARA,EAAiB,EAAE,YAAY,CAAC,GAAQ,CAAC,EAEzC,QAAgB;AAGd,IAAuB,EAAK,EAAO,QAAQ,GAAG,EAAO,kBAAkB,GAAQ,CAAC,CAAC;IAChF,CAAC,EAAO,CAAC,EAGV,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,GAAI;YACZ,kBAAC,GAAD;GAAY,SAAA;GAAQ,cAAA;aAClB,kBAAC,SAAD;IACE,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,WAAW;IACX,KAAK;cANP;KAQE,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBAA1B,CACE,kBAAC,MAAD;OAAI,WAAW,EAAO;OAAiB,GAAI;iBACxC;OACE,CAAA,EAEL,kBAAC,GAAD;OAAoB,cAAY;OAA0B,SAAS;OAAiB,CAAA,CAC7E;;KAET,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAkB;MAAe,CAAA;KAEvD,KACC,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBACxB,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAkB;OAAc,CAAA;MAChD,CAAA;KAEL;;GACG,CAAA;EACJ,CAAA,EACM,CAAA"}
1
+ {"version":3,"file":"Drawer-e7UFHVg9.js","names":[],"sources":["../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.tsx"],"sourcesContent":[".drawer {\n background-color: var(--color-uva-white);\n bottom: 0;\n box-shadow: 0 0 0.75rem 0.25rem rgb(0 0 0 / 10%);\n display: flex;\n flex-direction: column;\n left: 10vw;\n max-width: 90vw;\n min-width: 25rem;\n padding: 2.5rem 2rem;\n position: fixed;\n right: 0;\n top: 0;\n transform: translateX(100%);\n transform-origin: right;\n transition-duration: 200ms;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: 100%;\n}\n\n.drawer__content {\n /**\n * Drawer content height cannot exceed the available height, dictated by its parent.\n * Subtracting top and bottom padding from .drawer as well as the height and bottom margin of\n * .drawer__heading from the parent's height gives us the maximum height the content should be.\n */\n max-height: calc(100vh - 7rem);\n overflow-y: auto;\n}\n\n.drawer__header {\n display: flex;\n gap: 2rem;\n justify-content: space-between;\n position: relative;\n}\n\n.drawer__footer {\n gap: 2rem;\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.drawer__heading {\n font-size: var(--font-size-s);\n line-height: var(--line-height-s);\n margin: 0.25rem 0 0.5rem;\n padding-right: 2rem;\n}\n\n@media only screen and (min-width: 40rem) {\n .drawer {\n left: auto;\n max-width: 37.5rem;\n }\n}\n\n.drawer--open {\n transform: translateX(0);\n transition-duration: 250ms;\n}\n\n.drawer__buttons {\n display: flex;\n flex-flow: row wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n margin: 2.5rem 0 0;\n}\n","import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Drawer.module.css';\n\nimport { Backdrop } from 'components/Backdrop/Backdrop';\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'> {\n /** The buttons to render in the drawer. */\n buttons?: ReactNode;\n /** true if the drawer should be open; otherwise, false. The default is false. */\n isOpen?: boolean;\n /** The callback method that is invoked when the drawer is closed. */\n onClose: () => void;\n /** The title of the drawer. */\n title: string;\n /** The aria-label of the close button. */\n closeButtonAriaValueText?: string;\n}\n\nconst closingDelay = 200;\n\n/** Represents a Drawer component. */\nexport function Drawer({\n buttons,\n children,\n isOpen,\n onClose,\n title,\n closeButtonAriaValueText = 'Close',\n ...restProps\n}: PropsWithChildren<DrawerProps>) {\n const [containerClassNames, setContainerClassNames] = useState(styles.drawer);\n // Hide content outside the modal from screen readers.\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const contentRef = useRef<HTMLDivElement>(null);\n\n function onCloseDrawer() {\n setContainerClassNames(styles.drawer);\n\n globalThis.setTimeout(() => {\n onClose();\n }, closingDelay);\n }\n\n // Handle interacting outside the dialog and pressing\n // the Escape key to close the modal.\n const { overlayProps, underlayProps } = useOverlay(\n { isDismissable: true, isKeyboardDismissDisabled: false, isOpen, onClose: onCloseDrawer },\n contentRef\n );\n\n // Get props for the dialog and its title\n const { dialogProps, titleProps } = useDialog({}, contentRef);\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n // setting class name after render so that element can slide in after it is mounted and slide out\n // before it is unmounted\n setContainerClassNames(clsx(styles.drawer, { [styles['drawer--open']]: isOpen }));\n }, [isOpen]);\n\n return (\n <OverlayContainer>\n <Backdrop {...underlayProps}>\n <FocusScope contain restoreFocus>\n <aside\n {...modalProps}\n {...overlayProps}\n {...dialogProps}\n {...restProps}\n className={containerClassNames}\n ref={contentRef}\n >\n <header className={styles.drawer__header}>\n <h1 className={styles.drawer__heading} {...titleProps}>\n {title}\n </h1>\n\n <OverlayCloseButton aria-label={closeButtonAriaValueText} onClick={onCloseDrawer} />\n </header>\n\n <div className={styles.drawer__content}>{children}</div>\n\n {buttons && (\n <footer className={styles.drawer__footer}>\n <div className={styles.drawer__buttons}>{buttons}</div>\n </footer>\n )}\n </aside>\n </FocusScope>\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;GC0BM,IAAe;AAGrB,SAAgB,EAAO,EACrB,YACA,aACA,WACA,YACA,UACA,8BAA2B,SAC3B,GAAG,KAC8B;CACjC,IAAM,CAAC,GAAqB,KAA0B,EAAS,EAAO,OAAO,EAEvE,EAAE,kBAAe,EAAS,EAAE,YAAY,CAAC,GAAQ,CAAC,EAClD,IAAa,EAAuB,KAAK;CAE/C,SAAS,IAAgB;AAGvB,EAFA,EAAuB,EAAO,OAAO,EAErC,WAAW,iBAAiB;AAC1B,MAAS;KACR,EAAa;;CAKlB,IAAM,EAAE,iBAAc,qBAAkB,EACtC;EAAE,eAAe;EAAM,2BAA2B;EAAO;EAAQ,SAAS;EAAe,EACzF,EACD,EAGK,EAAE,gBAAa,kBAAe,EAAU,EAAE,EAAE,EAAW;AAU7D,QARA,EAAiB,EAAE,YAAY,CAAC,GAAQ,CAAC,EAEzC,QAAgB;AAGd,IAAuB,EAAK,EAAO,QAAQ,GAAG,EAAO,kBAAkB,GAAQ,CAAC,CAAC;IAChF,CAAC,EAAO,CAAC,EAGV,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,GAAI;YACZ,kBAAC,GAAD;GAAY,SAAA;GAAQ,cAAA;aAClB,kBAAC,SAAD;IACE,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,WAAW;IACX,KAAK;cANP;KAQE,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBAA1B,CACE,kBAAC,MAAD;OAAI,WAAW,EAAO;OAAiB,GAAI;iBACxC;OACE,CAAA,EAEL,kBAAC,GAAD;OAAoB,cAAY;OAA0B,SAAS;OAAiB,CAAA,CAC7E;;KAET,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAkB;MAAe,CAAA;KAEvD,KACC,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBACxB,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAkB;OAAc,CAAA;MAChD,CAAA;KAEL;;GACG,CAAA;EACJ,CAAA,EACM,CAAA"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./Spinner-D8tWqg9j.js";
1
+ import { t as e } from "./Spinner-BpElTDIu.js";
2
2
  import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
3
3
  import './assets/FieldHint.css';//#region src/components/FieldHint/FieldHint.module.css
4
4
  var i = { "field-hint": "_field-hint_f5ej1_1" };
@@ -13,4 +13,4 @@ function a({ value: a, spinnerAriaValueText: o, loading: s }) {
13
13
  //#endregion
14
14
  export { a as t };
15
15
 
16
- //# sourceMappingURL=FieldHint-D0HtbTnt.js.map
16
+ //# sourceMappingURL=FieldHint-fxnEOsVZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldHint-D0HtbTnt.js","names":[],"sources":["../src/components/FieldHint/FieldHint.module.css","../src/components/FieldHint/FieldHint.tsx"],"sourcesContent":[".field-hint {\n font-size: 0.875rem;\n}\n","import styles from './FieldHint.module.css';\n\nimport { Spinner } from 'components/Spinner/Spinner';\n\nexport interface FieldHintProps {\n /** The value to display. */\n value?: string;\n /** The aria-valuetext value of the spinner component. */\n spinnerAriaValueText: string;\n /** true if the field hint is loading; otherwise, false. The default is false. */\n loading?: boolean;\n}\n\n/** Represents a component to show a hint for an input element. */\nexport function FieldHint({ value, spinnerAriaValueText, loading }: FieldHintProps) {\n return (\n <span className={styles['field-hint']}>\n {value && <>{value}</>}\n {!value && loading && <Spinner ariaValueText={spinnerAriaValueText} />}\n </span>\n );\n}\n"],"mappings":";;;;;;ACcA,SAAgB,EAAU,EAAE,UAAO,yBAAsB,cAA2B;AAClF,QACE,kBAAC,QAAD;EAAM,WAAW,EAAO;YAAxB,CACG,KAAS,kBAAA,GAAA,EAAA,UAAG,GAAS,CAAA,EACrB,CAAC,KAAS,KAAW,kBAAC,GAAD,EAAS,eAAe,GAAwB,CAAA,CACjE"}
1
+ {"version":3,"file":"FieldHint-fxnEOsVZ.js","names":[],"sources":["../src/components/FieldHint/FieldHint.module.css","../src/components/FieldHint/FieldHint.tsx"],"sourcesContent":[".field-hint {\n font-size: 0.875rem;\n}\n","import styles from './FieldHint.module.css';\n\nimport { Spinner } from 'components/Spinner/Spinner';\n\nexport interface FieldHintProps {\n /** The value to display. */\n value?: string;\n /** The aria-valuetext value of the spinner component. */\n spinnerAriaValueText: string;\n /** true if the field hint is loading; otherwise, false. The default is false. */\n loading?: boolean;\n}\n\n/** Represents a component to show a hint for an input element. */\nexport function FieldHint({ value, spinnerAriaValueText, loading }: FieldHintProps) {\n return (\n <span className={styles['field-hint']}>\n {value && <>{value}</>}\n {!value && loading && <Spinner ariaValueText={spinnerAriaValueText} />}\n </span>\n );\n}\n"],"mappings":";;;;;;ACcA,SAAgB,EAAU,EAAE,UAAO,yBAAsB,cAA2B;AAClF,QACE,kBAAC,QAAD;EAAM,WAAW,EAAO;YAAxB,CACG,KAAS,kBAAA,GAAA,EAAA,UAAG,GAAS,CAAA,EACrB,CAAC,KAAS,KAAW,kBAAC,GAAD,EAAS,eAAe,GAAwB,CAAA,CACjE"}