@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.
- package/README.md +0 -8
- package/build/button/Button.js.map +1 -1
- package/build/button/Button.mjs.map +1 -1
- package/build/common/panel/Panel.js +1 -2
- package/build/common/panel/Panel.js.map +1 -1
- package/build/common/panel/Panel.mjs +1 -2
- package/build/common/panel/Panel.mjs.map +1 -1
- package/build/select/Select.js +39 -123
- package/build/select/Select.js.map +1 -1
- package/build/select/Select.mjs +39 -119
- package/build/select/Select.mjs.map +1 -1
- package/build/types/button/Button.d.ts +2 -2
- package/build/types/button/Button.d.ts.map +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/select/Select.d.ts +64 -94
- package/build/types/select/Select.d.ts.map +1 -1
- package/build/types/select/index.d.ts +2 -2
- package/build/types/select/index.d.ts.map +1 -1
- package/build/types/select/option/index.d.ts +1 -1
- package/build/types/select/option/index.d.ts.map +1 -1
- package/build/types/select/searchBox/index.d.ts +1 -1
- package/build/types/select/searchBox/index.d.ts.map +1 -1
- package/package.json +3 -5
- package/src/button/Button.tsx +2 -2
- package/src/index.ts +6 -0
- package/src/select/{Select.spec.js → Select.spec.tsx} +8 -6
- package/src/select/{Select.js → Select.tsx} +135 -153
- package/src/select/index.ts +7 -0
- package/build/select/index.js +0 -8
- package/build/select/index.js.map +0 -1
- package/build/select/index.mjs +0 -6
- package/build/select/index.mjs.map +0 -1
- package/src/select/index.js +0 -3
- /package/src/select/option/{index.js → index.ts} +0 -0
- /package/src/select/searchBox/{SearchBox.spec.js → SearchBox.spec.tsx} +0 -0
- /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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"}
|
package/build/select/Select.mjs
CHANGED
|
@@ -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
|
|
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
|
|
57
|
+
const getUniqueIdForOption = (parentId, option) => {
|
|
60
58
|
if (option == null) {
|
|
61
59
|
return undefined;
|
|
62
60
|
}
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
227
|
+
if (optionIndex >= 0) {
|
|
236
228
|
return optionIndex;
|
|
237
229
|
}
|
|
238
230
|
if (isOptionSelected(selected, current)) {
|
|
239
231
|
return index;
|
|
240
232
|
}
|
|
241
|
-
return
|
|
242
|
-
},
|
|
243
|
-
const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current
|
|
233
|
+
return -1;
|
|
234
|
+
}, -1);
|
|
235
|
+
const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;
|
|
244
236
|
let indexToStartMovingFrom = previousFocusedIndex;
|
|
245
|
-
if (previousFocusedIndex
|
|
246
|
-
if (selectedOptionIndex
|
|
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 &&
|
|
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 =
|
|
260
|
+
previousKeyboardFocusedOptionIndex.current = -1;
|
|
269
261
|
}
|
|
270
262
|
}, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);
|
|
271
263
|
const handleCloseOptions = () => {
|
|
272
264
|
setOpen(false);
|
|
273
|
-
setKeyboardFocusedOptionIndex(
|
|
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:
|
|
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:
|
|
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
|
|
420
|
+
if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {
|
|
429
421
|
setKeyboardFocusedOptionIndex(0);
|
|
430
422
|
}
|
|
431
|
-
if (!hasActiveOptions && keyboardFocusedOptionIndex
|
|
432
|
-
setKeyboardFocusedOptionIndex(
|
|
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
|