@progress/kendo-angular-scheduler 24.0.0-develop.37 → 24.0.0-develop.39

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.
@@ -4,7 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  "use strict";
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.tsInterfaceTransformer = exports.tsPropertyValueTransformer = exports.tsPropertyTransformer = exports.tsComponentPropertyRemoval = exports.attributeRemoval = exports.attributeValueUpdate = exports.attributeNameValueUpdate = exports.attributeNameUpdate = exports.eventUpdate = exports.htmlTransformer = exports.blockTextElements = void 0;
7
+ exports.tsInterfaceTransformer = exports.tsPropertyValueTransformer = exports.tsPropertyTransformer = exports.tsComponentPropertyRemoval = exports.attributeConditionalRemoval = exports.attributeRemoval = exports.attributeValueUpdate = exports.attributeNameValueUpdate = exports.attributeNameUpdate = exports.eventUpdate = exports.htmlTransformer = exports.blockTextElements = void 0;
8
8
  exports.hasKendoInTemplate = hasKendoInTemplate;
9
9
  exports.isImportedFromPackage = isImportedFromPackage;
10
10
  exports.tsPropertyRemoval = tsPropertyRemoval;
@@ -345,6 +345,34 @@ const attributeRemoval = (templateContent, tagName, attributeName, propertyToRem
345
345
  });
346
346
  };
347
347
  exports.attributeRemoval = attributeRemoval;
348
+ /**
349
+ * Removes an attribute from a tag only when its value matches one of the specified values.
350
+ * Handles both static (`attr="value"`) and bound (`[attr]="'value'"`) forms.
351
+ *
352
+ * @param templateContent - The template string content to transform
353
+ * @param tagName - The HTML tag name to target (e.g., 'kendo-button')
354
+ * @param attributeName - The attribute name to conditionally remove
355
+ * @param values - The attribute values that trigger removal
356
+ * @returns The transformed template content
357
+ */
358
+ const attributeConditionalRemoval = (templateContent, tagName, attributeName, values) => {
359
+ const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
360
+ const escapedTag = escapeRegex(tagName);
361
+ const escapedAttr = escapeRegex(attributeName);
362
+ // Remove bound attributes [attribute]="value"
363
+ const boundAttributePattern = new RegExp(`(<${escapedTag}[^>]*?)\\s+\\[${escapedAttr}\\]\\s*=\\s*("(?:[^"\\\\]|\\\\.)*?"|'(?:[^'\\\\]|\\\\.)*?'|[^\\s>]+)([^>]*?>)`, 'gi');
364
+ // Remove static attributes attribute="value"
365
+ const staticAttributePattern = new RegExp(`(<${escapedTag}[^>]*?)\\s+${escapedAttr}\\s*=\\s*("(?:[^"\\\\]|\\\\.)*?"|'(?:[^'\\\\]|\\\\.)*?'|[^\\s>]+)([^>]*?>)`, 'gi');
366
+ // Strip outer and inner quotes to extract the raw value for comparison
367
+ const matchesValue = (raw) => {
368
+ const inner = raw.replace(/^["']|["']$/g, '').replace(/^['"]|['"]$/g, '');
369
+ return values.includes(inner);
370
+ };
371
+ let result = templateContent.replace(boundAttributePattern, (match, prefix, value, suffix) => matchesValue(value) ? prefix + suffix : match);
372
+ result = result.replace(staticAttributePattern, (match, prefix, value, suffix) => matchesValue(value) ? prefix + suffix : match);
373
+ return result;
374
+ };
375
+ exports.attributeConditionalRemoval = attributeConditionalRemoval;
348
376
  function tsPropertyRemoval(source, rootSource, j, packageName, typeName, propertyName) {
349
377
  if (source.includes(typeName)) {
350
378
  if (!isImportedFromPackage(rootSource, j, packageName, typeName)) {
@@ -441,8 +469,31 @@ function tsPropertyRemoval(source, rootSource, j, packageName, typeName, propert
441
469
  }
442
470
  }
443
471
  });
