@transferwise/components 46.54.1 → 46.55.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 (37) hide show
  1. package/README.md +0 -8
  2. package/build/button/Button.js.map +1 -1
  3. package/build/button/Button.mjs.map +1 -1
  4. package/build/common/panel/Panel.js +1 -2
  5. package/build/common/panel/Panel.js.map +1 -1
  6. package/build/common/panel/Panel.mjs +1 -2
  7. package/build/common/panel/Panel.mjs.map +1 -1
  8. package/build/select/Select.js +39 -123
  9. package/build/select/Select.js.map +1 -1
  10. package/build/select/Select.mjs +39 -119
  11. package/build/select/Select.mjs.map +1 -1
  12. package/build/types/button/Button.d.ts +2 -2
  13. package/build/types/button/Button.d.ts.map +1 -1
  14. package/build/types/index.d.ts +1 -0
  15. package/build/types/index.d.ts.map +1 -1
  16. package/build/types/select/Select.d.ts +64 -94
  17. package/build/types/select/Select.d.ts.map +1 -1
  18. package/build/types/select/index.d.ts +2 -2
  19. package/build/types/select/index.d.ts.map +1 -1
  20. package/build/types/select/option/index.d.ts +1 -1
  21. package/build/types/select/option/index.d.ts.map +1 -1
  22. package/build/types/select/searchBox/index.d.ts +1 -1
  23. package/build/types/select/searchBox/index.d.ts.map +1 -1
  24. package/package.json +3 -5
  25. package/src/button/Button.tsx +2 -2
  26. package/src/index.ts +6 -0
  27. package/src/select/{Select.spec.js → Select.spec.tsx} +8 -6
  28. package/src/select/{Select.js → Select.tsx} +135 -153
  29. package/src/select/index.ts +7 -0
  30. package/build/select/index.js +0 -8
  31. package/build/select/index.js.map +0 -1
  32. package/build/select/index.mjs +0 -6
  33. package/build/select/index.mjs.map +0 -1
  34. package/src/select/index.js +0 -3
  35. /package/src/select/option/{index.js → index.ts} +0 -0
  36. /package/src/select/searchBox/{SearchBox.spec.js → SearchBox.spec.tsx} +0 -0
  37. /package/src/select/searchBox/{index.js → index.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../src/select/Select.js"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport PropTypes from 'prop-types';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button from '../button';\nimport Chevron from '../chevron';\nimport { Position } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1, string2) => string1.toLowerCase().includes(string2.toLowerCase());\n\nfunction defaultFilterFunction(option, searchValue) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (!!label && includesString(label, searchValue)) ||\n (!!note && includesString(note, searchValue)) ||\n (!!secondary && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from, to, value) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId = '', option) => {\n if (option == null) {\n return undefined;\n }\n\n const uniqueOptionId = option.value || (option.label?.replace(/\\s/g, '') ?? '');\n\n return `option-${parentId}-${uniqueOptionId}`;\n};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size,\n block,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue,\n searchPlaceholder,\n // eslint-disable-next-line unicorn/prevent-abbreviations\n classNames: classNamesProp,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(null);\n const keyboardFocusedReference = useRef();\n const previousKeyboardFocusedOptionIndex = useRef();\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef(null);\n const selectReference = useRef(null);\n const dropdownButtonReference = useRef(null);\n const optionsListReference = useRef(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus = (event) => {\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleOnBlur = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (select && elementReceivingFocus && select.contains(elementReceivingFocus)) {\n return;\n }\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleSearchChange = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n if (onSearchChange) {\n onSearchChange(event.target.value);\n }\n };\n\n const handleKeyDown = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex != null && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex != null) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return null;\n }, null);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current ?? -1;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex === -1) {\n if (selectedOptionIndex == null) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n (previousKeyboardFocusedOptionIndex.current == null ||\n Number.isNaN(previousKeyboardFocusedOptionIndex.current))\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = null;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(null);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option) {\n return (event) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected)}\n tabIndex=\"-1\"\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n // eslint-disable-next-line react/prop-types\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n // eslint-disable-next-line react/prop-types\n function HeaderOption({ children }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected, option) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option, index) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex=\"-1\"\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option {...selectOption} classNames={classNamesProp} />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex == null) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex != null) {\n setKeyboardFocusedOptionIndex(null);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n\nSelect.propTypes = {\n placeholder: PropTypes.string,\n id: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n inverse: PropTypes.bool,\n dropdownRight: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n dropdownWidth: PropTypes.oneOf(['sm', 'md', 'lg']),\n size: PropTypes.oneOf(['sm', 'md', 'lg']),\n block: PropTypes.bool,\n selected: PropTypes.shape({\n value: PropTypes.any.isRequired,\n label: PropTypes.node,\n icon: PropTypes.node,\n currency: PropTypes.string,\n note: PropTypes.node,\n secondary: PropTypes.node,\n }),\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array. The custom search function takes two parameters. First is the option the second is the keyword.\n */\n search: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.any,\n label: PropTypes.node,\n header: PropTypes.node,\n icon: PropTypes.node,\n currency: PropTypes.string,\n note: PropTypes.node,\n secondary: PropTypes.node,\n separator: PropTypes.bool,\n disabled: PropTypes.bool,\n searchStrings: PropTypes.arrayOf(PropTypes.string),\n }),\n ).isRequired,\n searchValue: PropTypes.string,\n searchPlaceholder: PropTypes.string,\n classNames: PropTypes.objectOf(PropTypes.string),\n dropdownUp: PropTypes.bool,\n buttonProps: PropTypes.object,\n dropdownProps: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange: PropTypes.func,\n};\n\nSelect.defaultProps = {\n id: undefined,\n placeholder: undefined,\n size: 'md',\n dropdownRight: null,\n dropdownWidth: null,\n inverse: false,\n required: false,\n disabled: false,\n block: true,\n selected: null,\n onFocus: null,\n onBlur: null,\n onSearchChange: undefined,\n search: false,\n searchValue: '',\n searchPlaceholder: undefined,\n classNames: {},\n dropdownUp: false,\n buttonProps: {},\n dropdownProps: {},\n};\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","Number","isNaN","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM","propTypes","PropTypes","bool","dropdownRight","oneOf","shape","any","isRequired","node","icon","oneOfType","func","arrayOf","objectOf","object","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n // eslint-disable-next-line react/prop-types\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n // eslint-disable-next-line react/prop-types\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { useTheme } from '@wise/components-theming';
2
2
  import { clsx } from 'clsx';
3
- import PropTypes from 'prop-types';
4
3
  import { useState, useRef, useMemo, useId, useEffect } from 'react';
5
4
  import { useIntl } from 'react-intl';
6
5
  import Button from '../button/Button.mjs';
@@ -12,9 +11,9 @@ import Drawer from '../drawer/Drawer.mjs';
12
11
  import { useInputAttributes } from '../inputs/contexts.mjs';
13
12
  import messages from './Select.messages.mjs';
14
13
  import Option from './option/Option.mjs';
14
+ import SearchBox from './searchBox/SearchBox.mjs';
15
15
  import { jsxs, jsx } from 'react/jsx-runtime';
16
16
  import { useLayout } from '../common/hooks/useLayout/useLayout.mjs';
17
- import SearchBox from './searchBox/SearchBox.mjs';
18
17
  import { Position } from '../common/propsValues/position.mjs';
19
18
 
20
19
  const DEFAULT_SEARCH_VALUE = '';
@@ -31,7 +30,7 @@ function defaultFilterFunction(option, searchValue) {
31
30
  currency,
32
31
  searchStrings
33
32
  } = option;
34
- return !!label && includesString(label, searchValue) || !!note && includesString(note, searchValue) || !!secondary && includesString(secondary, searchValue) || !!currency && includesString(currency, searchValue) || !!searchStrings && searchStrings.some(string => includesString(string, searchValue));
33
+ return typeof label === 'string' && includesString(label, searchValue) || typeof note === 'string' && includesString(note, searchValue) || typeof secondary === 'string' && includesString(secondary, searchValue) || !!currency && includesString(currency, searchValue) || !!searchStrings && searchStrings.some(string => includesString(string, searchValue));
35
34
  }
