@onewelcome/react-lib-components 10.0.0 → 10.0.2

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 (196) hide show
  1. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs.js +2 -2
  2. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.es.js +5 -5
  3. package/dist/components/Button/BaseButton.module.scss.cjs.js +2 -2
  4. package/dist/components/Button/BaseButton.module.scss.es.js +4 -4
  5. package/dist/components/Button/Button.module.scss.cjs.js +2 -2
  6. package/dist/components/Button/Button.module.scss.es.js +17 -17
  7. package/dist/components/Button/IconButton.module.scss.cjs.js +2 -2
  8. package/dist/components/Button/IconButton.module.scss.es.js +18 -18
  9. package/dist/components/ContextMenu/ContextMenu.module.scss.cjs.js +2 -2
  10. package/dist/components/ContextMenu/ContextMenu.module.scss.es.js +5 -5
  11. package/dist/components/ContextMenu/ContextMenuItem.module.scss.cjs.js +2 -2
  12. package/dist/components/ContextMenu/ContextMenuItem.module.scss.es.js +3 -3
  13. package/dist/components/DataGrid/DataGrid.module.scss.cjs.js +2 -2
  14. package/dist/components/DataGrid/DataGrid.module.scss.es.js +6 -6
  15. package/dist/components/DataGrid/DataGridActions/DataGridActions.module.scss.cjs.js +2 -2
  16. package/dist/components/DataGrid/DataGridActions/DataGridActions.module.scss.es.js +6 -6
  17. package/dist/components/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.cjs.js +2 -2
  18. package/dist/components/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.es.js +7 -7
  19. package/dist/components/DataGrid/DataGridBody/DataGridBody.module.scss.cjs.js +2 -2
  20. package/dist/components/DataGrid/DataGridBody/DataGridBody.module.scss.es.js +2 -2
  21. package/dist/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.cjs.js +2 -2
  22. package/dist/components/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.es.js +5 -5
  23. package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.cjs.js +2 -2
  24. package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.es.js +4 -4
  25. package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.cjs.js +2 -2
  26. package/dist/components/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.es.js +5 -5
  27. package/dist/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.cjs.js +2 -2
  28. package/dist/components/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.es.js +24 -24
  29. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.cjs.js +1 -1
  30. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.cjs.js.map +1 -1
  31. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.es.js +0 -8
  32. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.es.js.map +1 -1
  33. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.module.scss.cjs.js +2 -2
  34. package/dist/components/DataGrid/DataGridFilters/DataGridFilter.module.scss.es.js +9 -9
  35. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.cjs.js +1 -1
  36. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.cjs.js.map +1 -1
  37. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.es.js +4 -1
  38. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.es.js.map +1 -1
  39. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.module.scss.cjs.js +2 -2
  40. package/dist/components/DataGrid/DataGridFilters/DataGridToolbar.module.scss.es.js +8 -8
  41. package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js +2 -2
  42. package/dist/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.es.js +17 -17
  43. package/dist/components/DataGrid/DataGridHeader/DataGridHeader.module.scss.cjs.js +2 -2
  44. package/dist/components/DataGrid/DataGridHeader/DataGridHeader.module.scss.es.js +3 -3
  45. package/dist/components/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.cjs.js +2 -2
  46. package/dist/components/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.es.js +7 -7
  47. package/dist/components/DatePicker/DatePicker.module.scss.cjs.js +2 -2
  48. package/dist/components/DatePicker/DatePicker.module.scss.es.js +31 -31
  49. package/dist/components/Form/Checkbox/Checkbox.module.scss.cjs.js +2 -2
  50. package/dist/components/Form/Checkbox/Checkbox.module.scss.es.js +13 -13
  51. package/dist/components/Form/Fieldset/Fieldset.module.scss.cjs.js +2 -2
  52. package/dist/components/Form/Fieldset/Fieldset.module.scss.es.js +5 -5
  53. package/dist/components/Form/FileUpload/FileItem/FileItem.module.scss.cjs.js +2 -2
  54. package/dist/components/Form/FileUpload/FileItem/FileItem.module.scss.es.js +18 -18
  55. package/dist/components/Form/FileUpload/FileUpload.module.scss.cjs.js +2 -2
  56. package/dist/components/Form/FileUpload/FileUpload.module.scss.es.js +16 -16
  57. package/dist/components/Form/Form.module.scss.cjs.js +2 -2
  58. package/dist/components/Form/Form.module.scss.es.js +2 -2
  59. package/dist/components/Form/FormControl/FormControl.module.scss.cjs.js +2 -2
  60. package/dist/components/Form/FormControl/FormControl.module.scss.es.js +13 -13
  61. package/dist/components/Form/FormErrorText/FormErrorText.module.scss.cjs.js +2 -2
  62. package/dist/components/Form/FormErrorText/FormErrorText.module.scss.es.js +5 -5
  63. package/dist/components/Form/FormGroup/FormGroup.module.scss.cjs.js +2 -2
  64. package/dist/components/Form/FormGroup/FormGroup.module.scss.es.js +3 -3
  65. package/dist/components/Form/FormHelperText/FormHelperText.module.scss.cjs.js +2 -2
  66. package/dist/components/Form/FormHelperText/FormHelperText.module.scss.es.js +4 -4
  67. package/dist/components/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.cjs.js +2 -2
  68. package/dist/components/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.es.js +6 -6
  69. package/dist/components/Form/Input/Input.module.scss.cjs.js +2 -2
  70. package/dist/components/Form/Input/Input.module.scss.es.js +9 -9
  71. package/dist/components/Form/Label/Label.module.scss.cjs.js +2 -2
  72. package/dist/components/Form/Label/Label.module.scss.es.js +2 -2
  73. package/dist/components/Form/Radio/Radio.module.scss.cjs.js +2 -2
  74. package/dist/components/Form/Radio/Radio.module.scss.es.js +11 -11
  75. package/dist/components/Form/Select/MultiSelect/MultiSelect.cjs.js +1 -1
  76. package/dist/components/Form/Select/MultiSelect/MultiSelect.cjs.js.map +1 -1
  77. package/dist/components/Form/Select/MultiSelect/MultiSelect.es.js +64 -7
  78. package/dist/components/Form/Select/MultiSelect/MultiSelect.es.js.map +1 -1
  79. package/dist/components/Form/Select/MultiSelect/MultiSelect.module.scss.cjs.js +2 -2
  80. package/dist/components/Form/Select/MultiSelect/MultiSelect.module.scss.es.js +15 -15
  81. package/dist/components/Form/Select/MultiSelect/SelectButton.module.scss.cjs.js +2 -2
  82. package/dist/components/Form/Select/MultiSelect/SelectButton.module.scss.es.js +2 -2
  83. package/dist/components/Form/Select/MultiSelect/SelectedOptions.module.scss.cjs.js +2 -2
  84. package/dist/components/Form/Select/MultiSelect/SelectedOptions.module.scss.es.js +4 -4
  85. package/dist/components/Form/Select/Select.interfaces.cjs.js.map +1 -1
  86. package/dist/components/Form/Select/Select.interfaces.es.js.map +1 -1
  87. package/dist/components/Form/Select/SingleSelect/Select.module.scss.cjs.js +2 -2
  88. package/dist/components/Form/Select/SingleSelect/Select.module.scss.es.js +17 -17
  89. package/dist/components/Form/Select/useAddNewBtn.module.scss.cjs.js +2 -2
  90. package/dist/components/Form/Select/useAddNewBtn.module.scss.es.js +4 -4
  91. package/dist/components/Form/Textarea/Textarea.module.scss.cjs.js +2 -2
  92. package/dist/components/Form/Textarea/Textarea.module.scss.es.js +6 -6
  93. package/dist/components/Form/Toggle/Toggle.module.scss.cjs.js +2 -2
  94. package/dist/components/Form/Toggle/Toggle.module.scss.es.js +18 -18
  95. package/dist/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.cjs.js +2 -2
  96. package/dist/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.es.js +3 -3
  97. package/dist/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss.cjs.js +2 -2
  98. package/dist/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss.es.js +4 -4
  99. package/dist/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.cjs.js +2 -2
  100. package/dist/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.es.js +3 -3
  101. package/dist/components/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.cjs.js +2 -2
  102. package/dist/components/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.es.js +3 -3
  103. package/dist/components/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.cjs.js +2 -2
  104. package/dist/components/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.es.js +3 -3
  105. package/dist/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.cjs.js +2 -2
  106. package/dist/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.es.js +8 -8
  107. package/dist/components/Form/Wrapper/Wrapper/Wrapper.module.scss.cjs.js +2 -2
  108. package/dist/components/Form/Wrapper/Wrapper/Wrapper.module.scss.es.js +6 -6
  109. package/dist/components/Icon/Icon.module.scss.cjs.js +2 -2
  110. package/dist/components/Icon/Icon.module.scss.es.js +104 -104
  111. package/dist/components/Layout/Card/Card.module.scss.cjs.js +2 -2
  112. package/dist/components/Layout/Card/Card.module.scss.es.js +12 -12
  113. package/dist/components/Layout/ContentHeader/ContentHeader.module.scss.cjs.js +2 -2
  114. package/dist/components/Layout/ContentHeader/ContentHeader.module.scss.es.js +12 -12
  115. package/dist/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.cjs.js +2 -2
  116. package/dist/components/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.es.js +4 -4
  117. package/dist/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.cjs.js +2 -2
  118. package/dist/components/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.es.js +2 -2
  119. package/dist/components/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.cjs.js +2 -2
  120. package/dist/components/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.es.js +3 -3
  121. package/dist/components/Link/Link.module.scss.cjs.js +2 -2
  122. package/dist/components/Link/Link.module.scss.es.js +16 -16
  123. package/dist/components/Notifications/Alert/AlertContainer/AlertContainer.module.scss.cjs.js +2 -2
  124. package/dist/components/Notifications/Alert/AlertContainer/AlertContainer.module.scss.es.js +11 -11
  125. package/dist/components/Notifications/Alert/AlertItem/AlertItem.module.scss.cjs.js +2 -2
  126. package/dist/components/Notifications/Alert/AlertItem/AlertItem.module.scss.es.js +22 -22
  127. package/dist/components/Notifications/Banner/Banner.module.scss.cjs.js +2 -2
  128. package/dist/components/Notifications/Banner/Banner.module.scss.es.js +9 -9
  129. package/dist/components/Notifications/BaseModal/BaseModal.module.scss.cjs.js +2 -2
  130. package/dist/components/Notifications/BaseModal/BaseModal.module.scss.es.js +5 -5
  131. package/dist/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.cjs.js +2 -2
  132. package/dist/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.es.js +4 -4
  133. package/dist/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.cjs.js +2 -2
  134. package/dist/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.es.js +2 -2
  135. package/dist/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.cjs.js +2 -2
  136. package/dist/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.es.js +6 -6
  137. package/dist/components/Notifications/Dialog/Dialog.module.scss.cjs.js +2 -2
  138. package/dist/components/Notifications/Dialog/Dialog.module.scss.es.js +4 -4
  139. package/dist/components/Notifications/Dialog/DialogActions/DialogActions.module.scss.cjs.js +2 -2
  140. package/dist/components/Notifications/Dialog/DialogActions/DialogActions.module.scss.es.js +3 -3
  141. package/dist/components/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.cjs.js +2 -2
  142. package/dist/components/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.es.js +10 -10
  143. package/dist/components/Notifications/SideSheet/SideSheet.module.scss.cjs.js +2 -2
  144. package/dist/components/Notifications/SideSheet/SideSheet.module.scss.es.js +13 -13
  145. package/dist/components/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.cjs.js +2 -2
  146. package/dist/components/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.es.js +2 -2
  147. package/dist/components/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.cjs.js +2 -2
  148. package/dist/components/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.es.js +2 -2
  149. package/dist/components/Notifications/SlideInModal/SlideInModal.module.scss.cjs.js +2 -2
  150. package/dist/components/Notifications/SlideInModal/SlideInModal.module.scss.es.js +10 -10
  151. package/dist/components/Pagination/Pagination.module.scss.cjs.js +2 -2
  152. package/dist/components/Pagination/Pagination.module.scss.es.js +14 -14
  153. package/dist/components/Popover/Popover.module.scss.cjs.js +2 -2
  154. package/dist/components/Popover/Popover.module.scss.es.js +3 -3
  155. package/dist/components/ProgressBar/ProgressBar.module.scss.cjs.js +2 -2
  156. package/dist/components/ProgressBar/ProgressBar.module.scss.es.js +9 -9
  157. package/dist/components/Skeleton/Skeleton.module.scss.cjs.js +2 -2
  158. package/dist/components/Skeleton/Skeleton.module.scss.es.js +5 -5
  159. package/dist/components/Spinner/Spinner.module.scss.cjs.js +2 -2
  160. package/dist/components/Spinner/Spinner.module.scss.es.js +3 -3
  161. package/dist/components/Stepper/Step.module.scss.cjs.js +2 -2
  162. package/dist/components/Stepper/Step.module.scss.es.js +22 -22
  163. package/dist/components/Stepper/Stepper.module.scss.cjs.js +2 -2
  164. package/dist/components/Stepper/Stepper.module.scss.es.js +4 -4
  165. package/dist/components/Tabs/Tab.module.scss.cjs.js +2 -2
  166. package/dist/components/Tabs/Tab.module.scss.es.js +3 -3
  167. package/dist/components/Tabs/TabButton.module.scss.cjs.js +2 -2
  168. package/dist/components/Tabs/TabButton.module.scss.es.js +12 -12
  169. package/dist/components/Tabs/Tabs.module.scss.cjs.js +2 -2
  170. package/dist/components/Tabs/Tabs.module.scss.es.js +10 -10
  171. package/dist/components/Tag/RemoveButton.module.scss.cjs.js +2 -2
  172. package/dist/components/Tag/RemoveButton.module.scss.es.js +3 -3
  173. package/dist/components/Tag/Tag.module.scss.cjs.js +2 -2
  174. package/dist/components/Tag/Tag.module.scss.es.js +6 -6
  175. package/dist/components/TextEllipsis/TextEllipsis.module.scss.cjs.js +2 -2
  176. package/dist/components/TextEllipsis/TextEllipsis.module.scss.es.js +3 -3
  177. package/dist/components/Tiles/Tile.module.scss.cjs.js +2 -2
  178. package/dist/components/Tiles/Tile.module.scss.es.js +8 -8
  179. package/dist/components/Tiles/Tiles.module.scss.cjs.js +2 -2
  180. package/dist/components/Tiles/Tiles.module.scss.es.js +2 -2
  181. package/dist/components/Tooltip/Tooltip.module.scss.cjs.js +2 -2
  182. package/dist/components/Tooltip/Tooltip.module.scss.es.js +27 -27
  183. package/dist/components/Typography/Typography.module.scss.cjs.js +2 -2
  184. package/dist/components/Typography/Typography.module.scss.es.js +13 -13
  185. package/dist/components/admin/layout/LeftNav/LeftNav.module.scss.cjs.js +2 -2
  186. package/dist/components/admin/layout/LeftNav/LeftNav.module.scss.es.js +5 -5
  187. package/dist/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.module.scss.cjs.js +2 -2
  188. package/dist/components/admin/layout/LeftNav/LeftNavItem/LeftNavItem.module.scss.es.js +14 -14
  189. package/dist/components/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.cjs.js +2 -2
  190. package/dist/components/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.es.js +3 -3
  191. package/dist/components/miscellaneous/IdentityProviderButton.module.scss.cjs.js +2 -2
  192. package/dist/components/miscellaneous/IdentityProviderButton.module.scss.es.js +3 -3
  193. package/dist/index.d.ts +1 -0
  194. package/dist/readyclasses.module.scss.cjs.js +2 -2
  195. package/dist/readyclasses.module.scss.es.js +5 -5
  196. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MultiSelect.module.scss.cjs.js"),t=require("react"),s=require("../../../../hooks/useClickOutside.cjs.js"),r=require("../../../../hooks/useDetermineStatusIcon.cjs.js"),l=require("../../../../readyclasses.module.scss.cjs.js"),n=require("../../../../util/helper.cjs.js"),a=require("../../../Icon/Icon.cjs.js"),i=require("../Select.interfaces.cjs.js"),c=require("../useAddNewBtn.cjs.js"),o=require("../useSelectPositionList.cjs.js"),u=require("./SelectButton.cjs.js"),d=require("./SelectedOptions.cjs.js"),p=require("./useArrowNavigation.cjs.js"),h=require("./useSearch.cjs.js"),f=require("../../../withReadOnly.cjs.js"),m=(e,t)=>`${e}_option${t}`,v=e=>`${e}_listbox`,b=e=>t.Children.toArray(e).reduce(((e,s)=>"string"==typeof s||"number"==typeof s?e+s:t.isValidElement(s)&&s.props.children?e+b(s.props.children):e),""),y=f.withReadOnly(t.forwardRef((({id:f,children:y,name:S,disabled:j=!1,labeledBy:C,placeholder:w,describedBy:E,selectButtonProps:g={},className:N,error:x=!1,success:I=!1,value:R,clearLabel:B="Clear selection",noResultsLabel:q="No results found",onChange:O,addNew:P,search:k={enabled:!0,renderThreshold:0,searchPlaceholder:"Search item"},isReadOnlyView:A,...L},$)=>{const D=t.useRef(f??n.generateID(20)),[F,M]=t.useState(!1),[V,H]=t.useState([]),T=t.useRef(null),_=t.useRef(null),[K,U]=t.useState(0),[z,G]=t.useState(!1),[J,Q]=t.useState(!1),[W,X]=t.useState(t.Children.count(y)-V.length),{filter:Y,renderSearch:Z,searchInputRef:ee,resetSearchState:te,searchVisible:se}=h.useSearch({selectId:D.current,expanded:F,search:k,searchInputClassName:e.default["select-search"],optionsCount:W,focusedSelectItem:K,setFocusedSelectItem:U,describedBy:E,getOptionId:m,getListboxId:v}),{addBtnRef:re,addNewBtnOptionsContainerClassName:le,renderAddNew:ne}=c.useAddNewBtn({id:m(D.current,W),addNew:P,filter:Y,focusedSelectItem:K,optionsCount:W,searchInputRef:ee,shouldClick:z,onClickCallback:()=>{G(!1),te()}}),ae=$||t.createRef(),ie=t.useRef(null),ce=!!L["data-readonlyview"]||A,{onArrowNavigation:oe}=p.useArrowNavigation({expanded:F,setExpanded:M,setFocusedSelectItem:U,childrenCount:W,setShouldClick:G,addBtnRef:re,searchInputRef:ee,customSelectButtonRef:ie,onClose:te,isReadOnlyView:ce}),{listPosition:ue,opacity:de,optionsListMaxHeight:pe,setListPosition:he,setOpacity:fe}=o.useSelectPositionList({expanded:F,optionListReference:_,containerReference:T,addBtnRef:re}),me=r.useDetermineStatusIcon({success:I,error:x});t.useEffect((()=>{F&&ee.current&&(Q(!0),ee.current.focus()),!F&&ie.current&&J&&(Q(!1),ie.current.focus())}),[F,ie.current,J,ee.current]),t.useEffect((()=>{var e;(e=>{const s=t.Children.map(y,(e=>e)),r=e.map((e=>{const t=s.find((t=>t.props.value===e));return{value:e,label:null==t?void 0:t.props.children,fixed:null==t?void 0:t.props.fixed}}));H(r)})(R),e=R,ae.current&&[...ae.current.options].forEach((t=>{e.includes(t.value)?t.selected=!0:t.selected=!1}))}),[R]);const ve=t.useRef(null);s.useClickOutside(ve,(()=>{F&&(M(!1),he(i.Position.Below),fe(0))}),[F]);const be=[];F&&be.push(e.default.expanded),x&&be.push(e.default.error),j&&be.push(e.default.disabled),N&&be.push(N),I&&be.push(e.default.success);const ye=()=>{L["data-readonlyview"]||A||(M((e=>!e)),G(!1))},Se=t.createElement("div",{className:`list-wrapper-container ${e.default["list-wrapper-container"]}`},t.createElement("div",{ref:_,className:`list-wrapper ${e.default["list-wrapper"]}`,style:{display:F?"block":"none",opacity:de,maxHeight:pe.wrapper,pointerEvents:F?"auto":"none",top:ue===i.Position.Below?"4px":"initial",bottom:ue===i.Position.Above?"4px":"initial"}},t.createElement("ul",{id:v(D.current),className:le,role:"listbox","aria-multiselectable":"true",style:{maxHeight:pe.list}},(()=>{const s=e=>e.filter((e=>"object"==typeof e&&"props"in e&&!V.find((t=>t.value===e.props.value))));let r;return r=l(s(""!==Y?t.Children.toArray(y).filter((e=>b(e.props.children).toLowerCase().includes(Y.toLowerCase()))):t.Children.toArray(y))),W!==r.length&&X(r.length),0===r.length?t.createElement("li",{className:e.default["no-results"]},q):r;function l(e){return t.Children.map(e,((e,s)=>t.cloneElement(e,{onFocusChange:e=>{U(e)},onOptionSelect:e=>{(e=>{if(ae.current&&e){const t=e.getAttribute("data-value"),s=[...ae.current.options],r=s.filter((e=>e.selected)).map((e=>e.value));s.forEach((e=>{(e.value===t||r.includes(e.value))&&(e.selected=!0)})),ae.current.dispatchEvent(new Event("change",{bubbles:!0}))}M(!1),te()})(e.current),M(!1),G(!1)},isSearching:!1,selectOpened:F,childIndex:s,hasFocus:K===s,shouldClick:z,id:m(D.current,s)})))}})()),ne()));return t.createElement("div",{ref:ve},t.createElement("select",{...n.filterProps(L,/^data-/,!1),tabIndex:-1,multiple:!0,"aria-hidden":"true",ref:ae,name:S,onChange:e=>{null==O||O(e)},className:l.default["sr-only"]},t.createElement("option",{value:""}),t.Children.map(y,(e=>t.createElement("option",{value:e.props.value})))),t.createElement("div",{...n.filterProps(L,/^data-/),id:D.current,ref:T,onKeyDown:oe,className:`custom-select ${e.default.select} ${be.join(" ")}`},ue===i.Position.Above?Se:void 0,t.createElement("div",{className:`${e.default["custom-select"]} ${be.join(" ")} `,style:{display:"flex"}},t.createElement("div",{className:e.default["display-container"],"data-display":!0},t.createElement(u.SelectButton,{...g,onClick:ye,name:S,ref:ie,disabled:j,"aria-disabled":j,"aria-invalid":x,"aria-expanded":F,"aria-haspopup":"listbox","aria-labelledby":C,"aria-describedby":E}),0===(null==R?void 0:R.length)&&w&&t.createElement("span",{className:e.default.placeholder},w),(null==R?void 0:R.length)>0&&t.createElement(d.SelectedOptions,{disabled:j,display:V,onClick:ye,onRemove:e=>{ae.current&&([...ae.current.options].find((t=>t.value===e)).selected=!1,ae.current.dispatchEvent(new Event("change",{bubbles:!0})))}}),se&&Z()),t.createElement("div",{className:e.default.status},me||(F?t.createElement(a.Icon,{className:e.default["chevron-icon"],icon:a.Icons.ChevronUp}):t.createElement(a.Icon,{className:e.default["chevron-icon"],icon:a.Icons.ChevronDown})))),ue===i.Position.Below?Se:void 0))})));exports.MultiSelect=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./MultiSelect.module.scss.cjs.js"),t=require("react"),s=require("react-dom"),r=require("../../../../hooks/useClickOutside.cjs.js"),n=require("../../../../hooks/useDetermineStatusIcon.cjs.js"),l=require("../../../../hooks/useGetDomRoot.cjs.js"),a=require("../../../../readyclasses.module.scss.cjs.js"),o=require("../../../../util/helper.cjs.js"),i=require("../../../Icon/Icon.cjs.js"),c=require("../Select.interfaces.cjs.js"),u=require("../useAddNewBtn.cjs.js"),d=require("../useSelectPositionList.cjs.js"),p=require("./SelectButton.cjs.js"),f=require("./SelectedOptions.cjs.js"),m=require("./useArrowNavigation.cjs.js"),h=require("./useSearch.cjs.js"),v=require("../../../withReadOnly.cjs.js"),b=(e,t)=>`${e}_option${t}`,w=e=>`${e}_listbox`,y=e=>t.Children.toArray(e).reduce(((e,s)=>"string"==typeof s||"number"==typeof s?e+s:t.isValidElement(s)&&s.props.children?e+y(s.props.children):e),""),E=v.withReadOnly(t.forwardRef((({id:v,children:E,name:j,disabled:S=!1,labeledBy:C,placeholder:g,describedBy:R,selectButtonProps:x={},className:N,error:I=!1,success:q=!1,value:B,clearLabel:O="Clear selection",noResultsLabel:L="No results found",onChange:P,addNew:$,search:k={enabled:!0,renderThreshold:0,searchPlaceholder:"Search item"},isReadOnlyView:A,domRoot:D,...F},z)=>{const M=t.useRef(v??o.generateID(20)),[T,V]=t.useState(!1),[H,G]=t.useState([]),_=t.useRef(null),K=t.useRef(null),U=t.useRef(null),J=t.useRef(null),{root:Q}=l.useGetDomRoot(D,_),[W,X]=t.useState(0),[Y,Z]=t.useState(!1),[ee,te]=t.useState(!1),[se,re]=t.useState(t.Children.count(E)-H.length),{filter:ne,renderSearch:le,searchInputRef:ae,resetSearchState:oe,searchVisible:ie}=h.useSearch({selectId:M.current,expanded:T,search:k,searchInputClassName:e.default["select-search"],optionsCount:se,focusedSelectItem:W,setFocusedSelectItem:X,describedBy:R,getOptionId:b,getListboxId:w}),{addBtnRef:ce,addNewBtnOptionsContainerClassName:ue,renderAddNew:de}=u.useAddNewBtn({id:b(M.current,se),addNew:$,filter:ne,focusedSelectItem:W,optionsCount:se,searchInputRef:ae,shouldClick:Y,onClickCallback:()=>{Z(!1),oe()}}),pe=z||t.createRef(),fe=t.useRef(null),me=!!F["data-readonlyview"]||A,{onArrowNavigation:he}=m.useArrowNavigation({expanded:T,setExpanded:V,setFocusedSelectItem:X,childrenCount:se,setShouldClick:Z,addBtnRef:ce,searchInputRef:ae,customSelectButtonRef:fe,onClose:oe,isReadOnlyView:me}),{listPosition:ve,opacity:be,optionsListMaxHeight:we,setListPosition:ye,setOpacity:Ee}=d.useSelectPositionList({expanded:T,optionListReference:U,containerReference:K,addBtnRef:ce}),je=n.useDetermineStatusIcon({success:q,error:I});t.useEffect((()=>{T&&ae.current&&(te(!0),ae.current.focus()),!T&&fe.current&&ee&&(te(!1),fe.current.focus())}),[T,fe.current,ee,ae.current]),t.useEffect((()=>{var e;(e=>{const s=t.Children.map(E,(e=>e)),r=e.map((e=>{const t=s.find((t=>t.props.value===e));return{value:e,label:null==t?void 0:t.props.children,fixed:null==t?void 0:t.props.fixed}}));G(r)})(B),e=B,pe.current&&[...pe.current.options].forEach((t=>{e.includes(t.value)?t.selected=!0:t.selected=!1}))}),[B]),r.useClickOutside(_,(()=>{T&&(V(!1),ye(c.Position.Below),Ee(0))}),[T]);const Se=[];T&&Se.push(e.default.expanded),I&&Se.push(e.default.error),S&&Se.push(e.default.disabled),N&&Se.push(N),q&&Se.push(e.default.success);const Ce=()=>{F["data-readonlyview"]||A||(V((e=>!e)),Z(!1))};t.useEffect((()=>{if(!T)return;const e=K.current,t=J.current;if(!e||!t)return;let s=null;const r=()=>{if(!e||!t)return;const s=e.getBoundingClientRect(),r=s.left,n=ve===c.Position.Below?s.bottom:s.top;t.style.position="fixed",t.style.zIndex="1000",t.style.left="0",t.style.top="0",t.style.width=`${s.width}px`,t.style.transform=`translate3d(${r}px, ${n}px, 0)`},n=()=>{null==s&&(s=globalThis.requestAnimationFrame((()=>{s=null,r()})))};r();const l=()=>n(),a=()=>n();window.addEventListener("scroll",l,{passive:!0,capture:!0}),window.addEventListener("resize",a);const o=new ResizeObserver((()=>{n()}));return o.observe(e),()=>{window.removeEventListener("scroll",l,!0),window.removeEventListener("resize",a),o.disconnect(),null!=s&&globalThis.cancelAnimationFrame(s)}}),[T,ve]);const ge=t.createElement("div",{className:`list-wrapper-container ${e.default["list-wrapper-container"]}`},t.createElement("div",{ref:U,className:`list-wrapper ${e.default["list-wrapper"]}`,style:{display:T?"block":"none",opacity:be,maxHeight:we.wrapper,pointerEvents:T?"auto":"none",top:ve===c.Position.Below?"4px":void 0,bottom:ve===c.Position.Above?"4px":void 0}},t.createElement("ul",{id:w(M.current),className:ue,role:"listbox","aria-multiselectable":"true",style:{maxHeight:we.list}},(()=>{const s=e=>e.filter((e=>"object"==typeof e&&"props"in e&&!H.find((t=>t.value===e.props.value))));let r;return r=n(s(""!==ne?t.Children.toArray(E).filter((e=>y(e.props.children).toLowerCase().includes(ne.toLowerCase()))):t.Children.toArray(E))),se!==r.length&&re(r.length),0===r.length?t.createElement("li",{className:e.default["no-results"]},L):r;function n(e){return t.Children.map(e,((e,s)=>t.cloneElement(e,{onFocusChange:e=>{X(e)},onOptionSelect:e=>{(e=>{if(pe.current&&e){const t=e.getAttribute("data-value"),s=[...pe.current.options],r=s.filter((e=>e.selected)).map((e=>e.value));s.forEach((e=>{(e.value===t||r.includes(e.value))&&(e.selected=!0)})),pe.current.dispatchEvent(new Event("change",{bubbles:!0}))}V(!1),oe()})(e.current),V(!1),Z(!1)},isSearching:!1,selectOpened:T,childIndex:s,hasFocus:W===s,shouldClick:Y,id:b(M.current,s)})))}})()),de()));return t.createElement(t.Fragment,null,t.createElement("div",{ref:_},t.createElement("select",{...o.filterProps(F,/^data-/,!1),tabIndex:-1,multiple:!0,"aria-hidden":"true",ref:pe,name:j,onChange:e=>{null==P||P(e)},className:a.default["sr-only"]},t.createElement("option",{value:""}),t.Children.map(E,(e=>t.createElement("option",{value:e.props.value})))),t.createElement("div",{...o.filterProps(F,/^data-/),id:M.current,ref:K,onKeyDown:he,className:`custom-select ${e.default.select} ${Se.join(" ")}`},t.createElement("div",{className:`${e.default["custom-select"]} ${Se.join(" ")} `,style:{display:"flex"}},t.createElement("div",{className:e.default["display-container"],"data-display":!0},t.createElement(p.SelectButton,{...x,onClick:Ce,name:j,ref:fe,disabled:S,"aria-disabled":S,"aria-invalid":I,"aria-expanded":T,"aria-haspopup":"listbox","aria-labelledby":C,"aria-describedby":R}),0===(null==B?void 0:B.length)&&g&&t.createElement("span",{className:e.default.placeholder},g),(null==B?void 0:B.length)>0&&t.createElement(f.SelectedOptions,{disabled:S,display:H,onClick:Ce,onRemove:e=>{pe.current&&([...pe.current.options].find((t=>t.value===e)).selected=!1,pe.current.dispatchEvent(new Event("change",{bubbles:!0})))}}),ie&&le()),t.createElement("div",{className:e.default.status},je||(T?t.createElement(i.Icon,{className:e.default["chevron-icon"],icon:i.Icons.ChevronUp}):t.createElement(i.Icon,{className:e.default["chevron-icon"],icon:i.Icons.ChevronDown})))))),s.createPortal(t.createElement("div",{ref:J,className:`${e.default.select} ${Se.join(" ")}`},ge),Q))})));exports.MultiSelect=E;