444
- // Handle return statements with object literals
472
+ // Handle return statements with object literals, but only when the enclosing
473
+ // function's declared return type matches typeName. This prevents removing
474
+ // unrelated propertyName keys from object literals returned in other functions.
475
+ const enclosingFunctionReturnsType = (nodePath) => {
476
+ let current = nodePath.parent;
477
+ while (current) {
478
+ const node = current.node;
479
+ if (node.type === 'FunctionDeclaration' ||
480
+ node.type === 'FunctionExpression' ||
481
+ node.type === 'ArrowFunctionExpression' ||
482
+ node.type === 'ClassMethod' ||
483
+ node.type === 'ObjectMethod') {
484
+ return !!(node.returnType &&
485
+ node.returnType.typeAnnotation?.type === 'TSTypeReference' &&
486
+ node.returnType.typeAnnotation.typeName?.type === 'Identifier' &&
487
+ node.returnType.typeAnnotation.typeName.name === typeName);
488
+ }
489
+ current = current.parent;
490
+ }
491
+ return false;
492
+ };
445
493
  rootSource.find(j.ReturnStatement).forEach((path) => {
494
+ if (!enclosingFunctionReturnsType(path)) {
495
+ return;
496
+ }
446
497
  if (path.node.argument && path.node.argument.type === 'ObjectExpression') {
447
498
  const properties = path.node.argument.properties;
448
499
  const propIndex = properties.findIndex((p) => p.type === 'ObjectProperty' &&
@@ -491,22 +542,6 @@ function tsPropertyRemoval(source, rootSource, j, packageName, typeName, propert
491
542
  statement.remove();
492
543
  }
493
544
  });
494
- // Handle nested member expressions like chatConfig.chat.modelFields.pinnedByField
495
- rootSource
496
- .find(j.AssignmentExpression, {
497
- left: {
498
- type: 'MemberExpression',
499
- object: {
500
- type: 'MemberExpression',
501
- },
502
- property: {
503
- name: propertyName,
504
- },
505
- },
506
- })
507
- .forEach((path) => {
508
- j(path).closest(j.ExpressionStatement).remove();
509
- });
510
545
  return rootSource;
511
546
  }
512
547
  }
