@ibiz-template/vue3-components 0.7.26-alpha.1 → 0.7.26-alpha.3

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 (113) hide show
  1. package/dist/{index-_h-elF6t.js → index-8tGeBxpc.js} +1 -1
  2. package/dist/{index--XeT2CTZ.js → index-CDgQJyai.js} +1 -1
  3. package/dist/index-oBteffLj.js +4 -0
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{xlsx-util-jKx8FmtR.js → xlsx-util-8_6qMs6z.js} +1 -1
  7. package/es/_virtual/localeData.mjs +3 -0
  8. package/es/control/calendar/calendar.css +1 -1
  9. package/es/control/calendar/calendar.d.ts +2 -3
  10. package/es/control/calendar/calendar.mjs +104 -173
  11. package/es/control/calendar/components/calendar-daily/calendar-daily.css +1 -0
  12. package/es/control/calendar/components/calendar-daily/calendar-daily.d.ts +18 -0
  13. package/es/control/calendar/components/calendar-daily/calendar-daily.mjs +175 -0
  14. package/es/control/calendar/components/calendar-daily/index.d.ts +18 -0
  15. package/es/control/calendar/components/calendar-daily/index.mjs +9 -0
  16. package/es/control/calendar/components/calendar-daily/use-calendar-daily.d.ts +154 -0
  17. package/es/control/calendar/components/calendar-daily/use-calendar-daily.mjs +196 -0
  18. package/es/control/calendar/components/calendar-month/calendar-month.css +1 -0
  19. package/es/control/calendar/components/calendar-month/calendar-month.d.ts +18 -0
  20. package/es/control/calendar/components/calendar-month/calendar-month.mjs +242 -0
  21. package/es/control/calendar/components/calendar-month/index.d.ts +18 -0
  22. package/es/control/calendar/components/calendar-month/index.mjs +9 -0
  23. package/es/control/calendar/components/calendar-month/use-calendar-month.d.ts +3 -0
  24. package/es/control/calendar/components/calendar-month/use-calendar-month.mjs +384 -0
  25. package/es/control/calendar/components/calendar-week/calendar-week.css +1 -0
  26. package/es/control/calendar/components/calendar-week/calendar-week.d.ts +18 -0
  27. package/es/control/calendar/components/calendar-week/calendar-week.mjs +241 -0
  28. package/es/control/calendar/components/calendar-week/index.d.ts +18 -0
  29. package/es/control/calendar/components/calendar-week/index.mjs +9 -0
  30. package/es/control/calendar/components/calendar-week/use-calendar-week.d.ts +159 -0
  31. package/es/control/calendar/components/calendar-week/use-calendar-week.mjs +399 -0
  32. package/es/control/calendar/components/constant/event.d.ts +5 -0
  33. package/es/control/calendar/components/constant/event.mjs +8 -0
  34. package/es/control/calendar/components/constant/index.d.ts +1 -0
  35. package/es/control/calendar/components/constant/index.mjs +3 -0
  36. package/es/control/calendar/components/custom-calendar/custom-calendar.css +1 -0
  37. package/es/control/calendar/components/custom-calendar/custom-calendar.d.ts +24 -0
  38. package/es/control/calendar/components/custom-calendar/custom-calendar.mjs +283 -0
  39. package/es/control/calendar/components/custom-calendar/index.d.ts +24 -0
  40. package/es/control/calendar/components/custom-calendar/index.mjs +12 -0
  41. package/es/control/calendar/components/custom-calendar/use-custom-calendar.d.ts +3 -0
  42. package/es/control/calendar/components/custom-calendar/use-custom-calendar.mjs +264 -0
  43. package/es/control/calendar/components/interface/calendar-daily.d.ts +12 -0
  44. package/es/control/calendar/components/interface/calendar-daily.mjs +34 -0
  45. package/es/control/calendar/components/interface/calendar-month.d.ts +20 -0
  46. package/es/control/calendar/components/interface/calendar-month.mjs +43 -0
  47. package/es/control/calendar/components/interface/calendar-week.d.ts +12 -0
  48. package/es/control/calendar/components/interface/calendar-week.mjs +34 -0
  49. package/es/control/calendar/components/interface/common.d.ts +116 -0
  50. package/es/control/calendar/components/interface/common.mjs +1 -0
  51. package/es/control/calendar/components/interface/custom-calendar.d.ts +14 -0
  52. package/es/control/calendar/components/interface/custom-calendar.mjs +67 -0
  53. package/es/control/calendar/components/interface/index.d.ts +5 -0
  54. package/es/control/calendar/components/interface/index.mjs +7 -0
  55. package/es/control/calendar/components/util/index.d.ts +1 -0
  56. package/es/control/calendar/components/util/index.mjs +4 -0
  57. package/es/control/calendar/components/util/util.d.ts +89 -0
  58. package/es/control/calendar/components/util/util.mjs +281 -0
  59. package/es/control/calendar/index.d.ts +1 -2
  60. package/es/control/calendar/index.mjs +2 -0
  61. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.mjs +1 -0
  62. package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +2 -2
  63. package/es/editor/date-picker/date-picker-editor.controller.mjs +3 -0
  64. package/es/editor/date-range/date-range-editor.controller.mjs +3 -0
  65. package/es/editor/slider/ibiz-slider/ibiz-slider.css +1 -1
  66. package/es/editor/slider/ibiz-slider/ibiz-slider.d.ts +2 -0
  67. package/es/editor/slider/ibiz-slider/ibiz-slider.mjs +76 -21
  68. package/es/locale/en/index.d.ts +43 -0
  69. package/es/locale/en/index.mjs +44 -1
  70. package/es/locale/zh-CN/index.d.ts +39 -0
  71. package/es/locale/zh-CN/index.mjs +40 -1
  72. package/es/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.mjs +13 -0
  73. package/lib/_virtual/localeData.cjs +5 -0
  74. package/lib/control/calendar/calendar.cjs +104 -173
  75. package/lib/control/calendar/calendar.css +1 -1
  76. package/lib/control/calendar/components/calendar-daily/calendar-daily.cjs +177 -0
  77. package/lib/control/calendar/components/calendar-daily/calendar-daily.css +1 -0
  78. package/lib/control/calendar/components/calendar-daily/index.cjs +14 -0
  79. package/lib/control/calendar/components/calendar-daily/use-calendar-daily.cjs +198 -0
  80. package/lib/control/calendar/components/calendar-month/calendar-month.cjs +244 -0
  81. package/lib/control/calendar/components/calendar-month/calendar-month.css +1 -0
  82. package/lib/control/calendar/components/calendar-month/index.cjs +14 -0
  83. package/lib/control/calendar/components/calendar-month/use-calendar-month.cjs +386 -0
  84. package/lib/control/calendar/components/calendar-week/calendar-week.cjs +243 -0
  85. package/lib/control/calendar/components/calendar-week/calendar-week.css +1 -0
  86. package/lib/control/calendar/components/calendar-week/index.cjs +14 -0
  87. package/lib/control/calendar/components/calendar-week/use-calendar-week.cjs +401 -0
  88. package/lib/control/calendar/components/constant/event.cjs +14 -0
  89. package/lib/control/calendar/components/constant/index.cjs +11 -0
  90. package/lib/control/calendar/components/custom-calendar/custom-calendar.cjs +285 -0
  91. package/lib/control/calendar/components/custom-calendar/custom-calendar.css +1 -0
  92. package/lib/control/calendar/components/custom-calendar/index.cjs +17 -0
  93. package/lib/control/calendar/components/custom-calendar/use-custom-calendar.cjs +266 -0
  94. package/lib/control/calendar/components/interface/calendar-daily.cjs +37 -0
  95. package/lib/control/calendar/components/interface/calendar-month.cjs +46 -0
  96. package/lib/control/calendar/components/interface/calendar-week.cjs +37 -0
  97. package/lib/control/calendar/components/interface/common.cjs +3 -0
  98. package/lib/control/calendar/components/interface/custom-calendar.cjs +70 -0
  99. package/lib/control/calendar/components/interface/index.cjs +18 -0
  100. package/lib/control/calendar/components/util/index.cjs +42 -0
  101. package/lib/control/calendar/components/util/util.cjs +316 -0
  102. package/lib/control/calendar/index.cjs +2 -0
  103. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.cjs +1 -0
  104. package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +2 -2
  105. package/lib/editor/date-picker/date-picker-editor.controller.cjs +3 -0
  106. package/lib/editor/date-range/date-range-editor.controller.cjs +3 -0
  107. package/lib/editor/slider/ibiz-slider/ibiz-slider.cjs +76 -21
  108. package/lib/editor/slider/ibiz-slider/ibiz-slider.css +1 -1
  109. package/lib/locale/en/index.cjs +44 -1
  110. package/lib/locale/zh-CN/index.cjs +40 -1
  111. package/lib/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.cjs +17 -0
  112. package/package.json +5 -5
  113. package/dist/index-yupCl1Un.js +0 -4
