@procore/core-react 12.53.3 → 12.54.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 (313) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.js +2 -0
  5. package/dist/AvatarStack/AvatarStack.js.map +1 -1
  6. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  7. package/dist/Badge/Badge.styles.js +2 -2
  8. package/dist/BadgePill/BadgePill.styles.js +4 -4
  9. package/dist/Banner/Banner.d.ts +1 -0
  10. package/dist/Banner/Banner.js +31 -14
  11. package/dist/Banner/Banner.js.map +1 -1
  12. package/dist/Banner/Banner.styles.d.ts +10 -0
  13. package/dist/Banner/Banner.styles.js +29 -12
  14. package/dist/Banner/Banner.styles.js.map +1 -1
  15. package/dist/Banner/Banner.types.d.ts +1 -1
  16. package/dist/Banner/Banner.types.js.map +1 -1
  17. package/dist/Banner/index.d.ts +1 -1
  18. package/dist/Banner/index.js +1 -1
  19. package/dist/Banner/index.js.map +1 -1
  20. package/dist/Box/Box.styles.js +1 -1
  21. package/dist/Breadcrumbs/Breadcrumbs.styles.js +7 -6
  22. package/dist/Breadcrumbs/Breadcrumbs.styles.js.map +1 -1
  23. package/dist/Button/Button.styles.js +5 -5
  24. package/dist/Calendar/Calendar.js +97 -10
  25. package/dist/Calendar/Calendar.js.map +1 -1
  26. package/dist/Calendar/Calendar.styles.d.ts +3 -0
  27. package/dist/Calendar/Calendar.styles.js +13 -9
  28. package/dist/Calendar/Calendar.styles.js.map +1 -1
  29. package/dist/Calendar/Calendar.types.js.map +1 -1
  30. package/dist/Card/Card.styles.js +1 -1
  31. package/dist/Checkbox/Checkbox.styles.js +6 -6
  32. package/dist/ContactItem/ContactItem.styles.js +5 -5
  33. package/dist/Content/Content.styles.js +2 -2
  34. package/dist/DateInput/DateInput.js +1 -1
  35. package/dist/DateInput/DateInput.js.map +1 -1
  36. package/dist/DateInput/DateInput.styles.js +8 -8
  37. package/dist/DateInput/DateInput.styles.js.map +1 -1
  38. package/dist/DateSelect/DateSelect.js +60 -29
  39. package/dist/DateSelect/DateSelect.js.map +1 -1
  40. package/dist/DateSelect/DateSelect.types.d.ts +2 -2
  41. package/dist/DateSelect/DateSelect.types.js.map +1 -1
  42. package/dist/DetailPage/DetailPage.styles.js +11 -9
  43. package/dist/DetailPage/DetailPage.styles.js.map +1 -1
  44. package/dist/Dropdown/Dropdown.styles.js +3 -3
  45. package/dist/DropdownFlyout/DropdownFlyout.js +8 -0
  46. package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
  47. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  48. package/dist/Dropzone/Dropzone.js +1 -1
  49. package/dist/Dropzone/Dropzone.styles.js +9 -9
  50. package/dist/EmptyState/EmptyState.styles.js +6 -6
  51. package/dist/Field/Field.styles.js +3 -3
  52. package/dist/FileList/FileList.styles.js +3 -3
  53. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +17 -14
  54. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js.map +1 -1
  55. package/dist/FileSelect/FileExplorer/FileExplorerModal.js +4 -2
  56. package/dist/FileSelect/FileExplorer/FileExplorerModal.js.map +1 -1
  57. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +5 -4
  58. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js.map +1 -1
  59. package/dist/FileSelect/FileSelect.styles.js +2 -2
  60. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  61. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  62. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  63. package/dist/FileSelect/LocalSource/LocalSource.styles.js +6 -5
  64. package/dist/FileSelect/LocalSource/LocalSource.styles.js.map +1 -1
  65. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  66. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +13 -11
  67. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js.map +1 -1
  68. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  69. package/dist/FileToken/FileToken.styles.js +6 -6
  70. package/dist/FilterToken/FilterToken.styles.js +5 -5
  71. package/dist/FlexList/FlexList.styles.js +1 -1
  72. package/dist/Form/Form.js +5 -0
  73. package/dist/Form/Form.js.map +1 -1
  74. package/dist/Form/Form.styles.js +13 -13
  75. package/dist/Form/StyledFormikForm.styles.js +2 -2
  76. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  77. package/dist/Grid/Grid.styles.js +2 -2
  78. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  79. package/dist/Input/Input.styles.js +1 -1
  80. package/dist/Link/Link.styles.js +1 -1
  81. package/dist/ListPage/ListPage.styles.js +12 -11
  82. package/dist/ListPage/ListPage.styles.js.map +1 -1
  83. package/dist/Loader/Loader.styles.js +2 -2
  84. package/dist/MenuImperative/MenuImperative.styles.js +11 -11
  85. package/dist/Modal/Modal.js +0 -2
  86. package/dist/Modal/Modal.js.map +1 -1
  87. package/dist/Modal/Modal.styles.js +44 -32
  88. package/dist/Modal/Modal.styles.js.map +1 -1
  89. package/dist/MultiSelect/MultiSelect.js +3 -1
  90. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  91. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  92. package/dist/MultiSelect/MultiSelect.types.d.ts +5 -0
  93. package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
  94. package/dist/NextMenu/NextMenu.styles.js +3 -3
  95. package/dist/NextTile/NextTile.styles.js +5 -5
  96. package/dist/Notation/Notation.js +1 -1
  97. package/dist/NumberInput/NumberInput.styles.js +7 -7
  98. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  99. package/dist/OverlayTrigger/OverlayTrigger.js +12 -3
  100. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  101. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +14 -0
  102. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  103. package/dist/OverlayTrigger/a11yPresets.d.ts +19 -3
  104. package/dist/OverlayTrigger/a11yPresets.js +16 -6
  105. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  106. package/dist/PageLayout/PageLayout.js +15 -4
  107. package/dist/PageLayout/PageLayout.js.map +1 -1
  108. package/dist/PageLayout/PageLayout.styles.js +35 -34
  109. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  110. package/dist/PageLayout/PageLayout.types.d.ts +1 -0
  111. package/dist/PageLayout/PageLayout.types.js.map +1 -1
  112. package/dist/PageLayout/PageLayout.utils.d.ts +11 -0
  113. package/dist/PageLayout/PageLayout.utils.js +45 -0
  114. package/dist/PageLayout/PageLayout.utils.js.map +1 -1
  115. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js +2 -2
  116. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js.map +1 -1
  117. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.d.ts +5 -0
  118. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +9 -2
  119. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js.map +1 -1
  120. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  121. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  122. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  123. package/dist/Pagination/Pagination.styles.js +5 -5
  124. package/dist/Panel/Panel.styles.js +17 -16
  125. package/dist/Panel/Panel.styles.js.map +1 -1
  126. package/dist/Pill/Pill.styles.js +3 -3
  127. package/dist/PillSelect/PillSelect.styles.js +5 -5
  128. package/dist/Popover/Popover.js +6 -1
  129. package/dist/Popover/Popover.js.map +1 -1
  130. package/dist/Popover/Popover.styles.js +2 -2
  131. package/dist/Portal/Portal.styles.js +1 -1
  132. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  133. package/dist/RadioButton/RadioButton.styles.js +3 -3
  134. package/dist/Required/Required.styles.js +3 -3
  135. package/dist/Search/Search.styles.js +5 -5
  136. package/dist/Section/Section.js +0 -1
  137. package/dist/Section/Section.js.map +1 -1
  138. package/dist/Section/Section.styles.js +7 -7
  139. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  140. package/dist/Select/Select.js +5 -2
  141. package/dist/Select/Select.js.map +1 -1
  142. package/dist/Select/Select.styles.js +8 -8
  143. package/dist/Semantic/Semantic.styles.js +9 -9
  144. package/dist/Slider/Slider.styles.js +5 -5
  145. package/dist/Spinner/Spinner.styles.js +7 -7
  146. package/dist/SplitViewCard/SplitViewCard.styles.js +15 -13
  147. package/dist/SplitViewCard/SplitViewCard.styles.js.map +1 -1
  148. package/dist/SuperSelect/SuperSelect.js +8 -0
  149. package/dist/SuperSelect/SuperSelect.js.map +1 -1
  150. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  151. package/dist/SuperSelect/SuperSelect.styles.js +40 -40
  152. package/dist/SuperSelect/SuperSelect.types.d.ts +7 -0
  153. package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
  154. package/dist/SuperSelect/useSuperSelect.d.ts +1 -1
  155. package/dist/SuperSelect/useSuperSelect.js +27 -6
  156. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  157. package/dist/Switch/Switch.styles.js +4 -4
  158. package/dist/Table/Table.js +63 -2
  159. package/dist/Table/Table.js.map +1 -1
  160. package/dist/Table/Table.styles.js +31 -30
  161. package/dist/Table/Table.styles.js.map +1 -1
  162. package/dist/TableShelf/TableShelf.styles.js +5 -5
  163. package/dist/Tabs/Tabs.js +11 -3
  164. package/dist/Tabs/Tabs.js.map +1 -1
  165. package/dist/Tabs/Tabs.styles.js +16 -16
  166. package/dist/Tearsheet/Tearsheet.js +59 -34
  167. package/dist/Tearsheet/Tearsheet.js.map +1 -1
  168. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  169. package/dist/TextArea/TextArea.styles.js +1 -1
  170. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  171. package/dist/Thumbnail/Thumbnail.styles.d.ts +1 -0
  172. package/dist/Thumbnail/Thumbnail.styles.js +22 -22
  173. package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
  174. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  175. package/dist/TieredSelect/LeafSelectionTieredSelect.js +3 -1
  176. package/dist/TieredSelect/LeafSelectionTieredSelect.js.map +1 -1
  177. package/dist/TieredSelect/TierSelectionTieredSelect.js +3 -1
  178. package/dist/TieredSelect/TierSelectionTieredSelect.js.map +1 -1
  179. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  180. package/dist/Tile/Tile.styles.js +8 -8
  181. package/dist/Title/Title.styles.js +11 -9
  182. package/dist/Title/Title.styles.js.map +1 -1
  183. package/dist/Toast/Toast.styles.js +3 -3
  184. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  185. package/dist/Token/Token.styles.js +5 -5
  186. package/dist/ToolHeader/ToolHeader.styles.js +15 -10
  187. package/dist/ToolHeader/ToolHeader.styles.js.map +1 -1
  188. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  189. package/dist/Tooltip/Tooltip.js +7 -1
  190. package/dist/Tooltip/Tooltip.js.map +1 -1
  191. package/dist/Tooltip/Tooltip.styles.js +3 -3
  192. package/dist/Tree/Tree.js +1 -1
  193. package/dist/Tree/Tree.styles.js +10 -10
  194. package/dist/Typeahead/Typeahead.styles.js +4 -4
  195. package/dist/Typography/Typography.styles.js +1 -1
  196. package/dist/Typography/Typography.table.story.js +2 -2
  197. package/dist/_hooks/I18n.d.ts +33 -13
  198. package/dist/_hooks/I18n.js +2 -0
  199. package/dist/_hooks/I18n.js.map +1 -1
  200. package/dist/_locales/de-DE.json +1 -0
  201. package/dist/_locales/en-AU.json +1 -0
  202. package/dist/_locales/en-CA.json +1 -0
  203. package/dist/_locales/en-GB.json +1 -0
  204. package/dist/_locales/en.json +3 -1
  205. package/dist/_locales/es-ES.json +1 -0
  206. package/dist/_locales/es.json +1 -0
  207. package/dist/_locales/fr-CA.json +1 -0
  208. package/dist/_locales/fr-FR.json +1 -0
  209. package/dist/_locales/is-IS.json +1 -0
  210. package/dist/_locales/it-IT.json +1 -0
  211. package/dist/_locales/ja-JP.json +1 -0
  212. package/dist/_locales/nb-NO.json +2 -1
  213. package/dist/_locales/pl-PL.json +1 -0
  214. package/dist/_locales/pseudo.json +3 -1
  215. package/dist/_locales/pt-BR.json +1 -0
  216. package/dist/_locales/pt-PT.json +3 -2
  217. package/dist/_locales/th-TH.json +1 -0
  218. package/dist/_locales/zh-SG.json +1 -0
  219. package/dist/_locales/zh-TW.json +2 -1
  220. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  221. package/dist/_storyHelpers_/components/StoryGrid.js +5 -4
  222. package/dist/_storyHelpers_/components/StoryGrid.js.map +1 -1
  223. package/dist/_storyHelpers_/highZoom.d.ts +68 -0
  224. package/dist/_storyHelpers_/highZoom.js +72 -0
  225. package/dist/_storyHelpers_/highZoom.js.map +1 -0
  226. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +7 -7
  227. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  228. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  229. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  230. package/dist/_typedoc/Banner/Banner.types.json +18 -18
  231. package/dist/_typedoc/Box/Box.types.json +68 -68
  232. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
  233. package/dist/_typedoc/Button/Button.types.json +14 -14
  234. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  235. package/dist/_typedoc/Card/Card.types.json +6 -6
  236. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  237. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  238. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  239. package/dist/_typedoc/DateSelect/DateSelect.types.json +45 -14
  240. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  241. package/dist/_typedoc/DetailPageTemplate/DetailPageTemplate.types.json +3 -3
  242. package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
  243. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +37 -37
  244. package/dist/_typedoc/Dropzone/Dropzone.types.json +50 -50
  245. package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
  246. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  247. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  248. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  249. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  250. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +17 -17
  251. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  252. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  253. package/dist/_typedoc/Form/Form.types.json +875 -773
  254. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  255. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  256. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +99 -79
  257. package/dist/_typedoc/Input/Input.types.json +2 -2
  258. package/dist/_typedoc/Link/Link.types.json +1 -1
  259. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  260. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  261. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +90 -90
  262. package/dist/_typedoc/Modal/Modal.types.json +48 -48
  263. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +43 -33
  264. package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
  265. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  266. package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
  267. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +44 -33
  268. package/dist/_typedoc/PageLayout/PageLayout.types.json +42 -42
  269. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  270. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  271. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  272. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  273. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  274. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  275. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  276. package/dist/_typedoc/Required/Required.types.json +5 -5
  277. package/dist/_typedoc/Search/Search.types.json +18 -18
  278. package/dist/_typedoc/Section/Section.types.json +15 -15
  279. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  280. package/dist/_typedoc/Select/Select.types.json +67 -67
  281. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  282. package/dist/_typedoc/SettingsPageTemplate/SettingsPageTemplate.types.json +3 -3
  283. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  284. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  285. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  286. package/dist/_typedoc/Table/Table.types.json +136 -105
  287. package/dist/_typedoc/Tabs/Tablist.types.json +10 -10
  288. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  289. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  290. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  291. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  292. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  293. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  294. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  295. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  296. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  297. package/dist/_typedoc/Title/Title.types.json +1 -1
  298. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  299. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  300. package/dist/_typedoc/Token/Token.types.json +7 -7
  301. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  302. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  303. package/dist/_typedoc/ToolLandingPageTemplate/ToolLandingPageTemplate.types.json +2 -2
  304. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  305. package/dist/_typedoc/Tree/Tree.types.json +132 -132
  306. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  307. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  308. package/dist/_typedoc/_utils/types.json +3 -3
  309. package/dist/_typedoc/a11y-tips.json +1 -1
  310. package/package.json +2 -2
  311. package/dist/_hooks/ScrollLock.d.ts +0 -1
  312. package/dist/_hooks/ScrollLock.js +0 -31
  313. package/dist/_hooks/ScrollLock.js.map +0 -1
