@progress/kendo-angular-layout 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.
- package/codemods/libs/common/src/codemods/utils.js +53 -18
- package/codemods/libs/layout/codemods/v24/drawer-miniwidth.js +50 -0
- package/codemods/libs/layout/codemods/v24/layout-rendering-changes.js +46 -0
- package/codemods/libs/layout/codemods/v24/themecolor-light-dark.js +50 -0
- package/fesm2022/progress-kendo-angular-layout.mjs +20 -12
- package/package-metadata.mjs +2 -2
- package/package.json +25 -9
|
@@ -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,50 @@
|
|
|
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 = void 0;
|
|
8
|
+
exports.default = default_1;
|
|
9
|
+
const codemods_1 = require("@progress/kendo-angular-common/codemods");
|
|
10
|
+
// Detects on `mini`, not `miniWidth`, because the default removal only matters
|
|
11
|
+
// when mini mode is active. Without `[mini]`, `miniWidth` has no visible effect.
|
|
12
|
+
const drawerMiniPattern = /<kendo-drawer[^>]*\bmini\b(?!Width)/;
|
|
13
|
+
function default_1(fileInfo, api) {
|
|
14
|
+
const filePath = fileInfo.path;
|
|
15
|
+
if (!(0, codemods_1.isApiChangeTarget)(filePath)) {
|
|
16
|
+
return fileInfo.source;
|
|
17
|
+
}
|
|
18
|
+
if (filePath.endsWith('.html')) {
|
|
19
|
+
if (drawerMiniPattern.test(fileInfo.source)) {
|
|
20
|
+
(0, codemods_1.writeInstructionMarker)(exports.aiInstructions, __filename, fileInfo.path);
|
|
21
|
+
}
|
|
22
|
+
return fileInfo.source;
|
|
23
|
+
}
|
|
24
|
+
let patternDetected = false;
|
|
25
|
+
(0, codemods_1.htmlTransformer)(fileInfo, api, (templateContent) => {
|
|
26
|
+
if (drawerMiniPattern.test(templateContent)) {
|
|
27
|
+
patternDetected = true;
|
|
28
|
+
}
|
|
29
|
+
return templateContent;
|
|
30
|
+
});
|
|
31
|
+
const j = api.jscodeshift;
|
|
32
|
+
const rootSource = j(fileInfo.source);
|
|
33
|
+
const hasDrawerImport = (0, codemods_1.isImportedFromPackage)(rootSource, j, '@progress/kendo-angular-layout', 'DrawerComponent');
|
|
34
|
+
if (patternDetected || hasDrawerImport) {
|
|
35
|
+
(0, codemods_1.writeInstructionMarker)(exports.aiInstructions, __filename, fileInfo.path);
|
|
36
|
+
}
|
|
37
|
+
return fileInfo.source;
|
|
38
|
+
}
|
|
39
|
+
exports.aiInstructions = `The DrawerComponent's 'miniWidth' property no longer defaults to 50.
|
|
40
|
+
The mini view width is now determined by the used Kendo Theme.
|
|
41
|
+
|
|
42
|
+
If you relied on the default value of 50 and want to preserve the old behavior, explicitly set 'miniWidth':
|
|
43
|
+
|
|
44
|
+
Before (implicit width of 50 when mini is enabled):
|
|
45
|
+
<kendo-drawer [mini]="true" ...></kendo-drawer>
|
|
46
|
+
|
|
47
|
+
After (explicit width to preserve old behavior):
|
|
48
|
+
<kendo-drawer [mini]="true" [miniWidth]="50" ...></kendo-drawer>
|
|
49
|
+
|
|
50
|
+
Alternatively, remove any explicit miniWidth binding to let the active Kendo Theme control the mini view width.`;
|
|
@@ -0,0 +1,46 @@
|
|
|
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.aiInstructionsChipAvatar = exports.aiInstructionsChipListSelection = exports.aiInstructionsTimelineButton = exports.aiInstructionsHbox = void 0;
|
|
8
|
+
exports.default = default_1;
|
|
9
|
+
const codemods_1 = require("@progress/kendo-angular-common/codemods");
|
|
10
|
+
exports.aiInstructionsHbox = `k-hbox — no longer applied in the ActionSheet.
|
|
11
|
+
Remove any CSS rules or test assertions targeting .k-hbox in ActionSheet context.`;
|
|
12
|
+
exports.aiInstructionsTimelineButton = `Timeline collapse/expand button — now rendered as <button> elements instead of <a> elements.
|
|
13
|
+
Update any CSS selectors or test assertions targeting a.k-button or anchor elements for Timeline collapse/expand buttons to use button elements instead.`;
|
|
14
|
+
exports.aiInstructionsChipListSelection = `k-selection-single and k-selection-multiple — no longer applied in the ChipList.
|
|
15
|
+
Remove any CSS rules or test assertions targeting .k-selection-single or .k-selection-multiple on ChipList elements.`;
|
|
16
|
+
exports.aiInstructionsChipAvatar = `k-avatar-sm, k-avatar-solid, k-avatar-solid-primary, k-rounded-full — no longer applied for the avatar of the Chip component.
|
|
17
|
+
Remove any CSS rules or test assertions targeting these classes in the Chip avatar context.`;
|
|
18
|
+
exports.aiInstructions = `Review your stylesheets, test files, and any code that references these Layout classes:
|
|
19
|
+
|
|
20
|
+
${exports.aiInstructionsHbox}
|
|
21
|
+
|
|
22
|
+
${exports.aiInstructionsTimelineButton}
|
|
23
|
+
|
|
24
|
+
${exports.aiInstructionsChipListSelection}
|
|
25
|
+
|
|
26
|
+
${exports.aiInstructionsChipAvatar}`;
|
|
27
|
+
const patternHbox = (0, codemods_1.makePattern)(['k-hbox']);
|
|
28
|
+
const patternSelectionSingle = (0, codemods_1.makePattern)(['k-selection-single']);
|
|
29
|
+
const patternSelectionMultiple = (0, codemods_1.makePattern)(['k-selection-multiple']);
|
|
30
|
+
const patternAvatarSm = (0, codemods_1.makePattern)(['k-avatar-sm']);
|
|
31
|
+
const patternAvatarSolid = (0, codemods_1.makePattern)(['k-avatar-solid']);
|
|
32
|
+
const patternRoundedFull = (0, codemods_1.makePattern)(['k-rounded-full']);
|
|
33
|
+
function default_1(fileInfo) {
|
|
34
|
+
if ((0, codemods_1.isRenderingChangeTarget)(fileInfo.path)) {
|
|
35
|
+
if (patternHbox.test(fileInfo.source)) {
|
|
36
|
+
(0, codemods_1.writeInstructionMarker)(exports.aiInstructionsHbox, __filename, fileInfo.path);
|
|
37
|
+
}
|
|
38
|
+
if (patternSelectionSingle.test(fileInfo.source) || patternSelectionMultiple.test(fileInfo.source)) {
|
|
39
|
+
(0, codemods_1.writeInstructionMarker)(exports.aiInstructionsChipListSelection, __filename, fileInfo.path);
|
|
40
|
+
}
|
|
41
|
+
if (patternAvatarSm.test(fileInfo.source) || patternAvatarSolid.test(fileInfo.source) || patternRoundedFull.test(fileInfo.source)) {
|
|
42
|
+
(0, codemods_1.writeInstructionMarker)(exports.aiInstructionsChipAvatar, __filename, fileInfo.path);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return fileInfo.source;
|
|
46
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 = void 0;
|
|
8
|
+
exports.default = default_1;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const fs = tslib_1.__importStar(require("fs"));
|
|
11
|
+
const codemods_1 = require("@progress/kendo-angular-common/codemods");
|
|
12
|
+
exports.aiInstructions = `AvatarThemeColor no longer accepts 'light', 'dark', 'success', 'warning', 'error', 'info', 'inverse'.
|
|
13
|
+
Replace any use of the unsupported values with a supported value: 'base', 'primary', 'secondary', 'tertiary'.
|
|
14
|
+
|
|
15
|
+
Static template bindings were removed automatically, which means the component now uses its default themeColor.
|
|
16
|
+
If you want to explicitly set a new value, re-add the attribute with a supported one:
|
|
17
|
+
Before: (removed by codemod — no themeColor attribute)
|
|
18
|
+
After: themeColor="base"
|
|
19
|
+
|
|
20
|
+
The following patterns could not be migrated automatically and require an additional update:
|
|
21
|
+
|
|
22
|
+
Dynamic binding:
|
|
23
|
+
Before: [themeColor]="color" (where color may be 'light' or 'dark')
|
|
24
|
+
After: [themeColor]="color" (ensure color is a supported value)
|
|
25
|
+
|
|
26
|
+
Conditional expression — replace both branch values:
|
|
27
|
+
Before: [themeColor]="isDark ? 'dark' : 'light'"
|
|
28
|
+
After: [themeColor]="isDark ? 'tertiary' : 'base'"
|
|
29
|
+
|
|
30
|
+
TypeScript assignment — update the assigned value:
|
|
31
|
+
Before: this.avatar.themeColor = 'light';
|
|
32
|
+
After: this.avatar.themeColor = 'base';`;
|
|
33
|
+
const REMOVED_VALUES = ['light', 'dark', 'success', 'warning', 'error', 'info', 'inverse'];
|
|
34
|
+
function default_1(fileInfo, api) {
|
|
35
|
+
const filePath = fileInfo.path;
|
|
36
|
+
if (!(0, codemods_1.isApiChangeTarget)(filePath)) {
|
|
37
|
+
return fileInfo.source;
|
|
38
|
+
}
|
|
39
|
+
const htmlResult = (0, codemods_1.htmlTransformer)(fileInfo, api, (templateContent) => {
|
|
40
|
+
return (0, codemods_1.attributeConditionalRemoval)(templateContent, 'kendo-avatar', 'themeColor', REMOVED_VALUES);
|
|
41
|
+
});
|
|
42
|
+
if (filePath.endsWith('.html')) {
|
|
43
|
+
if (htmlResult && htmlResult !== fileInfo.source) {
|
|
44
|
+
fs.writeFileSync(filePath, htmlResult, 'utf-8');
|
|
45
|
+
return htmlResult;
|
|
46
|
+
}
|
|
47
|
+
return fileInfo.source;
|
|
48
|
+
}
|
|
49
|
+
return htmlResult || fileInfo.source;
|
|
50
|
+
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable, Directive, Optional, isDevMode, ContentChildren, ViewChildren, HostBinding, ViewChild, Input, SkipSelf, Host, Component, EventEmitter, HostListener, ContentChild, Output, Inject, QueryList, NgZone,
|
|
6
|
+
import { Injectable, Directive, Optional, isDevMode, ContentChildren, ViewChildren, HostBinding, ViewChild, Input, SkipSelf, Host, Component, EventEmitter, forwardRef, HostListener, ContentChild, Output, Inject, QueryList, NgZone, ElementRef, ViewEncapsulation, TemplateRef, NgModule } from '@angular/core';
|
|
7
7
|
import * as i1 from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
|
|
9
9
|
import * as i1$1 from '@progress/kendo-angular-common';
|
|
10
|
-
import { Keys, getLicenseMessage, shouldShowValidationUI, normalizeKeys, WatermarkOverlayComponent, isDocumentAvailable, anyChanged, isObjectPresent, removeHTMLAttributes, parseAttributes, setHTMLAttributes, DraggableDirective, PreventableEvent as PreventableEvent$1, guid, ResizeSensorComponent, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged } from '@progress/kendo-angular-common';
|
|
10
|
+
import { Keys, getLicenseMessage, shouldShowValidationUI, normalizeKeys, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, isDocumentAvailable, anyChanged, isObjectPresent, removeHTMLAttributes, parseAttributes, setHTMLAttributes, DraggableDirective, PreventableEvent as PreventableEvent$1, guid, ResizeSensorComponent, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged } from '@progress/kendo-angular-common';
|
|
11
11
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
12
|
import * as i2 from '@angular/animations';
|
|
13
13
|
import { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';
|
|
@@ -29,8 +29,8 @@ const packageMetadata = {
|
|
|
29
29
|
productName: 'Kendo UI for Angular',
|
|
30
30
|
productCode: 'KENDOUIANGULAR',
|
|
31
31
|
productCodes: ['KENDOUIANGULAR'],
|
|
32
|
-
publishDate:
|
|
33
|
-
version: '24.0.0-develop.
|
|
32
|
+
publishDate: 1779209692,
|
|
33
|
+
version: '24.0.0-develop.39',
|
|
34
34
|
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'
|
|
35
35
|
};
|
|
36
36
|
|
|
@@ -1659,7 +1659,8 @@ class PanelBarComponent {
|
|
|
1659
1659
|
{
|
|
1660
1660
|
provide: L10N_PREFIX,
|
|
1661
1661
|
useValue: 'kendo.panelbar'
|
|
1662
|
-
}
|
|
1662
|
+
},
|
|
1663
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => PanelBarComponent) }
|
|
1663
1664
|
], queries: [{ propertyName: "template", first: true, predicate: PanelBarItemTemplateDirective, descendants: true }, { propertyName: "contentItems", predicate: PanelBarItemComponent, descendants: true }, { propertyName: "contentChildItems", predicate: PanelBarItemComponent }], viewQueries: [{ propertyName: "viewChildItems", predicate: PanelBarItemComponent, descendants: true }], exportAs: ["kendoPanelbar"], usesOnChanges: true, ngImport: i0, template: `
|
|
1664
1665
|
@if (contentChildItems && !items) {
|
|
1665
1666
|
<ng-content select="kendo-panelbar-item"></ng-content>
|
|
@@ -1701,7 +1702,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
1701
1702
|
{
|
|
1702
1703
|
provide: L10N_PREFIX,
|
|
1703
1704
|
useValue: 'kendo.panelbar'
|
|
1704
|
-
}
|
|
1705
|
+
},
|
|
1706
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => PanelBarComponent) }
|
|
1705
1707
|
],
|
|
1706
1708
|
selector: 'kendo-panelbar',
|
|
1707
1709
|
template: `
|
|
@@ -4636,7 +4638,8 @@ class TabStripComponent {
|
|
|
4636
4638
|
{
|
|
4637
4639
|
provide: L10N_PREFIX,
|
|
4638
4640
|
useValue: 'kendo.tabstrip'
|
|
4639
|
-
}
|
|
4641
|
+
},
|
|
4642
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TabStripComponent) }
|
|
4640
4643
|
], queries: [{ propertyName: "tabs", predicate: TabStripTabComponent }], viewQueries: [{ propertyName: "tablist", first: true, predicate: ["tablist"], descendants: true }, { propertyName: "prevScrollButton", first: true, predicate: ["prevScrollButton"], descendants: true }, { propertyName: "nextScrollButton", first: true, predicate: ["nextScrollButton"], descendants: true }, { propertyName: "tabHeaderContainers", predicate: ["tabHeaderContainer"], descendants: true, read: ElementRef }], exportAs: ["kendoTabStrip"], usesOnChanges: true, ngImport: i0, template: `
|
|
4641
4644
|
<ng-container kendoTabStripLocalizedMessages
|
|
4642
4645
|
i18n-closeTitle="kendo.tabstrip.closeTitle|The title for the **Close** button in the TabStrip tab."
|
|
@@ -4826,7 +4829,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
4826
4829
|
{
|
|
4827
4830
|
provide: L10N_PREFIX,
|
|
4828
4831
|
useValue: 'kendo.tabstrip'
|
|
4829
|
-
}
|
|
4832
|
+
},
|
|
4833
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TabStripComponent) }
|
|
4830
4834
|
],
|
|
4831
4835
|
exportAs: 'kendoTabStrip',
|
|
4832
4836
|
selector: 'kendo-tabstrip',
|
|
@@ -6046,7 +6050,8 @@ class DrawerComponent {
|
|
|
6046
6050
|
{
|
|
6047
6051
|
provide: L10N_PREFIX,
|
|
6048
6052
|
useValue: 'kendo.drawer'
|
|
6049
|
-
}
|
|
6053
|
+
},
|
|
6054
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DrawerComponent) }
|
|
6050
6055
|
], queries: [{ propertyName: "drawerTemplate", first: true, predicate: DrawerTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: DrawerFooterTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: DrawerHeaderTemplateDirective, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: DrawerItemTemplateDirective, descendants: true }], exportAs: ["kendoDrawer"], usesOnChanges: true, ngImport: i0, template: `
|
|
6051
6056
|
@if (expanded || mini || animation) {
|
|
6052
6057
|
<div class="k-drawer-wrapper"
|
|
@@ -6097,7 +6102,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
6097
6102
|
{
|
|
6098
6103
|
provide: L10N_PREFIX,
|
|
6099
6104
|
useValue: 'kendo.drawer'
|
|
6100
|
-
}
|
|
6105
|
+
},
|
|
6106
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DrawerComponent) }
|
|
6101
6107
|
],
|
|
6102
6108
|
selector: 'kendo-drawer',
|
|
6103
6109
|
template: `
|
|
@@ -7524,7 +7530,8 @@ class StepperComponent {
|
|
|
7524
7530
|
{
|
|
7525
7531
|
provide: L10N_PREFIX,
|
|
7526
7532
|
useValue: 'kendo.stepper'
|
|
7527
|
-
}
|
|
7533
|
+
},
|
|
7534
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => StepperComponent) }
|
|
7528
7535
|
], queries: [{ propertyName: "stepTemplate", first: true, predicate: StepperStepTemplateDirective, descendants: true }, { propertyName: "labelTemplate", first: true, predicate: StepperLabelTemplateDirective, descendants: true }, { propertyName: "indicatorTemplate", first: true, predicate: StepperIndicatorTemplateDirective, descendants: true }], exportAs: ["kendoStepper"], usesOnChanges: true, ngImport: i0, template: `
|
|
7529
7536
|
<ng-container kendoStepperLocalizedMessages
|
|
7530
7537
|
i18n-optional="kendo.stepper.optional|The text for the optional segment of the step label"
|
|
@@ -7578,7 +7585,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
7578
7585
|
{
|
|
7579
7586
|
provide: L10N_PREFIX,
|
|
7580
7587
|
useValue: 'kendo.stepper'
|
|
7581
|
-
}
|
|
7588
|
+
},
|
|
7589
|
+
{ provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => StepperComponent) }
|
|
7582
7590
|
],
|
|
7583
7591
|
selector: 'kendo-stepper',
|
|
7584
7592
|
template: `
|
package/package-metadata.mjs
CHANGED
|
@@ -7,7 +7,7 @@ export const packageMetadata = {
|
|
|
7
7
|
"productCodes": [
|
|
8
8
|
"KENDOUIANGULAR"
|
|
9
9
|
],
|
|
10
|
-
"publishDate":
|
|
11
|
-
"version": "24.0.0-develop.
|
|
10
|
+
"publishDate": 1779209692,
|
|
11
|
+
"version": "24.0.0-develop.39",
|
|
12
12
|
"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"
|
|
13
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-layout",
|
|
3
|
-
"version": "24.0.0-develop.
|
|
3
|
+
"version": "24.0.0-develop.39",
|
|
4
4
|
"description": "Kendo UI for Angular Layout Package - a collection of components to create professional application layoyts",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -57,13 +57,29 @@
|
|
|
57
57
|
"file": "codemods/v21/layout-rendering-changes.js",
|
|
58
58
|
"instructionsOnly": true
|
|
59
59
|
}
|
|
60
|
+
],
|
|
61
|
+
"24": [
|
|
62
|
+
{
|
|
63
|
+
"description": "The ActionSheet, Timeline, ChipList, and Chip components have rendering changes that may affect custom styling.",
|
|
64
|
+
"file": "codemods/v24/layout-rendering-changes.js",
|
|
65
|
+
"instructionsOnly": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"description": "AvatarThemeColor no longer accepts 'light', 'dark', 'success', 'warning', 'error', 'info', or 'inverse' values.",
|
|
69
|
+
"file": "codemods/v24/themecolor-light-dark.js"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"description": "The DrawerComponent's 'miniWidth' property no longer defaults to 50. The mini view width is now determined by the used Kendo Theme.",
|
|
73
|
+
"file": "codemods/v24/drawer-miniwidth.js",
|
|
74
|
+
"instructionsOnly": true
|
|
75
|
+
}
|
|
60
76
|
]
|
|
61
77
|
}
|
|
62
78
|
},
|
|
63
79
|
"package": {
|
|
64
80
|
"productName": "Kendo UI for Angular",
|
|
65
81
|
"productCode": "KENDOUIANGULAR",
|
|
66
|
-
"publishDate":
|
|
82
|
+
"publishDate": 1779209692,
|
|
67
83
|
"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"
|
|
68
84
|
}
|
|
69
85
|
},
|
|
@@ -73,17 +89,17 @@
|
|
|
73
89
|
"@angular/core": "19 - 21",
|
|
74
90
|
"@angular/platform-browser": "19 - 21",
|
|
75
91
|
"@progress/kendo-licensing": "^1.11.0",
|
|
76
|
-
"@progress/kendo-angular-common": "24.0.0-develop.
|
|
77
|
-
"@progress/kendo-angular-l10n": "24.0.0-develop.
|
|
78
|
-
"@progress/kendo-angular-progressbar": "24.0.0-develop.
|
|
79
|
-
"@progress/kendo-angular-icons": "24.0.0-develop.
|
|
80
|
-
"@progress/kendo-angular-buttons": "24.0.0-develop.
|
|
81
|
-
"@progress/kendo-angular-intl": "24.0.0-develop.
|
|
92
|
+
"@progress/kendo-angular-common": "24.0.0-develop.39",
|
|
93
|
+
"@progress/kendo-angular-l10n": "24.0.0-develop.39",
|
|
94
|
+
"@progress/kendo-angular-progressbar": "24.0.0-develop.39",
|
|
95
|
+
"@progress/kendo-angular-icons": "24.0.0-develop.39",
|
|
96
|
+
"@progress/kendo-angular-buttons": "24.0.0-develop.39",
|
|
97
|
+
"@progress/kendo-angular-intl": "24.0.0-develop.39",
|
|
82
98
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
83
99
|
},
|
|
84
100
|
"dependencies": {
|
|
85
101
|
"tslib": "^2.3.1",
|
|
86
|
-
"@progress/kendo-angular-schematics": "24.0.0-develop.
|
|
102
|
+
"@progress/kendo-angular-schematics": "24.0.0-develop.39",
|
|
87
103
|
"@progress/kendo-draggable": "^3.0.2"
|
|
88
104
|
},
|
|
89
105
|
"schematics": "./schematics/collection.json",
|