@progress/kendo-vue-scheduler 8.4.0-develop.5 → 9.0.0-develop.2

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 CHANGED
@@ -120,6 +120,11 @@ export interface SchedulerProps {
120
120
  * For more information on customizing the scheduler footer, refer to the [Footer Customization]({% slug overview_header_footer_scheduler %}) article.
121
121
  */
122
122
  footer?: any;
123
+ /**
124
+ * Enables the adaptive (mobile) rendering of the Scheduler.
125
+ * When set to `true`, the Scheduler renders mobile-specific classes and layout on small screens (below 1024px).
126
+ */
127
+ adaptive?: boolean;
123
128
  /**
124
129
  * Overrides the default slot component. Specifying the `slot` property of a specific view will override this property.
125
130
  *
@@ -352,7 +357,12 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
352
357
  formProps: PropType<any>;
353
358
  dateHeaderCell: PropType<any>;
354
359
  timeHeaderCell: PropType<any>;
360
+ adaptive: {
361
+ type: PropType<boolean>;
362
+ default: boolean;
363
+ };
355
364
  }>, {}, {
365
+ media: "mobile" | "desktop";
356
366
  ks: {
357
367
  activeViewName: string;
358
368
  currentDate: Date;
@@ -362,6 +372,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
362
372
  validator: Function;
363
373
  tabIndex: number;
364
374
  height: string | number;
375
+ adaptive: boolean;
365
376
  dataItems: any[];
366
377
  views: SchedulerViewProps[];
367
378
  editable: boolean | EditableProp;
@@ -460,6 +471,10 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
460
471
  formProps: PropType<any>;
461
472
  dateHeaderCell: PropType<any>;
462
473
  timeHeaderCell: PropType<any>;
474
+ adaptive: {
475
+ type: PropType<boolean>;
476
+ default: boolean;
477
+ };
463
478
  }>> & Readonly<{
464
479
  onDatachange?: (...args: any[]) => any;
465
480
  onItemclick?: (...args: any[]) => any;
@@ -524,6 +539,10 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
524
539
  formProps: PropType<any>;
525
540
  dateHeaderCell: PropType<any>;
526
541
  timeHeaderCell: PropType<any>;
542
+ adaptive: {
543
+ type: PropType<boolean>;
544
+ default: boolean;
545
+ };
527
546
  }>> & Readonly<{
528
547
  onDatachange?: (...args: any[]) => any;
529
548
  onItemclick?: (...args: any[]) => any;
@@ -595,6 +614,10 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
595
614
  formProps: PropType<any>;
596
615
  dateHeaderCell: PropType<any>;
597
616
  timeHeaderCell: PropType<any>;
617
+ adaptive: {
618
+ type: PropType<boolean>;
619
+ default: boolean;
620
+ };
598
621
  }>> & Readonly<{
599
622
  onDatachange?: (...args: any[]) => any;
600
623
  onItemclick?: (...args: any[]) => any;
@@ -610,9 +633,11 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
610
633
  };
611
634
  }, {
612
635
  isRtl(): any;
636
+ isMobile(): boolean;
613
637
  wrapperClassName(): {
614
638
  'k-rtl': any;
615
639
  'k-scheduler': boolean;
640
+ 'k-scheduler-mobile': any;
616
641
  };
617
642
  fields(): import('./models/Fields').Fields;
618
643
  }, {
@@ -643,14 +668,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
643
668
  };
644
669
  step: {
645
670
  type: PropType<number>;
646
- default: number; /**
647
- * Overrides the default task. Specifying the `task` property of a specific view will override this property.
648
- * Currently, the `task` is being used in the [AgendaView]({% slug agenda_view_scheduler %}) only.
649
- *
650
- * The default component is: [SchedulerTask]({% slug api_scheduler_schedulertaskprops %})
651
- *
652
- * For more information on customizing the scheduler tasks, refer to the [Task Customization]({% slug overview_agenda_view_scheduler %}) article.
653
- */
671
+ default: number;
654
672
  };
655
673
  numberOfDays: {
656
674
  type: PropType<number>;
@@ -695,14 +713,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
695
713
  };
696
714
  step: {
697
715
  type: PropType<number>;
698
- default: number; /**
699
- * Overrides the default task. Specifying the `task` property of a specific view will override this property.
700
- * Currently, the `task` is being used in the [AgendaView]({% slug agenda_view_scheduler %}) only.
701
- *
702
- * The default component is: [SchedulerTask]({% slug api_scheduler_schedulertaskprops %})
703
- *
704
- * For more information on customizing the scheduler tasks, refer to the [Task Customization]({% slug overview_agenda_view_scheduler %}) article.
705
- */
716
+ default: number;
706
717
  };
707
718
  numberOfDays: {
708
719
  type: PropType<number>;
@@ -775,9 +786,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
775
786
  workDayEnd: {
776
787
  type: PropType<string>;
777
788
  default: string;
778
- }; /**
779
- * Specifies the `id` of the wrapping element of the Scheduler.
780
- */
789
+ };
781
790
  workWeekStart: {
782
791
  type: PropType<import('@progress/kendo-date-math').Day>;
783
792
  default: import('@progress/kendo-date-math').Day;
@@ -874,9 +883,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
874
883
  workDayEnd: {
875
884
  type: PropType<string>;
876
885
  default: string;
877
- }; /**
878
- * Specifies the `id` of the wrapping element of the Scheduler.
879
- */
886
+ };
880
887
  workWeekStart: {
881
888
  type: PropType<import('@progress/kendo-date-math').Day>;
882
889
  default: import('@progress/kendo-date-math').Day;
@@ -987,9 +994,6 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
987
994
  type: PropType<string>;
988
995
  default: string;
989
996
  };
