@transferwise/components 0.0.0-experimental-ff10c0d → 0.0.0-experimental-3ebadff

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 (68) hide show
  1. package/build/dateInput/DateInput.js +37 -12
  2. package/build/dateInput/DateInput.js.map +1 -1
  3. package/build/dateInput/DateInput.mjs +39 -14
  4. package/build/dateInput/DateInput.mjs.map +1 -1
  5. package/build/dateLookup/DateLookup.js +4 -2
  6. package/build/dateLookup/DateLookup.js.map +1 -1
  7. package/build/dateLookup/DateLookup.mjs +4 -2
  8. package/build/dateLookup/DateLookup.mjs.map +1 -1
  9. package/build/dateLookup/dateTrigger/DateTrigger.js +2 -0
  10. package/build/dateLookup/dateTrigger/DateTrigger.js.map +1 -1
  11. package/build/dateLookup/dateTrigger/DateTrigger.mjs +2 -0
  12. package/build/dateLookup/dateTrigger/DateTrigger.mjs.map +1 -1
  13. package/build/field/Field.js +7 -2
  14. package/build/field/Field.js.map +1 -1
  15. package/build/field/Field.mjs +13 -8
  16. package/build/field/Field.mjs.map +1 -1
  17. package/build/inputs/InputGroup.js +1 -1
  18. package/build/inputs/InputGroup.js.map +1 -1
  19. package/build/inputs/InputGroup.mjs +2 -2
  20. package/build/inputs/InputGroup.mjs.map +1 -1
  21. package/build/inputs/SelectInput.js +11 -44
  22. package/build/inputs/SelectInput.js.map +1 -1
  23. package/build/inputs/SelectInput.mjs +11 -44
  24. package/build/inputs/SelectInput.mjs.map +1 -1
  25. package/build/inputs/contexts.js +8 -4
  26. package/build/inputs/contexts.js.map +1 -1
  27. package/build/inputs/contexts.mjs +7 -4
  28. package/build/inputs/contexts.mjs.map +1 -1
  29. package/build/label/Label.js +14 -8
  30. package/build/label/Label.js.map +1 -1
  31. package/build/label/Label.mjs +14 -8
  32. package/build/label/Label.mjs.map +1 -1
  33. package/build/moneyInput/MoneyInput.js +6 -5
  34. package/build/moneyInput/MoneyInput.js.map +1 -1
  35. package/build/moneyInput/MoneyInput.mjs +6 -5
  36. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  37. package/build/phoneNumberInput/PhoneNumberInput.js +24 -2
  38. package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
  39. package/build/phoneNumberInput/PhoneNumberInput.mjs +26 -4
  40. package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  41. package/build/types/dateInput/DateInput.d.ts +2 -2
  42. package/build/types/dateInput/DateInput.d.ts.map +1 -1
  43. package/build/types/dateLookup/DateLookup.d.ts.map +1 -1
  44. package/build/types/dateLookup/dateTrigger/DateTrigger.d.ts +1 -0
  45. package/build/types/dateLookup/dateTrigger/DateTrigger.d.ts.map +1 -1
  46. package/build/types/field/Field.d.ts.map +1 -1
  47. package/build/types/inputs/InputGroup.d.ts.map +1 -1
  48. package/build/types/inputs/SelectInput.d.ts +3 -2
  49. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  50. package/build/types/inputs/contexts.d.ts +6 -1
  51. package/build/types/inputs/contexts.d.ts.map +1 -1
  52. package/build/types/label/Label.d.ts +5 -15
  53. package/build/types/label/Label.d.ts.map +1 -1
  54. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  55. package/build/types/phoneNumberInput/PhoneNumberInput.d.ts.map +1 -1
  56. package/package.json +3 -3
  57. package/src/dateInput/DateInput.tsx +45 -15
  58. package/src/dateLookup/DateLookup.tsx +5 -3
  59. package/src/dateLookup/dateTrigger/DateTrigger.tsx +3 -0
  60. package/src/field/Field.tsx +6 -5
  61. package/src/inputs/InputGroup.tsx +3 -4
  62. package/src/inputs/SelectInput.story.tsx +0 -94
  63. package/src/inputs/SelectInput.tsx +14 -69
  64. package/src/inputs/contexts.tsx +12 -3
  65. package/src/label/Label.tsx +26 -20
  66. package/src/moneyInput/MoneyInput.spec.tsx +2 -1
  67. package/src/moneyInput/MoneyInput.tsx +7 -6
  68. package/src/phoneNumberInput/PhoneNumberInput.tsx +31 -10
@@ -2,7 +2,7 @@ import { clsx } from 'clsx';
2
2
  import { useContext, createContext, useState, useMemo, useRef } from 'react';
3
3
  import { useResizeObserver } from '../common/hooks/useResizeObserver.mjs';
4
4
  import { cssValueWithUnit } from '../utilities/cssValueWithUnit.mjs';
5
- import { FieldLabelIdContextProvider, InputIdContextProvider, InputDescribedByProvider, InputInvalidProvider } from './contexts.mjs';
5
+ import { FieldLabelContextProvider, InputIdContextProvider, InputDescribedByProvider, InputInvalidProvider } from './contexts.mjs';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
8
8
  const InputPaddingStartContext = /*#__PURE__*/createContext([undefined, () => {}]);
@@ -72,7 +72,7 @@ function InputAddon({
72
72
  setInputPadding(entry.contentRect.width + Number.parseFloat(targetStyle.paddingInlineStart) + Number.parseFloat(targetStyle.paddingInlineEnd));
73
73
  }
74
74
  });
