@laerdal/life-react-components 1.10.3-dev.2 → 1.10.3-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/Accordion/AccordionItem.cjs +22 -6
  2. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  3. package/dist/Accordion/AccordionItem.js +21 -6
  4. package/dist/Accordion/AccordionItem.js.map +1 -1
  5. package/dist/Accordion/AccordionMenu.cjs +40 -21
  6. package/dist/Accordion/AccordionMenu.cjs.map +1 -1
  7. package/dist/Accordion/AccordionMenu.d.ts +2 -2
  8. package/dist/Accordion/AccordionMenu.js +39 -21
  9. package/dist/Accordion/AccordionMenu.js.map +1 -1
  10. package/dist/Accordion/ContentAccordion.cjs +56 -29
  11. package/dist/Accordion/ContentAccordion.cjs.map +1 -1
  12. package/dist/Accordion/ContentAccordion.d.ts +2 -2
  13. package/dist/Accordion/ContentAccordion.js +54 -29
  14. package/dist/Accordion/ContentAccordion.js.map +1 -1
  15. package/dist/Banners/Banner.cjs +18 -8
  16. package/dist/Banners/Banner.cjs.map +1 -1
  17. package/dist/Banners/Banner.d.ts +1 -1
  18. package/dist/Banners/Banner.js +18 -5
  19. package/dist/Banners/Banner.js.map +1 -1
  20. package/dist/Banners/OverviewBanner.cjs +14 -3
  21. package/dist/Banners/OverviewBanner.cjs.map +1 -1
  22. package/dist/Banners/OverviewBanner.d.ts +3 -2
  23. package/dist/Banners/OverviewBanner.js +12 -3
  24. package/dist/Banners/OverviewBanner.js.map +1 -1
  25. package/dist/Breadcrumb/Breadcrumb.cjs +16 -4
  26. package/dist/Breadcrumb/Breadcrumb.cjs.map +1 -1
  27. package/dist/Breadcrumb/Breadcrumb.d.ts +1 -1
  28. package/dist/Breadcrumb/Breadcrumb.js +15 -4
  29. package/dist/Breadcrumb/Breadcrumb.js.map +1 -1
  30. package/dist/Button/Iconbutton.cjs +20 -14
  31. package/dist/Button/Iconbutton.cjs.map +1 -1
  32. package/dist/Button/Iconbutton.d.ts +1 -4
  33. package/dist/Button/Iconbutton.js +17 -14
  34. package/dist/Button/Iconbutton.js.map +1 -1
  35. package/dist/Card/HorizontalCard/HorizontalCard.cjs +8 -2
  36. package/dist/Card/HorizontalCard/HorizontalCard.cjs.map +1 -1
  37. package/dist/Card/HorizontalCard/HorizontalCard.js +6 -2
  38. package/dist/Card/HorizontalCard/HorizontalCard.js.map +1 -1
  39. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs +2 -8
  40. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs.map +1 -1
  41. package/dist/Card/HorizontalCard/HorizontalCardActions.js +2 -2
  42. package/dist/Card/HorizontalCard/HorizontalCardActions.js.map +1 -1
  43. package/dist/Card/HorizontalCard/types.d.ts +1 -1
  44. package/dist/Card/VerticalCard/Card.cjs +12 -5
  45. package/dist/Card/VerticalCard/Card.cjs.map +1 -1
  46. package/dist/Card/VerticalCard/Card.d.ts +1 -1
  47. package/dist/Card/VerticalCard/Card.js +10 -5
  48. package/dist/Card/VerticalCard/Card.js.map +1 -1
  49. package/dist/Chips/ActionChip.cjs +18 -14
  50. package/dist/Chips/ActionChip.cjs.map +1 -1
  51. package/dist/Chips/ActionChip.js +16 -5
  52. package/dist/Chips/ActionChip.js.map +1 -1
  53. package/dist/Chips/ChipTypes.d.ts +5 -3
  54. package/dist/Chips/ChoiceChips.cjs +24 -16
  55. package/dist/Chips/ChoiceChips.cjs.map +1 -1
  56. package/dist/Chips/ChoiceChips.js +22 -9
  57. package/dist/Chips/ChoiceChips.js.map +1 -1
  58. package/dist/Chips/FilterChip.cjs +18 -14
  59. package/dist/Chips/FilterChip.cjs.map +1 -1
  60. package/dist/Chips/FilterChip.js +16 -5
  61. package/dist/Chips/FilterChip.js.map +1 -1
  62. package/dist/Chips/InputChip.cjs +18 -14
  63. package/dist/Chips/InputChip.cjs.map +1 -1
  64. package/dist/Chips/InputChip.js +17 -5
  65. package/dist/Chips/InputChip.js.map +1 -1
  66. package/dist/ChipsInput/ChipDropdownInput.cjs +14 -7
  67. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  68. package/dist/ChipsInput/ChipDropdownInput.d.ts +1 -1
  69. package/dist/ChipsInput/ChipDropdownInput.js +12 -6
  70. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  71. package/dist/ChipsInput/ChipInput.cjs +16 -12
  72. package/dist/ChipsInput/ChipInput.cjs.map +1 -1
  73. package/dist/ChipsInput/ChipInput.d.ts +1 -1
  74. package/dist/ChipsInput/ChipInput.js +14 -7
  75. package/dist/ChipsInput/ChipInput.js.map +1 -1
  76. package/dist/ChipsInput/ChipInputField.cjs +22 -4
  77. package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
  78. package/dist/ChipsInput/ChipInputField.d.ts +1 -1
  79. package/dist/ChipsInput/ChipInputField.js +18 -4
  80. package/dist/ChipsInput/ChipInputField.js.map +1 -1
  81. package/dist/ChipsInput/ChipInputTypes.d.ts +2 -1
  82. package/dist/Dropdown/BasicDropdown.cjs +88 -64
  83. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  84. package/dist/Dropdown/BasicDropdown.d.ts +13 -8
  85. package/dist/Dropdown/BasicDropdown.js +87 -65
  86. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  87. package/dist/Dropdown/DropdownFilter.cjs +30 -14
  88. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  89. package/dist/Dropdown/DropdownFilter.d.ts +3 -3
  90. package/dist/Dropdown/DropdownFilter.js +26 -13
  91. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  92. package/dist/Footer/SiteFooter.cjs +16 -4
  93. package/dist/Footer/SiteFooter.cjs.map +1 -1
  94. package/dist/Footer/SiteFooter.d.ts +6 -2
  95. package/dist/Footer/SiteFooter.js +14 -4
  96. package/dist/Footer/SiteFooter.js.map +1 -1
  97. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs +2 -8
  98. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs.map +1 -1
  99. package/dist/GlobalNavigationBar/desktop/DesktopActions.js +2 -2
  100. package/dist/GlobalNavigationBar/desktop/DesktopActions.js.map +1 -1
  101. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.cjs +1 -1
  102. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.cjs.map +1 -1
  103. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js +1 -1
  104. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js.map +1 -1
  105. package/dist/Image/ImageWithFallbacks.cjs +10 -2
  106. package/dist/Image/ImageWithFallbacks.cjs.map +1 -1
  107. package/dist/Image/ImageWithFallbacks.d.ts +1 -1
  108. package/dist/Image/ImageWithFallbacks.js +9 -2
  109. package/dist/Image/ImageWithFallbacks.js.map +1 -1
  110. package/dist/InputFields/Checkbox.cjs +16 -4
  111. package/dist/InputFields/Checkbox.cjs.map +1 -1
  112. package/dist/InputFields/Checkbox.d.ts +1 -1
  113. package/dist/InputFields/Checkbox.js +13 -4
  114. package/dist/InputFields/Checkbox.js.map +1 -1
  115. package/dist/InputFields/DatepickerField.cjs +44 -38
  116. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  117. package/dist/InputFields/DatepickerField.d.ts +17 -20
  118. package/dist/InputFields/DatepickerField.js +33 -20
  119. package/dist/InputFields/DatepickerField.js.map +1 -1
  120. package/dist/InputFields/NumberField.cjs +63 -52
  121. package/dist/InputFields/NumberField.cjs.map +1 -1
  122. package/dist/InputFields/NumberField.d.ts +14 -19
  123. package/dist/InputFields/NumberField.js +60 -53
  124. package/dist/InputFields/NumberField.js.map +1 -1
  125. package/dist/InputFields/PasswordField.cjs +25 -8
  126. package/dist/InputFields/PasswordField.cjs.map +1 -1
  127. package/dist/InputFields/PasswordField.d.ts +14 -14
  128. package/dist/InputFields/PasswordField.js +22 -9
  129. package/dist/InputFields/PasswordField.js.map +1 -1
  130. package/dist/InputFields/RadioButton.cjs +17 -5
  131. package/dist/InputFields/RadioButton.cjs.map +1 -1
  132. package/dist/InputFields/RadioButton.d.ts +2 -2
  133. package/dist/InputFields/RadioButton.js +14 -5
  134. package/dist/InputFields/RadioButton.js.map +1 -1
  135. package/dist/InputFields/TextField.cjs +23 -8
  136. package/dist/InputFields/TextField.cjs.map +1 -1
  137. package/dist/InputFields/TextField.d.ts +20 -20
  138. package/dist/InputFields/TextField.js +22 -9
  139. package/dist/InputFields/TextField.js.map +1 -1
  140. package/dist/InputFields/Textarea.cjs +20 -7
  141. package/dist/InputFields/Textarea.cjs.map +1 -1
  142. package/dist/InputFields/Textarea.d.ts +16 -2
  143. package/dist/InputFields/Textarea.js +18 -8
  144. package/dist/InputFields/Textarea.js.map +1 -1
  145. package/dist/InputFields/components/SearchBarInput.cjs +4 -1
  146. package/dist/InputFields/components/SearchBarInput.cjs.map +1 -1
  147. package/dist/InputFields/components/SearchBarInput.js +4 -1
  148. package/dist/InputFields/components/SearchBarInput.js.map +1 -1
  149. package/dist/InputFields/index.cjs +26 -0
  150. package/dist/InputFields/index.cjs.map +1 -1
  151. package/dist/InputFields/index.d.ts +1 -0
  152. package/dist/InputFields/index.js +1 -0
  153. package/dist/InputFields/index.js.map +1 -1
  154. package/dist/InputFields/types.d.ts +1 -1
  155. package/dist/LinearProgress/LinearProgress.cjs +17 -4
  156. package/dist/LinearProgress/LinearProgress.cjs.map +1 -1
  157. package/dist/LinearProgress/LinearProgress.d.ts +1 -1
  158. package/dist/LinearProgress/LinearProgress.js +14 -4
  159. package/dist/LinearProgress/LinearProgress.js.map +1 -1
  160. package/dist/List/ListRow.cjs +15 -8
  161. package/dist/List/ListRow.cjs.map +1 -1
  162. package/dist/List/ListRow.d.ts +1 -1
  163. package/dist/List/ListRow.js +13 -8
  164. package/dist/List/ListRow.js.map +1 -1
  165. package/dist/MenuItem/MenuItem.cjs +16 -6
  166. package/dist/MenuItem/MenuItem.cjs.map +1 -1
  167. package/dist/MenuItem/MenuItem.d.ts +1 -3
  168. package/dist/MenuItem/MenuItem.js +14 -6
  169. package/dist/MenuItem/MenuItem.js.map +1 -1
  170. package/dist/ProfileButton/ProfileButton.cjs +17 -8
  171. package/dist/ProfileButton/ProfileButton.cjs.map +1 -1
  172. package/dist/ProfileButton/ProfileButton.d.ts +8 -12
  173. package/dist/ProfileButton/ProfileButton.js +14 -8
  174. package/dist/ProfileButton/ProfileButton.js.map +1 -1
  175. package/dist/QuizButton/QuizButton.cjs +17 -6
  176. package/dist/QuizButton/QuizButton.cjs.map +1 -1
  177. package/dist/QuizButton/QuizButton.d.ts +1 -2
  178. package/dist/QuizButton/QuizButton.js +15 -6
  179. package/dist/QuizButton/QuizButton.js.map +1 -1
  180. package/dist/SegmentControl/SegmentControl.cjs +28 -8
  181. package/dist/SegmentControl/SegmentControl.cjs.map +1 -1
  182. package/dist/SegmentControl/SegmentControl.d.ts +2 -2
  183. package/dist/SegmentControl/SegmentControl.js +26 -8
  184. package/dist/SegmentControl/SegmentControl.js.map +1 -1
  185. package/dist/SideMenu/SideMenu.cjs +11 -4
  186. package/dist/SideMenu/SideMenu.cjs.map +1 -1
  187. package/dist/SideMenu/SideMenu.js +10 -4
  188. package/dist/SideMenu/SideMenu.js.map +1 -1
  189. package/dist/SideMenu/types.d.ts +1 -1
  190. package/dist/Table/Table.cjs +21 -28
  191. package/dist/Table/Table.cjs.map +1 -1
  192. package/dist/Table/Table.js +22 -29
  193. package/dist/Table/Table.js.map +1 -1
  194. package/dist/Table/TableBody.cjs +122 -42
  195. package/dist/Table/TableBody.cjs.map +1 -1
  196. package/dist/Table/TableBody.d.ts +4 -1
  197. package/dist/Table/TableBody.js +120 -43
  198. package/dist/Table/TableBody.js.map +1 -1
  199. package/dist/Table/TableFooter.cjs +63 -65
  200. package/dist/Table/TableFooter.cjs.map +1 -1
  201. package/dist/Table/TableFooter.js +63 -65
  202. package/dist/Table/TableFooter.js.map +1 -1
  203. package/dist/Table/TableHeaders.cjs +13 -67
  204. package/dist/Table/TableHeaders.cjs.map +1 -1
  205. package/dist/Table/TableHeaders.d.ts +1 -4
  206. package/dist/Table/TableHeaders.js +15 -64
  207. package/dist/Table/TableHeaders.js.map +1 -1
  208. package/dist/Table/TableStyles.cjs +30 -20
  209. package/dist/Table/TableStyles.cjs.map +1 -1
  210. package/dist/Table/TableStyles.d.ts +5 -3
  211. package/dist/Table/TableStyles.js +23 -20
  212. package/dist/Table/TableStyles.js.map +1 -1
  213. package/dist/Tabs/HorizontalTabs.cjs +32 -13
  214. package/dist/Tabs/HorizontalTabs.cjs.map +1 -1
  215. package/dist/Tabs/HorizontalTabs.d.ts +7 -4
  216. package/dist/Tabs/HorizontalTabs.js +30 -13
  217. package/dist/Tabs/HorizontalTabs.js.map +1 -1
  218. package/dist/Tag/Tag.cjs +16 -4
  219. package/dist/Tag/Tag.cjs.map +1 -1
  220. package/dist/Tag/Tag.d.ts +1 -1
  221. package/dist/Tag/Tag.js +14 -4
  222. package/dist/Tag/Tag.js.map +1 -1
  223. package/dist/Tile/Tile.cjs +11 -4
  224. package/dist/Tile/Tile.cjs.map +1 -1
  225. package/dist/Tile/Tile.js +10 -4
  226. package/dist/Tile/Tile.js.map +1 -1
  227. package/dist/Tile/TileTypes.d.ts +1 -1
  228. package/dist/Toasters/Toast.cjs.map +1 -1
  229. package/dist/Toasters/Toast.js.map +1 -1
  230. package/dist/Toggles/ToggleButton.cjs +36 -17
  231. package/dist/Toggles/ToggleButton.cjs.map +1 -1
  232. package/dist/Toggles/ToggleButton.d.ts +1 -2
  233. package/dist/Toggles/ToggleButton.js +33 -17
  234. package/dist/Toggles/ToggleButton.js.map +1 -1
  235. package/dist/Toggles/ToggleSwitch.cjs +27 -17
  236. package/dist/Toggles/ToggleSwitch.cjs.map +1 -1
  237. package/dist/Toggles/ToggleSwitch.d.ts +5 -1
  238. package/dist/Toggles/ToggleSwitch.js +24 -12
  239. package/dist/Toggles/ToggleSwitch.js.map +1 -1
  240. package/dist/Toggles/TogglerTypes.d.ts +1 -1
  241. package/dist/common/FocusVisible.cjs.map +1 -1
  242. package/dist/common/FocusVisible.d.ts +1 -1
  243. package/dist/common/FocusVisible.js.map +1 -1
  244. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Toggles/ToggleButton.tsx"],"names":["React","IconButton","styled","IconButtonContent","COLORS","Wrapper","div","white","primary_500","neutral_300","ToggleButton","forwardRef","props","ref","useState","active","setActive","useEffect","cls","activeState","disabled","onChange","id","color","defaultState","icon"],"mappings":";;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,QAA2B,WAA3B;AACA,OAAOC,MAAP,MAAmB,mBAAnB;AACA,SAASC,iBAAT,QAAkC,sBAAlC;AACA,SAASC,MAAT,QAAuB,WAAvB;;AAEA,IAAMC,OAAO,GAAGH,MAAM,CAACI,GAAV,sjBACTH,iBADS,EAOPA,iBAPO,EAQOC,MAAM,CAACG,KARd,EAaPJ,iBAbO,EAkBaC,MAAM,CAACI,WAlBpB,EA0BPL,iBA1BO,EA2BOC,MAAM,CAACK,WA3Bd,CAAb;AA+CA,OAAO,IAAMC,YAAY,gBAAGV,KAAK,CAACW,UAAN,CAAiB,UAACC,KAAD,EAA2BC,GAA3B,EAAiE;AAAA;;AAC5G,wBAA4Bb,KAAK,CAACc,QAAN,CAAe,KAAf,CAA5B;AAAA;AAAA,MAAOC,MAAP;AAAA,MAAeC,SAAf;;AAEAhB,EAAAA,KAAK,CAACiB,SAAN,CAAgB;AAAA,WAAMD,SAAS,CAACJ,KAAK,CAACG,MAAP,CAAf;AAAA,GAAhB,EAA+C,CAACH,KAAK,CAACG,MAAP,CAA/C;AAEA,MAAMG,GAAG,aAAMH,MAAM,GAAG,QAAH,GAAc,EAA1B,cAAgCH,KAAK,CAACO,WAAN,GAAoB,cAApB,GAAqC,EAArE,cAA2EP,KAAK,CAACQ,QAAN,GAAiB,UAAjB,GAA8B,EAAzG,CAAT;AAEA,sBACE,KAAC,OAAD;AAAS,IAAA,SAAS,EAAEF,GAApB;AAAA,2BACE,KAAC,UAAD;AACE,MAAA,OAAO,EAAE,WADX;AAEE,MAAA,GAAG,EAAEL,GAFP;AAGE,MAAA,wBAAwB,EAAE,IAH5B;AAIE,MAAA,KAAK,EAAE,UAJT;AAKE,MAAA,MAAM,EAAE,kBAAM;AACZG,QAAAA,SAAS,CAAC,CAACD,MAAF,CAAT;;AACA,YAAIH,KAAK,CAACS,QAAV,EAAoB;AAClBT,UAAAA,KAAK,CAACS,QAAN,CAAe,CAACN,MAAhB;AACD;AACF,OAVH;AAWE,MAAA,EAAE,EAAEH,KAAK,CAACU,EAXZ;AAYE,MAAA,SAAS,EAAEP,MAAM,kDAAGH,KAAK,CAACO,WAAT,uDAAG,mBAAmBI,KAAtB,yEAA+BX,KAAK,CAACY,YAAN,CAAmBD,KAAlD,GAA0DX,KAAK,CAACY,YAAN,CAAmBD,KAZhG;AAaE,MAAA,QAAQ,EAAEX,KAAK,CAACQ,QAblB;AAAA,gBAcGL,MAAM,mDAAGH,KAAK,CAACO,WAAT,wDAAG,oBAAmBM,IAAtB,yEAA8Bb,KAAK,CAACY,YAAN,CAAmBC,IAAjD,GAAwDb,KAAK,CAACY,YAAN,CAAmBC;AAdpF;AADF,IADF;AAoBD,CA3B2B,CAArB;;AATLH,EAAAA,E;AACAP,EAAAA,M;AACAM,EAAAA,Q;AACAD,EAAAA,Q;AAEAI,EAAAA,Y;AAVAC,IAAAA,I;AACAF,IAAAA,K;;AAUAJ,EAAAA,W;AAXAM,IAAAA,I;AACAF,IAAAA,K;;;AA0CF,eAAeb,YAAf","sourcesContent":["import React from 'react';\nimport { IconButton } from '../Button';\nimport styled from 'styled-components';\nimport { IconButtonContent } from '../Button/Iconbutton';\nimport { COLORS } from '../styles';\n\nconst Wrapper = styled.div`\n ${IconButtonContent} {\n transition: all 0.1s ease-in-out;\n }\n\n &.disabled,\n &.active:not(.state-change) {\n ${IconButtonContent} {\n background: ${COLORS.white};\n }\n }\n\n &.active:not(.state-change) {\n ${IconButtonContent}:after {\n content: '';\n position: absolute;\n left: 12px;\n bottom: 1px;\n background-color: ${COLORS.primary_500};\n border-radius: 4px;\n height: 4px;\n width: 24px;\n }\n }\n\n &.disabled:not(.state-change) {\n ${IconButtonContent}:after {\n background: ${COLORS.neutral_300};\n }\n }\n`;\n\nexport interface ToggleButtonState {\n icon: React.ReactNode;\n color?: string;\n}\n\nexport interface ToggleButtonProps {\n id?: string;\n active: boolean;\n onChange?: (value: boolean) => void;\n disabled?: boolean;\n\n defaultState: ToggleButtonState;\n activeState?: ToggleButtonState;\n}\n\nexport const ToggleButton = React.forwardRef((props: ToggleButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const [active, setActive] = React.useState(false);\n\n React.useEffect(() => setActive(props.active), [props.active]);\n\n const cls = `${active ? 'active' : ''} ${props.activeState ? 'state-change' : ''} ${props.disabled ? 'disabled' : ''}`;\n\n return (\n <Wrapper className={cls}>\n <IconButton\n variant={'secondary'}\n ref={ref}\n useTransparentBackground={true}\n shape={'circular'}\n action={() => {\n setActive(!active);\n if (props.onChange) {\n props.onChange(!active);\n }\n }}\n id={props.id}\n iconColor={active ? props.activeState?.color ?? props.defaultState.color : props.defaultState.color}\n disabled={props.disabled}>\n {active ? props.activeState?.icon ?? props.defaultState.icon : props.defaultState.icon}\n </IconButton>\n </Wrapper>\n );\n});\n\nexport default ToggleButton;\n"],"file":"ToggleButton.js"}
