@progress/kendo-angular-popup 24.0.0-develop.9 → 24.0.0
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
|
}
|
|
@@ -153,7 +153,17 @@ const zIndex = (anchor, container) => {
|
|
|
153
153
|
const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {
|
|
154
154
|
const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;
|
|
155
155
|
const current = parseInt(zIndexStyle, 10);
|
|
156
|
-
|
|
156
|
+
const updatedIndex = isNaN(current) ? index : Math.max(current, index);
|
|
157
|
+
if (!p.parentElement) {
|
|
158
|
+
return updatedIndex;
|
|
159
|
+
}
|
|
160
|
+
// Also check siblings of each ancestor to account for sibling stacking contexts
|
|
161
|
+
// that may have a higher z-index than the anchor's ancestors (e.g., pinned row containers)
|
|
162
|
+
return Array.from(p.parentElement.children).reduce((sibMax, sibl) => {
|
|
163
|
+
const sibZIndex = sibl.style.zIndex || window.getComputedStyle(sibl).zIndex;
|
|
164
|
+
const sibCurrent = parseInt(sibZIndex, 10);
|
|
165
|
+
return isNaN(sibCurrent) ? sibMax : Math.max(sibCurrent, sibMax);
|
|
166
|
+
}, updatedIndex);
|
|
157
167
|
}, 0);
|
|
158
168
|
return result ? (result + 1) : null;
|
|
159
169
|
};
|
|
@@ -683,8 +693,8 @@ const packageMetadata = {
|
|
|
683
693
|
productName: 'Kendo UI for Angular',
|
|
684
694
|
productCode: 'KENDOUIANGULAR',
|
|
685
695
|
productCodes: ['KENDOUIANGULAR'],
|
|
686
|
-
publishDate:
|
|
687
|
-
version: '24.0.0
|
|
696
|
+
publishDate: 1779273290,
|
|
697
|
+
version: '24.0.0',
|
|
688
698
|
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'
|
|
689
699
|
};
|
|
690
700
|
|
|
@@ -891,6 +901,7 @@ class PopupComponent {
|
|
|
891
901
|
set currentOffset(offset) {
|
|
892
902
|
this.setContainerStyle('left', `${offset.left}px`);
|
|
893
903
|
this.setContainerStyle('top', `${offset.top}px`);
|
|
904
|
+
this.setContainerStyle('margin', this.hasCustomOffset ? '0' : null);
|
|
894
905
|
this._currentOffset = offset;
|
|
895
906
|
}
|
|
896
907
|
setZIndex() {
|
|
@@ -957,6 +968,10 @@ class PopupComponent {
|
|
|
957
968
|
this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);
|
|
958
969
|
}
|
|
959
970
|
setContainerStyle(name, value) {
|
|
971
|
+
if (value === null) {
|
|
972
|
+
this._renderer.removeStyle(this.container.nativeElement, name);
|
|
973
|
+
return;
|
|
974
|
+
}
|
|
960
975
|
this._renderer.setStyle(this.container.nativeElement, name, value);
|
|
961
976
|
}
|
|
962
977
|
unsubscribeReposition() {
|
|
@@ -964,6 +979,9 @@ class PopupComponent {
|
|
|
964
979
|
this.repositionSubscription.unsubscribe();
|
|
965
980
|
}
|
|
966
981
|
}
|
|
982
|
+
get hasCustomOffset() {
|
|
983
|
+
return this.offset.left !== DEFAULT_OFFSET.left || this.offset.top !== DEFAULT_OFFSET.top;
|
|
984
|
+
}
|
|
967
985
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ElementRef }, { token: AlignService }, { token: DOMService }, { token: PositionService }, { token: ResizeService }, { token: ScrollableService }, { token: AnimationService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
968
986
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: PopupComponent, isStandalone: true, selector: "kendo-popup", inputs: { animate: "animate", anchor: "anchor", anchorAlign: "anchorAlign", collision: "collision", popupAlign: "popupAlign", copyAnchorStyles: "copyAnchorStyles", popupClass: "popupClass", positionMode: "positionMode", offset: "offset", margin: "margin" }, outputs: { anchorViewportLeave: "anchorViewportLeave", close: "close", open: "open", positionChange: "positionChange" }, providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: ["kendo-popup"], usesOnChanges: true, ngImport: i0, template: `
|
|
969
987
|
<div class="k-child-animation-container">
|
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
|
|
10
|
+
"publishDate": 1779273290,
|
|
11
|
+
"version": "24.0.0",
|
|
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-popup",
|
|
3
|
-
"version": "24.0.0
|
|
3
|
+
"version": "24.0.0",
|
|
4
4
|
"description": "Kendo UI Angular Popup component - an easily customized popup from the most trusted provider of professional Angular components.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"package": {
|
|
35
35
|
"productName": "Kendo UI for Angular",
|
|
36
36
|
"productCode": "KENDOUIANGULAR",
|
|
37
|
-
"publishDate":
|
|
37
|
+
"publishDate": 1779273290,
|
|
38
38
|
"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"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
"@angular/common": "19 - 21",
|
|
44
44
|
"@angular/core": "19 - 21",
|
|
45
45
|
"@angular/platform-browser": "19 - 21",
|
|
46
|
-
"@progress/kendo-angular-common": "24.0.0
|
|
46
|
+
"@progress/kendo-angular-common": "24.0.0",
|
|
47
47
|
"@progress/kendo-licensing": "^1.11.0",
|
|
48
48
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@progress/kendo-popup-common": "1.9.5",
|
|
52
52
|
"tslib": "^2.3.1",
|
|
53
|
-
"@progress/kendo-angular-schematics": "24.0.0
|
|
53
|
+
"@progress/kendo-angular-schematics": "24.0.0"
|
|
54
54
|
},
|
|
55
55
|
"schematics": "./schematics/collection.json",
|
|
56
56
|
"module": "fesm2022/progress-kendo-angular-popup.mjs",
|
package/popup.component.d.ts
CHANGED
|
@@ -151,6 +151,7 @@ export declare class PopupComponent implements AfterViewInit, OnInit, OnChanges,
|
|
|
151
151
|
private updateFixedClass;
|
|
152
152
|
private setContainerStyle;
|
|
153
153
|
private unsubscribeReposition;
|
|
154
|
+
private get hasCustomOffset();
|
|
154
155
|
static ɵfac: i0.ɵɵFactoryDeclaration<PopupComponent, never>;
|
|
155
156
|
static ɵcmp: i0.ɵɵComponentDeclaration<PopupComponent, "kendo-popup", ["kendo-popup"], { "animate": { "alias": "animate"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "anchorAlign": { "alias": "anchorAlign"; "required": false; }; "collision": { "alias": "collision"; "required": false; }; "popupAlign": { "alias": "popupAlign"; "required": false; }; "copyAnchorStyles": { "alias": "copyAnchorStyles"; "required": false; }; "popupClass": { "alias": "popupClass"; "required": false; }; "positionMode": { "alias": "positionMode"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "margin": { "alias": "margin"; "required": false; }; }, { "anchorViewportLeave": "anchorViewportLeave"; "close": "close"; "open": "open"; "positionChange": "positionChange"; }, never, ["*"], true, never>;
|
|
156
157
|
}
|