@dnb/eufemia 10.4.2 → 10.5.0

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 (270) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/components/anchor/style/anchor-mixins.scss +17 -23
  3. package/cjs/components/anchor/style/dnb-anchor.css +26 -15
  4. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  5. package/cjs/components/anchor/style/dnb-anchor.scss +1 -1
  6. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  7. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  8. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  9. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  10. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  11. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  12. package/cjs/components/autocomplete/Autocomplete.js +2 -2
  13. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  14. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  15. package/cjs/components/dialog/Dialog.d.ts +1 -1
  16. package/cjs/components/dialog/DialogContent.d.ts +1 -1
  17. package/cjs/components/dialog/DialogContent.js +4 -2
  18. package/cjs/components/dialog/DialogContent.js.map +1 -1
  19. package/cjs/components/dialog/parts/DialogAction.d.ts +5 -1
  20. package/cjs/components/dialog/parts/DialogAction.js +3 -2
  21. package/cjs/components/dialog/parts/DialogAction.js.map +1 -1
  22. package/cjs/components/form-row/FormRow.js.map +1 -1
  23. package/cjs/components/form-row/style/dnb-form-row.scss +2 -2
  24. package/cjs/components/form-set/FormSet.js.map +1 -1
  25. package/cjs/components/height-animation/HeightAnimation.d.ts +1 -1
  26. package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
  27. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  28. package/cjs/components/icon/lib/SvgComparison.js.map +1 -1
  29. package/cjs/components/input/style/dnb-input.scss +1 -1
  30. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  31. package/cjs/components/input-masked/TextMask.js.map +1 -1
  32. package/cjs/components/modal/Modal.js +0 -2
  33. package/cjs/components/modal/Modal.js.map +1 -1
  34. package/cjs/components/modal/bodyScrollLock.js.map +1 -1
  35. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  36. package/cjs/components/number-format/style/dnb-number-format.css +0 -7
  37. package/cjs/components/number-format/style/dnb-number-format.scss +0 -1
  38. package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
  39. package/cjs/components/radio/Radio.js.map +1 -1
  40. package/cjs/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  41. package/cjs/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  42. package/cjs/components/slider/hooks/useSliderEvents.js.map +1 -1
  43. package/cjs/components/slider/types.d.ts +1 -1
  44. package/cjs/components/slider/types.js.map +1 -1
  45. package/cjs/components/space/SpacingHelper.js.map +1 -1
  46. package/cjs/components/table/TableAccordion.js.map +1 -1
  47. package/cjs/components/table/TableTr.js.map +1 -1
  48. package/cjs/components/textarea/Textarea.js.map +1 -1
  49. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  50. package/cjs/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  51. package/cjs/components/tooltip/TooltipContainer.js.map +1 -1
  52. package/cjs/components/upload/Upload.js +2 -2
  53. package/cjs/components/upload/Upload.js.map +1 -1
  54. package/cjs/components/upload/useUpload.d.ts +1 -1
  55. package/cjs/components/upload/useUpload.js +2 -2
  56. package/cjs/components/upload/useUpload.js.map +1 -1
  57. package/cjs/elements/blockquote/Blockquote.d.ts +1 -1
  58. package/cjs/elements/blockquote/Blockquote.js.map +1 -1
  59. package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  60. package/cjs/extensions/payment-card/utils/Types.js.map +1 -1
  61. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  62. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  63. package/cjs/shared/Eufemia.d.ts +1 -1
  64. package/cjs/shared/Eufemia.js +2 -2
  65. package/cjs/shared/Eufemia.js.map +1 -1
  66. package/cjs/shared/VisibilityByTheme.d.ts +1 -1
  67. package/cjs/shared/VisibilityByTheme.js.map +1 -1
  68. package/cjs/shared/helpers.d.ts +2 -2
  69. package/cjs/shared/helpers.js.map +1 -1
  70. package/cjs/style/dnb-ui-components.css +26 -22
  71. package/cjs/style/dnb-ui-components.min.css +1 -1
  72. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  73. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  74. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  75. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  76. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  77. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  78. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  79. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  80. package/cjs/style/themes/theme-ui/ui-theme-basis.css +17 -11
  81. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  82. package/cjs/style/themes/theme-ui/ui-theme-components.css +60 -39
  83. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  84. package/cjs/style/themes/theme-ui/ui-theme-elements.css +17 -11
  85. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  86. package/cjs/style/themes/theme-ui/ui-theme-tags.css +23 -11
  87. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  88. package/components/anchor/style/anchor-mixins.scss +17 -23
  89. package/components/anchor/style/dnb-anchor.css +26 -15
  90. package/components/anchor/style/dnb-anchor.min.css +1 -1
  91. package/components/anchor/style/dnb-anchor.scss +1 -1
  92. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  93. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  94. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  95. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  96. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  97. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  98. package/components/autocomplete/Autocomplete.js +2 -2
  99. package/components/autocomplete/Autocomplete.js.map +1 -1
  100. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  101. package/components/dialog/Dialog.d.ts +1 -1
  102. package/components/dialog/DialogContent.d.ts +1 -1
  103. package/components/dialog/DialogContent.js +4 -2
  104. package/components/dialog/DialogContent.js.map +1 -1
  105. package/components/dialog/parts/DialogAction.d.ts +5 -1
  106. package/components/dialog/parts/DialogAction.js +3 -2
  107. package/components/dialog/parts/DialogAction.js.map +1 -1
  108. package/components/form-row/FormRow.js.map +1 -1
  109. package/components/form-row/style/dnb-form-row.scss +2 -2
  110. package/components/form-set/FormSet.js.map +1 -1
  111. package/components/height-animation/HeightAnimation.d.ts +1 -1
  112. package/components/height-animation/HeightAnimation.js.map +1 -1
  113. package/components/height-animation/useHeightAnimation.js.map +1 -1
  114. package/components/icon/lib/SvgComparison.js.map +1 -1
  115. package/components/input/style/dnb-input.scss +1 -1
  116. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  117. package/components/input-masked/TextMask.js.map +1 -1
  118. package/components/modal/Modal.js +0 -2
  119. package/components/modal/Modal.js.map +1 -1
  120. package/components/modal/bodyScrollLock.js.map +1 -1
  121. package/components/number-format/NumberUtils.js.map +1 -1
  122. package/components/number-format/style/dnb-number-format.css +0 -7
  123. package/components/number-format/style/dnb-number-format.scss +0 -1
  124. package/components/pagination/PaginationInfinity.js.map +1 -1
  125. package/components/radio/Radio.js.map +1 -1
  126. package/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  127. package/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  128. package/components/slider/hooks/useSliderEvents.js.map +1 -1
  129. package/components/slider/types.d.ts +1 -1
  130. package/components/slider/types.js.map +1 -1
  131. package/components/space/SpacingHelper.js.map +1 -1
  132. package/components/table/TableAccordion.js.map +1 -1
  133. package/components/table/TableTr.js.map +1 -1
  134. package/components/textarea/Textarea.js.map +1 -1
  135. package/components/toggle-button/ToggleButton.js.map +1 -1
  136. package/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  137. package/components/tooltip/TooltipContainer.js.map +1 -1
  138. package/components/upload/Upload.js +2 -2
  139. package/components/upload/Upload.js.map +1 -1
  140. package/components/upload/useUpload.d.ts +1 -1
  141. package/components/upload/useUpload.js +2 -2
  142. package/components/upload/useUpload.js.map +1 -1
  143. package/elements/blockquote/Blockquote.d.ts +1 -1
  144. package/elements/blockquote/Blockquote.js.map +1 -1
  145. package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  146. package/es/components/anchor/style/anchor-mixins.scss +17 -23
  147. package/es/components/anchor/style/dnb-anchor.css +26 -15
  148. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  149. package/es/components/anchor/style/dnb-anchor.scss +1 -1
  150. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +40 -21
  151. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  152. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +2 -7
  153. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +20 -10
  154. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  155. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +4 -9
  156. package/es/components/autocomplete/Autocomplete.js +2 -2
  157. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  158. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  159. package/es/components/dialog/Dialog.d.ts +1 -1
  160. package/es/components/dialog/DialogContent.d.ts +1 -1
  161. package/es/components/dialog/DialogContent.js +4 -2
  162. package/es/components/dialog/DialogContent.js.map +1 -1
  163. package/es/components/dialog/parts/DialogAction.d.ts +5 -1
  164. package/es/components/dialog/parts/DialogAction.js +3 -2
  165. package/es/components/dialog/parts/DialogAction.js.map +1 -1
  166. package/es/components/form-row/FormRow.js.map +1 -1
  167. package/es/components/form-row/style/dnb-form-row.scss +2 -2
  168. package/es/components/form-set/FormSet.js.map +1 -1
  169. package/es/components/height-animation/HeightAnimation.d.ts +1 -1
  170. package/es/components/height-animation/HeightAnimation.js.map +1 -1
  171. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  172. package/es/components/icon/lib/SvgComparison.js.map +1 -1
  173. package/es/components/input/style/dnb-input.scss +1 -1
  174. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  175. package/es/components/input-masked/TextMask.js.map +1 -1
  176. package/es/components/modal/Modal.js +0 -2
  177. package/es/components/modal/Modal.js.map +1 -1
  178. package/es/components/modal/bodyScrollLock.js.map +1 -1
  179. package/es/components/number-format/NumberUtils.js.map +1 -1
  180. package/es/components/number-format/style/dnb-number-format.css +0 -7
  181. package/es/components/number-format/style/dnb-number-format.scss +0 -1
  182. package/es/components/pagination/PaginationInfinity.js.map +1 -1
  183. package/es/components/radio/Radio.js.map +1 -1
  184. package/es/components/section/style/themes/dnb-section-theme-ui.css +14 -7
  185. package/es/components/section/style/themes/dnb-section-theme-ui.min.css +1 -1
  186. package/es/components/slider/hooks/useSliderEvents.js.map +1 -1
  187. package/es/components/slider/types.d.ts +1 -1
  188. package/es/components/slider/types.js.map +1 -1
  189. package/es/components/space/SpacingHelper.js.map +1 -1
  190. package/es/components/table/TableAccordion.js.map +1 -1
  191. package/es/components/table/TableTr.js.map +1 -1
  192. package/es/components/textarea/Textarea.js.map +1 -1
  193. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  194. package/es/components/toggle-button/ToggleButtonGroup.js.map +1 -1
  195. package/es/components/tooltip/TooltipContainer.js.map +1 -1
  196. package/es/components/upload/Upload.js +2 -2
  197. package/es/components/upload/Upload.js.map +1 -1
  198. package/es/components/upload/useUpload.d.ts +1 -1
  199. package/es/components/upload/useUpload.js +2 -2
  200. package/es/components/upload/useUpload.js.map +1 -1
  201. package/es/elements/blockquote/Blockquote.d.ts +1 -1
  202. package/es/elements/blockquote/Blockquote.js.map +1 -1
  203. package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +0 -2
  204. package/es/extensions/payment-card/utils/Types.js.map +1 -1
  205. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  206. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  207. package/es/shared/Eufemia.d.ts +1 -1
  208. package/es/shared/Eufemia.js +2 -2
  209. package/es/shared/Eufemia.js.map +1 -1
  210. package/es/shared/VisibilityByTheme.d.ts +1 -1
  211. package/es/shared/VisibilityByTheme.js.map +1 -1
  212. package/es/shared/helpers.d.ts +2 -2
  213. package/es/shared/helpers.js.map +1 -1
  214. package/es/style/dnb-ui-components.css +26 -22
  215. package/es/style/dnb-ui-components.min.css +1 -1
  216. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  217. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  218. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  219. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  220. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  221. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  222. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  223. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  224. package/es/style/themes/theme-ui/ui-theme-basis.css +17 -11
  225. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  226. package/es/style/themes/theme-ui/ui-theme-components.css +60 -39
  227. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  228. package/es/style/themes/theme-ui/ui-theme-elements.css +17 -11
  229. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  230. package/es/style/themes/theme-ui/ui-theme-tags.css +23 -11
  231. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  232. package/esm/dnb-ui-basis.min.mjs +1 -1
  233. package/esm/dnb-ui-components.min.mjs +1 -1
  234. package/esm/dnb-ui-elements.min.mjs +1 -1
  235. package/esm/dnb-ui-extensions.min.mjs +1 -1
  236. package/esm/dnb-ui-lib.min.mjs +1 -1
  237. package/extensions/payment-card/utils/Types.js.map +1 -1
  238. package/fragments/drawer-list/DrawerList.js.map +1 -1
  239. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  240. package/package.json +1 -1
  241. package/shared/Eufemia.d.ts +1 -1
  242. package/shared/Eufemia.js +2 -2
  243. package/shared/Eufemia.js.map +1 -1
  244. package/shared/VisibilityByTheme.d.ts +1 -1
  245. package/shared/VisibilityByTheme.js.map +1 -1
  246. package/shared/helpers.d.ts +2 -2
  247. package/shared/helpers.js.map +1 -1
  248. package/style/dnb-ui-components.css +26 -22
  249. package/style/dnb-ui-components.min.css +1 -1
  250. package/style/themes/theme-eiendom/eiendom-theme-basis.css +17 -11
  251. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  252. package/style/themes/theme-eiendom/eiendom-theme-components.css +60 -39
  253. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  254. package/style/themes/theme-sbanken/sbanken-theme-basis.css +0 -7
  255. package/style/themes/theme-sbanken/sbanken-theme-components.css +80 -50
  256. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  257. package/style/themes/theme-sbanken/sbanken-theme-elements.css +0 -7
  258. package/style/themes/theme-ui/ui-theme-basis.css +17 -11
  259. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  260. package/style/themes/theme-ui/ui-theme-components.css +60 -39
  261. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  262. package/style/themes/theme-ui/ui-theme-elements.css +17 -11
  263. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  264. package/style/themes/theme-ui/ui-theme-tags.css +23 -11
  265. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  266. package/umd/dnb-ui-basis.min.js +1 -1
  267. package/umd/dnb-ui-components.min.js +1 -1
  268. package/umd/dnb-ui-elements.min.js +1 -1
  269. package/umd/dnb-ui-extensions.min.js +1 -1
  270. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerListProvider.js","names":["React","PropTypes","keycode","Context","warn","isTrue","roundToNearest","getClosestScrollViewElement","detectOutsideClick","dispatchCustomElementEvent","getPreviousSibling","getOffsetTop","getOffsetLeft","hasSelectedText","getSelectedElement","getData","normalizeData","findClosest","getSelectedItemValue","parseContentTitle","getEventData","prepareStartupState","prepareDerivedState","drawerListPropTypes","drawerListDefaultProps","drawerListProviderPropTypes","drawerListProviderDefaultProps","DrawerListContext","disableBodyScroll","enableBodyScroll","DrawerListProvider","PureComponent","getDerivedStateFromProps","props","state","constructor","_this","this","_defineProperty","_refUl","current","_bodyLockIsEnabled","_refShell","spaceToLeft","spaceToRight","window","innerWidth","offsetWidth","triangleStyle","_refTriangle","style","shellStyle","transform","Math","abs","right","left","e","active_item","scrollTo","element","arguments","length","undefined","clearTimeout","_scrollTimeout","setTimeout","parseFloat","ulElement","liElement","getActiveElement","top","offsetTop","IS_TEST","scrollBehavior","behavior","scrollTop","prevent_focus","focus","fireSelectEvent","event","setState","_document$activeEleme","document","activeElement","tagName","_this$_refUl$current","preventScroll","selected_item","attributes","ret","value","data","no_animation","scrollToItem","wrapper_element","querySelector","we","meta","cmd","metaKey","ctrl","ctrlKey","shift","shiftKey","alt","altKey","setMetaKey","key","test","prevent_close","isSameDrawer","ulElem","getAttribute","id","isOpen","ignore_events","isNaN","total","preventDefault","direction","getFirstItem","getPrevActiveItem","getLastItem","getNextActiveItem","target","dispatchEvent","MouseEvent","setHidden","getCurrentActiveItem","skip_keysearch","result","selectItemAndClose","hasFocusOnElement","Boolean","getAnchorElem","stopPropagation","currentActiveElement","createTabElem","elem","createElement","prevActiveElement","removeEventListener","removeChild","after","before","addEventListener","insertElem","appendChild","insertBefore","firstChild","requestAnimationFrame","findItemByValue","showFocusRing","setActiveItemAndScrollToIt","_this$_refUl$current2","_this$_refUl$current3","nextSibling","previousSibling","_this$_refUl$current4","_this$_refUl$current5","removeOutsideClickObserver","outsideClick","_refRoot","preventHideFocus","includedKeys","onKeyDownHandler","onKeyUpHandler","setDirectionObserver","setScrollObserver","setOutsideClickObserver","removeDirectionObserver","removeScrollObserver","opened","setVisible","args","onStateComplete","hidden","_showTimeout","_hideTimeout","searchCache","handleSingleComponentCheck","animationDelayHandler","setActiveState","_process","process","env","NODE_ENV","blurDelay","_objectSpread","res","delayHandler","removeObservers","cb","overwriteOriginalData","original_data","refreshScrollObserver","itemToSelect","closeOnSelection","selectItem","persist","attr","isInput","keep_open","prevent_selection","doCallOnChange","onSelectionIsComplete","cache_hash","createRef","componentDidMount","componentDidUpdate","prevProps","_document$activeEleme2","_this$_refUl$current6","componentWillUnmount","_directionTimeout","itemSpots","reduce","acc","cur","i","_this$_refUl$current7","itemSpotsCount","Object","keys","closestToTop","closestToBottom","tmpToTop","tmpToBottom","setOnScroll","counts","offsetHeight","enable_body_lock","scrollable","min_height","max_height","on_resize","page_offset","observer_element","useBodyLock","isScrollable","customMinHeight","customMaxHeight","customElem","directionOffset","spaceToTopOffset","spaceToBottomOffset","renderDirection","_window","_window$requestAnimat","rootElem","documentElement","pageYOffset","spaceToTop","spaceToBottom","clientHeight","max","vh","visualViewport","height","innerHeight","call","correctHiddenView","setDirection","_rootElem","enableBodyLock","index","String","toLowerCase","changedOrderFor","itemData","str","separator","removeNumericOnlyValues","firstLetter","push","found","disableBodyLock","_this$_rootElem","remove","active","setAttribute","removeAttribute","render","Provider","context","drawerList","setData","setDataHandler","setStateHandler","setWrapperElement","addObservers","toggleVisible","children","propTypes","node","isRequired"],"sources":["../../../../src/fragments/drawer-list/DrawerListProvider.js"],"sourcesContent":["/**\n * Web DrawerList Provider\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport keycode from 'keycode'\nimport Context from '../../shared/Context'\nimport {\n warn,\n isTrue,\n roundToNearest,\n getClosestScrollViewElement,\n detectOutsideClick,\n dispatchCustomElementEvent,\n getPreviousSibling,\n} from '../../shared/component-helper'\nimport {\n getOffsetTop,\n getOffsetLeft,\n hasSelectedText,\n getSelectedElement,\n} from '../../shared/helpers'\nimport {\n getData,\n normalizeData,\n findClosest,\n getSelectedItemValue,\n parseContentTitle,\n getEventData,\n prepareStartupState,\n prepareDerivedState,\n drawerListPropTypes,\n drawerListDefaultProps,\n drawerListProviderPropTypes,\n drawerListProviderDefaultProps,\n} from './DrawerListHelpers'\nimport DrawerListContext from './DrawerListContext'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n} from '../../components/modal/bodyScrollLock'\n\nexport default class DrawerListProvider extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n ...drawerListPropTypes,\n ...drawerListProviderPropTypes,\n children: PropTypes.node.isRequired,\n }\n\n static defaultProps = {\n ...drawerListDefaultProps,\n ...drawerListProviderDefaultProps,\n }\n\n static blurDelay = 201 // some ms more than \"DrawerListSlideDown 200ms\"\n\n static getDerivedStateFromProps(props, state) {\n return prepareDerivedState(props, state)\n }\n\n constructor(props) {\n super(props)\n\n this.attributes = {}\n this.state = {\n tagName: 'dnb-drawer-list',\n cache_hash: '',\n active_item: null,\n selected_item: null,\n ignore_events: false,\n ...prepareStartupState(props),\n }\n\n this._refRoot = React.createRef()\n this._refShell = React.createRef()\n this._refUl = React.createRef()\n this._refTriangle = React.createRef()\n }\n\n componentDidMount() {\n if (isTrue(this.props.opened)) {\n this.setVisible()\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.opened !== null &&\n this.props.opened !== prevProps.opened\n ) {\n if (isTrue(this.props.opened)) {\n this.setVisible()\n } else if (isTrue(this.props.opened) === false) {\n this.setHidden()\n }\n }\n\n if (this.state.opened) {\n if (\n this.props.data !== prevProps.data &&\n typeof document !== 'undefined' &&\n document.activeElement?.tagName === 'BODY'\n ) {\n this._refUl.current?.focus()\n }\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n clearTimeout(this._scrollTimeout)\n clearTimeout(this._directionTimeout)\n\n this.removeObservers()\n this.setActiveState(false)\n }\n\n refreshScrollObserver() {\n if (typeof window === 'undefined' || !this._refUl.current) {\n return\n }\n\n this.itemSpots = this.state.data.reduce((acc, cur, i) => {\n const element = this._refUl.current?.querySelector(\n `li.dnb-drawer-list__option:nth-of-type(${i + 1})`\n )\n if (element) {\n acc[element.offsetTop] = {\n i,\n }\n }\n return acc\n }, {})\n\n this.itemSpotsCount = Object.keys(this.itemSpots).length\n }\n\n setScrollObserver() {\n if (typeof window === 'undefined' || !this._refUl.current) {\n return\n }\n\n this.removeScrollObserver()\n this.itemSpotsCount = 1 // to make sure we recalculate the spots\n\n try {\n let closestToTop = null,\n closestToBottom = null,\n tmpToTop,\n tmpToBottom\n\n this.setOnScroll = () => {\n if (!this._refUl.current) {\n return // stop here\n }\n\n // recalculate the spots\n if (this.itemSpotsCount <= 1) {\n this.refreshScrollObserver()\n }\n\n const counts = Object.keys(this.itemSpots)\n closestToBottom = findClosest(\n counts,\n this._refUl.current.scrollTop + this._refUl.current.offsetHeight\n )\n closestToTop = findClosest(counts, this._refUl.current.scrollTop)\n if (this.itemSpots[closestToTop] && closestToTop !== tmpToTop) {\n this.setState({\n closestToTop: this.itemSpots[closestToTop].i,\n })\n }\n // we do this because we want the arrow\n // to change visually\n if (\n closestToBottom !== tmpToBottom &&\n this.itemSpots[closestToBottom]\n ) {\n this.setState({\n closestToBottom: this.itemSpots[closestToBottom].i,\n })\n }\n tmpToTop = closestToTop\n tmpToBottom = closestToBottom\n }\n\n this._refUl.current.addEventListener('scroll', this.setOnScroll)\n this.setOnScroll()\n } catch (e) {\n warn('List could not set onScroll:', e)\n }\n }\n\n removeScrollObserver() {\n if (typeof window !== 'undefined' && this.setOnScroll) {\n window.removeEventListener('resize', this.setOnScroll)\n this.setOnScroll = null\n }\n }\n\n enableBodyLock = () => {\n if (this._refUl.current) {\n this._bodyLockIsEnabled = true\n disableBodyScroll(this._refUl.current)\n }\n }\n\n disableBodyLock = () => {\n if (this._bodyLockIsEnabled && this._refUl.current) {\n this._bodyLockIsEnabled = null\n enableBodyScroll(this._refUl.current)\n }\n }\n\n setDirectionObserver() {\n if (\n typeof window === 'undefined' ||\n typeof document === 'undefined' ||\n !(this.state.wrapper_element || this._refRoot.current)\n ) {\n return\n }\n\n const {\n enable_body_lock,\n scrollable,\n min_height,\n max_height,\n on_resize,\n page_offset,\n observer_element,\n } = this.props\n\n // const skipPortal = isTrue(skip_portal)\n const useBodyLock = isTrue(enable_body_lock)\n const isScrollable = isTrue(scrollable)\n const customMinHeight = parseFloat(min_height) * 16\n const customMaxHeight = parseFloat(max_height) || 0\n\n let customElem =\n typeof observer_element === 'string'\n ? document.querySelector(observer_element)\n : null\n\n if (!customElem) {\n customElem = getClosestScrollViewElement(this._refRoot.current)\n }\n\n // In case we have one before hand\n this.removeDirectionObserver()\n\n const directionOffset = 96\n const spaceToTopOffset = 2 * 16\n const spaceToBottomOffset = 2 * 16\n const elem = this.state.wrapper_element || this._refRoot.current\n\n const renderDirection = () => {\n try {\n // make calculation for both direction and height\n const rootElem = customElem || document.documentElement\n\n const pageYOffset = !isNaN(parseFloat(page_offset))\n ? parseFloat(page_offset)\n : rootElem.scrollTop /* pageYOffset */\n const spaceToTop =\n getOffsetTop(elem) + elem.offsetHeight - pageYOffset\n const spaceToBottom =\n rootElem.clientHeight /* innerHeight */ -\n (getOffsetTop(elem) + elem.offsetHeight) +\n pageYOffset\n\n const direction =\n Math.max(spaceToBottom - directionOffset, directionOffset) <\n customMinHeight && spaceToTop > customMinHeight\n ? 'top'\n : 'bottom'\n\n // make sure we never get higher than we have defined in CSS\n let max_height = customMaxHeight\n if (!(max_height > 0)) {\n max_height =\n direction === 'top'\n ? spaceToTop -\n ((this.state.wrapper_element || this._refRoot.current)\n .offsetHeight || 0) -\n spaceToTopOffset\n : spaceToBottom - spaceToBottomOffset\n\n // get the view port height, like in CSS\n let vh = 0\n if (typeof window.visualViewport !== 'undefined') {\n vh = window.visualViewport.height\n } else {\n vh = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n )\n }\n\n // like defined in CSS\n vh = vh * (isScrollable ? 0.7 : 0.9)\n\n if (max_height > vh) {\n max_height = vh\n }\n\n // convert px to rem\n max_height = roundToNearest(max_height, 8) / 16\n }\n\n // update the states\n if (this.props.direction === 'auto') {\n this.setState({\n direction,\n })\n }\n this.setState({\n max_height,\n })\n\n // call the event, if set\n if (on_resize) {\n dispatchCustomElementEvent(this.state, 'on_resize', {\n direction,\n max_height,\n })\n }\n } catch (e) {\n warn('List could not set onResize:', e)\n }\n\n // React v18 needs a delay to make the calculation during first render\n window?.requestAnimationFrame?.(this.correctHiddenView) ||\n this.correctHiddenView()\n }\n\n // debounce\n this.setDirection = () => {\n clearTimeout(this._directionTimeout)\n this._directionTimeout = setTimeout(renderDirection, 50)\n }\n\n // customElem can be a dnb-scroll-view\n this._rootElem = customElem || window\n this._rootElem.addEventListener('scroll', this.setDirection)\n\n // this fixes iOS softkeyboard\n if (typeof window.visualViewport !== 'undefined') {\n window.visualViewport.addEventListener('scroll', this.setDirection)\n window.visualViewport.addEventListener('resize', this.setDirection)\n } else {\n window.addEventListener('resize', this.setDirection)\n }\n\n if (useBodyLock) {\n this.enableBodyLock()\n }\n\n this.refreshScrollObserver()\n\n renderDirection()\n }\n\n /**\n * Deprecated\n * We should replace all the logic of handling left/right aligned\n * and setting the position, with a PopupMenu component,\n * which uses the logic form Tooltip.\n *\n * EDS-246\n */\n correctHiddenView = () => {\n // console.log('this._refShell.current', this._refShell.current)\n // console.log('this._refUl.current', this._refUl.current)\n // We use \"style.transform\", because it is a independent \"and quick\" solution\n // we could send down spaceToLeft and spaceToRight and set it with React's \"style\" prop in future\n if (!this._refShell.current || !this._refUl.current) {\n return // stop here\n }\n\n try {\n const spaceToLeft = getOffsetLeft(this._refUl.current)\n const spaceToRight =\n window.innerWidth -\n (getOffsetLeft(this._refUl.current) +\n this._refUl.current.offsetWidth)\n\n const triangleStyle = this._refTriangle.current.style\n const shellStyle = this._refShell.current.style\n\n // correct left side\n if (spaceToLeft < 0) {\n shellStyle.transform = `translateX(${Math.abs(\n spaceToLeft / 16\n )}rem)`\n triangleStyle.right = `${Math.abs(spaceToLeft / 16)}rem`\n\n // correct right side\n } else if (spaceToRight < 0) {\n shellStyle.transform = `translateX(${spaceToRight / 16}rem)`\n triangleStyle.left = `${Math.abs(spaceToRight / 16)}rem`\n } else {\n if (shellStyle.transform) {\n shellStyle.transform = ''\n triangleStyle.left = 'auto'\n triangleStyle.right = 'auto'\n }\n }\n } catch (e) {\n //\n }\n }\n\n // this gives us the possibility to quickly search for an item\n // by simply pressing any alfabetic key\n findItemByValue(value) {\n if (isTrue(this.props.skip_keysearch)) {\n return\n }\n\n let index = -1\n\n try {\n value = String(value).toLowerCase()\n\n // delete the cache\n // if there are several of the same type\n if (this.changedOrderFor !== value) {\n this.searchCache = null\n this.changedOrderFor = null\n }\n\n this.searchCache =\n this.searchCache ||\n this.state.data.reduce((acc, itemData, i) => {\n const str = String(\n parseContentTitle(itemData, {\n separator: ' ',\n removeNumericOnlyValues: true,\n })\n )\n\n // take the first letter\n const firstLetter = String(str[0]).toLowerCase()\n acc[firstLetter] = acc[firstLetter] || []\n acc[firstLetter].push({\n i,\n })\n\n return acc\n }, {})\n\n const found = this.searchCache[value]\n index = found && found[0] && found[0].i > -1 ? found[0].i : -1\n\n // if there are several of the same type\n if (found && found.length > 1) {\n found.push(found.shift())\n this.changedOrderFor = value\n }\n } catch (e) {\n warn('List could not findItemByValue:', e)\n }\n\n return index\n }\n\n scrollToItem = (\n active_item,\n { scrollTo = true, element = null } = {}\n ) => {\n clearTimeout(this._scrollTimeout)\n this._scrollTimeout = setTimeout(() => {\n // try to scroll to item\n if (this._refUl.current && parseFloat(active_item) > -1) {\n try {\n const ulElement = this._refUl.current\n const liElement = element || this.getActiveElement()\n if (liElement) {\n const top = liElement.offsetTop\n if (ulElement.scrollTo) {\n if (scrollTo === false || window.IS_TEST) {\n ulElement.style.scrollBehavior = 'auto'\n }\n ulElement.scrollTo({\n top,\n behavior: scrollTo ? 'smooth' : 'auto',\n })\n if (scrollTo === false) {\n ulElement.style.scrollBehavior = 'smooth'\n }\n } else if (ulElement.scrollTop) {\n ulElement.scrollTop = top\n }\n\n if (!isTrue(this.props.prevent_focus) && liElement) {\n liElement.focus()\n dispatchCustomElementEvent(this, 'on_show_focus', {\n element: liElement,\n })\n }\n } else {\n warn('The DrawerList item was not a DOM Element')\n }\n } catch (e) {\n warn('List could not scroll into element:', e)\n }\n }\n }, 1) // to make sure we are after all DOM updates, else we don't get this scrolling\n }\n\n /**\n * During opening (Dropdown, Autocomplete),\n * and if noting is selected,\n * set scroll to item.\n *\n * @param {number} active_item The item to set as active\n * @param {object} param1\n * @property {boolean} fireSelectEvent Wheter the onSelect event should get emitted\n * @property {boolean} scrollTo Wheter the list should scroll to the new active item nor not\n * @property {event} event The event object to forward to the emitted events\n */\n setActiveItemAndScrollToIt = (\n active_item,\n { fireSelectEvent = false, scrollTo = true, event = null } = {}\n ) => {\n this.setState({ active_item }, () => {\n if (parseFloat(active_item) === -1) {\n // Select the first item to NVDA is more easily navigateable,\n // without using the alt + arrow key\n // else we set the focus on the \"ul\" element\n if (document.activeElement?.tagName !== 'INPUT') {\n this._refUl.current?.focus({ preventScroll: true })\n }\n\n dispatchCustomElementEvent(this, 'on_show_focus', {\n element: this._refUl.current,\n })\n } else if (parseFloat(active_item) > -1) {\n const { selected_item } = this.state\n\n if (fireSelectEvent) {\n const attributes = this.attributes\n const ret = dispatchCustomElementEvent(this.state, 'on_select', {\n active_item,\n value: getSelectedItemValue(selected_item, this.state),\n data: getEventData(active_item, this.state.data),\n event,\n attributes,\n })\n if (ret === false) {\n return // stop here!\n }\n }\n\n if (isTrue(this.props.no_animation)) {\n scrollTo = false\n }\n\n this.scrollToItem(active_item, { scrollTo })\n }\n })\n }\n\n removeDirectionObserver() {\n this.disableBodyLock()\n\n clearTimeout(this._directionTimeout)\n if (typeof window !== 'undefined' && this.setDirection) {\n this._rootElem?.removeEventListener('scroll', this.setDirection)\n\n // this fixes iOS softkeyboard\n if (typeof window.visualViewport !== 'undefined') {\n window.visualViewport.removeEventListener(\n 'scroll',\n this.setDirection\n )\n window.visualViewport.removeEventListener(\n 'resize',\n this.setDirection\n )\n } else {\n window.removeEventListener('resize', this.setDirection)\n }\n\n this.setDirection = null\n }\n }\n\n setWrapperElement = (wrapper_element = this.props.wrapper_element) => {\n if (\n typeof wrapper_element === 'string' &&\n typeof document !== 'undefined'\n ) {\n wrapper_element = document.querySelector(wrapper_element)\n }\n\n if (wrapper_element !== this.state.wrapper_element) {\n this.setState({\n wrapper_element,\n })\n }\n\n return this\n }\n\n getAnchorElem(activeElement) {\n try {\n return activeElement.querySelector('a:first-of-type')\n } catch (e) {\n return null\n }\n }\n\n setMetaKey = (e) => {\n const we =\n typeof window !== 'undefined' && window.event ? window.event : e\n this.meta = {\n cmd: we.metaKey,\n ctrl: we.ctrlKey,\n shift: we.shiftKey,\n alt: we.altKey,\n }\n }\n\n onKeyUpHandler = (e) => {\n this.setMetaKey(e)\n }\n\n onKeyDownHandler = (e) => {\n const key = keycode(e)\n\n if (/command|alt|shift|ctrl/.test(key)) {\n this.setMetaKey(e)\n }\n\n dispatchCustomElementEvent(this.state, 'on_key_down', {\n event: e,\n key,\n })\n\n // To allow copy\n // But makes VO not reading our list items once command key is pressed\n // if (this.meta.cmd || this.meta.ctrl || this.meta.shift || this.meta.alt) {\n // return // stop here\n // }\n\n // stop here if the focus is not set\n // and the drawer is opened by default\n if (\n isTrue(this.props.prevent_close)\n // TODO: Has to be worked on better!\n // !isTrue(this.props.prevent_focus)\n ) {\n let isSameDrawer = false\n try {\n const ulElem = getPreviousSibling(\n 'dnb-drawer-list__options',\n document.activeElement\n )\n\n isSameDrawer =\n ulElem === this._refUl.current ||\n ulElem?.getAttribute('id') === this.props.id\n } catch (e) {\n warn(e)\n }\n if (!isSameDrawer && key !== 'tab') {\n return // stop here\n }\n }\n\n if (!this.state.isOpen) {\n return // stop here\n }\n\n if (isTrue(this.state.ignore_events) && key !== 'tab') {\n return // stop here\n }\n\n let active_item = parseFloat(this.state.active_item)\n\n if (isNaN(active_item)) {\n active_item = -1\n }\n\n const total = this.state.data && this.state.data.length - 1\n\n switch (key) {\n case 'up':\n {\n e.preventDefault()\n\n if (\n this.state.direction === 'bottom' &&\n this.state.active_item === this.getFirstItem()\n ) {\n active_item = -1\n } else {\n active_item = this.getPrevActiveItem()\n if (isNaN(active_item)) {\n active_item = this.getLastItem()\n }\n }\n }\n break\n\n case 'down':\n {\n e.preventDefault()\n\n if (\n this.state.direction === 'top' &&\n this.state.active_item === this.getLastItem()\n ) {\n active_item = -1\n } else {\n active_item = this.getNextActiveItem()\n\n if (isNaN(active_item)) {\n active_item = this.getFirstItem()\n }\n }\n }\n break\n\n case 'page up':\n case 'home':\n {\n e.preventDefault()\n active_item = this.getFirstItem() || 0\n }\n break\n\n case 'page down':\n case 'end':\n {\n e.preventDefault()\n active_item = this.getLastItem()\n if (isNaN(active_item)) {\n active_item = total\n }\n }\n break\n\n case 'enter':\n case 'space':\n {\n if (e.target.tagName === 'A') {\n e.target.dispatchEvent(new MouseEvent('click'))\n this.setHidden()\n return // stop here, and let the browser + anchor do the rest\n }\n\n active_item = this.getCurrentActiveItem()\n\n if (\n isTrue(this.props.skip_keysearch)\n ? active_item > -1 && key !== 'space'\n : true\n ) {\n e.preventDefault()\n const result = this.selectItemAndClose(active_item, {\n fireSelectEvent: true,\n event: e,\n })\n if (result === false) {\n return // stop here if the data actually does not exit\n }\n }\n }\n break\n\n case 'esc':\n {\n this.setHidden({ event: e })\n e.preventDefault()\n }\n break\n\n case 'tab':\n {\n if (active_item > -1) {\n // If there is an active item\n // we make it possible to tab inside it (to an anchor) instead of closing the list\n const activeElement = this.getActiveElement()\n const hasFocusOnElement = Boolean(\n this.getAnchorElem(activeElement)\n )\n\n this.setState({ hasFocusOnElement })\n\n // And if there is an anchor inside our active element\n if (hasFocusOnElement) {\n e.stopPropagation()\n\n // Also, set the focus actively into the active element, if it is not from beforehand\n const currentActiveElement = getPreviousSibling(\n 'dnb-drawer-list__option',\n document.activeElement\n )\n\n if (currentActiveElement !== activeElement) {\n /**\n * Create an fake element,\n * so it's the last one we focus, within our active element.\n *\n * When the users tabs to it,\n * we return the focus the the users prev focus element, e.g. autocomplete input\n *\n * Why is this needed? Because we have our list in a portal, outside of the tab order\n */\n const createTabElem = () => {\n try {\n const elem = document.createElement('BUTTON')\n elem.style = 'opacity:0;position:absolute;'\n const focus = () => {\n prevActiveElement.focus()\n elem.removeEventListener('focus', focus)\n activeElement.removeChild(after)\n activeElement.removeChild(before)\n }\n elem.addEventListener('focus', focus)\n return elem\n } catch (e) {\n //\n }\n }\n\n const prevActiveElement = document.activeElement\n const after = createTabElem()\n const before = createTabElem()\n\n // Now, focus our active element\n activeElement.focus()\n\n const insertElem = () => {\n try {\n // Insert our fake elements\n activeElement.appendChild(after)\n activeElement.insertBefore(\n before,\n activeElement.firstChild\n )\n } catch (e) {\n //\n }\n }\n\n // check because of test\n if (typeof window.requestAnimationFrame === 'function') {\n // requestAnimationFrame is need by chromium browsers\n window.requestAnimationFrame(insertElem)\n } else {\n insertElem()\n }\n }\n\n return // stop here\n }\n\n // We may considder to close the list and set the focus it the handler\n // but also, in portal mode, we want to prevent to start the focus from the top of the page\n else if (isTrue(this.props.prevent_close)) {\n active_item = -1\n }\n }\n\n this.setHidden({ event: e })\n }\n break\n\n default:\n active_item = this.findItemByValue(keycode(e))\n break\n }\n\n if (\n active_item === -1 &&\n this._refUl.current &&\n typeof document !== 'undefined'\n ) {\n const ulElem = getPreviousSibling(\n 'dnb-drawer-list__options',\n document.activeElement\n )\n\n if (ulElem === this._refUl.current) {\n this.setState({\n showFocusRing: true,\n active_item,\n })\n\n this._refUl.current.focus({ preventScroll: true })\n dispatchCustomElementEvent(this.state, 'handle_dismiss_focus')\n }\n } else if (\n parseFloat(active_item) > -1 &&\n active_item !== this.state.active_item\n ) {\n this.setState({\n showFocusRing: false,\n })\n this.setActiveItemAndScrollToIt(active_item, {\n fireSelectEvent: true,\n event: e,\n })\n }\n }\n\n getSelectedElement = () => {\n return (\n this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option--selected'\n ) ||\n this._refUl.current || {\n getAttribute: () => null,\n }\n )\n }\n\n getCurrentSelectedItem = () => {\n const elem = this.getSelectedElement()\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getActiveElement = () => {\n return (\n this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option--focus'\n ) || this.getSelectedElement()\n )\n }\n\n getCurrentActiveItem = () => {\n const elem = this.getActiveElement()\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getNextActiveItem = () => {\n const elem = this.getActiveElement().nextSibling\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getPrevActiveItem = () => {\n const elem = this.getActiveElement().previousSibling\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getFirstItem = () => {\n const elem = this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option.first-of-type' // because of the triangle element\n )\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getLastItem = () => {\n const elem = this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option.last-of-type' // because of the triangle element\n )\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n setOutsideClickObserver = () => {\n this.removeOutsideClickObserver()\n\n this.outsideClick = detectOutsideClick(\n [\n this.state.wrapper_element,\n this._refRoot.current,\n this._refUl.current,\n ],\n () => this.setHidden({ preventHideFocus: true }),\n { includedKeys: ['tab'] }\n )\n\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.onKeyDownHandler)\n document.addEventListener('keyup', this.onKeyUpHandler)\n }\n }\n\n removeOutsideClickObserver() {\n if (this.outsideClick) {\n this.outsideClick.remove()\n }\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n document.removeEventListener('keyup', this.onKeyUpHandler)\n }\n }\n\n addObservers = () => {\n this.setDirectionObserver()\n this.setScrollObserver()\n this.setOutsideClickObserver()\n }\n removeObservers = () => {\n this.removeDirectionObserver()\n this.removeScrollObserver()\n this.removeOutsideClickObserver()\n }\n\n toggleVisible = (...args) => {\n return this.state.opened\n ? this.setHidden(...args)\n : this.setVisible(...args)\n }\n\n setVisible = (args = {}, onStateComplete = null) => {\n if (this.state.opened && this.state.hidden === false) {\n if (typeof onStateComplete === 'function') {\n onStateComplete(true)\n }\n return // stop\n }\n\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n\n this.searchCache = null\n\n const handleSingleComponentCheck = () => {\n this.setState({\n hidden: false,\n opened: true,\n })\n\n const animationDelayHandler = () => {\n DrawerListProvider.isOpen = true\n this.setState({\n isOpen: true,\n })\n\n if (typeof onStateComplete === 'function') {\n onStateComplete(true)\n }\n\n this.setActiveState(true)\n }\n\n if (isTrue(this.props.no_animation)) {\n // our tests want no delay!\n if (process?.env.NODE_ENV === 'test') {\n animationDelayHandler()\n } else {\n // We have to have still a delay, to ensure the user can press enter to toggle the open state\n clearTimeout(this._showTimeout)\n this._showTimeout = setTimeout(animationDelayHandler, 0) // ensure we do not set isOpen true before the keydown handler has run\n }\n } else {\n clearTimeout(this._showTimeout)\n this._showTimeout = setTimeout(\n animationDelayHandler,\n DrawerListProvider.blurDelay\n ) // wait until animation is over\n }\n\n const { selected_item, active_item } = this.state\n dispatchCustomElementEvent(this.state, 'on_show', {\n ...args,\n data: getEventData(\n parseFloat(selected_item) > -1 ? selected_item : active_item,\n this.state.data\n ),\n attributes: this.attributes,\n ulElement: this._refUl.current,\n })\n\n this.setActiveItemAndScrollToIt(\n parseFloat(active_item) > -1 ? active_item : -1,\n { scrollTo: false }\n )\n }\n\n // If a user clicks on a second drawer list\n // we ensure we first close it, before we open it\n if (DrawerListProvider.isOpen && !isTrue(this.props.no_animation)) {\n clearTimeout(this._hideTimeout)\n this._hideTimeout = setTimeout(\n handleSingleComponentCheck,\n DrawerListProvider.blurDelay\n )\n } else {\n handleSingleComponentCheck()\n }\n }\n\n setHidden = (args = {}, onStateComplete = null) => {\n if (!this.state.opened || isTrue(this.props.prevent_close)) {\n if (typeof onStateComplete === 'function') {\n onStateComplete(false)\n }\n return // stop here\n }\n\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n\n const { selected_item, active_item } = this.state\n const res = dispatchCustomElementEvent(this.state, 'on_hide', {\n ...args,\n data: getEventData(\n parseFloat(selected_item) > -1 ? selected_item : active_item,\n this.state.data\n ),\n attributes: this.attributes,\n })\n\n if (res !== false) {\n this.setState({\n opened: false,\n })\n\n const delayHandler = () => {\n this.removeObservers()\n\n this.setState({\n hidden: true,\n isOpen: false,\n })\n if (typeof onStateComplete === 'function') {\n onStateComplete(false)\n }\n DrawerListProvider.isOpen = false\n\n this.setActiveState(false)\n }\n\n if (isTrue(this.props.no_animation)) {\n delayHandler()\n } else {\n clearTimeout(this._hideTimeout)\n this._hideTimeout = setTimeout(\n delayHandler,\n DrawerListProvider.blurDelay\n ) // wait until animation is over\n }\n }\n }\n\n setActiveState(active) {\n if (typeof document !== 'undefined') {\n try {\n if (active) {\n document.documentElement.setAttribute(\n 'data-dnb-drawer-list-active',\n String(this.props.id)\n )\n } else {\n document.documentElement.removeAttribute(\n 'data-dnb-drawer-list-active'\n )\n }\n } catch (e) {\n warn(\n 'DrawerList: Error on set \"data-dnb-drawer-list-active\" by using element.setAttribute()',\n e\n )\n }\n }\n }\n\n setDataHandler = (\n data,\n cb = null,\n { overwriteOriginalData = false } = {}\n ) => {\n if (!data) {\n return\n }\n\n if (typeof data === 'function') {\n data = getData(data)\n }\n\n data = normalizeData(data)\n\n this.setState(\n {\n data,\n original_data: overwriteOriginalData\n ? data\n : this.state.original_data,\n },\n () => {\n this.refreshScrollObserver()\n typeof cb === 'function' && cb(data)\n }\n )\n\n return this\n }\n\n setStateHandler = (state, cb = null) => {\n this.setState(\n {\n ...state,\n },\n cb\n )\n\n return this\n }\n\n selectItemAndClose = (itemToSelect, args = {}) => {\n args.closeOnSelection = true\n return this.selectItem(itemToSelect, args)\n }\n\n selectItem = (\n itemToSelect,\n {\n fireSelectEvent = false,\n event = null,\n closeOnSelection = false,\n } = {}\n ) => {\n // because of our delay on dispatching the event\n // make a copy of it, so we don't break the synthetic event\n if (event && typeof event.persist === 'function') {\n event.persist()\n }\n\n // if no value is set on start and we confirm, we get -1\n if (itemToSelect === -1) {\n itemToSelect = null\n }\n\n const data = getEventData(itemToSelect, this.state.data) || null\n const value = getSelectedItemValue(itemToSelect, this.state)\n const attributes = this.attributes\n const attr = {\n selected_item: itemToSelect,\n value,\n data,\n event,\n attributes,\n }\n\n const res = dispatchCustomElementEvent(\n this.state,\n 'on_pre_change',\n attr\n )\n\n if (res === false) {\n return res // stop here\n }\n\n if (hasSelectedText()) {\n const elem = getSelectedElement()\n const isInput = getPreviousSibling('dnb-input', elem)\n if (!isInput) {\n return // stop here\n }\n }\n\n const { keep_open, prevent_selection } = this.props\n\n const doCallOnChange =\n parseFloat(itemToSelect) > -1 &&\n itemToSelect !== this.state.selected_item\n const onSelectionIsComplete = () => {\n if (doCallOnChange) {\n dispatchCustomElementEvent(this.state, 'on_change', attr)\n }\n if (fireSelectEvent) {\n dispatchCustomElementEvent(this.state, 'on_select', {\n ...attr,\n active_item: itemToSelect,\n })\n }\n\n if (closeOnSelection && !isTrue(keep_open)) {\n this.setHidden()\n }\n }\n\n if (isTrue(prevent_selection)) {\n onSelectionIsComplete()\n } else {\n this.setState(\n {\n selected_item: itemToSelect,\n active_item: itemToSelect,\n },\n onSelectionIsComplete\n )\n }\n }\n\n render() {\n return (\n <DrawerListContext.Provider\n value={{\n ...this.context,\n drawerList: {\n attributes: this.attributes,\n _refRoot: this._refRoot,\n _refShell: this._refShell,\n _refUl: this._refUl,\n _refTriangle: this._refTriangle,\n _rootElem: this._rootElem,\n getActiveElement: this.getActiveElement,\n setData: this.setDataHandler,\n setState: this.setStateHandler,\n setWrapperElement: this.setWrapperElement,\n addObservers: this.addObservers,\n removeObservers: this.removeObservers,\n setVisible: this.setVisible,\n setHidden: this.setHidden,\n toggleVisible: this.toggleVisible,\n selectItem: this.selectItem,\n selectItemAndClose: this.selectItemAndClose,\n scrollToItem: this.scrollToItem,\n setActiveItemAndScrollToIt: this.setActiveItemAndScrollToIt,\n ...this.state,\n },\n }}\n >\n {this.props.children}\n </DrawerListContext.Provider>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DrawerListProvider.js","names":["React","PropTypes","keycode","Context","warn","isTrue","roundToNearest","getClosestScrollViewElement","detectOutsideClick","dispatchCustomElementEvent","getPreviousSibling","getOffsetTop","getOffsetLeft","hasSelectedText","getSelectedElement","getData","normalizeData","findClosest","getSelectedItemValue","parseContentTitle","getEventData","prepareStartupState","prepareDerivedState","drawerListPropTypes","drawerListDefaultProps","drawerListProviderPropTypes","drawerListProviderDefaultProps","DrawerListContext","disableBodyScroll","enableBodyScroll","DrawerListProvider","PureComponent","getDerivedStateFromProps","props","state","constructor","_this","this","_defineProperty","_refUl","current","_bodyLockIsEnabled","_refShell","spaceToLeft","spaceToRight","window","innerWidth","offsetWidth","triangleStyle","_refTriangle","style","shellStyle","transform","Math","abs","right","left","e","active_item","scrollTo","element","arguments","length","undefined","clearTimeout","_scrollTimeout","setTimeout","parseFloat","ulElement","liElement","getActiveElement","top","offsetTop","IS_TEST","scrollBehavior","behavior","scrollTop","prevent_focus","focus","fireSelectEvent","event","setState","_document$activeEleme","document","activeElement","tagName","_this$_refUl$current","preventScroll","selected_item","attributes","ret","value","data","no_animation","scrollToItem","wrapper_element","querySelector","we","meta","cmd","metaKey","ctrl","ctrlKey","shift","shiftKey","alt","altKey","setMetaKey","key","test","prevent_close","isSameDrawer","ulElem","getAttribute","id","isOpen","ignore_events","isNaN","total","preventDefault","direction","getFirstItem","getPrevActiveItem","getLastItem","getNextActiveItem","target","dispatchEvent","MouseEvent","setHidden","getCurrentActiveItem","skip_keysearch","result","selectItemAndClose","hasFocusOnElement","Boolean","getAnchorElem","stopPropagation","currentActiveElement","createTabElem","elem","createElement","prevActiveElement","removeEventListener","removeChild","after","before","addEventListener","insertElem","appendChild","insertBefore","firstChild","requestAnimationFrame","findItemByValue","showFocusRing","setActiveItemAndScrollToIt","_this$_refUl$current2","_this$_refUl$current3","nextSibling","previousSibling","_this$_refUl$current4","_this$_refUl$current5","removeOutsideClickObserver","outsideClick","_refRoot","preventHideFocus","includedKeys","onKeyDownHandler","onKeyUpHandler","setDirectionObserver","setScrollObserver","setOutsideClickObserver","removeDirectionObserver","removeScrollObserver","opened","setVisible","args","onStateComplete","hidden","_showTimeout","_hideTimeout","searchCache","handleSingleComponentCheck","animationDelayHandler","setActiveState","_process","process","env","NODE_ENV","blurDelay","_objectSpread","res","delayHandler","removeObservers","cb","overwriteOriginalData","original_data","refreshScrollObserver","itemToSelect","closeOnSelection","selectItem","persist","attr","isInput","keep_open","prevent_selection","doCallOnChange","onSelectionIsComplete","cache_hash","createRef","componentDidMount","componentDidUpdate","prevProps","_document$activeEleme2","_this$_refUl$current6","componentWillUnmount","_directionTimeout","itemSpots","reduce","acc","cur","i","_this$_refUl$current7","itemSpotsCount","Object","keys","closestToTop","closestToBottom","tmpToTop","tmpToBottom","setOnScroll","counts","offsetHeight","enable_body_lock","scrollable","min_height","max_height","on_resize","page_offset","observer_element","useBodyLock","isScrollable","customMinHeight","customMaxHeight","customElem","directionOffset","spaceToTopOffset","spaceToBottomOffset","renderDirection","_window","_window$requestAnimat","rootElem","documentElement","pageYOffset","spaceToTop","spaceToBottom","clientHeight","max","vh","visualViewport","height","innerHeight","call","correctHiddenView","setDirection","_rootElem","enableBodyLock","index","String","toLowerCase","changedOrderFor","itemData","str","separator","removeNumericOnlyValues","firstLetter","push","found","disableBodyLock","_this$_rootElem","remove","active","setAttribute","removeAttribute","render","Provider","context","drawerList","setData","setDataHandler","setStateHandler","setWrapperElement","addObservers","toggleVisible","children","propTypes","node","isRequired"],"sources":["../../../../src/fragments/drawer-list/DrawerListProvider.js"],"sourcesContent":["/**\n * Web DrawerList Provider\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport keycode from 'keycode'\nimport Context from '../../shared/Context'\nimport {\n warn,\n isTrue,\n roundToNearest,\n getClosestScrollViewElement,\n detectOutsideClick,\n dispatchCustomElementEvent,\n getPreviousSibling,\n} from '../../shared/component-helper'\nimport {\n getOffsetTop,\n getOffsetLeft,\n hasSelectedText,\n getSelectedElement,\n} from '../../shared/helpers'\nimport {\n getData,\n normalizeData,\n findClosest,\n getSelectedItemValue,\n parseContentTitle,\n getEventData,\n prepareStartupState,\n prepareDerivedState,\n drawerListPropTypes,\n drawerListDefaultProps,\n drawerListProviderPropTypes,\n drawerListProviderDefaultProps,\n} from './DrawerListHelpers'\nimport DrawerListContext from './DrawerListContext'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n} from '../../components/modal/bodyScrollLock'\n\nexport default class DrawerListProvider extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n ...drawerListPropTypes,\n ...drawerListProviderPropTypes,\n children: PropTypes.node.isRequired,\n }\n\n static defaultProps = {\n ...drawerListDefaultProps,\n ...drawerListProviderDefaultProps,\n }\n\n static blurDelay = 201 // some ms more than \"DrawerListSlideDown 200ms\"\n\n static getDerivedStateFromProps(props, state) {\n return prepareDerivedState(props, state)\n }\n\n constructor(props) {\n super(props)\n\n this.attributes = {}\n this.state = {\n tagName: 'dnb-drawer-list',\n cache_hash: '',\n active_item: null,\n selected_item: null,\n ignore_events: false,\n ...prepareStartupState(props),\n }\n\n this._refRoot = React.createRef()\n this._refShell = React.createRef()\n this._refUl = React.createRef()\n this._refTriangle = React.createRef()\n }\n\n componentDidMount() {\n if (isTrue(this.props.opened)) {\n this.setVisible()\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.opened !== null &&\n this.props.opened !== prevProps.opened\n ) {\n if (isTrue(this.props.opened)) {\n this.setVisible()\n } else if (isTrue(this.props.opened) === false) {\n this.setHidden()\n }\n }\n\n if (this.state.opened) {\n if (\n this.props.data !== prevProps.data &&\n typeof document !== 'undefined' &&\n document.activeElement?.tagName === 'BODY'\n ) {\n this._refUl.current?.focus()\n }\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n clearTimeout(this._scrollTimeout)\n clearTimeout(this._directionTimeout)\n\n this.removeObservers()\n this.setActiveState(false)\n }\n\n refreshScrollObserver() {\n if (typeof window === 'undefined' || !this._refUl.current) {\n return\n }\n\n this.itemSpots = this.state.data.reduce((acc, cur, i) => {\n const element = this._refUl.current?.querySelector(\n `li.dnb-drawer-list__option:nth-of-type(${i + 1})`\n )\n if (element) {\n acc[element.offsetTop] = {\n i,\n }\n }\n return acc\n }, {})\n\n this.itemSpotsCount = Object.keys(this.itemSpots).length\n }\n\n setScrollObserver() {\n if (typeof window === 'undefined' || !this._refUl.current) {\n return\n }\n\n this.removeScrollObserver()\n this.itemSpotsCount = 1 // to make sure we recalculate the spots\n\n try {\n let closestToTop = null,\n closestToBottom = null,\n tmpToTop,\n tmpToBottom\n\n this.setOnScroll = () => {\n if (!this._refUl.current) {\n return // stop here\n }\n\n // recalculate the spots\n if (this.itemSpotsCount <= 1) {\n this.refreshScrollObserver()\n }\n\n const counts = Object.keys(this.itemSpots)\n closestToBottom = findClosest(\n counts,\n this._refUl.current.scrollTop + this._refUl.current.offsetHeight\n )\n closestToTop = findClosest(counts, this._refUl.current.scrollTop)\n if (this.itemSpots[closestToTop] && closestToTop !== tmpToTop) {\n this.setState({\n closestToTop: this.itemSpots[closestToTop].i,\n })\n }\n // we do this because we want the arrow\n // to change visually\n if (\n closestToBottom !== tmpToBottom &&\n this.itemSpots[closestToBottom]\n ) {\n this.setState({\n closestToBottom: this.itemSpots[closestToBottom].i,\n })\n }\n tmpToTop = closestToTop\n tmpToBottom = closestToBottom\n }\n\n this._refUl.current.addEventListener('scroll', this.setOnScroll)\n this.setOnScroll()\n } catch (e) {\n warn('List could not set onScroll:', e)\n }\n }\n\n removeScrollObserver() {\n if (typeof window !== 'undefined' && this.setOnScroll) {\n window.removeEventListener('resize', this.setOnScroll)\n this.setOnScroll = null\n }\n }\n\n enableBodyLock = () => {\n if (this._refUl.current) {\n this._bodyLockIsEnabled = true\n disableBodyScroll(this._refUl.current)\n }\n }\n\n disableBodyLock = () => {\n if (this._bodyLockIsEnabled && this._refUl.current) {\n this._bodyLockIsEnabled = null\n enableBodyScroll(this._refUl.current)\n }\n }\n\n setDirectionObserver() {\n if (\n typeof window === 'undefined' ||\n typeof document === 'undefined' ||\n !(this.state.wrapper_element || this._refRoot.current)\n ) {\n return\n }\n\n const {\n enable_body_lock,\n scrollable,\n min_height,\n max_height,\n on_resize,\n page_offset,\n observer_element,\n } = this.props\n\n // const skipPortal = isTrue(skip_portal)\n const useBodyLock = isTrue(enable_body_lock)\n const isScrollable = isTrue(scrollable)\n const customMinHeight = parseFloat(min_height) * 16\n const customMaxHeight = parseFloat(max_height) || 0\n\n let customElem =\n typeof observer_element === 'string'\n ? document.querySelector(observer_element)\n : null\n\n if (!customElem) {\n customElem = getClosestScrollViewElement(this._refRoot.current)\n }\n\n // In case we have one before hand\n this.removeDirectionObserver()\n\n const directionOffset = 96\n const spaceToTopOffset = 2 * 16\n const spaceToBottomOffset = 2 * 16\n const elem = this.state.wrapper_element || this._refRoot.current\n\n const renderDirection = () => {\n try {\n // make calculation for both direction and height\n const rootElem = customElem || document.documentElement\n\n const pageYOffset = !isNaN(parseFloat(page_offset))\n ? parseFloat(page_offset)\n : rootElem.scrollTop /* pageYOffset */\n const spaceToTop =\n getOffsetTop(elem) + elem.offsetHeight - pageYOffset\n const spaceToBottom =\n rootElem.clientHeight /* innerHeight */ -\n (getOffsetTop(elem) + elem.offsetHeight) +\n pageYOffset\n\n const direction =\n Math.max(spaceToBottom - directionOffset, directionOffset) <\n customMinHeight && spaceToTop > customMinHeight\n ? 'top'\n : 'bottom'\n\n // make sure we never get higher than we have defined in CSS\n let max_height = customMaxHeight\n if (!(max_height > 0)) {\n max_height =\n direction === 'top'\n ? spaceToTop -\n ((this.state.wrapper_element || this._refRoot.current)\n .offsetHeight || 0) -\n spaceToTopOffset\n : spaceToBottom - spaceToBottomOffset\n\n // get the view port height, like in CSS\n let vh = 0\n if (typeof window.visualViewport !== 'undefined') {\n vh = window.visualViewport.height\n } else {\n vh = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n )\n }\n\n // like defined in CSS\n vh = vh * (isScrollable ? 0.7 : 0.9)\n\n if (max_height > vh) {\n max_height = vh\n }\n\n // convert px to rem\n max_height = roundToNearest(max_height, 8) / 16\n }\n\n // update the states\n if (this.props.direction === 'auto') {\n this.setState({\n direction,\n })\n }\n this.setState({\n max_height,\n })\n\n // call the event, if set\n if (on_resize) {\n dispatchCustomElementEvent(this.state, 'on_resize', {\n direction,\n max_height,\n })\n }\n } catch (e) {\n warn('List could not set onResize:', e)\n }\n\n // React v18 needs a delay to make the calculation during first render\n window?.requestAnimationFrame?.(this.correctHiddenView) ||\n this.correctHiddenView()\n }\n\n // debounce\n this.setDirection = () => {\n clearTimeout(this._directionTimeout)\n this._directionTimeout = setTimeout(renderDirection, 50)\n }\n\n // customElem can be a dnb-scroll-view\n this._rootElem = customElem || window\n this._rootElem.addEventListener('scroll', this.setDirection)\n\n // this fixes iOS softkeyboard\n if (typeof window.visualViewport !== 'undefined') {\n window.visualViewport.addEventListener('scroll', this.setDirection)\n window.visualViewport.addEventListener('resize', this.setDirection)\n } else {\n window.addEventListener('resize', this.setDirection)\n }\n\n if (useBodyLock) {\n this.enableBodyLock()\n }\n\n this.refreshScrollObserver()\n\n renderDirection()\n }\n\n /**\n * Deprecated\n * We should replace all the logic of handling left/right aligned\n * and setting the position, with a PopupMenu component,\n * which uses the logic form Tooltip.\n *\n * EDS-246\n */\n correctHiddenView = () => {\n // console.log('this._refShell.current', this._refShell.current)\n // console.log('this._refUl.current', this._refUl.current)\n // We use \"style.transform\", because it is a independent \"and quick\" solution\n // we could send down spaceToLeft and spaceToRight and set it with React's \"style\" prop in future\n if (!this._refShell.current || !this._refUl.current) {\n return // stop here\n }\n\n try {\n const spaceToLeft = getOffsetLeft(this._refUl.current)\n const spaceToRight =\n window.innerWidth -\n (getOffsetLeft(this._refUl.current) +\n this._refUl.current.offsetWidth)\n\n const triangleStyle = this._refTriangle.current.style\n const shellStyle = this._refShell.current.style\n\n // correct left side\n if (spaceToLeft < 0) {\n shellStyle.transform = `translateX(${Math.abs(\n spaceToLeft / 16\n )}rem)`\n triangleStyle.right = `${Math.abs(spaceToLeft / 16)}rem`\n\n // correct right side\n } else if (spaceToRight < 0) {\n shellStyle.transform = `translateX(${spaceToRight / 16}rem)`\n triangleStyle.left = `${Math.abs(spaceToRight / 16)}rem`\n } else {\n if (shellStyle.transform) {\n shellStyle.transform = ''\n triangleStyle.left = 'auto'\n triangleStyle.right = 'auto'\n }\n }\n } catch (e) {\n //\n }\n }\n\n // this gives us the possibility to quickly search for an item\n // by simply pressing any alfabetic key\n findItemByValue(value) {\n if (isTrue(this.props.skip_keysearch)) {\n return\n }\n\n let index = -1\n\n try {\n value = String(value).toLowerCase()\n\n // delete the cache\n // if there are several of the same type\n if (this.changedOrderFor !== value) {\n this.searchCache = null\n this.changedOrderFor = null\n }\n\n this.searchCache =\n this.searchCache ||\n this.state.data.reduce((acc, itemData, i) => {\n const str = String(\n parseContentTitle(itemData, {\n separator: ' ',\n removeNumericOnlyValues: true,\n })\n )\n\n // take the first letter\n const firstLetter = String(str[0]).toLowerCase()\n acc[firstLetter] = acc[firstLetter] || []\n acc[firstLetter].push({\n i,\n })\n\n return acc\n }, {})\n\n const found = this.searchCache[value]\n index = found && found[0] && found[0].i > -1 ? found[0].i : -1\n\n // if there are several of the same type\n if (found && found.length > 1) {\n found.push(found.shift())\n this.changedOrderFor = value\n }\n } catch (e) {\n warn('List could not findItemByValue:', e)\n }\n\n return index\n }\n\n scrollToItem = (\n active_item,\n { scrollTo = true, element = null } = {}\n ) => {\n clearTimeout(this._scrollTimeout)\n this._scrollTimeout = setTimeout(() => {\n // try to scroll to item\n if (this._refUl.current && parseFloat(active_item) > -1) {\n try {\n const ulElement = this._refUl.current\n const liElement = element || this.getActiveElement()\n if (liElement) {\n const top = liElement.offsetTop\n if (ulElement.scrollTo) {\n if (scrollTo === false || window.IS_TEST) {\n ulElement.style.scrollBehavior = 'auto'\n }\n ulElement.scrollTo({\n top,\n behavior: scrollTo ? 'smooth' : 'auto',\n })\n if (scrollTo === false) {\n ulElement.style.scrollBehavior = 'smooth'\n }\n } else if (ulElement.scrollTop) {\n ulElement.scrollTop = top\n }\n\n if (!isTrue(this.props.prevent_focus) && liElement) {\n liElement.focus()\n dispatchCustomElementEvent(this, 'on_show_focus', {\n element: liElement,\n })\n }\n } else {\n warn('The DrawerList item was not a DOM Element')\n }\n } catch (e) {\n warn('List could not scroll into element:', e)\n }\n }\n }, 1) // to make sure we are after all DOM updates, else we don't get this scrolling\n }\n\n /**\n * During opening (Dropdown, Autocomplete),\n * and if noting is selected,\n * set scroll to item.\n *\n * @param {number} active_item The item to set as active\n * @param {object} param1\n * @property {boolean} fireSelectEvent Whether the onSelect event should get emitted\n * @property {boolean} scrollTo Whether the list should scroll to the new active item nor not\n * @property {event} event The event object to forward to the emitted events\n */\n setActiveItemAndScrollToIt = (\n active_item,\n { fireSelectEvent = false, scrollTo = true, event = null } = {}\n ) => {\n this.setState({ active_item }, () => {\n if (parseFloat(active_item) === -1) {\n // Select the first item to NVDA is more easily navigateable,\n // without using the alt + arrow key\n // else we set the focus on the \"ul\" element\n if (document.activeElement?.tagName !== 'INPUT') {\n this._refUl.current?.focus({ preventScroll: true })\n }\n\n dispatchCustomElementEvent(this, 'on_show_focus', {\n element: this._refUl.current,\n })\n } else if (parseFloat(active_item) > -1) {\n const { selected_item } = this.state\n\n if (fireSelectEvent) {\n const attributes = this.attributes\n const ret = dispatchCustomElementEvent(this.state, 'on_select', {\n active_item,\n value: getSelectedItemValue(selected_item, this.state),\n data: getEventData(active_item, this.state.data),\n event,\n attributes,\n })\n if (ret === false) {\n return // stop here!\n }\n }\n\n if (isTrue(this.props.no_animation)) {\n scrollTo = false\n }\n\n this.scrollToItem(active_item, { scrollTo })\n }\n })\n }\n\n removeDirectionObserver() {\n this.disableBodyLock()\n\n clearTimeout(this._directionTimeout)\n if (typeof window !== 'undefined' && this.setDirection) {\n this._rootElem?.removeEventListener('scroll', this.setDirection)\n\n // this fixes iOS softkeyboard\n if (typeof window.visualViewport !== 'undefined') {\n window.visualViewport.removeEventListener(\n 'scroll',\n this.setDirection\n )\n window.visualViewport.removeEventListener(\n 'resize',\n this.setDirection\n )\n } else {\n window.removeEventListener('resize', this.setDirection)\n }\n\n this.setDirection = null\n }\n }\n\n setWrapperElement = (wrapper_element = this.props.wrapper_element) => {\n if (\n typeof wrapper_element === 'string' &&\n typeof document !== 'undefined'\n ) {\n wrapper_element = document.querySelector(wrapper_element)\n }\n\n if (wrapper_element !== this.state.wrapper_element) {\n this.setState({\n wrapper_element,\n })\n }\n\n return this\n }\n\n getAnchorElem(activeElement) {\n try {\n return activeElement.querySelector('a:first-of-type')\n } catch (e) {\n return null\n }\n }\n\n setMetaKey = (e) => {\n const we =\n typeof window !== 'undefined' && window.event ? window.event : e\n this.meta = {\n cmd: we.metaKey,\n ctrl: we.ctrlKey,\n shift: we.shiftKey,\n alt: we.altKey,\n }\n }\n\n onKeyUpHandler = (e) => {\n this.setMetaKey(e)\n }\n\n onKeyDownHandler = (e) => {\n const key = keycode(e)\n\n if (/command|alt|shift|ctrl/.test(key)) {\n this.setMetaKey(e)\n }\n\n dispatchCustomElementEvent(this.state, 'on_key_down', {\n event: e,\n key,\n })\n\n // To allow copy\n // But makes VO not reading our list items once command key is pressed\n // if (this.meta.cmd || this.meta.ctrl || this.meta.shift || this.meta.alt) {\n // return // stop here\n // }\n\n // stop here if the focus is not set\n // and the drawer is opened by default\n if (\n isTrue(this.props.prevent_close)\n // TODO: Has to be worked on better!\n // !isTrue(this.props.prevent_focus)\n ) {\n let isSameDrawer = false\n try {\n const ulElem = getPreviousSibling(\n 'dnb-drawer-list__options',\n document.activeElement\n )\n\n isSameDrawer =\n ulElem === this._refUl.current ||\n ulElem?.getAttribute('id') === this.props.id\n } catch (e) {\n warn(e)\n }\n if (!isSameDrawer && key !== 'tab') {\n return // stop here\n }\n }\n\n if (!this.state.isOpen) {\n return // stop here\n }\n\n if (isTrue(this.state.ignore_events) && key !== 'tab') {\n return // stop here\n }\n\n let active_item = parseFloat(this.state.active_item)\n\n if (isNaN(active_item)) {\n active_item = -1\n }\n\n const total = this.state.data && this.state.data.length - 1\n\n switch (key) {\n case 'up':\n {\n e.preventDefault()\n\n if (\n this.state.direction === 'bottom' &&\n this.state.active_item === this.getFirstItem()\n ) {\n active_item = -1\n } else {\n active_item = this.getPrevActiveItem()\n if (isNaN(active_item)) {\n active_item = this.getLastItem()\n }\n }\n }\n break\n\n case 'down':\n {\n e.preventDefault()\n\n if (\n this.state.direction === 'top' &&\n this.state.active_item === this.getLastItem()\n ) {\n active_item = -1\n } else {\n active_item = this.getNextActiveItem()\n\n if (isNaN(active_item)) {\n active_item = this.getFirstItem()\n }\n }\n }\n break\n\n case 'page up':\n case 'home':\n {\n e.preventDefault()\n active_item = this.getFirstItem() || 0\n }\n break\n\n case 'page down':\n case 'end':\n {\n e.preventDefault()\n active_item = this.getLastItem()\n if (isNaN(active_item)) {\n active_item = total\n }\n }\n break\n\n case 'enter':\n case 'space':\n {\n if (e.target.tagName === 'A') {\n e.target.dispatchEvent(new MouseEvent('click'))\n this.setHidden()\n return // stop here, and let the browser + anchor do the rest\n }\n\n active_item = this.getCurrentActiveItem()\n\n if (\n isTrue(this.props.skip_keysearch)\n ? active_item > -1 && key !== 'space'\n : true\n ) {\n e.preventDefault()\n const result = this.selectItemAndClose(active_item, {\n fireSelectEvent: true,\n event: e,\n })\n if (result === false) {\n return // stop here if the data actually does not exit\n }\n }\n }\n break\n\n case 'esc':\n {\n this.setHidden({ event: e })\n e.preventDefault()\n }\n break\n\n case 'tab':\n {\n if (active_item > -1) {\n // If there is an active item\n // we make it possible to tab inside it (to an anchor) instead of closing the list\n const activeElement = this.getActiveElement()\n const hasFocusOnElement = Boolean(\n this.getAnchorElem(activeElement)\n )\n\n this.setState({ hasFocusOnElement })\n\n // And if there is an anchor inside our active element\n if (hasFocusOnElement) {\n e.stopPropagation()\n\n // Also, set the focus actively into the active element, if it is not from beforehand\n const currentActiveElement = getPreviousSibling(\n 'dnb-drawer-list__option',\n document.activeElement\n )\n\n if (currentActiveElement !== activeElement) {\n /**\n * Create an fake element,\n * so it's the last one we focus, within our active element.\n *\n * When the users tabs to it,\n * we return the focus the the users prev focus element, e.g. autocomplete input\n *\n * Why is this needed? Because we have our list in a portal, outside of the tab order\n */\n const createTabElem = () => {\n try {\n const elem = document.createElement('BUTTON')\n elem.style = 'opacity:0;position:absolute;'\n const focus = () => {\n prevActiveElement.focus()\n elem.removeEventListener('focus', focus)\n activeElement.removeChild(after)\n activeElement.removeChild(before)\n }\n elem.addEventListener('focus', focus)\n return elem\n } catch (e) {\n //\n }\n }\n\n const prevActiveElement = document.activeElement\n const after = createTabElem()\n const before = createTabElem()\n\n // Now, focus our active element\n activeElement.focus()\n\n const insertElem = () => {\n try {\n // Insert our fake elements\n activeElement.appendChild(after)\n activeElement.insertBefore(\n before,\n activeElement.firstChild\n )\n } catch (e) {\n //\n }\n }\n\n // check because of test\n if (typeof window.requestAnimationFrame === 'function') {\n // requestAnimationFrame is need by chromium browsers\n window.requestAnimationFrame(insertElem)\n } else {\n insertElem()\n }\n }\n\n return // stop here\n }\n\n // We may consider to close the list and set the focus it the handler\n // but also, in portal mode, we want to prevent to start the focus from the top of the page\n else if (isTrue(this.props.prevent_close)) {\n active_item = -1\n }\n }\n\n this.setHidden({ event: e })\n }\n break\n\n default:\n active_item = this.findItemByValue(keycode(e))\n break\n }\n\n if (\n active_item === -1 &&\n this._refUl.current &&\n typeof document !== 'undefined'\n ) {\n const ulElem = getPreviousSibling(\n 'dnb-drawer-list__options',\n document.activeElement\n )\n\n if (ulElem === this._refUl.current) {\n this.setState({\n showFocusRing: true,\n active_item,\n })\n\n this._refUl.current.focus({ preventScroll: true })\n dispatchCustomElementEvent(this.state, 'handle_dismiss_focus')\n }\n } else if (\n parseFloat(active_item) > -1 &&\n active_item !== this.state.active_item\n ) {\n this.setState({\n showFocusRing: false,\n })\n this.setActiveItemAndScrollToIt(active_item, {\n fireSelectEvent: true,\n event: e,\n })\n }\n }\n\n getSelectedElement = () => {\n return (\n this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option--selected'\n ) ||\n this._refUl.current || {\n getAttribute: () => null,\n }\n )\n }\n\n getCurrentSelectedItem = () => {\n const elem = this.getSelectedElement()\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getActiveElement = () => {\n return (\n this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option--focus'\n ) || this.getSelectedElement()\n )\n }\n\n getCurrentActiveItem = () => {\n const elem = this.getActiveElement()\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getNextActiveItem = () => {\n const elem = this.getActiveElement().nextSibling\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getPrevActiveItem = () => {\n const elem = this.getActiveElement().previousSibling\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getFirstItem = () => {\n const elem = this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option.first-of-type' // because of the triangle element\n )\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n getLastItem = () => {\n const elem = this._refUl.current?.querySelector(\n 'li.dnb-drawer-list__option.last-of-type' // because of the triangle element\n )\n return parseFloat(elem && elem.getAttribute('data-item'))\n }\n\n setOutsideClickObserver = () => {\n this.removeOutsideClickObserver()\n\n this.outsideClick = detectOutsideClick(\n [\n this.state.wrapper_element,\n this._refRoot.current,\n this._refUl.current,\n ],\n () => this.setHidden({ preventHideFocus: true }),\n { includedKeys: ['tab'] }\n )\n\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.onKeyDownHandler)\n document.addEventListener('keyup', this.onKeyUpHandler)\n }\n }\n\n removeOutsideClickObserver() {\n if (this.outsideClick) {\n this.outsideClick.remove()\n }\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n document.removeEventListener('keyup', this.onKeyUpHandler)\n }\n }\n\n addObservers = () => {\n this.setDirectionObserver()\n this.setScrollObserver()\n this.setOutsideClickObserver()\n }\n removeObservers = () => {\n this.removeDirectionObserver()\n this.removeScrollObserver()\n this.removeOutsideClickObserver()\n }\n\n toggleVisible = (...args) => {\n return this.state.opened\n ? this.setHidden(...args)\n : this.setVisible(...args)\n }\n\n setVisible = (args = {}, onStateComplete = null) => {\n if (this.state.opened && this.state.hidden === false) {\n if (typeof onStateComplete === 'function') {\n onStateComplete(true)\n }\n return // stop\n }\n\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n\n this.searchCache = null\n\n const handleSingleComponentCheck = () => {\n this.setState({\n hidden: false,\n opened: true,\n })\n\n const animationDelayHandler = () => {\n DrawerListProvider.isOpen = true\n this.setState({\n isOpen: true,\n })\n\n if (typeof onStateComplete === 'function') {\n onStateComplete(true)\n }\n\n this.setActiveState(true)\n }\n\n if (isTrue(this.props.no_animation)) {\n // our tests want no delay!\n if (process?.env.NODE_ENV === 'test') {\n animationDelayHandler()\n } else {\n // We have to have still a delay, to ensure the user can press enter to toggle the open state\n clearTimeout(this._showTimeout)\n this._showTimeout = setTimeout(animationDelayHandler, 0) // ensure we do not set isOpen true before the keydown handler has run\n }\n } else {\n clearTimeout(this._showTimeout)\n this._showTimeout = setTimeout(\n animationDelayHandler,\n DrawerListProvider.blurDelay\n ) // wait until animation is over\n }\n\n const { selected_item, active_item } = this.state\n dispatchCustomElementEvent(this.state, 'on_show', {\n ...args,\n data: getEventData(\n parseFloat(selected_item) > -1 ? selected_item : active_item,\n this.state.data\n ),\n attributes: this.attributes,\n ulElement: this._refUl.current,\n })\n\n this.setActiveItemAndScrollToIt(\n parseFloat(active_item) > -1 ? active_item : -1,\n { scrollTo: false }\n )\n }\n\n // If a user clicks on a second drawer list\n // we ensure we first close it, before we open it\n if (DrawerListProvider.isOpen && !isTrue(this.props.no_animation)) {\n clearTimeout(this._hideTimeout)\n this._hideTimeout = setTimeout(\n handleSingleComponentCheck,\n DrawerListProvider.blurDelay\n )\n } else {\n handleSingleComponentCheck()\n }\n }\n\n setHidden = (args = {}, onStateComplete = null) => {\n if (!this.state.opened || isTrue(this.props.prevent_close)) {\n if (typeof onStateComplete === 'function') {\n onStateComplete(false)\n }\n return // stop here\n }\n\n clearTimeout(this._showTimeout)\n clearTimeout(this._hideTimeout)\n\n const { selected_item, active_item } = this.state\n const res = dispatchCustomElementEvent(this.state, 'on_hide', {\n ...args,\n data: getEventData(\n parseFloat(selected_item) > -1 ? selected_item : active_item,\n this.state.data\n ),\n attributes: this.attributes,\n })\n\n if (res !== false) {\n this.setState({\n opened: false,\n })\n\n const delayHandler = () => {\n this.removeObservers()\n\n this.setState({\n hidden: true,\n isOpen: false,\n })\n if (typeof onStateComplete === 'function') {\n onStateComplete(false)\n }\n DrawerListProvider.isOpen = false\n\n this.setActiveState(false)\n }\n\n if (isTrue(this.props.no_animation)) {\n delayHandler()\n } else {\n clearTimeout(this._hideTimeout)\n this._hideTimeout = setTimeout(\n delayHandler,\n DrawerListProvider.blurDelay\n ) // wait until animation is over\n }\n }\n }\n\n setActiveState(active) {\n if (typeof document !== 'undefined') {\n try {\n if (active) {\n document.documentElement.setAttribute(\n 'data-dnb-drawer-list-active',\n String(this.props.id)\n )\n } else {\n document.documentElement.removeAttribute(\n 'data-dnb-drawer-list-active'\n )\n }\n } catch (e) {\n warn(\n 'DrawerList: Error on set \"data-dnb-drawer-list-active\" by using element.setAttribute()',\n e\n )\n }\n }\n }\n\n setDataHandler = (\n data,\n cb = null,\n { overwriteOriginalData = false } = {}\n ) => {\n if (!data) {\n return\n }\n\n if (typeof data === 'function') {\n data = getData(data)\n }\n\n data = normalizeData(data)\n\n this.setState(\n {\n data,\n original_data: overwriteOriginalData\n ? data\n : this.state.original_data,\n },\n () => {\n this.refreshScrollObserver()\n typeof cb === 'function' && cb(data)\n }\n )\n\n return this\n }\n\n setStateHandler = (state, cb = null) => {\n this.setState(\n {\n ...state,\n },\n cb\n )\n\n return this\n }\n\n selectItemAndClose = (itemToSelect, args = {}) => {\n args.closeOnSelection = true\n return this.selectItem(itemToSelect, args)\n }\n\n selectItem = (\n itemToSelect,\n {\n fireSelectEvent = false,\n event = null,\n closeOnSelection = false,\n } = {}\n ) => {\n // because of our delay on dispatching the event\n // make a copy of it, so we don't break the synthetic event\n if (event && typeof event.persist === 'function') {\n event.persist()\n }\n\n // if no value is set on start and we confirm, we get -1\n if (itemToSelect === -1) {\n itemToSelect = null\n }\n\n const data = getEventData(itemToSelect, this.state.data) || null\n const value = getSelectedItemValue(itemToSelect, this.state)\n const attributes = this.attributes\n const attr = {\n selected_item: itemToSelect,\n value,\n data,\n event,\n attributes,\n }\n\n const res = dispatchCustomElementEvent(\n this.state,\n 'on_pre_change',\n attr\n )\n\n if (res === false) {\n return res // stop here\n }\n\n if (hasSelectedText()) {\n const elem = getSelectedElement()\n const isInput = getPreviousSibling('dnb-input', elem)\n if (!isInput) {\n return // stop here\n }\n }\n\n const { keep_open, prevent_selection } = this.props\n\n const doCallOnChange =\n parseFloat(itemToSelect) > -1 &&\n itemToSelect !== this.state.selected_item\n const onSelectionIsComplete = () => {\n if (doCallOnChange) {\n dispatchCustomElementEvent(this.state, 'on_change', attr)\n }\n if (fireSelectEvent) {\n dispatchCustomElementEvent(this.state, 'on_select', {\n ...attr,\n active_item: itemToSelect,\n })\n }\n\n if (closeOnSelection && !isTrue(keep_open)) {\n this.setHidden()\n }\n }\n\n if (isTrue(prevent_selection)) {\n onSelectionIsComplete()\n } else {\n this.setState(\n {\n selected_item: itemToSelect,\n active_item: itemToSelect,\n },\n onSelectionIsComplete\n )\n }\n }\n\n render() {\n return (\n <DrawerListContext.Provider\n value={{\n ...this.context,\n drawerList: {\n attributes: this.attributes,\n _refRoot: this._refRoot,\n _refShell: this._refShell,\n _refUl: this._refUl,\n _refTriangle: this._refTriangle,\n _rootElem: this._rootElem,\n getActiveElement: this.getActiveElement,\n setData: this.setDataHandler,\n setState: this.setStateHandler,\n setWrapperElement: this.setWrapperElement,\n addObservers: this.addObservers,\n removeObservers: this.removeObservers,\n setVisible: this.setVisible,\n setHidden: this.setHidden,\n toggleVisible: this.toggleVisible,\n selectItem: this.selectItem,\n selectItemAndClose: this.selectItemAndClose,\n scrollToItem: this.scrollToItem,\n setActiveItemAndScrollToIt: this.setActiveItemAndScrollToIt,\n ...this.state,\n },\n }}\n >\n {this.props.children}\n </DrawerListContext.Provider>\n )\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnb/eufemia",