75
- return /*#__PURE__*/ /* Prevent nested controls from being labeled redundantly */jsx(FieldLabelIdContextProvider, {
75
+ return /*#__PURE__*/ /* Prevent nested controls from being labeled redundantly */jsx(FieldLabelContextProvider, {
76
76
  value: undefined,
77
77
  children: /*#__PURE__*/jsx(InputIdContextProvider, {
78
78
  value: undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.mjs","sources":["../../src/inputs/InputGroup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createContext, useContext, useMemo, useRef, useState } from 'react';\n\nimport { useResizeObserver } from '../common/hooks/useResizeObserver';\nimport { cssValueWithUnit } from '../utilities/cssValueWithUnit';\nimport {\n FieldLabelIdContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n useInputAttributes,\n} from './contexts';\n\ntype InputPaddingContextType = [\n number | string | undefined,\n React.Dispatch<React.SetStateAction<number | string | undefined>>,\n];\n\nconst InputPaddingStartContext = createContext<InputPaddingContextType>([undefined, () => {}]);\n\nconst InputPaddingEndContext = createContext<InputPaddingContextType>([undefined, () => {}]);\n\nexport function useInputPaddings() {\n const [paddingStart] = useContext(InputPaddingStartContext);\n const [paddingEnd] = useContext(InputPaddingEndContext);\n\n return {\n paddingInlineStart: paddingStart,\n paddingInlineEnd: paddingEnd,\n } satisfies React.CSSProperties;\n}\n\ninterface InputGroupAddon {\n content: React.ReactNode;\n initialContentWidth?: number | string;\n interactive?: boolean;\n padding?: 'none' | 'sm' | 'md';\n}\n\nexport interface InputGroupProps {\n addonStart?: InputGroupAddon;\n addonEnd?: InputGroupAddon;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nfunction inputPaddingInitialState({\n initialContentWidth,\n padding = inputAddonDefaultPadding,\n}: Pick<\n InputGroupAddon,\n 'initialContentWidth' | 'padding'\n> = {}): () => InputPaddingContextType[0] {\n return () =>\n initialContentWidth != null\n ? `calc(${cssValueWithUnit(initialContentWidth)} + ${cssValueWithUnit(\n inputAddonContentWidthAddendByPadding[padding],\n )})`\n : undefined;\n}\n\nexport function InputGroup({\n addonStart,\n addonEnd,\n disabled,\n className,\n children,\n}: InputGroupProps) {\n const [paddingStart, setPaddingStart] = useState(inputPaddingInitialState(addonStart));\n const [paddingEnd, setPaddingEnd] = useState(inputPaddingInitialState(addonEnd));\n\n return (\n <InputPaddingStartContext.Provider\n value={useMemo(() => [paddingStart, setPaddingStart], [paddingStart])}\n >\n <InputPaddingEndContext.Provider\n value={useMemo(() => [paddingEnd, setPaddingEnd], [paddingEnd])}\n >\n <fieldset disabled={disabled} className={clsx(className, 'np-input-group')}>\n {addonStart != null ? <InputAddon placement=\"start\" {...addonStart} /> : null}\n {children}\n {addonEnd != null ? <InputAddon placement=\"end\" {...addonEnd} /> : null}\n </fieldset>\n </InputPaddingEndContext.Provider>\n </InputPaddingStartContext.Provider>\n );\n}\n\ninterface InputAddonProps extends Omit<InputGroupAddon, 'initialContentWidth'> {\n placement: 'start' | 'end';\n}\n\nconst inputAddonContentWidthAddendByPadding = {\n none: 0,\n sm: '1rem',\n md: '1.5rem',\n} satisfies {\n [key in NonNullable<InputAddonProps['padding']>]: InputPaddingContextType[0];\n};\n\nconst inputAddonDefaultPadding = 'md' satisfies InputAddonProps['padding'];\n\nfunction InputAddon({\n placement,\n content,\n interactive,\n padding = inputAddonDefaultPadding,\n}: InputAddonProps) {\n const [, setInputPadding] = useContext(\n placement === 'start' ? InputPaddingStartContext : InputPaddingEndContext,\n );\n\n const ref = useRef<HTMLSpanElement>(null);\n useResizeObserver(ref, (entry) => {\n // TODO: Remove fallback once most browsers support `borderBoxSize`\n const inlineSize = entry.borderBoxSize?.[0]?.inlineSize;\n if (inlineSize != null) {\n setInputPadding(inlineSize);\n } else {\n const targetStyle = getComputedStyle(entry.target);\n setInputPadding(\n entry.contentRect.width +\n Number.parseFloat(targetStyle.paddingInlineStart) +\n Number.parseFloat(targetStyle.paddingInlineEnd),\n );\n }\n });\n\n return (\n /* Prevent nested controls from being labeled redundantly */\n <FieldLabelIdContextProvider value={undefined}>\n <InputIdContextProvider value={undefined}>\n <InputDescribedByProvider value={undefined}>\n <InputInvalidProvider value={undefined}>\n <span\n ref={ref}\n className={clsx(\n 'np-input-addon',\n {\n 'np-input-addon--placement-start': placement === 'start',\n 'np-input-addon--placement-end': placement === 'end',\n },\n interactive && 'np-input-addon--interactive',\n {\n 'np-input-addon--padding-sm': padding === 'sm',\n 'np-input-addon--padding-md': padding === 'md',\n },\n )}\n >\n {content}\n </span>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelIdContextProvider>\n );\n}\n"],"names":["InputPaddingStartContext","createContext","undefined","InputPaddingEndContext","useInputPaddings","paddingStart","useContext","paddingEnd","paddingInlineStart","paddingInlineEnd","inputPaddingInitialState","initialContentWidth","padding","inputAddonDefaultPadding","cssValueWithUnit","inputAddonContentWidthAddendByPadding","InputGroup","addonStart","addonEnd","disabled","className","children","setPaddingStart","useState","setPaddingEnd","_jsx","Provider","value","useMemo","_jsxs","clsx","InputAddon","placement","none","sm","md","content","interactive","setInputPadding","ref","useRef","useResizeObserver","entry","inlineSize","borderBoxSize","targetStyle","getComputedStyle","target","contentRect","width","Number","parseFloat","FieldLabelIdContextProvider","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider"],"mappings":"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"}
1
+ {"version":3,"file":"InputGroup.mjs","sources":["../../src/inputs/InputGroup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createContext, useContext, useMemo, useRef, useState } from 'react';\n\nimport { useResizeObserver } from '../common/hooks/useResizeObserver';\nimport { cssValueWithUnit } from '../utilities/cssValueWithUnit';\nimport {\n FieldLabelContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from './contexts';\n\ntype InputPaddingContextType = [\n number | string | undefined,\n React.Dispatch<React.SetStateAction<number | string | undefined>>,\n];\n\nconst InputPaddingStartContext = createContext<InputPaddingContextType>([undefined, () => {}]);\n\nconst InputPaddingEndContext = createContext<InputPaddingContextType>([undefined, () => {}]);\n\nexport function useInputPaddings() {\n const [paddingStart] = useContext(InputPaddingStartContext);\n const [paddingEnd] = useContext(InputPaddingEndContext);\n\n return {\n paddingInlineStart: paddingStart,\n paddingInlineEnd: paddingEnd,\n } satisfies React.CSSProperties;\n}\n\ninterface InputGroupAddon {\n content: React.ReactNode;\n initialContentWidth?: number | string;\n interactive?: boolean;\n padding?: 'none' | 'sm' | 'md';\n}\n\nexport interface InputGroupProps {\n addonStart?: InputGroupAddon;\n addonEnd?: InputGroupAddon;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n}\n\nfunction inputPaddingInitialState({\n initialContentWidth,\n padding = inputAddonDefaultPadding,\n}: Pick<\n InputGroupAddon,\n 'initialContentWidth' | 'padding'\n> = {}): () => InputPaddingContextType[0] {\n return () =>\n initialContentWidth != null\n ? `calc(${cssValueWithUnit(initialContentWidth)} + ${cssValueWithUnit(\n inputAddonContentWidthAddendByPadding[padding],\n )})`\n : undefined;\n}\n\nexport function InputGroup({\n addonStart,\n addonEnd,\n disabled,\n className,\n children,\n}: InputGroupProps) {\n const [paddingStart, setPaddingStart] = useState(inputPaddingInitialState(addonStart));\n const [paddingEnd, setPaddingEnd] = useState(inputPaddingInitialState(addonEnd));\n\n return (\n <InputPaddingStartContext.Provider\n value={useMemo(() => [paddingStart, setPaddingStart], [paddingStart])}\n >\n <InputPaddingEndContext.Provider\n value={useMemo(() => [paddingEnd, setPaddingEnd], [paddingEnd])}\n >\n <fieldset disabled={disabled} className={clsx(className, 'np-input-group')}>\n {addonStart != null ? <InputAddon placement=\"start\" {...addonStart} /> : null}\n {children}\n {addonEnd != null ? <InputAddon placement=\"end\" {...addonEnd} /> : null}\n </fieldset>\n </InputPaddingEndContext.Provider>\n </InputPaddingStartContext.Provider>\n );\n}\n\ninterface InputAddonProps extends Omit<InputGroupAddon, 'initialContentWidth'> {\n placement: 'start' | 'end';\n}\n\nconst inputAddonContentWidthAddendByPadding = {\n none: 0,\n sm: '1rem',\n md: '1.5rem',\n} satisfies {\n [key in NonNullable<InputAddonProps['padding']>]: InputPaddingContextType[0];\n};\n\nconst inputAddonDefaultPadding = 'md' satisfies InputAddonProps['padding'];\n\nfunction InputAddon({\n placement,\n content,\n interactive,\n padding = inputAddonDefaultPadding,\n}: InputAddonProps) {\n const [, setInputPadding] = useContext(\n placement === 'start' ? InputPaddingStartContext : InputPaddingEndContext,\n );\n\n const ref = useRef<HTMLSpanElement>(null);\n useResizeObserver(ref, (entry) => {\n // TODO: Remove fallback once most browsers support `borderBoxSize`\n const inlineSize = entry.borderBoxSize?.[0]?.inlineSize;\n if (inlineSize != null) {\n setInputPadding(inlineSize);\n } else {\n const targetStyle = getComputedStyle(entry.target);\n setInputPadding(\n entry.contentRect.width +\n Number.parseFloat(targetStyle.paddingInlineStart) +\n Number.parseFloat(targetStyle.paddingInlineEnd),\n );\n }\n });\n\n return (\n /* Prevent nested controls from being labeled redundantly */\n <FieldLabelContextProvider value={undefined}>\n <InputIdContextProvider value={undefined}>\n <InputDescribedByProvider value={undefined}>\n <InputInvalidProvider value={undefined}>\n <span\n ref={ref}\n className={clsx(\n 'np-input-addon',\n {\n 'np-input-addon--placement-start': placement === 'start',\n 'np-input-addon--placement-end': placement === 'end',\n },\n interactive && 'np-input-addon--interactive',\n {\n 'np-input-addon--padding-sm': padding === 'sm',\n 'np-input-addon--padding-md': padding === 'md',\n },\n )}\n >\n {content}\n </span>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelContextProvider>\n );\n}\n"],"names":["InputPaddingStartContext","createContext","undefined","InputPaddingEndContext","useInputPaddings","paddingStart","useContext","paddingEnd","paddingInlineStart","paddingInlineEnd","inputPaddingInitialState","initialContentWidth","padding","inputAddonDefaultPadding","cssValueWithUnit","inputAddonContentWidthAddendByPadding","InputGroup","addonStart","addonEnd","disabled","className","children","setPaddingStart","useState","setPaddingEnd","_jsx","Provider","value","useMemo","_jsxs","clsx","InputAddon","placement","none","sm","md","content","interactive","setInputPadding","ref","useRef","useResizeObserver","entry","inlineSize","borderBoxSize","targetStyle","getComputedStyle","target","contentRect","width","Number","parseFloat","FieldLabelContextProvider","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider"],"mappings":"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"}
@@ -155,7 +155,6 @@ function SelectInput({
155
155
  name,
156
156
  multiple,
157
157
  placeholder,
158
- autocomplete,
159
158
  items,
160
159
  defaultValue,
161
160
  value: controlledValue,
@@ -169,6 +168,7 @@ function SelectInput({
169
168
  size = 'md',
170
169
  className,
171
170
  UNSAFE_triggerButtonProps,
171
+ triggerRef: externalTriggerRef,
172
172
  onFilterChange = noop,
173
173
  onChange,
174
174
  onOpen,
@@ -205,7 +205,7 @@ function SelectInput({
205
205
  });
206
206
  }
207
207
  });
208
- const triggerRef = React.useRef(null);
208
+ const internalTriggerRef = React.useRef(null);
209
209
  const screenSm = useScreenSize.useScreenSize(breakpoint.Breakpoint.SMALL);
210
210
  const OptionsOverlay = screenSm ? _Popover.Popover : _BottomSheet.BottomSheet;
211
211
  const searchInputRef = React.useRef(null);
@@ -262,7 +262,12 @@ function SelectInput({
262
262
  value: {
263
263
  ref: node => {
264
264
  ref(node);
265
- triggerRef.current = node;
265
+ if (externalTriggerRef) {
266
+ // eslint-disable-next-line no-param-reassign
267
+ externalTriggerRef.current = node;
268
+ } else {
269
+ internalTriggerRef.current = node;
270
+ }
266
271
  },
267
272
  ...inputAttributes,
268
273
  ...UNSAFE_triggerButtonProps,
@@ -286,7 +291,7 @@ function SelectInput({
286
291
  placeholderShown,
287
292
  clear: onClear != null ? () => {
288
293
  onClear();
289
- triggerRef.current?.focus({
294
+ (externalTriggerRef?.current ?? internalTriggerRef.current)?.focus({
290
295
  preventScroll: true
291
296
  });
292
297
  } : undefined,
@@ -315,15 +320,7 @@ function SelectInput({
315
320
  searchInputRef: searchInputRef,
316
321
  listboxRef: listboxRef,
317
322
  filterQuery: deferredFilterQuery,
318
- autocomplete: autocomplete,
319
- name: name,
320
323
  onFilterChange: setFilterQuery,
321
- onAutocompleteSelect: matchedValue => {
322
- onChange?.(matchedValue);
323
- if (!multiple) {
324
- setOpen(false);
325
- }
326
- },
327
324
  ...getListBoxLabelProps()
328
325
  })
329
326
  });
@@ -403,10 +400,7 @@ function SelectInputOptions({
403
400
  filterQuery,
404
401
  onFilterChange,
405
402
  listBoxLabel,
406
- listBoxLabelledBy,
407
- autocomplete,
408
- name,
409
- onAutocompleteSelect
403
+ listBoxLabelledBy
410
404
  }) {
411
405
  const intl = reactIntl.useIntl();
412
406
  const virtualiserHandlerRef = React.useRef(null);
@@ -472,15 +466,6 @@ function SelectInputOptions({
472
466
  needle: needle
473
467
  }, index);
474
468
  };
475
- const findMatchingItem = autocompleteValue => {
476
- const flatOptions = items.flatMap(item => item.type === 'group' ? item.options : item.type === 'option' ? [item] : []).filter(item => item.type === 'option' && item.value != null);
477
- const exactMatch = flatOptions.find(option => String(option.value) === autocompleteValue || option.filterMatchers?.some(matcher => matcher === autocompleteValue));
478
- if (exactMatch) {
479
- return exactMatch.value;
480
- }
481
- const fuzzyMatch = flatOptions.find(option => option.filterMatchers?.some(matcher => matcher.toLowerCase().includes(autocompleteValue.toLowerCase())));
482
- return fuzzyMatch ? fuzzyMatch.value : null;
483
- };
484
469
  return /*#__PURE__*/jsxRuntime.jsxs(react.Listbox.Options, {
485
470
  as: SelectInputOptionsContainer,
486
471
  static: true,
@@ -499,8 +484,6 @@ function SelectInputOptions({
499
484
  children: /*#__PURE__*/jsxRuntime.jsx(SearchInput.SearchInput, {
500
485
  ref: searchInputRef,
501
486
  id: id,
502
- name: name,
503
- autoComplete: autocomplete,
504
487
  role: "combobox",
505
488
  shape: "rectangle",
506
489
  placeholder: filterPlaceholder,
@@ -520,24 +503,8 @@ function SelectInputOptions({
520
503
  onChange: event => {
521
504
  // Free up resources and ensure not to go out of bounds when the
522
505
  // resulting item count is less than before
523
- const inputValue = event.currentTarget.value;
524
- // Free up resources and ensure not to go out of bounds
525
506
  setMountedIndexes([]);
526
- onFilterChange(inputValue);
527
- },
528
- onInput: event => {
529
- const inputValue = event.currentTarget.value;
530
- const inputElement = event.currentTarget;
531
- if (autocomplete && onAutocompleteSelect && inputValue) {
532
- setTimeout(() => {
533
- if (inputElement.value === inputValue && inputValue.length > 2) {
534
- const matchedValue = findMatchingItem(inputValue);
535
- if (matchedValue !== null) {
536
- onAutocompleteSelect(matchedValue);
537
- }
538
- }
539
- }, 50);
540
- }
507
+ onFilterChange(event.currentTarget.value);
541
508
  }
542
509
  })
543
510
  }) : null, /*#__PURE__*/jsxRuntime.jsxs("section", {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectInput.js","sources":["../../src/inputs/SelectInput.tsx"],"sourcesContent":["import { Listbox as ListboxBase } from '@headlessui/react';\nimport { Check, ChevronDown, Cross, CrossCircle } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport mergeProps from 'merge-props';\nimport {\n createContext,\n forwardRef,\n ReactNode,\n useContext,\n useDeferredValue,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useIntl } from 'react-intl';\nimport { Virtualizer, type VirtualizerHandle } from 'virtua';\n\nimport { useEffectEvent } from '../common/hooks/useEffectEvent';\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport { PolymorphicWithOverrides } from '../common/polymorphicWithOverrides/PolymorphicWithOverrides';\nimport { Breakpoint } from '../common/propsValues/breakpoint';\nimport dateTriggerMessages from '../dateLookup/dateTrigger/DateTrigger.messages';\nimport { Merge } from '../utils';\n\nimport { BottomSheet } from './_BottomSheet';\nimport { ButtonInput } from './_ButtonInput';\nimport { Popover } from './_Popover';\nimport { useInputAttributes, WithInputAttributesProps } from './contexts';\nimport { InputGroup } from './InputGroup';\nimport { SearchInput } from './SearchInput';\nimport messages from './SelectInput.messages';\nimport Header from '../header';\nimport Section from '../section';\nimport { ButtonProps } from '../button/Button.types';\n\nconst MAX_ITEMS_WITHOUT_VIRTUALIZATION = 50;\n\nfunction searchableString(value: string) {\n return value.trim().replace(/\\s+/gu, ' ').normalize('NFKC').toLowerCase();\n}\n\nfunction inferSearchableStrings(value: unknown) {\n if (typeof value === 'string') {\n return [searchableString(value)];\n }\n\n if (typeof value === 'object' && value != null) {\n return Object.values(value)\n .filter((innerValue) => typeof innerValue === 'string')\n .map((innerValue) => searchableString(innerValue));\n }\n\n return [];\n}\n\nexport interface SelectInputOptionItem<T = string> {\n type: 'option';\n value: T;\n filterMatchers?: readonly string[];\n disabled?: boolean;\n}\n\nexport interface SelectInputGroupItem<T = string> {\n type: 'group';\n label: ReactNode;\n options: readonly SelectInputOptionItem<T>[];\n action?: {\n label: string;\n onClick: ButtonProps['onClick'];\n };\n}\n\nexport interface SelectInputSeparatorItem {\n type: 'separator';\n}\n\nexport type SelectInputItem<T = string> =\n | SelectInputOptionItem<T>\n | SelectInputGroupItem<T>\n | SelectInputSeparatorItem;\n\nfunction dedupeSelectInputOptionItem<T>(\n item: SelectInputOptionItem<T>,\n existingValues: Set<T>,\n): SelectInputOptionItem<T | undefined> {\n if (!existingValues.has(item.value)) {\n existingValues.add(item.value);\n return item;\n }\n return { ...item, value: undefined };\n}\n\n/**\n * Sets the `value` of duplicate option items to `undefined`, hiding them when\n * rendered. Indexes are kept intact within groups to preserve the active item\n * between filter changes when possible.\n */\nfunction dedupeSelectInputItems<T>(\n items: readonly SelectInputItem<T>[],\n): SelectInputItem<T | undefined>[] {\n const existingValues = new Set<T>();\n return items.map((item) => {\n switch (item.type) {\n case 'option': {\n return dedupeSelectInputOptionItem(item, existingValues);\n }\n case 'group': {\n return {\n ...item,\n options: item.options.map((option) =>\n dedupeSelectInputOptionItem(option, existingValues),\n ),\n };\n }\n default:\n }\n return item;\n });\n}\n\nfunction selectInputOptionItemIncludesNeedle<T>(item: SelectInputOptionItem<T>, needle: string) {\n return inferSearchableStrings(item.filterMatchers ?? item.value).some((haystack) =>\n haystack.includes(needle),\n );\n}\n\nfunction filterSelectInputItems<T>(\n items: readonly SelectInputItem<T>[],\n predicate: (item: SelectInputOptionItem<T>) => boolean,\n) {\n return items.filter((item) => {\n switch (item.type) {\n case 'option': {\n return predicate(item);\n }\n case 'group': {\n return item.options.some((option) => predicate(option));\n }\n default:\n }\n return false;\n });\n}\n\nexport interface SelectInputProps<T = string, M extends boolean = false> {\n id?: string;\n /**\n * Sets the `wds-parent` attribute on the listbox container, which is needed for complex components like DateInput to correctly manage event handling.\n * @internal\n */\n parentId?: string;\n name?: string;\n multiple?: M;\n placeholder?: string;\n items: readonly SelectInputItem<NonNullable<T>>[];\n autocomplete?: string;\n defaultValue?: M extends true ? readonly T[] : T;\n value?: M extends true ? readonly T[] : T;\n compareValues?:\n | (keyof NonNullable<T> & string)\n | ((a: T | undefined, b: T | undefined) => boolean);\n renderValue?: (value: NonNullable<T>, withinTrigger: boolean) => React.ReactNode;\n renderFooter?: (args: {\n resultsEmpty: boolean;\n queryNormalized: string | null | undefined;\n }) => React.ReactNode;\n renderTrigger?: (args: {\n content: React.ReactNode;\n placeholderShown: boolean;\n clear: (() => void) | undefined;\n disabled: boolean;\n size: 'sm' | 'md' | 'lg';\n className: string | undefined;\n }) => React.ReactNode;\n filterable?: boolean;\n filterPlaceholder?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n UNSAFE_triggerButtonProps?: WithInputAttributesProps['inputAttributes'] & {\n 'aria-label'?: string;\n };\n onFilterChange?: (args: { query: string; queryNormalized: string | null }) => void;\n onChange?: (value: M extends true ? T[] : T) => void;\n onOpen?: () => void;\n onClose?: () => void;\n onClear?: () => void;\n}\n\nconst defaultRenderTrigger = (({ content, placeholderShown, clear, disabled, size, className }) => (\n <InputGroup\n addonEnd={{\n content: (\n <span className={clsx('np-select-input-addon-container', disabled && 'disabled')}>\n {clear != null && !placeholderShown ? (\n <>\n <SelectInputClearButton\n onClick={(event) => {\n event.preventDefault();\n clear();\n }}\n />\n <span className=\"np-select-input-addon-separator\" />\n </>\n ) : null}\n\n <span className=\"np-select-input-addon\">\n <ChevronDown size={16} />\n </span>\n </span>\n ),\n initialContentWidth: 24 + 4,\n padding: 'sm',\n }}\n disabled={disabled}\n className={className}\n >\n <SelectInputTriggerButton as={ButtonInput} size={size}>\n <span\n className={clsx(\n 'np-select-input-content',\n placeholderShown && 'np-select-input-placeholder',\n )}\n >\n {content}\n </span>\n </SelectInputTriggerButton>\n </InputGroup>\n)) satisfies SelectInputProps['renderTrigger'];\n\ninterface SelectInputClearButtonProps\n extends Pick<React.ComponentPropsWithoutRef<'button'>, 'className' | 'onClick'> {}\n\nfunction SelectInputClearButton({ className, onClick }: SelectInputClearButtonProps) {\n const intl = useIntl();\n\n return (\n <button\n type=\"button\"\n aria-label={intl.formatMessage(dateTriggerMessages.ariaLabel)}\n className={clsx(className, 'np-select-input-addon np-select-input-addon--interactive')}\n onClick={onClick}\n >\n <Cross size={16} />\n </button>\n );\n}\n\nconst noop = () => {};\n\nexport function SelectInput<T = string, M extends boolean = false>({\n id: idProp,\n parentId,\n name,\n multiple,\n placeholder,\n autocomplete,\n items,\n defaultValue,\n value: controlledValue,\n compareValues,\n renderValue = String,\n renderFooter,\n renderTrigger = defaultRenderTrigger,\n filterable,\n filterPlaceholder,\n disabled,\n size = 'md',\n className,\n UNSAFE_triggerButtonProps,\n onFilterChange = noop,\n onChange,\n onOpen,\n onClose,\n onClear,\n}: SelectInputProps<T, M>) {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const id = idProp ?? inputAttributes.id;\n\n const [open, setOpen] = useState(false);\n\n const initialized = useRef(false);\n const handleClose = useEffectEvent(onClose ?? (() => {}));\n const handleOpen = useEffectEvent(onOpen ?? (() => {}));\n useEffect(() => {\n if (initialized.current) {\n if (open) {\n handleOpen?.();\n } else {\n handleClose?.();\n }\n } else {\n initialized.current = true;\n }\n }, [handleClose, handleOpen, open]);\n\n const [filterQuery, _setFilterQuery] = useState('');\n const deferredFilterQuery = useDeferredValue(filterQuery);\n const setFilterQuery = useEffectEvent((query: string) => {\n _setFilterQuery(query);\n if (query !== filterQuery) {\n onFilterChange({\n query,\n queryNormalized: query ? searchableString(query) : null,\n });\n }\n });\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const OptionsOverlay = screenSm ? Popover : BottomSheet;\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n\n /**\n * Attempts to resolve the `listbox` label\n * @see https://storybook.wise.design/?path=/docs/forms-selectinput-accessibility--docs#labelling\n */\n const getListBoxLabelProps = (): {\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n } => {\n if (UNSAFE_triggerButtonProps?.['aria-label']) {\n return {\n listBoxLabel: UNSAFE_triggerButtonProps['aria-label'],\n };\n }\n\n if (UNSAFE_triggerButtonProps?.['aria-labelledby']) {\n return {\n listBoxLabelledBy: UNSAFE_triggerButtonProps['aria-labelledby'],\n };\n }\n\n if (inputAttributes['aria-labelledby']) {\n return {\n listBoxLabelledBy: inputAttributes['aria-labelledby'],\n };\n }\n\n return {};\n };\n\n return (\n <ListboxBase\n name={name}\n multiple={multiple}\n defaultValue={defaultValue}\n value={controlledValue}\n by={compareValues}\n disabled={disabled}\n onChange={\n ((value) => {\n if (!multiple) {\n setOpen(false);\n }\n onChange?.(value);\n }) satisfies SelectInputProps<T, M>['onChange']\n }\n >\n {({ disabled: uiDisabled, value }) => {\n const placeholderShown =\n multiple && Array.isArray(value) ? value.length === 0 : value == null;\n return (\n <OptionsOverlay\n placement=\"bottom-start\"\n open={open}\n renderTrigger={({ ref, getInteractionProps }) => (\n <SelectInputTriggerButtonPropsContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n ref: (node) => {\n ref(node);\n triggerRef.current = node;\n },\n ...inputAttributes,\n ...UNSAFE_triggerButtonProps,\n id,\n ...mergeProps(\n {\n onClick: () => {\n setOpen((prev) => !prev);\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (\n event.key === ' ' ||\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n setOpen((prev) => !prev);\n }\n },\n },\n getInteractionProps(),\n ),\n }}\n >\n {renderTrigger({\n content: !placeholderShown ? (\n <SelectInputOptionContentWithinTriggerContext.Provider value>\n {multiple && Array.isArray(value)\n ? (value as readonly NonNullable<T>[])\n .map((option) => renderValue(option, true))\n .filter((node) => node != null)\n .join(', ')\n : renderValue(value as NonNullable<T>, true)}\n </SelectInputOptionContentWithinTriggerContext.Provider>\n ) : (\n placeholder\n ),\n placeholderShown,\n clear:\n onClear != null\n ? () => {\n onClear();\n triggerRef.current?.focus({ preventScroll: true });\n }\n : undefined,\n disabled: uiDisabled,\n size,\n className,\n })}\n </SelectInputTriggerButtonPropsContext.Provider>\n )}\n initialFocusRef={controllerRef}\n size={filterable ? 'lg' : 'md'}\n padding=\"none\"\n onClose={() => {\n setOpen(false);\n }}\n onCloseEnd={() => {\n setFilterQuery('');\n }}\n >\n <SelectInputOptions\n id={id ? `${id}Search` : undefined}\n parentId={parentId}\n items={items}\n renderValue={renderValue}\n renderFooter={renderFooter}\n filterable={filterable}\n filterPlaceholder={filterPlaceholder}\n searchInputRef={searchInputRef}\n listboxRef={listboxRef}\n filterQuery={deferredFilterQuery}\n autocomplete={autocomplete}\n name={name}\n onFilterChange={setFilterQuery}\n onAutocompleteSelect={(matchedValue) => {\n onChange?.(matchedValue as M extends true ? T[] : T);\n if (!multiple) {\n setOpen(false);\n }\n }}\n {...getListBoxLabelProps()}\n />\n </OptionsOverlay>\n );\n }}\n </ListboxBase>\n );\n}\n\nconst SelectInputTriggerButtonPropsContext = createContext<{\n ref?: React.ForwardedRef<HTMLButtonElement | null>;\n id?: string;\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n [key: string]: unknown;\n}>({});\n\ntype SelectInputTriggerButtonElementType = 'button' | React.ComponentType;\n\nexport type SelectInputTriggerButtonProps<\n T extends SelectInputTriggerButtonElementType = 'button',\n> = Merge<React.ComponentPropsWithoutRef<T>, { as?: T }>;\n\nexport function SelectInputTriggerButton<T extends SelectInputTriggerButtonElementType = 'button'>({\n as = 'button' as T,\n ...restProps\n}: SelectInputTriggerButtonProps<T>) {\n const { ref, onClick, onKeyDown, ...interactionProps } = useContext(\n SelectInputTriggerButtonPropsContext,\n );\n\n return (\n <ListboxBase.Button\n ref={ref}\n as={PolymorphicWithOverrides}\n role=\"combobox\"\n __overrides={{ as, ...interactionProps }}\n {...mergeProps({ onClick, onKeyDown }, restProps)}\n />\n );\n}\n\ninterface SelectInputOptionsContainerProps extends React.ComponentPropsWithRef<'div'> {\n onAriaActiveDescendantChange: (value: React.AriaAttributes['aria-activedescendant']) => void;\n}\n\nconst SelectInputOptionsContainer = forwardRef(function SelectInputOptionsContainer(\n {\n 'aria-orientation': ariaOrientation,\n 'aria-activedescendant': ariaActiveDescendant,\n role,\n tabIndex,\n onAriaActiveDescendantChange,\n onKeyDown,\n ...restProps\n }: SelectInputOptionsContainerProps,\n ref: React.ForwardedRef<HTMLDivElement | null>,\n) {\n const handleAriaActiveDescendantChange = useEffectEvent(onAriaActiveDescendantChange);\n useEffect(() => {\n handleAriaActiveDescendantChange(ariaActiveDescendant);\n }, [ariaActiveDescendant, handleAriaActiveDescendantChange]);\n\n return (\n <div\n ref={ref}\n role=\"none\"\n onKeyDown={(event) => {\n // Prevent confirmation close without an active item\n if (event.key === 'Enter' && ariaActiveDescendant == null) {\n return;\n }\n\n // Prevent absorbing actions early\n if (event.key === 'Escape' || event.key === 'Tab') {\n onKeyDown?.({\n ...event,\n preventDefault: () => {},\n stopPropagation: () => {},\n });\n return;\n }\n\n onKeyDown?.(event);\n }}\n {...restProps}\n />\n );\n});\n\ninterface SelectInputOptionsProps<T = string>\n extends Pick<\n SelectInputProps<T>,\n | 'items'\n | 'renderValue'\n | 'renderFooter'\n | 'filterable'\n | 'filterPlaceholder'\n | 'id'\n | 'parentId'\n > {\n searchInputRef: React.MutableRefObject<HTMLInputElement | null>;\n listboxRef: React.MutableRefObject<HTMLDivElement | null>;\n filterQuery: string;\n onFilterChange: (query: string) => void;\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n autocomplete?: string;\n name?: string;\n onAutocompleteSelect?: (value: T | T[] | null) => void;\n}\n\nfunction SelectInputOptions<T = string>({\n id,\n parentId,\n items,\n renderValue = String,\n renderFooter,\n filterable = false,\n filterPlaceholder,\n searchInputRef,\n listboxRef,\n filterQuery,\n onFilterChange,\n listBoxLabel,\n listBoxLabelledBy,\n autocomplete,\n name,\n onAutocompleteSelect,\n}: SelectInputOptionsProps<T>) {\n const intl = useIntl();\n const virtualiserHandlerRef = useRef<VirtualizerHandle>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n const [initialRender, setInitialRender] = useState(true);\n\n const needle = useMemo(() => {\n if (filterable) {\n return filterQuery ? searchableString(filterQuery) : null;\n }\n return undefined;\n }, [filterQuery, filterable]);\n useEffect(() => {\n if (needle) {\n // Ensure having an active option while filtering.\n // Without `requestAnimationFrame` upon which React depends for scheduling\n // updates, the active status would only show for a split second and then\n // disappear inadvertently.\n requestAnimationFrame(() => {\n if (\n controllerRef.current != null &&\n !controllerRef.current.hasAttribute('aria-activedescendant')\n ) {\n // Activate first option via synthetic key press\n controllerRef.current.dispatchEvent(\n new KeyboardEvent('keydown', { key: 'Home', bubbles: true }),\n );\n }\n });\n }\n }, [controllerRef, needle]);\n\n const filteredItems: readonly SelectInputItem<NonNullable<T> | undefined>[] =\n needle != null\n ? filterSelectInputItems(dedupeSelectInputItems(items), (item) =>\n selectInputOptionItemIncludesNeedle(item, needle),\n )\n : items;\n const resultsEmpty = needle != null && filteredItems.length === 0;\n\n const virtualized = filteredItems.length > MAX_ITEMS_WITHOUT_VIRTUALIZATION;\n\n // Items shown once shall be kept mounted until the needle changes, otherwise\n // the scroll position may jump around inadvertently. Pattern adopted from:\n // https://inokawa.github.io/virtua/?path=/story/advanced-keep-offscreen-items--append-only\n const [mountedIndexes, setMountedIndexes] = useState<number[]>([]);\n useEffect(() => {\n // Ensure the 'End' key works as intended by keeping the last item mounted\n setMountedIndexes((prevMountedIndexes) => {\n const indexes = new Set(prevMountedIndexes);\n indexes.add(filteredItems.length - 1);\n return [...indexes]; // Sorting is redundant by nature here\n });\n }, [\n needle, // Needed as `filteredItems.length` may be equal between two updates\n filteredItems.length,\n ]);\n\n const listboxContainerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (listboxContainerRef.current != null) {\n listboxContainerRef.current.style.setProperty(\n '--initial-height',\n `${listboxContainerRef.current.offsetHeight}px`,\n );\n }\n }, []);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n const showStatus = resultsEmpty;\n const statusId = useId();\n const listboxId = useId();\n\n const getItemNode = (index: number) => {\n const item = filteredItems[index];\n return (\n <SelectInputItemView key={index} item={item} renderValue={renderValue} needle={needle} />\n );\n };\n\n const findMatchingItem = (autocompleteValue: string): T | T[] | null => {\n const flatOptions = items\n .flatMap((item) =>\n item.type === 'group' ? item.options : item.type === 'option' ? [item] : [],\n )\n .filter(\n (item): item is SelectInputOptionItem<NonNullable<T>> =>\n item.type === 'option' && item.value != null,\n );\n\n const exactMatch = flatOptions.find(\n (option) =>\n String(option.value) === autocompleteValue ||\n option.filterMatchers?.some((matcher) => matcher === autocompleteValue),\n );\n\n if (exactMatch) {\n return exactMatch.value;\n }\n\n const fuzzyMatch = flatOptions.find((option) =>\n option.filterMatchers?.some((matcher) =>\n matcher.toLowerCase().includes(autocompleteValue.toLowerCase()),\n ),\n );\n\n return fuzzyMatch ? fuzzyMatch.value : null;\n };\n\n return (\n <ListboxBase.Options\n as={SelectInputOptionsContainer}\n static\n className=\"np-select-input-options-container\"\n onAriaActiveDescendantChange={(value: React.AriaAttributes['aria-activedescendant']) => {\n if (controllerRef.current != null) {\n if (!initialRender && value != null) {\n controllerRef.current.setAttribute('aria-activedescendant', value);\n } else {\n controllerRef.current.removeAttribute('aria-activedescendant');\n }\n }\n }}\n >\n {filterable ? (\n <div className=\"np-select-input-query-container\">\n <SearchInput\n ref={searchInputRef}\n id={id}\n name={name}\n autoComplete={autocomplete}\n role=\"combobox\"\n shape=\"rectangle\"\n placeholder={filterPlaceholder}\n aria-label={filterPlaceholder}\n defaultValue={filterQuery}\n aria-autocomplete=\"list\"\n aria-expanded\n aria-controls={listboxId}\n aria-describedby={showStatus ? statusId : undefined}\n onKeyDown={(event) => {\n // Prevent interfering with the matcher of Headless UI\n // https://mathiasbynens.be/notes/javascript-unicode#regex\n if (/^.$/u.test(event.key)) {\n event.stopPropagation();\n }\n }}\n onChange={(event) => {\n // Free up resources and ensure not to go out of bounds when the\n // resulting item count is less than before\n const inputValue = event.currentTarget.value;\n\n // Free up resources and ensure not to go out of bounds\n setMountedIndexes([]);\n onFilterChange(inputValue);\n }}\n onInput={(event) => {\n const inputValue = event.currentTarget.value;\n const inputElement = event.currentTarget;\n\n if (autocomplete && onAutocompleteSelect && inputValue) {\n setTimeout(() => {\n if (inputElement.value === inputValue && inputValue.length > 2) {\n const matchedValue = findMatchingItem(inputValue);\n if (matchedValue !== null) {\n onAutocompleteSelect(matchedValue);\n }\n }\n }, 50);\n }\n }}\n />\n </div>\n ) : null}\n\n <section\n ref={listboxContainerRef}\n tabIndex={-1}\n className={clsx(\n 'np-select-input-listbox-container',\n virtualized && 'np-select-input-listbox-container--virtualized',\n needle == null && // Groups aren't shown when filtering\n items.some((item) => item.type === 'group') &&\n 'np-select-input-listbox-container--has-group',\n )}\n // eslint-disable-next-line react/no-unknown-property\n wds-parent={parentId ?? undefined}\n >\n {resultsEmpty ? (\n <div id={statusId} className=\"np-select-input-options-status\">\n <CrossCircle size={16} className=\"np-select-input-options-status-icon\" />\n {intl.formatMessage(messages.noResultsFound)}\n </div>\n ) : null}\n\n <div\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-label={listBoxLabel}\n aria-labelledby={listBoxLabelledBy}\n tabIndex={0}\n className=\"np-select-input-listbox\"\n >\n {!virtualized ? (\n filteredItems.map((_, index) => getItemNode(index))\n ) : (\n <Virtualizer\n ref={virtualiserHandlerRef}\n key={needle}\n count={filteredItems.length}\n keepMounted={mountedIndexes}\n scrollRef={listboxRef} // `VList` doesn't expose this\n onScroll={async () => {\n if (!virtualiserHandlerRef.current) return;\n\n const startIndex = virtualiserHandlerRef.current.findStartIndex();\n const endIndex = virtualiserHandlerRef.current.findStartIndex();\n\n setMountedIndexes((prevMountedIndexes) => {\n const indexes = new Set(prevMountedIndexes);\n\n for (let index = startIndex; index <= endIndex; index += 1) {\n indexes.add(index);\n }\n\n return [...indexes].sort((a, b) => a - b);\n });\n }}\n >\n {(index) => (\n // The position of each item can't be inferred by browsers when\n // virtualizing, as some of the items may not be in the DOM\n <SelectInputItemsCountContext.Provider value={filteredItems.length}>\n <SelectInputItemPositionContext.Provider value={index + 1}>\n {getItemNode(index)}\n </SelectInputItemPositionContext.Provider>\n </SelectInputItemsCountContext.Provider>\n )}\n </Virtualizer>\n )}\n </div>\n\n {renderFooter != null ? (\n <footer className=\"np-select-input-footer\">\n <div\n role=\"none\"\n onKeyDown={(event) => {\n // Prevent interfering with Headless UI\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n }}\n >\n {renderFooter({\n resultsEmpty,\n queryNormalized: needle,\n })}\n </div>\n </footer>\n ) : null}\n </section>\n </ListboxBase.Options>\n );\n}\n\ninterface SelectInputItemViewProps<\n T = string,\n I extends SelectInputItem<T | undefined> = SelectInputItem<T | undefined>,\n> extends Required<Pick<SelectInputProps<T>, 'renderValue'>> {\n item: I;\n needle: string | null | undefined;\n}\n\nfunction SelectInputItemView<T = string>({\n item,\n renderValue,\n needle,\n}: SelectInputItemViewProps<T>) {\n switch (item.type) {\n case 'option': {\n if (\n item.value != null &&\n (needle == null || selectInputOptionItemIncludesNeedle(item, needle))\n ) {\n return (\n <SelectInputOption value={item.value} disabled={item.disabled}>\n {renderValue(item.value, false)}\n </SelectInputOption>\n );\n }\n break;\n }\n case 'group': {\n return <SelectInputGroupItemView item={item} renderValue={renderValue} needle={needle} />;\n }\n case 'separator': {\n if (needle == null) {\n return <hr className=\"np-select-input-separator-item\" />;\n }\n break;\n }\n }\n return null;\n}\n\ninterface SelectInputGroupItemViewProps<T = string>\n extends SelectInputItemViewProps<T, SelectInputGroupItem<T | undefined>> {}\n\nfunction SelectInputGroupItemView<T = string>({\n item,\n renderValue,\n needle,\n}: SelectInputGroupItemViewProps<T>) {\n const headerId = useId();\n\n const header = (\n <Header\n as=\"header\"\n role=\"none\"\n id={headerId}\n title={item.label}\n // @ts-expect-error when we migrate ActionButton to new Button this should be sorted\n action={\n item.action && {\n text: item.action.label,\n onClick: item.action.onClick,\n }\n }\n className=\"np-select-input-group-item-header p-x-1\"\n />\n );\n\n return (\n // An empty container may be rendered when no options match `needle`\n // However, pre-filtering would result in worse performance overall\n <Section\n as=\"section\"\n role=\"group\"\n aria-labelledby={headerId}\n className={clsx('m-y-0', needle === null && 'np-select-input-group-item--without-needle')}\n >\n {needle == null ? header : null}\n {item.options.map((option, index) => (\n <SelectInputItemView\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n item={option}\n renderValue={renderValue}\n needle={needle}\n />\n ))}\n </Section>\n );\n}\n\nconst SelectInputItemsCountContext = createContext<number | undefined>(undefined);\nconst SelectInputItemPositionContext = createContext<number | undefined>(undefined);\n\ninterface SelectInputOptionProps<T = string> {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction SelectInputOption<T = string>({ value, disabled, children }: SelectInputOptionProps<T>) {\n const itemsCount = useContext(SelectInputItemsCountContext);\n const itemPosition = useContext(SelectInputItemPositionContext);\n return (\n <ListboxBase.Option\n as=\"div\"\n value={value}\n aria-setsize={itemsCount}\n aria-posinset={itemPosition}\n disabled={disabled}\n className={({ active, disabled: uiDisabled }) =>\n clsx(\n 'np-select-input-option-container np-text-body-large',\n active && 'np-select-input-option-container--active',\n uiDisabled && 'np-select-input-option-container--disabled',\n )\n }\n >\n {({ selected }) => (\n <>\n <div className=\"np-select-input-option\">{children}</div>\n <Check\n size={16}\n className={clsx(\n 'np-select-input-option-check',\n !selected && 'np-select-input-option-check--not-selected',\n )}\n />\n </>\n )}\n </ListboxBase.Option>\n );\n}\n\nconst SelectInputOptionContentWithinTriggerContext = createContext(false);\n\nexport interface SelectInputOptionContentProps {\n title: string;\n note?: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport function SelectInputOptionContent({\n title,\n note,\n description,\n icon,\n}: SelectInputOptionContentProps) {\n const withinTrigger = useContext(SelectInputOptionContentWithinTriggerContext);\n\n return (\n <div\n className={clsx(\n 'np-select-input-option-content-container',\n (note || description) && 'np-text-body-large',\n )}\n >\n {icon ? (\n <div\n className={clsx(\n 'np-select-input-option-content-icon',\n !withinTrigger && 'np-select-input-option-content-icon--not-within-trigger',\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"np-select-input-option-content-text\">\n <div\n className={clsx(\n 'np-select-input-option-content-text-line-1',\n withinTrigger && 'np-select-input-option-content-text-within-trigger',\n )}\n >\n <div className=\"d-inline\">{title}</div>\n {note ? (\n <span className=\"np-select-input-option-content-text-secondary np-text-body-default\">\n {note}\n </span>\n ) : null}\n </div>\n\n {description ? (\n <div\n className={clsx(\n 'np-select-input-option-content-text-secondary np-text-body-default',\n withinTrigger && 'np-select-input-option-content-text-within-trigger',\n )}\n >\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["MAX_ITEMS_WITHOUT_VIRTUALIZATION","searchableString","value","trim","replace","normalize","toLowerCase","inferSearchableStrings","Object","values","filter","innerValue","map","dedupeSelectInputOptionItem","item","existingValues","has","add","undefined","dedupeSelectInputItems","items","Set","type","options","option","selectInputOptionItemIncludesNeedle","needle","filterMatchers","some","haystack","includes","filterSelectInputItems","predicate","defaultRenderTrigger","content","placeholderShown","clear","disabled","size","className","_jsx","InputGroup","addonEnd","_jsxs","clsx","children","_Fragment","SelectInputClearButton","onClick","event","preventDefault","ChevronDown","initialContentWidth","padding","SelectInputTriggerButton","as","ButtonInput","intl","useIntl","formatMessage","dateTriggerMessages","ariaLabel","Cross","noop","SelectInput","id","idProp","parentId","name","multiple","placeholder","autocomplete","defaultValue","controlledValue","compareValues","renderValue","String","renderFooter","renderTrigger","filterable","filterPlaceholder","UNSAFE_triggerButtonProps","onFilterChange","onChange","onOpen","onClose","onClear","inputAttributes","useInputAttributes","nonLabelable","open","setOpen","useState","initialized","useRef","handleClose","useEffectEvent","handleOpen","useEffect","current","filterQuery","_setFilterQuery","deferredFilterQuery","useDeferredValue","setFilterQuery","query","queryNormalized","triggerRef","screenSm","useScreenSize","Breakpoint","SMALL","OptionsOverlay","Popover","BottomSheet","searchInputRef","listboxRef","controllerRef","getListBoxLabelProps","listBoxLabel","listBoxLabelledBy","ListboxBase","by","uiDisabled","Array","isArray","length","placement","ref","getInteractionProps","SelectInputTriggerButtonPropsContext","Provider","node","mergeProps","prev","onKeyDown","key","SelectInputOptionContentWithinTriggerContext","join","focus","preventScroll","initialFocusRef","onCloseEnd","SelectInputOptions","onAutocompleteSelect","matchedValue","createContext","restProps","interactionProps","useContext","Button","PolymorphicWithOverrides","role","__overrides","SelectInputOptionsContainer","forwardRef","ariaOrientation","ariaActiveDescendant","tabIndex","onAriaActiveDescendantChange","handleAriaActiveDescendantChange","stopPropagation","virtualiserHandlerRef","initialRender","setInitialRender","useMemo","requestAnimationFrame","hasAttribute","dispatchEvent","KeyboardEvent","bubbles","filteredItems","resultsEmpty","virtualized","mountedIndexes","setMountedIndexes","prevMountedIndexes","indexes","listboxContainerRef","style","setProperty","offsetHeight","showStatus","statusId","useId","listboxId","getItemNode","index","SelectInputItemView","findMatchingItem","autocompleteValue","flatOptions","flatMap","exactMatch","find","matcher","fuzzyMatch","Options","static","setAttribute","removeAttribute","SearchInput","autoComplete","shape","test","inputValue","currentTarget","onInput","inputElement","setTimeout","CrossCircle","messages","noResultsFound","_","Virtualizer","count","keepMounted","scrollRef","onScroll","startIndex","findStartIndex","endIndex","sort","a","b","SelectInputItemsCountContext","SelectInputItemPositionContext","SelectInputOption","SelectInputGroupItemView","headerId","header","Header","title","label","action","text","Section","itemsCount","itemPosition","Option","active","selected","Check","SelectInputOptionContent","note","description","icon","withinTrigger"],"mappings":"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"}
1
+ {"version":3,"file":"SelectInput.js","sources":["../../src/inputs/SelectInput.tsx"],"sourcesContent":["import { Listbox as ListboxBase } from '@headlessui/react';\nimport { Check, ChevronDown, Cross, CrossCircle } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport mergeProps from 'merge-props';\nimport {\n createContext,\n forwardRef,\n ReactNode,\n useContext,\n useDeferredValue,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useIntl } from 'react-intl';\nimport { Virtualizer, type VirtualizerHandle } from 'virtua';\n\nimport { useEffectEvent } from '../common/hooks/useEffectEvent';\nimport { useScreenSize } from '../common/hooks/useScreenSize';\nimport { PolymorphicWithOverrides } from '../common/polymorphicWithOverrides/PolymorphicWithOverrides';\nimport { Breakpoint } from '../common/propsValues/breakpoint';\nimport dateTriggerMessages from '../dateLookup/dateTrigger/DateTrigger.messages';\nimport { Merge } from '../utils';\n\nimport { BottomSheet } from './_BottomSheet';\nimport { ButtonInput } from './_ButtonInput';\nimport { Popover } from './_Popover';\nimport { useInputAttributes, WithInputAttributesProps } from './contexts';\nimport { InputGroup } from './InputGroup';\nimport { SearchInput } from './SearchInput';\nimport messages from './SelectInput.messages';\nimport Header from '../header';\nimport Section from '../section';\nimport { ButtonProps } from '../button/Button.types';\n\nconst MAX_ITEMS_WITHOUT_VIRTUALIZATION = 50;\n\nfunction searchableString(value: string) {\n return value.trim().replace(/\\s+/gu, ' ').normalize('NFKC').toLowerCase();\n}\n\nfunction inferSearchableStrings(value: unknown) {\n if (typeof value === 'string') {\n return [searchableString(value)];\n }\n\n if (typeof value === 'object' && value != null) {\n return Object.values(value)\n .filter((innerValue) => typeof innerValue === 'string')\n .map((innerValue) => searchableString(innerValue));\n }\n\n return [];\n}\n\nexport interface SelectInputOptionItem<T = string> {\n type: 'option';\n value: T;\n filterMatchers?: readonly string[];\n disabled?: boolean;\n}\n\nexport interface SelectInputGroupItem<T = string> {\n type: 'group';\n label: ReactNode;\n options: readonly SelectInputOptionItem<T>[];\n action?: {\n label: string;\n onClick: ButtonProps['onClick'];\n };\n}\n\nexport interface SelectInputSeparatorItem {\n type: 'separator';\n}\n\nexport type SelectInputItem<T = string> =\n | SelectInputOptionItem<T>\n | SelectInputGroupItem<T>\n | SelectInputSeparatorItem;\n\nfunction dedupeSelectInputOptionItem<T>(\n item: SelectInputOptionItem<T>,\n existingValues: Set<T>,\n): SelectInputOptionItem<T | undefined> {\n if (!existingValues.has(item.value)) {\n existingValues.add(item.value);\n return item;\n }\n return { ...item, value: undefined };\n}\n\n/**\n * Sets the `value` of duplicate option items to `undefined`, hiding them when\n * rendered. Indexes are kept intact within groups to preserve the active item\n * between filter changes when possible.\n */\nfunction dedupeSelectInputItems<T>(\n items: readonly SelectInputItem<T>[],\n): SelectInputItem<T | undefined>[] {\n const existingValues = new Set<T>();\n return items.map((item) => {\n switch (item.type) {\n case 'option': {\n return dedupeSelectInputOptionItem(item, existingValues);\n }\n case 'group': {\n return {\n ...item,\n options: item.options.map((option) =>\n dedupeSelectInputOptionItem(option, existingValues),\n ),\n };\n }\n default:\n }\n return item;\n });\n}\n\nfunction selectInputOptionItemIncludesNeedle<T>(item: SelectInputOptionItem<T>, needle: string) {\n return inferSearchableStrings(item.filterMatchers ?? item.value).some((haystack) =>\n haystack.includes(needle),\n );\n}\n\nfunction filterSelectInputItems<T>(\n items: readonly SelectInputItem<T>[],\n predicate: (item: SelectInputOptionItem<T>) => boolean,\n) {\n return items.filter((item) => {\n switch (item.type) {\n case 'option': {\n return predicate(item);\n }\n case 'group': {\n return item.options.some((option) => predicate(option));\n }\n default:\n }\n return false;\n });\n}\n\nexport interface SelectInputProps<T = string, M extends boolean = false> {\n id?: string;\n /**\n * Sets the `wds-parent` attribute on the listbox container, which is needed for complex components like DateInput to correctly manage event handling.\n * @internal\n */\n parentId?: string;\n name?: string;\n multiple?: M;\n placeholder?: string;\n items: readonly SelectInputItem<NonNullable<T>>[];\n defaultValue?: M extends true ? readonly T[] : T;\n value?: M extends true ? readonly T[] : T;\n compareValues?:\n | (keyof NonNullable<T> & string)\n | ((a: T | undefined, b: T | undefined) => boolean);\n renderValue?: (value: NonNullable<T>, withinTrigger: boolean) => React.ReactNode;\n renderFooter?: (args: {\n resultsEmpty: boolean;\n queryNormalized: string | null | undefined;\n }) => React.ReactNode;\n renderTrigger?: (args: {\n content: React.ReactNode;\n placeholderShown: boolean;\n clear: (() => void) | undefined;\n disabled: boolean;\n size: 'sm' | 'md' | 'lg';\n className: string | undefined;\n }) => React.ReactNode;\n filterable?: boolean;\n filterPlaceholder?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n UNSAFE_triggerButtonProps?: WithInputAttributesProps['inputAttributes'] & {\n 'aria-label'?: string;\n };\n /** Ref to the select trigger button element. */\n triggerRef?: React.MutableRefObject<HTMLButtonElement | null>;\n onFilterChange?: (args: { query: string; queryNormalized: string | null }) => void;\n onChange?: (value: M extends true ? T[] : T) => void;\n onOpen?: () => void;\n onClose?: () => void;\n onClear?: () => void;\n}\n\nconst defaultRenderTrigger = (({ content, placeholderShown, clear, disabled, size, className }) => (\n <InputGroup\n addonEnd={{\n content: (\n <span className={clsx('np-select-input-addon-container', disabled && 'disabled')}>\n {clear != null && !placeholderShown ? (\n <>\n <SelectInputClearButton\n onClick={(event) => {\n event.preventDefault();\n clear();\n }}\n />\n <span className=\"np-select-input-addon-separator\" />\n </>\n ) : null}\n\n <span className=\"np-select-input-addon\">\n <ChevronDown size={16} />\n </span>\n </span>\n ),\n initialContentWidth: 24 + 4,\n padding: 'sm',\n }}\n disabled={disabled}\n className={className}\n >\n <SelectInputTriggerButton as={ButtonInput} size={size}>\n <span\n className={clsx(\n 'np-select-input-content',\n placeholderShown && 'np-select-input-placeholder',\n )}\n >\n {content}\n </span>\n </SelectInputTriggerButton>\n </InputGroup>\n)) satisfies SelectInputProps['renderTrigger'];\n\ninterface SelectInputClearButtonProps\n extends Pick<React.ComponentPropsWithoutRef<'button'>, 'className' | 'onClick'> {}\n\nfunction SelectInputClearButton({ className, onClick }: SelectInputClearButtonProps) {\n const intl = useIntl();\n\n return (\n <button\n type=\"button\"\n aria-label={intl.formatMessage(dateTriggerMessages.ariaLabel)}\n className={clsx(className, 'np-select-input-addon np-select-input-addon--interactive')}\n onClick={onClick}\n >\n <Cross size={16} />\n </button>\n );\n}\n\nconst noop = () => {};\n\nexport function SelectInput<T = string, M extends boolean = false>({\n id: idProp,\n parentId,\n name,\n multiple,\n placeholder,\n items,\n defaultValue,\n value: controlledValue,\n compareValues,\n renderValue = String,\n renderFooter,\n renderTrigger = defaultRenderTrigger,\n filterable,\n filterPlaceholder,\n disabled,\n size = 'md',\n className,\n UNSAFE_triggerButtonProps,\n triggerRef: externalTriggerRef,\n onFilterChange = noop,\n onChange,\n onOpen,\n onClose,\n onClear,\n}: SelectInputProps<T, M>) {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const id = idProp ?? inputAttributes.id;\n\n const [open, setOpen] = useState(false);\n\n const initialized = useRef(false);\n const handleClose = useEffectEvent(onClose ?? (() => {}));\n const handleOpen = useEffectEvent(onOpen ?? (() => {}));\n useEffect(() => {\n if (initialized.current) {\n if (open) {\n handleOpen?.();\n } else {\n handleClose?.();\n }\n } else {\n initialized.current = true;\n }\n }, [handleClose, handleOpen, open]);\n\n const [filterQuery, _setFilterQuery] = useState('');\n const deferredFilterQuery = useDeferredValue(filterQuery);\n const setFilterQuery = useEffectEvent((query: string) => {\n _setFilterQuery(query);\n if (query !== filterQuery) {\n onFilterChange({\n query,\n queryNormalized: query ? searchableString(query) : null,\n });\n }\n });\n\n const internalTriggerRef = useRef<HTMLButtonElement | null>(null);\n\n const screenSm = useScreenSize(Breakpoint.SMALL);\n const OptionsOverlay = screenSm ? Popover : BottomSheet;\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n const listboxRef = useRef<HTMLDivElement>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n\n /**\n * Attempts to resolve the `listbox` label\n * @see https://storybook.wise.design/?path=/docs/forms-selectinput-accessibility--docs#labelling\n */\n const getListBoxLabelProps = (): {\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n } => {\n if (UNSAFE_triggerButtonProps?.['aria-label']) {\n return {\n listBoxLabel: UNSAFE_triggerButtonProps['aria-label'],\n };\n }\n\n if (UNSAFE_triggerButtonProps?.['aria-labelledby']) {\n return {\n listBoxLabelledBy: UNSAFE_triggerButtonProps['aria-labelledby'],\n };\n }\n\n if (inputAttributes['aria-labelledby']) {\n return {\n listBoxLabelledBy: inputAttributes['aria-labelledby'],\n };\n }\n\n return {};\n };\n\n return (\n <ListboxBase\n name={name}\n multiple={multiple}\n defaultValue={defaultValue}\n value={controlledValue}\n by={compareValues}\n disabled={disabled}\n onChange={\n ((value) => {\n if (!multiple) {\n setOpen(false);\n }\n onChange?.(value);\n }) satisfies SelectInputProps<T, M>['onChange']\n }\n >\n {({ disabled: uiDisabled, value }) => {\n const placeholderShown =\n multiple && Array.isArray(value) ? value.length === 0 : value == null;\n return (\n <OptionsOverlay\n placement=\"bottom-start\"\n open={open}\n renderTrigger={({ ref, getInteractionProps }) => (\n <SelectInputTriggerButtonPropsContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n ref: (node) => {\n ref(node);\n if (externalTriggerRef) {\n // eslint-disable-next-line no-param-reassign\n externalTriggerRef.current = node;\n } else {\n internalTriggerRef.current = node;\n }\n },\n ...inputAttributes,\n ...UNSAFE_triggerButtonProps,\n id,\n ...mergeProps(\n {\n onClick: () => {\n setOpen((prev) => !prev);\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (\n event.key === ' ' ||\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n setOpen((prev) => !prev);\n }\n },\n },\n getInteractionProps(),\n ),\n }}\n >\n {renderTrigger({\n content: !placeholderShown ? (\n <SelectInputOptionContentWithinTriggerContext.Provider value>\n {multiple && Array.isArray(value)\n ? (value as readonly NonNullable<T>[])\n .map((option) => renderValue(option, true))\n .filter((node) => node != null)\n .join(', ')\n : renderValue(value as NonNullable<T>, true)}\n </SelectInputOptionContentWithinTriggerContext.Provider>\n ) : (\n placeholder\n ),\n placeholderShown,\n clear:\n onClear != null\n ? () => {\n onClear();\n (externalTriggerRef?.current ?? internalTriggerRef.current)?.focus({\n preventScroll: true,\n });\n }\n : undefined,\n disabled: uiDisabled,\n size,\n className,\n })}\n </SelectInputTriggerButtonPropsContext.Provider>\n )}\n initialFocusRef={controllerRef}\n size={filterable ? 'lg' : 'md'}\n padding=\"none\"\n onClose={() => {\n setOpen(false);\n }}\n onCloseEnd={() => {\n setFilterQuery('');\n }}\n >\n <SelectInputOptions\n id={id ? `${id}Search` : undefined}\n parentId={parentId}\n items={items}\n renderValue={renderValue}\n renderFooter={renderFooter}\n filterable={filterable}\n filterPlaceholder={filterPlaceholder}\n searchInputRef={searchInputRef}\n listboxRef={listboxRef}\n filterQuery={deferredFilterQuery}\n onFilterChange={setFilterQuery}\n {...getListBoxLabelProps()}\n />\n </OptionsOverlay>\n );\n }}\n </ListboxBase>\n );\n}\n\nconst SelectInputTriggerButtonPropsContext = createContext<{\n ref?: React.ForwardedRef<HTMLButtonElement | null>;\n id?: string;\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n [key: string]: unknown;\n}>({});\n\ntype SelectInputTriggerButtonElementType = 'button' | React.ComponentType;\n\nexport type SelectInputTriggerButtonProps<\n T extends SelectInputTriggerButtonElementType = 'button',\n> = Merge<React.ComponentPropsWithoutRef<T>, { as?: T }>;\n\nexport function SelectInputTriggerButton<T extends SelectInputTriggerButtonElementType = 'button'>({\n as = 'button' as T,\n ...restProps\n}: SelectInputTriggerButtonProps<T>) {\n const { ref, onClick, onKeyDown, ...interactionProps } = useContext(\n SelectInputTriggerButtonPropsContext,\n );\n\n return (\n <ListboxBase.Button\n ref={ref}\n as={PolymorphicWithOverrides}\n role=\"combobox\"\n __overrides={{ as, ...interactionProps }}\n {...mergeProps({ onClick, onKeyDown }, restProps)}\n />\n );\n}\n\ninterface SelectInputOptionsContainerProps extends React.ComponentPropsWithRef<'div'> {\n onAriaActiveDescendantChange: (value: React.AriaAttributes['aria-activedescendant']) => void;\n}\n\nconst SelectInputOptionsContainer = forwardRef(function SelectInputOptionsContainer(\n {\n 'aria-orientation': ariaOrientation,\n 'aria-activedescendant': ariaActiveDescendant,\n role,\n tabIndex,\n onAriaActiveDescendantChange,\n onKeyDown,\n ...restProps\n }: SelectInputOptionsContainerProps,\n ref: React.ForwardedRef<HTMLDivElement | null>,\n) {\n const handleAriaActiveDescendantChange = useEffectEvent(onAriaActiveDescendantChange);\n useEffect(() => {\n handleAriaActiveDescendantChange(ariaActiveDescendant);\n }, [ariaActiveDescendant, handleAriaActiveDescendantChange]);\n\n return (\n <div\n ref={ref}\n role=\"none\"\n onKeyDown={(event) => {\n // Prevent confirmation close without an active item\n if (event.key === 'Enter' && ariaActiveDescendant == null) {\n return;\n }\n\n // Prevent absorbing actions early\n if (event.key === 'Escape' || event.key === 'Tab') {\n onKeyDown?.({\n ...event,\n preventDefault: () => {},\n stopPropagation: () => {},\n });\n return;\n }\n\n onKeyDown?.(event);\n }}\n {...restProps}\n />\n );\n});\n\ninterface SelectInputOptionsProps<T = string>\n extends Pick<\n SelectInputProps<T>,\n | 'items'\n | 'renderValue'\n | 'renderFooter'\n | 'filterable'\n | 'filterPlaceholder'\n | 'id'\n | 'parentId'\n > {\n searchInputRef: React.MutableRefObject<HTMLInputElement | null>;\n listboxRef: React.MutableRefObject<HTMLDivElement | null>;\n filterQuery: string;\n onFilterChange: (query: string) => void;\n listBoxLabel?: string;\n listBoxLabelledBy?: string;\n}\n\nfunction SelectInputOptions<T = string>({\n id,\n parentId,\n items,\n renderValue = String,\n renderFooter,\n filterable = false,\n filterPlaceholder,\n searchInputRef,\n listboxRef,\n filterQuery,\n onFilterChange,\n listBoxLabel,\n listBoxLabelledBy,\n}: SelectInputOptionsProps<T>) {\n const intl = useIntl();\n const virtualiserHandlerRef = useRef<VirtualizerHandle>(null);\n const controllerRef = filterable ? searchInputRef : listboxRef;\n const [initialRender, setInitialRender] = useState(true);\n\n const needle = useMemo(() => {\n if (filterable) {\n return filterQuery ? searchableString(filterQuery) : null;\n }\n return undefined;\n }, [filterQuery, filterable]);\n useEffect(() => {\n if (needle) {\n // Ensure having an active option while filtering.\n // Without `requestAnimationFrame` upon which React depends for scheduling\n // updates, the active status would only show for a split second and then\n // disappear inadvertently.\n requestAnimationFrame(() => {\n if (\n controllerRef.current != null &&\n !controllerRef.current.hasAttribute('aria-activedescendant')\n ) {\n // Activate first option via synthetic key press\n controllerRef.current.dispatchEvent(\n new KeyboardEvent('keydown', { key: 'Home', bubbles: true }),\n );\n }\n });\n }\n }, [controllerRef, needle]);\n\n const filteredItems: readonly SelectInputItem<NonNullable<T> | undefined>[] =\n needle != null\n ? filterSelectInputItems(dedupeSelectInputItems(items), (item) =>\n selectInputOptionItemIncludesNeedle(item, needle),\n )\n : items;\n const resultsEmpty = needle != null && filteredItems.length === 0;\n\n const virtualized = filteredItems.length > MAX_ITEMS_WITHOUT_VIRTUALIZATION;\n\n // Items shown once shall be kept mounted until the needle changes, otherwise\n // the scroll position may jump around inadvertently. Pattern adopted from:\n // https://inokawa.github.io/virtua/?path=/story/advanced-keep-offscreen-items--append-only\n const [mountedIndexes, setMountedIndexes] = useState<number[]>([]);\n useEffect(() => {\n // Ensure the 'End' key works as intended by keeping the last item mounted\n setMountedIndexes((prevMountedIndexes) => {\n const indexes = new Set(prevMountedIndexes);\n indexes.add(filteredItems.length - 1);\n return [...indexes]; // Sorting is redundant by nature here\n });\n }, [\n needle, // Needed as `filteredItems.length` may be equal between two updates\n filteredItems.length,\n ]);\n\n const listboxContainerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (listboxContainerRef.current != null) {\n listboxContainerRef.current.style.setProperty(\n '--initial-height',\n `${listboxContainerRef.current.offsetHeight}px`,\n );\n }\n }, []);\n\n useEffect(() => {\n setInitialRender(false);\n }, []);\n\n const showStatus = resultsEmpty;\n const statusId = useId();\n const listboxId = useId();\n\n const getItemNode = (index: number) => {\n const item = filteredItems[index];\n return (\n <SelectInputItemView key={index} item={item} renderValue={renderValue} needle={needle} />\n );\n };\n\n return (\n <ListboxBase.Options\n as={SelectInputOptionsContainer}\n static\n className=\"np-select-input-options-container\"\n onAriaActiveDescendantChange={(value: React.AriaAttributes['aria-activedescendant']) => {\n if (controllerRef.current != null) {\n if (!initialRender && value != null) {\n controllerRef.current.setAttribute('aria-activedescendant', value);\n } else {\n controllerRef.current.removeAttribute('aria-activedescendant');\n }\n }\n }}\n >\n {filterable ? (\n <div className=\"np-select-input-query-container\">\n <SearchInput\n ref={searchInputRef}\n id={id}\n role=\"combobox\"\n shape=\"rectangle\"\n placeholder={filterPlaceholder}\n aria-label={filterPlaceholder}\n defaultValue={filterQuery}\n aria-autocomplete=\"list\"\n aria-expanded\n aria-controls={listboxId}\n aria-describedby={showStatus ? statusId : undefined}\n onKeyDown={(event) => {\n // Prevent interfering with the matcher of Headless UI\n // https://mathiasbynens.be/notes/javascript-unicode#regex\n if (/^.$/u.test(event.key)) {\n event.stopPropagation();\n }\n }}\n onChange={(event) => {\n // Free up resources and ensure not to go out of bounds when the\n // resulting item count is less than before\n setMountedIndexes([]);\n onFilterChange(event.currentTarget.value);\n }}\n />\n </div>\n ) : null}\n\n <section\n ref={listboxContainerRef}\n tabIndex={-1}\n className={clsx(\n 'np-select-input-listbox-container',\n virtualized && 'np-select-input-listbox-container--virtualized',\n needle == null && // Groups aren't shown when filtering\n items.some((item) => item.type === 'group') &&\n 'np-select-input-listbox-container--has-group',\n )}\n // eslint-disable-next-line react/no-unknown-property\n wds-parent={parentId ?? undefined}\n >\n {resultsEmpty ? (\n <div id={statusId} className=\"np-select-input-options-status\">\n <CrossCircle size={16} className=\"np-select-input-options-status-icon\" />\n {intl.formatMessage(messages.noResultsFound)}\n </div>\n ) : null}\n\n <div\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-label={listBoxLabel}\n aria-labelledby={listBoxLabelledBy}\n tabIndex={0}\n className=\"np-select-input-listbox\"\n >\n {!virtualized ? (\n filteredItems.map((_, index) => getItemNode(index))\n ) : (\n <Virtualizer\n ref={virtualiserHandlerRef}\n key={needle}\n count={filteredItems.length}\n keepMounted={mountedIndexes}\n scrollRef={listboxRef} // `VList` doesn't expose this\n onScroll={async () => {\n if (!virtualiserHandlerRef.current) return;\n\n const startIndex = virtualiserHandlerRef.current.findStartIndex();\n const endIndex = virtualiserHandlerRef.current.findStartIndex();\n\n setMountedIndexes((prevMountedIndexes) => {\n const indexes = new Set(prevMountedIndexes);\n\n for (let index = startIndex; index <= endIndex; index += 1) {\n indexes.add(index);\n }\n\n return [...indexes].sort((a, b) => a - b);\n });\n }}\n >\n {(index) => (\n // The position of each item can't be inferred by browsers when\n // virtualizing, as some of the items may not be in the DOM\n <SelectInputItemsCountContext.Provider value={filteredItems.length}>\n <SelectInputItemPositionContext.Provider value={index + 1}>\n {getItemNode(index)}\n </SelectInputItemPositionContext.Provider>\n </SelectInputItemsCountContext.Provider>\n )}\n </Virtualizer>\n )}\n </div>\n\n {renderFooter != null ? (\n <footer className=\"np-select-input-footer\">\n <div\n role=\"none\"\n onKeyDown={(event) => {\n // Prevent interfering with Headless UI\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n }}\n >\n {renderFooter({\n resultsEmpty,\n queryNormalized: needle,\n })}\n </div>\n </footer>\n ) : null}\n </section>\n </ListboxBase.Options>\n );\n}\n\ninterface SelectInputItemViewProps<\n T = string,\n I extends SelectInputItem<T | undefined> = SelectInputItem<T | undefined>,\n> extends Required<Pick<SelectInputProps<T>, 'renderValue'>> {\n item: I;\n needle: string | null | undefined;\n}\n\nfunction SelectInputItemView<T = string>({\n item,\n renderValue,\n needle,\n}: SelectInputItemViewProps<T>) {\n switch (item.type) {\n case 'option': {\n if (\n item.value != null &&\n (needle == null || selectInputOptionItemIncludesNeedle(item, needle))\n ) {\n return (\n <SelectInputOption value={item.value} disabled={item.disabled}>\n {renderValue(item.value, false)}\n </SelectInputOption>\n );\n }\n break;\n }\n case 'group': {\n return <SelectInputGroupItemView item={item} renderValue={renderValue} needle={needle} />;\n }\n case 'separator': {\n if (needle == null) {\n return <hr className=\"np-select-input-separator-item\" />;\n }\n break;\n }\n }\n return null;\n}\n\ninterface SelectInputGroupItemViewProps<T = string>\n extends SelectInputItemViewProps<T, SelectInputGroupItem<T | undefined>> {}\n\nfunction SelectInputGroupItemView<T = string>({\n item,\n renderValue,\n needle,\n}: SelectInputGroupItemViewProps<T>) {\n const headerId = useId();\n\n const header = (\n <Header\n as=\"header\"\n role=\"none\"\n id={headerId}\n title={item.label}\n // @ts-expect-error when we migrate ActionButton to new Button this should be sorted\n action={\n item.action && {\n text: item.action.label,\n onClick: item.action.onClick,\n }\n }\n className=\"np-select-input-group-item-header p-x-1\"\n />\n );\n\n return (\n // An empty container may be rendered when no options match `needle`\n // However, pre-filtering would result in worse performance overall\n <Section\n as=\"section\"\n role=\"group\"\n aria-labelledby={headerId}\n className={clsx('m-y-0', needle === null && 'np-select-input-group-item--without-needle')}\n >\n {needle == null ? header : null}\n {item.options.map((option, index) => (\n <SelectInputItemView\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n item={option}\n renderValue={renderValue}\n needle={needle}\n />\n ))}\n </Section>\n );\n}\n\nconst SelectInputItemsCountContext = createContext<number | undefined>(undefined);\nconst SelectInputItemPositionContext = createContext<number | undefined>(undefined);\n\ninterface SelectInputOptionProps<T = string> {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction SelectInputOption<T = string>({ value, disabled, children }: SelectInputOptionProps<T>) {\n const itemsCount = useContext(SelectInputItemsCountContext);\n const itemPosition = useContext(SelectInputItemPositionContext);\n return (\n <ListboxBase.Option\n as=\"div\"\n value={value}\n aria-setsize={itemsCount}\n aria-posinset={itemPosition}\n disabled={disabled}\n className={({ active, disabled: uiDisabled }) =>\n clsx(\n 'np-select-input-option-container np-text-body-large',\n active && 'np-select-input-option-container--active',\n uiDisabled && 'np-select-input-option-container--disabled',\n )\n }\n >\n {({ selected }) => (\n <>\n <div className=\"np-select-input-option\">{children}</div>\n <Check\n size={16}\n className={clsx(\n 'np-select-input-option-check',\n !selected && 'np-select-input-option-check--not-selected',\n )}\n />\n </>\n )}\n </ListboxBase.Option>\n );\n}\n\nconst SelectInputOptionContentWithinTriggerContext = createContext(false);\n\nexport interface SelectInputOptionContentProps {\n title: string;\n note?: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\nexport function SelectInputOptionContent({\n title,\n note,\n description,\n icon,\n}: SelectInputOptionContentProps) {\n const withinTrigger = useContext(SelectInputOptionContentWithinTriggerContext);\n\n return (\n <div\n className={clsx(\n 'np-select-input-option-content-container',\n (note || description) && 'np-text-body-large',\n )}\n >\n {icon ? (\n <div\n className={clsx(\n 'np-select-input-option-content-icon',\n !withinTrigger && 'np-select-input-option-content-icon--not-within-trigger',\n )}\n >\n {icon}\n </div>\n ) : null}\n\n <div className=\"np-select-input-option-content-text\">\n <div\n className={clsx(\n 'np-select-input-option-content-text-line-1',\n withinTrigger && 'np-select-input-option-content-text-within-trigger',\n )}\n >\n <div className=\"d-inline\">{title}</div>\n {note ? (\n <span className=\"np-select-input-option-content-text-secondary np-text-body-default\">\n {note}\n </span>\n ) : null}\n </div>\n\n {description ? (\n <div\n className={clsx(\n 'np-select-input-option-content-text-secondary np-text-body-default',\n withinTrigger && 'np-select-input-option-content-text-within-trigger',\n )}\n >\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["MAX_ITEMS_WITHOUT_VIRTUALIZATION","searchableString","value","trim","replace","normalize","toLowerCase","inferSearchableStrings","Object","values","filter","innerValue","map","dedupeSelectInputOptionItem","item","existingValues","has","add","undefined","dedupeSelectInputItems","items","Set","type","options","option","selectInputOptionItemIncludesNeedle","needle","filterMatchers","some","haystack","includes","filterSelectInputItems","predicate","defaultRenderTrigger","content","placeholderShown","clear","disabled","size","className","_jsx","InputGroup","addonEnd","_jsxs","clsx","children","_Fragment","SelectInputClearButton","onClick","event","preventDefault","ChevronDown","initialContentWidth","padding","SelectInputTriggerButton","as","ButtonInput","intl","useIntl","formatMessage","dateTriggerMessages","ariaLabel","Cross","noop","SelectInput","id","idProp","parentId","name","multiple","placeholder","defaultValue","controlledValue","compareValues","renderValue","String","renderFooter","renderTrigger","filterable","filterPlaceholder","UNSAFE_triggerButtonProps","triggerRef","externalTriggerRef","onFilterChange","onChange","onOpen","onClose","onClear","inputAttributes","useInputAttributes","nonLabelable","open","setOpen","useState","initialized","useRef","handleClose","useEffectEvent","handleOpen","useEffect","current","filterQuery","_setFilterQuery","deferredFilterQuery","useDeferredValue","setFilterQuery","query","queryNormalized","internalTriggerRef","screenSm","useScreenSize","Breakpoint","SMALL","OptionsOverlay","Popover","BottomSheet","searchInputRef","listboxRef","controllerRef","getListBoxLabelProps","listBoxLabel","listBoxLabelledBy","ListboxBase","by","uiDisabled","Array","isArray","length","placement","ref","getInteractionProps","SelectInputTriggerButtonPropsContext","Provider","node","mergeProps","prev","onKeyDown","key","SelectInputOptionContentWithinTriggerContext","join","focus","preventScroll","initialFocusRef","onCloseEnd","SelectInputOptions","createContext","restProps","interactionProps","useContext","Button","PolymorphicWithOverrides","role","__overrides","SelectInputOptionsContainer","forwardRef","ariaOrientation","ariaActiveDescendant","tabIndex","onAriaActiveDescendantChange","handleAriaActiveDescendantChange","stopPropagation","virtualiserHandlerRef","initialRender","setInitialRender","useMemo","requestAnimationFrame","hasAttribute","dispatchEvent","KeyboardEvent","bubbles","filteredItems","resultsEmpty","virtualized","mountedIndexes","setMountedIndexes","prevMountedIndexes","indexes","listboxContainerRef","style","setProperty","offsetHeight","showStatus","statusId","useId","listboxId","getItemNode","index","SelectInputItemView","Options","static","setAttribute","removeAttribute","SearchInput","shape","test","currentTarget","CrossCircle","messages","noResultsFound","_","Virtualizer","count","keepMounted","scrollRef","onScroll","startIndex","findStartIndex","endIndex","sort","a","b","SelectInputItemsCountContext","SelectInputItemPositionContext","SelectInputOption","SelectInputGroupItemView","headerId","header","Header","title","label","action","text","Section","itemsCount","itemPosition","Option","active","selected","Check","SelectInputOptionContent","note","description","icon","withinTrigger"],"mappings":"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"}
@@ -149,7 +149,6 @@ function SelectInput({
149
149
  name,
150
150
  multiple,
151
151
  placeholder,
152
- autocomplete,
153
152
  items,
154
153
  defaultValue,
155
154
  value: controlledValue,
@@ -163,6 +162,7 @@ function SelectInput({
163
162
  size = 'md',
164
163
  className,
165
164
  UNSAFE_triggerButtonProps,
165
+ triggerRef: externalTriggerRef,
166
166
  onFilterChange = noop,
167
167
  onChange,
168
168
  onOpen,
@@ -199,7 +199,7 @@ function SelectInput({
199
199
  });
200
200
  }
201
201
  });
202
- const triggerRef = useRef(null);
202
+ const internalTriggerRef = useRef(null);
203
203
  const screenSm = useScreenSize(Breakpoint.SMALL);
204
204
  const OptionsOverlay = screenSm ? Popover : BottomSheet;
205
205
  const searchInputRef = useRef(null);
@@ -256,7 +256,12 @@ function SelectInput({
256
256
  value: {
257
257
  ref: node => {
258
258
  ref(node);
259
- triggerRef.current = node;
259
+ if (externalTriggerRef) {
260
+ // eslint-disable-next-line no-param-reassign
261
+ externalTriggerRef.current = node;
262
+ } else {
263
+ internalTriggerRef.current = node;
264
+ }
260
265
  },
261
266
  ...inputAttributes,
262
267
  ...UNSAFE_triggerButtonProps,
@@ -280,7 +285,7 @@ function SelectInput({
280
285
  placeholderShown,
281
286
  clear: onClear != null ? () => {
282
287
  onClear();
283
- triggerRef.current?.focus({
288
+ (externalTriggerRef?.current ?? internalTriggerRef.current)?.focus({
284
289
  preventScroll: true
285
290
  });
286
291
  } : undefined,
@@ -309,15 +314,7 @@ function SelectInput({
309
314
  searchInputRef: searchInputRef,
310
315
  listboxRef: listboxRef,
311
316
  filterQuery: deferredFilterQuery,
312
- autocomplete: autocomplete,
313
- name: name,
314
317
  onFilterChange: setFilterQuery,
315
- onAutocompleteSelect: matchedValue => {
316
- onChange?.(matchedValue);
317
- if (!multiple) {
318
- setOpen(false);
319
- }
320
- },
321
318
  ...getListBoxLabelProps()
322
319
  })
323
320
  });
@@ -397,10 +394,7 @@ function SelectInputOptions({
397
394
  filterQuery,
398
395
  onFilterChange,
399
396
  listBoxLabel,
400
- listBoxLabelledBy,
401
- autocomplete,
402
- name,
403
- onAutocompleteSelect
397
+ listBoxLabelledBy
404
398
  }) {
405
399
  const intl = useIntl();
406
400
  const virtualiserHandlerRef = useRef(null);
@@ -466,15 +460,6 @@ function SelectInputOptions({
466
460
  needle: needle
467
461
  }, index);
468
462
  };
469
- const findMatchingItem = autocompleteValue => {
470
- const flatOptions = items.flatMap(item => item.type === 'group' ? item.options : item.type === 'option' ? [item] : []).filter(item => item.type === 'option' && item.value != null);
471
- const exactMatch = flatOptions.find(option => String(option.value) === autocompleteValue || option.filterMatchers?.some(matcher => matcher === autocompleteValue));
472
- if (exactMatch) {
473
- return exactMatch.value;
474
- }
475
- const fuzzyMatch = flatOptions.find(option => option.filterMatchers?.some(matcher => matcher.toLowerCase().includes(autocompleteValue.toLowerCase())));
476
- return fuzzyMatch ? fuzzyMatch.value : null;
477
- };
478
463
  return /*#__PURE__*/jsxs(Listbox.Options, {
479
464
  as: SelectInputOptionsContainer,
480
465
  static: true,
@@ -493,8 +478,6 @@ function SelectInputOptions({
493
478
  children: /*#__PURE__*/jsx(SearchInput, {
494
479
  ref: searchInputRef,
495
480
  id: id,
496
- name: name,
497
- autoComplete: autocomplete,
498
481
  role: "combobox",
499
482
  shape: "rectangle",
500
483
  placeholder: filterPlaceholder,
@@ -514,24 +497,8 @@ function SelectInputOptions({
514
497
  onChange: event => {
515
498
  // Free up resources and ensure not to go out of bounds when the
516
499
  // resulting item count is less than before
517
- const inputValue = event.currentTarget.value;
518
- // Free up resources and ensure not to go out of bounds
519
500
  setMountedIndexes([]);
520
- onFilterChange(inputValue);
521
- },
522
- onInput: event => {
523
- const inputValue = event.currentTarget.value;
524
- const inputElement = event.currentTarget;
525
- if (autocomplete && onAutocompleteSelect && inputValue) {
526
- setTimeout(() => {
527
- if (inputElement.value === inputValue && inputValue.length > 2) {
528
- const matchedValue = findMatchingItem(inputValue);
529
- if (matchedValue !== null) {
530
- onAutocompleteSelect(matchedValue);
531
- }
532
- }
533
- }, 50);
534
- }
501
+ onFilterChange(event.currentTarget.value);
535
502
  }
536
503
  })
537
504
  }) : null, /*#__PURE__*/jsxs("section", {