2
2
  //# sourceMappingURL=MultiSelect.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.cjs.js","sources":["../../../../../src/components/Form/Select/MultiSelect/MultiSelect.tsx"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classes from \"./MultiSelect.module.scss\";\n\nimport React, {\n ForwardRefRenderFunction,\n ReactElement,\n createRef,\n useEffect,\n useRef,\n useState\n} from \"react\";\nimport { useClickOutside } from \"../../../../hooks/useClickOutside\";\nimport { useDetermineStatusIcon } from \"../../../../hooks/useDetermineStatusIcon\";\nimport readyclasses from \"../../../../readyclasses.module.scss\";\nimport { filterProps, generateID } from \"../../../../util/helper\";\nimport { Icon, Icons } from \"../../../Icon/Icon\";\nimport { MultiSelectProps, Position } from \"../Select.interfaces\";\nimport { useAddNewBtn } from \"../useAddNewBtn\";\nimport { useSelectPositionList } from \"../useSelectPositionList\";\nimport { SelectButton } from \"./SelectButton\";\nimport { Display, SelectedOptions } from \"./SelectedOptions\";\nimport { useArrowNavigation } from \"./useArrowNavigation\";\nimport { useSearch } from \"./useSearch\";\nimport { withReadOnly } from \"../../../withReadOnly\";\n\nconst getOptionId = (multiSelectId: string, optionIndex: number) =>\n `${multiSelectId}_option${optionIndex}`;\n\nconst getListboxId = (multiSelectId: string) => `${multiSelectId}_listbox`;\n\nconst extractTextFromChildren = (children: React.ReactNode): string => {\n return React.Children.toArray(children).reduce((text: string, child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n return text + child;\n }\n if (React.isValidElement(child) && child.props.children) {\n return text + extractTextFromChildren(child.props.children);\n }\n return text;\n }, \"\");\n};\n\nconst MultiSelectComponent: ForwardRefRenderFunction<HTMLSelectElement, MultiSelectProps> = (\n {\n id,\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n selectButtonProps = {},\n className,\n error = false,\n success = false,\n value,\n clearLabel = \"Clear selection\",\n noResultsLabel = \"No results found\",\n onChange,\n addNew,\n search = { enabled: true, renderThreshold: 0, searchPlaceholder: \"Search item\" },\n isReadOnlyView,\n ...rest\n }: MultiSelectProps,\n ref\n) => {\n const multiSelectId = useRef(id ?? generateID(20));\n const [expanded, setExpanded] = useState(false);\n const [display, setDisplay] = useState<Display[]>([]);\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const [focusedSelectItem, setFocusedSelectItem] = useState(0);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [shouldFocusButtonAfterClose, setShouldFocusButtonAfterClose] = useState(false);\n const [optionsVisibleCount, setOptionsVisibleCount] = useState(\n React.Children.count(children) - display.length\n );\n const { filter, renderSearch, searchInputRef, resetSearchState, searchVisible } = useSearch({\n selectId: multiSelectId.current,\n expanded,\n search,\n searchInputClassName: classes[\"select-search\"],\n optionsCount: optionsVisibleCount,\n focusedSelectItem,\n setFocusedSelectItem,\n describedBy,\n getOptionId,\n getListboxId\n });\n const { addBtnRef, addNewBtnOptionsContainerClassName, renderAddNew } = useAddNewBtn({\n id: getOptionId(multiSelectId.current, optionsVisibleCount),\n addNew,\n filter,\n focusedSelectItem,\n optionsCount: optionsVisibleCount,\n searchInputRef,\n shouldClick,\n onClickCallback: () => {\n setShouldClick(false);\n resetSearchState();\n }\n });\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n\n const onOptionChangeHandler = (optionElement: HTMLElement | null) => {\n if (nativeSelect.current && optionElement) {\n const value = optionElement.getAttribute(\"data-value\")!;\n const options = [...nativeSelect.current.options];\n const lastSelectedOptionValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n options.forEach(option => {\n if (option.value === value || lastSelectedOptionValues.includes(option.value)) {\n option.selected = true;\n }\n });\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setExpanded(false);\n resetSearchState();\n };\n\n const onSelectedOptionRemoveHandler = (value: string) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.find(option => option.value === value)!.selected = false;\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n };\n\n const customSelectButtonRef = useRef<HTMLButtonElement>(null);\n const readOnlyView = !!rest[\"data-readonlyview\"] || isReadOnlyView;\n const { onArrowNavigation } = useArrowNavigation({\n expanded,\n setExpanded,\n setFocusedSelectItem,\n childrenCount: optionsVisibleCount,\n setShouldClick,\n addBtnRef,\n searchInputRef,\n customSelectButtonRef,\n onClose: resetSearchState,\n isReadOnlyView: readOnlyView\n });\n\n const { listPosition, opacity, optionsListMaxHeight, setListPosition, setOpacity } =\n useSelectPositionList({ expanded, optionListReference, containerReference, addBtnRef });\n\n const syncDisplayValue = (values: string[]) => {\n const options = React.Children.map(children, child => child);\n const displayArray: Display[] = values.map(value => {\n const option = options.find(option => option.props.value === value);\n return { value, label: option?.props.children, fixed: option?.props.fixed };\n });\n setDisplay(displayArray);\n };\n\n const syncSelectedOption = (vals: string[]) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.forEach(option => {\n if (vals.includes(option.value)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n type ReactChildrenType = ReturnType<typeof React.Children.toArray>;\n\n const filterOutSelectedChildren = (internalChildren: ReactChildrenType) => {\n return internalChildren.filter(\n child =>\n typeof child === \"object\" &&\n \"props\" in child &&\n !display.find(option => option.value === child.props.value)\n );\n };\n\n let results;\n if (filter !== \"\") {\n const filteredChildren = React.Children.toArray(children).filter(child => {\n const childElement = child as ReactElement;\n const childText = extractTextFromChildren(childElement.props.children);\n return childText.toLowerCase().includes(filter.toLowerCase());\n });\n\n results = _internalRenderChildren(filterOutSelectedChildren(filteredChildren));\n } else {\n results = _internalRenderChildren(\n filterOutSelectedChildren(React.Children.toArray(children))\n );\n }\n\n optionsVisibleCount !== results.length && setOptionsVisibleCount(results.length);\n\n if (results.length === 0) {\n return <li className={classes[\"no-results\"]}>{noResultsLabel}</li>;\n }\n\n return results;\n\n function _internalRenderChildren(internalChildren: ReactChildrenType) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => {\n setFocusedSelectItem(childIndex);\n },\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef.current);\n setExpanded(false);\n setShouldClick(false);\n },\n isSearching: false,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n id: getOptionId(multiSelectId.current, index)\n });\n });\n }\n };\n\n const renderChevronIcon = () => {\n return expanded ? (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronUp} />\n ) : (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronDown} />\n );\n };\n\n const icon = useDetermineStatusIcon({ success, error });\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n };\n\n useEffect(() => {\n if (expanded && searchInputRef.current) {\n setShouldFocusButtonAfterClose(true);\n searchInputRef.current.focus();\n }\n\n if (!expanded && customSelectButtonRef.current && shouldFocusButtonAfterClose) {\n setShouldFocusButtonAfterClose(false);\n customSelectButtonRef.current.focus();\n }\n }, [\n expanded,\n customSelectButtonRef.current,\n shouldFocusButtonAfterClose,\n searchInputRef.current\n ]);\n\n useEffect(() => {\n syncDisplayValue(value);\n syncSelectedOption(value);\n }, [value]);\n\n const myElementRef = useRef<HTMLDivElement>(null);\n\n useClickOutside(myElementRef, () => {\n if (!expanded) {\n return;\n }\n setExpanded(false);\n setListPosition(Position.Below);\n setOpacity(0);\n }, [expanded]);\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n success && additionalClasses.push(classes.success);\n\n const onSelectButtonClick = () => {\n if (rest[\"data-readonlyview\"] || isReadOnlyView) {\n return;\n }\n setExpanded(expanded => !expanded);\n setShouldClick(false);\n };\n\n const optionsElement = (\n <div className={`list-wrapper-container ${classes[\"list-wrapper-container\"]}`}>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes[\"list-wrapper\"]}`}\n style={{\n display: expanded ? \"block\" : \"none\",\n opacity: opacity,\n maxHeight: optionsListMaxHeight.wrapper,\n pointerEvents: expanded ? \"auto\" : \"none\",\n top: listPosition === Position.Below ? \"4px\" : \"initial\",\n bottom: listPosition === Position.Above ? \"4px\" : \"initial\"\n }}\n >\n <ul\n id={getListboxId(multiSelectId.current)}\n className={addNewBtnOptionsContainerClassName}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{ maxHeight: optionsListMaxHeight.list }}\n >\n {renderOptions()}\n </ul>\n {renderAddNew()}\n </div>\n </div>\n );\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <div ref={myElementRef}>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n multiple={true}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses[\"sr-only\"]}\n >\n <option value=\"\"></option>\n {React.Children.map(children, child => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n id={multiSelectId.current}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(\" \")}`}\n >\n {listPosition === Position.Above ? optionsElement : undefined}\n <div\n className={`${classes[\"custom-select\"]} ${additionalClasses.join(\" \")} `}\n style={{ display: \"flex\" }}\n >\n <div className={classes[\"display-container\"]} data-display>\n <SelectButton\n {...selectButtonProps}\n onClick={onSelectButtonClick}\n name={name}\n ref={customSelectButtonRef}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n />\n {value?.length === 0 && placeholder && (\n <span className={classes[\"placeholder\"]}>{placeholder}</span>\n )}\n {value?.length > 0 && (\n <SelectedOptions\n disabled={disabled}\n display={display}\n onClick={onSelectButtonClick}\n onRemove={onSelectedOptionRemoveHandler}\n />\n )}\n {searchVisible && renderSearch()}\n </div>\n <div className={classes[\"status\"]}>{icon || renderChevronIcon()}</div>\n </div>\n {listPosition === Position.Below ? optionsElement : undefined}\n </div>\n </div>\n );\n};\n\nexport const MultiSelect = withReadOnly(React.forwardRef(MultiSelectComponent));\n"],"names":["getOptionId","multiSelectId","optionIndex","getListboxId","extractTextFromChildren","children","React","Children","toArray","reduce","text","child","isValidElement","props","MultiSelect","withReadOnly","forwardRef","id","name","disabled","labeledBy","placeholder","describedBy","selectButtonProps","className","error","success","value","clearLabel","noResultsLabel","onChange","addNew","search","enabled","renderThreshold","searchPlaceholder","isReadOnlyView","rest","ref","useRef","generateID","expanded","setExpanded","useState","display","setDisplay","containerReference","optionListReference","focusedSelectItem","setFocusedSelectItem","shouldClick","setShouldClick","shouldFocusButtonAfterClose","setShouldFocusButtonAfterClose","optionsVisibleCount","setOptionsVisibleCount","count","length","filter","renderSearch","searchInputRef","resetSearchState","searchVisible","useSearch","selectId","current","searchInputClassName","classes","optionsCount","addBtnRef","addNewBtnOptionsContainerClassName","renderAddNew","useAddNewBtn","onClickCallback","nativeSelect","createRef","customSelectButtonRef","readOnlyView","onArrowNavigation","useArrowNavigation","childrenCount","onClose","listPosition","opacity","optionsListMaxHeight","setListPosition","setOpacity","useSelectPositionList","icon","useDetermineStatusIcon","useEffect","focus","vals","values","options","map","displayArray","option","find","label","fixed","syncDisplayValue","forEach","includes","selected","myElementRef","useClickOutside","Position","Below","additionalClasses","push","onSelectButtonClick","optionsElement","default","createElement","style","maxHeight","wrapper","pointerEvents","top","bottom","Above","role","list","filterOutSelectedChildren","internalChildren","results","_internalRenderChildren","toLowerCase","index","cloneElement","onFocusChange","childIndex","onOptionSelect","optionRef","optionElement","getAttribute","lastSelectedOptionValues","dispatchEvent","Event","bubbles","onOptionChangeHandler","isSearching","selectOpened","hasFocus","renderOptions","filterProps","tabIndex","multiple","event","readyclasses","onKeyDown","select","join","SelectButton","onClick","SelectedOptions","onRemove","Icon","Icons","ChevronUp","ChevronDown"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelect.cjs.js","sources":["../../../../../src/components/Form/Select/MultiSelect/MultiSelect.tsx"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classes from \"./MultiSelect.module.scss\";\n\nimport React, {\n ForwardRefRenderFunction,\n ReactElement,\n createRef,\n useEffect,\n useRef,\n useState\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useClickOutside } from \"../../../../hooks/useClickOutside\";\nimport { useDetermineStatusIcon } from \"../../../../hooks/useDetermineStatusIcon\";\nimport { useGetDomRoot } from \"../../../../hooks/useGetDomRoot\";\nimport readyclasses from \"../../../../readyclasses.module.scss\";\nimport { filterProps, generateID } from \"../../../../util/helper\";\nimport { Icon, Icons } from \"../../../Icon/Icon\";\nimport { MultiSelectProps, Position } from \"../Select.interfaces\";\nimport { useAddNewBtn } from \"../useAddNewBtn\";\nimport { useSelectPositionList } from \"../useSelectPositionList\";\nimport { SelectButton } from \"./SelectButton\";\nimport { Display, SelectedOptions } from \"./SelectedOptions\";\nimport { useArrowNavigation } from \"./useArrowNavigation\";\nimport { useSearch } from \"./useSearch\";\nimport { withReadOnly } from \"../../../withReadOnly\";\n\nconst getOptionId = (multiSelectId: string, optionIndex: number) =>\n `${multiSelectId}_option${optionIndex}`;\n\nconst getListboxId = (multiSelectId: string) => `${multiSelectId}_listbox`;\n\nconst extractTextFromChildren = (children: React.ReactNode): string => {\n return React.Children.toArray(children).reduce((text: string, child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n return text + child;\n }\n if (React.isValidElement(child) && child.props.children) {\n return text + extractTextFromChildren(child.props.children);\n }\n return text;\n }, \"\");\n};\n\nconst MultiSelectComponent: ForwardRefRenderFunction<HTMLSelectElement, MultiSelectProps> = (\n {\n id,\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n selectButtonProps = {},\n className,\n error = false,\n success = false,\n value,\n clearLabel = \"Clear selection\",\n noResultsLabel = \"No results found\",\n onChange,\n addNew,\n search = { enabled: true, renderThreshold: 0, searchPlaceholder: \"Search item\" },\n isReadOnlyView,\n domRoot,\n ...rest\n }: MultiSelectProps,\n ref\n) => {\n const multiSelectId = useRef(id ?? generateID(20));\n const [expanded, setExpanded] = useState(false);\n const [display, setDisplay] = useState<Display[]>([]);\n const myElementRef = useRef<HTMLDivElement>(null);\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const portalRef = useRef<HTMLDivElement>(null);\n const { root } = useGetDomRoot(domRoot, myElementRef);\n const [focusedSelectItem, setFocusedSelectItem] = useState(0);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [shouldFocusButtonAfterClose, setShouldFocusButtonAfterClose] = useState(false);\n const [optionsVisibleCount, setOptionsVisibleCount] = useState(\n React.Children.count(children) - display.length\n );\n const { filter, renderSearch, searchInputRef, resetSearchState, searchVisible } = useSearch({\n selectId: multiSelectId.current,\n expanded,\n search,\n searchInputClassName: classes[\"select-search\"],\n optionsCount: optionsVisibleCount,\n focusedSelectItem,\n setFocusedSelectItem,\n describedBy,\n getOptionId,\n getListboxId\n });\n const { addBtnRef, addNewBtnOptionsContainerClassName, renderAddNew } = useAddNewBtn({\n id: getOptionId(multiSelectId.current, optionsVisibleCount),\n addNew,\n filter,\n focusedSelectItem,\n optionsCount: optionsVisibleCount,\n searchInputRef,\n shouldClick,\n onClickCallback: () => {\n setShouldClick(false);\n resetSearchState();\n }\n });\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n\n const onOptionChangeHandler = (optionElement: HTMLElement | null) => {\n if (nativeSelect.current && optionElement) {\n const value = optionElement.getAttribute(\"data-value\")!;\n const options = [...nativeSelect.current.options];\n const lastSelectedOptionValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n options.forEach(option => {\n if (option.value === value || lastSelectedOptionValues.includes(option.value)) {\n option.selected = true;\n }\n });\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setExpanded(false);\n resetSearchState();\n };\n\n const onSelectedOptionRemoveHandler = (value: string) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.find(option => option.value === value)!.selected = false;\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n };\n\n const customSelectButtonRef = useRef<HTMLButtonElement>(null);\n const readOnlyView = !!rest[\"data-readonlyview\"] || isReadOnlyView;\n const { onArrowNavigation } = useArrowNavigation({\n expanded,\n setExpanded,\n setFocusedSelectItem,\n childrenCount: optionsVisibleCount,\n setShouldClick,\n addBtnRef,\n searchInputRef,\n customSelectButtonRef,\n onClose: resetSearchState,\n isReadOnlyView: readOnlyView\n });\n\n const { listPosition, opacity, optionsListMaxHeight, setListPosition, setOpacity } =\n useSelectPositionList({ expanded, optionListReference, containerReference, addBtnRef });\n\n const syncDisplayValue = (values: string[]) => {\n const options = React.Children.map(children, child => child);\n const displayArray: Display[] = values.map(value => {\n const option = options.find(option => option.props.value === value);\n return { value, label: option?.props.children, fixed: option?.props.fixed };\n });\n setDisplay(displayArray);\n };\n\n const syncSelectedOption = (vals: string[]) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.forEach(option => {\n if (vals.includes(option.value)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n type ReactChildrenType = ReturnType<typeof React.Children.toArray>;\n\n const filterOutSelectedChildren = (internalChildren: ReactChildrenType) => {\n return internalChildren.filter(\n child =>\n typeof child === \"object\" &&\n \"props\" in child &&\n !display.find(option => option.value === child.props.value)\n );\n };\n\n let results;\n if (filter !== \"\") {\n const filteredChildren = React.Children.toArray(children).filter(child => {\n const childElement = child as ReactElement;\n const childText = extractTextFromChildren(childElement.props.children);\n return childText.toLowerCase().includes(filter.toLowerCase());\n });\n\n results = _internalRenderChildren(filterOutSelectedChildren(filteredChildren));\n } else {\n results = _internalRenderChildren(\n filterOutSelectedChildren(React.Children.toArray(children))\n );\n }\n\n optionsVisibleCount !== results.length && setOptionsVisibleCount(results.length);\n\n if (results.length === 0) {\n return <li className={classes[\"no-results\"]}>{noResultsLabel}</li>;\n }\n\n return results;\n\n function _internalRenderChildren(internalChildren: ReactChildrenType) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => {\n setFocusedSelectItem(childIndex);\n },\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef.current);\n setExpanded(false);\n setShouldClick(false);\n },\n isSearching: false,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n id: getOptionId(multiSelectId.current, index)\n });\n });\n }\n };\n\n const renderChevronIcon = () => {\n return expanded ? (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronUp} />\n ) : (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronDown} />\n );\n };\n\n const icon = useDetermineStatusIcon({ success, error });\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n };\n\n useEffect(() => {\n if (expanded && searchInputRef.current) {\n setShouldFocusButtonAfterClose(true);\n searchInputRef.current.focus();\n }\n\n if (!expanded && customSelectButtonRef.current && shouldFocusButtonAfterClose) {\n setShouldFocusButtonAfterClose(false);\n customSelectButtonRef.current.focus();\n }\n }, [\n expanded,\n customSelectButtonRef.current,\n shouldFocusButtonAfterClose,\n searchInputRef.current\n ]);\n\n useEffect(() => {\n syncDisplayValue(value);\n syncSelectedOption(value);\n }, [value]);\n\n useClickOutside(myElementRef, () => {\n if (!expanded) {\n return;\n }\n setExpanded(false);\n setListPosition(Position.Below);\n setOpacity(0);\n }, [expanded]);\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n success && additionalClasses.push(classes.success);\n\n const onSelectButtonClick = () => {\n if (rest[\"data-readonlyview\"] || isReadOnlyView) {\n return;\n }\n setExpanded(expanded => !expanded);\n setShouldClick(false);\n };\n\n useEffect(() => {\n if (!expanded) {\n return;\n }\n\n const anchor = containerReference.current;\n const portal = portalRef.current;\n\n if (!anchor || !portal) {\n return;\n }\n\n let frameId: number | null = null;\n\n const updatePosition = () => {\n if (!anchor || !portal) {\n return;\n }\n\n const rect = anchor.getBoundingClientRect();\n const x = rect.left;\n const y = listPosition === Position.Below ? rect.bottom : rect.top;\n\n portal.style.position = \"fixed\";\n portal.style.zIndex = \"1000\";\n portal.style.left = \"0\";\n portal.style.top = \"0\";\n portal.style.width = `${rect.width}px`;\n portal.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n };\n\n const scheduleUpdate = () => {\n if (frameId != null) {\n return;\n }\n frameId = globalThis.requestAnimationFrame(() => {\n frameId = null;\n updatePosition();\n });\n };\n\n updatePosition();\n\n const handleScroll = () => scheduleUpdate();\n const handleResize = () => scheduleUpdate();\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true, capture: true });\n window.addEventListener(\"resize\", handleResize);\n\n const resizeObserver = new ResizeObserver(() => {\n scheduleUpdate();\n });\n resizeObserver.observe(anchor);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n window.removeEventListener(\"resize\", handleResize);\n resizeObserver.disconnect();\n if (frameId != null) {\n globalThis.cancelAnimationFrame(frameId);\n }\n };\n }, [expanded, listPosition]);\n\n const optionsElement = (\n <div className={`list-wrapper-container ${classes[\"list-wrapper-container\"]}`}>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes[\"list-wrapper\"]}`}\n style={{\n display: expanded ? \"block\" : \"none\",\n opacity: opacity,\n maxHeight: optionsListMaxHeight.wrapper,\n pointerEvents: expanded ? \"auto\" : \"none\",\n top: listPosition === Position.Below ? \"4px\" : undefined,\n bottom: listPosition === Position.Above ? \"4px\" : undefined\n }}\n >\n <ul\n id={getListboxId(multiSelectId.current)}\n className={addNewBtnOptionsContainerClassName}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{ maxHeight: optionsListMaxHeight.list }}\n >\n {renderOptions()}\n </ul>\n {renderAddNew()}\n </div>\n </div>\n );\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <>\n <div ref={myElementRef}>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n multiple={true}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses[\"sr-only\"]}\n >\n <option value=\"\"></option>\n {React.Children.map(children, child => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n id={multiSelectId.current}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(\" \")}`}\n >\n <div\n className={`${classes[\"custom-select\"]} ${additionalClasses.join(\" \")} `}\n style={{ display: \"flex\" }}\n >\n <div className={classes[\"display-container\"]} data-display>\n <SelectButton\n {...selectButtonProps}\n onClick={onSelectButtonClick}\n name={name}\n ref={customSelectButtonRef}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n />\n {value?.length === 0 && placeholder && (\n <span className={classes[\"placeholder\"]}>{placeholder}</span>\n )}\n {value?.length > 0 && (\n <SelectedOptions\n disabled={disabled}\n display={display}\n onClick={onSelectButtonClick}\n onRemove={onSelectedOptionRemoveHandler}\n />\n )}\n {searchVisible && renderSearch()}\n </div>\n <div className={classes[\"status\"]}>{icon || renderChevronIcon()}</div>\n </div>\n </div>\n </div>\n {createPortal(\n <div ref={portalRef} className={`${classes.select} ${additionalClasses.join(\" \")}`}>\n {optionsElement}\n </div>,\n root\n )}\n </>\n );\n};\n\nexport const MultiSelect = withReadOnly(React.forwardRef(MultiSelectComponent));\n"],"names":["getOptionId","multiSelectId","optionIndex","getListboxId","extractTextFromChildren","children","React","Children","toArray","reduce","text","child","isValidElement","props","MultiSelect","withReadOnly","forwardRef","id","name","disabled","labeledBy","placeholder","describedBy","selectButtonProps","className","error","success","value","clearLabel","noResultsLabel","onChange","addNew","search","enabled","renderThreshold","searchPlaceholder","isReadOnlyView","domRoot","rest","ref","useRef","generateID","expanded","setExpanded","useState","display","setDisplay","myElementRef","containerReference","optionListReference","portalRef","root","useGetDomRoot","focusedSelectItem","setFocusedSelectItem","shouldClick","setShouldClick","shouldFocusButtonAfterClose","setShouldFocusButtonAfterClose","optionsVisibleCount","setOptionsVisibleCount","count","length","filter","renderSearch","searchInputRef","resetSearchState","searchVisible","useSearch","selectId","current","searchInputClassName","classes","optionsCount","addBtnRef","addNewBtnOptionsContainerClassName","renderAddNew","useAddNewBtn","onClickCallback","nativeSelect","createRef","customSelectButtonRef","readOnlyView","onArrowNavigation","useArrowNavigation","childrenCount","onClose","listPosition","opacity","optionsListMaxHeight","setListPosition","setOpacity","useSelectPositionList","icon","useDetermineStatusIcon","useEffect","focus","vals","values","options","map","displayArray","option","find","label","fixed","syncDisplayValue","forEach","includes","selected","useClickOutside","Position","Below","additionalClasses","push","onSelectButtonClick","anchor","portal","frameId","updatePosition","rect","getBoundingClientRect","x","left","y","bottom","top","style","position","zIndex","width","transform","scheduleUpdate","globalThis","requestAnimationFrame","handleScroll","handleResize","window","addEventListener","passive","capture","resizeObserver","ResizeObserver","observe","removeEventListener","disconnect","cancelAnimationFrame","optionsElement","default","createElement","maxHeight","wrapper","pointerEvents","Above","role","list","filterOutSelectedChildren","internalChildren","results","_internalRenderChildren","toLowerCase","index","cloneElement","onFocusChange","childIndex","onOptionSelect","optionRef","optionElement","getAttribute","lastSelectedOptionValues","dispatchEvent","Event","bubbles","onOptionChangeHandler","isSearching","selectOpened","hasFocus","renderOptions","Fragment","filterProps","tabIndex","multiple","event","readyclasses","onKeyDown","select","join","SelectButton","onClick","SelectedOptions","onRemove","Icon","Icons","ChevronUp","ChevronDown","createPortal"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import classes from "./MultiSelect.module.scss.es.js";