@@ -0,0 +1,384 @@
1
+ import { ref, computed } from 'vue';
2
+ import dayjs from 'dayjs';
3
+ import localeData from '../../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.mjs';
4
+ import { clone } from 'ramda';
5
+ import { useLocale } from 'element-plus';
6
+ import '../util/index.mjs';
7
+ import { rangeArr, getCurWeekDates, isToday, isTimeGreaterThan, isDateInCurWeek, handleBkColor, handleTimeRange, handleEVentClick } from '../util/util.mjs';
8
+
9
+ "use strict";
10
+ const useCalendarMonth = (props, emit) => {
11
+ dayjs.extend(localeData);
12
+ const firstDayOfWeek = dayjs.localeData().firstDayOfWeek();
13
+ const { lang } = useLocale();
14
+ const now = dayjs().locale(lang.value);
15
+ const rows = ref([]);
16
+ const multiple = computed(() => props.multiple === true);
17
+ const selectedData = ref([]);
18
+ const popVisible = ref(true);
19
+ const tableTd = ref();
20
+ const legends = ref([]);
21
+ const selectedDay = ref();
22
+ const hideHeader = computed(() => props.hideHeader);
23
+ const isInRange = computed(() => !!props.range && !!props.range.length);
24
+ const weekDays = computed(() => {
25
+ const start = firstDayOfWeek;
26
+ let tempValue;
27
+ const tempWeeks = [
28
+ "sunday",
29
+ "monday",
30
+ "tuesday",
31
+ "wednesday",
32
+ "thursday",
33
+ "friday",
34
+ "saturday"
35
+ ];
36
+ if (start === 0) {
37
+ tempValue = tempWeeks.map((item) => {
38
+ return ibiz.i18n.t("control.calendar.calendarmonth.weeks.".concat(item));
39
+ });
40
+ } else {
41
+ tempValue = tempWeeks.slice(start).concat(tempWeeks.slice(0, start)).map((item) => {
42
+ return ibiz.i18n.t("control.calendar.calendarmonth.weeks.".concat(item));
43
+ });
44
+ }
45
+ return tempValue;
46
+ });
47
+ const getPrevMonthLastDays = (date, count) => {
48
+ const lastDay = date.subtract(1, "month").endOf("month").date();
49
+ return rangeArr(count).map(
50
+ (_, index) => lastDay - (count - index - 1)
51
+ );
52
+ };
53
+ const getMonthDays = (date) => {
54
+ const days = date.daysInMonth();
55
+ return rangeArr(days).map((_, index) => index + 1);
56
+ };
57
+ const toNestedArr = (days) => rangeArr(days.length / 7).map((index) => {
58
+ const start = index * 7;
59
+ return days.slice(start, start + 7);
60
+ });
61
+ const isDateRange = (curDate, event) => {
62
+ const startDate = new Date(event == null ? void 0 : event.beginTime);
63
+ const endDate = new Date(event == null ? void 0 : event.endTime);
64
+ startDate.setHours(0, 0, 0, 0);
65
+ endDate.setHours(0, 0, 0, 0);
66
+ return curDate && (event == null ? void 0 : event.beginTime) && (event == null ? void 0 : event.endTime) && curDate.getTime() <= new Date(endDate).getTime() && curDate.getTime() >= new Date(startDate).getTime() && startDate.getTime() !== endDate.getTime();
67
+ };
68
+ const handleCurDayEvent = (curDate, events, td) => {
69
+ let tempEvents = [];
70
+ const tempArray = [];
71
+ const todayEvents = [];
72
+ const rangeEvents = [];
73
+ const tempColors = /* @__PURE__ */ new Map();
74
+ const { firstDay, lastDay } = getCurWeekDates(curDate);
75
+ events.forEach((event) => {
76
+ const tempEvent = {};
77
+ Object.assign(tempEvent, event);
78
+ if (curDate && event.beginTime) {
79
+ if (!(event == null ? void 0 : event.endTime)) {
80
+ Object.assign(tempEvent, { endTime: event.beginTime });
81
+ }
82
+ if (isToday(tempEvent == null ? void 0 : tempEvent.beginTime, curDate) && isToday(tempEvent.beginTime, tempEvent.endTime)) {
83
+ todayEvents.push(tempEvent);
84
+ } else if (curDate && isDateRange(curDate, tempEvent)) {
85
+ Object.assign(tempEvent, { isRange: true });
86
+ rangeEvents.push(tempEvent);
87
+ } else if (!isToday(tempEvent.beginTime, tempEvent.endTime) && isTimeGreaterThan(curDate, tempEvent.beginTime) && (isDateInCurWeek(tempEvent.beginTime, firstDay, lastDay) || isDateInCurWeek(tempEvent.endTime, firstDay, lastDay))) {
88
+ Object.assign(tempEvent, { isShow: false });
89
+ rangeEvents.push(tempEvent);
90
+ }
91
+ }
92
+ });
93
+ rangeEvents.sort((a, b) => {
94
+ const type = new Date(a.beginTime).getTime() - new Date(b.beginTime).getTime();
95
+ return type;
96
+ });
97
+ todayEvents.sort((a, b) => {
98
+ const type = new Date(a.beginTime).getTime() - new Date(b.beginTime).getTime();
99
+ return type;
100
+ });
101
+ tempEvents = tempEvents.concat(rangeEvents, todayEvents);
102
+ tempEvents.forEach((event, index) => {
103
+ handleBkColor(tempColors, event.itemType);
104
+ const legendIndex = legends.value.findIndex(
105
+ (legendItem) => Object.is(legendItem.id, event.itemType)
106
+ );
107
+ const targetEvent = selectedData.value.find(
108
+ (item) => item.id === event.id
109
+ );
110
+ const tempEvent = {};
111
+ Object.assign(tempEvent, event);
112
+ Object.assign(tempEvent, {
113
+ beginTime: event.beginTime,
114
+ end: event.endTime,
115
+ id: event.id
116
+ });
117
+ if (event.endTime) {
118
+ const format = isToday(event == null ? void 0 : event.beginTime, event.endTime) ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD";
119
+ const timeRange = handleTimeRange(
120
+ event.beginTime,
121
+ event.endTime,
122
+ format,
123
+ "~"
124
+ );
125
+ Object.assign(tempEvent, { timeRange });
126
+ }
127
+ if (!(event == null ? void 0 : event.bkColor)) {
128
+ const bkColor = legendIndex !== -1 ? legends.value[legendIndex].bkcolor : handleBkColor(tempColors, event.itemType);
129
+ Object.assign(tempEvent, { bkColor });
130
+ }
131
+ if (!(event == null ? void 0 : event.color)) {
132
+ Object.assign(tempEvent, { color: "#FFF" });
133
+ }
134
+ if (isToday(event == null ? void 0 : event.beginTime, curDate) && isToday(event == null ? void 0 : event.beginTime, event == null ? void 0 : event.endTime)) {
135
+ Object.assign(tempEvent, { isToday: true });
136
+ }
137
+ if (isDateRange(curDate, event) && (curDate.getDay() === 0 || isToday(event == null ? void 0 : event.beginTime, curDate))) {
138
+ if (td && index < 3) {
139
+ const currentDay = curDate.getDay();
140
+ const saturdayDate = new Date(curDate);
141
+ saturdayDate.setDate(curDate.getDate() + (6 - currentDay));
142
+ const endDate = new Date(event == null ? void 0 : event.endTime);
143
+ let week = 1;
144
+ if (currentDay === 0) {
145
+ if (endDate.getTime() > saturdayDate.getTime() || isToday(endDate, saturdayDate)) {
146
+ week = 7;
147
+ } else {
148
+ week = endDate.getDay() + 1;
149
+ }
150
+ } else if (endDate.getTime() > saturdayDate.getTime()) {
151
+ week = 7 - currentDay;
152
+ } else {
153
+ week = endDate.getDay() - currentDay;
154
+ week += 1;
155
+ }
156
+ const tempWidth = week * 100;
157
+ let tempVal = 0;
158
+ const fillUp = week - 1;
159
+ let widthDifference = 0;
160
+ if (currentDay === 0) {
161
+ widthDifference = 5;
162
+ tempVal += widthDifference * fillUp;
163
+ if (endDate.getTime() > saturdayDate.getTime()) {
164
+ tempVal += 3;
165
+ } else {
166
+ tempVal += 2;
167
+ }
168
+ } else if (week > 1) {
169
+ widthDifference = 4;
170
+ tempVal += widthDifference * fillUp;
171
+ }
172
+ const width = "calc(".concat(tempWidth, "% + ").concat(tempVal, "px)");
173
+ Object.assign(tempEvent, { width });
174
+ }
175
+ Object.assign(tempEvent, { isShow: true });
176
+ }
177
+ if (targetEvent) {
178
+ Object.assign(tempEvent, { isSelectedEvent: true });
179
+ } else {
180
+ Object.assign(tempEvent, { isSelectedEvent: false });
181
+ }
182
+ if (legendIndex !== -1 && legends.value[legendIndex].isShow || legendIndex === -1) {
183
+ tempArray.push(tempEvent);
184
+ }
185
+ });
186
+ tempColors.clear();
187
+ return tempArray;
188
+ };
189
+ const handleMonthDraw = () => {
190
+ let days = [];
191
+ if (isInRange.value) {
192
+ const [start, end] = props.range;
193
+ const currentMonthRange = rangeArr(
194
+ end.date() - start.date() + 1
195
+ ).map((index) => {
196
+ const curDate = new Date(
197
+ start.year(),
198
+ start.month(),
199
+ start.date() + index
200
+ );
201
+ const curDayEvents = handleCurDayEvent(
202
+ curDate,
203
+ props.events,
204
+ tableTd.value
205
+ );
206
+ return {
207
+ text: start.date() + index,
208
+ type: "current",
209
+ events: curDayEvents,
210
+ curDate: dayjs(curDate)
211
+ };
212
+ });
213
+ let remaining = currentMonthRange.length % 7;
214
+ remaining = remaining === 0 ? 0 : 7 - remaining;
215
+ const nextMonthRange = rangeArr(remaining).map(
216
+ (_, index) => {
217
+ const curDate = new Date(start.year(), start.month() + 1, index + 1);
218
+ const curDayEvents = handleCurDayEvent(
219
+ curDate,
220
+ props.events,
221
+ tableTd.value
222
+ );
223
+ return {
224
+ text: index + 1,
225
+ type: "next",
226
+ events: curDayEvents,
227
+ curDate: dayjs(curDate)
228
+ };
229
+ }
230
+ );
231
+ days = currentMonthRange.concat(nextMonthRange);
232
+ } else {
233
+ const firstDay = props.date.startOf("month").day();
234
+ const prevMonthDays = getPrevMonthLastDays(
235
+ props.date,
236
+ (firstDay - firstDayOfWeek + 7) % 7
237
+ ).map((day) => {
238
+ const curDate = new Date(
239
+ props.date.year(),
240
+ props.date.month() - 1,
241
+ day
242
+ );
243
+ const curDayEvents = handleCurDayEvent(
244
+ curDate,
245
+ props.events,
246
+ tableTd.value
247
+ );
248
+ return {
249
+ text: day,
250
+ type: "prev",
251
+ events: curDayEvents,
252
+ curDate: dayjs(curDate)
253
+ };
254
+ });
255
+ const currentMonthDays = getMonthDays(props.date).map(
256
+ (day) => {
257
+ const curDate = new Date(props.date.year(), props.date.month(), day);
258
+ const curDayEvents = handleCurDayEvent(
259
+ curDate,
260
+ props.events,
261
+ tableTd.value
262
+ );
263
+ return {
264
+ text: day,
265
+ type: "current",
266
+ events: curDayEvents,
267
+ curDate: dayjs(curDate)
268
+ };
269
+ }
270
+ );
271
+ days = [...prevMonthDays, ...currentMonthDays];
272
+ const remaining = 7 - (days.length % 7 || 7);
273
+ const nextMonthDays = rangeArr(remaining).map(
274
+ (_, index) => {
275
+ const curDate = new Date(
276
+ props.date.year(),
277
+ props.date.month() + 1,
278
+ index + 1
279
+ );
280
+ const curDayEvents = handleCurDayEvent(
281
+ curDate,
282
+ props.events,
283
+ tableTd.value
284
+ );
285
+ return {
286
+ text: index + 1,
287
+ type: "next",
288
+ events: curDayEvents,
289
+ curDate: dayjs(curDate)
290
+ };
291
+ }
292
+ );
293
+ days = days.concat(nextMonthDays);
294
+ }
295
+ rows.value = toNestedArr(days);
296
+ };
297
+ const getFormattedDate = (day, type) => {
298
+ switch (type) {
299
+ case "prev":
300
+ return props.date.startOf("month").subtract(1, "month").date(day);
301
+ case "next":
302
+ return props.date.startOf("month").add(1, "month").date(day);
303
+ case "current":
304
+ return props.date.date(day);
305
+ default:
306
+ return null;
307
+ }
308
+ };
309
+ const handlePickDay = ({ text, type }) => {
310
+ const date = getFormattedDate(text, type);
311
+ selectedDay.value = date;
312
+ if (type === "prev" || type === "next") {
313
+ emit("pickEvent", date);
314
+ }
315
+ };
316
+ const getSlotData = ({ text, type, events }) => {
317
+ const day = getFormattedDate(text, type);
318
+ return {
319
+ isSelected: day.isSame(props.selectedDay),
320
+ type: "".concat(type, "-month"),
321
+ day: day.format("YYYY-MM-DD"),
322
+ date: day.toDate(),
323
+ events
324
+ };
325
+ };
326
+ const getCellClass = ({ text, type }) => {
327
+ const classes = [type];
328
+ if (type === "current") {
329
+ const date = getFormattedDate(text, type);
330
+ if (date.isSame(selectedDay.value, "day")) {
331
+ classes.push("is-selected");
332
+ }
333
+ if (date.isSame(now, "day")) {
334
+ classes.push("is-today");
335
+ }
336
+ }
337
+ return classes;
338
+ };
339
+ const eventClick = async (item, location) => {
340
+ const res = await handleEVentClick(
341
+ item,
342
+ location,
343
+ props.events,
344
+ multiple.value,
345
+ selectedData.value,
346
+ emit
347
+ );
348
+ const { tempSelectedData } = res;
349
+ selectedData.value = tempSelectedData;
350
+ handleMonthDraw();
351
+ };
352
+ const handleEventsMoreData = (cell) => {
353
+ let events = clone(cell.events);
354
+ const { curDate } = cell;
355
+ const tempEvents = [];
356
+ events = events.splice(3, events.length);
357
+ events.forEach((event) => {
358
+ if (curDate && isDateRange(new Date(curDate), event) || isToday(event.beginTime, event.endTime)) {
359
+ tempEvents.push(event);
360
+ }
361
+ });
362
+ return tempEvents;
363
+ };
364
+ return {
365
+ isInRange,
366
+ rows,
367
+ weekDays,
368
+ hideHeader,
369
+ tableTd,
370
+ legends,
371
+ selectedDay,
372
+ selectedData,
373
+ popVisible,
374
+ getFormattedDate,
375
+ handlePickDay,
376
+ getSlotData,
377
+ getCellClass,
378
+ eventClick,
379
+ handleMonthDraw,
380
+ handleEventsMoreData
381
+ };
382
+ };
383
+
384
+ export { useCalendarMonth };
@@ -0,0 +1 @@
1
+ .ibiz-calendar-week{display:flex;flex:1;flex-direction:column;width:100%;height:100%;overflow:hidden}.ibiz-calendar-week__header{position:relative;z-index:100;display:flex;flex-direction:column;width:calc(100% - 7px);height:150px;min-height:150px}.ibiz-calendar-week__header--date-cell-first{width:90px;max-width:90px;height:100%;border-right:1px solid var(--ibiz-color-border);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__header--event-cell-first{display:flex;align-items:center;justify-content:center;width:90px;max-width:90px;height:100%;padding-left:40px;border-right:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__header--dates{display:flex;justify-content:space-between;width:100%;height:96px}.ibiz-calendar-week__header--date-cell{display:flex;flex:1;flex-direction:column;align-items:center;border-right:1px solid var(--ibiz-color-border);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__header--date-week{width:100%;height:26px;margin-top:6px;text-align:center}.ibiz-calendar-week__header--date-day{display:flex;align-items:center;justify-content:center;width:50px;height:50px;margin-top:6px;font-weight:600;border:none;border-radius:50%}.ibiz-calendar-week__header--date-day.is-today{color:#fff;background:var(--ibiz-color-primary)}.ibiz-calendar-week__header--events{display:flex;flex:1;justify-content:space-between;width:100%;height:30px;overflow:hidden}.ibiz-calendar-week__header--event-cell{position:relative;top:0;left:0;flex:1;width:100%;height:100%;border-right:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__header--event-box{position:absolute}.ibiz-calendar-week__header--event-content{position:relative;z-index:2;width:100%;height:22px;padding-left:4px;cursor:pointer;background-color:var(--ibiz-color-primary);border:none;border-radius:4px;outline:0}.ibiz-calendar-week__header--event-summary{width:100%;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.ibiz-calendar-week__header--resizable-handle{position:absolute;bottom:-6px;display:flex;align-items:center;width:100%;height:10PX;cursor:row-resize}.ibiz-calendar-week__header--resize-line{width:100%;height:1px;background-color:var(--ibiz-color-border)}.ibiz-calendar-week__header--check{position:absolute;top:50%;right:6px;color:var(--ibiz-color-primary);transform:translate(0,-50%)}.ibiz-calendar-week__scroll-area{flex:1;overflow:hidden scroll}.ibiz-calendar-week__time-pane{position:relative;display:flex;flex:1 1 0%;width:calc(100% - 3px);height:auto}.ibiz-calendar-week__time-pane--time-labels{position:sticky;left:0;width:90px;min-width:90px;padding:27px 0 27px 40px;border-right:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__time-pane--time-label{height:22px;margin-top:38px;line-height:22px;text-align:left}.ibiz-calendar-week__time-pane--time-label:nth-child(1){height:22px;margin-top:22px}.ibiz-calendar-week__time-pane--time-columns{position:relative;flex:1;padding-bottom:60px;border-right:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__time-pane--time-column{height:60px;border-top:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__time-pane--time-column:nth-child(1){border-top:none}.ibiz-calendar-week__time-pane--time-column-last{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-calendar-week__time-pane--event-timed-container{position:absolute;top:0;width:100%;height:100%;overflow:hidden}.ibiz-calendar-week__time-pane--container-scroll{position:relative;top:0;width:100%;height:100%;overflow:auto;overflow:hidden}.ibiz-calendar-week__time-pane--event-box{position:absolute;width:auto;height:auto;padding:0 2px}.ibiz-calendar-week__time-pane--event-content{position:relative;z-index:3;width:100%;height:100%;padding:12px 8px;overflow:hidden;line-height:100%;text-align:left;cursor:pointer;border:none;outline:0}.ibiz-calendar-week__time-pane--event-content:active{animation:pulse 1s linear}.ibiz-calendar-week__time-pane--event-content.is-selected-event{border:1px solid var(--ibiz-color-primary)}.ibiz-calendar-week__time-pane--event-summary{width:100%;height:100%;overflow:hidden;line-height:30px;text-overflow:ellipsis;white-space:nowrap}.ibiz-calendar-week__time-pane--event-summary>span{margin-right:4px}.ibiz-calendar-week__event-popover{position:relative;width:auto;height:auto;padding:0}.ibiz-calendar-week__event-popover.el-popover.el-popper{padding:24px 12px 8px}.ibiz-calendar-week__event-popover--body{width:auto;height:auto;overflow:hidden}.ibiz-calendar-week__event-popover--scroll{width:auto;min-width:450px;height:auto;min-height:200px;overflow:auto}.ibiz-calendar-week__event-popover--close{position:absolute;top:8px;right:8px;cursor:pointer}.ibiz-calendar-week__event-popover--close:hover .el-icon{background:var(--ibiz-color-primary);border-radius:50%}.ibiz-calendar-week__event-popover--close:hover .el-icon svg{fill:#fff}.ibiz-calendar-week__event-popover .el-icon{display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;font-size:20px}.ibiz-calendar-week__event-popover .el-icon svg{fill:var(--el-text-color-secondary)}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes move{0%{transform:scale(1)}50%{transform:scale(1.03)}100%{transform:scale(1)}}
@@ -0,0 +1,18 @@
1
+ import './calendar-week.scss';
2
+ export declare const CalendarWeek: import("vue").DefineComponent<IParams, {
3
+ ns: import("@ibiz-template/core").Namespace;
4
+ calendarWeek: import("vue").Ref<any>;
5
+ renderHeader: () => JSX.Element;
6
+ renderContent: () => JSX.Element;
7
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ pick: (value: import("dayjs").Dayjs) => boolean;
9
+ eventClick: (value: IParams) => IParams;
10
+ eventDblClick: (value: IParams) => IParams;
11
+ }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<IParams>> & {
12
+ onEventClick?: ((value: IParams) => any) | undefined;
13
+ onEventDblClick?: ((value: IParams) => any) | undefined;
14
+ onPick?: ((value: import("dayjs").Dayjs) => any) | undefined;
15
+ }, {
16
+ [x: string]: any;
17
+ [x: symbol]: any;
18
+ }, {}>;
@@ -0,0 +1,241 @@
1
+ import { ref, watch, onMounted, onUnmounted, createVNode, resolveComponent, defineComponent } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import '../interface/index.mjs';
4
+ import { useCalendarWeek } from './use-calendar-week.mjs';
5
+ import './calendar-week.css';
6
+ import '../util/index.mjs';
7
+ import { calendarWeekProps, calendarWeekEmits } from '../interface/calendar-week.mjs';
8
+ import { handlePopClose, closeIcon } from '../util/util.mjs';
9
+
10
+ "use strict";
11
+ const CalendarWeek = /* @__PURE__ */ defineComponent({
12
+ name: "CalendarWeek",
13
+ props: calendarWeekProps,
14
+ emits: calendarWeekEmits,
15
+ setup(props, {
16
+ emit,
17
+ slots
18
+ }) {
19
+ const ns = useNamespace("calendar-week");
20
+ const {
21
+ drawData,
22
+ resizableHand,
23
+ rows,
24
+ weekDays,
25
+ curTimeTimer,
26
+ calendarWeek,
27
+ selectedData,
28
+ legends,
29
+ rowsHeader,
30
+ popVisible,
31
+ eventClick,
32
+ handleDrag,
33
+ handleDragStart,
34
+ handleCurTime,
35
+ initDrawData,
36
+ handleUIEvents
37
+ } = useCalendarWeek(props, emit);
38
+ const hoverItem = ref("");
39
+ props.controller._evt.on("onActive", () => {
40
+ popVisible.value = false;
41
+ });
42
+ watch(() => props.selectedData, () => {
43
+ if (props.selectedData && props.selectedData.length > 0) {
44
+ const data = props.selectedData.length > selectedData.value.length ? props.selectedData : selectedData.value;
45
+ selectedData.value = data;
46
+ } else {
47
+ selectedData.value = [];
48
+ }
49
+ }, {
50
+ immediate: true,
51
+ deep: true
52
+ });
53
+ watch(() => props.legends, () => {
54
+ legends.value = props.legends || [];
55
+ handleUIEvents();
56
+ }, {
57
+ immediate: true,
58
+ deep: true
59
+ });
60
+ watch(() => props.events, () => {
61
+ handleUIEvents();
62
+ }, {
63
+ immediate: true,
64
+ deep: true
65
+ });
66
+ onMounted(() => {
67
+ handleCurTime();
68
+ drawData.value = initDrawData();
69
+ curTimeTimer.value = setInterval(() => handleCurTime(), 1e3);
70
+ });
71
+ onUnmounted(() => {
72
+ const timer = curTimeTimer.value;
73
+ if (timer) {
74
+ clearInterval(timer);
75
+ curTimeTimer.value = null;
76
+ }
77
+ });
78
+ const onMouseenter = (event) => {
79
+ hoverItem.value = String(event.id);
80
+ popVisible.value = true;
81
+ };
82
+ const onMouseleavee = () => {
83
+ hoverItem.value = "";
84
+ popVisible.value = false;
85
+ };
86
+ const renderEventItem = (location, eventBoxStyle, eventContentStyle, event, index, slotNme, classEName) => {
87
+ var _a;
88
+ return createVNode("div", {
89
+ "key": index,
90
+ "class": [ns.em(classEName, "event-box")],
91
+ "style": eventBoxStyle,
92
+ "onMouseenter": () => onMouseenter(event),
93
+ "onMouseleave": onMouseleavee
94
+ }, [createVNode("button", {
95
+ "class": [ns.em(classEName, "event-content"), event.isSelectedEvent ? "is-selected-event" : "", event.classname],
96
+ "onClick": () => eventClick(event, "head"),
97
+ "style": eventContentStyle
98
+ }, [slots[slotNme] ? (_a = slots[slotNme]) == null ? void 0 : _a.call(slots, {
99
+ data: event
100
+ }) : createVNode("div", {
101
+ "class": [ns.em(classEName, "event-summary"), event.classname],
102
+ "title": location === "header" ? "".concat(event.text || "", " ").concat(event.timeRange || "") : ""
103
+ }, [event.icon && createVNode("span", {
104
+ "class": [event.icon, ns.em(classEName, "event-icon")],
105
+ "style": {
106
+ color: event.bkColor
107
+ }
108
+ }, null), event.text && createVNode("span", {
109
+ "class": [ns.em(classEName, "event-name")]
110
+ }, [event.text])]), location === "header" && event.isSelectedEvent ? createVNode("span", {
111
+ "class": ["fa fa-check", ns.em(classEName, "check")]
112
+ }, null) : ""])]);
113
+ };
114
+ const renderPopover = (content, event) => {
115
+ if (!props.controller.state.showDetail) {
116
+ return content;
117
+ }
118
+ return createVNode(resolveComponent("el-popover"), {
119
+ "visible": popVisible.value && event.id === hoverItem.value,
120
+ "show-after": 1e3,
121
+ "offset": 4,
122
+ "width": "auto",
123
+ "popper-class": ns.e("event-popover"),
124
+ "placement": "right-start"
125
+ }, {
126
+ reference: () => content,
127
+ default: () => {
128
+ var _a;
129
+ return createVNode("div", {
130
+ "class": [ns.em("event-popover", "body")]
131
+ }, [createVNode("div", {
132
+ "class": [ns.em("event-popover", "close")],
133
+ "onClick": (el) => handlePopClose(el),
134
+ "innerHTML": closeIcon
135
+ }, null), createVNode("div", {
136
+ "class": [ns.em("event-popover", "scroll")]
137
+ }, [(slots == null ? void 0 : slots.event) ? (_a = slots.event) == null ? void 0 : _a.call(slots, {
138
+ data: event
139
+ }) : createVNode("div", {
140
+ "class": [ns.em("event-popover", "content")]
141
+ }, ["".concat(event.text || "", " ").concat(event.timeRange || "")])])]);
142
+ }
143
+ });
144
+ };
145
+ const renderHeader = () => {
146
+ return createVNode("div", {
147
+ "class": [ns.e("header")],
148
+ "ref": (el) => {
149
+ resizableHand.value = el;
150
+ }
151
+ }, [createVNode("div", {
152
+ "class": [ns.em("header", "dates")]
153
+ }, [createVNode("div", {
154
+ "class": [ns.em("header", "date-cell-first")]
155
+ }, null), weekDays.value.map((weekDay) => createVNode("div", {
156
+ "class": [ns.em("header", "date-cell")]
157
+ }, [createVNode("div", {
158
+ "class": [ns.em("header", "date-week")]
159
+ }, [weekDay.caption]), createVNode("div", {
160
+ "class": [ns.em("header", "date-day"), weekDay.isActivate ? "is-today" : ""]
161
+ }, [weekDay.day])]))]), createVNode("div", {
162
+ "class": [ns.em("header", "events")]
163
+ }, [createVNode("div", {
164
+ "class": [ns.em("header", "event-cell-first")]
165
+ }, [ibiz.i18n.t("control.calendar.calendardaily.tip")]), rowsHeader.value.map((item) => createVNode("div", {
166
+ "class": [ns.em("header", "event-cell")]
167
+ }, [item.map((event, index) => {
168
+ const eventBoxStyle = {
169
+ top: "".concat(Number(index * 26) + 2, "px"),
170
+ left: "".concat(event.styleLeft),
171
+ width: "".concat(event == null ? void 0 : event.width)
172
+ };
173
+ const eventContentStyle = {
174
+ color: event.color,
175
+ background: event.bkColorFade
176
+ };
177
+ return event.isShow ? renderEventItem("header", eventBoxStyle, eventContentStyle, event, index, "head-event", "header") : "";
178
+ })]))]), createVNode("div", {
179
+ "class": ns.em("header", "resizable-handle"),
180
+ "draggable": "true",
181
+ "onDrag": (event) => handleDrag(event),
182
+ "onDragstart": (event) => handleDragStart(event)
183
+ }, [createVNode("div", {
184
+ "class": ns.em("header", "resize-line")
185
+ }, null)])]);
186
+ };
187
+ const renderContent = () => {
188
+ return createVNode("div", {
189
+ "class": [ns.e("scroll-area")]
190
+ }, [createVNode("div", {
191
+ "class": ns.e("time-pane")
192
+ }, [createVNode("div", {
193
+ "class": ns.em("time-pane", "time-labels")
194
+ }, [drawData.value.map((timescale) => createVNode("div", {
195
+ "key": timescale,
196
+ "class": [ns.em("time-pane", "time-label")]
197
+ }, [timescale]))]), rows.value.map((item) => createVNode("div", {
198
+ "class": ns.em("time-pane", "time-columns")
199
+ }, [drawData.value.map((timescale, index) => createVNode("div", {
200
+ "key": timescale,
201
+ "class": [ns.em("time-pane", "time-column"), index === drawData.value.length - 1 && ns.em("time-pane", "time-column-last")]
202
+ }, null)), createVNode("div", {
203
+ "class": ns.em("time-pane", "event-timed-container")
204
+ }, [createVNode("div", {
205
+ "class": ns.em("time-pane", "container-scroll")
206
+ }, [item.map((event, index) => {
207
+ const eventBoxStyle = {
208
+ top: "".concat(event.styleTop, "px"),
209
+ left: "".concat(event.styleLeft),
210
+ height: "".concat(event.height, "px"),
211
+ width: "".concat(event.width),
212
+ "min-height": "".concat(event.height, "px"),
213
+ "z-index": event.zIndex
214
+ };
215
+ const eventContentStyle = {
216
+ background: event.bkColorFade,
217
+ "border-left": "3px solid ".concat(event.bkColor),
218
+ color: event.color
219
+ };
220
+ const tempContent = renderEventItem("content", eventBoxStyle, eventContentStyle, event, index, "", "time-pane");
221
+ return renderPopover(tempContent, event);
222
+ })])])]))])]);
223
+ };
224
+ return {
225
+ ns,
226
+ calendarWeek,
227
+ renderHeader,
228
+ renderContent
229
+ };
230
+ },
231
+ render() {
232
+ return createVNode("div", {
233
+ "ref": (el) => {
234
+ this.calendarWeek = el;
235
+ },
236
+ "class": this.ns.b()
237
+ }, [this.renderHeader(), this.renderContent()]);
238
+ }
239
+ });
240
+
241
+ export { CalendarWeek };
@@ -0,0 +1,18 @@
1
+ export declare const IBizCalendarWeek: import("@ibiz-template/vue3-util").TypeWithInstall<import("vue").DefineComponent<IParams, {
2
+ ns: import("@ibiz-template/core").Namespace;
3
+ calendarWeek: import("vue").Ref<any>;
4
+ renderHeader: () => JSX.Element;
5
+ renderContent: () => JSX.Element;
6
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ pick: (value: import("dayjs").Dayjs) => boolean;
8
+ eventClick: (value: IParams) => IParams;
9
+ eventDblClick: (value: IParams) => IParams;
10
+ }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<IParams>> & {
11
+ onEventClick?: ((value: IParams) => any) | undefined;
12
+ onEventDblClick?: ((value: IParams) => any) | undefined;
13
+ onPick?: ((value: import("dayjs").Dayjs) => any) | undefined;
14
+ }, {
15
+ [x: string]: any;
16
+ [x: symbol]: any;
17
+ }, {}>>;
18
+ export default IBizCalendarWeek;
@@ -0,0 +1,9 @@
1
+ import { withInstall } from '@ibiz-template/vue3-util';
2
+ import { CalendarWeek } from './calendar-week.mjs';
3
+
4
+ "use strict";
5
+ const IBizCalendarWeek = withInstall(CalendarWeek, function(v) {
6
+ v.component(CalendarWeek.name, CalendarWeek);
7
+ });
8
+
9
+ export { IBizCalendarWeek, IBizCalendarWeek as default };