@wavemaker/angular-app 11.16.0-rc.647821 → 11.16.1-rc.270

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.
@@ -95153,7 +95153,7 @@ function requireMomentTimezone () {
95153
95153
  hasRequiredMomentTimezone = 1;
95154
95154
  (function (module) {
95155
95155
  //! moment-timezone.js
95156
- //! version : 0.6.5
95156
+ //! version : 0.6.6
95157
95157
  //! Copyright (c) JS Foundation and other contributors
95158
95158
  //! license : MIT
95159
95159
  //! github.com/moment/moment-timezone
@@ -95179,7 +95179,7 @@ function requireMomentTimezone () {
95179
95179
  // return moment;
95180
95180
  // }
95181
95181
 
95182
- var VERSION = "0.6.5",
95182
+ var VERSION = "0.6.6",
95183
95183
  zones = {},
95184
95184
  links = {},
95185
95185
  countries = {},
@@ -95418,6 +95418,10 @@ function requireMomentTimezone () {
95418
95418
  Current Timezone
95419
95419
  ************************************/
95420
95420
 
95421
+ function hasOwnProp(a, b) {
95422
+ return Object.prototype.hasOwnProperty.call(a, b);
95423
+ }
95424
+
95421
95425
  function OffsetAt(at) {
95422
95426
  var timeString = at.toTimeString();
95423
95427
  var abbr = timeString.match(/\([a-z ]+\)/i);
@@ -95530,12 +95534,12 @@ function requireMomentTimezone () {
95530
95534
 
95531
95535
  for (i = 0; i < offsetsLength; i++) {
95532
95536
  offset = offsets[i].offset;
95533
- if (checkedOffsets.hasOwnProperty(offset)) {
95537
+ if (hasOwnProp(checkedOffsets, offset)) {
95534
95538
  continue;
95535
95539
  }
95536
95540
  guessesOffset = guesses[offset] || {};
95537
95541
  for (j in guessesOffset) {
95538
- if (guessesOffset.hasOwnProperty(j)) {
95542
+ if (hasOwnProp(guessesOffset, j)) {
95539
95543
  filteredGuesses[j] = true;
95540
95544
  }
95541
95545
  }
@@ -95543,7 +95547,7 @@ function requireMomentTimezone () {
95543
95547
  }
95544
95548
 
95545
95549
  for (i in filteredGuesses) {
95546
- if (filteredGuesses.hasOwnProperty(i)) {
95550
+ if (hasOwnProp(filteredGuesses, i)) {
95547
95551
  out.push(names[i]);
95548
95552
  }
95549
95553
  }
@@ -95598,7 +95602,7 @@ function requireMomentTimezone () {
95598
95602
  ************************************/
95599
95603
 
95600
95604
  function normalizeName (name) {
95601
- return (name || '').toLowerCase().replace(/\//g, '_');
95605
+ return (typeof name === 'string' ? name : '').toLowerCase().replace(/\//g, '_');
95602
95606
  }
95603
95607
 
95604
95608
  function addZone (packed) {
@@ -95622,7 +95626,7 @@ function requireMomentTimezone () {
95622
95626
 
95623
95627
  name = normalizeName(name);
95624
95628
 
95625
- var zone = zones[name];
95629
+ var zone = hasOwnProp(zones, name) ? zones[name] : undefined;
95626
95630
  var link;
95627
95631
 
95628
95632
  if (zone instanceof Zone) {
@@ -95636,7 +95640,7 @@ function requireMomentTimezone () {
95636
95640
  }
95637
95641
 
95638
95642
  // Pass getZone to prevent recursion more than 1 level deep
95639
- if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
95643
+ if (hasOwnProp(links, name) && caller !== getZone && (link = getZone(links[name], getZone))) {
95640
95644
  zone = zones[name] = new Zone();
95641
95645
  zone._set(link);
95642
95646
  zone.name = names[name];
@@ -95650,7 +95654,7 @@ function requireMomentTimezone () {
95650
95654
  var i, out = [];
95651
95655
 
95652
95656
  for (i in names) {
95653
- if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
95657
+ if (hasOwnProp(names, i) && (zones[i] || zones[links[i]]) && names[i]) {
95654
95658
  out.push(names[i]);
95655
95659
  }
95656
95660
  }
@@ -95698,8 +95702,9 @@ function requireMomentTimezone () {
95698
95702
  }
95699
95703
 
95700
95704
  function getCountry (name) {
95705
+ if (typeof name !== 'string') return null;
95701
95706
  name = name.toUpperCase();
95702
- return countries[name] || null;
95707
+ return hasOwnProp(countries, name) ? countries[name] : null;
95703
95708
  }
95704
95709
 
95705
95710
  function zonesForCountry(country, with_offset) {
@@ -95752,7 +95757,7 @@ function requireMomentTimezone () {
95752
95757
  return Object.getOwnPropertyNames(input).length > 0;
95753
95758
  }
95754
95759
  for (prop in input) {
95755
- if (Object.prototype.hasOwnProperty.call(input, prop)) {
95760
+ if (hasOwnProp(input, prop)) {
95756
95761
  return true;
95757
95762
  }
95758
95763
  }
@@ -121092,7 +121097,7 @@ var VariablesService = class VariablesService {
121092
121097
  });
121093
121098
 
121094
121099
  /*!
121095
- * tabbable 6.5.0
121100
+ * tabbable 6.5.1
121096
121101
  * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
121097
121102
  */
121098
121103
  // NOTE: separate `:not()` selectors has broader browser support than the newer
@@ -121102,10 +121107,9 @@ var candidateSelector = /* #__PURE__ */candidateSelectors.join(',');
121102
121107
  var NoElement = typeof Element === 'undefined';
121103
121108
  var matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
121104
121109
  var getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {
121105
- var _element$getRootNode;
121106
- return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);
121110
+ return element == null || element.getRootNode == null ? void 0 : element.getRootNode();
121107
121111
  } : function (element) {
121108
- return element === null || element === void 0 ? void 0 : element.ownerDocument;
121112
+ return element == null ? void 0 : element.ownerDocument;
121109
121113
  };
121110
121114
 
121111
121115
  /**
@@ -121117,14 +121121,13 @@ var getRootNode = !NoElement && Element.prototype.getRootNode ? function (elemen
121117
121121
  * False if `node` is falsy.
121118
121122
  */
121119
121123
  var _isInert = function isInert(node, lookUp) {
121120
- var _node$getAttribute;
121121
121124
  if (lookUp === void 0) {
121122
121125
  lookUp = true;
121123
121126
  }
121124
121127
  // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`
121125
121128
  // JS API property; we have to check the attribute, which can either be empty or 'true';
121126
121129
  // if it's `null` (not specified) or 'false', it's an active element
121127
- var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');
121130
+ var inertAtt = node == null || node.getAttribute == null ? void 0 : node.getAttribute('inert');
121128
121131
  var inert = inertAtt === '' || inertAtt === 'true';
121129
121132
 
121130
121133
  // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`
@@ -121143,12 +121146,12 @@ var _isInert = function isInert(node, lookUp) {
121143
121146
  * @returns True if it's content-editable; false if it's not or `node` is falsy.
121144
121147
  */
121145
121148
  var isContentEditable = function isContentEditable(node) {
121146
- var _node$getAttribute2;
121149
+ var _node$getAttribute;
121147
121150
  // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have
121148
- // to use the attribute directly to check for this, which can either be empty or 'true';
121149
- // if it's `null` (not specified) or 'false', it's a non-editable element
121150
- var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');
121151
- return attValue === '' || attValue === 'true';
121151
+ // to use the case-insensitive attribute directly: empty, 'true', and 'plaintext-only'
121152
+ // are editable states; `null` (not specified) and 'false' are not.
121153
+ var attValue = node == null || node.getAttribute == null || (_node$getAttribute = node.getAttribute('contenteditable')) == null ? void 0 : _node$getAttribute.toLowerCase();
121154
+ return attValue === '' || attValue === 'true' || attValue === 'plaintext-only';
121152
121155
  };
121153
121156
 
121154
121157
  /**
@@ -121399,22 +121402,22 @@ var isNodeAttached = function isNodeAttached(node) {
121399
121402
  // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then
121400
121403
  // `ownerDocument` will be `null`, hence the optional chaining on it.
121401
121404
  var nodeRoot = node && getRootNode(node);
121402
- var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;
121405
+ var nodeRootHost = (_nodeRoot = nodeRoot) == null ? void 0 : _nodeRoot.host;
121403
121406
 
121404
121407
  // in some cases, a detached node will return itself as the root instead of a document or
121405
121408
  // shadow root object, in which case, we shouldn't try to look further up the host chain
121406
121409
  var attached = false;
121407
121410
  if (nodeRoot && nodeRoot !== node) {
121408
- var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;
121409
- attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));
121411
+ var _nodeRootHost, _node$ownerDocument;
121412
+ attached = !!((_nodeRootHost = nodeRootHost) != null && (_nodeRootHost = _nodeRootHost.ownerDocument) != null && _nodeRootHost.contains(nodeRootHost) || node != null && (_node$ownerDocument = node.ownerDocument) != null && _node$ownerDocument.contains(node));
121410
121413
  while (!attached && nodeRootHost) {
121411
- var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;
121414
+ var _nodeRoot2, _nodeRootHost2;
121412
121415
  // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,
121413
121416
  // which means we need to get the host's host and check if that parent host is contained
121414
121417
  // in (i.e. attached to) the document
121415
121418
  nodeRoot = getRootNode(nodeRootHost);
121416
- nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;
121417
- attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));
121419
+ nodeRootHost = (_nodeRoot2 = nodeRoot) == null ? void 0 : _nodeRoot2.host;
121420
+ attached = !!((_nodeRootHost2 = nodeRootHost) != null && (_nodeRootHost2 = _nodeRootHost2.ownerDocument) != null && _nodeRootHost2.contains(nodeRootHost));
121418
121421
  }
121419
121422
  }
121420
121423
  return attached;
@@ -132939,6 +132942,7 @@ var PageDirective = class PageDirective extends StylableComponent {
132939
132942
  this.notify("detach");
132940
132943
  }
132941
132944
  ngOnDestroy() {
132945
+ super.ngOnDestroy();
132942
132946
  this.invokeEventCallback("destroy", { widget: this });
132943
132947
  this._eventNotifier.destroy();
132944
132948
  }
@@ -134086,7 +134090,7 @@ var CheckboxsetComponent = class CheckboxsetComponent extends DatasetAwareFormCo
134086
134090
  exportAs: ["wmCheckboxset"],
134087
134091
  usesInheritance: true,
134088
134092
  ngImport: i0,
134089
- template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n@if (readonly || disabled) {\n <div class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n",
134093
+ template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\" aria-hidden=\"true\" aria-label=\"Checkbox set value\">\n@if (readonly || disabled) {\n <div class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n",
134090
134094
  dependencies: [
134091
134095
  {
134092
134096
  kind: "ngmodule",
@@ -134147,7 +134151,7 @@ var CheckboxsetComponent = class CheckboxsetComponent extends DatasetAwareFormCo
134147
134151
  provideAs(CheckboxsetComponent, NG_VALIDATORS, true),
134148
134152
  provideAsWidgetRef(CheckboxsetComponent)
134149
134153
  ],
134150
- template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n@if (readonly || disabled) {\n <div class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n"
134154
+ template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\" aria-hidden=\"true\" aria-label=\"Checkbox set value\">\n@if (readonly || disabled) {\n <div class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n"
134151
134155
  }]
134152
134156
  }],
134153
134157
  ctorParameters: () => [{ type: Injector }, {
@@ -134306,7 +134310,7 @@ var RadiosetComponent = class RadiosetComponent extends DatasetAwareFormComponen
134306
134310
  exportAs: ["wmRadioset"],
134307
134311
  usesInheritance: true,
134308
134312
  ngImport: i0,
134309
- template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\" >\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n@if (readonly || disabled) {\n <div aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n",
134313
+ template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\" >\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\" aria-hidden=\"true\" aria-label=\"Radio set value\">\n@if (readonly || disabled) {\n <div aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n",
134310
134314
  dependencies: [
134311
134315
  {
134312
134316
  kind: "ngmodule",
@@ -134367,7 +134371,7 @@ var RadiosetComponent = class RadiosetComponent extends DatasetAwareFormComponen
134367
134371
  provideAs(RadiosetComponent, NG_VALIDATORS, true),
134368
134372
  provideAsWidgetRef(RadiosetComponent)
134369
134373
  ],
134370
- template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\" >\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n@if (readonly || disabled) {\n <div aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n"
134374
+ template: "@if (!groupby) {\n @for (item of datasetItems; track item; let i = $index) {\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n} @else {\n @for (groupObj of groupedData; track groupObj; let groupindex = $index) {\n <li class=\"app-list-item-group\" role=\"presentation\" >\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n @if (collapsible) {\n <i class=\"app-icon wi action wi-chevron-up\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n }\n @if (showcount) {\n <span class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n }\n </div>\n </h4>\n </li>\n @for (item of groupObj.data; track item; let i = $index) {\n <li\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n @if (!content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n }\n <!-- Custom partial template -->\n @if (content) {\n <label class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n }\n </li>\n }\n </ul>\n </li>\n }\n}\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\" aria-hidden=\"true\" aria-label=\"Radio set value\">\n@if (readonly || disabled) {\n <div aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n}\n\n<!-- This template will be displayed when groupby is specified. -->\n"
134371
134375
  }]
134372
134376
  }],
134373
134377
  ctorParameters: () => [{ type: Injector }, {
@@ -151489,7 +151493,7 @@ const registerFormField = (isFormField) => {
151489
151493
  <div class="live-field form-group app-composite-widget clearfix caption-{{${pCounter}.captionposition}}" widget="${widgetType}">
151490
151494
  <label [hidden]="!${counter}.displayname" class="app-label control-label formfield-label {{${pCounter}._captionClass}}"
151491
151495
  [ngStyle]="{width: ${pCounter}.captionsize}" [ngClass]="{'text-danger': ${counter}._control?.invalid && ${counter}._control?.touched && ${pCounter}.isUpdateMode,
151492
- required: ${pCounter}.isUpdateMode && ${counter}.required}" [textContent]="${counter}.displayname"> </label>
151496
+ required: ${pCounter}.isUpdateMode && ${counter}.required}" [attr.aria-label]="${counter}.displayname ? null : ${counter}.arialabel" [textContent]="${counter}.displayname"> </label>
151493
151497
  <div [ngClass]="${counter}.displayname ? ${pCounter}._widgetClass : '${controlLayout}'">
151494
151498
  <span class="form-control-static app-label"
151495
151499
  [hidden]="${pCounter}.isUpdateMode || ${counter}.viewmodewidget === 'default' || ${counter}.widgettype === 'upload'" [innerHTML]="${getCaptionByWidget(attrs, widgetType, counter)}"></span>
@@ -154133,7 +154137,7 @@ var LabelDirective = class LabelDirective extends StylableComponent {
154133
154137
  let bindContent = this.nativeElement.getAttribute("caption.bind");
154134
154138
  let safeValue = bindContent ? nv && bindContent.includes("trustAs:") : false;
154135
154139
  const insertZWSP = (value) => {
154136
- if (typeof value !== "string") return value;
154140
+ if (typeof value !== "string" || !isIos()) return value;
154137
154141
  return value.replace(/\d{5,}/g, (match) => {
154138
154142
  return match.replace(/(.{9})(?=.)/g, "$1​");
154139
154143
  });
@@ -158981,7 +158985,7 @@ var SearchComponent = class SearchComponent extends DatasetAwareFormComponent {
158981
158985
  ],
158982
158986
  usesInheritance: true,
158983
158987
  ngImport: i0,
158984
- template: "<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n @if (!content) {\n <a>\n @if (model.imgSrc) {\n <img [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n }\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n }\n <!-- Custom partial template -->\n @if (content) {\n <a [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n }\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollableHandler>\n @for (match of matches; track match; let i = $index) {\n <li #liElements [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n @if (match.isHeader()) {\n <h4 class=\"group-title\">{{match.value}}</h4>\n }\n @if (!match.isHeader()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n }\n </li>\n }\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider?.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n@if (navsearchbar) {\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n} @else {\n <button type=\"button\" class=\"btn btn-icon form-control-feedback back-btn\" aria-hidden=\"true\" (click)=\"closeSearch()\"><i class=\"app-icon {{backsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-hidden=\"true\">\n @if (_loadingItems) {\n <span aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n }\n <button type=\"button\" class=\"btn btn-icon form-control-feedback clear-btn\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"><i class=\"app-icon {{clearsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Clear button</span>\n @if (showsearchicon) {\n <span [ngClass]=\"{'disabled': disabled}\" class=\"input-group-addon\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button btn btn-icon\" type=\"submit\"\n (click)=\"onSearchSelect($event)\">\n <i class=\"app-icon {{searchiconclass}}\"></i></button>\n </form>\n </span>\n }\n }\n <!--This template is for both web and fullscreen mode in mobile.-->\n",
158988
+ template: "<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n @if (!content) {\n <a>\n @if (model.imgSrc) {\n <img [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n }\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n }\n <!-- Custom partial template -->\n @if (content) {\n <a [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n }\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollableHandler>\n @for (match of matches; track match; let i = $index) {\n <li #liElements [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n @if (match.isHeader()) {\n <h4 class=\"group-title\">{{match.value}}</h4>\n }\n @if (!match.isHeader()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n }\n </li>\n }\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider?.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n@if (navsearchbar) {\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n} @else {\n <button type=\"button\" class=\"btn btn-icon form-control-feedback back-btn\" aria-label=\"Back\" aria-hidden=\"true\" (click)=\"closeSearch()\"><i class=\"app-icon {{backsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-label=\"Search value\" aria-hidden=\"true\">\n @if (_loadingItems) {\n <span aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n }\n <button type=\"button\" class=\"btn btn-icon form-control-feedback clear-btn\" aria-label=\"Clear\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"><i class=\"app-icon {{clearsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Clear button</span>\n @if (showsearchicon) {\n <span [ngClass]=\"{'disabled': disabled}\" class=\"input-group-addon\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button btn btn-icon\" type=\"submit\"\n (click)=\"onSearchSelect($event)\">\n <i class=\"app-icon {{searchiconclass}}\"></i></button>\n </form>\n </span>\n }\n }\n <!--This template is for both web and fullscreen mode in mobile.-->\n",
158985
158989
  dependencies: [
158986
158990
  {
158987
158991
  kind: "ngmodule",
@@ -159148,7 +159152,7 @@ var SearchComponent = class SearchComponent extends DatasetAwareFormComponent {
159148
159152
  provideAs(SearchComponent, NG_VALIDATORS, true),
159149
159153
  provideAsWidgetRef(SearchComponent)
159150
159154
  ],
159151
- template: "<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n @if (!content) {\n <a>\n @if (model.imgSrc) {\n <img [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n }\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n }\n <!-- Custom partial template -->\n @if (content) {\n <a [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n }\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollableHandler>\n @for (match of matches; track match; let i = $index) {\n <li #liElements [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n @if (match.isHeader()) {\n <h4 class=\"group-title\">{{match.value}}</h4>\n }\n @if (!match.isHeader()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n }\n </li>\n }\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider?.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n@if (navsearchbar) {\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n} @else {\n <button type=\"button\" class=\"btn btn-icon form-control-feedback back-btn\" aria-hidden=\"true\" (click)=\"closeSearch()\"><i class=\"app-icon {{backsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-hidden=\"true\">\n @if (_loadingItems) {\n <span aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n }\n <button type=\"button\" class=\"btn btn-icon form-control-feedback clear-btn\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"><i class=\"app-icon {{clearsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Clear button</span>\n @if (showsearchicon) {\n <span [ngClass]=\"{'disabled': disabled}\" class=\"input-group-addon\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button btn btn-icon\" type=\"submit\"\n (click)=\"onSearchSelect($event)\">\n <i class=\"app-icon {{searchiconclass}}\"></i></button>\n </form>\n </span>\n }\n }\n <!--This template is for both web and fullscreen mode in mobile.-->\n"
159155
+ template: "<ng-template #customItemTemplate let-model=\"item\" let-index=\"index\" let-query=\"query\" let-match=\"match\">\n <!-- Default item template -->\n @if (!content) {\n <a>\n @if (model.imgSrc) {\n <img [src]=\"model.imgSrc\" alt=\"Search\" [style.width]=\"imagewidth\">\n }\n <span [title]=\"model.label\" [innerHtml]=\"highlight(match, query) || model.label\"></span>\n </a>\n }\n <!-- Custom partial template -->\n @if (content) {\n <a [ngClass]=\"{customTemplate: content}\" partialContainer [wmItemTemplate]=\"content\" [userComponentParams]=\"match.item\">\n <div partial-container-target></div>\n </a>\n }\n</ng-template>\n\n<ng-template #customListTemplate let-matches=\"matches\" let-itemTemplate=\"itemTemplate\" let-query=\"query\">\n <ul #ulElement class=\"app-search dropdown-menu\" scrollableHandler>\n @for (match of matches; track match; let i = $index) {\n <li #liElements [ngClass]=\"{active: typeaheadContainer && typeaheadContainer.isActive(match), 'list-group-header': match && match.isHeader()}\"\n (mouseenter)=\"typeaheadContainer.selectActive(match);\"\n (click)=\"match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();\">\n <!-- itemTemplate comes from the <input> -->\n @if (match.isHeader()) {\n <h4 class=\"group-title\">{{match.value}}</h4>\n }\n @if (!match.isHeader()) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-container>\n }\n </li>\n }\n <div class=\"status\" [hidden]=\"_loadingItems || !(datacompletemsg && dataProvider?.isLastPage)\">\n <span [textContent]=\"datacompletemsg\"></span>\n </div>\n <div class=\"status\" [hidden]=\"!_loadingItems\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>\n <span [textContent]=\"loadingdatamsg\"></span>\n </div>\n </ul>\n</ng-template>\n\n<!--This template is for search inside mobile navbar.-->\n@if (navsearchbar) {\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n container=\"body\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event)\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);\"\n (focusout)=\"onFocusOut()\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [dropup]=\"dropup\"\n [tabindex]=\"tabindex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\"/>\n <i class=\"btn-close wi wi-cancel\" [hidden]=\"!showClosebtn\" (click)=\"clearSearch($event);\"></i>\n} @else {\n <button type=\"button\" class=\"btn btn-icon form-control-feedback back-btn\" aria-label=\"Back\" aria-hidden=\"true\" (click)=\"closeSearch()\"><i class=\"app-icon {{backsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Back button</span>\n <input [title]=\"query || ''\" type=\"text\" class=\"app-textbox form-control list-of-objs app-search-input\" [placeholder]=\"placeholder || ''\"\n focus-target\n [container]=\"containerTarget || '.wm-app'\"\n [disabled]=\"disabled\"\n [attr.accesskey]=\"shortcutkey\"\n autocomplete=\"off\"\n [(ngModel)]=\"query\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeaheadDataSource\"\n [typeaheadWaitMs]=\"debouncetime\"\n [typeaheadItemTemplate]=\"customItemTemplate\"\n [optionsListTemplate]=\"customListTemplate\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"listenQuery = true\"\n (keydown.enter)=\"$typeaheadEvent = $event;handleEnterEvent($event)\"\n (keydown.arrowdown)=\"selectNext($event)\"\n (blur)=\"invokeOnTouched($event); onFocusOut()\"\n (click)=\"handleFocus($event);\"\n (focus)=\"_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)\"\n [typeaheadMinLength]=\"minchars\"\n [typeaheadOptionsLimit]=\"limit\"\n (typeaheadLoading)=\"_loadingItems\"\n (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n typeaheadOptionField=\"label\"\n [typeaheadGroupField]=\"groupby ? 'groupby' : null\"\n [typeaheadAsync]=\"true\"\n [typeaheadScrollable]=\"true\"\n [adaptivePosition]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionslimitinscrollableview\"\n [tabindex]=\"tabindex\"\n [dropup]=\"dropup\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || 'Search field'\">\n <input class=\"model-holder\" ng-model=\"proxyModel\" ng-required=\"required\" tabindex=\"-1\" aria-label=\"Search value\" aria-hidden=\"true\">\n @if (_loadingItems) {\n <span aria-hidden=\"true\" class=\"fa fa-circle-o-notch fa-spin form-control-feedback\"></span>\n }\n <button type=\"button\" class=\"btn btn-icon form-control-feedback clear-btn\" aria-label=\"Clear\" [ngClass]=\"{'show-btn': isQueryEntered()}\" (click)=\"clearSearch($event, true)\"><i class=\"app-icon {{clearsearchiconclass}}\"></i></button>\n <span class=\"sr-only\">Clear button</span>\n @if (showsearchicon) {\n <span [ngClass]=\"{'disabled': disabled}\" class=\"input-group-addon\">\n <form>\n <button title=\"Search\" [disabled]=\"disabled\" class=\"app-search-button btn btn-icon\" type=\"submit\"\n (click)=\"onSearchSelect($event)\">\n <i class=\"app-icon {{searchiconclass}}\"></i></button>\n </form>\n </span>\n }\n }\n <!--This template is for both web and fullscreen mode in mobile.-->\n"
159152
159156
  }]
159153
159157
  }],
159154
159158
  ctorParameters: () => [
@@ -193351,7 +193355,8 @@ var PaginationComponent = class PaginationComponent extends StylableComponent {
193351
193355
  this.statehandler = statehandler;
193352
193356
  if (parts[0] === "Variables" || parts[0] === "Widgets") bindPagingOptions = `${parts[0]}.${parts[1]}.pagination`;
193353
193357
  else if (parts[0] === "App" && parts[1] === "activePage" && parts[2]?.includes("Variables") && parts[3]) bindPagingOptions = `App.activePage.${parts[2]}.${parts[3]}.pagination`;
193354
- if (!binddatasource && dataset && !datasetBoundExpr) {
193358
+ const isVariableLevelBind = binddataset?.startsWith("Prefab.Variables.");
193359
+ if (!binddatasource && dataset && !datasetBoundExpr && !isVariableLevelBind) {
193355
193360
  this.dataset = dataset;
193356
193361
  if (this._debouncedApplyDataset) this._debouncedApplyDataset();
193357
193362
  return;
@@ -195327,7 +195332,8 @@ const isInputBodyWrapper = (target) => {
195327
195332
  ".dropdown-menu",
195328
195333
  ".uib-typeahead-match",
195329
195334
  ".modal-dialog",
195330
- ".toast"
195335
+ ".toast",
195336
+ ".bs-datepicker-container"
195331
195337
  ];
195332
195338
  let isInput = false;
195333
195339
  classes.forEach((cls) => {
@@ -196319,7 +196325,7 @@ var TableComponent = class TableComponent extends StylableComponent {
196319
196325
  this.applyProps.forEach((args) => this.callDataGridMethod(...args));
196320
196326
  if (this.editmode === EDIT_MODE$1.QUICK_EDIT) {
196321
196327
  this.documentClickBind = this._documentClickBind.bind(this);
196322
- document.addEventListener("click", this.documentClickBind);
196328
+ document.addEventListener("click", this.documentClickBind, true);
196323
196329
  }
196324
196330
  }
196325
196331
  getConfiguredState() {
@@ -196490,7 +196496,7 @@ var TableComponent = class TableComponent extends StylableComponent {
196490
196496
  ngOnDestroy() {
196491
196497
  this._modelVarEditSoftRefreshActiveUntil = 0;
196492
196498
  this._isInlineEditSave = false;
196493
- document.removeEventListener("click", this.documentClickBind);
196499
+ document.removeEventListener("click", this.documentClickBind, true);
196494
196500
  if (this.navigatorResultWatch) {
196495
196501
  this.navigatorResultWatch.unsubscribe();
196496
196502
  this.navigatorResultWatch = null;
@@ -197242,7 +197248,8 @@ var TableComponent = class TableComponent extends StylableComponent {
197242
197248
  _documentClickBind(event) {
197243
197249
  const $target = event.target;
197244
197250
  if (this.$element[0].contains($target) || event.target.doctype || isInputBodyWrapper($($target))) return;
197245
- this.callDataGridMethod("saveRow");
197251
+ if ($($target).closest(".app-datagrid").length) return;
197252
+ this.callDataGridMethod("saveRow", void 0, true);
197246
197253
  }
197247
197254
  _redraw(forceRender) {
197248
197255
  if (forceRender) this.datagridElement.datatable(this.gridOptions);
@@ -197857,9 +197864,9 @@ var TableCUDDirective = class TableCUDDirective {
197857
197864
  }
197858
197865
  if (!this.table.onRowupdate) this.table.toggleMessage(true, "success", this.table.updatemessage);
197859
197866
  if (this.table.datasource.execute(DataSource$1.Operation.SUPPORTS_CRUD)) {
197860
- this.table.initiateSelectItem("current", response, void 0, false, options.callBack);
197867
+ this.table.initiateSelectItem("current", response, options.skipFocus, false, options.callBack);
197861
197868
  this.updateVariable(response, options.callBack);
197862
- } else if (!this.table.datasource.execute(DataSource$1.Operation.IS_API_AWARE)) this.table.initiateSelectItem("current", response, void 0, this.table.datasource.category === "wm.Variable", options.callBack);
197869
+ } else if (!this.table.datasource.execute(DataSource$1.Operation.IS_API_AWARE)) this.table.initiateSelectItem("current", response, options.skipFocus, this.table.datasource.category === "wm.Variable", options.callBack);
197863
197870
  triggerFn$1(options.success, response);
197864
197871
  this.table.invokeEventCallback("rowupdate", {
197865
197872
  $event: options.event,
@@ -198771,7 +198778,7 @@ var TableActionDirective = class TableActionDirective extends BaseComponent$1 {
198771
198778
  title: isUndefined$1(this.title) ? this["display-name"] || "" : this.title,
198772
198779
  action: this.action,
198773
198780
  accessroles: this.accessroles,
198774
- shortcutkey: this.shortcutkey,
198781
+ shortcutkey: this.shortcutkey || void 0,
198775
198782
  disabled: this.disabled,
198776
198783
  tabindex: this.tabindex,
198777
198784
  icon: this.icon,
@@ -198792,6 +198799,7 @@ var TableActionDirective = class TableActionDirective extends BaseComponent$1 {
198792
198799
  onPropertyChange(key, nv) {
198793
198800
  if (!this._propsInitialized) return;
198794
198801
  if (key === "display-name") this.buttonDef.displayName = nv;
198802
+ else if (key === "shortcutkey") this.buttonDef.shortcutkey = nv || void 0;
198795
198803
  else this.buttonDef[key] = nv;
198796
198804
  }
198797
198805
  ngOnDestroy() {
@@ -209164,6 +209172,11 @@ var BreadcrumbComponent = class BreadcrumbComponent extends DatasetAwareNavCompo
209164
209172
  type: TextContentDirective,
209165
209173
  selector: "[textContent]",
209166
209174
  inputs: ["textContent"]
209175
+ }, {
209176
+ kind: "directive",
209177
+ type: NavigationControlDirective,
209178
+ selector: "[wmNavigationControl]",
209179
+ inputs: ["disableMenuContext", "wmNavigationControl"]
209167
209180
  }],
209168
209181
  changeDetection: ChangeDetectionStrategy$1.Eager
209169
209182
  });
@@ -209176,7 +209189,7 @@ var BreadcrumbComponent = class BreadcrumbComponent extends DatasetAwareNavCompo
209176
209189
  args: [{
209177
209190
  changeDetection: ChangeDetectionStrategy$1.Eager,
209178
209191
  standalone: true,
209179
- imports: [TextContentDirective],
209192
+ imports: [TextContentDirective, NavigationControlDirective],
209180
209193
  selector: "[wmBreadcrumb]",
209181
209194
  providers: [provideAsWidgetRef(BreadcrumbComponent)],
209182
209195
  template: "@for (item of nodes; track item; let last = $last; let index = $index) {\n <li [class.active]=\"last\" class=\"{{item.class}}\">\n <i class=\"{{item.icon}}\"></i>\n @if (!last) {\n <a [title]=\"item.label\" href=\"javascript:void(0)\" [wmNavigationControl]=\"item.link\" [disableMenuContext]=\"disableMenuContext || !!item.action\" (click)=\"onItemClick($event, item)\" [textContent]=\"item.label\"></a>\n }\n @if (last) {\n <a [title]=\"item.label\" [textContent]=\"item.label\" href=\"javascript:void(0)\" class=\"text-muted\"\n tabindex=\"0\" aria-current=\"page\"></a>\n }\n </li>\n}\n"
@@ -213799,6 +213812,7 @@ const NAMESPACE_URIS = {
213799
213812
  "math": "http://www.w3.org/1998/MathML/"
213800
213813
  };
213801
213814
  const COMPONENT_REGEX = /%COMP%/g;
213815
+ const CSS_VAR_NS_REGEX = /%NS%/g;
213802
213816
  const COMPONENT_VARIABLE = "%COMP%";
213803
213817
  const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;
213804
213818
  const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;
@@ -213808,12 +213822,12 @@ function shimContentAttribute(componentShortId) {
213808
213822
  function shimHostAttribute(componentShortId) {
213809
213823
  return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);
213810
213824
  }
213811
- function flattenStyles(compId, styles, target) {
213825
+ function flattenStyles(compId, styles, target, cssVarNamespace = "") {
213812
213826
  for (let i = 0; i < styles.length; i++) {
213813
213827
  let style = styles[i];
213814
- if (Array.isArray(style)) flattenStyles(compId, style, target);
213828
+ if (Array.isArray(style)) flattenStyles(compId, style, target, cssVarNamespace);
213815
213829
  else {
213816
- style = style.replace(COMPONENT_REGEX, compId);
213830
+ style = style.replace(COMPONENT_REGEX, compId).replace(CSS_VAR_NS_REGEX, cssVarNamespace);
213817
213831
  target.push(style);
213818
213832
  }
213819
213833
  }
@@ -213829,13 +213843,14 @@ function decoratePreventDefault(eventHandler) {
213829
213843
  };
213830
213844
  }
213831
213845
  var WMDomRendererFactory2 = class WMDomRendererFactory2 {
213832
- constructor(eventManager, sharedStylesHost, appId, doc) {
213846
+ constructor(eventManager, sharedStylesHost, appId, doc, cssVarNamespacer) {
213833
213847
  this.eventManager = eventManager;
213834
213848
  this.sharedStylesHost = sharedStylesHost;
213835
213849
  this.appId = appId;
213836
213850
  this.doc = doc;
213837
213851
  this.rendererByCompId = /* @__PURE__ */ new Map();
213838
- this.defaultRenderer = new WMDefaultDomRenderer2(eventManager, doc);
213852
+ this.cssVarNamespace = cssVarNamespacer ? cssVarNamespacer.namespace("--").substring(2) : "";
213853
+ this.defaultRenderer = new WMDefaultDomRenderer2(eventManager, doc, this.cssVarNamespace);
213839
213854
  }
213840
213855
  createRenderer(element, type) {
213841
213856
  if (!element || !type) return this.defaultRenderer;
@@ -213843,17 +213858,17 @@ var WMDomRendererFactory2 = class WMDomRendererFactory2 {
213843
213858
  case ViewEncapsulation$3.Emulated: {
213844
213859
  let renderer = this.rendererByCompId.get(type.id);
213845
213860
  if (!renderer) {
213846
- renderer = new EmulatedEncapsulationDomRenderer2(this.eventManager, this.sharedStylesHost, type, this.appId, this.doc);
213861
+ renderer = new EmulatedEncapsulationDomRenderer2(this.eventManager, this.sharedStylesHost, type, this.appId, this.doc, this.cssVarNamespace);
213847
213862
  this.rendererByCompId.set(type.id, renderer);
213848
213863
  }
213849
213864
  renderer.applyToHost(element);
213850
213865
  return renderer;
213851
213866
  }
213852
213867
  case 1:
213853
- case ViewEncapsulation$3.ShadowDom: return new ShadowDomRenderer(this.eventManager, this.sharedStylesHost, element, type, this.doc);
213868
+ case ViewEncapsulation$3.ShadowDom: return new ShadowDomRenderer(this.eventManager, this.sharedStylesHost, element, type, this.doc, this.cssVarNamespace);
213854
213869
  default:
213855
213870
  if (!this.rendererByCompId.has(type.id)) {
213856
- const styles = flattenStyles(type.id, type.styles, []);
213871
+ const styles = flattenStyles(type.id, type.styles, [], this.cssVarNamespace);
213857
213872
  this.sharedStylesHost.addStyles(styles);
213858
213873
  this.rendererByCompId.set(type.id, this.defaultRenderer);
213859
213874
  }
@@ -213872,7 +213887,11 @@ var WMDomRendererFactory2 = class WMDomRendererFactory2 {
213872
213887
  { token: EventManager },
213873
213888
  { token: SharedStylesHost$1 },
213874
213889
  { token: APP_ID },
213875
- { token: DOCUMENT$1 }
213890
+ { token: DOCUMENT$1 },
213891
+ {
213892
+ token: CssVarNamespacer,
213893
+ optional: true
213894
+ }
213876
213895
  ],
213877
213896
  target: FactoryTarget$1.Injectable
213878
213897
  });
@@ -213905,13 +213924,18 @@ var WMDomRendererFactory2 = class WMDomRendererFactory2 {
213905
213924
  type: Inject,
213906
213925
  args: [DOCUMENT$1]
213907
213926
  }]
213927
+ },
213928
+ {
213929
+ type: CssVarNamespacer,
213930
+ decorators: [{ type: Optional }]
213908
213931
  }
213909
213932
  ]
213910
213933
  });
213911
213934
  let WMDefaultDomRenderer2 = class WMDefaultDomRenderer2 {
213912
- constructor(eventManager, doc) {
213935
+ constructor(eventManager, doc, cssVarNamespace = "") {
213913
213936
  this.eventManager = eventManager;
213914
213937
  this.doc = doc;
213938
+ this.cssVarNamespace = cssVarNamespace;
213915
213939
  this.data = Object.create(null);
213916
213940
  this.destroyNode = null;
213917
213941
  }
@@ -213960,7 +213984,8 @@ let WMDefaultDomRenderer2 = class WMDefaultDomRenderer2 {
213960
213984
  if (parts.length === 2) {
213961
213985
  property = parts[0].trim();
213962
213986
  value = parts[1].trim();
213963
- element.style[property] = value;
213987
+ if (property.startsWith("--")) element.style.setProperty(property, value);
213988
+ else element.style[property] = value;
213964
213989
  }
213965
213990
  });
213966
213991
  return styleString;
@@ -213991,11 +214016,15 @@ let WMDefaultDomRenderer2 = class WMDefaultDomRenderer2 {
213991
214016
  el.classList.remove(name);
213992
214017
  }
213993
214018
  setStyle(el, style, value, flags) {
213994
- if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? "important" : "");
214019
+ const isVariable = style.startsWith("--");
214020
+ if (isVariable) style = style.replace(CSS_VAR_NS_REGEX, this.cssVarNamespace);
214021
+ if (isVariable || flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? "important" : "");
213995
214022
  else el.style[style] = value;
213996
214023
  }
213997
214024
  removeStyle(el, style, flags) {
213998
- if (flags & RendererStyleFlags2.DashCase) el.style.removeProperty(style);
214025
+ const isVariable = style.startsWith("--");
214026
+ if (isVariable) style = style.replace(CSS_VAR_NS_REGEX, this.cssVarNamespace);
214027
+ if (isVariable || flags & RendererStyleFlags2.DashCase) el.style.removeProperty(style);
213999
214028
  else el.style[style] = "";
214000
214029
  }
214001
214030
  setProperty(el, name, value) {
@@ -214012,16 +214041,20 @@ let WMDefaultDomRenderer2 = class WMDefaultDomRenderer2 {
214012
214041
  return this.eventManager.addEventListener(target, event, decoratePreventDefault(callback));
214013
214042
  }
214014
214043
  };
214015
- WMDefaultDomRenderer2 = __decorate([__param(1, Inject(DOCUMENT$1)), __metadata("design:paramtypes", [EventManager, Document])], WMDefaultDomRenderer2);
214044
+ WMDefaultDomRenderer2 = __decorate([__param(1, Inject(DOCUMENT$1)), __metadata("design:paramtypes", [
214045
+ EventManager,
214046
+ Document,
214047
+ Object
214048
+ ])], WMDefaultDomRenderer2);
214016
214049
  function isTemplateNode(node) {
214017
214050
  return node.tagName === "TEMPLATE" && node.content !== void 0;
214018
214051
  }
214019
214052
  let EmulatedEncapsulationDomRenderer2 = class EmulatedEncapsulationDomRenderer2 extends WMDefaultDomRenderer2 {
214020
- constructor(eventManager, sharedStylesHost, component, appId, doc) {
214021
- super(eventManager, doc);
214053
+ constructor(eventManager, sharedStylesHost, component, appId, doc, cssVarNamespace = "") {
214054
+ super(eventManager, doc, cssVarNamespace);
214022
214055
  this.component = component;
214023
214056
  this.doc = doc;
214024
- const styles = flattenStyles(appId + "-" + component.id, component.styles, []);
214057
+ const styles = flattenStyles(appId + "-" + component.id, component.styles, [], cssVarNamespace);
214025
214058
  sharedStylesHost.addStyles(styles);
214026
214059
  this.contentAttr = shimContentAttribute(appId + "-" + component.id);
214027
214060
  this.hostAttr = shimHostAttribute(appId + "-" + component.id);
@@ -214040,17 +214073,18 @@ EmulatedEncapsulationDomRenderer2 = __decorate([__param(4, Inject(DOCUMENT$1)),
214040
214073
  SharedStylesHost$1,
214041
214074
  Object,
214042
214075
  String,
214043
- Document
214076
+ Document,
214077
+ Object
214044
214078
  ])], EmulatedEncapsulationDomRenderer2);
214045
214079
  let ShadowDomRenderer = class ShadowDomRenderer extends WMDefaultDomRenderer2 {
214046
- constructor(eventManager, sharedStylesHost, hostEl, component, doc) {
214047
- super(eventManager, doc);
214080
+ constructor(eventManager, sharedStylesHost, hostEl, component, doc, cssVarNamespace = "") {
214081
+ super(eventManager, doc, cssVarNamespace);
214048
214082
  this.sharedStylesHost = sharedStylesHost;
214049
214083
  this.hostEl = hostEl;
214050
214084
  this.doc = doc;
214051
214085
  this.shadowRoot = hostEl.attachShadow({ mode: "open" });
214052
214086
  this.sharedStylesHost.addHost(this.shadowRoot);
214053
- const styles = flattenStyles(component.id, component.styles, []);
214087
+ const styles = flattenStyles(component.id, component.styles, [], cssVarNamespace);
214054
214088
  for (let i = 0; i < styles.length; i++) {
214055
214089
  const styleEl = document.createElement("style");
214056
214090
  styleEl.textContent = styles[i];
@@ -214081,7 +214115,8 @@ ShadowDomRenderer = __decorate([__param(4, Inject(DOCUMENT$1)), __metadata("desi
214081
214115
  SharedStylesHost$1,
214082
214116
  Object,
214083
214117
  Object,
214084
- Document
214118
+ Document,
214119
+ Object
214085
214120
  ])], ShadowDomRenderer);
214086
214121
  /**
214087
214122
  * @license