@indigina/ui-kit 1.1.508 → 1.1.509

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.
@@ -5454,9 +5454,9 @@ class KitBreadcrumbsService {
5454
5454
  collectBreadcrumbs(route) {
5455
5455
  const breadcrumbData = route.data['breadcrumb'] ?? [];
5456
5456
  const breadcrumbs = breadcrumbData.map(crumb => ({
5457
- text: this.isDynamicBreadcrumb(crumb.text)
5458
- && this.getDynamicBreadcrumbText(crumb.text, route.params)
5459
- || this.translateService.instant(crumb.text),
5457
+ text: this.isDynamicBreadcrumb(crumb.text) &&
5458
+ this.getDynamicBreadcrumbText(crumb.text, route.params) ||
5459
+ this.translateService.instant(crumb.text),
5460
5460
  url: this.replaceRouteParams(crumb.url, route.params),
5461
5461
  }));
5462
5462
  return route.firstChild && [
@@ -5849,8 +5849,8 @@ class KitGridComponent {
5849
5849
  const currentIndicator = this.dropIndicator();
5850
5850
  const dropTargetMidpoint = this.getDropTargetMidpoint(event);
5851
5851
  const distanceToMidpoint = Math.abs(event.dragEvent.clientY - dropTargetMidpoint);
5852
- if (currentIndicator?.targetRowIndex === event.dropTargetIndex
5853
- && distanceToMidpoint <= this.rowDropSwitchThresholdPx) {
5852
+ if (currentIndicator?.targetRowIndex === event.dropTargetIndex &&
5853
+ distanceToMidpoint <= this.rowDropSwitchThresholdPx) {
5854
5854
  return;
5855
5855
  }
5856
5856
  this.dropIndicator.set({
@@ -6352,9 +6352,9 @@ class KitCollapsedListComponent {
6352
6352
  requestAnimationFrame(() => this.initResizeObserver());
6353
6353
  }
6354
6354
  ngOnChanges({ itemList, gap, dropdownDefaultValueText }) {
6355
- if ((itemList && !itemList.isFirstChange())
6356
- || (gap && !gap.isFirstChange())
6357
- || (dropdownDefaultValueText && !dropdownDefaultValueText.isFirstChange())) {
6355
+ if ((itemList && !itemList.isFirstChange()) ||
6356
+ (gap && !gap.isFirstChange()) ||
6357
+ (dropdownDefaultValueText && !dropdownDefaultValueText.isFirstChange())) {
6358
6358
  requestAnimationFrame(() => this.resize());
6359
6359
  }
6360
6360
  }
@@ -7492,8 +7492,8 @@ class KitGlobalSearchComponent {
7492
7492
  if (!this.popup()?.isPopupOpen) {
7493
7493
  return;
7494
7494
  }
7495
- if (!this.textbox().hostElement.nativeElement.contains(event.target)
7496
- && !this.popup()?.popupHTMLElement?.contains(event.target)) {
7495
+ if (!this.textbox().hostElement.nativeElement.contains(event.target) &&
7496
+ !this.popup()?.popupHTMLElement?.contains(event.target)) {
7497
7497
  this.clearSearch();
7498
7498
  }
7499
7499
  }
@@ -7687,9 +7687,9 @@ const findMatches = (obj, translatePrefix, excludedKeys = [], search, translateV
7687
7687
  const handleObject = (obj, path) => {
7688
7688
  for (const [key, value,] of Object.entries(obj)) {
7689
7689
  const currentPath = path ? `${path}.${key}` : key;
7690
- const isMatch = typeof value === 'string'
7691
- && value.toLowerCase().includes(search.toLowerCase())
7692
- && !excludedKeys.includes(currentPath);
7690
+ const isMatch = typeof value === 'string' &&
7691
+ value.toLowerCase().includes(search.toLowerCase()) &&
7692
+ !excludedKeys.includes(currentPath);
7693
7693
  if (isMatch) {
7694
7694
  matches.push({
7695
7695
  path: currentPath,
@@ -9085,8 +9085,8 @@ class KitUsersSettingsEntitlementsFormComponent {
9085
9085
  effect(() => this.updateDisabledState());
9086
9086
  }
9087
9087
  get showPartnersControl() {
9088
- return this.form.get(KitUsersSettingsEntitlementsField.IDENTITY_TYPE)?.value === KitUsersSettingsEntitlementType.USER
9089
- && this.showIdentityType();
9088
+ return this.form.get(KitUsersSettingsEntitlementsField.IDENTITY_TYPE)?.value === KitUsersSettingsEntitlementType.USER &&
9089
+ this.showIdentityType();
9090
9090
  }
9091
9091
  submit() {
9092
9092
  const userId = this.userId();
@@ -9323,9 +9323,9 @@ class KitUsersSettingsPasswordDialogComponent {
9323
9323
  const control = this.form.get(field);
9324
9324
  const isTouchedAndDirty = !!control?.touched && !!control.dirty;
9325
9325
  const hasFieldError = isTouchedAndDirty && !!control?.invalid;
9326
- const hasMatchError = field === KitUsersSettingsPasswordDialogField.REPEAT_PASSWORD
9327
- && !!this.form.errors?.['passwordsMismatch']
9328
- && isTouchedAndDirty;
9326
+ const hasMatchError = field === KitUsersSettingsPasswordDialogField.REPEAT_PASSWORD &&
9327
+ !!this.form.errors?.['passwordsMismatch'] &&
9328
+ isTouchedAndDirty;
9329
9329
  return hasFieldError || hasMatchError ? KitTextboxState.ERROR : KitTextboxState.DEFAULT;
9330
9330
  }
9331
9331
  getTextboxMessageText(field) {
@@ -11331,8 +11331,8 @@ class KitFilterCheckboxComponent {
11331
11331
  this.selectedValues.set([]);
11332
11332
  return;
11333
11333
  }
11334
- const isNotNullOnly = filterValue.filters.length === 1
11335
- && filterValue.filters[0].operator === KitFilterOperator.IS_NOT_NULL;
11334
+ const isNotNullOnly = filterValue.filters.length === 1 &&
11335
+ filterValue.filters[0].operator === KitFilterOperator.IS_NOT_NULL;
11336
11336
  const hasNeq = filterValue.filters.some(f => f.operator === KitFilterOperator.NEQ);
11337
11337
  if (isNotNullOnly) {
11338
11338
  this.selectedValues.set(this.allItemsAsSelected());
@@ -11599,6 +11599,8 @@ class KitFilterInputComponent {
11599
11599
  this.filterRemoved = output();
11600
11600
  this.filterChanged = output();
11601
11601
  this.anchor = viewChild.required('toggleButton', { read: ElementRef });
11602
+ this.textboxComponents = viewChildren(KitTextboxComponent, ...(ngDevMode ? [{ debugName: "textboxComponents" }] : /* istanbul ignore next */ []));
11603
+ this.numericTextboxComponents = viewChildren(KitNumericTextboxComponent, ...(ngDevMode ? [{ debugName: "numericTextboxComponents" }] : /* istanbul ignore next */ []));
11602
11604
  this.popup = viewChild('popup', { ...(ngDevMode ? { debugName: "popup" } : /* istanbul ignore next */ {}), read: KitPopupComponent });
11603
11605
  this.kitDropdownSize = KitDropdownSize;
11604
11606
  this.kitTextboxSize = KitTextboxSize;
@@ -11616,20 +11618,19 @@ class KitFilterInputComponent {
11616
11618
  this.kitPillTheme = KitPillTheme;
11617
11619
  this.kitNumericTextboxSize = KitNumericTextboxSize;
11618
11620
  this.kitFilterType = KitFilterType;
11619
- this.rafId = null;
11621
+ this.popupToggleRafId = null;
11622
+ this.focusRafId = null;
11620
11623
  }
11621
11624
  ngOnInit() {
11622
11625
  this.initializeSelectedValues();
11623
11626
  this.showPopupOnInit();
11624
11627
  }
11625
11628
  ngOnDestroy() {
11626
- if (this.rafId) {
11627
- cancelAnimationFrame(this.rafId);
11628
- this.rafId = null;
11629
- }
11629
+ this.cancelPendingAnimationFrame('popupToggleRafId');
11630
+ this.cancelPendingAnimationFrame('focusRafId');
11630
11631
  }
11631
11632
  get applyButtonDisabled() {
11632
- return !this.hasActiveFilters();
11633
+ return !this.filterItems().filters.length;
11633
11634
  }
11634
11635
  onLogicChange(event) {
11635
11636
  this.filterItems.update(items => ({
@@ -11650,10 +11651,16 @@ class KitFilterInputComponent {
11650
11651
  onPopupToggle() {
11651
11652
  this.popup()?.toggle();
11652
11653
  }
11654
+ onPopupOpened() {
11655
+ this.scheduleFocusFirstInput();
11656
+ }
11653
11657
  close() {
11654
- if (!this.hasActiveFilters() || !this.selectedValues()) {
11655
- this.removeFilter();
11658
+ const selectedValues = this.selectedValues();
11659
+ if (selectedValues) {
11660
+ this.filterItems.set(selectedValues);
11661
+ return;
11656
11662
  }
11663
+ this.resetFiltersItems();
11657
11664
  }
11658
11665
  clearAllFilters() {
11659
11666
  this.resetFiltersItems();
@@ -11687,8 +11694,8 @@ class KitFilterInputComponent {
11687
11694
  return null;
11688
11695
  }
11689
11696
  getFilterOperatorDropdownItems() {
11690
- return this.filterInputType() === KitFilterType.NUMERIC
11691
- && this.numericFilterOperatorDropdownItems || this.textFilterOperatorDropdownItems;
11697
+ return this.filterInputType() === KitFilterType.NUMERIC &&
11698
+ this.numericFilterOperatorDropdownItems || this.textFilterOperatorDropdownItems;
11692
11699
  }
11693
11700
  hasNoValueRequiredOperator(operator) {
11694
11701
  return noValueRequiredFilterOperators.includes(operator);
@@ -11714,12 +11721,20 @@ class KitFilterInputComponent {
11714
11721
  }));
11715
11722
  }
11716
11723
  showPopupOnInit() {
11717
- if (!this.hasActiveFilters()) {
11718
- this.rafId = requestAnimationFrame(() => {
11724
+ if (!this.selectedValues()) {
11725
+ this.popupToggleRafId = requestAnimationFrame(() => {
11726
+ this.popupToggleRafId = null;
11719
11727
  this.onPopupToggle();
11720
11728
  });
11721
11729
  }
11722
11730
  }
11731
+ scheduleFocusFirstInput() {
11732
+ this.cancelPendingAnimationFrame('focusRafId');
11733
+ this.focusRafId = requestAnimationFrame(() => {
11734
+ this.focusRafId = null;
11735
+ this.focusFirstInput();
11736
+ });
11737
+ }
11723
11738
  createFilterItem(field) {
11724
11739
  return {
11725
11740
  field,
@@ -11733,8 +11748,12 @@ class KitFilterInputComponent {
11733
11748
  filters: items.filters.map((item, i) => (i === index && { ...item, ...update } || item)),
11734
11749
  }));
11735
11750
  }
11736
- hasActiveFilters() {
11737
- return this.filterItems().filters.some(filter => this.hasSelectedFilter(filter));
11751
+ focusFirstInput() {
11752
+ if (this.filterInputType() === KitFilterType.NUMERIC) {
11753
+ this.numericTextboxComponents()[0]?.focus();
11754
+ return;
11755
+ }
11756
+ this.textboxComponents()[0]?.focus();
11738
11757
  }
11739
11758
  hasSelectedFilter(filter) {
11740
11759
  return this.hasNoValueRequiredOperator(filter.operator) || !!filter.value || filter.value === 0;
@@ -11745,8 +11764,22 @@ class KitFilterInputComponent {
11745
11764
  value: item,
11746
11765
  }));
11747
11766
  }
11767
+ cancelPendingAnimationFrame(idKey) {
11768
+ const id = idKey === 'popupToggleRafId'
11769
+ ? this.popupToggleRafId
11770
+ : this.focusRafId;
11771
+ if (id === null) {
11772
+ return;
11773
+ }
11774
+ cancelAnimationFrame(id);
11775
+ if (idKey === 'popupToggleRafId') {
11776
+ this.popupToggleRafId = null;
11777
+ return;
11778
+ }
11779
+ this.focusRafId = null;
11780
+ }
11748
11781
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KitFilterInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11749
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: KitFilterInputComponent, isStandalone: true, selector: "kit-filter-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, filterInputType: { classPropertyName: "filterInputType", publicName: "filterInputType", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && !!(filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n", styles: ["::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"], dependencies: [{ kind: "component", type: KitDropdownComponent, selector: "kit-dropdown", inputs: ["items", "selectedItem", "label", "disabled", "messageIcon", "messageText", "invalid", "defaultItem", "listHeight", "hideDefaultItem", "toggleIcon", "popupSettings", "isValuePrimitive", "footerTemplate", "noDataTemplate", "readonly", "size"], outputs: ["selectedItemChange", "disabledChange", "selected"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: KitNumericTextboxComponent, selector: "kit-numeric-textbox", inputs: ["placeholder", "label", "defaultValue", "decimals", "min", "max", "maxlength", "messageIcon", "messageText", "disabled", "format", "state", "icon", "size", "showStateIcon"], outputs: ["defaultValueChange", "disabledChange", "blured", "changed"] }, { kind: "pipe", type: i1$e.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11782
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: KitFilterInputComponent, isStandalone: true, selector: "kit-filter-input", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null }, filterInputType: { classPropertyName: "filterInputType", publicName: "filterInputType", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterRemoved: "filterRemoved", filterChanged: "filterChanged" }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "textboxComponents", predicate: KitTextboxComponent, descendants: true, isSignal: true }, { propertyName: "numericTextboxComponents", predicate: KitNumericTextboxComponent, descendants: true, isSignal: true }, { propertyName: "popup", first: true, predicate: ["popup"], descendants: true, read: KitPopupComponent, isSignal: true }], ngImport: i0, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && !!(filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (opened)=\"onPopupOpened()\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n", styles: ["::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"], dependencies: [{ kind: "component", type: KitDropdownComponent, selector: "kit-dropdown", inputs: ["items", "selectedItem", "label", "disabled", "messageIcon", "messageText", "invalid", "defaultItem", "listHeight", "hideDefaultItem", "toggleIcon", "popupSettings", "isValuePrimitive", "footerTemplate", "noDataTemplate", "readonly", "size"], outputs: ["selectedItemChange", "disabledChange", "selected"] }, { kind: "component", type: KitPillComponent, selector: "kit-pill", inputs: ["removable", "selectable", "selected", "type", "theme", "icon", "iconType"], outputs: ["clicked", "removed"] }, { kind: "component", type: KitPopupComponent, selector: "kit-popup", inputs: ["anchor", "content", "closeOnOutsideClick", "showFooter", "cancelButtonLabel", "applyButtonLabel", "isApplyButtonDisabled", "positionMode", "popupClass", "closePopupOnCancel", "extraInsideSelectors"], outputs: ["cancelAction", "applyAction", "opened", "closed"] }, { kind: "component", type: KitTextboxComponent, selector: "kit-textbox", inputs: ["placeholder", "label", "labelTooltip", "defaultValue", "messageIcon", "messageText", "messageTemplate", "disabled", "maxlength", "state", "size", "icon", "clearButton", "showStateIcon", "readonly", "customStateIcon", "type"], outputs: ["defaultValueChange", "disabledChange", "blured", "focused", "changed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: KitNumericTextboxComponent, selector: "kit-numeric-textbox", inputs: ["placeholder", "label", "defaultValue", "decimals", "min", "max", "maxlength", "messageIcon", "messageText", "disabled", "format", "state", "icon", "size", "showStateIcon"], outputs: ["defaultValueChange", "disabledChange", "blured", "changed"] }, { kind: "pipe", type: i1$e.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11750
11783
  }
11751
11784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: KitFilterInputComponent, decorators: [{
11752
11785
  type: Component,
@@ -11757,8 +11790,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
11757
11790
  KitTextboxComponent,
11758
11791
  TranslateModule,
11759
11792
  KitNumericTextboxComponent,
11760
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && !!(filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n", styles: ["::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"] }]
11761
- }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], filterInputType: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterInputType", required: true }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
11793
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kit-pill #toggleButton\n [selectable]=\"!filter().readonly\"\n [selected]=\"popup.isPopupOpen\"\n [removable]=\"!filter().readonly && !!(filter().removable ?? true)\"\n [theme]=\"filter().readonly && kitPillTheme.BLUE || kitPillTheme.DEFAULT\"\n (removed)=\"removeFilter()\"\n (clicked)=\"onPopupToggle()\">\n {{ filter().title | translate }}:\n @if (selectedValues()?.filters; as selectedFilters) {\n @for (filter of selectedFilters; track $index) {\n {{ getSelectedFilterText(filter) }}\n\n @if ($index === 0) {\n {{ getSelectedLogicText(selectedValues()) }}\n }\n }\n }\n</kit-pill>\n\n<kit-popup #popup\n popupClass=\"kit-filter-input-popup\"\n [anchor]=\"anchor()\"\n [content]=\"content\"\n [showFooter]=\"true\"\n [applyButtonLabel]=\"'kit.filters.apply' | translate\"\n [cancelButtonLabel]=\"'kit.filters.clear' | translate\"\n [isApplyButtonDisabled]=\"applyButtonDisabled\"\n [closePopupOnCancel]=\"false\"\n [extraInsideSelectors]=\"['.kit-dropdown-popup']\"\n (opened)=\"onPopupOpened()\"\n (applyAction)=\"applyFilter()\"\n (cancelAction)=\"clearAllFilters()\"\n (closed)=\"close()\">\n</kit-popup>\n\n<ng-template #content>\n <div class=\"popup-content\">\n @for (item of filterItems().filters; track $index) {\n <div class=\"filter-item\">\n <kit-dropdown [items]=\"getFilterOperatorDropdownItems()\"\n [size]=\"kitDropdownSize.SMALL\"\n [selectedItem]=\"$any(item.operator)\"\n (selected)=\"onOperatorSelect($event.value, $index)\"\n ></kit-dropdown>\n <div class=\"filter-controls\">\n @switch (filterInputType()) {\n @case (kitFilterType.TEXT) {\n <kit-textbox class=\"filter-item-value\"\n [size]=\"kitTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-textbox>\n }\n @case (kitFilterType.NUMERIC) {\n <kit-numeric-textbox class=\"filter-item-value\"\n format=\"#.###\"\n [size]=\"kitNumericTextboxSize.SMALL\"\n [defaultValue]=\"item.value\"\n [min]=\"0\"\n [disabled]=\"isFilterValueTextboxDisabled($index)\"\n (changed)=\"onValueChange($event, $index)\"\n (keydown.enter)=\"onEnterKey()\"\n ></kit-numeric-textbox>\n }\n }\n @if ($index === 0) {\n <kit-dropdown class=\"logic-selector\"\n [selectedItem]=\"filterItems().logic\"\n [items]=\"filterLogicDropdownItems\"\n [size]=\"kitDropdownSize.SMALL\"\n (selected)=\"onLogicChange($event.value)\"\n ></kit-dropdown>\n }\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n", styles: ["::ng-deep .kit-filter-input-popup .popup-content{display:flex;flex-direction:column;gap:10px;width:296px;box-sizing:border-box}::ng-deep .kit-filter-input-popup .filter-item{display:flex;flex-direction:column;gap:10px}::ng-deep .kit-filter-input-popup .filter-item-value{flex:1}::ng-deep .kit-filter-input-popup .filter-controls{display:flex;gap:10px}::ng-deep .kit-filter-input-popup .logic-selector{flex-shrink:0;width:100px}\n"] }]
11794
+ }], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: true }] }], filterInputType: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterInputType", required: true }] }], filterRemoved: [{ type: i0.Output, args: ["filterRemoved"] }], filterChanged: [{ type: i0.Output, args: ["filterChanged"] }], anchor: [{ type: i0.ViewChild, args: ['toggleButton', { ...{ read: ElementRef }, isSignal: true }] }], textboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitTextboxComponent), { isSignal: true }] }], numericTextboxComponents: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => KitNumericTextboxComponent), { isSignal: true }] }], popup: [{ type: i0.ViewChild, args: ['popup', { ...{ read: KitPopupComponent }, isSignal: true }] }] } });
11762
11795
 
11763
11796
  class KitFilterNullCheckComponent {
11764
11797
  constructor() {
@@ -14663,10 +14696,10 @@ const prettifyXml = (document) => {
14663
14696
  indentLevel = Math.max(indentLevel - 1, 0);
14664
14697
  }
14665
14698
  const line = `${' '.repeat(indentLevel)}${token}`;
14666
- const isOpeningTag = token.startsWith('<')
14667
- && !token.startsWith('</')
14668
- && !token.endsWith('/>')
14669
- && !token.includes('</');
14699
+ const isOpeningTag = token.startsWith('<') &&
14700
+ !token.startsWith('</') &&
14701
+ !token.endsWith('/>') &&
14702
+ !token.includes('</');
14670
14703
  if (isOpeningTag) {
14671
14704
  indentLevel += 1;
14672
14705
  }