@progress/kendo-vue-scheduler 10.2.0-develop.11 → 10.2.0-develop.12
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.
- package/Scheduler.d.ts +157 -56
- package/Scheduler.js +1 -1
- package/Scheduler.mjs +242 -214
- package/components/EventOverviewPopover.d.ts +62 -0
- package/components/EventOverviewPopover.js +8 -0
- package/components/EventOverviewPopover.mjs +191 -0
- package/components/MoreEventsPopover.d.ts +3 -1
- package/components/MoreEventsPopover.js +1 -1
- package/components/MoreEventsPopover.mjs +31 -27
- package/components/SchedulerActionButtons.js +1 -1
- package/components/SchedulerActionButtons.mjs +1 -0
- package/components/SchedulerForm.d.ts +412 -2
- package/components/SchedulerForm.js +1 -1
- package/components/SchedulerForm.mjs +162 -60
- package/components/SchedulerQuickCreateForm.d.ts +118 -0
- package/components/SchedulerQuickCreateForm.js +8 -0
- package/components/SchedulerQuickCreateForm.mjs +249 -0
- package/constants/main.d.ts +2 -0
- package/constants/main.js +1 -1
- package/constants/main.mjs +10 -9
- package/dist/cdn/js/kendo-vue-scheduler.js +1 -1
- package/editors/KeepResetCustomEventsDialog.d.ts +31 -0
- package/editors/KeepResetCustomEventsDialog.js +8 -0
- package/editors/KeepResetCustomEventsDialog.mjs +72 -0
- package/editors/SchedulerFormEditor.d.ts +151 -52
- package/editors/SchedulerFormEditor.js +1 -1
- package/editors/SchedulerFormEditor.mjs +192 -139
- package/editors/SchedulerRecurrenceDialog.d.ts +2 -2
- package/editors/SchedulerRecurrenceDialog.js +1 -1
- package/editors/SchedulerRecurrenceDialog.mjs +126 -131
- package/editors/ZonedSplitDateTime.d.ts +32 -3
- package/editors/ZonedSplitDateTime.js +1 -1
- package/editors/ZonedSplitDateTime.mjs +112 -47
- package/hooks/useCloseOnAnchorScrollOut.d.ts +10 -0
- package/hooks/useCloseOnAnchorScrollOut.js +8 -0
- package/hooks/useCloseOnAnchorScrollOut.mjs +43 -0
- package/hooks/useCustomEventsConfirmation.d.ts +20 -0
- package/hooks/useCustomEventsConfirmation.js +8 -0
- package/hooks/useCustomEventsConfirmation.mjs +48 -0
- package/hooks/useDeferredClick.d.ts +12 -0
- package/hooks/useDeferredClick.js +8 -0
- package/hooks/useDeferredClick.mjs +22 -0
- package/hooks/useExclusivePopover.d.ts +26 -0
- package/hooks/useExclusivePopover.js +8 -0
- package/hooks/useExclusivePopover.mjs +30 -0
- package/hooks/useRecurrenceSummary.d.ts +3 -0
- package/hooks/useRecurrenceSummary.js +1 -1
- package/hooks/useRecurrenceSummary.mjs +68 -41
- package/index.d.mts +4 -2
- package/index.d.ts +4 -2
- package/index.js +1 -1
- package/index.mjs +83 -78
- package/items/SchedulerEditItem.d.ts +116 -12
- package/items/SchedulerEditItem.js +1 -1
- package/items/SchedulerEditItem.mjs +212 -131
- package/items/SchedulerItem.d.ts +2 -1
- package/items/SchedulerItem.js +1 -1
- package/items/SchedulerItem.mjs +28 -23
- package/items/SchedulerProportionalViewItem.d.ts +1 -0
- package/items/SchedulerProportionalViewItem.js +1 -1
- package/items/SchedulerProportionalViewItem.mjs +83 -68
- package/items/SchedulerViewItem.d.ts +1 -0
- package/items/SchedulerViewItem.js +1 -1
- package/items/SchedulerViewItem.mjs +84 -75
- package/items/hooks/use-drag-item.js +1 -1
- package/items/hooks/use-drag-item.mjs +49 -48
- package/items/hooks/use-form-item.d.ts +1 -1
- package/items/hooks/use-remove-item.d.ts +1 -1
- package/items/hooks/use-resize-item.js +1 -1
- package/items/hooks/use-resize-item.mjs +74 -65
- package/messages/main.d.ts +42 -0
- package/messages/main.js +1 -1
- package/messages/main.mjs +303 -275
- package/models/InternalDataAction.d.ts +13 -0
- package/models/SchedulerView.d.ts +1 -1
- package/package-metadata.js +1 -1
- package/package-metadata.mjs +2 -2
- package/package.json +13 -12
- package/recurrence/RecurrenceEditor.js +1 -1
- package/recurrence/RecurrenceEditor.mjs +42 -42
- package/recurrence/common.d.ts +10 -0
- package/recurrence/common.js +1 -1
- package/recurrence/common.mjs +39 -35
- package/services/itemsService.d.ts +5 -2
- package/services/itemsService.js +1 -1
- package/services/itemsService.mjs +46 -33
- package/services/occurrenceService.js +1 -1
- package/services/occurrenceService.mjs +18 -18
- package/slots/SchedulerEditSlot.d.ts +70 -8
- package/slots/SchedulerEditSlot.js +1 -1
- package/slots/SchedulerEditSlot.mjs +222 -141
- package/slots/SchedulerSlot.js +1 -1
- package/slots/SchedulerSlot.mjs +20 -16
- package/slots/SchedulerViewSlot.d.ts +3 -0
- package/slots/SchedulerViewSlot.js +1 -1
- package/slots/SchedulerViewSlot.mjs +21 -15
- package/tasks/SchedulerEditTask.d.ts +13 -2
- package/tasks/SchedulerEditTask.js +1 -1
- package/tasks/SchedulerEditTask.mjs +45 -30
- package/utils/main.d.ts +27 -0
- package/utils/main.js +1 -1
- package/utils/main.mjs +172 -136
- package/views/agenda/AgendaView.d.ts +6 -2
- package/views/agenda/AgendaView.js +1 -1
- package/views/agenda/AgendaView.mjs +31 -29
- package/views/agenda/AgendaViewBody.d.ts +3 -3
- package/views/agenda/AgendaViewBody.js +1 -1
- package/views/agenda/AgendaViewBody.mjs +31 -29
- package/views/common/SchedulerDrag.d.ts +4 -2
- package/views/common/SchedulerDrag.js +1 -1
- package/views/common/SchedulerDrag.mjs +8 -7
- package/views/common/SchedulerResize.d.ts +4 -2
- package/views/common/SchedulerResize.js +1 -1
- package/views/common/SchedulerResize.mjs +14 -12
- package/views/common/VerticalResourceIterator.d.ts +3 -3
- package/views/common/VerticalResourceIterator.js +1 -1
- package/views/common/VerticalResourceIterator.mjs +34 -33
- package/views/day/DayView.d.ts +2 -0
- package/views/day/DayView.js +1 -1
- package/views/day/DayView.mjs +9 -7
- package/views/day/DayViewAllDaySlots.d.ts +7 -5
- package/views/day/DayViewAllDaySlots.js +1 -1
- package/views/day/DayViewAllDaySlots.mjs +24 -21
- package/views/day/DayViewMiddleRow.d.ts +7 -5
- package/views/day/DayViewMiddleRow.js +1 -1
- package/views/day/DayViewMiddleRow.mjs +18 -13
- package/views/day/DayViewVerticalRow.d.ts +7 -5
- package/views/day/DayViewVerticalRow.js +1 -1
- package/views/day/DayViewVerticalRow.mjs +23 -17
- package/views/day/DayViewVerticalSlotsRow.d.ts +7 -5
- package/views/day/DayViewVerticalSlotsRow.js +1 -1
- package/views/day/DayViewVerticalSlotsRow.mjs +34 -29
- package/views/day/MultiDayView.d.ts +13 -7
- package/views/day/MultiDayView.js +1 -1
- package/views/day/MultiDayView.mjs +108 -95
- package/views/month/MonthView.d.ts +15 -4
- package/views/month/MonthView.js +1 -1
- package/views/month/MonthView.mjs +105 -68
- package/views/month/MonthViewBody.d.ts +3 -3
- package/views/month/MonthViewBody.js +1 -1
- package/views/month/MonthViewBody.mjs +18 -16
- package/views/time/MultiDayTimelineView.d.ts +6 -4
- package/views/time/MultiDayTimelineView.js +1 -1
- package/views/time/MultiDayTimelineView.mjs +64 -63
- package/views/time/TimelineView.d.ts +2 -0
- package/views/time/TimelineView.js +1 -1
- package/views/time/TimelineView.mjs +5 -3
- package/views/time/TimelineViewBody.d.ts +7 -5
- package/views/time/TimelineViewBody.js +1 -1
- package/views/time/TimelineViewBody.mjs +29 -27
- package/views/week/WeekView.d.ts +2 -0
- package/views/week/WeekView.js +1 -1
- package/views/week/WeekView.mjs +11 -10
- package/views/week/WorkWeekView.d.ts +2 -0
- package/views/week/WorkWeekView.js +1 -1
- package/views/week/WorkWeekView.mjs +17 -16
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
import { intersects as u } from "../utils/main.mjs";
|
|
9
|
-
import { orderBy as
|
|
10
|
-
import { ZonedDate as
|
|
11
|
-
const S = (
|
|
12
|
-
const
|
|
13
|
-
return
|
|
14
|
-
|
|
8
|
+
import { intersects as u, crossesDayBoundary as I } from "../utils/main.mjs";
|
|
9
|
+
import { orderBy as R } from "@progress/kendo-data-query";
|
|
10
|
+
import { ZonedDate as n } from "@progress/kendo-date-math";
|
|
11
|
+
const S = (e, { timezone: t, ignoreIsAllDay: s = !1 }, { groups: a, ranges: d }) => {
|
|
12
|
+
const o = [];
|
|
13
|
+
return R(
|
|
14
|
+
e,
|
|
15
15
|
[
|
|
16
16
|
{ field: "start", dir: "asc" },
|
|
17
17
|
{ field: "end", dir: "desc" },
|
|
@@ -19,40 +19,53 @@ const S = (i, { timezone: t }, { groups: l, ranges: o }) => {
|
|
|
19
19
|
{ field: "title", dir: "asc" },
|
|
20
20
|
{ field: "uid", dir: "asc" }
|
|
21
21
|
]
|
|
22
|
-
).forEach((
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
var
|
|
27
|
-
if (
|
|
28
|
-
const
|
|
29
|
-
...
|
|
30
|
-
refTo:
|
|
31
|
-
itemRef:
|
|
32
|
-
head:
|
|
33
|
-
tail:
|
|
22
|
+
).forEach((l) => {
|
|
23
|
+
a.forEach((r) => {
|
|
24
|
+
const f = a.length === 1 ? h(l, r) : r;
|
|
25
|
+
C(l, f) && d.forEach((i) => {
|
|
26
|
+
var m;
|
|
27
|
+
if (U(l, i, t, s)) {
|
|
28
|
+
const D = {}, y = {}, p = i.end < l.end, T = l.start < i.start, v = n.fromLocalDate(l.start, t), A = n.fromLocalDate(l.end, t), B = {
|
|
29
|
+
...l,
|
|
30
|
+
refTo: y,
|
|
31
|
+
itemRef: D,
|
|
32
|
+
head: p,
|
|
33
|
+
tail: T,
|
|
34
34
|
order: null,
|
|
35
35
|
zonedStart: v,
|
|
36
|
-
zonedEnd:
|
|
37
|
-
group:
|
|
38
|
-
range:
|
|
36
|
+
zonedEnd: A,
|
|
37
|
+
group: f,
|
|
38
|
+
range: i,
|
|
39
39
|
slots: [],
|
|
40
|
-
isRecurring: !!
|
|
41
|
-
isException: !
|
|
42
|
-
isAllDay: !!
|
|
43
|
-
readonly: (
|
|
40
|
+
isRecurring: !!l.recurrenceRule,
|
|
41
|
+
isException: !l.recurrenceRule && l.recurrenceId !== null && l.recurrenceId !== void 0,
|
|
42
|
+
isAllDay: !!l.isAllDay,
|
|
43
|
+
readonly: (m = l.readonly) != null ? m : void 0
|
|
44
44
|
};
|
|
45
|
-
|
|
45
|
+
o.push(B);
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
});
|
|
49
|
-
}),
|
|
50
|
-
},
|
|
49
|
+
}), o;
|
|
50
|
+
}, h = (e, t) => ({
|
|
51
51
|
index: 0,
|
|
52
|
-
resources: t.resources.filter((
|
|
53
|
-
}),
|
|
52
|
+
resources: t.resources.filter((s) => z(e, s))
|
|
53
|
+
}), z = (e, t) => t.multiple ? (e.dataItem[t.field] || []).some((s) => t[t.valueField] === s) : e.dataItem[t.field] === t[t.valueField], C = (e, t) => !t.resources.some((s) => s.multiple ? !e.dataItem[s.field].some((a) => s[s.valueField] === a) : e.dataItem[s.field] !== s[s.valueField]), G = (e, t, s) => {
|
|
54
|
+
if (t.getTime() === s.getTime())
|
|
55
|
+
return !0;
|
|
56
|
+
const a = e.range.zonedStart.toUTCDate(), d = e.range.zonedStart.toUTCDate();
|
|
57
|
+
a.setUTCHours(t.getHours(), t.getMinutes(), 0, 0), d.setUTCHours(s.getHours(), s.getMinutes(), 0, 0);
|
|
58
|
+
const o = e.range.zonedStart.timezone;
|
|
59
|
+
return u(
|
|
60
|
+
n.fromUTCDate(a, o),
|
|
61
|
+
n.fromUTCDate(d, o),
|
|
62
|
+
e.start,
|
|
63
|
+
e.end
|
|
64
|
+
);
|
|
65
|
+
}, U = (e, t, s, a = !1) => u(t.start, t.end, e.start, e.end) ? a || t.isAllDay === void 0 || !!e.isAllDay == !!t.isAllDay ? !0 : t.isAllDay && I(e.start, e.end, s) : !1;
|
|
54
66
|
export {
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
C as inGroup,
|
|
68
|
+
U as inRange,
|
|
69
|
+
G as inTimeRange,
|
|
57
70
|
S as toItems
|
|
58
71
|
};
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@progress/kendo-vue-common"),S=require("@progress/kendo-recurrence"),d=require("@progress/kendo-date-math"),
|
|
8
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@progress/kendo-vue-common"),S=require("@progress/kendo-recurrence"),d=require("@progress/kendo-date-math"),i=require("../utils/main.js"),x=(e,{dateRange:r,fields:c,timezone:a})=>e.map(y(c)).reduce(v(r,a,c),[]).filter(n=>!i.isMaster(n.dataItem,c)),y=e=>r=>({uid:t.getter(e.id||"id")(r),start:t.getter(e.start||"start")(r),startTimezone:t.getter(e.startTimezone||"startTimezone")(r),originalStart:t.getter(e.originalStart||"originalStart")(r),end:t.getter(e.end||"end")(r),endTimezone:t.getter(e.endTimezone||"endTimezone")(r),isAllDay:t.getter(e.isAllDay||"isAllDay")(r),title:t.getter(e.title||"title")(r),description:t.getter(e.description||"description")(r),occurrenceId:t.getter("occurrenceId")(r),recurrenceRule:t.getter(e.recurrenceRule||"recurrenceRule")(r),recurrenceExceptions:t.getter(e.recurrenceExceptions||"recurrenceExceptions")(r),recurrenceId:t.getter(e.recurrenceId||"recurrenceId")(r),readonly:t.getter(e.readonly||"readonly")(r),dataItem:t.clone(r)}),v=(e,r,c)=>(a,o)=>[...a,...o.recurrenceRule&&(o.recurrenceId===null||o.recurrenceId===void 0)&&i.isMaster(o.dataItem,c)?[...E(o,{dateRange:e,timezone:r,fields:c})]:[o]],E=(e,{dateRange:r,timezone:c,fields:a})=>{const o=e.recurrenceRule,n=S.parseRule({recurrenceRule:o});if(!n||!Number.isSafeInteger(n.interval)||n.interval<1)return[];n.start||(n.start=d.ZonedDate.fromLocalDate(e.start,c)),n.end||(n.end=d.ZonedDate.fromLocalDate(e.end,c));const g=e.recurrenceExceptions;g&&(n.exceptionDates=g.map(u=>d.ZonedDate.fromLocalDate(u,c)));const L=n.end.getTime()-n.start.getTime(),R=d.ZonedDate.fromLocalDate(new Date(r.zonedStart.toLocalDate().getTime()-L),c),T=r.zonedEnd,D=S.expand(n,{rangeStart:R,rangeEnd:T});return D.events.length?D.events.map((u,p)=>{const s=t.clone(e),l=t.clone(e.dataItem);return s.recurrenceId=s.uid,i.setField(l,a.recurrenceId,e.uid),s.originalStart=u.start.toLocalDate(),i.setField(l,a.originalStart,u.start.toLocalDate()),s.start=u.start.toLocalDate(),i.setField(l,a.start,u.start.toLocalDate()),s.end=u.end.toLocalDate(),i.setField(l,a.end,u.end.toLocalDate()),s.occurrenceId=String(p),i.setField(l,"occurrenceId",String(p)),s.dataItem=l,s}):[]};exports.toOccurrences=x;
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import { clone as p, getter as t } from "@progress/kendo-vue-common";
|
|
9
9
|
import { parseRule as T, expand as E } from "@progress/kendo-recurrence";
|
|
10
10
|
import { ZonedDate as d } from "@progress/kendo-date-math";
|
|
11
|
-
import { isMaster as
|
|
12
|
-
const
|
|
11
|
+
import { isMaster as S, setField as l } from "../utils/main.mjs";
|
|
12
|
+
const w = (e, { dateRange: r, fields: c, timezone: a }) => e.map(v(c)).reduce(y(r, a, c), []).filter((n) => !S(n.dataItem, c)), v = (e) => (r) => ({
|
|
13
13
|
uid: t(e.id || "id")(r),
|
|
14
14
|
start: t(e.start || "start")(r),
|
|
15
15
|
startTimezone: t(e.startTimezone || "startTimezone")(r),
|
|
@@ -25,30 +25,30 @@ const F = (e, { dateRange: r, fields: n, timezone: a }) => e.map(y(n)).reduce(z(
|
|
|
25
25
|
recurrenceId: t(e.recurrenceId || "recurrenceId")(r),
|
|
26
26
|
readonly: t(e.readonly || "readonly")(r),
|
|
27
27
|
dataItem: p(r)
|
|
28
|
-
}),
|
|
28
|
+
}), y = (e, r, c) => (a, o) => [
|
|
29
29
|
...a,
|
|
30
|
-
...o.recurrenceRule && (o.recurrenceId === null || o.recurrenceId === void 0) &&
|
|
31
|
-
], I = (e, { dateRange: r, timezone:
|
|
32
|
-
const o = e.recurrenceRule,
|
|
33
|
-
if (!
|
|
30
|
+
...o.recurrenceRule && (o.recurrenceId === null || o.recurrenceId === void 0) && S(o.dataItem, c) ? [...I(o, { dateRange: e, timezone: r, fields: c })] : [o]
|
|
31
|
+
], I = (e, { dateRange: r, timezone: c, fields: a }) => {
|
|
32
|
+
const o = e.recurrenceRule, n = T({ recurrenceRule: o });
|
|
33
|
+
if (!n || !Number.isSafeInteger(n.interval) || n.interval < 1)
|
|
34
34
|
return [];
|
|
35
|
-
|
|
35
|
+
n.start || (n.start = d.fromLocalDate(e.start, c)), n.end || (n.end = d.fromLocalDate(e.end, c));
|
|
36
36
|
const D = e.recurrenceExceptions;
|
|
37
|
-
D && (
|
|
38
|
-
(u) => d.fromLocalDate(u,
|
|
37
|
+
D && (n.exceptionDates = D.map(
|
|
38
|
+
(u) => d.fromLocalDate(u, c)
|
|
39
39
|
));
|
|
40
|
-
const
|
|
41
|
-
new Date(r.zonedStart.toLocalDate().getTime() -
|
|
42
|
-
|
|
43
|
-
), x = r.zonedEnd, g = E(
|
|
44
|
-
rangeStart:
|
|
40
|
+
const m = n.end.getTime() - n.start.getTime(), R = d.fromLocalDate(
|
|
41
|
+
new Date(r.zonedStart.toLocalDate().getTime() - m),
|
|
42
|
+
c
|
|
43
|
+
), x = r.zonedEnd, g = E(n, {
|
|
44
|
+
rangeStart: R,
|
|
45
45
|
rangeEnd: x
|
|
46
46
|
});
|
|
47
47
|
return g.events.length ? g.events.map((u, L) => {
|
|
48
|
-
const s = p(e),
|
|
49
|
-
return s.recurrenceId = s.uid, i
|
|
48
|
+
const s = p(e), i = p(e.dataItem);
|
|
49
|
+
return s.recurrenceId = s.uid, l(i, a.recurrenceId, e.uid), s.originalStart = u.start.toLocalDate(), l(i, a.originalStart, u.start.toLocalDate()), s.start = u.start.toLocalDate(), l(i, a.start, u.start.toLocalDate()), s.end = u.end.toLocalDate(), l(i, a.end, u.end.toLocalDate()), s.occurrenceId = String(L), l(i, "occurrenceId", String(L)), s.dataItem = i, s;
|
|
50
50
|
}) : [];
|
|
51
51
|
};
|
|
52
52
|
export {
|
|
53
|
-
|
|
53
|
+
w as toOccurrences
|
|
54
54
|
};
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
8
|
import { DataItem, SchedulerSlotMouseEvent, SchedulerSlotKeyboardEvent, SchedulerSlotFocusEvent } from '../models/main';
|
|
9
|
-
import { DataAction } from '../Scheduler';
|
|
9
|
+
import { DataAction, SchedulerProps } from '../Scheduler';
|
|
10
10
|
import { SchedulerFormStateChangeEvent } from '../components/SchedulerForm';
|
|
11
|
+
import { SchedulerQuickCreateFormStateChangeEvent } from '../components/SchedulerQuickCreateForm';
|
|
11
12
|
import { SchedulerViewSlotProps } from './SchedulerViewSlot';
|
|
12
|
-
import { PropType } from 'vue';
|
|
13
|
+
import { h, PropType, VNodeChild } from 'vue';
|
|
13
14
|
/**
|
|
14
15
|
* Represents the props of the Kendo UI for Vue [SchedulerEditSlot]({% slug api_scheduler_schedulereditslotprops %}) component.
|
|
15
16
|
*/
|
|
@@ -34,10 +35,37 @@ export interface SchedulerEditSlotProps extends SchedulerViewSlotProps {
|
|
|
34
35
|
* Called every time the `formItem` changes.
|
|
35
36
|
*/
|
|
36
37
|
onFormItemChange?: (event: any) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Overrides the quick-create form for this slot. Accepts a component, render function, or named slot.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```vue
|
|
43
|
+
* <SchedulerEditSlot :quick-create-form="'quickForm'" />
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
quickCreateForm?: SchedulerProps['quickCreateForm'];
|
|
47
|
+
/**
|
|
48
|
+
* Controls the draft event displayed in the quick-create popover. Set to `null` to keep it closed.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```vue
|
|
52
|
+
* <SchedulerEditSlot :quick-create-form-item="null" />
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
quickCreateFormItem?: DataItem | null;
|
|
56
|
+
/**
|
|
57
|
+
* Fires whenever the quick-create draft changes.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```vue
|
|
61
|
+
* <SchedulerEditSlot @quickcreateformitemchange="handleDraftChange" />
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
onQuickcreateformitemchange?: (event: SchedulerQuickCreateFormStateChangeEvent<DataItem | null>) => void;
|
|
37
65
|
/**
|
|
38
66
|
* Called when new item has been created in the slot.
|
|
39
67
|
*/
|
|
40
|
-
|
|
68
|
+
onDataAction?: (action: DataAction, event: any) => void;
|
|
41
69
|
}
|
|
42
70
|
/** @hidden */
|
|
43
71
|
export interface SchedulerEditSlotHandle {
|
|
@@ -55,6 +83,10 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
55
83
|
className: PropType<string>;
|
|
56
84
|
form: PropType<any>;
|
|
57
85
|
formItem: PropType<any>;
|
|
86
|
+
quickCreateForm: PropType<string | import('vue').Component<import('../components/SchedulerQuickCreateForm').SchedulerQuickCreateFormProps> | ((createElement: typeof h, defaultRendering: import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
87
|
+
[key: string]: any;
|
|
88
|
+
}>, props: import('../components/SchedulerQuickCreateForm').SchedulerQuickCreateFormProps) => VNodeChild)>;
|
|
89
|
+
quickCreateFormItem: PropType<any>;
|
|
58
90
|
refTo: PropType<any>;
|
|
59
91
|
items: PropType<import('../models/Item').Item[]>;
|
|
60
92
|
row: PropType<number>;
|
|
@@ -82,8 +114,19 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
82
114
|
navDay: PropType<boolean>;
|
|
83
115
|
editable: PropType<boolean | import('../models/EditableProp').EditableProp>;
|
|
84
116
|
itemsPerSlot: PropType<number>;
|
|
85
|
-
|
|
86
|
-
}>, {
|
|
117
|
+
onDataAction: PropType<(action: DataAction, event: any) => void>;
|
|
118
|
+
}>, {
|
|
119
|
+
quickCreateAnchor: import('vue').ShallowRef<HTMLElement, HTMLElement>;
|
|
120
|
+
quickCreateEnabled: import('vue').ComputedRef<boolean>;
|
|
121
|
+
quickCreateFormItem: import('vue').ComputedRef<any>;
|
|
122
|
+
deferredQuickCreate: {
|
|
123
|
+
schedule: (callback: () => void) => void;
|
|
124
|
+
cancel: () => void;
|
|
125
|
+
};
|
|
126
|
+
setQuickCreateFormItem: (value: DataItem | null, event?: Event) => void;
|
|
127
|
+
closeQuickCreate: (event?: Event) => void;
|
|
128
|
+
quickCreateFormTemplate: () => unknown;
|
|
129
|
+
}, {
|
|
87
130
|
currentFormItem: any;
|
|
88
131
|
}, {
|
|
89
132
|
cSlot(): any;
|
|
@@ -91,9 +134,15 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
91
134
|
computedEditable(): import('../models/EditableProp').EditableProp;
|
|
92
135
|
compFormItem(): any;
|
|
93
136
|
}, {
|
|
137
|
+
renderQuickCreateForm(): VNodeChild;
|
|
138
|
+
restoreSlotFocus(): void;
|
|
139
|
+
handleQuickCreateSubmit(event: SchedulerQuickCreateFormStateChangeEvent<DataItem>): void;
|
|
140
|
+
handleQuickCreateMoreOptions(event: SchedulerQuickCreateFormStateChangeEvent<DataItem>): void;
|
|
141
|
+
handleQuickCreateCancel(event: SchedulerQuickCreateFormStateChangeEvent<null>): void;
|
|
94
142
|
handleShowMoreItemsClick(event: any): void;
|
|
95
143
|
createDataItemFromSlot(): any;
|
|
96
144
|
handleFocus(event: SchedulerSlotFocusEvent): void;
|
|
145
|
+
handleClick(event: SchedulerSlotMouseEvent): void;
|
|
97
146
|
handleDoubleClick(event: SchedulerSlotMouseEvent): void;
|
|
98
147
|
handleKeyDown(event: SchedulerSlotKeyboardEvent): void;
|
|
99
148
|
handleEditFormSubmit(event: SchedulerFormStateChangeEvent<DataItem | null>): void;
|
|
@@ -101,7 +150,7 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
101
150
|
handleEditFormClose(event: SchedulerFormStateChangeEvent<null>): void;
|
|
102
151
|
handleFormItemChange(value: DataItem | null, event?: any): void;
|
|
103
152
|
setFormItem(dataItem: DataItem | null, event: any): void;
|
|
104
|
-
}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin,
|
|
153
|
+
}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("click" | "focus" | "doubleclick" | "showmoreitems" | "dataaction" | "formitemchange" | "quickcreateformitemchange")[], "click" | "focus" | "doubleclick" | "showmoreitems" | "dataaction" | "formitemchange" | "quickcreateformitemchange", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
105
154
|
role: PropType<string>;
|
|
106
155
|
tabIndex: {
|
|
107
156
|
type: PropType<number>;
|
|
@@ -110,6 +159,10 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
110
159
|
className: PropType<string>;
|
|
111
160
|
form: PropType<any>;
|
|
112
161
|
formItem: PropType<any>;
|
|
162
|
+
quickCreateForm: PropType<string | import('vue').Component<import('../components/SchedulerQuickCreateForm').SchedulerQuickCreateFormProps> | ((createElement: typeof h, defaultRendering: import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
163
|
+
[key: string]: any;
|
|
164
|
+
}>, props: import('../components/SchedulerQuickCreateForm').SchedulerQuickCreateFormProps) => VNodeChild)>;
|
|
165
|
+
quickCreateFormItem: PropType<any>;
|
|
113
166
|
refTo: PropType<any>;
|
|
114
167
|
items: PropType<import('../models/Item').Item[]>;
|
|
115
168
|
row: PropType<number>;
|
|
@@ -137,8 +190,16 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
137
190
|
navDay: PropType<boolean>;
|
|
138
191
|
editable: PropType<boolean | import('../models/EditableProp').EditableProp>;
|
|
139
192
|
itemsPerSlot: PropType<number>;
|
|
140
|
-
|
|
141
|
-
}>> & Readonly<{
|
|
193
|
+
onDataAction: PropType<(action: DataAction, event: any) => void>;
|
|
194
|
+
}>> & Readonly<{
|
|
195
|
+
onClick?: (...args: any[]) => any;
|
|
196
|
+
onFocus?: (...args: any[]) => any;
|
|
197
|
+
onDoubleclick?: (...args: any[]) => any;
|
|
198
|
+
onShowmoreitems?: (...args: any[]) => any;
|
|
199
|
+
onDataaction?: (...args: any[]) => any;
|
|
200
|
+
onFormitemchange?: (...args: any[]) => any;
|
|
201
|
+
onQuickcreateformitemchange?: (...args: any[]) => any;
|
|
202
|
+
}>, {
|
|
142
203
|
tabIndex: number;
|
|
143
204
|
isWorkDay: boolean;
|
|
144
205
|
isWorkHour: boolean;
|
|
@@ -146,5 +207,6 @@ declare const SchedulerEditSlot: import('vue').DefineComponent<import('vue').Ext
|
|
|
146
207
|
ksEditFormSubmit: any;
|
|
147
208
|
ksEditFormCancel: any;
|
|
148
209
|
ksEditFormClose: any;
|
|
210
|
+
ksRenderQuickCreateForm: any;
|
|
149
211
|
}, true, {}, any>;
|
|
150
212
|
export { SchedulerEditSlot };
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
8
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),r=require("@progress/kendo-vue-common"),D=require("../constants/main.js"),i=require("../utils/main.js"),T=require("../components/SchedulerQuickCreateForm.js"),A=require("./SchedulerViewSlot.js"),x=require("../hooks/use-slots-selection.js"),Q=require("../hooks/use-items-selection.js"),N=require("../hooks/useDeferredClick.js"),j=require("../hooks/useExclusivePopover.js"),$=require("../hooks/use-items-focus.js"),S=require("../hooks/use-slots-focus.js"),_=require("../hooks/useEditable.js"),y=require("../hooks/useSlotExpand.js");function R(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!o.isVNode(e)}const K=o.defineComponent({name:"KendoSchedulerEditSlot",inheritAttrs:!1,emits:["dataaction","showmoreitems","focus","click","doubleclick","formitemchange","quickcreateformitemchange"],props:{role:String,tabIndex:{type:Number,default:void 0},className:String,form:Object,formItem:Object,quickCreateForm:[String,Function,Object],quickCreateFormItem:Object,refTo:[Function,Object],items:Array,row:Number,group:Object,range:Object,isWorkDay:{type:Boolean,default:!0},isWorkHour:{type:Boolean,default:!0},selected:Boolean,col:Number,index:Number,start:Date,end:Date,zonedStart:Object,zonedEnd:Object,isAllDay:Boolean,expandable:[Boolean,Object],slotRender:[String,Function,Object],viewSlot:[String,Function,Object],navDay:Boolean,editable:[Object,Boolean],itemsPerSlot:Number,onDataAction:Function},created(){this.slot=null,this.editableSlot=null},mounted(){const e=this;this.$nextTick(function(){y.useSlotExpand(e,e.ks.scheduler.$el,e.$props.expandable)})},updated(){const e=this;this.$nextTick(function(){y.useSlotExpand(e,e.ks.scheduler.$el,e.$props.expandable)})},provide(){return{ksEditFormSubmit:this.handleEditFormSubmit,ksEditFormCancel:this.handleEditFormCancel,ksEditFormClose:this.handleEditFormClose,ksRenderQuickCreateForm:this.renderQuickCreateForm}},inject:{bv:{default:null},ks:{default:null},dispatchSelectedItems:{default:null},dispatchFocusedItems:{default:null},dispatchFocusedSlots:{default:null},dispatchSelectedSlots:{default:null},ksSlots:{default:{}}},setup(e,{emit:t}){const s=o.inject("ks",null),l=o.inject("ksQuickCreate",()=>!0),p=o.shallowRef(null),d=o.shallowRef(null),h=N.useDeferredClick(),k=o.computed(()=>(s==null?void 0:s.activeViewName.toLowerCase())!=="agenda"&&l()),c=o.computed(()=>e.quickCreateFormItem!==void 0?e.quickCreateFormItem:p.value),u=(n,m)=>{p.value=n,t("quickcreateformitemchange",{value:n,event:m})},a=n=>{h.cancel(),c.value&&u(null,n)};return j.useExclusivePopover(()=>!!c.value,a),o.watch([()=>s==null?void 0:s.currentDate,()=>s==null?void 0:s.activeViewName],()=>a()),{quickCreateAnchor:d,quickCreateEnabled:k,quickCreateFormItem:c,deferredQuickCreate:h,setQuickCreateFormItem:u,closeQuickCreate:a,quickCreateFormTemplate:o.inject("ksQuickCreateForm",()=>{})}},data(){return{currentFormItem:null}},computed:{cSlot(){return this.ksSlots.cSlots?this.ksSlots.cSlots[this.index]:{}},currentTabIndex(){const e=this.bv.slots.length&&i.compareSlots(this.bv.slots[0].cSlot,this.cSlot);return this.$props.tabIndex!==void 0?this.$props.tabIndex===null?void 0:this.$props.tabIndex:this.bv.selectedSlots.length===0&&e&&this.cSlot.items.length===0?0:void 0},computedEditable(){return _.useEditable(this.$props.editable)},compFormItem(){return this.formItem!==void 0?this.formItem:this.currentFormItem}},render(){const e=r.getDefaultSlots(this),{role:t,viewSlot:s,form:l,formItem:p,items:d,row:h,group:k,range:c,isWorkDay:u,isWorkHour:a,col:n,index:m,start:v,end:O,zonedStart:b,zonedEnd:f,navDay:C,itemsPerSlot:F,className:E}=this.$props,I=this.bv.selectedSlots.some(w=>i.compareSlots(w.cSlot,this.cSlot));let g;const q=o.createVNode(A.SchedulerViewSlot,{role:t,className:E,slotRender:this.$props.slotRender,isAllDay:this.isAllDay,expandable:this.expandable,editable:this.editable,items:d,row:h,group:k,range:c,isWorkDay:u,isWorkHour:a,col:n,index:m,start:v,end:O,zonedStart:b,zonedEnd:f,selected:I,navDay:C,itemsPerSlot:F,tabIndex:this.currentTabIndex,formItem:this.compFormItem,onFocus:this.handleFocus,onClick:this.handleClick,onDoubleclick:this.handleDoubleClick,onKeydown:this.handleKeyDown,onShowmoreitems:this.handleShowMoreItemsClick},R(e)?e:{default:()=>[e]});return g=r.getTemplate.call(this,{h:o.h,template:this.$props.viewSlot,defaultRendering:q,defaultSlots:e,additionalProps:{...this.cSlot,isAllDay:this.cSlot.isAllDay,expandable:this.expandable,editable:this.editable,items:d,row:this.cSlot.row,group:this.cSlot.group,range:this.cSlot.range,isWorkDay:u,isWorkHour:a,col:this.cSlot.col,index:m,start:this.cSlot.start,end:this.cSlot.end,zonedStart:b,zonedEnd:f,selected:I,navDay:C,itemsPerSlot:F,tabIndex:this.currentTabIndex},additionalListeners:{focus:this.handleFocus,click:this.handleClick,doubleclick:this.handleDoubleClick,keydown:this.handleKeyDown,showmoreitems:this.handleShowMoreItemsClick}}),g},methods:{renderQuickCreateForm(){if(!this.quickCreateFormItem)return null;const e=this.$props.quickCreateForm?r.templateRendering.call(this,this.$props.quickCreateForm,{}):this.quickCreateFormTemplate();return r.getTemplate.call(this,{h:o.h,template:e,defaultRendering:o.createVNode(T.SchedulerQuickCreateForm,{show:!0,anchor:this.quickCreateAnchor,dataItem:this.quickCreateFormItem,onSubmit:this.handleQuickCreateSubmit,onMoreoptions:this.handleQuickCreateMoreOptions,onCancel:this.handleQuickCreateCancel},null),additionalListeners:{submit:this.handleQuickCreateSubmit,moreoptions:this.handleQuickCreateMoreOptions,cancel:this.handleQuickCreateCancel}})},restoreSlotFocus(){var e;(e=this.quickCreateAnchor)==null||e.focus({preventScroll:!0})},handleQuickCreateSubmit(e){i.emitDataAction(this,{type:D.DATA_ACTION.create,series:!1,dataItem:e.value},e.event),this.setQuickCreateFormItem(null,e.event),this.restoreSlotFocus()},handleQuickCreateMoreOptions(e){this.setFormItem(e.value,e.event),this.setQuickCreateFormItem(null,e.event)},handleQuickCreateCancel(e){this.setQuickCreateFormItem(null,e.event),this.restoreSlotFocus()},handleShowMoreItemsClick(e){this.$emit("showmoreitems",e)},createDataItemFromSlot(){const e={};if(i.setField(e,this.ks.fields.start,new Date(this.cSlot.start.getTime())),i.setField(e,this.ks.fields.end,new Date(this.cSlot.end.getTime())),i.setField(e,this.ks.fields.isAllDay,this.cSlot.isAllDay),this.cSlot.group.resources.length)for(let t=0;t<this.cSlot.group.resources.length;t++){const s=this.cSlot.group.resources[t];if(i.isGroupped(this.cSlot.group.resources)){const l=i.getField(this.cSlot.group.resources[t],s.valueField);i.setField(e,s.field,s.multiple?[l]:l)}else i.setField(e,s.field,s.multiple?[]:void 0)}return e},handleFocus(e){this.computedEditable.select&&this.dispatchSelectedSlots({type:x.SLOTS_SELECT_ACTION.select,slot:this},e.event),this.$emit("focus",e)},handleClick(e){if(this.computedEditable.add&&this.quickCreateEnabled){const t=e.target.element;this.deferredQuickCreate.schedule(()=>{this.quickCreateAnchor=t,this.setQuickCreateFormItem(this.createDataItemFromSlot(),e.event)})}this.$emit("click",e)},handleDoubleClick(e){if(this.closeQuickCreate(e.event),this.computedEditable.add){const t=this.createDataItemFromSlot();this.setFormItem(t,e)}this.$emit("doubleclick",e)},handleKeyDown(e){let t,s,l;switch(e.event.keyCode){case r.Keys.left:if(!this.bv.slots)return;e.event.preventDefault(),this.dispatchFocusedSlots({type:S.SLOTS_FOCUS_ACTION.left,slot:this},e.event);break;case r.Keys.right:if(!this.bv.slots)return;e.event.preventDefault(),this.dispatchFocusedSlots({type:S.SLOTS_FOCUS_ACTION.right,slot:this},e.event);break;case r.Keys.up:if(!this.bv.slots)return;e.event.preventDefault(),this.dispatchFocusedSlots({type:S.SLOTS_FOCUS_ACTION.up,slot:this},e.event);break;case r.Keys.down:if(!this.bv.slots)return;e.event.preventDefault(),this.dispatchFocusedSlots({type:S.SLOTS_FOCUS_ACTION.down,slot:this},e.event);break;case r.Keys.enter:if(!this.bv.slots||!this.computedEditable.add)return;e.event.preventDefault(),l=this.createDataItemFromSlot(),this.quickCreateEnabled?(this.quickCreateAnchor=e.target.element,this.setQuickCreateFormItem(l,e.event)):this.setFormItem(l);break;case r.Keys.tab:s=i.findFirstItem(e.target),t=s?i.findCurrentItem(s,this.bv.items,!1):i.getSortedSlots(this.bv.items,this.ignoreIsAllDay)[0],this.dispatchFocusedItems({type:$.ITEMS_FOCUS_ACTION.current,item:t},e.event),this.dispatchSelectedItems({type:Q.ITEMS_SELECT_ACTION.select,item:t},e);break}t&&e.event.preventDefault()},handleEditFormSubmit(e){i.emitDataAction(this,{type:D.DATA_ACTION.create,series:!1,dataItem:e.value},e),this.setFormItem(null,e.event)},handleEditFormCancel(e){this.setFormItem(null,e.event)},handleEditFormClose(e){this.setFormItem(null,e)},handleFormItemChange(e,t){this.setFormItem&&this.setFormItem(e,t)},setFormItem(e,t){this.currentFormItem=e,this.$emit("formitemchange",t)}}});exports.SchedulerEditSlot=K;
|