@consta/uikit 5.25.1 → 5.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FlatSelect/index.d.ts +1 -0
- package/FlatSelect/index.js +1 -0
- package/__internal__/src/components/Banner/Banner.d.ts +20 -8
- package/__internal__/src/components/Banner/Banner.js +1 -1
- package/__internal__/src/components/Banner/Banner.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/ContextMenu/ContextMenu.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenu.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.d.ts +2 -2
- package/__internal__/src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.js.map +1 -1
- package/__internal__/src/components/ContextMenu/helpers.d.ts +2 -2
- package/__internal__/src/components/ContextMenu/types.d.ts +5 -5
- package/__internal__/src/components/ContextMenu/types.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldButton/FieldButton.d.ts +1 -1
- package/__internal__/src/components/FieldComponents/FieldButton/FieldButton.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldClearButton/FieldClearButton.d.ts +1 -0
- package/__internal__/src/components/FieldComponents/FieldClearButton/FieldClearButton.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldClearButton/FieldClearButton.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldWrapper/FieldWrapper.js +1 -1
- package/__internal__/src/components/FieldComponents/FieldWrapper/FieldWrapper.js.map +1 -1
- package/__internal__/src/components/FieldComponents/FieldWrapper/types.d.ts +1 -0
- package/__internal__/src/components/FieldComponents/FieldWrapper/types.js.map +1 -1
- package/__internal__/src/components/FlatSelect/FlatSelect.css +9 -0
- package/__internal__/src/components/FlatSelect/FlatSelect.d.ts +4 -0
- package/__internal__/src/components/FlatSelect/FlatSelect.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelect.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/FlatSelectControlLayout.d.ts +16 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/FlatSelectControlLayout.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/FlatSelectControlLayout.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectControlLayout/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/FlatSelectCreateButton.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/FlatSelectCreateButton.d.ts +19 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/FlatSelectCreateButton.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/FlatSelectCreateButton.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectCreateButton/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/FlatSelectFooter.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/FlatSelectFooter.d.ts +12 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/FlatSelectFooter.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/FlatSelectFooter.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectFooter/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/FlatSelectGroupLabel.d.ts +10 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/FlatSelectGroupLabel.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/FlatSelectGroupLabel.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectGroupLabel/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/FlatSelectItem.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/FlatSelectItem.d.ts +17 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/FlatSelectItem.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/FlatSelectItem.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItem/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/FlatSelectItemAll.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/FlatSelectItemAll.d.ts +17 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/FlatSelectItemAll.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/FlatSelectItemAll.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectItemAll/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/FlatSelectList.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/FlatSelectList.d.ts +53 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/FlatSelectList.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/FlatSelectList.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectList/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/FlatSelectLoader.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/FlatSelectLoader.d.ts +3 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/FlatSelectLoader.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/FlatSelectLoader.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectLoader/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/FlatSelectRenderItem.d.ts +24 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/FlatSelectRenderItem.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/FlatSelectRenderItem.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.css +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.d.ts +14 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.js.map +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/index.js +2 -0
- package/__internal__/src/components/FlatSelect/FlatSelectRoot/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/defaultProps.d.ts +22 -0
- package/__internal__/src/components/FlatSelect/defaultProps.js +2 -0
- package/__internal__/src/components/FlatSelect/defaultProps.js.map +1 -0
- package/__internal__/src/components/FlatSelect/index.d.ts +2 -0
- package/__internal__/src/components/FlatSelect/index.js +2 -0
- package/__internal__/src/components/FlatSelect/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/types.d.ts +133 -0
- package/__internal__/src/components/FlatSelect/types.js +2 -0
- package/__internal__/src/components/FlatSelect/types.js.map +1 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/helpers.d.ts +4 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/helpers.js +2 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/helpers.js.map +1 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/index.js +2 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/useFlatSelect.d.ts +52 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/useFlatSelect.js +2 -0
- package/__internal__/src/components/FlatSelect/useFlatSelect/useFlatSelect.js.map +1 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/index.d.ts +1 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/index.js +2 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/index.js.map +1 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/useRenderItem.d.ts +10 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/useRenderItem.js +2 -0
- package/__internal__/src/components/FlatSelect/useRenderItem/useRenderItem.js.map +1 -0
- package/__internal__/src/components/ListCanary/ListBox/ListBox.js +1 -1
- package/__internal__/src/components/ListCanary/ListBox/ListBox.js.map +1 -1
- package/__internal__/src/components/ListCanary/types.d.ts +1 -0
- package/__internal__/src/components/ListCanary/types.js.map +1 -1
- package/__internal__/src/components/Modal/Modal.css +1 -1
- package/__internal__/src/components/Modal/Modal.d.ts +8 -13
- package/__internal__/src/components/Modal/Modal.js +1 -1
- package/__internal__/src/components/Modal/Modal.js.map +1 -1
- package/__internal__/src/components/Modal/ModalHeader/ModalHeader.css +1 -0
- package/__internal__/src/components/Modal/ModalHeader/ModalHeader.d.ts +14 -0
- package/__internal__/src/components/Modal/ModalHeader/ModalHeader.js +2 -0
- package/__internal__/src/components/Modal/ModalHeader/ModalHeader.js.map +1 -0
- package/__internal__/src/components/Modal/ModalHeader/index.d.ts +1 -0
- package/__internal__/src/components/Modal/ModalHeader/index.js +2 -0
- package/__internal__/src/components/Modal/ModalHeader/index.js.map +1 -0
- package/__internal__/src/components/Modal/ModalLayout/ModalLayout.css +5 -0
- package/__internal__/src/components/Modal/ModalLayout/ModalLayout.d.ts +10 -0
- package/__internal__/src/components/Modal/ModalLayout/ModalLayout.js +2 -0
- package/__internal__/src/components/Modal/ModalLayout/ModalLayout.js.map +1 -0
- package/__internal__/src/components/Modal/ModalLayout/index.d.ts +1 -0
- package/__internal__/src/components/Modal/ModalLayout/index.js +2 -0
- package/__internal__/src/components/Modal/ModalLayout/index.js.map +1 -0
- package/__internal__/src/components/Modal/index.d.ts +3 -0
- package/__internal__/src/components/Modal/index.js +1 -1
- package/__internal__/src/components/Modal/index.js.map +1 -1
- package/__internal__/src/components/Modal/types.d.ts +23 -0
- package/__internal__/src/components/Modal/types.js +2 -0
- package/__internal__/src/components/Modal/types.js.map +1 -0
- package/__internal__/src/components/Modal/useModal.d.ts +20 -0
- package/__internal__/src/components/Modal/useModal.js +2 -0
- package/__internal__/src/components/Modal/useModal.js.map +1 -0
- package/__internal__/src/components/Pagination/PaginationArrow/PaginationArrow.d.ts +1 -0
- package/__internal__/src/components/Pagination/PaginationArrow/PaginationArrow.js +1 -1
- package/__internal__/src/components/Pagination/PaginationArrow/PaginationArrow.js.map +1 -1
- package/__internal__/src/components/Popover/Popover.d.ts +2 -2
- package/__internal__/src/components/Popover/Popover.js.map +1 -1
- package/__internal__/src/components/PortalWithTheme/PortalWithTheme.js +1 -1
- package/__internal__/src/components/PortalWithTheme/PortalWithTheme.js.map +1 -1
- package/__internal__/src/components/RadioGroup/RadioGroup.js +1 -1
- package/__internal__/src/components/RadioGroup/RadioGroup.js.map +1 -1
- package/__internal__/src/components/SelectCanary/helpers.d.ts +1 -1
- package/__internal__/src/components/Sidebar/Sidebar.css +1 -1
- package/__internal__/src/components/Sidebar/Sidebar.d.ts +1 -36
- package/__internal__/src/components/Sidebar/Sidebar.js +1 -1
- package/__internal__/src/components/Sidebar/Sidebar.js.map +1 -1
- package/__internal__/src/components/Sidebar/index.d.ts +1 -0
- package/__internal__/src/components/Sidebar/index.js +1 -1
- package/__internal__/src/components/Sidebar/index.js.map +1 -1
- package/__internal__/src/components/Sidebar/types.d.ts +47 -0
- package/__internal__/src/components/Sidebar/types.js +2 -0
- package/__internal__/src/components/Sidebar/types.js.map +1 -0
- package/__internal__/src/components/Sidebar/useAnimateTimeout.d.ts +2 -0
- package/__internal__/src/components/Sidebar/useAnimateTimeout.js +2 -0
- package/__internal__/src/components/Sidebar/useAnimateTimeout.js.map +1 -0
- package/__internal__/src/components/ThemeToggler/helpers.d.ts +1 -1
- package/__internal__/src/components/ThemeToggler/types.d.ts +1 -1
- package/__internal__/src/components/ThemeToggler/types.js.map +1 -1
- package/__internal__/src/components/Tooltip/types.d.ts +1 -1
- package/__internal__/src/components/Tooltip/types.js.map +1 -1
- package/__internal__/src/components/TooltipDeprecated/TooltipDeprecated.d.ts +1 -1
- package/__internal__/src/components/TooltipDeprecated/TooltipDeprecated.js.map +1 -1
- package/__internal__/src/hooks/useComponentSize/useComponentSize.d.ts +1 -1
- package/__internal__/src/hooks/useComponentSize/useComponentSize.js +1 -1
- package/__internal__/src/hooks/useComponentSize/useComponentSize.js.map +1 -1
- package/__internal__/src/mixs/MixFlex/MixFlex.d.ts +2 -2
- package/__internal__/src/mixs/MixFlex/MixFlex.js.map +1 -1
- package/__internal__/src/mixs/MixSpace/MixSpace.d.ts +1 -1
- package/__internal__/src/mixs/MixSpace/MixSpace.js +1 -1
- package/__internal__/src/mixs/MixSpace/MixSpace.js.map +1 -1
- package/__internal__/src/utils/state/useClickOutsideAtom/index.d.ts +1 -0
- package/__internal__/src/utils/state/useClickOutsideAtom/index.js +2 -0
- package/__internal__/src/utils/state/useClickOutsideAtom/index.js.map +1 -0
- package/__internal__/src/utils/state/useClickOutsideAtom/useClickOutside.d.ts +9 -0
- package/__internal__/src/utils/state/useClickOutsideAtom/useClickOutside.js +2 -0
- package/__internal__/src/utils/state/useClickOutsideAtom/useClickOutside.js.map +1 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/getElementSize.d.ts +4 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/getElementSize.js +2 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/getElementSize.js.map +1 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/index.d.ts +3 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/index.js +2 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/index.js.map +1 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/types.d.ts +4 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/types.js +2 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/types.js.map +1 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/useComponentSize.d.ts +2 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/useComponentSize.js +2 -0
- package/__internal__/src/utils/state/useComponentSizeAtom/useComponentSize.js.map +1 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/index.d.ts +1 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/index.js +2 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/index.js.map +1 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/useElementAtomEventListener.d.ts +2 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/useElementAtomEventListener.js +2 -0
- package/__internal__/src/utils/state/useElementAtomEventListener/useElementAtomEventListener.js.map +1 -0
- package/__internal__/src/utils/state/useKeysAtom/index.d.ts +1 -0
- package/__internal__/src/utils/state/useKeysAtom/index.js +2 -0
- package/__internal__/src/utils/state/useKeysAtom/index.js.map +1 -0
- package/__internal__/src/utils/state/useKeysAtom/useKeysAtom.d.ts +14 -0
- package/__internal__/src/utils/state/useKeysAtom/useKeysAtom.js +2 -0
- package/__internal__/src/utils/state/useKeysAtom/useKeysAtom.js.map +1 -0
- package/__internal__/src/utils/state/useRefAtom/useRefAtom.d.ts +1 -1
- package/__internal__/src/utils/state/useRefAtom/useRefAtom.js.map +1 -1
- package/__internal__/src/utils/state/useResizeObservedAtom/index.d.ts +1 -0
- package/__internal__/src/utils/state/useResizeObservedAtom/index.js +2 -0
- package/__internal__/src/utils/state/useResizeObservedAtom/index.js.map +1 -0
- package/__internal__/src/utils/state/useResizeObservedAtom/useResizeObservedAtom.d.ts +2 -0
- package/__internal__/src/utils/state/useResizeObservedAtom/useResizeObservedAtom.js +2 -0
- package/__internal__/src/utils/state/useResizeObservedAtom/useResizeObservedAtom.js.map +1 -0
- package/__internal__/src/utils/state/withCtx/withCtx.js +1 -1
- package/__internal__/src/utils/state/withCtx/withCtx.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatSelectList.js","names":["useAtom","React","Fragment","memo","useMemo","ListBox","ListItem","ListLoader","forkRef","useForkRef","useVirtualScroll","cn","fabricIndex","FlatSelectCreateButton","FlatSelectGroupLabel","FlatSelectItemAll","FlatSelectLoader","FlatSelectRenderItem","isNotOptionForCreate","isOptionForCreate","isOptionForSelectAll","FlatSelectListForm","defaultFlatSelectListPropForm","cnFlatSelectList","getLengthElements","elements","length","index","element","items","isVisible","slice","FlatSelectList","props","size","getOptionActions","listRef","labelForCreate","className","labelForNotFound","labelForEmptyItems","hasItemsAtom","form","openAtom","renderItem","visibleItemsAtom","isLoading","getGroupLabel","notFound","itemsRefs","virtualScroll","onScrollToBottom","highlightedIndexAtom","valueAtom","getItemKeyAtom","onChange","onChangeAll","inputValueAtom","groupsCounterAtom","dropdownZIndexAtom","selectAllLabel","view","disabledAtom","otherProps","visibleItems","hasItems","getItemKey","indent","isListShowed","filter","group","Array","isArray","lengthForVirtualScroll","isActive","spaceTop","sliceHookProp","listRefs","scrollElementRef","scrollContainerRef","getIndex","getVirtualIndex","marginTop","map","key","item","virtualIndex"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectList/FlatSelectList.tsx"],"sourcesContent":["import './FlatSelectList.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 { ListBox, ListItem, ListLoader } from '##/components/ListCanary';\nimport { PopoverPropOffset } from '##/components/Popover';\nimport { forkRef, useForkRef } from '##/hooks/useForkRef';\nimport { useVirtualScroll } from '##/hooks/useVirtualScroll';\nimport { cn } from '##/utils/bem';\nimport { fabricIndex } from '##/utils/fabricIndex';\nimport { SelectAllItem } from '##/utils/getGroups';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport { FlatSelectCreateButton } from '../FlatSelectCreateButton';\nimport { FlatSelectGroupLabel } from '../FlatSelectGroupLabel/FlatSelectGroupLabel';\nimport { FlatSelectItemAll } from '../FlatSelectItemAll/FlatSelectItemAll';\nimport { FlatSelectLoader } from '../FlatSelectLoader/FlatSelectLoader';\n// import { SelectPopover } from '../SelectPopover';\nimport { FlatSelectRenderItem } from '../FlatSelectRenderItem';\nimport { CountedGroup } from '../types';\nimport {\n GetOptionPropsResult,\n isNotOptionForCreate,\n isOptionForCreate,\n isOptionForSelectAll,\n OptionForCreate,\n OptionProps,\n} from '../useFlatSelect';\n\nexport const FlatSelectListForm = ['default', 'brick', 'round'] as const;\nexport type FlatSelectListPropForm = typeof FlatSelectListForm[number];\nexport const defaultFlatSelectListPropForm = FlatSelectListForm[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 listRef: React.Ref<HTMLDivElement>;\n getOptionActions(props: OptionProps<ITEM>): GetOptionPropsResult;\n // form: FlatSelectListPropForm;\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 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 view: 'default' | 'clear';\n form: 'default' | 'brick' | 'round';\n disabledAtom: AtomMut<boolean>;\n}>;\n\ntype FlatSelectListComponent = <ITEM, GROUP>(\n props: Props<ITEM, GROUP>,\n) => React.ReactNode | null;\n\nconst cnFlatSelectList = cn('FlatSelectList');\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 FlatSelectList: FlatSelectListComponent = memo((props) => {\n const {\n size,\n getOptionActions,\n listRef,\n labelForCreate,\n className,\n labelForNotFound,\n labelForEmptyItems,\n hasItemsAtom,\n form,\n openAtom,\n renderItem,\n visibleItemsAtom,\n isLoading,\n getGroupLabel,\n notFound,\n itemsRefs,\n virtualScroll,\n onScrollToBottom,\n highlightedIndexAtom,\n valueAtom,\n getItemKeyAtom,\n onChange,\n onChangeAll,\n inputValueAtom,\n groupsCounterAtom,\n dropdownZIndexAtom,\n selectAllLabel,\n view,\n disabledAtom,\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,\n onScrollToBottom,\n });\n\n const scrollContainerRef = useForkRef([scrollElementRef, listRef]);\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 <ListBox\n {...otherProps}\n size={size}\n ref={scrollContainerRef}\n className={cnFlatSelectList({ view }, [className])}\n tabIndex={-1}\n >\n {isLoading && !isListShowed && <FlatSelectLoader />}\n <div\n className={cnFlatSelectList('List')}\n key={cnFlatSelectList('List')}\n style={{ marginTop: spaceTop }}\n >\n {visibleItems.map((group) => {\n if (isOptionForCreate(group)) {\n const index = getIndex();\n return (\n <FlatSelectCreateButton\n size={size}\n key={cnFlatSelectList('List', { key: 'CreateButton' })}\n labelForCreate={labelForCreate}\n indent={indent}\n ref={itemsRefs[index]}\n highlightedIndexAtom={highlightedIndexAtom}\n inputValueAtom={inputValueAtom}\n disabledAtom={disabledAtom}\n index={index}\n {...getOptionActions({\n index,\n item: group,\n })}\n />\n );\n }\n\n const virtualIndex = visibleItems.length > 1 ? getVirtualIndex() : 0;\n\n return (\n <Fragment key={group.key}>\n {group.group &&\n getGroupLabel &&\n isVisible(slice, virtualIndex) && (\n <FlatSelectGroupLabel\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 <FlatSelectItemAll\n label={selectAllLabel}\n groupId={group.key}\n highlightedIndexAtom={highlightedIndexAtom}\n groupsCounterAtom={groupsCounterAtom}\n key={cnFlatSelectList('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 disabledAtom={disabledAtom}\n />\n );\n }\n } else {\n const virtualIndex = getVirtualIndex();\n const index = getIndex();\n if (isVisible(slice, virtualIndex)) {\n return (\n <FlatSelectRenderItem\n key={cnFlatSelectList('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 size={size} label={labelForEmptyItems} innerOffset={indent}>\n {labelForEmptyItems}\n </ListItem>\n )}\n </ListBox>\n );\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FlatSelectList';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/FlatSelect/FlatSelectList/index.ts"],"sourcesContent":["export * from './FlatSelectList';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.FlatSelectLoader{--loader-height:0;cursor:wait;height:100%;min-height:calc(var(--flat-select-control-height)*2);position:relative}.FlatSelectLoader-Loader.Loader{--loader-color:var(--color-control-typo-disable);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./FlatSelectLoader.css";import React from"react";import{Loader}from"../../Loader";import{cn}from"../../../utils/bem";export var cnFlatSelectLoader=cn("FlatSelectLoader");export var FlatSelectLoader=function(){return React.createElement("div",{className:cnFlatSelectLoader()},React.createElement(Loader,{className:cnFlatSelectLoader("Loader"),size:"s"}))};
|
|
2
|
+
//# sourceMappingURL=FlatSelectLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatSelectLoader.js","names":["React","Loader","cn","cnFlatSelectLoader","FlatSelectLoader"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectLoader/FlatSelectLoader.tsx"],"sourcesContent":["import './FlatSelectLoader.css';\n\nimport React from 'react';\n\nimport { Loader } from '##/components/Loader';\nimport { cn } from '##/utils/bem';\n\nexport const cnFlatSelectLoader = cn('FlatSelectLoader');\n\nexport const FlatSelectLoader = () => {\n return (\n <div className={cnFlatSelectLoader()}>\n <Loader className={cnFlatSelectLoader('Loader')} size=\"s\" />\n </div>\n );\n};\n"],"mappings":"AAAA,+BAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,MAAT,oBACA,OAASC,EAAT,0BAEA,MAAO,IAAMC,mBAAkB,CAAGD,EAAE,CAAC,kBAAD,CAA7B,CAEP,MAAO,IAAME,iBAAgB,CAAG,UAAM,CACpC,MACE,4BAAK,SAAS,CAAED,kBAAkB,EAAlC,EACE,oBAAC,MAAD,EAAQ,SAAS,CAAEA,kBAAkB,CAAC,QAAD,CAArC,CAAiD,IAAI,CAAC,GAAtD,EADF,CAIH,CANM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FlatSelectLoader';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/FlatSelect/FlatSelectLoader/index.ts"],"sourcesContent":["export * from './FlatSelectLoader';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AtomMut } from '@reatom/framework';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
type RenderItemProps<ITEM> = {
|
|
4
|
+
item: ITEM;
|
|
5
|
+
active: boolean;
|
|
6
|
+
hovered: boolean;
|
|
7
|
+
onClick: (e: React.MouseEvent) => void;
|
|
8
|
+
onMouseEnter: (e: React.MouseEvent) => void;
|
|
9
|
+
ref: React.Ref<HTMLDivElement>;
|
|
10
|
+
};
|
|
11
|
+
type SelectRenderItemProps<ITEM> = {
|
|
12
|
+
item: ITEM;
|
|
13
|
+
rootRef: React.Ref<HTMLDivElement>;
|
|
14
|
+
onClick: (e: React.MouseEvent) => void;
|
|
15
|
+
onMouseEnter: (e: React.MouseEvent) => void;
|
|
16
|
+
renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;
|
|
17
|
+
highlightedIndexAtom: AtomMut<number>;
|
|
18
|
+
index: number;
|
|
19
|
+
valueAtom: AtomMut<ITEM[]>;
|
|
20
|
+
getItemKeyAtom: AtomMut<(item: ITEM) => string | number>;
|
|
21
|
+
};
|
|
22
|
+
type SelectRenderItemComponent = <ITEM>(props: SelectRenderItemProps<ITEM>) => React.ReactNode;
|
|
23
|
+
export declare const FlatSelectRenderItem: SelectRenderItemComponent;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useAtom}from"@reatom/npm-react";import React from"react";export var FlatSelectRenderItem=function(a){var b=a.renderItem,c=a.item,d=a.rootRef,e=a.onClick,f=a.onMouseEnter,g=a.highlightedIndexAtom,h=a.index,i=a.valueAtom,j=a.getItemKeyAtom,k=useAtom(function(a){var b=a.spy(i),d=a.get(j);return!!b.find(function(a){return d(a)===d(c)})}),l=_slicedToArray(k,1),m=l[0],n=useAtom(function(a){var b=a.spy(g);return h===b}),o=_slicedToArray(n,1),p=o[0];return React.createElement(React.Fragment,null,b({ref:d,onClick:e,onMouseEnter:f,item:c,active:m,hovered:p}))};
|
|
2
|
+
//# sourceMappingURL=FlatSelectRenderItem.js.map
|
package/__internal__/src/components/FlatSelect/FlatSelectRenderItem/FlatSelectRenderItem.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatSelectRenderItem.js","names":["useAtom","React","FlatSelectRenderItem","props","renderItem","item","rootRef","onClick","onMouseEnter","highlightedIndexAtom","index","valueAtom","getItemKeyAtom","ctx","value","spy","getItemKey","get","find","valueItem","active","highlightedIndex","hovered","ref"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRenderItem/FlatSelectRenderItem.tsx"],"sourcesContent":["import { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React from 'react';\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 SelectRenderItemProps<ITEM> = {\n item: ITEM;\n rootRef: React.Ref<HTMLDivElement>;\n onClick: (e: React.MouseEvent) => void;\n onMouseEnter: (e: React.MouseEvent) => void;\n renderItem: (props: RenderItemProps<ITEM>) => React.ReactNode | null;\n highlightedIndexAtom: AtomMut<number>;\n index: number;\n valueAtom: AtomMut<ITEM[]>;\n getItemKeyAtom: AtomMut<(item: ITEM) => string | number>;\n};\n\ntype SelectRenderItemComponent = <ITEM>(\n props: SelectRenderItemProps<ITEM>,\n) => React.ReactNode;\n\nexport const FlatSelectRenderItem: SelectRenderItemComponent = (props) => {\n const {\n renderItem,\n item,\n rootRef,\n onClick,\n onMouseEnter,\n highlightedIndexAtom,\n index,\n valueAtom,\n getItemKeyAtom,\n } = props;\n\n const [active] = useAtom((ctx) => {\n const value = ctx.spy(valueAtom);\n\n const getItemKey = ctx.get(getItemKeyAtom);\n\n return !!value.find(\n (valueItem) => getItemKey(valueItem) === getItemKey(item),\n );\n });\n\n const [hovered] = useAtom((ctx) => {\n const highlightedIndex = ctx.spy(highlightedIndexAtom);\n return index === highlightedIndex;\n });\n\n return (\n <>\n {renderItem({\n ref: rootRef,\n onClick,\n onMouseEnter,\n item,\n active,\n hovered,\n })}\n </>\n );\n};\n"],"mappings":"iEACA,OAASA,OAAT,KAAwB,mBAAxB,CACA,MAAOC,MAAP,KAAkB,OAAlB,CA2BA,MAAO,IAAMC,qBAA+C,CAAG,SAACC,CAAD,CAAW,IAEtEC,EAFsE,CAWpED,CAXoE,CAEtEC,UAFsE,CAGtEC,CAHsE,CAWpEF,CAXoE,CAGtEE,IAHsE,CAItEC,CAJsE,CAWpEH,CAXoE,CAItEG,OAJsE,CAKtEC,CALsE,CAWpEJ,CAXoE,CAKtEI,OALsE,CAMtEC,CANsE,CAWpEL,CAXoE,CAMtEK,YANsE,CAOtEC,CAPsE,CAWpEN,CAXoE,CAOtEM,oBAPsE,CAQtEC,CARsE,CAWpEP,CAXoE,CAQtEO,KARsE,CAStEC,CATsE,CAWpER,CAXoE,CAStEQ,SATsE,CAUtEC,CAVsE,CAWpET,CAXoE,CAUtES,cAVsE,GAavDZ,OAAO,CAAC,SAACa,CAAD,CAAS,IAC1BC,EAAK,CAAGD,CAAG,CAACE,GAAJ,CAAQJ,CAAR,CADkB,CAG1BK,CAAU,CAAGH,CAAG,CAACI,GAAJ,CAAQL,CAAR,CAHa,CAKhC,MAAO,CAAC,CAACE,CAAK,CAACI,IAAN,CACP,SAACC,CAAD,QAAeH,EAAU,CAACG,CAAD,CAAV,GAA0BH,CAAU,CAACX,CAAD,CAAnD,CADO,CAGV,CARuB,CAbgD,uBAajEe,CAbiE,QAuBtDpB,OAAO,CAAC,SAACa,CAAD,CAAS,CACjC,GAAMQ,EAAgB,CAAGR,CAAG,CAACE,GAAJ,CAAQN,CAAR,CAAzB,CACA,MAAOC,EAAK,GAAKW,CAClB,CAHwB,CAvB+C,uBAuBjEC,CAvBiE,MA4BxE,MACE,yCACGlB,CAAU,CAAC,CACVmB,GAAG,CAAEjB,CADK,CAEVC,OAAO,CAAPA,CAFU,CAGVC,YAAY,CAAZA,CAHU,CAIVH,IAAI,CAAJA,CAJU,CAKVe,MAAM,CAANA,CALU,CAMVE,OAAO,CAAPA,CANU,CAAD,CADb,CAWH,CAxCM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FlatSelectRenderItem';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRenderItem/index.ts"],"sourcesContent":["export * from './FlatSelectRenderItem';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.FlatSelectRoot_withAnchor{background:var(--color-bg-default);box-shadow:var(--shadow-layer);min-width:280px}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import './FlatSelectRoot.css';
|
|
2
|
+
import { AtomMut } from '@reatom/framework';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Direction } from '../../Popover';
|
|
5
|
+
import { PropsWithHTMLAttributesAndRef } from '../../../utils/types/PropsWithHTMLAttributes';
|
|
6
|
+
export type FlatSelectRootProps = PropsWithHTMLAttributesAndRef<{
|
|
7
|
+
anchorRef?: React.RefObject<HTMLElement>;
|
|
8
|
+
openAtom: AtomMut<boolean>;
|
|
9
|
+
direction?: Direction;
|
|
10
|
+
spareDirection?: Direction;
|
|
11
|
+
possibleDirections?: Direction[];
|
|
12
|
+
}, HTMLDivElement>;
|
|
13
|
+
export declare const cnFlatSelectRoot: import("@bem-react/classname").ClassNameFormatter;
|
|
14
|
+
export declare const FlatSelectRoot: React.FC<FlatSelectRootProps>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["className","anchorRef","openAtom","direction","spareDirection","possibleDirections"];import"./FlatSelectRoot.css";import{useAtom}from"@reatom/npm-react";import React,{forwardRef,useRef}from"react";import{Transition}from"react-transition-group";import{Popover}from"../../Popover";import{useForkRef}from"../../../hooks/useForkRef";import{animateTimeout,cnMixPopoverAnimate}from"../../../mixs/MixPopoverAnimate";import{cn}from"../../../utils/bem";export var cnFlatSelectRoot=cn("FlatSelectRoot");export var FlatSelectRoot=forwardRef(function(a,b){var c=a.className,d=a.anchorRef,e=a.openAtom,f=a.direction,g=void 0===f?"downStartLeft":f,h=a.spareDirection,i=void 0===h?"downStartLeft":h,j=a.possibleDirections,k=void 0===j?["downStartLeft","downStartRight","upStartLeft","upStartRight","leftStartDown","leftStartUp"]:j,l=_objectWithoutProperties(a,_excluded),m=useRef(null),n=useForkRef([m,b]),o=!!d,p=useAtom(e),q=_slicedToArray(p,1),r=q[0];return o?React.createElement(Transition,{in:r,unmountOnExit:!0,timeout:animateTimeout,nodeRef:m},function(a){return React.createElement(Popover,Object.assign({},l,{className:cnFlatSelectRoot({withAnchor:o},[c,cnMixPopoverAnimate({animate:a})]),ref:n,anchorRef:d,equalAnchorWidth:!0,offset:"2xs",direction:g,spareDirection:i,possibleDirections:k}))}):React.createElement("div",Object.assign({},l,{className:cnFlatSelectRoot(null,[c]),ref:b}))});
|
|
2
|
+
//# sourceMappingURL=FlatSelectRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlatSelectRoot.js","names":["useAtom","React","forwardRef","useRef","Transition","Popover","useForkRef","animateTimeout","cnMixPopoverAnimate","cn","cnFlatSelectRoot","FlatSelectRoot","props","ref","className","anchorRef","openAtom","direction","spareDirection","possibleDirections","otherProps","contentRef","contentForkedRef","withAnchor","open","animate"],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRoot/FlatSelectRoot.tsx"],"sourcesContent":["import './FlatSelectRoot.css';\n\nimport { AtomMut } from '@reatom/framework';\nimport { useAtom } from '@reatom/npm-react';\nimport React, { forwardRef, useRef } from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Direction, Popover } from '##/components/Popover';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { animateTimeout, cnMixPopoverAnimate } from '##/mixs/MixPopoverAnimate';\nimport { cn } from '##/utils/bem';\nimport { PropsWithHTMLAttributesAndRef } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport type FlatSelectRootProps = PropsWithHTMLAttributesAndRef<\n {\n anchorRef?: React.RefObject<HTMLElement>;\n openAtom: AtomMut<boolean>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n },\n HTMLDivElement\n>;\n\nexport const cnFlatSelectRoot = cn('FlatSelectRoot');\n\nexport const FlatSelectRoot: React.FC<FlatSelectRootProps> = forwardRef(\n (props, ref) => {\n const {\n className,\n anchorRef,\n openAtom,\n direction = 'downStartLeft',\n spareDirection = 'downStartLeft',\n possibleDirections = [\n 'downStartLeft',\n 'downStartRight',\n 'upStartLeft',\n 'upStartRight',\n 'leftStartDown',\n 'leftStartUp',\n ],\n ...otherProps\n } = props;\n const contentRef = useRef(null);\n const contentForkedRef = useForkRef([contentRef, ref]);\n const withAnchor = !!anchorRef;\n const [open] = useAtom(openAtom);\n\n if (withAnchor) {\n return (\n <Transition\n in={open}\n unmountOnExit\n timeout={animateTimeout}\n nodeRef={contentRef}\n >\n {(animate) => (\n <Popover\n {...otherProps}\n className={cnFlatSelectRoot({ withAnchor }, [\n className,\n cnMixPopoverAnimate({ animate }),\n ])}\n ref={contentForkedRef}\n anchorRef={anchorRef}\n equalAnchorWidth\n offset=\"2xs\"\n direction={direction}\n spareDirection={spareDirection}\n possibleDirections={possibleDirections}\n />\n )}\n </Transition>\n );\n }\n\n return (\n <div\n {...otherProps}\n className={cnFlatSelectRoot(null, [className])}\n ref={ref}\n />\n );\n },\n);\n"],"mappings":"2PAAA,6BAGA,OAASA,OAAT,KAAwB,mBAAxB,CACA,MAAOC,MAAP,EAAgBC,UAAhB,CAA4BC,MAA5B,KAA0C,OAA1C,CACA,OAASC,UAAT,KAA2B,wBAA3B,CAEA,OAAoBC,OAApB,qBACA,OAASC,UAAT,iCACA,OAASC,cAAT,CAAyBC,mBAAzB,uCACA,OAASC,EAAT,0BAcA,MAAO,IAAMC,iBAAgB,CAAGD,EAAE,CAAC,gBAAD,CAA3B,CAEP,MAAO,IAAME,eAA6C,CAAGT,UAAU,CACrE,SAACU,CAAD,CAAQC,CAAR,CAAgB,IAEZC,EAFY,CAgBVF,CAhBU,CAEZE,SAFY,CAGZC,CAHY,CAgBVH,CAhBU,CAGZG,SAHY,CAIZC,CAJY,CAgBVJ,CAhBU,CAIZI,QAJY,GAgBVJ,CAhBU,CAKZK,SALY,CAKZA,CALY,YAKA,eALA,KAgBVL,CAhBU,CAMZM,cANY,CAMZA,CANY,YAMK,eANL,KAgBVN,CAhBU,CAOZO,kBAPY,CAOZA,CAPY,YAOS,CACnB,eADmB,CAEnB,gBAFmB,CAGnB,aAHmB,CAInB,cAJmB,CAKnB,eALmB,CAMnB,aANmB,CAPT,GAeTC,CAfS,0BAgBVR,CAhBU,YAiBRS,CAAU,CAAGlB,MAAM,CAAC,IAAD,CAjBX,CAkBRmB,CAAgB,CAAGhB,UAAU,CAAC,CAACe,CAAD,CAAaR,CAAb,CAAD,CAlBrB,CAmBRU,CAAU,CAAG,CAAC,CAACR,CAnBP,GAoBCf,OAAO,CAACgB,CAAD,CApBR,uBAoBPQ,CApBO,YAsBVD,EAtBU,CAwBV,oBAAC,UAAD,EACE,GAAIC,CADN,CAEE,aAAa,GAFf,CAGE,OAAO,CAAEjB,cAHX,CAIE,OAAO,CAAEc,CAJX,EAMG,SAACI,CAAD,QACC,qBAAC,OAAD,kBACML,CADN,EAEE,SAAS,CAAEV,gBAAgB,CAAC,CAAEa,UAAU,CAAVA,CAAF,CAAD,CAAiB,CAC1CT,CAD0C,CAE1CN,mBAAmB,CAAC,CAAEiB,OAAO,CAAPA,CAAF,CAAD,CAFuB,CAAjB,CAF7B,CAME,GAAG,CAAEH,CANP,CAOE,SAAS,CAAEP,CAPb,CAQE,gBAAgB,GARlB,CASE,MAAM,CAAC,KATT,CAUE,SAAS,CAAEE,CAVb,CAWE,cAAc,CAAEC,CAXlB,CAYE,kBAAkB,CAAEC,CAZtB,GADD,CANH,CAxBU,CAmDZ,2CACMC,CADN,EAEE,SAAS,CAAEV,gBAAgB,CAAC,IAAD,CAAO,CAACI,CAAD,CAAP,CAF7B,CAGE,GAAG,CAAED,CAHP,GAMH,CA1DoE,CAAhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './FlatSelectRoot';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/FlatSelect/FlatSelectRoot/index.ts"],"sourcesContent":["export * from './FlatSelectRoot';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WithDefaultReturn } from '@consta/uikit/__internal__/src/utils/object';
|
|
2
|
+
import { FlatSelectGroupDefault, FlatSelectItemDefault, FlatSelectPropsInit } from '.';
|
|
3
|
+
export declare const defaultLabelForEmptyItems = "\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u0443\u0441\u0442";
|
|
4
|
+
export declare const defaultSelectAllLabel = "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435";
|
|
5
|
+
declare const defaultProps: {
|
|
6
|
+
readonly form: "default";
|
|
7
|
+
readonly getItemKey: (item: FlatSelectItemDefault) => string | number;
|
|
8
|
+
readonly getGroupKey: (group: FlatSelectGroupDefault) => string | number;
|
|
9
|
+
readonly getGroupLabel: (group: FlatSelectGroupDefault) => string;
|
|
10
|
+
readonly getItemDisabled: (item: FlatSelectItemDefault) => boolean | undefined;
|
|
11
|
+
readonly getItemGroupKey: (item: FlatSelectItemDefault) => string | number | undefined;
|
|
12
|
+
readonly getItemLabel: (item: FlatSelectItemDefault) => string;
|
|
13
|
+
readonly labelForEmptyItems: "Список пуст";
|
|
14
|
+
readonly selectAllLabel: "Выбрать все";
|
|
15
|
+
readonly view: "default";
|
|
16
|
+
readonly size: "m";
|
|
17
|
+
};
|
|
18
|
+
export declare const withDefault: <ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false>(props: FlatSelectPropsInit<ITEM, GROUP, MULTIPLE>) => PropsWithDefault<ITEM, GROUP, MULTIPLE>;
|
|
19
|
+
export type PropsWithDefaultMultiple = WithDefaultReturn<FlatSelectPropsInit<FlatSelectItemDefault, FlatSelectGroupDefault, true>, keyof typeof defaultProps>;
|
|
20
|
+
export type PropsWithDefaultSingle = WithDefaultReturn<FlatSelectPropsInit<FlatSelectItemDefault, FlatSelectGroupDefault, false>, keyof typeof defaultProps>;
|
|
21
|
+
export type PropsWithDefault<ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false> = WithDefaultReturn<FlatSelectPropsInit<ITEM, GROUP, MULTIPLE>, keyof typeof defaultProps>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{objectWithDefault}from"@consta/uikit/__internal__/src/utils/object";export var defaultLabelForEmptyItems="\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u0443\u0441\u0442";export var defaultSelectAllLabel="\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435";var getItemKey=function(a){return a.id},getGroupKey=function(a){return a.id},getGroupLabel=function(a){return a.label},getItemDisabled=function(a){return a.disabled},getItemGroupKey=function(a){return a.groupId},getItemLabel=function(a){return a.label},defaultProps={form:"default",getItemKey:getItemKey,getGroupKey:getGroupKey,getGroupLabel:getGroupLabel,getItemDisabled:getItemDisabled,getItemGroupKey:getItemGroupKey,getItemLabel:getItemLabel,labelForEmptyItems:"\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u0443\u0441\u0442",selectAllLabel:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",view:"default",size:"m"};export var withDefault=function(a){return objectWithDefault(defaultProps,a)};
|
|
2
|
+
//# sourceMappingURL=defaultProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultProps.js","names":["objectWithDefault","defaultLabelForEmptyItems","defaultSelectAllLabel","getItemKey","item","id","getGroupKey","group","getGroupLabel","label","getItemDisabled","disabled","getItemGroupKey","groupId","getItemLabel","defaultProps","form","labelForEmptyItems","selectAllLabel","view","size","withDefault","props"],"sources":["../../../../../src/components/FlatSelect/defaultProps.ts"],"sourcesContent":["import {\n objectWithDefault,\n WithDefaultReturn,\n} from '@consta/uikit/__internal__/src/utils/object';\n\nimport {\n FlatSelectGroupDefault,\n FlatSelectItemDefault,\n FlatSelectPropsInit,\n} from '.';\n\n// import { objectWithDefault, WithDefaultReturn } from '##/utils/object';\n\n// import { FlatSelectGroupDefault, FlatSelectItemDefault, FlatSelectPropsInit } from '.';\n\nexport const defaultLabelForEmptyItems = 'Список пуст';\nexport const defaultSelectAllLabel = 'Выбрать все';\n\nconst getItemKey = (item: FlatSelectItemDefault) => item.id;\nconst getGroupKey = (group: FlatSelectGroupDefault) => group.id;\nconst getGroupLabel = (group: FlatSelectGroupDefault) => group.label;\nconst getItemDisabled = (item: FlatSelectItemDefault) => item.disabled;\nconst getItemGroupKey = (item: FlatSelectItemDefault) => item.groupId;\nconst getItemLabel = (item: FlatSelectItemDefault) => item.label;\n\nconst defaultProps = {\n form: 'default',\n getItemKey,\n getGroupKey,\n getGroupLabel,\n getItemDisabled,\n getItemGroupKey,\n getItemLabel,\n labelForEmptyItems: defaultLabelForEmptyItems,\n selectAllLabel: defaultSelectAllLabel,\n view: 'default',\n size: 'm',\n} as const;\n\nexport const withDefault = <\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: FlatSelectPropsInit<ITEM, GROUP, MULTIPLE>,\n): PropsWithDefault<ITEM, GROUP, MULTIPLE> =>\n objectWithDefault(defaultProps as any, props);\n\nexport type PropsWithDefaultMultiple = WithDefaultReturn<\n FlatSelectPropsInit<FlatSelectItemDefault, FlatSelectGroupDefault, true>,\n keyof typeof defaultProps\n>;\n\nexport type PropsWithDefaultSingle = WithDefaultReturn<\n FlatSelectPropsInit<FlatSelectItemDefault, FlatSelectGroupDefault, false>,\n keyof typeof defaultProps\n>;\n\nexport type PropsWithDefault<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = WithDefaultReturn<\n FlatSelectPropsInit<ITEM, GROUP, MULTIPLE>,\n keyof typeof defaultProps\n>;\n"],"mappings":"AAAA,OACEA,iBADF,KAGO,6CAHP,CAeA,MAAO,IAAMC,0BAAyB,CAAG,+DAAlC,CACP,MAAO,IAAMC,sBAAqB,CAAG,+DAA9B,C,GAEDC,WAAU,CAAG,SAACC,CAAD,QAAiCA,EAAI,CAACC,EAAtC,C,CACbC,WAAW,CAAG,SAACC,CAAD,QAAmCA,EAAK,CAACF,EAAzC,C,CACdG,aAAa,CAAG,SAACD,CAAD,QAAmCA,EAAK,CAACE,KAAzC,C,CAChBC,eAAe,CAAG,SAACN,CAAD,QAAiCA,EAAI,CAACO,QAAtC,C,CAClBC,eAAe,CAAG,SAACR,CAAD,QAAiCA,EAAI,CAACS,OAAtC,C,CAClBC,YAAY,CAAG,SAACV,CAAD,QAAiCA,EAAI,CAACK,KAAtC,C,CAEfM,YAAY,CAAG,CACnBC,IAAI,CAAE,SADa,CAEnBb,UAAU,CAAVA,UAFmB,CAGnBG,WAAW,CAAXA,WAHmB,CAInBE,aAAa,CAAbA,aAJmB,CAKnBE,eAAe,CAAfA,eALmB,CAMnBE,eAAe,CAAfA,eANmB,CAOnBE,YAAY,CAAZA,YAPmB,CAQnBG,kBAAkB,gEARC,CASnBC,cAAc,gEATK,CAUnBC,IAAI,CAAE,SAVa,CAWnBC,IAAI,CAAE,GAXa,C,CAcrB,MAAO,IAAMC,YAAW,CAAG,SAKzBC,CALyB,QAOzBtB,kBAAiB,CAACe,YAAD,CAAsBO,CAAtB,CAPQ,CAApB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/FlatSelect/index.ts"],"sourcesContent":["export * from './FlatSelect';\nexport * from './types';\n"],"mappings":"AAAA,0BACA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { IconComponent } from '@consta/icons/Icon';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { FieldPropSize, FieldPropView } from '../FieldComponents';
|
|
4
|
+
import { Direction } from '../Popover';
|
|
5
|
+
import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
|
|
6
|
+
export type RenderItemProps<ITEM> = {
|
|
7
|
+
item: ITEM;
|
|
8
|
+
active: boolean;
|
|
9
|
+
hovered: boolean;
|
|
10
|
+
onClick: (e: React.MouseEvent) => void;
|
|
11
|
+
onMouseEnter: (e: React.MouseEvent) => void;
|
|
12
|
+
ref: React.Ref<HTMLDivElement>;
|
|
13
|
+
};
|
|
14
|
+
export type FlatSelectItemDefault = {
|
|
15
|
+
label: string;
|
|
16
|
+
id: string | number;
|
|
17
|
+
groupId?: string | number;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type FlatSelectGroupDefault = {
|
|
21
|
+
label: string;
|
|
22
|
+
id: string | number;
|
|
23
|
+
};
|
|
24
|
+
export type FlatSelectPropGetItemLabel<ITEM> = (item: ITEM) => string;
|
|
25
|
+
export type FlatSelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;
|
|
26
|
+
export type FlatSelectPropGetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;
|
|
27
|
+
export type FlatSelectPropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;
|
|
28
|
+
export type FlatSelectPropGetGroupKey<GROUP> = (group: GROUP) => string | number;
|
|
29
|
+
export type FlatSelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;
|
|
30
|
+
export type FlatSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (value: (MULTIPLE extends true ? ITEM[] : ITEM) | null, props: {
|
|
31
|
+
e: React.SyntheticEvent;
|
|
32
|
+
}) => void;
|
|
33
|
+
export type FlatSelectPropValue<ITEM, MULTIPLE extends boolean> = (MULTIPLE extends true ? ITEM[] : ITEM) | null | undefined;
|
|
34
|
+
export type FlatSelectPropRenderItem<ITEM> = (props: RenderItemProps<ITEM>) => React.ReactNode | null;
|
|
35
|
+
export type FlatSelectPropRenderValue<ITEM, MULTIPLE> = MULTIPLE extends true ? (props: {
|
|
36
|
+
value: ITEM[];
|
|
37
|
+
getRemove: (item: ITEM) => (e: React.SyntheticEvent<Element, Event>) => void;
|
|
38
|
+
}) => React.ReactNode | null : (props: {
|
|
39
|
+
value: ITEM;
|
|
40
|
+
}) => React.ReactNode | null;
|
|
41
|
+
export type FlatSelectPropOnCreate = (label: string, props: {
|
|
42
|
+
e: React.SyntheticEvent;
|
|
43
|
+
}) => void;
|
|
44
|
+
export type FlatSelectAllItem = {
|
|
45
|
+
groupKey: string | number;
|
|
46
|
+
__optionSelectAll: true;
|
|
47
|
+
};
|
|
48
|
+
export type Group<ITEM, GROUP> = {
|
|
49
|
+
items: ITEM[];
|
|
50
|
+
key: string | number;
|
|
51
|
+
group?: GROUP;
|
|
52
|
+
};
|
|
53
|
+
export type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {
|
|
54
|
+
items: Array<FlatSelectAllItem | ITEM>;
|
|
55
|
+
};
|
|
56
|
+
export type FlatSelectPropForm = 'default' | 'brick' | 'round';
|
|
57
|
+
export type FlatSelectPropsInit<ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false> = PropsWithHTMLAttributesAndRef<{
|
|
58
|
+
items: ITEM[];
|
|
59
|
+
onChange: FlatSelectPropOnChange<ITEM, MULTIPLE>;
|
|
60
|
+
disabled?: boolean;
|
|
61
|
+
form?: 'default' | 'brick' | 'round';
|
|
62
|
+
placeholder?: string;
|
|
63
|
+
size?: FieldPropSize;
|
|
64
|
+
isLoading?: boolean;
|
|
65
|
+
listRef?: React.Ref<HTMLDivElement>;
|
|
66
|
+
renderItem?: FlatSelectPropRenderItem<ITEM>;
|
|
67
|
+
onInputFocus?: React.FocusEventHandler<HTMLInputElement>;
|
|
68
|
+
onInputBlur?: React.FocusEventHandler<HTMLInputElement>;
|
|
69
|
+
onCreate?: FlatSelectPropOnCreate;
|
|
70
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
71
|
+
input?: boolean;
|
|
72
|
+
inputValue?: string;
|
|
73
|
+
inputDefaultValue?: string;
|
|
74
|
+
onInput?: (value: string) => void;
|
|
75
|
+
labelForCreate?: ((label: string | undefined) => React.ReactNode) | React.ReactNode;
|
|
76
|
+
labelForEmptyItems?: string;
|
|
77
|
+
multiple?: MULTIPLE;
|
|
78
|
+
value?: FlatSelectPropValue<ITEM, MULTIPLE>;
|
|
79
|
+
groups?: GROUP[];
|
|
80
|
+
getItemLabel?: FlatSelectPropGetItemLabel<ITEM>;
|
|
81
|
+
getItemKey?: FlatSelectPropGetItemKey<ITEM>;
|
|
82
|
+
getItemGroupKey?: FlatSelectPropGetItemGroupKey<ITEM>;
|
|
83
|
+
getItemDisabled?: FlatSelectPropGetItemDisabled<ITEM>;
|
|
84
|
+
getGroupLabel?: FlatSelectPropGetGroupLabel<GROUP>;
|
|
85
|
+
getGroupKey?: FlatSelectPropGetGroupKey<GROUP>;
|
|
86
|
+
virtualScroll?: boolean;
|
|
87
|
+
onScrollToBottom?: (length: number) => void;
|
|
88
|
+
onOpen?: (isOpen: boolean) => void;
|
|
89
|
+
isOpen?: boolean;
|
|
90
|
+
listClassName?: string;
|
|
91
|
+
ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;
|
|
92
|
+
clearButton?: boolean;
|
|
93
|
+
iconClear?: IconComponent;
|
|
94
|
+
iconLeft?: IconComponent;
|
|
95
|
+
selectAll?: MULTIPLE extends true ? boolean : never;
|
|
96
|
+
selectAllLabel?: string;
|
|
97
|
+
footer?: React.ReactNode;
|
|
98
|
+
view?: FieldPropView;
|
|
99
|
+
bordered?: boolean;
|
|
100
|
+
anchorRef?: React.RefObject<HTMLElement>;
|
|
101
|
+
direction?: Direction;
|
|
102
|
+
spareDirection?: Direction;
|
|
103
|
+
possibleDirections?: Direction[];
|
|
104
|
+
}, HTMLDivElement>;
|
|
105
|
+
/**
|
|
106
|
+
* Props for the FlatSelect component.
|
|
107
|
+
*
|
|
108
|
+
* This type defines the props for the FlatSelect component, which is a customizable select component.
|
|
109
|
+
* It allows for single or multiple selection, and supports grouping of items.
|
|
110
|
+
* The component can be customized by providing custom item and group types.
|
|
111
|
+
*
|
|
112
|
+
* @template ITEM The type of the items in the select. Defaults to FlatSelectItemDefault.
|
|
113
|
+
* @template GROUP The type of the groups in the select. Defaults to FlatSelectGroupDefault.
|
|
114
|
+
* @template MULTIPLE Whether the select allows multiple selection. Defaults to false.
|
|
115
|
+
*/
|
|
116
|
+
export type FlatSelectProps<ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false> = FlatSelectPropsInit<ITEM, GROUP, MULTIPLE> & (ITEM extends {
|
|
117
|
+
label: FlatSelectItemDefault['label'];
|
|
118
|
+
} ? {} : {
|
|
119
|
+
getItemLabel: FlatSelectPropGetItemLabel<ITEM>;
|
|
120
|
+
}) & (ITEM extends {
|
|
121
|
+
id: FlatSelectItemDefault['id'];
|
|
122
|
+
} ? {} : {
|
|
123
|
+
getItemKey: FlatSelectPropGetItemKey<ITEM>;
|
|
124
|
+
}) & (GROUP extends {
|
|
125
|
+
label: FlatSelectGroupDefault['label'];
|
|
126
|
+
} ? {} : {
|
|
127
|
+
getGroupLabel: FlatSelectPropGetGroupLabel<GROUP>;
|
|
128
|
+
}) & (GROUP extends {
|
|
129
|
+
id: FlatSelectGroupDefault['id'];
|
|
130
|
+
} ? {} : {
|
|
131
|
+
getGroupKey: FlatSelectPropGetGroupKey<GROUP>;
|
|
132
|
+
});
|
|
133
|
+
export type FlatSelectComponent = <ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false>(props: FlatSelectProps<ITEM, GROUP, MULTIPLE>) => React.ReactNode | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/components/FlatSelect/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { FieldPropSize, FieldPropView } from '##/components/FieldComponents';\nimport { Direction } from '##/components/Popover';\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 FlatSelectItemDefault = {\n label: string;\n id: string | number;\n groupId?: string | number;\n disabled?: boolean;\n};\n\nexport type FlatSelectGroupDefault = {\n label: string;\n id: string | number;\n};\n\nexport type FlatSelectPropGetItemLabel<ITEM> = (item: ITEM) => string;\nexport type FlatSelectPropGetItemKey<ITEM> = (item: ITEM) => string | number;\nexport type FlatSelectPropGetItemGroupKey<ITEM> = (\n item: ITEM,\n) => string | number | undefined;\nexport type FlatSelectPropGetItemDisabled<ITEM> = (\n item: ITEM,\n) => boolean | undefined;\nexport type FlatSelectPropGetGroupKey<GROUP> = (\n group: GROUP,\n) => string | number;\nexport type FlatSelectPropGetGroupLabel<GROUP> = (group: GROUP) => string;\n\nexport type FlatSelectPropOnChange<ITEM, MULTIPLE extends boolean> = (\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null,\n props: {\n e: React.SyntheticEvent;\n },\n) => void;\nexport type FlatSelectPropValue<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type FlatSelectPropRenderItem<ITEM> = (\n props: RenderItemProps<ITEM>,\n) => React.ReactNode | null;\n\nexport type FlatSelectPropRenderValue<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 FlatSelectPropOnCreate = (\n label: string,\n props: { e: React.SyntheticEvent },\n) => void;\n\nexport type FlatSelectAllItem = {\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<FlatSelectAllItem | ITEM>;\n};\n\nexport type FlatSelectPropForm = 'default' | 'brick' | 'round';\n\nexport type FlatSelectPropsInit<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = PropsWithHTMLAttributesAndRef<\n {\n items: ITEM[];\n onChange: FlatSelectPropOnChange<ITEM, MULTIPLE>;\n disabled?: boolean;\n form?: 'default' | 'brick' | 'round';\n placeholder?: string;\n size?: FieldPropSize;\n isLoading?: boolean;\n listRef?: React.Ref<HTMLDivElement>;\n renderItem?: FlatSelectPropRenderItem<ITEM>;\n onInputFocus?: React.FocusEventHandler<HTMLInputElement>;\n onInputBlur?: React.FocusEventHandler<HTMLInputElement>;\n onCreate?: FlatSelectPropOnCreate;\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?: FlatSelectPropValue<ITEM, MULTIPLE>;\n groups?: GROUP[];\n getItemLabel?: FlatSelectPropGetItemLabel<ITEM>;\n getItemKey?: FlatSelectPropGetItemKey<ITEM>;\n getItemGroupKey?: FlatSelectPropGetItemGroupKey<ITEM>;\n getItemDisabled?: FlatSelectPropGetItemDisabled<ITEM>;\n getGroupLabel?: FlatSelectPropGetGroupLabel<GROUP>;\n getGroupKey?: FlatSelectPropGetGroupKey<GROUP>;\n virtualScroll?: boolean;\n onScrollToBottom?: (length: number) => void;\n onOpen?: (isOpen: boolean) => void;\n isOpen?: boolean;\n listClassName?: string;\n ignoreOutsideClicksRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n clearButton?: boolean;\n iconClear?: IconComponent;\n iconLeft?: IconComponent;\n selectAll?: MULTIPLE extends true ? boolean : never;\n selectAllLabel?: string;\n footer?: React.ReactNode;\n view?: FieldPropView;\n bordered?: boolean;\n anchorRef?: React.RefObject<HTMLElement>;\n direction?: Direction;\n spareDirection?: Direction;\n possibleDirections?: Direction[];\n },\n HTMLDivElement\n>;\n\n/**\n * Props for the FlatSelect component.\n *\n * This type defines the props for the FlatSelect component, which is a customizable select component.\n * It allows for single or multiple selection, and supports grouping of items.\n * The component can be customized by providing custom item and group types.\n *\n * @template ITEM The type of the items in the select. Defaults to FlatSelectItemDefault.\n * @template GROUP The type of the groups in the select. Defaults to FlatSelectGroupDefault.\n * @template MULTIPLE Whether the select allows multiple selection. Defaults to false.\n */\nexport type FlatSelectProps<\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n> = FlatSelectPropsInit<ITEM, GROUP, MULTIPLE> &\n (ITEM extends { label: FlatSelectItemDefault['label'] }\n ? {}\n : { getItemLabel: FlatSelectPropGetItemLabel<ITEM> }) &\n (ITEM extends { id: FlatSelectItemDefault['id'] }\n ? {}\n : { getItemKey: FlatSelectPropGetItemKey<ITEM> }) &\n (GROUP extends { label: FlatSelectGroupDefault['label'] }\n ? {}\n : { getGroupLabel: FlatSelectPropGetGroupLabel<GROUP> }) &\n (GROUP extends { id: FlatSelectGroupDefault['id'] }\n ? {}\n : { getGroupKey: FlatSelectPropGetGroupKey<GROUP> });\n\nexport type FlatSelectComponent = <\n ITEM = FlatSelectItemDefault,\n GROUP = FlatSelectGroupDefault,\n MULTIPLE extends boolean = false,\n>(\n props: FlatSelectProps<ITEM, GROUP, MULTIPLE>,\n) => React.ReactNode | null;\n"],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type ScrollToIndexFunctionType = (optionIndex: number, dropdownElement: HTMLDivElement | null, optionsRefs: React.RefObject<HTMLDivElement>[], onFailure?: () => void) => void;
|
|
3
|
+
export declare const scrollToIndex: ScrollToIndexFunctionType;
|
|
4
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["scrollIntoView","scrollToIndex","index","dropdownElement","optionsRefs","onFailure","element","current"],"sources":["../../../../../../src/components/FlatSelect/useFlatSelect/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { scrollIntoView } from '##/utils/scrollIntoView';\n\ntype ScrollToIndexFunctionType = (\n optionIndex: number,\n dropdownElement: HTMLDivElement | null,\n optionsRefs: React.RefObject<HTMLDivElement>[],\n onFailure?: () => void,\n) => void;\n\nexport const scrollToIndex: ScrollToIndexFunctionType = (\n index,\n dropdownElement,\n optionsRefs,\n onFailure,\n): void => {\n if (!dropdownElement || index < 0) {\n return;\n }\n\n const element = optionsRefs[index]?.current;\n\n if (element) {\n scrollIntoView(element, dropdownElement);\n } else {\n onFailure?.();\n }\n};\n"],"mappings":"AAEA,OAASA,cAAT,qCASA,MAAO,IAAMC,cAAwC,CAAG,SACtDC,CADsD,CAEtDC,CAFsD,CAGtDC,CAHsD,CAItDC,CAJsD,CAK7C,OACT,GAAKF,CAAD,IAA4B,CAAR,CAAAD,CAApB,CAAJ,EAIA,GAAMI,EAAO,WAAGF,CAAW,CAACF,CAAD,CAAd,qBAAG,EAAoBK,OAApC,CAEID,CANJ,CAOEN,cAAc,CAACM,CAAD,CAAUH,CAAV,CAPhB,QASEE,CATF,WASEA,CATF,QASEA,CAAS,EATX,CAWD,CAjBM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useFlatSelect';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/components/FlatSelect/useFlatSelect/index.ts"],"sourcesContent":["export * from './useFlatSelect';\n"],"mappings":"AAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AtomMut } from '@reatom/framework';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { GetGroupsResult } from '../../../utils/getGroups';
|
|
4
|
+
import { PropsWithDefault } from '../defaultProps';
|
|
5
|
+
import { CountedGroup, FlatSelectAllItem, FlatSelectGroupDefault, FlatSelectItemDefault, Group } from '../types';
|
|
6
|
+
export type OptionForCreate = {
|
|
7
|
+
label: string;
|
|
8
|
+
__optionForCreate: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type UseFlatSelectProps<ITEM = FlatSelectItemDefault, GROUP = FlatSelectGroupDefault, MULTIPLE extends boolean = false> = {
|
|
11
|
+
propsAtom: AtomMut<PropsWithDefault<ITEM, GROUP, MULTIPLE>>;
|
|
12
|
+
};
|
|
13
|
+
export type OptionProps<ITEM> = {
|
|
14
|
+
index: number;
|
|
15
|
+
item: ITEM | OptionForCreate | FlatSelectAllItem;
|
|
16
|
+
};
|
|
17
|
+
export type GetOptionPropsResult = {
|
|
18
|
+
onClick: (e: React.MouseEvent) => void;
|
|
19
|
+
onMouseEnter: (e: React.MouseEvent) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const isOptionForCreate: <ITEM, GROUP>(params: OptionForCreate | Group<ITEM, GROUP> | ITEM) => params is OptionForCreate;
|
|
22
|
+
export declare const isNotOptionForCreate: <ITEM, GROUP>(params: OptionForCreate | Group<ITEM, GROUP>) => params is Group<ITEM, GROUP>;
|
|
23
|
+
export declare const isOptionForSelectAll: <ITEM>(params: FlatSelectAllItem | ITEM) => params is FlatSelectAllItem;
|
|
24
|
+
export declare function getCountedGroups<ITEM, GROUP>(groups: GetGroupsResult<ITEM, GROUP>, selectAll: boolean): CountedGroup<ITEM, GROUP>[];
|
|
25
|
+
export declare const useFlatSelect: <ITEM = FlatSelectItemDefault, GROUP = FlatSelectItemDefault, MULTIPLE extends boolean = false>({ propsAtom, }: UseFlatSelectProps<ITEM, GROUP, MULTIPLE>) => {
|
|
26
|
+
openAtom: AtomMut<boolean>;
|
|
27
|
+
inputFocusAtom: AtomMut<boolean>;
|
|
28
|
+
inputValueAtom: AtomMut<string>;
|
|
29
|
+
clearButtonAtom: AtomMut<boolean>;
|
|
30
|
+
onInput: import("@reatom/framework").Fn<[value?: string | undefined], void>;
|
|
31
|
+
getOptionActions: import("@reatom/framework").Fn<[OptionProps<ITEM>], GetOptionPropsResult>;
|
|
32
|
+
handleInputBlur: import("@reatom/framework").Fn<[e: React.FocusEvent<HTMLInputElement, Element>], void>;
|
|
33
|
+
getHandleRemoveValue: import("@reatom/framework").Fn<[item: ITEM], (e: React.SyntheticEvent) => void>;
|
|
34
|
+
inputRef: React.RefObject<HTMLInputElement>;
|
|
35
|
+
listRef: React.RefObject<HTMLDivElement>;
|
|
36
|
+
handleInputChange: import("@reatom/framework").Fn<[e: React.ChangeEvent<HTMLInputElement>], void>;
|
|
37
|
+
handleInputFocus: import("@reatom/framework").Fn<[e: React.FocusEvent<HTMLInputElement, Element>], void>;
|
|
38
|
+
visibleItemsAtom: AtomMut<(OptionForCreate | CountedGroup<ITEM, GROUP>)[]>;
|
|
39
|
+
clearValue: import("@reatom/framework").Fn<[], void>;
|
|
40
|
+
optionsRefs: React.RefObject<HTMLDivElement>[];
|
|
41
|
+
highlightedIndexAtom: AtomMut<number>;
|
|
42
|
+
valueAtom: AtomMut<ITEM[]>;
|
|
43
|
+
getItemKeyAtom: AtomMut<import("../types").FlatSelectPropGetItemKey<ITEM>>;
|
|
44
|
+
onChangeAll: import("@reatom/framework").Fn<[e: React.SyntheticEvent<Element, Event>, items: ITEM[]], void>;
|
|
45
|
+
onCreate: import("@reatom/framework").Fn<[e: React.SyntheticEvent<Element, Event>], void>;
|
|
46
|
+
onChange: import("@reatom/framework").Fn<[e: React.SyntheticEvent<Element, Event>, item: ITEM], void>;
|
|
47
|
+
hasItemsAtom: AtomMut<boolean>;
|
|
48
|
+
groupsCounterAtom: AtomMut<Record<string, [number, number]>>;
|
|
49
|
+
dropdownZIndexAtom: AtomMut<number | undefined>;
|
|
50
|
+
rootRef: React.RefCallback<HTMLDivElement | null>;
|
|
51
|
+
disabledAtom: AtomMut<boolean>;
|
|
52
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import _regeneratorRuntime from"@babel/runtime/regenerator";import{action,sleep,withConcurrency}from"@reatom/framework";import{useAction,useAtom,useUpdate}from"@reatom/npm-react";import{useRef}from"react";import{useRefs}from"../../../hooks/useRefs";import{animateTimeout}from"../../../mixs/MixPopoverAnimate";import{getGroups}from"../../../utils/getGroups";import{useClickOutsideAtom}from"../../../utils/state/useClickOutsideAtom";import{useCreateAtom}from"../../../utils/state/useCreateAtom";import{useElementAtomEventListener}from"../../../utils/state/useElementAtomEventListener";import{useKeysAtom}from"../../../utils/state/useKeysAtom";import{usePickAtom,usePropAtom}from"../../../utils/state/usePickAtom";import{useRefAtom}from"../../../utils/state/useRefAtom";import{scrollToIndex}from"./helpers";var isMultipleParams=function(a){return!!a.multiple};export var isOptionForCreate=function(a){return a&&Object.prototype.hasOwnProperty.call(a,"__optionForCreate")};export var isNotOptionForCreate=function(a){return a&&!Object.prototype.hasOwnProperty.call(a,"__optionForCreate")};export var isOptionForSelectAll=function(a){return a&&Object.prototype.hasOwnProperty.call(a,"__optionSelectAll")};export function getCountedGroups(a,b){var c=_toConsumableArray(a);return b&&a.forEach(function(a,b){c[b].items=[{__optionSelectAll:!0,groupKey:a.key}].concat(_toConsumableArray(c[b].items))}),c}export var useFlatSelect=function(a){var b=a.propsAtom,c=useRef(null),d=useRef(null),f=usePropAtom(b,"anchorRef"),g=useCreateAtom(function(a){var b=a.spy(f);return null!==b&&void 0!==b&&b.current?b.current:null}),h=useRefAtom(),i=_slicedToArray(h,2),j=i[0],k=i[1],l=useCreateAtom(!1),m=useCreateAtom(!1),n=usePropAtom(b,"items"),o=usePropAtom(b,"selectAll"),p=usePropAtom(b,"value"),q=usePropAtom(b,"disabled"),r=useCreateAtom(function(a){return!!a.spy(q)}),s=usePropAtom(b,"inputValue"),t=usePropAtom(b,"isOpen"),u=useCreateAtom(function(a){return!!a.spy(b).onCreate}),v=useCreateAtom(function(a){var c,d=null===(c=a.spy(b).style)||void 0===c?void 0:c.zIndex;return"number"==typeof d?d+1:void 0}),w=usePropAtom(b,"ignoreOutsideClicksRefs"),x=usePropAtom(b,"getItemKey"),y=useCreateAtom(function(a){var b=a.spy(p);return b&&(Array.isArray(b)?b:[b])||[]}),z=useCreateAtom(!1),A=useCreateAtom(!1),B=useCreateAtom(-1),C=useCreateAtom(""),D=useCreateAtom(function(a){var c=a.spy(b),d=c.clearButton,e=a.spy(C),f=a.spy(y);return!!(d&&(null!==f&&void 0!==f&&f.length||e))}),E=useAction(action(function(){var a=_asyncToGenerator(_regeneratorRuntime.mark(function c(a,b){return _regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,a.schedule(function(){return sleep(5)});case 2:l(a,b);case 3:case"end":return c.stop();}},c)}));return function(){return a.apply(this,arguments)}}()).pipe(withConcurrency())),F=useAction(function(a){return m(a,!0)}),G=useAction(function(a){return m(a,!1)}),H=useAction(function(){return E(!0)}),I=useAction(function(){return E(!1)}),J=useAction(function(a){var d,e,f=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"";null===(d=(e=a.get(b)).onInput)||void 0===d?void 0:d.call(e,f),C(a,f),c.current&&(c.current.value=f)}),K=useCreateAtom(function(a){var b=a.spy(u);if(b){var c=a.spy(C);return{label:c,__optionForCreate:!0}}}),L=usePickAtom(b,["selectAll","groups","getItemGroupKey","getGroupKey","getItemKey","items"]),M=useCreateAtom(function(a){var b=a.spy(L),c=b.selectAll,d=b.groups,e=b.getItemGroupKey,f=b.getGroupKey,g=b.items,h=a.spy(K),i=getCountedGroups(getGroups(g,null!==d&&void 0!==d&&d.length?e:void 0,d,f,void 0),c&&g.length&&c);return h?[h].concat(_toConsumableArray(i)):i}),N=useCreateAtom(function(a){var c=a.spy(M),d=a.spy(o),e=a.spy(y),f=a.get(b),g=f.getItemDisabled,h={};return d&&function getFlatSelectedCounter(){var a,b=_createForOfIteratorHelper(c);try{for(b.s();!(a=b.n()).done;){var j=a.value;if(!isOptionForCreate(j)){h[j.key]=[0,j.items.length-1];var d,f=_createForOfIteratorHelper(j.items);try{var i=function(){var a=d.value;isOptionForSelectAll(a)||g(a)||!e.some(function(b){return b===a})||(h[j.key][0]=(h[j.key][0]||0)+1)};for(f.s();!(d=f.n()).done;)i()}catch(a){f.e(a)}finally{f.f()}}}}catch(a){b.e(a)}finally{b.f()}}(),h}),O=useAtom(function(a){var b=a.spy(n),c=a.spy(u),d=a.spy(o),e=a.spy(M);return b.length+(c?1:0)+(d?e.length:0)}),P=_slicedToArray(O,3),Q=P[0],R=P[1],e=P[2],S=useCreateAtom(function(a){var b=a.spy(n),c=a.spy(K);return!!c||!!b.length}),T=useRefs(Q,void 0),U=useAction(function(a){var b=a.get(n),c=a.get(B),e=d.current;0<b.length&&e&&scrollToIndex(c,e,T)}),V=useAction(function(a,b){a.get(r)||B(a,function(c){var d=Math.min(Math.max(0,"function"==typeof b?b(c):b),a.get(e)-1);return d})}),W=useAction(function(a,c,d){c.stopPropagation();var e=a.get(b);if(isMultipleParams(e)){var f=e.getItemDisabled,g=e.getItemKey,h=e.onChange,i=a.get(y).filter(function(a){return!!(null!==f&&void 0!==f&&f(a))||g(a)!==g(d)});h(null!==i&&void 0!==i&&i.length?i:null,{e:c})}}),X=useAction(function(a,c,d){var e=a.get(b),f=e.getItemDisabled,g=e.getItemKey,h=e.onChange,i=e.multiple,j=e.disabled;if(!(j||f&&f(d)))if(i){var k=a.get(y),l=k.some(function(a){return g(a)===g(d)})?k.filter(function(a){return g(a)!==g(d)}):[].concat(_toConsumableArray(k),[d]),m=l.length?l:null;h(m,{e:c})}else h(d,{e:c})}),Y=useAction(function(a,c,d){var e=a.get(y),f=a.get(b),g=f.getItemDisabled,h=f.getItemKey,i=f.multiple,j=f.onChange;if(i){var k=g?d.filter(function(a){return!g(a)}):d,l=[],m=[];if(e.forEach(function(a){k.find(function(b){return h(a)===h(b)})?l.push(a):m.push(a)}),l.length===k.length)j(m.length?m:null,{e:c});else{var n=[].concat(m,_toConsumableArray(k));j(n.length?n:null,{e:c})}}}),Z=useAction(function(a,c){var d=a.get(b),e=d.onCreate;null===e||void 0===e?void 0:e(a.get(C),{e:c}),J("")}),$=useAction(function(a,c){!a.get(r)&&a.get(b).input&&(null===J||void 0===J?void 0:J(c.target.value))}),_=useAction(function(){return J("")}),aa=useAction(function(a,b){return function(a){return W(a,b)}}),ba=useAction(function(a,b){b.preventDefault(),b.stopPropagation(),a.get(r)||(V(function(a){return a-1}),U())}),ca=useAction(function(a,b){b.preventDefault(),b.stopPropagation(),a.get(r)||(V(function(a){return a+1}),U())}),da=useAction(function(a,c){var d=a.get(b),e=d.items,f=a.get(B),g=a.get(C),h=a.get(M);(g||e[f])&&(c.preventDefault(),c.stopPropagation());var i=function getData(a){var b,c=0,d=_createForOfIteratorHelper(h);try{for(d.s();!(b=d.n()).done;){var e=b.value;if(isOptionForCreate(e)){if(c===a)return[void 0,e];c++;continue}if(e.items.length+c>a)return[e,e.items[a-c]];c+=e.items.length}}catch(a){d.e(a)}finally{d.f()}return[void 0,void 0]}(f),j=_slicedToArray(i,2),k=j[0],l=j[1];if(isOptionForCreate(l))return void Z(c);if(isOptionForSelectAll(l)){var m;return void Y(c,null!==(m=null===k||void 0===k?void 0:k.items.filter(function(a){return!isOptionForSelectAll(a)}))&&void 0!==m?m:[])}l&&X(c,l)}),ea=useAction(function(a,b){var c,d;b.preventDefault(),b.stopPropagation(),A(a,!1),null===(c=a.get(f))||void 0===c||null===(d=c.current)||void 0===d?void 0:d.focus()}),fa=useAction(function(a,c){var d,e;a.get(b).input&&!a.get(z)||(a.get(A)&&(c.preventDefault(),c.stopPropagation(),A(a,!1)),null===(d=a.get(f))||void 0===d||null===(e=d.current)||void 0===e?void 0:e.focus())}),ga=useCreateAtom({ArrowUp:ba,ArrowDown:ca,PageUp:ba,PageDown:ca,Home:ba,End:ca,Enter:da,Escape:ea,Tab:fa}),ha=useAction(function(a,b){var c=b.index,d=b.item;if(isOptionForCreate(d))return{onClick:function onClick(a){Z(a),V(c)},onMouseEnter:function onMouseEnter(){return a.get(l)&&V(c)}};if(isOptionForSelectAll(d)){var f=function(){var b,c=a.get(M),e=_createForOfIteratorHelper(c);try{for(e.s();!(b=e.n()).done;){var g=b.value;if(!isOptionForCreate(g)&&g.key===d.groupKey){var f;return null!==(f=null===g||void 0===g?void 0:g.items.filter(function(a){return!isOptionForSelectAll(a)}))&&void 0!==f?f:[]}}}catch(a){e.e(a)}finally{e.f()}return[]};return{onClick:function onClick(a){Y(a,f()),V(c)},onMouseEnter:function onMouseEnter(){return a.get(l)&&V(c)}}}return{onClick:function onClick(a){console.log("onClick",d),V(c),X(a,d)},onMouseEnter:function onMouseEnter(){return a.get(l)&&V(c)}}}),ia=useAction(function(a,c){var d=a.get(b),e=d.disabled,f=d.onInputFocus,g=a.get(z);e||(!g&&z(a,!0),null===f||void 0===f?void 0:f(c))}),ja=useAction(function(a,c){var d,e;a.get(z)&&z(a,!1),null===(d=(e=a.get(b)).onInputBlur)||void 0===d?void 0:d.call(e,c)});useClickOutsideAtom({isActiveAtom:A,ignoreClicksElementsAtom:useCreateAtom(function(a){var b,c=a.spy(j),d=a.spy(g),e=null===(b=a.spy(w))||void 0===b?void 0:b.map(function(a){return a.current});return[c,d].concat(_toConsumableArray(e||[]))}),handler:useAction(function(a){A(a,!1)})}),useClickOutsideAtom({isActiveAtom:l,ignoreClicksElementsAtom:useCreateAtom(function(a){var b=a.spy(j);return[b]}),handler:I}),useUpdate(function(a,b){!b||a.get(m)||-1!==a.get(B)||a.get(r)||B(a,0),b||B(a,-1)},[l]),useUpdate(function(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"",c=a.get(C);b!==c&&J(b)},[s]),useUpdate(function(a){var b=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1];return A(a,b)},[t]),useUpdate(function(a){return B(a,-1)},[M]),useUpdate(function(a,b){return b&&B(a,-1)},[r]);var ka=useAction(function(a){return A(a,!a.get(A))});return useElementAtomEventListener(g,"click",ka),useElementAtomEventListener(j,"focus",H),useElementAtomEventListener(j,"click",H),useElementAtomEventListener(j,"blur",I),useElementAtomEventListener(j,"mousedown",F),useElementAtomEventListener(j,"mouseup",G),useKeysAtom({keysAtom:ga,elAtom:j,isActiveAtom:useCreateAtom(function(a){var b;return!!(null!==(b=a.spy(f))&&void 0!==b&&b.current&&a.spy(A))||!a.spy(r)})}),useUpdate(function(){var a=_asyncToGenerator(_regeneratorRuntime.mark(function d(a,c){var e,f,g;return _regeneratorRuntime.wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return null===(e=(f=a.get(b)).onOpen)||void 0===e?void 0:e.call(f,c),d.next=3,sleep(animateTimeout);case 3:if(c){d.next=8;break}return J(""),z(a,!1),l(a,!1),d.abrupt("return");case 8:c&&(null===(g=a.get(j))||void 0===g?void 0:g.focus());case 9:case"end":return d.stop();}},d)}));return function(){return a.apply(this,arguments)}}(),[A]),{openAtom:A,inputFocusAtom:z,inputValueAtom:C,clearButtonAtom:D,onInput:J,getOptionActions:ha,handleInputBlur:ja,getHandleRemoveValue:aa,inputRef:c,listRef:d,handleInputChange:$,handleInputFocus:ia,visibleItemsAtom:M,clearValue:_,optionsRefs:T,highlightedIndexAtom:B,valueAtom:y,getItemKeyAtom:x,onChangeAll:Y,onCreate:Z,onChange:X,hasItemsAtom:S,groupsCounterAtom:N,dropdownZIndexAtom:v,rootRef:k,disabledAtom:r}};
|
|
2
|
+
//# sourceMappingURL=useFlatSelect.js.map
|