3
- "version": "10.4.2",
3
+ "version": "10.5.0",
4
4
  "description": "DNB Eufemia Design System UI Library",
5
5
  "license": "SEE LICENSE IN LICENSE FILE",
6
6
  "author": "DNB Team & Tobias Høegh",
@@ -1,2 +1,2 @@
1
1
  export function init(): void;
2
- export const version: "10.4.2";
2
+ export const version: "10.5.0";
package/shared/Eufemia.js CHANGED
@@ -1,9 +1,9 @@
1
- export const version = '10.4.2';
1
+ export const version = '10.5.0';
2
2
  export function init() {
3
3
  if (typeof window !== 'undefined') {
4
4
  class Eufemia {
5
5
  get version() {
6
- return '10.4.2';
6
+ return '10.5.0';
7
7
  }
8
8
  }
9
9
  window.Eufemia = new Eufemia();
@@ -1 +1 @@
1
- {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.4.2'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.4.2'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,QAAQ;AAE/B,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,QAAQ;MACjB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
1
+ {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.5.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.5.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,QAAQ;AAE/B,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,QAAQ;MACjB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
@@ -9,7 +9,7 @@ type VisibilityByThemeProps = {
9
9
  /**
10
10
  * A valid theme name or object.
11
11
  * Will omit passing children on a match.
12
- * NB: "visible" takes presense over "hidden"
12
+ * NB: "visible" takes presence over "hidden"
13
13
  */
14
14
  hidden?: ThemeParams;
15
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityByTheme.js","names":["useTheme","VisibilityByTheme","_ref","children","visible","hidden","theme","visibleList","Array","isArray","hiddenList","some","match","themeItem","name","matchObject","Object","keys","every","key"],"sources":["../../../src/shared/VisibilityByTheme.tsx"],"sourcesContent":["import React from 'react'\nimport useTheme from './useTheme'\nimport type { ThemeNames, ThemeProps } from './Theme'\n\ntype VisibilityByThemeProps = {\n /**\n * A valid theme name or object.\n * Will pass children on a match.\n */\n visible?: ThemeParams\n\n /**\n * A valid theme name or object.\n * Will omit passing children on a match.\n * NB: \"visible\" takes presense over \"hidden\"\n */\n hidden?: ThemeParams\n\n /**\n * Any kind of a React Node that should render on a match.\n */\n children: React.ReactNode\n}\n\ntype ThemeItem = ThemeNames | ThemeProps\ntype ThemeParams = ThemeItem | Array<ThemeItem>\n\nexport default function VisibilityByTheme({\n children,\n visible,\n hidden,\n}: VisibilityByThemeProps) {\n const theme = useTheme()\n\n const visibleList = Array.isArray(visible) ? visible : [visible]\n const hiddenList = Array.isArray(hidden) ? hidden : [hidden]\n\n if (visible) {\n if (!visibleList.some(match(theme))) {\n return null\n }\n } else if (hidden) {\n if (hiddenList.some(match(theme))) {\n return null\n }\n }\n\n return children as JSX.Element\n\n function match(theme: ThemeProps) {\n return (themeItem: ThemeItem) => {\n return typeof themeItem === 'string'\n ? theme.name === themeItem\n : matchObject(theme, themeItem)\n }\n }\n\n function matchObject(theme: ThemeProps, themeItem: ThemeItem) {\n return Object.keys(themeItem).every((key) => {\n return theme[key] === themeItem[key]\n })\n }\n}\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,YAAY;AA0BjC,eAAe,SAASC,iBAAiBA,CAAAC,IAAA,EAId;EAAA,IAJe;IACxCC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC,GAAAH,IAAA;EACvB,MAAMI,KAAK,GAAGN,QAAQ,CAAC,CAAC;EAExB,MAAMO,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACL,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;EAChE,MAAMM,UAAU,GAAGF,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;EAE5D,IAAID,OAAO,EAAE;IACX,IAAI,CAACG,WAAW,CAACI,IAAI,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAE;MACnC,OAAO,IAAI;IACb;EACF,CAAC,MAAM,IAAID,MAAM,EAAE;IACjB,IAAIK,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAE;MACjC,OAAO,IAAI;IACb;EACF;EAEA,OAAOH,QAAQ;EAEf,SAASS,KAAKA,CAACN,KAAiB,EAAE;IAChC,OAAQO,SAAoB,IAAK;MAC/B,OAAO,OAAOA,SAAS,KAAK,QAAQ,GAChCP,KAAK,CAACQ,IAAI,KAAKD,SAAS,GACxBE,WAAW,CAACT,KAAK,EAAEO,SAAS,CAAC;IACnC,CAAC;EACH;EAEA,SAASE,WAAWA,CAACT,KAAiB,EAAEO,SAAoB,EAAE;IAC5D,OAAOG,MAAM,CAACC,IAAI,CAACJ,SAAS,CAAC,CAACK,KAAK,CAAEC,GAAG,IAAK;MAC3C,OAAOb,KAAK,CAACa,GAAG,CAAC,KAAKN,SAAS,CAACM,GAAG,CAAC;IACtC,CAAC,CAAC;EACJ;AACF"}
1
+ {"version":3,"file":"VisibilityByTheme.js","names":["useTheme","VisibilityByTheme","_ref","children","visible","hidden","theme","visibleList","Array","isArray","hiddenList","some","match","themeItem","name","matchObject","Object","keys","every","key"],"sources":["../../../src/shared/VisibilityByTheme.tsx"],"sourcesContent":["import React from 'react'\nimport useTheme from './useTheme'\nimport type { ThemeNames, ThemeProps } from './Theme'\n\ntype VisibilityByThemeProps = {\n /**\n * A valid theme name or object.\n * Will pass children on a match.\n */\n visible?: ThemeParams\n\n /**\n * A valid theme name or object.\n * Will omit passing children on a match.\n * NB: \"visible\" takes presence over \"hidden\"\n */\n hidden?: ThemeParams\n\n /**\n * Any kind of a React Node that should render on a match.\n */\n children: React.ReactNode\n}\n\ntype ThemeItem = ThemeNames | ThemeProps\ntype ThemeParams = ThemeItem | Array<ThemeItem>\n\nexport default function VisibilityByTheme({\n children,\n visible,\n hidden,\n}: VisibilityByThemeProps) {\n const theme = useTheme()\n\n const visibleList = Array.isArray(visible) ? visible : [visible]\n const hiddenList = Array.isArray(hidden) ? hidden : [hidden]\n\n if (visible) {\n if (!visibleList.some(match(theme))) {\n return null\n }\n } else if (hidden) {\n if (hiddenList.some(match(theme))) {\n return null\n }\n }\n\n return children as JSX.Element\n\n function match(theme: ThemeProps) {\n return (themeItem: ThemeItem) => {\n return typeof themeItem === 'string'\n ? theme.name === themeItem\n : matchObject(theme, themeItem)\n }\n }\n\n function matchObject(theme: ThemeProps, themeItem: ThemeItem) {\n return Object.keys(themeItem).every((key) => {\n return theme[key] === themeItem[key]\n })\n }\n}\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,YAAY;AA0BjC,eAAe,SAASC,iBAAiBA,CAAAC,IAAA,EAId;EAAA,IAJe;IACxCC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC,GAAAH,IAAA;EACvB,MAAMI,KAAK,GAAGN,QAAQ,CAAC,CAAC;EAExB,MAAMO,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACL,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;EAChE,MAAMM,UAAU,GAAGF,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;EAE5D,IAAID,OAAO,EAAE;IACX,IAAI,CAACG,WAAW,CAACI,IAAI,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAE;MACnC,OAAO,IAAI;IACb;EACF,CAAC,MAAM,IAAID,MAAM,EAAE;IACjB,IAAIK,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,KAAK,CAAC,CAAC,EAAE;MACjC,OAAO,IAAI;IACb;EACF;EAEA,OAAOH,QAAQ;EAEf,SAASS,KAAKA,CAACN,KAAiB,EAAE;IAChC,OAAQO,SAAoB,IAAK;MAC/B,OAAO,OAAOA,SAAS,KAAK,QAAQ,GAChCP,KAAK,CAACQ,IAAI,KAAKD,SAAS,GACxBE,WAAW,CAACT,KAAK,EAAEO,SAAS,CAAC;IACnC,CAAC;EACH;EAEA,SAASE,WAAWA,CAACT,KAAiB,EAAEO,SAAoB,EAAE;IAC5D,OAAOG,MAAM,CAACC,IAAI,CAACJ,SAAS,CAAC,CAACK,KAAK,CAAEC,GAAG,IAAK;MAC3C,OAAOb,KAAK,CAACa,GAAG,CAAC,KAAKN,SAAS,CAACM,GAAG,CAAC;IACtC,CAAC,CAAC;EACJ;AACF"}
@@ -16,11 +16,11 @@ export function scrollToLocationHashId({ offset, delay, onCompletion, }?: {
16
16
  * leading edge, instead of the trailing.
17
17
  *
18
18
  * @param {function} func The function to execute
19
- * @param {number} wait The time (milliseconds) before the first given function executres, if the retuned one, not got called
19
+ * @param {number} wait The time (milliseconds) before the first given function executes, if the returned one, not got called
20
20
  * @param {object} options The options object
21
21
  * @property {boolean} immediate If true, the function will execute immediately. Defaults to false
22
22
  * @property {instance} instance Defines the instance "this" to use on the executed function
23
- * @returns The function to invlaidate the execution
23
+ * @returns The function to invalidate the execution
24
24
  */
25
25
  export function debounce(func: Function, wait?: number, { immediate, instance }?: object): {
26
26
  (...args: any[]): any;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["PLATFORM_MAC","PLATFORM_WIN","PLATFORM_ANDROID","PLATFORM_LINUX","PLATFORM_IOS","IS_EDGE","IS_IOS","IS_SAFARI","IS_WIN","IS_MAC","IS_ANDROID","IS_LINUX","isMac","_navigator","navigator","RegExp","test","platform","isWin","_navigator2","isAndroid","_navigator3","userAgent","isLinux","_navigator4","isiOS","_navigator5","isSafari","_navigator6","_navigator7","isEdge","_navigator8","pageFocusElements","setPageFocusElement","selectorOrElement","key","arguments","length","undefined","applyPageFocus","selector","callback","element","document","querySelector","HTMLElement","role","getAttribute","list","isInteractive","includes","String","nodeName","toLowerCase","hasTabIndex","hasAttribute","hasNoFocus","classList","contains","setAttribute","add","focus","onBlur","removeAttribute","remove","addEventListener","once","e","warn","getOffsetTop","elem","offsetTop","isNaN","offsetParent","getOffsetLeft","offsetLeft","scrollToLocationHashId","offset","delay","onCompletion","window","location","_timeout","id","hash","replace","handleScroll","runScroll","totalOffset","top","IntersectionObserver","intersectionObserver","entries","entry","isIntersecting","unobserve","observe","scrollTo","behavior","scrollTop","clearTimeout","setTimeout","getElementById","readyState","debounce","func","wait","immediate","instance","timeout","recall","cancel","executedFunction","_len","args","Array","_key","inst","later","apply","callNow","insertElementBeforeSelection","selection","getSelection","range","getRangeAt","cloneRange","insertNode","addRange","getSelectedText","toString","hasSelectedText","getSelectedElement","rangeCount","startContainer","parentNode","copyToClipboard","string","_navigator9","resetSelection","removeAllRanges","copyFallback","createElement","value","contentEditable","readOnly","style","position","body","appendChild","success","execCommand","removeChild","clipboard","writeText","newTry","process","env","NODE_ENV","console","log","isBrowser","_len2","params","_key2","styles","join"],"sources":["../../../src/shared/helpers.js"],"sourcesContent":["/**\n * Global helpers\n *\n * NB: Do not import other deps in this file.\n * Just to have things clean and one directional.\n */\n\nexport const PLATFORM_MAC = 'Mac|iPad|iPhone|iPod'\nexport const PLATFORM_WIN = 'Win'\nexport const PLATFORM_ANDROID = 'Android'\nexport const PLATFORM_LINUX = 'Linux'\nexport const PLATFORM_IOS = 'iOS|iPhone|iPad|iPod'\n\nexport let IS_EDGE = false\nexport let IS_IOS = false\nexport let IS_SAFARI = false\nexport let IS_WIN = false\nexport let IS_MAC = false\nexport let IS_ANDROID = false\nexport let IS_LINUX = false\n\nexport const isMac = () =>\n (IS_MAC =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_MAC, 'i').test(navigator?.platform))\n\nexport const isWin = () =>\n (IS_WIN =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_WIN, 'i').test(navigator?.platform))\n\nexport const isAndroid = () =>\n (IS_ANDROID =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_ANDROID, 'i').test(navigator?.userAgent))\n\nexport const isLinux = () =>\n (IS_LINUX =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_LINUX, 'i').test(navigator?.platform))\n\nexport const isiOS = () =>\n (IS_IOS =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_IOS, 'i').test(navigator?.platform))\n\nexport const isSafari = () =>\n (IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /safari/i.test(navigator?.userAgent) &&\n !/chrome/i.test(navigator?.userAgent))\n\nexport const isEdge = () =>\n (IS_EDGE =\n typeof navigator !== 'undefined' && /edge/i.test(navigator?.userAgent))\n\nisEdge()\nisiOS()\nisSafari()\nisWin()\nisAndroid()\nisMac()\nisLinux()\n\nconst pageFocusElements = {}\nexport function setPageFocusElement(selectorOrElement, key = 'default') {\n return (pageFocusElements[key] = selectorOrElement)\n}\n\nexport function applyPageFocus(selector = 'default', callback = null) {\n try {\n let element = /^[.#]/.test(selector)\n ? selector\n : pageFocusElements[selector]\n if (typeof element === 'string' && typeof document !== 'undefined') {\n element = document.querySelector(element)\n } else if (!element && typeof document !== 'undefined') {\n element = document.querySelector('.dnb-no-focus')\n }\n\n if (!(element instanceof HTMLElement)) {\n return // stop here\n }\n\n const role = element.getAttribute('role')\n const list = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'label',\n 'menu',\n ]\n const isInteractive =\n list.includes(String(element.nodeName).toLowerCase()) ||\n list.includes(String(role).toLowerCase())\n const hasTabIndex = element.hasAttribute('tabindex')\n const hasNoFocus = element.classList.contains('dnb-no-focus')\n\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.setAttribute('tabindex', '-1')\n }\n if (!hasNoFocus) {\n element.classList.add('dnb-no-focus')\n }\n }\n\n element.focus()\n\n const onBlur = () => {\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.removeAttribute('tabindex')\n }\n if (!hasNoFocus) {\n element.classList.remove('dnb-no-focus')\n }\n }\n }\n element.addEventListener('blur', onBlur, { once: true })\n\n if (typeof callback === 'function') {\n callback(element)\n }\n } catch (e) {\n warn('Error on applyPageFocus:', e)\n }\n}\n\nexport function getOffsetTop(elem) {\n let offsetTop = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetTop\n}\n\nexport function getOffsetLeft(elem) {\n let offsetLeft = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetLeft)) {\n offsetLeft += elem.offsetLeft\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetLeft\n}\n\nexport function scrollToLocationHashId({\n offset = 0,\n delay = null,\n onCompletion = null,\n} = {}) {\n if (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n window.location\n ) {\n try {\n let _timeout\n const id = String(window.location.hash).replace('#', '')\n if (id.length > 0) {\n const handleScroll = () => {\n const runScroll = () => {\n const totalOffset = getOffsetTop(elem)\n\n if (totalOffset <= 0) {\n return // stop here\n }\n\n const top = totalOffset - offset\n\n try {\n if (typeof IntersectionObserver !== 'undefined') {\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n const [entry] = entries\n if (entry.isIntersecting) {\n intersectionObserver.unobserve(elem)\n if (typeof onCompletion === 'function') {\n onCompletion(elem)\n }\n }\n }\n )\n // start observing\n intersectionObserver.observe(elem)\n }\n\n if (window.scrollTo) {\n window.scrollTo({\n top,\n behavior: 'smooth',\n })\n } else {\n window.scrollTop = top\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n\n if (delay > 0) {\n clearTimeout(_timeout)\n _timeout = setTimeout(runScroll, delay) // to make sure we run our scrollTo after the native anchor\n } else {\n runScroll()\n }\n }\n\n const elem = document.getElementById(id)\n if (elem instanceof HTMLElement) {\n window.addEventListener('beforeunload', () =>\n clearTimeout(_timeout)\n )\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', handleScroll)\n } else {\n handleScroll()\n }\n }\n\n return elem\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n}\n\n/**\n * More or less classical debounce function\n *\n * Calling this function will return a new function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @param {function} func The function to execute\n * @param {number} wait The time (milliseconds) before the first given function executres, if the retuned one, not got called\n * @param {object} options The options object\n * @property {boolean} immediate If true, the function will execute immediately. Defaults to false\n * @property {instance} instance Defines the instance \"this\" to use on the executed function\n * @returns The function to invlaidate the execution\n */\nexport function debounce(\n func,\n wait = 250,\n { immediate = false, instance = null } = {}\n) {\n let timeout\n let recall\n\n const cancel = () => clearTimeout(timeout)\n\n // This is the function that is actually executed when\n // the DOM event is triggered.\n function executedFunction(...args) {\n // Store the instance of this and any\n // parameters passed to executedFunction\n let inst = this\n\n // console.log('instance', instance)\n\n if (typeof recall === 'function') {\n recall()\n }\n\n // The function to be called after\n // the debounce time has elapsed\n const later = () => {\n // null timeout to indicate the debounce ended\n timeout = null\n\n // Call function now if you did not on the leading end\n if (!immediate) {\n recall = func.apply(instance || inst, args)\n }\n }\n\n // Determine if you should call the function\n // on the leading or trail end\n const callNow = immediate && !timeout\n\n // This will reset the waiting every function execution.\n // This is the step that prevents the function from\n // being executed because it will never reach the\n // inside of the previous setTimeout\n clearTimeout(timeout)\n\n // Restart the debounce waiting period.\n // setTimeout returns a truthy value (it differs in web vs node)\n timeout = setTimeout(later, wait)\n\n // Call immediately if you're dong a leading\n // end execution\n if (callNow) {\n recall = func.apply(instance || inst, args)\n }\n\n return recall\n }\n\n executedFunction.cancel = cancel\n\n return executedFunction\n}\n\nexport function insertElementBeforeSelection(elem) {\n try {\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n range.cloneRange().insertNode(elem)\n selection.addRange(range) // Restore the original selection - this is a Safari fix!\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // const range = document.selection.createRange()\n // range.collapse(true)\n // range.pasteHTML(elem.outerHTML)\n } catch (e) {\n //\n }\n}\n\nexport function getSelectedText() {\n try {\n return window.getSelection().toString()\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().text\n } catch (e) {\n //\n }\n return ''\n}\n\nexport function hasSelectedText() {\n return getSelectedText().length > 0\n}\n\nexport function getSelectedElement() {\n try {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n let elem = selection.getRangeAt(0).startContainer\n if (elem && typeof elem === 'object') {\n elem = elem.parentNode\n }\n return elem\n }\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().parentElement()\n } catch (e) {\n //\n }\n\n return null\n}\n\nexport async function copyToClipboard(string) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false\n }\n\n // get the selection range\n const selection = window.getSelection()\n const range =\n selection.rangeCount > 0 // Check if there is any content selected previously\n ? selection.getRangeAt(0) // Store selection if found\n : false // Mark as false to know no selection existed before\n\n const resetSelection = () => {\n try {\n // If a selection existed before copying\n selection.removeAllRanges() // Unselect everything on the HTML document\n selection.addRange(range) // Restore the original selection\n } catch (e) {\n //\n }\n }\n\n const copyFallback = () => {\n try {\n // create the focusable element\n const elem = document.createElement('textarea')\n elem.value = String(string)\n elem.contentEditable = true\n elem.readOnly = false\n elem.style.position = 'fixed'\n elem.style.top = '-1000px'\n document.body.appendChild(elem)\n\n // iOS helper\n // But right now, we do not use that\n // if (IS_IOS) {\n // const newRange = document.createRange()\n // newRange.selectNodeContents(elem)\n // const sel = window.getSelection()\n // sel.removeAllRanges()\n // sel.addRange(newRange)\n // elem.setSelectionRange(0, 999999)\n // } else {\n // elem.select()\n // }\n\n // NB: copy only works as a result of a user action (e.g. click events)\n const success = document.execCommand('copy')\n\n // Cleanup\n document.body.removeChild(elem)\n\n resetSelection()\n\n if (success) {\n return true\n }\n } catch (e) {\n return e\n }\n\n return `Could not copy! Unknown reason. ${string}`\n }\n\n let success\n\n if (typeof navigator !== 'undefined' && navigator?.clipboard) {\n try {\n await navigator.clipboard.writeText(String(string))\n success = true\n resetSelection()\n } catch (e) {\n success = e\n const newTry = copyFallback()\n if (newTry === true) {\n success = newTry\n }\n }\n } else {\n // use the fallback as the primary, because we get\n success = copyFallback()\n }\n\n return success\n}\n\n/**\n * Uses console.log to warn about Eufemia usage issues\n *\n * It uses log instead of warn,\n * because of the stack track some browser do add\n * which takes a lot of visual space in the console\n *\n * @param {...any} params Send in what ever you would\n */\nexport const warn = (...params) => {\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n typeof console.log === 'function'\n ) {\n const isBrowser =\n typeof window !== 'undefined' && process.env.NODE_ENV !== 'test'\n\n if (isBrowser) {\n const styles = [\n `padding: 0.125rem 0.5rem ${IS_SAFARI ? '' : '0'}`,\n 'font-weight: bold',\n 'color: #00343E',\n 'background: #A5E1D2',\n ].join(';')\n console.log('%cEufemia', styles, ...params)\n } else {\n console.log(\n // How to generate it: JSON.stringify(chalk.reset.bold.hex('#00343E').bgHex('#A5E1D2')('Eufemia'))\n '\\u001b[0m\\u001b[1m\\u001b[38;5;23m\\u001b[48;5;152mEufemia\\u001b[49m\\u001b[39m\\u001b[22m\\u001b[0m',\n ...params\n )\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["PLATFORM_MAC","PLATFORM_WIN","PLATFORM_ANDROID","PLATFORM_LINUX","PLATFORM_IOS","IS_EDGE","IS_IOS","IS_SAFARI","IS_WIN","IS_MAC","IS_ANDROID","IS_LINUX","isMac","_navigator","navigator","RegExp","test","platform","isWin","_navigator2","isAndroid","_navigator3","userAgent","isLinux","_navigator4","isiOS","_navigator5","isSafari","_navigator6","_navigator7","isEdge","_navigator8","pageFocusElements","setPageFocusElement","selectorOrElement","key","arguments","length","undefined","applyPageFocus","selector","callback","element","document","querySelector","HTMLElement","role","getAttribute","list","isInteractive","includes","String","nodeName","toLowerCase","hasTabIndex","hasAttribute","hasNoFocus","classList","contains","setAttribute","add","focus","onBlur","removeAttribute","remove","addEventListener","once","e","warn","getOffsetTop","elem","offsetTop","isNaN","offsetParent","getOffsetLeft","offsetLeft","scrollToLocationHashId","offset","delay","onCompletion","window","location","_timeout","id","hash","replace","handleScroll","runScroll","totalOffset","top","IntersectionObserver","intersectionObserver","entries","entry","isIntersecting","unobserve","observe","scrollTo","behavior","scrollTop","clearTimeout","setTimeout","getElementById","readyState","debounce","func","wait","immediate","instance","timeout","recall","cancel","executedFunction","_len","args","Array","_key","inst","later","apply","callNow","insertElementBeforeSelection","selection","getSelection","range","getRangeAt","cloneRange","insertNode","addRange","getSelectedText","toString","hasSelectedText","getSelectedElement","rangeCount","startContainer","parentNode","copyToClipboard","string","_navigator9","resetSelection","removeAllRanges","copyFallback","createElement","value","contentEditable","readOnly","style","position","body","appendChild","success","execCommand","removeChild","clipboard","writeText","newTry","process","env","NODE_ENV","console","log","isBrowser","_len2","params","_key2","styles","join"],"sources":["../../../src/shared/helpers.js"],"sourcesContent":["/**\n * Global helpers\n *\n * NB: Do not import other deps in this file.\n * Just to have things clean and one directional.\n */\n\nexport const PLATFORM_MAC = 'Mac|iPad|iPhone|iPod'\nexport const PLATFORM_WIN = 'Win'\nexport const PLATFORM_ANDROID = 'Android'\nexport const PLATFORM_LINUX = 'Linux'\nexport const PLATFORM_IOS = 'iOS|iPhone|iPad|iPod'\n\nexport let IS_EDGE = false\nexport let IS_IOS = false\nexport let IS_SAFARI = false\nexport let IS_WIN = false\nexport let IS_MAC = false\nexport let IS_ANDROID = false\nexport let IS_LINUX = false\n\nexport const isMac = () =>\n (IS_MAC =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_MAC, 'i').test(navigator?.platform))\n\nexport const isWin = () =>\n (IS_WIN =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_WIN, 'i').test(navigator?.platform))\n\nexport const isAndroid = () =>\n (IS_ANDROID =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_ANDROID, 'i').test(navigator?.userAgent))\n\nexport const isLinux = () =>\n (IS_LINUX =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_LINUX, 'i').test(navigator?.platform))\n\nexport const isiOS = () =>\n (IS_IOS =\n typeof navigator !== 'undefined' &&\n new RegExp(PLATFORM_IOS, 'i').test(navigator?.platform))\n\nexport const isSafari = () =>\n (IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /safari/i.test(navigator?.userAgent) &&\n !/chrome/i.test(navigator?.userAgent))\n\nexport const isEdge = () =>\n (IS_EDGE =\n typeof navigator !== 'undefined' && /edge/i.test(navigator?.userAgent))\n\nisEdge()\nisiOS()\nisSafari()\nisWin()\nisAndroid()\nisMac()\nisLinux()\n\nconst pageFocusElements = {}\nexport function setPageFocusElement(selectorOrElement, key = 'default') {\n return (pageFocusElements[key] = selectorOrElement)\n}\n\nexport function applyPageFocus(selector = 'default', callback = null) {\n try {\n let element = /^[.#]/.test(selector)\n ? selector\n : pageFocusElements[selector]\n if (typeof element === 'string' && typeof document !== 'undefined') {\n element = document.querySelector(element)\n } else if (!element && typeof document !== 'undefined') {\n element = document.querySelector('.dnb-no-focus')\n }\n\n if (!(element instanceof HTMLElement)) {\n return // stop here\n }\n\n const role = element.getAttribute('role')\n const list = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'label',\n 'menu',\n ]\n const isInteractive =\n list.includes(String(element.nodeName).toLowerCase()) ||\n list.includes(String(role).toLowerCase())\n const hasTabIndex = element.hasAttribute('tabindex')\n const hasNoFocus = element.classList.contains('dnb-no-focus')\n\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.setAttribute('tabindex', '-1')\n }\n if (!hasNoFocus) {\n element.classList.add('dnb-no-focus')\n }\n }\n\n element.focus()\n\n const onBlur = () => {\n if (!isInteractive) {\n if (!hasTabIndex) {\n element.removeAttribute('tabindex')\n }\n if (!hasNoFocus) {\n element.classList.remove('dnb-no-focus')\n }\n }\n }\n element.addEventListener('blur', onBlur, { once: true })\n\n if (typeof callback === 'function') {\n callback(element)\n }\n } catch (e) {\n warn('Error on applyPageFocus:', e)\n }\n}\n\nexport function getOffsetTop(elem) {\n let offsetTop = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetTop\n}\n\nexport function getOffsetLeft(elem) {\n let offsetLeft = 0\n if (elem) {\n do {\n if (!isNaN(elem.offsetLeft)) {\n offsetLeft += elem.offsetLeft\n }\n } while ((elem = elem.offsetParent))\n }\n return offsetLeft\n}\n\nexport function scrollToLocationHashId({\n offset = 0,\n delay = null,\n onCompletion = null,\n} = {}) {\n if (\n typeof document !== 'undefined' &&\n typeof window !== 'undefined' &&\n window.location\n ) {\n try {\n let _timeout\n const id = String(window.location.hash).replace('#', '')\n if (id.length > 0) {\n const handleScroll = () => {\n const runScroll = () => {\n const totalOffset = getOffsetTop(elem)\n\n if (totalOffset <= 0) {\n return // stop here\n }\n\n const top = totalOffset - offset\n\n try {\n if (typeof IntersectionObserver !== 'undefined') {\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n const [entry] = entries\n if (entry.isIntersecting) {\n intersectionObserver.unobserve(elem)\n if (typeof onCompletion === 'function') {\n onCompletion(elem)\n }\n }\n }\n )\n // start observing\n intersectionObserver.observe(elem)\n }\n\n if (window.scrollTo) {\n window.scrollTo({\n top,\n behavior: 'smooth',\n })\n } else {\n window.scrollTop = top\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n\n if (delay > 0) {\n clearTimeout(_timeout)\n _timeout = setTimeout(runScroll, delay) // to make sure we run our scrollTo after the native anchor\n } else {\n runScroll()\n }\n }\n\n const elem = document.getElementById(id)\n if (elem instanceof HTMLElement) {\n window.addEventListener('beforeunload', () =>\n clearTimeout(_timeout)\n )\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', handleScroll)\n } else {\n handleScroll()\n }\n }\n\n return elem\n }\n } catch (e) {\n warn('Error on scrollToLocationHashId:', e)\n }\n }\n}\n\n/**\n * More or less classical debounce function\n *\n * Calling this function will return a new function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @param {function} func The function to execute\n * @param {number} wait The time (milliseconds) before the first given function executes, if the returned one, not got called\n * @param {object} options The options object\n * @property {boolean} immediate If true, the function will execute immediately. Defaults to false\n * @property {instance} instance Defines the instance \"this\" to use on the executed function\n * @returns The function to invalidate the execution\n */\nexport function debounce(\n func,\n wait = 250,\n { immediate = false, instance = null } = {}\n) {\n let timeout\n let recall\n\n const cancel = () => clearTimeout(timeout)\n\n // This is the function that is actually executed when\n // the DOM event is triggered.\n function executedFunction(...args) {\n // Store the instance of this and any\n // parameters passed to executedFunction\n let inst = this\n\n // console.log('instance', instance)\n\n if (typeof recall === 'function') {\n recall()\n }\n\n // The function to be called after\n // the debounce time has elapsed\n const later = () => {\n // null timeout to indicate the debounce ended\n timeout = null\n\n // Call function now if you did not on the leading end\n if (!immediate) {\n recall = func.apply(instance || inst, args)\n }\n }\n\n // Determine if you should call the function\n // on the leading or trail end\n const callNow = immediate && !timeout\n\n // This will reset the waiting every function execution.\n // This is the step that prevents the function from\n // being executed because it will never reach the\n // inside of the previous setTimeout\n clearTimeout(timeout)\n\n // Restart the debounce waiting period.\n // setTimeout returns a truthy value (it differs in web vs node)\n timeout = setTimeout(later, wait)\n\n // Call immediately if you're dong a leading\n // end execution\n if (callNow) {\n recall = func.apply(instance || inst, args)\n }\n\n return recall\n }\n\n executedFunction.cancel = cancel\n\n return executedFunction\n}\n\nexport function insertElementBeforeSelection(elem) {\n try {\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n range.cloneRange().insertNode(elem)\n selection.addRange(range) // Restore the original selection - this is a Safari fix!\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // const range = document.selection.createRange()\n // range.collapse(true)\n // range.pasteHTML(elem.outerHTML)\n } catch (e) {\n //\n }\n}\n\nexport function getSelectedText() {\n try {\n return window.getSelection().toString()\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().text\n } catch (e) {\n //\n }\n return ''\n}\n\nexport function hasSelectedText() {\n return getSelectedText().length > 0\n}\n\nexport function getSelectedElement() {\n try {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n let elem = selection.getRangeAt(0).startContainer\n if (elem && typeof elem === 'object') {\n elem = elem.parentNode\n }\n return elem\n }\n\n // For now I (Tobias) could not find any reason for supporting document.selection as well\n // return document.selection.createRange().parentElement()\n } catch (e) {\n //\n }\n\n return null\n}\n\nexport async function copyToClipboard(string) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false\n }\n\n // get the selection range\n const selection = window.getSelection()\n const range =\n selection.rangeCount > 0 // Check if there is any content selected previously\n ? selection.getRangeAt(0) // Store selection if found\n : false // Mark as false to know no selection existed before\n\n const resetSelection = () => {\n try {\n // If a selection existed before copying\n selection.removeAllRanges() // Unselect everything on the HTML document\n selection.addRange(range) // Restore the original selection\n } catch (e) {\n //\n }\n }\n\n const copyFallback = () => {\n try {\n // create the focusable element\n const elem = document.createElement('textarea')\n elem.value = String(string)\n elem.contentEditable = true\n elem.readOnly = false\n elem.style.position = 'fixed'\n elem.style.top = '-1000px'\n document.body.appendChild(elem)\n\n // iOS helper\n // But right now, we do not use that\n // if (IS_IOS) {\n // const newRange = document.createRange()\n // newRange.selectNodeContents(elem)\n // const sel = window.getSelection()\n // sel.removeAllRanges()\n // sel.addRange(newRange)\n // elem.setSelectionRange(0, 999999)\n // } else {\n // elem.select()\n // }\n\n // NB: copy only works as a result of a user action (e.g. click events)\n const success = document.execCommand('copy')\n\n // Cleanup\n document.body.removeChild(elem)\n\n resetSelection()\n\n if (success) {\n return true\n }\n } catch (e) {\n return e\n }\n\n return `Could not copy! Unknown reason. ${string}`\n }\n\n let success\n\n if (typeof navigator !== 'undefined' && navigator?.clipboard) {\n try {\n await navigator.clipboard.writeText(String(string))\n success = true\n resetSelection()\n } catch (e) {\n success = e\n const newTry = copyFallback()\n if (newTry === true) {\n success = newTry\n }\n }\n } else {\n // use the fallback as the primary, because we get\n success = copyFallback()\n }\n\n return success\n}\n\n/**\n * Uses console.log to warn about Eufemia usage issues\n *\n * It uses log instead of warn,\n * because of the stack track some browser do add\n * which takes a lot of visual space in the console\n *\n * @param {...any} params Send in what ever you would\n */\nexport const warn = (...params) => {\n if (\n typeof process !== 'undefined' &&\n process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n typeof console.log === 'function'\n ) {\n const isBrowser =\n typeof window !== 'undefined' && process.env.NODE_ENV !== 'test'\n\n if (isBrowser) {\n const styles = [\n `padding: 0.125rem 0.5rem ${IS_SAFARI ? '' : '0'}`,\n 'font-weight: bold',\n 'color: #00343E',\n 'background: #A5E1D2',\n ].join(';')\n console.log('%cEufemia', styles, ...params)\n } else {\n console.log(\n // How to generate it: JSON.stringify(chalk.reset.bold.hex('#00343E').bgHex('#A5E1D2')('Eufemia'))\n '\\u001b[0m\\u001b[1m\\u001b[38;5;23m\\u001b[48;5;152mEufemia\\u001b[49m\\u001b[39m\\u001b[22m\\u001b[0m',\n ...params\n )\n }\n }\n}\n"],"mappings":"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"}