yc-design-vue 2.2.4 → 2.2.6

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 (131) hide show
  1. package/dist/index.umd.js +1 -1
  2. package/dist/style.css +1 -1
  3. package/es/Breadcrumb/BreadcrumbSeparator.vue.js +1 -1
  4. package/es/Calendar/CalendarMonth.vue.js +2 -4
  5. package/es/ColorPicker/ColorPicker.vue.d.ts +1 -1
  6. package/es/ColorPicker/index.d.ts +3 -3
  7. package/es/DatePicker/YcDatePicker.vue.d.ts +69 -1
  8. package/es/DatePicker/YcDatePicker.vue.js +287 -4
  9. package/es/DatePicker/{YcDatePicker.vue2.js → YcDatePicker.vue3.js} +1 -0
  10. package/es/DatePicker/YcMonthPicker.vue.d.ts +2 -2
  11. package/es/DatePicker/YcMonthPicker.vue.js +65 -59
  12. package/es/DatePicker/YcWeekPicker.vue.d.ts +2 -2
  13. package/es/DatePicker/YcWeekPicker.vue.js +292 -4
  14. package/es/DatePicker/YcWeekPicker.vue3.js +5 -0
  15. package/es/DatePicker/YcYearPicker.vue.d.ts +2 -2
  16. package/es/DatePicker/YcYearPicker.vue.js +69 -52
  17. package/es/DatePicker/component/PickerCell.vue.d.ts +2 -2
  18. package/es/DatePicker/component/PickerCell.vue.js +39 -5
  19. package/es/DatePicker/component/PickerCell.vue3.js +5 -0
  20. package/es/DatePicker/component/PickerHeader.vue.d.ts +40 -0
  21. package/es/DatePicker/component/PickerHeader.vue.js +83 -0
  22. package/es/DatePicker/component/PickerHeader.vue3.js +5 -0
  23. package/es/DatePicker/component/PickerInput.vue.d.ts +1 -0
  24. package/es/DatePicker/component/PickerInput.vue.js +121 -5
  25. package/es/DatePicker/component/PickerInput.vue3.js +5 -0
  26. package/es/DatePicker/component/PickerPanel.vue.d.ts +6 -1
  27. package/es/DatePicker/component/PickerPanel.vue.js +47 -6
  28. package/es/DatePicker/component/PickerWeekHeader.vue.d.ts +8 -0
  29. package/es/DatePicker/component/PickerWeekHeader.vue.js +58 -0
  30. package/es/DatePicker/component/PickerWeekHeader.vue3.js +5 -0
  31. package/es/DatePicker/hooks/userPicker.d.ts +7 -15
  32. package/es/DatePicker/hooks/userPicker.js +45 -49
  33. package/es/DatePicker/index.css +2 -2
  34. package/es/DatePicker/index.d.ts +156 -3
  35. package/es/DatePicker/index.js +5 -3
  36. package/es/DatePicker/type.d.ts +1 -0
  37. package/es/InputNumber/InputNumber.vue.d.ts +1 -1
  38. package/es/InputNumber/index.d.ts +3 -3
  39. package/es/Layout/LayoutSider.vue.d.ts +1 -1
  40. package/es/Layout/index.d.ts +3 -3
  41. package/es/Slider/Slider.vue.d.ts +1 -1
  42. package/es/Slider/index.d.ts +3 -3
  43. package/es/Statistic/Countdown.vue.d.ts +1 -1
  44. package/es/Statistic/Statistic.vue.d.ts +1 -1
  45. package/es/Statistic/index.d.ts +6 -6
  46. package/es/Transfer/TransferPanel.vue.js +1 -1
  47. package/es/Upload/UploadFileList.vue.js +1 -1
  48. package/es/Upload/UploadPictureCard.vue.js +1 -1
  49. package/es/_shared/icons/IconDelete.vue.js +24 -1
  50. package/es/_shared/icons/IconDelete.vue2.js +1 -24
  51. package/es/_shared/icons/IconDoubleLeft.vue.js +1 -24
  52. package/es/_shared/icons/IconDoubleLeft.vue2.js +24 -1
  53. package/es/_shared/icons/IconDoubleRight.vue.js +1 -24
  54. package/es/_shared/icons/IconDoubleRight.vue2.js +24 -1
  55. package/es/_shared/icons/IconSeparator.vue.js +24 -1
  56. package/es/_shared/icons/IconSeparator.vue2.js +1 -24
  57. package/es/_shared/utils/time.d.ts +20 -0
  58. package/es/_shared/utils/time.js +74 -0
  59. package/es/index.d.ts +18 -18
  60. package/es/style.css +1 -1
  61. package/lib/Breadcrumb/BreadcrumbSeparator.vue.js +1 -1
  62. package/lib/Calendar/CalendarMonth.vue.js +1 -1
  63. package/lib/ColorPicker/ColorPicker.vue.d.ts +1 -1
  64. package/lib/ColorPicker/index.d.ts +3 -3
  65. package/lib/DatePicker/YcDatePicker.vue.d.ts +69 -1
  66. package/lib/DatePicker/YcDatePicker.vue.js +1 -1
  67. package/lib/DatePicker/{YcDatePicker.vue2.js → YcDatePicker.vue3.js} +1 -1
  68. package/lib/DatePicker/YcMonthPicker.vue.d.ts +2 -2
  69. package/lib/DatePicker/YcMonthPicker.vue.js +1 -1
  70. package/lib/DatePicker/YcWeekPicker.vue.d.ts +2 -2
  71. package/lib/DatePicker/YcWeekPicker.vue.js +1 -1
  72. package/lib/DatePicker/YcWeekPicker.vue3.js +1 -0
  73. package/lib/DatePicker/YcYearPicker.vue.d.ts +2 -2
  74. package/lib/DatePicker/YcYearPicker.vue.js +1 -1
  75. package/lib/DatePicker/component/PickerCell.vue.d.ts +2 -2
  76. package/lib/DatePicker/component/PickerCell.vue.js +1 -1
  77. package/lib/DatePicker/component/PickerCell.vue3.js +1 -0
  78. package/lib/DatePicker/component/PickerHeader.vue.d.ts +40 -0
  79. package/lib/DatePicker/component/PickerHeader.vue.js +1 -0
  80. package/lib/DatePicker/component/PickerHeader.vue3.js +1 -0
  81. package/lib/DatePicker/component/PickerInput.vue.d.ts +1 -0
  82. package/lib/DatePicker/component/PickerInput.vue.js +1 -1
  83. package/lib/DatePicker/component/PickerInput.vue3.js +1 -0
  84. package/lib/DatePicker/component/PickerPanel.vue.d.ts +6 -1
  85. package/lib/DatePicker/component/PickerPanel.vue.js +1 -1
  86. package/lib/DatePicker/component/PickerWeekHeader.vue.d.ts +8 -0
  87. package/lib/DatePicker/component/PickerWeekHeader.vue.js +1 -0
  88. package/lib/DatePicker/component/PickerWeekHeader.vue3.js +1 -0
  89. package/lib/DatePicker/hooks/userPicker.d.ts +7 -15
  90. package/lib/DatePicker/hooks/userPicker.js +1 -1
  91. package/lib/DatePicker/index.css +2 -2
  92. package/lib/DatePicker/index.d.ts +156 -3
  93. package/lib/DatePicker/index.js +1 -1
  94. package/lib/DatePicker/type.d.ts +1 -0
  95. package/lib/InputNumber/InputNumber.vue.d.ts +1 -1
  96. package/lib/InputNumber/index.d.ts +3 -3
  97. package/lib/Layout/LayoutSider.vue.d.ts +1 -1
  98. package/lib/Layout/index.d.ts +3 -3
  99. package/lib/Slider/Slider.vue.d.ts +1 -1
  100. package/lib/Slider/index.d.ts +3 -3
  101. package/lib/Statistic/Countdown.vue.d.ts +1 -1
  102. package/lib/Statistic/Statistic.vue.d.ts +1 -1
  103. package/lib/Statistic/index.d.ts +6 -6
  104. package/lib/Transfer/TransferPanel.vue.js +1 -1
  105. package/lib/Upload/UploadFileList.vue.js +1 -1
  106. package/lib/Upload/UploadPictureCard.vue.js +1 -1
  107. package/lib/_shared/icons/IconDelete.vue.js +1 -1
  108. package/lib/_shared/icons/IconDelete.vue2.js +1 -1
  109. package/lib/_shared/icons/IconDoubleLeft.vue.js +1 -1
  110. package/lib/_shared/icons/IconDoubleLeft.vue2.js +1 -1
  111. package/lib/_shared/icons/IconDoubleRight.vue.js +1 -1
  112. package/lib/_shared/icons/IconDoubleRight.vue2.js +1 -1
  113. package/lib/_shared/icons/IconSeparator.vue.js +1 -1
  114. package/lib/_shared/icons/IconSeparator.vue2.js +1 -1
  115. package/lib/_shared/utils/time.d.ts +20 -0
  116. package/lib/_shared/utils/time.js +1 -1
  117. package/lib/index.d.ts +18 -18
  118. package/lib/style.css +1 -1
  119. package/package.json +1 -1
  120. package/es/Calendar/hooks/useCalendar.d.ts +0 -7
  121. package/es/Calendar/hooks/useCalendar.js +0 -36
  122. package/es/DatePicker/YcWeekPicker.vue2.js +0 -315
  123. package/es/DatePicker/component/PickerCell.vue2.js +0 -41
  124. package/es/DatePicker/component/PickerInput.vue2.js +0 -121
  125. package/es/_virtual/_plugin-vue_export-helper.js +0 -10
  126. package/lib/Calendar/hooks/useCalendar.d.ts +0 -7
  127. package/lib/Calendar/hooks/useCalendar.js +0 -1
  128. package/lib/DatePicker/YcWeekPicker.vue2.js +0 -1
  129. package/lib/DatePicker/component/PickerCell.vue2.js +0 -1
  130. package/lib/DatePicker/component/PickerInput.vue2.js +0 -1
  131. package/lib/_virtual/_plugin-vue_export-helper.js +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "yc-design-vue",
