@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.
@@ -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, recursiveFindParents, recursiveSearchItems, } from '@antscorp/antsomi-ui/es/utils';
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, selectedExpandedKeys } = state;
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
- ], selectedExpandedKeys: [...(prev.selectedExpandedKeys || []), item.key] })));
95
+ ] })));
97
96
  return;
98
97
  }
99
- const parentExpandedKeys = recursiveFindParents(items || [], item, 'key', 'children').map(item => item.key);
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'), selectedExpandedKeys: flatTree(items, 'children')
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 = (notExtendValueSelectedItems === null || notExtendValueSelectedItems === void 0 ? void 0 : notExtendValueSelectedItems.filter(selectedItem => !flatTree(items || [], 'children').some(item => item.key === selectedItem.key))) || [];
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, defaultExpandAll: true, defaultExpandedKeys: matchedParents.map(item => item.key), selectable: false, treeData: treeData, switcherIcon: props => (React.createElement(Icon, { type: "icon-ants-caret-down", style: {
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, Object.assign({ selectable: false, treeData: selectedTreeData, height: 420, defaultExpandAll: true }, ((selectedExpandedKeys === null || selectedExpandedKeys === void 0 ? void 0 : selectedExpandedKeys.length) && {
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 })), onExpand: expandedKeys => {
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
+ }[];