@nutui/nutui 3.1.22-beta.5 → 3.1.23-beta.1

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 (168) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +3 -4
  3. package/dist/nutui.es.js +20412 -4214
  4. package/dist/nutui.umd.js +20518 -4216
  5. package/dist/packages/_es/ActionSheet.js +149 -17
  6. package/dist/packages/_es/Address.js +535 -110
  7. package/dist/packages/_es/AddressList.js +615 -113
  8. package/dist/packages/_es/Animate.js +59 -17
  9. package/dist/packages/_es/Audio.js +257 -53
  10. package/dist/packages/_es/AudioOperate.js +100 -13
  11. package/dist/packages/_es/Avatar.js +162 -38
  12. package/dist/packages/_es/AvatarGroup.js +73 -14
  13. package/dist/packages/_es/BackTop.js +156 -43
  14. package/dist/packages/_es/Badge.js +86 -14
  15. package/dist/packages/_es/Barrage.js +120 -41
  16. package/dist/packages/_es/Button.js +128 -23
  17. package/dist/packages/_es/Calendar.js +246 -30
  18. package/dist/packages/_es/CalendarItem.js +1 -1
  19. package/dist/packages/_es/Card.js +107 -10
  20. package/dist/packages/_es/Cascader.js +496 -147
  21. package/dist/packages/_es/Category.js +58 -15
  22. package/dist/packages/_es/CategoryPane.js +111 -11
  23. package/dist/packages/_es/Cell.js +108 -21
  24. package/dist/packages/_es/CellGroup.js +44 -9
  25. package/dist/packages/_es/Checkbox.js +134 -29
  26. package/dist/packages/_es/CheckboxGroup.js +79 -29
  27. package/dist/packages/_es/CircleProgress.js +150 -28
  28. package/dist/packages/_es/Col.js +56 -14
  29. package/dist/packages/_es/Collapse.js +109 -32
  30. package/dist/packages/_es/CollapseItem.js +253 -59
  31. package/dist/packages/_es/Comment.js +434 -64
  32. package/dist/packages/_es/ConfigProvider.js +20 -8
  33. package/dist/packages/_es/CountDown.js +238 -56
  34. package/dist/packages/_es/CountUp.js +539 -140
  35. package/dist/packages/_es/DatePicker.js +315 -98
  36. package/dist/packages/_es/Dialog.js +289 -60
  37. package/dist/packages/_es/Divider.js +65 -13
  38. package/dist/packages/_es/Drag.js +197 -56
  39. package/dist/packages/_es/Ecard.js +159 -24
  40. package/dist/packages/_es/Elevator.js +255 -58
  41. package/dist/packages/_es/Ellipsis.js +200 -58
  42. package/dist/packages/_es/Empty.js +71 -12
  43. package/dist/packages/_es/FixedNav.js +122 -15
  44. package/dist/packages/_es/Form.js +151 -64
  45. package/dist/packages/_es/FormItem.js +114 -15
  46. package/dist/packages/_es/Grid.js +6 -5
  47. package/dist/packages/_es/GridItem.js +144 -33
  48. package/dist/packages/_es/Icon.js +40 -15
  49. package/dist/packages/_es/Image.js +137 -26
  50. package/dist/packages/_es/ImagePreview.js +547 -76
  51. package/dist/packages/_es/Indicator.js +62 -15
  52. package/dist/packages/_es/InfiniteLoading.js +249 -57
  53. package/dist/packages/_es/Input.js +433 -51
  54. package/dist/packages/_es/InputNumber.js +160 -41
  55. package/dist/packages/_es/Layout.js +5 -4
  56. package/dist/packages/_es/List.js +106 -18
  57. package/dist/packages/_es/Menu.js +168 -44
  58. package/dist/packages/_es/MenuItem.js +173 -37
  59. package/dist/packages/_es/Navbar.js +192 -30
  60. package/dist/packages/_es/NoticeBar.js +380 -74
  61. package/dist/packages/_es/Notify.js +227 -72
  62. package/dist/packages/_es/NumberKeyboard.js +272 -41
  63. package/dist/packages/_es/OldPicker.js +457 -130
  64. package/dist/packages/_es/OverLay.js +98 -24
  65. package/dist/packages/_es/Pagination.js +157 -39
  66. package/dist/packages/_es/Picker.js +454 -129
  67. package/dist/packages/_es/Popover.js +957 -318
  68. package/dist/packages/_es/Popup.js +299 -55
  69. package/dist/packages/_es/Price.js +118 -16
  70. package/dist/packages/_es/Progress.js +146 -14
  71. package/dist/packages/_es/PullRefresh.js +339 -84
  72. package/dist/packages/_es/Radio.js +90 -22
  73. package/dist/packages/_es/RadioGroup.js +37 -8
  74. package/dist/packages/_es/Range.js +408 -83
  75. package/dist/packages/_es/Rate.js +192 -36
  76. package/dist/packages/_es/Row.js +64 -22
  77. package/dist/packages/_es/SearchBar.js +238 -37
  78. package/dist/packages/_es/ShortPassword.js +225 -35
  79. package/dist/packages/_es/SideNavBar.js +81 -24
  80. package/dist/packages/_es/SideNavBarItem.js +46 -11
  81. package/dist/packages/_es/Signature.js +160 -41
  82. package/dist/packages/_es/Skeleton.js +136 -20
  83. package/dist/packages/_es/Sku.js +491 -84
  84. package/dist/packages/_es/Step.js +115 -20
  85. package/dist/packages/_es/Steps.js +53 -18
  86. package/dist/packages/_es/Sticky.js +138 -53
  87. package/dist/packages/_es/SubSideNavBar.js +82 -17
  88. package/dist/packages/_es/Swipe.js +178 -41
  89. package/dist/packages/_es/Swiper.js +433 -121
  90. package/dist/packages/_es/SwiperItem.js +53 -22
  91. package/dist/packages/_es/Switch.js +116 -21
  92. package/dist/packages/_es/TabPane.js +39 -12
  93. package/dist/packages/_es/Tabbar.js +72 -17
  94. package/dist/packages/_es/TabbarItem.js +151 -29
  95. package/dist/packages/_es/Table.js +178 -18
  96. package/dist/packages/_es/Tabs.js +202 -43
  97. package/dist/packages/_es/Tag.js +97 -20
  98. package/dist/packages/_es/TextArea.js +160 -42
  99. package/dist/packages/_es/TimeDetail.js +79 -18
  100. package/dist/packages/_es/TimePannel.js +48 -14
  101. package/dist/packages/_es/TimeSelect.js +112 -15
  102. package/dist/packages/_es/Toast.js +310 -71
  103. package/dist/packages/_es/Uploader.js +455 -104
  104. package/dist/packages/_es/Video.js +332 -74
  105. package/dist/packages/_es/common.js +128 -38
  106. package/dist/packages/_es/component.js +76 -35
  107. package/dist/packages/_es/index.js +6 -5
  108. package/dist/packages/_es/index2.js +30 -9
  109. package/dist/packages/_es/index3.js +8 -6
  110. package/dist/packages/_es/index4.js +64 -13
  111. package/dist/packages/_es/index5.js +780 -164
  112. package/dist/packages/_es/plugin-vue_export-helper.js +8 -7
  113. package/dist/packages/_es/pxCheck.js +5 -3
  114. package/dist/packages/_es/raf.js +15 -8
  115. package/dist/packages/imagepreview/index.scss +6 -1
  116. package/dist/packages/locale/lang/baseLang.js +3 -3
  117. package/dist/packages/locale/lang/en-US.js +105 -5
  118. package/dist/packages/locale/lang/id-ID.js +105 -5
  119. package/dist/packages/locale/lang/index.js +38 -16
  120. package/dist/packages/locale/lang/zh-CN.js +105 -5
  121. package/dist/packages/locale/lang/zh-TW.js +105 -5
  122. package/dist/packages/picker/index.scss +13 -0
  123. package/dist/smartips/attributes.json +8 -0
  124. package/dist/smartips/tags.json +3 -1
  125. package/dist/smartips/web-types.json +19 -1
  126. package/dist/style.css +1 -1
  127. package/dist/style.es.js +1 -1
  128. package/dist/styles/themes/default.scss +49 -49
  129. package/dist/styles/themes/jdb.scss +49 -49
  130. package/dist/styles/themes/jdt.scss +49 -49
  131. package/dist/styles/variables-jdb.scss +4 -1
  132. package/dist/styles/variables-jdt.scss +4 -1
  133. package/dist/styles/variables.scss +1 -1
  134. package/dist/types/__VUE/actionsheet/index.vue.d.ts +3 -3
  135. package/dist/types/__VUE/address/index.vue.d.ts +4 -4
  136. package/dist/types/__VUE/calendar/index.vue.d.ts +1 -1
  137. package/dist/types/__VUE/cascader/index.vue.d.ts +3 -3
  138. package/dist/types/__VUE/cell/index.vue.d.ts +2 -2
  139. package/dist/types/__VUE/checkbox/index.vue.d.ts +2 -2
  140. package/dist/types/__VUE/collapse/index.vue.d.ts +2 -2
  141. package/dist/types/__VUE/datepicker/index.vue.d.ts +2 -2
  142. package/dist/types/__VUE/dialog/index.vue.d.ts +2 -2
  143. package/dist/types/__VUE/ecard/index.vue.d.ts +2 -2
  144. package/dist/types/__VUE/fixednav/index.vue.d.ts +2 -2
  145. package/dist/types/__VUE/grid/index.vue.d.ts +3 -3
  146. package/dist/types/__VUE/imagepreview/imagePreviewItem.vue.d.ts +95 -0
  147. package/dist/types/__VUE/imagepreview/index.vue.d.ts +23 -25
  148. package/dist/types/__VUE/infiniteloading/index.vue.d.ts +6 -6
  149. package/dist/types/__VUE/input/index.vue.d.ts +2 -2
  150. package/dist/types/__VUE/menu/index.vue.d.ts +4 -4
  151. package/dist/types/__VUE/menuitem/index.vue.d.ts +1 -1
  152. package/dist/types/__VUE/numberkeyboard/index.vue.d.ts +2 -2
  153. package/dist/types/__VUE/oldpicker/index.vue.d.ts +3 -3
  154. package/dist/types/__VUE/picker/index.vue.d.ts +3 -3
  155. package/dist/types/__VUE/popover/index.vue.d.ts +6 -6
  156. package/dist/types/__VUE/popup/index.vue.d.ts +4 -4
  157. package/dist/types/__VUE/range/index.vue.d.ts +1 -1
  158. package/dist/types/__VUE/rate/index.vue.d.ts +2 -2
  159. package/dist/types/__VUE/searchbar/index.vue.d.ts +2 -2
  160. package/dist/types/__VUE/shortpassword/index.vue.d.ts +1 -1
  161. package/dist/types/__VUE/sku/index.vue.d.ts +3 -3
  162. package/dist/types/__VUE/swipe/index.vue.d.ts +2 -2
  163. package/dist/types/__VUE/switch/index.vue.d.ts +2 -2
  164. package/dist/types/__VUE/tabbar/index.vue.d.ts +2 -2
  165. package/dist/types/__VUE/textarea/index.vue.d.ts +2 -2
  166. package/dist/types/__VUE/toast/index.vue.d.ts +1 -1
  167. package/dist/types/index.d.ts +1 -1
  168. package/package.json +1 -2
