@uzum-tech/ui 1.1.4 → 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.
Files changed (83) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +281 -340
  3. package/dist/index.prod.js +2 -2
  4. package/es/_utils/uzum/warn.js +3 -3
  5. package/es/alert/src/Alert.js +1 -1
  6. package/es/alert/src/styles/index.cssr.js +1 -1
  7. package/es/date-picker/src/DatePicker.d.ts +1 -0
  8. package/es/date-picker/src/DatePicker.js +10 -8
  9. package/es/date-picker/src/config.d.ts +1 -1
  10. package/es/date-picker/src/config.js +1 -1
  11. package/es/date-picker/src/interface.d.ts +7 -5
  12. package/es/date-picker/src/panel/date.d.ts +10 -7
  13. package/es/date-picker/src/panel/date.js +38 -18
  14. package/es/date-picker/src/panel/daterange.d.ts +18 -7
  15. package/es/date-picker/src/panel/daterange.js +94 -43
  16. package/es/date-picker/src/panel/datetime.d.ts +3 -1
  17. package/es/date-picker/src/panel/datetimerange.d.ts +2 -0
  18. package/es/date-picker/src/panel/panelHeader.d.ts +28 -7
  19. package/es/date-picker/src/panel/panelHeader.js +37 -13
  20. package/es/date-picker/src/panel/panelMonth.d.ts +16 -8
  21. package/es/date-picker/src/panel/panelMonth.js +8 -4
  22. package/es/date-picker/src/panel/panelMonthContent.d.ts +3 -1
  23. package/es/date-picker/src/panel/panelMonthContent.js +2 -5
  24. package/es/date-picker/src/panel/panelYear.d.ts +16 -8
  25. package/es/date-picker/src/panel/panelYear.js +8 -4
  26. package/es/date-picker/src/panel/panelYearContent.d.ts +3 -1
  27. package/es/date-picker/src/panel/panelYearContent.js +2 -1
  28. package/es/date-picker/src/panel/use-calendar.d.ts +4 -3
  29. package/es/date-picker/src/panel/use-dual-calendar.d.ts +1 -0
  30. package/es/date-picker/src/panel/use-panel-common.d.ts +2 -0
  31. package/es/date-picker/src/panel/use-panel-common.js +1 -0
  32. package/es/date-picker/src/styles/index.cssr.js +12 -10
  33. package/es/date-picker/src/utils.d.ts +1 -0
  34. package/es/grid/src/Grid.js +1 -1
  35. package/es/index.d.ts +1 -0
  36. package/es/index.js +1 -0
  37. package/es/preset.d.ts +2 -2
  38. package/es/preset.js +3 -3
  39. package/es/version.d.ts +1 -1
  40. package/es/version.js +1 -1
  41. package/lib/_utils/uzum/warn.js +3 -3
  42. package/lib/alert/src/Alert.js +1 -1
  43. package/lib/alert/src/styles/index.cssr.js +1 -1
  44. package/lib/date-picker/src/DatePicker.d.ts +1 -0
  45. package/lib/date-picker/src/DatePicker.js +9 -7
  46. package/lib/date-picker/src/config.d.ts +1 -1
  47. package/lib/date-picker/src/config.js +1 -1
  48. package/lib/date-picker/src/interface.d.ts +7 -5
  49. package/lib/date-picker/src/panel/date.d.ts +10 -7
  50. package/lib/date-picker/src/panel/date.js +37 -17
  51. package/lib/date-picker/src/panel/daterange.d.ts +18 -7
  52. package/lib/date-picker/src/panel/daterange.js +93 -42
  53. package/lib/date-picker/src/panel/datetime.d.ts +3 -1
  54. package/lib/date-picker/src/panel/datetimerange.d.ts +2 -0
  55. package/lib/date-picker/src/panel/panelHeader.d.ts +28 -7
  56. package/lib/date-picker/src/panel/panelHeader.js +37 -13
  57. package/lib/date-picker/src/panel/panelMonth.d.ts +16 -8
  58. package/lib/date-picker/src/panel/panelMonth.js +8 -4
  59. package/lib/date-picker/src/panel/panelMonthContent.d.ts +3 -1
  60. package/lib/date-picker/src/panel/panelMonthContent.js +2 -5
  61. package/lib/date-picker/src/panel/panelYear.d.ts +16 -8
  62. package/lib/date-picker/src/panel/panelYear.js +8 -4
  63. package/lib/date-picker/src/panel/panelYearContent.d.ts +3 -1
  64. package/lib/date-picker/src/panel/panelYearContent.js +2 -1
  65. package/lib/date-picker/src/panel/use-calendar.d.ts +4 -3
  66. package/lib/date-picker/src/panel/use-dual-calendar.d.ts +1 -0
  67. package/lib/date-picker/src/panel/use-panel-common.d.ts +2 -0
  68. package/lib/date-picker/src/panel/use-panel-common.js +1 -0
  69. package/lib/date-picker/src/styles/index.cssr.js +12 -10
  70. package/lib/date-picker/src/utils.d.ts +1 -0
  71. package/lib/grid/src/Grid.js +1 -1
  72. package/lib/index.d.ts +1 -0
  73. package/lib/index.js +1 -0
  74. package/lib/preset.d.ts +2 -2
  75. package/lib/preset.js +3 -3
  76. package/lib/version.d.ts +1 -1
  77. package/lib/version.js +1 -1
  78. package/package.json +5 -10
  79. package/web-types.json +9 -9
  80. package/es/date-picker/src/panel/monthrange.d.ts +0 -1303
  81. package/es/date-picker/src/panel/monthrange.js +0 -117
  82. package/lib/date-picker/src/panel/monthrange.d.ts +0 -1303
  83. package/lib/date-picker/src/panel/monthrange.js +0 -119
