@v-c/picker 1.1.2 → 1.2.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.
@@ -198,6 +198,7 @@ var RangePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
198
198
  const onSelectorClear = () => {
199
199
  triggerSubmitChange(null);
200
200
  triggerOpen(false, { force: true });
201
+ fp.value.onClear?.();
201
202
  };
202
203
  const hoverSource = ref(null);
203
204
  const internalHoverValues = ref(null);
@@ -273,6 +274,7 @@ var RangePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
273
274
  ...Object.keys(domProps),
274
275
  "onChange",
275
276
  "onCalendarChange",
277
+ "onClear",
276
278
  "style",
277
279
  "className",
278
280
  "onPanelChange",
@@ -630,6 +632,10 @@ var RangePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
630
632
  required: false,
631
633
  default: void 0
632
634
  },
635
+ onClear: {
636
+ required: false,
637
+ default: void 0
638
+ },
633
639
  onKeyDown: {
634
640
  type: Function,
635
641
  required: false,
@@ -181,6 +181,7 @@ var SinglePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
181
181
  const onSelectorClear = () => {
182
182
  triggerSubmitChange(null);
183
183
  triggerOpen(false, { force: true });
184
+ fp.value.onClear?.();
184
185
  };
185
186
  const hoverSource = ref(null);
186
187
  const internalHoverValue = ref(null);
@@ -234,6 +235,7 @@ var SinglePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
234
235
  ...Object.keys(domProps),
235
236
  "onChange",
236
237
  "onCalendarChange",
238
+ "onClear",
237
239
  "style",
238
240
  "className",
239
241
  "onPanelChange",
@@ -601,6 +603,10 @@ var SinglePicker = /* @__PURE__ */ defineComponent((props, { expose }) => {
601
603
  required: false,
602
604
  default: void 0
603
605
  },
606
+ onClear: {
607
+ required: false,
608
+ default: void 0
609
+ },
604
610
  onKeyDown: {
605
611
  type: Function,
606
612
  required: false,
@@ -2,6 +2,7 @@ import { toArray } from "../../utils/miscUtil.js";
2
2
  import { parseValue } from "../../utils/valueUtil.js";
3
3
  import useLocale from "../../hooks/useLocale.js";
4
4
  import { fillShowTimeConfig, getTimeProps } from "../../hooks/useTimeConfig.js";
5
+ import { isSameTimestamp } from "../../utils/dateUtil.js";
5
6
  import { fillClearIcon } from "../Selector/hooks/useClearIcon.js";
6
7
  import useDisabledBoundary from "./useDisabledBoundary.js";
7
8
  import { useFieldFormat } from "./useFieldFormat.js";
@@ -10,15 +11,18 @@ import useInvalidate from "./useInvalidate.js";
10
11
  import { computed } from "vue";
11
12
  import { warning } from "@v-c/util";
12
13
  //#region src/PickerInput/hooks/useFilledProps.ts
13
- function useList(value, fillMode = false, transform) {
14
+ function useList(value, fillMode = false, transform, isSameItem) {
15
+ let cache;
14
16
  return computed(() => {
15
17
  const val = value.value;
16
- const list = val === null || val === void 0 ? val : toArray(val).map((item) => transform ? transform(item) : item);
18
+ let list = val === null || val === void 0 ? val : toArray(val).map((item) => transform ? transform(item) : item);
17
19
  if (fillMode && list && Array.isArray(list)) {
18
20
  const clone = [...list];
19
21
  clone[1] = clone[1] || clone[0];
20
- return clone;
22
+ list = clone;
21
23
  }
24
+ if (isSameItem && cache && Array.isArray(list) && cache.length === list.length && list.every((item, index) => item === cache[index] || isSameItem(cache[index], item))) return cache;
25
+ cache = Array.isArray(list) ? list : void 0;
22
26
  return list;
23
27
  });
24
28
  }
@@ -60,10 +64,11 @@ function useFilledProps(props, updater) {
60
64
  valueFormat: valueFormat.value
61
65
  });
62
66
  const mergedShowTime = computed(() => fillShowTimeConfig(internalPicker.value, showTimeFormat.value, propFormat.value, timeProps.value, mergedLocale.value));
63
- const values = useList(computed(() => props.value.value), false, parseByValueFormat);
64
- const defaultValues = useList(computed(() => props.value.defaultValue), false, parseByValueFormat);
65
- const pickerValues = useList(computed(() => props.value.pickerValue), false, parseByValueFormat);
66
- const defaultPickerValues = useList(computed(() => props.value.defaultPickerValue), false, parseByValueFormat);
67
+ const isSameParsedDate = (prev, next) => isSameTimestamp(props.value.generateConfig, prev, next);
68
+ const values = useList(computed(() => props.value.value), false, parseByValueFormat, isSameParsedDate);
69
+ const defaultValues = useList(computed(() => props.value.defaultValue), false, parseByValueFormat, isSameParsedDate);
70
+ const pickerValues = useList(computed(() => props.value.pickerValue), false, parseByValueFormat, isSameParsedDate);
71
+ const defaultPickerValues = useList(computed(() => props.value.defaultPickerValue), false, parseByValueFormat, isSameParsedDate);
67
72
  if (process.env.NODE_ENV !== "production") {
68
73
  if (mergedPicker.value === "time") {
69
74
  if ([
@@ -253,6 +253,8 @@ export interface SharedPickerProps<DateType extends object = any> extends Shared
253
253
  clearIcon?: VueNode;
254
254
  onFocus?: PickerFocusEventHandler;
255
255
  onBlur?: PickerFocusEventHandler;
256
+ /** Trigger when the clear icon is clicked. */
257
+ onClear?: VoidFunction;
256
258
  /** `preventDefault` is deprecated which will remove from future version. */
257
259
  onKeyDown?: LegacyOnKeyDown;
258
260
  inputReadOnly?: boolean;
package/package.json CHANGED
@@ -1,13 +1,18 @@
1
1
  {
2
2
  "name": "@v-c/picker",
3
3
  "type": "module",
4
- "version": "1.1.2",
4
+ "version": "1.2.0",
5
5
  "description": "picker ui component for vue",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "author": "",
10
10
  "license": "MIT",
11
+ "homepage": "https://github.com/antdv-next/vue-components/tree/next/packages/picker",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/antdv-next/vue-components.git"
15
+ },
11
16
  "keywords": [
12
17
  "picker",
13
18
  "vue-component"
@@ -72,10 +77,10 @@
72
77
  }
73
78
  },
74
79
  "dependencies": {
75
- "@v-c/trigger": "^1.0.15",
76
- "@v-c/util": "^1.0.19",
77
80
  "@v-c/overflow": "^1.1.0",
78
- "@v-c/resize-observer": "^1.1.0"
81
+ "@v-c/resize-observer": "^1.1.2",
82
+ "@v-c/trigger": "^1.0.16",
83
+ "@v-c/util": "^1.0.19"
79
84
  },
80
85
  "devDependencies": {
81
86
  "@types/luxon": "^3.7.1"