990
- /**
991
- * Represents the props of the [Kendo UI for Vue Scheduler component]({% slug overview_scheduler %}).
992
- */
993
997
  endTime: {
994
998
  type: PropType<string>;
995
999
  default: string;
@@ -1021,13 +1025,6 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1021
1025
  resizeHint: PropType<any>;
1022
1026
  item: PropType<any>;
1023
1027
  viewItem: PropType<any>;
1024
- /**
1025
- * Overrides the default item. Specifying the `item` property of a specific view will override this property.
1026
- *
1027
- * The default component is: [SchedulerItem]({% slug api_scheduler_scheduleritemprops %})
1028
- *
1029
- * For more information on customizing the scheduler items, refer to the [Item Customization]({% slug scheduler_custom_event %}) article.
1030
- */
1031
1028
  editable: {
1032
1029
  type: PropType<boolean>;
1033
1030
  default: boolean;
@@ -1083,9 +1080,6 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1083
1080
  type: PropType<string>;
1084
1081
  default: string;
1085
1082
  };
1086
- /**
1087
- * Represents the props of the [Kendo UI for Vue Scheduler component]({% slug overview_scheduler %}).
1088
- */
1089
1083
  endTime: {
1090
1084
  type: PropType<string>;
1091
1085
  default: string;
@@ -1117,13 +1111,6 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1117
1111
  resizeHint: PropType<any>;
1118
1112
  item: PropType<any>;
1119
1113
  viewItem: PropType<any>;
1120
- /**
1121
- * Overrides the default item. Specifying the `item` property of a specific view will override this property.
1122
- *
1123
- * The default component is: [SchedulerItem]({% slug api_scheduler_scheduleritemprops %})
1124
- *
1125
- * For more information on customizing the scheduler items, refer to the [Item Customization]({% slug scheduler_custom_event %}) article.
1126
- */
1127
1114
  editable: {
1128
1115
  type: PropType<boolean>;
1129
1116
  default: boolean;
@@ -1305,14 +1292,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1305
1292
  };
1306
1293
  resizeItem: {
1307
1294
  type: PropType<any>;
1308
- default: () => any; /**
1309
- * Overrides the default task. Specifying the `task` property of a specific view will override this property.
1310
- * Currently, the `task` is being used in the [AgendaView]({% slug agenda_view_scheduler %}) only.
1311
- *
1312
- * The default component is: [SchedulerTask]({% slug api_scheduler_schedulertaskprops %})
1313
- *
1314
- * For more information on customizing the scheduler tasks, refer to the [Task Customization]({% slug overview_agenda_view_scheduler %}) article.
1315
- */
1295
+ default: () => any;
1316
1296
  };
1317
1297
  title: PropType<string | ((localization: import('@progress/kendo-vue-intl').LocalizationService) => string)>;
1318
1298
  selectedDateFormat: {
@@ -1379,14 +1359,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1379
1359
  };
1380
1360
  resizeItem: {
1381
1361
  type: PropType<any>;
1382
- default: () => any; /**
1383
- * Overrides the default task. Specifying the `task` property of a specific view will override this property.
1384
- * Currently, the `task` is being used in the [AgendaView]({% slug agenda_view_scheduler %}) only.
1385
- *
1386
- * The default component is: [SchedulerTask]({% slug api_scheduler_schedulertaskprops %})
1387
- *
1388
- * For more information on customizing the scheduler tasks, refer to the [Task Customization]({% slug overview_agenda_view_scheduler %}) article.
1389
- */
1362
+ default: () => any;
1390
1363
  };
1391
1364
  title: PropType<string | ((localization: import('@progress/kendo-vue-intl').LocalizationService) => string)>;
1392
1365
  selectedDateFormat: {
@@ -1447,6 +1420,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1447
1420
  handleTaskDoubleClick(args: SchedulerTaskMouseEvent): void;
1448
1421
  setDate(newDate: Date, event: any): void;
1449
1422
  updatePassedState(newViewName: string): void;
1423
+ calculateMedia(): void;
1450
1424
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("datachange" | "itemclick" | "viewchange" | "datechange" | "itemdoubleclick" | "slotclick" | "slotdoubleclick" | "taskclick" | "taskdoubleclick")[], "datachange" | "itemclick" | "viewchange" | "datechange" | "itemdoubleclick" | "slotclick" | "slotdoubleclick" | "taskclick" | "taskdoubleclick", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
1451
1425
  dataItems: {
1452
1426
  type: PropType<any[]>;
@@ -1501,6 +1475,10 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1501
1475
  formProps: PropType<any>;
1502
1476
  dateHeaderCell: PropType<any>;
1503
1477
  timeHeaderCell: PropType<any>;
1478
+ adaptive: {
1479
+ type: PropType<boolean>;
1480
+ default: boolean;
1481
+ };
1504
1482
  }>> & Readonly<{
1505
1483
  onDatachange?: (...args: any[]) => any;
1506
1484
  onItemclick?: (...args: any[]) => any;
@@ -1515,6 +1493,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1515
1493
  validator: Function;
1516
1494
  tabIndex: number;
1517
1495
  height: string | number;
1496
+ adaptive: boolean;
1518
1497
  dataItems: any[];
1519
1498
  views: SchedulerViewProps[];
1520
1499
  editable: boolean | EditableProp;
@@ -1522,6 +1501,7 @@ declare const Scheduler: import('vue').DefineComponent<import('vue').ExtractProp
1522
1501
  defaultDate: Date;
1523
1502
  }, {}, {}, {}, string, () => {
1524
1503
  ks: any;
1504
+ ksMobile: () => any;
1525
1505
  setActiveViewName: any;
1526
1506
  setActiveDate: any;
1527
1507
  itemDoubleClick: any;
package/Scheduler.js CHANGED
@@ -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 n=require("vue"),t=require("./utils/main.js"),r=require("@progress/kendo-vue-common"),P=require("./components/header/SchedulerHeader.js"),g=require("@progress/kendo-vue-intl"),x=require("./components/header/navigation/SchedulerNavigation.js"),h=require("@progress/kendo-date-math"),O=require("./components/footer/SchedulerFooter.js"),E=require("@progress/kendo-vue-buttons"),A=require("./components/header/navigation/NavigationDatePicker.js"),M=require("./components/header/view-selector/ViewSelectorList.js"),T=require("./components/footer/bussiness-hours/BusinessHours.js"),m=require("./package-metadata.js"),H=require("./views/agenda/AgendaView.js"),W=require("./views/time/TimelineView.js"),u=require("./views/day/DayView.js"),q=require("./views/week/WeekView.js"),j=require("./views/week/WorkWeekView.js"),z=require("./views/month/MonthView.js"),k=require("./constants/main.js"),L=require("./hooks/useEditable.js"),f="{0:D}",w="{0:d}",B=n.defineComponent({name:"KendoScheduler",emits:["datechange","viewchange","datachange","itemclick","itemdoubleclick","slotclick","slotdoubleclick","taskclick","taskdoubleclick"],props:{dataItems:{type:Array,default:function(){return[]}},views:{type:Array,default:function(){return[]}},view:String,defaultView:String,date:Date,rtl:Boolean,height:{type:[Number,String],default:600},timezone:String,group:Object,resources:[Object,Array],modelFields:Object,tabIndex:{type:Number,default:-1},editable:{type:[Boolean,Object],default:!1},defaultDate:{type:Date,default:function(){return new Date}},validator:{type:Function,default:()=>({})},modifyInitialFormValues:{type:Function,default:e=>e},header:[String,Function,Object],footer:[String,Function,Object],slotRender:[String,Function,Object],viewSlot:[String,Function,Object],item:[String,Function,Object],viewItem:[String,Function,Object],task:[String,Function,Object],form:[String,Function,Object],resizeHint:[String,Function,Object],dialogProps:Object,formProps:Object,dateHeaderCell:[String,Function,Object],timeHeaderCell:[String,Function,Object]},computed:{isRtl(){return this.$props.rtl!==void 0?this.$props.rtl:this.currentRtl},wrapperClassName(){return{"k-rtl":this.isRtl,"k-scheduler":!0}},fields(){return t.getModelFields(this.$props.modelFields).fields}},mounted(){this.currentRtl=r.isRtl(this.$el)},provide(){return{ks:this.ks,setActiveViewName:this.handleActiveViewNameChange,setActiveDate:this.handleDateChange,itemDoubleClick:this.handleItemDoubleClick,itemClick:this.handleItemClick,slotDoubleClick:this.handleSlotDoubleClick,slotClick:this.handleSlotClick,taskDoubleClick:this.handleTaskDoubleClick,taskClick:this.handleTaskClick,ksValidator:this.validator,ksModifyInitialFormValues:this.modifyInitialFormValues}},inject:{kendoLocalizationService:{default:null},kendoIntlService:{default:null}},data(){const e=g.provideIntlService(this),s=this.$props.date||this.$props.defaultDate,a=this.$props.view||this.$props.defaultView||this.views[0]&&this.views[0].name||"day",i=this.views.find(c=>c.name===a)||this.views[0]||n.createVNode(u.DayView,null,null),l=this.getViewPropValue(i,"selectedDateFormat",a)||f,o=this.getViewPropValue(i,"selectedShortDateFormat",a)||w,d=this.getViewComponentByName(a).props.dateRange.default()({intl:e,date:s,timezone:this.$props.timezone,numberOfDays:this.getViewPropValue(i,"numberOfDays",a),workWeekStart:this.getViewPropValue(i,"workWeekStart",a)||e.firstDay(),workWeekEnd:this.getViewPropValue(i,"workWeekEnd",a)||(e.firstDay()+this.getViewPropValue(i,"numberOfDays",a))%6});return{ks:{activeViewName:a,currentDate:s,showWorkHours:i.showWorkHours!==void 0?i.showWorkHours:!0,timezone:this.$props.timezone,props:{...this.$props},views:this.views,view:i,fields:t.getModelFields(this.$props.modelFields).fields,groups:t.toSchedulerGroups(this.$props.group,this.$props.resources),dateRange:d,orientation:this.$props.group&&this.$props.group.orientation?this.$props.group.orientation:"horizontal",dateFormat:l,shortDateFormat:o,scheduler:this,dataItems:this.dataItems}}},watch:{isRtl(e){this.ks.isRtl=e},view(e){this.updatePassedState(e)},date(e){this.ks.currentDate=e,this.updatePassedState()},timezone(e){this.ks.timezone=e,this.updatePassedState()},dataItems(e){this.ks.dataItems=e}},render(){r.validatePackage(m.packageMetadata),this.showLicenseWatermark=r.shouldShowValidationUI(m.packageMetadata),this.licenseMessage=r.getLicenseMessage(m.packageMetadata);const e=this.views.find(N=>N.name===this.ks.activeViewName)||this.views[0]||n.createVNode(u.DayView,null,null),s=this.getViewPropValue(this.ks.view,"slotDuration",this.ks.activeViewName),a=r.templateRendering.call(this,e.header||this.$props.header,r.getListeners.call(this)),i=r.templateRendering.call(this,e.footer||this.$props.footer,r.getListeners.call(this)),l=r.templateRendering.call(this,e.slot||this.$props.slotRender,{}),o=r.templateRendering.call(this,e.viewSlot||this.$props.viewSlot,{}),d=r.templateRendering.call(this,e.item||this.$props.item,{}),c=r.templateRendering.call(this,e.viewItem||this.$props.viewItem,{}),p=r.templateRendering.call(this,e.task||this.$props.task,{}),V=r.templateRendering.call(this,e.dateHeaderCell||this.$props.dateHeaderCell,{}),D=r.templateRendering.call(this,e.timeHeaderCell||this.$props.timeHeaderCell,{}),v=r.templateRendering.call(this,e.resizeHint||this.$props.resizeHint,{});this.ks.form=r.templateRendering.call(this,e.form||this.$props.form,{}),this.ks.dialogProps=e.dialogProps||this.$props.dialogProps,this.ks.formProps=e.formProps||this.$props.formProps;const F=L.useEditable(e.editable!==void 0?e.editable:this.$props.editable),C=this.getViewComponentByName(this.ks.activeViewName||e.name),S={...this.$props,...this.ks.view,showWorkHours:this.ks.showWorkHours,dataItems:void 0,views:void 0,defaultDate:void 0,dateRange:this.ks.dateRange,slotRender:l,viewSlot:o,item:d,viewItem:c,task:p,dateHeaderCell:V,timeHeaderCell:D,resizeHint:v,editable:F},b=n.createVNode(P.SchedulerHeader,null,{default:()=>[n.createVNode(x.SchedulerNavigation,{isRtl:this.isRtl,onPrevclick:this.handlePrevClick,onNextclick:this.handleNextClick,onTodayclick:this.handleTodayClick},null),n.createVNode(A.NavigationDatePicker,{value:this.ks.currentDate,onChange:this.handleDatePickerChange},null),n.createVNode(E.ToolbarSpacer,null,null),n.createVNode(M.ViewSelectorList,null,null)]}),I=r.getTemplate.call(this,{h:n.h,template:a,defaultRendering:b,additionalProps:{currentDate:this.ks.currentDate},additionalListeners:{prevclick:this.handlePrevClick,nextclick:this.handleNextClick,todayclick:this.handleTodayClick,datepickerchange:this.handleDatePickerChange}}),R=n.createVNode(O.SchedulerFooter,null,{default:()=>[n.createVNode(T.BusinessHours,{slotDuration:s,onClick:this.handleShowWorkHoursClick},null)]}),y=r.getTemplate.call(this,{h:n.h,template:i,defaultRendering:R,additionalProps:{slotDuration:s},additionalListeners:{showworkhoursclick:this.handleShowWorkHoursClick}}),$=this.showLicenseWatermark?n.createVNode(r.WatermarkOverlay,{message:this.licenseMessage},null):null;return n.createVNode("div",{id:this.$props.id,style:{height:this.$props.height+"px"},class:this.wrapperClassName,tabindex:this.$props.tabIndex,dir:this.isRtl&&"rtl",role:this.$props.role||"application","aria-label":this.$props.ariaLabel,"aria-labelledby":this.$props.ariaLabelledby,onFocusin:this.handleFocus,onFocusout:this.handleBlur},[I,n.h(C,{key:this.ks.view.name,onDataaction:this.handleDataAction,...S}),y,$])},methods:{getViewComponentByName(e){switch(e.toLowerCase()){case"week":return q.WeekView;case"workweek":return j.WorkWeekView;case"agenda":return H.AgendaView;case"timeline":return W.TimelineView;case"month":return z.MonthView;default:return u.DayView}},getViewPropValue(e,s,a){const i=this.getViewComponentByName(a).props[s];return e[s]||(i?i.default:void 0)},handleDataChange({created:e=[],updated:s=[],deleted:a=[]}){const i={created:e,updated:s,deleted:a};this.$emit("datachange",i)},handleCreate(e){const s=[e.dataItem];this.handleDataChange({created:s})},handleUpdate(e){const s=[],a=[];if(e.series)if(Array.isArray(e.dataItem))e.dataItem.map(i=>{const l=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),o=r.clone(i);t.setField(o,this.fields.originalStart,t.getField(l,this.fields.originalStart)),t.setField(o,this.fields.recurrenceId,t.getField(l,this.fields.recurrenceId)),t.setField(o,this.fields.recurrenceExceptions,t.getField(l,this.fields.recurrenceExceptions)),a.push(o)});else{const i=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),l=r.clone(e.dataItem);t.setField(l,this.fields.originalStart,t.getField(i,this.fields.originalStart)),t.setField(l,this.fields.recurrenceId,t.getField(i,this.fields.recurrenceId)),t.setField(l,this.fields.recurrenceExceptions,t.getField(i,this.fields.recurrenceExceptions)),a.push(l)}else if(Array.isArray(e.dataItem))e.dataItem.map(i=>{const l=t.getField(i,this.fields.recurrenceRule)!==null&&t.getField(i,this.fields.recurrenceRule)!==void 0;if(t.getField(i,this.fields.recurrenceId)!==null&&t.getField(i,this.fields.recurrenceId)!==void 0&&l){const d=r.clone(t.findMaster(i,this.fields,this.dataItems)),c=t.getField(i,this.fields.originalStart),p=t.getField(d,this.fields.recurrenceExceptions)||[];t.setField(d,this.fields.recurrenceExceptions,[...p,c]),t.setField(i,this.fields.recurrenceRule,null),a.push(d),s.push(i)}else a.push(i)});else{const i=t.getField(e.dataItem,this.fields.recurrenceRule)!==null&&t.getField(e.dataItem,this.fields.recurrenceRule)!==void 0;if(t.getField(e.dataItem,this.fields.recurrenceId)!==null&&t.getField(e.dataItem,this.fields.recurrenceId)!==void 0&&i){const o=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),d=t.getField(e.dataItem,this.fields.originalStart),c=t.getField(o,this.fields.recurrenceExceptions)||[];t.setField(o,this.fields.recurrenceExceptions,[...c,d]),t.setField(e.dataItem,this.fields.recurrenceRule,null),a.push(o),s.push(e.dataItem)}else a.push(e.dataItem)}this.handleDataChange({updated:a,created:s})},handleRemove(e){const s=[],a=[];if(e.series){const i=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),l=r.clone(e.dataItem);t.setField(l,this.fields.originalStart,t.getField(i,this.fields.originalStart)),t.setField(l,this.fields.recurrenceId,t.getField(i,this.fields.recurrenceId)),t.setField(l,this.fields.recurrenceRule,t.getField(i,this.fields.recurrenceRule)),t.setField(l,this.fields.recurrenceExceptions,t.getField(i,this.fields.recurrenceExceptions)),a.push(l)}else if(!(t.getField(e.dataItem,this.fields.recurrenceRule)!==null&&t.getField(e.dataItem,this.fields.recurrenceRule)!==void 0))a.push(e.dataItem);else{const l=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),o=t.getField(e.dataItem,this.fields.originalStart),d=t.getField(l,this.fields.recurrenceExceptions)||[];t.setField(l,this.fields.recurrenceExceptions,[...d,o]),t.setField(e.dataItem,this.fields.recurrenceRule,null),s.push(l)}this.handleDataChange({updated:s,deleted:a})},handleDataAction(e){switch(e.type){case k.DATA_ACTION.create:this.handleCreate(e);break;case k.DATA_ACTION.update:this.handleUpdate(e);break;case k.DATA_ACTION.remove:this.handleRemove(e);break}},handleActiveViewNameChange(e,s){this.updatePassedState(e),this.$emit("viewchange",{viewName:e,...s,target:this.ks.scheduler.$el})},handleDateChange(e,s){this.setDate(e,{...s,target:this.ks.scheduler.$el})},handleDatePickerChange(e){e.value&&this.setDate(e.value,{...e,target:this.ks.scheduler.$el,nativeEvent:e.event})},handleNextClick(e){e.preventDefault();const s=this.getViewPropValue(this.ks.view,"step",this.ks.activeViewName)||this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName)||1,i=s>27?h.addMonths(this.ks.currentDate,Math.round(s/27)):h.addDays(this.ks.currentDate,s);this.setDate(i,e)},handlePrevClick(e){e.preventDefault();const s=this.getViewPropValue(this.ks.view,"step",this.ks.activeViewName)||this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName)||1,i=s>27?h.addMonths(this.ks.currentDate,-Math.round(s/27)):h.addDays(this.ks.currentDate,-s);this.setDate(i,e)},handleTodayClick(e){e.preventDefault();const s=t.getToday();this.setDate(s,e)},handleShowWorkHoursClick(){this.ks.showWorkHours=!this.ks.showWorkHours},handleFocus(){this.$el&&(this.$el.style.boxShadow="0 0.5px 0.5px 0.5px rgba(0, 0, 0, .12)")},handleBlur(){this.$el&&(this.$el.style.boxShadow="")},handleItemClick(e){this.$emit("itemclick",e)},handleItemDoubleClick(e){this.$emit("itemdoubleclick",e)},handleSlotClick(e){this.$emit("slotclick",e)},handleSlotDoubleClick(e){this.$emit("slotdoubleclick",e)},handleTaskClick(e){this.$emit("taskclick",e)},handleTaskDoubleClick(e){this.$emit("taskdoubleclick",e)},setDate(e,s){this.ks.currentDate=e,this.updatePassedState(),this.$emit("datechange",{date:e,event:s})},updatePassedState(e){const s=g.provideIntlService(this),a=e||this.ks.activeViewName;this.ks.activeViewName=a,this.ks.view=this.views.find(i=>i.name===a)||this.views[0]||n.createVNode(u.DayView,null,null),this.ks.dateFormat=this.getViewPropValue(this.ks.view,"selectedDateFormat",a)||f,this.ks.shortDateFormat=this.getViewPropValue(this.ks.view,"selectedShortDateFormat",a)||w,this.ks.dateRange=this.getViewComponentByName(a).props.dateRange.default()({intl:s,date:this.ks.currentDate,timezone:this.$props.timezone,numberOfDays:this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName),workWeekStart:this.getViewPropValue(this.ks.view,"workWeekStart",this.ks.activeViewName)||s.firstDay(),workWeekEnd:this.getViewPropValue(this.ks.view,"workWeekEnd",this.ks.activeViewName)||(s.firstDay()+this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName))%6})}}});exports.Scheduler=B;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue"),t=require("./utils/main.js"),r=require("@progress/kendo-vue-common"),x=require("./components/header/SchedulerHeader.js"),A=require("./components/header/SchedulerAdaptiveHeader.js"),k=require("@progress/kendo-vue-intl"),E=require("./components/header/navigation/SchedulerNavigation.js"),h=require("@progress/kendo-date-math"),T=require("./components/footer/SchedulerFooter.js"),g=require("@progress/kendo-vue-buttons"),H=require("./components/header/navigation/NavigationDatePicker.js"),W=require("./components/header/view-selector/ViewSelectorList.js"),z=require("./components/footer/bussiness-hours/BusinessHours.js"),w=require("./messages/main.js"),f=require("./package-metadata.js"),q=require("./views/agenda/AgendaView.js"),j=require("./views/time/TimelineView.js"),u=require("./views/day/DayView.js"),L=require("./views/week/WeekView.js"),B=require("./views/week/WorkWeekView.js"),_=require("./views/month/MonthView.js"),v=require("./constants/main.js"),U=require("./hooks/useEditable.js");function G(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!n.isVNode(e)}const V="{0:D}",D="{0:d}",K=n.defineComponent({name:"KendoScheduler",emits:["datechange","viewchange","datachange","itemclick","itemdoubleclick","slotclick","slotdoubleclick","taskclick","taskdoubleclick"],props:{dataItems:{type:Array,default:function(){return[]}},views:{type:Array,default:function(){return[]}},view:String,defaultView:String,date:Date,rtl:Boolean,height:{type:[Number,String],default:600},timezone:String,group:Object,resources:[Object,Array],modelFields:Object,tabIndex:{type:Number,default:-1},editable:{type:[Boolean,Object],default:!1},defaultDate:{type:Date,default:function(){return new Date}},validator:{type:Function,default:()=>({})},modifyInitialFormValues:{type:Function,default:e=>e},header:[String,Function,Object],footer:[String,Function,Object],slotRender:[String,Function,Object],viewSlot:[String,Function,Object],item:[String,Function,Object],viewItem:[String,Function,Object],task:[String,Function,Object],form:[String,Function,Object],resizeHint:[String,Function,Object],dialogProps:Object,formProps:Object,dateHeaderCell:[String,Function,Object],timeHeaderCell:[String,Function,Object],adaptive:{type:Boolean,default:!1}},computed:{isRtl(){return this.$props.rtl!==void 0?this.$props.rtl:this.currentRtl},isMobile(){return this.$props.adaptive&&this.media==="mobile"},wrapperClassName(){return{"k-rtl":this.isRtl,"k-scheduler":!0,"k-scheduler-mobile":this.isMobile}},fields(){return t.getModelFields(this.$props.modelFields).fields}},mounted(){this.currentRtl=r.isRtl(this.$el),this.calculateMedia(),this.$props.adaptive&&r.canUseDOM&&window.ResizeObserver&&(this.resizeObserver=new window.ResizeObserver(this.calculateMedia),this.resizeObserver.observe(this.$el))},unmounted(){this.resizeObserver&&this.resizeObserver.disconnect()},provide(){return{ks:this.ks,ksMobile:()=>this.isMobile,setActiveViewName:this.handleActiveViewNameChange,setActiveDate:this.handleDateChange,itemDoubleClick:this.handleItemDoubleClick,itemClick:this.handleItemClick,slotDoubleClick:this.handleSlotDoubleClick,slotClick:this.handleSlotClick,taskDoubleClick:this.handleTaskDoubleClick,taskClick:this.handleTaskClick,ksValidator:this.validator,ksModifyInitialFormValues:this.modifyInitialFormValues}},inject:{kendoLocalizationService:{default:null},kendoIntlService:{default:null}},data(){const e=k.provideIntlService(this),s=this.$props.date||this.$props.defaultDate,a=this.$props.view||this.$props.defaultView||this.views[0]&&this.views[0].name||"day",i=this.views.find(c=>c.name===a)||this.views[0]||n.createVNode(u.DayView,null,null),l=this.getViewPropValue(i,"selectedDateFormat",a)||V,o=this.getViewPropValue(i,"selectedShortDateFormat",a)||D,d=this.getViewComponentByName(a).props.dateRange.default()({intl:e,date:s,timezone:this.$props.timezone,numberOfDays:this.getViewPropValue(i,"numberOfDays",a),workWeekStart:this.getViewPropValue(i,"workWeekStart",a)||e.firstDay(),workWeekEnd:this.getViewPropValue(i,"workWeekEnd",a)||(e.firstDay()+this.getViewPropValue(i,"numberOfDays",a))%6});return{media:"desktop",ks:{activeViewName:a,currentDate:s,showWorkHours:i.showWorkHours!==void 0?i.showWorkHours:!0,timezone:this.$props.timezone,props:{...this.$props},views:this.views,view:i,fields:t.getModelFields(this.$props.modelFields).fields,groups:t.toSchedulerGroups(this.$props.group,this.$props.resources),dateRange:d,orientation:this.$props.group&&this.$props.group.orientation?this.$props.group.orientation:"horizontal",dateFormat:l,shortDateFormat:o,scheduler:this,dataItems:this.dataItems}}},watch:{isRtl(e){this.ks.isRtl=e},view(e){this.updatePassedState(e)},date(e){this.ks.currentDate=e,this.updatePassedState()},timezone(e){this.ks.timezone=e,this.updatePassedState()},dataItems(e){this.ks.dataItems=e}},render(){r.validatePackage(f.packageMetadata),this.showLicenseWatermark=r.shouldShowValidationUI(f.packageMetadata),this.licenseMessage=r.getLicenseMessage(f.packageMetadata);const e=this.views.find(O=>O.name===this.ks.activeViewName)||this.views[0]||n.createVNode(u.DayView,null,null),s=this.getViewPropValue(this.ks.view,"slotDuration",this.ks.activeViewName),a=r.templateRendering.call(this,e.header||this.$props.header,r.getListeners.call(this)),i=r.templateRendering.call(this,e.footer||this.$props.footer,r.getListeners.call(this)),l=r.templateRendering.call(this,e.slot||this.$props.slotRender,{}),o=r.templateRendering.call(this,e.viewSlot||this.$props.viewSlot,{}),d=r.templateRendering.call(this,e.item||this.$props.item,{}),c=r.templateRendering.call(this,e.viewItem||this.$props.viewItem,{}),p=r.templateRendering.call(this,e.task||this.$props.task,{}),b=r.templateRendering.call(this,e.dateHeaderCell||this.$props.dateHeaderCell,{}),F=r.templateRendering.call(this,e.timeHeaderCell||this.$props.timeHeaderCell,{}),S=r.templateRendering.call(this,e.resizeHint||this.$props.resizeHint,{});this.ks.form=r.templateRendering.call(this,e.form||this.$props.form,{}),this.ks.dialogProps=e.dialogProps||this.$props.dialogProps,this.ks.formProps=e.formProps||this.$props.formProps;const C=U.useEditable(e.editable!==void 0?e.editable:this.$props.editable),y=this.getViewComponentByName(this.ks.activeViewName||e.name),I={...this.$props,...this.ks.view,showWorkHours:this.ks.showWorkHours,dataItems:void 0,views:void 0,defaultDate:void 0,dateRange:this.ks.dateRange,slotRender:l,viewSlot:o,item:d,viewItem:c,task:p,dateHeaderCell:b,timeHeaderCell:F,resizeHint:S,editable:C},R=this.isMobile?n.createVNode(A.SchedulerAdaptiveHeader,{isRtl:this.isRtl,onPrevclick:this.handlePrevClick,onNextclick:this.handleNextClick},null):n.createVNode(x.SchedulerHeader,null,{default:()=>[n.createVNode(E.SchedulerNavigation,{isRtl:this.isRtl,onPrevclick:this.handlePrevClick,onNextclick:this.handleNextClick,onTodayclick:this.handleTodayClick},null),n.createVNode(H.NavigationDatePicker,{value:this.ks.currentDate,onChange:this.handleDatePickerChange},null),n.createVNode(g.ToolbarSpacer,null,null),n.createVNode(W.ViewSelectorList,null,null)]}),$=r.getTemplate.call(this,{h:n.h,template:a,defaultRendering:R,additionalProps:{currentDate:this.ks.currentDate},additionalListeners:{prevclick:this.handlePrevClick,nextclick:this.handleNextClick,todayclick:this.handleTodayClick,datepickerchange:this.handleDatePickerChange}}),m=k.provideLocalizationService(this).toLanguageString(w.today,w.messages[w.today]),N=n.createVNode(T.SchedulerFooter,null,{default:()=>[this.isMobile&&n.createVNode(g.Button,{class:"k-scheduler-today",tabIndex:-1,onClick:this.handleTodayClick},G(m)?m:{default:()=>[m]}),this.isMobile&&n.createVNode(g.ToolbarSpacer,null,null),n.createVNode(z.BusinessHours,{slotDuration:s,onClick:this.handleShowWorkHoursClick},null)]}),P=r.getTemplate.call(this,{h:n.h,template:i,defaultRendering:N,additionalProps:{slotDuration:s},additionalListeners:{showworkhoursclick:this.handleShowWorkHoursClick}}),M=this.showLicenseWatermark?n.createVNode(r.WatermarkOverlay,{message:this.licenseMessage},null):null;return n.createVNode("div",{id:this.$props.id,style:{height:this.$props.height+"px"},class:this.wrapperClassName,tabindex:this.$props.tabIndex,dir:this.isRtl&&"rtl",role:this.$props.role||"application","aria-label":this.$props.ariaLabel,"aria-labelledby":this.$props.ariaLabelledby,onFocusin:this.handleFocus,onFocusout:this.handleBlur},[$,n.h(y,{key:this.ks.view.name,onDataaction:this.handleDataAction,...I}),P,M])},methods:{getViewComponentByName(e){switch(e.toLowerCase()){case"week":return L.WeekView;case"workweek":return B.WorkWeekView;case"agenda":return q.AgendaView;case"timeline":return j.TimelineView;case"month":return _.MonthView;default:return u.DayView}},getViewPropValue(e,s,a){const i=this.getViewComponentByName(a).props[s];return e[s]||(i?i.default:void 0)},handleDataChange({created:e=[],updated:s=[],deleted:a=[]}){const i={created:e,updated:s,deleted:a};this.$emit("datachange",i)},handleCreate(e){const s=[e.dataItem];this.handleDataChange({created:s})},handleUpdate(e){const s=[],a=[];if(e.series)if(Array.isArray(e.dataItem))e.dataItem.map(i=>{const l=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),o=r.clone(i);t.setField(o,this.fields.originalStart,t.getField(l,this.fields.originalStart)),t.setField(o,this.fields.recurrenceId,t.getField(l,this.fields.recurrenceId)),t.setField(o,this.fields.recurrenceExceptions,t.getField(l,this.fields.recurrenceExceptions)),a.push(o)});else{const i=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),l=r.clone(e.dataItem);t.setField(l,this.fields.originalStart,t.getField(i,this.fields.originalStart)),t.setField(l,this.fields.recurrenceId,t.getField(i,this.fields.recurrenceId)),t.setField(l,this.fields.recurrenceExceptions,t.getField(i,this.fields.recurrenceExceptions)),a.push(l)}else if(Array.isArray(e.dataItem))e.dataItem.map(i=>{const l=t.getField(i,this.fields.recurrenceRule)!==null&&t.getField(i,this.fields.recurrenceRule)!==void 0;if(t.getField(i,this.fields.recurrenceId)!==null&&t.getField(i,this.fields.recurrenceId)!==void 0&&l){const d=r.clone(t.findMaster(i,this.fields,this.dataItems)),c=t.getField(i,this.fields.originalStart),p=t.getField(d,this.fields.recurrenceExceptions)||[];t.setField(d,this.fields.recurrenceExceptions,[...p,c]),t.setField(i,this.fields.recurrenceRule,null),a.push(d),s.push(i)}else a.push(i)});else{const i=t.getField(e.dataItem,this.fields.recurrenceRule)!==null&&t.getField(e.dataItem,this.fields.recurrenceRule)!==void 0;if(t.getField(e.dataItem,this.fields.recurrenceId)!==null&&t.getField(e.dataItem,this.fields.recurrenceId)!==void 0&&i){const o=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),d=t.getField(e.dataItem,this.fields.originalStart),c=t.getField(o,this.fields.recurrenceExceptions)||[];t.setField(o,this.fields.recurrenceExceptions,[...c,d]),t.setField(e.dataItem,this.fields.recurrenceRule,null),a.push(o),s.push(e.dataItem)}else a.push(e.dataItem)}this.handleDataChange({updated:a,created:s})},handleRemove(e){const s=[],a=[];if(e.series){const i=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),l=r.clone(e.dataItem);t.setField(l,this.fields.originalStart,t.getField(i,this.fields.originalStart)),t.setField(l,this.fields.recurrenceId,t.getField(i,this.fields.recurrenceId)),t.setField(l,this.fields.recurrenceRule,t.getField(i,this.fields.recurrenceRule)),t.setField(l,this.fields.recurrenceExceptions,t.getField(i,this.fields.recurrenceExceptions)),a.push(l)}else if(!(t.getField(e.dataItem,this.fields.recurrenceRule)!==null&&t.getField(e.dataItem,this.fields.recurrenceRule)!==void 0))a.push(e.dataItem);else{const l=r.clone(t.findMaster(e.dataItem,this.fields,this.dataItems)),o=t.getField(e.dataItem,this.fields.originalStart),d=t.getField(l,this.fields.recurrenceExceptions)||[];t.setField(l,this.fields.recurrenceExceptions,[...d,o]),t.setField(e.dataItem,this.fields.recurrenceRule,null),s.push(l)}this.handleDataChange({updated:s,deleted:a})},handleDataAction(e){switch(e.type){case v.DATA_ACTION.create:this.handleCreate(e);break;case v.DATA_ACTION.update:this.handleUpdate(e);break;case v.DATA_ACTION.remove:this.handleRemove(e);break}},handleActiveViewNameChange(e,s){this.updatePassedState(e),this.$emit("viewchange",{viewName:e,...s,target:this.ks.scheduler.$el})},handleDateChange(e,s){this.setDate(e,{...s,target:this.ks.scheduler.$el})},handleDatePickerChange(e){e.value&&this.setDate(e.value,{...e,target:this.ks.scheduler.$el,nativeEvent:e.event})},handleNextClick(e){e.preventDefault();const s=this.getViewPropValue(this.ks.view,"step",this.ks.activeViewName)||this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName)||1,i=s>27?h.addMonths(this.ks.currentDate,Math.round(s/27)):h.addDays(this.ks.currentDate,s);this.setDate(i,e)},handlePrevClick(e){e.preventDefault();const s=this.getViewPropValue(this.ks.view,"step",this.ks.activeViewName)||this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName)||1,i=s>27?h.addMonths(this.ks.currentDate,-Math.round(s/27)):h.addDays(this.ks.currentDate,-s);this.setDate(i,e)},handleTodayClick(e){e.preventDefault();const s=t.getToday();this.setDate(s,e)},handleShowWorkHoursClick(){this.ks.showWorkHours=!this.ks.showWorkHours},handleFocus(){this.$el&&(this.$el.style.boxShadow="0 0.5px 0.5px 0.5px rgba(0, 0, 0, .12)")},handleBlur(){this.$el&&(this.$el.style.boxShadow="")},handleItemClick(e){this.$emit("itemclick",e)},handleItemDoubleClick(e){this.$emit("itemdoubleclick",e)},handleSlotClick(e){this.$emit("slotclick",e)},handleSlotDoubleClick(e){this.$emit("slotdoubleclick",e)},handleTaskClick(e){this.$emit("taskclick",e)},handleTaskDoubleClick(e){this.$emit("taskdoubleclick",e)},setDate(e,s){this.ks.currentDate=e,this.updatePassedState(),this.$emit("datechange",{date:e,event:s})},updatePassedState(e){const s=k.provideIntlService(this),a=e||this.ks.activeViewName;this.ks.activeViewName=a,this.ks.view=this.views.find(i=>i.name===a)||this.views[0]||n.createVNode(u.DayView,null,null),this.ks.dateFormat=this.getViewPropValue(this.ks.view,"selectedDateFormat",a)||V,this.ks.shortDateFormat=this.getViewPropValue(this.ks.view,"selectedShortDateFormat",a)||D,this.ks.dateRange=this.getViewComponentByName(a).props.dateRange.default()({intl:s,date:this.ks.currentDate,timezone:this.$props.timezone,numberOfDays:this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName),workWeekStart:this.getViewPropValue(this.ks.view,"workWeekStart",this.ks.activeViewName)||s.firstDay(),workWeekEnd:this.getViewPropValue(this.ks.view,"workWeekEnd",this.ks.activeViewName)||(s.firstDay()+this.getViewPropValue(this.ks.view,"numberOfDays",this.ks.activeViewName))%6})},calculateMedia(){r.canUseDOM&&window.matchMedia&&(this.media=window.matchMedia("(min-width: 1024px)").matches?"desktop":"mobile")}}});exports.Scheduler=K;