@@ -1,14 +1,14 @@
1
1
  const warnedMessages = new Set();
2
2
  export function warnOnce(location, message) {
3
- const mergedMessage = `[naive/${location}]: ${message}`;
3
+ const mergedMessage = `[uzum-ui/${location}]: ${message}`;
4
4
  if (warnedMessages.has(mergedMessage))
5
5
  return;
6
6
  warnedMessages.add(mergedMessage);
7
7
  console.error(mergedMessage);
8
8
  }
9
9
  export function warn(location, message) {
10
- console.error(`[naive/${location}]: ${message}`);
10
+ console.error(`[uzum-ui/${location}]: ${message}`);
11
11
  }
12
12
  export function throwError(location, message) {
13
- throw new Error(`[naive/${location}]: ${message}`);
13
+ throw new Error(`[uzum-ui/${location}]: ${message}`);
14
14
  }
@@ -128,7 +128,7 @@ export default defineComponent({
128
128
  this.actionsHorizontal &&
129
129
  `${mergedClsPrefix}-alert--horizontal`,
130
130
  this.showIcon && `${mergedClsPrefix}-alert--show-icon`,
131
- // fix: https://github.com/tusen-ai/naive-ui/issues/4588
131
+ // fix: https://github.com/tusen-ai/uzum-ui/issues/4588
132
132
  !this.title &&
133
133
  this.closable &&
134
134
  `${mergedClsPrefix}-alert--right-adjust`,
@@ -60,7 +60,7 @@ export default cB('alert', `
60
60
  width: var(--u-close-icon-size);
61
61
  height: var(--u-close-icon-size);
62
62
  `),
63
- // fix: https://github.com/tusen-ai/naive-ui/issues/4588
63
+ // fix: https://github.com/tusen-ai/uzum-ui/issues/4588
64
64
  cM('right-adjust', [cB('alert-body', `
65
65
  padding-right: calc(var(--u-close-size) + var(--u-padding) + 2px);
66
66
  `)]), cM('show-icon', [cB('alert-body', [cE('content, title', `
@@ -4206,6 +4206,7 @@ declare const _default: import("vue").DefineComponent<{
4206
4206
  }, any>;
4207
4207
  }>>>;
4208
4208
  }, {
4209
+ rangeTypes: DatePickerType[];
4209
4210
  mergedStatus: import("vue").ComputedRef<FormValidationStatus | undefined>;
4210
4211
  mergedClsPrefix: Ref<string>;
4211
4212
  mergedBordered: import("vue").ComputedRef<boolean>;
@@ -1,4 +1,4 @@
1
- import { h, defineComponent, ref, Transition, computed, provide, watch, withDirectives, toRef, watchEffect, Fragment } from 'vue';
1
+ import { h, defineComponent, ref, Transition, computed, provide, watch, withDirectives, toRef, watchEffect } from 'vue';
2
2
  import { VBinder, VTarget, VFollower } from 'vueuc';
3
3
  import { clickoutside } from 'vdirs';
4
4
  import { format, getTime, isValid, addWeeks, addMonths, addYears } from 'date-fns'; //
@@ -17,7 +17,6 @@ import DatetimePanel from './panel/datetime';
17
17
  import DatetimeRangePanel from './panel/datetimerange';
18
18
  import DatePanel from './panel/date';
19
19
  import DateRangePanel from './panel/daterange';
20
- import MonthRangePanel from './panel/monthrange';
21
20
  import style from './styles/index.cssr';
22
21
  export const datePickerProps = Object.assign(Object.assign({}, useTheme.props), { to: useAdjustedTo.propTo, bordered: {
23
22
  type: Boolean,
@@ -49,6 +48,12 @@ export default defineComponent({
49
48
  }
50
49
  });
51
50
  }
51
+ const rangeTypes = [
52
+ 'daterange',
53
+ 'monthrange',
54
+ 'yearrange',
55
+ 'quarterrange'
56
+ ];
52
57
  const { localeRef, dateLocaleRef } = useLocale('DatePicker');
53
58
  const formItem = useFormItem(props);
54
59
  const { mergedSizeRef, mergedDisabledRef, mergedStatusRef } = formItem;
@@ -683,7 +688,7 @@ export default defineComponent({
683
688
  return props.type;
684
689
  }), cssVarsRef, props)
685
690
  : undefined;
686
- return Object.assign(Object.assign({}, exposedMethods), { mergedStatus: mergedStatusRef, mergedClsPrefix: mergedClsPrefixRef, mergedBordered: mergedBorderedRef, namespace: namespaceRef, uncontrolledValue: uncontrolledValueRef, pendingValue: pendingValueRef, panelInstRef,
691
+ return Object.assign(Object.assign({}, exposedMethods), { rangeTypes, mergedStatus: mergedStatusRef, mergedClsPrefix: mergedClsPrefixRef, mergedBordered: mergedBorderedRef, namespace: namespaceRef, uncontrolledValue: uncontrolledValueRef, pendingValue: pendingValueRef, panelInstRef,
687
692
  triggerElRef,
688
693
  inputInstRef, isMounted: useIsMounted(), displayTime: singleInputValueRef, displayStartTime: rangeStartInputValueRef, displayEndTime: rangeEndInputValueRef, mergedShow: mergedShowRef, adjustedTo: useAdjustedTo(props), isRange: isRangeRef, localizedStartPlaceholder: localizedStartPlaceholderRef, localizedEndPlaceholder: localizedEndPlaceholderRef, mergedSize: mergedSizeRef, mergedDisabled: mergedDisabledRef, localizedPlacehoder: localizedPlacehoderRef, isValueInvalid: uniVaidation.isValueInvalidRef, isStartValueInvalid: dualValidation.isStartValueInvalidRef, isEndValueInvalid: dualValidation.isEndValueInvalidRef, handleInputKeydown,
689
694
  handleClickOutside,
@@ -726,11 +731,8 @@ export default defineComponent({
726
731
  onRender: this.onRender
727
732
  };
728
733
  const renderPanel = () => {
729
- const { type } = this;
730
- return type === 'datetime' ? (h(DatetimePanel, Object.assign({}, commonPanelProps), $slots)) : type === 'daterange' ? (h(DateRangePanel, Object.assign({}, commonPanelProps, { defaultCalendarStartTime: this.defaultCalendarStartTime, defaultCalendarEndTime: this.defaultCalendarEndTime, bindCalendarMonths: this.bindCalendarMonths }), $slots)) : type === 'datetimerange' ? (h(DatetimeRangePanel, Object.assign({}, commonPanelProps, { defaultCalendarStartTime: this.defaultCalendarStartTime, defaultCalendarEndTime: this.defaultCalendarEndTime, bindCalendarMonths: this.bindCalendarMonths }), $slots)) : type === 'month' || type === 'year' || type === 'quarter' ? (h(Fragment, null)) // <PanelMonth {...commonPanelProps} key={type} />
731
- : type === 'monthrange' ||
732
- type === 'yearrange' ||
733
- type === 'quarterrange' ? (h(MonthRangePanel, Object.assign({}, commonPanelProps, { type: type }))) : (h(DatePanel, Object.assign({}, commonPanelProps), $slots));
734
+ const { type, rangeTypes } = this;
735
+ return type === 'datetime' ? (h(DatetimePanel, Object.assign({}, commonPanelProps), $slots)) : rangeTypes.includes(type) ? (h(DateRangePanel, Object.assign({}, commonPanelProps, { type: type, defaultCalendarStartTime: this.defaultCalendarStartTime, defaultCalendarEndTime: this.defaultCalendarEndTime, bindCalendarMonths: this.bindCalendarMonths }), $slots)) : type === 'datetimerange' ? (h(DatetimeRangePanel, Object.assign({}, commonPanelProps, { defaultCalendarStartTime: this.defaultCalendarStartTime, defaultCalendarEndTime: this.defaultCalendarEndTime, bindCalendarMonths: this.bindCalendarMonths }), $slots)) : (h(DatePanel, Object.assign({}, commonPanelProps, { type: type }), $slots));
734
736
  };
735
737
  if (this.panel) {
736
738
  return renderPanel();
@@ -1,4 +1,4 @@
1
- export declare const START_YEAR = 1901;
1
+ export declare const START_YEAR = 1924;
2
2
  export declare const END_YEAR: number;
3
3
  export declare const MONTH_ITEM_HEIGHT = 50;
4
4
  export declare const MONTH_ITEM_GAP = 8;
@@ -1,4 +1,4 @@
1
- export const START_YEAR = 1901;
1
+ export const START_YEAR = 1924;
2
2
  export const END_YEAR = new Date().getFullYear();
3
3
  export const MONTH_ITEM_HEIGHT = 50;
4
4
  export const MONTH_ITEM_GAP = 8;
@@ -7,7 +7,12 @@ import type { TimePickerProps } from '../../time-picker/src/TimePicker';
7
7
  import type { MergedTheme } from '../../_mixins';
8
8
  import type { DatePickerTheme } from '../styles/light';
9
9
  import type { uniCalendarValidation, dualCalendarValidation } from './validation-utils';
10
+ import { DateCommonItem } from './utils';
10
11
  export type Value = number | [number, number];
12
+ export type PanelValue = number & (number | null) & [
13
+ number,
14
+ number
15
+ ] & ([number, number] | null);
11
16
  export type DefaultTime = string | [string | undefined, string | undefined];
12
17
  export type FormattedValue = string | [string, string];
13
18
  export type Shortcuts = Record<string, number | (() => number)> | Record<string, [number, number] | readonly [number, number] | (() => [number, number] | readonly [number, number])>;
@@ -29,11 +34,8 @@ export type OnUpdateFormattedValue = (value: string & (string | null) & [
29
34
  ] & ([number, number] | null)) => void;
30
35
  export type OnUpdateFormattedValueImpl = (value: string | [string, string] | null, timestampValue: number | [number, number] | null) => void;
31
36
  export type OnUpdateValueImpl = (value: Value | null, formattedValue: string | [string, string] | null) => void;
32
- export type OnPanelUpdateValue = (value: number & (number | null) & [
33
- number,
34
- number
35
- ] & ([number, number] | null), doUpdate: boolean) => void;
36
- export type OnPanelUpdateValueImpl = (value: Value | null, doUpdate: boolean) => void;
37
+ export type OnPanelUpdateValue = (value: PanelValue, doUpdate: boolean, item?: DateCommonItem) => void;
38
+ export type OnPanelUpdateValueImpl = (value: Value | null, doUpdate: boolean, item?: DateCommonItem) => void;
37
39
  export type OnClose = (disableUpdateOnClose: boolean) => void;
38
40
  export interface RangePanelChildComponentRefs {
39
41
  startYearScrollbarRef: Ref<ScrollbarInst | null>;
@@ -1,3 +1,5 @@
1
+ import { DatePickerType } from '../config';
2
+ import { DateCommonItem } from '../utils';
1
3
  /**
2
4
  * Date Panel
3
5
  * Update picker value on:
@@ -11,6 +13,7 @@ declare const _default: import("vue").DefineComponent<{
11
13
  };
12
14
  readonly active: BooleanConstructor;
13
15
  readonly dateFormat: StringConstructor;
16
+ readonly type: import("vue").PropType<DatePickerType>;
14
17
  readonly timeFormat: {
15
18
  readonly type: StringConstructor;
16
19
  readonly value: "HH:mm:ss";
@@ -33,7 +36,12 @@ declare const _default: import("vue").DefineComponent<{
33
36
  readonly onRender: import("vue").PropType<(() => void) | undefined>;
34
37
  readonly panel: BooleanConstructor;
35
38
  }, {
36
- handleDateClick: (dateItem: import("../utils").DateItem | import("../utils").MonthItem | import("../utils").YearItem | import("../utils").QuarterItem) => void;
39
+ isWithoutDay: import("vue").ComputedRef<boolean>;
40
+ isMonth: import("vue").ComputedRef<boolean>;
41
+ isYear: import("vue").ComputedRef<boolean>;
42
+ handleMonthClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
43
+ handleYearClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
44
+ handleDateClick: (dateItem: DateCommonItem) => void;
37
45
  handleDateInputBlur: () => void;
38
46
  handleDateInput: (value: string) => void;
39
47
  handleTimePickerChange: (value: number | null) => void;
@@ -114,12 +122,6 @@ declare const _default: import("vue").DefineComponent<{
114
122
  fontFamily: string;
115
123
  fontFamilyMono: string;
116
124
  cubicBezierEaseInOut: string;
117
- /**
118
- * Date Panel
119
- * Update picker value on:
120
- * 1. item click
121
- * 2. clear click
122
- */
123
125
  cubicBezierEaseOut: string;
124
126
  cubicBezierEaseIn: string;
125
127
  borderRadiusLarge: string;
@@ -1230,6 +1232,7 @@ declare const _default: import("vue").DefineComponent<{
1230
1232
  };
1231
1233
  readonly active: BooleanConstructor;
1232
1234
  readonly dateFormat: StringConstructor;
1235
+ readonly type: import("vue").PropType<DatePickerType>;
1233
1236
  readonly timeFormat: {
1234
1237
  readonly type: StringConstructor;
1235
1238
  readonly value: "HH:mm:ss";
@@ -1,4 +1,4 @@
1
- import { defineComponent, watchEffect, h } from 'vue';
1
+ import { defineComponent, watchEffect, h, computed, Fragment } from 'vue';
2
2
  import { UButton, UxButton } from '../../../button';
3
3
  import { UBaseFocusDetector } from '../../../_internal';
4
4
  import { warnOnce } from '../../../_utils';
@@ -22,11 +22,30 @@ export default defineComponent({
22
22
  }
23
23
  });
24
24
  }
25
- return useCalendar(props, 'date');
25
+ const calendar = useCalendar(props, 'date');
26
+ const type = props.type;
27
+ const monthTypes = ['month', 'quarter'];
28
+ const withoutDayTypes = [...monthTypes, 'year'];
29
+ const isWithoutDay = computed(() => withoutDayTypes.includes(type));
30
+ const isMonth = computed(() => monthTypes.includes(type));
31
+ const isYear = computed(() => type === 'year');
32
+ const handleMonthClick = (value, _doUpdate, item) => {
33
+ calendar.onUpdateCalendarValue(value);
34
+ isMonth.value && calendar.handleDateClick(item);
35
+ };
36
+ const handleYearClick = (value, _doUpdate, item) => {
37
+ calendar.onUpdateCalendarValue(value);
38
+ isYear.value && calendar.handleDateClick(item);
39
+ };
40
+ return Object.assign(Object.assign({}, calendar), { isWithoutDay,
41
+ isMonth,
42
+ isYear,
43
+ handleMonthClick,
44
+ handleYearClick });
26
45
  },
27
46
  render() {
28
47
  var _a, _b, _c;
29
- const { mergedClsPrefix, shortcuts, onRender } = this;
48
+ const { mergedClsPrefix, shortcuts, onRender, isWithoutDay, isYear, isMonth, handleMonthClick, handleYearClick } = this;
30
49
  onRender === null || onRender === void 0 ? void 0 : onRender();
31
50
  return (h("div", { ref: "selfRef", tabindex: 0, class: [
32
51
  `${mergedClsPrefix}-date-panel`,
@@ -35,21 +54,22 @@ export default defineComponent({
35
54
  this.themeClass
36
55
  ], onFocus: this.handlePanelFocus, onKeydown: this.handlePanelKeyDown },
37
56
  h("div", { class: `${mergedClsPrefix}-date-panel-calendar` },
38
- h(PanelHeader, { value: this.calendarValue, mergedClsPrefix: mergedClsPrefix, calendarMonth: this.calendarMonth, calendarYear: this.calendarYear, onUpdateValue: this.onUpdateCalendarValue }),
39
- h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
40
- h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.dateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
41
- `${mergedClsPrefix}-date-panel-date`,
42
- {
43
- [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
44
- [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
45
- [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
46
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
47
- }
48
- ], onClick: () => {
49
- this.handleDateClick(dateItem);
50
- } },
51
- h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
52
- dateItem.dateObject.date))))),
57
+ h(PanelHeader, { value: this.calendarValue, isMonth: isMonth, isYear: isYear, mergedClsPrefix: mergedClsPrefix, calendarMonth: this.calendarMonth, calendarYear: this.calendarYear, onUpdateMonth: handleMonthClick, onUpdateYear: handleYearClick }),
58
+ isWithoutDay ? (h("div", { class: `${mergedClsPrefix}-date-panel-placeholder` })) : (h(Fragment, null,
59
+ h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
60
+ h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.dateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
61
+ `${mergedClsPrefix}-date-panel-date`,
62
+ {
63
+ [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
64
+ [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
65
+ [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
66
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
67
+ }
68
+ ], onClick: () => {
69
+ this.handleDateClick(dateItem);
70
+ } },
71
+ h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
72
+ dateItem.dateObject.date))))))),
53
73
  this.datePickerSlots.footer ? (h("div", { class: `${mergedClsPrefix}-date-panel-footer` }, this.datePickerSlots.footer())) : null,
54
74
  ((_a = this.actions) === null || _a === void 0 ? void 0 : _a.length) || shortcuts ? (h("div", { class: `${mergedClsPrefix}-date-panel-actions` },
55
75
  h("div", { class: `${mergedClsPrefix}-date-panel-actions__prefix` }, shortcuts &&
@@ -1,3 +1,5 @@
1
+ import { DatePickerType } from '../config';
2
+ import { DateCommonItem, DateItem, MonthItem } from '../utils';
1
3
  declare const _default: import("vue").DefineComponent<{
2
4
  readonly defaultCalendarStartTime: NumberConstructor;
3
5
  readonly defaultCalendarEndTime: NumberConstructor;
@@ -8,6 +10,7 @@ declare const _default: import("vue").DefineComponent<{
8
10
  };
9
11
  readonly active: BooleanConstructor;
10
12
  readonly dateFormat: StringConstructor;
13
+ readonly type: import("vue").PropType<DatePickerType>;
11
14
  readonly timeFormat: {
12
15
  readonly type: StringConstructor;
13
16
  readonly value: "HH:mm:ss";
@@ -30,6 +33,13 @@ declare const _default: import("vue").DefineComponent<{
30
33
  readonly onRender: import("vue").PropType<(() => void) | undefined>;
31
34
  readonly panel: BooleanConstructor;
32
35
  }, {
36
+ isMonthRange: import("vue").ComputedRef<boolean>;
37
+ isYearRange: import("vue").ComputedRef<boolean>;
38
+ isWithoutDay: import("vue").ComputedRef<boolean>;
39
+ handleMonthStartClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
40
+ handleMonthEndClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
41
+ handleYearStartClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
42
+ handleYearEndClick: (value: number, _doUpdate: boolean, item?: DateCommonItem) => void;
33
43
  startDateDisplayString: import("vue").Ref<string>;
34
44
  endDateInput: import("vue").Ref<string>;
35
45
  timePickerSize: import("vue").Ref<import("../../..").InputSize>;
@@ -1220,9 +1230,9 @@ declare const _default: import("vue").DefineComponent<{
1220
1230
  handleOpenQuickSelectMonthPanel: () => void;
1221
1231
  startDatesElRef: import("vue").Ref<HTMLElement | null>;
1222
1232
  endDatesElRef: import("vue").Ref<HTMLElement | null>;
1223
- handleDateClick: (dateItem: import("../utils").DateItem) => void;
1224
- handleColItemClick: (dateItem: import("../utils").MonthItem | import("../utils").YearItem | import("../utils").QuarterItem, clickType: "start" | "end") => void;
1225
- handleDateMouseEnter: (dateItem: import("../utils").DateItem) => void;
1233
+ handleDateClick: (dateItem: DateItem) => void;
1234
+ handleColItemClick: (dateItem: MonthItem | import("../utils").YearItem | import("../utils").QuarterItem, clickType: "start" | "end") => void;
1235
+ handleDateMouseEnter: (dateItem: DateItem) => void;
1226
1236
  handleConfirmClick: () => void;
1227
1237
  startCalendarPrevYear: () => void;
1228
1238
  startCalendarPrevMonth: () => void;
@@ -1240,13 +1250,13 @@ declare const _default: import("vue").DefineComponent<{
1240
1250
  endCalendarMonth: import("vue").ComputedRef<string>;
1241
1251
  endCalendarYear: import("vue").ComputedRef<string>;
1242
1252
  weekdays: import("vue").ComputedRef<string[]>;
1243
- startDateArray: import("vue").ComputedRef<import("../utils").DateItem[]>;
1244
- endDateArray: import("vue").ComputedRef<import("../utils").DateItem[]>;
1253
+ startDateArray: import("vue").ComputedRef<DateItem[]>;
1254
+ endDateArray: import("vue").ComputedRef<DateItem[]>;
1245
1255
  startYearArray: import("vue").ComputedRef<import("../utils").YearItem[]>;
1246
- startMonthArray: import("vue").ComputedRef<import("../utils").MonthItem[]>;
1256
+ startMonthArray: import("vue").ComputedRef<MonthItem[]>;
1247
1257
  startQuarterArray: import("vue").ComputedRef<import("../utils").QuarterItem[]>;
1248
1258
  endYearArray: import("vue").ComputedRef<import("../utils").YearItem[]>;
1249
- endMonthArray: import("vue").ComputedRef<import("../utils").MonthItem[]>;
1259
+ endMonthArray: import("vue").ComputedRef<MonthItem[]>;
1250
1260
  endQuarterArray: import("vue").ComputedRef<import("../utils").QuarterItem[]>;
1251
1261
  isSelecting: import("vue").Ref<boolean>;
1252
1262
  handleRangeShortcutMouseenter: (shortcut: number | [number, number] | (() => number) | readonly [number, number] | (() => [number, number] | readonly [number, number])) => void;
@@ -1261,6 +1271,7 @@ declare const _default: import("vue").DefineComponent<{
1261
1271
  };
1262
1272
  readonly active: BooleanConstructor;
1263
1273
  readonly dateFormat: StringConstructor;
1274
+ readonly type: import("vue").PropType<DatePickerType>;
1264
1275
  readonly timeFormat: {
1265
1276
  readonly type: StringConstructor;
1266
1277
  readonly value: "HH:mm:ss";
@@ -1,4 +1,15 @@
1
- import { defineComponent, h, watchEffect } from 'vue';
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { defineComponent, h, watchEffect, computed, Fragment } from 'vue';
2
13
  import { UButton, UxButton } from '../../../button';
3
14
  import { UBaseFocusDetector } from '../../../_internal';
4
15
  import { warnOnce } from '../../../_utils';
@@ -16,11 +27,49 @@ export default defineComponent({
16
27
  }
17
28
  });
18
29
  }
19
- return useDualCalendar(props, 'daterange');
30
+ const calendar = useDualCalendar(props, 'daterange');
31
+ const type = props.type;
32
+ const monthRanges = ['monthrange', 'quarterrange'];
33
+ const withoutDayTypes = [...monthRanges, 'yearrange'];
34
+ const isWithoutDay = computed(() => withoutDayTypes.includes(type));
35
+ const isMonthRange = computed(() => monthRanges.includes(type));
36
+ const isYearRange = computed(() => type === 'yearrange');
37
+ const monthToDateItem = (value, item, isEnd = false) => {
38
+ const _a = item, { dateObject } = _a, monthItem = __rest(_a, ["dateObject"]);
39
+ return Object.assign(Object.assign({}, monthItem), { dateObject: Object.assign(Object.assign({}, dateObject), { date: 1 }), inCurrentMonth: false, isCurrentDate: false, inSpan: false, startOfSpan: false, endOfSpan: isEnd, selected: isEnd, ts: value, type: 'date' });
40
+ };
41
+ const setMonthRange = (value, item, isEnd = false) => {
42
+ const monthItem = monthToDateItem(value, item, isEnd);
43
+ calendar.handleDateMouseEnter(monthItem);
44
+ calendar.handleDateClick(monthItem);
45
+ };
46
+ const handleMonthStartClick = (value, _doUpdate, item) => {
47
+ calendar.onUpdateStartCalendarValue(value);
48
+ isMonthRange.value && setMonthRange(value, item);
49
+ };
50
+ const handleMonthEndClick = (value, _doUpdate, item) => {
51
+ calendar.onUpdateEndCalendarValue(value);
52
+ isMonthRange.value && setMonthRange(value, item, true);
53
+ };
54
+ const handleYearStartClick = (value, _doUpdate, item) => {
55
+ calendar.onUpdateStartCalendarValue(value);
56
+ isYearRange.value && setMonthRange(value, item);
57
+ };
58
+ const handleYearEndClick = (value, _doUpdate, item) => {
59
+ calendar.onUpdateEndCalendarValue(value);
60
+ isYearRange.value && setMonthRange(value, item, true);
61
+ };
62
+ return Object.assign(Object.assign({}, calendar), { isMonthRange,
63
+ isYearRange,
64
+ isWithoutDay,
65
+ handleMonthStartClick,
66
+ handleMonthEndClick,
67
+ handleYearStartClick,
68
+ handleYearEndClick });
20
69
  },
21
70
  render() {
22
71
  var _a, _b, _c;
23
- const { mergedClsPrefix, shortcuts, onRender } = this;
72
+ const { mergedClsPrefix, shortcuts, onRender, isMonthRange, isYearRange, isWithoutDay, handleMonthStartClick, handleMonthEndClick, handleYearStartClick, handleYearEndClick } = this;
24
73
  onRender === null || onRender === void 0 ? void 0 : onRender();
25
74
  return (h("div", { ref: "selfRef", tabindex: 0, class: [
26
75
  `${mergedClsPrefix}-date-panel`,
@@ -29,47 +78,49 @@ export default defineComponent({
29
78
  this.themeClass
30
79
  ], onKeydown: this.handlePanelKeyDown, onFocus: this.handlePanelFocus },
31
80
  h("div", { ref: "startDatesElRef", class: `${mergedClsPrefix}-date-panel-calendar ${mergedClsPrefix}-date-panel-calendar--start` },
32
- h(PanelHeader, { value: this.startCalendarDateTime, mergedClsPrefix: mergedClsPrefix, calendarMonth: this.startCalendarMonth, calendarYear: this.startCalendarYear, onUpdateValue: this.onUpdateStartCalendarValue }),
33
- h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
34
- h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.startDateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
35
- `${mergedClsPrefix}-date-panel-date`,
36
- {
37
- [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
38
- [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
39
- [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
40
- [`${mergedClsPrefix}-date-panel-date--covered`]: dateItem.inSpan,
41
- [`${mergedClsPrefix}-date-panel-date--start`]: dateItem.startOfSpan,
42
- [`${mergedClsPrefix}-date-panel-date--end`]: dateItem.endOfSpan,
43
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
44
- }
45
- ], onClick: () => {
46
- this.handleDateClick(dateItem);
47
- }, onMouseenter: () => {
48
- this.handleDateMouseEnter(dateItem);
49
- } },
50
- h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
51
- dateItem.dateObject.date))))),
81
+ h(PanelHeader, { value: this.startCalendarDateTime, mergedClsPrefix: mergedClsPrefix, isMonth: isMonthRange, isYear: isYearRange, calendarMonth: this.startCalendarMonth, calendarYear: this.startCalendarYear, onUpdateMonth: handleMonthStartClick, onUpdateYear: handleYearStartClick }),
82
+ isWithoutDay ? (h("div", { class: `${mergedClsPrefix}-date-panel-placeholder` })) : (h(Fragment, null,
83
+ h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
84
+ h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.startDateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
85
+ `${mergedClsPrefix}-date-panel-date`,
86
+ {
87
+ [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
88
+ [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
89
+ [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
90
+ [`${mergedClsPrefix}-date-panel-date--covered`]: dateItem.inSpan,
91
+ [`${mergedClsPrefix}-date-panel-date--start`]: dateItem.startOfSpan,
92
+ [`${mergedClsPrefix}-date-panel-date--end`]: dateItem.endOfSpan,
93
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
94
+ }
95
+ ], onClick: () => {
96
+ this.handleDateClick(dateItem);
97
+ }, onMouseenter: () => {
98
+ this.handleDateMouseEnter(dateItem);
99
+ } },
100
+ h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
101
+ dateItem.dateObject.date))))))),
52
102
  h("div", { ref: "endDatesElRef", class: `${mergedClsPrefix}-date-panel-calendar ${mergedClsPrefix}-date-panel-calendar--end` },
53
- h(PanelHeader, { value: this.endCalendarDateTime, mergedClsPrefix: mergedClsPrefix, calendarMonth: this.endCalendarMonth, calendarYear: this.endCalendarYear, onUpdateValue: this.onUpdateEndCalendarValue }),
54
- h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
55
- h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.endDateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
56
- `${mergedClsPrefix}-date-panel-date`,
57
- {
58
- [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
59
- [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
60
- [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
61
- [`${mergedClsPrefix}-date-panel-date--covered`]: dateItem.inSpan,
62
- [`${mergedClsPrefix}-date-panel-date--start`]: dateItem.startOfSpan,
63
- [`${mergedClsPrefix}-date-panel-date--end`]: dateItem.endOfSpan,
64
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
65
- }
66
- ], onClick: () => {
67
- this.handleDateClick(dateItem);
68
- }, onMouseenter: () => {
69
- this.handleDateMouseEnter(dateItem);
70
- } },
71
- h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
72
- dateItem.dateObject.date))))),
103
+ h(PanelHeader, { value: this.endCalendarDateTime, mergedClsPrefix: mergedClsPrefix, isMonth: isMonthRange, isYear: isYearRange, calendarMonth: this.endCalendarMonth, calendarYear: this.endCalendarYear, onUpdateMonth: handleMonthEndClick, onUpdateYear: handleYearEndClick }),
104
+ isWithoutDay ? (h("div", { class: `${mergedClsPrefix}-date-panel-placeholder` })) : (h(Fragment, null,
105
+ h("div", { class: `${mergedClsPrefix}-date-panel-weekdays` }, this.weekdays.map((weekday) => (h("div", { key: weekday, class: `${mergedClsPrefix}-date-panel-weekdays__day` }, weekday)))),
106
+ h("div", { class: `${mergedClsPrefix}-date-panel-dates` }, this.endDateArray.map((dateItem, i) => (h("div", { "data-u-date": true, key: i, class: [
107
+ `${mergedClsPrefix}-date-panel-date`,
108
+ {
109
+ [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
110
+ [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
111
+ [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
112
+ [`${mergedClsPrefix}-date-panel-date--covered`]: dateItem.inSpan,
113
+ [`${mergedClsPrefix}-date-panel-date--start`]: dateItem.startOfSpan,
114
+ [`${mergedClsPrefix}-date-panel-date--end`]: dateItem.endOfSpan,
115
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
116
+ }
117
+ ], onClick: () => {
118
+ this.handleDateClick(dateItem);
119
+ }, onMouseenter: () => {
120
+ this.handleDateMouseEnter(dateItem);
121
+ } },
122
+ h("div", { class: `${mergedClsPrefix}-date-panel-date__trigger` }),
123
+ dateItem.dateObject.date))))))),
73
124
  this.datePickerSlots.footer ? (h("div", { class: `${mergedClsPrefix}-date-panel-footer` }, this.datePickerSlots.footer())) : null,
74
125
  ((_a = this.actions) === null || _a === void 0 ? void 0 : _a.length) || shortcuts ? (h("div", { class: `${mergedClsPrefix}-date-panel-actions` },
75
126
  h("div", { class: `${mergedClsPrefix}-date-panel-actions__prefix` }, shortcuts &&
@@ -11,6 +11,7 @@ declare const _default: import("vue").DefineComponent<{
11
11
  };
12
12
  readonly active: BooleanConstructor;
13
13
  readonly dateFormat: StringConstructor;
14
+ readonly type: import("vue").PropType<import("../config").DatePickerType>;
14
15
  readonly timeFormat: {
15
16
  readonly type: StringConstructor;
16
17
  readonly value: "HH:mm:ss";
@@ -33,7 +34,7 @@ declare const _default: import("vue").DefineComponent<{
33
34
  readonly onRender: import("vue").PropType<(() => void) | undefined>;
34
35
  readonly panel: BooleanConstructor;
35
36
  }, {
36
- handleDateClick: (dateItem: import("../utils").DateItem | import("../utils").MonthItem | import("../utils").YearItem | import("../utils").QuarterItem) => void;
37
+ handleDateClick: (dateItem: import("../utils").DateCommonItem) => void;
37
38
  handleDateInputBlur: () => void;
38
39
  handleDateInput: (value: string) => void;
39
40
  handleTimePickerChange: (value: number | null) => void;
@@ -1224,6 +1225,7 @@ declare const _default: import("vue").DefineComponent<{
1224
1225
  };
1225
1226
  readonly active: BooleanConstructor;
1226
1227
  readonly dateFormat: StringConstructor;
1228
+ readonly type: import("vue").PropType<import("../config").DatePickerType>;
1227
1229
  readonly timeFormat: {
1228
1230
  readonly type: StringConstructor;
1229
1231
  readonly value: "HH:mm:ss";
@@ -8,6 +8,7 @@ declare const _default: import("vue").DefineComponent<{
8
8
  };
9
9
  readonly active: BooleanConstructor;
10
10
  readonly dateFormat: StringConstructor;
11
+ readonly type: import("vue").PropType<import("../config").DatePickerType>;
11
12
  readonly timeFormat: {
12
13
  readonly type: StringConstructor;
13
14
  readonly value: "HH:mm:ss";
@@ -1261,6 +1262,7 @@ declare const _default: import("vue").DefineComponent<{
1261
1262
  };
1262
1263
  readonly active: BooleanConstructor;
1263
1264
  readonly dateFormat: StringConstructor;
1265
+ readonly type: import("vue").PropType<import("../config").DatePickerType>;
1264
1266
  readonly timeFormat: {
1265
1267
  readonly type: StringConstructor;
1266
1268
  readonly value: "HH:mm:ss";
@@ -1,4 +1,6 @@
1
1
  import { PropType } from 'vue';
2
+ import { OnPanelUpdateValue, PanelValue } from '../interface';
3
+ import { DateCommonItem } from '../utils';
2
4
  declare const _default: import("vue").DefineComponent<{
3
5
  mergedClsPrefix: {
4
6
  type: StringConstructor;
@@ -13,15 +15,24 @@ declare const _default: import("vue").DefineComponent<{
13
15
  type: StringConstructor;
14
16
  required: true;
15
17
  };
16
- onUpdateValue: {
17
- type: PropType<(value: number) => void>;
18
- required: true;
18
+ isMonth: {
19
+ type: BooleanConstructor;
20
+ value: boolean;
21
+ };
22
+ isYear: {
23
+ type: BooleanConstructor;
24
+ value: boolean;
19
25
  };
26
+ onUpdateValue: PropType<OnPanelUpdateValue>;
27
+ onUpdateMonth: PropType<OnPanelUpdateValue>;
28
+ onUpdateYear: PropType<OnPanelUpdateValue>;
20
29
  }, {
21
30
  monthPanelIsActive: import("vue").Ref<boolean>;
22
31
  yearPanelIsActive: import("vue").Ref<boolean>;
23
32
  onUpdateMonthPanelIsActive: (value: boolean) => void;
24
33
  onUpdateYearPanelIsActive: (value: boolean) => void;
34
+ handleUpdateMonth: (value: PanelValue, doUpdate: boolean, item?: DateCommonItem) => void;
35
+ handleUpdateYear: (value: PanelValue, doUpdate: boolean, item?: DateCommonItem) => void;
25
36
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
26
37
  mergedClsPrefix: {
27
38
  type: StringConstructor;
@@ -36,9 +47,19 @@ declare const _default: import("vue").DefineComponent<{
36
47
  type: StringConstructor;
37
48
  required: true;
38
49
  };
39
- onUpdateValue: {
40
- type: PropType<(value: number) => void>;
41
- required: true;
50
+ isMonth: {
51
+ type: BooleanConstructor;
52
+ value: boolean;
53
+ };
54
+ isYear: {
55
+ type: BooleanConstructor;
56
+ value: boolean;
42
57
  };
43
- }>>, {}, {}>;
58
+ onUpdateValue: PropType<OnPanelUpdateValue>;
59
+ onUpdateMonth: PropType<OnPanelUpdateValue>;
60
+ onUpdateYear: PropType<OnPanelUpdateValue>;
61
+ }>>, {
62
+ isMonth: boolean;
63
+ isYear: boolean;
64
+ }, {}>;
44
65
  export default _default;