@progress/kendo-angular-dateinputs 24.0.0-develop.38 → 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,25 @@
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.aiInstructionsGroupStartEnd = void 0;
8
+ exports.default = default_1;
9
+ const codemods_1 = require("@progress/kendo-angular-common/codemods");
10
+ exports.aiInstructionsGroupStartEnd = `k-group-start and k-group-end — removed from DateTimePicker.
11
+ The DateTimePicker now uses SegmentedControl instead of buttons for switching between date and time pickers in the popup.
12
+ Remove any CSS rules or test assertions targeting .k-group-start or .k-group-end within the DateTimePicker context.`;
13
+ exports.aiInstructions = `Review your stylesheets, test files, and any code that references these DateTimePicker classes:
14
+
15
+ ${exports.aiInstructionsGroupStartEnd}`;
16
+ const patternGroupStart = (0, codemods_1.makePattern)(['k-group-start']);
17
+ const patternGroupEnd = (0, codemods_1.makePattern)(['k-group-end']);
18
+ function default_1(fileInfo) {
19
+ if ((0, codemods_1.isRenderingChangeTarget)(fileInfo.path)) {
20
+ if (patternGroupStart.test(fileInfo.source) || patternGroupEnd.test(fileInfo.source)) {
21
+ (0, codemods_1.writeInstructionMarker)(exports.aiInstructionsGroupStartEnd, __filename, fileInfo.path);
22
+ }
23
+ }
24
+ return fileInfo.source;
25
+ }
@@ -45,10 +45,10 @@ export declare class DateInputIntl {
45
45
  * Represents the [Kendo UI DateInput component for Angular](https://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput).
46
46
  *
47
47
  * ```html
48
- * <kendo-dateinput/>
48
+ * <kendo-dateinput></kendo-dateinput>
49
49
  * ```
50
50
  *
51
- * @remarks
51
+ * @remarks
52
52
  * Supported children components are: {@link DateInputCustomMessagesComponent}.
53
53
  */
54
54
  export declare class DateInputComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges, OnDestroy, Validator {
@@ -425,6 +425,9 @@ export declare class DateInputComponent implements OnInit, AfterViewInit, Contro
425
425
  * @hidden
426
426
  */
427
427
  writeValue(value: Date): void;
428
+ /**
429
+ * Resets the value of the DateInput component to `null` and triggers the `valueChange` event.
430
+ */
428
431
  resetInput(): void;
429
432
  /**
430
433
  * @hidden
@@ -36,8 +36,8 @@ const packageMetadata = {
36
36
  productName: 'Kendo UI for Angular',
37
37
  productCode: 'KENDOUIANGULAR',
38
38
  productCodes: ['KENDOUIANGULAR'],
39
- publishDate: 1779191999,
40
- version: '24.0.0-develop.38',
39
+ publishDate: 1779209773,
40
+ version: '24.0.0-develop.39',
41
41
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
42
42
  };
43
43
 
@@ -8583,10 +8583,10 @@ class DateInputIntl {
8583
8583
  * Represents the [Kendo UI DateInput component for Angular](https://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput).
8584
8584
  *
8585
8585
  * ```html
8586
- * <kendo-dateinput/>
8586
+ * <kendo-dateinput></kendo-dateinput>
8587
8587
  * ```
8588
8588
  *
8589
- * @remarks
8589
+ * @remarks
8590
8590
  * Supported children components are: {@link DateInputCustomMessagesComponent}.
8591
8591
  */
8592
8592
  class DateInputComponent {
@@ -9198,6 +9198,9 @@ class DateInputComponent {
9198
9198
  this.kendoDate?.refreshElementValue();
9199
9199
  this.cdr.markForCheck();
9200
9200
  }
9201
+ /**
9202
+ * Resets the value of the DateInput component to `null` and triggers the `valueChange` event.
9203
+ */
9201
9204
  resetInput() {
9202
9205
  this.isDateIncomplete = false;
9203
9206
  this.writeValue(null);
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1779191999,
11
- "version": "24.0.0-develop.38",
10
+ "publishDate": 1779209773,
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-dateinputs",
3
- "version": "24.0.0-develop.38",
3
+ "version": "24.0.0-develop.39",
4
4
  "description": "Kendo UI for Angular Date Inputs Package - Everything you need to add date selection functionality to apps (DatePicker, TimePicker, DateInput, DateRangePicker, DateTimePicker, Calendar, and MultiViewCalendar).",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -94,13 +94,20 @@
94
94
  "file": "codemods/v23/calendar-rendering-changes.js",
95
95
  "instructionsOnly": true
96
96
  }
97
+ ],
98
+ "24": [
99
+ {
100
+ "description": "The DateTimePicker now uses SegmentedControl instead of ButtonGroup. k-group-start and k-group-end classes are removed.",
101
+ "file": "codemods/v24/datetimepicker-rendering-changes.js",
102
+ "instructionsOnly": true
103
+ }
97
104
  ]
98
105
  }
99
106
  },
100
107
  "package": {
101
108
  "productName": "Kendo UI for Angular",
102
109
  "productCode": "KENDOUIANGULAR",
103
- "publishDate": 1779191999,
110
+ "publishDate": 1779209773,
104
111
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
105
112
  }
106
113
  },
@@ -111,19 +118,19 @@
111
118
  "@angular/forms": "19 - 21",
112
119
  "@angular/platform-browser": "19 - 21",
113
120
  "@progress/kendo-licensing": "^1.11.0",
114
- "@progress/kendo-angular-buttons": "24.0.0-develop.38",
115
- "@progress/kendo-angular-common": "24.0.0-develop.38",
116
- "@progress/kendo-angular-utils": "24.0.0-develop.38",
117
- "@progress/kendo-angular-intl": "24.0.0-develop.38",
118
- "@progress/kendo-angular-l10n": "24.0.0-develop.38",
119
- "@progress/kendo-angular-icons": "24.0.0-develop.38",
120
- "@progress/kendo-angular-popup": "24.0.0-develop.38",
121
- "@progress/kendo-angular-navigation": "24.0.0-develop.38",
121
+ "@progress/kendo-angular-buttons": "24.0.0-develop.39",
122
+ "@progress/kendo-angular-common": "24.0.0-develop.39",
123
+ "@progress/kendo-angular-utils": "24.0.0-develop.39",
124
+ "@progress/kendo-angular-intl": "24.0.0-develop.39",
125
+ "@progress/kendo-angular-l10n": "24.0.0-develop.39",
126
+ "@progress/kendo-angular-icons": "24.0.0-develop.39",
127
+ "@progress/kendo-angular-popup": "24.0.0-develop.39",
128
+ "@progress/kendo-angular-navigation": "24.0.0-develop.39",
122
129
  "rxjs": "^6.5.3 || ^7.0.0"
123
130
  },
124
131
  "dependencies": {
125
132
  "tslib": "^2.3.1",
126
- "@progress/kendo-angular-schematics": "24.0.0-develop.38",
133
+ "@progress/kendo-angular-schematics": "24.0.0-develop.39",
127
134
  "@progress/kendo-common": "^1.0.1",
128
135
  "@progress/kendo-date-math": "^1.1.0",
129
136
  "@progress/kendo-dateinputs-common": "^0.4.11"