@consta/uikit 5.28.5 → 5.29.1
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/TextAreaAutoSize/index.d.ts +1 -0
- package/TextAreaAutoSize/index.js +1 -0
- package/__internal__/src/components/AutoComplete/AutoComplete.js +1 -1
- package/__internal__/src/components/AutoComplete/AutoComplete.js.map +1 -1
- package/__internal__/src/components/AutoComplete/helpers.d.ts +1 -0
- package/__internal__/src/components/AutoComplete/types.d.ts +1 -0
- package/__internal__/src/components/AutoComplete/types.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeText/AutoCompleteTypeText.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/AutoCompleteTypeTextArray/AutoCompleteTypeTextArray.js.map +1 -1
- package/__internal__/src/components/AutoCompleteCanary/helpers.d.ts +1 -0
- package/__internal__/src/components/AutoCompleteCanary/types.d.ts +1 -0
- package/__internal__/src/components/AutoCompleteCanary/types.js.map +1 -1
- package/__internal__/src/components/Combobox/Combobox.js +1 -1
- package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
- package/__internal__/src/components/Combobox/helpers.d.ts +3 -1
- package/__internal__/src/components/Combobox/helpers.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js.map +1 -1
- package/__internal__/src/components/ContextMenu/helpers.d.ts +4 -2
- package/__internal__/src/components/ContextMenu/types.d.ts +2 -0
- package/__internal__/src/components/ContextMenu/types.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +1 -0
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/types.d.ts +1 -0
- package/__internal__/src/components/DatePicker/types.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js.map +1 -1
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js +1 -1
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js.map +1 -1
- package/__internal__/src/components/FlatSelect/types.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/types.js.map +1 -1
- package/__internal__/src/components/Select/Select.js +1 -1
- package/__internal__/src/components/Select/Select.js.map +1 -1
- package/__internal__/src/components/Select/helpers.d.ts +3 -1
- package/__internal__/src/components/Select/helpers.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js +1 -1
- package/__internal__/src/components/SelectCanary/SelectMultiple/SelectMultiple.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/SelectPopover/SelectPopover.js.map +1 -1
- package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js +1 -1
- package/__internal__/src/components/SelectCanary/SelectSingle/SelectSingle.js.map +1 -1
- package/__internal__/src/components/SelectCanary/helpers.d.ts +2 -1
- package/__internal__/src/components/SelectCanary/types.d.ts +1 -0
- package/__internal__/src/components/SelectCanary/types.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +1 -0
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.css +1 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.d.ts +11 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js +2 -0
- package/__internal__/src/components/TextAreaAutoSize/TextAreaAutoSize.js.map +1 -0
- package/__internal__/src/components/TextAreaAutoSize/index.d.ts +1 -0
- package/__internal__/src/components/TextAreaAutoSize/index.js +2 -0
- package/__internal__/src/components/TextAreaAutoSize/index.js.map +1 -0
- package/__internal__/src/components/TextField/TextField.js +1 -1
- package/__internal__/src/components/TextField/TextField.js.map +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.css +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js +1 -1
- package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js.map +1 -1
- package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
- package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +3 -1
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/utils/objectCompare.d.ts +7 -0
- package/__internal__/src/utils/objectCompare.js +2 -0
- package/__internal__/src/utils/objectCompare.js.map +1 -0
- package/__internal__/src/utils/state/index.d.ts +3 -0
- package/__internal__/src/utils/state/index.js +1 -1
- package/__internal__/src/utils/state/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","COMPONENT_NAME","defaultLabelForEmptyItems","SelectContainer","SelectDropdown","SelectItem","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","isNotNil","iconSizeMap","withDefaultGetters","SelectRender","props","ref","defaultDropdownRef","controlRef","placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValueProp","renderValue","inputRefProp","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","restProps","multiple","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","notFound","hasItems","optionsRefs","inputId","renderValueDefault","label","item","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","Select"],"sources":["../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import '##/components/SelectComponents/Select.css';\n\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport {\n cnSelect,\n COMPONENT_NAME,\n} from '##/components/SelectComponents/cnSelect';\nimport { defaultLabelForEmptyItems } from '##/components/SelectComponents/helpers';\nimport { SelectContainer } from '##/components/SelectComponents/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponents/SelectDropdown';\nimport { SelectItem } from '##/components/SelectComponents/SelectItem';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponents/types';\nimport { useSelect } from '##/components/SelectComponents/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n iconSizeMap,\n PropRenderItem,\n PropRenderValue,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectProps,\n withDefaultGetters,\n} from './helpers';\n\nconst SelectRender = <ITEM = SelectItemDefault, GROUP = SelectGroupDefault>(\n props: SelectProps<ITEM, GROUP>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n required,\n disabled,\n ariaLabel,\n id,\n dropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n name,\n groups = [],\n getItemLabel,\n labelForEmptyItems = defaultLabelForEmptyItems,\n getItemKey,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n isLoading,\n renderValue: renderValueProp,\n inputRef: inputRefProp,\n style,\n dropdownForm = 'default',\n onDropdownOpen,\n onScrollToBottom,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect<ITEM, GROUP, false>({\n items,\n groups,\n value,\n onChange,\n dropdownRef: defaultDropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n getItemDisabled,\n multiple: false,\n onBlur,\n onFocus,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n multiple={false}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = (props) => {\n const label = getItemLabel(props.item);\n\n return (\n <span className={cnSelect('ControlValue')} title={label}>\n {label}\n </span>\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n view={view}\n form={form}\n required={required}\n ref={ref}\n style={style}\n id={inputId}\n {...restProps}\n >\n <div\n className={cnSelect('Control')}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div className={cnSelect('ControlInner')}>\n <div className={cnSelect('ControlValueContainer')}>\n <input\n {...getKeyProps()}\n className={cnSelect('FakeField')}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onClick={handleInputClick}\n ref={useForkRef([inputRef, inputRefProp])}\n readOnly\n />\n {isNotNil(value) && renderValue({ item: value })}\n {!isNotNil(value) && placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size={iconSizeMap[size]}\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={useForkRef([dropdownRef, defaultDropdownRef])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n notFound={notFound}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n hasItems={hasItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const Select = forwardRef(SelectRender) as SelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["IconSelect","React","forwardRef","useRef","usePropsHandler","cnSelect","COMPONENT_NAME","defaultLabelForEmptyItems","SelectContainer","SelectDropdown","SelectItem","defaultPropForm","defaultPropSize","defaultPropView","useSelect","useForkRef","isNotNil","iconSizeMap","withDefaultGetters","SelectRender","props","ref","defaultDropdownRef","controlRef","placeholder","onBlur","onFocus","items","onChange","value","required","disabled","ariaLabel","id","dropdownRef","form","view","size","dropdownClassName","name","groups","getItemLabel","labelForEmptyItems","getItemKey","getItemGroupKey","getItemDisabled","getGroupKey","getGroupLabel","renderItem","isLoading","renderValueProp","renderValue","inputRefProp","inputRef","style","dropdownForm","onDropdownOpen","onScrollToBottom","virtualScroll","dropdownOpen","ignoreOutsideClicksRefs","dropdownViewportRef","restProps","multiple","getKeyProps","getOptionProps","isOpen","visibleItems","isFocused","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","notFound","hasItems","optionsRefs","inputId","renderValueDefault","label","item","renderItemDefault","active","hovered","onClick","onMouseEnter","zIndex","Select"],"sources":["../../../../../src/components/Select/Select.tsx"],"sourcesContent":["import '##/components/SelectComponents/Select.css';\n\nimport { IconSelect } from '@consta/icons/IconSelect';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { usePropsHandler } from '##/components/EventInterceptor/usePropsHandler';\nimport {\n cnSelect,\n COMPONENT_NAME,\n} from '##/components/SelectComponents/cnSelect';\nimport { defaultLabelForEmptyItems } from '##/components/SelectComponents/helpers';\nimport { SelectContainer } from '##/components/SelectComponents/SelectContainer';\nimport { SelectDropdown } from '##/components/SelectComponents/SelectDropdown';\nimport { SelectItem } from '##/components/SelectComponents/SelectItem';\nimport {\n defaultPropForm,\n defaultPropSize,\n defaultPropView,\n} from '##/components/SelectComponents/types';\nimport { useSelect } from '##/components/SelectComponents/useSelect';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { isNotNil } from '##/utils/type-guards';\n\nimport {\n iconSizeMap,\n PropRenderItem,\n PropRenderValue,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectProps,\n withDefaultGetters,\n} from './helpers';\n\nconst SelectRender = <ITEM = SelectItemDefault, GROUP = SelectGroupDefault>(\n props: SelectProps<ITEM, GROUP>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const defaultDropdownRef = useRef<HTMLDivElement>(null);\n const controlRef = useRef<HTMLDivElement | null>(null);\n\n const {\n placeholder,\n onBlur,\n onFocus,\n items,\n onChange,\n value,\n required,\n disabled,\n ariaLabel,\n id,\n dropdownRef,\n form = defaultPropForm,\n view = defaultPropView,\n size = defaultPropSize,\n dropdownClassName,\n name,\n groups = [],\n getItemLabel,\n labelForEmptyItems = defaultLabelForEmptyItems,\n getItemKey,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n getGroupLabel,\n renderItem,\n isLoading,\n renderValue: renderValueProp,\n inputRef: inputRefProp,\n style,\n dropdownForm = 'default',\n onDropdownOpen,\n onScrollToBottom,\n virtualScroll,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n dropdownViewportRef,\n ...restProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), controlRef);\n\n const {\n getKeyProps,\n getOptionProps,\n isOpen,\n visibleItems,\n isFocused,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n notFound,\n hasItems,\n optionsRefs,\n } = useSelect<ITEM, GROUP, false>({\n items,\n groups,\n value,\n onChange,\n dropdownRef: defaultDropdownRef,\n controlRef,\n disabled,\n getItemLabel,\n getItemKey,\n getGroupKey,\n getItemGroupKey,\n getItemDisabled,\n multiple: false,\n onBlur,\n onFocus,\n onDropdownOpen,\n dropdownOpen,\n ignoreOutsideClicksRefs,\n });\n\n const inputId = id ? `${id}-input` : id;\n\n const renderItemDefault: PropRenderItem<ITEM> = (props) => {\n const { item, active, hovered, onClick, onMouseEnter, ref } = props;\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n multiple={false}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n };\n\n const renderValueDefault: PropRenderValue<ITEM> = (props) => {\n const label = getItemLabel(props.item);\n\n return (\n <span className={cnSelect('ControlValue')} title={label}>\n {label}\n </span>\n );\n };\n\n const renderValue = renderValueProp || renderValueDefault;\n\n return (\n <>\n <SelectContainer\n focused={isFocused}\n disabled={disabled}\n size={size}\n view={view}\n form={form}\n required={required}\n ref={ref}\n style={style}\n id={inputId}\n {...restProps}\n >\n <div\n className={cnSelect('Control')}\n ref={controlRef}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n id={id}\n >\n <div className={cnSelect('ControlInner')}>\n <div className={cnSelect('ControlValueContainer')}>\n <input\n {...getKeyProps()}\n className={cnSelect('FakeField')}\n type=\"text\"\n name={name}\n id={inputId}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n aria-label={ariaLabel}\n onClick={handleInputClick}\n ref={useForkRef([inputRef, inputRefProp])}\n readOnly\n />\n {isNotNil(value) && renderValue({ item: value })}\n {!isNotNil(value) && placeholder && (\n <span className={cnSelect('Placeholder')} title=\"placeholder\">\n {placeholder}\n </span>\n )}\n </div>\n </div>\n <span className={cnSelect('Indicators')}>\n <button\n type=\"button\"\n className={cnSelect('IndicatorsDropdown')}\n tabIndex={-1}\n onClick={handleToggleDropdown}\n >\n <IconSelect\n size={iconSizeMap[size]}\n className={cnSelect('DropdownIndicatorIcon')}\n />\n </button>\n </span>\n </div>\n </SelectContainer>\n <SelectDropdown\n isOpen={isOpen}\n size={size}\n controlRef={controlRef}\n getOptionProps={getOptionProps}\n dropdownRef={useForkRef([dropdownRef, defaultDropdownRef])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItems={visibleItems}\n notFound={notFound}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n hasItems={hasItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n viewportRef={dropdownViewportRef}\n style={\n typeof style?.zIndex === 'number'\n ? { zIndex: style.zIndex + 1 }\n : undefined\n }\n />\n </>\n );\n};\n\nexport const Select = forwardRef(SelectRender) as SelectComponent;\n\nexport * from './helpers';\n"],"mappings":"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"}
|
|
@@ -67,6 +67,7 @@ export type SelectProps<ITEM = SelectItemDefault, GROUP = SelectGroupDefault> =
|
|
|
67
67
|
onDropdownOpen?: (isOpen: boolean) => void;
|
|
68
68
|
dropdownOpen?: boolean;
|
|
69
69
|
ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
|
|
70
|
+
dropdownViewportRef?: React.RefObject<HTMLElement>;
|
|
70
71
|
}, HTMLDivElement> & (ITEM extends {
|
|
71
72
|
label: SelectItemDefault['label'];
|
|
72
73
|
} ? {} : {
|
|
@@ -131,7 +132,8 @@ export declare function withDefaultGetters<ITEM, GROUP>(props: SelectProps<ITEM,
|
|
|
131
132
|
onDropdownOpen?: (isOpen: boolean) => void;
|
|
132
133
|
dropdownOpen?: boolean;
|
|
133
134
|
ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
|
|
134
|
-
|
|
135
|
+
dropdownViewportRef?: React.RefObject<HTMLElement>;
|
|
136
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "onFocus" | "onBlur" | "onChange" | "size" | "view" | "form" | "status" | "caption" | "label" | "name" | "disabled" | "value" | "placeholder" | "required" | "inputRef" | "items" | "dropdownForm" | "focused" | "ariaLabel" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "labelIcon" | "labelPosition" | "onScrollToBottom" | "onDropdownOpen" | "dropdownOpen" | "ignoreOutsideClicksRefs" | "virtualScroll" | "dropdownViewportRef"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
135
137
|
label: SelectItemDefault["label"];
|
|
136
138
|
} ? {} : {
|
|
137
139
|
getItemLabel: SelectPropGetItemLabel<ITEM>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","iconSizeMap","xs","s","m","l"],"sources":["../../../../../src/components/Select/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponents/types';\n\nexport type SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\ntype SelectPropValue<ITEM> = ITEM | null | undefined;\n\ntype SelectRenderValueProps<ITEM> = {\n item: ITEM;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\nexport type PropRenderValue<ITEM> = (\n props: SelectRenderValueProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropOnChange<ITEM> = (\n value: ITEM | null,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: SelectPropOnChange<ITEM>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n status?: PropStatus;\n focused?: boolean;\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n required?: boolean;\n name?: string;\n isLoading?: boolean;\n labelForEmptyItems?: string;\n value?: SelectPropValue<ITEM>;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n inputRef?: React.RefObject<HTMLInputElement>;\n groups?: GROUP[];\n getItemLabel?: SelectPropGetItemLabel<ITEM>;\n getItemKey?: SelectPropGetItemKey<ITEM>;\n getItemGroupKey?: SelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: SelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: SelectPropGetGroupLabel<GROUP>;\n getGroupKey?: SelectPropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n labelPosition?: 'top' | 'left';\n caption?: string;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nexport const defaultGetItemKey: SelectPropGetItemKey<SelectItemDefault> = (\n item,\n) => item.id;\nexport const defaultGetItemLabel: SelectPropGetItemLabel<SelectItemDefault> = (\n item,\n) => item.label;\nexport const defaultGetItemGroupKey: SelectPropGetItemGroupKey<\n SelectItemDefault\n> = (item) => item.groupId;\nexport const defaultGetItemDisabled: SelectPropGetItemDisabled<\n SelectItemDefault\n> = (item) => item.disabled;\n\nexport const defaultGetGroupKey: SelectPropGetGroupKey<SelectGroupDefault> = (\n group,\n) => group.id;\nexport const defaultGetGroupLabel: SelectPropGetGroupLabel<\n SelectGroupDefault\n> = (group) => group.label;\n\nexport function withDefaultGetters<ITEM, GROUP>(\n props: SelectProps<ITEM, GROUP>,\n) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n\nexport const iconSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["defaultGetItemKey","item","id","defaultGetItemLabel","label","defaultGetItemGroupKey","groupId","defaultGetItemDisabled","disabled","defaultGetGroupKey","group","defaultGetGroupLabel","withDefaultGetters","props","getItemLabel","getItemKey","getItemGroupKey","getItemDisabled","getGroupLabel","getGroupKey","iconSizeMap","xs","s","m","l"],"sources":["../../../../../src/components/Select/helpers.ts"],"sourcesContent":["import { IconComponent, IconPropSize } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\nimport {\n PropForm,\n PropSize,\n PropStatus,\n PropView,\n RenderItemProps,\n} from '../SelectComponents/types';\n\nexport type SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\ntype SelectPropValue<ITEM> = ITEM | null | undefined;\n\ntype SelectRenderValueProps<ITEM> = {\n item: ITEM;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\nexport type PropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\nexport type PropRenderValue<ITEM> = (\n props: SelectRenderValueProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropOnChange<ITEM> = (\n value: ITEM | null,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: SelectPropOnChange<ITEM>;\n disabled?: boolean;\n form?: PropForm;\n dropdownForm?: 'default' | 'brick' | 'round';\n size?: PropSize;\n view?: PropView;\n status?: PropStatus;\n focused?: boolean;\n placeholder?: string;\n ariaLabel?: string;\n dropdownClassName?: string;\n dropdownRef?: React.RefObject<HTMLDivElement>;\n required?: boolean;\n name?: string;\n isLoading?: boolean;\n labelForEmptyItems?: string;\n value?: SelectPropValue<ITEM>;\n renderItem?: PropRenderItem<ITEM>;\n renderValue?: PropRenderValue<ITEM>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n inputRef?: React.RefObject<HTMLInputElement>;\n groups?: GROUP[];\n getItemLabel?: SelectPropGetItemLabel<ITEM>;\n getItemKey?: SelectPropGetItemKey<ITEM>;\n getItemGroupKey?: SelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: SelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: SelectPropGetGroupLabel<GROUP>;\n getGroupKey?: SelectPropGetGroupKey<GROUP>;\n label?: string;\n labelIcon?: IconComponent;\n labelPosition?: 'top' | 'left';\n caption?: string;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onDropdownOpen?: (isOpen: boolean) => void;\n dropdownOpen?: boolean;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n dropdownViewportRef?: React.RefObject<HTMLElement>;\n },\n HTMLDivElement\n> &\n (ITEM extends { label: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nexport const defaultGetItemKey: SelectPropGetItemKey<SelectItemDefault> = (\n item,\n) => item.id;\nexport const defaultGetItemLabel: SelectPropGetItemLabel<SelectItemDefault> = (\n item,\n) => item.label;\nexport const defaultGetItemGroupKey: SelectPropGetItemGroupKey<\n SelectItemDefault\n> = (item) => item.groupId;\nexport const defaultGetItemDisabled: SelectPropGetItemDisabled<\n SelectItemDefault\n> = (item) => item.disabled;\n\nexport const defaultGetGroupKey: SelectPropGetGroupKey<SelectGroupDefault> = (\n group,\n) => group.id;\nexport const defaultGetGroupLabel: SelectPropGetGroupLabel<\n SelectGroupDefault\n> = (group) => group.label;\n\nexport function withDefaultGetters<ITEM, GROUP>(\n props: SelectProps<ITEM, GROUP>,\n) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n getItemKey: props.getItemKey || defaultGetItemKey,\n getItemGroupKey: props.getItemGroupKey || defaultGetItemGroupKey,\n getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,\n getGroupLabel: props.getGroupLabel || defaultGetGroupLabel,\n getGroupKey: props.getGroupKey || defaultGetGroupKey,\n };\n}\n\nexport const iconSizeMap: Record<PropSize, IconPropSize> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n"],"mappings":"qqBAwHA,MAAO,IAAMA,kBAA0D,CAAG,SACxEC,CADwE,QAErEA,EAAI,CAACC,EAFgE,CAAnE,CAGP,MAAO,IAAMC,oBAA8D,CAAG,SAC5EF,CAD4E,QAEzEA,EAAI,CAACG,KAFoE,CAAvE,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACJ,CAAD,QAAUA,EAAI,CAACK,OAAf,CAFG,CAGP,MAAO,IAAMC,uBAEZ,CAAG,SAACN,CAAD,QAAUA,EAAI,CAACO,QAAf,CAFG,CAIP,MAAO,IAAMC,mBAA6D,CAAG,SAC3EC,CAD2E,QAExEA,EAAK,CAACR,EAFkE,CAAtE,CAGP,MAAO,IAAMS,qBAEZ,CAAG,SAACD,CAAD,QAAWA,EAAK,CAACN,KAAjB,CAFG,CAIP,MAAO,SAASQ,mBAAT,CACLC,CADK,CAEL,CACA,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBX,mBAFtC,CAGEY,UAAU,CAAEF,CAAK,CAACE,UAAN,EAAoBf,iBAHlC,CAIEgB,eAAe,CAAEH,CAAK,CAACG,eAAN,EAAyBX,sBAJ5C,CAKEY,eAAe,CAAEJ,CAAK,CAACI,eAAN,EAAyBV,sBAL5C,CAMEW,aAAa,CAAEL,CAAK,CAACK,aAAN,EAAuBP,oBANxC,CAOEQ,WAAW,CAAEN,CAAK,CAACM,WAAN,EAAqBV,kBAPpC,EASD,CAED,MAAO,IAAMW,YAA2C,CAAG,CACzDC,EAAE,CAAE,IADqD,CAEzDC,CAAC,CAAE,GAFsD,CAGzDC,CAAC,CAAE,GAHsD,CAIzDC,CAAC,CAAE,GAJsD,CAApD"}
|
|
@@ -48,6 +48,7 @@ type Props<ITEM, GROUP> = PropsWithJsxAttributes<{
|
|
|
48
48
|
groupsCounterAtom: AtomMut<Record<string, [number, number]>>;
|
|
49
49
|
dropdownZIndexAtom: AtomMut<number | undefined>;
|
|
50
50
|
selectAllLabel: string;
|
|
51
|
+
viewportRef?: React.RefObject<HTMLElement>;
|
|
51
52
|
}>;
|
|
52
53
|
type SelectDropdownComponent = <ITEM, GROUP>(props: Props<ITEM, GROUP>) => React.ReactNode | null;
|
|
53
54
|
export declare const SelectDropdown: SelectDropdownComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDropdown.js","names":["useAtom","React","Fragment","memo","useMemo","ListItem","ListLoader","mapVerticalSpace","isNotOptionForCreate","isOptionForCreate","isOptionForSelectAll","forkRef","useForkRef","useVirtualScroll","cnMixScrollBar","cnMixSpace","cnCanary","cn","fabricIndex","SelectCreateButton","SelectGroupLabel","SelectItemAll","SelectLoader","SelectPopover","SelectRenderItem","selectDropdownForm","defaultSelectDropdownPropForm","cnSelectDropdown","getLengthElements","elements","length","index","element","items","isVisible","slice","SelectDropdown","props","controlRef","size","getOptionActions","dropdownRefProp","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItemsAtom","form","openAtom","offset","offsetProp","renderItem","visibleItemsAtom","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","highlightedIndexAtom","valueAtom","getItemKeyAtom","highlightIndex","onCreate","onChange","onChangeAll","inputValueAtom","groupsCounterAtom","dropdownZIndexAtom","selectAllLabel","otherProps","visibleItems","hasItems","isListMount","setIsListMount","getItemKey","indent","isListShowed","filter","group","Array","isArray","lengthForVirtualScroll","isActive","spaceTop","sliceHookProp","listRefs","scrollElementRef","scrollContainerRef","getIndex","getVirtualIndex","zIndex","pV","marginTop","map","key","virtualIndex","item"],"sources":["../../../../../../src/components/SelectCanary/SelectDropdown/SelectDropdown.tsx"],"sourcesContent":["import './SelectDropdown.css';\n\nimport { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React, { Fragment, memo, useMemo } from 'react';\n\nimport { FieldPropSize } from '##/components/FieldComponents';\nimport {\n ListItem,\n ListLoader,\n mapVerticalSpace,\n} from '##/components/ListCanary';\nimport { PopoverPropOffset } from '##/components/Popover';\nimport {\n GetOptionPropsResult,\n isNotOptionForCreate,\n isOptionForCreate,\n isOptionForSelectAll,\n OptionForCreate,\n OptionProps,\n} from '##/components/SelectCanary/useSelect';\nimport { forkRef, useForkRef } from '##/hooks/useForkRef';\nimport { useVirtualScroll } from '##/hooks/useVirtualScroll';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { fabricIndex } from '##/utils/fabricIndex';\nimport { SelectAllItem } from '##/utils/getGroups';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport { SelectCreateButton } from '../SelectCreateButton/SelectCreateButton';\nimport { SelectGroupLabel } from '../SelectGroupLabel/SelectGroupLabel';\nimport { SelectItemAll } from '../SelectItemAll/SelectItemAll';\nimport { SelectLoader } from '../SelectLoader/SelectLoader';\nimport { SelectPopover } from '../SelectPopover';\nimport { SelectRenderItem } from '../SelectRenderItem';\nimport { CountedGroup } from '../types';\n\nexport const selectDropdownForm = ['default', 'brick', 'round'] as const;\nexport type SelectDropdownPropForm = typeof selectDropdownForm[number];\nexport const defaultSelectDropdownPropForm = selectDropdownForm[0];\n\ntype RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\ntype Props<ITEM, GROUP> = PropsWithJsxAttributes<{\n size: FieldPropSize;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n dropdownRef: React.Ref<HTMLDivElement>;\n getOptionActions(props: OptionProps<ITEM>): GetOptionPropsResult;\n form: SelectDropdownPropForm;\n openAtom: AtomMut<boolean>;\n offset?: PopoverPropOffset | 'none';\n isLoading?: boolean;\n renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;\n highlightedIndexAtom: AtomMut<number>;\n visibleItemsAtom: AtomMut<(OptionForCreate | CountedGroup<ITEM, GROUP>)[]>;\n getGroupLabel?: (group: GROUP) => string;\n labelForCreate?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n labelForNotFound?: string;\n labelForEmptyItems?: string;\n notFound?: boolean;\n hasItemsAtom: AtomMut<boolean>;\n itemsRefs: React.RefObject<HTMLDivElement>[];\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n valueAtom: AtomMut<ITEM[]>;\n getItemKeyAtom: AtomMut<(item: ITEM) => string | number>;\n onChangeAll: (e: React.SyntheticEvent, items: ITEM[]) => void;\n highlightIndex: (index: number) => void;\n onCreate: (e: React.SyntheticEvent) => void;\n onChange: (e: React.SyntheticEvent, item: ITEM) => void;\n inputValueAtom: AtomMut<string>;\n groupsCounterAtom: AtomMut<Record<string, [number, number]>>;\n dropdownZIndexAtom: AtomMut<number | undefined>;\n selectAllLabel: string;\n}>;\n\ntype SelectDropdownComponent = <ITEM, GROUP>(\n props: Props<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nconst cnSelectDropdown = cn('SelectDropdown');\n\nconst getLengthElements = <ITEM, GROUP>(\n elements: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n }\n )[],\n) => {\n let length = elements.length <= 1 ? 0 : elements.length;\n\n for (let index = 0; index < elements.length; index++) {\n const element = elements[index];\n\n if (isNotOptionForCreate(element) && element?.items?.length) {\n length += element.items.length;\n }\n }\n\n return length;\n};\n\nconst isVisible = (slice: [number, number], index: number) => {\n return index >= slice[0] && index < slice[1];\n};\n\nexport const SelectDropdown: SelectDropdownComponent = memo((props) => {\n const {\n controlRef,\n size,\n getOptionActions,\n dropdownRef: dropdownRefProp,\n labelForCreate,\n className,\n labelForNotFound,\n labelForEmptyItems,\n hasItemsAtom,\n form,\n openAtom,\n offset: offsetProp = 'none',\n renderItem,\n visibleItemsAtom,\n isLoading,\n getGroupLabel,\n notFound,\n itemsRefs,\n virtualScroll,\n onScrollToBottom,\n highlightedIndexAtom,\n valueAtom,\n getItemKeyAtom,\n highlightIndex,\n onCreate,\n onChange,\n onChangeAll,\n inputValueAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n selectAllLabel,\n ...otherProps\n } = props;\n\n const [visibleItems] = useAtom(visibleItemsAtom);\n\n const [hasItems] = useAtom(hasItemsAtom);\n const [isListMount, setIsListMount] = useAtom(false);\n const [getItemKey] = useAtom(getItemKeyAtom);\n const indent = form === 'round' ? 'increased' : 'normal';\n\n const isListShowed = useMemo(() => {\n return (\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) ||\n (Array.isArray(group.items) && group.items.length > 0),\n ).length > 0\n );\n }, [visibleItems]);\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const lengthForVirtualScroll = useMemo(\n () => getLengthElements(visibleItems),\n [visibleItems],\n );\n\n const {\n spaceTop,\n slice: sliceHookProp,\n listRefs,\n scrollElementRef,\n } = useVirtualScroll({\n length: lengthForVirtualScroll,\n isActive: virtualScroll && isListMount,\n onScrollToBottom,\n });\n\n const scrollContainerRef = useForkRef([scrollElementRef, dropdownRefProp]);\n\n const slice: [number, number] =\n sliceHookProp[0] === 0 && virtualScroll ? [0, 50] : sliceHookProp;\n\n const getIndex = fabricIndex();\n const getVirtualIndex = fabricIndex();\n const [zIndex] = useAtom(dropdownZIndexAtom);\n\n return (\n <SelectPopover\n {...otherProps}\n anchorRef={controlRef}\n offset={offset}\n role=\"listbox\"\n className={cnSelectDropdown()}\n size={size}\n controlRef={controlRef}\n openAtom={openAtom}\n form={form}\n onMount={setIsListMount}\n style={{ zIndex }}\n >\n {isListMount && (\n <div\n className={cnSelectDropdown('ScrollContainer', [\n cnMixSpace({\n pV: mapVerticalSpace[size],\n }),\n cnMixScrollBar({ size: 'xs' }),\n ])}\n ref={scrollContainerRef}\n >\n {isLoading && !isListShowed && <SelectLoader />}\n <div\n className={cnSelectDropdown('List')}\n key={cnSelectDropdown('List')}\n style={{ marginTop: spaceTop }}\n >\n {visibleItems.map((group) => {\n if (isOptionForCreate(group)) {\n const index = getIndex();\n return (\n <SelectCreateButton\n size={size}\n key={cnSelectDropdown('List', { key: 'CreateButton' })}\n labelForCreate={labelForCreate}\n indent={indent}\n ref={itemsRefs[index]}\n onClick={onCreate}\n highlightedIndexAtom={highlightedIndexAtom}\n inputValueAtom={inputValueAtom}\n highlightIndex={highlightIndex}\n index={index}\n />\n );\n }\n\n const virtualIndex =\n visibleItems.length > 1 ? getVirtualIndex() : 0;\n\n return (\n <Fragment key={group.key}>\n {group.group &&\n getGroupLabel &&\n isVisible(slice, virtualIndex) && (\n <SelectGroupLabel\n label={getGroupLabel(group.group)}\n size={size}\n indent={indent}\n ref={listRefs[virtualIndex]}\n key={`group-${group.key}-Label`}\n />\n )}\n {group.items.map((item) => {\n if (isOptionForSelectAll(item)) {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectItemAll\n label={selectAllLabel}\n groupId={group.key}\n highlightedIndexAtom={highlightedIndexAtom}\n groupsCounterAtom={groupsCounterAtom}\n key={cnSelectDropdown('SelectItemAll', {\n group: group.key,\n })}\n ref={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n indent={indent}\n size={size}\n {...getOptionActions({\n index,\n item,\n })}\n index={index}\n />\n );\n }\n } else {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectRenderItem\n key={cnSelectDropdown('SelectRenderItem', {\n group: group.key,\n item: getItemKey(item),\n })}\n getItemKeyAtom={getItemKeyAtom}\n highlightedIndexAtom={highlightedIndexAtom}\n rootRef={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n renderItem={renderItem}\n item={item}\n {...getOptionActions({\n index,\n item,\n })}\n index={index}\n valueAtom={valueAtom}\n />\n );\n }\n }\n })}\n </Fragment>\n );\n })}\n {isLoading && isListShowed && (\n <ListLoader size={size} innerOffset={indent} />\n )}\n </div>\n {!isLoading && !hasItems && labelForEmptyItems && (\n <ListItem\n size={size}\n label={labelForEmptyItems}\n innerOffset={indent}\n >\n {labelForEmptyItems}\n </ListItem>\n )}\n </div>\n )}\n </SelectPopover>\n );\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectDropdown.js","names":["useAtom","React","Fragment","memo","useMemo","ListItem","ListLoader","mapVerticalSpace","isNotOptionForCreate","isOptionForCreate","isOptionForSelectAll","forkRef","useForkRef","useVirtualScroll","cnMixScrollBar","cnMixSpace","cnCanary","cn","fabricIndex","SelectCreateButton","SelectGroupLabel","SelectItemAll","SelectLoader","SelectPopover","SelectRenderItem","selectDropdownForm","defaultSelectDropdownPropForm","cnSelectDropdown","getLengthElements","elements","length","index","element","items","isVisible","slice","SelectDropdown","props","controlRef","size","getOptionActions","dropdownRefProp","dropdownRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItemsAtom","form","openAtom","offset","offsetProp","renderItem","visibleItemsAtom","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","highlightedIndexAtom","valueAtom","getItemKeyAtom","highlightIndex","onCreate","onChange","onChangeAll","inputValueAtom","groupsCounterAtom","dropdownZIndexAtom","selectAllLabel","otherProps","visibleItems","hasItems","isListMount","setIsListMount","getItemKey","indent","isListShowed","filter","group","Array","isArray","lengthForVirtualScroll","isActive","spaceTop","sliceHookProp","listRefs","scrollElementRef","scrollContainerRef","getIndex","getVirtualIndex","zIndex","pV","marginTop","map","key","virtualIndex","item"],"sources":["../../../../../../src/components/SelectCanary/SelectDropdown/SelectDropdown.tsx"],"sourcesContent":["import './SelectDropdown.css';\n\nimport { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React, { Fragment, memo, useMemo } from 'react';\n\nimport { FieldPropSize } from '##/components/FieldComponents';\nimport {\n ListItem,\n ListLoader,\n mapVerticalSpace,\n} from '##/components/ListCanary';\nimport { PopoverPropOffset } from '##/components/Popover';\nimport {\n GetOptionPropsResult,\n isNotOptionForCreate,\n isOptionForCreate,\n isOptionForSelectAll,\n OptionForCreate,\n OptionProps,\n} from '##/components/SelectCanary/useSelect';\nimport { forkRef, useForkRef } from '##/hooks/useForkRef';\nimport { useVirtualScroll } from '##/hooks/useVirtualScroll';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\nimport { cnMixSpace } from '##/mixs/MixSpace';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { fabricIndex } from '##/utils/fabricIndex';\nimport { SelectAllItem } from '##/utils/getGroups';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport { SelectCreateButton } from '../SelectCreateButton/SelectCreateButton';\nimport { SelectGroupLabel } from '../SelectGroupLabel/SelectGroupLabel';\nimport { SelectItemAll } from '../SelectItemAll/SelectItemAll';\nimport { SelectLoader } from '../SelectLoader/SelectLoader';\nimport { SelectPopover } from '../SelectPopover';\nimport { SelectRenderItem } from '../SelectRenderItem';\nimport { CountedGroup } from '../types';\n\nexport const selectDropdownForm = ['default', 'brick', 'round'] as const;\nexport type SelectDropdownPropForm = typeof selectDropdownForm[number];\nexport const defaultSelectDropdownPropForm = selectDropdownForm[0];\n\ntype RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\ntype Props<ITEM, GROUP> = PropsWithJsxAttributes<{\n size: FieldPropSize;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n dropdownRef: React.Ref<HTMLDivElement>;\n getOptionActions(props: OptionProps<ITEM>): GetOptionPropsResult;\n form: SelectDropdownPropForm;\n openAtom: AtomMut<boolean>;\n offset?: PopoverPropOffset | 'none';\n isLoading?: boolean;\n renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;\n highlightedIndexAtom: AtomMut<number>;\n visibleItemsAtom: AtomMut<(OptionForCreate | CountedGroup<ITEM, GROUP>)[]>;\n getGroupLabel?: (group: GROUP) => string;\n labelForCreate?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n labelForNotFound?: string;\n labelForEmptyItems?: string;\n notFound?: boolean;\n hasItemsAtom: AtomMut<boolean>;\n itemsRefs: React.RefObject<HTMLDivElement>[];\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n valueAtom: AtomMut<ITEM[]>;\n getItemKeyAtom: AtomMut<(item: ITEM) => string | number>;\n onChangeAll: (e: React.SyntheticEvent, items: ITEM[]) => void;\n highlightIndex: (index: number) => void;\n onCreate: (e: React.SyntheticEvent) => void;\n onChange: (e: React.SyntheticEvent, item: ITEM) => void;\n inputValueAtom: AtomMut<string>;\n groupsCounterAtom: AtomMut<Record<string, [number, number]>>;\n dropdownZIndexAtom: AtomMut<number | undefined>;\n selectAllLabel: string;\n viewportRef?: React.RefObject<HTMLElement>;\n}>;\n\ntype SelectDropdownComponent = <ITEM, GROUP>(\n props: Props<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nconst cnSelectDropdown = cn('SelectDropdown');\n\nconst getLengthElements = <ITEM, GROUP>(\n elements: (\n | OptionForCreate\n | {\n items: Array<SelectAllItem | ITEM>;\n key: string | number;\n group?: GROUP;\n }\n )[],\n) => {\n let length = elements.length <= 1 ? 0 : elements.length;\n\n for (let index = 0; index < elements.length; index++) {\n const element = elements[index];\n\n if (isNotOptionForCreate(element) && element?.items?.length) {\n length += element.items.length;\n }\n }\n\n return length;\n};\n\nconst isVisible = (slice: [number, number], index: number) => {\n return index >= slice[0] && index < slice[1];\n};\n\nexport const SelectDropdown: SelectDropdownComponent = memo((props) => {\n const {\n controlRef,\n size,\n getOptionActions,\n dropdownRef: dropdownRefProp,\n labelForCreate,\n className,\n labelForNotFound,\n labelForEmptyItems,\n hasItemsAtom,\n form,\n openAtom,\n offset: offsetProp = 'none',\n renderItem,\n visibleItemsAtom,\n isLoading,\n getGroupLabel,\n notFound,\n itemsRefs,\n virtualScroll,\n onScrollToBottom,\n highlightedIndexAtom,\n valueAtom,\n getItemKeyAtom,\n highlightIndex,\n onCreate,\n onChange,\n onChangeAll,\n inputValueAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n selectAllLabel,\n ...otherProps\n } = props;\n\n const [visibleItems] = useAtom(visibleItemsAtom);\n\n const [hasItems] = useAtom(hasItemsAtom);\n const [isListMount, setIsListMount] = useAtom(false);\n const [getItemKey] = useAtom(getItemKeyAtom);\n const indent = form === 'round' ? 'increased' : 'normal';\n\n const isListShowed = useMemo(() => {\n return (\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) ||\n (Array.isArray(group.items) && group.items.length > 0),\n ).length > 0\n );\n }, [visibleItems]);\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const lengthForVirtualScroll = useMemo(\n () => getLengthElements(visibleItems),\n [visibleItems],\n );\n\n const {\n spaceTop,\n slice: sliceHookProp,\n listRefs,\n scrollElementRef,\n } = useVirtualScroll({\n length: lengthForVirtualScroll,\n isActive: virtualScroll && isListMount,\n onScrollToBottom,\n });\n\n const scrollContainerRef = useForkRef([scrollElementRef, dropdownRefProp]);\n\n const slice: [number, number] =\n sliceHookProp[0] === 0 && virtualScroll ? [0, 50] : sliceHookProp;\n\n const getIndex = fabricIndex();\n const getVirtualIndex = fabricIndex();\n const [zIndex] = useAtom(dropdownZIndexAtom);\n\n return (\n <SelectPopover\n {...otherProps}\n anchorRef={controlRef}\n offset={offset}\n role=\"listbox\"\n className={cnSelectDropdown()}\n size={size}\n controlRef={controlRef}\n openAtom={openAtom}\n form={form}\n onMount={setIsListMount}\n style={{ zIndex }}\n >\n {isListMount && (\n <div\n className={cnSelectDropdown('ScrollContainer', [\n cnMixSpace({\n pV: mapVerticalSpace[size],\n }),\n cnMixScrollBar({ size: 'xs' }),\n ])}\n ref={scrollContainerRef}\n >\n {isLoading && !isListShowed && <SelectLoader />}\n <div\n className={cnSelectDropdown('List')}\n key={cnSelectDropdown('List')}\n style={{ marginTop: spaceTop }}\n >\n {visibleItems.map((group) => {\n if (isOptionForCreate(group)) {\n const index = getIndex();\n return (\n <SelectCreateButton\n size={size}\n key={cnSelectDropdown('List', { key: 'CreateButton' })}\n labelForCreate={labelForCreate}\n indent={indent}\n ref={itemsRefs[index]}\n onClick={onCreate}\n highlightedIndexAtom={highlightedIndexAtom}\n inputValueAtom={inputValueAtom}\n highlightIndex={highlightIndex}\n index={index}\n />\n );\n }\n\n const virtualIndex =\n visibleItems.length > 1 ? getVirtualIndex() : 0;\n\n return (\n <Fragment key={group.key}>\n {group.group &&\n getGroupLabel &&\n isVisible(slice, virtualIndex) && (\n <SelectGroupLabel\n label={getGroupLabel(group.group)}\n size={size}\n indent={indent}\n ref={listRefs[virtualIndex]}\n key={`group-${group.key}-Label`}\n />\n )}\n {group.items.map((item) => {\n if (isOptionForSelectAll(item)) {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectItemAll\n label={selectAllLabel}\n groupId={group.key}\n highlightedIndexAtom={highlightedIndexAtom}\n groupsCounterAtom={groupsCounterAtom}\n key={cnSelectDropdown('SelectItemAll', {\n group: group.key,\n })}\n ref={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n indent={indent}\n size={size}\n {...getOptionActions({\n index,\n item,\n })}\n index={index}\n />\n );\n }\n } else {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n if (isVisible(slice, virtualIndex)) {\n return (\n <SelectRenderItem\n key={cnSelectDropdown('SelectRenderItem', {\n group: group.key,\n item: getItemKey(item),\n })}\n getItemKeyAtom={getItemKeyAtom}\n highlightedIndexAtom={highlightedIndexAtom}\n rootRef={forkRef([\n listRefs[virtualIndex],\n itemsRefs[index],\n ])}\n renderItem={renderItem}\n item={item}\n {...getOptionActions({\n index,\n item,\n })}\n index={index}\n valueAtom={valueAtom}\n />\n );\n }\n }\n })}\n </Fragment>\n );\n })}\n {isLoading && isListShowed && (\n <ListLoader size={size} innerOffset={indent} />\n )}\n </div>\n {!isLoading && !hasItems && labelForEmptyItems && (\n <ListItem\n size={size}\n label={labelForEmptyItems}\n innerOffset={indent}\n >\n {labelForEmptyItems}\n </ListItem>\n )}\n </div>\n )}\n </SelectPopover>\n );\n});\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["form","status","size","disabled","value","renderValue","isLoading","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRef","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChange","dropdownClassName","onFocus","onBlur","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel"];import"./SelectMultiple.css";import{useAction}from"@reatom/npm-react";import React,{forwardRef,useRef}from"react";import{FieldArrayValueItem}from"../../FieldComponents";import{SelectDropdown}from"../SelectDropdown";import{SelectItem}from"../SelectItem";import{useForkRef}from"../../../hooks/useForkRef";import{cnCanary as cn}from"../../../utils/bem";import{useSendToAtom}from"../../../utils/state";import{withCtx}from"../../../utils/state/withCtx";import{withDefault}from"../defaultProps";import{SelectControlLayout}from"../SelectControlLayout";import{SelectMultipleValue}from"../SelectMultipleValue";import{useSelect}from"../useSelect";var cnSelectMultiple=cn("SelectMultiple"),SelectMultipleRender=function(a,b){var c=withDefault(a),d=useSendToAtom(c),e=c.form,f=c.status,g=c.size,h=c.disabled,i=c.value,j=c.renderValue,k=c.isLoading,l=c.dropdownRef,m=c.dropdownForm,n=c.renderItem,o=c.getGroupLabel,p=c.labelForCreate,q=c.labelForEmptyItems,r=c.virtualScroll,s=c.onScrollToBottom,t=c.style,u=c.className,v=c.placeholder,w=c.view,x=c.iconClear,y=c.input,z=c.inputValue,A=c.inputDefaultValue,B=c.inputRef,C=c.getGroupKey,D=c.getItemDisabled,E=c.getItemGroupKey,F=c.getItemKey,G=c.getItemLabel,H=c.items,I=c.onChange,J=c.dropdownClassName,K=c.onFocus,L=c.onBlur,M=c.onCreate,N=c.onInput,O=c.multiple,P=c.groups,Q=c.onDropdownOpen,R=c.ignoreOutsideClicksRefs,S=c.clearButton,T=c.selectAll,U=c.selectAllLabel,V=_objectWithoutProperties(c,_excluded),
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["form","status","size","disabled","value","renderValue","isLoading","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRef","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChange","dropdownClassName","onFocus","onBlur","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","dropdownViewportRef"];import"./SelectMultiple.css";import{useAction}from"@reatom/npm-react";import React,{forwardRef,useRef}from"react";import{FieldArrayValueItem}from"../../FieldComponents";import{SelectDropdown}from"../SelectDropdown";import{SelectItem}from"../SelectItem";import{useForkRef}from"../../../hooks/useForkRef";import{cnCanary as cn}from"../../../utils/bem";import{useSendToAtom}from"../../../utils/state";import{withCtx}from"../../../utils/state/withCtx";import{withDefault}from"../defaultProps";import{SelectControlLayout}from"../SelectControlLayout";import{SelectMultipleValue}from"../SelectMultipleValue";import{useSelect}from"../useSelect";var cnSelectMultiple=cn("SelectMultiple"),SelectMultipleRender=function(a,b){var c=withDefault(a),d=useSendToAtom(c),e=c.form,f=c.status,g=c.size,h=c.disabled,i=c.value,j=c.renderValue,k=c.isLoading,l=c.dropdownRef,m=c.dropdownForm,n=c.renderItem,o=c.getGroupLabel,p=c.labelForCreate,q=c.labelForEmptyItems,r=c.virtualScroll,s=c.onScrollToBottom,t=c.style,u=c.className,v=c.placeholder,w=c.view,x=c.iconClear,y=c.input,z=c.inputValue,A=c.inputDefaultValue,B=c.inputRef,C=c.getGroupKey,D=c.getItemDisabled,E=c.getItemGroupKey,F=c.getItemKey,G=c.getItemLabel,H=c.items,I=c.onChange,J=c.dropdownClassName,K=c.onFocus,L=c.onBlur,M=c.onCreate,N=c.onInput,O=c.multiple,P=c.groups,Q=c.onDropdownOpen,R=c.ignoreOutsideClicksRefs,S=c.clearButton,T=c.selectAll,U=c.selectAllLabel,V=c.dropdownViewportRef,W=_objectWithoutProperties(c,_excluded),X=useSelect({propsAtom:d}),Y=X.getOptionActions,Z=X.openAtom,$=X.visibleItemsAtom,_=X.focusAtom,aa=X.handleInputFocus,ba=X.handleInputBlur,ca=X.handleToggleDropdown,da=X.inputRef,ea=X.handleInputClick,fa=X.handleInputChange,ga=X.clearValue,ha=X.optionsRefs,ia=X.controlRef,ja=X.dropdownRef,ka=X.clearButtonAtom,la=X.highlightedIndexAtom,ma=X.getItemKeyAtom,na=X.valueAtom,oa=X.onChangeAll,pa=X.highlightIndex,qa=X.onCreate,ra=X.onChange,sa=X.inputValueAtom,ta=X.getHandleRemoveValue,ua=X.hasItemsAtom,va=X.groupsCounterAtom,wa=X.dropdownZIndexAtom,xa=useRef(null),ya=useAction(function(a,b){var c=b.item,d=b.active,e=b.hovered,f=b.onClick,h=b.onMouseEnter,i=b.ref;return React.createElement(SelectItem,{label:G(c),active:d,hovered:e,size:g,indent:"round"===m?"increased":"normal",onClick:f,onMouseEnter:h,disabled:D(c),ref:i,multiple:!0})},[D,g,G,m]),za=useAction(function(a,b){return(j||function renderValueDefault(a){var b=a.value,c=a.getRemove;return b.map(function(a){var b=h||D(a);return React.createElement(FieldArrayValueItem,{key:F(a),size:g,label:G(a),disabled:b,onRemove:b?void 0:c(a)})})})({value:b,getRemove:ta})},[h,D,F,g,G,j]);return React.createElement(React.Fragment,null,React.createElement(SelectControlLayout,Object.assign({},W,{style:t,className:cnSelectMultiple(null,[u]),form:e,status:f,size:g,disabled:h,separator:!0,onClear:ga,onDropdownButton:ca,openAtom:Z,focusAtom:_,view:w,iconClear:x,clearButtonAtom:ka,ref:useForkRef([b,ia])}),React.createElement(SelectMultipleValue,{propsAtom:d,onFocus:aa,onBlur:ba,onClick:ea,onChange:fa,renderValue:za,inputRef:useForkRef([da,B]),ref:xa})),React.createElement(SelectDropdown,{valueAtom:na,getItemKeyAtom:ma,openAtom:Z,size:g,controlRef:ia,getOptionActions:Y,dropdownRef:useForkRef([ja,l]),form:m,className:J,renderItem:n||ya,getGroupLabel:o,visibleItemsAtom:$,labelForCreate:p,isLoading:k,labelForEmptyItems:q,itemsRefs:ha,virtualScroll:r,onScrollToBottom:s,highlightedIndexAtom:la,highlightIndex:pa,onChangeAll:oa,onCreate:qa,onChange:ra,inputValueAtom:sa,hasItemsAtom:ua,groupsCounterAtom:va,dropdownZIndexAtom:wa,selectAllLabel:U,viewportRef:V}))};export var SelectMultiple=withCtx(forwardRef(SelectMultipleRender));
|
|
2
2
|
//# sourceMappingURL=SelectMultiple.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMultiple.js","names":["useAction","React","forwardRef","useRef","FieldArrayValueItem","SelectDropdown","SelectItem","useForkRef","cnCanary","cn","useSendToAtom","withCtx","withDefault","SelectControlLayout","SelectMultipleValue","useSelect","cnSelectMultiple","SelectMultipleRender","props","ref","propsWithDefault","propsAtom","form","status","size","disabled","value","renderValue","isLoading","dropdownRefProp","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRefProp","inputRef","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChangeProp","onChange","dropdownClassName","onFocus","onBlur","onCreateProp","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","otherProps","getOptionActions","openAtom","visibleItemsAtom","focusAtom","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","handleInputChange","clearValue","optionsRefs","controlRef","clearButtonAtom","highlightedIndexAtom","getItemKeyAtom","valueAtom","onChangeAll","highlightIndex","inputValueAtom","getHandleRemoveValue","hasItemsAtom","groupsCounterAtom","dropdownZIndexAtom","valueContainerRef","renderItemDefault","ctx","item","active","hovered","onClick","onMouseEnter","inlineControlRender","renderValueDefault","getRemove","map","itemDisabled","SelectMultiple"],"sources":["../../../../../../src/components/SelectCanary/SelectMultiple/SelectMultiple.tsx"],"sourcesContent":["import './SelectMultiple.css';\n\nimport { useAction } from '@reatom/npm-react';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { FieldArrayValueItem } from '##/components/FieldComponents';\nimport { SelectDropdown } from '##/components/SelectCanary/SelectDropdown';\nimport { SelectItem } from '##/components/SelectCanary/SelectItem';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { useSendToAtom } from '##/utils/state';\nimport { withCtx } from '##/utils/state/withCtx';\n\nimport {\n RenderItemProps,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectPropRenderItem,\n SelectProps,\n} from '..';\nimport { withDefault } from '../defaultProps';\nimport { SelectControlLayout } from '../SelectControlLayout';\nimport { SelectMultipleValue } from '../SelectMultipleValue';\nimport { useSelect } from '../useSelect';\n\nconst cnSelectMultiple = cn('SelectMultiple');\n\nconst SelectMultipleRender = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP, true>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const propsWithDefault = withDefault(props);\n\n const propsAtom = useSendToAtom(propsWithDefault);\n\n const {\n form,\n status,\n size,\n disabled,\n value,\n renderValue,\n isLoading,\n dropdownRef: dropdownRefProp,\n dropdownForm,\n renderItem,\n getGroupLabel,\n labelForCreate,\n labelForEmptyItems,\n virtualScroll,\n onScrollToBottom,\n style,\n className,\n placeholder,\n view,\n iconClear,\n input,\n inputValue,\n inputDefaultValue,\n inputRef: inputRefProp,\n\n // исключаем из otherProps\n getGroupKey,\n getItemDisabled,\n getItemGroupKey,\n getItemKey,\n getItemLabel,\n items,\n onChange: onChangeProp,\n dropdownClassName,\n onFocus,\n onBlur,\n onCreate: onCreateProp,\n onInput,\n multiple,\n groups,\n onDropdownOpen,\n ignoreOutsideClicksRefs,\n clearButton,\n selectAll,\n selectAllLabel,\n ...otherProps\n } = propsWithDefault;\n\n const {\n getOptionActions,\n openAtom,\n visibleItemsAtom,\n focusAtom,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n clearValue,\n optionsRefs,\n controlRef,\n dropdownRef,\n clearButtonAtom,\n highlightedIndexAtom,\n getItemKeyAtom,\n valueAtom,\n onChangeAll,\n highlightIndex,\n onCreate,\n onChange,\n inputValueAtom,\n getHandleRemoveValue,\n hasItemsAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n } = useSelect<ITEM, GROUP, true>({\n propsAtom,\n });\n\n const valueContainerRef = useRef<HTMLDivElement>(null);\n\n const renderItemDefault: SelectPropRenderItem<ITEM> = useAction(\n (\n ctx,\n {\n item,\n active,\n hovered,\n onClick,\n onMouseEnter,\n ref,\n }: RenderItemProps<ITEM>,\n ) => {\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n multiple\n />\n );\n },\n [getItemDisabled, size, getItemLabel, dropdownForm],\n );\n\n const inlineControlRender = useAction(\n (ctx, value: ITEM[]) => {\n const renderValueDefault = ({\n value,\n getRemove,\n }: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => {\n return value.map((item) => {\n const itemDisabled = disabled || getItemDisabled(item);\n return (\n <FieldArrayValueItem\n key={getItemKey(item)}\n size={size}\n label={getItemLabel(item)}\n disabled={itemDisabled}\n onRemove={itemDisabled ? undefined : getRemove(item)}\n />\n );\n });\n };\n\n return (renderValue || renderValueDefault)({\n value,\n getRemove: getHandleRemoveValue,\n });\n },\n [disabled, getItemDisabled, getItemKey, size, getItemLabel, renderValue],\n );\n\n return (\n <>\n <SelectControlLayout\n {...otherProps}\n style={style}\n className={cnSelectMultiple(null, [className])}\n form={form}\n status={status}\n size={size}\n disabled={disabled}\n separator\n onClear={clearValue}\n onDropdownButton={handleToggleDropdown}\n openAtom={openAtom}\n focusAtom={focusAtom}\n view={view}\n iconClear={iconClear}\n clearButtonAtom={clearButtonAtom}\n ref={useForkRef([ref, controlRef])}\n >\n <SelectMultipleValue\n propsAtom={propsAtom}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onClick={handleInputClick}\n onChange={handleInputChange}\n renderValue={inlineControlRender}\n inputRef={useForkRef([inputRef, inputRefProp])}\n ref={valueContainerRef}\n />\n </SelectControlLayout>\n <SelectDropdown\n valueAtom={valueAtom}\n getItemKeyAtom={getItemKeyAtom}\n openAtom={openAtom}\n size={size}\n controlRef={controlRef}\n getOptionActions={getOptionActions}\n dropdownRef={useForkRef([dropdownRef, dropdownRefProp])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItemsAtom={visibleItemsAtom}\n labelForCreate={labelForCreate}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n highlightedIndexAtom={highlightedIndexAtom}\n highlightIndex={highlightIndex}\n onChangeAll={onChangeAll}\n onCreate={onCreate}\n onChange={onChange}\n inputValueAtom={inputValueAtom}\n hasItemsAtom={hasItemsAtom}\n groupsCounterAtom={groupsCounterAtom}\n dropdownZIndexAtom={dropdownZIndexAtom}\n selectAllLabel={selectAllLabel}\n />\n </>\n );\n};\n\nexport const SelectMultiple = withCtx(\n forwardRef(SelectMultipleRender),\n) as SelectComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectMultiple.js","names":["useAction","React","forwardRef","useRef","FieldArrayValueItem","SelectDropdown","SelectItem","useForkRef","cnCanary","cn","useSendToAtom","withCtx","withDefault","SelectControlLayout","SelectMultipleValue","useSelect","cnSelectMultiple","SelectMultipleRender","props","ref","propsWithDefault","propsAtom","form","status","size","disabled","value","renderValue","isLoading","dropdownRefProp","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRefProp","inputRef","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChangeProp","onChange","dropdownClassName","onFocus","onBlur","onCreateProp","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","dropdownViewportRef","otherProps","getOptionActions","openAtom","visibleItemsAtom","focusAtom","handleInputFocus","handleInputBlur","handleToggleDropdown","handleInputClick","handleInputChange","clearValue","optionsRefs","controlRef","clearButtonAtom","highlightedIndexAtom","getItemKeyAtom","valueAtom","onChangeAll","highlightIndex","inputValueAtom","getHandleRemoveValue","hasItemsAtom","groupsCounterAtom","dropdownZIndexAtom","valueContainerRef","renderItemDefault","ctx","item","active","hovered","onClick","onMouseEnter","inlineControlRender","renderValueDefault","getRemove","map","itemDisabled","SelectMultiple"],"sources":["../../../../../../src/components/SelectCanary/SelectMultiple/SelectMultiple.tsx"],"sourcesContent":["import './SelectMultiple.css';\n\nimport { useAction } from '@reatom/npm-react';\nimport React, { forwardRef, useRef } from 'react';\n\nimport { FieldArrayValueItem } from '##/components/FieldComponents';\nimport { SelectDropdown } from '##/components/SelectCanary/SelectDropdown';\nimport { SelectItem } from '##/components/SelectCanary/SelectItem';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { useSendToAtom } from '##/utils/state';\nimport { withCtx } from '##/utils/state/withCtx';\n\nimport {\n RenderItemProps,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectPropRenderItem,\n SelectProps,\n} from '..';\nimport { withDefault } from '../defaultProps';\nimport { SelectControlLayout } from '../SelectControlLayout';\nimport { SelectMultipleValue } from '../SelectMultipleValue';\nimport { useSelect } from '../useSelect';\n\nconst cnSelectMultiple = cn('SelectMultiple');\n\nconst SelectMultipleRender = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP, true>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const propsWithDefault = withDefault(props);\n\n const propsAtom = useSendToAtom(propsWithDefault);\n\n const {\n form,\n status,\n size,\n disabled,\n value,\n renderValue,\n isLoading,\n dropdownRef: dropdownRefProp,\n dropdownForm,\n renderItem,\n getGroupLabel,\n labelForCreate,\n labelForEmptyItems,\n virtualScroll,\n onScrollToBottom,\n style,\n className,\n placeholder,\n view,\n iconClear,\n input,\n inputValue,\n inputDefaultValue,\n inputRef: inputRefProp,\n\n // исключаем из otherProps\n getGroupKey,\n getItemDisabled,\n getItemGroupKey,\n getItemKey,\n getItemLabel,\n items,\n onChange: onChangeProp,\n dropdownClassName,\n onFocus,\n onBlur,\n onCreate: onCreateProp,\n onInput,\n multiple,\n groups,\n onDropdownOpen,\n ignoreOutsideClicksRefs,\n clearButton,\n selectAll,\n selectAllLabel,\n dropdownViewportRef,\n ...otherProps\n } = propsWithDefault;\n\n const {\n getOptionActions,\n openAtom,\n visibleItemsAtom,\n focusAtom,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n clearValue,\n optionsRefs,\n controlRef,\n dropdownRef,\n clearButtonAtom,\n highlightedIndexAtom,\n getItemKeyAtom,\n valueAtom,\n onChangeAll,\n highlightIndex,\n onCreate,\n onChange,\n inputValueAtom,\n getHandleRemoveValue,\n hasItemsAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n } = useSelect<ITEM, GROUP, true>({\n propsAtom,\n });\n\n const valueContainerRef = useRef<HTMLDivElement>(null);\n\n const renderItemDefault: SelectPropRenderItem<ITEM> = useAction(\n (\n ctx,\n {\n item,\n active,\n hovered,\n onClick,\n onMouseEnter,\n ref,\n }: RenderItemProps<ITEM>,\n ) => {\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n multiple\n />\n );\n },\n [getItemDisabled, size, getItemLabel, dropdownForm],\n );\n\n const inlineControlRender = useAction(\n (ctx, value: ITEM[]) => {\n const renderValueDefault = ({\n value,\n getRemove,\n }: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => {\n return value.map((item) => {\n const itemDisabled = disabled || getItemDisabled(item);\n return (\n <FieldArrayValueItem\n key={getItemKey(item)}\n size={size}\n label={getItemLabel(item)}\n disabled={itemDisabled}\n onRemove={itemDisabled ? undefined : getRemove(item)}\n />\n );\n });\n };\n\n return (renderValue || renderValueDefault)({\n value,\n getRemove: getHandleRemoveValue,\n });\n },\n [disabled, getItemDisabled, getItemKey, size, getItemLabel, renderValue],\n );\n\n return (\n <>\n <SelectControlLayout\n {...otherProps}\n style={style}\n className={cnSelectMultiple(null, [className])}\n form={form}\n status={status}\n size={size}\n disabled={disabled}\n separator\n onClear={clearValue}\n onDropdownButton={handleToggleDropdown}\n openAtom={openAtom}\n focusAtom={focusAtom}\n view={view}\n iconClear={iconClear}\n clearButtonAtom={clearButtonAtom}\n ref={useForkRef([ref, controlRef])}\n >\n <SelectMultipleValue\n propsAtom={propsAtom}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onClick={handleInputClick}\n onChange={handleInputChange}\n renderValue={inlineControlRender}\n inputRef={useForkRef([inputRef, inputRefProp])}\n ref={valueContainerRef}\n />\n </SelectControlLayout>\n <SelectDropdown\n valueAtom={valueAtom}\n getItemKeyAtom={getItemKeyAtom}\n openAtom={openAtom}\n size={size}\n controlRef={controlRef}\n getOptionActions={getOptionActions}\n dropdownRef={useForkRef([dropdownRef, dropdownRefProp])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItemsAtom={visibleItemsAtom}\n labelForCreate={labelForCreate}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n highlightedIndexAtom={highlightedIndexAtom}\n highlightIndex={highlightIndex}\n onChangeAll={onChangeAll}\n onCreate={onCreate}\n onChange={onChange}\n inputValueAtom={inputValueAtom}\n hasItemsAtom={hasItemsAtom}\n groupsCounterAtom={groupsCounterAtom}\n dropdownZIndexAtom={dropdownZIndexAtom}\n selectAllLabel={selectAllLabel}\n viewportRef={dropdownViewportRef}\n />\n </>\n );\n};\n\nexport const SelectMultiple = withCtx(\n forwardRef(SelectMultipleRender),\n) as SelectComponent;\n"],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ type Props = PropsWithJsxAttributes<{
|
|
|
15
15
|
anchorRef: React.RefObject<HTMLElement> | undefined;
|
|
16
16
|
children: React.ReactNode;
|
|
17
17
|
onMount: (isMount: boolean) => void;
|
|
18
|
+
viewportRef?: React.RefObject<HTMLElement>;
|
|
18
19
|
}>;
|
|
19
20
|
export declare const SelectPopover: (props: Props) => JSX.Element;
|
|
20
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectPopover.js","names":["classnames","reatomComponent","React","useCallback","useRef","Transition","cnListBox","Popover","animateTimeout","cnMixPopoverAnimate","SelectPopoverForm","defaultSelectPopoverPropForm","SelectPopover","props","ctx","size","className","openAtom","offset","offsetProp","controlRef","form","anchorRef","children","onMount","otherProps","popoverRef","spy","animate","border","shadow"],"sources":["../../../../../../src/components/SelectCanary/SelectPopover/SelectPopover.tsx"],"sourcesContent":["import { classnames } from '@bem-react/classnames';\nimport { AtomMut } from '@reatom/framework';\nimport { reatomComponent } from '@reatom/npm-react';\nimport React, { useCallback, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { FieldPropSize } from '##/components/FieldComponents';\nimport { cnListBox } from '##/components/ListCanary';\nimport { Popover, PopoverPropOffset } from '##/components/Popover';\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '##/mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nexport const SelectPopoverForm = ['default', 'brick', 'round'] as const;\nexport type SelectPopoverPropForm = typeof SelectPopoverForm[number];\nexport const defaultSelectPopoverPropForm = SelectPopoverForm[0];\n\ntype Props = PropsWithJsxAttributes<{\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n form: SelectPopoverPropForm;\n openAtom: AtomMut<boolean>;\n size: FieldPropSize;\n offset?: PopoverPropOffset | 'none';\n anchorRef: React.RefObject<HTMLElement> | undefined;\n children: React.ReactNode;\n onMount: (isMount: boolean) => void;\n}>;\n\nexport const SelectPopover = reatomComponent<Props>((props) => {\n const {\n ctx,\n size,\n className,\n openAtom,\n offset: offsetProp = 'none',\n controlRef,\n form,\n anchorRef,\n children,\n onMount,\n ...otherProps\n } = props;\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const popoverRef = useRef<HTMLDivElement>(null);\n\n return (\n <Transition\n in={ctx.spy(openAtom)}\n nodeRef={popoverRef}\n timeout={animateTimeout}\n unmountOnExit\n onEntering={useCallback(() => onMount(true), [])}\n onExited={useCallback(() => onMount(false), [])}\n >\n {(animate) => {\n return (\n <Popover\n {...otherProps}\n anchorRef={anchorRef}\n direction=\"downStartLeft\"\n possibleDirections={[\n 'downStartLeft',\n 'upStartLeft',\n 'downStartRight',\n 'upStartRight',\n ]}\n offset={offset}\n ref={popoverRef}\n role=\"listbox\"\n className={classnames(\n className,\n cnListBox({ size, form, border: true, shadow: true }),\n cnMixPopoverAnimate({ animate }),\n )}\n equalAnchorWidth\n >\n {children}\n </Popover>\n );\n }}\n </Transition>\n );\n});\n"],"mappings":"uMAAA,OAASA,UAAT,KAA2B,uBAA3B,CAEA,OAASC,eAAT,KAAgC,mBAAhC,CACA,MAAOC,MAAP,EAAgBC,WAAhB,CAA6BC,MAA7B,KAA2C,OAA3C,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAGA,OAASC,SAAT,wBACA,OAASC,OAAT,qBACA,OACEC,cADF,CAEEC,mBAFF,yDAMA,MAAO,IAAMC,kBAAiB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAAqB,OAArB,CAA1B,CAEP,MAAO,IAAMC,6BAA4B,CAAGD,iBAAiB,CAAC,CAAD,CAAtD,
|
|
1
|
+
{"version":3,"file":"SelectPopover.js","names":["classnames","reatomComponent","React","useCallback","useRef","Transition","cnListBox","Popover","animateTimeout","cnMixPopoverAnimate","SelectPopoverForm","defaultSelectPopoverPropForm","SelectPopover","props","ctx","size","className","openAtom","offset","offsetProp","controlRef","form","anchorRef","children","onMount","otherProps","popoverRef","spy","animate","border","shadow"],"sources":["../../../../../../src/components/SelectCanary/SelectPopover/SelectPopover.tsx"],"sourcesContent":["import { classnames } from '@bem-react/classnames';\nimport { AtomMut } from '@reatom/framework';\nimport { reatomComponent } from '@reatom/npm-react';\nimport React, { useCallback, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { FieldPropSize } from '##/components/FieldComponents';\nimport { cnListBox } from '##/components/ListCanary';\nimport { Popover, PopoverPropOffset } from '##/components/Popover';\nimport {\n animateTimeout,\n cnMixPopoverAnimate,\n} from '##/mixs/MixPopoverAnimate/MixPopoverAnimate';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nexport const SelectPopoverForm = ['default', 'brick', 'round'] as const;\nexport type SelectPopoverPropForm = typeof SelectPopoverForm[number];\nexport const defaultSelectPopoverPropForm = SelectPopoverForm[0];\n\ntype Props = PropsWithJsxAttributes<{\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n form: SelectPopoverPropForm;\n openAtom: AtomMut<boolean>;\n size: FieldPropSize;\n offset?: PopoverPropOffset | 'none';\n anchorRef: React.RefObject<HTMLElement> | undefined;\n children: React.ReactNode;\n onMount: (isMount: boolean) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n}>;\n\nexport const SelectPopover = reatomComponent<Props>((props) => {\n const {\n ctx,\n size,\n className,\n openAtom,\n offset: offsetProp = 'none',\n controlRef,\n form,\n anchorRef,\n children,\n onMount,\n ...otherProps\n } = props;\n\n const offset = offsetProp === 'none' ? undefined : offsetProp;\n\n const popoverRef = useRef<HTMLDivElement>(null);\n\n return (\n <Transition\n in={ctx.spy(openAtom)}\n nodeRef={popoverRef}\n timeout={animateTimeout}\n unmountOnExit\n onEntering={useCallback(() => onMount(true), [])}\n onExited={useCallback(() => onMount(false), [])}\n >\n {(animate) => {\n return (\n <Popover\n {...otherProps}\n anchorRef={anchorRef}\n direction=\"downStartLeft\"\n possibleDirections={[\n 'downStartLeft',\n 'upStartLeft',\n 'downStartRight',\n 'upStartRight',\n ]}\n offset={offset}\n ref={popoverRef}\n role=\"listbox\"\n className={classnames(\n className,\n cnListBox({ size, form, border: true, shadow: true }),\n cnMixPopoverAnimate({ animate }),\n )}\n equalAnchorWidth\n >\n {children}\n </Popover>\n );\n }}\n </Transition>\n );\n});\n"],"mappings":"uMAAA,OAASA,UAAT,KAA2B,uBAA3B,CAEA,OAASC,eAAT,KAAgC,mBAAhC,CACA,MAAOC,MAAP,EAAgBC,WAAhB,CAA6BC,MAA7B,KAA2C,OAA3C,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAGA,OAASC,SAAT,wBACA,OAASC,OAAT,qBACA,OACEC,cADF,CAEEC,mBAFF,yDAMA,MAAO,IAAMC,kBAAiB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAAqB,OAArB,CAA1B,CAEP,MAAO,IAAMC,6BAA4B,CAAGD,iBAAiB,CAAC,CAAD,CAAtD,CAcP,MAAO,IAAME,cAAa,CAAGX,eAAe,CAAQ,SAACY,CAAD,CAAW,IAE3DC,EAF2D,CAazDD,CAbyD,CAE3DC,GAF2D,CAG3DC,CAH2D,CAazDF,CAbyD,CAG3DE,IAH2D,CAI3DC,CAJ2D,CAazDH,CAbyD,CAI3DG,SAJ2D,CAK3DC,CAL2D,CAazDJ,CAbyD,CAK3DI,QAL2D,GAazDJ,CAbyD,CAM3DK,MAN2D,CAMnDC,CANmD,YAMtC,MANsC,GAO3DC,CAP2D,CAazDP,CAbyD,CAO3DO,UAP2D,CAQ3DC,CAR2D,CAazDR,CAbyD,CAQ3DQ,IAR2D,CAS3DC,CAT2D,CAazDT,CAbyD,CAS3DS,SAT2D,CAU3DC,CAV2D,CAazDV,CAbyD,CAU3DU,QAV2D,CAW3DC,CAX2D,CAazDX,CAbyD,CAW3DW,OAX2D,CAYxDC,CAZwD,0BAazDZ,CAbyD,YAevDK,CAAM,CAAkB,MAAf,GAAAC,CAAU,QAA0BA,CAfU,CAiBvDO,CAAU,CAAGtB,MAAM,CAAiB,IAAjB,CAjBoC,CAmB7D,MACE,qBAAC,UAAD,EACE,GAAIU,CAAG,CAACa,GAAJ,CAAQV,CAAR,CADN,CAEE,OAAO,CAAES,CAFX,CAGE,OAAO,CAAElB,cAHX,CAIE,aAAa,GAJf,CAKE,UAAU,CAAEL,WAAW,CAAC,iBAAMqB,EAAO,IAAb,CAAD,CAAsB,EAAtB,CALzB,CAME,QAAQ,CAAErB,WAAW,CAAC,iBAAMqB,EAAO,IAAb,CAAD,CAAuB,EAAvB,CANvB,EAQG,SAACI,CAAD,CAAa,CACZ,MACE,qBAAC,OAAD,kBACMH,CADN,EAEE,SAAS,CAAEH,CAFb,CAGE,SAAS,CAAC,eAHZ,CAIE,kBAAkB,CAAE,CAClB,eADkB,CAElB,aAFkB,CAGlB,gBAHkB,CAIlB,cAJkB,CAJtB,CAUE,MAAM,CAAEJ,CAVV,CAWE,GAAG,CAAEQ,CAXP,CAYE,IAAI,CAAC,SAZP,CAaE,SAAS,CAAE1B,UAAU,CACnBgB,CADmB,CAEnBV,SAAS,CAAC,CAAES,IAAI,CAAJA,CAAF,CAAQM,IAAI,CAAJA,CAAR,CAAcQ,MAAM,GAApB,CAA4BC,MAAM,GAAlC,CAAD,CAFU,CAGnBrB,mBAAmB,CAAC,CAAEmB,OAAO,CAAPA,CAAF,CAAD,CAHA,CAbvB,CAkBE,gBAAgB,GAlBlB,GAoBGL,CApBH,CAuBH,CAjCH,CAoCH,CAxD2C,CAArC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["form","status","size","disabled","value","renderValue","isLoading","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRef","aria-label","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChange","dropdownClassName","onFocus","onBlur","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel"];import{useAction}from"@reatom/npm-react";import React,{forwardRef}from"react";import{SelectDropdown}from"../SelectDropdown";import{SelectItem}from"../SelectItem";import{useForkRef}from"../../../hooks/useForkRef";import{cnCanary as cn}from"../../../utils/bem";import{useSendToAtom}from"../../../utils/state";import{withCtx}from"../../../utils/state/withCtx";import{withDefault}from"../defaultProps";import{SelectControlLayout}from"../SelectControlLayout";import{SelectInput}from"../SelectInput";import{useSelect}from"../useSelect";var cnSelectSingle=cn("SelectSelectSingleMultiple"),SelectSingleRender=function(a,b){var c=withDefault(a),d=useSendToAtom(c),e=c.form,f=c.status,g=c.size,h=c.disabled,i=c.value,j=c.renderValue,k=c.isLoading,l=c.dropdownRef,m=c.dropdownForm,n=c.renderItem,o=c.getGroupLabel,p=c.labelForCreate,q=c.labelForEmptyItems,r=c.virtualScroll,s=c.onScrollToBottom,t=c.style,u=c.className,v=c.placeholder,w=c.view,x=c.iconClear,y=c.input,z=c.inputValue,A=c.inputDefaultValue,B=c.inputRef,C=c["aria-label"],D=c.getGroupKey,E=c.getItemDisabled,F=c.getItemGroupKey,G=c.getItemKey,H=c.getItemLabel,I=c.items,J=c.onChange,K=c.dropdownClassName,L=c.onFocus,M=c.onBlur,N=c.onCreate,O=c.onInput,P=c.multiple,Q=c.groups,R=c.onDropdownOpen,S=c.ignoreOutsideClicksRefs,T=c.clearButton,U=c.selectAll,V=c.selectAllLabel,W=_objectWithoutProperties(c,_excluded),
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["form","status","size","disabled","value","renderValue","isLoading","dropdownRef","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRef","aria-label","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChange","dropdownClassName","onFocus","onBlur","onCreate","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","dropdownViewportRef"];import{useAction}from"@reatom/npm-react";import React,{forwardRef}from"react";import{SelectDropdown}from"../SelectDropdown";import{SelectItem}from"../SelectItem";import{useForkRef}from"../../../hooks/useForkRef";import{cnCanary as cn}from"../../../utils/bem";import{useSendToAtom}from"../../../utils/state";import{withCtx}from"../../../utils/state/withCtx";import{withDefault}from"../defaultProps";import{SelectControlLayout}from"../SelectControlLayout";import{SelectInput}from"../SelectInput";import{useSelect}from"../useSelect";var cnSelectSingle=cn("SelectSelectSingleMultiple"),SelectSingleRender=function(a,b){var c=withDefault(a),d=useSendToAtom(c),e=c.form,f=c.status,g=c.size,h=c.disabled,i=c.value,j=c.renderValue,k=c.isLoading,l=c.dropdownRef,m=c.dropdownForm,n=c.renderItem,o=c.getGroupLabel,p=c.labelForCreate,q=c.labelForEmptyItems,r=c.virtualScroll,s=c.onScrollToBottom,t=c.style,u=c.className,v=c.placeholder,w=c.view,x=c.iconClear,y=c.input,z=c.inputValue,A=c.inputDefaultValue,B=c.inputRef,C=c["aria-label"],D=c.getGroupKey,E=c.getItemDisabled,F=c.getItemGroupKey,G=c.getItemKey,H=c.getItemLabel,I=c.items,J=c.onChange,K=c.dropdownClassName,L=c.onFocus,M=c.onBlur,N=c.onCreate,O=c.onInput,P=c.multiple,Q=c.groups,R=c.onDropdownOpen,S=c.ignoreOutsideClicksRefs,T=c.clearButton,U=c.selectAll,V=c.selectAllLabel,W=c.dropdownViewportRef,X=_objectWithoutProperties(c,_excluded),Y=useAction(function(a,b){var c=b.value;return a.get(d).getItemLabel(c)},[]),Z=useAction(function(a,b){var c=b.item,e=b.active,f=b.hovered,g=b.onClick,h=b.onMouseEnter,i=b.ref,j=a.get(d),k=j.getItemLabel,l=j.size,m=j.dropdownForm,n=j.getItemDisabled;return React.createElement(SelectItem,{label:k(c),active:e,hovered:f,size:l,indent:"round"===m?"increased":"normal",onClick:g,onMouseEnter:h,disabled:n(c),ref:i})},[]),$=useSelect({propsAtom:d}),_=$.getOptionActions,aa=$.openAtom,ba=$.visibleItemsAtom,ca=$.focusAtom,da=$.handleInputFocus,ea=$.handleInputBlur,fa=$.handleToggleDropdown,ga=$.inputRef,ha=$.handleInputClick,ia=$.handleInputChange,ja=$.clearValue,ka=$.optionsRefs,la=$.controlRef,ma=$.dropdownRef,na=$.clearButtonAtom,oa=$.highlightedIndexAtom,pa=$.getItemKeyAtom,qa=$.valueAtom,ra=$.onChangeAll,sa=$.highlightIndex,ta=$.onCreate,ua=$.onChange,va=$.inputValueAtom,wa=$.hasItemsAtom,xa=$.groupsCounterAtom,ya=$.dropdownZIndexAtom;return React.createElement(React.Fragment,null,React.createElement(SelectControlLayout,Object.assign({},X,{style:t,className:cnSelectSingle(null,[u]),form:e,status:f,size:g,disabled:h,separator:!0,onClear:ja,onDropdownButton:fa,openAtom:aa,focusAtom:ca,view:w,iconClear:x,clearButtonAtom:na,ref:useForkRef([b,la])}),React.createElement(SelectInput,{onFocus:da,onBlur:ea,ref:useForkRef([ga,B]),onClick:ha,onChange:y?ia:void 0,value:y?z:void 0,defaultValue:y?A:void 0,readOnly:!y||void 0,disabled:h,placeholder:v,"aria-label":C},i&&(j||Y)({value:i}))),React.createElement(SelectDropdown,{valueAtom:qa,getItemKeyAtom:pa,openAtom:aa,size:g,controlRef:la,getOptionActions:_,dropdownRef:useForkRef([ma,l]),form:m,className:K,renderItem:n||Z,getGroupLabel:o,visibleItemsAtom:ba,labelForCreate:p,isLoading:k,labelForEmptyItems:q,itemsRefs:ka,virtualScroll:r,onScrollToBottom:s,highlightedIndexAtom:oa,highlightIndex:sa,onChangeAll:ra,onCreate:ta,onChange:ua,inputValueAtom:va,hasItemsAtom:wa,groupsCounterAtom:xa,dropdownZIndexAtom:ya,selectAllLabel:V,viewportRef:W}))};export var SelectSingle=withCtx(forwardRef(SelectSingleRender));
|
|
2
2
|
//# sourceMappingURL=SelectSingle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectSingle.js","names":["useAction","React","forwardRef","SelectDropdown","SelectItem","useForkRef","cnCanary","cn","useSendToAtom","withCtx","withDefault","SelectControlLayout","SelectInput","useSelect","cnSelectSingle","SelectSingleRender","props","ref","propsWithDefault","propsAtom","form","status","size","disabled","value","renderValue","isLoading","dropdownRefProp","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRefProp","ariaLabel","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChangeProp","dropdownClassName","onFocus","onBlur","onCreateProp","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","otherProps","renderValueDefault","ctx","get","renderItemDefault","item","active","hovered","onClick","onMouseEnter","getOptionActions","openAtom","visibleItemsAtom","focusAtom","handleInputFocus","handleInputBlur","handleToggleDropdown","inputRef","handleInputClick","handleInputChange","clearValue","optionsRefs","controlRef","dropdownRef","clearButtonAtom","highlightedIndexAtom","getItemKeyAtom","valueAtom","onChangeAll","highlightIndex","onCreate","onChange","inputValueAtom","hasItemsAtom","groupsCounterAtom","dropdownZIndexAtom","SelectSingle"],"sources":["../../../../../../src/components/SelectCanary/SelectSingle/SelectSingle.tsx"],"sourcesContent":["import { useAction } from '@reatom/npm-react';\nimport React, { forwardRef } from 'react';\n\nimport { SelectDropdown } from '##/components/SelectCanary/SelectDropdown';\nimport { SelectItem } from '##/components/SelectCanary/SelectItem';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { useSendToAtom } from '##/utils/state';\nimport { withCtx } from '##/utils/state/withCtx';\n\nimport {\n RenderItemProps,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectPropRenderValue,\n SelectProps,\n} from '..';\nimport { withDefault } from '../defaultProps';\nimport { SelectControlLayout } from '../SelectControlLayout';\nimport { SelectInput } from '../SelectInput';\nimport { useSelect } from '../useSelect';\n\nconst cnSelectSingle = cn('SelectSelectSingleMultiple');\n\nconst SelectSingleRender = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP, false>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const propsWithDefault = withDefault(props);\n\n const propsAtom = useSendToAtom(propsWithDefault);\n\n const {\n form,\n status,\n size,\n disabled,\n value,\n renderValue,\n isLoading,\n 'dropdownRef': dropdownRefProp,\n dropdownForm,\n renderItem,\n getGroupLabel,\n labelForCreate,\n labelForEmptyItems,\n virtualScroll,\n onScrollToBottom,\n style,\n className,\n placeholder,\n view,\n iconClear,\n input,\n inputValue,\n inputDefaultValue,\n 'inputRef': inputRefProp,\n 'aria-label': ariaLabel,\n\n // исключаем из otherProps\n getGroupKey,\n getItemDisabled,\n getItemGroupKey,\n getItemKey,\n getItemLabel,\n items,\n 'onChange': onChangeProp,\n dropdownClassName,\n onFocus,\n onBlur,\n 'onCreate': onCreateProp,\n onInput,\n multiple,\n groups,\n onDropdownOpen,\n ignoreOutsideClicksRefs,\n clearButton,\n selectAll,\n selectAllLabel,\n ...otherProps\n } = propsWithDefault;\n\n const renderValueDefault: SelectPropRenderValue<ITEM, false> = useAction(\n (ctx, { value }: { value: ITEM }) => ctx.get(propsAtom).getItemLabel(value),\n [],\n );\n\n const renderItemDefault = useAction(\n (\n ctx,\n {\n item,\n active,\n hovered,\n onClick,\n onMouseEnter,\n ref,\n }: RenderItemProps<ITEM>,\n ) => {\n const { getItemLabel, size, dropdownForm, getItemDisabled } =\n ctx.get(propsAtom);\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n },\n [],\n );\n\n const {\n getOptionActions,\n openAtom,\n visibleItemsAtom,\n focusAtom,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n clearValue,\n optionsRefs,\n controlRef,\n dropdownRef,\n clearButtonAtom,\n highlightedIndexAtom,\n getItemKeyAtom,\n valueAtom,\n onChangeAll,\n highlightIndex,\n onCreate,\n onChange,\n inputValueAtom,\n hasItemsAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n } = useSelect<ITEM, GROUP, false>({\n propsAtom,\n });\n\n return (\n <>\n <SelectControlLayout\n {...otherProps}\n style={style}\n className={cnSelectSingle(null, [className])}\n form={form}\n status={status}\n size={size}\n disabled={disabled}\n separator\n onClear={clearValue}\n onDropdownButton={handleToggleDropdown}\n openAtom={openAtom}\n focusAtom={focusAtom}\n view={view}\n iconClear={iconClear}\n clearButtonAtom={clearButtonAtom}\n ref={useForkRef([ref, controlRef])}\n >\n <SelectInput\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n ref={useForkRef([inputRef, inputRefProp])}\n onClick={handleInputClick}\n onChange={input ? handleInputChange : undefined}\n value={input ? inputValue : undefined}\n defaultValue={input ? inputDefaultValue : undefined}\n readOnly={input ? undefined : true}\n disabled={disabled}\n placeholder={placeholder}\n aria-label={ariaLabel}\n >\n {value && (renderValue || renderValueDefault)({ value })}\n </SelectInput>\n </SelectControlLayout>\n <SelectDropdown\n valueAtom={valueAtom}\n getItemKeyAtom={getItemKeyAtom}\n openAtom={openAtom}\n size={size}\n controlRef={controlRef}\n getOptionActions={getOptionActions}\n dropdownRef={useForkRef([dropdownRef, dropdownRefProp])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItemsAtom={visibleItemsAtom}\n labelForCreate={labelForCreate}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n highlightedIndexAtom={highlightedIndexAtom}\n highlightIndex={highlightIndex}\n onChangeAll={onChangeAll}\n onCreate={onCreate}\n onChange={onChange}\n inputValueAtom={inputValueAtom}\n hasItemsAtom={hasItemsAtom}\n groupsCounterAtom={groupsCounterAtom}\n dropdownZIndexAtom={dropdownZIndexAtom}\n selectAllLabel={selectAllLabel}\n />\n </>\n );\n};\n\nexport const SelectSingle = withCtx(\n forwardRef(SelectSingleRender),\n) as SelectComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectSingle.js","names":["useAction","React","forwardRef","SelectDropdown","SelectItem","useForkRef","cnCanary","cn","useSendToAtom","withCtx","withDefault","SelectControlLayout","SelectInput","useSelect","cnSelectSingle","SelectSingleRender","props","ref","propsWithDefault","propsAtom","form","status","size","disabled","value","renderValue","isLoading","dropdownRefProp","dropdownForm","renderItem","getGroupLabel","labelForCreate","labelForEmptyItems","virtualScroll","onScrollToBottom","style","className","placeholder","view","iconClear","input","inputValue","inputDefaultValue","inputRefProp","ariaLabel","getGroupKey","getItemDisabled","getItemGroupKey","getItemKey","getItemLabel","items","onChangeProp","dropdownClassName","onFocus","onBlur","onCreateProp","onInput","multiple","groups","onDropdownOpen","ignoreOutsideClicksRefs","clearButton","selectAll","selectAllLabel","dropdownViewportRef","otherProps","renderValueDefault","ctx","get","renderItemDefault","item","active","hovered","onClick","onMouseEnter","getOptionActions","openAtom","visibleItemsAtom","focusAtom","handleInputFocus","handleInputBlur","handleToggleDropdown","inputRef","handleInputClick","handleInputChange","clearValue","optionsRefs","controlRef","dropdownRef","clearButtonAtom","highlightedIndexAtom","getItemKeyAtom","valueAtom","onChangeAll","highlightIndex","onCreate","onChange","inputValueAtom","hasItemsAtom","groupsCounterAtom","dropdownZIndexAtom","SelectSingle"],"sources":["../../../../../../src/components/SelectCanary/SelectSingle/SelectSingle.tsx"],"sourcesContent":["import { useAction } from '@reatom/npm-react';\nimport React, { forwardRef } from 'react';\n\nimport { SelectDropdown } from '##/components/SelectCanary/SelectDropdown';\nimport { SelectItem } from '##/components/SelectCanary/SelectItem';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cnCanary as cn } from '##/utils/bem';\nimport { useSendToAtom } from '##/utils/state';\nimport { withCtx } from '##/utils/state/withCtx';\n\nimport {\n RenderItemProps,\n SelectComponent,\n SelectGroupDefault,\n SelectItemDefault,\n SelectPropRenderValue,\n SelectProps,\n} from '..';\nimport { withDefault } from '../defaultProps';\nimport { SelectControlLayout } from '../SelectControlLayout';\nimport { SelectInput } from '../SelectInput';\nimport { useSelect } from '../useSelect';\n\nconst cnSelectSingle = cn('SelectSelectSingleMultiple');\n\nconst SelectSingleRender = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n>(\n props: SelectProps<ITEM, GROUP, false>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const propsWithDefault = withDefault(props);\n\n const propsAtom = useSendToAtom(propsWithDefault);\n\n const {\n form,\n status,\n size,\n disabled,\n value,\n renderValue,\n isLoading,\n 'dropdownRef': dropdownRefProp,\n dropdownForm,\n renderItem,\n getGroupLabel,\n labelForCreate,\n labelForEmptyItems,\n virtualScroll,\n onScrollToBottom,\n style,\n className,\n placeholder,\n view,\n iconClear,\n input,\n inputValue,\n inputDefaultValue,\n 'inputRef': inputRefProp,\n 'aria-label': ariaLabel,\n\n // исключаем из otherProps\n getGroupKey,\n getItemDisabled,\n getItemGroupKey,\n getItemKey,\n getItemLabel,\n items,\n 'onChange': onChangeProp,\n dropdownClassName,\n onFocus,\n onBlur,\n 'onCreate': onCreateProp,\n onInput,\n multiple,\n groups,\n onDropdownOpen,\n ignoreOutsideClicksRefs,\n clearButton,\n selectAll,\n selectAllLabel,\n dropdownViewportRef,\n ...otherProps\n } = propsWithDefault;\n\n const renderValueDefault: SelectPropRenderValue<ITEM, false> = useAction(\n (ctx, { value }: { value: ITEM }) => ctx.get(propsAtom).getItemLabel(value),\n [],\n );\n\n const renderItemDefault = useAction(\n (\n ctx,\n {\n item,\n active,\n hovered,\n onClick,\n onMouseEnter,\n ref,\n }: RenderItemProps<ITEM>,\n ) => {\n const { getItemLabel, size, dropdownForm, getItemDisabled } =\n ctx.get(propsAtom);\n\n return (\n <SelectItem\n label={getItemLabel(item)}\n active={active}\n hovered={hovered}\n size={size}\n indent={dropdownForm === 'round' ? 'increased' : 'normal'}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n disabled={getItemDisabled(item)}\n ref={ref}\n />\n );\n },\n [],\n );\n\n const {\n getOptionActions,\n openAtom,\n visibleItemsAtom,\n focusAtom,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n inputRef,\n handleInputClick,\n handleInputChange,\n clearValue,\n optionsRefs,\n controlRef,\n dropdownRef,\n clearButtonAtom,\n highlightedIndexAtom,\n getItemKeyAtom,\n valueAtom,\n onChangeAll,\n highlightIndex,\n onCreate,\n onChange,\n inputValueAtom,\n hasItemsAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n } = useSelect<ITEM, GROUP, false>({\n propsAtom,\n });\n\n return (\n <>\n <SelectControlLayout\n {...otherProps}\n style={style}\n className={cnSelectSingle(null, [className])}\n form={form}\n status={status}\n size={size}\n disabled={disabled}\n separator\n onClear={clearValue}\n onDropdownButton={handleToggleDropdown}\n openAtom={openAtom}\n focusAtom={focusAtom}\n view={view}\n iconClear={iconClear}\n clearButtonAtom={clearButtonAtom}\n ref={useForkRef([ref, controlRef])}\n >\n <SelectInput\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n ref={useForkRef([inputRef, inputRefProp])}\n onClick={handleInputClick}\n onChange={input ? handleInputChange : undefined}\n value={input ? inputValue : undefined}\n defaultValue={input ? inputDefaultValue : undefined}\n readOnly={input ? undefined : true}\n disabled={disabled}\n placeholder={placeholder}\n aria-label={ariaLabel}\n >\n {value && (renderValue || renderValueDefault)({ value })}\n </SelectInput>\n </SelectControlLayout>\n <SelectDropdown\n valueAtom={valueAtom}\n getItemKeyAtom={getItemKeyAtom}\n openAtom={openAtom}\n size={size}\n controlRef={controlRef}\n getOptionActions={getOptionActions}\n dropdownRef={useForkRef([dropdownRef, dropdownRefProp])}\n form={dropdownForm}\n className={dropdownClassName}\n renderItem={renderItem || renderItemDefault}\n getGroupLabel={getGroupLabel}\n visibleItemsAtom={visibleItemsAtom}\n labelForCreate={labelForCreate}\n isLoading={isLoading}\n labelForEmptyItems={labelForEmptyItems}\n itemsRefs={optionsRefs}\n virtualScroll={virtualScroll}\n onScrollToBottom={onScrollToBottom}\n highlightedIndexAtom={highlightedIndexAtom}\n highlightIndex={highlightIndex}\n onChangeAll={onChangeAll}\n onCreate={onCreate}\n onChange={onChange}\n inputValueAtom={inputValueAtom}\n hasItemsAtom={hasItemsAtom}\n groupsCounterAtom={groupsCounterAtom}\n dropdownZIndexAtom={dropdownZIndexAtom}\n selectAllLabel={selectAllLabel}\n viewportRef={dropdownViewportRef}\n />\n </>\n );\n};\n\nexport const SelectSingle = withCtx(\n forwardRef(SelectSingleRender),\n) as SelectComponent;\n"],"mappings":"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"}
|
|
@@ -48,12 +48,13 @@ export declare function withDefaultGetters<ITEM = SelectItemDefault, GROUP = Sel
|
|
|
48
48
|
onScrollToBottom?: (length: number) => void;
|
|
49
49
|
onDropdownOpen?: (isOpen: boolean) => void;
|
|
50
50
|
dropdownOpen?: boolean;
|
|
51
|
+
dropdownViewportRef?: React.RefObject<HTMLElement>;
|
|
51
52
|
ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
|
|
52
53
|
clearButton?: boolean;
|
|
53
54
|
iconClear?: import("@consta/icons/Icon").IconComponent;
|
|
54
55
|
selectAll?: (MULTIPLE extends true ? boolean : never) | undefined;
|
|
55
56
|
selectAllLabel?: string;
|
|
56
|
-
} & Omit<import("react").HTMLAttributes<HTMLDivElement>, "css" | "onFocus" | "onBlur" | "onChange" | "onInput" | "size" | "view" | "form" | "status" | "input" | "disabled" | "value" | "multiple" | "placeholder" | "inputRef" | "items" | "dropdownForm" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "onScrollToBottom" | "labelForCreate" | "inputValue" | "selectAll" | "onDropdownOpen" | "dropdownOpen" | "ignoreOutsideClicksRefs" | "virtualScroll" | "inputDefaultValue" | "clearButton" | "iconClear" | "onCreate" | "selectAllLabel" | "aria-Label"> & import("react").RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
57
|
+
} & Omit<import("react").HTMLAttributes<HTMLDivElement>, "css" | "onFocus" | "onBlur" | "onChange" | "onInput" | "size" | "view" | "form" | "status" | "input" | "disabled" | "value" | "multiple" | "placeholder" | "inputRef" | "items" | "dropdownForm" | "dropdownClassName" | "dropdownRef" | "isLoading" | "labelForEmptyItems" | "renderItem" | "renderValue" | "groups" | "getItemLabel" | "getItemKey" | "getItemGroupKey" | "getItemDisabled" | "getGroupLabel" | "getGroupKey" | "onScrollToBottom" | "labelForCreate" | "inputValue" | "selectAll" | "onDropdownOpen" | "dropdownOpen" | "ignoreOutsideClicksRefs" | "virtualScroll" | "dropdownViewportRef" | "inputDefaultValue" | "clearButton" | "iconClear" | "onCreate" | "selectAllLabel" | "aria-Label"> & import("react").RefAttributes<HTMLDivElement> & (ITEM extends {
|
|
57
58
|
label: SelectItemDefault["label"];
|
|
58
59
|
} ? {} : {
|
|
59
60
|
getItemLabel: SelectPropGetItemLabel<ITEM>;
|
|
@@ -91,6 +91,7 @@ export type SelectPropsInit<ITEM = SelectItemDefault, GROUP = SelectGroupDefault
|
|
|
91
91
|
'onScrollToBottom'?: (length: number) => void;
|
|
92
92
|
'onDropdownOpen'?: (isOpen: boolean) => void;
|
|
93
93
|
'dropdownOpen'?: boolean;
|
|
94
|
+
'dropdownViewportRef'?: React.RefObject<HTMLElement>;
|
|
94
95
|
'ignoreOutsideClicksRefs'?: ReadonlyArray<React.RefObject<HTMLElement>>;
|
|
95
96
|
'clearButton'?: boolean;
|
|
96
97
|
'iconClear'?: IconComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/components/SelectCanary/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport {\n FieldPropForm,\n FieldPropSize,\n FieldPropStatus,\n FieldPropView,\n} from '##/components/FieldComponents';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\nexport type SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type SelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\nexport type SelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type SelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropRenderValue<ITEM, MULTIPLE> = MULTIPLE extends true\n ? (props: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => React.ReactNode | null\n : (props: { value: ITEM }) => React.ReactNode | null;\n\nexport type SelectPropOnCreate = (\n label: string,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectAllItem = {\n groupKey: string | number;\n __optionSelectAll: true;\n};\n\nexport type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\n\nexport type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {\n items: Array<SelectAllItem | ITEM>;\n};\n\nexport type SelectPropsInit<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n 'items': ITEM[];\n 'onChange': SelectPropOnChange<ITEM, MULTIPLE>;\n 'disabled'?: boolean;\n 'form'?: FieldPropForm;\n 'dropdownForm'?: 'default' | 'brick' | 'round';\n 'size'?: FieldPropSize;\n 'view'?: FieldPropView;\n 'placeholder'?: string;\n 'aria-Label'?: string;\n 'status'?: FieldPropStatus;\n 'isLoading'?: boolean;\n 'dropdownClassName'?: string;\n 'dropdownRef'?: React.Ref<HTMLDivElement>;\n 'renderItem'?: SelectPropRenderItem<ITEM>;\n 'renderValue'?: SelectPropRenderValue<ITEM, MULTIPLE>;\n 'onFocus'?: React.FocusEventHandler<HTMLInputElement>;\n 'onBlur'?: React.FocusEventHandler<HTMLInputElement>;\n 'onCreate'?: SelectPropOnCreate;\n 'inputRef'?: React.Ref<HTMLInputElement>;\n 'input'?: boolean;\n 'inputValue'?: string;\n 'inputDefaultValue'?: string;\n 'onInput'?: (value: string) => void;\n 'labelForCreate'?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n 'labelForEmptyItems'?: string;\n 'multiple'?: MULTIPLE;\n 'value'?: SelectPropValue<ITEM, MULTIPLE>;\n 'groups'?: GROUP[];\n 'getItemLabel'?: SelectPropGetItemLabel<ITEM>;\n 'getItemKey'?: SelectPropGetItemKey<ITEM>;\n 'getItemGroupKey'?: SelectPropGetItemGroupKey<ITEM>;\n 'getItemDisabled'?: SelectPropGetItemDisabled<ITEM>;\n 'getGroupLabel'?: SelectPropGetGroupLabel<GROUP>;\n 'getGroupKey'?: SelectPropGetGroupKey<GROUP>;\n 'virtualScroll'?: boolean;\n 'onScrollToBottom'?: (length: number) => void;\n 'onDropdownOpen'?: (isOpen: boolean) => void;\n 'dropdownOpen'?: boolean;\n 'ignoreOutsideClicksRefs'?: ReadonlyArray<React.RefObject<HTMLElement>>;\n 'clearButton'?: boolean;\n 'iconClear'?: IconComponent;\n 'selectAll'?: MULTIPLE extends true ? boolean : never;\n 'selectAllLabel'?: string;\n },\n HTMLDivElement\n>;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = SelectPropsInit<ITEM, GROUP, MULTIPLE> &\n (ITEM extends { label: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: SelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/components/SelectCanary/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport {\n FieldPropForm,\n FieldPropSize,\n FieldPropStatus,\n FieldPropView,\n} from '##/components/FieldComponents';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type RenderItemProps<ITEM> = {\n item: ITEM;\n active: boolean;\n hovered: boolean;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n ref: React.Ref<HTMLDivElement>;\n};\n\nexport type SelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type SelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\nexport type SelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type SelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type SelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type SelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type SelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;\nexport type SelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type SelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\nexport type SelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type SelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type SelectPropRenderValue<ITEM, MULTIPLE> = MULTIPLE extends true\n ? (props: {\n value: ITEM[];\n getRemove: (\n item: ITEM,\n ) => (e: React.SyntheticEvent<Element, Event>) => void;\n }) => React.ReactNode | null\n : (props: { value: ITEM }) => React.ReactNode | null;\n\nexport type SelectPropOnCreate = (\n label: string,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type SelectAllItem = {\n groupKey: string | number;\n __optionSelectAll: true;\n};\n\nexport type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\n\nexport type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {\n items: Array<SelectAllItem | ITEM>;\n};\n\nexport type SelectPropsInit<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n 'items': ITEM[];\n 'onChange': SelectPropOnChange<ITEM, MULTIPLE>;\n 'disabled'?: boolean;\n 'form'?: FieldPropForm;\n 'dropdownForm'?: 'default' | 'brick' | 'round';\n 'size'?: FieldPropSize;\n 'view'?: FieldPropView;\n 'placeholder'?: string;\n 'aria-Label'?: string;\n 'status'?: FieldPropStatus;\n 'isLoading'?: boolean;\n 'dropdownClassName'?: string;\n 'dropdownRef'?: React.Ref<HTMLDivElement>;\n 'renderItem'?: SelectPropRenderItem<ITEM>;\n 'renderValue'?: SelectPropRenderValue<ITEM, MULTIPLE>;\n 'onFocus'?: React.FocusEventHandler<HTMLInputElement>;\n 'onBlur'?: React.FocusEventHandler<HTMLInputElement>;\n 'onCreate'?: SelectPropOnCreate;\n 'inputRef'?: React.Ref<HTMLInputElement>;\n 'input'?: boolean;\n 'inputValue'?: string;\n 'inputDefaultValue'?: string;\n 'onInput'?: (value: string) => void;\n 'labelForCreate'?:\n | ((label: string | undefined) => React.ReactNode)\n | React.ReactNode;\n 'labelForEmptyItems'?: string;\n 'multiple'?: MULTIPLE;\n 'value'?: SelectPropValue<ITEM, MULTIPLE>;\n 'groups'?: GROUP[];\n 'getItemLabel'?: SelectPropGetItemLabel<ITEM>;\n 'getItemKey'?: SelectPropGetItemKey<ITEM>;\n 'getItemGroupKey'?: SelectPropGetItemGroupKey<ITEM>;\n 'getItemDisabled'?: SelectPropGetItemDisabled<ITEM>;\n 'getGroupLabel'?: SelectPropGetGroupLabel<GROUP>;\n 'getGroupKey'?: SelectPropGetGroupKey<GROUP>;\n 'virtualScroll'?: boolean;\n 'onScrollToBottom'?: (length: number) => void;\n 'onDropdownOpen'?: (isOpen: boolean) => void;\n 'dropdownOpen'?: boolean;\n 'dropdownViewportRef'?: React.RefObject<HTMLElement>;\n 'ignoreOutsideClicksRefs'?: ReadonlyArray<React.RefObject<HTMLElement>>;\n 'clearButton'?: boolean;\n 'iconClear'?: IconComponent;\n 'selectAll'?: MULTIPLE extends true ? boolean : never;\n 'selectAllLabel'?: string;\n },\n HTMLDivElement\n>;\n\nexport type SelectProps<\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = SelectPropsInit<ITEM, GROUP, MULTIPLE> &\n (ITEM extends { label: SelectItemDefault['label'] }\n ? {}\n : { getItemLabel: SelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: SelectItemDefault['id'] }\n ? {}\n : { getItemKey: SelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: SelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: SelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: SelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: SelectPropGetGroupKey<GROUP> });\n\nexport type SelectComponent = <\n ITEM = SelectItemDefault,\n GROUP = SelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: SelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n"],"mappings":""}
|
|
@@ -35,6 +35,7 @@ type Props<ITEM, GROUP> = PropsWithJsxAttributes<{
|
|
|
35
35
|
itemsRefs: React.RefObject<HTMLDivElement>[];
|
|
36
36
|
virtualScroll?: boolean;
|
|
37
37
|
onScrollToBottom?: (length: number) => void;
|
|
38
|
+
viewportRef?: React.RefObject<HTMLElement>;
|
|
38
39
|
}>;
|
|
39
40
|
type SelectDropdownComponent = <ITEM, GROUP>(props: Props<ITEM, GROUP>) => React.ReactNode | null;
|
|
40
41
|
export declare const SelectDropdown: SelectDropdownComponent;
|