@@ -1,109 +1,326 @@
1
1
  /*!
2
- * @nutui/nutui v3.1.22-beta.5 Fri Jun 24 2022 15:10:09 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v3.1.23-beta.1 Mon Jun 27 2022 21:39:05 GMT+0800 (中国标准时间)
3
3
  * (c) 2022 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
6
- import { reactive as e, computed as t, onBeforeMount as a, watch as n, toRefs as r, resolveComponent as o, openBlock as l, createBlock as u, withCtx as i, renderSlot as s } from "vue";
7
- import c from "./Picker.js";
8
- import { popupProps as m } from "./Popup.js";
9
- import { c as d } from "./component.js";
10
- import { _ as p } from "./plugin-vue_export-helper.js";
6
+ import { reactive, computed, onBeforeMount, watch, toRefs, resolveComponent, openBlock, createBlock, withCtx, renderSlot } from "vue";
7
+ import Picker from "./Picker.js";
8
+ import { popupProps } from "./Popup.js";
9
+ import { c as createComponent } from "./component.js";
10
+ import { _ as _export_sfc } from "./plugin-vue_export-helper.js";
11
11
  import "./OverLay.js";
12
12
  import "../locale/lang";
13
13
  import "./Icon.js";
14
14
  import "./pxCheck.js";
15
- function h(e2, t2 = 2) {
16
- let a2 = e2 + "";
17
- for (; a2.length < t2; )
18
- a2 = "0" + a2;
19
- return a2;
15
+ function padZero(num, targetLength = 2) {
16
+ let str = num + "";
17
+ while (str.length < targetLength) {
18
+ str = "0" + str;
19
+ }
20
+ return str;
20
21
  }
21
- const { componentName: g, create: y, translate: D } = d("datepicker"), f = new Date().getFullYear();
22
- function x(e2) {
23
- return Object.prototype.toString.call(e2) === "[object Date]" && !isNaN(e2.getTime());
22
+ const { componentName, create, translate } = createComponent("datepicker");
23
+ const currentYear = new Date().getFullYear();
24
+ function isDate(val) {
25
+ return Object.prototype.toString.call(val) === "[object Date]" && !isNaN(val.getTime());
24
26
  }
25
- const b = { day: D("day"), year: D("year"), month: D("month"), hour: D("hour"), minute: D("minute"), seconds: D("seconds") }, v = y({ components: { [c.name]: c }, props: { ...m, modelValue: null, title: { type: String, default: "" }, okText: { type: String, default: "" }, cancelText: { type: String, default: "" }, type: { type: String, default: "date" }, isShowChinese: { type: Boolean, default: false }, minuteStep: { type: Number, default: 1 }, minDate: { type: Date, default: () => new Date(f - 10, 0, 1), validator: x }, maxDate: { type: Date, default: () => new Date(f + 10, 11, 31), validator: x }, formatter: { type: Function, default: null }, filter: Function }, emits: ["click", "update:visible", "change", "confirm", "update:moduleValue"], setup(o2, { emit: l2 }) {
26
- const u2 = e({ show: o2.visible, currentDate: new Date(), title: o2.title, selectedValue: [] }), i2 = (e2) => {
27
- x(e2) || (e2 = o2.minDate);
28
- let t2 = Math.max(e2.getTime(), o2.minDate.getTime());
29
- return t2 = Math.min(t2, o2.maxDate.getTime()), new Date(t2);
30
- };
31
- function s2(e2, t2) {
32
- return 32 - new Date(e2, t2 - 1, 32).getDate();
33
- }
34
- const c2 = (e2, t2) => {
35
- const a2 = o2[`${e2}Date`], n2 = a2.getFullYear();
36
- let r2 = 1, l3 = 1, u3 = 0, i3 = 0;
37
- e2 === "max" && (r2 = 12, l3 = s2(t2.getFullYear(), t2.getMonth() + 1), u3 = 23, i3 = 59);
38
- const c3 = i3;
39
- return t2.getFullYear() !== n2 ? { [`${e2}Year`]: n2, [`${e2}Month`]: r2, [`${e2}Day`]: l3, [`${e2}Hour`]: u3, [`${e2}Minute`]: i3, [`${e2}Seconds`]: c3 } : (r2 = a2.getMonth() + 1, t2.getMonth() + 1 === r2 && (l3 = a2.getDate(), t2.getDate() === l3 && (u3 = a2.getHours(), t2.getHours() === u3 && (i3 = a2.getMinutes()))), { [`${e2}Year`]: n2, [`${e2}Month`]: r2, [`${e2}Day`]: l3, [`${e2}Hour`]: u3, [`${e2}Minute`]: i3, [`${e2}Seconds`]: c3 });
40
- }, m2 = t(() => {
41
- const { maxYear: e2, maxDay: t2, maxMonth: a2, maxHour: n2, maxMinute: r2, maxSeconds: l3 } = c2("max", u2.currentDate), { minYear: i3, minDay: s3, minMonth: m3, minHour: d3, minMinute: p3, minSeconds: h2 } = c2("min", u2.currentDate);
42
- let g3 = [{ type: "year", range: [i3, e2] }, { type: "month", range: [m3, a2] }, { type: "day", range: [s3, t2] }, { type: "hour", range: [d3, n2] }, { type: "minute", range: [p3, r2] }, { type: "seconds", range: [h2, l3] }];
43
- switch (o2.type) {
44
- case "date":
45
- g3 = g3.slice(0, 3);
46
- break;
47
- case "datetime":
48
- g3 = g3.slice(0, 5);
49
- break;
50
- case "time":
51
- g3 = g3.slice(3, 6);
52
- break;
53
- case "year-month":
54
- g3 = g3.slice(0, 2);
55
- break;
56
- case "month-day":
57
- g3 = g3.slice(1, 3);
58
- break;
59
- case "datehour":
60
- g3 = g3.slice(0, 4);
61
- }
62
- return g3;
63
- }), d2 = t(() => m2.value.map((e2, t2) => g2(e2.range[0], e2.range[1], y2(e2.type), e2.type, t2))), p2 = (e2, t2) => {
64
- const { formatter: a2, isShowChinese: n2 } = o2;
65
- let r2 = null;
66
- if (a2)
67
- r2 = a2(e2, { text: h(t2, 2), value: h(t2, 2) });
68
- else {
69
- const a3 = h(t2, 2);
70
- r2 = { text: a3 + (n2 ? b[e2] : ""), value: a3 };
27
+ const zhCNType = {
28
+ day: translate("day"),
29
+ year: translate("year"),
30
+ month: translate("month"),
31
+ hour: translate("hour"),
32
+ minute: translate("minute"),
33
+ seconds: translate("seconds")
34
+ };
35
+ const _sfc_main = create({
36
+ components: {
37
+ [Picker.name]: Picker
38
+ },
39
+ props: {
40
+ ...popupProps,
41
+ modelValue: null,
42
+ title: {
43
+ type: String,
44
+ default: ""
45
+ },
46
+ okText: {
47
+ type: String,
48
+ default: ""
49
+ },
50
+ cancelText: {
51
+ type: String,
52
+ default: ""
53
+ },
54
+ type: {
55
+ type: String,
56
+ default: "date"
57
+ },
58
+ isShowChinese: {
59
+ type: Boolean,
60
+ default: false
61
+ },
62
+ minuteStep: {
63
+ type: Number,
64
+ default: 1
65
+ },
66
+ minDate: {
67
+ type: Date,
68
+ default: () => new Date(currentYear - 10, 0, 1),
69
+ validator: isDate
70
+ },
71
+ maxDate: {
72
+ type: Date,
73
+ default: () => new Date(currentYear + 10, 11, 31),
74
+ validator: isDate
75
+ },
76
+ formatter: {
77
+ type: Function,
78
+ default: null
79
+ },
80
+ filter: Function
81
+ },
82
+ emits: ["click", "update:visible", "change", "confirm", "update:moduleValue"],
83
+ setup(props, { emit }) {
84
+ const state = reactive({
85
+ show: props.visible,
86
+ currentDate: new Date(),
87
+ title: props.title,
88
+ selectedValue: []
89
+ });
90
+ const formatValue = (value) => {
91
+ if (!isDate(value)) {
92
+ value = props.minDate;
93
+ }
94
+ let timestmp = Math.max(value.getTime(), props.minDate.getTime());
95
+ timestmp = Math.min(timestmp, props.maxDate.getTime());
96
+ return new Date(timestmp);
97
+ };
98
+ function getMonthEndDay(year, month) {
99
+ return 32 - new Date(year, month - 1, 32).getDate();
71
100
  }
72
- return r2;
73
- }, g2 = (e2, t2, a2, n2, r2) => {
74
- const l3 = [];
75
- let i3 = 0;
76
- for (; e2 <= t2; )
77
- l3.push(p2(n2, e2)), n2 === "minute" ? e2 += o2.minuteStep : e2++, e2 <= a2 && i3++;
78
- return u2.selectedValue[r2] = l3[i3].value, o2.filter ? o2.filter(n2, l3) : l3;
79
- }, y2 = (e2) => e2 === "year" ? u2.currentDate.getFullYear() : e2 === "month" ? u2.currentDate.getMonth() + 1 : e2 === "day" ? u2.currentDate.getDate() : e2 === "hour" ? u2.currentDate.getHours() : e2 === "minute" ? u2.currentDate.getMinutes() : e2 === "seconds" ? u2.currentDate.getSeconds() : 0;
80
- return a(() => {
81
- u2.currentDate = i2(o2.modelValue);
82
- }), n(() => o2.modelValue, (e2) => {
83
- u2.currentDate = i2(e2);
84
- }), n(() => o2.title, (e2) => {
85
- u2.title = e2;
86
- }), n(() => o2.visible, (e2) => {
87
- u2.show = e2;
88
- }), { ...r(u2), changeHandler: ({ columnIndex: e2, selectedValue: t2, selectedOptions: a2 }) => {
89
- if (["date", "datetime", "datehour", "month-day"].includes(o2.type)) {
90
- let e3 = [];
91
- t2.forEach((t3) => {
92
- e3.push(t3);
93
- }), o2.type == "month-day" && e3.length < 3 && e3.unshift(new Date(o2.modelValue || o2.minDate || o2.maxDate).getFullYear());
94
- const a3 = Number(e3[0]), n2 = Number(e3[1]) - 1, r2 = Math.min(Number(e3[2]), s2(Number(e3[0]), Number(e3[1])));
95
- let l3 = null;
96
- o2.type === "date" || o2.type === "month-day" ? l3 = new Date(a3, n2, r2) : o2.type === "datetime" ? l3 = new Date(a3, n2, r2, Number(e3[3]), Number(e3[4])) : o2.type === "datehour" && (l3 = new Date(a3, n2, r2, Number(e3[3]))), u2.currentDate = i2(l3);
97
- }
98
- l2("change", { columnIndex: e2, selectedValue: t2, selectedOptions: a2 });
99
- }, closeHandler: () => {
100
- l2("update:visible", false);
101
- }, confirm: (e2) => {
102
- l2("update:visible", false), l2("confirm", e2);
103
- }, columns: d2 };
104
- } });
105
- var w = p(v, [["render", function(e2, t2, a2, n2, r2, c2) {
106
- const m2 = o("nut-picker");
107
- return l(), u(m2, { modelValue: e2.selectedValue, "onUpdate:modelValue": t2[0] || (t2[0] = (t3) => e2.selectedValue = t3), visible: e2.show, "onUpdate:visible": t2[1] || (t2[1] = (t3) => e2.show = t3), okText: e2.okText, cancelText: e2.cancelText, onClose: e2.closeHandler, columns: e2.columns, onChange: e2.changeHandler, title: e2.title, onConfirm: e2.confirm, isWrapTeleport: e2.isWrapTeleport }, { default: i(() => [s(e2.$slots, "default")]), _: 3 }, 8, ["modelValue", "visible", "okText", "cancelText", "onClose", "columns", "onChange", "title", "onConfirm", "isWrapTeleport"]);
108
- }]]);
109
- export { w as default };
101
+ const getBoundary = (type, value) => {
102
+ const boundary = props[`${type}Date`];
103
+ const year = boundary.getFullYear();
104
+ let month = 1;
105
+ let day = 1;
106
+ let hour = 0;
107
+ let minute = 0;
108
+ if (type === "max") {
109
+ month = 12;
110
+ day = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);
111
+ hour = 23;
112
+ minute = 59;
113
+ }
114
+ const seconds = minute;
115
+ if (value.getFullYear() === year) {
116
+ month = boundary.getMonth() + 1;
117
+ if (value.getMonth() + 1 === month) {
118
+ day = boundary.getDate();
119
+ if (value.getDate() === day) {
120
+ hour = boundary.getHours();
121
+ if (value.getHours() === hour) {
122
+ minute = boundary.getMinutes();
123
+ }
124
+ }
125
+ }
126
+ } else {
127
+ return {
128
+ [`${type}Year`]: year,
129
+ [`${type}Month`]: month,
130
+ [`${type}Day`]: day,
131
+ [`${type}Hour`]: hour,
132
+ [`${type}Minute`]: minute,
133
+ [`${type}Seconds`]: seconds
134
+ };
135
+ }
136
+ return {
137
+ [`${type}Year`]: year,
138
+ [`${type}Month`]: month,
139
+ [`${type}Day`]: day,
140
+ [`${type}Hour`]: hour,
141
+ [`${type}Minute`]: minute,
142
+ [`${type}Seconds`]: seconds
143
+ };
144
+ };
145
+ const ranges = computed(() => {
146
+ const { maxYear, maxDay, maxMonth, maxHour, maxMinute, maxSeconds } = getBoundary("max", state.currentDate);
147
+ const { minYear, minDay, minMonth, minHour, minMinute, minSeconds } = getBoundary("min", state.currentDate);
148
+ let result = [
149
+ {
150
+ type: "year",
151
+ range: [minYear, maxYear]
152
+ },
153
+ {
154
+ type: "month",
155
+ range: [minMonth, maxMonth]
156
+ },
157
+ {
158
+ type: "day",
159
+ range: [minDay, maxDay]
160
+ },
161
+ {
162
+ type: "hour",
163
+ range: [minHour, maxHour]
164
+ },
165
+ {
166
+ type: "minute",
167
+ range: [minMinute, maxMinute]
168
+ },
169
+ {
170
+ type: "seconds",
171
+ range: [minSeconds, maxSeconds]
172
+ }
173
+ ];
174
+ switch (props.type) {
175
+ case "date":
176
+ result = result.slice(0, 3);
177
+ break;
178
+ case "datetime":
179
+ result = result.slice(0, 5);
180
+ break;
181
+ case "time":
182
+ result = result.slice(3, 6);
183
+ break;
184
+ case "year-month":
185
+ result = result.slice(0, 2);
186
+ break;
187
+ case "month-day":
188
+ result = result.slice(1, 3);
189
+ break;
190
+ case "datehour":
191
+ result = result.slice(0, 4);
192
+ break;
193
+ }
194
+ return result;
195
+ });
196
+ const columns = computed(() => {
197
+ const val = ranges.value.map((res, columnIndex) => {
198
+ return generateValue(res.range[0], res.range[1], getDateIndex(res.type), res.type, columnIndex);
199
+ });
200
+ return val;
201
+ });
202
+ const changeHandler = ({
203
+ columnIndex,
204
+ selectedValue,
205
+ selectedOptions
206
+ }) => {
207
+ if (["date", "datetime", "datehour", "month-day"].includes(props.type)) {
208
+ let formatDate = [];
209
+ selectedValue.forEach((item) => {
210
+ formatDate.push(item);
211
+ });
212
+ if (props.type == "month-day" && formatDate.length < 3) {
213
+ formatDate.unshift(new Date(props.modelValue || props.minDate || props.maxDate).getFullYear());
214
+ }
215
+ const year = Number(formatDate[0]);
216
+ const month = Number(formatDate[1]) - 1;
217
+ const day = Math.min(Number(formatDate[2]), getMonthEndDay(Number(formatDate[0]), Number(formatDate[1])));
218
+ let date = null;
219
+ if (props.type === "date" || props.type === "month-day") {
220
+ date = new Date(year, month, day);
221
+ } else if (props.type === "datetime") {
222
+ date = new Date(year, month, day, Number(formatDate[3]), Number(formatDate[4]));
223
+ } else if (props.type === "datehour") {
224
+ date = new Date(year, month, day, Number(formatDate[3]));
225
+ }
226
+ state.currentDate = formatValue(date);
227
+ }
228
+ emit("change", { columnIndex, selectedValue, selectedOptions });
229
+ };
230
+ const formatterOption = (type, value) => {
231
+ const { formatter, isShowChinese } = props;
232
+ let fOption = null;
233
+ if (formatter) {
234
+ fOption = formatter(type, { text: padZero(value, 2), value: padZero(value, 2) });
235
+ } else {
236
+ const padMin = padZero(value, 2);
237
+ const fatter = isShowChinese ? zhCNType[type] : "";
238
+ fOption = { text: padMin + fatter, value: padMin };
239
+ }
240
+ return fOption;
241
+ };
242
+ const generateValue = (min, max, val, type, columnIndex) => {
243
+ const arr = [];
244
+ let index2 = 0;
245
+ while (min <= max) {
246
+ arr.push(formatterOption(type, min));
247
+ if (type === "minute") {
248
+ min += props.minuteStep;
249
+ } else {
250
+ min++;
251
+ }
252
+ if (min <= val) {
253
+ index2++;
254
+ }
255
+ }
256
+ state.selectedValue[columnIndex] = arr[index2].value;
257
+ return props.filter ? props.filter(type, arr) : arr;
258
+ };
259
+ const getDateIndex = (type) => {
260
+ if (type === "year") {
261
+ return state.currentDate.getFullYear();
262
+ } else if (type === "month") {
263
+ return state.currentDate.getMonth() + 1;
264
+ } else if (type === "day") {
265
+ return state.currentDate.getDate();
266
+ } else if (type === "hour") {
267
+ return state.currentDate.getHours();
268
+ } else if (type === "minute") {
269
+ return state.currentDate.getMinutes();
270
+ } else if (type === "seconds") {
271
+ return state.currentDate.getSeconds();
272
+ }
273
+ return 0;
274
+ };
275
+ const closeHandler = () => {
276
+ emit("update:visible", false);
277
+ };
278
+ const confirm = (val) => {
279
+ emit("update:visible", false);
280
+ emit("confirm", val);
281
+ };
282
+ onBeforeMount(() => {
283
+ state.currentDate = formatValue(props.modelValue);
284
+ });
285
+ watch(() => props.modelValue, (value) => {
286
+ state.currentDate = formatValue(value);
287
+ });
288
+ watch(() => props.title, (val) => {
289
+ state.title = val;
290
+ });
291
+ watch(() => props.visible, (val) => {
292
+ state.show = val;
293
+ });
294
+ return {
295
+ ...toRefs(state),
296
+ changeHandler,
297
+ closeHandler,
298
+ confirm,
299
+ columns
300
+ };
301
+ }
302
+ });
303
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
304
+ const _component_nut_picker = resolveComponent("nut-picker");
305
+ return openBlock(), createBlock(_component_nut_picker, {
306
+ modelValue: _ctx.selectedValue,
307
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.selectedValue = $event),
308
+ visible: _ctx.show,
309
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => _ctx.show = $event),
310
+ okText: _ctx.okText,
311
+ cancelText: _ctx.cancelText,
312
+ onClose: _ctx.closeHandler,
313
+ columns: _ctx.columns,
314
+ onChange: _ctx.changeHandler,
315
+ title: _ctx.title,
316
+ onConfirm: _ctx.confirm,
317
+ isWrapTeleport: _ctx.isWrapTeleport
318
+ }, {
319
+ default: withCtx(() => [
320
+ renderSlot(_ctx.$slots, "default")
321
+ ]),
322
+ _: 3
323
+ }, 8, ["modelValue", "visible", "okText", "cancelText", "onClose", "columns", "onChange", "title", "onConfirm", "isWrapTeleport"]);
324
+ }
325
+ var index = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
326
+ export { index as default };