@procore/core-react 12.22.0 → 12.24.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 (237) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.styles.js +3 -3
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.styles.d.ts +8 -8
  5. package/dist/AvatarStack/AvatarStack.styles.js +7 -7
  6. package/dist/Badge/Badge.styles.js +2 -2
  7. package/dist/BadgePill/BadgePill.d.ts +3 -0
  8. package/dist/BadgePill/BadgePill.js +25 -0
  9. package/dist/BadgePill/BadgePill.js.map +1 -0
  10. package/dist/BadgePill/BadgePill.styles.d.ts +12 -0
  11. package/dist/BadgePill/BadgePill.styles.js +33 -0
  12. package/dist/BadgePill/BadgePill.styles.js.map +1 -0
  13. package/dist/BadgePill/BadgePill.types.d.ts +50 -0
  14. package/dist/BadgePill/BadgePill.types.js +2 -0
  15. package/dist/BadgePill/BadgePill.types.js.map +1 -0
  16. package/dist/BadgePill/index.d.ts +2 -0
  17. package/dist/BadgePill/index.js +2 -0
  18. package/dist/BadgePill/index.js.map +1 -0
  19. package/dist/Banner/Banner.styles.js +10 -10
  20. package/dist/Box/Box.styles.js +1 -1
  21. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  22. package/dist/Button/Button.styles.js +5 -5
  23. package/dist/Calendar/Calendar.styles.js +8 -8
  24. package/dist/Card/Card.styles.js +1 -1
  25. package/dist/Checkbox/Checkbox.styles.js +6 -6
  26. package/dist/Checkbox/CheckboxTooltip.js +1 -1
  27. package/dist/ContactItem/ContactItem.js +2 -0
  28. package/dist/ContactItem/ContactItem.js.map +1 -1
  29. package/dist/ContactItem/ContactItem.styles.js +5 -5
  30. package/dist/Content/Content.styles.js +2 -2
  31. package/dist/DateInput/DateInput.styles.js +6 -6
  32. package/dist/DetailPage/DetailPage.styles.js +7 -7
  33. package/dist/Dropdown/Dropdown.styles.js +3 -3
  34. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  35. package/dist/Dropzone/Dropzone.js +1 -1
  36. package/dist/Dropzone/Dropzone.styles.js +9 -9
  37. package/dist/EmptyState/EmptyState.styles.js +6 -6
  38. package/dist/Field/Field.styles.js +3 -3
  39. package/dist/FileList/FileList.styles.js +4 -4
  40. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  41. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  42. package/dist/FileSelect/FileSelect.styles.js +2 -2
  43. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  44. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  45. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  46. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  47. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  48. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  49. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  50. package/dist/FileToken/FileToken.styles.js +4 -4
  51. package/dist/FilterToken/FilterToken.styles.js +5 -5
  52. package/dist/FlexList/FlexList.styles.js +1 -1
  53. package/dist/Form/Form.styles.js +14 -14
  54. package/dist/Form/StyledFormikForm.styles.d.ts +2 -2
  55. package/dist/Form/StyledFormikForm.styles.js +2 -2
  56. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  57. package/dist/Grid/Grid.styles.js +2 -2
  58. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  59. package/dist/Input/Input.styles.js +1 -1
  60. package/dist/Link/Link.styles.js +1 -1
  61. package/dist/ListPage/ListPage.styles.js +8 -8
  62. package/dist/Loader/Loader.styles.js +2 -2
  63. package/dist/Loader/Loader.types.d.ts +3 -2
  64. package/dist/Loader/Loader.types.js.map +1 -1
  65. package/dist/Menu/Menu.js +2 -0
  66. package/dist/Menu/Menu.js.map +1 -1
  67. package/dist/MenuImperative/MenuImperative.styles.js +10 -10
  68. package/dist/Modal/Modal.styles.js +13 -13
  69. package/dist/MultiSelect/MultiSelect.styles.js +6 -6
  70. package/dist/NextMenu/NextMenu.styles.js +3 -3
  71. package/dist/Notation/Notation.js +1 -1
  72. package/dist/NumberInput/NumberInput.js +2 -0
  73. package/dist/NumberInput/NumberInput.js.map +1 -1
  74. package/dist/NumberInput/NumberInput.styles.js +7 -7
  75. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  76. package/dist/OverlayTrigger/OverlayTrigger.js +6 -2
  77. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  78. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +7 -2
  79. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  80. package/dist/PageLayout/PageLayout.styles.js +16 -16
  81. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
  82. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  83. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  84. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  85. package/dist/Pagination/Pagination.styles.js +5 -5
  86. package/dist/Panel/Panel.js +6 -4
  87. package/dist/Panel/Panel.js.map +1 -1
  88. package/dist/Panel/Panel.styles.js +11 -11
  89. package/dist/Pill/Pill.styles.js +2 -2
  90. package/dist/PillSelect/PillSelect.styles.js +4 -4
  91. package/dist/Popover/Popover.styles.js +2 -2
  92. package/dist/Portal/Portal.styles.js +1 -1
  93. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  94. package/dist/ProgressBar/ProgressBar.types.d.ts +1 -1
  95. package/dist/ProgressBar/ProgressBar.types.js.map +1 -1
  96. package/dist/RadioButton/RadioButton.styles.js +3 -3
  97. package/dist/Required/Required.styles.js +3 -3
  98. package/dist/Search/Search.styles.js +5 -5
  99. package/dist/Section/Section.styles.js +7 -7
  100. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  101. package/dist/Select/Select.styles.js +7 -7
  102. package/dist/Semantic/Semantic.styles.js +9 -9
  103. package/dist/Slider/Slider.styles.js +5 -5
  104. package/dist/Spinner/Spinner.js +14 -5
  105. package/dist/Spinner/Spinner.js.map +1 -1
  106. package/dist/Spinner/Spinner.styles.js +7 -7
  107. package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
  108. package/dist/SuperSelect/SuperSelect.js +1 -1
  109. package/dist/SuperSelect/SuperSelect.js.map +1 -1
  110. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  111. package/dist/SuperSelect/SuperSelect.styles.js +37 -37
  112. package/dist/Switch/Switch.styles.js +4 -4
  113. package/dist/Table/Table.styles.js +28 -28
  114. package/dist/TableShelf/TableShelf.styles.js +5 -5
  115. package/dist/Tabs/Tabs.styles.js +15 -15
  116. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  117. package/dist/TextArea/TextArea.styles.js +1 -1
  118. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  119. package/dist/Thumbnail/Thumbnail.hooks.d.ts +6 -6
  120. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  121. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  122. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  123. package/dist/Tile/Tile.styles.js +8 -8
  124. package/dist/Title/Title.styles.js +7 -7
  125. package/dist/Toast/Toast.styles.js +3 -3
  126. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  127. package/dist/Token/Token.styles.js +3 -3
  128. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  129. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  130. package/dist/Tooltip/Tooltip.styles.js +2 -2
  131. package/dist/Tree/Tree.styles.js +9 -9
  132. package/dist/Typeahead/Typeahead.styles.js +3 -3
  133. package/dist/Typography/Typography.styles.js +1 -1
  134. package/dist/Typography/Typography.table.story.js +2 -2
  135. package/dist/_hooks/ClickOutside.js +19 -5
  136. package/dist/_hooks/ClickOutside.js.map +1 -1
  137. package/dist/_hooks/I18n.d.ts +92 -9
  138. package/dist/_hooks/I18n.js +63 -28
  139. package/dist/_hooks/I18n.js.map +1 -1
  140. package/dist/_locales/de-DE.json +4 -1
  141. package/dist/_locales/en-AU.json +3 -0
  142. package/dist/_locales/en-CA.json +3 -0
  143. package/dist/_locales/en-GB.json +3 -0
  144. package/dist/_locales/en.json +3 -0
  145. package/dist/_locales/es-ES.json +4 -1
  146. package/dist/_locales/es.json +3 -0
  147. package/dist/_locales/fr-CA.json +6 -3
  148. package/dist/_locales/fr-FR.json +4 -1
  149. package/dist/_locales/is-IS.json +3 -0
  150. package/dist/_locales/it-IT.json +3 -0
  151. package/dist/_locales/ja-JP.json +3 -0
  152. package/dist/_locales/pl-PL.json +3 -0
  153. package/dist/_locales/pseudo.json +3 -0
  154. package/dist/_locales/pt-BR.json +3 -0
  155. package/dist/_locales/th-TH.json +3 -0
  156. package/dist/_locales/zh-SG.json +3 -0
  157. package/dist/_locales/zh-TW.json +375 -0
  158. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +3 -3
  159. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  160. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +24 -24
  161. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  162. package/dist/_typedoc/Banner/Banner.types.json +13 -13
  163. package/dist/_typedoc/Box/Box.types.json +68 -68
  164. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  165. package/dist/_typedoc/Button/Button.types.json +13 -13
  166. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  167. package/dist/_typedoc/Card/Card.types.json +6 -6
  168. package/dist/_typedoc/Checkbox/Checkbox.types.json +9 -9
  169. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  170. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  171. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  172. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  173. package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
  174. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +30 -30
  175. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  176. package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
  177. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  178. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  179. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  180. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  181. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  182. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  183. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  184. package/dist/_typedoc/Form/Form.types.json +741 -741
  185. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  186. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  187. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +52 -52
  188. package/dist/_typedoc/Input/Input.types.json +2 -2
  189. package/dist/_typedoc/Link/Link.types.json +4 -4
  190. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  191. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  192. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +74 -74
  193. package/dist/_typedoc/Modal/Modal.types.json +46 -46
  194. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +31 -31
  195. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  196. package/dist/_typedoc/NumberInput/NumberInput.types.json +37 -37
  197. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +41 -31
  198. package/dist/_typedoc/PageLayout/PageLayout.types.json +29 -29
  199. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  200. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  201. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  202. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  203. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  204. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +16 -6
  205. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  206. package/dist/_typedoc/Required/Required.types.json +5 -5
  207. package/dist/_typedoc/Search/Search.types.json +18 -18
  208. package/dist/_typedoc/Section/Section.types.json +15 -15
  209. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  210. package/dist/_typedoc/Select/Select.types.json +60 -60
  211. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  212. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  213. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  214. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +12 -12
  215. package/dist/_typedoc/Switch/Switch.types.json +3 -3
  216. package/dist/_typedoc/Table/Table.types.json +101 -101
  217. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  218. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  219. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  220. package/dist/_typedoc/TextEditor/TextEditor.types.json +9 -9
  221. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  222. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  223. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +42 -42
  224. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +28 -28
  225. package/dist/_typedoc/Tile/Tile.types.json +30 -30
  226. package/dist/_typedoc/Title/Title.types.json +1 -1
  227. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  228. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  229. package/dist/_typedoc/Token/Token.types.json +4 -4
  230. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  231. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +7 -7
  232. package/dist/_typedoc/Tooltip/Tooltip.types.json +13 -13
  233. package/dist/_typedoc/Tree/Tree.types.json +86 -86
  234. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  235. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  236. package/dist/_typedoc/_utils/types.json +3 -3
  237. package/package.json +82 -81
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","createRef","selectItem","useCallback","selection","onKeyDown","key","increment","preventDefault","decrement","current","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","tabIndex","Group","_ref3","_ref3$clickable","clickable","item","_excluded2","$clickable","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport type { DivAttributes } from '../_utils/types'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuGroupProps\n>(function Group({ children, clickable = false, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n $clickable={clickable}\n >\n {children}\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const { highlighted, listNavigation, multiple, selectItem } =\n useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","createRef","selectItem","useCallback","selection","onKeyDown","key","increment","preventDefault","decrement","current","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","role","tabIndex","Group","_ref3","_ref3$clickable","clickable","item","_excluded2","$clickable","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport type { DivAttributes } from '../_utils/types'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} role=\"menu\" tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuGroupProps\n>(function Group({ children, clickable = false, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n $clickable={clickable}\n >\n {children}\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const { highlighted, listNavigation, multiple, selectItem } =\n useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n role=\"menuitem\"\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n DivAttributes & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":"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"}
@@ -11,15 +11,15 @@ var optionMinHeight = 32;
11
11
  // Do not merge with StyledMenu, needed for max-height working in IE
12
12
  export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
13
13
  displayName: "StyledWrapper",
14
- componentId: "core-12_22_0__sc-z984sz-0"
14
+ componentId: "core-12_24_0__sc-z984sz-0"
15
15
  })(["border-radius:inherit;display:flex;max-height:inherit;min-width:inherit;outline:none;width:inherit;"]);