2
2
  import React, { useRef, useState, createRef, useEffect } from "react";
3
+ import { createPortal } from "react-dom";
3
4
  import { useClickOutside } from "../../../../hooks/useClickOutside.es.js";
4
5
  import { useDetermineStatusIcon } from "../../../../hooks/useDetermineStatusIcon.es.js";
6
+ import { useGetDomRoot } from "../../../../hooks/useGetDomRoot.es.js";
5
7
  import readyclasses from "../../../../readyclasses.module.scss.es.js";
6
8
  import { generateID, filterProps } from "../../../../util/helper.es.js";
7
9
  import { Icon, Icons } from "../../../Icon/Icon.es.js";
@@ -45,13 +47,17 @@ const MultiSelectComponent = ({
45
47
  addNew,
46
48
  search = { enabled: true, renderThreshold: 0, searchPlaceholder: "Search item" },
47
49
  isReadOnlyView,
50
+ domRoot,
48
51
  ...rest
49
52
  }, ref) => {
50
53
  const multiSelectId = useRef(id ?? generateID(20));
51
54
  const [expanded, setExpanded] = useState(false);
52
55
  const [display, setDisplay] = useState([]);
56
+ const myElementRef = useRef(null);
53
57
  const containerReference = useRef(null);
54
58
  const optionListReference = useRef(null);
59
+ const portalRef = useRef(null);
60
+ const { root } = useGetDomRoot(domRoot, myElementRef);
55
61
  const [focusedSelectItem, setFocusedSelectItem] = useState(0);
56
62
  const [shouldClick, setShouldClick] = useState(
57
63
  false
@@ -214,7 +220,6 @@ const MultiSelectComponent = ({
214
220
  syncDisplayValue(value);
215
221
  syncSelectedOption(value);
216
222
  }, [value]);
217
- const myElementRef = useRef(null);
218
223
  useClickOutside(myElementRef, () => {
219
224
  if (!expanded) {
220
225
  return;
@@ -236,6 +241,57 @@ const MultiSelectComponent = ({
236
241
  setExpanded((expanded2) => !expanded2);
237
242
  setShouldClick(false);
238
243
  };
244
+ useEffect(() => {
245
+ if (!expanded) {
246
+ return;
247
+ }
248
+ const anchor = containerReference.current;
249
+ const portal = portalRef.current;
250
+ if (!anchor || !portal) {
251
+ return;
252
+ }
253
+ let frameId = null;
254
+ const updatePosition = () => {
255
+ if (!anchor || !portal) {
256
+ return;
257
+ }
258
+ const rect = anchor.getBoundingClientRect();
259
+ const x = rect.left;
260
+ const y = listPosition === Position.Below ? rect.bottom : rect.top;
261
+ portal.style.position = "fixed";
262
+ portal.style.zIndex = "1000";
263
+ portal.style.left = "0";
264
+ portal.style.top = "0";
265
+ portal.style.width = `${rect.width}px`;
266
+ portal.style.transform = `translate3d(${x}px, ${y}px, 0)`;
267
+ };
268
+ const scheduleUpdate = () => {
269
+ if (frameId != null) {
270
+ return;
271
+ }
272
+ frameId = globalThis.requestAnimationFrame(() => {
273
+ frameId = null;
274
+ updatePosition();
275
+ });
276
+ };
277
+ updatePosition();
278
+ const handleScroll = () => scheduleUpdate();
279
+ const handleResize = () => scheduleUpdate();
280
+ window.addEventListener("scroll", handleScroll, { passive: true, capture: true });
281
+ window.addEventListener("resize", handleResize);
282
+ const resizeObserver = new ResizeObserver(() => {
283
+ scheduleUpdate();
284
+ });
285
+ resizeObserver.observe(anchor);
286
+ return () => {
287
+ window.removeEventListener("scroll", handleScroll, true);
288
+ window.removeEventListener("resize", handleResize);
289
+ resizeObserver.disconnect();
290
+ if (frameId != null) {
291
+ globalThis.cancelAnimationFrame(frameId);
292
+ }
293
+ };
294
+ }, [expanded, listPosition]);
239
295
  const optionsElement = /* @__PURE__ */ React.createElement("div", { className: `list-wrapper-container ${classes["list-wrapper-container"]}` }, /* @__PURE__ */ React.createElement(
240
296
  "div",
241
297
  {
@@ -246,8 +302,8 @@ const MultiSelectComponent = ({
246
302
  opacity,
247
303
  maxHeight: optionsListMaxHeight.wrapper,
248
304
  pointerEvents: expanded ? "auto" : "none",
249
- top: listPosition === Position.Below ? "4px" : "initial",
250
- bottom: listPosition === Position.Above ? "4px" : "initial"
305
+ top: listPosition === Position.Below ? "4px" : void 0,
306
+ bottom: listPosition === Position.Above ? "4px" : void 0
251
307
  }
252
308
  },
253
309
  /* @__PURE__ */ React.createElement(
@@ -263,7 +319,7 @@ const MultiSelectComponent = ({
263
319
  ),
264
320
  renderAddNew()
265
321
  ));
266
- return /* @__PURE__ */ React.createElement("div", { ref: myElementRef }, /* @__PURE__ */ React.createElement(
322
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { ref: myElementRef }, /* @__PURE__ */ React.createElement(
267
323
  "select",
268
324
  {
269
325
  ...filterProps(rest, /^data-/, false),
@@ -286,7 +342,6 @@ const MultiSelectComponent = ({
286
342
  onKeyDown: onArrowNavigation,
287
343
  className: `custom-select ${classes.select} ${additionalClasses.join(" ")}`
288
344
  },
289
- listPosition === Position.Above ? optionsElement : void 0,
290
345
  /* @__PURE__ */ React.createElement(
291
346
  "div",
292
347
  {
@@ -318,8 +373,10 @@ const MultiSelectComponent = ({
318
373
  }
319
374
  ), searchVisible && renderSearch()),
320
375
  /* @__PURE__ */ React.createElement("div", { className: classes["status"] }, icon || renderChevronIcon())
321
- ),
322
- listPosition === Position.Below ? optionsElement : void 0
376
+ )
377
+ )), createPortal(
378
+ /* @__PURE__ */ React.createElement("div", { ref: portalRef, className: `${classes.select} ${additionalClasses.join(" ")}` }, optionsElement),
379
+ root
323
380
  ));
324
381
  };
325
382
  const MultiSelect = withReadOnly(React.forwardRef(MultiSelectComponent));
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.es.js","sources":["../../../../../src/components/Form/Select/MultiSelect/MultiSelect.tsx"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classes from \"./MultiSelect.module.scss\";\n\nimport React, {\n ForwardRefRenderFunction,\n ReactElement,\n createRef,\n useEffect,\n useRef,\n useState\n} from \"react\";\nimport { useClickOutside } from \"../../../../hooks/useClickOutside\";\nimport { useDetermineStatusIcon } from \"../../../../hooks/useDetermineStatusIcon\";\nimport readyclasses from \"../../../../readyclasses.module.scss\";\nimport { filterProps, generateID } from \"../../../../util/helper\";\nimport { Icon, Icons } from \"../../../Icon/Icon\";\nimport { MultiSelectProps, Position } from \"../Select.interfaces\";\nimport { useAddNewBtn } from \"../useAddNewBtn\";\nimport { useSelectPositionList } from \"../useSelectPositionList\";\nimport { SelectButton } from \"./SelectButton\";\nimport { Display, SelectedOptions } from \"./SelectedOptions\";\nimport { useArrowNavigation } from \"./useArrowNavigation\";\nimport { useSearch } from \"./useSearch\";\nimport { withReadOnly } from \"../../../withReadOnly\";\n\nconst getOptionId = (multiSelectId: string, optionIndex: number) =>\n `${multiSelectId}_option${optionIndex}`;\n\nconst getListboxId = (multiSelectId: string) => `${multiSelectId}_listbox`;\n\nconst extractTextFromChildren = (children: React.ReactNode): string => {\n return React.Children.toArray(children).reduce((text: string, child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n return text + child;\n }\n if (React.isValidElement(child) && child.props.children) {\n return text + extractTextFromChildren(child.props.children);\n }\n return text;\n }, \"\");\n};\n\nconst MultiSelectComponent: ForwardRefRenderFunction<HTMLSelectElement, MultiSelectProps> = (\n {\n id,\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n selectButtonProps = {},\n className,\n error = false,\n success = false,\n value,\n clearLabel = \"Clear selection\",\n noResultsLabel = \"No results found\",\n onChange,\n addNew,\n search = { enabled: true, renderThreshold: 0, searchPlaceholder: \"Search item\" },\n isReadOnlyView,\n ...rest\n }: MultiSelectProps,\n ref\n) => {\n const multiSelectId = useRef(id ?? generateID(20));\n const [expanded, setExpanded] = useState(false);\n const [display, setDisplay] = useState<Display[]>([]);\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const [focusedSelectItem, setFocusedSelectItem] = useState(0);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [shouldFocusButtonAfterClose, setShouldFocusButtonAfterClose] = useState(false);\n const [optionsVisibleCount, setOptionsVisibleCount] = useState(\n React.Children.count(children) - display.length\n );\n const { filter, renderSearch, searchInputRef, resetSearchState, searchVisible } = useSearch({\n selectId: multiSelectId.current,\n expanded,\n search,\n searchInputClassName: classes[\"select-search\"],\n optionsCount: optionsVisibleCount,\n focusedSelectItem,\n setFocusedSelectItem,\n describedBy,\n getOptionId,\n getListboxId\n });\n const { addBtnRef, addNewBtnOptionsContainerClassName, renderAddNew } = useAddNewBtn({\n id: getOptionId(multiSelectId.current, optionsVisibleCount),\n addNew,\n filter,\n focusedSelectItem,\n optionsCount: optionsVisibleCount,\n searchInputRef,\n shouldClick,\n onClickCallback: () => {\n setShouldClick(false);\n resetSearchState();\n }\n });\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n\n const onOptionChangeHandler = (optionElement: HTMLElement | null) => {\n if (nativeSelect.current && optionElement) {\n const value = optionElement.getAttribute(\"data-value\")!;\n const options = [...nativeSelect.current.options];\n const lastSelectedOptionValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n options.forEach(option => {\n if (option.value === value || lastSelectedOptionValues.includes(option.value)) {\n option.selected = true;\n }\n });\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setExpanded(false);\n resetSearchState();\n };\n\n const onSelectedOptionRemoveHandler = (value: string) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.find(option => option.value === value)!.selected = false;\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n };\n\n const customSelectButtonRef = useRef<HTMLButtonElement>(null);\n const readOnlyView = !!rest[\"data-readonlyview\"] || isReadOnlyView;\n const { onArrowNavigation } = useArrowNavigation({\n expanded,\n setExpanded,\n setFocusedSelectItem,\n childrenCount: optionsVisibleCount,\n setShouldClick,\n addBtnRef,\n searchInputRef,\n customSelectButtonRef,\n onClose: resetSearchState,\n isReadOnlyView: readOnlyView\n });\n\n const { listPosition, opacity, optionsListMaxHeight, setListPosition, setOpacity } =\n useSelectPositionList({ expanded, optionListReference, containerReference, addBtnRef });\n\n const syncDisplayValue = (values: string[]) => {\n const options = React.Children.map(children, child => child);\n const displayArray: Display[] = values.map(value => {\n const option = options.find(option => option.props.value === value);\n return { value, label: option?.props.children, fixed: option?.props.fixed };\n });\n setDisplay(displayArray);\n };\n\n const syncSelectedOption = (vals: string[]) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.forEach(option => {\n if (vals.includes(option.value)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n type ReactChildrenType = ReturnType<typeof React.Children.toArray>;\n\n const filterOutSelectedChildren = (internalChildren: ReactChildrenType) => {\n return internalChildren.filter(\n child =>\n typeof child === \"object\" &&\n \"props\" in child &&\n !display.find(option => option.value === child.props.value)\n );\n };\n\n let results;\n if (filter !== \"\") {\n const filteredChildren = React.Children.toArray(children).filter(child => {\n const childElement = child as ReactElement;\n const childText = extractTextFromChildren(childElement.props.children);\n return childText.toLowerCase().includes(filter.toLowerCase());\n });\n\n results = _internalRenderChildren(filterOutSelectedChildren(filteredChildren));\n } else {\n results = _internalRenderChildren(\n filterOutSelectedChildren(React.Children.toArray(children))\n );\n }\n\n optionsVisibleCount !== results.length && setOptionsVisibleCount(results.length);\n\n if (results.length === 0) {\n return <li className={classes[\"no-results\"]}>{noResultsLabel}</li>;\n }\n\n return results;\n\n function _internalRenderChildren(internalChildren: ReactChildrenType) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => {\n setFocusedSelectItem(childIndex);\n },\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef.current);\n setExpanded(false);\n setShouldClick(false);\n },\n isSearching: false,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n id: getOptionId(multiSelectId.current, index)\n });\n });\n }\n };\n\n const renderChevronIcon = () => {\n return expanded ? (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronUp} />\n ) : (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronDown} />\n );\n };\n\n const icon = useDetermineStatusIcon({ success, error });\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n };\n\n useEffect(() => {\n if (expanded && searchInputRef.current) {\n setShouldFocusButtonAfterClose(true);\n searchInputRef.current.focus();\n }\n\n if (!expanded && customSelectButtonRef.current && shouldFocusButtonAfterClose) {\n setShouldFocusButtonAfterClose(false);\n customSelectButtonRef.current.focus();\n }\n }, [\n expanded,\n customSelectButtonRef.current,\n shouldFocusButtonAfterClose,\n searchInputRef.current\n ]);\n\n useEffect(() => {\n syncDisplayValue(value);\n syncSelectedOption(value);\n }, [value]);\n\n const myElementRef = useRef<HTMLDivElement>(null);\n\n useClickOutside(myElementRef, () => {\n if (!expanded) {\n return;\n }\n setExpanded(false);\n setListPosition(Position.Below);\n setOpacity(0);\n }, [expanded]);\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n success && additionalClasses.push(classes.success);\n\n const onSelectButtonClick = () => {\n if (rest[\"data-readonlyview\"] || isReadOnlyView) {\n return;\n }\n setExpanded(expanded => !expanded);\n setShouldClick(false);\n };\n\n const optionsElement = (\n <div className={`list-wrapper-container ${classes[\"list-wrapper-container\"]}`}>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes[\"list-wrapper\"]}`}\n style={{\n display: expanded ? \"block\" : \"none\",\n opacity: opacity,\n maxHeight: optionsListMaxHeight.wrapper,\n pointerEvents: expanded ? \"auto\" : \"none\",\n top: listPosition === Position.Below ? \"4px\" : \"initial\",\n bottom: listPosition === Position.Above ? \"4px\" : \"initial\"\n }}\n >\n <ul\n id={getListboxId(multiSelectId.current)}\n className={addNewBtnOptionsContainerClassName}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{ maxHeight: optionsListMaxHeight.list }}\n >\n {renderOptions()}\n </ul>\n {renderAddNew()}\n </div>\n </div>\n );\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <div ref={myElementRef}>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n multiple={true}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses[\"sr-only\"]}\n >\n <option value=\"\"></option>\n {React.Children.map(children, child => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n id={multiSelectId.current}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(\" \")}`}\n >\n {listPosition === Position.Above ? optionsElement : undefined}\n <div\n className={`${classes[\"custom-select\"]} ${additionalClasses.join(\" \")} `}\n style={{ display: \"flex\" }}\n >\n <div className={classes[\"display-container\"]} data-display>\n <SelectButton\n {...selectButtonProps}\n onClick={onSelectButtonClick}\n name={name}\n ref={customSelectButtonRef}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n />\n {value?.length === 0 && placeholder && (\n <span className={classes[\"placeholder\"]}>{placeholder}</span>\n )}\n {value?.length > 0 && (\n <SelectedOptions\n disabled={disabled}\n display={display}\n onClick={onSelectButtonClick}\n onRemove={onSelectedOptionRemoveHandler}\n />\n )}\n {searchVisible && renderSearch()}\n </div>\n <div className={classes[\"status\"]}>{icon || renderChevronIcon()}</div>\n </div>\n {listPosition === Position.Below ? optionsElement : undefined}\n </div>\n </div>\n );\n};\n\nexport const MultiSelect = withReadOnly(React.forwardRef(MultiSelectComponent));\n"],"names":["value","option","expanded"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelect.es.js","sources":["../../../../../src/components/Form/Select/MultiSelect/MultiSelect.tsx"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classes from \"./MultiSelect.module.scss\";\n\nimport React, {\n ForwardRefRenderFunction,\n ReactElement,\n createRef,\n useEffect,\n useRef,\n useState\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useClickOutside } from \"../../../../hooks/useClickOutside\";\nimport { useDetermineStatusIcon } from \"../../../../hooks/useDetermineStatusIcon\";\nimport { useGetDomRoot } from \"../../../../hooks/useGetDomRoot\";\nimport readyclasses from \"../../../../readyclasses.module.scss\";\nimport { filterProps, generateID } from \"../../../../util/helper\";\nimport { Icon, Icons } from \"../../../Icon/Icon\";\nimport { MultiSelectProps, Position } from \"../Select.interfaces\";\nimport { useAddNewBtn } from \"../useAddNewBtn\";\nimport { useSelectPositionList } from \"../useSelectPositionList\";\nimport { SelectButton } from \"./SelectButton\";\nimport { Display, SelectedOptions } from \"./SelectedOptions\";\nimport { useArrowNavigation } from \"./useArrowNavigation\";\nimport { useSearch } from \"./useSearch\";\nimport { withReadOnly } from \"../../../withReadOnly\";\n\nconst getOptionId = (multiSelectId: string, optionIndex: number) =>\n `${multiSelectId}_option${optionIndex}`;\n\nconst getListboxId = (multiSelectId: string) => `${multiSelectId}_listbox`;\n\nconst extractTextFromChildren = (children: React.ReactNode): string => {\n return React.Children.toArray(children).reduce((text: string, child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n return text + child;\n }\n if (React.isValidElement(child) && child.props.children) {\n return text + extractTextFromChildren(child.props.children);\n }\n return text;\n }, \"\");\n};\n\nconst MultiSelectComponent: ForwardRefRenderFunction<HTMLSelectElement, MultiSelectProps> = (\n {\n id,\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n selectButtonProps = {},\n className,\n error = false,\n success = false,\n value,\n clearLabel = \"Clear selection\",\n noResultsLabel = \"No results found\",\n onChange,\n addNew,\n search = { enabled: true, renderThreshold: 0, searchPlaceholder: \"Search item\" },\n isReadOnlyView,\n domRoot,\n ...rest\n }: MultiSelectProps,\n ref\n) => {\n const multiSelectId = useRef(id ?? generateID(20));\n const [expanded, setExpanded] = useState(false);\n const [display, setDisplay] = useState<Display[]>([]);\n const myElementRef = useRef<HTMLDivElement>(null);\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const portalRef = useRef<HTMLDivElement>(null);\n const { root } = useGetDomRoot(domRoot, myElementRef);\n const [focusedSelectItem, setFocusedSelectItem] = useState(0);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [shouldFocusButtonAfterClose, setShouldFocusButtonAfterClose] = useState(false);\n const [optionsVisibleCount, setOptionsVisibleCount] = useState(\n React.Children.count(children) - display.length\n );\n const { filter, renderSearch, searchInputRef, resetSearchState, searchVisible } = useSearch({\n selectId: multiSelectId.current,\n expanded,\n search,\n searchInputClassName: classes[\"select-search\"],\n optionsCount: optionsVisibleCount,\n focusedSelectItem,\n setFocusedSelectItem,\n describedBy,\n getOptionId,\n getListboxId\n });\n const { addBtnRef, addNewBtnOptionsContainerClassName, renderAddNew } = useAddNewBtn({\n id: getOptionId(multiSelectId.current, optionsVisibleCount),\n addNew,\n filter,\n focusedSelectItem,\n optionsCount: optionsVisibleCount,\n searchInputRef,\n shouldClick,\n onClickCallback: () => {\n setShouldClick(false);\n resetSearchState();\n }\n });\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n\n const onOptionChangeHandler = (optionElement: HTMLElement | null) => {\n if (nativeSelect.current && optionElement) {\n const value = optionElement.getAttribute(\"data-value\")!;\n const options = [...nativeSelect.current.options];\n const lastSelectedOptionValues = options\n .filter(option => option.selected)\n .map(option => option.value);\n options.forEach(option => {\n if (option.value === value || lastSelectedOptionValues.includes(option.value)) {\n option.selected = true;\n }\n });\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n setExpanded(false);\n resetSearchState();\n };\n\n const onSelectedOptionRemoveHandler = (value: string) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.find(option => option.value === value)!.selected = false;\n nativeSelect.current.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n };\n\n const customSelectButtonRef = useRef<HTMLButtonElement>(null);\n const readOnlyView = !!rest[\"data-readonlyview\"] || isReadOnlyView;\n const { onArrowNavigation } = useArrowNavigation({\n expanded,\n setExpanded,\n setFocusedSelectItem,\n childrenCount: optionsVisibleCount,\n setShouldClick,\n addBtnRef,\n searchInputRef,\n customSelectButtonRef,\n onClose: resetSearchState,\n isReadOnlyView: readOnlyView\n });\n\n const { listPosition, opacity, optionsListMaxHeight, setListPosition, setOpacity } =\n useSelectPositionList({ expanded, optionListReference, containerReference, addBtnRef });\n\n const syncDisplayValue = (values: string[]) => {\n const options = React.Children.map(children, child => child);\n const displayArray: Display[] = values.map(value => {\n const option = options.find(option => option.props.value === value);\n return { value, label: option?.props.children, fixed: option?.props.fixed };\n });\n setDisplay(displayArray);\n };\n\n const syncSelectedOption = (vals: string[]) => {\n if (nativeSelect.current) {\n const options = [...nativeSelect.current.options];\n options.forEach(option => {\n if (vals.includes(option.value)) {\n option.selected = true;\n } else {\n option.selected = false;\n }\n });\n }\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n type ReactChildrenType = ReturnType<typeof React.Children.toArray>;\n\n const filterOutSelectedChildren = (internalChildren: ReactChildrenType) => {\n return internalChildren.filter(\n child =>\n typeof child === \"object\" &&\n \"props\" in child &&\n !display.find(option => option.value === child.props.value)\n );\n };\n\n let results;\n if (filter !== \"\") {\n const filteredChildren = React.Children.toArray(children).filter(child => {\n const childElement = child as ReactElement;\n const childText = extractTextFromChildren(childElement.props.children);\n return childText.toLowerCase().includes(filter.toLowerCase());\n });\n\n results = _internalRenderChildren(filterOutSelectedChildren(filteredChildren));\n } else {\n results = _internalRenderChildren(\n filterOutSelectedChildren(React.Children.toArray(children))\n );\n }\n\n optionsVisibleCount !== results.length && setOptionsVisibleCount(results.length);\n\n if (results.length === 0) {\n return <li className={classes[\"no-results\"]}>{noResultsLabel}</li>;\n }\n\n return results;\n\n function _internalRenderChildren(internalChildren: ReactChildrenType) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => {\n setFocusedSelectItem(childIndex);\n },\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef.current);\n setExpanded(false);\n setShouldClick(false);\n },\n isSearching: false,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n id: getOptionId(multiSelectId.current, index)\n });\n });\n }\n };\n\n const renderChevronIcon = () => {\n return expanded ? (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronUp} />\n ) : (\n <Icon className={classes[\"chevron-icon\"]} icon={Icons.ChevronDown} />\n );\n };\n\n const icon = useDetermineStatusIcon({ success, error });\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(event);\n };\n\n useEffect(() => {\n if (expanded && searchInputRef.current) {\n setShouldFocusButtonAfterClose(true);\n searchInputRef.current.focus();\n }\n\n if (!expanded && customSelectButtonRef.current && shouldFocusButtonAfterClose) {\n setShouldFocusButtonAfterClose(false);\n customSelectButtonRef.current.focus();\n }\n }, [\n expanded,\n customSelectButtonRef.current,\n shouldFocusButtonAfterClose,\n searchInputRef.current\n ]);\n\n useEffect(() => {\n syncDisplayValue(value);\n syncSelectedOption(value);\n }, [value]);\n\n useClickOutside(myElementRef, () => {\n if (!expanded) {\n return;\n }\n setExpanded(false);\n setListPosition(Position.Below);\n setOpacity(0);\n }, [expanded]);\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n success && additionalClasses.push(classes.success);\n\n const onSelectButtonClick = () => {\n if (rest[\"data-readonlyview\"] || isReadOnlyView) {\n return;\n }\n setExpanded(expanded => !expanded);\n setShouldClick(false);\n };\n\n useEffect(() => {\n if (!expanded) {\n return;\n }\n\n const anchor = containerReference.current;\n const portal = portalRef.current;\n\n if (!anchor || !portal) {\n return;\n }\n\n let frameId: number | null = null;\n\n const updatePosition = () => {\n if (!anchor || !portal) {\n return;\n }\n\n const rect = anchor.getBoundingClientRect();\n const x = rect.left;\n const y = listPosition === Position.Below ? rect.bottom : rect.top;\n\n portal.style.position = \"fixed\";\n portal.style.zIndex = \"1000\";\n portal.style.left = \"0\";\n portal.style.top = \"0\";\n portal.style.width = `${rect.width}px`;\n portal.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n };\n\n const scheduleUpdate = () => {\n if (frameId != null) {\n return;\n }\n frameId = globalThis.requestAnimationFrame(() => {\n frameId = null;\n updatePosition();\n });\n };\n\n updatePosition();\n\n const handleScroll = () => scheduleUpdate();\n const handleResize = () => scheduleUpdate();\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true, capture: true });\n window.addEventListener(\"resize\", handleResize);\n\n const resizeObserver = new ResizeObserver(() => {\n scheduleUpdate();\n });\n resizeObserver.observe(anchor);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n window.removeEventListener(\"resize\", handleResize);\n resizeObserver.disconnect();\n if (frameId != null) {\n globalThis.cancelAnimationFrame(frameId);\n }\n };\n }, [expanded, listPosition]);\n\n const optionsElement = (\n <div className={`list-wrapper-container ${classes[\"list-wrapper-container\"]}`}>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes[\"list-wrapper\"]}`}\n style={{\n display: expanded ? \"block\" : \"none\",\n opacity: opacity,\n maxHeight: optionsListMaxHeight.wrapper,\n pointerEvents: expanded ? \"auto\" : \"none\",\n top: listPosition === Position.Below ? \"4px\" : undefined,\n bottom: listPosition === Position.Above ? \"4px\" : undefined\n }}\n >\n <ul\n id={getListboxId(multiSelectId.current)}\n className={addNewBtnOptionsContainerClassName}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{ maxHeight: optionsListMaxHeight.list }}\n >\n {renderOptions()}\n </ul>\n {renderAddNew()}\n </div>\n </div>\n );\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <>\n <div ref={myElementRef}>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n multiple={true}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses[\"sr-only\"]}\n >\n <option value=\"\"></option>\n {React.Children.map(children, child => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n id={multiSelectId.current}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(\" \")}`}\n >\n <div\n className={`${classes[\"custom-select\"]} ${additionalClasses.join(\" \")} `}\n style={{ display: \"flex\" }}\n >\n <div className={classes[\"display-container\"]} data-display>\n <SelectButton\n {...selectButtonProps}\n onClick={onSelectButtonClick}\n name={name}\n ref={customSelectButtonRef}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n />\n {value?.length === 0 && placeholder && (\n <span className={classes[\"placeholder\"]}>{placeholder}</span>\n )}\n {value?.length > 0 && (\n <SelectedOptions\n disabled={disabled}\n display={display}\n onClick={onSelectButtonClick}\n onRemove={onSelectedOptionRemoveHandler}\n />\n )}\n {searchVisible && renderSearch()}\n </div>\n <div className={classes[\"status\"]}>{icon || renderChevronIcon()}</div>\n </div>\n </div>\n </div>\n {createPortal(\n <div ref={portalRef} className={`${classes.select} ${additionalClasses.join(\" \")}`}>\n {optionsElement}\n </div>,\n root\n )}\n </>\n );\n};\n\nexport const MultiSelect = withReadOnly(React.forwardRef(MultiSelectComponent));\n"],"names":["value","option","expanded"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('.MultiSelect_sr-only_E7GBT{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.MultiSelect_hidden_E7GBT{display:none}.MultiSelect_slide-in_E7GBT{animation:MultiSelect_slide-in_E7GBT .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-in_E7GBT{animation-duration:.1ms}}.MultiSelect_slide-out_E7GBT{animation:MultiSelect_slide-out_E7GBT .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-out_E7GBT{animation-duration:.1ms}}@keyframes MultiSelect_slide-in_E7GBT{0%{transform:translateY(100vh)}to{transform:translateY(0)}}@keyframes MultiSelect_slide-out_E7GBT{0%{transform:translateY(0)}to{transform:translateY(100vh)}}/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.MultiSelect_select_E7GBT{position:relative;box-sizing:border-box;border:0;border-radius:var(--input-border-radius);background-color:var(--input-background-color);font-size:var(--form-control-font-size);transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_E7GBT{transition-duration:.1ms}}.MultiSelect_select_E7GBT [data-display]{color:var(--color-default);font-family:var(--font-family)}.MultiSelect_select_E7GBT.MultiSelect_expanded_E7GBT .MultiSelect_list-wrapper_E7GBT{background:var(--light)}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT):has(button:focus){position:relative;z-index:2;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:calc(.125 * var(--font-size));border-radius:var(--focus-border-radius)}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT) .MultiSelect_custom-select_E7GBT:focus:not(.MultiSelect_error_E7GBT){border-color:var(--input-border-color);border-width:var(--input-border-width);padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_E7GBT:hover:not(.MultiSelect_disabled_E7GBT):not(.MultiSelect_expanded_E7GBT):not(.MultiSelect_error_E7GBT) .MultiSelect_custom-select_E7GBT:not(:focus){border-color:var(--input-border-color);border-width:var(--input-border-width);background-color:var(--color-blue-grey25)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{box-sizing:border-box;width:100%;min-height:calc(2.875 * var(--font-size) - 2 * var(--input-border-width));padding:0 calc(.5 * var(--font-size) - var(--input-border-width));background-color:transparent;border-color:var(--color-blue-grey500);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);font-size:var(--form-control-font-size);transition-property:background-color,border-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{transition-duration:.1ms}}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT:focus-visible,.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT:focus{outline:none}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT{border-color:var(--error)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT:focus{border-width:var(--input-border-width)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_disabled_E7GBT{border-color:var(--color-disabled);pointer-events:none}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT .MultiSelect_display-container_E7GBT{flex:1;display:flex;align-items:center;padding:.1875rem 0;gap:.375rem}.MultiSelect_select_E7GBT .MultiSelect_list-wrapper-container_E7GBT{position:relative}.MultiSelect_select_E7GBT .MultiSelect_list-wrapper_E7GBT{border-color:var(--light-grey-border);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);box-shadow:0 4px 5px #01053233;box-shadow:0 3px 14px #0105321f;box-shadow:0 8px 10px #01053224;position:absolute;z-index:11;left:0;width:100%;overflow:auto}.MultiSelect_select_E7GBT ul{box-sizing:border-box;padding:.25rem 0;width:100%;margin:0;list-style:none;background-color:var(--light);border-radius:var(--input-border-radius);color:var(--default);text-align:left;overflow:auto;max-height:25rem}.MultiSelect_select_E7GBT ul li{padding:.62rem .75rem;font-size:var(--form-control-font-size);margin:0;position:relative;line-height:1.43;box-sizing:border-box;min-height:2.5rem;cursor:pointer}.MultiSelect_select_E7GBT ul li:after{content:"";position:absolute;top:0;left:0;background-color:transparent;width:100%;height:100%;opacity:.05}.MultiSelect_select_E7GBT ul li:focus,.MultiSelect_select_E7GBT ul li.MultiSelect_focus_E7GBT{outline:none}.MultiSelect_select_E7GBT ul li:focus:before,.MultiSelect_select_E7GBT ul li.MultiSelect_focus_E7GBT:before{content:"";position:absolute;top:0;left:.125rem;height:100%;width:calc(100% - .25rem);opacity:1;z-index:101;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:0;border-radius:var(--focus-border-radius)}.MultiSelect_select_E7GBT ul li:hover:after,.MultiSelect_select_E7GBT ul li:active:after{background-color:var(--color-primary)}.MultiSelect_select_E7GBT ul li:active:after{opacity:.1}.MultiSelect_select_E7GBT ul li.MultiSelect_disabled_E7GBT{color:var(--greyed-out);background-color:var(--disabled);pointer-events:none}.MultiSelect_status_E7GBT{padding:.3125rem;display:flex;align-items:center}.MultiSelect_status_E7GBT [data-icon-status=success]{color:var(--success);font-size:var(--font-size-big)}.MultiSelect_status_E7GBT [data-icon-status=error]{color:var(--error);font-size:var(--font-size-big)}.MultiSelect_status_E7GBT .MultiSelect_chevron-icon_E7GBT{color:var(--default);font-size:var(--font-size-small)}.MultiSelect_status_E7GBT *+*{margin-left:1.25rem}.MultiSelect_placeholder_E7GBT{color:var(--greyed-out)}.MultiSelect_select-search_E7GBT{flex:1;box-sizing:border-box;border-bottom-left-radius:0;border-bottom-right-radius:0;border:0;background-color:transparent;color:var(--default);font-family:var(--font-family);font-size:calc(.83 * var(--font-size));line-height:1.3333;margin:0;padding:0}.MultiSelect_select-search_E7GBT:focus-visible,.MultiSelect_select-search_E7GBT:focus{outline:none}.MultiSelect_disabled_E7GBT{cursor:not-allowed;color:var(--greyed-out);background-color:var(--color-blue-grey25)}.MultiSelect_disabled_E7GBT>*{pointer-events:none}@media only screen and (min-width: 30em){.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT) .MultiSelect_custom-select_E7GBT:focus:not(.MultiSelect_error_E7GBT){padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT{color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT,[data-readonlyview=true] .MultiSelect_custom-select_E7GBT.MultiSelect_success_E7GBT{border-color:var(--read-only-border-color)}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT button{pointer-events:none}[data-readonlyview=true] .MultiSelect_status_E7GBT .MultiSelect_chevron-icon_E7GBT{visibility:hidden}[data-readonlyview=true]:hover:not(.MultiSelect_disabled_E7GBT):not(.MultiSelect_expanded_E7GBT):not(.MultiSelect_error_E7GBT) .MultiSelect_custom-select_E7GBT:not(:focus){color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="MultiSelect_select_E7GBT",t="MultiSelect_expanded_E7GBT",l="MultiSelect_error_E7GBT",s="MultiSelect_disabled_E7GBT",c="MultiSelect_focus_E7GBT",r="MultiSelect_status_E7GBT",o="MultiSelect_placeholder_E7GBT",i="MultiSelect_success_E7GBT",u={select:e,expanded:t,"list-wrapper":"MultiSelect_list-wrapper_E7GBT","custom-select":"MultiSelect_custom-select_E7GBT",error:l,disabled:s,"display-container":"MultiSelect_display-container_E7GBT","list-wrapper-container":"MultiSelect_list-wrapper-container_E7GBT",focus:c,status:r,"chevron-icon":"MultiSelect_chevron-icon_E7GBT",placeholder:o,"select-search":"MultiSelect_select-search_E7GBT",success:i};exports.default=u,exports.disabled=s,exports.error=l,exports.expanded=t,exports.focus=c,exports.placeholder=o,exports.select=e,exports.status=r,exports.success=i;
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('.MultiSelect_sr-only_EsL6T{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.MultiSelect_hidden_EsL6T{display:none}.MultiSelect_slide-in_EsL6T{animation:MultiSelect_slide-in_EsL6T .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-in_EsL6T{animation-duration:.1ms}}.MultiSelect_slide-out_EsL6T{animation:MultiSelect_slide-out_EsL6T .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-out_EsL6T{animation-duration:.1ms}}@keyframes MultiSelect_slide-in_EsL6T{0%{transform:translateY(100vh)}to{transform:translateY(0)}}@keyframes MultiSelect_slide-out_EsL6T{0%{transform:translateY(0)}to{transform:translateY(100vh)}}/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.MultiSelect_select_EsL6T{position:relative;box-sizing:border-box;border:0;border-radius:var(--input-border-radius);background-color:var(--input-background-color);font-size:var(--form-control-font-size);transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_EsL6T{transition-duration:.1ms}}.MultiSelect_select_EsL6T [data-display]{color:var(--color-default);font-family:var(--font-family)}.MultiSelect_select_EsL6T.MultiSelect_expanded_EsL6T .MultiSelect_list-wrapper_EsL6T{background:var(--light)}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T):has(button:focus){position:relative;z-index:2;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:calc(.125 * var(--font-size));border-radius:var(--focus-border-radius)}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T) .MultiSelect_custom-select_EsL6T:focus:not(.MultiSelect_error_EsL6T){border-color:var(--input-border-color);border-width:var(--input-border-width);padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_EsL6T:hover:not(.MultiSelect_disabled_EsL6T):not(.MultiSelect_expanded_EsL6T):not(.MultiSelect_error_EsL6T) .MultiSelect_custom-select_EsL6T:not(:focus){border-color:var(--input-border-color);border-width:var(--input-border-width);background-color:var(--color-blue-grey25)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{box-sizing:border-box;width:100%;min-height:calc(2.875 * var(--font-size) - 2 * var(--input-border-width));padding:0 calc(.5 * var(--font-size) - var(--input-border-width));background-color:transparent;border-color:var(--color-blue-grey500);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);font-size:var(--form-control-font-size);transition-property:background-color,border-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{transition-duration:.1ms}}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T:focus-visible,.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T:focus{outline:none}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T{border-color:var(--error)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T:focus{border-width:var(--input-border-width)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_disabled_EsL6T{border-color:var(--color-disabled);pointer-events:none}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T .MultiSelect_display-container_EsL6T{flex:1;display:flex;align-items:center;padding:.1875rem 0;gap:.375rem}.MultiSelect_select_EsL6T .MultiSelect_list-wrapper-container_EsL6T{position:relative}.MultiSelect_select_EsL6T .MultiSelect_list-wrapper_EsL6T{border-color:var(--light-grey-border);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);box-shadow:0 4px 5px #01053233;box-shadow:0 3px 14px #0105321f;box-shadow:0 8px 10px #01053224;position:absolute;z-index:11;left:0;width:100%;overflow:auto}.MultiSelect_select_EsL6T ul{box-sizing:border-box;padding:.25rem 0;width:100%;margin:0;list-style:none;background-color:var(--light);border-radius:var(--input-border-radius);color:var(--default);text-align:left;overflow:auto;max-height:25rem}.MultiSelect_select_EsL6T ul li{padding:.62rem .75rem;font-size:var(--form-control-font-size);font-family:var(--font-family);margin:0;position:relative;line-height:1.43;box-sizing:border-box;min-height:2.5rem;cursor:pointer}.MultiSelect_select_EsL6T ul li:after{content:"";position:absolute;top:0;left:0;background-color:transparent;width:100%;height:100%;opacity:.05}.MultiSelect_select_EsL6T ul li:focus,.MultiSelect_select_EsL6T ul li.MultiSelect_focus_EsL6T{outline:none}.MultiSelect_select_EsL6T ul li:focus:before,.MultiSelect_select_EsL6T ul li.MultiSelect_focus_EsL6T:before{content:"";position:absolute;top:0;left:.125rem;height:100%;width:calc(100% - .25rem);opacity:1;z-index:101;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:0;border-radius:var(--focus-border-radius)}.MultiSelect_select_EsL6T ul li:hover:after,.MultiSelect_select_EsL6T ul li:active:after{background-color:var(--color-primary)}.MultiSelect_select_EsL6T ul li:active:after{opacity:.1}.MultiSelect_select_EsL6T ul li.MultiSelect_disabled_EsL6T{color:var(--greyed-out);background-color:var(--disabled);pointer-events:none}.MultiSelect_status_EsL6T{padding:.3125rem;display:flex;align-items:center}.MultiSelect_status_EsL6T [data-icon-status=success]{color:var(--success);font-size:var(--font-size-big)}.MultiSelect_status_EsL6T [data-icon-status=error]{color:var(--error);font-size:var(--font-size-big)}.MultiSelect_status_EsL6T .MultiSelect_chevron-icon_EsL6T{color:var(--default);font-size:var(--font-size-small)}.MultiSelect_status_EsL6T *+*{margin-left:1.25rem}.MultiSelect_placeholder_EsL6T{color:var(--greyed-out)}.MultiSelect_select-search_EsL6T{flex:1;box-sizing:border-box;border-bottom-left-radius:0;border-bottom-right-radius:0;border:0;background-color:transparent;color:var(--default);font-family:var(--font-family);font-size:calc(.83 * var(--font-size));line-height:1.3333;margin:0;padding:0}.MultiSelect_select-search_EsL6T:focus-visible,.MultiSelect_select-search_EsL6T:focus{outline:none}.MultiSelect_disabled_EsL6T{cursor:not-allowed;color:var(--greyed-out);background-color:var(--color-blue-grey25)}.MultiSelect_disabled_EsL6T>*{pointer-events:none}@media only screen and (min-width: 30em){.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T) .MultiSelect_custom-select_EsL6T:focus:not(.MultiSelect_error_EsL6T){padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T{color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T,[data-readonlyview=true] .MultiSelect_custom-select_EsL6T.MultiSelect_success_EsL6T{border-color:var(--read-only-border-color)}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T button{pointer-events:none}[data-readonlyview=true] .MultiSelect_status_EsL6T .MultiSelect_chevron-icon_EsL6T{visibility:hidden}[data-readonlyview=true]:hover:not(.MultiSelect_disabled_EsL6T):not(.MultiSelect_expanded_EsL6T):not(.MultiSelect_error_EsL6T) .MultiSelect_custom-select_EsL6T:not(:focus){color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="MultiSelect_select_EsL6T",t="MultiSelect_expanded_EsL6T",s="MultiSelect_error_EsL6T",l="MultiSelect_disabled_EsL6T",c="MultiSelect_focus_EsL6T",r="MultiSelect_status_EsL6T",o="MultiSelect_placeholder_EsL6T",i="MultiSelect_success_EsL6T",u={select:e,expanded:t,"list-wrapper":"MultiSelect_list-wrapper_EsL6T","custom-select":"MultiSelect_custom-select_EsL6T",error:s,disabled:l,"display-container":"MultiSelect_display-container_EsL6T","list-wrapper-container":"MultiSelect_list-wrapper-container_EsL6T",focus:c,status:r,"chevron-icon":"MultiSelect_chevron-icon_EsL6T",placeholder:o,"select-search":"MultiSelect_select-search_EsL6T",success:i};exports.default=u,exports.disabled=l,exports.error=s,exports.expanded=t,exports.focus=c,exports.placeholder=o,exports.select=e,exports.status=r,exports.success=i;
3
3
  //# sourceMappingURL=MultiSelect.module.scss.cjs.js.map
@@ -1,26 +1,26 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('.MultiSelect_sr-only_E7GBT{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.MultiSelect_hidden_E7GBT{display:none}.MultiSelect_slide-in_E7GBT{animation:MultiSelect_slide-in_E7GBT .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-in_E7GBT{animation-duration:.1ms}}.MultiSelect_slide-out_E7GBT{animation:MultiSelect_slide-out_E7GBT .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-out_E7GBT{animation-duration:.1ms}}@keyframes MultiSelect_slide-in_E7GBT{0%{transform:translateY(100vh)}to{transform:translateY(0)}}@keyframes MultiSelect_slide-out_E7GBT{0%{transform:translateY(0)}to{transform:translateY(100vh)}}/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.MultiSelect_select_E7GBT{position:relative;box-sizing:border-box;border:0;border-radius:var(--input-border-radius);background-color:var(--input-background-color);font-size:var(--form-control-font-size);transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_E7GBT{transition-duration:.1ms}}.MultiSelect_select_E7GBT [data-display]{color:var(--color-default);font-family:var(--font-family)}.MultiSelect_select_E7GBT.MultiSelect_expanded_E7GBT .MultiSelect_list-wrapper_E7GBT{background:var(--light)}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT):has(button:focus){position:relative;z-index:2;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:calc(.125 * var(--font-size));border-radius:var(--focus-border-radius)}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT) .MultiSelect_custom-select_E7GBT:focus:not(.MultiSelect_error_E7GBT){border-color:var(--input-border-color);border-width:var(--input-border-width);padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_E7GBT:hover:not(.MultiSelect_disabled_E7GBT):not(.MultiSelect_expanded_E7GBT):not(.MultiSelect_error_E7GBT) .MultiSelect_custom-select_E7GBT:not(:focus){border-color:var(--input-border-color);border-width:var(--input-border-width);background-color:var(--color-blue-grey25)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{box-sizing:border-box;width:100%;min-height:calc(2.875 * var(--font-size) - 2 * var(--input-border-width));padding:0 calc(.5 * var(--font-size) - var(--input-border-width));background-color:transparent;border-color:var(--color-blue-grey500);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);font-size:var(--form-control-font-size);transition-property:background-color,border-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{transition-duration:.1ms}}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT:focus-visible,.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT:focus{outline:none}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT{border-color:var(--error)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT:focus{border-width:var(--input-border-width)}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT.MultiSelect_disabled_E7GBT{border-color:var(--color-disabled);pointer-events:none}.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT .MultiSelect_display-container_E7GBT{flex:1;display:flex;align-items:center;padding:.1875rem 0;gap:.375rem}.MultiSelect_select_E7GBT .MultiSelect_list-wrapper-container_E7GBT{position:relative}.MultiSelect_select_E7GBT .MultiSelect_list-wrapper_E7GBT{border-color:var(--light-grey-border);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);box-shadow:0 4px 5px #01053233;box-shadow:0 3px 14px #0105321f;box-shadow:0 8px 10px #01053224;position:absolute;z-index:11;left:0;width:100%;overflow:auto}.MultiSelect_select_E7GBT ul{box-sizing:border-box;padding:.25rem 0;width:100%;margin:0;list-style:none;background-color:var(--light);border-radius:var(--input-border-radius);color:var(--default);text-align:left;overflow:auto;max-height:25rem}.MultiSelect_select_E7GBT ul li{padding:.62rem .75rem;font-size:var(--form-control-font-size);margin:0;position:relative;line-height:1.43;box-sizing:border-box;min-height:2.5rem;cursor:pointer}.MultiSelect_select_E7GBT ul li:after{content:"";position:absolute;top:0;left:0;background-color:transparent;width:100%;height:100%;opacity:.05}.MultiSelect_select_E7GBT ul li:focus,.MultiSelect_select_E7GBT ul li.MultiSelect_focus_E7GBT{outline:none}.MultiSelect_select_E7GBT ul li:focus:before,.MultiSelect_select_E7GBT ul li.MultiSelect_focus_E7GBT:before{content:"";position:absolute;top:0;left:.125rem;height:100%;width:calc(100% - .25rem);opacity:1;z-index:101;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:0;border-radius:var(--focus-border-radius)}.MultiSelect_select_E7GBT ul li:hover:after,.MultiSelect_select_E7GBT ul li:active:after{background-color:var(--color-primary)}.MultiSelect_select_E7GBT ul li:active:after{opacity:.1}.MultiSelect_select_E7GBT ul li.MultiSelect_disabled_E7GBT{color:var(--greyed-out);background-color:var(--disabled);pointer-events:none}.MultiSelect_status_E7GBT{padding:.3125rem;display:flex;align-items:center}.MultiSelect_status_E7GBT [data-icon-status=success]{color:var(--success);font-size:var(--font-size-big)}.MultiSelect_status_E7GBT [data-icon-status=error]{color:var(--error);font-size:var(--font-size-big)}.MultiSelect_status_E7GBT .MultiSelect_chevron-icon_E7GBT{color:var(--default);font-size:var(--font-size-small)}.MultiSelect_status_E7GBT *+*{margin-left:1.25rem}.MultiSelect_placeholder_E7GBT{color:var(--greyed-out)}.MultiSelect_select-search_E7GBT{flex:1;box-sizing:border-box;border-bottom-left-radius:0;border-bottom-right-radius:0;border:0;background-color:transparent;color:var(--default);font-family:var(--font-family);font-size:calc(.83 * var(--font-size));line-height:1.3333;margin:0;padding:0}.MultiSelect_select-search_E7GBT:focus-visible,.MultiSelect_select-search_E7GBT:focus{outline:none}.MultiSelect_disabled_E7GBT{cursor:not-allowed;color:var(--greyed-out);background-color:var(--color-blue-grey25)}.MultiSelect_disabled_E7GBT>*{pointer-events:none}@media only screen and (min-width: 30em){.MultiSelect_select_E7GBT .MultiSelect_custom-select_E7GBT{padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_E7GBT:not(.MultiSelect_expanded_E7GBT) .MultiSelect_custom-select_E7GBT:focus:not(.MultiSelect_error_E7GBT){padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT{color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT.MultiSelect_error_E7GBT,[data-readonlyview=true] .MultiSelect_custom-select_E7GBT.MultiSelect_success_E7GBT{border-color:var(--read-only-border-color)}[data-readonlyview=true] .MultiSelect_custom-select_E7GBT button{pointer-events:none}[data-readonlyview=true] .MultiSelect_status_E7GBT .MultiSelect_chevron-icon_E7GBT{visibility:hidden}[data-readonlyview=true]:hover:not(.MultiSelect_disabled_E7GBT):not(.MultiSelect_expanded_E7GBT):not(.MultiSelect_error_E7GBT) .MultiSelect_custom-select_E7GBT:not(:focus){color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
- const select = "MultiSelect_select_E7GBT";
3
- const expanded = "MultiSelect_expanded_E7GBT";
4
- const error = "MultiSelect_error_E7GBT";
5
- const disabled = "MultiSelect_disabled_E7GBT";
6
- const focus = "MultiSelect_focus_E7GBT";
7
- const status = "MultiSelect_status_E7GBT";
8
- const placeholder = "MultiSelect_placeholder_E7GBT";
9
- const success = "MultiSelect_success_E7GBT";
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('.MultiSelect_sr-only_EsL6T{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.MultiSelect_hidden_EsL6T{display:none}.MultiSelect_slide-in_EsL6T{animation:MultiSelect_slide-in_EsL6T .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-in_EsL6T{animation-duration:.1ms}}.MultiSelect_slide-out_EsL6T{animation:MultiSelect_slide-out_EsL6T .5s forwards}@media (prefers-reduced-motion: reduce){.MultiSelect_slide-out_EsL6T{animation-duration:.1ms}}@keyframes MultiSelect_slide-in_EsL6T{0%{transform:translateY(100vh)}to{transform:translateY(0)}}@keyframes MultiSelect_slide-out_EsL6T{0%{transform:translateY(0)}to{transform:translateY(100vh)}}/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.MultiSelect_select_EsL6T{position:relative;box-sizing:border-box;border:0;border-radius:var(--input-border-radius);background-color:var(--input-background-color);font-size:var(--form-control-font-size);transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_EsL6T{transition-duration:.1ms}}.MultiSelect_select_EsL6T [data-display]{color:var(--color-default);font-family:var(--font-family)}.MultiSelect_select_EsL6T.MultiSelect_expanded_EsL6T .MultiSelect_list-wrapper_EsL6T{background:var(--light)}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T):has(button:focus){position:relative;z-index:2;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:calc(.125 * var(--font-size));border-radius:var(--focus-border-radius)}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T) .MultiSelect_custom-select_EsL6T:focus:not(.MultiSelect_error_EsL6T){border-color:var(--input-border-color);border-width:var(--input-border-width);padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_EsL6T:hover:not(.MultiSelect_disabled_EsL6T):not(.MultiSelect_expanded_EsL6T):not(.MultiSelect_error_EsL6T) .MultiSelect_custom-select_EsL6T:not(:focus){border-color:var(--input-border-color);border-width:var(--input-border-width);background-color:var(--color-blue-grey25)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{box-sizing:border-box;width:100%;min-height:calc(2.875 * var(--font-size) - 2 * var(--input-border-width));padding:0 calc(.5 * var(--font-size) - var(--input-border-width));background-color:transparent;border-color:var(--color-blue-grey500);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);font-size:var(--form-control-font-size);transition-property:background-color,border-color;transition-duration:.2s;transition-timing-function:ease-in-out}@media (prefers-reduced-motion: reduce){.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{transition-duration:.1ms}}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T:focus-visible,.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T:focus{outline:none}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T{border-color:var(--error)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T:focus{border-width:var(--input-border-width)}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T.MultiSelect_disabled_EsL6T{border-color:var(--color-disabled);pointer-events:none}.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T .MultiSelect_display-container_EsL6T{flex:1;display:flex;align-items:center;padding:.1875rem 0;gap:.375rem}.MultiSelect_select_EsL6T .MultiSelect_list-wrapper-container_EsL6T{position:relative}.MultiSelect_select_EsL6T .MultiSelect_list-wrapper_EsL6T{border-color:var(--light-grey-border);border-style:var(--input-border-style);border-width:var(--input-border-width);border-radius:var(--input-border-radius);box-shadow:0 4px 5px #01053233;box-shadow:0 3px 14px #0105321f;box-shadow:0 8px 10px #01053224;position:absolute;z-index:11;left:0;width:100%;overflow:auto}.MultiSelect_select_EsL6T ul{box-sizing:border-box;padding:.25rem 0;width:100%;margin:0;list-style:none;background-color:var(--light);border-radius:var(--input-border-radius);color:var(--default);text-align:left;overflow:auto;max-height:25rem}.MultiSelect_select_EsL6T ul li{padding:.62rem .75rem;font-size:var(--form-control-font-size);font-family:var(--font-family);margin:0;position:relative;line-height:1.43;box-sizing:border-box;min-height:2.5rem;cursor:pointer}.MultiSelect_select_EsL6T ul li:after{content:"";position:absolute;top:0;left:0;background-color:transparent;width:100%;height:100%;opacity:.05}.MultiSelect_select_EsL6T ul li:focus,.MultiSelect_select_EsL6T ul li.MultiSelect_focus_EsL6T{outline:none}.MultiSelect_select_EsL6T ul li:focus:before,.MultiSelect_select_EsL6T ul li.MultiSelect_focus_EsL6T:before{content:"";position:absolute;top:0;left:.125rem;height:100%;width:calc(100% - .25rem);opacity:1;z-index:101;outline:calc(.125 * var(--font-size)) solid var(--color-focus);outline-offset:0;border-radius:var(--focus-border-radius)}.MultiSelect_select_EsL6T ul li:hover:after,.MultiSelect_select_EsL6T ul li:active:after{background-color:var(--color-primary)}.MultiSelect_select_EsL6T ul li:active:after{opacity:.1}.MultiSelect_select_EsL6T ul li.MultiSelect_disabled_EsL6T{color:var(--greyed-out);background-color:var(--disabled);pointer-events:none}.MultiSelect_status_EsL6T{padding:.3125rem;display:flex;align-items:center}.MultiSelect_status_EsL6T [data-icon-status=success]{color:var(--success);font-size:var(--font-size-big)}.MultiSelect_status_EsL6T [data-icon-status=error]{color:var(--error);font-size:var(--font-size-big)}.MultiSelect_status_EsL6T .MultiSelect_chevron-icon_EsL6T{color:var(--default);font-size:var(--font-size-small)}.MultiSelect_status_EsL6T *+*{margin-left:1.25rem}.MultiSelect_placeholder_EsL6T{color:var(--greyed-out)}.MultiSelect_select-search_EsL6T{flex:1;box-sizing:border-box;border-bottom-left-radius:0;border-bottom-right-radius:0;border:0;background-color:transparent;color:var(--default);font-family:var(--font-family);font-size:calc(.83 * var(--font-size));line-height:1.3333;margin:0;padding:0}.MultiSelect_select-search_EsL6T:focus-visible,.MultiSelect_select-search_EsL6T:focus{outline:none}.MultiSelect_disabled_EsL6T{cursor:not-allowed;color:var(--greyed-out);background-color:var(--color-blue-grey25)}.MultiSelect_disabled_EsL6T>*{pointer-events:none}@media only screen and (min-width: 30em){.MultiSelect_select_EsL6T .MultiSelect_custom-select_EsL6T{padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}.MultiSelect_select_EsL6T:not(.MultiSelect_expanded_EsL6T) .MultiSelect_custom-select_EsL6T:focus:not(.MultiSelect_error_EsL6T){padding:0 calc(.5 * var(--font-size) - var(--input-border-width))}}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T{color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T.MultiSelect_error_EsL6T,[data-readonlyview=true] .MultiSelect_custom-select_EsL6T.MultiSelect_success_EsL6T{border-color:var(--read-only-border-color)}[data-readonlyview=true] .MultiSelect_custom-select_EsL6T button{pointer-events:none}[data-readonlyview=true] .MultiSelect_status_EsL6T .MultiSelect_chevron-icon_EsL6T{visibility:hidden}[data-readonlyview=true]:hover:not(.MultiSelect_disabled_EsL6T):not(.MultiSelect_expanded_EsL6T):not(.MultiSelect_error_EsL6T) .MultiSelect_custom-select_EsL6T:not(:focus){color:var(--read-only-text-color);border-color:var(--read-only-border-color);background-color:var(--color-white)}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}();
2
+ const select = "MultiSelect_select_EsL6T";
3
+ const expanded = "MultiSelect_expanded_EsL6T";
4
+ const error = "MultiSelect_error_EsL6T";
5
+ const disabled = "MultiSelect_disabled_EsL6T";
6
+ const focus = "MultiSelect_focus_EsL6T";
7
+ const status = "MultiSelect_status_EsL6T";
8
+ const placeholder = "MultiSelect_placeholder_EsL6T";
9
+ const success = "MultiSelect_success_EsL6T";
10
10
  const classes = {
11
11
  select,
12
12
  expanded,
13
- "list-wrapper": "MultiSelect_list-wrapper_E7GBT",
14
- "custom-select": "MultiSelect_custom-select_E7GBT",
13
+ "list-wrapper": "MultiSelect_list-wrapper_EsL6T",
14
+ "custom-select": "MultiSelect_custom-select_EsL6T",
15
15
  error,
16
16
  disabled,
17
- "display-container": "MultiSelect_display-container_E7GBT",
18
- "list-wrapper-container": "MultiSelect_list-wrapper-container_E7GBT",
17
+ "display-container": "MultiSelect_display-container_EsL6T",
18
+ "list-wrapper-container": "MultiSelect_list-wrapper-container_EsL6T",
19
19
  focus,
20
20
  status,
21
- "chevron-icon": "MultiSelect_chevron-icon_E7GBT",
21
+ "chevron-icon": "MultiSelect_chevron-icon_EsL6T",
22
22
  placeholder,
23
- "select-search": "MultiSelect_select-search_E7GBT",
23
+ "select-search": "MultiSelect_select-search_EsL6T",
24
24
  success
25
25
  };
26
26
  export {
@@ -1,3 +1,3 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.SelectButton_btn_E7GBT{position:absolute;top:0;left:0;height:100%;width:100%;border:0;padding:0;background:none;cursor:pointer;outline:0}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}}();
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="SelectButton_btn_E7GBT",t={btn:e};exports.btn=e,exports.default=t;
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.SelectButton_btn_EsL6T{position:absolute;top:0;left:0;height:100%;width:100%;border:0;padding:0;background:none;cursor:pointer;outline:0}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}}();
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="SelectButton_btn_EsL6T",t={btn:e};exports.btn=e,exports.default=t;
3
3
  //# sourceMappingURL=SelectButton.module.scss.cjs.js.map
@@ -1,5 +1,5 @@
1
- !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.SelectButton_btn_E7GBT{position:absolute;top:0;left:0;height:100%;width:100%;border:0;padding:0;background:none;cursor:pointer;outline:0}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}}();
2
- const btn = "SelectButton_btn_E7GBT";
1
+ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('/*!\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.SelectButton_btn_EsL6T{position:absolute;top:0;left:0;height:100%;width:100%;border:0;padding:0;background:none;cursor:pointer;outline:0}')),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}}();
2
+ const btn = "SelectButton_btn_EsL6T";
3
3
  const classes = {
4
4
  btn
5
5
  };