@hh.ru/magritte-ui-chips-input 2.1.2 → 2.3.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/ChipsInput.js +30 -9
- package/ChipsInput.js.map +1 -1
- package/UncontrolledChipsInput.d.ts +8 -0
- package/UncontrolledChipsInput.js +25 -0
- package/UncontrolledChipsInput.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +5 -5
- package/types.d.ts +25 -6
package/ChipsInput.js
CHANGED
|
@@ -10,11 +10,27 @@ import { Suggest } from '@hh.ru/magritte-ui-suggest';
|
|
|
10
10
|
const getSelectValuesAsArray = (values) => {
|
|
11
11
|
return Array.isArray(values) ? values : [values].filter(Boolean);
|
|
12
12
|
};
|
|
13
|
+
const getInitialSelectValue = (type, chips, options, multiple) => {
|
|
14
|
+
if (type === 'suggest') {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
// в случае multiple можно просто собрать value
|
|
18
|
+
if (multiple) {
|
|
19
|
+
return chips.map((chip) => chip.value);
|
|
20
|
+
}
|
|
21
|
+
// иначе нужно найти хотя бы один option, который подходит
|
|
22
|
+
const valuesFromOptions = options.map(({ value }) => value);
|
|
23
|
+
const suitableItem = chips.find((chip) => valuesFromOptions.includes(chip.value));
|
|
24
|
+
return suitableItem?.value || '';
|
|
25
|
+
};
|
|
13
26
|
const ChipsInputComponent = ({ type, state, onChange: onChangeExternal, triggerProps, suggestProps, selectProps, }, ref) => {
|
|
14
27
|
const chipsTriggerRef = useRef(null);
|
|
15
28
|
const chipsTriggerRefCallback = useMultipleRefs(ref, chipsTriggerRef);
|
|
16
29
|
const { allowArbitraryValues } = triggerProps;
|
|
17
|
-
const [selectState, setSelectState] = useState((
|
|
30
|
+
const [selectState, setSelectState] = useState(() => {
|
|
31
|
+
const initialState = getInitialSelectValue(type, state.chips, selectProps?.options || [], selectProps?.multiple || false);
|
|
32
|
+
return initialState;
|
|
33
|
+
});
|
|
18
34
|
if (type === 'suggest') {
|
|
19
35
|
return (jsx(Suggest, { ...suggestProps, onChange: (value, isValueFromList) => {
|
|
20
36
|
if (!isValueFromList) {
|
|
@@ -27,18 +43,20 @@ const ChipsInputComponent = ({ type, state, onChange: onChangeExternal, triggerP
|
|
|
27
43
|
component: Input,
|
|
28
44
|
props: {
|
|
29
45
|
value: state.value,
|
|
46
|
+
'data-qa': 'chips-input-suggest-search',
|
|
30
47
|
},
|
|
31
|
-
}, onSearchSubmit: (event) => {
|
|
32
|
-
if (!allowArbitraryValues) {
|
|
48
|
+
}, onSearchSubmit: (event, onCloseBottomSheet, optionsCount) => {
|
|
49
|
+
if (!allowArbitraryValues || optionsCount > 0) {
|
|
33
50
|
return;
|
|
34
51
|
}
|
|
35
52
|
const value = event.target.value;
|
|
36
53
|
if (value) {
|
|
37
54
|
onChangeExternal({ value: '', chips: [...state.chips, { value }] });
|
|
55
|
+
onCloseBottomSheet();
|
|
38
56
|
}
|
|
39
57
|
}, renderTrigger: ({ props }) => {
|
|
40
58
|
const { onChange, wrapperRef, onFocus, onKeyDown } = props;
|
|
41
|
-
return (jsx(ChipsTrigger, { ...triggerProps, state: state, ref: chipsTriggerRefCallback, wrapperRef: wrapperRef, onKeyDown: onKeyDown, onFocus: onFocus, onChange: (newState) => {
|
|
59
|
+
return (jsx(ChipsTrigger, { ...triggerProps, state: state, ref: chipsTriggerRefCallback, wrapperRef: wrapperRef, onKeyDown: onKeyDown, onFocus: onFocus, "data-qa": "chips-input-suggest-trigger", onChange: (newState) => {
|
|
42
60
|
onChangeExternal(newState);
|
|
43
61
|
onChange?.(newState.value);
|
|
44
62
|
} }));
|
|
@@ -49,6 +67,7 @@ const ChipsInputComponent = ({ type, state, onChange: onChangeExternal, triggerP
|
|
|
49
67
|
const valuesArr = getSelectValuesAsArray(newValues);
|
|
50
68
|
onChangeExternal({
|
|
51
69
|
value: '',
|
|
70
|
+
// из новый значений селекта собираем чипсы
|
|
52
71
|
chips: valuesArr.map((value) => {
|
|
53
72
|
const item = options.find((option) => option.value === value);
|
|
54
73
|
if (item) {
|
|
@@ -58,25 +77,27 @@ const ChipsInputComponent = ({ type, state, onChange: onChangeExternal, triggerP
|
|
|
58
77
|
}),
|
|
59
78
|
});
|
|
60
79
|
setSelectState(newValues);
|
|
61
|
-
}, onSearchSubmit: (event) => {
|
|
62
|
-
if (!allowArbitraryValues) {
|
|
80
|
+
}, onSearchSubmit: (event, onCloseBottomSheet, optionsCount) => {
|
|
81
|
+
if (!allowArbitraryValues || optionsCount > 0) {
|
|
63
82
|
return;
|
|
64
83
|
}
|
|
65
84
|
const value = event.target.value;
|
|
66
85
|
if (value) {
|
|
67
86
|
onChangeExternal({ value: '', chips: [...state.chips, { value }] });
|
|
87
|
+
onCloseBottomSheet();
|
|
68
88
|
}
|
|
69
89
|
}, onBottomSheetOpen: () => chipsTriggerRef.current?.blur(), triggerProps: { size: 'large' }, renderTrigger: ({ ref, setSearchValue, onKeyDown, onBlur, onFocus }) => {
|
|
70
|
-
return (jsx(ChipsTrigger, { ...triggerProps, allowArbitraryValues: allowArbitraryValues, state: state, ref: chipsTriggerRefCallback, wrapperRef: ref, onKeyDown: onKeyDown, onBlur: onBlur, onFocus: onFocus, onChange: (newState) => {
|
|
90
|
+
return (jsx(ChipsTrigger, { ...triggerProps, allowArbitraryValues: allowArbitraryValues, state: state, ref: chipsTriggerRefCallback, wrapperRef: ref, onKeyDown: onKeyDown, onBlur: onBlur, onFocus: onFocus, "data-qa": "chips-input-select-trigger", onChange: (newState) => {
|
|
71
91
|
onChangeExternal(newState);
|
|
72
92
|
setSearchValue(newState.value);
|
|
73
93
|
if (!multiple) {
|
|
74
|
-
const {
|
|
75
|
-
if (
|
|
94
|
+
const { event } = newState;
|
|
95
|
+
if (event?.type === 'remove') {
|
|
76
96
|
setSelectState('');
|
|
77
97
|
}
|
|
78
98
|
return;
|
|
79
99
|
}
|
|
100
|
+
// на основе чипсов собираем новый стейт селекта
|
|
80
101
|
setSelectState(newState.chips.map(({ value }) => value));
|
|
81
102
|
} }));
|
|
82
103
|
} }));
|
package/ChipsInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChipsInput.js","sources":["../src/ChipsInput.tsx"],"sourcesContent":["import { forwardRef, useRef, ForwardedRef, ReactElement, useState } from 'react';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { ChipsInputProps } from '@hh.ru/magritte-ui-chips-input/types';\nimport { ChipsTrigger } from '@hh.ru/magritte-ui-chips-trigger';\nimport { Input } from '@hh.ru/magritte-ui-input';\nimport { Select } from '@hh.ru/magritte-ui-select';\nimport { Suggest } from '@hh.ru/magritte-ui-suggest';\n\ntype ValueType<MultipleType> = [MultipleType] extends [true] ? string[] : string;\n\n// сhips trigger работает только массивом\nconst getSelectValuesAsArray = (values: string[] | string): string[] => {\n return Array.isArray(values) ? values : [values].filter(Boolean);\n};\n\nconst ChipsInputComponent = <MultipleType extends boolean, DataType>(\n {\n type,\n state,\n onChange: onChangeExternal,\n triggerProps,\n suggestProps,\n selectProps,\n }: ChipsInputProps<MultipleType, DataType>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const chipsTriggerRef = useRef<HTMLInputElement>(null);\n const chipsTriggerRefCallback = useMultipleRefs(ref, chipsTriggerRef);\n const { allowArbitraryValues } = triggerProps;\n const [selectState, setSelectState] = useState((selectProps?.multiple ? [] : '') as ValueType<MultipleType>);\n\n if (type === 'suggest') {\n return (\n <Suggest\n {...suggestProps}\n onChange={(value, isValueFromList) => {\n if (!isValueFromList) {\n return;\n }\n if (!state.chips.some((chip) => chip.value === value)) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n }\n }}\n onBottomSheetOpen={() => chipsTriggerRef.current?.blur()}\n input={{\n component: Input,\n props: {\n value: state.value,\n },\n }}\n onSearchSubmit={(event) => {\n if (!allowArbitraryValues) {\n return;\n }\n const value = (event.target as HTMLInputElement).value;\n if (value) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n }\n }}\n renderTrigger={({ props }) => {\n const { onChange, wrapperRef, onFocus, onKeyDown } = props;\n return (\n <ChipsTrigger\n {...triggerProps}\n state={state}\n ref={chipsTriggerRefCallback}\n wrapperRef={wrapperRef}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onChange={(newState) => {\n onChangeExternal(newState);\n onChange?.(newState.value);\n }}\n />\n );\n }}\n />\n );\n }\n\n const { multiple, options } = selectProps;\n return (\n <Select\n {...selectProps}\n searchable\n multiple={multiple}\n value={selectState}\n onChange={(newValues) => {\n const valuesArr = getSelectValuesAsArray(newValues);\n onChangeExternal({\n value: '',\n chips: valuesArr.map((value) => {\n const item = options.find((option) => option.value === value);\n if (item) {\n return { value: item.value, label: item.label as string };\n }\n return { value };\n }),\n });\n setSelectState(newValues);\n }}\n onSearchSubmit={(event) => {\n if (!allowArbitraryValues) {\n return;\n }\n const value = (event.target as HTMLInputElement).value;\n if (value) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n }\n }}\n onBottomSheetOpen={() => chipsTriggerRef.current?.blur()}\n triggerProps={{ size: 'large' }}\n renderTrigger={({ ref, setSearchValue, onKeyDown, onBlur, onFocus }) => {\n return (\n <ChipsTrigger\n {...triggerProps}\n allowArbitraryValues={allowArbitraryValues}\n state={state}\n ref={chipsTriggerRefCallback}\n wrapperRef={ref}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n onFocus={onFocus}\n onChange={(newState) => {\n onChangeExternal(newState);\n setSearchValue(newState.value);\n if (!multiple) {\n const { eventType } = newState;\n if (eventType === 'removeChipByBackspace' || eventType === 'removeChipByCross') {\n setSelectState('' as ValueType<MultipleType>);\n }\n return;\n }\n setSelectState(newState.chips.map(({ value }) => value) as ValueType<MultipleType>);\n }}\n />\n );\n }}\n />\n );\n};\n\nconst ChipsInput = forwardRef(ChipsInputComponent) as (<MultipleType extends boolean, DataType>(\n props: ChipsInputProps<MultipleType, DataType> & { ref?: ForwardedRef<HTMLInputElement> }\n) => ReactElement | null) & { displayName: string };\n\nChipsInput.displayName = 'ChipsInput';\n\nexport { ChipsInput };\n"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChipsInput.js","sources":["../src/ChipsInput.tsx"],"sourcesContent":["import { forwardRef, useRef, ForwardedRef, ReactElement, useState } from 'react';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { ChipsInputProps } from '@hh.ru/magritte-ui-chips-input/types';\nimport { ChipsTrigger } from '@hh.ru/magritte-ui-chips-trigger';\nimport { Input } from '@hh.ru/magritte-ui-input';\nimport { Select, SelectProps } from '@hh.ru/magritte-ui-select';\nimport { Suggest } from '@hh.ru/magritte-ui-suggest';\n\ntype ValueType<MultipleType> = [MultipleType] extends [true] ? string[] : string;\n\n// сhips trigger работает только массивом\nconst getSelectValuesAsArray = (values: string[] | string): string[] => {\n return Array.isArray(values) ? values : [values].filter(Boolean);\n};\n\nconst getInitialSelectValue = <MultipleType extends boolean, DataType>(\n type: ChipsInputProps<MultipleType, DataType>['type'],\n chips: ChipsInputProps<MultipleType, DataType>['state']['chips'],\n options: SelectProps<MultipleType, DataType>['options'],\n multiple: boolean\n) => {\n if (type === 'suggest') {\n return '';\n }\n // в случае multiple можно просто собрать value\n if (multiple) {\n return chips.map((chip) => chip.value);\n }\n // иначе нужно найти хотя бы один option, который подходит\n const valuesFromOptions = options.map(({ value }) => value);\n const suitableItem = chips.find((chip) => valuesFromOptions.includes(chip.value));\n return suitableItem?.value || '';\n};\n\nconst ChipsInputComponent = <MultipleType extends boolean, DataType>(\n {\n type,\n state,\n onChange: onChangeExternal,\n triggerProps,\n suggestProps,\n selectProps,\n }: ChipsInputProps<MultipleType, DataType>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const chipsTriggerRef = useRef<HTMLInputElement>(null);\n const chipsTriggerRefCallback = useMultipleRefs(ref, chipsTriggerRef);\n const { allowArbitraryValues } = triggerProps;\n const [selectState, setSelectState] = useState(() => {\n const initialState = getInitialSelectValue(\n type,\n state.chips,\n selectProps?.options || [],\n selectProps?.multiple || false\n );\n return initialState as ValueType<MultipleType>;\n });\n\n if (type === 'suggest') {\n return (\n <Suggest\n {...suggestProps}\n onChange={(value, isValueFromList) => {\n if (!isValueFromList) {\n return;\n }\n if (!state.chips.some((chip) => chip.value === value)) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n }\n }}\n onBottomSheetOpen={() => chipsTriggerRef.current?.blur()}\n input={{\n component: Input,\n props: {\n value: state.value,\n 'data-qa': 'chips-input-suggest-search',\n },\n }}\n onSearchSubmit={(event, onCloseBottomSheet, optionsCount) => {\n if (!allowArbitraryValues || optionsCount > 0) {\n return;\n }\n const value = (event.target as HTMLInputElement).value;\n if (value) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n onCloseBottomSheet();\n }\n }}\n renderTrigger={({ props }) => {\n const { onChange, wrapperRef, onFocus, onKeyDown } = props;\n return (\n <ChipsTrigger\n {...triggerProps}\n state={state}\n ref={chipsTriggerRefCallback}\n wrapperRef={wrapperRef}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n data-qa=\"chips-input-suggest-trigger\"\n onChange={(newState) => {\n onChangeExternal(newState);\n onChange?.(newState.value);\n }}\n />\n );\n }}\n />\n );\n }\n\n const { multiple, options } = selectProps;\n return (\n <Select\n {...selectProps}\n searchable\n multiple={multiple}\n value={selectState}\n onChange={(newValues) => {\n const valuesArr = getSelectValuesAsArray(newValues);\n onChangeExternal({\n value: '',\n // из новый значений селекта собираем чипсы\n chips: valuesArr.map((value) => {\n const item = options.find((option) => option.value === value);\n if (item) {\n return { value: item.value, label: item.label as string };\n }\n return { value };\n }),\n });\n setSelectState(newValues);\n }}\n onSearchSubmit={(event, onCloseBottomSheet, optionsCount) => {\n if (!allowArbitraryValues || optionsCount > 0) {\n return;\n }\n const value = (event.target as HTMLInputElement).value;\n if (value) {\n onChangeExternal({ value: '', chips: [...state.chips, { value }] });\n onCloseBottomSheet();\n }\n }}\n onBottomSheetOpen={() => chipsTriggerRef.current?.blur()}\n triggerProps={{ size: 'large' }}\n renderTrigger={({ ref, setSearchValue, onKeyDown, onBlur, onFocus }) => {\n return (\n <ChipsTrigger\n {...triggerProps}\n allowArbitraryValues={allowArbitraryValues}\n state={state}\n ref={chipsTriggerRefCallback}\n wrapperRef={ref}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n onFocus={onFocus}\n data-qa=\"chips-input-select-trigger\"\n onChange={(newState) => {\n onChangeExternal(newState);\n setSearchValue(newState.value);\n if (!multiple) {\n const { event } = newState;\n if (event?.type === 'remove') {\n setSelectState('' as ValueType<MultipleType>);\n }\n return;\n }\n // на основе чипсов собираем новый стейт селекта\n setSelectState(newState.chips.map(({ value }) => value) as ValueType<MultipleType>);\n }}\n />\n );\n }}\n />\n );\n};\n\nconst ChipsInput = forwardRef(ChipsInputComponent) as (<MultipleType extends boolean, DataType>(\n props: ChipsInputProps<MultipleType, DataType> & { ref?: ForwardedRef<HTMLInputElement> }\n) => ReactElement | null) & { displayName: string };\n\nChipsInput.displayName = 'ChipsInput';\n\nexport { ChipsInput };\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ForwardedRef, ReactElement } from 'react';
|
|
2
|
+
import { UncontrolledChipsInputProps } from '@hh.ru/magritte-ui-chips-input/types';
|
|
3
|
+
declare const UncontrolledChipsInput: (<MultipleType extends boolean, DataType>(props: UncontrolledChipsInputProps<MultipleType, DataType> & {
|
|
4
|
+
ref?: ForwardedRef<HTMLInputElement>;
|
|
5
|
+
}) => ReactElement | null) & {
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|
|
8
|
+
export { UncontrolledChipsInput };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, useState } from 'react';
|
|
3
|
+
import { ChipsInput } from './ChipsInput.js';
|
|
4
|
+
import '@hh.ru/magritte-common-use-multiple-refs';
|
|
5
|
+
import '@hh.ru/magritte-ui-chips-trigger';
|
|
6
|
+
import '@hh.ru/magritte-ui-input';
|
|
7
|
+
import '@hh.ru/magritte-ui-select';
|
|
8
|
+
import '@hh.ru/magritte-ui-suggest';
|
|
9
|
+
|
|
10
|
+
const DEFAULT_STATE = {
|
|
11
|
+
value: '',
|
|
12
|
+
chips: [],
|
|
13
|
+
};
|
|
14
|
+
const UncontrolledChipsInputComponent = ({ state: defaultState = DEFAULT_STATE, onChange, name, ...restProps }, ref) => {
|
|
15
|
+
const [state, setState] = useState({ ...defaultState });
|
|
16
|
+
return (jsxs(Fragment, { children: [jsx(ChipsInput, { ...restProps, state: state, onChange: (newState) => {
|
|
17
|
+
setState(newState);
|
|
18
|
+
onChange?.(newState);
|
|
19
|
+
}, ref: ref }), state.chips.map((chip) => (jsx("input", { type: "hidden", name: name, value: chip.value }, chip.value)))] }));
|
|
20
|
+
};
|
|
21
|
+
const UncontrolledChipsInput = forwardRef(UncontrolledChipsInputComponent);
|
|
22
|
+
UncontrolledChipsInput.displayName = 'UncontrolledChipsInput';
|
|
23
|
+
|
|
24
|
+
export { UncontrolledChipsInput };
|
|
25
|
+
//# sourceMappingURL=UncontrolledChipsInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UncontrolledChipsInput.js","sources":["../src/UncontrolledChipsInput.tsx"],"sourcesContent":["import { forwardRef, useState, ForwardedRef, ReactElement } from 'react';\n\nimport { ChipsInput } from '@hh.ru/magritte-ui-chips-input/ChipsInput';\nimport { UncontrolledChipsInputProps } from '@hh.ru/magritte-ui-chips-input/types';\nimport { ChipsTriggerState } from '@hh.ru/magritte-ui-chips-trigger/types';\n\nconst DEFAULT_STATE = {\n value: '',\n chips: [],\n};\n\nconst UncontrolledChipsInputComponent = <MultipleType extends boolean, DataType>(\n {\n state: defaultState = DEFAULT_STATE,\n onChange,\n name,\n ...restProps\n }: UncontrolledChipsInputProps<MultipleType, DataType>,\n ref: ForwardedRef<HTMLInputElement>\n) => {\n const [state, setState] = useState<ChipsTriggerState>({ ...defaultState });\n return (\n <>\n <ChipsInput\n {...restProps}\n state={state}\n onChange={(newState) => {\n setState(newState);\n onChange?.(newState);\n }}\n ref={ref}\n />\n {state.chips.map((chip) => (\n <input type=\"hidden\" name={name} value={chip.value} key={chip.value} />\n ))}\n </>\n );\n};\n\nconst UncontrolledChipsInput = forwardRef(UncontrolledChipsInputComponent) as (<MultipleType extends boolean, DataType>(\n props: UncontrolledChipsInputProps<MultipleType, DataType> & { ref?: ForwardedRef<HTMLInputElement> }\n) => ReactElement | null) & { displayName: string };\n\nUncontrolledChipsInput.displayName = 'UncontrolledChipsInput';\n\nexport { UncontrolledChipsInput };\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;AAMA,MAAM,aAAa,GAAG;AAClB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,+BAA+B,GAAG,CACpC,EACI,KAAK,EAAE,YAAY,GAAG,aAAa,EACnC,QAAQ,EACR,IAAI,EACJ,GAAG,SAAS,EACsC,EACtD,GAAmC,KACnC;AACA,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC3E,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,UAAU,EAAA,EAAA,GACH,SAAS,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,QAAQ,KAAI;oBACnB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnB,oBAAA,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACzB,iBAAC,EACD,GAAG,EAAE,GAAG,EACV,CAAA,EACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAClBA,GAAO,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAO,EAAA,IAAI,CAAC,KAAK,CAAI,CAC1E,CAAC,CAAA,EAAA,CACH,EACL;AACN,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,UAAU,CAAC,+BAA+B,EAErB;AAEpD,sBAAsB,CAAC,WAAW,GAAG,wBAAwB;;;;"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-chips-input",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@hh.ru/magritte-common-use-multiple-refs": "1.1.4",
|
|
30
|
-
"@hh.ru/magritte-ui-chips-trigger": "
|
|
30
|
+
"@hh.ru/magritte-ui-chips-trigger": "3.0.0",
|
|
31
31
|
"@hh.ru/magritte-ui-input": "7.0.2",
|
|
32
|
-
"@hh.ru/magritte-ui-select": "8.
|
|
33
|
-
"@hh.ru/magritte-ui-suggest": "6.
|
|
32
|
+
"@hh.ru/magritte-ui-select": "8.3.1",
|
|
33
|
+
"@hh.ru/magritte-ui-suggest": "6.3.1"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "dbc45b2e706faaa5274d3e9de158a37c5dce7125"
|
|
36
36
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
import { ChipsTriggerProps } from '@hh.ru/magritte-ui-chips-trigger';
|
|
2
2
|
import { SelectProps } from '@hh.ru/magritte-ui-select/types';
|
|
3
3
|
import { SuggestProps } from '@hh.ru/magritte-ui-suggest';
|
|
4
|
-
type
|
|
5
|
-
type TriggerPropsHelper = Omit<ChipsTriggerProps, 'expanded' | 'toggleExpanded' | 'wrapperRef' | 'ref' | 'state' | 'onChange' | 'onKeyDown' | 'onFocus'>;
|
|
4
|
+
type TriggerPropsHelper = Omit<ChipsTriggerProps, 'expanded' | 'toggleExpanded' | 'wrapperRef' | 'ref' | 'state' | 'onChange' | 'onKeyDown' | 'onFocus' | 'data-qa'>;
|
|
6
5
|
type SuggestPropsHelper<DataType> = Omit<SuggestProps<DataType>, 'inputValue' | 'onChange' | 'renderTrigger' | 'onSearchSubmit' | 'onBottomSheetOpen' | 'input'>;
|
|
7
6
|
type SelectPropsHelper<MultipleType extends boolean, DataType> = Omit<SelectProps<MultipleType, DataType>, 'value' | 'onChange' | 'renderTrigger' | 'onSearchSubmit' | 'onBottomSheetOpen' | 'triggerProps' | 'searchable'>;
|
|
8
|
-
export interface
|
|
9
|
-
|
|
7
|
+
export interface ChipsInputBaseProps {
|
|
8
|
+
/** Свойства chips-trigger */
|
|
9
|
+
triggerProps: TriggerPropsHelper;
|
|
10
|
+
/** Name атрибут chips-inpupt */
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ChipsInputStateProps {
|
|
14
|
+
/** Состояние для chips-input */
|
|
10
15
|
state: ChipsTriggerProps['state'];
|
|
16
|
+
/** Событие изменения для состояния */
|
|
11
17
|
onChange: ChipsTriggerProps['onChange'];
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
}
|
|
19
|
+
interface ChipsInputSelectProps<MultipleType extends boolean, DataType> {
|
|
20
|
+
/** Тип для chips-input */
|
|
21
|
+
type: 'select';
|
|
22
|
+
/** Свойства select */
|
|
14
23
|
selectProps: SelectPropsHelper<MultipleType, DataType>;
|
|
24
|
+
suggestProps?: never;
|
|
25
|
+
}
|
|
26
|
+
interface ChipsInputSuggestProps<DataType> {
|
|
27
|
+
/** Тип для chips-input */
|
|
28
|
+
type: 'suggest';
|
|
29
|
+
/** Свойства suggest */
|
|
30
|
+
suggestProps: SuggestPropsHelper<DataType>;
|
|
31
|
+
selectProps?: never;
|
|
15
32
|
}
|
|
33
|
+
export type ChipsInputProps<MultipleType extends boolean, DataType> = ChipsInputBaseProps & ChipsInputStateProps & (ChipsInputSelectProps<MultipleType, DataType> | ChipsInputSuggestProps<DataType>);
|
|
34
|
+
export type UncontrolledChipsInputProps<MultipleType extends boolean, DataType> = ChipsInputBaseProps & Partial<ChipsInputStateProps> & (ChipsInputSelectProps<MultipleType, DataType> | ChipsInputSuggestProps<DataType>);
|
|
16
35
|
export {};
|