@progress/kendo-vue-scheduler 3.2.8-dev.202205030909 → 3.2.9
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/dist/cdn/js/kendo-vue-scheduler.js +2 -2
- package/dist/es/Scheduler.d.ts +14 -0
- package/dist/es/Scheduler.js +21 -4
- package/dist/es/components/{CurrentTimeMarket.d.ts → CurrentTimeMarker.d.ts} +0 -0
- package/dist/es/components/CurrentTimeMarker.js +160 -0
- package/dist/es/components/CurrentTimeMarkerArrow.d.ts +43 -0
- package/dist/es/components/CurrentTimeMarkerArrow.js +135 -0
- package/dist/es/components/DateHeaderCell.js +15 -2
- package/dist/es/components/SchedulerForm.d.ts +0 -18
- package/dist/es/components/SchedulerForm.js +73 -174
- package/dist/es/components/TimeHeaderCell.js +15 -2
- package/dist/es/items/SchedulerViewItem.js +9 -6
- package/dist/es/main.d.ts +2 -1
- package/dist/es/main.js +2 -1
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/slots/SchedulerEditSlot.js +60 -45
- package/dist/es/slots/SchedulerSlot.d.ts +4 -0
- package/dist/es/slots/SchedulerViewSlot.d.ts +0 -1
- package/dist/es/slots/SchedulerViewSlot.js +12 -4
- package/dist/es/views/agenda/AgendaViewBody.js +0 -1
- package/dist/es/views/common/VerticalResourceIterator.js +10 -2
- package/dist/es/views/day/DayView.js +9 -1
- package/dist/es/views/day/DayViewAllDaySlots.d.ts +1 -0
- package/dist/es/views/day/DayViewAllDaySlots.js +1 -0
- package/dist/es/views/day/DayViewMiddleRow.d.ts +1 -0
- package/dist/es/views/day/DayViewMiddleRow.js +1 -0
- package/dist/es/views/day/DayViewVerticalSlotsRow.d.ts +3 -0
- package/dist/es/views/day/DayViewVerticalSlotsRow.js +25 -5
- package/dist/es/views/day/MultiDayView.js +36 -23
- package/dist/es/views/month/MonthView.js +8 -0
- package/dist/es/views/month/MonthViewBody.d.ts +1 -0
- package/dist/es/views/month/MonthViewBody.js +2 -1
- package/dist/es/views/time/MultiDayTimelineView.js +23 -5
- package/dist/es/views/time/TimelineView.js +9 -1
- package/dist/es/views/time/TimelineViewBody.d.ts +2 -0
- package/dist/es/views/time/TimelineViewBody.js +19 -7
- package/dist/es/views/week/WeekView.js +9 -1
- package/dist/es/views/week/WorkWeekView.js +12 -1
- package/dist/npm/Scheduler.d.ts +14 -0
- package/dist/npm/Scheduler.js +21 -4
- package/dist/npm/components/{CurrentTimeMarket.d.ts → CurrentTimeMarker.d.ts} +0 -0
- package/dist/npm/components/CurrentTimeMarker.js +171 -0
- package/dist/npm/components/CurrentTimeMarkerArrow.d.ts +43 -0
- package/dist/npm/components/CurrentTimeMarkerArrow.js +147 -0
- package/dist/npm/components/DateHeaderCell.js +16 -2
- package/dist/npm/components/SchedulerForm.d.ts +0 -18
- package/dist/npm/components/SchedulerForm.js +74 -174
- package/dist/npm/components/TimeHeaderCell.js +16 -2
- package/dist/npm/items/SchedulerViewItem.js +9 -6
- package/dist/npm/main.d.ts +2 -1
- package/dist/npm/main.js +3 -1
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/slots/SchedulerEditSlot.js +59 -44
- package/dist/npm/slots/SchedulerSlot.d.ts +4 -0
- package/dist/npm/slots/SchedulerViewSlot.d.ts +0 -1
- package/dist/npm/slots/SchedulerViewSlot.js +12 -4
- package/dist/npm/views/agenda/AgendaViewBody.js +0 -1
- package/dist/npm/views/common/VerticalResourceIterator.js +10 -2
- package/dist/npm/views/day/DayView.js +9 -1
- package/dist/npm/views/day/DayViewAllDaySlots.d.ts +1 -0
- package/dist/npm/views/day/DayViewAllDaySlots.js +1 -0
- package/dist/npm/views/day/DayViewMiddleRow.d.ts +1 -0
- package/dist/npm/views/day/DayViewMiddleRow.js +1 -0
- package/dist/npm/views/day/DayViewVerticalSlotsRow.d.ts +3 -0
- package/dist/npm/views/day/DayViewVerticalSlotsRow.js +28 -6
- package/dist/npm/views/day/MultiDayView.js +37 -23
- package/dist/npm/views/month/MonthView.js +8 -0
- package/dist/npm/views/month/MonthViewBody.d.ts +1 -0
- package/dist/npm/views/month/MonthViewBody.js +2 -1
- package/dist/npm/views/time/MultiDayTimelineView.js +23 -5
- package/dist/npm/views/time/TimelineView.js +9 -1
- package/dist/npm/views/time/TimelineViewBody.d.ts +2 -0
- package/dist/npm/views/time/TimelineViewBody.js +20 -7
- package/dist/npm/views/week/WeekView.js +9 -1
- package/dist/npm/views/week/WorkWeekView.js +12 -1
- package/package.json +12 -12
- package/dist/es/components/CurrentTimeMarket.js +0 -187
- package/dist/npm/components/CurrentTimeMarket.js +0 -199
package/dist/es/Scheduler.d.ts
CHANGED
|
@@ -71,6 +71,16 @@ export interface SchedulerProps {
|
|
|
71
71
|
* For more information on customizing the scheduler tasks, refer to the [Task Customization]({% slug overview_tasks_scheduler %}) article.
|
|
72
72
|
*/
|
|
73
73
|
task?: any;
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* Represents component based on the DateHeaderCellProps.
|
|
77
|
+
*/
|
|
78
|
+
dateHeaderCell?: any;
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* Represents component based on the TimeHeaderCellProps.
|
|
82
|
+
*/
|
|
83
|
+
timeHeaderCell?: any;
|
|
74
84
|
/**
|
|
75
85
|
* Overrides the default viewTask. Specifying the `viewTask` property of a specific view will override this property.
|
|
76
86
|
* Currently, the `viewTask` is being used in the [AgendaView]({% slug agenda_view_scheduler %}) only.
|
|
@@ -131,6 +141,10 @@ export interface SchedulerProps {
|
|
|
131
141
|
editSlot?: any;
|
|
132
142
|
/** @hidden */
|
|
133
143
|
form?: any;
|
|
144
|
+
/** @hidden */
|
|
145
|
+
dialogProps?: any;
|
|
146
|
+
/** @hidden */
|
|
147
|
+
formProps?: any;
|
|
134
148
|
/**
|
|
135
149
|
* Sets the currently visible views.
|
|
136
150
|
*/
|
package/dist/es/Scheduler.js
CHANGED
|
@@ -101,7 +101,9 @@ var SchedulerVue2 = {
|
|
|
101
101
|
},
|
|
102
102
|
defaultDate: {
|
|
103
103
|
type: Date,
|
|
104
|
-
default:
|
|
104
|
+
default: function _default() {
|
|
105
|
+
return new Date();
|
|
106
|
+
}
|
|
105
107
|
},
|
|
106
108
|
validator: {
|
|
107
109
|
type: Function,
|
|
@@ -118,9 +120,15 @@ var SchedulerVue2 = {
|
|
|
118
120
|
header: [String, Function, Object],
|
|
119
121
|
footer: [String, Function, Object],
|
|
120
122
|
slotRender: [String, Function, Object],
|
|
123
|
+
viewSlot: [String, Function, Object],
|
|
121
124
|
item: [String, Function, Object],
|
|
122
125
|
viewItem: [String, Function, Object],
|
|
123
|
-
task: [String, Function, Object]
|
|
126
|
+
task: [String, Function, Object],
|
|
127
|
+
form: [String, Function, Object],
|
|
128
|
+
dialogProps: Object,
|
|
129
|
+
formProps: Object,
|
|
130
|
+
dateHeaderCell: [String, Function, Object],
|
|
131
|
+
timeHeaderCell: [String, Function, Object]
|
|
124
132
|
},
|
|
125
133
|
computed: {
|
|
126
134
|
wrapperClassName: function wrapperClassName() {
|
|
@@ -184,7 +192,7 @@ var SchedulerVue2 = {
|
|
|
184
192
|
orientation: this.$props.group && this.$props.group.orientation ? this.$props.group.orientation : 'horizontal',
|
|
185
193
|
dateFormat: dateFormat,
|
|
186
194
|
shortDateFormat: shortDateFormat,
|
|
187
|
-
scheduler:
|
|
195
|
+
scheduler: this,
|
|
188
196
|
dataItems: this.dataItems
|
|
189
197
|
}
|
|
190
198
|
};
|
|
@@ -228,9 +236,15 @@ var SchedulerVue2 = {
|
|
|
228
236
|
var header = templateRendering.call(this, view.header || this.$props.header, getListeners.call(this));
|
|
229
237
|
var footer = templateRendering.call(this, view.footer || this.$props.footer, getListeners.call(this));
|
|
230
238
|
var slotRender = templateRendering.call(this, view.slot || this.$props.slotRender, {});
|
|
239
|
+
var viewSlot = templateRendering.call(this, view.viewSlot || this.$props.viewSlot, {});
|
|
231
240
|
var item = templateRendering.call(this, view.item || this.$props.item, {});
|
|
232
241
|
var viewItem = templateRendering.call(this, view.viewItem || this.$props.viewItem, {});
|
|
233
242
|
var task = templateRendering.call(this, view.task || this.$props.task, {});
|
|
243
|
+
var dateHeaderCell = templateRendering.call(this, view.dateHeaderCell || this.$props.dateHeaderCell, {});
|
|
244
|
+
var timeHeaderCell = templateRendering.call(this, view.timeHeaderCell || this.$props.timeHeaderCell, {});
|
|
245
|
+
this.ks.form = templateRendering.call(this, view.form || this.$props.form, {});
|
|
246
|
+
this.ks.dialogProps = view.dialogProps || this.$props.dialogProps;
|
|
247
|
+
this.ks.formProps = view.formProps || this.$props.formProps;
|
|
234
248
|
var ViewSelector = SchedulerViewSelector;
|
|
235
249
|
var viewComponent = this.getViewComponentByName(this.ks.activeViewName || view.name);
|
|
236
250
|
|
|
@@ -241,9 +255,12 @@ var SchedulerVue2 = {
|
|
|
241
255
|
defaultDate: undefined,
|
|
242
256
|
dateRange: this.ks.dateRange,
|
|
243
257
|
slotRender: slotRender,
|
|
258
|
+
viewSlot: viewSlot,
|
|
244
259
|
item: item,
|
|
245
260
|
viewItem: viewItem,
|
|
246
|
-
task: task
|
|
261
|
+
task: task,
|
|
262
|
+
dateHeaderCell: dateHeaderCell,
|
|
263
|
+
timeHeaderCell: timeHeaderCell
|
|
247
264
|
});
|
|
248
265
|
|
|
249
266
|
var headerRender;
|
|
File without changes
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
import { cloneDate } from '@progress/kendo-date-math'; // import { useSchedulerElementContext, useSchedulerPropsContext, useSchedulerViewSlotsContext } from '../context';
|
|
6
|
+
|
|
7
|
+
import { first, isInTimeRange, intersects } from '../utils';
|
|
8
|
+
import { getRect } from '../views/common/utils';
|
|
9
|
+
|
|
10
|
+
var combineWidths = function combineWidths(slots) {
|
|
11
|
+
var result = 0;
|
|
12
|
+
slots.forEach(function (slot) {
|
|
13
|
+
if (slot) {
|
|
14
|
+
var rect = getRect(slot.$el);
|
|
15
|
+
result += rect.width;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
var combineHeights = function combineHeights(slots) {
|
|
22
|
+
var result = 0;
|
|
23
|
+
slots.forEach(function (slot) {
|
|
24
|
+
if (slot) {
|
|
25
|
+
var rect = getRect(slot.$el);
|
|
26
|
+
result += rect.height;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var setTime = function setTime(origin, candidate) {
|
|
33
|
+
var date = cloneDate(origin);
|
|
34
|
+
date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());
|
|
35
|
+
return date;
|
|
36
|
+
}; // tslint:enable:max-line-length
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
var CurrentTimeMarkerVue2 = {
|
|
40
|
+
name: 'KendoCurrentTimeMarker',
|
|
41
|
+
props: {
|
|
42
|
+
updateInterval: {
|
|
43
|
+
type: Number,
|
|
44
|
+
default: 60000
|
|
45
|
+
},
|
|
46
|
+
groupIndex: Number,
|
|
47
|
+
vertical: Boolean,
|
|
48
|
+
attachArrow: Object
|
|
49
|
+
},
|
|
50
|
+
inject: {
|
|
51
|
+
ks: {
|
|
52
|
+
default: null
|
|
53
|
+
},
|
|
54
|
+
bv: {
|
|
55
|
+
default: null
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
created: function created() {
|
|
59
|
+
this.interval = undefined;
|
|
60
|
+
this.arrowRef = null;
|
|
61
|
+
this.observer = null;
|
|
62
|
+
this.line = null;
|
|
63
|
+
},
|
|
64
|
+
data: function data() {
|
|
65
|
+
return {
|
|
66
|
+
show: false
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
mounted: function mounted() {
|
|
70
|
+
this.line = this.$el;
|
|
71
|
+
var that = this;
|
|
72
|
+
this.$nextTick(function () {
|
|
73
|
+
that.position();
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
if (!this.ks.scheduler || !this.ks.scheduler.$el || !window) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
clearInterval(this.interval);
|
|
81
|
+
this.interval = window.setInterval(this.position, this.updateInterval);
|
|
82
|
+
this.observer = new window.ResizeObserver(this.position);
|
|
83
|
+
this.observer.observe(this.ks.scheduler.$el);
|
|
84
|
+
},
|
|
85
|
+
destroyed: !!gh ? undefined : function () {
|
|
86
|
+
if (this.observer) {
|
|
87
|
+
this.observer.disconnect();
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
// @ts-ignore
|
|
91
|
+
unmounted: function unmounted() {
|
|
92
|
+
if (this.observer) {
|
|
93
|
+
this.observer.disconnect();
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
setup: !gh ? undefined : function () {
|
|
98
|
+
var v3 = !!gh;
|
|
99
|
+
return {
|
|
100
|
+
v3: v3
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
// @ts-ignore
|
|
104
|
+
render: function render(createElement) {
|
|
105
|
+
var _a;
|
|
106
|
+
|
|
107
|
+
var h = gh || createElement; // const dir = useDir(line, schedulerProps.rtl === true ? 'rtl' : undefined);
|
|
108
|
+
|
|
109
|
+
return h("div", {
|
|
110
|
+
"class": "k-current-time",
|
|
111
|
+
style: (_a = {
|
|
112
|
+
transform: this.$props.vertical ? 'translateX(-50%)' : 'translateY(-50%)'
|
|
113
|
+
}, _a[this.$props.vertical ? 'width' : 'height'] = '1px', _a.visibility = !this.show ? 'hidden' : undefined, _a)
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
methods: {
|
|
117
|
+
position: function position() {
|
|
118
|
+
var _this = this;
|
|
119
|
+
|
|
120
|
+
if (!this.bv.slots) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var sameTimeSlots = this.bv.slots.filter(function (s) {
|
|
125
|
+
return (_this.$props.groupIndex === undefined || _this.$props.groupIndex === null || s.group.index === _this.$props.groupIndex) && (_this.$props.vertical ? intersects(new Date(), new Date(), s.start, s.end, true) : isInTimeRange(new Date(), s.start, s.end)) && !s.isAllDay;
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
if (sameTimeSlots && sameTimeSlots.length && this.line) {
|
|
129
|
+
var firstSlot = first(sameTimeSlots);
|
|
130
|
+
|
|
131
|
+
if (!firstSlot) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
var size = this.$props.vertical ? combineHeights(sameTimeSlots) : combineWidths(sameTimeSlots);
|
|
136
|
+
var rect = getRect(firstSlot.$el);
|
|
137
|
+
var arrowRect = getRect(this.arrowRef);
|
|
138
|
+
var pxPerMillisecond = (this.$props.vertical ? rect.width : rect.height) / (firstSlot.end.getTime() - firstSlot.start.getTime());
|
|
139
|
+
var offset = (Date.now() - setTime(new Date(), firstSlot.start).getTime()) * pxPerMillisecond;
|
|
140
|
+
var rtl = this.$props.dir === 'rtl';
|
|
141
|
+
var top_1 = this.$props.vertical ? rect.top : rect.top + offset - arrowRect.height / 2;
|
|
142
|
+
var horizontalDimension = rtl ? 'right' : 'left';
|
|
143
|
+
var horizontalMeasure = this.$props.vertical ? rect[horizontalDimension] + offset - arrowRect.width / 2 : rect[horizontalDimension]; // if (this.$props.vertical) {
|
|
144
|
+
// this.arrowRef.style[horizontalDimension] = `${horizontalMeasure}px`;
|
|
145
|
+
// } else {
|
|
146
|
+
// this.arrowRef.style.top = `${top}px`;
|
|
147
|
+
// }
|
|
148
|
+
|
|
149
|
+
this.line.style[horizontalDimension] = horizontalMeasure + "px";
|
|
150
|
+
this.line.style.top = top_1 + "px";
|
|
151
|
+
this.line.style[this.$props.vertical ? 'height' : 'width'] = size - 1 + "px";
|
|
152
|
+
this.show = true;
|
|
153
|
+
} else {
|
|
154
|
+
this.show = false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var CurrentTimeMarker = CurrentTimeMarkerVue2;
|
|
160
|
+
export { CurrentTimeMarker, CurrentTimeMarkerVue2 };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from '../additionalTypes';
|
|
2
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
3
|
+
declare type DefaultMethods<V> = {
|
|
4
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
5
|
+
};
|
|
6
|
+
declare type CurrentTimeMarkerArrowProps = {
|
|
7
|
+
updateInterval?: number;
|
|
8
|
+
groupIndex?: number | null;
|
|
9
|
+
vertical?: boolean;
|
|
10
|
+
attachArrow?: HTMLElement;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
export interface CurrentTimeMarkerArrowState {
|
|
16
|
+
interval: number | undefined;
|
|
17
|
+
arrowRef: HTMLElement | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
*/
|
|
22
|
+
export interface CurrentTimeMarkerArrowComputed {
|
|
23
|
+
[key: string]: any;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export interface CurrentTimeMarkerArrowMethods {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @hidden
|
|
33
|
+
*/
|
|
34
|
+
export interface CurrentTimeMarkerArrowData {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @hidden
|
|
38
|
+
*/
|
|
39
|
+
export interface CurrentTimeMarkerArrowAll extends Vue2type, CurrentTimeMarkerArrowMethods, CurrentTimeMarkerArrowData, CurrentTimeMarkerArrowComputed, CurrentTimeMarkerArrowState {
|
|
40
|
+
}
|
|
41
|
+
declare let CurrentTimeMarkerArrowVue2: ComponentOptions<CurrentTimeMarkerArrowAll, DefaultData<CurrentTimeMarkerArrowData>, DefaultMethods<CurrentTimeMarkerArrowAll>, CurrentTimeMarkerArrowComputed, RecordPropsDefinition<CurrentTimeMarkerArrowProps>>;
|
|
42
|
+
declare const CurrentTimeMarkerArrow: DefineComponent<CurrentTimeMarkerArrowProps, any, CurrentTimeMarkerArrowData, CurrentTimeMarkerArrowComputed, CurrentTimeMarkerArrowMethods, {}, {}, {}, string, CurrentTimeMarkerArrowProps, CurrentTimeMarkerArrowProps, {}>;
|
|
43
|
+
export { CurrentTimeMarkerArrow, CurrentTimeMarkerArrowVue2 };
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
import { cloneDate } from '@progress/kendo-date-math';
|
|
6
|
+
import { classNames } from '@progress/kendo-vue-common'; // import { useSchedulerElementContext, useSchedulerPropsContext, useSchedulerViewSlotsContext } from '../context';
|
|
7
|
+
|
|
8
|
+
import { first, isInTimeRange, intersects } from '../utils';
|
|
9
|
+
import { getRect } from '../views/common/utils';
|
|
10
|
+
|
|
11
|
+
var setTime = function setTime(origin, candidate) {
|
|
12
|
+
var date = cloneDate(origin);
|
|
13
|
+
date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());
|
|
14
|
+
return date;
|
|
15
|
+
}; // tslint:enable:max-line-length
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var CurrentTimeMarkerArrowVue2 = {
|
|
19
|
+
name: 'KendoCurrentTimeMarkerArrow',
|
|
20
|
+
props: {
|
|
21
|
+
updateInterval: {
|
|
22
|
+
type: Number,
|
|
23
|
+
default: 60000
|
|
24
|
+
},
|
|
25
|
+
groupIndex: Number,
|
|
26
|
+
vertical: Boolean,
|
|
27
|
+
attachArrow: Object
|
|
28
|
+
},
|
|
29
|
+
inject: {
|
|
30
|
+
ks: {
|
|
31
|
+
default: null
|
|
32
|
+
},
|
|
33
|
+
bv: {
|
|
34
|
+
default: null
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
created: function created() {
|
|
38
|
+
this.interval = undefined;
|
|
39
|
+
this.arrowRef = null;
|
|
40
|
+
},
|
|
41
|
+
data: function data() {
|
|
42
|
+
return {
|
|
43
|
+
show: false
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
mounted: function mounted() {
|
|
47
|
+
this.arrowRef = this.$el;
|
|
48
|
+
this.position();
|
|
49
|
+
|
|
50
|
+
if (!this.ks.scheduler || !this.ks.scheduler.$el || !window) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
clearInterval(this.interval);
|
|
55
|
+
this.interval = window.setInterval(this.position, this.updateInterval);
|
|
56
|
+
this.observer = new window.ResizeObserver(this.position);
|
|
57
|
+
this.observer.observe(this.ks.scheduler.$el);
|
|
58
|
+
},
|
|
59
|
+
destroyed: !!gh ? undefined : function () {
|
|
60
|
+
if (this.observer) {
|
|
61
|
+
this.observer.disconnect();
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
unmounted: function unmounted() {
|
|
66
|
+
if (this.observer) {
|
|
67
|
+
this.observer.disconnect();
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
setup: !gh ? undefined : function () {
|
|
72
|
+
var v3 = !!gh;
|
|
73
|
+
return {
|
|
74
|
+
v3: v3
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
// @ts-ignore
|
|
78
|
+
render: function render(createElement) {
|
|
79
|
+
var h = gh || createElement; // const dir = useDir(line, schedulerProps.rtl === true ? 'rtl' : undefined);
|
|
80
|
+
|
|
81
|
+
return h("div", {
|
|
82
|
+
"class": classNames('k-current-time', {
|
|
83
|
+
'k-current-time-arrow-right': !this.$props.vertical && this.$props.dir !== 'rtl',
|
|
84
|
+
'k-current-time-arrow-left': !this.$props.vertical && this.$props.dir === 'rtl',
|
|
85
|
+
'k-current-time-arrow-down': this.$props.vertical
|
|
86
|
+
}),
|
|
87
|
+
style: {
|
|
88
|
+
transform: this.$props.vertical ? this.$props.dir === 'rtl' ? 'translateX(50%)' : 'translateX(-50%)' : 'translateY(-50%)',
|
|
89
|
+
visibility: !this.show ? 'hidden' : undefined
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
methods: {
|
|
94
|
+
position: function position() {
|
|
95
|
+
var _this = this;
|
|
96
|
+
|
|
97
|
+
if (!this.bv.slots) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
var sameTimeSlots = this.bv.slots.filter(function (s) {
|
|
102
|
+
return (_this.$props.groupIndex === undefined || _this.$props.groupIndex === null || s.group.index === _this.$props.groupIndex) && (_this.$props.vertical ? intersects(new Date(), new Date(), s.start, s.end, true) : isInTimeRange(new Date(), s.start, s.end)) && !s.isAllDay;
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
if (sameTimeSlots && sameTimeSlots.length && this.$el) {
|
|
106
|
+
var firstSlot = first(sameTimeSlots);
|
|
107
|
+
|
|
108
|
+
if (!firstSlot) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var rect = getRect(firstSlot.$el);
|
|
113
|
+
var arrowRect = getRect(this.arrowRef);
|
|
114
|
+
var pxPerMillisecond = (this.$props.vertical ? rect.width : rect.height) / (firstSlot.end.getTime() - firstSlot.start.getTime());
|
|
115
|
+
var offset = (Date.now() - setTime(new Date(), firstSlot.start).getTime()) * pxPerMillisecond;
|
|
116
|
+
var rtl = this.$props.dir === 'rtl';
|
|
117
|
+
var top_1 = this.$props.vertical ? rect.top : rect.top + offset - arrowRect.height / 2;
|
|
118
|
+
var horizontalDimension = rtl ? 'right' : 'left';
|
|
119
|
+
var horizontalMeasure = this.$props.vertical ? rect[horizontalDimension] + offset - arrowRect.width / 2 : rect[horizontalDimension];
|
|
120
|
+
|
|
121
|
+
if (this.$props.vertical) {
|
|
122
|
+
this.arrowRef.style[horizontalDimension] = horizontalMeasure + "px";
|
|
123
|
+
} else {
|
|
124
|
+
this.arrowRef.style.top = top_1 + "px";
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this.show = true;
|
|
128
|
+
} else {
|
|
129
|
+
this.show = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var CurrentTimeMarkerArrow = CurrentTimeMarkerArrowVue2;
|
|
135
|
+
export { CurrentTimeMarkerArrow, CurrentTimeMarkerArrowVue2 };
|
|
@@ -3,7 +3,8 @@ import * as Vue from 'vue';
|
|
|
3
3
|
var allVue = Vue;
|
|
4
4
|
var gh = allVue.h;
|
|
5
5
|
var inject = allVue.inject;
|
|
6
|
-
import { provideIntlService } from '@progress/kendo-vue-intl';
|
|
6
|
+
import { provideIntlService } from '@progress/kendo-vue-intl';
|
|
7
|
+
import { getTemplate } from '@progress/kendo-vue-common'; // tslint:enable:max-line-length
|
|
7
8
|
|
|
8
9
|
var DateHeaderCellVue2 = {
|
|
9
10
|
name: 'KendoDateHeaderCell',
|
|
@@ -35,11 +36,23 @@ var DateHeaderCellVue2 = {
|
|
|
35
36
|
render: function render(createElement) {
|
|
36
37
|
var h = gh || createElement;
|
|
37
38
|
var intl = provideIntlService(this);
|
|
39
|
+
var renderAs;
|
|
40
|
+
var defaultRendering = intl.formatDate(this.$props.date, this.$props.format);
|
|
41
|
+
renderAs = getTemplate.call(this, {
|
|
42
|
+
h: h,
|
|
43
|
+
template: this.$props.as,
|
|
44
|
+
defaultRendering: defaultRendering,
|
|
45
|
+
additionalProps: {
|
|
46
|
+
default: defaultRendering,
|
|
47
|
+
date: this.$props.date,
|
|
48
|
+
format: this.$props.format
|
|
49
|
+
}
|
|
50
|
+
});
|
|
38
51
|
return h("div", {
|
|
39
52
|
"class": 'k-scheduler-cell k-heading-cell'
|
|
40
53
|
}, [h("span", {
|
|
41
54
|
"class": "k-link k-nav-day"
|
|
42
|
-
}, [
|
|
55
|
+
}, [renderAs])]);
|
|
43
56
|
}
|
|
44
57
|
};
|
|
45
58
|
var DateHeaderCell = DateHeaderCellVue2;
|
|
@@ -18,10 +18,6 @@ export interface SchedulerFormProps extends FormProps {
|
|
|
18
18
|
* Specifies the `dataItem` to be visualized inside the form.
|
|
19
19
|
*/
|
|
20
20
|
dataItem: DataItem;
|
|
21
|
-
/**
|
|
22
|
-
* Specifies the custom form.
|
|
23
|
-
*/
|
|
24
|
-
renderForm: any;
|
|
25
21
|
/**
|
|
26
22
|
* Called when the `cancel` button is clicked.
|
|
27
23
|
*/
|
|
@@ -30,20 +26,6 @@ export interface SchedulerFormProps extends FormProps {
|
|
|
30
26
|
* Called when the `close` button is clicked.
|
|
31
27
|
*/
|
|
32
28
|
onClose?: (event: SchedulerFormStateChangeEvent<null>) => void;
|
|
33
|
-
/**
|
|
34
|
-
* Overrides the component used for visualizing the `editor`.
|
|
35
|
-
* The [SchedulerFormEditor]({% slug api_scheduler_schedulerFormEditor %}) component is used, by default.
|
|
36
|
-
*
|
|
37
|
-
* For more information, please refer to the [`Scheduler Form Customization`]({% slug overview_customization_form_scheduler %}) article.
|
|
38
|
-
*/
|
|
39
|
-
editor?: any;
|
|
40
|
-
/**
|
|
41
|
-
* Overrides the component used for visualizing the `dialog`.
|
|
42
|
-
* The [Kendo UI for Vue Dialog]({% slug api_dialogs_dialog %}) component is used, by default.
|
|
43
|
-
*
|
|
44
|
-
* For more information, please refer to the [`Scheduler Form Customization`]({% slug overview_customization_form_scheduler %}) article.
|
|
45
|
-
*/
|
|
46
|
-
dialog?: any;
|
|
47
29
|
}
|
|
48
30
|
/**
|
|
49
31
|
* Represent the `ref` of the SchedulerForm component.
|