36
35
  function isActionableOption(option) {
37
36
  return !option.header && !option.separator && !option.disabled;
@@ -45,7 +44,6 @@ function isSeparatorOption(option) {
45
44
  function clamp(from, to, value) {
46
45
  return Math.max(Math.min(to, value), from);
47
46
  }
48
-
49
47
  /**
50
48
  * No option or placeholder option is selected
51
49
  */
@@ -56,14 +54,15 @@ function isPlaceholderOption(option) {
56
54
  function isSearchableOption(option) {
57
55
  return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);
58
56
  }
59
- const getUniqueIdForOption = (parentId = '', option) => {
57
+ const getUniqueIdForOption = (parentId, option) => {
60
58
  if (option == null) {
61
59
  return undefined;
62
60
  }
63
- const uniqueOptionId = option.value || (option.label?.replace(/\s/g, '') ?? '');
64
- return `option-${parentId}-${uniqueOptionId}`;
61
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
62
+ const uniqueOptionId = option.value || (typeof option.label === 'string' ? option.label.replace(/\s/g, '') : '');
63
+ return `option-${parentId ?? ''}-${uniqueOptionId}`;
65
64
  };
66
-
65
+ const defaultClassNames = {};
67
66
  /**
68
67
  * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)
69
68
  */
@@ -74,8 +73,8 @@ function Select({
74
73
  disabled,
75
74
  inverse,
76
75
  dropdownWidth,
77
- size,
78
- block,
76
+ size = 'md',
77
+ block = true,
79
78
  selected,
80
79
  search,
81
80
  onChange,
@@ -83,10 +82,9 @@ function Select({
83
82
  onBlur,
84
83
  options: defaultOptions,
85
84
  onSearchChange,
86
- searchValue: initSearchValue,
85
+ searchValue: initSearchValue = '',
87
86
  searchPlaceholder,
88
- // eslint-disable-next-line unicorn/prevent-abbreviations
89
- classNames: classNamesProp,
87
+ classNames: classNamesProp = defaultClassNames,
90
88
  dropdownUp,
91
89
  dropdownProps,
92
90
  buttonProps
@@ -101,9 +99,9 @@ function Select({
101
99
  const s = className => classNamesProp[className] || className;
102
100
  const [open, setOpen] = useState(false);
103
101
  const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);
104
- const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(null);
105
- const keyboardFocusedReference = useRef();
106
- const previousKeyboardFocusedOptionIndex = useRef();
102
+ const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);
103
+ const keyboardFocusedReference = useRef(null);
104
+ const previousKeyboardFocusedOptionIndex = useRef(-1);
107
105
  const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);
108
106
  const searchBoxReference = useRef(null);
109
107
  const selectReference = useRef(null);
@@ -132,7 +130,7 @@ function Select({
132
130
  isMobile
133
131
  } = useLayout();
134
132
  useEffect(() => {
135
- let cancelled;
133
+ let cancelled = false;
136
134
  if (keyboardFocusedOptionIndex >= 0) {
137
135
  requestAnimationFrame(() => {
138
136
  if (!cancelled) {
@@ -159,9 +157,7 @@ function Select({
159
157
  }
160
158
  };
161
159
  const handleOnFocus = event => {
162
- if (onFocus) {
163
- onFocus(event);
164
- }
160
+ onFocus?.(event);
165
161
  };
166
162
  const handleOnBlur = event => {
167
163
  const {
@@ -170,20 +166,16 @@ function Select({
170
166
  if (nativeEvent) {
171
167
  const elementReceivingFocus = nativeEvent.relatedTarget;
172
168
  const select = event.currentTarget;
173
- if (select && elementReceivingFocus && select.contains(elementReceivingFocus)) {
169
+ if (select && elementReceivingFocus instanceof Node && select.contains(elementReceivingFocus)) {
174
170
  return;
175
171
  }
176
172
  }
177
- if (onBlur) {
178
- onBlur(event);
179
- }
173
+ onBlur?.(event);
180
174
  };
181
175
  const handleSearchChange = event => {
182
176
  setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);
183
177
  setSearchValue(event.target.value);
184
- if (onSearchChange) {
185
- onSearchChange(event.target.value);
186
- }
178
+ onSearchChange?.(event.target.value);
187
179
  };
188
180
  const handleKeyDown = event => {
189
181
  switch (event.key) {
@@ -226,24 +218,24 @@ function Select({
226
218
  }
227
219
  };
228
220
  function selectKeyboardFocusedOption() {
229
- if (keyboardFocusedOptionIndex != null && selectableOptions.length > 0) {
221
+ if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {
230
222
  selectOption(selectableOptions[keyboardFocusedOptionIndex]);
231
223
  }
232
224
  }
233
225
  function moveFocusWithDifference(difference) {
234
226
  const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {
235
- if (optionIndex != null) {
227
+ if (optionIndex >= 0) {
236
228
  return optionIndex;
237
229
  }
238
230
  if (isOptionSelected(selected, current)) {
239
231
  return index;
240
232
  }
241
- return null;
242
- }, null);
243
- const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current ?? -1;
233
+ return -1;
234
+ }, -1);
235
+ const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;
244
236
  let indexToStartMovingFrom = previousFocusedIndex;
245
- if (previousFocusedIndex === -1) {
246
- if (selectedOptionIndex == null) {
237
+ if (previousFocusedIndex < 0) {
238
+ if (selectedOptionIndex < 0) {
247
239
  setKeyboardFocusedOptionIndex(0);
248
240
  } else {
249
241
  indexToStartMovingFrom = selectedOptionIndex;
@@ -259,18 +251,18 @@ function Select({
259
251
  if (isSearchEnabled && searchBoxReference.current) {
260
252
  searchBoxReference.current.focus();
261
253
  }
262
- if (!isSearchEnabled && optionsListReference.current && (previousKeyboardFocusedOptionIndex.current == null || Number.isNaN(previousKeyboardFocusedOptionIndex.current))) {
254
+ if (!isSearchEnabled && optionsListReference.current && previousKeyboardFocusedOptionIndex.current < 0) {
263
255
  optionsListReference.current.focus();
264
256
  }
265
257
  }
266
258
  previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;
267
259
  } else {
268
- previousKeyboardFocusedOptionIndex.current = null;
260
+ previousKeyboardFocusedOptionIndex.current = -1;
269
261
  }
270
262
  }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);
271
263
  const handleCloseOptions = () => {
272
264
  setOpen(false);
273
- setKeyboardFocusedOptionIndex(null);
265
+ setKeyboardFocusedOptionIndex(-1);
274
266
  if (dropdownButtonReference.current) {
275
267
  dropdownButtonReference.current.focus();
276
268
  }
@@ -286,7 +278,7 @@ function Select({
286
278
  handleCloseOptions();
287
279
  }
288
280
  function renderOptionsList({
289
- className
281
+ className = ''
290
282
  } = {}) {
291
283
  const dropdownClass = clsx(s('np-dropdown-menu'), {
292
284
  [s('np-dropdown-menu-desktop')]: !isMobile,
@@ -298,8 +290,8 @@ function Select({
298
290
  id: listboxId,
299
291
  role: "listbox",
300
292
  "aria-orientation": "vertical",
301
- "aria-activedescendant": getUniqueIdForOption(id, selected),
302
- tabIndex: "-1",
293
+ "aria-activedescendant": getUniqueIdForOption(id, selected ?? null),
294
+ tabIndex: -1,
303
295
  className: dropdownClass,
304
296
  ...dropdownProps,
305
297
  children: [showPlaceholder && /*#__PURE__*/jsx(PlaceHolderOption, {}), isSearchEnabled && /*#__PURE__*/jsx(SearchBox, {
@@ -349,7 +341,6 @@ function Select({
349
341
  })
350
342
  );
351
343
  }
352
-
353
344
  // eslint-disable-next-line react/prop-types
354
345
  function SeparatorOption() {
355
346
  return /*#__PURE__*/jsx("li", {
@@ -357,7 +348,6 @@ function Select({
357
348
  "aria-hidden": true
358
349
  });
359
350
  }
360
-
361
351
  // eslint-disable-next-line react/prop-types
362
352
  function HeaderOption({
363
353
  children
@@ -401,13 +391,15 @@ function Select({
401
391
  "aria-selected": isActive,
402
392
  "aria-disabled": option.disabled,
403
393
  role: "option",
404
- tabIndex: "-1",
394
+ tabIndex: -1,
405
395
  className: className,
406
396
  onClick: handleOnClick,
407
397
  onKeyPress: handleOnClick,
408
398
  children: /*#__PURE__*/jsx("a", {
409
399
  disabled: selectOption.disabled,
410
400
  children: /*#__PURE__*/jsx(Option, {
401
+ label: undefined,
402
+ value: undefined,
411
403
  ...selectOption,
412
404
  classNames: classNamesProp
413
405
  })
@@ -425,11 +417,11 @@ function Select({
425
417
  }
426
418
  const hasActiveOptions = !!defaultOptions.length;
427
419
  if (open && (initSearchValue || searchValue)) {
428
- if (hasActiveOptions && keyboardFocusedOptionIndex == null) {
420
+ if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {
429
421
  setKeyboardFocusedOptionIndex(0);
430
422
  }
431
- if (!hasActiveOptions && keyboardFocusedOptionIndex != null) {
432
- setKeyboardFocusedOptionIndex(null);
423
+ if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {
424
+ setKeyboardFocusedOptionIndex(-1);
433
425
  }
434
426
  }
435
427
  return /*#__PURE__*/jsxs("div", {
@@ -458,6 +450,7 @@ function Select({
458
450
  onClick: handleOnClick,
459
451
  ...buttonProps,
460
452
  children: [selected ? /*#__PURE__*/jsx(Option, {
453
+ label: undefined,
461
454
  ...selected,
462
455
  classNames: classNamesProp,
463
456
  selected: true
@@ -494,79 +487,6 @@ function Select({
494
487
  })]
495
488
  });
496
489
  }
497
- Select.propTypes = {
498
- placeholder: PropTypes.string,
499
- id: PropTypes.string,
500
- required: PropTypes.bool,
501
- disabled: PropTypes.bool,
502
- inverse: PropTypes.bool,
503
- dropdownRight: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
504
- dropdownWidth: PropTypes.oneOf(['sm', 'md', 'lg']),
505
- size: PropTypes.oneOf(['sm', 'md', 'lg']),
506
- block: PropTypes.bool,
507
- selected: PropTypes.shape({
508
- value: PropTypes.any.isRequired,
509
- label: PropTypes.node,
510
- icon: PropTypes.node,
511
- currency: PropTypes.string,
512
- note: PropTypes.node,
513
- secondary: PropTypes.node
514
- }),
515
- /**
516
- * Search toggle
517
- * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)
518
- * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array. The custom search function takes two parameters. First is the option the second is the keyword.
519
- */
520
- search: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),
521
- options: PropTypes.arrayOf(PropTypes.shape({
522
- value: PropTypes.any,
523
- label: PropTypes.node,
524
- header: PropTypes.node,
525
- icon: PropTypes.node,
526
- currency: PropTypes.string,
527
- note: PropTypes.node,
528
- secondary: PropTypes.node,
529
- separator: PropTypes.bool,
530
- disabled: PropTypes.bool,
531
- searchStrings: PropTypes.arrayOf(PropTypes.string)
532
- })).isRequired,
533
- searchValue: PropTypes.string,
534
- searchPlaceholder: PropTypes.string,
535
- classNames: PropTypes.objectOf(PropTypes.string),
536
- dropdownUp: PropTypes.bool,
537
- buttonProps: PropTypes.object,
538
- dropdownProps: PropTypes.object,
539
- onChange: PropTypes.func.isRequired,
540
- onFocus: PropTypes.func,
541
- onBlur: PropTypes.func,
542
- /**
543
- * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.
544
- * DO NOT USE TOGETHER WITH `search` PROPERTY
545
- */
546
- onSearchChange: PropTypes.func
547
- };
548
- Select.defaultProps = {
549
- id: undefined,
550
- placeholder: undefined,
551
- size: 'md',
552
- dropdownRight: null,
553
- dropdownWidth: null,
554
- inverse: false,
555
- required: false,
556
- disabled: false,
557
- block: true,
558
- selected: null,
559
- onFocus: null,
560
- onBlur: null,
561
- onSearchChange: undefined,
562
- search: false,
563
- searchValue: '',
564
- searchPlaceholder: undefined,
565
- classNames: {},
566
- dropdownUp: false,
567
- buttonProps: {},
568
- dropdownProps: {}
569
- };
570
490
 
571
491
  export { Select as default };
572
492
  //# sourceMappingURL=Select.mjs.map