16
16
  export var StyledMenu = /*#__PURE__*/styled.div.withConfig({
17
17
  displayName: "StyledMenu",
18
- componentId: "core-12_22_0__sc-z984sz-1"
18
+ componentId: "core-12_24_0__sc-z984sz-1"
19
19
  })(["border-radius:inherit;display:flex;flex-direction:column;outline:0;width:100%;"]);
20
20
  export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
21
21
  displayName: "StyledOptions",
22
- componentId: "core-12_22_0__sc-z984sz-2"
22
+ componentId: "core-12_24_0__sc-z984sz-2"
23
23
  })(["flex-basis:auto;flex-grow:1;flex-shrink:1;min-height:", "px;", ";padding:", "px 0;position:relative;&:focus-visible{", " margin:-1px;}"], optionMinHeight, function (_ref) {
24
24
  var _ref$$scrollable = _ref.$scrollable,
25
25
  $scrollable = _ref$$scrollable === void 0 ? true : _ref$$scrollable;
@@ -27,26 +27,26 @@ export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
27
27
  }, spacing.sm, getFocus());
28
28
  export var StyledGrip = /*#__PURE__*/styled.div.withConfig({
29
29
  displayName: "StyledGrip",
30
- componentId: "core-12_22_0__sc-z984sz-3"
30
+ componentId: "core-12_24_0__sc-z984sz-3"
31
31
  })(["padding:0 2px;height:24px;visibility:hidden;"]);
32
32
  export var StyledHeader = /*#__PURE__*/styled.div.withConfig({
33
33
  displayName: "StyledHeader",
34
- componentId: "core-12_22_0__sc-z984sz-4"
34
+ componentId: "core-12_24_0__sc-z984sz-4"
35
35
  })([""]);
36
36
  export var StyledSearch = /*#__PURE__*/styled.div.withConfig({
37
37
  displayName: "StyledSearch",
38
- componentId: "core-12_22_0__sc-z984sz-5"
38
+ componentId: "core-12_24_0__sc-z984sz-5"
39
39
  })(["padding:", "px ", "px ", "px;", " > *{pointer-events:none;}"], spacing.lg, spacing.lg, spacing.sm, StyledButton);
40
40
  export var StyledGroup = /*#__PURE__*/styled.div.withConfig({
41
41
  displayName: "StyledGroup",
42
- componentId: "core-12_22_0__sc-z984sz-6"
42
+ componentId: "core-12_24_0__sc-z984sz-6"
43
43
  })(["", " color:", ";cursor:", ";font-weight:", ";padding:", "px ", "px;&:not(:first-child){padding-top:", "px;}"], getTypographyIntent('body'), colors.gray15, function (_ref2) {
44
44
  var $clickable = _ref2.$clickable;
45
45
  return $clickable ? 'pointer' : 'default';
46
46
  }, typographyWeights.semibold, spacing.xs, spacing.lg, spacing.md + spacing.xs);
47
47
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
48
48
  displayName: "StyledItem",
