@openedx/paragon 22.12.0 → 22.14.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 (255) hide show
  1. package/dist/Alert/_variables.scss +2 -1
  2. package/dist/Annotation/index.js.map +1 -1
  3. package/dist/Annotation/index.scss +6 -5
  4. package/dist/Avatar/index.js.map +1 -1
  5. package/dist/AvatarButton/index.js.map +1 -1
  6. package/dist/Breadcrumb/index.js.map +1 -1
  7. package/dist/Bubble/index.js +1 -0
  8. package/dist/Bubble/index.js.map +1 -1
  9. package/dist/Bubble/index.scss +3 -2
  10. package/dist/Button/deprecated/index.js.map +1 -1
  11. package/dist/Button/index.scss +19 -18
  12. package/dist/Card/CardCarousel/CardCarouselHeader.js +2 -2
  13. package/dist/Card/CardCarousel/CardCarouselHeader.js.map +1 -1
  14. package/dist/Card/CardFooter.js.map +1 -1
  15. package/dist/Card/CardHeader.js +1 -1
  16. package/dist/Card/CardHeader.js.map +1 -1
  17. package/dist/Card/CardImageCap.js.map +1 -1
  18. package/dist/Card/CardStatus.js.map +1 -1
  19. package/dist/Card/_variables.scss +3 -2
  20. package/dist/Card/index.js.map +1 -1
  21. package/dist/Card/index.scss +10 -9
  22. package/dist/Chip/ChipIcon.d.ts +1 -1
  23. package/dist/Chip/index.js +1 -0
  24. package/dist/Chip/index.js.map +1 -1
  25. package/dist/ChipCarousel/index.js.map +1 -1
  26. package/dist/Collapsible/index.js.map +1 -1
  27. package/dist/ColorPicker/index.js +1 -1
  28. package/dist/ColorPicker/index.js.map +1 -1
  29. package/dist/ColorPicker/index.scss +2 -1
  30. package/dist/DataTable/CollapsibleButtonGroup.js +2 -2
  31. package/dist/DataTable/CollapsibleButtonGroup.js.map +1 -1
  32. package/dist/DataTable/DropdownFilters.js +1 -1
  33. package/dist/DataTable/DropdownFilters.js.map +1 -1
  34. package/dist/DataTable/TableRow.js.map +1 -1
  35. package/dist/DataTable/filters/CheckboxFilter.js.map +1 -1
  36. package/dist/DataTable/filters/DropdownFilter.js.map +1 -1
  37. package/dist/DataTable/filters/MultiSelectDropdownFilter.js.map +1 -1
  38. package/dist/DataTable/filters/TextFilter.js.map +1 -1
  39. package/dist/DataTable/index.scss +14 -13
  40. package/dist/DataTable/utils/getVisibleColumns.js +1 -1
  41. package/dist/DataTable/utils/getVisibleColumns.js.map +1 -1
  42. package/dist/Dropdown/_variables.scss +2 -1
  43. package/dist/Dropdown/deprecated/DropdownMenu.js +15 -19
  44. package/dist/Dropdown/deprecated/DropdownMenu.js.map +1 -1
  45. package/dist/Dropdown/deprecated/index.js +1 -1
  46. package/dist/Dropdown/deprecated/index.js.map +1 -1
  47. package/dist/Dropdown/index.js.map +1 -1
  48. package/dist/Dropzone/DefaultContent.js.map +1 -1
  49. package/dist/Dropzone/UploadProgress.js.map +1 -1
  50. package/dist/Dropzone/index.scss +3 -2
  51. package/dist/Fieldset/index.js.map +1 -1
  52. package/dist/Form/FormAutosuggest.js +1 -1
  53. package/dist/Form/FormAutosuggest.js.map +1 -1
  54. package/dist/Form/FormControl.js.map +1 -1
  55. package/dist/Form/FormControlDecorator.js.map +1 -1
  56. package/dist/Form/FormGroupContext.d.ts +1 -1
  57. package/dist/Form/FormGroupContext.js.map +1 -1
  58. package/dist/Form/FormText.js.map +1 -1
  59. package/dist/Form/_index.scss +9 -7
  60. package/dist/Form/_variables.scss +4 -2
  61. package/dist/Form/fieldUtils.js.map +1 -1
  62. package/dist/Hyperlink/index.js +1 -0
  63. package/dist/Hyperlink/index.js.map +1 -1
  64. package/dist/Hyperlink/index.scss +3 -1
  65. package/dist/Icon/index.js.map +1 -1
  66. package/dist/IconButton/index.d.ts +13 -8
  67. package/dist/IconButton/index.js.map +1 -1
  68. package/dist/IconButtonToggle/index.js.map +1 -1
  69. package/dist/IconButtonToggle/index.scss +3 -1
  70. package/dist/Input/index.js.map +1 -1
  71. package/dist/InputSelect/index.js.map +1 -1
  72. package/dist/Layout/index.js.map +1 -1
  73. package/dist/ListBox/index.js.map +1 -1
  74. package/dist/ListBoxOption/index.js.map +1 -1
  75. package/dist/Menu/SelectMenu.js +1 -1
  76. package/dist/Menu/SelectMenu.js.map +1 -1
  77. package/dist/Menu/index.js +1 -1
  78. package/dist/Menu/index.js.map +1 -1
  79. package/dist/Modal/ModalContext.d.ts +1 -1
  80. package/dist/Modal/ModalDialog.d.ts +1 -1
  81. package/dist/Modal/ModalDialog.js.map +1 -1
  82. package/dist/Modal/ModalDialogBody.js +1 -1
  83. package/dist/Modal/ModalDialogBody.js.map +1 -1
  84. package/dist/Modal/ModalDialogHeroBackground.js.map +1 -1
  85. package/dist/Modal/ModalLayer.d.ts +3 -3
  86. package/dist/Modal/ModalLayer.js.map +1 -1
  87. package/dist/Modal/ModalPopup.js.map +1 -1
  88. package/dist/Modal/_ModalDialog.scss +3 -1
  89. package/dist/Modal/index.js +3 -1
  90. package/dist/Modal/index.js.map +1 -1
  91. package/dist/Modal/index.scss +3 -5
  92. package/dist/Nav/_mixins.scss +3 -1
  93. package/dist/Overlay/index.d.ts +2 -2
  94. package/dist/PageBanner/index.js.map +1 -1
  95. package/dist/PageBanner/index.scss +2 -1
  96. package/dist/Pagination/PaginationContext.js.map +1 -1
  97. package/dist/Pagination/index.js.map +1 -1
  98. package/dist/Popover/_variables.scss +2 -1
  99. package/dist/Popover/index.js.map +1 -1
  100. package/dist/ProductTour/Checkpoint.scss +9 -8
  101. package/dist/ProductTour/index.js +1 -1
  102. package/dist/ProductTour/index.js.map +1 -1
  103. package/dist/ProgressBar/index.js.map +1 -1
  104. package/dist/Scrollable/index.js +1 -1
  105. package/dist/Scrollable/index.js.map +1 -1
  106. package/dist/SearchField/SearchFieldAdvanced.js.map +1 -1
  107. package/dist/SearchField/index.scss +2 -1
  108. package/dist/SelectableBox/SelectableBoxSet.js.map +1 -1
  109. package/dist/Sheet/index.js.map +1 -1
  110. package/dist/Stack/index.js.map +1 -1
  111. package/dist/StatefulButton/index.js.map +1 -1
  112. package/dist/StatusAlert/index.js.map +1 -1
  113. package/dist/Stepper/StepperHeader.js +1 -1
  114. package/dist/Stepper/StepperHeader.js.map +1 -1
  115. package/dist/Stepper/StepperHeaderStep.js.map +1 -1
  116. package/dist/Sticky/index.js.map +1 -1
  117. package/dist/Table/_variables.scss +2 -1
  118. package/dist/Tabs/deprecated/index.js.map +1 -1
  119. package/dist/Tabs/index.js +1 -1
  120. package/dist/Tabs/index.js.map +1 -1
  121. package/dist/Toast/ToastContainer.scss +1 -1
  122. package/dist/Toast/index.scss +2 -2
  123. package/dist/Truncate/index.js +1 -1
  124. package/dist/Truncate/index.js.map +1 -1
  125. package/dist/ValidationFormGroup/index.js.map +1 -1
  126. package/dist/asInput/index.js.map +1 -1
  127. package/dist/hooks/useArrowKeyNavigationHook.d.ts +10 -0
  128. package/dist/hooks/{useArrowKeyNavigation.js → useArrowKeyNavigationHook.js} +13 -11
  129. package/dist/hooks/useArrowKeyNavigationHook.js.map +1 -0
  130. package/dist/hooks/useIndexOfLastVisibleChildHook.d.ts +12 -0
  131. package/dist/hooks/{useIndexOfLastVisibleChild.js → useIndexOfLastVisibleChildHook.js} +16 -12
  132. package/dist/hooks/useIndexOfLastVisibleChildHook.js.map +1 -0
  133. package/dist/hooks/useIsVisibleHook.d.ts +3 -0
  134. package/dist/hooks/{useIsVisible.js → useIsVisibleHook.js} +2 -2
  135. package/dist/hooks/useIsVisibleHook.js.map +1 -0
  136. package/dist/hooks/useToggleHook.d.ts +12 -0
  137. package/dist/hooks/useToggleHook.js +31 -0
  138. package/dist/hooks/useToggleHook.js.map +1 -0
  139. package/dist/hooks/useWindowSizeHook.d.ts +6 -0
  140. package/dist/hooks/{useWindowSize.js → useWindowSizeHook.js} +1 -1
  141. package/dist/hooks/useWindowSizeHook.js.map +1 -0
  142. package/dist/index.d.ts +5 -5
  143. package/dist/index.js +5 -5
  144. package/dist/paragon.css +1 -45
  145. package/dist/utils/newId.js.map +1 -1
  146. package/dist/withDeprecatedProps.js.map +1 -1
  147. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/CHANGELOG.md +50 -0
  148. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/LICENSE +7 -0
  149. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/README.md +37 -0
  150. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.d.ts +20 -0
  151. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.js +79 -0
  152. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.js.map +1 -0
  153. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/package.json +40 -0
  154. package/icons/node_modules/@svgr/babel-plugin-add-jsx-attribute/tsconfig.json +4 -0
  155. package/icons/package.json +1 -1
  156. package/package.json +12 -19
  157. package/scss/core/_exports.module.scss +7 -6
  158. package/scss/core/_functions.scss +9 -7
  159. package/scss/core/_typography.scss +2 -1
  160. package/scss/core/_utilities.scss +2 -1
  161. package/scss/core/_variables.scss +98 -95
  162. package/src/Alert/_variables.scss +2 -1
  163. package/src/Annotation/index.scss +6 -5
  164. package/src/Breadcrumb/Breadcrumb.test.jsx +3 -2
  165. package/src/Bubble/index.scss +3 -2
  166. package/src/Bubble/index.tsx +1 -0
  167. package/src/Button/deprecated/Button.test.jsx +6 -4
  168. package/src/Button/index.scss +19 -18
  169. package/src/Card/CardCarousel/tests/CardCarouselControls.test.jsx +6 -4
  170. package/src/Card/_variables.scss +3 -2
  171. package/src/Card/index.scss +10 -9
  172. package/src/Chip/index.tsx +1 -0
  173. package/src/Collapsible/Collapsible.test.jsx +15 -7
  174. package/src/ColorPicker/ColorPicker.test.jsx +9 -16
  175. package/src/ColorPicker/index.jsx +1 -1
  176. package/src/ColorPicker/index.scss +2 -1
  177. package/src/DataTable/CollapsibleButtonGroup.jsx +2 -2
  178. package/src/DataTable/DropdownFilters.jsx +1 -1
  179. package/src/DataTable/dataviews.mdx +1 -8
  180. package/src/DataTable/index.scss +14 -13
  181. package/src/DataTable/selection/tests/ControlledSelectHeader.test.jsx +6 -4
  182. package/src/DataTable/tests/BulkActions.test.jsx +2 -4
  183. package/src/DataTable/tests/DataViewToggle.test.jsx +3 -7
  184. package/src/DataTable/tests/DropdownFilters.test.jsx +1 -1
  185. package/src/DataTable/tests/TableActions.test.jsx +1 -1
  186. package/src/Dropdown/_variables.scss +2 -1
  187. package/src/Dropdown/deprecated/Dropdown.test.jsx +43 -27
  188. package/src/Dropzone/README.md +3 -3
  189. package/src/Dropzone/index.scss +3 -2
  190. package/src/Dropzone/tests/__snapshots__/Dropzone.test.jsx.snap +10 -1
  191. package/src/Form/FormAutosuggest.jsx +1 -1
  192. package/src/Form/FormGroupContext.tsx +1 -1
  193. package/src/Form/_index.scss +9 -7
  194. package/src/Form/_variables.scss +4 -2
  195. package/src/Form/tests/FormAutosuggest.test.jsx +76 -57
  196. package/src/Form/tests/FormCheckboxSet.test.jsx +3 -2
  197. package/src/Form/tests/FormControl.test.jsx +9 -6
  198. package/src/Form/tests/FormRadioSet.test.jsx +3 -2
  199. package/src/Hyperlink/index.scss +3 -1
  200. package/src/Hyperlink/index.tsx +1 -0
  201. package/src/IconButtonToggle/IconButtonToggle.test.jsx +3 -2
  202. package/src/IconButtonToggle/index.scss +3 -1
  203. package/src/ListBox/ListBox.test.jsx +8 -4
  204. package/src/Menu/Menu.test.jsx +15 -10
  205. package/src/Menu/SelectMenu.jsx +1 -1
  206. package/src/Menu/index.jsx +1 -1
  207. package/src/Modal/ModalDialogBody.jsx +1 -1
  208. package/src/Modal/_ModalDialog.scss +3 -1
  209. package/src/Modal/index.jsx +2 -0
  210. package/src/Modal/index.scss +3 -5
  211. package/src/Modal/tests/ModalLayer.test.tsx +3 -2
  212. package/src/Nav/_mixins.scss +3 -1
  213. package/src/OverflowScroll/data/tests/useOverflowScroll.test.jsx +1 -2
  214. package/src/OverflowScroll/data/tests/useOverflowScrollActions.test.jsx +1 -1
  215. package/src/OverflowScroll/data/tests/useOverflowScrollElementAttributes.test.jsx +1 -1
  216. package/src/OverflowScroll/data/tests/useOverflowScrollEventListeners.test.jsx +1 -2
  217. package/src/PageBanner/index.scss +2 -1
  218. package/src/Pagination/Pagination.test.jsx +36 -28
  219. package/src/Popover/_variables.scss +2 -1
  220. package/src/ProductTour/Checkpoint.scss +9 -8
  221. package/src/ProductTour/Checkpoint.test.jsx +3 -2
  222. package/src/ProductTour/ProductTour.test.jsx +11 -24
  223. package/src/ProductTour/index.jsx +1 -1
  224. package/src/Scrollable/Scrollable.test.jsx +2 -2
  225. package/src/Scrollable/index.jsx +1 -1
  226. package/src/SearchField/index.scss +2 -1
  227. package/src/SelectableBox/tests/SelectableBox.test.jsx +3 -2
  228. package/src/StatusAlert/StatusAlert.test.jsx +6 -2
  229. package/src/Stepper/StepperHeader.jsx +1 -1
  230. package/src/Stepper/tests/Stepper.test.jsx +1 -1
  231. package/src/Table/_variables.scss +2 -1
  232. package/src/Tabs/Tabs.test.jsx +1 -1
  233. package/src/Tabs/deprecated/Tabs.test.jsx +6 -4
  234. package/src/Tabs/index.jsx +1 -1
  235. package/src/Toast/ToastContainer.scss +1 -1
  236. package/src/Toast/index.scss +2 -2
  237. package/src/Truncate/index.jsx +1 -1
  238. package/src/hooks/tests/{useIndexOfLastVisibleChild.test.jsx → useIndexOfLastVisibleChild.test.tsx} +2 -2
  239. package/src/hooks/tests/{useToggle.test.jsx → useToggle.test.tsx} +2 -1
  240. package/src/hooks/{useArrowKeyNavigation.jsx → useArrowKeyNavigationHook.tsx} +41 -13
  241. package/src/hooks/{useIndexOfLastVisibleChild.jsx → useIndexOfLastVisibleChildHook.tsx} +22 -16
  242. package/src/hooks/{useIsVisible.jsx → useIsVisibleHook.tsx} +6 -3
  243. package/src/hooks/useToggleHook.tsx +42 -0
  244. package/src/hooks/{useWindowSize.jsx → useWindowSizeHook.tsx} +7 -2
  245. package/src/index.d.ts +5 -5
  246. package/src/index.js +5 -5
  247. package/dist/hooks/useArrowKeyNavigation.js.map +0 -1
  248. package/dist/hooks/useIndexOfLastVisibleChild.js.map +0 -1
  249. package/dist/hooks/useIsVisible.js.map +0 -1
  250. package/dist/hooks/useToggle.js +0 -38
  251. package/dist/hooks/useToggle.js.map +0 -1
  252. package/dist/hooks/useWindowSize.js.map +0 -1
  253. package/src/DataTable/tests/utils.js +0 -9
  254. package/src/hooks/useToggle.jsx +0 -37
  255. /package/src/hooks/tests/{useWindowSize.test.jsx → useWindowSize.test.tsx} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useMemo","useRef","useState","useCallback","classNames","PropTypes","BaseTabs","TabsDeprecated","Bubble","Dropdown","useIndexOfLastVisibleChild","Tab","MORE_TAB_TEXT","Tabs","_ref","children","className","moreTabText","defaultActiveKey","activeKey","props","containerElementRef","setContainerElementRef","overflowElementRef","indexOfLastVisibleChild","firstChild","current","parentNode","observer","MutationObserver","mutations","forEach","mutation","eventKey","target","getAttribute","isActive","element","querySelector","moreTab","classList","add","remove","observe","attributes","subtree","attributeFilter","disconnect","undefined","tabIndex","handleDropdownTabClick","hiddenTab","click","tabsChildren","indexOfOverflowStart","handleDropdownKeyPress","e","key","childrenList","Children","map","child","index","type","name","process","env","NODE_ENV","console","error","isValidElement","title","notification","tabClassName","rest","newTitle","createElement","Fragment","variant","role","expandable","tabClass","modifiedTab","cloneElement","moreTabHasNotification","overflowChildren","slice","overflowChild","Item","as","onClick","onKeyPress","disabled","datakey","active","splice","length","ref","Toggle","id","Menu","propTypes","oneOf","node","isRequired","string","defaultProps","Deprecated","default","TabContainer","TabContent","TabPane"],"sources":["../../src/Tabs/index.jsx"],"sourcesContent":["import React, {\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport BaseTabs from 'react-bootstrap/Tabs';\nimport TabsDeprecated from './deprecated';\nimport Bubble from '../Bubble';\nimport Dropdown from '../Dropdown';\nimport useIndexOfLastVisibleChild from '../hooks/useIndexOfLastVisibleChild';\nimport Tab from './Tab';\n\nexport const MORE_TAB_TEXT = 'More...';\n\nfunction Tabs({\n children,\n className,\n moreTabText = MORE_TAB_TEXT,\n defaultActiveKey,\n activeKey,\n ...props\n}) {\n const [containerElementRef, setContainerElementRef] = useState(null);\n const overflowElementRef = useRef(null);\n const indexOfLastVisibleChild = useIndexOfLastVisibleChild(\n containerElementRef?.firstChild,\n overflowElementRef.current?.parentNode,\n );\n\n useEffect(() => {\n if (containerElementRef) {\n const observer = new MutationObserver((mutations => {\n mutations.forEach(mutation => {\n // React-Bootstrap attribute 'data-rb-event-key' is responsible for the tab identification\n const eventKey = mutation.target.getAttribute('data-rb-event-key');\n // React-Bootstrap attribute 'aria-selected' is responsible for selected/unselected state\n const isActive = mutation.target.getAttribute('aria-selected') === 'true';\n // datakey attribute is added manually to the dropdown\n // elements so that they correspond to the native tabs' eventKey\n const element = containerElementRef.querySelector(`[datakey='${eventKey}']`);\n const moreTab = containerElementRef.querySelector('.pgn__tab_more');\n if (isActive) {\n element?.classList.add('active');\n // Here we add active class to the 'More Tab' if element exists in the dropdown\n if (element) {\n moreTab.classList.add('active');\n } else {\n moreTab.classList.remove('active');\n }\n } else {\n element?.classList.remove('active');\n }\n });\n }));\n observer.observe(containerElementRef, {\n attributes: true, subtree: true, attributeFilter: ['aria-selected'],\n });\n return () => observer.disconnect();\n }\n return undefined;\n }, [containerElementRef]);\n\n useEffect(() => {\n if (overflowElementRef.current?.parentNode) {\n overflowElementRef.current.parentNode.tabIndex = -1;\n }\n }, [overflowElementRef.current?.parentNode]);\n\n const handleDropdownTabClick = useCallback((eventKey) => {\n const hiddenTab = containerElementRef.querySelector(`[data-rb-event-key='${eventKey}']`);\n hiddenTab.click();\n }, [containerElementRef]);\n\n const tabsChildren = useMemo(() => {\n const indexOfOverflowStart = indexOfLastVisibleChild + 1;\n const handleDropdownKeyPress = (e, eventKey) => {\n if (e.key === 'Enter') {\n handleDropdownTabClick(eventKey);\n }\n };\n const childrenList = React.Children.map(children, (child, index) => {\n if (child?.type?.name !== 'Tab' && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `Tabs children can only be of type Tab. ${children[index]} was passed instead.`,\n );\n }\n if (!React.isValidElement(child)) {\n return child;\n }\n const {\n title, notification, tabClassName, ...rest\n } = child.props;\n let newTitle;\n if (notification) {\n newTitle = (\n <>\n {title}\n <Bubble\n variant=\"error\"\n role=\"status\"\n className=\"pgn__tab-notification\"\n aria-live=\"polite\"\n expandable\n >\n {notification}\n </Bubble>\n </>\n );\n } else {\n newTitle = title;\n }\n const tabClass = index > indexOfLastVisibleChild ? 'pgn__tab_invisible' : '';\n const modifiedTab = React.cloneElement(child, {\n ...rest,\n title: newTitle,\n tabClassName: classNames(tabClass, tabClassName),\n });\n return modifiedTab;\n });\n let moreTabHasNotification = false;\n const overflowChildren = childrenList.slice(indexOfOverflowStart)\n .map(overflowChild => {\n if (!moreTabHasNotification && overflowChild.props.notification) {\n moreTabHasNotification = true;\n }\n return (\n <Dropdown.Item\n as=\"li\"\n tabIndex=\"0\"\n key={`${overflowChild.props.eventKey}overflow`}\n onClick={() => handleDropdownTabClick(overflowChild.props.eventKey)}\n onKeyPress={(e) => handleDropdownKeyPress(e, overflowChild.props.eventKey)}\n disabled={overflowChild.props.disabled}\n datakey={overflowChild.props.eventKey}\n className={classNames({\n active: overflowChild.props.eventKey === defaultActiveKey || overflowChild.props.eventKey === activeKey,\n }, 'pgn__tabs__dropdown-item')}\n >\n {overflowChild.props.title}\n </Dropdown.Item>\n );\n });\n\n childrenList.splice(indexOfOverflowStart, 0, (<Tab\n key=\"moreTabKey\"\n tabClassName={classNames(!overflowChildren.length && 'pgn__tab_invisible', 'pgn__tab_more')}\n title={(\n <Dropdown ref={overflowElementRef}>\n <Dropdown.Toggle\n variant=\"link\"\n className=\"nav-link\"\n id=\"pgn__tab-toggle\"\n >\n {moreTabText}\n {moreTabHasNotification && (\n <Bubble\n variant=\"error\"\n role=\"status\"\n className=\"pgn__tab-notification\"\n />\n )}\n </Dropdown.Toggle>\n <Dropdown.Menu as=\"ul\" className=\"dropdown-menu-right\">{overflowChildren}</Dropdown.Menu>\n </Dropdown>\n )}\n />\n ));\n return childrenList;\n }, [activeKey, children, defaultActiveKey, indexOfLastVisibleChild, moreTabText, handleDropdownTabClick]);\n\n return (\n <div ref={setContainerElementRef}>\n <BaseTabs\n defaultActiveKey={defaultActiveKey}\n activeKey={activeKey}\n {...props}\n className={classNames(className, 'pgn__tabs')}\n >\n {tabsChildren}\n </BaseTabs>\n </div>\n );\n}\n\nTabs.propTypes = {\n /** Specifies variant to use. */\n variant: PropTypes.oneOf(['tabs', 'pills', 'inverse-tabs', 'inverse-pills', 'button-group']),\n /** Specifies elements that is processed to create tabs. */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies text for the 'More' tab. */\n moreTabText: PropTypes.string,\n /** Specifies default active tab (uncontrolled usage). */\n defaultActiveKey: PropTypes.string,\n /** Specifies active tab (controlled usage). */\n activeKey: PropTypes.string,\n};\n\nTabs.defaultProps = {\n variant: 'tabs',\n className: undefined,\n moreTabText: MORE_TAB_TEXT,\n defaultActiveKey: undefined,\n activeKey: undefined,\n};\n\nTabs.Deprecated = TabsDeprecated;\n\nexport default Tabs;\nexport { Tab };\nexport { default as TabContainer } from 'react-bootstrap/TabContainer';\nexport { default as TabContent } from 'react-bootstrap/TabContent';\nexport { default as TabPane } from 'react-bootstrap/TabPane';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useMemo","useRef","useState","useCallback","classNames","PropTypes","BaseTabs","TabsDeprecated","Bubble","Dropdown","useIndexOfLastVisibleChild","Tab","MORE_TAB_TEXT","Tabs","_ref","children","className","moreTabText","defaultActiveKey","activeKey","props","containerElementRef","setContainerElementRef","overflowElementRef","indexOfLastVisibleChild","firstChild","current","parentNode","observer","MutationObserver","mutations","forEach","mutation","eventKey","target","getAttribute","isActive","element","querySelector","moreTab","classList","add","remove","observe","attributes","subtree","attributeFilter","disconnect","undefined","tabIndex","handleDropdownTabClick","hiddenTab","click","tabsChildren","indexOfOverflowStart","handleDropdownKeyPress","e","key","childrenList","Children","map","child","index","type","name","process","env","NODE_ENV","console","error","isValidElement","title","notification","tabClassName","rest","newTitle","createElement","Fragment","variant","role","expandable","tabClass","modifiedTab","cloneElement","moreTabHasNotification","overflowChildren","slice","overflowChild","Item","as","onClick","onKeyPress","disabled","datakey","active","splice","length","ref","Toggle","id","Menu","propTypes","oneOf","node","isRequired","string","defaultProps","Deprecated","default","TabContainer","TabContent","TabPane"],"sources":["../../src/Tabs/index.jsx"],"sourcesContent":["import React, {\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport BaseTabs from 'react-bootstrap/Tabs';\nimport TabsDeprecated from './deprecated';\nimport Bubble from '../Bubble';\nimport Dropdown from '../Dropdown';\nimport useIndexOfLastVisibleChild from '../hooks/useIndexOfLastVisibleChildHook';\nimport Tab from './Tab';\n\nexport const MORE_TAB_TEXT = 'More...';\n\nfunction Tabs({\n children,\n className,\n moreTabText = MORE_TAB_TEXT,\n defaultActiveKey,\n activeKey,\n ...props\n}) {\n const [containerElementRef, setContainerElementRef] = useState(null);\n const overflowElementRef = useRef(null);\n const indexOfLastVisibleChild = useIndexOfLastVisibleChild(\n containerElementRef?.firstChild,\n overflowElementRef.current?.parentNode,\n );\n\n useEffect(() => {\n if (containerElementRef) {\n const observer = new MutationObserver((mutations => {\n mutations.forEach(mutation => {\n // React-Bootstrap attribute 'data-rb-event-key' is responsible for the tab identification\n const eventKey = mutation.target.getAttribute('data-rb-event-key');\n // React-Bootstrap attribute 'aria-selected' is responsible for selected/unselected state\n const isActive = mutation.target.getAttribute('aria-selected') === 'true';\n // datakey attribute is added manually to the dropdown\n // elements so that they correspond to the native tabs' eventKey\n const element = containerElementRef.querySelector(`[datakey='${eventKey}']`);\n const moreTab = containerElementRef.querySelector('.pgn__tab_more');\n if (isActive) {\n element?.classList.add('active');\n // Here we add active class to the 'More Tab' if element exists in the dropdown\n if (element) {\n moreTab.classList.add('active');\n } else {\n moreTab.classList.remove('active');\n }\n } else {\n element?.classList.remove('active');\n }\n });\n }));\n observer.observe(containerElementRef, {\n attributes: true, subtree: true, attributeFilter: ['aria-selected'],\n });\n return () => observer.disconnect();\n }\n return undefined;\n }, [containerElementRef]);\n\n useEffect(() => {\n if (overflowElementRef.current?.parentNode) {\n overflowElementRef.current.parentNode.tabIndex = -1;\n }\n }, [overflowElementRef.current?.parentNode]);\n\n const handleDropdownTabClick = useCallback((eventKey) => {\n const hiddenTab = containerElementRef.querySelector(`[data-rb-event-key='${eventKey}']`);\n hiddenTab.click();\n }, [containerElementRef]);\n\n const tabsChildren = useMemo(() => {\n const indexOfOverflowStart = indexOfLastVisibleChild + 1;\n const handleDropdownKeyPress = (e, eventKey) => {\n if (e.key === 'Enter') {\n handleDropdownTabClick(eventKey);\n }\n };\n const childrenList = React.Children.map(children, (child, index) => {\n if (child?.type?.name !== 'Tab' && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `Tabs children can only be of type Tab. ${children[index]} was passed instead.`,\n );\n }\n if (!React.isValidElement(child)) {\n return child;\n }\n const {\n title, notification, tabClassName, ...rest\n } = child.props;\n let newTitle;\n if (notification) {\n newTitle = (\n <>\n {title}\n <Bubble\n variant=\"error\"\n role=\"status\"\n className=\"pgn__tab-notification\"\n aria-live=\"polite\"\n expandable\n >\n {notification}\n </Bubble>\n </>\n );\n } else {\n newTitle = title;\n }\n const tabClass = index > indexOfLastVisibleChild ? 'pgn__tab_invisible' : '';\n const modifiedTab = React.cloneElement(child, {\n ...rest,\n title: newTitle,\n tabClassName: classNames(tabClass, tabClassName),\n });\n return modifiedTab;\n });\n let moreTabHasNotification = false;\n const overflowChildren = childrenList.slice(indexOfOverflowStart)\n .map(overflowChild => {\n if (!moreTabHasNotification && overflowChild.props.notification) {\n moreTabHasNotification = true;\n }\n return (\n <Dropdown.Item\n as=\"li\"\n tabIndex=\"0\"\n key={`${overflowChild.props.eventKey}overflow`}\n onClick={() => handleDropdownTabClick(overflowChild.props.eventKey)}\n onKeyPress={(e) => handleDropdownKeyPress(e, overflowChild.props.eventKey)}\n disabled={overflowChild.props.disabled}\n datakey={overflowChild.props.eventKey}\n className={classNames({\n active: overflowChild.props.eventKey === defaultActiveKey || overflowChild.props.eventKey === activeKey,\n }, 'pgn__tabs__dropdown-item')}\n >\n {overflowChild.props.title}\n </Dropdown.Item>\n );\n });\n\n childrenList.splice(indexOfOverflowStart, 0, (<Tab\n key=\"moreTabKey\"\n tabClassName={classNames(!overflowChildren.length && 'pgn__tab_invisible', 'pgn__tab_more')}\n title={(\n <Dropdown ref={overflowElementRef}>\n <Dropdown.Toggle\n variant=\"link\"\n className=\"nav-link\"\n id=\"pgn__tab-toggle\"\n >\n {moreTabText}\n {moreTabHasNotification && (\n <Bubble\n variant=\"error\"\n role=\"status\"\n className=\"pgn__tab-notification\"\n />\n )}\n </Dropdown.Toggle>\n <Dropdown.Menu as=\"ul\" className=\"dropdown-menu-right\">{overflowChildren}</Dropdown.Menu>\n </Dropdown>\n )}\n />\n ));\n return childrenList;\n }, [activeKey, children, defaultActiveKey, indexOfLastVisibleChild, moreTabText, handleDropdownTabClick]);\n\n return (\n <div ref={setContainerElementRef}>\n <BaseTabs\n defaultActiveKey={defaultActiveKey}\n activeKey={activeKey}\n {...props}\n className={classNames(className, 'pgn__tabs')}\n >\n {tabsChildren}\n </BaseTabs>\n </div>\n );\n}\n\nTabs.propTypes = {\n /** Specifies variant to use. */\n variant: PropTypes.oneOf(['tabs', 'pills', 'inverse-tabs', 'inverse-pills', 'button-group']),\n /** Specifies elements that is processed to create tabs. */\n children: PropTypes.node.isRequired,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Specifies text for the 'More' tab. */\n moreTabText: PropTypes.string,\n /** Specifies default active tab (uncontrolled usage). */\n defaultActiveKey: PropTypes.string,\n /** Specifies active tab (controlled usage). */\n activeKey: PropTypes.string,\n};\n\nTabs.defaultProps = {\n variant: 'tabs',\n className: undefined,\n moreTabText: MORE_TAB_TEXT,\n defaultActiveKey: undefined,\n activeKey: undefined,\n};\n\nTabs.Deprecated = TabsDeprecated;\n\nexport default Tabs;\nexport { Tab };\nexport { default as TabContainer } from 'react-bootstrap/TabContainer';\nexport { default as TabContent } from 'react-bootstrap/TabContent';\nexport { default as TabPane } from 'react-bootstrap/TabPane';\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@
11
11
  left: 0;
12
12
  }
13
13
 
14
- @media only screen and (max-width: 768px) {
14
+ @media only screen and (width <= 768px) {
15
15
  bottom: $toast-container-gutter-sm;
16
16
  right: $toast-container-gutter-sm;
17
17
  left: $toast-container-gutter-sm;
@@ -42,11 +42,11 @@
42
42
  }
43
43
  }
44
44
 
45
- @media only screen and (max-width: 768px) {
45
+ @media only screen and (width <= 768px) {
46
46
  max-width: 100%;
47
47
  }
48
48
 
49
- @media only screen and (min-width: 768px) {
49
+ @media only screen and (width >= 768px) {
50
50
  min-width: $toast-max-width;
51
51
  max-width: $toast-max-width;
52
52
  }
@@ -1,7 +1,7 @@
1
1
  import React, { useLayoutEffect, useRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { truncateLines } from './utils';
4
- import useWindowSize from '../hooks/useWindowSize';
4
+ import useWindowSize from '../hooks/useWindowSizeHook';
5
5
  const DEFAULT_TRUNCATE_LINES = 1;
6
6
  const DEFAULT_TRUNCATE_ELLIPSIS = '...';
7
7
  const DEFAULT_TRUNCATE_ELEMENT_TYPE = 'div';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useLayoutEffect","useRef","PropTypes","truncateLines","useWindowSize","DEFAULT_TRUNCATE_LINES","DEFAULT_TRUNCATE_ELLIPSIS","DEFAULT_TRUNCATE_ELEMENT_TYPE","Truncate","_ref","children","lines","ellipsis","elementType","className","whiteSpace","onTruncate","textContainer","width","current","truncated","original","setAttribute","innerHTML","forEach","element","appendChild","createElement","ref","propTypes","string","isRequired","oneOfType","number","node","bool","func","defaultProps","undefined"],"sources":["../../src/Truncate/index.jsx"],"sourcesContent":["import React, {\n useLayoutEffect, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { truncateLines } from './utils';\nimport useWindowSize from '../hooks/useWindowSize';\n\nconst DEFAULT_TRUNCATE_LINES = 1;\nconst DEFAULT_TRUNCATE_ELLIPSIS = '...';\nconst DEFAULT_TRUNCATE_ELEMENT_TYPE = 'div';\n\nfunction Truncate({\n children, lines, ellipsis, elementType, className, whiteSpace, onTruncate,\n}) {\n const textContainer = useRef();\n const { width } = useWindowSize();\n\n useLayoutEffect(() => {\n if (textContainer.current) {\n const [truncated, original] = truncateLines(children, textContainer.current, {\n ellipsis,\n whiteSpace,\n lines,\n });\n textContainer.current.setAttribute('title', original);\n textContainer.current.setAttribute('aria-label', original);\n textContainer.current.innerHTML = '';\n truncated.forEach(element => {\n textContainer.current.appendChild(element);\n });\n if (onTruncate) {\n onTruncate(truncated);\n }\n }\n }, [children, ellipsis, lines, onTruncate, whiteSpace, width]);\n\n return React.createElement(elementType, {\n ref: textContainer,\n className,\n });\n}\n\nTruncate.propTypes = {\n /** The expected text to which the ellipsis would be applied. */\n children: PropTypes.string.isRequired,\n /** The number of lines the text to be truncated to. */\n lines: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** Text content for the ellipsis - will appear after the truncated lines. */\n ellipsis: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]),\n /** Adds the whitespace from before the ellipsis. */\n whiteSpace: PropTypes.bool,\n /** Custom html element for truncated text. */\n elementType: PropTypes.string,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Callback fired when a text truncating */\n onTruncate: PropTypes.func,\n};\n\nTruncate.defaultProps = {\n lines: DEFAULT_TRUNCATE_LINES,\n ellipsis: DEFAULT_TRUNCATE_ELLIPSIS,\n whiteSpace: false,\n elementType: DEFAULT_TRUNCATE_ELEMENT_TYPE,\n className: undefined,\n onTruncate: undefined,\n};\n\nexport default Truncate;\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,eAAe,EAAEC,MAAM,QAClB,OAAO;AACd,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,aAAa,QAAQ,SAAS;AACvC,OAAOC,aAAa,MAAM,wBAAwB;AAElD,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,yBAAyB,GAAG,KAAK;AACvC,MAAMC,6BAA6B,GAAG,KAAK;AAE3C,SAASC,QAAQA,CAAAC,IAAA,EAEd;EAAA,IAFe;IAChBC,QAAQ;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,WAAW;IAAEC,SAAS;IAAEC,UAAU;IAAEC;EACjE,CAAC,GAAAP,IAAA;EACC,MAAMQ,aAAa,GAAGhB,MAAM,CAAC,CAAC;EAC9B,MAAM;IAAEiB;EAAM,CAAC,GAAGd,aAAa,CAAC,CAAC;EAEjCJ,eAAe,CAAC,MAAM;IACpB,IAAIiB,aAAa,CAACE,OAAO,EAAE;MACzB,MAAM,CAACC,SAAS,EAAEC,QAAQ,CAAC,GAAGlB,aAAa,CAACO,QAAQ,EAAEO,aAAa,CAACE,OAAO,EAAE;QAC3EP,QAAQ;QACRG,UAAU;QACVJ;MACF,CAAC,CAAC;MACFM,aAAa,CAACE,OAAO,CAACG,YAAY,CAAC,OAAO,EAAED,QAAQ,CAAC;MACrDJ,aAAa,CAACE,OAAO,CAACG,YAAY,CAAC,YAAY,EAAED,QAAQ,CAAC;MAC1DJ,aAAa,CAACE,OAAO,CAACI,SAAS,GAAG,EAAE;MACpCH,SAAS,CAACI,OAAO,CAACC,OAAO,IAAI;QAC3BR,aAAa,CAACE,OAAO,CAACO,WAAW,CAACD,OAAO,CAAC;MAC5C,CAAC,CAAC;MACF,IAAIT,UAAU,EAAE;QACdA,UAAU,CAACI,SAAS,CAAC;MACvB;IACF;EACF,CAAC,EAAE,CAACV,QAAQ,EAAEE,QAAQ,EAAED,KAAK,EAAEK,UAAU,EAAED,UAAU,EAAEG,KAAK,CAAC,CAAC;EAE9D,oBAAOnB,KAAK,CAAC4B,aAAa,CAACd,WAAW,EAAE;IACtCe,GAAG,EAAEX,aAAa;IAClBH;EACF,CAAC,CAAC;AACJ;AAEAN,QAAQ,CAACqB,SAAS,GAAG;EACnB;EACAnB,QAAQ,EAAER,SAAS,CAAC4B,MAAM,CAACC,UAAU;EACrC;EACApB,KAAK,EAAET,SAAS,CAAC8B,SAAS,CAAC,CAAC9B,SAAS,CAAC4B,MAAM,EAAE5B,SAAS,CAAC+B,MAAM,CAAC,CAAC;EAChE;EACArB,QAAQ,EAAEV,SAAS,CAAC8B,SAAS,CAAC,CAAC9B,SAAS,CAAC4B,MAAM,EAAE5B,SAAS,CAAC+B,MAAM,EAAE/B,SAAS,CAACgC,IAAI,CAAC,CAAC;EACnF;EACAnB,UAAU,EAAEb,SAAS,CAACiC,IAAI;EAC1B;EACAtB,WAAW,EAAEX,SAAS,CAAC4B,MAAM;EAC7B;EACAhB,SAAS,EAAEZ,SAAS,CAAC4B,MAAM;EAC3B;EACAd,UAAU,EAAEd,SAAS,CAACkC;AACxB,CAAC;AAED5B,QAAQ,CAAC6B,YAAY,GAAG;EACtB1B,KAAK,EAAEN,sBAAsB;EAC7BO,QAAQ,EAAEN,yBAAyB;EACnCS,UAAU,EAAE,KAAK;EACjBF,WAAW,EAAEN,6BAA6B;EAC1CO,SAAS,EAAEwB,SAAS;EACpBtB,UAAU,EAAEsB;AACd,CAAC;AAED,eAAe9B,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useLayoutEffect","useRef","PropTypes","truncateLines","useWindowSize","DEFAULT_TRUNCATE_LINES","DEFAULT_TRUNCATE_ELLIPSIS","DEFAULT_TRUNCATE_ELEMENT_TYPE","Truncate","_ref","children","lines","ellipsis","elementType","className","whiteSpace","onTruncate","textContainer","width","current","truncated","original","setAttribute","innerHTML","forEach","element","appendChild","createElement","ref","propTypes","string","isRequired","oneOfType","number","node","bool","func","defaultProps","undefined"],"sources":["../../src/Truncate/index.jsx"],"sourcesContent":["import React, {\n useLayoutEffect, useRef,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { truncateLines } from './utils';\nimport useWindowSize from '../hooks/useWindowSizeHook';\n\nconst DEFAULT_TRUNCATE_LINES = 1;\nconst DEFAULT_TRUNCATE_ELLIPSIS = '...';\nconst DEFAULT_TRUNCATE_ELEMENT_TYPE = 'div';\n\nfunction Truncate({\n children, lines, ellipsis, elementType, className, whiteSpace, onTruncate,\n}) {\n const textContainer = useRef();\n const { width } = useWindowSize();\n\n useLayoutEffect(() => {\n if (textContainer.current) {\n const [truncated, original] = truncateLines(children, textContainer.current, {\n ellipsis,\n whiteSpace,\n lines,\n });\n textContainer.current.setAttribute('title', original);\n textContainer.current.setAttribute('aria-label', original);\n textContainer.current.innerHTML = '';\n truncated.forEach(element => {\n textContainer.current.appendChild(element);\n });\n if (onTruncate) {\n onTruncate(truncated);\n }\n }\n }, [children, ellipsis, lines, onTruncate, whiteSpace, width]);\n\n return React.createElement(elementType, {\n ref: textContainer,\n className,\n });\n}\n\nTruncate.propTypes = {\n /** The expected text to which the ellipsis would be applied. */\n children: PropTypes.string.isRequired,\n /** The number of lines the text to be truncated to. */\n lines: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** Text content for the ellipsis - will appear after the truncated lines. */\n ellipsis: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]),\n /** Adds the whitespace from before the ellipsis. */\n whiteSpace: PropTypes.bool,\n /** Custom html element for truncated text. */\n elementType: PropTypes.string,\n /** Specifies class name to append to the base element. */\n className: PropTypes.string,\n /** Callback fired when a text truncating */\n onTruncate: PropTypes.func,\n};\n\nTruncate.defaultProps = {\n lines: DEFAULT_TRUNCATE_LINES,\n ellipsis: DEFAULT_TRUNCATE_ELLIPSIS,\n whiteSpace: false,\n elementType: DEFAULT_TRUNCATE_ELEMENT_TYPE,\n className: undefined,\n onTruncate: undefined,\n};\n\nexport default Truncate;\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,eAAe,EAAEC,MAAM,QAClB,OAAO;AACd,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,aAAa,QAAQ,SAAS;AACvC,OAAOC,aAAa,MAAM,4BAA4B;AAEtD,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,yBAAyB,GAAG,KAAK;AACvC,MAAMC,6BAA6B,GAAG,KAAK;AAE3C,SAASC,QAAQA,CAAAC,IAAA,EAEd;EAAA,IAFe;IAChBC,QAAQ;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,WAAW;IAAEC,SAAS;IAAEC,UAAU;IAAEC;EACjE,CAAC,GAAAP,IAAA;EACC,MAAMQ,aAAa,GAAGhB,MAAM,CAAC,CAAC;EAC9B,MAAM;IAAEiB;EAAM,CAAC,GAAGd,aAAa,CAAC,CAAC;EAEjCJ,eAAe,CAAC,MAAM;IACpB,IAAIiB,aAAa,CAACE,OAAO,EAAE;MACzB,MAAM,CAACC,SAAS,EAAEC,QAAQ,CAAC,GAAGlB,aAAa,CAACO,QAAQ,EAAEO,aAAa,CAACE,OAAO,EAAE;QAC3EP,QAAQ;QACRG,UAAU;QACVJ;MACF,CAAC,CAAC;MACFM,aAAa,CAACE,OAAO,CAACG,YAAY,CAAC,OAAO,EAAED,QAAQ,CAAC;MACrDJ,aAAa,CAACE,OAAO,CAACG,YAAY,CAAC,YAAY,EAAED,QAAQ,CAAC;MAC1DJ,aAAa,CAACE,OAAO,CAACI,SAAS,GAAG,EAAE;MACpCH,SAAS,CAACI,OAAO,CAACC,OAAO,IAAI;QAC3BR,aAAa,CAACE,OAAO,CAACO,WAAW,CAACD,OAAO,CAAC;MAC5C,CAAC,CAAC;MACF,IAAIT,UAAU,EAAE;QACdA,UAAU,CAACI,SAAS,CAAC;MACvB;IACF;EACF,CAAC,EAAE,CAACV,QAAQ,EAAEE,QAAQ,EAAED,KAAK,EAAEK,UAAU,EAAED,UAAU,EAAEG,KAAK,CAAC,CAAC;EAE9D,oBAAOnB,KAAK,CAAC4B,aAAa,CAACd,WAAW,EAAE;IACtCe,GAAG,EAAEX,aAAa;IAClBH;EACF,CAAC,CAAC;AACJ;AAEAN,QAAQ,CAACqB,SAAS,GAAG;EACnB;EACAnB,QAAQ,EAAER,SAAS,CAAC4B,MAAM,CAACC,UAAU;EACrC;EACApB,KAAK,EAAET,SAAS,CAAC8B,SAAS,CAAC,CAAC9B,SAAS,CAAC4B,MAAM,EAAE5B,SAAS,CAAC+B,MAAM,CAAC,CAAC;EAChE;EACArB,QAAQ,EAAEV,SAAS,CAAC8B,SAAS,CAAC,CAAC9B,SAAS,CAAC4B,MAAM,EAAE5B,SAAS,CAAC+B,MAAM,EAAE/B,SAAS,CAACgC,IAAI,CAAC,CAAC;EACnF;EACAnB,UAAU,EAAEb,SAAS,CAACiC,IAAI;EAC1B;EACAtB,WAAW,EAAEX,SAAS,CAAC4B,MAAM;EAC7B;EACAhB,SAAS,EAAEZ,SAAS,CAAC4B,MAAM;EAC3B;EACAd,UAAU,EAAEd,SAAS,CAACkC;AACxB,CAAC;AAED5B,QAAQ,CAAC6B,YAAY,GAAG;EACtB1B,KAAK,EAAEN,sBAAsB;EAC7BO,QAAQ,EAAEN,yBAAyB;EACnCS,UAAU,EAAE,KAAK;EACjBF,WAAW,EAAEN,6BAA6B;EAC1CO,SAAS,EAAEwB,SAAS;EACpBtB,UAAU,EAAEsB;AACd,CAAC;AAED,eAAe9B,QAAQ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PropTypes","classNames","Input","FormControl","propTypes","for","string","isRequired","className","invalid","bool","valid","validMessage","node","invalidMessage","helpText","children","defaultProps","undefined","ValidationFormGroup","props","id","renderChildren","Children","map","child","indexOf","type","cloneElement","Boolean","renderHelpText","text","createElement","renderInvalidFeedback","message","renderValidFeedback"],"sources":["../../src/ValidationFormGroup/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Input from '../Input';\nimport { FormControl } from '../Form';\n\nconst propTypes = {\n /** Id of the form input that the validation is for */\n for: PropTypes.string.isRequired,\n /** Additional classnames for this component */\n className: PropTypes.string,\n /** Determines if invalid styles / message will be shown */\n invalid: PropTypes.bool,\n /** Determines if invalid styles / message will be shown */\n valid: PropTypes.bool,\n /** Message to display on valid input */\n validMessage: PropTypes.node,\n /** Message to display on invalid input */\n invalidMessage: PropTypes.node,\n /** Help text for the form input */\n helpText: PropTypes.node,\n /** Specifies contents of the component. */\n children: PropTypes.node,\n};\n\nconst defaultProps = {\n invalid: undefined,\n valid: undefined,\n validMessage: undefined,\n invalidMessage: undefined,\n helpText: undefined,\n children: undefined,\n className: undefined,\n};\n\nfunction ValidationFormGroup(props) {\n const {\n className,\n invalidMessage,\n invalid,\n valid,\n validMessage,\n helpText,\n for: id,\n children,\n } = props;\n\n const renderChildren = () => React.Children.map(children, (child) => {\n // Any non-user input element should pass through unmodified\n if (['input', 'textarea', 'select', Input, FormControl].indexOf(child.type) === -1) { return child; }\n\n // Add validation class names and describedby values to input element\n return React.cloneElement(child, {\n className: classNames(child.props.className, {\n 'is-invalid': invalid,\n 'is-valid': valid,\n }),\n // This is a non-standard use of the classNames package, but it's exactly the same use case.\n 'aria-describedby': classNames(child.props['aria-describedby'], {\n [`${id}-help-text`]: Boolean(helpText),\n [`${id}-invalid-feedback`]: invalid && invalidMessage,\n [`${id}-valid-feedback`]: valid && validMessage,\n }),\n });\n });\n\n const renderHelpText = (text) => {\n if (!text) { return null; }\n return <small id={`${id}-help-text`} className=\"form-text text-muted\">{text}</small>;\n };\n\n /**\n * The red text conveys semantic emphasis using color and font weight. For WCAG 2.1, the\n * semantics need to be exposed programmatically as well. To do this, we use <strong/>\n * elements and attach the formatting classes to them.\n */\n const renderInvalidFeedback = (message) => {\n if (!message) { return null; }\n return (\n <strong\n id={`${id}-invalid-feedback`}\n className=\"invalid-feedback\"\n >\n {message}\n </strong>\n );\n };\n\n const renderValidFeedback = (message) => {\n if (!message) { return null; }\n return (\n <div\n className=\"valid-feedback\"\n id={`${id}-valid-feedback`}\n >\n {message}\n </div>\n );\n };\n\n return (\n <div className={classNames('form-group', className)} data-testid=\"validation-form-group\">\n {renderChildren()}\n {renderHelpText(helpText)}\n {renderInvalidFeedback(invalidMessage)}\n {renderValidFeedback(validMessage)}\n </div>\n );\n}\n\nValidationFormGroup.propTypes = propTypes;\nValidationFormGroup.defaultProps = defaultProps;\n\nexport default ValidationFormGroup;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PropTypes","classNames","Input","FormControl","propTypes","for","string","isRequired","className","invalid","bool","valid","validMessage","node","invalidMessage","helpText","children","defaultProps","undefined","ValidationFormGroup","props","id","renderChildren","Children","map","child","indexOf","type","cloneElement","Boolean","renderHelpText","text","createElement","renderInvalidFeedback","message","renderValidFeedback"],"sources":["../../src/ValidationFormGroup/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Input from '../Input';\nimport { FormControl } from '../Form';\n\nconst propTypes = {\n /** Id of the form input that the validation is for */\n for: PropTypes.string.isRequired,\n /** Additional classnames for this component */\n className: PropTypes.string,\n /** Determines if invalid styles / message will be shown */\n invalid: PropTypes.bool,\n /** Determines if invalid styles / message will be shown */\n valid: PropTypes.bool,\n /** Message to display on valid input */\n validMessage: PropTypes.node,\n /** Message to display on invalid input */\n invalidMessage: PropTypes.node,\n /** Help text for the form input */\n helpText: PropTypes.node,\n /** Specifies contents of the component. */\n children: PropTypes.node,\n};\n\nconst defaultProps = {\n invalid: undefined,\n valid: undefined,\n validMessage: undefined,\n invalidMessage: undefined,\n helpText: undefined,\n children: undefined,\n className: undefined,\n};\n\nfunction ValidationFormGroup(props) {\n const {\n className,\n invalidMessage,\n invalid,\n valid,\n validMessage,\n helpText,\n for: id,\n children,\n } = props;\n\n const renderChildren = () => React.Children.map(children, (child) => {\n // Any non-user input element should pass through unmodified\n if (['input', 'textarea', 'select', Input, FormControl].indexOf(child.type) === -1) { return child; }\n\n // Add validation class names and describedby values to input element\n return React.cloneElement(child, {\n className: classNames(child.props.className, {\n 'is-invalid': invalid,\n 'is-valid': valid,\n }),\n // This is a non-standard use of the classNames package, but it's exactly the same use case.\n 'aria-describedby': classNames(child.props['aria-describedby'], {\n [`${id}-help-text`]: Boolean(helpText),\n [`${id}-invalid-feedback`]: invalid && invalidMessage,\n [`${id}-valid-feedback`]: valid && validMessage,\n }),\n });\n });\n\n const renderHelpText = (text) => {\n if (!text) { return null; }\n return <small id={`${id}-help-text`} className=\"form-text text-muted\">{text}</small>;\n };\n\n /**\n * The red text conveys semantic emphasis using color and font weight. For WCAG 2.1, the\n * semantics need to be exposed programmatically as well. To do this, we use <strong/>\n * elements and attach the formatting classes to them.\n */\n const renderInvalidFeedback = (message) => {\n if (!message) { return null; }\n return (\n <strong\n id={`${id}-invalid-feedback`}\n className=\"invalid-feedback\"\n >\n {message}\n </strong>\n );\n };\n\n const renderValidFeedback = (message) => {\n if (!message) { return null; }\n return (\n <div\n className=\"valid-feedback\"\n id={`${id}-valid-feedback`}\n >\n {message}\n </div>\n );\n };\n\n return (\n <div className={classNames('form-group', className)} data-testid=\"validation-form-group\">\n {renderChildren()}\n {renderHelpText(helpText)}\n {renderInvalidFeedback(invalidMessage)}\n {renderValidFeedback(validMessage)}\n </div>\n );\n}\n\nValidationFormGroup.propTypes = propTypes;\nValidationFormGroup.defaultProps = defaultProps;\n\nexport default ValidationFormGroup;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PropTypes","classNames","newId","ValidationMessage","Variant","withDeprecatedProps","DeprTypes","getDisplayName","WrappedComponent","displayName","name","inputProps","label","oneOfType","string","element","isRequired","id","value","number","dangerIconDescription","description","disabled","bool","required","onChange","func","onKeyPress","onBlur","validator","isValid","validationMessage","className","themes","arrayOf","inline","inputGroupPrepend","inputGroupAppend","type","inputRef","shape","current","instanceOf","defaultProps","undefined","asInput","inputType","arguments","length","labelFirst","NewComponent","Component","constructor","props","handleChange","bind","handleBlur","handleKeyPress","renderInput","state","componentDidUpdate","prevProps","updatedState","Object","keys","setState","event","target","checked","val","getLabel","createElement","htmlFor","isGroupedInput","getDescriptions","errorId","descriptionId","desc","error","invalidMessage","variant","status","hasDangerTheme","DANGER","INFO","variantIconDescription","describedBy","key","trim","getAddons","_ref","addonElements","Array","isArray","map","addon","index","cloneElement","generateInputGroupAddonKey","prefix","indexOf","_ref2","others","renderInputGroupAppend","renderInputGroupPrepend","render","propTypes","deprType","FORMAT","expect","transform","join","message","ariaLabel","MOVED","newName"],"sources":["../../src/asInput/index.jsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport newId from '../utils/newId';\nimport ValidationMessage from '../ValidationMessage/index';\nimport Variant from '../utils/constants';\nimport withDeprecatedProps, { DeprTypes } from '../withDeprecatedProps';\n\nexport const getDisplayName = WrappedComponent => WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\nexport const inputProps = {\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n name: PropTypes.string.isRequired,\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n dangerIconDescription: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n description: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n onKeyPress: PropTypes.func,\n onBlur: PropTypes.func,\n validator: PropTypes.func,\n isValid: PropTypes.bool,\n validationMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n className: PropTypes.string,\n themes: PropTypes.arrayOf(PropTypes.string),\n inline: PropTypes.bool,\n inputGroupPrepend: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n inputGroupAppend: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n type: PropTypes.string,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(PropTypes.element) }),\n ]),\n};\n\nexport const defaultProps = {\n onChange: () => {},\n onBlur: () => {},\n onKeyPress: () => {},\n id: undefined,\n value: '',\n dangerIconDescription: '',\n description: undefined,\n disabled: false,\n required: false,\n validator: undefined,\n isValid: true,\n validationMessage: '',\n className: undefined,\n themes: [],\n inline: false,\n inputGroupPrepend: undefined,\n inputGroupAppend: undefined,\n type: undefined,\n inputRef: undefined,\n};\n\nconst asInput = (WrappedComponent, inputType = undefined, labelFirst = true) => {\n class NewComponent extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.renderInput = this.renderInput.bind(this);\n\n const id = this.props.id ? this.props.id : newId('asInput');\n const isValid = this.props.validator ? true : this.props.isValid;\n const validationMessage = this.props.validator ? '' : this.props.validationMessage;\n const dangerIconDescription = this.props.validator ? '' : this.props.dangerIconDescription;\n this.state = {\n id,\n value: this.props.value,\n isValid,\n validationMessage,\n dangerIconDescription,\n };\n }\n\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n const updatedState = {};\n if (this.props.value !== prevProps.value) {\n updatedState.value = this.props.value;\n }\n if (this.props.isValid !== prevProps.isValid && !this.props.validator) {\n updatedState.isValid = this.props.isValid;\n }\n if (this.props.validationMessage !== prevProps.validationMessage && !this.props.validator) {\n updatedState.validationMessage = this.props.validationMessage;\n }\n if (this.props.dangerIconDescription !== prevProps.dangerIconDescription\n && !this.props.validator) {\n updatedState.dangerIconDescription = this.props.dangerIconDescription;\n }\n // If validator goes away, revert to props\n if (this.props.validator !== prevProps.validator && !this.props.validator) {\n updatedState.isValid = this.props.isValid;\n updatedState.validationMessage = this.props.validationMessage;\n updatedState.dangerIconDescription = this.props.dangerIconDescription;\n }\n if (Object.keys(updatedState).length > 0) {\n this.setState(updatedState);\n }\n }\n\n handleChange(event) {\n this.setState({ value: event.target.value });\n\n this.props.onChange(\n event.target.type === 'checkbox' ? event.target.checked : event.target.value,\n this.props.name,\n );\n }\n\n handleKeyPress(event) {\n this.props.onKeyPress(event, this.props.name);\n }\n\n handleBlur(event) {\n const val = event.target.value;\n\n if (this.props.validator) {\n this.setState(this.props.validator(val));\n }\n this.props.onBlur(val, this.props.name);\n }\n\n getLabel() {\n return (\n // eslint-disable-next-line jsx-a11y/label-has-for\n <label\n id={`label-${this.state.id}`}\n htmlFor={this.state.id}\n className={classNames({\n 'form-check-label': this.isGroupedInput(),\n })}\n >\n {this.props.label}\n </label>\n );\n }\n\n getDescriptions() {\n // possible future work: multiple feedback msgs?\n const errorId = `error-${this.state.id}`;\n const descriptionId = `description-${this.state.id}`;\n const desc = {};\n\n // TODO: refactor this component to use Variants instead of the themes array.\n desc.error = (\n <ValidationMessage\n id={errorId}\n isValid={this.state.isValid}\n invalidMessage={this.state.validationMessage}\n variant={{\n status: this.hasDangerTheme() ? Variant.status.DANGER : Variant.status.INFO,\n }}\n variantIconDescription={this.state.dangerIconDescription}\n />\n );\n desc.describedBy = errorId;\n\n if (this.props.description) {\n desc.description = (\n <small className=\"form-text\" id={descriptionId} key=\"1\">\n {this.props.description}\n </small>\n );\n desc.describedBy = `${desc.describedBy} ${descriptionId}`.trim();\n }\n\n return desc;\n }\n\n getAddons({ addonElements, type }) {\n if (Array.isArray(addonElements)) {\n return addonElements.map((addon, index) => React.cloneElement(\n addon,\n { key: this.generateInputGroupAddonKey({ prefix: type, index }) },\n ));\n }\n return addonElements;\n }\n\n hasDangerTheme() {\n return this.props.themes.indexOf('danger') >= 0;\n }\n\n isGroupedInput() {\n switch (inputType) {\n case 'checkbox':\n return true;\n default:\n return false;\n }\n }\n\n generateInputGroupAddonKey({ prefix, index }) {\n return `${this.state.id}-${prefix}-${index}`;\n }\n\n renderInput(describedBy) {\n const {\n className,\n inputRef,\n type,\n isValid,\n // unused\n validator,\n themes,\n inline,\n inputGroupPrepend,\n inputGroupAppend,\n label,\n dangerIconDescription,\n description,\n validationMessage,\n ...others\n } = this.props;\n\n return (\n <WrappedComponent\n {...others}\n id={this.state.id}\n value={this.state.value}\n className={classNames(\n {\n 'form-control': !this.isGroupedInput(),\n 'form-check-input': this.isGroupedInput(),\n 'is-invalid': !this.state.isValid,\n 'is-invalid-nodanger': !this.hasDangerTheme(),\n },\n className,\n )}\n aria-describedby={describedBy}\n aria-invalid={!isValid}\n onChange={this.handleChange}\n onBlur={this.handleBlur}\n onKeyPress={this.handleKeyPress}\n type={type}\n inputRef={inputRef}\n />\n );\n }\n\n renderInputGroupAppend() {\n return (\n <div className=\"input-group-append\">\n {this.getAddons({ type: 'append', addonElements: this.props.inputGroupAppend })}\n </div>\n );\n }\n\n renderInputGroupPrepend() {\n return (\n <div className=\"input-group-prepend\">\n {this.getAddons({ type: 'prepend', addonElements: this.props.inputGroupPrepend })}\n </div>\n );\n }\n\n render() {\n const { description, error, describedBy } = this.getDescriptions();\n return (\n <div className={classNames({\n 'form-group': !this.isGroupedInput(),\n 'form-inline': !this.isGroupedInput() && this.props.inline,\n 'form-check': this.isGroupedInput(),\n })}\n >\n {labelFirst && this.getLabel()}\n {this.props.inputGroupPrepend || this.props.inputGroupAppend ? (\n <div className={classNames('input-group')} data-testid=\"input-group\">\n {this.renderInputGroupPrepend()}\n {this.renderInput(describedBy)}\n {this.renderInputGroupAppend()}\n </div>\n ) : this.renderInput(describedBy)}\n {!labelFirst && this.getLabel()}\n {error}\n {description}\n </div>\n );\n }\n }\n\n NewComponent.displayName = `asInput(${getDisplayName(WrappedComponent)})`;\n\n NewComponent.propTypes = inputProps;\n\n NewComponent.defaultProps = defaultProps;\n\n return withDeprecatedProps(NewComponent, 'asInput', {\n className: {\n deprType: DeprTypes.FORMAT,\n expect: value => typeof value === 'string',\n transform: value => (Array.isArray(value) ? value.join(' ') : value),\n message: 'It should be a string.',\n },\n ariaLabel: {\n deprType: DeprTypes.MOVED,\n newName: 'aria-label',\n },\n });\n};\n\nexport default asInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PropTypes","classNames","newId","ValidationMessage","Variant","withDeprecatedProps","DeprTypes","getDisplayName","WrappedComponent","displayName","name","inputProps","label","oneOfType","string","element","isRequired","id","value","number","dangerIconDescription","description","disabled","bool","required","onChange","func","onKeyPress","onBlur","validator","isValid","validationMessage","className","themes","arrayOf","inline","inputGroupPrepend","inputGroupAppend","type","inputRef","shape","current","instanceOf","defaultProps","undefined","asInput","inputType","arguments","length","labelFirst","NewComponent","Component","constructor","props","handleChange","bind","handleBlur","handleKeyPress","renderInput","state","componentDidUpdate","prevProps","updatedState","Object","keys","setState","event","target","checked","val","getLabel","createElement","htmlFor","isGroupedInput","getDescriptions","errorId","descriptionId","desc","error","invalidMessage","variant","status","hasDangerTheme","DANGER","INFO","variantIconDescription","describedBy","key","trim","getAddons","_ref","addonElements","Array","isArray","map","addon","index","cloneElement","generateInputGroupAddonKey","prefix","indexOf","_ref2","others","renderInputGroupAppend","renderInputGroupPrepend","render","propTypes","deprType","FORMAT","expect","transform","join","message","ariaLabel","MOVED","newName"],"sources":["../../src/asInput/index.jsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport newId from '../utils/newId';\nimport ValidationMessage from '../ValidationMessage/index';\nimport Variant from '../utils/constants';\nimport withDeprecatedProps, { DeprTypes } from '../withDeprecatedProps';\n\nexport const getDisplayName = WrappedComponent => WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\nexport const inputProps = {\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n name: PropTypes.string.isRequired,\n id: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n dangerIconDescription: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n description: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n ]),\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n onKeyPress: PropTypes.func,\n onBlur: PropTypes.func,\n validator: PropTypes.func,\n isValid: PropTypes.bool,\n validationMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n className: PropTypes.string,\n themes: PropTypes.arrayOf(PropTypes.string),\n inline: PropTypes.bool,\n inputGroupPrepend: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n inputGroupAppend: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n type: PropTypes.string,\n inputRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(PropTypes.element) }),\n ]),\n};\n\nexport const defaultProps = {\n onChange: () => {},\n onBlur: () => {},\n onKeyPress: () => {},\n id: undefined,\n value: '',\n dangerIconDescription: '',\n description: undefined,\n disabled: false,\n required: false,\n validator: undefined,\n isValid: true,\n validationMessage: '',\n className: undefined,\n themes: [],\n inline: false,\n inputGroupPrepend: undefined,\n inputGroupAppend: undefined,\n type: undefined,\n inputRef: undefined,\n};\n\nconst asInput = (WrappedComponent, inputType = undefined, labelFirst = true) => {\n class NewComponent extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.renderInput = this.renderInput.bind(this);\n\n const id = this.props.id ? this.props.id : newId('asInput');\n const isValid = this.props.validator ? true : this.props.isValid;\n const validationMessage = this.props.validator ? '' : this.props.validationMessage;\n const dangerIconDescription = this.props.validator ? '' : this.props.dangerIconDescription;\n this.state = {\n id,\n value: this.props.value,\n isValid,\n validationMessage,\n dangerIconDescription,\n };\n }\n\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n const updatedState = {};\n if (this.props.value !== prevProps.value) {\n updatedState.value = this.props.value;\n }\n if (this.props.isValid !== prevProps.isValid && !this.props.validator) {\n updatedState.isValid = this.props.isValid;\n }\n if (this.props.validationMessage !== prevProps.validationMessage && !this.props.validator) {\n updatedState.validationMessage = this.props.validationMessage;\n }\n if (this.props.dangerIconDescription !== prevProps.dangerIconDescription\n && !this.props.validator) {\n updatedState.dangerIconDescription = this.props.dangerIconDescription;\n }\n // If validator goes away, revert to props\n if (this.props.validator !== prevProps.validator && !this.props.validator) {\n updatedState.isValid = this.props.isValid;\n updatedState.validationMessage = this.props.validationMessage;\n updatedState.dangerIconDescription = this.props.dangerIconDescription;\n }\n if (Object.keys(updatedState).length > 0) {\n this.setState(updatedState);\n }\n }\n\n handleChange(event) {\n this.setState({ value: event.target.value });\n\n this.props.onChange(\n event.target.type === 'checkbox' ? event.target.checked : event.target.value,\n this.props.name,\n );\n }\n\n handleKeyPress(event) {\n this.props.onKeyPress(event, this.props.name);\n }\n\n handleBlur(event) {\n const val = event.target.value;\n\n if (this.props.validator) {\n this.setState(this.props.validator(val));\n }\n this.props.onBlur(val, this.props.name);\n }\n\n getLabel() {\n return (\n // eslint-disable-next-line jsx-a11y/label-has-for\n <label\n id={`label-${this.state.id}`}\n htmlFor={this.state.id}\n className={classNames({\n 'form-check-label': this.isGroupedInput(),\n })}\n >\n {this.props.label}\n </label>\n );\n }\n\n getDescriptions() {\n // possible future work: multiple feedback msgs?\n const errorId = `error-${this.state.id}`;\n const descriptionId = `description-${this.state.id}`;\n const desc = {};\n\n // TODO: refactor this component to use Variants instead of the themes array.\n desc.error = (\n <ValidationMessage\n id={errorId}\n isValid={this.state.isValid}\n invalidMessage={this.state.validationMessage}\n variant={{\n status: this.hasDangerTheme() ? Variant.status.DANGER : Variant.status.INFO,\n }}\n variantIconDescription={this.state.dangerIconDescription}\n />\n );\n desc.describedBy = errorId;\n\n if (this.props.description) {\n desc.description = (\n <small className=\"form-text\" id={descriptionId} key=\"1\">\n {this.props.description}\n </small>\n );\n desc.describedBy = `${desc.describedBy} ${descriptionId}`.trim();\n }\n\n return desc;\n }\n\n getAddons({ addonElements, type }) {\n if (Array.isArray(addonElements)) {\n return addonElements.map((addon, index) => React.cloneElement(\n addon,\n { key: this.generateInputGroupAddonKey({ prefix: type, index }) },\n ));\n }\n return addonElements;\n }\n\n hasDangerTheme() {\n return this.props.themes.indexOf('danger') >= 0;\n }\n\n isGroupedInput() {\n switch (inputType) {\n case 'checkbox':\n return true;\n default:\n return false;\n }\n }\n\n generateInputGroupAddonKey({ prefix, index }) {\n return `${this.state.id}-${prefix}-${index}`;\n }\n\n renderInput(describedBy) {\n const {\n className,\n inputRef,\n type,\n isValid,\n // unused\n validator,\n themes,\n inline,\n inputGroupPrepend,\n inputGroupAppend,\n label,\n dangerIconDescription,\n description,\n validationMessage,\n ...others\n } = this.props;\n\n return (\n <WrappedComponent\n {...others}\n id={this.state.id}\n value={this.state.value}\n className={classNames(\n {\n 'form-control': !this.isGroupedInput(),\n 'form-check-input': this.isGroupedInput(),\n 'is-invalid': !this.state.isValid,\n 'is-invalid-nodanger': !this.hasDangerTheme(),\n },\n className,\n )}\n aria-describedby={describedBy}\n aria-invalid={!isValid}\n onChange={this.handleChange}\n onBlur={this.handleBlur}\n onKeyPress={this.handleKeyPress}\n type={type}\n inputRef={inputRef}\n />\n );\n }\n\n renderInputGroupAppend() {\n return (\n <div className=\"input-group-append\">\n {this.getAddons({ type: 'append', addonElements: this.props.inputGroupAppend })}\n </div>\n );\n }\n\n renderInputGroupPrepend() {\n return (\n <div className=\"input-group-prepend\">\n {this.getAddons({ type: 'prepend', addonElements: this.props.inputGroupPrepend })}\n </div>\n );\n }\n\n render() {\n const { description, error, describedBy } = this.getDescriptions();\n return (\n <div className={classNames({\n 'form-group': !this.isGroupedInput(),\n 'form-inline': !this.isGroupedInput() && this.props.inline,\n 'form-check': this.isGroupedInput(),\n })}\n >\n {labelFirst && this.getLabel()}\n {this.props.inputGroupPrepend || this.props.inputGroupAppend ? (\n <div className={classNames('input-group')} data-testid=\"input-group\">\n {this.renderInputGroupPrepend()}\n {this.renderInput(describedBy)}\n {this.renderInputGroupAppend()}\n </div>\n ) : this.renderInput(describedBy)}\n {!labelFirst && this.getLabel()}\n {error}\n {description}\n </div>\n );\n }\n }\n\n NewComponent.displayName = `asInput(${getDisplayName(WrappedComponent)})`;\n\n NewComponent.propTypes = inputProps;\n\n NewComponent.defaultProps = defaultProps;\n\n return withDeprecatedProps(NewComponent, 'asInput', {\n className: {\n deprType: DeprTypes.FORMAT,\n expect: value => typeof value === 'string',\n transform: value => (Array.isArray(value) ? value.join(' ') : value),\n message: 'It should be a string.',\n },\n ariaLabel: {\n deprType: DeprTypes.MOVED,\n newName: 'aria-label',\n },\n });\n};\n\nexport default asInput;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export interface ArrowKeyNavProps {
3
+ /** e.g. 'a,button,input' */
4
+ selectors?: string;
5
+ ignoredKeys?: string[];
6
+ }
7
+ /**
8
+ * A React hook to enable arrow key navigation on a component.
9
+ */
10
+ export default function useArrowKeyNavigation(props?: ArrowKeyNavProps): import("react").MutableRefObject<HTMLElement | undefined>;
@@ -1,9 +1,8 @@
1
+ // Note: this file was renamed from 'useArrowKeyNavigation.tsx' to 'useArrowKeyNavigationHook.tsx' to fix
2
+ // some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx
3
+ // files confused. Renaming this file allows us to keep the URLs of the docs site
4
+ // unchanged.
1
5
  import { useRef, useEffect } from 'react';
2
-
3
- /**
4
- * A React hook to enable arrow key navigation on a component.
5
- */
6
-
7
6
  function handleEnter(_ref) {
8
7
  let {
9
8
  event,
@@ -44,7 +43,6 @@ function handleArrowKey(_ref2) {
44
43
  nextElement?.focus();
45
44
  event.preventDefault();
46
45
  }
47
-
48
46
  /**
49
47
  * Implement arrow key navigation for the given parentNode
50
48
  */
@@ -83,11 +81,11 @@ function handleEvents(_ref3) {
83
81
 
84
82
  // Which index is currently selected
85
83
  const currentIndex = Array.from(availableElements).findIndex(availableElement => availableElement === activeElement);
86
- if (key === 'Enter') {
84
+ if (key === 'Enter' && activeElement) {
87
85
  handleEnter({
88
86
  event,
89
87
  currentIndex,
90
- activeElement
88
+ activeElement: activeElement
91
89
  });
92
90
  }
93
91
  handleArrowKey({
@@ -96,11 +94,15 @@ function handleEvents(_ref3) {
96
94
  availableElements
97
95
  });
98
96
  }
99
- export default function useArrowKeyNavigation(props) {
97
+ /**
98
+ * A React hook to enable arrow key navigation on a component.
99
+ */
100
+ export default function useArrowKeyNavigation() {
101
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
102
  const {
101
103
  selectors,
102
104
  ignoredKeys
103
- } = props || {};
105
+ } = props;
104
106
  const parentNode = useRef();
105
107
  useEffect(() => {
106
108
  const eventHandler = event => {
@@ -116,4 +118,4 @@ export default function useArrowKeyNavigation(props) {
116
118
  }, [ignoredKeys, selectors]);
117
119
  return parentNode;
118
120
  }
119
- //# sourceMappingURL=useArrowKeyNavigation.js.map
121
+ //# sourceMappingURL=useArrowKeyNavigationHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useArrowKeyNavigationHook.js","names":["useRef","useEffect","handleEnter","_ref","event","currentIndex","activeElement","click","preventDefault","handleArrowKey","_ref2","availableElements","focus","nextElement","key","length","handleEvents","_ref3","ignoredKeys","parentNode","selectors","includes","document","contains","querySelectorAll","Array","from","findIndex","availableElement","useArrowKeyNavigation","props","arguments","undefined","eventHandler","current","addEventListener","removeEventListener"],"sources":["../../src/hooks/useArrowKeyNavigationHook.tsx"],"sourcesContent":["// Note: this file was renamed from 'useArrowKeyNavigation.tsx' to 'useArrowKeyNavigationHook.tsx' to fix\n// some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx\n// files confused. Renaming this file allows us to keep the URLs of the docs site\n// unchanged.\nimport { useRef, useEffect } from 'react';\n\ninterface HandleEnterArgs {\n event: KeyboardEvent;\n currentIndex: number;\n activeElement: HTMLElement;\n}\n\nfunction handleEnter({ event, currentIndex, activeElement }: HandleEnterArgs) {\n if (currentIndex === -1) { return; }\n activeElement.click();\n event.preventDefault();\n}\n\ninterface HandleArrowKeyArgs {\n event: KeyboardEvent;\n currentIndex: number;\n availableElements: NodeListOf<HTMLElement>;\n}\n\nfunction handleArrowKey({ event, currentIndex, availableElements }: HandleArrowKeyArgs) {\n // If the focus isn't in the container, focus on the first thing\n if (currentIndex === -1) { availableElements[0].focus(); }\n\n // Move the focus up or down. Wrap around ends of list.\n let nextElement;\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n nextElement = availableElements[(currentIndex + 1) % availableElements.length];\n }\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n nextElement = currentIndex - 1 < 0\n ? availableElements[currentIndex - 1 + availableElements.length]\n : availableElements[currentIndex - 1];\n }\n if (event.key === 'End') {\n nextElement = availableElements[availableElements.length - 1];\n }\n if (event.key === 'Home') {\n [nextElement] = availableElements;\n }\n\n nextElement?.focus();\n event.preventDefault();\n}\n\ninterface HandleEventsArgs {\n event: KeyboardEvent;\n ignoredKeys?: string[];\n parentNode: HTMLElement | undefined;\n selectors?: string;\n}\n\n/**\n * Implement arrow key navigation for the given parentNode\n */\nfunction handleEvents({\n event,\n ignoredKeys = [],\n parentNode,\n selectors = 'a,button,input',\n}: HandleEventsArgs) {\n if (!parentNode) { return; }\n\n const { key } = event;\n\n if (!['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Enter', 'Home', 'End'].includes(key)\n || ignoredKeys.includes(key)) {\n return;\n }\n\n const { activeElement } = document;\n\n // If we're not inside the container, don't do anything\n if (!parentNode.contains(activeElement)) { return; }\n\n // Get the list of elements we're allowed to scroll through\n const availableElements = parentNode.querySelectorAll<HTMLElement>(selectors);\n\n // No elements are available to loop through.\n if (!availableElements.length) { return; }\n\n // Which index is currently selected\n const currentIndex = Array.from(availableElements).findIndex(\n (availableElement) => availableElement === activeElement,\n );\n\n if (key === 'Enter' && activeElement) {\n handleEnter({ event, currentIndex, activeElement: activeElement as HTMLElement });\n }\n handleArrowKey({ event, currentIndex, availableElements });\n}\n\nexport interface ArrowKeyNavProps {\n /** e.g. 'a,button,input' */\n selectors?: string;\n ignoredKeys?: string[];\n}\n\n/**\n * A React hook to enable arrow key navigation on a component.\n */\nexport default function useArrowKeyNavigation(props: ArrowKeyNavProps = {}) {\n const { selectors, ignoredKeys } = props;\n const parentNode = useRef<HTMLElement>();\n\n useEffect(() => {\n const eventHandler = (event: KeyboardEvent) => {\n handleEvents({\n event, ignoredKeys, parentNode: parentNode.current, selectors,\n });\n };\n\n document.addEventListener('keydown', eventHandler);\n\n return () => document.removeEventListener('keydown', eventHandler);\n }, [ignoredKeys, selectors]);\n\n return parentNode;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This hook will find the index of the last child of a containing element
3
+ * that fits within its bounding rectangle. This is done by summing the widths
4
+ * of the children until they exceed the width of the container.
5
+ *
6
+ * The hook returns the index of the last visible child.
7
+ *
8
+ * @param containerElementRef - container element
9
+ * @param overflowElementRef - overflow element
10
+ */
11
+ declare const useIndexOfLastVisibleChild: (containerElementRef: HTMLElement | null, overflowElementRef: HTMLElement | null) => number;
12
+ export default useIndexOfLastVisibleChild;
@@ -1,3 +1,7 @@
1
+ // Note: this file was renamed from 'useIndexOfLastVisibleChild.tsx' to 'useIndexOfLastVisibleChildHook.tsx' to fix
2
+ // some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx
3
+ // files confused. Renaming this file allows us to keep the URLs of the docs site
4
+ // unchanged.
1
5
  import { useLayoutEffect, useState } from 'react';
2
6
 
3
7
  /**
@@ -5,14 +9,17 @@ import { useLayoutEffect, useState } from 'react';
5
9
  * that fits within its bounding rectangle. This is done by summing the widths
6
10
  * of the children until they exceed the width of the container.
7
11
  *
8
- * @param {Element} containerElementRef - container element
9
- * @param {Element} overflowElementRef - overflow element
10
- *
11
12
  * The hook returns the index of the last visible child.
13
+ *
14
+ * @param containerElementRef - container element
15
+ * @param overflowElementRef - overflow element
12
16
  */
13
17
  const useIndexOfLastVisibleChild = (containerElementRef, overflowElementRef) => {
14
18
  const [indexOfLastVisibleChild, setIndexOfLastVisibleChild] = useState(-1);
15
19
  useLayoutEffect(() => {
20
+ if (!containerElementRef) {
21
+ return undefined;
22
+ }
16
23
  function updateLastVisibleChildIndex() {
17
24
  // Get array of child nodes from NodeList form
18
25
  const childNodesArr = Array.prototype.slice.call(containerElementRef.children);
@@ -33,20 +40,17 @@ const useIndexOfLastVisibleChild = (containerElementRef, overflowElementRef) =>
33
40
  // sometimes we'll show a dropdown with one item in it when it would fit,
34
41
  // but allowing this case dramatically simplifies the calculations we need
35
42
  // to do above.
36
- sumWidth: overflowElementRef ? overflowElementRef.getBoundingClientRect().width : 0,
43
+ sumWidth: overflowElementRef?.getBoundingClientRect().width ?? 0,
37
44
  nextIndexOfLastVisibleChild: -1
38
45
  });
39
46
  setIndexOfLastVisibleChild(nextIndexOfLastVisibleChild);
40
47
  }
41
- if (containerElementRef) {
42
- updateLastVisibleChildIndex();
43
- const resizeObserver = new ResizeObserver(() => updateLastVisibleChildIndex());
44
- resizeObserver.observe(containerElementRef);
45
- return () => resizeObserver.disconnect();
46
- }
47
- return undefined;
48
+ updateLastVisibleChildIndex();
49
+ const resizeObserver = new ResizeObserver(() => updateLastVisibleChildIndex());
50
+ resizeObserver.observe(containerElementRef);
51
+ return () => resizeObserver.disconnect();
48
52
  }, [containerElementRef, overflowElementRef]);
49
53
  return indexOfLastVisibleChild;
50
54
  };
51
55
  export default useIndexOfLastVisibleChild;
52
- //# sourceMappingURL=useIndexOfLastVisibleChild.js.map
56
+ //# sourceMappingURL=useIndexOfLastVisibleChildHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexOfLastVisibleChildHook.js","names":["useLayoutEffect","useState","useIndexOfLastVisibleChild","containerElementRef","overflowElementRef","indexOfLastVisibleChild","setIndexOfLastVisibleChild","undefined","updateLastVisibleChildIndex","childNodesArr","Array","prototype","slice","call","children","nextIndexOfLastVisibleChild","filter","childNode","reduce","acc","index","sumWidth","getBoundingClientRect","width","resizeObserver","ResizeObserver","observe","disconnect"],"sources":["../../src/hooks/useIndexOfLastVisibleChildHook.tsx"],"sourcesContent":["// Note: this file was renamed from 'useIndexOfLastVisibleChild.tsx' to 'useIndexOfLastVisibleChildHook.tsx' to fix\n// some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx\n// files confused. Renaming this file allows us to keep the URLs of the docs site\n// unchanged.\nimport { useLayoutEffect, useState } from 'react';\n\n/**\n * This hook will find the index of the last child of a containing element\n * that fits within its bounding rectangle. This is done by summing the widths\n * of the children until they exceed the width of the container.\n *\n * The hook returns the index of the last visible child.\n *\n * @param containerElementRef - container element\n * @param overflowElementRef - overflow element\n */\nconst useIndexOfLastVisibleChild = (\n containerElementRef: HTMLElement | null,\n overflowElementRef: HTMLElement | null,\n): number => {\n const [indexOfLastVisibleChild, setIndexOfLastVisibleChild] = useState(-1);\n\n useLayoutEffect(() => {\n if (!containerElementRef) {\n return undefined;\n }\n\n function updateLastVisibleChildIndex() {\n // Get array of child nodes from NodeList form\n const childNodesArr = Array.prototype.slice.call(containerElementRef!.children);\n const { nextIndexOfLastVisibleChild } = childNodesArr\n // filter out the overflow element\n .filter(childNode => childNode !== overflowElementRef)\n // sum the widths to find the last visible element's index\n .reduce((acc, childNode, index) => {\n acc.sumWidth += childNode.getBoundingClientRect().width;\n if (acc.sumWidth <= containerElementRef!.getBoundingClientRect().width) {\n acc.nextIndexOfLastVisibleChild = index;\n }\n return acc;\n }, {\n // Include the overflow element's width to begin with. Doing this means\n // sometimes we'll show a dropdown with one item in it when it would fit,\n // but allowing this case dramatically simplifies the calculations we need\n // to do above.\n sumWidth: overflowElementRef?.getBoundingClientRect().width ?? 0,\n nextIndexOfLastVisibleChild: -1,\n });\n\n setIndexOfLastVisibleChild(nextIndexOfLastVisibleChild);\n }\n\n updateLastVisibleChildIndex();\n\n const resizeObserver = new ResizeObserver(() => updateLastVisibleChildIndex());\n resizeObserver.observe(containerElementRef);\n return () => resizeObserver.disconnect();\n }, [containerElementRef, overflowElementRef]);\n\n return indexOfLastVisibleChild;\n};\n\nexport default useIndexOfLastVisibleChild;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA,SAASA,eAAe,EAAEC,QAAQ,QAAQ,OAAO;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAGA,CACjCC,mBAAuC,EACvCC,kBAAsC,KAC3B;EACX,MAAM,CAACC,uBAAuB,EAAEC,0BAA0B,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAAC,CAAC;EAE1ED,eAAe,CAAC,MAAM;IACpB,IAAI,CAACG,mBAAmB,EAAE;MACxB,OAAOI,SAAS;IAClB;IAEA,SAASC,2BAA2BA,CAAA,EAAG;MACrC;MACA,MAAMC,aAAa,GAAGC,KAAK,CAACC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACV,mBAAmB,CAAEW,QAAQ,CAAC;MAC/E,MAAM;QAAEC;MAA4B,CAAC,GAAGN;MACtC;MAAA,CACCO,MAAM,CAACC,SAAS,IAAIA,SAAS,KAAKb,kBAAkB;MACrD;MAAA,CACCc,MAAM,CAAC,CAACC,GAAG,EAAEF,SAAS,EAAEG,KAAK,KAAK;QACjCD,GAAG,CAACE,QAAQ,IAAIJ,SAAS,CAACK,qBAAqB,CAAC,CAAC,CAACC,KAAK;QACvD,IAAIJ,GAAG,CAACE,QAAQ,IAAIlB,mBAAmB,CAAEmB,qBAAqB,CAAC,CAAC,CAACC,KAAK,EAAE;UACtEJ,GAAG,CAACJ,2BAA2B,GAAGK,KAAK;QACzC;QACA,OAAOD,GAAG;MACZ,CAAC,EAAE;QACD;QACA;QACA;QACA;QACAE,QAAQ,EAAEjB,kBAAkB,EAAEkB,qBAAqB,CAAC,CAAC,CAACC,KAAK,IAAI,CAAC;QAChER,2BAA2B,EAAE,CAAC;MAChC,CAAC,CAAC;MAEJT,0BAA0B,CAACS,2BAA2B,CAAC;IACzD;IAEAP,2BAA2B,CAAC,CAAC;IAE7B,MAAMgB,cAAc,GAAG,IAAIC,cAAc,CAAC,MAAMjB,2BAA2B,CAAC,CAAC,CAAC;IAC9EgB,cAAc,CAACE,OAAO,CAACvB,mBAAmB,CAAC;IAC3C,OAAO,MAAMqB,cAAc,CAACG,UAAU,CAAC,CAAC;EAC1C,CAAC,EAAE,CAACxB,mBAAmB,EAAEC,kBAAkB,CAAC,CAAC;EAE7C,OAAOC,uBAAuB;AAChC,CAAC;AAED,eAAeH,0BAA0B","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const useIsVisible: (defaultIsVisible?: boolean) => [isVisible: boolean, sentinelRef: React.MutableRefObject<HTMLElement | null>];
3
+ export default useIsVisible;
@@ -1,7 +1,7 @@
1
1
  import { useRef, useState, useEffect } from 'react';
2
2
  const useIsVisible = function () {
3
3
  let defaultIsVisible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
4
- const sentinelRef = useRef();
4
+ const sentinelRef = useRef(null);
5
5
  const [isVisible, setIsVisible] = useState(defaultIsVisible);
6
6
  useEffect(() => {
7
7
  try {
@@ -31,4 +31,4 @@ const useIsVisible = function () {
31
31
  return [isVisible, sentinelRef];
32
32
  };
33
33
  export default useIsVisible;
34
- //# sourceMappingURL=useIsVisible.js.map
34
+ //# sourceMappingURL=useIsVisibleHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsVisibleHook.js","names":["useRef","useState","useEffect","useIsVisible","defaultIsVisible","arguments","length","undefined","sentinelRef","isVisible","setIsVisible","current","observer","IntersectionObserver","entries","forEach","_ref","isIntersecting","observe","disconnect","e","isReferenceError","ReferenceError"],"sources":["../../src/hooks/useIsVisibleHook.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\n\nconst useIsVisible = (defaultIsVisible = true): [\n isVisible: boolean,\n sentinelRef: React.MutableRefObject<HTMLElement | null>,\n] => {\n const sentinelRef = useRef<HTMLElement | null>(null);\n const [isVisible, setIsVisible] = useState(defaultIsVisible);\n\n useEffect(() => {\n try {\n if (sentinelRef.current) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(({ isIntersecting }) => {\n setIsVisible(isIntersecting);\n });\n }, {});\n observer.observe(sentinelRef.current);\n return () => {\n observer.disconnect();\n };\n }\n } catch (e) {\n const isReferenceError = e instanceof ReferenceError;\n if (!isReferenceError) {\n throw e;\n }\n // Do nothing if an intersection observer can't be created.\n }\n return () => {};\n }, []);\n\n return [isVisible, sentinelRef];\n};\n\nexport default useIsVisible;\n"],"mappings":"AAAA,SAAgBA,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAE1D,MAAMC,YAAY,GAAG,SAAAA,CAAA,EAGhB;EAAA,IAHiBC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAI3C,MAAMG,WAAW,GAAGR,MAAM,CAAqB,IAAI,CAAC;EACpD,MAAM,CAACS,SAAS,EAAEC,YAAY,CAAC,GAAGT,QAAQ,CAACG,gBAAgB,CAAC;EAE5DF,SAAS,CAAC,MAAM;IACd,IAAI;MACF,IAAIM,WAAW,CAACG,OAAO,EAAE;QACvB,MAAMC,QAAQ,GAAG,IAAIC,oBAAoB,CAAEC,OAAO,IAAK;UACrDA,OAAO,CAACC,OAAO,CAACC,IAAA,IAAwB;YAAA,IAAvB;cAAEC;YAAe,CAAC,GAAAD,IAAA;YACjCN,YAAY,CAACO,cAAc,CAAC;UAC9B,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QACNL,QAAQ,CAACM,OAAO,CAACV,WAAW,CAACG,OAAO,CAAC;QACrC,OAAO,MAAM;UACXC,QAAQ,CAACO,UAAU,CAAC,CAAC;QACvB,CAAC;MACH;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV,MAAMC,gBAAgB,GAAGD,CAAC,YAAYE,cAAc;MACpD,IAAI,CAACD,gBAAgB,EAAE;QACrB,MAAMD,CAAC;MACT;MACA;IACF;IACA,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,CAACX,SAAS,EAAED,WAAW,CAAC;AACjC,CAAC;AAED,eAAeL,YAAY","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ export type Toggler = [
2
+ isOn: boolean,
3
+ setOn: () => void,
4
+ setOff: () => void,
5
+ toggle: () => void
6
+ ];
7
+ export interface ToggleHandlers {
8
+ handleToggleOn?: () => void;
9
+ handleToggleOff?: () => void;
10
+ handleToggle?: (newStatus: boolean) => void;
11
+ }
12
+ export default function useToggle(defaultIsOn?: boolean, handlers?: ToggleHandlers): Toggler;
@@ -0,0 +1,31 @@
1
+ // Note: this file was renamed from 'useToggle.tsx' to 'useToggleHook.tsx' to fix
2
+ // some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx
3
+ // files confused. Renaming this file allows us to keep the URLs of the docs site
4
+ // unchanged.
5
+ import { useState, useCallback } from 'react';
6
+ export default function useToggle() {
7
+ let defaultIsOn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
8
+ let handlers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
9
+ const {
10
+ handleToggleOn,
11
+ handleToggleOff,
12
+ handleToggle
13
+ } = handlers;
14
+ const [isOn, setIsOn] = useState(defaultIsOn);
15
+ const setOn = useCallback(() => {
16
+ setIsOn(true);
17
+ handleToggleOn?.();
18
+ handleToggle?.(true);
19
+ }, [handleToggleOn, handleToggle]);
20
+ const setOff = useCallback(() => {
21
+ setIsOn(false);
22
+ handleToggleOff?.();
23
+ handleToggle?.(false);
24
+ }, [handleToggleOff, handleToggle]);
25
+ const toggle = useCallback(() => {
26
+ const doToggle = isOn ? setOff : setOn;
27
+ doToggle();
28
+ }, [isOn, setOn, setOff]);
29
+ return [isOn, setOn, setOff, toggle];
30
+ }
31
+ //# sourceMappingURL=useToggleHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToggleHook.js","names":["useState","useCallback","useToggle","defaultIsOn","arguments","length","undefined","handlers","handleToggleOn","handleToggleOff","handleToggle","isOn","setIsOn","setOn","setOff","toggle","doToggle"],"sources":["../../src/hooks/useToggleHook.tsx"],"sourcesContent":["// Note: this file was renamed from 'useToggle.tsx' to 'useToggleHook.tsx' to fix\n// some bugs in the Gatsby www site, where Webpack was getting the .tsx and .mdx\n// files confused. Renaming this file allows us to keep the URLs of the docs site\n// unchanged.\nimport { useState, useCallback } from 'react';\n\nexport type Toggler = [\n isOn: boolean,\n setOn: () => void,\n setOff: () => void,\n toggle: () => void,\n];\n\nexport interface ToggleHandlers {\n handleToggleOn?: () => void;\n handleToggleOff?: () => void;\n handleToggle?: (newStatus: boolean) => void;\n}\n\nexport default function useToggle(defaultIsOn = false, handlers: ToggleHandlers = {}): Toggler {\n const { handleToggleOn, handleToggleOff, handleToggle } = handlers;\n const [isOn, setIsOn] = useState(defaultIsOn);\n\n const setOn = useCallback(() => {\n setIsOn(true);\n handleToggleOn?.();\n handleToggle?.(true);\n }, [handleToggleOn, handleToggle]);\n\n const setOff = useCallback(() => {\n setIsOn(false);\n handleToggleOff?.();\n handleToggle?.(false);\n }, [handleToggleOff, handleToggle]);\n\n const toggle = useCallback(() => {\n const doToggle = isOn ? setOff : setOn;\n doToggle();\n }, [isOn, setOn, setOff]);\n\n return [isOn, setOn, setOff, toggle];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AAe7C,eAAe,SAASC,SAASA,CAAA,EAA8D;EAAA,IAA7DC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IAAEG,QAAwB,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAClF,MAAM;IAAEI,cAAc;IAAEC,eAAe;IAAEC;EAAa,CAAC,GAAGH,QAAQ;EAClE,MAAM,CAACI,IAAI,EAAEC,OAAO,CAAC,GAAGZ,QAAQ,CAACG,WAAW,CAAC;EAE7C,MAAMU,KAAK,GAAGZ,WAAW,CAAC,MAAM;IAC9BW,OAAO,CAAC,IAAI,CAAC;IACbJ,cAAc,GAAG,CAAC;IAClBE,YAAY,GAAG,IAAI,CAAC;EACtB,CAAC,EAAE,CAACF,cAAc,EAAEE,YAAY,CAAC,CAAC;EAElC,MAAMI,MAAM,GAAGb,WAAW,CAAC,MAAM;IAC/BW,OAAO,CAAC,KAAK,CAAC;IACdH,eAAe,GAAG,CAAC;IACnBC,YAAY,GAAG,KAAK,CAAC;EACvB,CAAC,EAAE,CAACD,eAAe,EAAEC,YAAY,CAAC,CAAC;EAEnC,MAAMK,MAAM,GAAGd,WAAW,CAAC,MAAM;IAC/B,MAAMe,QAAQ,GAAGL,IAAI,GAAGG,MAAM,GAAGD,KAAK;IACtCG,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACL,IAAI,EAAEE,KAAK,EAAEC,MAAM,CAAC,CAAC;EAEzB,OAAO,CAACH,IAAI,EAAEE,KAAK,EAAEC,MAAM,EAAEC,MAAM,CAAC;AACtC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ export interface WindowSizeData {
2
+ width: number | undefined;
3
+ height: number | undefined;
4
+ }
5
+ declare function useWindowSize(): WindowSizeData;
6
+ export default useWindowSize;
@@ -29,4 +29,4 @@ function useWindowSize() {
29
29
  return windowSize;
30
30
  }
31
31
  export default useWindowSize;
32
- //# sourceMappingURL=useWindowSize.js.map
32
+ //# sourceMappingURL=useWindowSizeHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowSizeHook.js","names":["useState","useLayoutEffect","useWindowSize","windowSize","setWindowSize","width","undefined","height","handleResize","global","innerWidth","innerHeight","addEventListener","removeEventListener"],"sources":["../../src/hooks/useWindowSizeHook.tsx"],"sourcesContent":["import { useState, useLayoutEffect } from 'react';\n\nexport interface WindowSizeData {\n width: number | undefined;\n height: number | undefined;\n}\n\nfunction useWindowSize(): WindowSizeData {\n // Initialize state with undefined width/height so server and client renders match\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\n const [windowSize, setWindowSize] = useState<WindowSizeData>({\n width: undefined,\n height: undefined,\n });\n\n useLayoutEffect(() => {\n // Handler to call on window resize\n function handleResize() {\n // Set window width/height to state\n setWindowSize({\n width: global.innerWidth,\n height: global.innerHeight,\n });\n }\n\n // Add event listener\n global.addEventListener('resize', handleResize);\n\n // Call handler right away so state gets updated with initial window size\n handleResize();\n\n // Remove event listener on cleanup\n return () => global.removeEventListener('resize', handleResize);\n }, []); // Empty array ensures that effect is only run on mount\n\n return windowSize;\n}\n\nexport default useWindowSize;\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,eAAe,QAAQ,OAAO;AAOjD,SAASC,aAAaA,CAAA,EAAmB;EACvC;EACA;EACA,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGJ,QAAQ,CAAiB;IAC3DK,KAAK,EAAEC,SAAS;IAChBC,MAAM,EAAED;EACV,CAAC,CAAC;EAEFL,eAAe,CAAC,MAAM;IACpB;IACA,SAASO,YAAYA,CAAA,EAAG;MACtB;MACAJ,aAAa,CAAC;QACZC,KAAK,EAAEI,MAAM,CAACC,UAAU;QACxBH,MAAM,EAAEE,MAAM,CAACE;MACjB,CAAC,CAAC;IACJ;;IAEA;IACAF,MAAM,CAACG,gBAAgB,CAAC,QAAQ,EAAEJ,YAAY,CAAC;;IAE/C;IACAA,YAAY,CAAC,CAAC;;IAEd;IACA,OAAO,MAAMC,MAAM,CAACI,mBAAmB,CAAC,QAAQ,EAAEL,YAAY,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,OAAOL,UAAU;AACnB;AAEA,eAAeD,aAAa","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -40,6 +40,11 @@ export { default as ModalLayer } from './Modal/ModalLayer';
40
40
  export { default as Overlay, OverlayTrigger } from './Overlay';
41
41
  export { default as Portal } from './Modal/Portal';
42
42
  export { default as Tooltip } from './Tooltip';
43
+ export { default as useWindowSize, type WindowSizeData } from './hooks/useWindowSizeHook';
44
+ export { default as useToggle, type Toggler, type ToggleHandlers } from './hooks/useToggleHook';
45
+ export { default as useArrowKeyNavigation, type ArrowKeyNavProps } from './hooks/useArrowKeyNavigationHook';
46
+ export { default as useIndexOfLastVisibleChild } from './hooks/useIndexOfLastVisibleChildHook';
47
+ export { default as useIsVisible } from './hooks/useIsVisibleHook';
43
48
 
44
49
  // // // // // // // // // // // // // // // // // // // // // // // // // // //
45
50
  // Things that don't have types
@@ -187,11 +192,6 @@ export const Sticky: any; // from './Sticky';
187
192
  export const SelectableBox: any; // from './SelectableBox';
188
193
  export const breakpoints: any; // from './utils/breakpoints';
189
194
  export const Variant: any; // from './utils/constants';
190
- export const useWindowSize: any; // from './hooks/useWindowSize';
191
- export const useToggle: any; // from './hooks/useToggle';
192
- export const useArrowKeyNavigation: any; // from './hooks/useArrowKeyNavigation';
193
- export const useIndexOfLastVisibleChild: any; // from './hooks/useIndexOfLastVisibleChild';
194
- export const useIsVisible: any; // from './hooks/useIsVisible';
195
195
  export const
196
196
  OverflowScrollContext: any,
197
197
  OverflowScroll: any,