@progress/kendo-angular-layout 23.4.0-develop.1 → 23.4.0-develop.3
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/utils.js +63 -1
- package/codemods/v18/layout-rendering-changes.js +23 -0
- package/codemods/v19/tabstrip-mousescrollspeed.js +19 -0
- package/codemods/v21/layout-rendering-changes.js +23 -0
- package/fesm2022/progress-kendo-angular-layout.mjs +2 -2
- package/package-metadata.mjs +2 -2
- package/package.json +25 -11
package/codemods/utils.js
CHANGED
|
@@ -3,11 +3,40 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
"use strict";
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
6
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
30
|
exports.tsInterfaceTransformer = exports.tsPropertyValueTransformer = exports.tsPropertyTransformer = exports.tsComponentPropertyRemoval = exports.attributeRemoval = exports.attributeValueUpdate = exports.attributeNameValueUpdate = exports.attributeNameUpdate = exports.eventUpdate = exports.htmlTransformer = exports.blockTextElements = void 0;
|
|
8
31
|
exports.hasKendoInTemplate = hasKendoInTemplate;
|
|
9
32
|
exports.isImportedFromPackage = isImportedFromPackage;
|
|
10
33
|
exports.tsPropertyRemoval = tsPropertyRemoval;
|
|
34
|
+
exports.makePattern = makePattern;
|
|
35
|
+
exports.writeInstructionMarker = writeInstructionMarker;
|
|
36
|
+
exports.isApiChangeTarget = isApiChangeTarget;
|
|
37
|
+
exports.isRenderingChangeTarget = isRenderingChangeTarget;
|
|
38
|
+
const fs = __importStar(require("node:fs"));
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
11
40
|
exports.blockTextElements = {
|
|
12
41
|
script: true,
|
|
13
42
|
noscript: true,
|
|
@@ -575,7 +604,7 @@ const tsComponentPropertyRemoval = (source, root, j, packageName, componentType,
|
|
|
575
604
|
localVariables.add(path.node.id.name);
|
|
576
605
|
}
|
|
577
606
|
});
|
|
578
|
-
// Find array variables of type componentType[]
|
|
607
|
+
// Find array variables of type componentType[]
|
|
579
608
|
// This handles cases like: const arr: ChatComponent[] = [...]; arr[0].property = value;
|
|
580
609
|
const arrayVariables = new Set();
|
|
581
610
|
root.find(j.VariableDeclarator).forEach((path) => {
|
|
@@ -1366,3 +1395,36 @@ function isComponentTypeMatch(root, j, node, componentType) {
|
|
|
1366
1395
|
}
|
|
1367
1396
|
return false;
|
|
1368
1397
|
}
|
|
1398
|
+
// Matches CSS class names in CSS selectors (.foo) and as whitespace/quote-delimited
|
|
1399
|
+
// tokens within attribute values, covering both single-class ("foo") and multi-class ("foo bar") cases.
|
|
1400
|
+
function makePattern(classes) {
|
|
1401
|
+
return new RegExp(classes.map(c => String.raw `\.${c}\b|(?<=["'\s])${c}(?=["'\s])`).join('|'));
|
|
1402
|
+
}
|
|
1403
|
+
function writeInstructionMarker(instruction, codemodFilename, affectedFile) {
|
|
1404
|
+
// Write to node_modules/.kendo/migration/<basename(codemodFilename)>
|
|
1405
|
+
// kendo-cli reads the marker by looking up basename(codemod.file) in that directory
|
|
1406
|
+
const markerDir = path.join(process.cwd(), 'node_modules', '.kendo', 'migration');
|
|
1407
|
+
const markerPath = path.join(markerDir, path.basename(codemodFilename));
|
|
1408
|
+
try {
|
|
1409
|
+
fs.mkdirSync(markerDir, { recursive: true });
|
|
1410
|
+
const existing = fs.existsSync(markerPath) ? fs.readFileSync(markerPath, 'utf8') : '';
|
|
1411
|
+
let content = existing;
|
|
1412
|
+
if (!existing.includes(instruction)) {
|
|
1413
|
+
content += instruction + '\n';
|
|
1414
|
+
}
|
|
1415
|
+
const fileLine = ` - ${path.relative(process.cwd(), affectedFile)}`;
|
|
1416
|
+
if (!content.includes(fileLine)) {
|
|
1417
|
+
content += fileLine + '\n';
|
|
1418
|
+
}
|
|
1419
|
+
fs.writeFileSync(markerPath, content);
|
|
1420
|
+
}
|
|
1421
|
+
catch { /* suppress error */ }
|
|
1422
|
+
}
|
|
1423
|
+
function isApiChangeTarget(filePath) {
|
|
1424
|
+
const ext = path.extname(filePath);
|
|
1425
|
+
return ext === '.ts' || ext === '.html';
|
|
1426
|
+
}
|
|
1427
|
+
function isRenderingChangeTarget(filePath) {
|
|
1428
|
+
const ext = path.extname(filePath);
|
|
1429
|
+
return ext === '.ts' || ext === '.html' || ext === '.css' || ext === '.scss' || ext === '.sass' || ext === '.less';
|
|
1430
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 utils_1 = require("../utils");
|
|
10
|
+
exports.aiInstructions = `Review your stylesheets, test files, and any code that references the k-header class. It has been removed from the TabStrip.
|
|
11
|
+
Before: <div class="k-tabstrip k-header">
|
|
12
|
+
After: <div class="k-tabstrip">
|
|
13
|
+
Remove any CSS rules or selectors that target .k-tabstrip.k-header or rely on k-header being present on the TabStrip.`;
|
|
14
|
+
const classes = ['k-header'];
|
|
15
|
+
const pattern = (0, utils_1.makePattern)(classes);
|
|
16
|
+
function default_1(fileInfo) {
|
|
17
|
+
if ((0, utils_1.isRenderingChangeTarget)(fileInfo.path)) {
|
|
18
|
+
if (pattern.test(fileInfo.source)) {
|
|
19
|
+
(0, utils_1.writeInstructionMarker)(exports.aiInstructions, __filename, fileInfo.path);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return fileInfo.source;
|
|
23
|
+
}
|
|
@@ -27,11 +27,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
27
|
return result;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.aiInstructions = void 0;
|
|
30
31
|
exports.default = default_1;
|
|
31
32
|
const fs = __importStar(require("fs"));
|
|
32
33
|
const utils_1 = require("../utils");
|
|
33
34
|
function default_1(fileInfo, api) {
|
|
34
35
|
const filePath = fileInfo.path;
|
|
36
|
+
if (!(0, utils_1.isApiChangeTarget)(filePath)) {
|
|
37
|
+
return fileInfo.source;
|
|
38
|
+
}
|
|
35
39
|
// Handle HTML files and inline templates
|
|
36
40
|
const htmlResult = (0, utils_1.htmlTransformer)(fileInfo, api, (templateContent) => (0, utils_1.attributeRemoval)(templateContent, 'kendo-tabstrip', 'scrollable', 'mouseScrollSpeed'));
|
|
37
41
|
if (filePath.endsWith('.html')) {
|
|
@@ -48,3 +52,18 @@ function default_1(fileInfo, api) {
|
|
|
48
52
|
(0, utils_1.tsComponentPropertyRemoval)(fileInfo.source, rootSource, j, '@progress/kendo-angular-layout', 'TabStripComponent', 'scrollable', 'mouseScrollSpeed');
|
|
49
53
|
return rootSource.toSource();
|
|
50
54
|
}
|
|
55
|
+
exports.aiInstructions = `The TabStrip's 'mouseScrollSpeed' property has been removed without a replacement.
|
|
56
|
+
|
|
57
|
+
Previously, 'mouseScrollSpeed' inside the '[scrollable]' configuration object controlled how fast the tabs scroll on mouse wheel.
|
|
58
|
+
|
|
59
|
+
Before:
|
|
60
|
+
<kendo-tabstrip [scrollable]="{ mouseScrollSpeed: 3 }"></kendo-tabstrip>
|
|
61
|
+
|
|
62
|
+
const settings: TabStripScrollableSettings = { mouseScrollSpeed: 3 };
|
|
63
|
+
|
|
64
|
+
After:
|
|
65
|
+
<kendo-tabstrip [scrollable]="true"></kendo-tabstrip>
|
|
66
|
+
|
|
67
|
+
const settings: TabStripScrollableSettings = {};
|
|
68
|
+
|
|
69
|
+
Action: Remove any 'mouseScrollSpeed' references from your '[scrollable]' configuration. The scroll speed can no longer be customized.`;
|
|
@@ -0,0 +1,23 @@
|
|
|
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 utils_1 = require("../utils");
|
|
10
|
+
exports.aiInstructions = `Review your stylesheets, test files, and any code that references the k-item class. It has been removed from the k-tabstrip-item element.
|
|
11
|
+
Before: <li class="k-item k-tabstrip-item">
|
|
12
|
+
After: <li class="k-tabstrip-item">
|
|
13
|
+
Remove any CSS rules or selectors that target TabStrip items using .k-item alone or the combination .k-item.k-tabstrip-item. Use .k-tabstrip-item exclusively.`;
|
|
14
|
+
const classes = ['k-item', 'k-tabstrip-item'];
|
|
15
|
+
const pattern = (0, utils_1.makePattern)(classes);
|
|
16
|
+
function default_1(fileInfo) {
|
|
17
|
+
if ((0, utils_1.isRenderingChangeTarget)(fileInfo.path)) {
|
|
18
|
+
if (pattern.test(fileInfo.source)) {
|
|
19
|
+
(0, utils_1.writeInstructionMarker)(exports.aiInstructions, __filename, fileInfo.path);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return fileInfo.source;
|
|
23
|
+
}
|
|
@@ -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: '23.4.0-develop.
|
|
32
|
+
publishDate: 1776175378,
|
|
33
|
+
version: '23.4.0-develop.3',
|
|
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
|
|
package/package-metadata.mjs
CHANGED
|
@@ -7,7 +7,7 @@ export const packageMetadata = {
|
|
|
7
7
|
"productCodes": [
|
|
8
8
|
"KENDOUIANGULAR"
|
|
9
9
|
],
|
|
10
|
-
"publishDate":
|
|
11
|
-
"version": "23.4.0-develop.
|
|
10
|
+
"publishDate": 1776175378,
|
|
11
|
+
"version": "23.4.0-develop.3",
|
|
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": "23.4.0-develop.
|
|
3
|
+
"version": "23.4.0-develop.3",
|
|
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",
|
|
@@ -35,14 +35,28 @@
|
|
|
35
35
|
"migrations": {
|
|
36
36
|
"options": {
|
|
37
37
|
"parser": "tsx",
|
|
38
|
-
"pattern": "*.{ts,html}"
|
|
38
|
+
"pattern": "*.{ts,html,css,scss,sass,less}"
|
|
39
39
|
},
|
|
40
40
|
"codemods": {
|
|
41
|
+
"18": [
|
|
42
|
+
{
|
|
43
|
+
"description": "The Layout components have rendering changes that may affect custom styling.",
|
|
44
|
+
"file": "codemods/v18/layout-rendering-changes.js",
|
|
45
|
+
"instructionsOnly": true
|
|
46
|
+
}
|
|
47
|
+
],
|
|
41
48
|
"19": [
|
|
42
49
|
{
|
|
43
50
|
"description": "mousescrollspeed of TabStripScrollableSettings is deprecated",
|
|
44
51
|
"file": "codemods/v19/tabstrip-mousescrollspeed.js",
|
|
45
|
-
"prompt": "
|
|
52
|
+
"prompt": "false"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"21": [
|
|
56
|
+
{
|
|
57
|
+
"description": "The Layout components have rendering changes that may affect custom styling.",
|
|
58
|
+
"file": "codemods/v21/layout-rendering-changes.js",
|
|
59
|
+
"instructionsOnly": true
|
|
46
60
|
}
|
|
47
61
|
]
|
|
48
62
|
}
|
|
@@ -50,7 +64,7 @@
|
|
|
50
64
|
"package": {
|
|
51
65
|
"productName": "Kendo UI for Angular",
|
|
52
66
|
"productCode": "KENDOUIANGULAR",
|
|
53
|
-
"publishDate":
|
|
67
|
+
"publishDate": 1776175378,
|
|
54
68
|
"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"
|
|
55
69
|
}
|
|
56
70
|
},
|
|
@@ -60,17 +74,17 @@
|
|
|
60
74
|
"@angular/core": "19 - 21",
|
|
61
75
|
"@angular/platform-browser": "19 - 21",
|
|
62
76
|
"@progress/kendo-licensing": "^1.10.0",
|
|
63
|
-
"@progress/kendo-angular-common": "23.4.0-develop.
|
|
64
|
-
"@progress/kendo-angular-l10n": "23.4.0-develop.
|
|
65
|
-
"@progress/kendo-angular-progressbar": "23.4.0-develop.
|
|
66
|
-
"@progress/kendo-angular-icons": "23.4.0-develop.
|
|
67
|
-
"@progress/kendo-angular-buttons": "23.4.0-develop.
|
|
68
|
-
"@progress/kendo-angular-intl": "23.4.0-develop.
|
|
77
|
+
"@progress/kendo-angular-common": "23.4.0-develop.3",
|
|
78
|
+
"@progress/kendo-angular-l10n": "23.4.0-develop.3",
|
|
79
|
+
"@progress/kendo-angular-progressbar": "23.4.0-develop.3",
|
|
80
|
+
"@progress/kendo-angular-icons": "23.4.0-develop.3",
|
|
81
|
+
"@progress/kendo-angular-buttons": "23.4.0-develop.3",
|
|
82
|
+
"@progress/kendo-angular-intl": "23.4.0-develop.3",
|
|
69
83
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
70
84
|
},
|
|
71
85
|
"dependencies": {
|
|
72
86
|
"tslib": "^2.3.1",
|
|
73
|
-
"@progress/kendo-angular-schematics": "23.4.0-develop.
|
|
87
|
+
"@progress/kendo-angular-schematics": "23.4.0-develop.3",
|
|
74
88
|
"@progress/kendo-draggable": "^3.0.2"
|
|
75
89
|
},
|
|
76
90
|
"schematics": "./schematics/collection.json",
|