1
+ {"version":3,"sources":["../../src/Toggles/ToggleButton.tsx"],"names":["React","IconButton","styled","IconButtonContent","COLORS","Wrapper","div","white","primary_500","neutral_300","ToggleButton","forwardRef","ref","id","active","onChange","disabled","defaultState","activeState","className","rest","useState","isActive","setIsActive","useEffect","cls","color","icon"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,QAA2B,WAA3B;AACA,OAAOC,MAAP,MAAmB,mBAAnB;AACA,SAASC,iBAAT,QAAkC,sBAAlC;AACA,SAASC,MAAT,QAAuB,WAAvB;;AAEA,IAAMC,OAAO,GAAGH,MAAM,CAACI,GAAV,sjBACTH,iBADS,EAOPA,iBAPO,EAQOC,MAAM,CAACG,KARd,EAaPJ,iBAbO,EAkBaC,MAAM,CAACI,WAlBpB,EA0BPL,iBA1BO,EA2BOC,MAAM,CAACK,WA3Bd,CAAb;AA8CA,OAAO,IAAMC,YAAY,gBAAGV,KAAK,CAACW,UAAN,CAAiB,gBASuBC,GATvB,EAS6D;AAAA;;AAAA,MAR1DC,EAQ0D,QAR1DA,EAQ0D;AAAA,MAP1DC,MAO0D,QAP1DA,MAO0D;AAAA,MAN1DC,QAM0D,QAN1DA,QAM0D;AAAA,MAL1DC,QAK0D,QAL1DA,QAK0D;AAAA,MAJ1DC,YAI0D,QAJ1DA,YAI0D;AAAA,MAH1DC,WAG0D,QAH1DA,WAG0D;AAAA,MAF1DC,SAE0D,QAF1DA,SAE0D;AAAA,MADvDC,IACuD;;AACxG,wBAAgCpB,KAAK,CAACqB,QAAN,CAAe,KAAf,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AAEAvB,EAAAA,KAAK,CAACwB,SAAN,CAAgB;AAAA,WAAMD,WAAW,CAACT,MAAD,CAAjB;AAAA,GAAhB,EAA2C,CAACA,MAAD,CAA3C;AAEA,MAAMW,GAAG,aAAMN,SAAS,IAAI,EAAnB,cAAyBG,QAAQ,GAAG,QAAH,GAAc,EAA/C,cAAqDJ,WAAW,GAAG,cAAH,GAAoB,EAApF,cAA0FF,QAAQ,GAAG,UAAH,GAAgB,EAAlH,CAAT;AAEA,sBACE,KAAC,OAAD;AAAS,IAAA,SAAS,EAAES,GAApB;AAAA,2BACE,KAAC,UAAD;AACE,MAAA,OAAO,EAAE,WADX;AAEE,MAAA,GAAG,EAAEb,GAFP;AAGE,MAAA,wBAAwB,EAAE,IAH5B;AAIE,MAAA,KAAK,EAAE,UAJT;AAKE,MAAA,MAAM,EAAE,kBAAM;AACZW,QAAAA,WAAW,CAAC,CAACD,QAAF,CAAX;;AACA,YAAIP,QAAJ,EAAc;AACZA,UAAAA,QAAQ,CAAC,CAACO,QAAF,CAAR;AACD;AACF,OAVH;AAWE,MAAA,EAAE,EAAET,EAXN;AAYE,MAAA,SAAS,EAAES,QAAQ,yBAAGJ,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAEQ,KAAhB,mEAAyBT,YAAY,CAACS,KAAtC,GAA8CT,YAAY,CAACS,KAZhF;AAaE,MAAA,QAAQ,EAAEV;AAbZ,OAcMI,IAdN;AAAA,gBAeGE,QAAQ,wBAAGJ,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAES,IAAhB,iEAAwBV,YAAY,CAACU,IAArC,GAA4CV,YAAY,CAACU;AAfpE;AADF,IADF;AAqBD,CArC2B,CAArB;;AARLb,EAAAA,M;AACAC,EAAAA,Q;AACAC,EAAAA,Q;AAEAC,EAAAA,Y;AATAU,IAAAA,I;AACAD,IAAAA,K;;AASAR,EAAAA,W;AAVAS,IAAAA,I;AACAD,IAAAA,K;;;AAmDF,eAAehB,YAAf","sourcesContent":["import React from 'react';\nimport { IconButton } from '../Button';\nimport styled from 'styled-components';\nimport { IconButtonContent } from '../Button/Iconbutton';\nimport { COLORS } from '../styles';\n\nconst Wrapper = styled.div`\n ${IconButtonContent} {\n transition: all 0.1s ease-in-out;\n }\n\n &.disabled,\n &.active:not(.state-change) {\n ${IconButtonContent} {\n background: ${COLORS.white};\n }\n }\n\n &.active:not(.state-change) {\n ${IconButtonContent}:after {\n content: '';\n position: absolute;\n left: 12px;\n bottom: 1px;\n background-color: ${COLORS.primary_500};\n border-radius: 4px;\n height: 4px;\n width: 24px;\n }\n }\n\n &.disabled:not(.state-change) {\n ${IconButtonContent}:after {\n background: ${COLORS.neutral_300};\n }\n }\n`;\n\nexport interface ToggleButtonState {\n icon: React.ReactNode;\n color?: string;\n}\n\nexport interface ToggleButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'disabled' | 'onClick'> {\n active: boolean;\n onChange?: (value: boolean) => void;\n disabled?: boolean;\n\n defaultState: ToggleButtonState;\n activeState?: ToggleButtonState;\n}\n\nexport const ToggleButton = React.forwardRef(({\n id,\n active,\n onChange,\n disabled,\n defaultState,\n activeState,\n className,\n ...rest\n }: ToggleButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const [isActive, setIsActive] = React.useState(false);\n\n React.useEffect(() => setIsActive(active), [active]);\n\n const cls = `${className || ''} ${isActive ? 'active' : ''} ${activeState ? 'state-change' : ''} ${disabled ? 'disabled' : ''}`;\n\n return (\n <Wrapper className={cls}>\n <IconButton\n variant={'secondary'}\n ref={ref}\n useTransparentBackground={true}\n shape={'circular'}\n action={() => {\n setIsActive(!isActive);\n if (onChange) {\n onChange(!isActive);\n }\n }}\n id={id}\n iconColor={isActive ? activeState?.color ?? defaultState.color : defaultState.color}\n disabled={disabled}\n {...rest}>\n {isActive ? activeState?.icon ?? defaultState.icon : defaultState.icon}\n </IconButton>\n </Wrapper>\n );\n});\n\nexport default ToggleButton;\n"],"file":"ToggleButton.js"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  var _typeof = require("@babel/runtime/helpers/typeof");
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
@@ -7,6 +9,10 @@ Object.defineProperty(exports, "__esModule", {
7
9
  });
8
10
  exports.default = void 0;
9
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+
10
16
  var React = _interopRequireWildcard(require("react"));
11
17
 
12
18
  var _TogglerStyles = require("./TogglerStyles");
@@ -17,18 +23,17 @@ var _common = require("../common");
17
23
 
18
24
  var _jsxRuntime = require("react/jsx-runtime");
19
25
 
26
+ var _excluded = ["id", "disabled", "selected", "label", "isSemantic", "size", "onToggle", "className"];
27
+
20
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
29
 
22
30
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
31
 
24
- /**
25
- * Import React libraries.
26
- */
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
33
 
28
- /**
29
- * Import custom styles.
30
- */
31
- var ToggleSwitch = function ToggleSwitch(_ref) {
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+
36
+ var ToggleSwitch = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
32
37
  var _size;
33
38
 
34
39
  var id = _ref.id,
@@ -37,7 +42,9 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
37
42
  label = _ref.label,
38
43
  isSemantic = _ref.isSemantic,
39
44
  size = _ref.size,
40
- onToggle = _ref.onToggle;
45
+ onToggle = _ref.onToggle,
46
+ className = _ref.className,
47
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
41
48
 
42
49
  /**
43
50
  * Does all required pre-requisites and toggles the switcher state.
@@ -49,19 +56,23 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
49
56
  onToggle(!selected);
50
57
  };
51
58
 
52
- var focusVisibleRef = (0, _common.useFocusVisibleRef)();
59
+ var focusVisibleRef = (0, _common.useFocusVisibleRef)([]);
60
+ React.useImperativeHandle(ref, function () {
61
+ return focusVisibleRef.current;
62
+ }, [focusVisibleRef]);
53
63
  size = (_size = size) !== null && _size !== void 0 ? _size : _.Size.Medium;
54
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TogglerStyles.StyledSwitch, {
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_TogglerStyles.StyledSwitch, _objectSpread(_objectSpread({
55
65
  ref: focusVisibleRef,
56
66
  onClick: function onClick(e) {
57
67
  return toggle();
58
68
  },
59
- onKeyUp: function onKeyUp(e) {
60
- return e.key === 'Enter' && toggle();
69
+ onKeyDown: function onKeyDown(e) {
70
+ return (e.key === 'Enter' || e.key === ' ') && toggle();
61
71
  },
62
- className: size.toString().toLowerCase().concat(disabled ? ' disabled' : ''),
72
+ className: size.toString().toLowerCase().concat(disabled ? ' disabled' : '').concat(className ? " ".concat(className) : ''),
63
73
  selected: selected,
64
- tabIndex: disabled ? -1 : 0,
74
+ tabIndex: disabled ? -1 : 0
75
+ }, rest), {}, {
65
76
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TogglerStyles.ToggleSwitchContainer, {
66
77
  id: "switchContainer",
67
78
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TogglerStyles.ToggleSwitch, {
@@ -72,9 +83,8 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
72
83
  htmlFor: id,
73
84
  children: label
74
85
  })]
75
- });
76
- };
77
-
86
+ }));
87
+ });
78
88
  var _default = ToggleSwitch;
79
89
  exports.default = _default;
80
90
  //# sourceMappingURL=ToggleSwitch.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Toggles/ToggleSwitch.tsx"],"names":["ToggleSwitch","id","disabled","selected","label","isSemantic","size","onToggle","toggle","focusVisibleRef","Size","Medium","e","key","toString","toLowerCase","concat"],"mappings":";;;;;;;;;AAGA;;AAUA;;AACA;;AACA;;;;;;;;AAfA;AACA;AACA;;AAQA;AACA;AACA;AAKA,IAAMA,YAAY,GAAG,SAAfA,YAAe,OAAsF;AAAA;;AAAA,MAAnFC,EAAmF,QAAnFA,EAAmF;AAAA,MAA/EC,QAA+E,QAA/EA,QAA+E;AAAA,MAArEC,QAAqE,QAArEA,QAAqE;AAAA,MAA3DC,KAA2D,QAA3DA,KAA2D;AAAA,MAApDC,UAAoD,QAApDA,UAAoD;AAAA,MAAxCC,IAAwC,QAAxCA,IAAwC;AAAA,MAAlCC,QAAkC,QAAlCA,QAAkC;;AACzG;AACF;AACA;AACE,MAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB;AACA,QAAIN,QAAJ,EAAc,OAFK,CAInB;;AACAK,IAAAA,QAAQ,CAAC,CAACJ,QAAF,CAAR;AACD,GAND;;AAOA,MAAMM,eAAe,GAAG,iCAAxB;AAEAH,EAAAA,IAAI,YAAGA,IAAH,yCAAWI,OAAKC,MAApB;AAEA,sBACE,sBAAC,2BAAD;AACE,IAAA,GAAG,EAAEF,eADP;AAEE,IAAA,OAAO,EAAE,iBAACG,CAAD;AAAA,aAAOJ,MAAM,EAAb;AAAA,KAFX;AAGE,IAAA,OAAO,EAAE,iBAACI,CAAD;AAAA,aAAOA,CAAC,CAACC,GAAF,KAAU,OAAV,IAAqBL,MAAM,EAAlC;AAAA,KAHX;AAIE,IAAA,SAAS,EAAEF,IAAI,CACZQ,QADQ,GAERC,WAFQ,GAGRC,MAHQ,CAGDd,QAAQ,GAAG,WAAH,GAAiB,EAHxB,CAJb;AAQE,IAAA,QAAQ,EAAEC,QARZ;AASE,IAAA,QAAQ,EAAED,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAT5B;AAAA,4BAUE,qBAAC,oCAAD;AAAuB,MAAA,EAAE,EAAC,iBAA1B;AAAA,6BACE,qBAAC,2BAAD;AAAQ,QAAA,SAAS,EAAEG,UAAU,GAAG,UAAH,GAAgB;AAA7C;AADF,MAVF,EAaGD,KAAK,iBACJ;AAAO,MAAA,SAAS,EAAE,OAAlB;AAA2B,MAAA,OAAO,EAAEH,EAApC;AAAA,gBACGG;AADH,MAdJ;AAAA,IADF;AAqBD,CApCD;;eAsCeJ,Y","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom types.\n */\nimport { ToggleSwitchProps } from './TogglerTypes';\n\n/**\n * Import custom styles.\n */\nimport { ToggleSwitchContainer, ToggleSwitch as Switch, StyledSwitch } from './TogglerStyles';\nimport { Size } from '..';\nimport { useFocusVisibleRef } from '../common';\n\nconst ToggleSwitch = ({ id, disabled, selected, label, isSemantic, size, onToggle }: ToggleSwitchProps) => {\n /**\n * Does all required pre-requisites and toggles the switcher state.\n */\n const toggle = () => {\n // If disabled, don't do anything\n if (disabled) return;\n\n // Toggle state change\n onToggle(!selected);\n };\n const focusVisibleRef = useFocusVisibleRef();\n\n size = size ?? Size.Medium;\n\n return (\n <StyledSwitch\n ref={focusVisibleRef}\n onClick={(e) => toggle()}\n onKeyUp={(e) => e.key === 'Enter' && toggle()}\n className={size\n .toString()\n .toLowerCase()\n .concat(disabled ? ' disabled' : '')}\n selected={selected}\n tabIndex={disabled ? -1 : 0}>\n <ToggleSwitchContainer id=\"switchContainer\">\n <Switch className={isSemantic ? 'semantic' : ''} />\n </ToggleSwitchContainer>\n {label && (\n <label className={'label'} htmlFor={id}>\n {label}\n </label>\n )}\n </StyledSwitch>\n );\n};\n\nexport default ToggleSwitch;\n"],"file":"ToggleSwitch.cjs"}
1
+ {"version":3,"sources":["../../src/Toggles/ToggleSwitch.tsx"],"names":["ToggleSwitch","React","forwardRef","ref","id","disabled","selected","label","isSemantic","size","onToggle","className","rest","toggle","focusVisibleRef","useImperativeHandle","current","Size","Medium","e","key","toString","toLowerCase","concat"],"mappings":";;;;;;;;;;;;;;;AAGA;;AAUA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,YAAY,gBAAGC,KAAK,CAACC,UAAN,CAAiB,gBAUuBC,GAVvB,EAU+B;AAAA;;AAAA,MAT5BC,EAS4B,QAT5BA,EAS4B;AAAA,MAR5BC,QAQ4B,QAR5BA,QAQ4B;AAAA,MAP5BC,QAO4B,QAP5BA,QAO4B;AAAA,MAN5BC,KAM4B,QAN5BA,KAM4B;AAAA,MAL5BC,UAK4B,QAL5BA,UAK4B;AAAA,MAJ5BC,IAI4B,QAJ5BA,IAI4B;AAAA,MAH5BC,QAG4B,QAH5BA,QAG4B;AAAA,MAF5BC,SAE4B,QAF5BA,SAE4B;AAAA,MADzBC,IACyB;;AACnE;AACF;AACA;AACE,MAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB;AACA,QAAIR,QAAJ,EAAc,OAFK,CAInB;;AACAK,IAAAA,QAAQ,CAAC,CAACJ,QAAF,CAAR;AACD,GAND;;AAQA,MAAMQ,eAAe,GAAG,gCAAmB,EAAnB,CAAxB;AAEAb,EAAAA,KAAK,CAACc,mBAAN,CAA0BZ,GAA1B,EAA+B;AAAA,WAAMW,eAAe,CAACE,OAAtB;AAAA,GAA/B,EAA8D,CAACF,eAAD,CAA9D;AAEAL,EAAAA,IAAI,YAAGA,IAAH,yCAAWQ,OAAKC,MAApB;AAEA,sBACE,sBAAC,2BAAD;AACE,IAAA,GAAG,EAAEJ,eADP;AAEE,IAAA,OAAO,EAAE,iBAACK,CAAD;AAAA,aAAON,MAAM,EAAb;AAAA,KAFX;AAGE,IAAA,SAAS,EAAE,mBAAAM,CAAC;AAAA,aAAI,CAACA,CAAC,CAACC,GAAF,KAAU,OAAV,IAAqBD,CAAC,CAACC,GAAF,KAAU,GAAhC,KAAwCP,MAAM,EAAlD;AAAA,KAHd;AAIE,IAAA,SAAS,EAAEJ,IAAI,CACZY,QADQ,GAERC,WAFQ,GAGRC,MAHQ,CAGDlB,QAAQ,GAAG,WAAH,GAAiB,EAHxB,EAIRkB,MAJQ,CAIDZ,SAAS,cAAOA,SAAP,IAAqB,EAJ7B,CAJb;AASE,IAAA,QAAQ,EAAEL,QATZ;AAUE,IAAA,QAAQ,EAAED,QAAQ,GAAG,CAAC,CAAJ,GAAQ;AAV5B,KAWMO,IAXN;AAAA,4BAYE,qBAAC,oCAAD;AAAuB,MAAA,EAAE,EAAC,iBAA1B;AAAA,6BACE,qBAAC,2BAAD;AAAQ,QAAA,SAAS,EAAEJ,UAAU,GAAG,UAAH,GAAgB;AAA7C;AADF,MAZF,EAeGD,KAAK,iBACJ;AAAO,MAAA,SAAS,EAAE,OAAlB;AAA2B,MAAA,OAAO,EAAEH,EAApC;AAAA,gBACGG;AADH,MAhBJ;AAAA,KADF;AAuBD,CAnDoB,CAArB;eAqDeP,Y","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom types.\n */\nimport {ToggleSwitchProps} from './TogglerTypes';\n\n/**\n * Import custom styles.\n */\nimport {ToggleSwitchContainer, ToggleSwitch as Switch, StyledSwitch} from './TogglerStyles';\nimport {Size} from '..';\nimport {useFocusVisibleRef} from '../common';\n\nconst ToggleSwitch = React.forwardRef(({\n id,\n disabled,\n selected,\n label,\n isSemantic,\n size,\n onToggle,\n className,\n ...rest\n }: ToggleSwitchProps, ref) => {\n /**\n * Does all required pre-requisites and toggles the switcher state.\n */\n const toggle = () => {\n // If disabled, don't do anything\n if (disabled) return;\n\n // Toggle state change\n onToggle(!selected);\n };\n\n const focusVisibleRef = useFocusVisibleRef([]);\n\n React.useImperativeHandle(ref, () => focusVisibleRef.current, [focusVisibleRef]);\n\n size = size ?? Size.Medium;\n\n return (\n <StyledSwitch\n ref={focusVisibleRef}\n onClick={(e) => toggle()}\n onKeyDown={e => (e.key === 'Enter' || e.key === ' ') && toggle()}\n className={size\n .toString()\n .toLowerCase()\n .concat(disabled ? ' disabled' : '')\n .concat(className ? ` ${className}` : '')}\n selected={selected}\n tabIndex={disabled ? -1 : 0}\n {...rest}>\n <ToggleSwitchContainer id=\"switchContainer\">\n <Switch className={isSemantic ? 'semantic' : ''} />\n </ToggleSwitchContainer>\n {label && (\n <label className={'label'} htmlFor={id}>\n {label}\n </label>\n )}\n </StyledSwitch>\n );\n});\n\nexport default ToggleSwitch;\n"],"file":"ToggleSwitch.cjs"}
@@ -1,6 +1,10 @@
1
+ /**
2
+ * Import React libraries.
3
+ */
4
+ import * as React from 'react';
1
5
  /**
2
6
  * Import custom types.
3
7
  */
4
8
  import { ToggleSwitchProps } from './TogglerTypes';
5
- declare const ToggleSwitch: ({ id, disabled, selected, label, isSemantic, size, onToggle }: ToggleSwitchProps) => JSX.Element;
9
+ declare const ToggleSwitch: React.ForwardRefExoticComponent<ToggleSwitchProps & React.RefAttributes<unknown>>;
6
10
  export default ToggleSwitch;
@@ -1,3 +1,11 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["id", "disabled", "selected", "label", "isSemantic", "size", "onToggle", "className"];
4
+
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
+
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
+
1
9
  /**
2
10
  * Import React libraries.
3
11
  */
@@ -14,8 +22,7 @@ import { Size } from '..';
14
22
  import { useFocusVisibleRef } from '../common';
15
23
  import { jsx as _jsx } from "react/jsx-runtime";
16
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
-
18
- var ToggleSwitch = function ToggleSwitch(_ref) {
25
+ var ToggleSwitch = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
19
26
  var _size;
20
27
 
21
28
  var id = _ref.id,
@@ -24,7 +31,9 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
24
31
  label = _ref.label,
25
32
  isSemantic = _ref.isSemantic,
26
33
  size = _ref.size,
27
- onToggle = _ref.onToggle;
34
+ onToggle = _ref.onToggle,
35
+ className = _ref.className,
36
+ rest = _objectWithoutProperties(_ref, _excluded);
28
37
 
29
38
  /**
30
39
  * Does all required pre-requisites and toggles the switcher state.
@@ -36,19 +45,23 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
36
45
  onToggle(!selected);
37
46
  };
38
47
 
39
- var focusVisibleRef = useFocusVisibleRef();
48
+ var focusVisibleRef = useFocusVisibleRef([]);
49
+ React.useImperativeHandle(ref, function () {
50
+ return focusVisibleRef.current;
51
+ }, [focusVisibleRef]);
40
52
  size = (_size = size) !== null && _size !== void 0 ? _size : Size.Medium;
41
- return /*#__PURE__*/_jsxs(StyledSwitch, {
53
+ return /*#__PURE__*/_jsxs(StyledSwitch, _objectSpread(_objectSpread({
42
54
  ref: focusVisibleRef,
43
55
  onClick: function onClick(e) {
44
56
  return toggle();
45
57
  },
46
- onKeyUp: function onKeyUp(e) {
47
- return e.key === 'Enter' && toggle();
58
+ onKeyDown: function onKeyDown(e) {
59
+ return (e.key === 'Enter' || e.key === ' ') && toggle();
48
60
  },
49
- className: size.toString().toLowerCase().concat(disabled ? ' disabled' : ''),
61
+ className: size.toString().toLowerCase().concat(disabled ? ' disabled' : '').concat(className ? " ".concat(className) : ''),
50
62
  selected: selected,
51
- tabIndex: disabled ? -1 : 0,
63
+ tabIndex: disabled ? -1 : 0
64
+ }, rest), {}, {
52
65
  children: [/*#__PURE__*/_jsx(ToggleSwitchContainer, {
53
66
  id: "switchContainer",
54
67
  children: /*#__PURE__*/_jsx(Switch, {
@@ -59,8 +72,7 @@ var ToggleSwitch = function ToggleSwitch(_ref) {
59
72
  htmlFor: id,
60
73
  children: label
61
74
  })]
62
- });
63
- };
64
-
75
+ }));
76
+ });
65
77
  export default ToggleSwitch;
66
78
  //# sourceMappingURL=ToggleSwitch.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Toggles/ToggleSwitch.tsx"],"names":["React","ToggleSwitchContainer","ToggleSwitch","Switch","StyledSwitch","Size","useFocusVisibleRef","id","disabled","selected","label","isSemantic","size","onToggle","toggle","focusVisibleRef","Medium","e","key","toString","toLowerCase","concat"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASC,qBAAT,EAAgCC,YAAY,IAAIC,MAAhD,EAAwDC,YAAxD,QAA4E,iBAA5E;AACA,SAASC,IAAT,QAAqB,IAArB;AACA,SAASC,kBAAT,QAAmC,WAAnC;;;;AAEA,IAAMJ,YAAY,GAAG,SAAfA,YAAe,OAAsF;AAAA;;AAAA,MAAnFK,EAAmF,QAAnFA,EAAmF;AAAA,MAA/EC,QAA+E,QAA/EA,QAA+E;AAAA,MAArEC,QAAqE,QAArEA,QAAqE;AAAA,MAA3DC,KAA2D,QAA3DA,KAA2D;AAAA,MAApDC,UAAoD,QAApDA,UAAoD;AAAA,MAAxCC,IAAwC,QAAxCA,IAAwC;AAAA,MAAlCC,QAAkC,QAAlCA,QAAkC;;AACzG;AACF;AACA;AACE,MAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB;AACA,QAAIN,QAAJ,EAAc,OAFK,CAInB;;AACAK,IAAAA,QAAQ,CAAC,CAACJ,QAAF,CAAR;AACD,GAND;;AAOA,MAAMM,eAAe,GAAGT,kBAAkB,EAA1C;AAEAM,EAAAA,IAAI,YAAGA,IAAH,yCAAWP,IAAI,CAACW,MAApB;AAEA,sBACE,MAAC,YAAD;AACE,IAAA,GAAG,EAAED,eADP;AAEE,IAAA,OAAO,EAAE,iBAACE,CAAD;AAAA,aAAOH,MAAM,EAAb;AAAA,KAFX;AAGE,IAAA,OAAO,EAAE,iBAACG,CAAD;AAAA,aAAOA,CAAC,CAACC,GAAF,KAAU,OAAV,IAAqBJ,MAAM,EAAlC;AAAA,KAHX;AAIE,IAAA,SAAS,EAAEF,IAAI,CACZO,QADQ,GAERC,WAFQ,GAGRC,MAHQ,CAGDb,QAAQ,GAAG,WAAH,GAAiB,EAHxB,CAJb;AAQE,IAAA,QAAQ,EAAEC,QARZ;AASE,IAAA,QAAQ,EAAED,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAT5B;AAAA,4BAUE,KAAC,qBAAD;AAAuB,MAAA,EAAE,EAAC,iBAA1B;AAAA,6BACE,KAAC,MAAD;AAAQ,QAAA,SAAS,EAAEG,UAAU,GAAG,UAAH,GAAgB;AAA7C;AADF,MAVF,EAaGD,KAAK,iBACJ;AAAO,MAAA,SAAS,EAAE,OAAlB;AAA2B,MAAA,OAAO,EAAEH,EAApC;AAAA,gBACGG;AADH,MAdJ;AAAA,IADF;AAqBD,CApCD;;AAsCA,eAAeR,YAAf","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom types.\n */\nimport { ToggleSwitchProps } from './TogglerTypes';\n\n/**\n * Import custom styles.\n */\nimport { ToggleSwitchContainer, ToggleSwitch as Switch, StyledSwitch } from './TogglerStyles';\nimport { Size } from '..';\nimport { useFocusVisibleRef } from '../common';\n\nconst ToggleSwitch = ({ id, disabled, selected, label, isSemantic, size, onToggle }: ToggleSwitchProps) => {\n /**\n * Does all required pre-requisites and toggles the switcher state.\n */\n const toggle = () => {\n // If disabled, don't do anything\n if (disabled) return;\n\n // Toggle state change\n onToggle(!selected);\n };\n const focusVisibleRef = useFocusVisibleRef();\n\n size = size ?? Size.Medium;\n\n return (\n <StyledSwitch\n ref={focusVisibleRef}\n onClick={(e) => toggle()}\n onKeyUp={(e) => e.key === 'Enter' && toggle()}\n className={size\n .toString()\n .toLowerCase()\n .concat(disabled ? ' disabled' : '')}\n selected={selected}\n tabIndex={disabled ? -1 : 0}>\n <ToggleSwitchContainer id=\"switchContainer\">\n <Switch className={isSemantic ? 'semantic' : ''} />\n </ToggleSwitchContainer>\n {label && (\n <label className={'label'} htmlFor={id}>\n {label}\n </label>\n )}\n </StyledSwitch>\n );\n};\n\nexport default ToggleSwitch;\n"],"file":"ToggleSwitch.js"}
1
+ {"version":3,"sources":["../../src/Toggles/ToggleSwitch.tsx"],"names":["React","ToggleSwitchContainer","ToggleSwitch","Switch","StyledSwitch","Size","useFocusVisibleRef","forwardRef","ref","id","disabled","selected","label","isSemantic","size","onToggle","className","rest","toggle","focusVisibleRef","useImperativeHandle","current","Medium","e","key","toString","toLowerCase","concat"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAAQC,qBAAR,EAA+BC,YAAY,IAAIC,MAA/C,EAAuDC,YAAvD,QAA0E,iBAA1E;AACA,SAAQC,IAAR,QAAmB,IAAnB;AACA,SAAQC,kBAAR,QAAiC,WAAjC;;;AAEA,IAAMJ,YAAY,gBAAGF,KAAK,CAACO,UAAN,CAAiB,gBAUuBC,GAVvB,EAU+B;AAAA;;AAAA,MAT5BC,EAS4B,QAT5BA,EAS4B;AAAA,MAR5BC,QAQ4B,QAR5BA,QAQ4B;AAAA,MAP5BC,QAO4B,QAP5BA,QAO4B;AAAA,MAN5BC,KAM4B,QAN5BA,KAM4B;AAAA,MAL5BC,UAK4B,QAL5BA,UAK4B;AAAA,MAJ5BC,IAI4B,QAJ5BA,IAI4B;AAAA,MAH5BC,QAG4B,QAH5BA,QAG4B;AAAA,MAF5BC,SAE4B,QAF5BA,SAE4B;AAAA,MADzBC,IACyB;;AACnE;AACF;AACA;AACE,MAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB;AACA,QAAIR,QAAJ,EAAc,OAFK,CAInB;;AACAK,IAAAA,QAAQ,CAAC,CAACJ,QAAF,CAAR;AACD,GAND;;AAQA,MAAMQ,eAAe,GAAGb,kBAAkB,CAAC,EAAD,CAA1C;AAEAN,EAAAA,KAAK,CAACoB,mBAAN,CAA0BZ,GAA1B,EAA+B;AAAA,WAAMW,eAAe,CAACE,OAAtB;AAAA,GAA/B,EAA8D,CAACF,eAAD,CAA9D;AAEAL,EAAAA,IAAI,YAAGA,IAAH,yCAAWT,IAAI,CAACiB,MAApB;AAEA,sBACE,MAAC,YAAD;AACE,IAAA,GAAG,EAAEH,eADP;AAEE,IAAA,OAAO,EAAE,iBAACI,CAAD;AAAA,aAAOL,MAAM,EAAb;AAAA,KAFX;AAGE,IAAA,SAAS,EAAE,mBAAAK,CAAC;AAAA,aAAI,CAACA,CAAC,CAACC,GAAF,KAAU,OAAV,IAAqBD,CAAC,CAACC,GAAF,KAAU,GAAhC,KAAwCN,MAAM,EAAlD;AAAA,KAHd;AAIE,IAAA,SAAS,EAAEJ,IAAI,CACZW,QADQ,GAERC,WAFQ,GAGRC,MAHQ,CAGDjB,QAAQ,GAAG,WAAH,GAAiB,EAHxB,EAIRiB,MAJQ,CAIDX,SAAS,cAAOA,SAAP,IAAqB,EAJ7B,CAJb;AASE,IAAA,QAAQ,EAAEL,QATZ;AAUE,IAAA,QAAQ,EAAED,QAAQ,GAAG,CAAC,CAAJ,GAAQ;AAV5B,KAWMO,IAXN;AAAA,4BAYE,KAAC,qBAAD;AAAuB,MAAA,EAAE,EAAC,iBAA1B;AAAA,6BACE,KAAC,MAAD;AAAQ,QAAA,SAAS,EAAEJ,UAAU,GAAG,UAAH,GAAgB;AAA7C;AADF,MAZF,EAeGD,KAAK,iBACJ;AAAO,MAAA,SAAS,EAAE,OAAlB;AAA2B,MAAA,OAAO,EAAEH,EAApC;AAAA,gBACGG;AADH,MAhBJ;AAAA,KADF;AAuBD,CAnDoB,CAArB;AAqDA,eAAeV,YAAf","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom types.\n */\nimport {ToggleSwitchProps} from './TogglerTypes';\n\n/**\n * Import custom styles.\n */\nimport {ToggleSwitchContainer, ToggleSwitch as Switch, StyledSwitch} from './TogglerStyles';\nimport {Size} from '..';\nimport {useFocusVisibleRef} from '../common';\n\nconst ToggleSwitch = React.forwardRef(({\n id,\n disabled,\n selected,\n label,\n isSemantic,\n size,\n onToggle,\n className,\n ...rest\n }: ToggleSwitchProps, ref) => {\n /**\n * Does all required pre-requisites and toggles the switcher state.\n */\n const toggle = () => {\n // If disabled, don't do anything\n if (disabled) return;\n\n // Toggle state change\n onToggle(!selected);\n };\n\n const focusVisibleRef = useFocusVisibleRef([]);\n\n React.useImperativeHandle(ref, () => focusVisibleRef.current, [focusVisibleRef]);\n\n size = size ?? Size.Medium;\n\n return (\n <StyledSwitch\n ref={focusVisibleRef}\n onClick={(e) => toggle()}\n onKeyDown={e => (e.key === 'Enter' || e.key === ' ') && toggle()}\n className={size\n .toString()\n .toLowerCase()\n .concat(disabled ? ' disabled' : '')\n .concat(className ? ` ${className}` : '')}\n selected={selected}\n tabIndex={disabled ? -1 : 0}\n {...rest}>\n <ToggleSwitchContainer id=\"switchContainer\">\n <Switch className={isSemantic ? 'semantic' : ''} />\n </ToggleSwitchContainer>\n {label && (\n <label className={'label'} htmlFor={id}>\n {label}\n </label>\n )}\n </StyledSwitch>\n );\n});\n\nexport default ToggleSwitch;\n"],"file":"ToggleSwitch.js"}
@@ -2,7 +2,7 @@ import { Size } from '..';
2
2
  /**
3
3
  * Types for the table.
4
4
  */
5
- export interface ToggleSwitchProps {
5
+ export interface ToggleSwitchProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onKeyDown' | 'onClick' | 'tabIndex'> {
6
6
  id: string;
7
7
  label?: string;
8
8
  disabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/FocusVisible.ts"],"names":["useFocusVisibleRef","focusWithinList","ref","elementRef","React","useRef","suppress","useState","visible","setVisible","addFocusVisibleClasses","current","classList","add","forEach","focusWithinListItem","removeFocusVisibleClasses","remove","handleMouseDown","contains","handleFocus","handleBlur","useLayoutEffect","useEffect","instance","focusFn","focus","e","focusVisible","call","addEventListener","removeEventListener","el"],"mappings":"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","sourcesContent":["import React from 'react';\n\nexport const useFocusVisibleRef = (focusWithinList: React.MutableRefObject<any>[] = [], ref?: any) => {\n const elementRef = ref ?? React.useRef<any>(null);\n const suppress = React.useRef<boolean>(false);\n const [visible, setVisible] = React.useState(false);\n\n const addFocusVisibleClasses = () => {\n elementRef.current?.classList.add('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.add('focus-visible-within');\n });\n }\n\n const removeFocusVisibleClasses = () => {\n elementRef.current?.classList.remove('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.remove('focus-visible-within');\n });\n }\n\n const handleMouseDown = () => {\n if (!elementRef.current?.classList.contains('focus-visible')) {\n suppress.current = true;\n }\n };\n\n const handleFocus = () => {\n if (!suppress.current) {\n setVisible(true);\n addFocusVisibleClasses();\n } else {\n suppress.current = false;\n }\n };\n\n const handleBlur = () => {\n setVisible(false);\n removeFocusVisibleClasses();\n };\n\n\n React.useLayoutEffect(() => {\n if (visible) {\n addFocusVisibleClasses()\n } else {\n removeFocusVisibleClasses();\n }\n }, [visible, elementRef, focusWithinList]);\n\n React.useEffect(() => {\n if (!elementRef.current) return;\n\n const instance = elementRef.current;\n const focusFn = elementRef.current.focus;\n elementRef.current.focus = (e: any) => {\n suppress.current = !e?.focusVisible;\n focusFn.call(instance, e);\n };\n\n instance.addEventListener('mousedown', handleMouseDown);\n instance.addEventListener('focus', handleFocus);\n instance.addEventListener('blur', handleBlur);\n\n return () => {\n instance.removeEventListener('mousedown', handleMouseDown);\n instance.removeEventListener('focus', handleFocus);\n instance.removeEventListener('blur', handleBlur);\n instance.classList.remove('focus-visible');\n for (let el of focusWithinList) {\n el.current?.classList.remove('focus-visible-within');\n }\n };\n }, [elementRef]);\n\n return elementRef;\n};\n"],"file":"FocusVisible.cjs"}
1
+ {"version":3,"sources":["../../src/common/FocusVisible.ts"],"names":["useFocusVisibleRef","focusWithinList","ref","elementRef","React","useRef","suppress","useState","visible","setVisible","addFocusVisibleClasses","current","classList","add","forEach","focusWithinListItem","removeFocusVisibleClasses","remove","handleMouseDown","contains","handleFocus","handleBlur","useLayoutEffect","useEffect","instance","focusFn","focus","e","focusVisible","call","addEventListener","removeEventListener","el"],"mappings":"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","sourcesContent":["import React from 'react';\n\nexport const useFocusVisibleRef = (focusWithinList: React.MutableRefObject<any>[] = [], ref?: React.MutableRefObject<any> | null) => {\n const elementRef = ref ?? React.useRef<any>(null);\n const suppress = React.useRef<boolean>(false);\n const [visible, setVisible] = React.useState(false);\n\n const addFocusVisibleClasses = () => {\n elementRef.current?.classList.add('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.add('focus-visible-within');\n });\n }\n\n const removeFocusVisibleClasses = () => {\n elementRef.current?.classList.remove('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.remove('focus-visible-within');\n });\n }\n\n const handleMouseDown = () => {\n if (!elementRef.current?.classList.contains('focus-visible')) {\n suppress.current = true;\n }\n };\n\n const handleFocus = () => {\n if (!suppress.current) {\n setVisible(true);\n addFocusVisibleClasses();\n } else {\n suppress.current = false;\n }\n };\n\n const handleBlur = () => {\n setVisible(false);\n removeFocusVisibleClasses();\n };\n\n\n React.useLayoutEffect(() => {\n if (visible) {\n addFocusVisibleClasses()\n } else {\n removeFocusVisibleClasses();\n }\n }, [visible, elementRef, focusWithinList]);\n\n React.useEffect(() => {\n if (!elementRef.current) return;\n\n const instance = elementRef.current;\n const focusFn = elementRef.current.focus;\n elementRef.current.focus = (e: any) => {\n suppress.current = !e?.focusVisible;\n focusFn.call(instance, e);\n };\n\n instance.addEventListener('mousedown', handleMouseDown);\n instance.addEventListener('focus', handleFocus);\n instance.addEventListener('blur', handleBlur);\n\n return () => {\n instance.removeEventListener('mousedown', handleMouseDown);\n instance.removeEventListener('focus', handleFocus);\n instance.removeEventListener('blur', handleBlur);\n instance.classList.remove('focus-visible');\n for (let el of focusWithinList) {\n el.current?.classList.remove('focus-visible-within');\n }\n };\n }, [elementRef]);\n\n return elementRef;\n};\n"],"file":"FocusVisible.cjs"}
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const useFocusVisibleRef: (focusWithinList?: React.MutableRefObject<any>[], ref?: any) => any;
2
+ export declare const useFocusVisibleRef: (focusWithinList?: React.MutableRefObject<any>[], ref?: React.MutableRefObject<any> | null | undefined) => React.MutableRefObject<any>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/FocusVisible.ts"],"names":["React","useFocusVisibleRef","focusWithinList","ref","elementRef","useRef","suppress","useState","visible","setVisible","addFocusVisibleClasses","current","classList","add","forEach","focusWithinListItem","removeFocusVisibleClasses","remove","handleMouseDown","contains","handleFocus","handleBlur","useLayoutEffect","useEffect","instance","focusFn","focus","e","focusVisible","call","addEventListener","removeEventListener","el"],"mappings":"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","sourcesContent":["import React from 'react';\n\nexport const useFocusVisibleRef = (focusWithinList: React.MutableRefObject<any>[] = [], ref?: any) => {\n const elementRef = ref ?? React.useRef<any>(null);\n const suppress = React.useRef<boolean>(false);\n const [visible, setVisible] = React.useState(false);\n\n const addFocusVisibleClasses = () => {\n elementRef.current?.classList.add('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.add('focus-visible-within');\n });\n }\n\n const removeFocusVisibleClasses = () => {\n elementRef.current?.classList.remove('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.remove('focus-visible-within');\n });\n }\n\n const handleMouseDown = () => {\n if (!elementRef.current?.classList.contains('focus-visible')) {\n suppress.current = true;\n }\n };\n\n const handleFocus = () => {\n if (!suppress.current) {\n setVisible(true);\n addFocusVisibleClasses();\n } else {\n suppress.current = false;\n }\n };\n\n const handleBlur = () => {\n setVisible(false);\n removeFocusVisibleClasses();\n };\n\n\n React.useLayoutEffect(() => {\n if (visible) {\n addFocusVisibleClasses()\n } else {\n removeFocusVisibleClasses();\n }\n }, [visible, elementRef, focusWithinList]);\n\n React.useEffect(() => {\n if (!elementRef.current) return;\n\n const instance = elementRef.current;\n const focusFn = elementRef.current.focus;\n elementRef.current.focus = (e: any) => {\n suppress.current = !e?.focusVisible;\n focusFn.call(instance, e);\n };\n\n instance.addEventListener('mousedown', handleMouseDown);\n instance.addEventListener('focus', handleFocus);\n instance.addEventListener('blur', handleBlur);\n\n return () => {\n instance.removeEventListener('mousedown', handleMouseDown);\n instance.removeEventListener('focus', handleFocus);\n instance.removeEventListener('blur', handleBlur);\n instance.classList.remove('focus-visible');\n for (let el of focusWithinList) {\n el.current?.classList.remove('focus-visible-within');\n }\n };\n }, [elementRef]);\n\n return elementRef;\n};\n"],"file":"FocusVisible.js"}
1
+ {"version":3,"sources":["../../src/common/FocusVisible.ts"],"names":["React","useFocusVisibleRef","focusWithinList","ref","elementRef","useRef","suppress","useState","visible","setVisible","addFocusVisibleClasses","current","classList","add","forEach","focusWithinListItem","removeFocusVisibleClasses","remove","handleMouseDown","contains","handleFocus","handleBlur","useLayoutEffect","useEffect","instance","focusFn","focus","e","focusVisible","call","addEventListener","removeEventListener","el"],"mappings":"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","sourcesContent":["import React from 'react';\n\nexport const useFocusVisibleRef = (focusWithinList: React.MutableRefObject<any>[] = [], ref?: React.MutableRefObject<any> | null) => {\n const elementRef = ref ?? React.useRef<any>(null);\n const suppress = React.useRef<boolean>(false);\n const [visible, setVisible] = React.useState(false);\n\n const addFocusVisibleClasses = () => {\n elementRef.current?.classList.add('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.add('focus-visible-within');\n });\n }\n\n const removeFocusVisibleClasses = () => {\n elementRef.current?.classList.remove('focus-visible');\n focusWithinList?.forEach((focusWithinListItem) => {\n focusWithinListItem.current?.classList.remove('focus-visible-within');\n });\n }\n\n const handleMouseDown = () => {\n if (!elementRef.current?.classList.contains('focus-visible')) {\n suppress.current = true;\n }\n };\n\n const handleFocus = () => {\n if (!suppress.current) {\n setVisible(true);\n addFocusVisibleClasses();\n } else {\n suppress.current = false;\n }\n };\n\n const handleBlur = () => {\n setVisible(false);\n removeFocusVisibleClasses();\n };\n\n\n React.useLayoutEffect(() => {\n if (visible) {\n addFocusVisibleClasses()\n } else {\n removeFocusVisibleClasses();\n }\n }, [visible, elementRef, focusWithinList]);\n\n React.useEffect(() => {\n if (!elementRef.current) return;\n\n const instance = elementRef.current;\n const focusFn = elementRef.current.focus;\n elementRef.current.focus = (e: any) => {\n suppress.current = !e?.focusVisible;\n focusFn.call(instance, e);\n };\n\n instance.addEventListener('mousedown', handleMouseDown);\n instance.addEventListener('focus', handleFocus);\n instance.addEventListener('blur', handleBlur);\n\n return () => {\n instance.removeEventListener('mousedown', handleMouseDown);\n instance.removeEventListener('focus', handleFocus);\n instance.removeEventListener('blur', handleBlur);\n instance.classList.remove('focus-visible');\n for (let el of focusWithinList) {\n el.current?.classList.remove('focus-visible-within');\n }\n };\n }, [elementRef]);\n\n return elementRef;\n};\n"],"file":"FocusVisible.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laerdal/life-react-components",
3
- "version": "1.10.3-dev.2",
3
+ "version": "1.10.3-dev.5",
4
4
  "private": false,
5
5
  "author": "Thomas Kalve <thomas.kalve@laerdal.com>",
6
6
  "contributors": [