@@ -0,0 +1,88 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.aiInstructions = exports.aiInstructionsLoadingMask = exports.aiInstructionsNavNext = exports.aiInstructionsNavPrev = exports.aiInstructionsSchedulerNavigation = exports.aiInstructionsToolbarGroup = exports.aiInstructionsNavToday = exports.aiInstructionsHeadingCell = exports.aiInstructionsSchedulerViewsButton = exports.aiInstructionsToolbarButtonGroup = void 0;
8
+ exports.default = default_1;
9
+ const codemods_1 = require("@progress/kendo-angular-common/codemods");
10
+ exports.aiInstructionsToolbarButtonGroup = `k-toolbar-button-group — removed.
11
+ The Scheduler's toolbar view selector now uses SegmentedControl instead of buttons.
12
+ Remove any CSS rules or test assertions targeting .k-toolbar-button-group.`;
13
+ exports.aiInstructionsSchedulerViewsButton = `.k-scheduler-views .k-button — replaced with .k-scheduler-views .k-segmented-control-button.
14
+ Update selectors from .k-scheduler-views .k-button to .k-scheduler-views .k-segmented-control-button.`;
15
+ exports.aiInstructionsHeadingCell = `k-heading-cell — removed.
16
+ Remove any CSS rules or test assertions targeting .k-heading-cell.`;
17
+ exports.aiInstructionsNavToday = `k-nav-today — removed and replaced with k-group-start.
18
+ Replace .k-nav-today selectors with .k-group-start in your styles and tests.`;
19
+ exports.aiInstructionsToolbarGroup = `k-toolbar-group — removed.
20
+ Remove any CSS rules or test assertions targeting .k-toolbar-group.`;
21
+ exports.aiInstructionsSchedulerNavigation = `k-scheduler-navigation — removed from the footer.
22
+ Remove any CSS rules or test assertions targeting .k-scheduler-navigation in the footer context.`;
23
+ exports.aiInstructionsNavPrev = `k-nav-prev — removed.
24
+ Remove any CSS rules or test assertions targeting .k-nav-prev.`;
25
+ exports.aiInstructionsNavNext = `k-nav-next — replaced with k-group-end.
26
+ Replace .k-nav-next selectors with .k-group-end in your styles and tests.`;
27
+ exports.aiInstructionsLoadingMask = `k-loading-mask — now rendered conditionally.
28
+ The .k-loading-mask element is no longer always present in the DOM. Update any selectors or tests that assume it is always rendered.`;
29
+ exports.aiInstructions = `Review your stylesheets, test files, and any code that references these Scheduler classes:
30
+
31
+ ${exports.aiInstructionsToolbarButtonGroup}
32
+
33
+ ${exports.aiInstructionsSchedulerViewsButton}
34
+
35
+ ${exports.aiInstructionsHeadingCell}
36
+
37
+ ${exports.aiInstructionsNavToday}
38
+
39
+ ${exports.aiInstructionsToolbarGroup}
40
+
41
+ ${exports.aiInstructionsSchedulerNavigation}
42
+
43
+ ${exports.aiInstructionsNavPrev}
44
+
45
+ ${exports.aiInstructionsNavNext}
46
+
47
+ ${exports.aiInstructionsLoadingMask}`;
48
+ const patternToolbarButtonGroup = (0, codemods_1.makePattern)(['k-toolbar-button-group']);
49
+ const patternSchedulerViewsButton = (0, codemods_1.makePattern)(['k-scheduler-views']);
50
+ const patternHeadingCell = (0, codemods_1.makePattern)(['k-heading-cell']);
51
+ const patternNavToday = (0, codemods_1.makePattern)(['k-nav-today']);
52
+ const patternToolbarGroup = (0, codemods_1.makePattern)(['k-toolbar-group']);
53
+ const patternSchedulerNavigation = (0, codemods_1.makePattern)(['k-scheduler-navigation']);
54
+ const patternNavPrev = (0, codemods_1.makePattern)(['k-nav-prev']);
55
+ const patternNavNext = (0, codemods_1.makePattern)(['k-nav-next']);
56
+ const patternLoadingMask = (0, codemods_1.makePattern)(['k-loading-mask']);
57
+ function default_1(fileInfo) {
58
+ if ((0, codemods_1.isRenderingChangeTarget)(fileInfo.path)) {
59
+ if (patternToolbarButtonGroup.test(fileInfo.source)) {
60
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsToolbarButtonGroup, __filename, fileInfo.path);
61
+ }
62
+ if (patternSchedulerViewsButton.test(fileInfo.source)) {
63
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsSchedulerViewsButton, __filename, fileInfo.path);
64
+ }
65
+ if (patternHeadingCell.test(fileInfo.source)) {
66
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsHeadingCell, __filename, fileInfo.path);
67
+ }
68
+ if (patternNavToday.test(fileInfo.source)) {
69
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsNavToday, __filename, fileInfo.path);
70
+ }
71
+ if (patternToolbarGroup.test(fileInfo.source)) {
72
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsToolbarGroup, __filename, fileInfo.path);
73
+ }
74
+ if (patternSchedulerNavigation.test(fileInfo.source)) {
75
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsSchedulerNavigation, __filename, fileInfo.path);
76
+ }
77
+ if (patternNavPrev.test(fileInfo.source)) {
78
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsNavPrev, __filename, fileInfo.path);
79
+ }
80
+ if (patternNavNext.test(fileInfo.source)) {
81
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsNavNext, __filename, fileInfo.path);
82
+ }
83
+ if (patternLoadingMask.test(fileInfo.source)) {
84
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsLoadingMask, __filename, fileInfo.path);
85
+ }
86
+ }
87
+ return fileInfo.source;
88
+ }
@@ -7,7 +7,7 @@ import { Optional, Directive, Injectable, EventEmitter, Input, Inject, isDevMode
7
7
  import * as i1$1 from '@progress/kendo-angular-l10n';
8
8
  import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';
9
9
  import * as i7 from '@progress/kendo-angular-common';
10
- import { getter, setter, hasObservers, isDocumentAvailable, isVisible as isVisible$1, scrollbarWidth, isChanged, Keys, ResizeSensorComponent, getLicenseMessage, shouldShowValidationUI, anyChanged, WatermarkOverlayComponent, guid, normalizeKeys, ResizeBatchService } from '@progress/kendo-angular-common';
10
+ import { getter, setter, hasObservers, isDocumentAvailable, isVisible as isVisible$1, scrollbarWidth, isChanged, Keys, ResizeSensorComponent, getLicenseMessage, shouldShowValidationUI, anyChanged, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, guid, normalizeKeys, ResizeBatchService } from '@progress/kendo-angular-common';
11
11
  import { isEqualDate, ZonedDate, toLocalDate, getDate, timezoneNames, Day, MS_PER_DAY as MS_PER_DAY$1, addDays, firstDayOfMonth, lastDayOfMonth, firstDayInWeek, addMonths, addWeeks, addYears } from '@progress/kendo-date-math';
12
12
  import { auditTime, buffer, filter, map, debounceTime, take, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';
13
13
  import { validatePackage } from '@progress/kendo-licensing';
@@ -43,8 +43,8 @@ const packageMetadata = {
43
43
  productName: 'Kendo UI for Angular',
44
44
  productCode: 'KENDOUIANGULAR',
45
45
  productCodes: ['KENDOUIANGULAR'],
46
- publishDate: 1779188745,
47
- version: '24.0.0-develop.37',
46
+ publishDate: 1779209895,
47
+ version: '24.0.0-develop.39',
48
48
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
49
49
  };
50
50
 
@@ -8910,10 +8910,14 @@ class SchedulerComponent {
8910
8910
  provide: L10N_PREFIX,
8911
8911
  useValue: 'kendo.scheduler'
8912
8912
  },
8913
+ {
8914
+ provide: KENDO_WEBMCP_HOST,
8915
+ useExisting: forwardRef(() => SchedulerComponent)
8916
+ },
8913
8917
  ToolbarService,
8914
8918
  ViewContextService,
8915
8919
  ViewStateService,
8916
- PDFService
8920
+ PDFService,
8917
8921
  ], queries: [{ propertyName: "editDialogTemplate", first: true, predicate: EditDialogTemplateDirective, descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ToolbarTemplateDirective, descendants: true }, { propertyName: "views", predicate: SchedulerView }, { propertyName: "allDayEventTemplate", predicate: AllDayEventTemplateDirective }, { propertyName: "eventTemplate", predicate: EventTemplateDirective }, { propertyName: "timeSlotTemplate", predicate: TimeSlotTemplateDirective }, { propertyName: "minorTimeHeaderTemplate", predicate: MinorTimeHeaderTemplateDirective }, { propertyName: "majorTimeHeaderTemplate", predicate: MajorTimeHeaderTemplateDirective }, { propertyName: "monthDaySlotTemplate", predicate: MonthDaySlotTemplateDirective }, { propertyName: "multiWeekDaySlotTemplate", predicate: MultiWeekDaySlotTemplateDirective }, { propertyName: "dateHeaderTemplate", predicate: DateHeaderTemplateDirective }, { propertyName: "allDaySlotTemplate", predicate: AllDaySlotTemplateDirective }, { propertyName: "groupHeaderTemplate", predicate: GroupHeaderTemplateDirective }, { propertyName: "agendaDateTemplate", predicate: AgendaDateTemplateDirective }, { propertyName: "agendaTimeTemplate", predicate: AgendaTimeTemplateDirective }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: "confirmationDialogContainerRef", first: true, predicate: ["confirmationDialogContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
8918
8922
  <ng-container kendoSchedulerLocalizedMessages
8919
8923
  i18n-allEvents="kendo.scheduler.allEvents|The All events text displayed in the timeline views when there is no vertical grouping."
@@ -9274,10 +9278,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9274
9278
  provide: L10N_PREFIX,
9275
9279
  useValue: 'kendo.scheduler'
9276
9280
  },
9281
+ {
9282
+ provide: KENDO_WEBMCP_HOST,
9283
+ useExisting: forwardRef(() => SchedulerComponent)
9284
+ },
9277
9285
  ToolbarService,
9278
9286
  ViewContextService,
9279
9287
  ViewStateService,
9280
- PDFService
9288
+ PDFService,
9281
9289
  ],
9282
9290
  template: `
9283
9291
  <ng-container kendoSchedulerLocalizedMessages
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1779188745,
11
- "version": "24.0.0-develop.37",
10
+ "publishDate": 1779209895,
11
+ "version": "24.0.0-develop.39",
12
12
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-scheduler",
3
- "version": "24.0.0-develop.37",
3
+ "version": "24.0.0-develop.39",
4
4
  "description": "Kendo UI Scheduler Angular - Outlook or Google-style angular scheduler calendar. Full-featured and customizable embedded scheduling from the creator developers trust for professional UI components.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -28,13 +28,20 @@
28
28
  "file": "codemods/v23/scheduler-rendering-changes.js",
29
29
  "instructionsOnly": true
30
30
  }
31
+ ],
32
+ "24": [
33
+ {
34
+ "description": "The Scheduler toolbar, navigation, and loading rendering has changed.",
35
+ "file": "codemods/v24/scheduler-rendering-changes.js",
36
+ "instructionsOnly": true
37
+ }
31
38
  ]
32
39
  }
33
40
  },
34
41
  "package": {
35
42
  "productName": "Kendo UI for Angular",
36
43
  "productCode": "KENDOUIANGULAR",
37
- "publishDate": 1779188745,
44
+ "publishDate": 1779209895,
38
45
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
39
46
  }
40
47
  },
@@ -47,23 +54,23 @@
47
54
  "@progress/kendo-data-query": "^1.7.3",
48
55
  "@progress/kendo-drawing": "^1.25.0",
49
56
  "@progress/kendo-licensing": "^1.11.0",
50
- "@progress/kendo-angular-tooltip": "24.0.0-develop.37",
51
- "@progress/kendo-angular-buttons": "24.0.0-develop.37",
52
- "@progress/kendo-angular-common": "24.0.0-develop.37",
53
- "@progress/kendo-angular-dateinputs": "24.0.0-develop.37",
54
- "@progress/kendo-angular-dialog": "24.0.0-develop.37",
55
- "@progress/kendo-angular-dropdowns": "24.0.0-develop.37",
56
- "@progress/kendo-angular-icons": "24.0.0-develop.37",
57
- "@progress/kendo-angular-inputs": "24.0.0-develop.37",
58
- "@progress/kendo-angular-intl": "24.0.0-develop.37",
59
- "@progress/kendo-angular-l10n": "24.0.0-develop.37",
60
- "@progress/kendo-angular-label": "24.0.0-develop.37",
61
- "@progress/kendo-angular-popup": "24.0.0-develop.37",
57
+ "@progress/kendo-angular-tooltip": "24.0.0-develop.39",
58
+ "@progress/kendo-angular-buttons": "24.0.0-develop.39",
59
+ "@progress/kendo-angular-common": "24.0.0-develop.39",
60
+ "@progress/kendo-angular-dateinputs": "24.0.0-develop.39",
61
+ "@progress/kendo-angular-dialog": "24.0.0-develop.39",
62
+ "@progress/kendo-angular-dropdowns": "24.0.0-develop.39",
63
+ "@progress/kendo-angular-icons": "24.0.0-develop.39",
64
+ "@progress/kendo-angular-inputs": "24.0.0-develop.39",
65
+ "@progress/kendo-angular-intl": "24.0.0-develop.39",
66
+ "@progress/kendo-angular-l10n": "24.0.0-develop.39",
67
+ "@progress/kendo-angular-label": "24.0.0-develop.39",
68
+ "@progress/kendo-angular-popup": "24.0.0-develop.39",
62
69
  "rxjs": "^6.5.3 || ^7.0.0"
63
70
  },
64
71
  "dependencies": {
65
72
  "tslib": "^2.3.1",
66
- "@progress/kendo-angular-schematics": "24.0.0-develop.37",
73
+ "@progress/kendo-angular-schematics": "24.0.0-develop.39",
67
74
  "@progress/kendo-date-math": "^1.3.2",
68
75
  "@progress/kendo-draggable": "^3.0.2",
69
76
  "@progress/kendo-file-saver": "^1.0.7",
@@ -9,10 +9,10 @@ const schematics_1 = require("@angular-devkit/schematics");
9
9
  function default_1(options) {
10
10
  const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'SchedulerModule', package: 'scheduler', peerDependencies: {
11
11
  // peer deps of the dropdowns
12
- '@progress/kendo-angular-treeview': '24.0.0-develop.37',
13
- '@progress/kendo-angular-navigation': '24.0.0-develop.37',
12
+ '@progress/kendo-angular-treeview': '24.0.0-develop.39',
13
+ '@progress/kendo-angular-navigation': '24.0.0-develop.39',
14
14
  // peer dependency of kendo-angular-inputs
15
- '@progress/kendo-angular-dialog': '24.0.0-develop.37',
15
+ '@progress/kendo-angular-dialog': '24.0.0-develop.39',
16
16
  // peer dependency of kendo-angular-icons
17
17
  '@progress/kendo-svg-icons': '^4.0.0'
18
18
  } });