@antscorp/antsomi-ui 1.3.5-beta.696 → 1.3.5-beta.698
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/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.d.ts +13 -0
- package/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.js +2 -2
- package/es/components/molecules/MatchAnySelect/MatchesAnySelect.js +21 -19
- package/es/components/molecules/MatchAnySelect/mock.d.ts +21 -0
- package/es/components/molecules/MatchAnySelect/mock.js +3309 -0
- package/es/components/molecules/SearchPopover/components/PopoverSelect/PopoverSelect.js +6 -2
- package/package.json +1 -1
|
@@ -22,6 +22,19 @@ export interface AdvancedPickerProps {
|
|
|
22
22
|
showTime?: boolean;
|
|
23
23
|
timezone?: string;
|
|
24
24
|
isViewMode?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @example const disabledTime = () => ({
|
|
28
|
+
disabledHours: () => range(0, 24).splice(4, 20),
|
|
29
|
+
disabledMinutes: () => range(30, 60),
|
|
30
|
+
disabledSeconds: () => [55, 56],
|
|
31
|
+
});
|
|
32
|
+
*/
|
|
33
|
+
disabledTime?: () => {
|
|
34
|
+
disabledHours: () => number[];
|
|
35
|
+
disabledMinutes: () => number[];
|
|
36
|
+
disabledSeconds: () => number[];
|
|
37
|
+
};
|
|
25
38
|
/**
|
|
26
39
|
* Only show fixed calendar (hide dynamic and )
|
|
27
40
|
*/
|
|
@@ -30,7 +30,7 @@ const { Text } = Typography;
|
|
|
30
30
|
export const AdvancedPicker = props => {
|
|
31
31
|
var _a, _b;
|
|
32
32
|
// Props
|
|
33
|
-
const { label, inputStyle, popupStyle, dateTypeKeysShow, calculationTypeKeysShow, showCalculationTypeCondition, defaultDateTypeKey, valueType, option: propsOption, operatorKey, type, date: propsDate, format, formatInputDisplay, errorMessage, disableAfterDate, disableBeforeDate, showTime, disabled, timezone, isViewMode, onlyShowFixed, onUpdatedNewDate, onApply, } = props;
|
|
33
|
+
const { label, inputStyle, popupStyle, dateTypeKeysShow, calculationTypeKeysShow, showCalculationTypeCondition, defaultDateTypeKey, valueType, option: propsOption, operatorKey, type, date: propsDate, format, formatInputDisplay, errorMessage, disableAfterDate, disableBeforeDate, showTime, disabled, timezone, isViewMode, onlyShowFixed, disabledTime, onUpdatedNewDate, onApply, } = props;
|
|
34
34
|
// Memo
|
|
35
35
|
const newDateTypes = useMemo(() => {
|
|
36
36
|
if (dateTypeKeysShow && dateTypeKeysShow.length) {
|
|
@@ -397,7 +397,7 @@ export const AdvancedPicker = props => {
|
|
|
397
397
|
// style={{
|
|
398
398
|
// width: 120,
|
|
399
399
|
// }}
|
|
400
|
-
disabledDate: disableDate, format: formatDisplay, showToday: false, popupClassName: clsx('antsomi-picker-dropdown__advanced', {
|
|
400
|
+
disabledDate: disableDate, disabledTime: disabledTime, format: formatDisplay, showToday: false, popupClassName: clsx('antsomi-picker-dropdown__advanced', {
|
|
401
401
|
'--error': errorMessage,
|
|
402
402
|
'hide-picker-header': ['QUARTER', 'MONTH'].includes(valueType),
|
|
403
403
|
'only-show-time-picker': ['HOUR', 'MINUTE'].includes(valueType),
|
|
@@ -30,7 +30,7 @@ import { globalToken } from '@antscorp/antsomi-ui/es/constants';
|
|
|
30
30
|
// Hooks
|
|
31
31
|
import { useDeepCompareEffect, useDeepCompareMemo, useIntersectionObserver, } from '@antscorp/antsomi-ui/es/hooks';
|
|
32
32
|
// Utils
|
|
33
|
-
import { flatTree,
|
|
33
|
+
import { flatTree, recursiveSearchItems } from '@antscorp/antsomi-ui/es/utils';
|
|
34
34
|
import { DataIcon, WarningIcon } from '../../icons';
|
|
35
35
|
import clsx from 'clsx';
|
|
36
36
|
const initialState = {
|
|
@@ -40,7 +40,6 @@ const matchesAnyInitialState = {
|
|
|
40
40
|
searchValue: '',
|
|
41
41
|
selectedItems: [],
|
|
42
42
|
isShowLoadMoreEl: false,
|
|
43
|
-
selectedExpandedKeys: [],
|
|
44
43
|
};
|
|
45
44
|
const { t } = i18nInstance;
|
|
46
45
|
const { Text } = Typography;
|
|
@@ -50,7 +49,7 @@ export function MatchesAny(props) {
|
|
|
50
49
|
// State
|
|
51
50
|
const [state, setState] = useState(matchesAnyInitialState);
|
|
52
51
|
// Variables
|
|
53
|
-
const { searchValue, selectedItems, isShowLoadMoreEl
|
|
52
|
+
const { searchValue, selectedItems, isShowLoadMoreEl } = state;
|
|
54
53
|
const _a = listEmptyProps || {}, { icon: listEmptyIcon, description: listEmptyDescription = t(translations.global.noResultsMatchesKeyWord).toString() } = _a, restListEmptyProps = __rest(_a, ["icon", "description"]);
|
|
55
54
|
const _b = selectedListEmptyProps || {}, { description: selectedListEmptyDescription = t(translations.global.selectItemsFromList).toString(), icon: selectedListEmptyIcon = React.createElement(DataIcon, { color: globalToken === null || globalToken === void 0 ? void 0 : globalToken.bw5, size: 48 }) } = _b, restSelectedListEmptyProps = __rest(_b, ["description", "icon"]);
|
|
56
55
|
// Refs
|
|
@@ -93,11 +92,10 @@ export function MatchesAny(props) {
|
|
|
93
92
|
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: [
|
|
94
93
|
...(prev.selectedItems || []),
|
|
95
94
|
...flattenChild === null || flattenChild === void 0 ? void 0 : flattenChild.filter(item => !item.children),
|
|
96
|
-
]
|
|
95
|
+
] })));
|
|
97
96
|
return;
|
|
98
97
|
}
|
|
99
|
-
|
|
100
|
-
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: [...(prev.selectedItems || []), item], selectedExpandedKeys: [...(prev.selectedExpandedKeys || []), ...parentExpandedKeys] })));
|
|
98
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: [...(prev.selectedItems || []), item] })));
|
|
101
99
|
};
|
|
102
100
|
/**
|
|
103
101
|
* Removes an item and its descendants from the list of selected items.
|
|
@@ -122,9 +120,7 @@ export function MatchesAny(props) {
|
|
|
122
120
|
const onSelectAll = () => {
|
|
123
121
|
const flattenTreeData = flatTree(items, 'children').filter(item => !item.children &&
|
|
124
122
|
!(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.some(selectedItem => selectedItem.key === item.key || selectedItem.title === item.title)));
|
|
125
|
-
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: uniqBy([...(prev.selectedItems || []), ...flattenTreeData], 'key')
|
|
126
|
-
.filter(item => !!item.children)
|
|
127
|
-
.map(item => item.key) })));
|
|
123
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: uniqBy([...(prev.selectedItems || []), ...flattenTreeData], 'key') })));
|
|
128
124
|
};
|
|
129
125
|
const onRemoveAll = () => {
|
|
130
126
|
setState(prev => (Object.assign(Object.assign({}, prev), { selectedItems: [] })));
|
|
@@ -205,11 +201,16 @@ export function MatchesAny(props) {
|
|
|
205
201
|
}
|
|
206
202
|
return { treeData, matchedParents };
|
|
207
203
|
}, [items, searchValue, selectedItems, groupSelectProps, onChangeSearch]);
|
|
204
|
+
// const selectedTreeData = useDeepCompareMemo(() => [], [items, selectedItems]);
|
|
208
205
|
const selectedTreeData = useDeepCompareMemo(() => {
|
|
209
206
|
var _a;
|
|
210
207
|
const notExtendValueSelectedItems = (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(item => !item.isExtendValue)) || [];
|
|
211
208
|
const extendValueSelectedItems = (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(item => item.isExtendValue)) || [];
|
|
212
|
-
const lazyLoadSelectedItems =
|
|
209
|
+
// const lazyLoadSelectedItems =
|
|
210
|
+
// notExtendValueSelectedItems?.filter(
|
|
211
|
+
// selectedItem =>
|
|
212
|
+
// !flatTree(items || [], 'children').some(item => item.key === selectedItem.key),
|
|
213
|
+
// ) || [];
|
|
213
214
|
const serializeTreeData = (list) => {
|
|
214
215
|
var _a;
|
|
215
216
|
return ((_a = list
|
|
@@ -229,7 +230,7 @@ export function MatchesAny(props) {
|
|
|
229
230
|
children: serializeTreeData(item.children),
|
|
230
231
|
})), (!!item.error && { className: 'error-node' }))))) || [];
|
|
231
232
|
};
|
|
232
|
-
return serializeTreeData(items || []).concat(((_a = [...lazyLoadSelectedItems, ...extendValueSelectedItems]) === null || _a === void 0 ? void 0 : _a.map(item => (Object.assign(Object.assign({}, item), { title: renderItemNodeTitle({ item, mode: 'select', onRemoveItem }) })))) || []);
|
|
233
|
+
return serializeTreeData(items || []).concat(((_a = [/* ...lazyLoadSelectedItems, */ ...extendValueSelectedItems]) === null || _a === void 0 ? void 0 : _a.map(item => (Object.assign(Object.assign({}, item), { title: renderItemNodeTitle({ item, mode: 'select', onRemoveItem }) })))) || []);
|
|
233
234
|
}, [items, selectedItems]);
|
|
234
235
|
const isDisableRemoveAll = useDeepCompareMemo(() => !(selectedTreeData === null || selectedTreeData === void 0 ? void 0 : selectedTreeData.length), [selectedTreeData]);
|
|
235
236
|
const isDisableSelectAll = useDeepCompareMemo(() => {
|
|
@@ -268,7 +269,9 @@ export function MatchesAny(props) {
|
|
|
268
269
|
renderExtraValueLabels(),
|
|
269
270
|
React.createElement(TextButton, { disabled: isDisableSelectAll, onClick: onSelectAll }, t(translations.global.selectAll).toString()))),
|
|
270
271
|
React.createElement(Spin, { spinning: loading }, (treeData === null || treeData === void 0 ? void 0 : treeData.length) ? (React.createElement(React.Fragment, null,
|
|
271
|
-
React.createElement(StyledTree, { key: searchValue,
|
|
272
|
+
React.createElement(StyledTree, { key: searchValue, defaultExpandedKeys: (matchedParents === null || matchedParents === void 0 ? void 0 : matchedParents.length)
|
|
273
|
+
? matchedParents.map(item => item.key)
|
|
274
|
+
: items === null || items === void 0 ? void 0 : items.map(item => item.key), selectable: false, treeData: treeData, switcherIcon: props => (React.createElement(Icon, { type: "icon-ants-caret-down", style: {
|
|
272
275
|
transform: props.expanded ? 'rotate(0)' : 'rotate(-90deg)',
|
|
273
276
|
transition: 'transform 0.3s ease',
|
|
274
277
|
}, color: globalToken === null || globalToken === void 0 ? void 0 : globalToken.bw8 })), height: 396 }),
|
|
@@ -278,14 +281,10 @@ export function MatchesAny(props) {
|
|
|
278
281
|
React.createElement(Flex, { className: "matches-any__header", justify: "space-between" },
|
|
279
282
|
React.createElement(Text, { strong: true }, `${t(translations.global.selected)} (${(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) || 0})`),
|
|
280
283
|
React.createElement(TextButton, { disabled: isDisableRemoveAll, onClick: onRemoveAll }, t(translations.global.removeAll).toString())),
|
|
281
|
-
React.createElement("div", { className: "matches-any__body" }, !(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) ? (React.createElement(EmptyData, Object.assign({ icon: selectedListEmptyIcon, description: selectedListEmptyDescription }, restSelectedListEmptyProps))) : (React.createElement(StyledTree,
|
|
282
|
-
expandedKeys: selectedExpandedKeys,
|
|
283
|
-
}), { switcherIcon: props => (React.createElement(Icon, { type: "icon-ants-caret-down", style: {
|
|
284
|
+
React.createElement("div", { className: "matches-any__body" }, !(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) ? (React.createElement(EmptyData, Object.assign({ icon: selectedListEmptyIcon, description: selectedListEmptyDescription }, restSelectedListEmptyProps))) : (React.createElement(StyledTree, { key: items === null || items === void 0 ? void 0 : items.length, defaultExpandedKeys: items === null || items === void 0 ? void 0 : items.map(item => item.key), selectable: false, treeData: selectedTreeData, height: 420, switcherIcon: props => (React.createElement(Icon, { type: "icon-ants-caret-down", style: {
|
|
284
285
|
transform: props.expanded ? 'rotate(0)' : 'rotate(-90deg)',
|
|
285
286
|
transition: 'transform 0.3s ease',
|
|
286
|
-
}, color: globalToken === null || globalToken === void 0 ? void 0 : globalToken.bw8 }))
|
|
287
|
-
setState(prev => (Object.assign(Object.assign({}, prev), { selectedExpandedKeys: expandedKeys })));
|
|
288
|
-
} }))))));
|
|
287
|
+
}, color: globalToken === null || globalToken === void 0 ? void 0 : globalToken.bw8 })) })))));
|
|
289
288
|
// Handlers
|
|
290
289
|
const onApplyExtendValue = (extendValues) => {
|
|
291
290
|
// Filter out values that are already present in selectedItems
|
|
@@ -336,6 +335,9 @@ export function MatchesAnySelect(props) {
|
|
|
336
335
|
}, overlayStyle: { width: 700 }, overlayInnerStyle: {
|
|
337
336
|
padding: 0,
|
|
338
337
|
}, trigger: ['click'], destroyTooltipOnHide: true, onOpenChange: () => setState(prev => (Object.assign(Object.assign({}, prev), { isOpenPopover: !isOpenPopover }))), zIndex: 1400 }, popoverProps),
|
|
339
|
-
React.createElement(Tooltip, { mouseEnterDelay: 0.5, title: `${selectedItems ? selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.map(item => item.title).join(', ') : ''}
|
|
338
|
+
React.createElement(Tooltip, { mouseEnterDelay: 0.5, title: `${selectedItems ? selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.map(item => item.title).join(', ') : ''}`, overlayInnerStyle: {
|
|
339
|
+
maxHeight: 300,
|
|
340
|
+
overflow: 'auto',
|
|
341
|
+
} },
|
|
340
342
|
React.createElement(Select, Object.assign({ title: "", value: value, placeholder: placeholder, popupMatchSelectWidth: 700, dropdownStyle: Object.assign(Object.assign({}, dropdownStyle), { display: 'none', padding: 0 }), loading: loading }, restProps)))));
|
|
341
343
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const countryItems: {
|
|
2
|
+
name: string;
|
|
3
|
+
countryId: number;
|
|
4
|
+
countryName: string;
|
|
5
|
+
provinces: {
|
|
6
|
+
provinceId: number;
|
|
7
|
+
provinceName: string;
|
|
8
|
+
}[];
|
|
9
|
+
value: string;
|
|
10
|
+
label: string;
|
|
11
|
+
title: string;
|
|
12
|
+
key: string;
|
|
13
|
+
id: number;
|
|
14
|
+
children: {
|
|
15
|
+
provinceId: number;
|
|
16
|
+
provinceName: string;
|
|
17
|
+
key: string;
|
|
18
|
+
title: string;
|
|
19
|
+
value: string;
|
|
20
|
+
}[];
|
|
21
|
+
}[];
|