@corva/ui 3.78.0-9 → 3.79.0-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/MCP_README.md +11 -3
- package/cjs-bundle/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
- package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js +1 -1
- package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
- package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/Hotkey.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/Hotkey.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Command.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Command.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Option.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Option.js.map +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js +2 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js.map +1 -0
- package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js +1 -1
- package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js.map +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/cjs-bundle/icons/customIcons/icons/Search.js.map +1 -1
- package/components/AssetsMultipleSelector/AssetsMultipleSelector.d.ts.map +1 -1
- package/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js +1 -1
- package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
- package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
- package/componentsV2/ColorPicker/ColorPicker.d.ts +3 -0
- package/componentsV2/ColorPicker/ColorPicker.d.ts.map +1 -1
- package/componentsV2/ColorPicker/ColorPicker.js +1 -1
- package/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
- package/componentsV2/DatePicker/DatePickerNext.stories.d.ts.map +1 -1
- package/componentsV2/DatePicker/Input/Input.js +1 -1
- package/componentsV2/DatePicker/Input/Input.js.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
- package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
- package/componentsV2/DatePicker/utils.js +1 -1
- package/componentsV2/DatePicker/utils.js.map +1 -1
- package/componentsV2/Hotkey/Hotkey.d.ts +4 -0
- package/componentsV2/Hotkey/Hotkey.d.ts.map +1 -1
- package/componentsV2/Hotkey/Hotkey.js +1 -1
- package/componentsV2/Hotkey/Hotkey.js.map +1 -1
- package/componentsV2/Hotkey/Hotkey.stories.d.ts +1 -0
- package/componentsV2/Hotkey/Hotkey.stories.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/CapsLock.d.ts +2 -0
- package/componentsV2/Hotkey/icons/CapsLock.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/CapsLock.js +2 -0
- package/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
- package/componentsV2/Hotkey/icons/Command.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Command.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Command.js +1 -1
- package/componentsV2/Hotkey/icons/Command.js.map +1 -1
- package/componentsV2/Hotkey/icons/LMB.d.ts +2 -0
- package/componentsV2/Hotkey/icons/LMB.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/LMB.js +2 -0
- package/componentsV2/Hotkey/icons/LMB.js.map +1 -0
- package/componentsV2/Hotkey/icons/MacControl.d.ts +2 -0
- package/componentsV2/Hotkey/icons/MacControl.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/MacControl.js +2 -0
- package/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
- package/componentsV2/Hotkey/icons/Option.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Option.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Option.js +1 -1
- package/componentsV2/Hotkey/icons/Option.js.map +1 -1
- package/componentsV2/Hotkey/icons/RMB.d.ts +2 -0
- package/componentsV2/Hotkey/icons/RMB.d.ts.map +1 -0
- package/componentsV2/Hotkey/icons/RMB.js +2 -0
- package/componentsV2/Hotkey/icons/RMB.js.map +1 -0
- package/componentsV2/Hotkey/icons/Shift.d.ts +1 -1
- package/componentsV2/Hotkey/icons/Shift.d.ts.map +1 -1
- package/componentsV2/Hotkey/icons/Shift.js +1 -1
- package/componentsV2/Hotkey/icons/Shift.js.map +1 -1
- package/componentsV2/Hotkey/icons/index.d.ts +4 -0
- package/componentsV2/Hotkey/icons/index.d.ts.map +1 -1
- package/componentsV2/Hotkey/index.d.ts +1 -1
- package/componentsV2/Hotkey/index.d.ts.map +1 -1
- package/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
- package/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
- package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/icons/customIcons/icons/Search.d.ts +1 -1
- package/icons/customIcons/icons/Search.js.map +1 -1
- package/mcp-server/server.mjs +887 -11002
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.js","sources":["../../../src/componentsV2/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import {\n Autocomplete as MuiAutocomplete,\n AutocompleteChangeReason as MuiAutocompleteChangeReason,\n AutocompleteCloseReason as MuiAutocompleteCloseReason,\n AutocompleteProps as MuiAutocompleteBaseProps,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n createFilterOptions,\n} from '@material-ui/lab';\nimport {\n ChangeEvent,\n ComponentType,\n HTMLAttributes,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { MenuItemProps } from '../Menu/MenuItem';\nimport { CloseSmallIcon, DownIcon } from '../../icons';\nimport { TextInputNextProps } from '../TextInputNext';\nimport { TextInputProps } from '../TextInput';\n\nimport { AutocompleteInput } from './AutocompleteInput';\nimport { AutocompletePaper } from './AutocompletePaper';\nimport {\n AllOptionMark,\n AutocompleteOption,\n CreateOptionMark,\n InternalOption,\n isRealOption,\n OwnAddedOption,\n renderOptionDefault,\n renderSelectedValue,\n renderSelectedValueChips,\n} from './utils';\nimport { AutocompleteMenuItem } from './AutocompleteMenuItem';\nimport { AutocompleteListBox } from './AutocompleteListBox';\n\nimport styles from './Autocomplete.scss';\nimport { Menu } from '../Menu';\n\ntype MuiAutocompleteProps<T extends AutocompleteOption> = Required<\n MuiAutocompleteBaseProps<InternalOption<T>, boolean, false, false>\n>;\n\ntype ChangeReason =\n | MuiAutocompleteChangeReason\n | 'select-option-all'\n | 'remove-option-all'\n | 'select-only-option';\ntype AutocompletePopperProps = Omit<PopperProps, 'open' | 'anchorEl' | 'children'>;\n\ntype AutocompleteBaseProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = {\n /**\n * Options to allow selection from. Has to be assignable to `{ id: string | number; title: string; prefix?: ReactNode; }[]`\n */\n options?: T[];\n /**\n * Selected value. If `multiple` is `false | undefined`, and the value is an array, only the first element will be used\n *\n * There's a [bug in TS](https://github.com/microsoft/TypeScript/issues/47599) which causes `onChange` prop\n * to have incorrect typing if we mix T and T['id'] in `value`. Therefore, we can't use the \"correct\" typing\n * ```\n * value?: T['id'] | T | (T['id'] | T)[];\n * ```\n *\n * You may need to provide additional typings\n */\n value?: string | number | T | (string | number | T)[];\n /**\n * If `true`, the component will support multiple selection\n */\n multiple?: Multiple;\n /**\n * Selection change handler\n * Receives an array of options if `multiple` is `true`, a single selected option or `undefined` otherwise\n */\n onChange?: (\n value: Multiple extends undefined | false ? T | undefined : T[],\n reason: ChangeReason,\n event?: ChangeEvent<unknown>\n ) => void;\n label?: ReactNode;\n placeholder?: string;\n /**\n * Controls the size of the options rendered\n */\n optionSize?: MenuItemProps['size'];\n disabled?: boolean;\n /**\n * If exists - allows user to create own options. Called when 'Add \"whatever\"' option is selected\n */\n onCreate?: (title: string) => void;\n\n prefix?: ReactNode;\n loading?: boolean;\n showPopupIcon?: boolean;\n /**\n * Controls the \"Clear\" button that's shown to the right if there is a value\n */\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n /**\n * Triggered when user types something\n */\n onInputChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n status?: TextInputNextProps['status'];\n message?: TextInputNextProps['message'];\n size?: TextInputNextProps['size'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n /**\n * Makes internal text field readonly, effectively turning component into a simple `<select/>`\n */\n disableFiltering?: boolean;\n\n renderOption?: (item: T) => ReactNode;\n /**\n * Message to show when there are no options\n */\n noOptionsMessage?: ReactNode;\n spacing?: TextInputProps['spacing'];\n /**\n * Function that filters options based on input value\n */\n filterOptions?: (options: T[], inputValue: string) => T[];\n /**\n * Function that determines if an option is disabled. Used to override the default\n * @param option\n */\n getOptionDisabled?: (option: T) => boolean;\n /**\n * If `multiple === true` shows an \"All\" option that selects/deselects all options\n */\n useAllOption?: boolean;\n /**\n * If `multiple === true` shows a \"Select Only\" button on option that selects only the corresponding option\n */\n useOnlyOptionButton?: boolean;\n\n /**\n * Used to render selected values when `multiple === true`\n */\n renderSelected?: (\n data: { option: T; onDelete: MouseEventHandler }[],\n options: { useAllOption: boolean; allOptions: T[] }\n ) => ReactNode;\n\n /**\n * Defines option grouping\n */\n groupBy?: (option: T) => string;\n /**\n * Group render override\n */\n renderGroup?: (props: AutocompleteRenderGroupParams) => ReactNode;\n\n /**\n * A classname that will be applied to dropdown (`<Paper/>` component)\n */\n dropdownClassName?: string;\n /**\n * Escape hatch to customize dropdown popper behavior.\n * `open`, `anchorEl`, and `children` are controlled internally.\n */\n popperProps?: Partial<AutocompletePopperProps>;\n\n type?: 'default' | 'search';\n\n className?: string;\n testId?: string;\n\n /**\n * Called when the dropdown is opened\n */\n onOpen?: () => void;\n /**\n * Called when the dropdown is closed\n */\n onClose?: (reason: MuiAutocompleteCloseReason) => void;\n\n /**\n * Escape hatch to fine-tune the styling of underlying elements\n */\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n /** HTML attributes forwarded to the underlying input. */\n htmlAttributes?: TextInputNextProps['htmlAttributes'];\n\n /**\n * Custom listbox component for rendering options (e.g., virtualized list)\n */\n listboxComponent?: ComponentType<HTMLAttributes<HTMLElement>>;\n\n // TODO Remove when making next a new baseline\n isNext?: boolean;\n};\n\nexport type AutocompleteChangeHandler<\n Option extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Required<AutocompleteBaseProps<Option, Multiple>>['onChange'];\n\nconst AutocompleteBase = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>({\n label,\n options = [],\n value,\n onChange,\n multiple,\n renderOption = renderOptionDefault,\n optionSize = 'medium',\n showPopupIcon = true,\n clearable = true,\n loading,\n noOptionsMessage,\n filterOptions,\n prefix,\n disabled,\n getOptionDisabled,\n renderSelected = renderSelectedValue,\n onInputChange,\n className,\n testId,\n status,\n message,\n useAllOption = false,\n useOnlyOptionButton = false,\n groupBy,\n renderGroup,\n disableFiltering,\n onCreate,\n dropdownClassName,\n popperProps,\n placeholder,\n focusOnClear = true,\n listboxComponent,\n size = 'small',\n labelPlacement = 'top',\n elementsClassNames,\n htmlAttributes,\n onOpen,\n onClose,\n\n // Old props\n type,\n spacing,\n isNext,\n}: AutocompleteBaseProps<T, Multiple>) => {\n const [inputValue, setInputValue] = useState('');\n\n const muiValue = useMemo(() => {\n if (value === undefined || (value instanceof Array && value.length === 0)) {\n return multiple ? [] : null;\n }\n\n // Array of either ids or actual values\n const mixedValues = value instanceof Array ? value : [value];\n\n if (multiple) {\n const valuesArray = mixedValues.filter(value => typeof value !== 'object');\n const objectValues = mixedValues\n .filter(value => typeof value === 'object')\n // MUI Autocomplete doesn't like react nodes in value, so we strip everything from the object to the bare minimum\n .map(({ id, title }) => ({ id, title }));\n const optionsById = options.filter(option => valuesArray.includes(option.id));\n\n return [...optionsById, ...objectValues];\n } else {\n return typeof mixedValues[0] === 'object'\n ? mixedValues[0]\n : options.find(option => mixedValues[0] === option.id) || null;\n }\n }, [multiple, value, options]) as MuiAutocompleteBaseProps<T, Multiple, false, false>['value'];\n\n const hasMultiSelected = muiValue instanceof Array && muiValue.length > 0;\n const hasAllMultiSelected = muiValue instanceof Array && muiValue.length === options.length;\n const defaultNoOptionsText = loading ? 'Loading ...' : 'No options';\n const disableClearable =\n !clearable || !muiValue || (muiValue instanceof Array && !muiValue?.length);\n\n const renderInput = useCallback(\n (inputProps: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n {...inputProps}\n label={label}\n loading={loading}\n prefix={prefix}\n status={status}\n message={message}\n readOnly={disableFiltering}\n placeholder={placeholder}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n // Old props\n type={type}\n spacing={spacing}\n isNext={isNext}\n />\n ),\n [\n label,\n loading,\n prefix,\n status,\n message,\n disableFiltering,\n placeholder,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n type,\n spacing,\n isNext,\n ]\n );\n\n const actualOnChange = useCallback<MuiAutocompleteProps<T>['onChange']>(\n (event, optionOrArray, reason) => {\n if (reason === 'clear' && !focusOnClear) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n // Handling of \"Add\" option\n if (onCreate && optionOrArray) {\n const optionArray = optionOrArray instanceof Array ? optionOrArray : [optionOrArray];\n const foundAddOption: OwnAddedOption | undefined = optionArray.find(\n option => !isRealOption(option) && !!option[CreateOptionMark]\n );\n\n if (foundAddOption) {\n onCreate(foundAddOption.newOptionTitle || '');\n return;\n }\n }\n\n // Handling of \"All\" option - only multiselect\n if (multiple && optionOrArray instanceof Array) {\n const allOptionExists = optionOrArray.some(\n option => !isRealOption(option) && !!option[AllOptionMark]\n );\n\n if (allOptionExists) {\n // Selecting \"All\"\n if (muiValue instanceof Array && muiValue.length < options.length) {\n onChange?.(options.filter(isRealOption) as never, reason, event);\n }\n // Deselecting \"All\"\n else {\n onChange?.([] as never, reason, event);\n }\n return;\n }\n }\n\n onChange?.((optionOrArray || undefined) as never, reason, event);\n },\n [focusOnClear, onCreate, multiple, onChange, muiValue, options]\n );\n\n const onSelectOnly = useCallback(\n (option: T, event: ChangeEvent<object>) =>\n onChange?.([option] as never, 'select-only-option', event),\n [onChange]\n );\n\n const actualRenderOption = useCallback<MuiAutocompleteProps<T>['renderOption']>(\n (option: InternalOption<T>, { selected }) => {\n if (isRealOption(option)) {\n return (\n <AutocompleteMenuItem\n size={optionSize}\n selected={selected}\n prefix={option.prefix}\n multiple={multiple}\n useOnlyButton={useOnlyOptionButton}\n option={option}\n onSelectOnly={onSelectOnly}\n >\n {renderOption(option)}\n </AutocompleteMenuItem>\n );\n } else if (option[AllOptionMark]) {\n return (\n <div className={styles.allOptionContainer}>\n <AutocompleteMenuItem\n size={optionSize}\n selected={hasMultiSelected}\n indeterminate={hasMultiSelected && !hasAllMultiSelected}\n multiple\n >\n {option.title}\n </AutocompleteMenuItem>\n <Menu.Divider className={styles.allOptionDivider} />\n </div>\n );\n } else {\n return (\n <AutocompleteMenuItem size={optionSize} selected={hasMultiSelected}>\n {option.title}\n </AutocompleteMenuItem>\n );\n }\n },\n [\n optionSize,\n multiple,\n useOnlyOptionButton,\n onSelectOnly,\n renderOption,\n hasMultiSelected,\n hasAllMultiSelected,\n ]\n );\n\n const actualFilterOptions = useCallback<MuiAutocompleteProps<T>['filterOptions']>(\n (options, params): InternalOption<T>[] => {\n const filteredOptions = filterOptions\n ? filterOptions(options as T[], params.inputValue)\n : createFilterOptions<T>()(options as T[], params);\n\n // Adding \"All\" option if needed\n const optionsWithAll =\n useAllOption && multiple && filteredOptions.length && options.length > 1\n ? [{ title: 'All', [AllOptionMark]: true }, ...filteredOptions]\n : filteredOptions;\n\n // Adding \"Add\" option if needed\n return onCreate && params.inputValue.trim() !== ''\n ? [\n ...optionsWithAll,\n {\n title: `Add \"${params.inputValue}\"`,\n [CreateOptionMark]: true,\n newOptionTitle: params.inputValue,\n },\n ]\n : optionsWithAll;\n },\n [filterOptions, onCreate, useAllOption, multiple]\n );\n\n const actualGetOptionDisabled = useCallback<MuiAutocompleteProps<T>['getOptionDisabled']>(\n option => isRealOption(option) && !!getOptionDisabled?.(option),\n [getOptionDisabled]\n );\n\n const getOptionLabel = useCallback<MuiAutocompleteProps<T>['getOptionLabel']>(\n option => option.title,\n []\n );\n\n const renderTags = useCallback<MuiAutocompleteProps<T>['renderTags']>(\n (tags, getTagProps) => {\n const tagsArray = tags.filter(isRealOption).map((option, index) => {\n // Untyped in MUI, so we have to do it ourselves\n const { onDelete } = getTagProps({ index }) as { onDelete: MouseEventHandler };\n return { option, onDelete };\n });\n\n return renderSelected(tagsArray, { useAllOption, allOptions: options });\n },\n [renderSelected, useAllOption, options]\n );\n\n const actualOnInputChange = useCallback<MuiAutocompleteProps<T>['onInputChange']>(\n (event, value, reason) => {\n if (event && event.type === 'blur') {\n setInputValue('');\n } else if (reason !== 'reset') {\n setInputValue(value);\n }\n\n if (reason !== 'reset') {\n onInputChange?.(value, event as ChangeEvent<HTMLInputElement>);\n }\n },\n [onInputChange]\n );\n\n const actualGroupBy = useMemo<MuiAutocompleteProps<T>['groupBy'] | undefined>(() => {\n if (groupBy) {\n return option => {\n if (isRealOption(option)) {\n return groupBy(option);\n }\n\n return '';\n };\n }\n\n return undefined;\n }, [groupBy]);\n\n const classes = useMemo(() => ({ paper: dropdownClassName }), [dropdownClassName]);\n\n const getOptionSelected = useCallback((a: InternalOption<T>, b: InternalOption<T>) => {\n return isRealOption(a) && isRealOption(b) ? a.id === b.id : false;\n }, []);\n\n const Component = MuiAutocomplete<InternalOption<T>, Multiple, boolean, false>;\n\n const PopperComponent = useCallback(\n (props: PopperProps) => (\n <Popper\n {...props}\n {...popperProps}\n className={classNames(props?.className, popperProps?.className)}\n />\n ),\n [popperProps]\n ) as NonNullable<MuiAutocompleteProps<T>['PopperComponent']>;\n\n const actualOnOpen = useCallback<MuiAutocompleteProps<T>['onOpen']>(() => {\n onOpen?.();\n }, [onOpen]);\n\n const actualOnClose = useCallback<MuiAutocompleteProps<T>['onClose']>(\n (_e, reason) => {\n onClose?.(reason);\n },\n [onClose]\n );\n\n return (\n <div\n className={classNames(\n styles.root,\n showPopupIcon && styles.withArrow,\n !disableClearable && styles.withClear,\n className\n )}\n data-testid={testId}\n >\n <Component\n value={muiValue}\n options={options}\n getOptionLabel={getOptionLabel}\n renderInput={renderInput}\n PopperComponent={PopperComponent}\n PaperComponent={AutocompletePaper}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n blurOnSelect={!multiple}\n onChange={actualOnChange}\n renderOption={actualRenderOption}\n popupIcon={<DownIcon size={16} />}\n forcePopupIcon={!!showPopupIcon}\n closeIcon={<CloseSmallIcon size={16} />}\n disableClearable={disableClearable}\n clearText=\"\"\n noOptionsText={noOptionsMessage || defaultNoOptionsText}\n filterOptions={actualFilterOptions}\n disabled={disabled}\n getOptionDisabled={actualGetOptionDisabled}\n renderTags={renderTags}\n inputValue={multiple ? inputValue : undefined}\n onInputChange={actualOnInputChange}\n groupBy={actualGroupBy}\n renderGroup={renderGroup}\n clearOnBlur\n selectOnFocus={!disableFiltering}\n classes={classes}\n getOptionSelected={getOptionSelected}\n ListboxComponent={listboxComponent ?? AutocompleteListBox}\n onOpen={actualOnOpen}\n onClose={actualOnClose}\n />\n </div>\n );\n};\n\n// Old version\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport type AutocompleteProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<\n AutocompleteBaseProps<T, Multiple>,\n 'size' | 'labelPlacement' | 'elementsClassNames' | 'htmlAttributes' | 'isNext'\n>;\n\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport const Autocomplete = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: false });\n\n// New version\nexport type AutocompleteNextProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<AutocompleteBaseProps<T, Multiple>, 'type' | 'spacing' | 'isNext'>;\n\nexport const AutocompleteNext = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteNextProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: true });\n\nAutocompleteNext.selectedValueRenderers = {\n default: renderSelectedValue,\n chipsMultiline: renderSelectedValueChips,\n};\n"],"names":["AutocompleteBase","_ref","label","_ref$options","options","value","onChange","multiple","_ref$renderOption","renderOption","renderOptionDefault","_ref$optionSize","optionSize","_ref$showPopupIcon","showPopupIcon","_ref$clearable","clearable","loading","noOptionsMessage","filterOptions","prefix","disabled","getOptionDisabled","_ref$renderSelected","renderSelected","renderSelectedValue","onInputChange","className","testId","status","message","_ref$useAllOption","useAllOption","_ref$useOnlyOptionBut","useOnlyOptionButton","groupBy","renderGroup","disableFiltering","onCreate","dropdownClassName","popperProps","placeholder","_ref$focusOnClear","focusOnClear","listboxComponent","_ref$size","size","_ref$labelPlacement","labelPlacement","elementsClassNames","htmlAttributes","onOpen","onClose","type","spacing","isNext","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","muiValue","useMemo","undefined","Array","length","mixedValues","valuesArray","filter","_typeof","objectValues","map","_ref2","id","title","optionsById","option","includes","find","hasMultiSelected","hasAllMultiSelected","defaultNoOptionsText","disableClearable","renderInput","useCallback","inputProps","_jsx","AutocompleteInput","_objectSpread","readOnly","actualOnChange","event","optionOrArray","reason","stopPropagation","preventDefault","foundAddOption","isRealOption","CreateOptionMark","newOptionTitle","some","AllOptionMark","onSelectOnly","actualRenderOption","_ref3","selected","AutocompleteMenuItem","useOnlyButton","children","_jsxs","styles","allOptionContainer","indeterminate","Menu","Divider","allOptionDivider","actualFilterOptions","params","_ref5","filteredOptions","createFilterOptions","optionsWithAll","_defineProperty","trim","concat","_toConsumableArray","actualGetOptionDisabled","getOptionLabel","renderTags","tags","getTagProps","tagsArray","index","onDelete","allOptions","actualOnInputChange","actualGroupBy","classes","paper","getOptionSelected","a","b","Component","MuiAutocomplete","PopperComponent","props","Popper","classNames","actualOnOpen","actualOnClose","_e","root","withArrow","withClear","PaperComponent","AutocompletePaper","disableCloseOnSelect","blurOnSelect","popupIcon","DownIcon","forcePopupIcon","closeIcon","CloseSmallIcon","clearText","noOptionsText","clearOnBlur","selectOnFocus","ListboxComponent","AutocompleteListBox","Autocomplete","AutocompleteNext","selectedValueRenderers","default","chipsMultiline","renderSelectedValueChips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Autocomplete.js","sources":["../../../src/componentsV2/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import {\n Autocomplete as MuiAutocomplete,\n AutocompleteChangeReason as MuiAutocompleteChangeReason,\n AutocompleteCloseReason as MuiAutocompleteCloseReason,\n AutocompleteProps as MuiAutocompleteBaseProps,\n AutocompleteRenderGroupParams,\n AutocompleteRenderInputParams,\n createFilterOptions,\n} from '@material-ui/lab';\nimport {\n ChangeEvent,\n ComponentType,\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Popper, PopperProps } from '../Popper';\nimport { MenuItemProps } from '../Menu/MenuItem';\nimport { CloseSmallIcon, DownIcon } from '../../icons';\nimport { TextInputNextProps } from '../TextInputNext';\nimport { TextInputProps } from '../TextInput';\n\nimport { AutocompleteInput } from './AutocompleteInput';\nimport { AutocompletePaper } from './AutocompletePaper';\nimport {\n AllOptionMark,\n AutocompleteOption,\n CreateOptionMark,\n InternalOption,\n isRealOption,\n OwnAddedOption,\n renderOptionDefault,\n renderSelectedValue,\n renderSelectedValueChips,\n} from './utils';\nimport { AutocompleteMenuItem } from './AutocompleteMenuItem';\nimport { AutocompleteListBox } from './AutocompleteListBox';\n\nimport styles from './Autocomplete.scss';\nimport { Menu } from '../Menu';\n\ntype MuiAutocompleteProps<T extends AutocompleteOption> = Required<\n MuiAutocompleteBaseProps<InternalOption<T>, boolean, false, false>\n>;\n\ntype ChangeReason =\n | MuiAutocompleteChangeReason\n | 'select-option-all'\n | 'remove-option-all'\n | 'select-only-option';\ntype AutocompletePopperProps = Omit<PopperProps, 'open' | 'anchorEl' | 'children'>;\n\ntype AutocompleteBaseProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = {\n /**\n * Options to allow selection from. Has to be assignable to `{ id: string | number; title: string; prefix?: ReactNode; }[]`\n */\n options?: T[];\n /**\n * Selected value. If `multiple` is `false | undefined`, and the value is an array, only the first element will be used\n *\n * There's a [bug in TS](https://github.com/microsoft/TypeScript/issues/47599) which causes `onChange` prop\n * to have incorrect typing if we mix T and T['id'] in `value`. Therefore, we can't use the \"correct\" typing\n * ```\n * value?: T['id'] | T | (T['id'] | T)[];\n * ```\n *\n * You may need to provide additional typings\n */\n value?: string | number | T | (string | number | T)[];\n /**\n * If `true`, the component will support multiple selection\n */\n multiple?: Multiple;\n /**\n * Selection change handler\n * Receives an array of options if `multiple` is `true`, a single selected option or `undefined` otherwise\n */\n onChange?: (\n value: Multiple extends undefined | false ? T | undefined : T[],\n reason: ChangeReason,\n event?: ChangeEvent<unknown>\n ) => void;\n label?: ReactNode;\n placeholder?: string;\n /**\n * Controls the size of the options rendered\n */\n optionSize?: MenuItemProps['size'];\n disabled?: boolean;\n /**\n * If exists - allows user to create own options. Called when 'Add \"whatever\"' option is selected\n */\n onCreate?: (title: string) => void;\n\n prefix?: ReactNode;\n loading?: boolean;\n showPopupIcon?: boolean;\n /**\n * Controls the \"Clear\" button that's shown to the right if there is a value\n */\n clearable?: boolean;\n /**\n * Controls if the field should keep/gain focus after \"Clear\" button is clicked\n */\n focusOnClear?: boolean;\n /**\n * Triggered when user types something\n */\n onInputChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n status?: TextInputNextProps['status'];\n message?: TextInputNextProps['message'];\n size?: TextInputNextProps['size'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n /**\n * Makes internal text field readonly, effectively turning component into a simple `<select/>`\n */\n disableFiltering?: boolean;\n\n renderOption?: (item: T) => ReactNode;\n /**\n * Message to show when there are no options\n */\n noOptionsMessage?: ReactNode;\n spacing?: TextInputProps['spacing'];\n /**\n * Function that filters options based on input value\n */\n filterOptions?: (options: T[], inputValue: string) => T[];\n /**\n * Function that determines if an option is disabled. Used to override the default\n * @param option\n */\n getOptionDisabled?: (option: T) => boolean;\n /**\n * If `multiple === true` shows an \"All\" option that selects/deselects all options\n */\n useAllOption?: boolean;\n /**\n * If `multiple === true` shows a \"Select Only\" button on option that selects only the corresponding option\n */\n useOnlyOptionButton?: boolean;\n\n /**\n * Used to render selected values when `multiple === true`\n */\n renderSelected?: (\n data: { option: T; onDelete: MouseEventHandler }[],\n options: { useAllOption: boolean; allOptions: T[] }\n ) => ReactNode;\n\n /**\n * Defines option grouping\n */\n groupBy?: (option: T) => string;\n /**\n * Group render override\n */\n renderGroup?: (props: AutocompleteRenderGroupParams) => ReactNode;\n\n /**\n * A classname that will be applied to dropdown (`<Paper/>` component)\n */\n dropdownClassName?: string;\n /**\n * Escape hatch to customize dropdown popper behavior.\n * `open`, `anchorEl`, and `children` are controlled internally.\n */\n popperProps?: Partial<AutocompletePopperProps>;\n\n type?: 'default' | 'search';\n\n className?: string;\n testId?: string;\n\n /**\n * Called when the dropdown is opened\n */\n onOpen?: () => void;\n /**\n * Called when the dropdown is closed\n */\n onClose?: (reason: MuiAutocompleteCloseReason) => void;\n\n /**\n * Escape hatch to fine-tune the styling of underlying elements\n */\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n\n /** HTML attributes forwarded to the underlying input. */\n htmlAttributes?: TextInputNextProps['htmlAttributes'];\n\n /**\n * Custom listbox component for rendering options (e.g., virtualized list)\n */\n listboxComponent?: ComponentType<HTMLAttributes<HTMLElement>>;\n\n // TODO Remove when making next a new baseline\n isNext?: boolean;\n};\n\nexport type AutocompleteChangeHandler<\n Option extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Required<AutocompleteBaseProps<Option, Multiple>>['onChange'];\n\nconst AutocompleteBase = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>({\n label,\n options = [],\n value,\n onChange,\n multiple,\n renderOption = renderOptionDefault,\n optionSize = 'medium',\n showPopupIcon = true,\n clearable = true,\n loading,\n noOptionsMessage,\n filterOptions,\n prefix,\n disabled,\n getOptionDisabled,\n renderSelected = renderSelectedValue,\n onInputChange,\n className,\n testId,\n status,\n message,\n useAllOption = false,\n useOnlyOptionButton = false,\n groupBy,\n renderGroup,\n disableFiltering,\n onCreate,\n dropdownClassName,\n popperProps,\n placeholder,\n focusOnClear = true,\n listboxComponent,\n size = 'small',\n labelPlacement = 'top',\n elementsClassNames,\n htmlAttributes,\n onOpen,\n onClose,\n\n // Old props\n type,\n spacing,\n isNext,\n}: AutocompleteBaseProps<T, Multiple>) => {\n const [inputValue, setInputValue] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const inputValueRef = useRef('');\n\n const actualOnOpen = useCallback<MuiAutocompleteProps<T>['onOpen']>(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const actualOnClose = useCallback<(event: unknown, reason: MuiAutocompleteCloseReason) => void>(\n (_e, reason) => {\n setIsOpen(false);\n onClose?.(reason);\n },\n [onClose]\n );\n\n const optionsById = useMemo(() => new Map(options.map(option => [option.id, option])), [options]);\n\n const muiValue = useMemo(() => {\n if (value === undefined || (value instanceof Array && value.length === 0)) {\n return multiple ? [] : null;\n }\n\n // Array of either ids or actual values\n const mixedValues = value instanceof Array ? value : [value];\n\n if (multiple) {\n return mixedValues\n .map(objOrId => {\n if (typeof objOrId === 'object') {\n // MUI Autocomplete doesn't like react nodes in value, so we strip everything from the object to the bare minimum\n const { id, title } = objOrId;\n return { id, title };\n } else {\n return optionsById.get(objOrId);\n }\n })\n .filter(item => item !== undefined);\n } else {\n return typeof mixedValues[0] === 'object'\n ? mixedValues[0]\n : options.find(option => mixedValues[0] === option.id) || null;\n }\n }, [multiple, value, options, optionsById]) as MuiAutocompleteBaseProps<\n T,\n Multiple,\n false,\n false\n >['value'];\n\n const hasMultiSelected = muiValue instanceof Array && muiValue.length > 0;\n const hasAllMultiSelected = muiValue instanceof Array && muiValue.length === options.length;\n const defaultNoOptionsText = loading ? 'Loading ...' : 'No options';\n const disableClearable =\n !clearable || !muiValue || (muiValue instanceof Array && !muiValue?.length);\n\n const actualOnChange = useCallback<MuiAutocompleteProps<T>['onChange']>(\n (event, optionOrArray, reason) => {\n if (reason === 'clear' && !focusOnClear) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n // Handling of \"Add\" option\n if (onCreate && optionOrArray) {\n const optionArray = optionOrArray instanceof Array ? optionOrArray : [optionOrArray];\n const foundAddOption: OwnAddedOption | undefined = optionArray.find(\n option => !isRealOption(option) && !!option[CreateOptionMark]\n );\n\n if (foundAddOption) {\n actualOnClose(undefined, 'select-option');\n onCreate(foundAddOption.newOptionTitle || '');\n return;\n }\n }\n\n // Handling of \"All\" option - only multiselect\n if (multiple && optionOrArray instanceof Array) {\n const allOptionExists = optionOrArray.some(\n option => !isRealOption(option) && !!option[AllOptionMark]\n );\n\n if (allOptionExists) {\n // Selecting \"All\"\n if (muiValue instanceof Array && muiValue.length < options.length) {\n onChange?.(options.filter(isRealOption) as never, reason, event);\n }\n // Deselecting \"All\"\n else {\n onChange?.([] as never, reason, event);\n }\n return;\n }\n }\n\n onChange?.((optionOrArray || undefined) as never, reason, event);\n },\n [focusOnClear, onCreate, multiple, onChange, muiValue, options, actualOnClose]\n );\n\n const onSelectOnly = useCallback(\n (option: T, event: ChangeEvent<object>) =>\n onChange?.([option] as never, 'select-only-option', event),\n [onChange]\n );\n\n const actualRenderOption = useCallback<MuiAutocompleteProps<T>['renderOption']>(\n (option: InternalOption<T>, { selected }) => {\n if (isRealOption(option)) {\n return (\n <AutocompleteMenuItem\n size={optionSize}\n selected={selected}\n prefix={option.prefix}\n multiple={multiple}\n useOnlyButton={useOnlyOptionButton}\n option={option}\n onSelectOnly={onSelectOnly}\n >\n {renderOption(option)}\n </AutocompleteMenuItem>\n );\n } else if (option[AllOptionMark]) {\n return (\n <div className={styles.allOptionContainer}>\n <AutocompleteMenuItem\n size={optionSize}\n selected={hasMultiSelected}\n indeterminate={hasMultiSelected && !hasAllMultiSelected}\n multiple\n >\n {option.title}\n </AutocompleteMenuItem>\n <Menu.Divider className={styles.allOptionDivider} />\n </div>\n );\n } else {\n return (\n <AutocompleteMenuItem size={optionSize} selected={hasMultiSelected}>\n {option.title}\n </AutocompleteMenuItem>\n );\n }\n },\n [\n optionSize,\n multiple,\n useOnlyOptionButton,\n onSelectOnly,\n renderOption,\n hasMultiSelected,\n hasAllMultiSelected,\n ]\n );\n\n const actualFilterOptions = useCallback<MuiAutocompleteProps<T>['filterOptions']>(\n (options, params): InternalOption<T>[] => {\n const filteredOptions = filterOptions\n ? filterOptions(options as T[], params.inputValue)\n : createFilterOptions<T>()(options as T[], params);\n\n // Adding \"All\" option if needed\n const optionsWithAll =\n useAllOption && multiple && filteredOptions.length && options.length > 1\n ? [{ title: 'All', [AllOptionMark]: true }, ...filteredOptions]\n : filteredOptions;\n\n // Adding \"Add\" option if needed\n return onCreate && params.inputValue.trim() !== ''\n ? [\n ...optionsWithAll,\n {\n title: `Add \"${params.inputValue}\"`,\n [CreateOptionMark]: true,\n newOptionTitle: params.inputValue,\n },\n ]\n : optionsWithAll;\n },\n [filterOptions, onCreate, useAllOption, multiple]\n );\n\n const actualGetOptionDisabled = useCallback<MuiAutocompleteProps<T>['getOptionDisabled']>(\n option => isRealOption(option) && !!getOptionDisabled?.(option),\n [getOptionDisabled]\n );\n\n const getOptionLabel = useCallback<MuiAutocompleteProps<T>['getOptionLabel']>(\n option => option.title,\n []\n );\n\n const renderTags = useCallback<MuiAutocompleteProps<T>['renderTags']>(\n (tags, getTagProps) => {\n const tagsArray = tags.filter(isRealOption).map((option, index) => {\n // Untyped in MUI, so we have to do it ourselves\n const { onDelete } = getTagProps({ index }) as { onDelete: MouseEventHandler };\n return { option, onDelete };\n });\n\n return renderSelected(tagsArray, { useAllOption, allOptions: options });\n },\n [renderSelected, useAllOption, options]\n );\n\n const actualOnInputChange = useCallback<MuiAutocompleteProps<T>['onInputChange']>(\n (event, newInputValue, reason) => {\n if (event && event.type === 'blur') {\n setInputValue('');\n inputValueRef.current = newInputValue;\n } else if (reason !== 'reset') {\n setInputValue(newInputValue);\n inputValueRef.current = newInputValue;\n }\n\n if (reason !== 'reset') {\n onInputChange?.(newInputValue, event as ChangeEvent<HTMLInputElement>);\n }\n },\n [onInputChange]\n );\n\n const actualGroupBy = useMemo<MuiAutocompleteProps<T>['groupBy'] | undefined>(() => {\n if (groupBy) {\n return option => {\n if (isRealOption(option)) {\n return groupBy(option);\n }\n\n return '';\n };\n }\n\n return undefined;\n }, [groupBy]);\n\n const classes = useMemo(() => ({ paper: dropdownClassName }), [dropdownClassName]);\n\n const getOptionSelected = useCallback((a: InternalOption<T>, b: InternalOption<T>) => {\n return isRealOption(a) && isRealOption(b) ? a.id === b.id : false;\n }, []);\n\n const Component = MuiAutocomplete<InternalOption<T>, Multiple, boolean, false>;\n\n const PopperComponent = useCallback(\n (props: PopperProps) => (\n <Popper\n {...props}\n {...popperProps}\n className={classNames(props?.className, popperProps?.className)}\n />\n ),\n [popperProps]\n ) as NonNullable<MuiAutocompleteProps<T>['PopperComponent']>;\n\n const onKey = useCallback<KeyboardEventHandler>(\n e => {\n if (e.code === 'Enter' && onCreate) {\n const filteredOptions = actualFilterOptions(options, {\n inputValue: inputValueRef.current,\n getOptionLabel,\n });\n\n if (\n filteredOptions.length === 1 &&\n !isRealOption(filteredOptions[0]) &&\n filteredOptions[0][CreateOptionMark]\n ) {\n actualOnClose(undefined, 'select-option');\n onCreate(filteredOptions[0].newOptionTitle || '');\n (document.activeElement as HTMLInputElement)?.blur?.();\n }\n }\n },\n [onCreate, actualFilterOptions, getOptionLabel, actualOnClose, options]\n );\n\n const renderInput = useCallback(\n (inputProps: AutocompleteRenderInputParams) => (\n <AutocompleteInput\n {...inputProps}\n label={label}\n loading={loading}\n prefix={prefix}\n status={status}\n message={message}\n readOnly={disableFiltering}\n placeholder={placeholder}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n // Old props\n type={type}\n spacing={spacing}\n isNext={isNext}\n onKeyUp={onKey}\n />\n ),\n [\n label,\n loading,\n prefix,\n status,\n message,\n disableFiltering,\n placeholder,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n type,\n spacing,\n isNext,\n onKey,\n ]\n );\n\n return (\n <div\n className={classNames(\n styles.root,\n showPopupIcon && styles.withArrow,\n !disableClearable && styles.withClear,\n className\n )}\n data-testid={testId}\n >\n <Component\n value={muiValue}\n options={options}\n getOptionLabel={getOptionLabel}\n renderInput={renderInput}\n PopperComponent={PopperComponent}\n PaperComponent={AutocompletePaper}\n multiple={multiple}\n disableCloseOnSelect={multiple}\n blurOnSelect={!multiple}\n onChange={actualOnChange}\n renderOption={actualRenderOption}\n popupIcon={<DownIcon size={16} />}\n forcePopupIcon={showPopupIcon}\n closeIcon={<CloseSmallIcon size={16} />}\n disableClearable={disableClearable}\n clearText=\"\"\n noOptionsText={noOptionsMessage || defaultNoOptionsText}\n filterOptions={actualFilterOptions}\n disabled={disabled}\n getOptionDisabled={actualGetOptionDisabled}\n renderTags={renderTags}\n inputValue={multiple ? inputValue : undefined}\n onInputChange={actualOnInputChange}\n groupBy={actualGroupBy}\n renderGroup={renderGroup}\n clearOnBlur\n selectOnFocus={!disableFiltering}\n classes={classes}\n getOptionSelected={getOptionSelected}\n ListboxComponent={listboxComponent ?? AutocompleteListBox}\n onOpen={actualOnOpen}\n onClose={actualOnClose}\n open={isOpen}\n />\n </div>\n );\n};\n\n// Old version\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport type AutocompleteProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<\n AutocompleteBaseProps<T, Multiple>,\n 'size' | 'labelPlacement' | 'elementsClassNames' | 'htmlAttributes' | 'isNext'\n>;\n\n/**\n * @deprecated use `AutocompleteNext`, and see migration guide for `TextInputNext` for details\n */\nexport const Autocomplete = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: false });\n\n// New version\nexport type AutocompleteNextProps<\n T extends AutocompleteOption = AutocompleteOption,\n Multiple extends boolean | undefined = false\n> = Omit<AutocompleteBaseProps<T, Multiple>, 'type' | 'spacing' | 'isNext'>;\n\nexport const AutocompleteNext = <\n T extends AutocompleteOption,\n Multiple extends boolean | undefined = false\n>(\n props: AutocompleteNextProps<T, Multiple>\n) => AutocompleteBase<T, Multiple>({ ...props, isNext: true });\n\nAutocompleteNext.selectedValueRenderers = {\n default: renderSelectedValue,\n chipsMultiline: renderSelectedValueChips,\n};\n"],"names":["AutocompleteBase","_ref","label","_ref$options","options","value","onChange","multiple","_ref$renderOption","renderOption","renderOptionDefault","_ref$optionSize","optionSize","_ref$showPopupIcon","showPopupIcon","_ref$clearable","clearable","loading","noOptionsMessage","filterOptions","prefix","disabled","getOptionDisabled","_ref$renderSelected","renderSelected","renderSelectedValue","onInputChange","className","testId","status","message","_ref$useAllOption","useAllOption","_ref$useOnlyOptionBut","useOnlyOptionButton","groupBy","renderGroup","disableFiltering","onCreate","dropdownClassName","popperProps","placeholder","_ref$focusOnClear","focusOnClear","listboxComponent","_ref$size","size","_ref$labelPlacement","labelPlacement","elementsClassNames","htmlAttributes","onOpen","onClose","type","spacing","isNext","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","isOpen","setIsOpen","inputValueRef","useRef","actualOnOpen","useCallback","actualOnClose","_e","reason","optionsById","useMemo","Map","map","option","id","muiValue","undefined","Array","length","mixedValues","objOrId","_typeof","title","get","filter","item","find","hasMultiSelected","hasAllMultiSelected","defaultNoOptionsText","disableClearable","actualOnChange","event","optionOrArray","stopPropagation","preventDefault","foundAddOption","isRealOption","CreateOptionMark","newOptionTitle","some","AllOptionMark","onSelectOnly","actualRenderOption","_ref2","selected","_jsx","AutocompleteMenuItem","useOnlyButton","children","_jsxs","styles","allOptionContainer","indeterminate","Menu","Divider","allOptionDivider","actualFilterOptions","params","_ref4","filteredOptions","createFilterOptions","optionsWithAll","_defineProperty","trim","concat","_toConsumableArray","actualGetOptionDisabled","getOptionLabel","renderTags","tags","getTagProps","tagsArray","index","onDelete","allOptions","actualOnInputChange","newInputValue","current","actualGroupBy","classes","paper","getOptionSelected","a","b","Component","MuiAutocomplete","PopperComponent","props","Popper","classNames","onKey","e","code","_document$activeEleme","_document$activeEleme2","document","activeElement","blur","call","renderInput","inputProps","AutocompleteInput","_objectSpread","readOnly","onKeyUp","root","withArrow","withClear","PaperComponent","AutocompletePaper","disableCloseOnSelect","blurOnSelect","popupIcon","DownIcon","forcePopupIcon","closeIcon","CloseSmallIcon","clearText","noOptionsText","clearOnBlur","selectOnFocus","ListboxComponent","AutocompleteListBox","open","Autocomplete","AutocompleteNext","selectedValueRenderers","default","chipsMultiline","renderSelectedValueChips"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteInput.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAIjE,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAa,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAI5D,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAC9E,kBAAkB,GAClB,cAAc,GAAG;IAGf,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,mFAS3B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"AutocompleteInput.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAIjE,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAa,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAI5D,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAC9E,kBAAkB,GAClB,cAAc,GAAG;IAGf,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEJ,eAAO,MAAM,iBAAiB,mFAS3B,sBAAsB,4CAmHxB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/objectWithoutProperties";import{useCallback as
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/objectWithoutProperties";import{useCallback as n,useMemo as r}from"react";import o from"classnames";import{TextInputNext as i}from"../../TextInputNext/TextInputNext.js";import{TextInput as u}from"../../TextInput/TextInput.js";import s from"../Autocomplete.scss.js";import{jsxs as l,Fragment as p,jsx as a}from"react/jsx-runtime";var f=["inputProps","disabled","InputProps","prefix","loading","status","isNext"];function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){e(t,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var d=function(e){var c=e.inputProps,d=e.disabled,b=e.InputProps,x=e.prefix,O=e.loading,y=e.status,j=e.isNext,P=t(e,f),g=P.label,h=P.size,v=P.labelPlacement,w=P.elementsClassNames,C=P.htmlAttributes,A=P.readOnly,D=P.placeholder,I=P.onKeyDown,N=P.onKeyUp,K=c.onChange,T=c.onBlur,B=c.onFocus,E=c.onMouseDown,F=c.ref,R=c.value,S=c.id,z=n((function(e,t,n){null==K||K(n,e)}),[K]),U=n((function(e,t){null==K||K(t,e)}),[K]),k=n((function(e){if(B(e),E(e),A){var t=e.target;t.selectionStart=t.selectionEnd}}),[B,E,A]),M=(x||b.startAdornment)&&l(p,{children:[x,b.startAdornment]}),W=r((function(){return m(m({},w),{},{input:o(s.input,null==w?void 0:w.input,A&&s.readOnlyInput),prefix:o(s.prefix,null==w?void 0:w.prefix),suffix:o(s.suffix,null==w?void 0:w.suffix),inputContainer:o(s.inputContainer,null==w?void 0:w.inputContainer)})}),[w,A]),q=r((function(){return m(m({},C),{},{id:S})}),[C,S]);return j?a(i,{disabled:d,prefix:M,suffix:b.endAdornment,onBlur:T,onChange:z,onFocus:k,inputRef:F,value:R,inputContainerRef:b.ref,status:O?"loading":y,label:g,size:h,labelPlacement:v,elementsClassNames:W,htmlAttributes:q,readOnly:A,placeholder:D,onKeyUp:N,onKeyDown:I}):a(u,m({disabled:d,prefix:M,suffix:b.endAdornment,onBlur:T,onChange:U,onFocus:k,inputRef:F,value:R,ref:b.ref,status:O?"loading":y},P))};export{d as AutocompleteInput};
|
|
2
2
|
//# sourceMappingURL=AutocompleteInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteInput.js","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const {
|
|
1
|
+
{"version":3,"file":"AutocompleteInput.js","sources":["../../../../src/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.tsx"],"sourcesContent":["import { AutocompleteRenderInputParams } from '@material-ui/lab';\nimport { useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput, TextInputProps } from '../../TextInput';\n\nimport styles from '../Autocomplete.scss';\n\nexport type AutocompleteInputProps = Omit<AutocompleteRenderInputParams, 'size'> &\n TextInputNextProps &\n TextInputProps & {\n // This property is essentially untyped in AutocompleteRenderInputParams\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n inputProps: any;\n loading?: boolean;\n isNext?: boolean;\n };\n\nexport const AutocompleteInput = ({\n inputProps,\n disabled,\n InputProps,\n prefix,\n loading,\n status,\n isNext,\n ...rest\n}: AutocompleteInputProps) => {\n const {\n label,\n size,\n labelPlacement,\n elementsClassNames,\n htmlAttributes,\n readOnly,\n placeholder,\n onKeyDown,\n onKeyUp,\n } = rest;\n const {\n onChange: muiOnChange,\n onBlur,\n onFocus: muiOnFocus,\n onMouseDown,\n ref,\n value,\n id,\n } = inputProps;\n\n const onChange = useCallback<Required<TextInputNextProps>['onChange']>(\n (value, _reason, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onChangeOld = useCallback<Required<TextInputProps>['onChange']>(\n (value, event) => {\n muiOnChange?.(event, value);\n },\n [muiOnChange]\n );\n\n const onFocus = useCallback<Required<TextInputNextProps>['onFocus']>(\n event => {\n muiOnFocus(event);\n onMouseDown(event);\n\n // Clearing autoselect on focus for readonly field to cover tab navigation which selects everything by default\n if (readOnly) {\n const input = event.target as HTMLInputElement;\n input.selectionStart = input.selectionEnd;\n }\n },\n [muiOnFocus, onMouseDown, readOnly]\n );\n\n const actualPrefix = (prefix || InputProps.startAdornment) && (\n <>\n {prefix}\n {InputProps.startAdornment}\n </>\n );\n\n const ownElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n ...elementsClassNames,\n input: classNames(styles.input, elementsClassNames?.input, readOnly && styles.readOnlyInput),\n prefix: classNames(styles.prefix, elementsClassNames?.prefix),\n suffix: classNames(styles.suffix, elementsClassNames?.suffix),\n inputContainer: classNames(styles.inputContainer, elementsClassNames?.inputContainer),\n }),\n [elementsClassNames, readOnly]\n );\n\n const fieldHtmlAttributes = useMemo(() => ({ ...htmlAttributes, id }), [htmlAttributes, id]);\n\n if (isNext) {\n return (\n <TextInputNext\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n inputContainerRef={InputProps.ref}\n status={loading ? 'loading' : status}\n label={label}\n size={size}\n labelPlacement={labelPlacement}\n elementsClassNames={ownElementsClassNames}\n htmlAttributes={fieldHtmlAttributes}\n readOnly={readOnly}\n placeholder={placeholder}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n />\n );\n }\n\n return (\n <TextInput\n disabled={disabled}\n // InputProps.startAdornment - \"tags\" for multiselect, prefix\n prefix={actualPrefix}\n // InputProps.endAdornment - \"dropdown\" icon, close icon, loader\n suffix={InputProps.endAdornment}\n onBlur={onBlur}\n onChange={onChangeOld}\n onFocus={onFocus}\n inputRef={ref}\n value={value}\n ref={InputProps.ref}\n status={loading ? 'loading' : status}\n {...rest}\n />\n );\n};\n"],"names":["AutocompleteInput","_ref","inputProps","disabled","InputProps","prefix","loading","status","isNext","rest","_objectWithoutProperties","_excluded","label","size","labelPlacement","elementsClassNames","htmlAttributes","readOnly","placeholder","onKeyDown","onKeyUp","muiOnChange","onChange","onBlur","muiOnFocus","onFocus","onMouseDown","ref","value","id","useCallback","_reason","event","onChangeOld","input","target","selectionStart","selectionEnd","actualPrefix","startAdornment","_jsxs","_Fragment","children","ownElementsClassNames","useMemo","_objectSpread","classNames","styles","readOnlyInput","suffix","inputContainer","fieldHtmlAttributes","_jsx","TextInputNext","endAdornment","inputRef","inputContainerRef","TextInput"],"mappings":"ojCAmBaA,IAAAA,EAAoB,SASHC,GAAA,IAR5BC,IAAAA,WACAC,IAAAA,SACAC,IAAAA,WACAC,IAAAA,OACAC,IAAAA,QACAC,IAAAA,OACAC,IAAAA,OACGC,EAAIC,EAAAT,EAAAU,GAGLC,EASEH,EATFG,MACAC,EAQEJ,EARFI,KACAC,EAOEL,EAPFK,eACAC,EAMEN,EANFM,mBACAC,EAKEP,EALFO,eACAC,EAIER,EAJFQ,SACAC,EAGET,EAHFS,YACAC,EAEEV,EAFFU,UACAC,EACEX,EADFW,QAGUC,EAORnB,EAPFoB,SACAC,EAMErB,EANFqB,OACSC,EAKPtB,EALFuB,QACAC,EAIExB,EAJFwB,YACAC,EAGEzB,EAHFyB,IACAC,EAEE1B,EAFF0B,MACAC,EACE3B,EADF2B,GAGIP,EAAWQ,GACf,SAACF,EAAOG,EAASC,GACfX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGY,EAAcH,GAClB,SAACF,EAAOI,GACNX,SAAAA,EAAcW,EAAOJ,EACvB,GACA,CAACP,IAGGI,EAAUK,GACd,SAAAE,GAKE,GAJAR,EAAWQ,GACXN,EAAYM,GAGRf,EAAU,CACZ,IAAMiB,EAAQF,EAAMG,OACpBD,EAAME,eAAiBF,EAAMG,YAC/B,CACD,GACD,CAACb,EAAYE,EAAaT,IAGtBqB,GAAgBjC,GAAUD,EAAWmC,iBACzCC,EAAAC,EAAA,CAAAC,SAAA,CACGrC,EACAD,EAAWmC,kBAIVI,EAAwBC,GAC5B,WAAA,OAAAC,EAAAA,EAAA,CAAA,EACK9B,GAAkB,CAAA,EAAA,CACrBmB,MAAOY,EAAWC,EAAOb,MAAOnB,eAAAA,EAAoBmB,MAAOjB,GAAY8B,EAAOC,eAC9E3C,OAAQyC,EAAWC,EAAO1C,OAAQU,aAAkB,EAAlBA,EAAoBV,QACtD4C,OAAQH,EAAWC,EAAOE,OAAQlC,aAAkB,EAAlBA,EAAoBkC,QACtDC,eAAgBJ,EAAWC,EAAOG,eAAgBnC,aAAAA,EAAAA,EAAoBmC,iBAAe,GAEvF,CAACnC,EAAoBE,IAGjBkC,EAAsBP,GAAQ,WAAA,OAAAC,EAAAA,EAAA,CAAA,EAAY7B,GAAc,CAAA,EAAA,CAAEa,GAAAA,GAAE,GAAK,CAACb,EAAgBa,IAExF,OAAIrB,EAEA4C,EAACC,EAAa,CACZlD,SAAUA,EAEVE,OAAQiC,EAERW,OAAQ7C,EAAWkD,aACnB/B,OAAQA,EACRD,SAAUA,EACVG,QAASA,EACT8B,SAAU5B,EACVC,MAAOA,EACP4B,kBAAmBpD,EAAWuB,IAC9BpB,OAAQD,EAAU,UAAYC,EAC9BK,MAAOA,EACPC,KAAMA,EACNC,eAAgBA,EAChBC,mBAAoB4B,EACpB3B,eAAgBmC,EAChBlC,SAAUA,EACVC,YAAaA,EACbE,QAASA,EACTD,UAAWA,IAMfiC,EAACK,EAASZ,EAAA,CACR1C,SAAUA,EAEVE,OAAQiC,EAERW,OAAQ7C,EAAWkD,aACnB/B,OAAQA,EACRD,SAAUW,EACVR,QAASA,EACT8B,SAAU5B,EACVC,MAAOA,EACPD,IAAKvB,EAAWuB,IAChBpB,OAAQD,EAAU,UAAYC,GAC1BE,GAGV"}
|
|
@@ -22,6 +22,9 @@ export type ColorPickerProps = {
|
|
|
22
22
|
popoverPlacement?: PopoverProps['placement'];
|
|
23
23
|
onOpen?: () => void;
|
|
24
24
|
onClose?: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* An escape hatch to tweak styling of internal elements
|
|
27
|
+
*/
|
|
25
28
|
elementsClassNames?: Partial<Omit<Required<TextInputNextProps>['elementsClassNames'], 'message' | 'numberStepButtons' | 'prefix' | 'suffix'> & Record<'indicator' | 'popover', string>>;
|
|
26
29
|
className?: string;
|
|
27
30
|
testId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,eAAO,MAAM,WAAW,mLAgBrB,gBAAgB,4CAgXlB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as i,useState as c,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as l}from"lodash";import{v4 as m}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as b,channelsToHex as h,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,i)}return s}function A(o){for(var s=1;s<arguments.length;s++){var i=null!=arguments[s]?arguments[s]:{};s%2?x(Object(i),!0).forEach((function(s){n(o,s,i[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):x(Object(i)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(i,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w=function(n){var x=n.format,w=void 0===x?"hex":x,T=n.className,E=n.label,M=n.labelPlacement,B=void 0===M?"top":M,R=n.popoverPlacement,z=void 0===R?"bottom-start":R,W=n.testId,L=n.disabled,G=n.size,K=void 0===G?"small":G,U=n.onOpen,q=n.onClose,V=n.value,H=void 0===V?C:V,Z=n.onChange,J=n.disableOpacityDrag,Q=n.enableAlpha,X=void 0!==Q&&Q,Y=n.elementsClassNames,$=void 0===Y?{}:Y,_=i((function(){return{input:s(O.input,$.input),inputContainer:s(O.inputContainer,$.inputContainer),label:s(O.label,$.label),prefix:O.prefixContainer,suffix:O.suffixContainer,numberStepButtons:O.numberStepButtons}}),[$.input,$.inputContainer,$.label]),oo=i((function(){try{var o=b(H);return A(A({},o),{},{a:X?o.a:1})}catch(o){return b(C)}}),[H,X]),no=c(!1),so=o(no,2),io=so[0],co=so[1],to=t(null),ro=t(null),eo=c(!0),ao=o(eo,2),lo=ao[0],mo=ao[1],uo=c(null),po=o(uo,2),jo=po[0],Io=po[1],fo=c(oo),bo=o(fo,2),ho=bo[0],vo=bo[1],Co=t(null),yo=i((function(){return"corva-color-picker-".concat(m())}),[]),go="".concat(yo,"-opacity-input"),Oo="".concat(yo,"-label"),Po="".concat(yo,"-opacity-label"),ko=Boolean(E),Do=r((function(){co(!0),null==U||U()}),[U]),Fo=r((function(o){o.preventDefault(),Io(null),Do()}),[Do]),No=r((function(){Io(null),Do()}),[Do]),xo=r((function(o){L||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),Io("palette"),Do())}),[L,Do]),Ao=r((function(){var o,n,s=!(null===(o=Co.current)||void 0===o||!o.contains(document.activeElement));(Io(null),co(!1),null==q||q(),s)&&(null===(n=ro.current)||void 0===n||n.focus({preventScroll:!0}))}),[q]),So=r((function(o){Io(0===o.detail?"palette":null),mo(!0)}),[]),wo=r((function(o){Io(0===o.detail?"picker":null),mo(!1)}),[]),To=r((function(){return Io(null)}),[]),Eo=r((function(o){return vo(o.rgb)}),[]),Mo=r((function(o){var n="hex"===w?h(o,X):v(o,X);null==Z||Z(n)}),[w,Z,X]),Bo=r((function(o){vo(o),Mo(o)}),[Mo]),Ro=g({color:ho,enableAlpha:X,isActive:!lo,onChange:Bo}),zo=Ro.pickerRef,Wo=Ro.onKeyDown;e((function(){var o;if("picker"===jo&&!lo){var n=null===(o=zo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),To())}}),[To,jo,lo,zo]);var Lo=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Mo(s)}}),[oo,Mo]),Go=r((function(o){Mo(o.rgb)}),[Mo]),Ko=r((function(o){var n=oo.a||1,s=X&&0===o.a?0:n;Mo(A(A({},o),{},{a:s}))}),[Mo,oo.a,X]),Uo=r((function(){setTimeout((function(){var o,n;co(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),qo=i((function(){return l((function(o){var n=String(Math.round(o));Lo(n)}),100)}),[Lo]);e((function(){vo(oo)}),[oo]),e((function(){io&&mo(!0)}),[io]);var Vo=String(Math.round(100*ho.a)),Ho=(null==z?void 0:z.startsWith("top"))||(null==z?void 0:z.startsWith("bottom")),Zo=(null==z?void 0:z.startsWith("left"))||(null==z?void 0:z.startsWith("right")),Jo=ko?D(F,{children:[N("label",{id:Oo,htmlFor:go,children:"string"==typeof E?N(u.Label,{children:E}):E}),N("span",{id:Po,hidden:!0,children:"Opacity"})]}):void 0,Qo=i((function(){return ko?{id:go,"aria-labelledby":"".concat(Oo," ").concat(Po)}:{id:go,"aria-label":"Opacity"}}),[ko,go,Oo,Po]);return D(F,{children:[N(u,{label:Jo,labelPlacement:B,disabled:L,size:K,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Vo,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:ro,className:s(O.indicator,0===ho.a&&O.transparent,$.indicator),style:{"--corvaui-colorpicker-indicatorcolor":h(ho,!1)},onClick:L?void 0:Fo,onKeyDown:xo,role:"button","aria-label":ko?void 0:"Color picker","aria-labelledby":ko?Oo:void 0,"aria-expanded":io,"aria-disabled":L,tabIndex:L?-1:0})]}),suffix:!io&&X&&!J&&!L&&N(y,{value:Number(Vo),onDrag:qo,onDragEnd:Uo}),className:s(O.root,S[K],!X&&O.noAlpha,T),testId:W,inputContainerRef:to,value:Vo,onChange:Lo,onFocus:No,inputType:"number",inputMode:"numeric",htmlAttributes:Qo,elementsClassNames:_}),D(p,{ref:Co,anchorEl:to.current,open:io,onClose:Ao,placement:z,className:s(O.popover,Ho&&O.marginVertical,Zo&&O.marginHorizontal,0===ho.a&&O.isTransparent,$.popover),children:[lo?N(f,{onChange:Ko,value:oo,addTransparent:X,autoFocus:"palette"===jo,onAutoFocus:To}):N("div",{ref:zo,className:O.pickerContainer,onKeyDown:Wo,children:N(a,{color:ho,onChange:Eo,onChangeComplete:Go,disableAlpha:!X,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:So,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:wo,children:N(k,{})})})]})]}),io&&X&&!J&&N(I,{open:io,anchorEl:to.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:qo,onDragEnd:Uo})})]})};export{w as ColorPicker};
|
|
1
|
+
import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as c,useState as i,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as m}from"lodash";import{v4 as l}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as h,channelsToHex as b,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);n&&(c=c.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,c)}return s}function A(o){for(var s=1;s<arguments.length;s++){var c=null!=arguments[s]?arguments[s]:{};s%2?x(Object(c),!0).forEach((function(s){n(o,s,c[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(c)):x(Object(c)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(c,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w={inputContainer:O.inputContainer,numberStepButtons:O.numberStepButtons,prefix:O.prefixContainer,suffix:O.suffixContainer,input:O.input,label:O.label},T=function(x){var T=x.format,E=void 0===T?"hex":T,M=x.className,B=x.label,R=x.labelPlacement,z=void 0===R?"top":R,W=x.popoverPlacement,L=void 0===W?"bottom-start":W,G=x.testId,K=x.disabled,U=x.size,q=void 0===U?"small":U,V=x.onOpen,H=x.onClose,Z=x.value,J=void 0===Z?C:Z,Q=x.onChange,X=x.disableOpacityDrag,Y=x.enableAlpha,$=void 0!==Y&&Y,_=x.elementsClassNames,oo=c((function(){try{var o=h(J);return A(A({},o),{},{a:$?o.a:1})}catch(o){return h(C)}}),[J,$]),no=c((function(){return _?Object.entries(_).reduce((function(c,i){var t=o(i,2),r=t[0],e=t[1];return A(A({},c),{},n({},r,c[r]?s(c[r],e):e))}),A({},w)):w}),[_]),so=i(!1),co=o(so,2),io=co[0],to=co[1],ro=t(null),eo=t(null),ao=i(!0),mo=o(ao,2),lo=mo[0],uo=mo[1],po=i(null),jo=o(po,2),Io=jo[0],fo=jo[1],ho=i(oo),bo=o(ho,2),vo=bo[0],Co=bo[1],yo=t(null),go=c((function(){return"corva-color-picker-".concat(l())}),[]),Oo="".concat(go,"-opacity-input"),Po="".concat(go,"-label"),ko="".concat(go,"-opacity-label"),Do=Boolean(B),Fo=r((function(){to(!0),null==V||V()}),[V]),No=r((function(o){o.preventDefault(),fo(null),Fo()}),[Fo]),xo=r((function(){fo(null),Fo()}),[Fo]),Ao=r((function(o){K||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),fo("palette"),Fo())}),[K,Fo]),So=r((function(){var o,n,s=!(null===(o=yo.current)||void 0===o||!o.contains(document.activeElement));(fo(null),to(!1),null==H||H(),s)&&(null===(n=eo.current)||void 0===n||n.focus({preventScroll:!0}))}),[H]),wo=r((function(o){fo(0===o.detail?"palette":null),uo(!0)}),[]),To=r((function(o){fo(0===o.detail?"picker":null),uo(!1)}),[]),Eo=r((function(){return fo(null)}),[]),Mo=r((function(o){return Co(o.rgb)}),[]),Bo=r((function(o){var n="hex"===E?b(o,$):v(o,$);null==Q||Q(n)}),[E,Q,$]),Ro=r((function(o){Co(o),Bo(o)}),[Bo]),zo=g({color:vo,enableAlpha:$,isActive:!lo,onChange:Ro}),Wo=zo.pickerRef,Lo=zo.onKeyDown;e((function(){var o;if("picker"===Io&&!lo){var n=null===(o=Wo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),Eo())}}),[Eo,Io,lo,Wo]);var Go=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Bo(s)}}),[oo,Bo]),Ko=r((function(o){Bo(o.rgb)}),[Bo]),Uo=r((function(o){var n=oo.a||1,s=$&&0===o.a?0:n;Bo(A(A({},o),{},{a:s}))}),[Bo,oo.a,$]),qo=r((function(){setTimeout((function(){var o,n;to(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),Vo=c((function(){return m((function(o){var n=String(Math.round(o));Go(n)}),100)}),[Go]);e((function(){Co(oo)}),[oo]),e((function(){io&&uo(!0)}),[io]);var Ho=String(Math.round(100*vo.a)),Zo=(null==L?void 0:L.startsWith("top"))||(null==L?void 0:L.startsWith("bottom")),Jo=(null==L?void 0:L.startsWith("left"))||(null==L?void 0:L.startsWith("right")),Qo=Do?D(F,{children:[N("label",{id:Po,htmlFor:Oo,children:"string"==typeof B?N(u.Label,{children:B}):B}),N("span",{id:ko,hidden:!0,children:"Opacity"})]}):void 0,Xo=c((function(){return Do?{id:Oo,"aria-labelledby":"".concat(Po," ").concat(ko)}:{id:Oo,"aria-label":"Opacity"}}),[Do,Oo,Po,ko]);return D(F,{children:[N(u,{label:Qo,labelPlacement:z,disabled:K,size:q,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Ho,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:eo,className:s(O.indicator,0===vo.a&&O.transparent,no.indicator),style:{"--corvaui-colorpicker-indicatorcolor":b(vo,!1)},onClick:K?void 0:No,onKeyDown:Ao,role:"button","aria-label":Do?void 0:"Color picker","aria-labelledby":Do?Po:void 0,"aria-expanded":io,"aria-disabled":K,tabIndex:K?-1:0})]}),suffix:!io&&$&&!X&&!K&&N(y,{value:Number(Ho),onDrag:Vo,onDragEnd:qo}),className:s(O.root,S[q],!$&&O.noAlpha,M),testId:G,inputContainerRef:ro,value:Ho,onChange:Go,onFocus:xo,inputType:"number",inputMode:"numeric",elementsClassNames:no,htmlAttributes:Xo}),D(p,{ref:yo,anchorEl:ro.current,open:io,onClose:So,placement:L,className:s(O.popover,Zo&&O.marginVertical,Jo&&O.marginHorizontal,0===vo.a&&O.isTransparent,no.popover),children:[lo?N(f,{onChange:Uo,value:oo,addTransparent:$,autoFocus:"palette"===Io,onAutoFocus:Eo}):N("div",{ref:Wo,className:O.pickerContainer,onKeyDown:Lo,children:N(a,{color:vo,onChange:Mo,onChangeComplete:Ko,disableAlpha:!$,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:wo,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:To,children:N(k,{})})})]})]}),io&&$&&!X&&N(I,{open:io,anchorEl:ro.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:Vo,onDragEnd:qo})})]})};export{T as ColorPicker};
|
|
2
2
|
//# sourceMappingURL=ColorPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames = {},\n}: ColorPickerProps) => {\n const inputElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n input: classNames(styles.input, elementsClassNames.input),\n inputContainer: classNames(styles.inputContainer, elementsClassNames.inputContainer),\n label: classNames(styles.label, elementsClassNames.label),\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n numberStepButtons: styles.numberStepButtons,\n }),\n [elementsClassNames.input, elementsClassNames.inputContainer, elementsClassNames.label]\n );\n\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n elementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n htmlAttributes={inputHtmlAttributes}\n elementsClassNames={inputElementsClassNames}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n elementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ColorPicker","_ref","_ref$format","format","className","label","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","_ref$elementsClassNam","elementsClassNames","inputElementsClassNames","useMemo","input","classNames","inputContainer","prefix","prefixContainer","suffix","suffixContainer","numberStepButtons","valueChannels","channels","parseColor","_objectSpread","a","_","useState","_useState2","_slicedToArray","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","key","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n /**\n * An escape hatch to tweak styling of internal elements\n */\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nconst ownInputElementsClassNames: TextInputNextProps['elementsClassNames'] = {\n inputContainer: styles.inputContainer,\n numberStepButtons: styles.numberStepButtons,\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n input: styles.input,\n label: styles.label,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames,\n}: ColorPickerProps) => {\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const realElementsClassNames = useMemo((): Required<ColorPickerProps>['elementsClassNames'] => {\n return elementsClassNames\n ? Object.entries(elementsClassNames).reduce<Required<ColorPickerProps>['elementsClassNames']>(\n (acc, pair) => {\n const [key, value] = pair as [\n keyof Required<ColorPickerProps>['elementsClassNames'],\n string\n ];\n return {\n ...acc,\n [key]: acc[key] ? classNames(acc[key], value) : value,\n };\n },\n {\n ...ownInputElementsClassNames,\n }\n )\n : ownInputElementsClassNames;\n }, [elementsClassNames]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n realElementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n elementsClassNames={realElementsClassNames}\n htmlAttributes={inputHtmlAttributes}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n realElementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ownInputElementsClassNames","inputContainer","numberStepButtons","prefix","prefixContainer","suffix","suffixContainer","input","label","ColorPicker","_ref","_ref$format","format","className","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","elementsClassNames","valueChannels","useMemo","channels","parseColor","_objectSpread","a","_","realElementsClassNames","Object","entries","reduce","acc","pair","_ref3","_slicedToArray","key","classNames","useState","_useState2","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+
|
|
1
|
+
{"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+CAsBlB,CAAC;AAMF,eAAO,MAAM,aAAa,+CAczB,CAAC;AAOF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAMF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAKF,eAAO,MAAM,cAAc,+CAkB1B,CAAC;AAOF,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
|
|
1
|
+
import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:Io?"":T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
|
|
2
2
|
//# sourceMappingURL=Input.js.map
|