49
- componentId: "core-12_22_0__sc-z984sz-7"
49
+ componentId: "core-12_24_0__sc-z984sz-7"
50
50
  })(["", ";", " cursor:pointer;list-style-type:none;padding:", "px ", "px;a{color:", ";display:block;margin:-", "px -", "px;padding:", "px ", "px;text-decoration:none;&:hover{color:", ";text-decoration:none;}}&[data-highlighted='true']{background-color:", ";}", " &:hover,&:active{", "{visibility:visible;}}", "{color:inherit;cursor:pointer;}", " ", " ", ""], getTypographyIntent('body'), function (_ref3) {
51
51
  var as = _ref3.as;
52
52
  return as === 'a' && css(["display:block;text-decoration:none;"]);
@@ -75,10 +75,10 @@ export var StyledItem = /*#__PURE__*/styled.div.withConfig({
75
75
  });
76
76
  export var StyledDroppable = /*#__PURE__*/styled.div.withConfig({
77
77
  displayName: "StyledDroppable",
78
- componentId: "core-12_22_0__sc-z984sz-8"
78
+ componentId: "core-12_24_0__sc-z984sz-8"
79
79
  })(["", ",", "{padding-left:28px;}"], StyledGroup, StyledItem);
80
80
  export var StyledFooter = /*#__PURE__*/styled(Box).withConfig({
81
81
  displayName: "StyledFooter",
82
- componentId: "core-12_22_0__sc-z984sz-9"
82
+ componentId: "core-12_24_0__sc-z984sz-9"
83
83
  })(["border-top:1px solid ", ";border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;"], colors.gray85);
84
84
  //# sourceMappingURL=MenuImperative.styles.js.map
@@ -31,15 +31,15 @@ var screenWidthPixelBreakpoints = {
31
31
  };
32
32
  export var StyledModal = /*#__PURE__*/styled.div.withConfig({
33
33
  displayName: "StyledModal",
34
- componentId: "core-12_22_0__sc-1ijdug2-0"
34
+ componentId: "core-12_24_0__sc-1ijdug2-0"
35
35
  })(["display:flex;height:100vh;position:absolute;opacity:0;transition:0.3s opacity ease;width:100vw;z-index:0;pointer-events:none;&.", "{opacity:1;pointer-events:auto;}&.", "{opacity:0;pointer-events:none;}"], fadeInClassName, fadeOutClassName);
36
36
  export var StyledModalButtons = /*#__PURE__*/styled.div.withConfig({
37
37
  displayName: "StyledModalButtons",
38
- componentId: "core-12_22_0__sc-1ijdug2-1"
38
+ componentId: "core-12_24_0__sc-1ijdug2-1"
39
39
  })(["display:flex;flex:0 0 auto;margin-left:", "px;> * + *{margin-left:", "px;}"], spacing.lg, spacing.sm);
40
40
  export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
41
41
  displayName: "StyledModalContainer",
42
- componentId: "core-12_22_0__sc-1ijdug2-2"
42
+ componentId: "core-12_24_0__sc-1ijdug2-2"
43
43
  })(["display:flex;flex-direction:row;position:absolute;z-index:2;", " ", " ", ""], function (_ref) {
44
44
  var $compact = _ref.$compact;
45
45
  if (!$compact) {
@@ -63,11 +63,11 @@ export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
63
63
  });
64
64
  export var StyledModalFooter = /*#__PURE__*/styled.div.withConfig({
65
65
  displayName: "StyledModalFooter",
66
- componentId: "core-12_22_0__sc-1ijdug2-3"
66
+ componentId: "core-12_24_0__sc-1ijdug2-3"
67
67
  })(["align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;padding:", "px ", "px ", "px;"], spacing.xl, spacing.xxl, spacing.xxl);
68
68
  export var StyledModalBody = /*#__PURE__*/styled.div.withConfig({
69
69
  displayName: "StyledModalBody",
70
- componentId: "core-12_22_0__sc-1ijdug2-4"
70
+ componentId: "core-12_24_0__sc-1ijdug2-4"
71
71
  })(["", " box-sizing:border-box;color:", ";display:flex;flex-direction:column;overflow:auto;", " ", " > ", "{padding-left:0;padding-right:0;&:first-child > ", "{padding-top:0;}}", ""], getTypographyIntent('body'), colors.gray15, function (_ref4) {
72
72
  var $noSideSpacing = _ref4.$noSideSpacing;
73
73
  return css(["padding:", "px ", "px;"], spacing.xl, $noSideSpacing ? 0 : spacing.xxl);
@@ -84,7 +84,7 @@ export var StyledModalBody = /*#__PURE__*/styled.div.withConfig({
84
84
  });
85
85
  export var StyledModalContent = /*#__PURE__*/styled.div.withConfig({
86
86
  displayName: "StyledModalContent",
87
- componentId: "core-12_22_0__sc-1ijdug2-5"
87
+ componentId: "core-12_24_0__sc-1ijdug2-5"
88
88
  })(["display:flex;flex-direction:column;max-height:90vh;overflow:hidden;width:100%;", ""], function (_ref7) {
89
89
  var _ref7$$compact = _ref7.$compact,
90
90
  $compact = _ref7$$compact === void 0 ? false : _ref7$$compact;
@@ -95,11 +95,11 @@ export var StyledModalContent = /*#__PURE__*/styled.div.withConfig({
95
95
  });
96
96
  export var StyledModalFooterNotation = /*#__PURE__*/styled(Typography).withConfig({
97
97
  displayName: "StyledModalFooterNotation",
98
- componentId: "core-12_22_0__sc-1ijdug2-6"
98
+ componentId: "core-12_24_0__sc-1ijdug2-6"
99
99
  })(["flex-grow:1;"]);
100
100
  export var StyledModalHeader = /*#__PURE__*/styled.div.withConfig({
101
101
  displayName: "StyledModalHeader",
102
- componentId: "core-12_22_0__sc-1ijdug2-7"
102
+ componentId: "core-12_24_0__sc-1ijdug2-7"
103
103
  })(["align-items:flex-start;color:", ";display:flex;flex:0 0 auto;position:relative;", " ", ""], colors.gray10, function (_ref8) {
104
104
  var $compact = _ref8.$compact,
105
105
  $isBodyScrolled = _ref8.$isBodyScrolled;
@@ -117,7 +117,7 @@ export var StyledModalHeader = /*#__PURE__*/styled.div.withConfig({
117
117
  });
118
118
  export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
119
119
  displayName: "StyledModalHeading",
120
- componentId: "core-12_22_0__sc-1ijdug2-8"
120
+ componentId: "core-12_24_0__sc-1ijdug2-8"
121
121
  })(["", " align-items:center;display:flex;flex:1 1 auto;min-height:36px;padding-right:", "px;", ""], function (_ref0) {
122
122
  var $compact = _ref0.$compact;
123
123
  return getTypographyIntent($compact ? 'h3' : 'h2');
@@ -133,18 +133,18 @@ export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
133
133
  });
134
134
  export var StyledModalCancel = /*#__PURE__*/styled.div.withConfig({
135
135
  displayName: "StyledModalCancel",
136
- componentId: "core-12_22_0__sc-1ijdug2-9"
136
+ componentId: "core-12_24_0__sc-1ijdug2-9"
137
137
  })(["flex:0 0 auto;"]);
138
138
  export var StyledModalScrim = /*#__PURE__*/styled.div.withConfig({
139
139
  displayName: "StyledModalScrim",
140
- componentId: "core-12_22_0__sc-1ijdug2-10"
140
+ componentId: "core-12_24_0__sc-1ijdug2-10"
141
141
  })(["background:hsla(200,8%,10%,0.6);height:100vh;left:0;position:absolute;top:0;width:100vw;z-index:1;"]);
142
142
  export var StyledModalWarningIcon = /*#__PURE__*/styled(Warning).withConfig({
143
143
  displayName: "StyledModalWarningIcon",
144
- componentId: "core-12_22_0__sc-1ijdug2-11"
144
+ componentId: "core-12_24_0__sc-1ijdug2-11"
145
145
  })(["color:", ";margin-right:", "px;"], colors.yellow40, spacing.sm);
146
146
  export var StyledModalFooterSummary = /*#__PURE__*/styled.div.withConfig({
147
147
  displayName: "StyledModalFooterSummary",
148
- componentId: "core-12_22_0__sc-1ijdug2-12"
148
+ componentId: "core-12_24_0__sc-1ijdug2-12"
149
149
  })(["", " border-top:1px solid ", ";border-bottom:1px solid ", ";padding:", "px ", "px;color:", ";font-style:italic;background-color:", ";margin:-", "px -", "px ", "px -", "px;flex:1 1 100%;"], getTypographyIntent('small'), colors.gray85, colors.gray85, spacing.md, spacing.xxl, colors.gray15, colors.gray98, spacing.xl, spacing.xxl, spacing.xl, spacing.xxl);
150
150
  //# sourceMappingURL=Modal.styles.js.map
@@ -6,26 +6,26 @@ import { getFocus } from '../_styles/mixins';
6
6
  import { spacing } from '../_styles/spacing';
7
7
  export var StyledMultiSelectValues = /*#__PURE__*/styled.div.withConfig({
8
8
  displayName: "StyledMultiSelectValues",
9
- componentId: "core-12_22_0__sc-s9ym9q-0"
9
+ componentId: "core-12_24_0__sc-s9ym9q-0"
10
10
  })(["display:flex;flex-wrap:wrap;margin-bottom:2px;margin-left:", "px;margin-right:", "px;margin-top:2px;min-width:0;width:100%;"], spacing.md, spacing.xs);
11
11
  export var StyledMultiSelectToken = /*#__PURE__*/styled.div.withConfig({
12
12
  displayName: "StyledMultiSelectToken",
13
- componentId: "core-12_22_0__sc-s9ym9q-1"
13
+ componentId: "core-12_24_0__sc-s9ym9q-1"
14
14
  })(["margin-bottom:2px;margin-right:", "px;margin-top:2px;flex:0 1 auto;> div{max-width:178px;width:100%;}"], spacing.xs);
15
15
  export var StyledMultiSelectSearchInput = /*#__PURE__*/styled.input.withConfig({
16
16
  displayName: "StyledMultiSelectSearchInput",
17
- componentId: "core-12_22_0__sc-s9ym9q-2"
17
+ componentId: "core-12_24_0__sc-s9ym9q-2"
18
18
  })(["background-color:transparent;border-width:0;font-family:inherit;padding:0;height:24px;width:100%;", " ", " &::-ms-clear{display:none;}&:focus{box-shadow:none;outline:none;}&::placeholder{color:", ";}"], getTypographyIntent('body'), function (_ref) {
19
19
  var $isNavigatingTokens = _ref.$isNavigatingTokens;
20
20
  return $isNavigatingTokens && css(["color:transparent;"]);
21
21
  }, colors.gray45);
22
22
  export var StyledMultiSelectSearch = /*#__PURE__*/styled.div.withConfig({
23
23
  displayName: "StyledMultiSelectSearch",
24
- componentId: "core-12_22_0__sc-s9ym9q-3"
24
+ componentId: "core-12_24_0__sc-s9ym9q-3"
25
25
  })(["margin-bottom:2px;margin-right:", "px;margin-top:2px;flex:1;max-width:100%;min-width:24px;"], spacing.xs);
26
26
  export var StyledMultiSelectSearchIcon = /*#__PURE__*/styled.div.withConfig({
27
27
  displayName: "StyledMultiSelectSearchIcon",
28
- componentId: "core-12_22_0__sc-s9ym9q-4"
28
+ componentId: "core-12_24_0__sc-s9ym9q-4"
29
29
  })(["align-items:center;align-self:flex-start;display:flex;height:34px;justify-content:flex-end;margin-left:", "px;margin-right:", "px;min-width:40px;width:40px;"], spacing.xs, spacing.md);
30
30
  export var StyledMultiSelectClearIcon = StyledSelectClearIcon;
31
31
  export var StyledMultiSelectArrowContainer = StyledSelectArrowContainer;
@@ -33,7 +33,7 @@ export var StyledMultiSelectArrow = StyledSelectArrow;
33
33
  export var StyledMultiSelectMenu = StyledSelectMenu;
34
34
  export var StyledMultiSelectButton = /*#__PURE__*/styled(StyledSelectButton).withConfig({
35
35
  displayName: "StyledMultiSelectButton",
36
- componentId: "core-12_22_0__sc-s9ym9q-5"
36
+ componentId: "core-12_24_0__sc-s9ym9q-5"
37
37
  })(["height:auto;padding:0;white-space:normal;&:focus-within{", "}", ""], getFocus(), function (_ref2) {
38
38
  var $emptyValue = _ref2.$emptyValue;
39
39
  return $emptyValue && css(["", "{cursor:pointer;}"], StyledMultiSelectSearchInput);
@@ -6,14 +6,14 @@ export var optionMinHeight = 32;
6
6
  export var defaultMenuHeight = 64;
7
7
  export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
8
8
  displayName: "StyledOptions",
9
- componentId: "core-12_22_0__sc-3o6zya-0"
9
+ componentId: "core-12_24_0__sc-3o6zya-0"
10
10
  })([""]);
11
11
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
12
12
  displayName: "StyledItem",
13
- componentId: "core-12_22_0__sc-3o6zya-1"
13
+ componentId: "core-12_24_0__sc-3o6zya-1"
14
14
  })(["", ";padding:", "px ", "px;cursor:pointer;list-style-type:none;"], getTypographyIntent('body'), spacing.xs, spacing.md);
15
15
  export var StyledGroup = /*#__PURE__*/styled.div.withConfig({
16
16
  displayName: "StyledGroup",
17
- componentId: "core-12_22_0__sc-3o6zya-2"
17
+ componentId: "core-12_24_0__sc-3o6zya-2"
18
18
  })(["", ";padding:", "px ", "px ", "px;font-weight:", ";background:white;list-style-type:none;"], getTypographyIntent('body'), spacing.md, spacing.md, spacing.xs, typographyWeights.semibold);
19
19
  //# sourceMappingURL=NextMenu.styles.js.map
@@ -14,7 +14,7 @@ var variantColorMap = {
14
14
  };
15
15
  var StyledNotation = /*#__PURE__*/styled.i.withConfig({
16
16
  displayName: "StyledNotation",
17
- componentId: "core-12_22_0__sc-160q1m6-0"
17
+ componentId: "core-12_24_0__sc-160q1m6-0"
18
18
  })(["", " color:", ";font-style:italic;"], getTypographyIntent('small'), function (_ref) {
19
19
  var $variant = _ref.$variant;
20
20
  return $variant ? colors[variantColorMap[$variant]] : colors.gray15;
@@ -394,6 +394,8 @@ export var NumberInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
394
394
  onChange: internalOnChange,
395
395
  onBlur: internalOnBlur,
396
396
  inputMode: "numeric",
397
+ type: hasIncrementer ? 'number' : undefined,
398
+ lang: contextLocale,
397
399
  readOnly: readOnly,
398
400
  style: _objectSpread(_objectSpread({}, style), {
399
401
  paddingLeft: "".concat(inputPadding.left, "px"),
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":["formatCurrencyToParts","findIndex","React","useI18nContext","spacing","mergeRefs","defaultCurrencyFillDecimalScale","defaultCurrencyInputPrefix","useNumberFormat","usePrevious","addonRootFontFamily","addonRootFontSize","addonRootPadding","inputDefaultXPadding","StyledIncrementerButton","StyledIncrementerWrapper","StyledInput","StyledPrefix","StyledSuffix","StyledWrapper","backspaceKey","commaKey","controlKey","copyKey","defaultLocale","deleteKey","emptyString","format","getNewCursorPosition","getSeparators","highlightAllKey","identicalLocales","identifyPressedKey","maxDigitLength","metaKeyIdentifier","minus","numericKeypadKey","periodKey","prepareValueToFormatting","toFixed","unformat","noop","PlusIcon","createElement","width","height","viewBox","xmlns","d","MinusIcon","NumberInput","forwardRef","_ref","ref","_ref$decimalScale","decimalScale","defaultValue","_ref$disabled","disabled","_ref$error","error","_ref$fillDecimalScale","fillDecimalScale","_onChange","onChange","_ref$onKeyDown","onKeyDown","_onKeyDown","_ref$onBlur","onBlur","_onBlur","_ref$prefix","prefix","readOnly","_ref$step","step","style","_ref$suffix","suffix","value","qa","props","_objectWithoutProperties","_excluded","I18n","contextLocale","locale","inputRef","useRef","_useNumberFormat","verifiedDecimalScale","fillDecimalScaleOnBlur","fixedDecimalScale","formatValue","getValueLengthInfo","isControlled","undefined","isControlledWithoutOnChangeHandlerAndReadOnlyAttribute","hasIncrementer","_React$useMemo","useMemo","group","decimal","decimalSeparatorKey","inputPadding","fontContext","concat","element","document","context","getContext","font","extraBasePadding","suffixPadding","Math","ceil","measureText","getRightPadding","xl","left","right","getValueChange","useCallback","_unformat","parsedNumber","isNaN","externalOnChange","_React$useState","useState","_React$useState2","_slicedToArray","inputValue","setInputValue","_React$useState3","_React$useState4","prevValue","setPrevValue","_React$useState5","selectionStart","selectionEnd","selection","_React$useState6","prevCursorPosition","setPrevCursorPosition","_React$useState7","_React$useState8","pressedKey","setPressedKey","prevLocale","useLayoutEffect","formattedValue","console","useEffect","prev","newValue","_inputRef$current","displayValue","current","lastChar","length","lastCharIsPending","includes","decimals","split","lastDecimalIsZero","onlyMinusDisplayed","getNewValueAndCursorPosition","preparedValue","newCursorPosition","adjustCursor","newPosition","_inputRef$current2","setSelectionRange","setTimeout","_inputRef$current3","makeStep","down","arguments","getSignificantPrecision","fraction","reversedFraction","reverse","indexOfLastSignificantFractionDigit","i","slice","_unformat2","_unformat3","stepFraction","prevValuePrecision","prevValueSignificantPrecision","rawStepPrecision","rawStepPrecisionExceedsDecimalScale","stepPrecision","warn","diff","precision","max","significantPrecision","calculated","_getValueLengthInfo","isSafeLength","isSafeIntegerLength","rejectStepByLengthLimit","formatted","internalOnKeyDown","e","ctrlKey","metaKey","key","_e$target","target","preserveDecimalSeparator","decimalBackspaced","decimalDeleted","nonReplacingKeys","decimalReplacedAsSelection","preserveDecimal","base","shift","cursorPosition","preventDefault","isDecimalSeparatorPreserved","_getValueLengthInfo2","safeIntegerLength","integerLength","fractionLength","decimalSeparatorCanNotBeRemoved","handleIncrementer","internalOnChange","inputType","nativeEvent","_getNewValueAndCursor","internalOnBlur","_unformat4","integer","shouldValueBeCleared","shouldIntegerPartBeFilled","isDecimalSeparatorRedundant","isDecimalScaleNotFilled","shouldDecimalScaleBeFilled","getNewValue","numberOfZerosToPad","Array","from","_","join","replace","RegExp","$hasIncrementer","wrapper","_extends","inputMode","_objectSpread","paddingLeft","paddingRight","$withIncrementer","type","tabIndex","increment","onClick","decrement","displayName","getCurrencyProps","_decimalScale","symbol","currencyIsoCode","currencyDisplay","_parts$find","_parts$find2","currencyOptions","parts","formatterDecimalScale","find","part","placement","object","currencyIsoSymbol","toString","currencyProps","CurrencyInput","_ref2","_ref2$fillDecimalScal","_ref2$prefix","_excluded2"],"sources":["../../src/NumberInput/NumberInput.tsx"],"sourcesContent":["import type {\n CurrencyDisplay,\n CurrencyOptions,\n} from '@procore/globalization-toolkit'\nimport { formatCurrencyToParts } from '@procore/globalization-toolkit'\nimport { findIndex } from 'ramda'\nimport React from 'react'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { spacing } from '../_styles/spacing'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport {\n defaultCurrencyFillDecimalScale,\n defaultCurrencyInputPrefix,\n} from './NumberInput.constants'\nimport { useNumberFormat, usePrevious } from './NumberInput.hooks'\nimport {\n addonRootFontFamily,\n addonRootFontSize,\n addonRootPadding,\n inputDefaultXPadding,\n StyledIncrementerButton,\n StyledIncrementerWrapper,\n StyledInput,\n StyledPrefix,\n StyledSuffix,\n StyledWrapper,\n} from './NumberInput.styles'\nimport type {\n CurrencyInputProps,\n CurrencyProps,\n CursorPosition,\n NumberInputProps,\n PressedKey,\n} from './NumberInput.types'\nimport {\n backspaceKey,\n commaKey,\n controlKey,\n copyKey,\n defaultLocale,\n deleteKey,\n emptyString,\n format,\n getNewCursorPosition,\n getSeparators,\n highlightAllKey,\n identicalLocales,\n identifyPressedKey,\n maxDigitLength,\n metaKeyIdentifier,\n minus,\n numericKeypadKey,\n periodKey,\n prepareValueToFormatting,\n toFixed,\n unformat,\n} from './NumberInput.utils'\n\nfunction noop() {}\n\nconst PlusIcon = () => (\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.5 0H3.5V3.5H0V4.5H3.5V8H4.5V4.5H8V3.5H4.5V0Z\" />\n </svg>\n)\n\nconst MinusIcon = () => (\n <svg\n width=\"8\"\n height=\"2\"\n viewBox=\"0 0 8 2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.5 0.5H3.5H0V1.5H3.5H4.5H8V0.5H4.5Z\" />\n </svg>\n)\n\n/**\n\n The number input allows users to add numbers to a given form or table.\n The currency input will be used for data with a monetary value.\n Both components allow characters 0-9, periods, and commas. In order to avoid\n the loss of precision, the number length is limited by 15 digits.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-numberinput--demo-number-input)\n\n @see [Design Guidelines](https://design.procore.com/number-and-currency-input)\n\n */\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n decimalScale = true,\n defaultValue,\n disabled = false,\n error = false,\n fillDecimalScale = 'none',\n onChange: _onChange,\n onKeyDown: _onKeyDown = noop,\n onBlur: _onBlur = noop,\n prefix = emptyString,\n readOnly,\n step = 0,\n style,\n suffix = emptyString,\n value,\n qa,\n ...props\n },\n ref\n ) => {\n const I18n = useI18nContext()\n const contextLocale = I18n.locale || defaultLocale\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const {\n decimalScale: verifiedDecimalScale,\n fillDecimalScaleOnBlur,\n fixedDecimalScale,\n formatValue,\n getValueLengthInfo,\n locale,\n } = useNumberFormat({\n decimalScale,\n fillDecimalScale,\n locale: contextLocale,\n })\n\n const isControlled = value !== undefined\n const isControlledWithoutOnChangeHandlerAndReadOnlyAttribute =\n isControlled && !_onChange && !readOnly\n const hasIncrementer = step > 0 && !readOnly\n\n const { group, decimal } = React.useMemo(\n () => getSeparators(locale),\n [locale]\n )\n const decimalSeparatorKey = React.useMemo(() => {\n return decimal === periodKey ? periodKey : commaKey\n }, [decimal])\n\n const inputPadding = React.useMemo((): {\n left: number\n right: number | null\n } => {\n const fontContext = `${addonRootFontSize} \"${addonRootFontFamily}\"`\n\n if (prefix || suffix) {\n const element = document.createElement('canvas')\n const context = element?.getContext('2d')\n\n if (context) {\n context.font = fontContext\n\n const extraBasePadding = inputDefaultXPadding + addonRootPadding\n\n const suffixPadding =\n extraBasePadding + Math.ceil(context.measureText(suffix).width)\n\n const getRightPadding = () => {\n if (hasIncrementer && suffix) {\n return suffixPadding + spacing.xl\n }\n if (suffix) {\n return suffixPadding\n }\n return null\n }\n\n return {\n left: prefix\n ? extraBasePadding + Math.ceil(context.measureText(prefix).width)\n : inputDefaultXPadding,\n right: getRightPadding(),\n }\n }\n }\n\n return {\n left: inputDefaultXPadding,\n right: null,\n }\n }, [prefix, suffix, hasIncrementer])\n\n const getValueChange = React.useCallback(\n (value: string) => {\n const { parsedNumber } = unformat(locale, value)\n return {\n value,\n parsedNumber: isNaN(parsedNumber) ? null : parsedNumber,\n }\n },\n [locale]\n )\n\n const externalOnChange = React.useCallback(\n (value: string) => _onChange && _onChange(getValueChange(value)),\n [_onChange, getValueChange]\n )\n\n const [inputValue, setInputValue] = React.useState(\n formatValue(defaultValue)\n )\n const [prevValue, setPrevValue] = React.useState(\n isControlled ? formatValue(value) : inputValue\n )\n const [prevCursorPosition, setPrevCursorPosition] =\n React.useState<CursorPosition>({\n selectionStart: 0,\n selectionEnd: 0,\n selection: emptyString,\n })\n const [pressedKey, setPressedKey] = React.useState()\n const prevLocale = usePrevious(locale)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(() => {\n const formattedValue = formatValue(value)\n if (isControlled && inputValue !== formattedValue) {\n setInputValue(formattedValue)\n }\n\n if (isControlledWithoutOnChangeHandlerAndReadOnlyAttribute) {\n console.error(\n `Warning: Failed prop type: You provided a \\`value\\` prop to a form field without an \\`onChange\\` handler.\n This will render a read-only field. If the field should be mutable use \\`defaultValue\\`.\n Otherwise, set either \\`onChange\\` or \\`readOnly\\`.`\n )\n }\n }, [value])\n\n React.useEffect(() => {\n if (prevLocale && !identicalLocales(prevLocale, locale)) {\n setInputValue((prev) => {\n const newValue = formatValue(unformat(prevLocale, prev).parsedNumber)\n externalOnChange(newValue)\n return newValue\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [prevLocale, formatValue])\n\n React.useLayoutEffect(() => {\n const displayValue = inputRef.current?.value || ''\n if (!_onChange || !displayValue) {\n return\n }\n const formattedValue = formatValue(value)\n\n if (displayValue !== formattedValue) {\n const lastChar = displayValue[displayValue.length - 1]\n const lastCharIsPending = [periodKey, commaKey].includes(lastChar)\n\n const decimals = displayValue.split(decimal)[1] || ''\n const lastDecimalIsZero =\n decimals && decimals[decimals.length - 1] === '0'\n\n const onlyMinusDisplayed = displayValue === minus\n\n // a client state and display mismatch is only valid when\n if (lastCharIsPending || lastDecimalIsZero || onlyMinusDisplayed) {\n return\n }\n\n // otherwise sync display with client state\n setInputValue(formattedValue)\n }\n })\n\n const getNewValueAndCursorPosition = (\n value: string,\n pressedKey: PressedKey\n ) => {\n const preparedValue = prepareValueToFormatting(\n decimal,\n decimalSeparatorKey,\n group,\n pressedKey,\n prevCursorPosition,\n prevValue,\n verifiedDecimalScale,\n value\n )\n const newValue = formatValue(preparedValue)\n\n return {\n newValue,\n newCursorPosition: getNewCursorPosition(\n decimal,\n decimalSeparatorKey,\n group,\n newValue,\n pressedKey,\n prevCursorPosition,\n prevValue,\n value,\n verifiedDecimalScale,\n locale,\n fillDecimalScale\n ),\n }\n }\n\n const adjustCursor = (newPosition: number) => {\n inputRef.current?.setSelectionRange(newPosition, newPosition)\n // Mobile Chrome adjustment\n setTimeout(\n () => inputRef.current?.setSelectionRange(newPosition, newPosition),\n 0\n )\n }\n\n const makeStep = (down = false) => {\n const getSignificantPrecision = (fraction: string) => {\n const reversedFraction = fraction.split(emptyString).reverse()\n const indexOfLastSignificantFractionDigit = findIndex(\n (i) => i !== '0',\n reversedFraction\n )\n\n return indexOfLastSignificantFractionDigit > -1\n ? reversedFraction.slice(indexOfLastSignificantFractionDigit).length\n : 0\n }\n\n const { parsedNumber, fraction } = unformat(locale, inputValue)\n const { fraction: stepFraction } = unformat(locale, step)\n\n const prevValuePrecision = fraction.length || 0\n const prevValueSignificantPrecision = getSignificantPrecision(fraction)\n const rawStepPrecision = stepFraction.length || 0\n const rawStepPrecisionExceedsDecimalScale =\n rawStepPrecision > verifiedDecimalScale\n const stepPrecision = rawStepPrecisionExceedsDecimalScale\n ? verifiedDecimalScale\n : rawStepPrecision\n\n if (rawStepPrecisionExceedsDecimalScale) {\n console.warn(\n `WARNING: Step's value was rounded since its scale (${rawStepPrecision}) exceeds the decimal scale (${verifiedDecimalScale}).`\n )\n }\n\n const diff = toFixed(step, stepPrecision) * (down ? -1 : 1)\n const precision = Math.max(\n stepPrecision,\n fixedDecimalScale ? verifiedDecimalScale : prevValuePrecision\n )\n const significantPrecision = Math.max(\n prevValueSignificantPrecision,\n stepPrecision\n )\n const calculated = inputValue\n ? ((parsedNumber || 0) + diff).toFixed(significantPrecision)\n : diff\n\n const { isSafeLength, isSafeIntegerLength } = getValueLengthInfo(\n calculated,\n true\n )\n\n const rejectStepByLengthLimit = !isSafeLength || !isSafeIntegerLength\n\n if (rejectStepByLengthLimit) {\n console.warn(\n `WARNING: Incrementer's step was not fulfilled since result oversteps input ${maxDigitLength}-digit limit and can't be presented without a loss of precision.`\n )\n return\n }\n\n const formatted = format(locale, precision, 'always', calculated, true)\n\n setInputValue(formatted)\n externalOnChange(formatted)\n }\n\n const internalOnKeyDown = (e: any) => {\n const {\n ctrlKey,\n metaKey,\n key,\n target: { value, selectionStart, selectionEnd },\n } = e\n\n const selection = value.slice(selectionStart, selectionEnd)\n\n setPressedKey(key)\n setPrevCursorPosition({\n selectionStart,\n selectionEnd,\n selection,\n })\n setPrevValue(value)\n\n const preserveDecimalSeparator = () => {\n const decimalBackspaced =\n !selection &&\n [backspaceKey].includes(key) &&\n value[selectionEnd - 1] === decimal\n\n const decimalDeleted =\n !selection &&\n [deleteKey, numericKeypadKey].includes(key) &&\n value[selectionEnd] === decimal\n\n const nonReplacingKeys =\n [metaKeyIdentifier, controlKey, highlightAllKey, copyKey].includes(\n key\n ) &&\n (ctrlKey || metaKey)\n\n const decimalReplacedAsSelection =\n selection &&\n selection.includes(decimal) &&\n selection.length < value.length &&\n !nonReplacingKeys\n\n const preserveDecimal =\n decimalBackspaced || decimalDeleted || decimalReplacedAsSelection\n\n if (preserveDecimal) {\n const base = decimalReplacedAsSelection\n ? selectionStart\n : selectionEnd\n\n const shift = (decimalBackspaced && -1) || (decimalDeleted && 1) || 0\n\n const cursorPosition = base + shift\n\n e.preventDefault()\n adjustCursor(cursorPosition)\n }\n }\n\n const isDecimalSeparatorPreserved = () => {\n const { safeIntegerLength, integerLength, fractionLength } =\n getValueLengthInfo(value)\n\n const decimalSeparatorCanNotBeRemoved =\n safeIntegerLength - integerLength < fractionLength\n\n return (\n (fillDecimalScaleOnBlur && decimalSeparatorCanNotBeRemoved) ||\n fixedDecimalScale\n )\n }\n\n if (isDecimalSeparatorPreserved()) {\n preserveDecimalSeparator()\n }\n\n const handleIncrementer = () => {\n switch (key) {\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n makeStep()\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n makeStep(true)\n break\n }\n }\n\n if (hasIncrementer) {\n handleIncrementer()\n }\n\n _onKeyDown(e)\n }\n\n const internalOnChange = (e: any) => {\n if (isControlledWithoutOnChangeHandlerAndReadOnlyAttribute) return\n\n const {\n target: { value },\n nativeEvent: { inputType },\n } = e\n\n const { newValue, newCursorPosition } = getNewValueAndCursorPosition(\n value,\n identifyPressedKey(\n decimalSeparatorKey,\n inputType,\n pressedKey,\n prevValue,\n value\n )\n )\n // Prevent cursor flickering\n e.target.value = newValue\n\n setInputValue(newValue)\n adjustCursor(newCursorPosition)\n\n if (newValue !== prevValue) {\n externalOnChange(newValue)\n }\n }\n\n const internalOnBlur = (e: any) => {\n const { integer, fraction } = unformat(locale, inputValue)\n\n const shouldValueBeCleared =\n inputValue === minus ||\n inputValue === decimal ||\n inputValue === `${minus}${decimal}`\n const shouldIntegerPartBeFilled =\n fraction.length > 0 && (integer === emptyString || integer === minus)\n const isDecimalSeparatorRedundant =\n verifiedDecimalScale > 0 &&\n inputValue[inputValue.length - 1] === decimal &&\n !fillDecimalScaleOnBlur\n const isDecimalScaleNotFilled = verifiedDecimalScale - fraction.length > 0\n const shouldDecimalScaleBeFilled =\n fillDecimalScaleOnBlur && isDecimalScaleNotFilled\n\n if (\n shouldValueBeCleared ||\n shouldIntegerPartBeFilled ||\n isDecimalSeparatorRedundant ||\n shouldDecimalScaleBeFilled\n ) {\n const getNewValue = () => {\n if (shouldValueBeCleared) {\n return emptyString\n }\n if (shouldIntegerPartBeFilled) {\n const numberOfZerosToPad = verifiedDecimalScale - fraction.length\n return `${integer}0${decimal}${\n shouldDecimalScaleBeFilled\n ? fraction.concat(\n Array.from({ length: numberOfZerosToPad }, (_) => '0').join(\n emptyString\n )\n )\n : fraction\n }`\n }\n if (isDecimalSeparatorRedundant) {\n return inputValue.replace(\n new RegExp(`[${decimal}]`, 'g'),\n emptyString\n )\n }\n if (shouldDecimalScaleBeFilled) {\n return format(locale, verifiedDecimalScale, 'always', inputValue)\n }\n\n return inputValue\n }\n const newValue = getNewValue()\n setInputValue(newValue)\n externalOnChange(newValue)\n }\n\n _onBlur(e)\n }\n\n return (\n <StyledWrapper $hasIncrementer={hasIncrementer} data-qa={qa?.wrapper}>\n <StyledInput\n value={inputValue}\n disabled={disabled}\n error={error}\n onKeyDown={internalOnKeyDown}\n onChange={internalOnChange}\n onBlur={internalOnBlur}\n inputMode=\"numeric\"\n readOnly={readOnly}\n style={{\n ...style,\n ...{\n paddingLeft: `${inputPadding.left}px`,\n paddingRight: `${inputPadding.right}px`,\n },\n }}\n {...props}\n ref={mergeRefs(ref, inputRef)}\n />\n {prefix && <StyledPrefix disabled={disabled}>{prefix}</StyledPrefix>}\n {suffix && (\n <StyledSuffix $withIncrementer={hasIncrementer} disabled={disabled}>\n {suffix}\n </StyledSuffix>\n )}\n {hasIncrementer && (\n <StyledIncrementerWrapper>\n <StyledIncrementerButton\n aria-hidden=\"true\"\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n data-qa={qa?.increment}\n onClick={() => makeStep()}\n >\n <PlusIcon />\n </StyledIncrementerButton>\n <StyledIncrementerButton\n aria-hidden=\"true\"\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n data-qa={qa?.decrement}\n onClick={() => makeStep(true)}\n >\n <MinusIcon />\n </StyledIncrementerButton>\n </StyledIncrementerWrapper>\n )}\n </StyledWrapper>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n\nexport const getCurrencyProps = (\n locale: string,\n _decimalScale: NumberInputProps['decimalScale'],\n symbol?: string,\n currencyIsoCode?: string,\n currencyDisplay?: CurrencyDisplay\n): CurrencyProps => {\n const currencyOptions: CurrencyOptions = {\n locale,\n currencyIsoCode: currencyIsoCode || 'USD',\n currencyDisplay: currencyDisplay || 'narrowSymbol',\n }\n const parts = formatCurrencyToParts(1, currencyOptions)\n\n const formatterDecimalScale =\n parts.find((part) => part.type === 'fraction')?.value.length || 0\n const decimalScale = _decimalScale || formatterDecimalScale\n\n const placement =\n parts.findIndex((object) => {\n return object.type === 'currency'\n }) <\n parts.findIndex((part) => {\n return part.type === 'integer'\n })\n ? 'prefix'\n : 'suffix'\n\n const currencyIsoSymbol = currencyIsoCode\n ? parts.find((part) => part.type === 'currency')?.value.toString()\n : undefined\n\n const currencyProps: CurrencyProps =\n placement === 'prefix'\n ? {\n decimalScale: decimalScale as NumberInputProps['decimalScale'],\n prefix: currencyIsoSymbol || symbol || '',\n }\n : {\n decimalScale: decimalScale as NumberInputProps['decimalScale'],\n suffix: currencyIsoSymbol || symbol || '',\n }\n\n return currencyProps\n}\n\nexport const CurrencyInput = React.forwardRef<\n HTMLInputElement,\n CurrencyInputProps\n>(\n (\n {\n currencyDisplay,\n currencyIsoCode,\n decimalScale: _decimalScale,\n fillDecimalScale = defaultCurrencyFillDecimalScale,\n prefix = defaultCurrencyInputPrefix,\n suffix,\n ...props\n },\n ref\n ) => {\n const I18n = useI18nContext()\n const contextLocale = props.locale || I18n.locale || defaultLocale\n\n const currencyProps: CurrencyProps = getCurrencyProps(\n contextLocale as string,\n _decimalScale,\n prefix || suffix,\n currencyIsoCode,\n currencyDisplay\n )\n\n return (\n <NumberInput\n fillDecimalScale={fillDecimalScale}\n {...props}\n {...currencyProps}\n ref={ref}\n />\n )\n }\n)\n\nCurrencyInput.displayName = 'CurrencyInput'\n"],"mappings":"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"}
1
+ {"version":3,"file":"NumberInput.js","names":["formatCurrencyToParts","findIndex","React","useI18nContext","spacing","mergeRefs","defaultCurrencyFillDecimalScale","defaultCurrencyInputPrefix","useNumberFormat","usePrevious","addonRootFontFamily","addonRootFontSize","addonRootPadding","inputDefaultXPadding","StyledIncrementerButton","StyledIncrementerWrapper","StyledInput","StyledPrefix","StyledSuffix","StyledWrapper","backspaceKey","commaKey","controlKey","copyKey","defaultLocale","deleteKey","emptyString","format","getNewCursorPosition","getSeparators","highlightAllKey","identicalLocales","identifyPressedKey","maxDigitLength","metaKeyIdentifier","minus","numericKeypadKey","periodKey","prepareValueToFormatting","toFixed","unformat","noop","PlusIcon","createElement","width","height","viewBox","xmlns","d","MinusIcon","NumberInput","forwardRef","_ref","ref","_ref$decimalScale","decimalScale","defaultValue","_ref$disabled","disabled","_ref$error","error","_ref$fillDecimalScale","fillDecimalScale","_onChange","onChange","_ref$onKeyDown","onKeyDown","_onKeyDown","_ref$onBlur","onBlur","_onBlur","_ref$prefix","prefix","readOnly","_ref$step","step","style","_ref$suffix","suffix","value","qa","props","_objectWithoutProperties","_excluded","I18n","contextLocale","locale","inputRef","useRef","_useNumberFormat","verifiedDecimalScale","fillDecimalScaleOnBlur","fixedDecimalScale","formatValue","getValueLengthInfo","isControlled","undefined","isControlledWithoutOnChangeHandlerAndReadOnlyAttribute","hasIncrementer","_React$useMemo","useMemo","group","decimal","decimalSeparatorKey","inputPadding","fontContext","concat","element","document","context","getContext","font","extraBasePadding","suffixPadding","Math","ceil","measureText","getRightPadding","xl","left","right","getValueChange","useCallback","_unformat","parsedNumber","isNaN","externalOnChange","_React$useState","useState","_React$useState2","_slicedToArray","inputValue","setInputValue","_React$useState3","_React$useState4","prevValue","setPrevValue","_React$useState5","selectionStart","selectionEnd","selection","_React$useState6","prevCursorPosition","setPrevCursorPosition","_React$useState7","_React$useState8","pressedKey","setPressedKey","prevLocale","useLayoutEffect","formattedValue","console","useEffect","prev","newValue","_inputRef$current","displayValue","current","lastChar","length","lastCharIsPending","includes","decimals","split","lastDecimalIsZero","onlyMinusDisplayed","getNewValueAndCursorPosition","preparedValue","newCursorPosition","adjustCursor","newPosition","_inputRef$current2","setSelectionRange","setTimeout","_inputRef$current3","makeStep","down","arguments","getSignificantPrecision","fraction","reversedFraction","reverse","indexOfLastSignificantFractionDigit","i","slice","_unformat2","_unformat3","stepFraction","prevValuePrecision","prevValueSignificantPrecision","rawStepPrecision","rawStepPrecisionExceedsDecimalScale","stepPrecision","warn","diff","precision","max","significantPrecision","calculated","_getValueLengthInfo","isSafeLength","isSafeIntegerLength","rejectStepByLengthLimit","formatted","internalOnKeyDown","e","ctrlKey","metaKey","key","_e$target","target","preserveDecimalSeparator","decimalBackspaced","decimalDeleted","nonReplacingKeys","decimalReplacedAsSelection","preserveDecimal","base","shift","cursorPosition","preventDefault","isDecimalSeparatorPreserved","_getValueLengthInfo2","safeIntegerLength","integerLength","fractionLength","decimalSeparatorCanNotBeRemoved","handleIncrementer","internalOnChange","inputType","nativeEvent","_getNewValueAndCursor","internalOnBlur","_unformat4","integer","shouldValueBeCleared","shouldIntegerPartBeFilled","isDecimalSeparatorRedundant","isDecimalScaleNotFilled","shouldDecimalScaleBeFilled","getNewValue","numberOfZerosToPad","Array","from","_","join","replace","RegExp","$hasIncrementer","wrapper","_extends","inputMode","type","lang","_objectSpread","paddingLeft","paddingRight","$withIncrementer","tabIndex","increment","onClick","decrement","displayName","getCurrencyProps","_decimalScale","symbol","currencyIsoCode","currencyDisplay","_parts$find","_parts$find2","currencyOptions","parts","formatterDecimalScale","find","part","placement","object","currencyIsoSymbol","toString","currencyProps","CurrencyInput","_ref2","_ref2$fillDecimalScal","_ref2$prefix","_excluded2"],"sources":["../../src/NumberInput/NumberInput.tsx"],"sourcesContent":["import type {\n CurrencyDisplay,\n CurrencyOptions,\n} from '@procore/globalization-toolkit'\nimport { formatCurrencyToParts } from '@procore/globalization-toolkit'\nimport { findIndex } from 'ramda'\nimport React from 'react'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { spacing } from '../_styles/spacing'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport {\n defaultCurrencyFillDecimalScale,\n defaultCurrencyInputPrefix,\n} from './NumberInput.constants'\nimport { useNumberFormat, usePrevious } from './NumberInput.hooks'\nimport {\n addonRootFontFamily,\n addonRootFontSize,\n addonRootPadding,\n inputDefaultXPadding,\n StyledIncrementerButton,\n StyledIncrementerWrapper,\n StyledInput,\n StyledPrefix,\n StyledSuffix,\n StyledWrapper,\n} from './NumberInput.styles'\nimport type {\n CurrencyInputProps,\n CurrencyProps,\n CursorPosition,\n NumberInputProps,\n PressedKey,\n} from './NumberInput.types'\nimport {\n backspaceKey,\n commaKey,\n controlKey,\n copyKey,\n defaultLocale,\n deleteKey,\n emptyString,\n format,\n getNewCursorPosition,\n getSeparators,\n highlightAllKey,\n identicalLocales,\n identifyPressedKey,\n maxDigitLength,\n metaKeyIdentifier,\n minus,\n numericKeypadKey,\n periodKey,\n prepareValueToFormatting,\n toFixed,\n unformat,\n} from './NumberInput.utils'\n\nfunction noop() {}\n\nconst PlusIcon = () => (\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.5 0H3.5V3.5H0V4.5H3.5V8H4.5V4.5H8V3.5H4.5V0Z\" />\n </svg>\n)\n\nconst MinusIcon = () => (\n <svg\n width=\"8\"\n height=\"2\"\n viewBox=\"0 0 8 2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.5 0.5H3.5H0V1.5H3.5H4.5H8V0.5H4.5Z\" />\n </svg>\n)\n\n/**\n\n The number input allows users to add numbers to a given form or table.\n The currency input will be used for data with a monetary value.\n Both components allow characters 0-9, periods, and commas. In order to avoid\n the loss of precision, the number length is limited by 15 digits.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-numberinput--demo-number-input)\n\n @see [Design Guidelines](https://design.procore.com/number-and-currency-input)\n\n */\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n decimalScale = true,\n defaultValue,\n disabled = false,\n error = false,\n fillDecimalScale = 'none',\n onChange: _onChange,\n onKeyDown: _onKeyDown = noop,\n onBlur: _onBlur = noop,\n prefix = emptyString,\n readOnly,\n step = 0,\n style,\n suffix = emptyString,\n value,\n qa,\n ...props\n },\n ref\n ) => {\n const I18n = useI18nContext()\n const contextLocale = I18n.locale || defaultLocale\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const {\n decimalScale: verifiedDecimalScale,\n fillDecimalScaleOnBlur,\n fixedDecimalScale,\n formatValue,\n getValueLengthInfo,\n locale,\n } = useNumberFormat({\n decimalScale,\n fillDecimalScale,\n locale: contextLocale,\n })\n\n const isControlled = value !== undefined\n const isControlledWithoutOnChangeHandlerAndReadOnlyAttribute =\n isControlled && !_onChange && !readOnly\n const hasIncrementer = step > 0 && !readOnly\n\n const { group, decimal } = React.useMemo(\n () => getSeparators(locale),\n [locale]\n )\n const decimalSeparatorKey = React.useMemo(() => {\n return decimal === periodKey ? periodKey : commaKey\n }, [decimal])\n\n const inputPadding = React.useMemo((): {\n left: number\n right: number | null\n } => {\n const fontContext = `${addonRootFontSize} \"${addonRootFontFamily}\"`\n\n if (prefix || suffix) {\n const element = document.createElement('canvas')\n const context = element?.getContext('2d')\n\n if (context) {\n context.font = fontContext\n\n const extraBasePadding = inputDefaultXPadding + addonRootPadding\n\n const suffixPadding =\n extraBasePadding + Math.ceil(context.measureText(suffix).width)\n\n const getRightPadding = () => {\n if (hasIncrementer && suffix) {\n return suffixPadding + spacing.xl\n }\n if (suffix) {\n return suffixPadding\n }\n return null\n }\n\n return {\n left: prefix\n ? extraBasePadding + Math.ceil(context.measureText(prefix).width)\n : inputDefaultXPadding,\n right: getRightPadding(),\n }\n }\n }\n\n return {\n left: inputDefaultXPadding,\n right: null,\n }\n }, [prefix, suffix, hasIncrementer])\n\n const getValueChange = React.useCallback(\n (value: string) => {\n const { parsedNumber } = unformat(locale, value)\n return {\n value,\n parsedNumber: isNaN(parsedNumber) ? null : parsedNumber,\n }\n },\n [locale]\n )\n\n const externalOnChange = React.useCallback(\n (value: string) => _onChange && _onChange(getValueChange(value)),\n [_onChange, getValueChange]\n )\n\n const [inputValue, setInputValue] = React.useState(\n formatValue(defaultValue)\n )\n const [prevValue, setPrevValue] = React.useState(\n isControlled ? formatValue(value) : inputValue\n )\n const [prevCursorPosition, setPrevCursorPosition] =\n React.useState<CursorPosition>({\n selectionStart: 0,\n selectionEnd: 0,\n selection: emptyString,\n })\n const [pressedKey, setPressedKey] = React.useState()\n const prevLocale = usePrevious(locale)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(() => {\n const formattedValue = formatValue(value)\n if (isControlled && inputValue !== formattedValue) {\n setInputValue(formattedValue)\n }\n\n if (isControlledWithoutOnChangeHandlerAndReadOnlyAttribute) {\n console.error(\n `Warning: Failed prop type: You provided a \\`value\\` prop to a form field without an \\`onChange\\` handler.\n This will render a read-only field. If the field should be mutable use \\`defaultValue\\`.\n Otherwise, set either \\`onChange\\` or \\`readOnly\\`.`\n )\n }\n }, [value])\n\n React.useEffect(() => {\n if (prevLocale && !identicalLocales(prevLocale, locale)) {\n setInputValue((prev) => {\n const newValue = formatValue(unformat(prevLocale, prev).parsedNumber)\n externalOnChange(newValue)\n return newValue\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [prevLocale, formatValue])\n\n React.useLayoutEffect(() => {\n const displayValue = inputRef.current?.value || ''\n if (!_onChange || !displayValue) {\n return\n }\n const formattedValue = formatValue(value)\n\n if (displayValue !== formattedValue) {\n const lastChar = displayValue[displayValue.length - 1]\n const lastCharIsPending = [periodKey, commaKey].includes(lastChar)\n\n const decimals = displayValue.split(decimal)[1] || ''\n const lastDecimalIsZero =\n decimals && decimals[decimals.length - 1] === '0'\n\n const onlyMinusDisplayed = displayValue === minus\n\n // a client state and display mismatch is only valid when\n if (lastCharIsPending || lastDecimalIsZero || onlyMinusDisplayed) {\n return\n }\n\n // otherwise sync display with client state\n setInputValue(formattedValue)\n }\n })\n\n const getNewValueAndCursorPosition = (\n value: string,\n pressedKey: PressedKey\n ) => {\n const preparedValue = prepareValueToFormatting(\n decimal,\n decimalSeparatorKey,\n group,\n pressedKey,\n prevCursorPosition,\n prevValue,\n verifiedDecimalScale,\n value\n )\n const newValue = formatValue(preparedValue)\n\n return {\n newValue,\n newCursorPosition: getNewCursorPosition(\n decimal,\n decimalSeparatorKey,\n group,\n newValue,\n pressedKey,\n prevCursorPosition,\n prevValue,\n value,\n verifiedDecimalScale,\n locale,\n fillDecimalScale\n ),\n }\n }\n\n const adjustCursor = (newPosition: number) => {\n inputRef.current?.setSelectionRange(newPosition, newPosition)\n // Mobile Chrome adjustment\n setTimeout(\n () => inputRef.current?.setSelectionRange(newPosition, newPosition),\n 0\n )\n }\n\n const makeStep = (down = false) => {\n const getSignificantPrecision = (fraction: string) => {\n const reversedFraction = fraction.split(emptyString).reverse()\n const indexOfLastSignificantFractionDigit = findIndex(\n (i) => i !== '0',\n reversedFraction\n )\n\n return indexOfLastSignificantFractionDigit > -1\n ? reversedFraction.slice(indexOfLastSignificantFractionDigit).length\n : 0\n }\n\n const { parsedNumber, fraction } = unformat(locale, inputValue)\n const { fraction: stepFraction } = unformat(locale, step)\n\n const prevValuePrecision = fraction.length || 0\n const prevValueSignificantPrecision = getSignificantPrecision(fraction)\n const rawStepPrecision = stepFraction.length || 0\n const rawStepPrecisionExceedsDecimalScale =\n rawStepPrecision > verifiedDecimalScale\n const stepPrecision = rawStepPrecisionExceedsDecimalScale\n ? verifiedDecimalScale\n : rawStepPrecision\n\n if (rawStepPrecisionExceedsDecimalScale) {\n console.warn(\n `WARNING: Step's value was rounded since its scale (${rawStepPrecision}) exceeds the decimal scale (${verifiedDecimalScale}).`\n )\n }\n\n const diff = toFixed(step, stepPrecision) * (down ? -1 : 1)\n const precision = Math.max(\n stepPrecision,\n fixedDecimalScale ? verifiedDecimalScale : prevValuePrecision\n )\n const significantPrecision = Math.max(\n prevValueSignificantPrecision,\n stepPrecision\n )\n const calculated = inputValue\n ? ((parsedNumber || 0) + diff).toFixed(significantPrecision)\n : diff\n\n const { isSafeLength, isSafeIntegerLength } = getValueLengthInfo(\n calculated,\n true\n )\n\n const rejectStepByLengthLimit = !isSafeLength || !isSafeIntegerLength\n\n if (rejectStepByLengthLimit) {\n console.warn(\n `WARNING: Incrementer's step was not fulfilled since result oversteps input ${maxDigitLength}-digit limit and can't be presented without a loss of precision.`\n )\n return\n }\n\n const formatted = format(locale, precision, 'always', calculated, true)\n\n setInputValue(formatted)\n externalOnChange(formatted)\n }\n\n const internalOnKeyDown = (e: any) => {\n const {\n ctrlKey,\n metaKey,\n key,\n target: { value, selectionStart, selectionEnd },\n } = e\n\n const selection = value.slice(selectionStart, selectionEnd)\n\n setPressedKey(key)\n setPrevCursorPosition({\n selectionStart,\n selectionEnd,\n selection,\n })\n setPrevValue(value)\n\n const preserveDecimalSeparator = () => {\n const decimalBackspaced =\n !selection &&\n [backspaceKey].includes(key) &&\n value[selectionEnd - 1] === decimal\n\n const decimalDeleted =\n !selection &&\n [deleteKey, numericKeypadKey].includes(key) &&\n value[selectionEnd] === decimal\n\n const nonReplacingKeys =\n [metaKeyIdentifier, controlKey, highlightAllKey, copyKey].includes(\n key\n ) &&\n (ctrlKey || metaKey)\n\n const decimalReplacedAsSelection =\n selection &&\n selection.includes(decimal) &&\n selection.length < value.length &&\n !nonReplacingKeys\n\n const preserveDecimal =\n decimalBackspaced || decimalDeleted || decimalReplacedAsSelection\n\n if (preserveDecimal) {\n const base = decimalReplacedAsSelection\n ? selectionStart\n : selectionEnd\n\n const shift = (decimalBackspaced && -1) || (decimalDeleted && 1) || 0\n\n const cursorPosition = base + shift\n\n e.preventDefault()\n adjustCursor(cursorPosition)\n }\n }\n\n const isDecimalSeparatorPreserved = () => {\n const { safeIntegerLength, integerLength, fractionLength } =\n getValueLengthInfo(value)\n\n const decimalSeparatorCanNotBeRemoved =\n safeIntegerLength - integerLength < fractionLength\n\n return (\n (fillDecimalScaleOnBlur && decimalSeparatorCanNotBeRemoved) ||\n fixedDecimalScale\n )\n }\n\n if (isDecimalSeparatorPreserved()) {\n preserveDecimalSeparator()\n }\n\n const handleIncrementer = () => {\n switch (key) {\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n makeStep()\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n makeStep(true)\n break\n }\n }\n\n if (hasIncrementer) {\n handleIncrementer()\n }\n\n _onKeyDown(e)\n }\n\n const internalOnChange = (e: any) => {\n if (isControlledWithoutOnChangeHandlerAndReadOnlyAttribute) return\n\n const {\n target: { value },\n nativeEvent: { inputType },\n } = e\n\n const { newValue, newCursorPosition } = getNewValueAndCursorPosition(\n value,\n identifyPressedKey(\n decimalSeparatorKey,\n inputType,\n pressedKey,\n prevValue,\n value\n )\n )\n // Prevent cursor flickering\n e.target.value = newValue\n\n setInputValue(newValue)\n adjustCursor(newCursorPosition)\n\n if (newValue !== prevValue) {\n externalOnChange(newValue)\n }\n }\n\n const internalOnBlur = (e: any) => {\n const { integer, fraction } = unformat(locale, inputValue)\n\n const shouldValueBeCleared =\n inputValue === minus ||\n inputValue === decimal ||\n inputValue === `${minus}${decimal}`\n const shouldIntegerPartBeFilled =\n fraction.length > 0 && (integer === emptyString || integer === minus)\n const isDecimalSeparatorRedundant =\n verifiedDecimalScale > 0 &&\n inputValue[inputValue.length - 1] === decimal &&\n !fillDecimalScaleOnBlur\n const isDecimalScaleNotFilled = verifiedDecimalScale - fraction.length > 0\n const shouldDecimalScaleBeFilled =\n fillDecimalScaleOnBlur && isDecimalScaleNotFilled\n\n if (\n shouldValueBeCleared ||\n shouldIntegerPartBeFilled ||\n isDecimalSeparatorRedundant ||\n shouldDecimalScaleBeFilled\n ) {\n const getNewValue = () => {\n if (shouldValueBeCleared) {\n return emptyString\n }\n if (shouldIntegerPartBeFilled) {\n const numberOfZerosToPad = verifiedDecimalScale - fraction.length\n return `${integer}0${decimal}${\n shouldDecimalScaleBeFilled\n ? fraction.concat(\n Array.from({ length: numberOfZerosToPad }, (_) => '0').join(\n emptyString\n )\n )\n : fraction\n }`\n }\n if (isDecimalSeparatorRedundant) {\n return inputValue.replace(\n new RegExp(`[${decimal}]`, 'g'),\n emptyString\n )\n }\n if (shouldDecimalScaleBeFilled) {\n return format(locale, verifiedDecimalScale, 'always', inputValue)\n }\n\n return inputValue\n }\n const newValue = getNewValue()\n setInputValue(newValue)\n externalOnChange(newValue)\n }\n\n _onBlur(e)\n }\n\n return (\n <StyledWrapper $hasIncrementer={hasIncrementer} data-qa={qa?.wrapper}>\n <StyledInput\n value={inputValue}\n disabled={disabled}\n error={error}\n onKeyDown={internalOnKeyDown}\n onChange={internalOnChange}\n onBlur={internalOnBlur}\n inputMode=\"numeric\"\n type={hasIncrementer ? 'number' : undefined}\n lang={contextLocale}\n readOnly={readOnly}\n style={{\n ...style,\n ...{\n paddingLeft: `${inputPadding.left}px`,\n paddingRight: `${inputPadding.right}px`,\n },\n }}\n {...props}\n ref={mergeRefs(ref, inputRef)}\n />\n {prefix && <StyledPrefix disabled={disabled}>{prefix}</StyledPrefix>}\n {suffix && (\n <StyledSuffix $withIncrementer={hasIncrementer} disabled={disabled}>\n {suffix}\n </StyledSuffix>\n )}\n {hasIncrementer && (\n <StyledIncrementerWrapper>\n <StyledIncrementerButton\n aria-hidden=\"true\"\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n data-qa={qa?.increment}\n onClick={() => makeStep()}\n >\n <PlusIcon />\n </StyledIncrementerButton>\n <StyledIncrementerButton\n aria-hidden=\"true\"\n type=\"button\"\n disabled={disabled}\n tabIndex={-1}\n data-qa={qa?.decrement}\n onClick={() => makeStep(true)}\n >\n <MinusIcon />\n </StyledIncrementerButton>\n </StyledIncrementerWrapper>\n )}\n </StyledWrapper>\n )\n }\n)\n\nNumberInput.displayName = 'NumberInput'\n\nexport const getCurrencyProps = (\n locale: string,\n _decimalScale: NumberInputProps['decimalScale'],\n symbol?: string,\n currencyIsoCode?: string,\n currencyDisplay?: CurrencyDisplay\n): CurrencyProps => {\n const currencyOptions: CurrencyOptions = {\n locale,\n currencyIsoCode: currencyIsoCode || 'USD',\n currencyDisplay: currencyDisplay || 'narrowSymbol',\n }\n const parts = formatCurrencyToParts(1, currencyOptions)\n\n const formatterDecimalScale =\n parts.find((part) => part.type === 'fraction')?.value.length || 0\n const decimalScale = _decimalScale || formatterDecimalScale\n\n const placement =\n parts.findIndex((object) => {\n return object.type === 'currency'\n }) <\n parts.findIndex((part) => {\n return part.type === 'integer'\n })\n ? 'prefix'\n : 'suffix'\n\n const currencyIsoSymbol = currencyIsoCode\n ? parts.find((part) => part.type === 'currency')?.value.toString()\n : undefined\n\n const currencyProps: CurrencyProps =\n placement === 'prefix'\n ? {\n decimalScale: decimalScale as NumberInputProps['decimalScale'],\n prefix: currencyIsoSymbol || symbol || '',\n }\n : {\n decimalScale: decimalScale as NumberInputProps['decimalScale'],\n suffix: currencyIsoSymbol || symbol || '',\n }\n\n return currencyProps\n}\n\nexport const CurrencyInput = React.forwardRef<\n HTMLInputElement,\n CurrencyInputProps\n>(\n (\n {\n currencyDisplay,\n currencyIsoCode,\n decimalScale: _decimalScale,\n fillDecimalScale = defaultCurrencyFillDecimalScale,\n prefix = defaultCurrencyInputPrefix,\n suffix,\n ...props\n },\n ref\n ) => {\n const I18n = useI18nContext()\n const contextLocale = props.locale || I18n.locale || defaultLocale\n\n const currencyProps: CurrencyProps = getCurrencyProps(\n contextLocale as string,\n _decimalScale,\n prefix || suffix,\n currencyIsoCode,\n currencyDisplay\n )\n\n return (\n <NumberInput\n fillDecimalScale={fillDecimalScale}\n {...props}\n {...currencyProps}\n ref={ref}\n />\n )\n }\n)\n\nCurrencyInput.displayName = 'CurrencyInput'\n"],"mappings":"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"}