@progress/kendo-angular-scheduler 2.2.0-dev.202111260859 → 3.0.1-dev.202202071010

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/cdn/js/kendo-angular-scheduler.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/editing/date-time-picker.component.js +2 -1
  4. package/dist/es/editing/edit-dialog.component.js +1 -1
  5. package/dist/es/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  6. package/dist/es/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
  7. package/dist/es/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  8. package/dist/es/events/slot-drag-end-event.js +17 -0
  9. package/dist/es/events/slot-drag-event.js +18 -0
  10. package/dist/es/events/slot-drag-start-event.js +24 -0
  11. package/dist/es/events.js +3 -0
  12. package/dist/es/index.js +1 -0
  13. package/dist/es/package-metadata.js +1 -1
  14. package/dist/es/scheduler.component.js +73 -1
  15. package/dist/es/scheduler.module.js +5 -1
  16. package/dist/es/toolbar/view-selector.component.js +1 -1
  17. package/dist/es/types/slot-selection.js +23 -0
  18. package/dist/es/types.js +1 -0
  19. package/dist/es/views/common/base-view.js +103 -8
  20. package/dist/es/views/common/slot-selectable.directive.js +117 -0
  21. package/dist/es/views/common/view-footer.component.js +1 -1
  22. package/dist/es/views/common/views-shared.module.js +2 -1
  23. package/dist/es/views/day-time/day-time-view.component.js +1 -1
  24. package/dist/es/views/day-time/day-time.module.js +2 -1
  25. package/dist/es/views/month/month-view-renderer.component.js +9 -5
  26. package/dist/es/views/multi-day/multi-day-view-renderer.component.js +3 -3
  27. package/dist/es/views/timeline/timeline-multi-day-view.component.js +1 -1
  28. package/dist/es/views/utils.js +49 -0
  29. package/dist/es/views/view-state.service.js +18 -0
  30. package/dist/es2015/editing/date-time-picker.component.js +7 -1
  31. package/dist/es2015/editing/edit-dialog.component.js +7 -7
  32. package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.d.ts +1 -0
  33. package/dist/es2015/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  34. package/dist/es2015/editing/recurrence/recurrence-monthly-yearly-editor.component.js +14 -5
  35. package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.d.ts +1 -0
  36. package/dist/es2015/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  37. package/dist/es2015/events/slot-drag-end-event.d.ts +10 -0
  38. package/dist/es2015/events/slot-drag-end-event.js +10 -0
  39. package/dist/es2015/events/slot-drag-event.d.ts +39 -0
  40. package/dist/es2015/events/slot-drag-event.js +16 -0
  41. package/dist/es2015/events/slot-drag-start-event.d.ts +41 -0
  42. package/dist/es2015/events/slot-drag-start-event.js +19 -0
  43. package/dist/es2015/events.d.ts +3 -0
  44. package/dist/es2015/events.js +3 -0
  45. package/dist/es2015/index.d.ts +2 -0
  46. package/dist/es2015/index.js +1 -0
  47. package/dist/es2015/index.metadata.json +1 -1
  48. package/dist/es2015/package-metadata.js +1 -1
  49. package/dist/es2015/scheduler.component.d.ts +27 -0
  50. package/dist/es2015/scheduler.component.js +73 -1
  51. package/dist/es2015/scheduler.module.js +5 -1
  52. package/dist/es2015/toolbar/view-selector.component.js +1 -1
  53. package/dist/es2015/types/datepicker-options.interface.d.ts +5 -5
  54. package/dist/es2015/types/slot-selection.d.ts +71 -0
  55. package/dist/es2015/types/slot-selection.js +19 -0
  56. package/dist/es2015/types.d.ts +2 -0
  57. package/dist/es2015/types.js +1 -0
  58. package/dist/es2015/views/common/base-view.d.ts +26 -5
  59. package/dist/es2015/views/common/base-view.js +103 -8
  60. package/dist/es2015/views/common/slot-selectable.directive.d.ts +45 -0
  61. package/dist/es2015/views/common/slot-selectable.directive.js +112 -0
  62. package/dist/es2015/views/common/view-footer.component.js +1 -1
  63. package/dist/es2015/views/common/views-shared.module.js +2 -1
  64. package/dist/es2015/views/day-time/day-time-view.component.js +1 -1
  65. package/dist/es2015/views/day-time/day-time.module.js +2 -1
  66. package/dist/es2015/views/month/month-view-renderer.component.d.ts +3 -2
  67. package/dist/es2015/views/month/month-view-renderer.component.js +17 -7
  68. package/dist/es2015/views/multi-day/multi-day-view-renderer.component.d.ts +1 -1
  69. package/dist/es2015/views/multi-day/multi-day-view-renderer.component.js +22 -4
  70. package/dist/es2015/views/timeline/timeline-multi-day-view.component.js +8 -1
  71. package/dist/es2015/views/utils.d.ts +29 -0
  72. package/dist/es2015/views/utils.js +49 -0
  73. package/dist/es2015/views/view-state.service.d.ts +24 -1
  74. package/dist/es2015/views/view-state.service.js +18 -0
  75. package/dist/fesm2015/index.js +1674 -1231
  76. package/dist/fesm5/index.js +1803 -1388
  77. package/dist/npm/editing/date-time-picker.component.js +2 -1
  78. package/dist/npm/editing/edit-dialog.component.js +1 -1
  79. package/dist/npm/editing/recurrence/end-rule-radio-button.directive.js +5 -0
  80. package/dist/npm/editing/recurrence/recurrence-monthly-yearly-editor.component.js +1 -1
  81. package/dist/npm/editing/recurrence/repeat-on-radio-button.directive.js +5 -0
  82. package/dist/npm/events/slot-drag-end-event.js +19 -0
  83. package/dist/npm/events/slot-drag-event.js +20 -0
  84. package/dist/npm/events/slot-drag-start-event.js +26 -0
  85. package/dist/npm/events.js +6 -0
  86. package/dist/npm/index.js +2 -0
  87. package/dist/npm/package-metadata.js +1 -1
  88. package/dist/npm/scheduler.component.js +73 -1
  89. package/dist/npm/scheduler.module.js +4 -0
  90. package/dist/npm/toolbar/view-selector.component.js +1 -1
  91. package/dist/npm/types/slot-selection.js +25 -0
  92. package/dist/npm/types.js +2 -0
  93. package/dist/npm/views/common/base-view.js +102 -7
  94. package/dist/npm/views/common/slot-selectable.directive.js +119 -0
  95. package/dist/npm/views/common/view-footer.component.js +1 -1
  96. package/dist/npm/views/common/views-shared.module.js +2 -1
  97. package/dist/npm/views/day-time/day-time-view.component.js +1 -1
  98. package/dist/npm/views/day-time/day-time.module.js +2 -1
  99. package/dist/npm/views/month/month-view-renderer.component.js +8 -4
  100. package/dist/npm/views/multi-day/multi-day-view-renderer.component.js +3 -3
  101. package/dist/npm/views/timeline/timeline-multi-day-view.component.js +1 -1
  102. package/dist/npm/views/utils.js +53 -0
  103. package/dist/npm/views/view-state.service.js +18 -0
  104. package/dist/systemjs/kendo-angular-scheduler.js +1 -1
  105. package/package.json +27 -24
  106. package/schematics/ngAdd/index.js +1 -1