3
3
  "private": false,
4
- "version": "2.2.4",
4
+ "version": "2.2.6",
5
5
  "type": "module",
6
6
  "description": "A Vue 3 component library.",
7
7
  "keywords": [
@@ -1,7 +0,0 @@
1
- export interface CalendarCellData {
2
- label: string | number;
3
- value: Date;
4
- }
5
- export default function useCalendar(): {
6
- getDayOfMonth: (year: number, month: number, dayStartOfWeek?: number) => CalendarCellData[][];
7
- };
@@ -1,36 +0,0 @@
1
- import "../../node_modules/b-tween/dist/b-tween.es.js";
2
- import dayjs from "../../node_modules/dayjs/dayjs.min.js";
3
- import "../../node_modules/tinycolor2/esm/tinycolor.js";
4
- import "../../_shared/utils/dom.js";
5
- import "vue";
6
- import "../../_shared/utils/locale.js";
7
- import "../../_shared/utils/time.js";
8
- function useCalendar() {
9
- const getDayOfMonth = (year, month, dayStartOfWeek = 0) => {
10
- const firstDayOfMonth = dayjs(new Date(year, month, 1));
11
- const firstDayOfWeek = firstDayOfMonth.day();
12
- const daysFromPrevMonth = (firstDayOfWeek - dayStartOfWeek + 7) % 7;
13
- const totalCalendarDays = 42;
14
- const calendar = [];
15
- for (let i = 0; i < totalCalendarDays; i++) {
16
- const dayOffset = i - daysFromPrevMonth;
17
- const date = firstDayOfMonth.add(dayOffset, "day");
18
- const rowIndex = Math.floor(i / 7);
19
- const colIndex = i % 7;
20
- if (colIndex === 0) {
21
- calendar[rowIndex] = [];
22
- }
23
- calendar[rowIndex][colIndex] = {
24
- label: date.date(),
25
- value: date.toDate()
26
- };
27
- }
28
- return calendar;
29
- };
30
- return {
31
- getDayOfMonth
32
- };
33
- }
34
- export {
35
- useCalendar as default
36
- };
@@ -1,315 +0,0 @@
1
- import { defineComponent, useSlots, ref, computed, watch, createElementBlock, openBlock, Fragment, createVNode, createBlock, unref, withCtx, createSlots, createElementVNode, renderSlot, toDisplayString, renderList, normalizeClass, normalizeStyle } from "vue";
2
- import usePicker from "./hooks/userPicker.js";
3
- import "../node_modules/b-tween/dist/b-tween.es.js";
4
- import dayjs from "../node_modules/dayjs/dayjs.min.js";
5
- import "../node_modules/tinycolor2/esm/tinycolor.js";
6
- import "../_shared/utils/dom.js";
7
- import "../_shared/utils/locale.js";
8
- import "../_shared/utils/time.js";
9
- /* empty css */
10
- /* empty css */
11
- /* empty css */
12
- import _sfc_main$5 from "../_shared/icons/IconArrowRight.vue.js";
13
- import _sfc_main$4 from "../_shared/icons/IconDoubleLeft.vue.js";
14
- import _sfc_main$6 from "../_shared/icons/IconDoubleRight.vue.js";
15
- import PickerCell from "./component/PickerCell.vue.js";
16
- import _sfc_main$3 from "./component/PickerPanel.vue.js";
17
- /* empty css */
18
- import PickerInput from "./component/PickerInput.vue.js";
19
- import _sfc_main$1 from "./YcYearPicker.vue.js";
20
- /* empty css */
21
- import _sfc_main$2 from "./YcMonthPicker.vue.js";
22
- /* empty css */
23
- const _hoisted_1 = { class: "yc-panel-week" };
24
- const _hoisted_2 = { class: "yc-picker-header" };
25
- const _hoisted_3 = { class: "yc-picker-header-title" };
26
- const _hoisted_4 = { class: "yc-picker-week-list" };
27
- const _hoisted_5 = { class: "yc-picker-body" };
28
- const _hoisted_6 = ["onClick"];
29
- const _sfc_main = /* @__PURE__ */ defineComponent({
30
- ...{
31
- name: "WeekPicker",
32
- inheritAttrs: false
33
- },
34
- __name: "YcWeekPicker",
35
- props: {
36
- modelValue: { default: void 0 },
37
- defaultValue: { default: "" },
38
- dayStartOfWeek: { default: 0 },
39
- locale: { default: () => ({}) },
40
- hideTrigger: { type: Boolean, default: false },
41
- allowClear: { type: Boolean, default: false },
42
- readonly: { type: Boolean, default: false },
43
- error: { type: Boolean, default: false },
44
- size: { default: void 0 },
45
- shortcuts: { default: () => [] },
46
- shortcutsPosition: { default: "bottom" },
47
- position: { default: "bl" },
48
- popupVisible: { type: Boolean, default: void 0 },
49
- defaultPopupVisible: { type: Boolean, default: false },
50
- triggerProps: { default: () => ({}) },
51
- unmountOnClose: { type: Boolean, default: false },
52
- placeholder: { default: "" },
53
- disabled: { type: Boolean, default: false },
54
- disabledDate: { type: Function, default: void 0 },
55
- disabledTime: {},
56
- pickerValue: { default: void 0 },
57
- defaultPickerValue: { default: "" },
58
- popupContainer: { default: void 0 },
59
- valueFormat: { default: "YYYY-MM-DD" },
60
- format: { default: "gggg-wo" },
61
- previewShortcut: { type: Boolean, default: true },
62
- showConfirmBtn: { type: Boolean, default: false },
63
- disabledInput: { type: Boolean, default: false },
64
- abbreviation: { type: Boolean, default: true }
65
- },
66
- emits: ["update:modelValue", "update:popupVisible", "update:pickerValue", "change", "select", "ok", "picker-value-change", "popup-visible-change", "clear", "select-shortcut"],
67
- setup(__props, { emit: __emit }) {
68
- const $slots = useSlots();
69
- const props = __props;
70
- const emits = __emit;
71
- const {
72
- computedValue,
73
- locale,
74
- abbreviation,
75
- dayStartOfWeek,
76
- curMonth,
77
- curYear,
78
- showMonthPicker,
79
- showYearPicker,
80
- DefinePanel,
81
- ReusePanel,
82
- t,
83
- getDateFromFormat,
84
- getWeeksOfMonth,
85
- handleConfirm,
86
- handleSelect,
87
- handleShortcut
88
- } = usePicker({
89
- props,
90
- emits
91
- });
92
- const weekDate = ref([]);
93
- const weekHeaders = computed(() => {
94
- const baseDays = [0, 1, 2, 3, 4, 5, 6];
95
- const days = [
96
- ...baseDays.slice(dayStartOfWeek.value || 0),
97
- ...baseDays.slice(0, dayStartOfWeek.value || 0)
98
- ];
99
- const map = Object.fromEntries(
100
- [
101
- "sunday",
102
- "monday",
103
- "tuesday",
104
- "wednesday",
105
- "thursday",
106
- "friday",
107
- "saturday"
108
- ].map((v, i) => [i, v])
109
- );
110
- return days.map((v) => {
111
- var _a;
112
- const key = `datePicker.week.${abbreviation.value ? "short" : "long"}.${map[v]}`;
113
- return ((_a = locale.value) == null ? void 0 : _a[key]) || t(key);
114
- });
115
- });
116
- const isCellInView = (day) => {
117
- const { value } = day;
118
- return value.getFullYear() == curYear.value && value.getMonth() == curMonth.value;
119
- };
120
- const isToday = (day) => {
121
- const { value } = day;
122
- const date = dayjs();
123
- return value.getFullYear() == date.year() && value.getMonth() == date.month() && value.getDate() == date.date();
124
- };
125
- const isSelected = (v) => {
126
- const date = getDateFromFormat(computedValue.value);
127
- if (!date) return false;
128
- return date.getFullYear() == v.getFullYear() && date.getMonth() == v.getMonth() && date.getDate() == v.getDate();
129
- };
130
- const handleDateChange = (dateType, type) => {
131
- if (dateType == "year") {
132
- curYear.value = type == "pre" ? curYear.value - 1 : curYear.value + 1;
133
- weekDate.value = getWeeksOfMonth(curYear.value, curMonth.value);
134
- } else {
135
- const base = dayjs().set("year", curYear.value).set("month", curMonth.value);
136
- const date = type == "pre" ? base.subtract(1, "month") : base.add(1, "month");
137
- curYear.value = date.year();
138
- curMonth.value = date.month();
139
- weekDate.value = getWeeksOfMonth(curYear.value, curMonth.value);
140
- }
141
- };
142
- watch(
143
- () => computedValue.value,
144
- (val) => {
145
- const date = val ? getDateFromFormat(val) : /* @__PURE__ */ new Date();
146
- curYear.value = date.getFullYear();
147
- curMonth.value = date.getMonth();
148
- weekDate.value = getWeeksOfMonth(curYear.value, curMonth.value);
149
- },
150
- {
151
- immediate: true
152
- }
153
- );
154
- return (_ctx, _cache) => {
155
- return openBlock(), createElementBlock(Fragment, null, [
156
- createVNode(unref(DefinePanel), null, {
157
- default: withCtx(() => [
158
- unref(showYearPicker) ? (openBlock(), createBlock(_sfc_main$1, {
159
- key: 0,
160
- "model-value": `${unref(curYear)}`,
161
- "hide-trigger": "",
162
- "value-format": "YYYY",
163
- onChange: _cache[0] || (_cache[0] = (_, date) => {
164
- curYear.value = date.getFullYear();
165
- weekDate.value = unref(getWeeksOfMonth)(unref(curYear), unref(curMonth));
166
- showYearPicker.value = false;
167
- })
168
- }, null, 8, ["model-value"])) : unref(showMonthPicker) ? (openBlock(), createBlock(_sfc_main$2, {
169
- key: 1,
170
- "model-value": `${unref(curYear)}-${unref(curMonth) + 1 < 10 ? `0${unref(curMonth) + 1}` : unref(curMonth) + 1}`,
171
- "hide-trigger": "",
172
- "value-format": "YYYY-MM",
173
- onChange: _cache[1] || (_cache[1] = (_, date) => {
174
- curMonth.value = date.getMonth();
175
- weekDate.value = unref(getWeeksOfMonth)(unref(curYear), unref(curMonth));
176
- showMonthPicker.value = false;
177
- })
178
- }, null, 8, ["model-value"])) : (openBlock(), createBlock(_sfc_main$3, {
179
- key: 2,
180
- locale: unref(locale),
181
- "preview-shortcut": _ctx.previewShortcut,
182
- shortcuts: _ctx.shortcuts,
183
- "shortcuts-position": _ctx.shortcutsPosition,
184
- "confirm-btn-disabled": !unref(computedValue),
185
- "show-confirm-btn": _ctx.showConfirmBtn,
186
- onConfirm: unref(handleConfirm),
187
- onShortcutSelect: unref(handleShortcut)
188
- }, createSlots({
189
- default: withCtx(() => [
190
- createElementVNode("div", _hoisted_1, [
191
- createElementVNode("div", _hoisted_2, [
192
- createElementVNode("div", {
193
- class: "yc-picker-header-icon",
194
- onClick: _cache[2] || (_cache[2] = ($event) => handleDateChange("year", "pre"))
195
- }, [
196
- renderSlot(_ctx.$slots, "icon-prev-double", {}, () => [
197
- createVNode(unref(_sfc_main$4))
198
- ], true)
199
- ]),
200
- createElementVNode("div", {
201
- class: "yc-picker-header-icon",
202
- onClick: _cache[3] || (_cache[3] = ($event) => handleDateChange("month", "pre"))
203
- }, [
204
- renderSlot(_ctx.$slots, "icon-prev", {}, () => [
205
- createVNode(unref(_sfc_main$5), { rotate: 180 })
206
- ], true)
207
- ]),
208
- createElementVNode("div", _hoisted_3, [
209
- createElementVNode("span", {
210
- class: "yc-picker-header-label",
211
- onClick: _cache[4] || (_cache[4] = ($event) => showYearPicker.value = true)
212
- }, toDisplayString(unref(curYear)), 1),
213
- _cache[8] || (_cache[8] = createElementVNode("span", null, "-", -1)),
214
- createElementVNode("span", {
215
- class: "yc-picker-header-label",
216
- onClick: _cache[5] || (_cache[5] = ($event) => showMonthPicker.value = true)
217
- }, toDisplayString(unref(curMonth) < 9 ? `0${unref(curMonth) + 1}` : unref(curMonth) + 1), 1)
218
- ]),
219
- createElementVNode("div", {
220
- class: "yc-picker-header-icon",
221
- onClick: _cache[6] || (_cache[6] = ($event) => handleDateChange("month", "next"))
222
- }, [
223
- renderSlot(_ctx.$slots, "icon-next", {}, () => [
224
- createVNode(unref(_sfc_main$5))
225
- ], true)
226
- ]),
227
- createElementVNode("div", {
228
- class: "yc-picker-header-icon",
229
- onClick: _cache[7] || (_cache[7] = ($event) => handleDateChange("year", "next"))
230
- }, [
231
- renderSlot(_ctx.$slots, "icon-next-double", {}, () => [
232
- createVNode(unref(_sfc_main$6))
233
- ], true)
234
- ])
235
- ]),
236
- createElementVNode("div", _hoisted_4, [
237
- _cache[9] || (_cache[9] = createElementVNode("div", { class: "yc-picker-week-list-item" }, null, -1)),
238
- (openBlock(true), createElementBlock(Fragment, null, renderList(weekHeaders.value, (v) => {
239
- return openBlock(), createElementBlock("div", {
240
- key: v,
241
- class: "yc-picker-week-list-item"
242
- }, toDisplayString(v), 1);
243
- }), 128))
244
- ]),
245
- createElementVNode("div", _hoisted_5, [
246
- (openBlock(true), createElementBlock(Fragment, null, renderList(weekDate.value, ({ label, time, value }, i) => {
247
- var _a;
248
- return openBlock(), createElementBlock("div", {
249
- key: i,
250
- class: normalizeClass([
251
- "yc-picker-row",
252
- "yc-picker-week-row",
253
- {
254
- "yc-picker-week-row-disabled": (_a = _ctx.disabledDate) == null ? void 0 : _a.call(_ctx, value),
255
- "yc-picker-week-row-selected": isSelected(value)
256
- }
257
- ]),
258
- onClick: ($event) => {
259
- var _a2;
260
- return !((_a2 = _ctx.disabledDate) == null ? void 0 : _a2.call(_ctx, value)) && unref(handleSelect)(value);
261
- }
262
- }, [
263
- createVNode(PickerCell, {
264
- "cell-in-view": false,
265
- value: label
266
- }, null, 8, ["value"]),
267
- (openBlock(true), createElementBlock(Fragment, null, renderList(time, (day, i2) => {
268
- return openBlock(), createBlock(PickerCell, {
269
- key: i2,
270
- value: day.label,
271
- "cell-in-view": isCellInView(day),
272
- "is-today": isToday(day),
273
- hoverable: false,
274
- class: normalizeClass({
275
- "yc-week-picker-cell-first": !i2,
276
- "yc-week-picker-cell-last": i2 == time.length - 1
277
- })
278
- }, null, 8, ["value", "cell-in-view", "is-today", "class"]);
279
- }), 128))
280
- ], 10, _hoisted_6);
281
- }), 128))
282
- ])
283
- ])
284
- ]),
285
- _: 2
286
- }, [
287
- $slots.extra ? {
288
- name: "extra",
289
- fn: withCtx(() => [
290
- renderSlot(_ctx.$slots, "extra", {}, void 0, true)
291
- ]),
292
- key: "0"
293
- } : void 0
294
- ]), 1032, ["locale", "preview-shortcut", "shortcuts", "shortcuts-position", "confirm-btn-disabled", "show-confirm-btn", "onConfirm", "onShortcutSelect"]))
295
- ]),
296
- _: 3
297
- }),
298
- !_ctx.hideTrigger ? (openBlock(), createBlock(PickerInput, {
299
- key: 0,
300
- class: normalizeClass(_ctx.$attrs.class),
301
- style: normalizeStyle(_ctx.$attrs.style),
302
- type: "week"
303
- }, {
304
- content: withCtx(() => [
305
- createVNode(unref(ReusePanel))
306
- ]),
307
- _: 1
308
- }, 8, ["class", "style"])) : (openBlock(), createBlock(unref(ReusePanel), { key: 1 }))
309
- ], 64);
310
- };
311
- }
312
- });
313
- export {
314
- _sfc_main as default
315
- };
@@ -1,41 +0,0 @@
1
- import { defineComponent, createElementBlock, openBlock, normalizeClass, renderSlot, createElementVNode, toDisplayString } from "vue";
2
- const _hoisted_1 = { class: "yc-picker-date" };
3
- const _hoisted_2 = { class: "yc-picker-date-value" };
4
- const _sfc_main = /* @__PURE__ */ defineComponent({
5
- __name: "PickerCell",
6
- props: {
7
- cellInView: { type: Boolean, default: false },
8
- isToday: { type: Boolean, default: false },
9
- isSelected: { type: Boolean, default: false },
10
- disabled: { type: Boolean, default: false },
11
- value: { default: "" },
12
- hoverable: { type: Boolean, default: true }
13
- },
14
- emits: ["click"],
15
- setup(__props) {
16
- return (_ctx, _cache) => {
17
- return openBlock(), createElementBlock("div", {
18
- class: normalizeClass([
19
- "yc-picker-cell",
20
- {
21
- "yc-picker-cell-in-view": _ctx.cellInView,
22
- "yc-picker-cell-today": _ctx.isToday,
23
- "yc-picker-cell-selected": _ctx.isSelected,
24
- "yc-picker-cell-disabled": _ctx.disabled,
25
- "yc-picker-cell-hoverable": _ctx.hoverable
26
- }
27
- ]),
28
- onClick: _cache[0] || (_cache[0] = ($event) => !_ctx.disabled && _ctx.$emit("click", $event))
29
- }, [
30
- renderSlot(_ctx.$slots, "cell", {}, () => [
31
- createElementVNode("div", _hoisted_1, [
32
- createElementVNode("div", _hoisted_2, toDisplayString(_ctx.value), 1)
33
- ])
34
- ], true)
35
- ], 2);
36
- };
37
- }
38
- });
39
- export {
40
- _sfc_main as default
41
- };
@@ -1,121 +0,0 @@
1
- import { defineComponent, toRefs, computed, ref, watch, nextTick, createBlock, openBlock, unref, mergeProps, isRef, withCtx, createVNode, normalizeClass, normalizeStyle, createSlots, createElementVNode, createCommentVNode, renderSlot, withModifiers } from "vue";
2
- import _sfc_main$2 from "../../_shared/components/IconButton/index.vue.js";
3
- /* empty css */
4
- import "../../node_modules/b-tween/dist/b-tween.es.js";
5
- import "../../node_modules/dayjs/dayjs.min.js";
6
- import "../../node_modules/tinycolor2/esm/tinycolor.js";
7
- import "../../_shared/utils/dom.js";
8
- import { useI18n } from "../../_shared/utils/locale.js";
9
- import "../../_shared/utils/time.js";
10
- /* empty css */
11
- /* empty css */
12
- import _sfc_main$1 from "../../_shared/icons/IconCalendar.vue2.js";
13
- import usePickerInputContext from "../hooks/useContext.js";
14
- import Input from "../../Input/index.js";
15
- import Trigger from "../../Trigger/index.js";
16
- const _hoisted_1 = { class: "yc-picker-suffix-icon" };
17
- const _sfc_main = /* @__PURE__ */ defineComponent({
18
- ...{
19
- inheritAttrs: false
20
- },
21
- __name: "PickerInput",
22
- props: {
23
- type: { default: "date" }
24
- },
25
- setup(__props) {
26
- const $props = __props;
27
- const { props, computedVisible, formatValue, showClearBtn, onClear } = usePickerInputContext().inject();
28
- const {
29
- popupContainer,
30
- unmountOnClose,
31
- readonly,
32
- disabled,
33
- position,
34
- triggerProps,
35
- size,
36
- error,
37
- disabledInput,
38
- locale,
39
- placeholder: _placeholder
40
- } = toRefs(props);
41
- const { t } = useI18n();
42
- const placeholder = computed(() => {
43
- var _a;
44
- const key = `datePicker.placeholder.${$props.type}`;
45
- return _placeholder.value || ((_a = locale.value) == null ? void 0 : _a[key]) || t(key);
46
- });
47
- const inputRef = ref();
48
- watch(
49
- () => computedVisible.value,
50
- async (val) => {
51
- var _a;
52
- if (val) return;
53
- await nextTick();
54
- (_a = inputRef.value) == null ? void 0 : _a.blur();
55
- }
56
- );
57
- return (_ctx, _cache) => {
58
- return openBlock(), createBlock(unref(Trigger), mergeProps({
59
- "popup-visible": unref(computedVisible),
60
- "onUpdate:popupVisible": _cache[0] || (_cache[0] = ($event) => isRef(computedVisible) ? computedVisible.value = $event : null),
61
- "popup-offset": 4,
62
- "popup-container": unref(popupContainer),
63
- "unmount-on-close": unref(unmountOnClose),
64
- disabled: unref(disabled) || unref(readonly),
65
- position: unref(position),
66
- "prevent-focus": "",
67
- trigger: "click",
68
- "animation-name": "slide-dynamic-origin",
69
- "need-transform-origin": ""
70
- }, unref(triggerProps)), {
71
- content: withCtx(() => [
72
- renderSlot(_ctx.$slots, "content", {}, void 0, true)
73
- ]),
74
- default: withCtx(() => [
75
- createVNode(unref(Input), {
76
- "model-value": unref(formatValue),
77
- placeholder: placeholder.value,
78
- disabled: unref(disabled),
79
- error: unref(error),
80
- size: unref(size),
81
- readonly: unref(readonly) || unref(disabledInput) || true,
82
- style: normalizeStyle(_ctx.$attrs.style),
83
- class: normalizeClass([
84
- _ctx.$attrs.class,
85
- {
86
- "yc-picker-allow-clear": unref(showClearBtn)
87
- }
88
- ]),
89
- ref_key: "inputRef",
90
- ref: inputRef
91
- }, createSlots({
92
- suffix: withCtx(() => [
93
- createElementVNode("div", _hoisted_1, [
94
- renderSlot(_ctx.$slots, "suffix-icon", {}, () => [
95
- createVNode(unref(_sfc_main$1))
96
- ], true)
97
- ]),
98
- unref(showClearBtn) ? (openBlock(), createBlock(unref(_sfc_main$2), {
99
- key: 0,
100
- onClick: withModifiers(unref(onClear), ["stop"])
101
- }, null, 8, ["onClick"])) : createCommentVNode("", true)
102
- ]),
103
- _: 2
104
- }, [
105
- _ctx.$slots.prefix ? {
106
- name: "prefix",
107
- fn: withCtx(() => [
108
- renderSlot(_ctx.$slots, "prefix", {}, void 0, true)
109
- ]),
110
- key: "0"
111
- } : void 0
112
- ]), 1032, ["model-value", "placeholder", "disabled", "error", "size", "readonly", "style", "class"])
113
- ]),
114
- _: 3
115
- }, 16, ["popup-visible", "popup-container", "unmount-on-close", "disabled", "position"]);
116
- };
117
- }
118
- });
119
- export {
120
- _sfc_main as default
121
- };
@@ -1,10 +0,0 @@
1
- const _export_sfc = (sfc, props) => {
2
- const target = sfc.__vccOpts || sfc;
3
- for (const [key, val] of props) {
4
- target[key] = val;
5
- }
6
- return target;
7
- };
8
- export {
9
- _export_sfc as default
10
- };
@@ -1,7 +0,0 @@
1
- export interface CalendarCellData {
2
- label: string | number;
3
- value: Date;
4
- }
5
- export default function useCalendar(): {
6
- getDayOfMonth: (year: number, month: number, dayStartOfWeek?: number) => CalendarCellData[][];
7
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),require("../../node_modules/b-tween/dist/b-tween.es.js");const e=require("../../node_modules/dayjs/dayjs.min.js");require("../../node_modules/tinycolor2/esm/tinycolor.js"),require("../../_shared/utils/dom.js"),require("vue"),require("../../_shared/utils/locale.js"),require("../../_shared/utils/time.js"),exports.default=function(){return{getDayOfMonth:(t,r,s=0)=>{const o=e.default(new Date(t,r,1)),u=(o.day()-s+7)%7,d=[];for(let e=0;e<42;e++){const t=e-u,r=o.add(t,"day"),s=Math.floor(e/7),l=e%7;0===l&&(d[s]=[]),d[s][l]={label:r.date(),value:r.toDate()}}return d}}};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./hooks/userPicker.js");require("../node_modules/b-tween/dist/b-tween.es.js");const l=require("../node_modules/dayjs/dayjs.min.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_shared/utils/dom.js"),require("../_shared/utils/locale.js"),require("../_shared/utils/time.js"),/* empty css */,/* empty css */;/* empty css */const r=require("../_shared/icons/IconArrowRight.vue.js"),a=require("../_shared/icons/IconDoubleLeft.vue.js"),o=require("../_shared/icons/IconDoubleRight.vue.js"),n=require("./component/PickerCell.vue.js"),u=require("./component/PickerPanel.vue.js");;/* empty css */const c=require("./component/PickerInput.vue.js"),i=require("./YcYearPicker.vue.js");;/* empty css */const s=require("./YcMonthPicker.vue.js");;/* empty css */const d={class:"yc-panel-week"},p={class:"yc-picker-header"},v={class:"yc-picker-header-title"},f={class:"yc-picker-week-list"},k={class:"yc-picker-body"},m=["onClick"],h=e.defineComponent({name:"WeekPicker",inheritAttrs:!1,__name:"YcWeekPicker",props:{modelValue:{default:void 0},defaultValue:{default:""},dayStartOfWeek:{default:0},locale:{default:()=>({})},hideTrigger:{type:Boolean,default:!1},allowClear:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},error:{type:Boolean,default:!1},size:{default:void 0},shortcuts:{default:()=>[]},shortcutsPosition:{default:"bottom"},position:{default:"bl"},popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},triggerProps:{default:()=>({})},unmountOnClose:{type:Boolean,default:!1},placeholder:{default:""},disabled:{type:Boolean,default:!1},disabledDate:{type:Function,default:void 0},disabledTime:{},pickerValue:{default:void 0},defaultPickerValue:{default:""},popupContainer:{default:void 0},valueFormat:{default:"YYYY-MM-DD"},format:{default:"gggg-wo"},previewShortcut:{type:Boolean,default:!0},showConfirmBtn:{type:Boolean,default:!1},disabledInput:{type:Boolean,default:!1},abbreviation:{type:Boolean,default:!0}},emits:["update:modelValue","update:popupVisible","update:pickerValue","change","select","ok","picker-value-change","popup-visible-change","clear","select-shortcut"],setup(h,{emit:y}){const g=e.useSlots(),w=h,b=y,{computedValue:B,locale:V,abbreviation:C,dayStartOfWeek:Y,curMonth:j,curYear:P,showMonthPicker:S,showYearPicker:q,DefinePanel:E,ReusePanel:N,t:_,getDateFromFormat:x,getWeeksOfMonth:M,handleConfirm:D,handleSelect:F,handleShortcut:$}=t.default({props:w,emits:b}),I=e.ref([]),O=e.computed(()=>{const e=[0,1,2,3,4,5,6],t=[...e.slice(Y.value||0),...e.slice(0,Y.value||0)],l=Object.fromEntries(["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].map((e,t)=>[t,e]));return t.map(e=>{var t;const r=`datePicker.week.${C.value?"short":"long"}.${l[e]}`;return(null==(t=V.value)?void 0:t[r])||_(r)})}),z=e=>{const{value:t}=e;return t.getFullYear()==P.value&&t.getMonth()==j.value},T=e=>{const{value:t}=e,r=l.default();return t.getFullYear()==r.year()&&t.getMonth()==r.month()&&t.getDate()==r.date()},W=e=>{const t=x(B.value);return!!t&&(t.getFullYear()==e.getFullYear()&&t.getMonth()==e.getMonth()&&t.getDate()==e.getDate())},L=(e,t)=>{if("year"==e)P.value="pre"==t?P.value-1:P.value+1,I.value=M(P.value,j.value);else{const e=l.default().set("year",P.value).set("month",j.value),r="pre"==t?e.subtract(1,"month"):e.add(1,"month");P.value=r.year(),j.value=r.month(),I.value=M(P.value,j.value)}};return e.watch(()=>B.value,e=>{const t=e?x(e):new Date;P.value=t.getFullYear(),j.value=t.getMonth(),I.value=M(P.value,j.value)},{immediate:!0}),(t,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(E),null,{default:e.withCtx(()=>[e.unref(q)?(e.openBlock(),e.createBlock(i.default,{key:0,"model-value":`${e.unref(P)}`,"hide-trigger":"","value-format":"YYYY",onChange:l[0]||(l[0]=(t,l)=>{P.value=l.getFullYear(),I.value=e.unref(M)(e.unref(P),e.unref(j)),q.value=!1})},null,8,["model-value"])):e.unref(S)?(e.openBlock(),e.createBlock(s.default,{key:1,"model-value":`${e.unref(P)}-${e.unref(j)+1<10?`0${e.unref(j)+1}`:e.unref(j)+1}`,"hide-trigger":"","value-format":"YYYY-MM",onChange:l[1]||(l[1]=(t,l)=>{j.value=l.getMonth(),I.value=e.unref(M)(e.unref(P),e.unref(j)),S.value=!1})},null,8,["model-value"])):(e.openBlock(),e.createBlock(u.default,{key:2,locale:e.unref(V),"preview-shortcut":t.previewShortcut,shortcuts:t.shortcuts,"shortcuts-position":t.shortcutsPosition,"confirm-btn-disabled":!e.unref(B),"show-confirm-btn":t.showConfirmBtn,onConfirm:e.unref(D),onShortcutSelect:e.unref($)},e.createSlots({default:e.withCtx(()=>[e.createElementVNode("div",d,[e.createElementVNode("div",p,[e.createElementVNode("div",{class:"yc-picker-header-icon",onClick:l[2]||(l[2]=e=>L("year","pre"))},[e.renderSlot(t.$slots,"icon-prev-double",{},()=>[e.createVNode(e.unref(a.default))],!0)]),e.createElementVNode("div",{class:"yc-picker-header-icon",onClick:l[3]||(l[3]=e=>L("month","pre"))},[e.renderSlot(t.$slots,"icon-prev",{},()=>[e.createVNode(e.unref(r.default),{rotate:180})],!0)]),e.createElementVNode("div",v,[e.createElementVNode("span",{class:"yc-picker-header-label",onClick:l[4]||(l[4]=e=>q.value=!0)},e.toDisplayString(e.unref(P)),1),l[8]||(l[8]=e.createElementVNode("span",null,"-",-1)),e.createElementVNode("span",{class:"yc-picker-header-label",onClick:l[5]||(l[5]=e=>S.value=!0)},e.toDisplayString(e.unref(j)<9?`0${e.unref(j)+1}`:e.unref(j)+1),1)]),e.createElementVNode("div",{class:"yc-picker-header-icon",onClick:l[6]||(l[6]=e=>L("month","next"))},[e.renderSlot(t.$slots,"icon-next",{},()=>[e.createVNode(e.unref(r.default))],!0)]),e.createElementVNode("div",{class:"yc-picker-header-icon",onClick:l[7]||(l[7]=e=>L("year","next"))},[e.renderSlot(t.$slots,"icon-next-double",{},()=>[e.createVNode(e.unref(o.default))],!0)])]),e.createElementVNode("div",f,[l[9]||(l[9]=e.createElementVNode("div",{class:"yc-picker-week-list-item"},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,t=>(e.openBlock(),e.createElementBlock("div",{key:t,class:"yc-picker-week-list-item"},e.toDisplayString(t),1))),128))]),e.createElementVNode("div",k,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,({label:l,time:r,value:a},o)=>{var u;return e.openBlock(),e.createElementBlock("div",{key:o,class:e.normalizeClass(["yc-picker-row","yc-picker-week-row",{"yc-picker-week-row-disabled":null==(u=t.disabledDate)?void 0:u.call(t,a),"yc-picker-week-row-selected":W(a)}]),onClick:l=>{var r;return!(null==(r=t.disabledDate)?void 0:r.call(t,a))&&e.unref(F)(a)}},[e.createVNode(n.default,{"cell-in-view":!1,value:l},null,8,["value"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r,(t,l)=>(e.openBlock(),e.createBlock(n.default,{key:l,value:t.label,"cell-in-view":z(t),"is-today":T(t),hoverable:!1,class:e.normalizeClass({"yc-week-picker-cell-first":!l,"yc-week-picker-cell-last":l==r.length-1})},null,8,["value","cell-in-view","is-today","class"]))),128))],10,m)}),128))])])]),_:2},[g.extra?{name:"extra",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"extra",{},void 0,!0)]),key:"0"}:void 0]),1032,["locale","preview-shortcut","shortcuts","shortcuts-position","confirm-btn-disabled","show-confirm-btn","onConfirm","onShortcutSelect"]))]),_:3}),t.hideTrigger?(e.openBlock(),e.createBlock(e.unref(N),{key:1})):(e.openBlock(),e.createBlock(c.default,{key:0,class:e.normalizeClass(t.$attrs.class),style:e.normalizeStyle(t.$attrs.style),type:"week"},{content:e.withCtx(()=>[e.createVNode(e.unref(N))]),_:1},8,["class","style"]))],64))}});exports.default=h;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l={class:"yc-picker-date"},c={class:"yc-picker-date-value"},t=e.defineComponent({__name:"PickerCell",props:{cellInView:{type:Boolean,default:!1},isToday:{type:Boolean,default:!1},isSelected:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},value:{default:""},hoverable:{type:Boolean,default:!0}},emits:["click"],setup:t=>(t,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["yc-picker-cell",{"yc-picker-cell-in-view":t.cellInView,"yc-picker-cell-today":t.isToday,"yc-picker-cell-selected":t.isSelected,"yc-picker-cell-disabled":t.disabled,"yc-picker-cell-hoverable":t.hoverable}]),onClick:a[0]||(a[0]=e=>!t.disabled&&t.$emit("click",e))},[e.renderSlot(t.$slots,"cell",{},()=>[e.createElementVNode("div",l,[e.createElementVNode("div",c,e.toDisplayString(t.value),1)])],!0)],2))});exports.default=t;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=;/* empty css */,/* empty css */require("../../node_modules/b-tween/dist/b-tween.es.js"),require("../../node_modules/dayjs/dayjs.min.js"),require("../../node_modules/tinycolor2/esm/tinycolor.js"),require("../../_shared/utils/dom.js");const o=require("../../_shared/utils/locale.js");require("../../_shared/utils/time.js"),/* empty css */;/* empty css */const n=,/* empty css */t=require("../hooks/useContext.js"),s=require("../../Input/index.js"),i=require("../../Trigger/index.js"),u={class:"yc-picker-suffix-icon"},l=e.defineComponent({inheritAttrs:!1,__name:"PickerInput",props:{type:{default:"date"}},setup(l){const a=l,{props:d,computedVisible:c,formatValue:p,showClearBtn:f,onClear:m}=t.default().inject(),{popupContainer:v,unmountOnClose:h,readonly:x,disabled:y,position:j,triggerProps:_,size:k,error:b,disabledInput:q,locale:C,placeholder:g}=e.toRefs(d),{t:w}=o.useI18n(),I=e.computed(()=>{var e;const r=`datePicker.placeholder.${a.type}`;return g.value||(null==(e=C.value)?void 0:e[r])||w(r)}),B=e.ref();return e.watch(()=>c.value,async r=>{var o;r||(await e.nextTick(),null==(o=B.value)||o.blur())}),(o,t)=>(e.openBlock(),e.createBlock(e.unref(i.default),e.mergeProps({"popup-visible":e.unref(c),"onUpdate:popupVisible":t[0]||(t[0]=r=>e.isRef(c)?c.value=r:null),"popup-offset":4,"popup-container":e.unref(v),"unmount-on-close":e.unref(h),disabled:e.unref(y)||e.unref(x),position:e.unref(j),"prevent-focus":"",trigger:"click","animation-name":"slide-dynamic-origin","need-transform-origin":""},e.unref(_)),{content:e.withCtx(()=>[e.renderSlot(o.$slots,"content",{},void 0,!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(s.default),{"model-value":e.unref(p),placeholder:I.value,disabled:e.unref(y),error:e.unref(b),size:e.unref(k),readonly:e.unref(x)||e.unref(q)||!0,style:e.normalizeStyle(o.$attrs.style),class:e.normalizeClass([o.$attrs.class,{"yc-picker-allow-clear":e.unref(f)}]),ref_key:"inputRef",ref:B},e.createSlots({suffix:e.withCtx(()=>[e.createElementVNode("div",u,[e.renderSlot(o.$slots,"suffix-icon",{},()=>[e.createVNode(e.unref(n.default))],!0)]),e.unref(f)?(e.openBlock(),e.createBlock(e.unref(r.default),{key:0,onClick:e.withModifiers(e.unref(m),["stop"])},null,8,["onClick"])):e.createCommentVNode("",!0)]),_:2},[o.$slots.prefix?{name:"prefix",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"prefix",{},void 0,!0)]),key:"0"}:void 0]),1032,["model-value","placeholder","disabled","error","size","readonly","style","class"])]),_:3},16,["popup-visible","popup-container","unmount-on-close","disabled","position"]))}});exports.default=l;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[r,s]of t)o[r]=s;return o};