@@ -82,6 +82,12 @@ export interface SuperSelectConfig {
82
82
  placeholder?: string;
83
83
  preset?: SuperSelectPreset;
84
84
  presetProps?: SuperSelectPresetProps;
85
+ /**
86
+ * Marks the field as mandatory for assistive technology by setting
87
+ * `aria-required` on the element carrying `role="combobox"`. The visual
88
+ * required mark is rendered separately by `Form.Field`.
89
+ */
90
+ required?: boolean;
85
91
  search?: boolean;
86
92
  selectionStyle?: 'highlight' | 'checkbox' | 'checkmark';
87
93
  setOptionGroup?: (option: SuperSelectOption, group: string) => SuperSelectOption;
@@ -105,6 +111,7 @@ export interface SuperSelectApi {
105
111
  placeholder?: string;
106
112
  preset: SuperSelectPreset;
107
113
  presetProps?: any;
114
+ required: boolean;
108
115
  selectionStyle: 'highlight' | 'token' | 'checkbox' | 'checkmark';
109
116
  tabIndex: number;
110
117
  loading: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"SuperSelect.types.js","names":[],"sources":["../../src/SuperSelect/SuperSelect.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { VirtuosoHandle } from 'react-virtuoso'\nimport type * as defaultComponents from './SuperSelect.components'\nimport type { isOptgroupSymbol } from './SuperSelect.constants'\n\nexport interface TokenNavigationProps {\n enabled?: boolean\n tokenRemoveRefs?: React.MutableRefObject<Array<HTMLButtonElement | null>>\n value?: SuperSelectValue\n}\n\nexport interface KeyboardSelectionProps {\n enabled?: boolean\n onSelect?: () => void\n}\n\nexport type SuperSelectValuePrimitive = boolean | string | number\n\nexport type SuperSelectValue =\n | SuperSelectValuePrimitive\n | Array<SuperSelectValuePrimitive>\n | null\n\nexport type SuperSelectOption = any\n\nexport type SuperSelectPreset = '' | 'pill' | 'filter' | 'contacts'\n\nexport type SuperSelectResult = {\n destination?: { index: number } | null\n source: { index: number }\n}\n\nexport interface SuperSelectPresetProps {\n filter?: {\n filterName?: string\n }\n pill?: {}\n contacts?: {}\n ''?: {}\n}\n\nexport interface SuperSelectConfig {\n block?: boolean\n components?: Partial<typeof defaultComponents>\n defaultValue?: SuperSelectValue\n disabled?: boolean\n draggable?: boolean\n emptyMessage?: string\n selectAllEnabled?: boolean\n error?: boolean\n footer?: React.ReactElement\n getOptionGroup?: (option: SuperSelectOption) => string\n getOptionIsBatch?: (option: SuperSelectOption) => boolean\n getOptionIsDisabled?: (option: SuperSelectOption) => boolean\n getOptionIsPartiallySelected?: (option: SuperSelectOption) => boolean\n getOptionIsSelected?: (option: SuperSelectOption) => boolean\n getOptionLabel?: (option: SuperSelectOption) => string\n getOptionValue?: (option: SuperSelectOption) => SuperSelectValuePrimitive\n header?: React.ReactElement\n loading?: boolean\n multiple?: boolean\n onChange?: (value: SuperSelectValue) => void\n onManualSort?: (options: SuperSelectOption[]) => void\n onUnselectAll?: (\n value: SuperSelectValue,\n options: SuperSelectOption[],\n searchValue: string,\n getValue: (opt: SuperSelectOption) => Array<SuperSelectValuePrimitive>\n ) => SuperSelectValue\n /**\n * Callback function triggered when the \"Select All\" functionality is used in a multi-select SuperSelect.\n *\n * This prop is only relevant when `multiple={true}` and `selectAllEnabled={true}`. The callback is invoked\n * when users interact with a select all option in the select list that allows them to\n * select or deselect all available options at once.\n *\n * @param selectedOptions - An array of all options that would be selected when \"Select All\" is triggered.\n * This includes all selectable options (excluding disabled options) that are\n * currently visible and available for selection.\n *\n * @remarks\n * - Only called when the component is in multi-select mode (`multiple={true}`)\n * - Requires `selectAllEnabled={true}` to show the select-all UI\n * - Disabled options are automatically excluded from the selectedOptions array\n * - Allows additional customization of select-all behavior if needed by implementing custom logic within the callback\n *\n * @see {@link selectAllEnabled} - Enable the select-all functionality\n * @see {@link multiple} - Enable multi-select mode\n * @see {@link getOptionIsDisabled} - Function to determine if options are disabled\n */\n onSelectAll?: (selectedOptions: SuperSelectOption[]) => void\n onScrollBottom?: () => void\n onOpenChange?: (open: boolean) => void\n options?: SuperSelectOption[]\n placeholder?: string\n preset?: SuperSelectPreset\n presetProps?: SuperSelectPresetProps\n search?: boolean\n selectionStyle?: 'highlight' | 'checkbox' | 'checkmark'\n setOptionGroup?: (\n option: SuperSelectOption,\n group: string\n ) => SuperSelectOption\n sort?: boolean\n tabIndex?: number\n value?: SuperSelectValue\n overlayMatchesTriggerWidth?: boolean\n 'aria-label'?: string\n 'aria-labelledby'?: string\n}\n\nexport type SuperSelectProps = SuperSelectConfig\n\nexport interface SuperSelectApi {\n config: {\n block: boolean\n disabled: boolean\n draggable: boolean\n emptyMessage: string\n error?: boolean\n footer?: React.ReactElement\n header?: React.ReactElement\n placeholder?: string\n preset: SuperSelectPreset\n presetProps?: any\n selectionStyle: 'highlight' | 'token' | 'checkbox' | 'checkmark'\n tabIndex: number\n loading: boolean\n multiple: boolean\n selectAllEnabled: boolean\n }\n components: typeof defaultComponents\n state: {\n activeMenuIndex: number | null\n isEmpty: () => boolean\n isSelectAllActive: boolean\n listContainerHeight: number\n listId: string\n maxHeight: number\n tokenListId: string\n onDragEnd: (result: SuperSelectResult) => void\n onSelect: (option: SuperSelectOption) => void\n onSelectAll?: (selectedOptions: SuperSelectOption[]) => void\n open: boolean\n options: SuperSelectOption[]\n overlayId: string\n searchValue: string\n selectAllOption: SuperSelectOption\n selectedIndex: number | null\n selectedLabel: string\n selectedOption: SuperSelectOption | null\n setOpen: (open: boolean) => void\n pointer: boolean\n setPointer: any\n setActiveMenuIndex: (index: number | null) => void\n setSearchValue: ((value: string) => void) & { cancel: () => void }\n sourceOptions: SuperSelectOption[]\n value: SuperSelectValue\n width: number\n }\n props: {\n clear: () => Record<string, any>\n emptyMessage: () => Record<string, any>\n footer: () => Record<string, any>\n header: () => Record<string, any>\n item: (...args: any[]) => Record<string, any>\n label: () => Record<string, any>\n menu: () => Record<string, any>\n multiInput: () => Record<string, any>\n overlay: () => Record<string, any>\n search: () => Record<string, any>\n searchContainer: () => Record<string, any>\n statusMessage: () => Record<string, any>\n tokenClear: (index: number) => Record<string, any>\n trigger: () => Record<string, any>\n virtuoso: () => Record<string, any>\n }\n option: {\n group: (option: SuperSelectOption) => string\n isBatch: (option: SuperSelectOption) => boolean\n isPartiallySelected: (option: SuperSelectOption) => boolean\n isSelected: (option: SuperSelectOption) => boolean\n isDisabled: (option: SuperSelectOption) => boolean\n isOptgroup: (option: SuperSelectOption) => boolean\n isOptSelectAll: (option: SuperSelectOption) => boolean\n label: (option: SuperSelectOption) => string\n selectAll: {\n isSelectAllPartiallySelected: (options: SuperSelectOption[]) => boolean\n isSelectAllSelected: (options: SuperSelectOption[]) => boolean\n }\n value: (option: SuperSelectOption) => SuperSelectValuePrimitive\n }\n refs: {\n floating: any\n navigationList: any\n virtuoso: React.RefObject<VirtuosoHandle>\n }\n}\n\nexport interface SuperSelectTriggerProps {\n block?: boolean\n disabled?: boolean\n error?: boolean\n loading?: boolean\n placeholder?: string\n search?: boolean\n tabIndex?: number\n}\n\nexport interface SuperSelectOptgroup {\n label: string\n id: string\n [isOptgroupSymbol]: true\n}\n\nexport interface SuperSelectMenuItemProps\n extends React.HTMLAttributes<HTMLDivElement> {\n isDragging?: boolean\n // data attributes are passed by Virtuoso\n 'data-known-size'?: number\n 'data-index': number\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"SuperSelect.types.js","names":[],"sources":["../../src/SuperSelect/SuperSelect.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { VirtuosoHandle } from 'react-virtuoso'\nimport type * as defaultComponents from './SuperSelect.components'\nimport type { isOptgroupSymbol } from './SuperSelect.constants'\n\nexport interface TokenNavigationProps {\n enabled?: boolean\n tokenRemoveRefs?: React.MutableRefObject<Array<HTMLButtonElement | null>>\n value?: SuperSelectValue\n}\n\nexport interface KeyboardSelectionProps {\n enabled?: boolean\n onSelect?: () => void\n}\n\nexport type SuperSelectValuePrimitive = boolean | string | number\n\nexport type SuperSelectValue =\n | SuperSelectValuePrimitive\n | Array<SuperSelectValuePrimitive>\n | null\n\nexport type SuperSelectOption = any\n\nexport type SuperSelectPreset = '' | 'pill' | 'filter' | 'contacts'\n\nexport type SuperSelectResult = {\n destination?: { index: number } | null\n source: { index: number }\n}\n\nexport interface SuperSelectPresetProps {\n filter?: {\n filterName?: string\n }\n pill?: {}\n contacts?: {}\n ''?: {}\n}\n\nexport interface SuperSelectConfig {\n block?: boolean\n components?: Partial<typeof defaultComponents>\n defaultValue?: SuperSelectValue\n disabled?: boolean\n draggable?: boolean\n emptyMessage?: string\n selectAllEnabled?: boolean\n error?: boolean\n footer?: React.ReactElement\n getOptionGroup?: (option: SuperSelectOption) => string\n getOptionIsBatch?: (option: SuperSelectOption) => boolean\n getOptionIsDisabled?: (option: SuperSelectOption) => boolean\n getOptionIsPartiallySelected?: (option: SuperSelectOption) => boolean\n getOptionIsSelected?: (option: SuperSelectOption) => boolean\n getOptionLabel?: (option: SuperSelectOption) => string\n getOptionValue?: (option: SuperSelectOption) => SuperSelectValuePrimitive\n header?: React.ReactElement\n loading?: boolean\n multiple?: boolean\n onChange?: (value: SuperSelectValue) => void\n onManualSort?: (options: SuperSelectOption[]) => void\n onUnselectAll?: (\n value: SuperSelectValue,\n options: SuperSelectOption[],\n searchValue: string,\n getValue: (opt: SuperSelectOption) => Array<SuperSelectValuePrimitive>\n ) => SuperSelectValue\n /**\n * Callback function triggered when the \"Select All\" functionality is used in a multi-select SuperSelect.\n *\n * This prop is only relevant when `multiple={true}` and `selectAllEnabled={true}`. The callback is invoked\n * when users interact with a select all option in the select list that allows them to\n * select or deselect all available options at once.\n *\n * @param selectedOptions - An array of all options that would be selected when \"Select All\" is triggered.\n * This includes all selectable options (excluding disabled options) that are\n * currently visible and available for selection.\n *\n * @remarks\n * - Only called when the component is in multi-select mode (`multiple={true}`)\n * - Requires `selectAllEnabled={true}` to show the select-all UI\n * - Disabled options are automatically excluded from the selectedOptions array\n * - Allows additional customization of select-all behavior if needed by implementing custom logic within the callback\n *\n * @see {@link selectAllEnabled} - Enable the select-all functionality\n * @see {@link multiple} - Enable multi-select mode\n * @see {@link getOptionIsDisabled} - Function to determine if options are disabled\n */\n onSelectAll?: (selectedOptions: SuperSelectOption[]) => void\n onScrollBottom?: () => void\n onOpenChange?: (open: boolean) => void\n options?: SuperSelectOption[]\n placeholder?: string\n preset?: SuperSelectPreset\n presetProps?: SuperSelectPresetProps\n /**\n * Marks the field as mandatory for assistive technology by setting\n * `aria-required` on the element carrying `role=\"combobox\"`. The visual\n * required mark is rendered separately by `Form.Field`.\n */\n required?: boolean\n search?: boolean\n selectionStyle?: 'highlight' | 'checkbox' | 'checkmark'\n setOptionGroup?: (\n option: SuperSelectOption,\n group: string\n ) => SuperSelectOption\n sort?: boolean\n tabIndex?: number\n value?: SuperSelectValue\n overlayMatchesTriggerWidth?: boolean\n 'aria-label'?: string\n 'aria-labelledby'?: string\n}\n\nexport type SuperSelectProps = SuperSelectConfig\n\nexport interface SuperSelectApi {\n config: {\n block: boolean\n disabled: boolean\n draggable: boolean\n emptyMessage: string\n error?: boolean\n footer?: React.ReactElement\n header?: React.ReactElement\n placeholder?: string\n preset: SuperSelectPreset\n presetProps?: any\n required: boolean\n selectionStyle: 'highlight' | 'token' | 'checkbox' | 'checkmark'\n tabIndex: number\n loading: boolean\n multiple: boolean\n selectAllEnabled: boolean\n }\n components: typeof defaultComponents\n state: {\n activeMenuIndex: number | null\n isEmpty: () => boolean\n isSelectAllActive: boolean\n listContainerHeight: number\n listId: string\n maxHeight: number\n tokenListId: string\n onDragEnd: (result: SuperSelectResult) => void\n onSelect: (option: SuperSelectOption) => void\n onSelectAll?: (selectedOptions: SuperSelectOption[]) => void\n open: boolean\n options: SuperSelectOption[]\n overlayId: string\n searchValue: string\n selectAllOption: SuperSelectOption\n selectedIndex: number | null\n selectedLabel: string\n selectedOption: SuperSelectOption | null\n setOpen: (open: boolean) => void\n pointer: boolean\n setPointer: any\n setActiveMenuIndex: (index: number | null) => void\n setSearchValue: ((value: string) => void) & { cancel: () => void }\n sourceOptions: SuperSelectOption[]\n value: SuperSelectValue\n width: number\n }\n props: {\n clear: () => Record<string, any>\n emptyMessage: () => Record<string, any>\n footer: () => Record<string, any>\n header: () => Record<string, any>\n item: (...args: any[]) => Record<string, any>\n label: () => Record<string, any>\n menu: () => Record<string, any>\n multiInput: () => Record<string, any>\n overlay: () => Record<string, any>\n search: () => Record<string, any>\n searchContainer: () => Record<string, any>\n statusMessage: () => Record<string, any>\n tokenClear: (index: number) => Record<string, any>\n trigger: () => Record<string, any>\n virtuoso: () => Record<string, any>\n }\n option: {\n group: (option: SuperSelectOption) => string\n isBatch: (option: SuperSelectOption) => boolean\n isPartiallySelected: (option: SuperSelectOption) => boolean\n isSelected: (option: SuperSelectOption) => boolean\n isDisabled: (option: SuperSelectOption) => boolean\n isOptgroup: (option: SuperSelectOption) => boolean\n isOptSelectAll: (option: SuperSelectOption) => boolean\n label: (option: SuperSelectOption) => string\n selectAll: {\n isSelectAllPartiallySelected: (options: SuperSelectOption[]) => boolean\n isSelectAllSelected: (options: SuperSelectOption[]) => boolean\n }\n value: (option: SuperSelectOption) => SuperSelectValuePrimitive\n }\n refs: {\n floating: any\n navigationList: any\n virtuoso: React.RefObject<VirtuosoHandle>\n }\n}\n\nexport interface SuperSelectTriggerProps {\n block?: boolean\n disabled?: boolean\n error?: boolean\n loading?: boolean\n placeholder?: string\n search?: boolean\n tabIndex?: number\n}\n\nexport interface SuperSelectOptgroup {\n label: string\n id: string\n [isOptgroupSymbol]: true\n}\n\nexport interface SuperSelectMenuItemProps\n extends React.HTMLAttributes<HTMLDivElement> {\n isDragging?: boolean\n // data attributes are passed by Virtuoso\n 'data-known-size'?: number\n 'data-index': number\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { SuperSelectApi, SuperSelectConfig } from './SuperSelect.types';
3
- export declare function useSuperSelect({ block, components: customComponents, defaultValue, disabled, draggable, emptyMessage, selectAllEnabled, error, footer, getOptionGroup, getOptionIsBatch, getOptionIsDisabled, getOptionLabel, getOptionIsPartiallySelected, getOptionIsSelected, getOptionValue, onScrollBottom, onOpenChange, header, loading, multiple, onChange, onManualSort, onUnselectAll, onSelectAll, options: sourceOptions, placeholder, preset, presetProps, search, selectionStyle, setOptionGroup, sort, tabIndex, value: value_, overlayMatchesTriggerWidth, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: SuperSelectConfig): SuperSelectApi;
3
+ export declare function useSuperSelect({ block, components: customComponents, defaultValue, disabled, draggable, emptyMessage, selectAllEnabled, error, footer, getOptionGroup, getOptionIsBatch, getOptionIsDisabled, getOptionLabel, getOptionIsPartiallySelected, getOptionIsSelected, getOptionValue, onScrollBottom, onOpenChange, header, loading, multiple, onChange, onManualSort, onUnselectAll, onSelectAll, options: sourceOptions, placeholder, preset, presetProps, required, search, selectionStyle, setOptionGroup, sort, tabIndex, value: value_, overlayMatchesTriggerWidth, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: SuperSelectConfig): SuperSelectApi;
4
4
  export declare const SuperSelectContext: React.Context<SuperSelectApi | null>;
5
5
  export declare function useSuperSelectContext(): SuperSelectApi;
@@ -28,10 +28,10 @@ import { draggableOptionIdSymbol, isOptSelectAllSymbol } from './SuperSelect.con
28
28
  import { extendedSelectMenuWidth } from './SuperSelect.styles';
29
29
  import { collectGroupsInOrderOfOccurrence, createOptgroup, defaultOnUnselectAll, getBatchOptionFormatter, getIsAllOptionsUngrouped, getOptionIsOptgroup, getOptionIsOptSelectAll, getOptionsSortingAlgorithm, isMultiple, removeEmptyOptGroups, reorder, sortOptgroups } from './SuperSelect.utils';
30
30
  var listContainerVerticalPadding = spacing.sm * 2;
31
- /* Based on item height + padding (~35px), this minimum height is enough to show 4-6 items before
32
- * the overflow is hidden before scrolling. This will ensure the dropdown doesn't open with minimal
33
- * height, which would lead to a poor scrolling experience. */
34
- var reasonableDropdownMinimumHeight = 248;
31
+ // Comfortably taller than any real viewport, so releasing the overlay's height
32
+ // clamp (see `desiredContentHeight` below) can't blow up to a virtualized list's
33
+ // full (potentially huge) content height.
34
+ var maxOverlayReleaseHeight = 2000;
35
35
  function noop() {}
36
36
  function defaultGetOptionValue(option) {
37
37
  return option === null || option === void 0 ? void 0 : option.value;
@@ -151,6 +151,8 @@ export function useSuperSelect(_ref3) {
151
151
  _ref3$preset = _ref3.preset,
152
152
  preset = _ref3$preset === void 0 ? '' : _ref3$preset,
153
153
  presetProps = _ref3.presetProps,
154
+ _ref3$required = _ref3.required,
155
+ required = _ref3$required === void 0 ? false : _ref3$required,
154
156
  _ref3$search = _ref3.search,
155
157
  search = _ref3$search === void 0 ? true : _ref3$search,
156
158
  _ref3$selectionStyle = _ref3.selectionStyle,
@@ -388,6 +390,22 @@ export function useSuperSelect(_ref3) {
388
390
  footerHeight = _React$useState16[0],
389
391
  setFooterHeight = _React$useState16[1];
390
392
  var listContainerHeight = Math.min(maxHeight - searchHeight - footerHeight + listContainerVerticalPadding, listHeight + listContainerVerticalPadding);
393
+ var desiredContentHeight = searchHeight + listHeight + footerHeight + listContainerVerticalPadding;
394
+ var desiredContentHeightRef = React.useRef(desiredContentHeight);
395
+ React.useEffect(function () {
396
+ if (!open) {
397
+ desiredContentHeightRef.current = 0;
398
+ setListHeight(0);
399
+ setSearchHeight(0);
400
+ setFooterHeight(0);
401
+ return;
402
+ }
403
+ if (desiredContentHeight <= desiredContentHeightRef.current) {
404
+ return;
405
+ }
406
+ desiredContentHeightRef.current = desiredContentHeight;
407
+ setMaxHeight(Math.min(desiredContentHeight, maxOverlayReleaseHeight));
408
+ }, [desiredContentHeight, open]);
391
409
  var _React$useState17 = React.useState(''),
392
410
  _React$useState18 = _slicedToArray(_React$useState17, 2),
393
411
  searchValue = _React$useState18[0],
@@ -920,7 +938,8 @@ export function useSuperSelect(_ref3) {
920
938
  'aria-controls': open ? listId : undefined,
921
939
  'aria-describedby': selectedValueId,
922
940
  'aria-expanded': open,
923
- 'aria-haspopup': 'listbox'
941
+ 'aria-haspopup': 'listbox',
942
+ 'aria-required': required || undefined
924
943
  }, getAriaLabelProps()), {}, {
925
944
  role: 'combobox',
926
945
  tabIndex: disabled ? -1 : tabIndex
@@ -975,7 +994,8 @@ export function useSuperSelect(_ref3) {
975
994
  'aria-activedescendant': activeDescendantId,
976
995
  'aria-controls': open ? listId : undefined,
977
996
  'aria-expanded': open,
978
- 'aria-haspopup': 'listbox'
997
+ 'aria-haspopup': 'listbox',
998
+ 'aria-required': required || undefined
979
999
  }, getAriaLabelProps()), {}, {
980
1000
  role: 'combobox',
981
1001
  ref: searchRef,
@@ -1297,6 +1317,7 @@ export function useSuperSelect(_ref3) {
1297
1317
  placeholder: placeholder,
1298
1318
  preset: preset,
1299
1319
  presetProps: presetProps,
1320
+ required: required,
1300
1321
  selectionStyle: selectionStyle,
1301
1322
  tabIndex: tabIndex,
1302
1323
  loading: loading,