@salutejs/plasma-new-hope 0.174.0-canary.1505.11505788468.0 → 0.174.0-canary.1505.11518120718.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Combobox/ComboboxNew/Combobox.js +15 -21
- package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -1
- package/cjs/components/Select/Select.js +2 -10
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/utils/getInitialValue.js +1 -7
- package/cjs/components/Select/utils/getInitialValue.js.map +1 -1
- package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +14 -20
- package/emotion/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/emotion/cjs/components/Select/Select.js +2 -10
- package/emotion/cjs/components/Select/utils/getInitialValue.js +1 -7
- package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
- package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
- package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +14 -20
- package/emotion/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/emotion/es/components/Select/Select.js +2 -10
- package/emotion/es/components/Select/utils/getInitialValue.js +1 -7
- package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
- package/emotion/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
- package/es/components/Combobox/ComboboxNew/Combobox.js +15 -21
- package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
- package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/es/components/Combobox/ComboboxNew/utils/getInitialValue.js.map +1 -1
- package/es/components/Select/Select.js +2 -10
- package/es/components/Select/Select.js.map +1 -1
- package/es/components/Select/utils/getInitialValue.js +1 -7
- package/es/components/Select/utils/getInitialValue.js.map +1 -1
- package/package.json +2 -2
- package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +14 -20
- package/styled-components/cjs/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/styled-components/cjs/components/Select/Select.js +2 -10
- package/styled-components/cjs/components/Select/utils/getInitialValue.js +1 -7
- package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
- package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
- package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +14 -20
- package/styled-components/es/components/Combobox/ComboboxNew/utils/getInitialValue.js +1 -7
- package/styled-components/es/components/Select/Select.js +2 -10
- package/styled-components/es/components/Select/utils/getInitialValue.js +1 -7
- package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +6 -0
- package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +6 -0
- package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +7 -1
- package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
- package/types/components/Combobox/ComboboxNew/utils/getInitialValue.d.ts.map +1 -1
- package/types/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.styles.d.ts +8 -8
- package/types/components/Select/Select.d.ts +2 -2
- package/types/components/Select/Select.d.ts.map +1 -1
- package/types/components/Select/Select.types.d.ts +1 -1
- package/types/components/Select/Select.types.d.ts.map +1 -1
- package/types/components/Select/utils/getInitialValue.d.ts +1 -1
- package/types/components/Select/utils/getInitialValue.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Combobox/Combobox.d.ts +18 -6
- package/types/examples/plasma_b2c/components/Combobox/Combobox.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Select/Select.d.ts +8 -8
- package/types/examples/plasma_web/components/Combobox/Combobox.d.ts +18 -6
- package/types/examples/plasma_web/components/Combobox/Combobox.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Select/Select.d.ts +8 -8
@@ -155,15 +155,7 @@ var selectRoot = function selectRoot(Root) {
|
|
155
155
|
if (e) {
|
156
156
|
e.stopPropagation();
|
157
157
|
}
|
158
|
-
var
|
159
|
-
var isCurrentChecked = checkedCopy.get(item.value);
|
160
|
-
checkedCopy.forEach(function (_, key) {
|
161
|
-
checkedCopy.set(key, false);
|
162
|
-
});
|
163
|
-
if (!isCurrentChecked) {
|
164
|
-
checkedCopy.set(item.value, 'done');
|
165
|
-
updateSingleAncestors(item, checkedCopy, 'dot');
|
166
|
-
}
|
158
|
+
var isCurrentChecked = checked.get(item.value);
|
167
159
|
if (closeAfterSelect) {
|
168
160
|
dispatchPath({
|
169
161
|
type: 'reset'
|
@@ -235,7 +227,7 @@ var selectRoot = function selectRoot(Root) {
|
|
235
227
|
}
|
236
228
|
}
|
237
229
|
setChecked(checkedCopy);
|
238
|
-
}, [outerValue]);
|
230
|
+
}, [outerValue, items]);
|
239
231
|
return /*#__PURE__*/React.createElement(Root, _extends({
|
240
232
|
ref: ref,
|
241
233
|
size: size,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect } from 'react';\n\nimport { RootProps } from '../../engines';\nimport { isEmpty, getPlacements } from '../../utils';\nimport { useOutsideClick } from '../../hooks';\n\nimport { useKeyNavigation } from './hooks/useKeyboardNavigation';\nimport {\n initialItemsTransform,\n updateAncestors,\n updateDescendants,\n updateSingleAncestors,\n getView,\n getInitialValue,\n} from './utils';\nimport { Inner, Target } from './ui';\nimport { pathReducer, focusedPathReducer, focusedChipIndexReducer } from './reducers';\nimport { usePathMaps } from './hooks/usePathMaps';\nimport { StyledPopover, Ul, base, OuterLabel, HelperText } from './Select.styles';\nimport type { ItemContext, MergedSelectProps } from './Select.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { MergedDropdownNodeTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Выпадающий список. Поддерживает выбор одного или нескольких значений.\n */\nexport const selectRoot = (Root: RootProps<HTMLButtonElement, Omit<MergedSelectProps, 'items'>>) =>\n forwardRef<HTMLButtonElement, MergedSelectProps>((props, ref) => {\n const {\n value: outerValue,\n onChange: outerOnChange,\n target = 'textfield-like',\n items,\n placement = 'bottom',\n label,\n labelPlacement = 'outer',\n placeholder,\n helperText,\n disabled = false,\n view,\n size,\n listOverflow,\n listHeight,\n listWidth,\n contentLeft,\n onScrollBottom,\n chipView,\n variant = 'normal',\n portal,\n renderValue,\n renderItem,\n status,\n onItemSelect,\n separator,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n const [pathMap, focusedToValueMap, valueToCheckedMap, valueToItemMap] = usePathMaps(transformedItems);\n\n const value = getInitialValue(outerValue, valueToItemMap);\n\n const onChange = (e: string | number | Array<string | number>) => {\n if (outerOnChange) {\n outerOnChange(e as any);\n }\n };\n\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [focusedChipIndex, dispatchFocusedChipIndex] = useReducer(focusedChipIndexReducer, null);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const closeAfterSelect = outerCloseAfterSelect ?? !props.multiselect;\n\n const targetRef = useOutsideClick<HTMLDivElement>(() => {\n if (focusedChipIndex != null) {\n dispatchFocusedChipIndex({ type: 'reset' });\n }\n });\n\n const handleToggle = (opened: boolean) => {\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n dispatchFocusedChipIndex({ type: 'reset' });\n }\n };\n\n const handleCheckboxChange = (item: MergedDropdownNodeTransformed) => {\n if (props.multiselect) {\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string | number> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n }\n };\n\n const handleItemClick = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (props.multiselect) {\n handleCheckboxChange(item);\n } else {\n if (e) {\n e.stopPropagation();\n }\n\n const checkedCopy = new Map(checked);\n\n const isCurrentChecked = checkedCopy.get(item.value);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isCurrentChecked) {\n checkedCopy.set(item.value, 'done');\n updateSingleAncestors(item, checkedCopy, 'dot');\n }\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n\n if (onItemSelect) {\n onItemSelect(item, e!);\n }\n }\n };\n\n const handleChipClick = (currentValue: string) => {\n handleCheckboxChange(valueToItemMap.get(currentValue)!);\n };\n\n const handlePressDown = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (props.multiselect) {\n handleCheckboxChange(item);\n }\n };\n\n const handleScroll = (e: React.UIEvent<HTMLUListElement>) => {\n if (!onScrollBottom) return;\n\n const { target } = e;\n\n if (\n (target as HTMLElement).scrollHeight - (target as HTMLElement).scrollTop ===\n (target as HTMLElement).clientHeight\n ) {\n onScrollBottom(e);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n value,\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleToggle,\n handlePressDown,\n focusedChipIndex,\n dispatchFocusedChipIndex,\n valueToItemMap,\n multiselect: props.multiselect,\n isTargetAmount: props.isTargetAmount,\n });\n\n const isCurrentListOpen = Boolean(path[0]);\n\n // В данном эффекте мы следим за изменениями value и вносим коррективы в дерево чекбоксов.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value) || typeof value === 'number') {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n }, [outerValue]);\n\n return (\n <Root ref={ref} size={size} view={status ? getView(status) : view} chipView={chipView} {...(rest as any)}>\n {label && labelPlacement === 'outer' && target !== 'button-like' && <OuterLabel>{label}</OuterLabel>}\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiselect: props.multiselect,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n }}\n >\n <StyledPopover\n ref={targetRef}\n opened={isCurrentListOpen}\n placement={getPlacements(placement)}\n usePortal={Boolean(portal)}\n frame={portal}\n onToggle={handleToggle}\n trigger=\"click\"\n target={\n <Target\n opened={isCurrentListOpen}\n value={value}\n valueToItemMap={valueToItemMap}\n focusedPath={focusedPath}\n focusedToValueMap={focusedToValueMap}\n onChipClick={handleChipClick}\n label={label}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n focusedChipIndex={focusedChipIndex}\n labelPlacement={labelPlacement}\n selectProps={props}\n size={size}\n contentLeft={contentLeft}\n disabled={disabled}\n renderValue={renderValue}\n />\n }\n preventOverflow={false}\n closeOnOverlayClick\n listWidth={listWidth}\n >\n {items && (\n <Root size={size} {...(rest as any)}>\n <Ul\n role=\"tree\"\n id=\"tree_level_1\"\n listHeight={listHeight}\n listOverflow={listOverflow}\n onScroll={handleScroll}\n listWidth={listWidth}\n >\n {transformedItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))}\n </Ul>\n </Root>\n )}\n </StyledPopover>\n </Context.Provider>\n\n {helperText && target === 'textfield-like' && <HelperText>{helperText}</HelperText>}\n </Root>\n );\n });\n\nexport const selectConfig = {\n name: 'Select',\n tag: 'div',\n layout: selectRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n chipView: 'default',\n size: 'm',\n },\n};\n"],"names":["Context","createContext","selectRoot","Root","forwardRef","props","ref","outerValue","value","outerOnChange","onChange","_props$target","target","items","_props$placement","placement","label","_props$labelPlacement","labelPlacement","placeholder","helperText","_props$disabled","disabled","view","size","listOverflow","listHeight","listWidth","contentLeft","onScrollBottom","chipView","_props$variant","variant","portal","renderValue","renderItem","status","onItemSelect","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","transformedItems","useMemo","initialItemsTransform","_usePathMaps","usePathMaps","_usePathMaps2","_slicedToArray","pathMap","focusedToValueMap","valueToCheckedMap","valueToItemMap","getInitialValue","e","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useReducer5","focusedChipIndexReducer","_useReducer6","focusedChipIndex","dispatchFocusedChipIndex","_useState","useState","_useState2","checked","setChecked","multiselect","targetRef","useOutsideClick","type","handleToggle","opened","handleCheckboxChange","item","checkedCopy","Map","get","set","updateDescendants","updateAncestors","newValues","forEach","key","push","handleItemClick","isEmpty","stopPropagation","isCurrentChecked","_","updateSingleAncestors","handleChipClick","currentValue","handlePressDown","handleScroll","scrollHeight","scrollTop","clientHeight","_useKeyNavigation","useKeyNavigation","isTargetAmount","onKeyDown","isCurrentListOpen","Boolean","useLayoutEffect","Array","isArray","val","React","createElement","_extends","getView","OuterLabel","Provider","StyledPopover","getPlacements","usePortal","frame","onToggle","trigger","Target","onChipClick","selectProps","preventOverflow","closeOnOverlayClick","Ul","role","id","onScroll","map","index","Inner","concat","currentLevel","HelperText","selectConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, { forwardRef, useState, useReducer, useMemo, createContext, useLayoutEffect } from 'react';\n\nimport { RootProps } from '../../engines';\nimport { isEmpty, getPlacements } from '../../utils';\nimport { useOutsideClick } from '../../hooks';\n\nimport { useKeyNavigation } from './hooks/useKeyboardNavigation';\nimport {\n initialItemsTransform,\n updateAncestors,\n updateDescendants,\n updateSingleAncestors,\n getView,\n getInitialValue,\n} from './utils';\nimport { Inner, Target } from './ui';\nimport { pathReducer, focusedPathReducer, focusedChipIndexReducer } from './reducers';\nimport { usePathMaps } from './hooks/usePathMaps';\nimport { StyledPopover, Ul, base, OuterLabel, HelperText } from './Select.styles';\nimport type { ItemContext, MergedSelectProps } from './Select.types';\nimport { base as viewCSS } from './variations/_view/base';\nimport { base as sizeCSS } from './variations/_size/base';\nimport type { MergedDropdownNodeTransformed } from './ui/Inner/ui/Item/Item.types';\n\nexport const Context = createContext<ItemContext>({} as ItemContext);\n\n/**\n * Выпадающий список. Поддерживает выбор одного или нескольких значений.\n */\nexport const selectRoot = (Root: RootProps<HTMLButtonElement, Omit<MergedSelectProps, 'items'>>) =>\n forwardRef<HTMLButtonElement, MergedSelectProps>((props, ref) => {\n const {\n value: outerValue,\n onChange: outerOnChange,\n target = 'textfield-like',\n items,\n placement = 'bottom',\n label,\n labelPlacement = 'outer',\n placeholder,\n helperText,\n disabled = false,\n view,\n size,\n listOverflow,\n listHeight,\n listWidth,\n contentLeft,\n onScrollBottom,\n chipView,\n variant = 'normal',\n portal,\n renderValue,\n renderItem,\n status,\n onItemSelect,\n separator,\n closeAfterSelect: outerCloseAfterSelect,\n ...rest\n } = props;\n\n const transformedItems = useMemo(() => initialItemsTransform(items || []), [items]);\n const [pathMap, focusedToValueMap, valueToCheckedMap, valueToItemMap] = usePathMaps(transformedItems);\n\n const value = getInitialValue(outerValue, valueToItemMap);\n\n const onChange = (e: string | number | Array<string | number>) => {\n if (outerOnChange) {\n outerOnChange(e as any);\n }\n };\n\n const [path, dispatchPath] = useReducer(pathReducer, []);\n const [focusedPath, dispatchFocusedPath] = useReducer(focusedPathReducer, []);\n const [focusedChipIndex, dispatchFocusedChipIndex] = useReducer(focusedChipIndexReducer, null);\n const [checked, setChecked] = useState(valueToCheckedMap);\n\n const closeAfterSelect = outerCloseAfterSelect ?? !props.multiselect;\n\n const targetRef = useOutsideClick<HTMLDivElement>(() => {\n if (focusedChipIndex != null) {\n dispatchFocusedChipIndex({ type: 'reset' });\n }\n });\n\n const handleToggle = (opened: boolean) => {\n if (opened) {\n dispatchPath({ type: 'opened_first_level' });\n } else {\n dispatchFocusedPath({ type: 'reset' });\n dispatchPath({ type: 'reset' });\n dispatchFocusedChipIndex({ type: 'reset' });\n }\n };\n\n const handleCheckboxChange = (item: MergedDropdownNodeTransformed) => {\n if (props.multiselect) {\n const checkedCopy = new Map(checked);\n\n if (!checkedCopy.get(item.value)) {\n checkedCopy.set(item.value, true);\n updateDescendants(item, checkedCopy, true);\n } else {\n checkedCopy.set(item.value, false);\n updateDescendants(item, checkedCopy, false);\n }\n\n updateAncestors(item, checkedCopy);\n\n const newValues: Array<string | number> = [];\n\n valueToItemMap.forEach((item, key) => {\n if (checkedCopy.get(key)) {\n newValues.push(item.value);\n }\n });\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(newValues);\n }\n }\n };\n\n const handleItemClick = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (!isEmpty(item?.items)) {\n return;\n }\n\n if (props.multiselect) {\n handleCheckboxChange(item);\n } else {\n if (e) {\n e.stopPropagation();\n }\n\n const isCurrentChecked = checked.get(item.value);\n\n if (closeAfterSelect) {\n dispatchPath({ type: 'reset' });\n dispatchFocusedPath({ type: 'reset' });\n }\n\n if (onChange) {\n onChange(isCurrentChecked ? '' : item.value);\n }\n\n if (onItemSelect) {\n onItemSelect(item, e!);\n }\n }\n };\n\n const handleChipClick = (currentValue: string) => {\n handleCheckboxChange(valueToItemMap.get(currentValue)!);\n };\n\n const handlePressDown = (item: MergedDropdownNodeTransformed, e?: React.MouseEvent<HTMLElement>) => {\n if (isEmpty(item.items)) {\n handleItemClick(item, e);\n } else if (props.multiselect) {\n handleCheckboxChange(item);\n }\n };\n\n const handleScroll = (e: React.UIEvent<HTMLUListElement>) => {\n if (!onScrollBottom) return;\n\n const { target } = e;\n\n if (\n (target as HTMLElement).scrollHeight - (target as HTMLElement).scrollTop ===\n (target as HTMLElement).clientHeight\n ) {\n onScrollBottom(e);\n }\n };\n\n const { onKeyDown } = useKeyNavigation({\n value,\n focusedPath,\n dispatchFocusedPath,\n path,\n dispatchPath,\n pathMap,\n focusedToValueMap,\n handleToggle,\n handlePressDown,\n focusedChipIndex,\n dispatchFocusedChipIndex,\n valueToItemMap,\n multiselect: props.multiselect,\n isTargetAmount: props.isTargetAmount,\n });\n\n const isCurrentListOpen = Boolean(path[0]);\n\n // В данном эффекте мы следим за изменениями value и вносим коррективы в дерево чекбоксов.\n useLayoutEffect(() => {\n const checkedCopy = new Map(checked);\n\n checkedCopy.forEach((_, key) => {\n checkedCopy.set(key, false);\n });\n\n if (!isEmpty(value) || typeof value === 'number') {\n if (Array.isArray(value)) {\n value.forEach((val) => {\n checkedCopy.set(val, true);\n updateDescendants(valueToItemMap.get(val)!, checkedCopy, true);\n updateAncestors(valueToItemMap.get(val)!, checkedCopy);\n });\n } else {\n checkedCopy.set(value, 'done');\n updateSingleAncestors(valueToItemMap.get(value)!, checkedCopy, 'dot');\n }\n }\n\n setChecked(checkedCopy);\n }, [outerValue, items]);\n\n return (\n <Root ref={ref} size={size} view={status ? getView(status) : view} chipView={chipView} {...(rest as any)}>\n {label && labelPlacement === 'outer' && target !== 'button-like' && <OuterLabel>{label}</OuterLabel>}\n <Context.Provider\n value={{\n focusedPath,\n checked,\n multiselect: props.multiselect,\n size,\n handleCheckboxChange,\n handleItemClick,\n variant,\n renderItem,\n valueToItemMap,\n }}\n >\n <StyledPopover\n ref={targetRef}\n opened={isCurrentListOpen}\n placement={getPlacements(placement)}\n usePortal={Boolean(portal)}\n frame={portal}\n onToggle={handleToggle}\n trigger=\"click\"\n target={\n <Target\n opened={isCurrentListOpen}\n value={value}\n valueToItemMap={valueToItemMap}\n focusedPath={focusedPath}\n focusedToValueMap={focusedToValueMap}\n onChipClick={handleChipClick}\n label={label}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n focusedChipIndex={focusedChipIndex}\n labelPlacement={labelPlacement}\n selectProps={props}\n size={size}\n contentLeft={contentLeft}\n disabled={disabled}\n renderValue={renderValue}\n />\n }\n preventOverflow={false}\n closeOnOverlayClick\n listWidth={listWidth}\n >\n {items && (\n <Root size={size} {...(rest as any)}>\n <Ul\n role=\"tree\"\n id=\"tree_level_1\"\n listHeight={listHeight}\n listOverflow={listOverflow}\n onScroll={handleScroll}\n listWidth={listWidth}\n >\n {transformedItems.map((item, index) => (\n <Inner\n key={`${index}/0`}\n item={item}\n currentLevel={0}\n path={path}\n dispatchPath={dispatchPath}\n index={index}\n listWidth={listWidth}\n />\n ))}\n </Ul>\n </Root>\n )}\n </StyledPopover>\n </Context.Provider>\n\n {helperText && target === 'textfield-like' && <HelperText>{helperText}</HelperText>}\n </Root>\n );\n });\n\nexport const selectConfig = {\n name: 'Select',\n tag: 'div',\n layout: selectRoot,\n base,\n variations: {\n view: {\n css: viewCSS,\n },\n size: {\n css: sizeCSS,\n },\n },\n defaults: {\n view: 'default',\n chipView: 'default',\n size: 'm',\n },\n};\n"],"names":["Context","createContext","selectRoot","Root","forwardRef","props","ref","outerValue","value","outerOnChange","onChange","_props$target","target","items","_props$placement","placement","label","_props$labelPlacement","labelPlacement","placeholder","helperText","_props$disabled","disabled","view","size","listOverflow","listHeight","listWidth","contentLeft","onScrollBottom","chipView","_props$variant","variant","portal","renderValue","renderItem","status","onItemSelect","outerCloseAfterSelect","closeAfterSelect","rest","_objectWithoutProperties","_excluded","transformedItems","useMemo","initialItemsTransform","_usePathMaps","usePathMaps","_usePathMaps2","_slicedToArray","pathMap","focusedToValueMap","valueToCheckedMap","valueToItemMap","getInitialValue","e","_useReducer","useReducer","pathReducer","_useReducer2","path","dispatchPath","_useReducer3","focusedPathReducer","_useReducer4","focusedPath","dispatchFocusedPath","_useReducer5","focusedChipIndexReducer","_useReducer6","focusedChipIndex","dispatchFocusedChipIndex","_useState","useState","_useState2","checked","setChecked","multiselect","targetRef","useOutsideClick","type","handleToggle","opened","handleCheckboxChange","item","checkedCopy","Map","get","set","updateDescendants","updateAncestors","newValues","forEach","key","push","handleItemClick","isEmpty","stopPropagation","isCurrentChecked","handleChipClick","currentValue","handlePressDown","handleScroll","scrollHeight","scrollTop","clientHeight","_useKeyNavigation","useKeyNavigation","isTargetAmount","onKeyDown","isCurrentListOpen","Boolean","useLayoutEffect","_","Array","isArray","val","updateSingleAncestors","React","createElement","_extends","getView","OuterLabel","Provider","StyledPopover","getPlacements","usePortal","frame","onToggle","trigger","Target","onChipClick","selectProps","preventOverflow","closeOnOverlayClick","Ul","role","id","onScroll","map","index","Inner","concat","currentLevel","HelperText","selectConfig","name","tag","layout","base","variations","css","viewCSS","sizeCSS","defaults"],"mappings":"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"}
|
@@ -5,13 +5,7 @@ var getInitialValue = function getInitialValue(outerValue, valueToItemMap) {
|
|
5
5
|
if (outerValue.length === 0) {
|
6
6
|
return [];
|
7
7
|
}
|
8
|
-
|
9
|
-
outerValue.forEach(function (value) {
|
10
|
-
if (valueToItemMap.has(value)) {
|
11
|
-
updatedValue.push(value);
|
12
|
-
}
|
13
|
-
});
|
14
|
-
return updatedValue;
|
8
|
+
return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
|
15
9
|
}
|
16
10
|
if (valueToItemMap.has(outerValue)) {
|
17
11
|
return outerValue;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getInitialValue.js","sources":["../../../../src/components/Select/utils/getInitialValue.ts"],"sourcesContent":["import { MergedSelectProps } from '../Select.types';\nimport { ValueToItemMapType } from '../hooks/usePathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (outerValue: MergedSelectProps['value'], valueToItemMap: ValueToItemMapType) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n
|
1
|
+
{"version":3,"file":"getInitialValue.js","sources":["../../../../src/components/Select/utils/getInitialValue.ts"],"sourcesContent":["import { MergedSelectProps } from '../Select.types';\nimport { ValueToItemMapType } from '../hooks/usePathMaps';\n\n// Утилита предназначена для фильтрации элементов в value, которые отсутствуют в items.\n// Эти элементы игнорируются и не участвуют в дальнейшей работе компонента.\nexport const getInitialValue = (outerValue: MergedSelectProps['value'], valueToItemMap: ValueToItemMapType) => {\n if (Array.isArray(outerValue)) {\n if (outerValue.length === 0) {\n return [];\n }\n\n return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));\n }\n\n if (valueToItemMap.has(outerValue)) {\n return outerValue;\n }\n\n return '';\n};\n"],"names":["getInitialValue","outerValue","valueToItemMap","Array","isArray","length","filter","has","bind"],"mappings":"AAGA;AACA;AACO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,UAAsC,EAAEC,cAAkC,EAAK;AAC3G,EAAA,IAAIC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;AAC3B,IAAA,IAAIA,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;AACzB,MAAA,OAAO,EAAE,CAAA;AACb,KAAA;AAEA,IAAA,OAAOJ,UAAU,CAACK,MAAM,CAACJ,cAAc,CAACK,GAAG,CAACC,IAAI,CAACN,cAAc,CAAC,CAAC,CAAA;AACrE,GAAA;AAEA,EAAA,IAAIA,cAAc,CAACK,GAAG,CAACN,UAAU,CAAC,EAAE;AAChC,IAAA,OAAOA,UAAU,CAAA;AACrB,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACb;;;;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@salutejs/plasma-new-hope",
|
3
|
-
"version": "0.174.0-canary.1505.
|
3
|
+
"version": "0.174.0-canary.1505.11518120718.0",
|
4
4
|
"description": "Salute Design System blueprint",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "es/index.js",
|
@@ -127,5 +127,5 @@
|
|
127
127
|
"sideEffects": [
|
128
128
|
"*.css"
|
129
129
|
],
|
130
|
-
"gitHead": "
|
130
|
+
"gitHead": "9af9bd7c3441f7430eca85bf33a97c1f428d99f5"
|
131
131
|
}
|
@@ -20,7 +20,7 @@ var _getPathMaps = /*#__PURE__*/require("./hooks/getPathMaps");
|
|
20
20
|
var _Combobox2 = /*#__PURE__*/require("./Combobox.styles");
|
21
21
|
var _base = /*#__PURE__*/require("./variations/_view/base");
|
22
22
|
var _base2 = /*#__PURE__*/require("./variations/_size/base");
|
23
|
-
var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
|
23
|
+
var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "targetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
|
24
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
25
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
26
26
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
@@ -44,6 +44,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
44
44
|
outerValue = props.value,
|
45
45
|
outerOnChange = props.onChange,
|
46
46
|
isTargetAmount = props.isTargetAmount,
|
47
|
+
targetAmount = props.targetAmount,
|
47
48
|
items = props.items,
|
48
49
|
_props$placement = props.placement,
|
49
50
|
placement = _props$placement === void 0 ? 'bottom-start' : _props$placement,
|
@@ -73,9 +74,13 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
73
74
|
outerCloseAfterSelect = props.closeAfterSelect,
|
74
75
|
renderValue = props.renderValue,
|
75
76
|
rest = _objectWithoutProperties(props, _excluded);
|
77
|
+
var transformedItems = (0, _react.useMemo)(function () {
|
78
|
+
return (0, _utils3.initialItemsTransform)(items || []);
|
79
|
+
}, [items]);
|
80
|
+
|
76
81
|
// Создаем структуры для быстрой работы с деревом
|
77
82
|
var _useMemo = (0, _react.useMemo)(function () {
|
78
|
-
return (0, _getPathMaps.getTreeMaps)(
|
83
|
+
return (0, _getPathMaps.getTreeMaps)(transformedItems);
|
79
84
|
}, [items]),
|
80
85
|
_useMemo2 = _slicedToArray(_useMemo, 3),
|
81
86
|
valueToCheckedMap = _useMemo2[0],
|
@@ -94,9 +99,6 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
94
99
|
var floatingPopoverRef = (0, _react.useRef)(null);
|
95
100
|
var inputForkRef = (0, _plasmaCore.useForkRef)(inputRef, ref);
|
96
101
|
var treeId = (0, _plasmaCore.safeUseId)();
|
97
|
-
var transformedItems = (0, _react.useMemo)(function () {
|
98
|
-
return (0, _utils3.initialItemsTransform)(items || []);
|
99
|
-
}, [items]);
|
100
102
|
var filteredItems = (0, _utils3.filterItems)(transformedItems, textValue, (_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label, filter);
|
101
103
|
var _useMemo3 = (0, _react.useMemo)(function () {
|
102
104
|
return (0, _getPathMaps.getPathMap)(filteredItems);
|
@@ -263,16 +265,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
263
265
|
if (e) {
|
264
266
|
e.stopPropagation();
|
265
267
|
}
|
266
|
-
var
|
267
|
-
var isCurrentChecked = checkedCopy.get(item.value);
|
268
|
-
checkedCopy.forEach(function (_, key) {
|
269
|
-
checkedCopy.set(key, false);
|
270
|
-
});
|
271
|
-
if (!isCurrentChecked) {
|
272
|
-
checkedCopy.set(item.value, 'done');
|
273
|
-
(0, _utils3.updateSingleAncestors)(item, checkedCopy, 'dot');
|
274
|
-
}
|
275
|
-
setTextValue(isCurrentChecked ? '' : item.label);
|
268
|
+
var isCurrentChecked = checked.get(item.value);
|
276
269
|
if (!alwaysOpened && closeAfterSelect) {
|
277
270
|
dispatchPath({
|
278
271
|
type: 'reset'
|
@@ -289,14 +282,15 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
289
282
|
if (multiple && Array.isArray(value)) {
|
290
283
|
if (value.length === 0) return [];
|
291
284
|
if (isTargetAmount) {
|
292
|
-
return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(value.length)];
|
285
|
+
return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(targetAmount || value.length)];
|
293
286
|
}
|
294
|
-
var
|
287
|
+
var renderValueMapper = renderValue && function (stringValue) {
|
295
288
|
return renderValue(valueToItemMap.get(stringValue));
|
296
|
-
}
|
289
|
+
};
|
290
|
+
var valueToItemMapper = function valueToItemMapper(stringValue) {
|
297
291
|
return valueToItemMap.get(stringValue).label;
|
298
292
|
};
|
299
|
-
return value.map(
|
293
|
+
return value.map(renderValueMapper || valueToItemMapper);
|
300
294
|
}
|
301
295
|
return [];
|
302
296
|
};
|
@@ -347,7 +341,7 @@ var comboboxRoot = exports.comboboxRoot = function comboboxRoot(Root) {
|
|
347
341
|
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
348
342
|
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
349
343
|
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
350
|
-
}, [outerValue, internalValue]);
|
344
|
+
}, [outerValue, internalValue, items]);
|
351
345
|
return /*#__PURE__*/_react["default"].createElement(Root, {
|
352
346
|
size: size,
|
353
347
|
view: view,
|
@@ -11,13 +11,7 @@ var getInitialValue = exports.getInitialValue = function getInitialValue(outerVa
|
|
11
11
|
if (outerValue.length === 0) {
|
12
12
|
return [];
|
13
13
|
}
|
14
|
-
|
15
|
-
outerValue.forEach(function (value) {
|
16
|
-
if (valueToItemMap.has(value)) {
|
17
|
-
updatedValue.push(value);
|
18
|
-
}
|
19
|
-
});
|
20
|
-
return updatedValue;
|
14
|
+
return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
|
21
15
|
}
|
22
16
|
if (valueToItemMap.has(outerValue)) {
|
23
17
|
return outerValue;
|
@@ -163,15 +163,7 @@ var selectRoot = exports.selectRoot = function selectRoot(Root) {
|
|
163
163
|
if (e) {
|
164
164
|
e.stopPropagation();
|
165
165
|
}
|
166
|
-
var
|
167
|
-
var isCurrentChecked = checkedCopy.get(item.value);
|
168
|
-
checkedCopy.forEach(function (_, key) {
|
169
|
-
checkedCopy.set(key, false);
|
170
|
-
});
|
171
|
-
if (!isCurrentChecked) {
|
172
|
-
checkedCopy.set(item.value, 'done');
|
173
|
-
(0, _utils2.updateSingleAncestors)(item, checkedCopy, 'dot');
|
174
|
-
}
|
166
|
+
var isCurrentChecked = checked.get(item.value);
|
175
167
|
if (closeAfterSelect) {
|
176
168
|
dispatchPath({
|
177
169
|
type: 'reset'
|
@@ -243,7 +235,7 @@ var selectRoot = exports.selectRoot = function selectRoot(Root) {
|
|
243
235
|
}
|
244
236
|
}
|
245
237
|
setChecked(checkedCopy);
|
246
|
-
}, [outerValue]);
|
238
|
+
}, [outerValue, items]);
|
247
239
|
return /*#__PURE__*/_react["default"].createElement(Root, _extends({
|
248
240
|
ref: ref,
|
249
241
|
size: size,
|
@@ -11,13 +11,7 @@ var getInitialValue = exports.getInitialValue = function getInitialValue(outerVa
|
|
11
11
|
if (outerValue.length === 0) {
|
12
12
|
return [];
|
13
13
|
}
|
14
|
-
|
15
|
-
outerValue.forEach(function (value) {
|
16
|
-
if (valueToItemMap.has(value)) {
|
17
|
-
updatedValue.push(value);
|
18
|
-
}
|
19
|
-
});
|
20
|
-
return updatedValue;
|
14
|
+
return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
|
21
15
|
}
|
22
16
|
if (valueToItemMap.has(outerValue)) {
|
23
17
|
return outerValue;
|
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
|
|
68
68
|
control: { type: 'boolean' },
|
69
69
|
if: { arg: 'alwaysOpened', truthy: false },
|
70
70
|
},
|
71
|
+
targetAmount: {
|
72
|
+
control: { type: 'number' },
|
73
|
+
if: { arg: 'isTargetAmount', truthy: true },
|
74
|
+
},
|
71
75
|
},
|
72
76
|
args: {
|
73
77
|
label: 'Label',
|
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
|
|
78
82
|
view: 'default',
|
79
83
|
enableContentLeft: false,
|
80
84
|
isTargetAmount: false,
|
85
|
+
targetAmount: undefined,
|
81
86
|
variant: 'normal',
|
82
87
|
alwaysOpened: false,
|
83
88
|
disabled: false,
|
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
|
|
94
99
|
'placeholder',
|
95
100
|
'helperText',
|
96
101
|
'isTargetAmount',
|
102
|
+
'targetAmount',
|
97
103
|
'closeAfterSelect',
|
98
104
|
'alwaysOpened',
|
99
105
|
'variant',
|
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
|
|
68
68
|
control: { type: 'boolean' },
|
69
69
|
if: { arg: 'alwaysOpened', truthy: false },
|
70
70
|
},
|
71
|
+
targetAmount: {
|
72
|
+
control: { type: 'number' },
|
73
|
+
if: { arg: 'isTargetAmount', truthy: true },
|
74
|
+
},
|
71
75
|
},
|
72
76
|
args: {
|
73
77
|
label: 'Label',
|
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
|
|
78
82
|
view: 'default',
|
79
83
|
enableContentLeft: false,
|
80
84
|
isTargetAmount: false,
|
85
|
+
targetAmount: undefined,
|
81
86
|
variant: 'normal',
|
82
87
|
alwaysOpened: false,
|
83
88
|
disabled: false,
|
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
|
|
94
99
|
'placeholder',
|
95
100
|
'helperText',
|
96
101
|
'isTargetAmount',
|
102
|
+
'targetAmount',
|
97
103
|
'closeAfterSelect',
|
98
104
|
'alwaysOpened',
|
99
105
|
'variant',
|
@@ -1,4 +1,4 @@
|
|
1
|
-
var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
|
1
|
+
var _excluded = ["multiple", "value", "onChange", "isTargetAmount", "targetAmount", "items", "placement", "label", "placeholder", "helperText", "contentLeft", "textBefore", "textAfter", "variant", "listOverflow", "listHeight", "listWidth", "portal", "renderItem", "view", "size", "labelPlacement", "readOnly", "disabled", "alwaysOpened", "filter", "closeAfterSelect", "renderValue"];
|
2
2
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
3
3
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
4
4
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
@@ -35,6 +35,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
35
35
|
outerValue = props.value,
|
36
36
|
outerOnChange = props.onChange,
|
37
37
|
isTargetAmount = props.isTargetAmount,
|
38
|
+
targetAmount = props.targetAmount,
|
38
39
|
items = props.items,
|
39
40
|
_props$placement = props.placement,
|
40
41
|
placement = _props$placement === void 0 ? 'bottom-start' : _props$placement,
|
@@ -64,9 +65,13 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
64
65
|
outerCloseAfterSelect = props.closeAfterSelect,
|
65
66
|
renderValue = props.renderValue,
|
66
67
|
rest = _objectWithoutProperties(props, _excluded);
|
68
|
+
var transformedItems = useMemo(function () {
|
69
|
+
return initialItemsTransform(items || []);
|
70
|
+
}, [items]);
|
71
|
+
|
67
72
|
// Создаем структуры для быстрой работы с деревом
|
68
73
|
var _useMemo = useMemo(function () {
|
69
|
-
return getTreeMaps(
|
74
|
+
return getTreeMaps(transformedItems);
|
70
75
|
}, [items]),
|
71
76
|
_useMemo2 = _slicedToArray(_useMemo, 3),
|
72
77
|
valueToCheckedMap = _useMemo2[0],
|
@@ -85,9 +90,6 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
85
90
|
var floatingPopoverRef = useRef(null);
|
86
91
|
var inputForkRef = useForkRef(inputRef, ref);
|
87
92
|
var treeId = safeUseId();
|
88
|
-
var transformedItems = useMemo(function () {
|
89
|
-
return initialItemsTransform(items || []);
|
90
|
-
}, [items]);
|
91
93
|
var filteredItems = filterItems(transformedItems, textValue, (_valueToItemMap$get2 = valueToItemMap.get(value)) === null || _valueToItemMap$get2 === void 0 ? void 0 : _valueToItemMap$get2.label, filter);
|
92
94
|
var _useMemo3 = useMemo(function () {
|
93
95
|
return getPathMap(filteredItems);
|
@@ -254,16 +256,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
254
256
|
if (e) {
|
255
257
|
e.stopPropagation();
|
256
258
|
}
|
257
|
-
var
|
258
|
-
var isCurrentChecked = checkedCopy.get(item.value);
|
259
|
-
checkedCopy.forEach(function (_, key) {
|
260
|
-
checkedCopy.set(key, false);
|
261
|
-
});
|
262
|
-
if (!isCurrentChecked) {
|
263
|
-
checkedCopy.set(item.value, 'done');
|
264
|
-
updateSingleAncestors(item, checkedCopy, 'dot');
|
265
|
-
}
|
266
|
-
setTextValue(isCurrentChecked ? '' : item.label);
|
259
|
+
var isCurrentChecked = checked.get(item.value);
|
267
260
|
if (!alwaysOpened && closeAfterSelect) {
|
268
261
|
dispatchPath({
|
269
262
|
type: 'reset'
|
@@ -280,14 +273,15 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
280
273
|
if (multiple && Array.isArray(value)) {
|
281
274
|
if (value.length === 0) return [];
|
282
275
|
if (isTargetAmount) {
|
283
|
-
return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(value.length)];
|
276
|
+
return ["\u0412\u044B\u0431\u0440\u0430\u043D\u043E ".concat(targetAmount || value.length)];
|
284
277
|
}
|
285
|
-
var
|
278
|
+
var renderValueMapper = renderValue && function (stringValue) {
|
286
279
|
return renderValue(valueToItemMap.get(stringValue));
|
287
|
-
}
|
280
|
+
};
|
281
|
+
var valueToItemMapper = function valueToItemMapper(stringValue) {
|
288
282
|
return valueToItemMap.get(stringValue).label;
|
289
283
|
};
|
290
|
-
return value.map(
|
284
|
+
return value.map(renderValueMapper || valueToItemMapper);
|
291
285
|
}
|
292
286
|
return [];
|
293
287
|
};
|
@@ -338,7 +332,7 @@ export var comboboxRoot = function comboboxRoot(Root) {
|
|
338
332
|
// В deps мы кладем именно outerValue и internalValue, а не просто value.
|
339
333
|
// Т.к. вначале нужно отфильтровать и провалидировать outerValue и результат положить в переменную.
|
340
334
|
// А переменную, содержащую сложные типы данных, нельзя помещать в deps.
|
341
|
-
}, [outerValue, internalValue]);
|
335
|
+
}, [outerValue, internalValue, items]);
|
342
336
|
return /*#__PURE__*/React.createElement(Root, {
|
343
337
|
size: size,
|
344
338
|
view: view,
|
@@ -5,13 +5,7 @@ export var getInitialValue = function getInitialValue(outerValue, valueToItemMap
|
|
5
5
|
if (outerValue.length === 0) {
|
6
6
|
return [];
|
7
7
|
}
|
8
|
-
|
9
|
-
outerValue.forEach(function (value) {
|
10
|
-
if (valueToItemMap.has(value)) {
|
11
|
-
updatedValue.push(value);
|
12
|
-
}
|
13
|
-
});
|
14
|
-
return updatedValue;
|
8
|
+
return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
|
15
9
|
}
|
16
10
|
if (valueToItemMap.has(outerValue)) {
|
17
11
|
return outerValue;
|
@@ -154,15 +154,7 @@ export var selectRoot = function selectRoot(Root) {
|
|
154
154
|
if (e) {
|
155
155
|
e.stopPropagation();
|
156
156
|
}
|
157
|
-
var
|
158
|
-
var isCurrentChecked = checkedCopy.get(item.value);
|
159
|
-
checkedCopy.forEach(function (_, key) {
|
160
|
-
checkedCopy.set(key, false);
|
161
|
-
});
|
162
|
-
if (!isCurrentChecked) {
|
163
|
-
checkedCopy.set(item.value, 'done');
|
164
|
-
updateSingleAncestors(item, checkedCopy, 'dot');
|
165
|
-
}
|
157
|
+
var isCurrentChecked = checked.get(item.value);
|
166
158
|
if (closeAfterSelect) {
|
167
159
|
dispatchPath({
|
168
160
|
type: 'reset'
|
@@ -234,7 +226,7 @@ export var selectRoot = function selectRoot(Root) {
|
|
234
226
|
}
|
235
227
|
}
|
236
228
|
setChecked(checkedCopy);
|
237
|
-
}, [outerValue]);
|
229
|
+
}, [outerValue, items]);
|
238
230
|
return /*#__PURE__*/React.createElement(Root, _extends({
|
239
231
|
ref: ref,
|
240
232
|
size: size,
|
@@ -5,13 +5,7 @@ export var getInitialValue = function getInitialValue(outerValue, valueToItemMap
|
|
5
5
|
if (outerValue.length === 0) {
|
6
6
|
return [];
|
7
7
|
}
|
8
|
-
|
9
|
-
outerValue.forEach(function (value) {
|
10
|
-
if (valueToItemMap.has(value)) {
|
11
|
-
updatedValue.push(value);
|
12
|
-
}
|
13
|
-
});
|
14
|
-
return updatedValue;
|
8
|
+
return outerValue.filter(valueToItemMap.has.bind(valueToItemMap));
|
15
9
|
}
|
16
10
|
if (valueToItemMap.has(outerValue)) {
|
17
11
|
return outerValue;
|
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
|
|
68
68
|
control: { type: 'boolean' },
|
69
69
|
if: { arg: 'alwaysOpened', truthy: false },
|
70
70
|
},
|
71
|
+
targetAmount: {
|
72
|
+
control: { type: 'number' },
|
73
|
+
if: { arg: 'isTargetAmount', truthy: true },
|
74
|
+
},
|
71
75
|
},
|
72
76
|
args: {
|
73
77
|
label: 'Label',
|
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
|
|
78
82
|
view: 'default',
|
79
83
|
enableContentLeft: false,
|
80
84
|
isTargetAmount: false,
|
85
|
+
targetAmount: undefined,
|
81
86
|
variant: 'normal',
|
82
87
|
alwaysOpened: false,
|
83
88
|
disabled: false,
|
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
|
|
94
99
|
'placeholder',
|
95
100
|
'helperText',
|
96
101
|
'isTargetAmount',
|
102
|
+
'targetAmount',
|
97
103
|
'closeAfterSelect',
|
98
104
|
'alwaysOpened',
|
99
105
|
'variant',
|
@@ -68,6 +68,10 @@ const meta: Meta<StorySelectProps> = {
|
|
68
68
|
control: { type: 'boolean' },
|
69
69
|
if: { arg: 'alwaysOpened', truthy: false },
|
70
70
|
},
|
71
|
+
targetAmount: {
|
72
|
+
control: { type: 'number' },
|
73
|
+
if: { arg: 'isTargetAmount', truthy: true },
|
74
|
+
},
|
71
75
|
},
|
72
76
|
args: {
|
73
77
|
label: 'Label',
|
@@ -78,6 +82,7 @@ const meta: Meta<StorySelectProps> = {
|
|
78
82
|
view: 'default',
|
79
83
|
enableContentLeft: false,
|
80
84
|
isTargetAmount: false,
|
85
|
+
targetAmount: undefined,
|
81
86
|
variant: 'normal',
|
82
87
|
alwaysOpened: false,
|
83
88
|
disabled: false,
|
@@ -94,6 +99,7 @@ const meta: Meta<StorySelectProps> = {
|
|
94
99
|
'placeholder',
|
95
100
|
'helperText',
|
96
101
|
'isTargetAmount',
|
102
|
+
'targetAmount',
|
97
103
|
'closeAfterSelect',
|
98
104
|
'alwaysOpened',
|
99
105
|
'variant',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4F,MAAM,OAAO,CAAC;AAIjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqB7C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKnE,eAAO,MAAM,OAAO,4BAAgD,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,YAAY,SAAU,UAAU,gBAAgB,EAAE,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC,+
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/Combobox/ComboboxNew/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4F,MAAM,OAAO,CAAC;AAIjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqB7C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKnE,eAAO,MAAM,OAAO,4BAAgD,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,YAAY,SAAU,UAAU,gBAAgB,EAAE,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC,+IA2YtF,CAAC;AAEP,eAAO,MAAM,cAAc;;;mBA7YQ,UAAU,gBAAgB,EAAE,KAAK,aAAa,EAAE,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAka3F,CAAC"}
|
@@ -13,12 +13,18 @@ declare type IsMultiselect<T extends ItemOption = ItemOption> = {
|
|
13
13
|
* @default false
|
14
14
|
*/
|
15
15
|
isTargetAmount?: never | false;
|
16
|
+
/**
|
17
|
+
* Ручная настройка количества выбранных элементов. Только при isTargetAmount === true.
|
18
|
+
* @default undefined
|
19
|
+
*/
|
20
|
+
targetAmount?: never;
|
16
21
|
renderValue?: never;
|
17
22
|
} | {
|
18
23
|
multiple: true;
|
19
24
|
value?: Array<string>;
|
20
25
|
onChange?: (value: Array<string>) => void;
|
21
|
-
isTargetAmount?:
|
26
|
+
isTargetAmount?: true;
|
27
|
+
targetAmount?: number;
|
22
28
|
/**
|
23
29
|
* Callback для кастомной настройки значения в селекте.
|
24
30
|
*/
|