@progress/kendo-vue-scheduler 3.2.7 → 3.2.9-dev.202205051307
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 +24 -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/SchedulerEditItem.js +120 -91
- 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 +12 -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 +37 -23
- package/dist/es/views/month/MonthView.js +9 -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 +24 -5
- package/dist/es/views/time/TimelineView.js +12 -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 +12 -1
- package/dist/es/views/week/WorkWeekView.js +15 -1
- package/dist/npm/Scheduler.d.ts +14 -0
- package/dist/npm/Scheduler.js +24 -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/SchedulerEditItem.js +119 -90
- 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 +12 -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 +38 -23
- package/dist/npm/views/month/MonthView.js +9 -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 +24 -5
- package/dist/npm/views/time/TimelineView.js +12 -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 +12 -1
- package/dist/npm/views/week/WorkWeekView.js +15 -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,8 +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],
|
|
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]
|
|
123
132
|
},
|
|
124
133
|
computed: {
|
|
125
134
|
wrapperClassName: function wrapperClassName() {
|
|
@@ -183,7 +192,7 @@ var SchedulerVue2 = {
|
|
|
183
192
|
orientation: this.$props.group && this.$props.group.orientation ? this.$props.group.orientation : 'horizontal',
|
|
184
193
|
dateFormat: dateFormat,
|
|
185
194
|
shortDateFormat: shortDateFormat,
|
|
186
|
-
scheduler:
|
|
195
|
+
scheduler: this,
|
|
187
196
|
dataItems: this.dataItems
|
|
188
197
|
}
|
|
189
198
|
};
|
|
@@ -227,8 +236,15 @@ var SchedulerVue2 = {
|
|
|
227
236
|
var header = templateRendering.call(this, view.header || this.$props.header, getListeners.call(this));
|
|
228
237
|
var footer = templateRendering.call(this, view.footer || this.$props.footer, getListeners.call(this));
|
|
229
238
|
var slotRender = templateRendering.call(this, view.slot || this.$props.slotRender, {});
|
|
239
|
+
var viewSlot = templateRendering.call(this, view.viewSlot || this.$props.viewSlot, {});
|
|
230
240
|
var item = templateRendering.call(this, view.item || this.$props.item, {});
|
|
241
|
+
var viewItem = templateRendering.call(this, view.viewItem || this.$props.viewItem, {});
|
|
231
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;
|
|
232
248
|
var ViewSelector = SchedulerViewSelector;
|
|
233
249
|
var viewComponent = this.getViewComponentByName(this.ks.activeViewName || view.name);
|
|
234
250
|
|
|
@@ -239,8 +255,12 @@ var SchedulerVue2 = {
|
|
|
239
255
|
defaultDate: undefined,
|
|
240
256
|
dateRange: this.ks.dateRange,
|
|
241
257
|
slotRender: slotRender,
|
|
258
|
+
viewSlot: viewSlot,
|
|
242
259
|
item: item,
|
|
243
|
-
|
|
260
|
+
viewItem: viewItem,
|
|
261
|
+
task: task,
|
|
262
|
+
dateHeaderCell: dateHeaderCell,
|
|
263
|
+
timeHeaderCell: timeHeaderCell
|
|
244
264
|
});
|
|
245
265
|
|
|
246
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.
|