@@ -71,7 +71,8 @@ var SchedulerDateTimePickerComponent = /** @class */ (function () {
71
71
  SCHEDULER_DATETIMEPICKER_VALUE_ACCESSOR
72
72
  ],
73
73
  selector: 'kendo-scheduler-datetime-picker',
74
- template: "\n <kendo-datepicker\n #datepicker\n [(value)]='date'\n (valueChange)='onValueChange($event)'\n ></kendo-datepicker>\n <kendo-timepicker *ngIf='!isAllDay'\n [(value)]='date'\n (valueChange)='onValueChange($event)'\n ></kendo-timepicker>\n "
74
+ template: "\n <kendo-datepicker\n #datepicker\n [(value)]='date'\n (valueChange)='onValueChange($event)'\n ></kendo-datepicker>\n <kendo-timepicker *ngIf='!isAllDay'\n [(value)]='date'\n (valueChange)='onValueChange($event)'\n ></kendo-timepicker>\n ",
75
+ styles: ["\n kendo-datepicker,\n kendo-timepicker {\n width: 170px;\n }\n "]
75
76
  })
76
77
  ], SchedulerDateTimePickerComponent);
77
78
  return SchedulerDateTimePickerComponent;
@@ -284,7 +284,7 @@ var EditDialogComponent = /** @class */ (function () {
284
284
  EditDialogComponent = tslib_1.__decorate([
285
285
  Component({
286
286
  selector: 'kendo-scheduler-edit-dialog',
287
- template: "\n <kendo-dialog (close)='onClose()' [minWidth]='700' *ngIf='isActive' title='{{ textFor(\"editorTitle\") }}' class='k-scheduler-edit-dialog' [autoFocusedElement]=\"autoFocusedElement\">\n <ng-container *ngIf='!editTemplate'>\n <div class='k-scheduler-edit-form'>\n <div class='k-edit-form-container'>\n <form novalidate [formGroup]='formGroup'>\n <div class='k-edit-label'>\n <label for='k-event-title'>{{ textFor('editorEventTitle') }}</label>\n </div>\n <div class='k-edit-field'>\n <input #title id='k-event-title' class='k-textbox' placeholder='Title' [formControl]='formGroup.get(fields.title)' />\n </div>\n\n <div class='k-edit-label'>\n <label (click)=\"startDateTimePicker.focus()\">{{ textFor('editorEventStart') }}</label>\n </div>\n <div class='k-edit-field'>\n <kendo-scheduler-datetime-picker #startDateTimePicker [formControl]='formGroup.get(fields.start)'\n [isAllDay]='getFormValue(fields.isAllDay)?.value'>\n </kendo-scheduler-datetime-picker>\n </div>\n\n <ng-container *ngIf=\"isStartTimeZoneVisible\">\n <div class='k-edit-label'>\n <label (click)=\"startTzPicker.focus()\">{{ textFor('editorEventStartTimeZone') }}</label>\n </div>\n\n <div class='k-edit-field'>\n <kendo-timezone-editor #startTzPicker [formControl]='formGroup.get(fields.startTimezone)'></kendo-timezone-editor>\n </div>\n </ng-container>\n\n <div class='k-edit-label'>\n <label (click)=\"endDateTimePicker.focus()\">{{ textFor('editorEventEnd') }}</label>\n </div>\n <div class='k-edit-field'>\n <kendo-scheduler-datetime-picker #endDateTimePicker [formControl]='formGroup.get(fields.end)'\n [isAllDay]='getFormValue(fields.isAllDay)?.value'>\n </kendo-scheduler-datetime-picker>\n </div>\n\n <ng-container *ngIf=\"isEndTimeZoneVisible\">\n <div class='k-edit-label'>\n <label (click)=\"endTzPicker.focus()\">{{ textFor('editorEventEndTimeZone') }}</label>\n </div>\n\n <div class='k-edit-field'>\n <kendo-timezone-editor #endTzPicker [formControl]='formGroup.get(fields.endTimezone)'></kendo-timezone-editor>\n </div>\n </ng-container>\n\n <div class='k-edit-field' *ngIf=\"hasAllDay\">\n <input type='checkbox' id='k-is-allday-chkbox' class='k-checkbox' [formControl]='formGroup.get(fields.isAllDay)' />\n <label class='k-checkbox-label' for='k-is-allday-chkbox'>{{ textFor('editorEventAllDay') }}</label>\n </div>\n\n <div class='k-edit-field' *ngIf=\"hasStartTimeZone\">\n <input type='checkbox' id='k-set-timezone' class='k-checkbox'\n formControlName='startTimezoneCheckbox' />\n <label class='k-checkbox-label' for='k-set-timezone'>{{ textFor('editorEventTimeZone') }}</label>\n\n <ng-container *ngIf=\"isStartTimeZoneVisible && hasEndTimeZone\">\n <input type='checkbox' id='k-use-separate' class='k-checkbox' formControlName='endTimezoneCheckbox' />\n <label class='k-checkbox-label' for='k-use-separate'>{{ textFor('editorEventSeparateTimeZones') }}</label>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"isEditingSeries\">\n <kendo-recurrence-editor\n [formControl]='formGroup.get(fields.recurrenceRule)'\n [start]='recurrenceStart'\n [timezone]='eventTimezone'\n [weekStart]='weekStart'\n ></kendo-recurrence-editor>\n </ng-container>\n\n <ng-container *ngIf='getFormValue(fields.description)'>\n <div class='k-edit-label'>\n <label for='k-event-description'>{{ textFor('editorEventDescription') }}</label>\n </div>\n <div class='k-edit-field'>\n <textarea id='k-event-description' class='k-textbox' [formControl]='formGroup.get(fields.description)'></textarea>\n </div>\n </ng-container>\n\n <ng-container *ngFor='let resource of resources'>\n <ng-container *ngIf='getFormValue(resource.field)'>\n <div class='k-edit-label'>\n <label (click)=\"onResourceClick(resource)\">\n {{ resource.name ? resource.name : resource.field }}\n </label>\n </div>\n <div class='k-edit-field'>\n <kendo-multiple-resource-editor\n *ngIf='resource.multiple'\n [formControl]='formGroup.get(resource.field)'\n [resource]='resource'>\n </kendo-multiple-resource-editor>\n <kendo-single-resource-editor\n *ngIf='!resource.multiple'\n [formControl]='formGroup.get(resource.field)'\n [resource]='resource'>\n </kendo-single-resource-editor>\n </div>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf='editTemplate'>\n <form novalidate [formGroup]='formGroup'>\n <ng-container [ngTemplateOutlet]='editTemplate.templateRef'\n [ngTemplateOutletContext]=\"{\n $implicit: formGroup,\n formGroup: formGroup,\n dataItem: editedEvent,\n editMode: editMode,\n isNew: isNew\n }\">\n </ng-container>\n </form>\n </ng-container>\n\n <kendo-dialog-actions>\n <button class=\"k-button\" (click)=\"onCancel($event)\">{{ textFor('cancel') }}</button>\n <button class=\"k-button k-primary\" (click)=\"onSave($event)\" [disabled]=\"!formGroup.valid\">{{ textFor('save') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
287
+ template: "\n <kendo-dialog (close)='onClose()' [minWidth]='700' *ngIf='isActive' title='{{ textFor(\"editorTitle\") }}' class='k-scheduler-edit-dialog' [autoFocusedElement]=\"autoFocusedElement\">\n <ng-container *ngIf='!editTemplate'>\n <div class='k-scheduler-edit-form'>\n <div class='k-edit-form-container'>\n <form novalidate [formGroup]='formGroup'>\n <div class='k-edit-label'>\n <label for='k-event-title'>{{ textFor('editorEventTitle') }}</label>\n </div>\n <div class='k-edit-field'>\n <input #title id='k-event-title' kendoTextBox placeholder='Title' [formControl]='formGroup.get(fields.title)' />\n </div>\n\n <div class='k-edit-label'>\n <label (click)=\"startDateTimePicker.focus()\">{{ textFor('editorEventStart') }}</label>\n </div>\n <div class='k-edit-field'>\n <kendo-scheduler-datetime-picker #startDateTimePicker [formControl]='formGroup.get(fields.start)'\n [isAllDay]='getFormValue(fields.isAllDay)?.value'>\n </kendo-scheduler-datetime-picker>\n </div>\n\n <ng-container *ngIf=\"isStartTimeZoneVisible\">\n <div class='k-edit-label'>\n <label (click)=\"startTzPicker.focus()\">{{ textFor('editorEventStartTimeZone') }}</label>\n </div>\n\n <div class='k-edit-field'>\n <kendo-timezone-editor #startTzPicker [formControl]='formGroup.get(fields.startTimezone)'></kendo-timezone-editor>\n </div>\n </ng-container>\n\n <div class='k-edit-label'>\n <label (click)=\"endDateTimePicker.focus()\">{{ textFor('editorEventEnd') }}</label>\n </div>\n <div class='k-edit-field'>\n <kendo-scheduler-datetime-picker #endDateTimePicker [formControl]='formGroup.get(fields.end)'\n [isAllDay]='getFormValue(fields.isAllDay)?.value'>\n </kendo-scheduler-datetime-picker>\n </div>\n\n <ng-container *ngIf=\"isEndTimeZoneVisible\">\n <div class='k-edit-label'>\n <label (click)=\"endTzPicker.focus()\">{{ textFor('editorEventEndTimeZone') }}</label>\n </div>\n\n <div class='k-edit-field'>\n <kendo-timezone-editor #endTzPicker [formControl]='formGroup.get(fields.endTimezone)'></kendo-timezone-editor>\n </div>\n </ng-container>\n\n <div class='k-edit-field' *ngIf=\"hasAllDay\">\n <input type='checkbox' id='k-is-allday-chkbox' kendoCheckBox [formControl]='formGroup.get(fields.isAllDay)' />\n <label class='k-checkbox-label' for='k-is-allday-chkbox'>{{ textFor('editorEventAllDay') }}</label>\n </div>\n\n <div class='k-edit-field' *ngIf=\"hasStartTimeZone\">\n <input type='checkbox' id='k-set-timezone' kendoCheckBox\n formControlName='startTimezoneCheckbox' />\n <label class='k-checkbox-label' for='k-set-timezone'>{{ textFor('editorEventTimeZone') }}</label>\n\n <ng-container *ngIf=\"isStartTimeZoneVisible && hasEndTimeZone\">\n <input type='checkbox' id='k-use-separate' kendoCheckBox formControlName='endTimezoneCheckbox' />\n <label class='k-checkbox-label' for='k-use-separate'>{{ textFor('editorEventSeparateTimeZones') }}</label>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"isEditingSeries\">\n <kendo-recurrence-editor\n [formControl]='formGroup.get(fields.recurrenceRule)'\n [start]='recurrenceStart'\n [timezone]='eventTimezone'\n [weekStart]='weekStart'\n ></kendo-recurrence-editor>\n </ng-container>\n\n <ng-container *ngIf='getFormValue(fields.description)'>\n <div class='k-edit-label'>\n <label for='k-event-description'>{{ textFor('editorEventDescription') }}</label>\n </div>\n <div class='k-edit-field'>\n <textarea id='k-event-description' kendoTextArea [formControl]='formGroup.get(fields.description)'></textarea>\n </div>\n </ng-container>\n\n <ng-container *ngFor='let resource of resources'>\n <ng-container *ngIf='getFormValue(resource.field)'>\n <div class='k-edit-label'>\n <label (click)=\"onResourceClick(resource)\">\n {{ resource.name ? resource.name : resource.field }}\n </label>\n </div>\n <div class='k-edit-field'>\n <kendo-multiple-resource-editor\n *ngIf='resource.multiple'\n [formControl]='formGroup.get(resource.field)'\n [resource]='resource'>\n </kendo-multiple-resource-editor>\n <kendo-single-resource-editor\n *ngIf='!resource.multiple'\n [formControl]='formGroup.get(resource.field)'\n [resource]='resource'>\n </kendo-single-resource-editor>\n </div>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf='editTemplate'>\n <form novalidate [formGroup]='formGroup'>\n <ng-container [ngTemplateOutlet]='editTemplate.templateRef'\n [ngTemplateOutletContext]=\"{\n $implicit: formGroup,\n formGroup: formGroup,\n dataItem: editedEvent,\n editMode: editMode,\n isNew: isNew\n }\">\n </ng-container>\n </form>\n </ng-container>\n\n <kendo-dialog-actions>\n <button kendoButton (click)=\"onCancel($event)\">{{ textFor('cancel') }}</button>\n <button kendoButton themeColor=\"primary\" (click)=\"onSave($event)\" [disabled]=\"!formGroup.valid\">{{ textFor('save') }}</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n "
288
288
  }),
289
289
  tslib_1.__metadata("design:paramtypes", [NgZone,
290
290
  EditService,
@@ -16,6 +16,7 @@ var EndRuleRadioButtonDirective = /** @class */ (function () {
16
16
  this.changeDetector = changeDetector;
17
17
  this.type = 'radio';
18
18
  this.radioClass = true;
19
+ this.radioSizeClass = true;
19
20
  this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));
20
21
  }
21
22
  EndRuleRadioButtonDirective.prototype.ngOnInit = function () {
@@ -56,6 +57,10 @@ var EndRuleRadioButtonDirective = /** @class */ (function () {
56
57
  HostBinding('class.k-radio'),
57
58
  tslib_1.__metadata("design:type", Boolean)
58
59
  ], EndRuleRadioButtonDirective.prototype, "radioClass", void 0);
60
+ tslib_1.__decorate([
61
+ HostBinding('class.k-radio-md'),
62
+ tslib_1.__metadata("design:type", Boolean)
63
+ ], EndRuleRadioButtonDirective.prototype, "radioSizeClass", void 0);
59
64
  tslib_1.__decorate([
60
65
  Input("kendoRecurrenceEndRuleRadioButton"),
61
66
  tslib_1.__metadata("design:type", String)
@@ -267,7 +267,7 @@ var RecurrenceMonthlyYearlyEditorComponent = /** @class */ (function () {
267
267
  RecurrenceMonthlyYearlyEditorComponent = tslib_1.__decorate([
268
268
  Component({
269
269
  selector: 'kendo-recurrence-monthly-yearly-editor',
270
- template: "\n <div class='k-edit-label'>\n <label (click)=\"onRepeatOnLabelClick()\">{{ textForRepeatOn() }}</label>\n </div>\n <div class='k-edit-field'>\n <ul class='k-reset' [style.width.px]='650'>\n <li>\n <input kendoRecurrenceRepeatOnRadioButton='monthday-{{uniqueId}}' />\n\n <label class='k-radio-label' for='k-repeaton-monthday-{{uniqueId}}'>\n <ng-template [ngIf]=\"currentFreq === 'monthly'\">\n {{ textFor('monthlyDay') }}\n </ng-template>\n </label>\n\n <ng-template [ngIf]=\"currentFreq === 'yearly'\">\n <kendo-dropdownlist\n [data]='months'\n textField='text'\n valueField='value'\n [value]='currentMonthMonthDay'\n [valuePrimitive]='true'\n (valueChange)=\"onMonthChange($event, 'monthday')\"\n [disabled]=\"isDisabled('monthday')\">\n </kendo-dropdownlist>\n </ng-template>\n\n <kendo-numerictextbox\n [style.width.px]='70'\n [min]=\"numericOptions.min\"\n [max]=\"numericOptions.max\"\n [decimals]=\"0\"\n [format]=\"numericOptions.format\"\n [autoCorrect]=\"numericOptions.autoCorrect\"\n [readonly]=\"numericOptions.readonly\"\n [selectOnFocus]=\"numericOptions.selectOnFocus\"\n [spinners]=\"numericOptions.spinners\"\n [step]=\"numericOptions.step\"\n [title]=\"numericOptions.title\"\n [value]='monthDay'\n (valueChange)='onMonthDayChange($event)'\n [disabled]=\"isDisabled('monthday')\">\n </kendo-numerictextbox>\n </li>\n <li>\n <input kendoRecurrenceRepeatOnRadioButton='weekday-{{uniqueId}}' />\n <label class='k-radio-label' for='k-repeaton-weekday-{{uniqueId}}'></label>\n\n <kendo-dropdownlist\n [data]='offsetPositions'\n textField='text'\n valueField='value'\n [value]='offset'\n [valuePrimitive]='true'\n (valueChange)='onOffsetPositionChange($event)'\n [disabled]=\"isDisabled('weekday')\">\n </kendo-dropdownlist>\n\n <kendo-dropdownlist\n [data]=\"extendedWeekDays\"\n textField='text'\n valueField='value'\n [value]='weekDay'\n [valuePrimitive]='true'\n (valueChange)='onWeekDayChange($event)'\n [disabled]=\"isDisabled('weekday')\">\n </kendo-dropdownlist>\n\n <ng-template [ngIf]=\"currentFreq === 'yearly'\">\n <span>{{ textFor('yearlyOf') }}</span>\n\n <kendo-dropdownlist\n [data]='months'\n textField='text'\n valueField='value'\n [value]='currentMonthWeekDay'\n [valuePrimitive]='true'\n (valueChange)=\"onMonthChange($event, 'weekday')\"\n [disabled]=\"isDisabled('weekday')\">\n </kendo-dropdownlist>\n </ng-template>\n </li>\n </ul>\n </div>\n "
270
+ template: "\n <div class='k-edit-label'>\n <label (click)=\"onRepeatOnLabelClick()\">{{ textForRepeatOn() }}</label>\n </div>\n <div class='k-edit-field'>\n <ul class='k-reset' [style.width.px]='650'>\n <li>\n <input kendoRecurrenceRepeatOnRadioButton='monthday-{{uniqueId}}' />\n\n <label class='k-radio-label' for='k-repeaton-monthday-{{uniqueId}}'>\n <ng-template [ngIf]=\"currentFreq === 'monthly'\">\n {{ textFor('monthlyDay') }}\n </ng-template>\n </label>\n\n <ng-template [ngIf]=\"currentFreq === 'yearly'\">\n <kendo-dropdownlist\n [data]='months'\n textField='text'\n valueField='value'\n [value]='currentMonthMonthDay'\n [valuePrimitive]='true'\n (valueChange)=\"onMonthChange($event, 'monthday')\"\n [disabled]=\"isDisabled('monthday')\"\n [style.width.px]=\"170\"\n [style.margin]=\"'0 .4ex 0 1ex'\">\n </kendo-dropdownlist>\n </ng-template>\n\n <kendo-numerictextbox\n [style.width.px]='70'\n [min]=\"numericOptions.min\"\n [max]=\"numericOptions.max\"\n [decimals]=\"0\"\n [format]=\"numericOptions.format\"\n [autoCorrect]=\"numericOptions.autoCorrect\"\n [readonly]=\"numericOptions.readonly\"\n [selectOnFocus]=\"numericOptions.selectOnFocus\"\n [spinners]=\"numericOptions.spinners\"\n [step]=\"numericOptions.step\"\n [title]=\"numericOptions.title\"\n [value]='monthDay'\n (valueChange)='onMonthDayChange($event)'\n [disabled]=\"isDisabled('monthday')\"\n [style.margin]=\"'0 .4ex 0 1ex'\">\n </kendo-numerictextbox>\n </li>\n <li>\n <input kendoRecurrenceRepeatOnRadioButton='weekday-{{uniqueId}}' />\n <label class='k-radio-label' for='k-repeaton-weekday-{{uniqueId}}'></label>\n\n <kendo-dropdownlist\n [data]='offsetPositions'\n textField='text'\n valueField='value'\n [value]='offset'\n [valuePrimitive]='true'\n (valueChange)='onOffsetPositionChange($event)'\n [disabled]=\"isDisabled('weekday')\"\n [style.width.px]=\"170\"\n [style.margin]=\"'0 .4ex 0 1ex'\">\n </kendo-dropdownlist>\n\n <kendo-dropdownlist\n [data]=\"extendedWeekDays\"\n textField='text'\n valueField='value'\n [value]='weekDay'\n [valuePrimitive]='true'\n (valueChange)='onWeekDayChange($event)'\n [disabled]=\"isDisabled('weekday')\"\n [style.width.px]=\"170\"\n [style.margin]=\"'0 .4ex 0 1ex'\">\n </kendo-dropdownlist>\n\n <ng-template [ngIf]=\"currentFreq === 'yearly'\">\n <span>{{ textFor('yearlyOf') }}</span>\n\n <kendo-dropdownlist\n [data]='months'\n textField='text'\n valueField='value'\n [value]='currentMonthWeekDay'\n [valuePrimitive]='true'\n (valueChange)=\"onMonthChange($event, 'weekday')\"\n [disabled]=\"isDisabled('weekday')\"\n [style.width.px]=\"170\"\n [style.margin]=\"'0 .4ex 0 1ex'\">\n </kendo-dropdownlist>\n </ng-template>\n </li>\n </ul>\n </div>\n "
271
271
  }),
272
272
  tslib_1.__metadata("design:paramtypes", [RecurrenceService,
273
273
  LocalizationService])
@@ -16,6 +16,7 @@ var RepeatOnRadioButtonDirective = /** @class */ (function () {
16
16
  this.changeDetector = changeDetector;
17
17
  this.type = 'radio';
18
18
  this.radioClass = true;
19
+ this.radioSizeClass = true;
19
20
  this.destroyChange = this.renderer.listen(this.elem, 'change', this.onChange.bind(this));
20
21
  }
21
22
  Object.defineProperty(RepeatOnRadioButtonDirective.prototype, "repeatOnRule", {
@@ -65,6 +66,10 @@ var RepeatOnRadioButtonDirective = /** @class */ (function () {
65
66
  HostBinding('class.k-radio'),
66
67
  tslib_1.__metadata("design:type", Boolean)
67
68
  ], RepeatOnRadioButtonDirective.prototype, "radioClass", void 0);
69
+ tslib_1.__decorate([
70
+ HostBinding('class.k-radio-md'),
71
+ tslib_1.__metadata("design:type", Boolean)
72
+ ], RepeatOnRadioButtonDirective.prototype, "radioSizeClass", void 0);
68
73
  tslib_1.__decorate([
69
74
  Input("kendoRecurrenceRepeatOnRadioButton"),
70
75
  tslib_1.__metadata("design:type", String),
@@ -0,0 +1,17 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import * as tslib_1 from "tslib";
6
+ import { SlotDragEvent } from './slot-drag-event';
7
+ /**
8
+ * Arguments for the `slotDragEnd` event.
9
+ */
10
+ var SlotDragEndEvent = /** @class */ (function (_super) {
11
+ tslib_1.__extends(SlotDragEndEvent, _super);
12
+ function SlotDragEndEvent() {
13
+ return _super !== null && _super.apply(this, arguments) || this;
14
+ }
15
+ return SlotDragEndEvent;
16
+ }(SlotDragEvent));
17
+ export { SlotDragEndEvent };
@@ -0,0 +1,18 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * Arguments for the `slotDrag` event.
7
+ */
8
+ var SlotDragEvent = /** @class */ (function () {
9
+ /**
10
+ * @hidden
11
+ */
12
+ function SlotDragEvent(sender, args) {
13
+ this.sender = sender;
14
+ Object.assign(this, args);
15
+ }
16
+ return SlotDragEvent;
17
+ }());
18
+ export { SlotDragEvent };
@@ -0,0 +1,24 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import * as tslib_1 from "tslib";
6
+ import { PreventableEvent } from './preventable-event';
7
+ /**
8
+ * Arguments for the `slotDragStart` event.
9
+ * The event is preventable and if prevented, subsequent `slotDrag`, `slotDragEnd`, and `slotSelectionChange` will not be fired.
10
+ */
11
+ var SlotDragStartEvent = /** @class */ (function (_super) {
12
+ tslib_1.__extends(SlotDragStartEvent, _super);
13
+ /**
14
+ * @hidden
15
+ */
16
+ function SlotDragStartEvent(sender, args) {
17
+ var _this = _super.call(this) || this;
18
+ _this.sender = sender;
19
+ Object.assign(_this, args);
20
+ return _this;
21
+ }
22
+ return SlotDragStartEvent;
23
+ }(PreventableEvent));
24
+ export { SlotDragStartEvent };
package/dist/es/events.js CHANGED
@@ -20,3 +20,6 @@ export { DragEvent } from './events/drag-event';
20
20
  export { DragEndEvent } from './events/drag-end-event';
21
21
  export { EditEvent } from './events/edit-event';
22
22
  export { AddEvent } from './events/add-event';
23
+ export { SlotDragStartEvent } from './events/slot-drag-start-event';
24
+ export { SlotDragEvent } from './events/slot-drag-event';
25
+ export { SlotDragEndEvent } from './events/slot-drag-end-event';
package/dist/es/index.js CHANGED
@@ -59,6 +59,7 @@ export { HintContainerComponent } from './views/common/hint-container.component'
59
59
  export { RepeatPipe } from './views/common/repeat.pipe';
60
60
  export { ResizeHintComponent } from './views/common/resize-hint.component';
61
61
  export { ResourceIteratorPipe } from './views/common/resource-iterator.pipe';
62
+ export { SlotSelectableDirective } from './views/common/slot-selectable.directive';
62
63
  export { ViewFooterComponent } from './views/common/view-footer.component';
63
64
  export { ViewsSharedModule } from './views/common/views-shared.module';
64
65
  export { WorkHoursFooterDirective } from './views/common/work-hours-footer.directive';
@@ -9,7 +9,7 @@ export var packageMetadata = {
9
9
  name: '@progress/kendo-angular-scheduler',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1637916885,
12
+ publishDate: 1644228429,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -42,6 +42,9 @@ import { LoadingComponent } from './loading.component';
42
42
  import { FocusService } from './navigation';
43
43
  import { DomEventsService } from './views/common/dom-events.service';
44
44
  import { closest } from './common/dom-queries';
45
+ import { alwaysFalse } from './views/utils';
46
+ import { SlotDragEvent } from './events/slot-drag-event';
47
+ import { SlotDragEndEvent } from './events/slot-drag-end-event';
45
48
  var todayDate = function () { return getDate(new Date()); };
46
49
  var ɵ0 = todayDate;
47
50
  var DAYS_IN_WEEK = 7;
@@ -85,6 +88,12 @@ var SchedulerComponent = /** @class */ (function () {
85
88
  * Specifies if the Scheduler is editable.
86
89
  */
87
90
  this.editable = false;
91
+ /**
92
+ * Specifies if the Scheduler's day or time slots are selectable ([see example]({% slug slotselection_scheduler %}#toc-custom-callback)).
93
+ *
94
+ * When this input is set to `true`, the Scheduler component will emit [`slotDragStart`]({% slug api_scheduler_schedulercomponent %}#toc-slotdragstart), [`slotDrag`]({% slug api_scheduler_schedulercomponent %}#toc-slotdrag), and [`slotDragEnd`]({% slug api_scheduler_schedulercomponent %}#toc-slotdragend) events upon user interaction.
95
+ */
96
+ this.selectable = false;
88
97
  /**
89
98
  * The height of the events in the **Month** and **Timeline** views, and the height of the **All day** events in the **Day** and **Week** views.
90
99
  */
@@ -136,6 +145,11 @@ var SchedulerComponent = /** @class */ (function () {
136
145
  * Specifies the Scheduler current time marker settings.
137
146
  */
138
147
  this.currentTimeMarker = true;
148
+ /**
149
+ * A callback that executes for each slot of the Scheduler view.
150
+ * If it returns `true`, the `k-state-selected` CSS class will be added to the cell, making it visibly selected.
151
+ */
152
+ this.isSlotSelected = alwaysFalse;
139
153
  /**
140
154
  * @hidden
141
155
  */
@@ -210,6 +224,18 @@ var SchedulerComponent = /** @class */ (function () {
210
224
  * Fires when the user stops dragging a Scheduler event.
211
225
  */
212
226
  this.dragEnd = new EventEmitter();
227
+ /**
228
+ * Fires when the user starts drag-selecting a Scheduler slot range.
229
+ */
230
+ this.slotDragStart = new EventEmitter();
231
+ /**
232
+ * Fires when the user is drag-selecting a Scheduler slot range.
233
+ */
234
+ this.slotDrag = new EventEmitter();
235
+ /**
236
+ * Fires when the user stops drag-selecting a Scheduler slot range.
237
+ */
238
+ this.slotDragEnd = new EventEmitter();
213
239
  /**
214
240
  * Fires when the user clicks the **PDF export** command button.
215
241
  */
@@ -400,6 +426,30 @@ var SchedulerComponent = /** @class */ (function () {
400
426
  _this.resizeSensor.acceptSize();
401
427
  }
402
428
  }));
429
+ this.subs.add(this.viewState.slotSelectionStart
430
+ .subscribe(function (e) {
431
+ if (hasObservers(_this.slotDragStart)) {
432
+ _this.zone.run(function () {
433
+ _this.slotDragStart.emit(Object.assign(e, { sender: _this }));
434
+ });
435
+ }
436
+ }));
437
+ this.subs.add(this.viewState.slotSelectionDrag
438
+ .subscribe(function (value) {
439
+ if (hasObservers(_this.slotDrag)) {
440
+ _this.zone.run(function () {
441
+ _this.slotDrag.emit(new SlotDragEvent(_this, value));
442
+ });
443
+ }
444
+ }));
445
+ this.subs.add(this.viewState.slotSelectionEnd
446
+ .subscribe(function (value) {
447
+ if (hasObservers(_this.slotDragEnd)) {
448
+ _this.zone.run(function () {
449
+ _this.slotDragEnd.emit(new SlotDragEndEvent(_this, value));
450
+ });
451
+ }
452
+ }));
403
453
  this.onViewIndexChange();
404
454
  this.notifyOptionsChange = this.notifyOptionsChange.bind(this);
405
455
  this.subs.add(this.allDayEventTemplate.changes.subscribe(this.notifyOptionsChange));
@@ -451,7 +501,7 @@ var SchedulerComponent = /** @class */ (function () {
451
501
  if (anyChanged([
452
502
  'group', 'resources', 'min', 'max', 'showWorkHours', 'startTime', 'scrollTime', 'endTime', 'eventHeight',
453
503
  'workDayStart', 'workDayEnd', 'workWeekStart', 'workWeekEnd', 'weekStart', 'slotDuration', 'slotDivisions',
454
- 'editable', 'timezone', 'slotClass', 'slotFill', 'columnWidth', 'eventClass', 'eventStyles'
504
+ 'editable', 'timezone', 'slotClass', 'slotFill', 'columnWidth', 'eventClass', 'eventStyles', 'isSlotSelected', 'selectable'
455
505
  ], changes)) {
456
506
  this.notifyOptionsChange(changes);
457
507
  }
@@ -704,6 +754,7 @@ var SchedulerComponent = /** @class */ (function () {
704
754
  slotDivisions: this.slotDivisions,
705
755
  eventHeight: this.eventHeight,
706
756
  editable: this.editable,
757
+ selectable: this.selectable,
707
758
  timezone: this.timezone,
708
759
  currentTimeMarker: this.currentTimeMarker,
709
760
  slotClass: this.slotClass,
@@ -711,6 +762,7 @@ var SchedulerComponent = /** @class */ (function () {
711
762
  columnWidth: this.columnWidth,
712
763
  eventClass: this.eventClass,
713
764
  eventStyles: this.eventStyles,
765
+ isSlotSelected: this.isSlotSelected,
714
766
  changes: changes
715
767
  });
716
768
  };
@@ -864,6 +916,10 @@ var SchedulerComponent = /** @class */ (function () {
864
916
  Input(),
865
917
  tslib_1.__metadata("design:type", Object)
866
918
  ], SchedulerComponent.prototype, "editable", void 0);
919
+ tslib_1.__decorate([
920
+ Input(),
921
+ tslib_1.__metadata("design:type", Boolean)
922
+ ], SchedulerComponent.prototype, "selectable", void 0);
867
923
  tslib_1.__decorate([
868
924
  Input(),
869
925
  tslib_1.__metadata("design:type", Date)
@@ -977,6 +1033,10 @@ var SchedulerComponent = /** @class */ (function () {
977
1033
  Input(),
978
1034
  tslib_1.__metadata("design:type", Function)
979
1035
  ], SchedulerComponent.prototype, "eventStyles", void 0);
1036
+ tslib_1.__decorate([
1037
+ Input(),
1038
+ tslib_1.__metadata("design:type", Function)
1039
+ ], SchedulerComponent.prototype, "isSlotSelected", void 0);
980
1040
  tslib_1.__decorate([
981
1041
  Output(),
982
1042
  tslib_1.__metadata("design:type", EventEmitter)
@@ -1049,6 +1109,18 @@ var SchedulerComponent = /** @class */ (function () {
1049
1109
  Output(),
1050
1110
  tslib_1.__metadata("design:type", EventEmitter)
1051
1111
  ], SchedulerComponent.prototype, "dragEnd", void 0);
1112
+ tslib_1.__decorate([
1113
+ Output(),
1114
+ tslib_1.__metadata("design:type", EventEmitter)
1115
+ ], SchedulerComponent.prototype, "slotDragStart", void 0);
1116
+ tslib_1.__decorate([
1117
+ Output(),
1118
+ tslib_1.__metadata("design:type", EventEmitter)
1119
+ ], SchedulerComponent.prototype, "slotDrag", void 0);
1120
+ tslib_1.__decorate([
1121
+ Output(),
1122
+ tslib_1.__metadata("design:type", EventEmitter)
1123
+ ], SchedulerComponent.prototype, "slotDragEnd", void 0);
1052
1124
  tslib_1.__decorate([
1053
1125
  Output(),
1054
1126
  tslib_1.__metadata("design:type", EventEmitter)
@@ -35,7 +35,7 @@ import { EditDialogComponent } from './editing/edit-dialog.component';
35
35
  import { ReactiveFormsModule } from '@angular/forms';
36
36
  import { ButtonsModule } from '@progress/kendo-angular-buttons';
37
37
  import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
38
- import { NumericTextBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';
38
+ import { CheckBoxModule, NumericTextBoxModule, TextAreaModule, TextBoxModule } from '@progress/kendo-angular-inputs';
39
39
  import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
40
40
  import { SchedulerDateTimePickerComponent } from './editing/date-time-picker.component';
41
41
  import { RecurrenceEditorComponent } from './editing/recurrence/recurrence-editor.component';
@@ -55,6 +55,7 @@ import { EditDialogTemplateDirective } from './editing/edit-dialog-template.dire
55
55
  import { LoadingComponent } from './loading.component';
56
56
  import { SharedModule } from './shared.module';
57
57
  import { ShortcutsDirective } from './navigation/shortcuts.directive';
58
+ import { SlotSelectableDirective } from './views/common/slot-selectable.directive';
58
59
  var TEMPLATES = [
59
60
  AgendaDateTemplateDirective,
60
61
  AgendaTimeTemplateDirective,
@@ -75,6 +76,7 @@ var declarations = [
75
76
  DataBindingDirective,
76
77
  ShortcutsDirective,
77
78
  ReactiveEditingDirective,
79
+ SlotSelectableDirective,
78
80
  SchedulerDateTimePickerComponent,
79
81
  RecurrenceEditorComponent,
80
82
  RecurrenceEndRuleEditorComponent,
@@ -104,6 +106,8 @@ var publicDirectives = [
104
106
  ].concat(declarations);
105
107
  var importedKendoModules = [
106
108
  ButtonsModule,
109
+ CheckBoxModule,
110
+ TextAreaModule,
107
111
  DateInputsModule,
108
112
  DialogModule,
109
113
  NumericTextBoxModule,
@@ -77,7 +77,7 @@ var ToolbarViewSelectorComponent = /** @class */ (function () {
77
77
  Component({
78
78
  // tslint:disable-next-line:component-selector
79
79
  selector: '[kendoSchedulerToolbarViewSelector]',
80
- template: "\n <select *ngIf=\"ctx.views?.length > 1\"\n (change)=\"onChange($event)\"\n class=\"k-views-dropdown k-dropdown\">\n <option *ngFor=\"let view of ctx.views\"\n [selected]=\"isSelected(view) == true\"\n [value]=\"view.name\"\n >\n {{ view.title }}\n </option>\n </select>\n <span class=\"k-scheduler-views k-button-group\">\n <button kendoButton\n type=\"button\"\n *ngFor=\"let view of ctx.views\"\n [selected]=\"isSelected(view)\"\n [attr.aria-pressed]=\"isSelected(view)\"\n (click)=\"select(view)\"\n >\n <span class=\"k-button-text\">\n {{ view.title }}\n </span>\n </button>\n </span>\n "
80
+ template: "\n <select *ngIf=\"ctx.views?.length > 1\"\n (change)=\"onChange($event)\"\n class=\"k-views-dropdown k-picker-md k-rounded-md k-picker-solid k-dropdownlist k-picker\">\n <option *ngFor=\"let view of ctx.views\"\n [selected]=\"isSelected(view) == true\"\n [value]=\"view.name\"\n >\n {{ view.title }}\n </option>\n </select>\n <span class=\"k-scheduler-views k-button-group\">\n <button kendoButton\n type=\"button\"\n *ngFor=\"let view of ctx.views\"\n [selected]=\"isSelected(view)\"\n [attr.aria-pressed]=\"isSelected(view)\"\n (click)=\"select(view)\"\n >\n <span class=\"k-button-text\">\n {{ view.title }}\n </span>\n </button>\n </span>\n "
81
81
  }),
82
82
  tslib_1.__metadata("design:paramtypes", [ToolbarService])
83
83
  ], ToolbarViewSelectorComponent);
@@ -0,0 +1,23 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * The arguments for the [`isSlotSelected`]({% slug api_scheduler_schedulercomponent %}#toc-isslotselected) callback.
7
+ */
8
+ var IsSlotSelectedArgs = /** @class */ (function () {
9
+ function IsSlotSelectedArgs() {
10
+ }
11
+ return IsSlotSelectedArgs;
12
+ }());
13
+ export { IsSlotSelectedArgs };
14
+ /**
15
+ * @hidden
16
+ */
17
+ export var slotDragEventName;
18
+ (function (slotDragEventName) {
19
+ slotDragEventName["initDragSelect"] = "initDragSelect";
20
+ slotDragEventName["dragSelect"] = "dragSelect";
21
+ slotDragEventName["refreshSlotSelection"] = "refreshSlotSelection";
22
+ slotDragEventName["dragSelectRelease"] = "dragSelectRelease";
23
+ })(slotDragEventName || (slotDragEventName = {}));
package/dist/es/types.js CHANGED
@@ -3,3 +3,4 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  export * from './types/scheduler-view';
6
+ export { IsSlotSelectedArgs } from './types/slot-selection';