@progress/kendo-angular-common 22.1.0-develop.8 → 23.0.0-develop.1

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.
@@ -5,7 +5,7 @@
5
5
  import { TemplateRef } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
- * Specifies the adornments in the prefix container of the [Inputs](slug:adornments_textbox#toc-prefix-adornments) and [DropDowns](slug:adornments_multiselect#toc-prefix-adornments).
8
+ * Specifies the adornments in the prefix container of the [Inputs](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#prefix-adornments) and [DropDowns](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#prefix-adornments).
9
9
  * ```html
10
10
  * <kendo-textbox>
11
11
  * <ng-template kendoPrefixTemplate>
@@ -5,7 +5,7 @@
5
5
  import { SeparatorOrientation } from './separator-orientation';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
- * Specifies a separator in the content of the [Inputs]({% slug adornments_textbox %}#toc-separator) and [DropDowns]({% slug adornments_multiselect %}#toc-separator).
8
+ * Specifies a separator in the content of the [Inputs](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#separator) and [DropDowns](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#separator).
9
9
  * @example
10
10
  * ```ts-no-run
11
11
  * _@Component({
@@ -25,7 +25,7 @@ import * as i0 from "@angular/core";
25
25
  */
26
26
  export declare class SeparatorComponent {
27
27
  /**
28
- * Specifies the orientation of the separator. Applicable for the adornments of the [`TextAreaComponent`](slug:api_inputs_textareacomponent).
28
+ * Specifies the orientation of the separator. Applicable for the adornments of the [`TextAreaComponent`](https://www.telerik.com/kendo-angular-ui/components/inputs/api/textareacomponent).
29
29
  *
30
30
  * @default 'vertical'
31
31
  */
@@ -9,8 +9,8 @@ import * as i0 from "@angular/core";
9
9
  *
10
10
  * Use the `kendoSuffixTemplate` directive to add custom content to the suffix container.
11
11
  *
12
- * * See [Inputs Suffix Adornments](slug:adornments_textbox#toc-suffix-adornments)
13
- * * See [DropDowns Suffix Adornments](slug:adornments_multiselect#toc-suffix-adornments)
12
+ * * See [Inputs Suffix Adornments](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#suffix-adornments)
13
+ * * See [DropDowns Suffix Adornments](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#suffix-adornments)
14
14
  *
15
15
  * @example
16
16
  * ```html
@@ -3,3 +3,4 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  export declare const isFocusable: (element: any) => boolean;
6
+ export declare const hasFocusableParent: (element: HTMLElement, container?: HTMLElement) => boolean;
package/dom-queries.d.ts CHANGED
@@ -11,6 +11,7 @@ export { findFocusable } from './dom-queries/find-focusable';
11
11
  export { hasClasses } from './dom-queries/has-classes';
12
12
  export { isFocusableWithTabKey } from './dom-queries/is-focusable-with-tab-key';
13
13
  export { isFocusable } from './dom-queries/is-focusable';
14
+ export { hasFocusableParent } from './dom-queries/is-focusable';
14
15
  export { isVisible } from './dom-queries/is-visible';
15
16
  export { matchesClasses } from './dom-queries/matches-classes';
16
17
  export { matchesNodeName } from './dom-queries/matches-node-name';
@@ -3,13 +3,13 @@
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 { EventEmitter, Output, Input, Directive, Injectable, Component, ViewChild, HostBinding, Optional, isDevMode } from '@angular/core';
6
+ import { EventEmitter, Output, Input, Directive, Injectable, Component, HostBinding, ViewChild, Optional, isDevMode } from '@angular/core';
7
7
  import { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';
8
8
  import { take, auditTime } from 'rxjs/operators';
9
9
  import { Draggable } from '@progress/kendo-draggable';
10
10
  import { merge, fromEvent, from, Subscription } from 'rxjs';
11
- import { NgStyle } from '@angular/common';
12
- import { getLicenseStatus } from '@progress/kendo-licensing';
11
+ import { NgStyle, NgTemplateOutlet } from '@angular/common';
12
+ import { registerLicenseMessage, getLicenseStatus } from '@progress/kendo-licensing';
13
13
 
14
14
  /**
15
15
  * @hidden
@@ -357,6 +357,18 @@ const isFocusable = (element) => {
357
357
  const focusable = !element.disabled && focusableRegex.test(tagName);
358
358
  return focusable || hasTabIndex;
359
359
  };
360
+ const hasFocusableParent = (element, container) => {
361
+ let currentElement = element;
362
+ let hasFocusableParent = false;
363
+ while (currentElement && currentElement !== container) {
364
+ if (isFocusable(currentElement)) {
365
+ hasFocusableParent = true;
366
+ break;
367
+ }
368
+ currentElement = currentElement.parentElement;
369
+ }
370
+ return hasFocusableParent;
371
+ };
360
372
 
361
373
  const isVisible = (element) => {
362
374
  const rect = element.getBoundingClientRect();
@@ -1051,40 +1063,6 @@ const watermarkStyles = `
1051
1063
  pointerEvents: none;
1052
1064
  backgroundImage: url('data:image/png;base64,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');
1053
1065
  `;
1054
- /**
1055
- * @hidden
1056
- */
1057
- const bannerStyles = {
1058
- display: 'flex',
1059
- justifyContent: 'center',
1060
- alignItems: 'center',
1061
- position: 'fixed',
1062
- top: '16px',
1063
- right: '16px',
1064
- padding: '12px',
1065
- borderRadius: '4px',
1066
- boxShadow: '0px 4px 5px 0px rgba(0, 0, 0, 0.04), 0px 2px 4px 0px rgba(0, 0, 0, 0.03)',
1067
- fontSize: '14px',
1068
- fontWeight: 400,
1069
- lineHeight: '20px',
1070
- backgroundColor: '#FFC000',
1071
- color: '#1E1E1E',
1072
- zIndex: 20000
1073
- };
1074
- /**
1075
- * @hidden
1076
- */
1077
- const buttonStyles = {
1078
- display: 'inline-flex',
1079
- position: 'relative',
1080
- border: 'none',
1081
- borderRadius: '4px',
1082
- padding: '5px',
1083
- backgroundColor: 'transparent',
1084
- transition: 'color 0.2s ease-in-out',
1085
- outline: 'none',
1086
- cursor: 'pointer'
1087
- };
1088
1066
  /**
1089
1067
  * @hidden
1090
1068
  */
@@ -1095,19 +1073,45 @@ let bannerPresentOnPage = false;
1095
1073
  * @hidden
1096
1074
  */
1097
1075
  class WatermarkOverlayComponent {
1098
- watermarkStyle = watermarkStyles;
1099
1076
  licenseMessage;
1100
1077
  banner;
1078
+ watermarkStyle = watermarkStyles;
1101
1079
  isOpen = true;
1080
+ isMobile = false;
1081
+ isNarrow = false;
1082
+ isCloseHovered = false;
1102
1083
  bannerMounted = false;
1103
- bannerStyles = bannerStyles;
1104
- buttonStyles = buttonStyles;
1084
+ get messages() {
1085
+ return [
1086
+ this.primaryMessage, ...this.extraMessages
1087
+ ];
1088
+ }
1089
+ extraMessages = [];
1090
+ get primaryMessage() {
1091
+ return this.licenseMessage || {
1092
+ severity: 'ERROR',
1093
+ productName: '',
1094
+ code: '',
1095
+ message: '',
1096
+ notificationTitle: 'License key missing for Kendo UI for Angular.',
1097
+ notificationBody: `We couldn't verify your <a href="${this.licenseKeyUrl}">license key</a> for Kendo UI for Angular.` +
1098
+ `Please see the browser console for details and resolution steps.`
1099
+ };
1100
+ }
1105
1101
  licenseKeyUrl = licenseKeyUrl;
1102
+ unsubscribeLicenseMessage = () => {
1103
+ /* noop */
1104
+ };
1105
+ unsubscribeResize = () => {
1106
+ /* noop */
1107
+ };
1106
1108
  ngOnInit() {
1107
- if (!bannerPresentOnPage) {
1108
- this.bannerMounted = true;
1109
- bannerPresentOnPage = true;
1109
+ if (bannerPresentOnPage || !this.licenseMessage) {
1110
+ return;
1110
1111
  }
1112
+ this.subscribeLicenseMessage();
1113
+ this.subscribeResize();
1114
+ bannerPresentOnPage = true;
1111
1115
  }
1112
1116
  ngAfterViewInit() {
1113
1117
  if (this.isBannerRendered) {
@@ -1115,6 +1119,8 @@ class WatermarkOverlayComponent {
1115
1119
  }
1116
1120
  }
1117
1121
  ngOnDestroy() {
1122
+ this.unsubscribeLicenseMessage();
1123
+ this.unsubscribeResize();
1118
1124
  if (this.isBannerRendered) {
1119
1125
  document.body.removeChild(this.banner.nativeElement);
1120
1126
  }
@@ -1125,77 +1131,318 @@ class WatermarkOverlayComponent {
1125
1131
  get isBannerRendered() {
1126
1132
  return isDocumentAvailable() && !!this.banner?.nativeElement;
1127
1133
  }
1134
+ subscribeLicenseMessage() {
1135
+ this.unsubscribeLicenseMessage = registerLicenseMessage(this.licenseMessage, 'KENDOUIANGULAR', ({ message }) => {
1136
+ // Add messages from other suites
1137
+ this.extraMessages.push(message);
1138
+ }, () => {
1139
+ // Show our own message dialog
1140
+ this.bannerMounted = true;
1141
+ });
1142
+ }
1143
+ subscribeResize() {
1144
+ const handleResize = () => {
1145
+ this.isMobile = window.innerWidth < 500;
1146
+ this.isNarrow = window.innerWidth < 768;
1147
+ };
1148
+ window.addEventListener('resize', handleResize);
1149
+ this.unsubscribeResize = () => window.removeEventListener('resize', handleResize);
1150
+ }
1151
+ // Used in tests to reset the static presence check flag
1152
+ resetPresenceCheck() {
1153
+ bannerPresentOnPage = false;
1154
+ }
1128
1155
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: WatermarkOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1129
1156
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: WatermarkOverlayComponent, isStandalone: true, selector: "div[kendoWatermarkOverlay]", inputs: { licenseMessage: "licenseMessage" }, host: { properties: { "style": "this.watermarkStyle" } }, viewQueries: [{ propertyName: "banner", first: true, predicate: ["banner"], descendants: true }], ngImport: i0, template: `
1130
- @if (isOpen && bannerMounted) {
1131
- <div #banner [ngStyle]="bannerStyles">
1132
- <span [ngStyle]="{ display: 'flex', alignSelf: 'center', marginRight: '8px' }">
1133
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
1134
- <path fill-rule="evenodd" clip-rule="evenodd" d="M8 1L0 15H16L8 1ZM7 6V11H9V6H7ZM7 14V12H9V14H7Z" fill="#1E1E1E"/>
1135
- </svg>
1136
- </span>
1137
- @if (licenseMessage) {
1138
- <span [innerHtml]="licenseMessage"></span>
1139
- }
1140
- @if (!licenseMessage) {
1141
- <span>
1142
- We couldn't verify your <a [href]="licenseKeyUrl">license key</a> for Kendo UI for Angular. Please see the browser
1143
- console for details and resolution steps.
1144
- </span>
1145
- }
1146
- <div [ngStyle]="{ display: 'flex', alignItems: 'center', marginLeft: '24px' }">
1147
- <button title='Close' [ngStyle]="buttonStyles" (click)="closeBanner()">
1148
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
1149
- <path d="M13 4.41562L9.41563 8L13 11.5844L11.5844 13L8 9.41563L4.41562 13L3 11.5844L6.58437 8L3 4.41562L4.41562 3L8 6.58437L11.5844 3L13 4.41562Z" fill="#1E1E1E"/>
1157
+ <ng-template #buttonTemplate>
1158
+ <button [ngStyle]="{
1159
+ backgroundColor: isCloseHovered ? '#3d3d3d14' : 'transparent',
1160
+ border: 'none',
1161
+ borderRadius: '4px',
1162
+ cursor: 'pointer',
1163
+ display: 'flex',
1164
+ padding: '4px',
1165
+ position: isMobile ? 'absolute' : 'static',
1166
+ top: isMobile ? '12px' : 'auto',
1167
+ right: isMobile ? '12px' : 'auto',
1168
+ }"
1169
+ title="Close" (click)="closeBanner()" (mouseenter)="isCloseHovered = true" (mouseleave)="isCloseHovered = false">
1170
+ <svg width="20" height="20" viewBox="0 0 16 16" fill="none">
1171
+ <path
1172
+ d="M11.9309 3.1838C12.1754 2.93933 12.5712 2.93937 12.8157 3.1838C13.0601 3.4283 13.0601 3.82407 12.8157 4.06857L8.885 7.99923L12.8166 11.9309C13.0611 12.1754 13.0611 12.5721 12.8166 12.8166C12.5721 13.0611 12.1754 13.0611 11.9309 12.8166L7.99925 8.88497L4.06859 12.8166C3.8241 13.0611 3.42732 13.0611 3.18285 12.8166C2.93862 12.5721 2.93851 12.1753 3.18285 11.9309L7.11449 7.99923L3.18382 4.06857C2.93947 3.82413 2.93955 3.42829 3.18382 3.1838C3.42831 2.9393 3.82508 2.9393 4.06957 3.1838L7.99925 7.11349L11.9309 3.1838Z"
1173
+ fill="#212529"
1174
+ />
1150
1175
  </svg>
1151
- </button>
1176
+ </button>
1177
+ </ng-template>
1178
+ @if (isOpen && bannerMounted) {
1179
+ <div #banner [ngStyle]="{
1180
+ position: 'fixed',
1181
+ top: isNarrow ? '0' : '16px',
1182
+ left: '50%',
1183
+ transform: 'translateX(-50%)',
1184
+ display: 'flex',
1185
+ flexDirection: isMobile ? 'column' : 'row',
1186
+ justifyContent: 'center',
1187
+ alignItems: isMobile ? 'flex-start' : 'center',
1188
+ borderRadius: isNarrow ? '0' : '6px',
1189
+ borderLeft: '6px solid #FFC000',
1190
+ borderTop: '1px solid #00000029',
1191
+ borderRight: '1px solid #00000029',
1192
+ borderBottom: '1px solid #00000029',
1193
+ boxSizing: 'border-box',
1194
+ fontSize: '14px',
1195
+ lineHeight: '20px',
1196
+ color: '#1E1E1E',
1197
+ zIndex: 2000,
1198
+ boxShadow: '0px 4px 5px 0px #0000000A, 0px 2px 4px 0px #00000008',
1199
+ maxWidth: isNarrow ? 'none' : '768px',
1200
+ width: '100%',
1201
+ backgroundColor: '#fff',
1202
+ padding: isMobile ? '12px' : '0',
1203
+ }">
1204
+ @if (isMobile) {
1205
+ <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
1206
+ }
1207
+
1208
+ <span [ngStyle]="{
1209
+ display: 'flex',
1210
+ alignSelf: isMobile ? 'flex-start' : 'center',
1211
+ padding: isMobile ? '0 0 12px 0' : '9px 12px',
1212
+ }">
1213
+ <svg
1214
+ width="32"
1215
+ height="32"
1216
+ viewBox="0 0 32 32"
1217
+ fill="none"
1218
+ xmlns="http://www.w3.org/2000/svg"
1219
+ >
1220
+ <path
1221
+ fillRule="evenodd"
1222
+ clipRule="evenodd"
1223
+ d="M22.702 2.1821C24.3149 2.51082 25.8077 3.27291 27.0199 4.38645C28.2321 5.49999 29.1179 6.92286 29.582 8.5021C30.012 9.9501 30.076 11.4821 29.768 12.9621C29.3228 14.9898 28.2025 16.8063 26.5904 18.1143C24.9783 19.4223 22.9699 20.1443 20.894 20.1621C20.018 20.1621 19.146 20.0361 18.308 19.7821L16.708 21.6581L15.95 22.0081H14V25.0081L13 26.0081H10V29.0081L9 30.0081H3L2 29.0081V24.3941L2.292 23.6881L12.24 13.7401C11.9577 12.8308 11.8226 11.8821 11.84 10.9301C11.8582 9.59817 12.1701 8.28666 12.7533 7.08907C13.3365 5.89147 14.1767 4.83728 15.214 4.00164C16.2514 3.166 17.4603 2.56949 18.7546 2.25464C20.0489 1.93978 21.3967 1.91633 22.702 2.1821ZM25.338 16.5821C26.5944 15.5647 27.4681 14.1509 27.816 12.5721L27.824 12.5821C28.0718 11.4277 28.0272 10.2297 27.6943 9.09691C27.3614 7.96412 26.7507 6.93248 25.9177 6.09572C25.0847 5.25896 24.0558 4.64361 22.9246 4.30557C21.7933 3.96753 20.5955 3.91753 19.44 4.1601C17.8816 4.506 16.4837 5.36334 15.4688 6.59561C14.454 7.82789 13.8806 9.36426 13.84 10.9601C13.82 11.8721 13.98 12.7761 14.318 13.6201L14.098 14.7061L4 24.8081V28.0081H8V25.0081L9 24.0081H12V21.0081L13 20.0081H15.49L17.242 17.9761L18.364 17.6961C19.1728 18.0121 20.0337 18.1736 20.902 18.1721C22.5181 18.1597 24.082 17.5991 25.338 16.5821ZM23.662 11.1181C23.8197 10.9002 23.9318 10.6527 23.9916 10.3905C24.0515 10.1283 24.0578 9.85665 24.0103 9.59192C23.9627 9.32718 23.8622 9.07476 23.7148 8.84975C23.5675 8.62474 23.3762 8.43177 23.1526 8.28238C22.9289 8.133 22.6774 8.03026 22.4131 7.98033C22.1488 7.93039 21.8771 7.93428 21.6144 7.99176C21.3516 8.04925 21.1031 8.15914 20.8838 8.31487C20.6645 8.4706 20.4789 8.66896 20.338 8.8981C20.067 9.33887 19.9774 9.86752 20.088 10.373C20.1985 10.8784 20.5007 11.3214 20.931 11.6087C21.3613 11.8961 21.8862 12.0055 22.3954 11.914C22.9047 11.8226 23.3587 11.5373 23.662 11.1181Z"
1224
+ fill="black"
1225
+ />
1226
+ <path
1227
+ d="M23.1299 16.0186L31.1387 31.0273L31.0068 31.25H14.9932L14.8604 31.0273L22.8955 16.0186H23.1299Z"
1228
+ fill="#FFC000"
1229
+ stroke="black"
1230
+ strokeWidth="1.5"
1231
+ />
1232
+ <rect x="22.25" y="21.2686" width="1.5" height="5" rx="0.75" fill="black" />
1233
+ <path
1234
+ d="M24 28.2686C24 27.7163 23.5523 27.2686 23 27.2686C22.4479 27.2687 22 27.7164 22 28.2686C22 28.8207 22.4479 29.2684 23 29.2686C23.5523 29.2686 24 28.8208 24 28.2686Z"
1235
+ fill="black"
1236
+ />
1237
+ </svg>
1238
+ </span>
1239
+
1240
+ <div [ngStyle]="{
1241
+ display: 'flex',
1242
+ flexDirection: 'column',
1243
+ gap: '12px',
1244
+ padding: isMobile ? '0 0 12px 0' : '12px',
1245
+ flex: isMobile ? 'none' : '1'}">
1246
+ @for (msg of messages; track msg.message) {
1247
+ <div [ngStyle]="{
1248
+ display: 'flex',
1249
+ flexDirection: 'column',
1250
+ gap: '4px',
1251
+ flex: isMobile ? 'none' : '1'}">
1252
+ @if (msg.notificationTitle) {
1253
+ <span
1254
+ [ngStyle]="{
1255
+ fontFamily: 'system-ui, sans-serif',
1256
+ fontWeight: 700,
1257
+ fontSize: '14px',
1258
+ lineHeight: '142%'}"
1259
+ >
1260
+ {{ msg.notificationTitle }}
1261
+ </span>
1262
+ }
1263
+ <span
1264
+ [ngStyle]="{
1265
+ fontFamily: 'system-ui, sans-serif',
1266
+ fontSize: '14px',
1267
+ lineHeight: '20px',
1268
+ }"
1269
+ [innerHTML]="msg.notificationBody || msg.notificationMessage"
1270
+ >
1271
+ </span>
1272
+ </div>
1273
+ }
1274
+ </div>
1275
+
1276
+ @if (!isMobile) {
1277
+ <div
1278
+ [ngStyle]="{
1279
+ display: 'flex',
1280
+ alignItems: 'center',
1281
+ padding: isMobile ? '0' : '9px 12px',
1282
+ gap: '16px',
1283
+ marginLeft: isMobile ? '0' : 'auto',
1284
+ width: isMobile ? '100%' : 'auto',
1285
+ }"
1286
+ >
1287
+ <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
1288
+ </div>
1289
+ }
1152
1290
  </div>
1153
- </div>
1154
1291
  }
1155
- `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1292
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
1156
1293
  }
1157
1294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: WatermarkOverlayComponent, decorators: [{
1158
1295
  type: Component,
1159
1296
  args: [{
1160
1297
  selector: 'div[kendoWatermarkOverlay]',
1161
1298
  template: `
1162
- @if (isOpen && bannerMounted) {
1163
- <div #banner [ngStyle]="bannerStyles">
1164
- <span [ngStyle]="{ display: 'flex', alignSelf: 'center', marginRight: '8px' }">
1165
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
1166
- <path fill-rule="evenodd" clip-rule="evenodd" d="M8 1L0 15H16L8 1ZM7 6V11H9V6H7ZM7 14V12H9V14H7Z" fill="#1E1E1E"/>
1167
- </svg>
1168
- </span>
1169
- @if (licenseMessage) {
1170
- <span [innerHtml]="licenseMessage"></span>
1171
- }
1172
- @if (!licenseMessage) {
1173
- <span>
1174
- We couldn't verify your <a [href]="licenseKeyUrl">license key</a> for Kendo UI for Angular. Please see the browser
1175
- console for details and resolution steps.
1176
- </span>
1177
- }
1178
- <div [ngStyle]="{ display: 'flex', alignItems: 'center', marginLeft: '24px' }">
1179
- <button title='Close' [ngStyle]="buttonStyles" (click)="closeBanner()">
1180
- <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
1181
- <path d="M13 4.41562L9.41563 8L13 11.5844L11.5844 13L8 9.41563L4.41562 13L3 11.5844L6.58437 8L3 4.41562L4.41562 3L8 6.58437L11.5844 3L13 4.41562Z" fill="#1E1E1E"/>
1299
+ <ng-template #buttonTemplate>
1300
+ <button [ngStyle]="{
1301
+ backgroundColor: isCloseHovered ? '#3d3d3d14' : 'transparent',
1302
+ border: 'none',
1303
+ borderRadius: '4px',
1304
+ cursor: 'pointer',
1305
+ display: 'flex',
1306
+ padding: '4px',
1307
+ position: isMobile ? 'absolute' : 'static',
1308
+ top: isMobile ? '12px' : 'auto',
1309
+ right: isMobile ? '12px' : 'auto',
1310
+ }"
1311
+ title="Close" (click)="closeBanner()" (mouseenter)="isCloseHovered = true" (mouseleave)="isCloseHovered = false">
1312
+ <svg width="20" height="20" viewBox="0 0 16 16" fill="none">
1313
+ <path
1314
+ d="M11.9309 3.1838C12.1754 2.93933 12.5712 2.93937 12.8157 3.1838C13.0601 3.4283 13.0601 3.82407 12.8157 4.06857L8.885 7.99923L12.8166 11.9309C13.0611 12.1754 13.0611 12.5721 12.8166 12.8166C12.5721 13.0611 12.1754 13.0611 11.9309 12.8166L7.99925 8.88497L4.06859 12.8166C3.8241 13.0611 3.42732 13.0611 3.18285 12.8166C2.93862 12.5721 2.93851 12.1753 3.18285 11.9309L7.11449 7.99923L3.18382 4.06857C2.93947 3.82413 2.93955 3.42829 3.18382 3.1838C3.42831 2.9393 3.82508 2.9393 4.06957 3.1838L7.99925 7.11349L11.9309 3.1838Z"
1315
+ fill="#212529"
1316
+ />
1182
1317
  </svg>
1183
- </button>
1318
+ </button>
1319
+ </ng-template>
1320
+ @if (isOpen && bannerMounted) {
1321
+ <div #banner [ngStyle]="{
1322
+ position: 'fixed',
1323
+ top: isNarrow ? '0' : '16px',
1324
+ left: '50%',
1325
+ transform: 'translateX(-50%)',
1326
+ display: 'flex',
1327
+ flexDirection: isMobile ? 'column' : 'row',
1328
+ justifyContent: 'center',
1329
+ alignItems: isMobile ? 'flex-start' : 'center',
1330
+ borderRadius: isNarrow ? '0' : '6px',
1331
+ borderLeft: '6px solid #FFC000',
1332
+ borderTop: '1px solid #00000029',
1333
+ borderRight: '1px solid #00000029',
1334
+ borderBottom: '1px solid #00000029',
1335
+ boxSizing: 'border-box',
1336
+ fontSize: '14px',
1337
+ lineHeight: '20px',
1338
+ color: '#1E1E1E',
1339
+ zIndex: 2000,
1340
+ boxShadow: '0px 4px 5px 0px #0000000A, 0px 2px 4px 0px #00000008',
1341
+ maxWidth: isNarrow ? 'none' : '768px',
1342
+ width: '100%',
1343
+ backgroundColor: '#fff',
1344
+ padding: isMobile ? '12px' : '0',
1345
+ }">
1346
+ @if (isMobile) {
1347
+ <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
1348
+ }
1349
+
1350
+ <span [ngStyle]="{
1351
+ display: 'flex',
1352
+ alignSelf: isMobile ? 'flex-start' : 'center',
1353
+ padding: isMobile ? '0 0 12px 0' : '9px 12px',
1354
+ }">
1355
+ <svg
1356
+ width="32"
1357
+ height="32"
1358
+ viewBox="0 0 32 32"
1359
+ fill="none"
1360
+ xmlns="http://www.w3.org/2000/svg"
1361
+ >
1362
+ <path
1363
+ fillRule="evenodd"
1364
+ clipRule="evenodd"
1365
+ d="M22.702 2.1821C24.3149 2.51082 25.8077 3.27291 27.0199 4.38645C28.2321 5.49999 29.1179 6.92286 29.582 8.5021C30.012 9.9501 30.076 11.4821 29.768 12.9621C29.3228 14.9898 28.2025 16.8063 26.5904 18.1143C24.9783 19.4223 22.9699 20.1443 20.894 20.1621C20.018 20.1621 19.146 20.0361 18.308 19.7821L16.708 21.6581L15.95 22.0081H14V25.0081L13 26.0081H10V29.0081L9 30.0081H3L2 29.0081V24.3941L2.292 23.6881L12.24 13.7401C11.9577 12.8308 11.8226 11.8821 11.84 10.9301C11.8582 9.59817 12.1701 8.28666 12.7533 7.08907C13.3365 5.89147 14.1767 4.83728 15.214 4.00164C16.2514 3.166 17.4603 2.56949 18.7546 2.25464C20.0489 1.93978 21.3967 1.91633 22.702 2.1821ZM25.338 16.5821C26.5944 15.5647 27.4681 14.1509 27.816 12.5721L27.824 12.5821C28.0718 11.4277 28.0272 10.2297 27.6943 9.09691C27.3614 7.96412 26.7507 6.93248 25.9177 6.09572C25.0847 5.25896 24.0558 4.64361 22.9246 4.30557C21.7933 3.96753 20.5955 3.91753 19.44 4.1601C17.8816 4.506 16.4837 5.36334 15.4688 6.59561C14.454 7.82789 13.8806 9.36426 13.84 10.9601C13.82 11.8721 13.98 12.7761 14.318 13.6201L14.098 14.7061L4 24.8081V28.0081H8V25.0081L9 24.0081H12V21.0081L13 20.0081H15.49L17.242 17.9761L18.364 17.6961C19.1728 18.0121 20.0337 18.1736 20.902 18.1721C22.5181 18.1597 24.082 17.5991 25.338 16.5821ZM23.662 11.1181C23.8197 10.9002 23.9318 10.6527 23.9916 10.3905C24.0515 10.1283 24.0578 9.85665 24.0103 9.59192C23.9627 9.32718 23.8622 9.07476 23.7148 8.84975C23.5675 8.62474 23.3762 8.43177 23.1526 8.28238C22.9289 8.133 22.6774 8.03026 22.4131 7.98033C22.1488 7.93039 21.8771 7.93428 21.6144 7.99176C21.3516 8.04925 21.1031 8.15914 20.8838 8.31487C20.6645 8.4706 20.4789 8.66896 20.338 8.8981C20.067 9.33887 19.9774 9.86752 20.088 10.373C20.1985 10.8784 20.5007 11.3214 20.931 11.6087C21.3613 11.8961 21.8862 12.0055 22.3954 11.914C22.9047 11.8226 23.3587 11.5373 23.662 11.1181Z"
1366
+ fill="black"
1367
+ />
1368
+ <path
1369
+ d="M23.1299 16.0186L31.1387 31.0273L31.0068 31.25H14.9932L14.8604 31.0273L22.8955 16.0186H23.1299Z"
1370
+ fill="#FFC000"
1371
+ stroke="black"
1372
+ strokeWidth="1.5"
1373
+ />
1374
+ <rect x="22.25" y="21.2686" width="1.5" height="5" rx="0.75" fill="black" />
1375
+ <path
1376
+ d="M24 28.2686C24 27.7163 23.5523 27.2686 23 27.2686C22.4479 27.2687 22 27.7164 22 28.2686C22 28.8207 22.4479 29.2684 23 29.2686C23.5523 29.2686 24 28.8208 24 28.2686Z"
1377
+ fill="black"
1378
+ />
1379
+ </svg>
1380
+ </span>
1381
+
1382
+ <div [ngStyle]="{
1383
+ display: 'flex',
1384
+ flexDirection: 'column',
1385
+ gap: '12px',
1386
+ padding: isMobile ? '0 0 12px 0' : '12px',
1387
+ flex: isMobile ? 'none' : '1'}">
1388
+ @for (msg of messages; track msg.message) {
1389
+ <div [ngStyle]="{
1390
+ display: 'flex',
1391
+ flexDirection: 'column',
1392
+ gap: '4px',
1393
+ flex: isMobile ? 'none' : '1'}">
1394
+ @if (msg.notificationTitle) {
1395
+ <span
1396
+ [ngStyle]="{
1397
+ fontFamily: 'system-ui, sans-serif',
1398
+ fontWeight: 700,
1399
+ fontSize: '14px',
1400
+ lineHeight: '142%'}"
1401
+ >
1402
+ {{ msg.notificationTitle }}
1403
+ </span>
1404
+ }
1405
+ <span
1406
+ [ngStyle]="{
1407
+ fontFamily: 'system-ui, sans-serif',
1408
+ fontSize: '14px',
1409
+ lineHeight: '20px',
1410
+ }"
1411
+ [innerHTML]="msg.notificationBody || msg.notificationMessage"
1412
+ >
1413
+ </span>
1414
+ </div>
1415
+ }
1416
+ </div>
1417
+
1418
+ @if (!isMobile) {
1419
+ <div
1420
+ [ngStyle]="{
1421
+ display: 'flex',
1422
+ alignItems: 'center',
1423
+ padding: isMobile ? '0' : '9px 12px',
1424
+ gap: '16px',
1425
+ marginLeft: isMobile ? '0' : 'auto',
1426
+ width: isMobile ? '100%' : 'auto',
1427
+ }"
1428
+ >
1429
+ <ng-container *ngTemplateOutlet="buttonTemplate"></ng-container>
1430
+ </div>
1431
+ }
1184
1432
  </div>
1185
- </div>
1186
1433
  }
1187
- `,
1434
+ `,
1188
1435
  standalone: true,
1189
- imports: [NgStyle]
1436
+ imports: [NgStyle, NgTemplateOutlet]
1190
1437
  }]
1191
- }], propDecorators: { watermarkStyle: [{
1192
- type: HostBinding,
1193
- args: ['style']
1194
- }], licenseMessage: [{
1438
+ }], propDecorators: { licenseMessage: [{
1195
1439
  type: Input
1196
1440
  }], banner: [{
1197
1441
  type: ViewChild,
1198
1442
  args: ['banner']
1443
+ }], watermarkStyle: [{
1444
+ type: HostBinding,
1445
+ args: ['style']
1199
1446
  }] } });
1200
1447
 
1201
1448
  const allowed = ['telerik.com', 'progress.com', 'stackblitz.io', 'csb.app'];
@@ -1212,12 +1459,12 @@ function shouldShowValidationUI(isPackageValid) {
1212
1459
  * Returns the notification message to display, if any.
1213
1460
  */
1214
1461
  function getLicenseMessage(meta) {
1215
- const message = getLicenseStatus(meta).message;
1216
- return message?.notificationMessage;
1462
+ const status = getLicenseStatus(meta);
1463
+ return status?.message;
1217
1464
  }
1218
1465
 
1219
1466
  /**
1220
- * Specifies the adornments in the prefix container of the [Inputs](slug:adornments_textbox#toc-prefix-adornments) and [DropDowns](slug:adornments_multiselect#toc-prefix-adornments).
1467
+ * Specifies the adornments in the prefix container of the [Inputs](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#prefix-adornments) and [DropDowns](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#prefix-adornments).
1221
1468
  * ```html
1222
1469
  * <kendo-textbox>
1223
1470
  * <ng-template kendoPrefixTemplate>
@@ -1269,8 +1516,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1269
1516
  *
1270
1517
  * Use the `kendoSuffixTemplate` directive to add custom content to the suffix container.
1271
1518
  *
1272
- * * See [Inputs Suffix Adornments](slug:adornments_textbox#toc-suffix-adornments)
1273
- * * See [DropDowns Suffix Adornments](slug:adornments_multiselect#toc-suffix-adornments)
1519
+ * * See [Inputs Suffix Adornments](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#suffix-adornments)
1520
+ * * See [DropDowns Suffix Adornments](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#suffix-adornments)
1274
1521
  *
1275
1522
  * @example
1276
1523
  * ```html
@@ -1319,7 +1566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1319
1566
  }] } });
1320
1567
 
1321
1568
  /**
1322
- * Specifies a separator in the content of the [Inputs]({% slug adornments_textbox %}#toc-separator) and [DropDowns]({% slug adornments_multiselect %}#toc-separator).
1569
+ * Specifies a separator in the content of the [Inputs](https://www.telerik.com/kendo-angular-ui/components/inputs/textbox/adornments#separator) and [DropDowns](https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/adornments#separator).
1323
1570
  * @example
1324
1571
  * ```ts-no-run
1325
1572
  * _@Component({
@@ -1339,7 +1586,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
1339
1586
  */
1340
1587
  class SeparatorComponent {
1341
1588
  /**
1342
- * Specifies the orientation of the separator. Applicable for the adornments of the [`TextAreaComponent`](slug:api_inputs_textareacomponent).
1589
+ * Specifies the orientation of the separator. Applicable for the adornments of the [`TextAreaComponent`](https://www.telerik.com/kendo-angular-ui/components/inputs/api/textareacomponent).
1343
1590
  *
1344
1591
  * @default 'vertical'
1345
1592
  */
@@ -1793,5 +2040,5 @@ const replaceMessagePlaceholder = (message, name, value) => (message ?? '').repl
1793
2040
  * Generated bundle index. Do not edit.
1794
2041
  */
1795
2042
 
1796
- export { DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarWidthService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
2043
+ export { DraggableDirective, EventsOutsideAngularDirective, KENDO_ADORNMENTS, KENDO_COMMON, KENDO_DRAGGABLE, KENDO_EVENTS, KENDO_RESIZESENSOR, KENDO_TEMPLATE_CONTEXT, KENDO_TOGGLEBUTTONTABSTOP, KENDO_WATERMARK, KendoInput, Keys, MultiTabStop, PrefixTemplateDirective, PreventableEvent, ResizeBatchService, ResizeCompatService, ResizeObserverService, ResizeSensorComponent, ScrollbarWidthService, SeparatorComponent, SuffixTemplateDirective, TemplateContextDirective, ToggleButtonTabStopDirective, WatermarkOverlayComponent, anyChanged, applyAttributes, areObjectsEqual, closest, closestBySelector, closestInScope, contains, findElement, findFocusable, findFocusableChild, firefoxMaxHeight, focusableSelector, getLicenseMessage, getter, guid, hasClasses, hasFocusableParent, hasObservers, isChanged, isControlRequired, isDocumentAvailable, isFirefox, isFocusable, isFocusableWithTabKey, isObject, isObjectPresent, isPresent, isSafari, isSet, isString, isVisible, matchesClasses, matchesNodeName, normalizeKeys, parseAttributes, parseCSSClassNames, processCssValue, removeHTMLAttributes, replaceMessagePlaceholder, rtlScrollPosition, scrollbarWidth, setHTMLAttributes, setter, shouldShowValidationUI, splitStringToArray };
1797
2044
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-common",
3
- "version": "22.1.0-develop.8",
3
+ "version": "23.0.0-develop.1",
4
4
  "description": "Kendo UI for Angular - Utility Package",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -23,7 +23,7 @@
23
23
  "@progress/kendo-common": "^1.0.1",
24
24
  "@progress/kendo-draggable": "^3.0.2",
25
25
  "tslib": "^2.3.1",
26
- "@progress/kendo-angular-schematics": "22.1.0-develop.8"
26
+ "@progress/kendo-angular-schematics": "23.0.0-develop.1"
27
27
  },
28
28
  "publishConfig": {
29
29
  "access": "public"
@@ -6,40 +6,6 @@
6
6
  * @hidden
7
7
  */
8
8
  export declare const watermarkStyles = "\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0.2;\n zIndex: 101;\n pointerEvents: none;\n backgroundImage: url('data:image/png;base64,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');\n";
9
- /**
10
- * @hidden
11
- */
12
- export declare const bannerStyles: {
13
- display: string;
14
- justifyContent: string;
15
- alignItems: string;
16
- position: string;
17
- top: string;
18
- right: string;
19
- padding: string;
20
- borderRadius: string;
21
- boxShadow: string;
22
- fontSize: string;
23
- fontWeight: number;
24
- lineHeight: string;
25
- backgroundColor: string;
26
- color: string;
27
- zIndex: number;
28
- };
29
- /**
30
- * @hidden
31
- */
32
- export declare const buttonStyles: {
33
- display: string;
34
- position: string;
35
- border: string;
36
- borderRadius: string;
37
- padding: string;
38
- backgroundColor: string;
39
- transition: string;
40
- outline: string;
41
- cursor: string;
42
- };
43
9
  /**
44
10
  * @hidden
45
11
  */
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { PackageMetadata } from "@progress/kendo-licensing";
5
+ import { LicenseMessage, PackageMetadata } from "@progress/kendo-licensing";
6
6
  /**
7
7
  * @hidden
8
8
  */
@@ -12,4 +12,4 @@ export declare function shouldShowValidationUI(isPackageValid: boolean): boolean
12
12
  *
13
13
  * Returns the notification message to display, if any.
14
14
  */
15
- export declare function getLicenseMessage(meta: PackageMetadata): string | undefined;
15
+ export declare function getLicenseMessage(meta: PackageMetadata): LicenseMessage | undefined;
@@ -3,50 +3,34 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { AfterViewInit, ElementRef, OnDestroy, OnInit } from '@angular/core';
6
+ import { LicenseMessage } from '@progress/kendo-licensing';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * @hidden
9
10
  */
10
11
  export declare class WatermarkOverlayComponent implements OnInit, AfterViewInit, OnDestroy {
11
- watermarkStyle: string;
12
- licenseMessage?: string;
12
+ licenseMessage?: LicenseMessage;
13
13
  banner: ElementRef;
14
+ watermarkStyle: string;
14
15
  isOpen: boolean;
16
+ isMobile: boolean;
17
+ isNarrow: boolean;
18
+ isCloseHovered: boolean;
15
19
  bannerMounted: boolean;
16
- bannerStyles: {
17
- display: string;
18
- justifyContent: string;
19
- alignItems: string;
20
- position: string;
21
- top: string;
22
- right: string;
23
- padding: string;
24
- borderRadius: string;
25
- boxShadow: string;
26
- fontSize: string;
27
- fontWeight: number;
28
- lineHeight: string;
29
- backgroundColor: string;
30
- color: string;
31
- zIndex: number;
32
- };
33
- buttonStyles: {
34
- display: string;
35
- position: string;
36
- border: string;
37
- borderRadius: string;
38
- padding: string;
39
- backgroundColor: string;
40
- transition: string;
41
- outline: string;
42
- cursor: string;
43
- };
20
+ get messages(): LicenseMessage[];
21
+ extraMessages: LicenseMessage[];
22
+ get primaryMessage(): LicenseMessage;
44
23
  licenseKeyUrl: string;
24
+ private unsubscribeLicenseMessage;
25
+ private unsubscribeResize;
45
26
  ngOnInit(): void;
46
27
  ngAfterViewInit(): void;
47
28
  ngOnDestroy(): void;
48
29
  closeBanner(): void;
49
30
  get isBannerRendered(): boolean;
31
+ private subscribeLicenseMessage;
32
+ private subscribeResize;
33
+ resetPresenceCheck(): void;
50
34
  static ɵfac: i0.ɵɵFactoryDeclaration<WatermarkOverlayComponent, never>;
51
35
  static ɵcmp: i0.ɵɵComponentDeclaration<WatermarkOverlayComponent, "div[kendoWatermarkOverlay]", never, { "licenseMessage": { "alias": "licenseMessage"; "required": false; }; }, {}, never, never, true, never>;
52
36
  }