@quadrel-enterprise-ui/framework 20.26.1 → 20.26.2

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Directive, InjectionToken, HostBinding, Input, ViewEncapsulation, Component, Injectable, Injector, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, NgModule, EventEmitter, Output, Renderer2, Pipe, ViewContainerRef, NO_ERRORS_SCHEMA, DestroyRef, SecurityContext, NgZone, ViewChildren, forwardRef, ContentChildren, ContentChild, isDevMode, QueryList, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, TemplateRef } from '@angular/core';
2
+ import { inject, ElementRef, Directive, InjectionToken, HostBinding, Input, ViewEncapsulation, Component, Injectable, Injector, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, NgModule, EventEmitter, Output, Renderer2, Pipe, ViewContainerRef, NO_ERRORS_SCHEMA, DestroyRef, SecurityContext, NgZone, ViewChildren, forwardRef, ContentChildren, ContentChild, isDevMode, QueryList, TemplateRef, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer } from '@angular/core';
3
3
  import { Dialog, DialogRef, DialogModule } from '@angular/cdk/dialog';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule, NgFor, NgIf, NgClass, NgTemplateOutlet, AsyncPipe } from '@angular/common';
@@ -8445,7 +8445,9 @@ class QdAutofocusDirective {
8445
8445
  return;
8446
8446
  }
8447
8447
  element.focus();
8448
- this._blurHandler = () => void (this.autofocusService.isAutofocusActivated = false);
8448
+ this._blurHandler = () => {
8449
+ this.autofocusService.isAutofocusActivated = false;
8450
+ };
8449
8451
  element.addEventListener('blur', this._blurHandler, { once: true });
8450
8452
  }, 0);
8451
8453
  }
@@ -30190,8 +30192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
30190
30192
  /**
30191
30193
  * **QdPageTabHeader* renders the header of a single tab. It is used quadrel-internally.
30192
30194
  */
30193
- class QdPageTabHeaderComponent extends CdkStepHeader {
30194
- STEP_STATE = STEP_STATE;
30195
+ class QdPageTabHeaderComponent {
30195
30196
  /** State of the given tab. */
30196
30197
  state;
30197
30198
  /** Label of the given tab. */
@@ -30208,24 +30209,21 @@ class QdPageTabHeaderComponent extends CdkStepHeader {
30208
30209
  * A static test ID for integration tests can be set.
30209
30210
  */
30210
30211
  testId;
30211
- constructor() {
30212
- const elementRef = inject(ElementRef);
30213
- super(elementRef);
30214
- }
30215
30212
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30216
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabHeaderComponent, isStandalone: true, selector: "qd-page-tab-header", inputs: { state: "state", label: "label", counters: "counters", index: "index", isSelected: "isSelected", isDisabled: "isDisabled", testId: ["data-test-id", "testId"] }, host: { properties: { "attr.data-test-id": "testId", "class.qd-tab-current": "isSelected && !isDisabled", "class.qd-tab-disabled": "isDisabled", "class.qd-tab-done": "state === STEP_STATE.DONE", "class.qd-tab-edit": "state === STEP_STATE.EDIT", "class.qd-tab-error": "state === STEP_STATE.ERROR" } }, usesInheritance: true, ngImport: i0, template: "<span class=\"qd-tab-caption\">\n {{ label }}\n <qd-page-tab-header-counters [counters]=\"counters\" [data-test-id]=\"testId + '-counters'\" />\n</span>\n", styles: [":host{position:relative;display:inline-flex;height:2.5rem;padding:.625rem 0;cursor:pointer;color:#757575;font-size:14px;font-weight:400;line-height:18px}:host .qd-tab-caption{font-weight:500;white-space:nowrap}:host:hover,:host.qd-tab-current{color:#069}:host.qd-tab-current .qd-tab-caption{position:relative}:host.qd-tab-current .qd-tab-caption:after{position:absolute;bottom:-.6875rem;left:0;display:inline-block;width:100%;height:.25rem;background-color:#069;content:\"\"}:host.qd-tab-done,:host.qd-tab-edit{color:#171717}:host.qd-tab-error{color:#c70023}:host.qd-tab-disabled{color:#b4b4b4;cursor:default}:host.qd-tab-disabled:hover{color:#b4b4b4}\n"], dependencies: [{ kind: "component", type: QdPageTabHeaderCountersComponent, selector: "qd-page-tab-header-counters", inputs: ["counters", "data-test-id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30213
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabHeaderComponent, isStandalone: true, selector: "qd-page-tab-header", inputs: { state: "state", label: "label", counters: "counters", index: "index", isSelected: "isSelected", isDisabled: "isDisabled", testId: ["data-test-id", "testId"] }, host: { attributes: { "role": "tab" }, properties: { "attr.data-test-id": "testId", "class.qd-tab-current": "isSelected && !isDisabled", "class.qd-tab-disabled": "isDisabled", "class.qd-tab-done": "state === 'done'", "class.qd-tab-edit": "state === 'edit'", "class.qd-tab-error": "state === 'error'" } }, ngImport: i0, template: "<span class=\"qd-tab-caption\">\n {{ label }}\n <qd-page-tab-header-counters [counters]=\"counters\" [data-test-id]=\"testId + '-counters'\" />\n</span>\n", styles: [":host{position:relative;display:inline-flex;height:2.5rem;padding:.625rem 0;cursor:pointer;color:#757575;font-size:14px;font-weight:400;line-height:18px}:host .qd-tab-caption{font-weight:500;white-space:nowrap}:host:hover,:host.qd-tab-current{color:#069}:host.qd-tab-current .qd-tab-caption{position:relative}:host.qd-tab-current .qd-tab-caption:after{position:absolute;bottom:-.6875rem;left:0;display:inline-block;width:100%;height:.25rem;background-color:#069;content:\"\"}:host.qd-tab-done,:host.qd-tab-edit{color:#171717}:host.qd-tab-error{color:#c70023}:host.qd-tab-disabled{color:#b4b4b4;cursor:default}:host.qd-tab-disabled:hover{color:#b4b4b4}\n"], dependencies: [{ kind: "component", type: QdPageTabHeaderCountersComponent, selector: "qd-page-tab-header-counters", inputs: ["counters", "data-test-id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30217
30214
  }
30218
30215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabHeaderComponent, decorators: [{
30219
30216
  type: Component,
30220
30217
  args: [{ selector: 'qd-page-tab-header', changeDetection: ChangeDetectionStrategy.OnPush, host: {
30221
30218
  '[attr.data-test-id]': 'testId',
30219
+ role: 'tab',
30222
30220
  '[class.qd-tab-current]': 'isSelected && !isDisabled',
30223
30221
  '[class.qd-tab-disabled]': 'isDisabled',
30224
- '[class.qd-tab-done]': 'state === STEP_STATE.DONE',
30225
- '[class.qd-tab-edit]': 'state === STEP_STATE.EDIT',
30226
- '[class.qd-tab-error]': 'state === STEP_STATE.ERROR'
30222
+ '[class.qd-tab-done]': "state === 'done'",
30223
+ '[class.qd-tab-edit]': "state === 'edit'",
30224
+ '[class.qd-tab-error]': "state === 'error'"
30227
30225
  }, standalone: true, imports: [QdPageTabHeaderCountersComponent], template: "<span class=\"qd-tab-caption\">\n {{ label }}\n <qd-page-tab-header-counters [counters]=\"counters\" [data-test-id]=\"testId + '-counters'\" />\n</span>\n", styles: [":host{position:relative;display:inline-flex;height:2.5rem;padding:.625rem 0;cursor:pointer;color:#757575;font-size:14px;font-weight:400;line-height:18px}:host .qd-tab-caption{font-weight:500;white-space:nowrap}:host:hover,:host.qd-tab-current{color:#069}:host.qd-tab-current .qd-tab-caption{position:relative}:host.qd-tab-current .qd-tab-caption:after{position:absolute;bottom:-.6875rem;left:0;display:inline-block;width:100%;height:.25rem;background-color:#069;content:\"\"}:host.qd-tab-done,:host.qd-tab-edit{color:#171717}:host.qd-tab-error{color:#c70023}:host.qd-tab-disabled{color:#b4b4b4;cursor:default}:host.qd-tab-disabled:hover{color:#b4b4b4}\n"] }]
30228
- }], ctorParameters: () => [], propDecorators: { state: [{
30226
+ }], propDecorators: { state: [{
30229
30227
  type: Input
30230
30228
  }], label: [{
30231
30229
  type: Input
@@ -30242,13 +30240,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
30242
30240
  args: ['data-test-id']
30243
30241
  }] } });
30244
30242
 
30243
+ // @ts-strict-ignore
30244
+ /**
30245
+ * The **QdPageTab** is a single tab inside the **QdPageTabs** within a **QdPage**.
30246
+ */
30247
+ class QdPageTabComponent {
30248
+ _pageTabs = inject(forwardRef(() => QdPageTabsComponent));
30249
+ translate = inject(TranslateService);
30250
+ /**
30251
+ * Configuration of QdPageTabComponent.
30252
+ *
30253
+ * * @note The use of CDK attributes is not permitted. Please configure this component here.
30254
+ */
30255
+ config;
30256
+ /** Form control for this tab. */
30257
+ set tabControl(tabControl) {
30258
+ this.stepControl = tabControl;
30259
+ }
30260
+ get tabControl() {
30261
+ return this.stepControl;
30262
+ }
30263
+ infoBanners;
30264
+ content;
30265
+ stepControl;
30266
+ interacted = false;
30267
+ editable = true;
30268
+ get completed() {
30269
+ if (!this.interacted)
30270
+ return false;
30271
+ const control = this.tabControl;
30272
+ if (!control)
30273
+ return true;
30274
+ return !control.invalid && !control.pending;
30275
+ }
30276
+ get hasError() {
30277
+ return this.interacted && !!this.tabControl?.invalid;
30278
+ }
30279
+ _destroyed$ = new Subject();
30280
+ select() {
30281
+ const index = this._pageTabs.tabs.toArray().indexOf(this);
30282
+ if (index >= 0)
30283
+ this._pageTabs.selectedIndex = index;
30284
+ }
30285
+ ngOnInit() {
30286
+ this.validateLabel();
30287
+ if (this.tabControl)
30288
+ this.initErrorCheck();
30289
+ }
30290
+ ngOnChanges(changes) {
30291
+ ['label', 'errorMessage', 'state']
30292
+ .filter(inputName => !!changes[inputName])
30293
+ .forEach(inputName => this.blockCdkInput(inputName));
30294
+ }
30295
+ ngOnDestroy() {
30296
+ this._destroyed$.complete();
30297
+ }
30298
+ blockCdkInput(inputName) {
30299
+ throw new Error(`Quadrel Framework | QdPageTab - The use of the "${inputName}" attribute is not permitted. Please use QdPageTabConfig instead.`);
30300
+ }
30301
+ validateLabel() {
30302
+ if (!this.config?.label?.i18n)
30303
+ console.error('Quadrel Framework | QdPageTab - Please provide a label for the tab.');
30304
+ }
30305
+ initErrorCheck() {
30306
+ this.tabControl.statusChanges.pipe(takeUntil$1(this._destroyed$)).subscribe(() => {
30307
+ if (this.hasAnyError(this.tabControl)) {
30308
+ this.interacted = true;
30309
+ }
30310
+ this._pageTabs._stateChanged();
30311
+ });
30312
+ }
30313
+ hasAnyError(control) {
30314
+ if (control.errors && control.touched)
30315
+ return true;
30316
+ if (control instanceof FormGroup) {
30317
+ return Object.values(control.controls).some(control => this.hasAnyError(control));
30318
+ }
30319
+ if (control instanceof FormArray) {
30320
+ return control.controls.some(control => this.hasAnyError(control));
30321
+ }
30322
+ return false;
30323
+ }
30324
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30325
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabComponent, isStandalone: true, selector: "qd-page-tab", inputs: { config: "config", tabControl: "tabControl" }, queries: [{ propertyName: "infoBanners", predicate: QdPageInfoBannerComponent }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template>\n <div class=\"page-info-banners\">\n <ng-content select=\"qd-page-info-banner\"></ng-content>\n </div>\n\n <ng-content></ng-content>\n</ng-template>\n", styles: [".page-info-banners:has(>qd-page-info-banner:not(.qd-page-info-banner-empty)){padding:1rem 1.25rem .5rem;border-bottom:rgb(213,213,213) solid .0625rem;background-color:#fff}.page-info-banners>qd-page-info-banner:last-child{margin-bottom:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30326
+ }
30327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabComponent, decorators: [{
30328
+ type: Component,
30329
+ args: [{ selector: 'qd-page-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-template>\n <div class=\"page-info-banners\">\n <ng-content select=\"qd-page-info-banner\"></ng-content>\n </div>\n\n <ng-content></ng-content>\n</ng-template>\n", styles: [".page-info-banners:has(>qd-page-info-banner:not(.qd-page-info-banner-empty)){padding:1rem 1.25rem .5rem;border-bottom:rgb(213,213,213) solid .0625rem;background-color:#fff}.page-info-banners>qd-page-info-banner:last-child{margin-bottom:0}\n"] }]
30330
+ }], propDecorators: { config: [{
30331
+ type: Input
30332
+ }], tabControl: [{
30333
+ type: Input
30334
+ }], infoBanners: [{
30335
+ type: ContentChildren,
30336
+ args: [QdPageInfoBannerComponent]
30337
+ }], content: [{
30338
+ type: ViewChild,
30339
+ args: [TemplateRef, { static: true }]
30340
+ }] } });
30341
+
30245
30342
  const TAB_PARAM_NAME = 'tab';
30246
30343
  const OWNED_PARAMS = [TAB_PARAM_NAME];
30247
30344
  const FEATURE_LABEL = { name: 'Page Tabs', plural: 'page tabs' };
30248
30345
  /**
30249
30346
  * Per-view adapter that syncs `QdPageTabsComponent` selection with the URL `?tab=` query
30250
30347
  * param via `QdRouterQueryParamHubService`. Reads on activation and selects the matching
30251
- * tab (with fallback for unknown/disabled names), writes on `selectionChange`. Coordination,
30348
+ * tab (with fallback for unknown/disabled names), writes on `tabSelection`. Coordination,
30252
30349
  * ownership, and write batching are delegated to the hub — see its JSDoc for details.
30253
30350
  * Behavior contracts live in `page-tabs-router-connector.service.spec.ts` and
30254
30351
  * `router-query-param-hub.integration.cy.ts`.
@@ -30259,9 +30356,9 @@ const FEATURE_LABEL = { name: 'Page Tabs', plural: 'page tabs' };
30259
30356
  * write pipeline (see commit 57f0a271a).
30260
30357
  *
30261
30358
  * Internal invariant: when the requested tab is unknown or disabled, `selectFallbackTab()`
30262
- * writes the URL explicitly. CdkStepper does not emit `selectionChange` if the fallback is
30263
- * already the selected step, so without the explicit write deep-links like `?tab=phantom`
30264
- * would leave a stale param in the URL.
30359
+ * writes the URL explicitly. `tabSelection` is not emitted if the fallback is already
30360
+ * the selected tab, so without the explicit write deep-links like `?tab=phantom` would
30361
+ * leave a stale param in the URL.
30265
30362
  */
30266
30363
  class QdPageTabsRouterConnectorService {
30267
30364
  _hub = inject(QdRouterQueryParamHubService);
@@ -30310,8 +30407,8 @@ class QdPageTabsRouterConnectorService {
30310
30407
  }
30311
30408
  subscribeToTabChanges() {
30312
30409
  const component = this._connectedComponent;
30313
- this._writeSubscription = component.selectionChange
30314
- .pipe(map(event => event.selectedStep?.config?.name), takeUntilDestroyed(this._destroyRef))
30410
+ this._writeSubscription = component.tabSelection
30411
+ .pipe(map(event => event.selectedTab?.config?.name), takeUntilDestroyed(this._destroyRef))
30315
30412
  .subscribe(name => this.writeUrl(name));
30316
30413
  }
30317
30414
  writeUrl(name) {
@@ -30547,10 +30644,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
30547
30644
  * - If an invalid tab name is provided in URL, the first available tab is selected
30548
30645
  * - If no tab parameter is present, the `selectedIndex` or first non-disabled tab is selected
30549
30646
  */
30550
- class QdPageTabsComponent extends CdkStepper {
30647
+ class QdPageTabsComponent {
30551
30648
  footerService = inject(QdPageFooterService, { optional: true });
30552
30649
  pageStoreService = inject(QdPageStoreService);
30553
30650
  routerConnector = inject(QdPageTabsRouterConnectorService);
30651
+ _changeDetectorRef = inject(ChangeDetectorRef);
30652
+ destroyRef = inject(DestroyRef);
30653
+ static _idCounter = 0;
30654
+ _id = QdPageTabsComponent._idCounter++;
30554
30655
  get hasPageFooter() {
30555
30656
  return !!this.footerService;
30556
30657
  }
@@ -30563,23 +30664,45 @@ class QdPageTabsComponent extends CdkStepper {
30563
30664
  */
30564
30665
  testId = 'page-tabs';
30565
30666
  tabSelection = new EventEmitter();
30667
+ _tabs;
30668
+ linear = false;
30669
+ _selectedIndex = 0;
30566
30670
  _viewonly;
30567
- destroyRef = inject(DestroyRef);
30568
30671
  get tabs() {
30569
- return this.steps;
30672
+ return this._tabs;
30570
30673
  }
30571
30674
  get selected() {
30572
- return super.selected;
30675
+ return this._tabs?.get(this._selectedIndex);
30573
30676
  }
30574
- set selected(step) {
30575
- super.selected = step;
30677
+ set selected(tab) {
30678
+ if (!tab)
30679
+ return;
30680
+ const index = this._tabs?.toArray().indexOf(tab);
30681
+ if (index !== undefined && index >= 0) {
30682
+ this.selectedIndex = index;
30683
+ }
30576
30684
  }
30577
- constructor() {
30578
- const _dir = inject(Directionality, { optional: true });
30579
- const _changeDetectorRef = inject(ChangeDetectorRef);
30580
- const _elementRef = inject(ElementRef);
30581
- super(_dir, _changeDetectorRef, _elementRef);
30582
- this.mapSelectionChangeToTabSelectionOutput();
30685
+ get selectedIndex() {
30686
+ return this._selectedIndex;
30687
+ }
30688
+ set selectedIndex(newIndex) {
30689
+ if (newIndex === this._selectedIndex)
30690
+ return;
30691
+ const prevIndex = this._selectedIndex;
30692
+ const prevTab = this._tabs?.get(prevIndex);
30693
+ if (prevTab?.tabControl) {
30694
+ prevTab.interacted = true;
30695
+ }
30696
+ this._selectedIndex = newIndex;
30697
+ if (this._tabs) {
30698
+ this.tabSelection.emit({
30699
+ selectedIndex: newIndex,
30700
+ previouslySelectedIndex: prevIndex,
30701
+ selectedTab: this._tabs.get(newIndex),
30702
+ previouslySelectedTab: this._tabs.get(prevIndex)
30703
+ });
30704
+ }
30705
+ this._changeDetectorRef.markForCheck();
30583
30706
  }
30584
30707
  ngOnInit() {
30585
30708
  this.linear = false;
@@ -30593,24 +30716,10 @@ class QdPageTabsComponent extends CdkStepper {
30593
30716
  .filter(inputName => !!changes[inputName])
30594
30717
  .forEach(inputName => this.blockCdkInput(inputName));
30595
30718
  }
30596
- _getIndicatorType(index, state) {
30597
- if (state)
30598
- return state;
30599
- const step = this.steps.get(index);
30600
- if (!step)
30601
- return 'number';
30602
- if (step.hasError)
30603
- return 'error';
30604
- if (step.completed)
30605
- return step.editable ? 'edit' : 'done';
30606
- return 'number';
30607
- }
30608
30719
  ngAfterContentInit() {
30609
- super.ngAfterContentInit();
30610
- this.tabs.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this._stateChanged());
30720
+ this._tabs.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this._stateChanged());
30611
30721
  }
30612
30722
  ngAfterViewInit() {
30613
- super.ngAfterViewInit();
30614
30723
  setTimeout(() => {
30615
30724
  if (this.config?.connectWithRouter) {
30616
30725
  this.configureBookmarkableTabs();
@@ -30619,9 +30728,42 @@ class QdPageTabsComponent extends CdkStepper {
30619
30728
  this.initializeTabSelection();
30620
30729
  });
30621
30730
  }
30731
+ _stateChanged() {
30732
+ this._changeDetectorRef.markForCheck();
30733
+ }
30734
+ _getIndicatorType(index) {
30735
+ const tab = this._tabs.get(index);
30736
+ if (!tab)
30737
+ return 'number';
30738
+ if (tab.hasError && !this._viewonly)
30739
+ return 'error';
30740
+ if (tab.completed)
30741
+ return tab.editable ? 'edit' : 'done';
30742
+ return 'number';
30743
+ }
30744
+ _getTabLabelId(i) {
30745
+ return `qd-tabs-${this._id}-label-${i}`;
30746
+ }
30747
+ save() {
30748
+ this.selected?.tabControl?.markAllAsTouched();
30749
+ const tabControlValues = this._tabs.map(tab => tab.tabControl?.value);
30750
+ this.config?.submitButton?.handler?.(tabControlValues);
30751
+ }
30752
+ selectTab(tab) {
30753
+ if (tab.config?.isDisabled)
30754
+ return;
30755
+ tab.select();
30756
+ }
30757
+ isSubmitButtonShown() {
30758
+ return this.config?.submitButton?.isHidden !== true && !this.footerService;
30759
+ }
30760
+ isSubmitButtonDisabled() {
30761
+ return this.config?.submitButton?.isDisabled;
30762
+ }
30622
30763
  initializeTabSelection() {
30623
30764
  if (this.config?.selectedIndex && this.isTabSelectable(this.config.selectedIndex)) {
30624
- this.selectedIndex = this.config.selectedIndex;
30765
+ this._selectedIndex = this.config.selectedIndex;
30766
+ this._changeDetectorRef.markForCheck();
30625
30767
  return;
30626
30768
  }
30627
30769
  this.selectFirstNotDisabledTab();
@@ -30630,19 +30772,20 @@ class QdPageTabsComponent extends CdkStepper {
30630
30772
  this.routerConnector.connectTabsWithRouter(this).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
30631
30773
  }
30632
30774
  isTabSelectable(index) {
30633
- const tab = this.tabs.get(index);
30775
+ const tab = this._tabs.get(index);
30634
30776
  return !!tab && !tab.config.isDisabled;
30635
30777
  }
30636
30778
  /**
30637
30779
  * Selects the first tab that is not disabled.
30638
30780
  */
30639
30781
  selectFirstNotDisabledTab() {
30640
- this.tabs.some((tab, tabIndex) => {
30782
+ this._tabs.some((tab, tabIndex) => {
30641
30783
  if (!tab.config.isDisabled) {
30642
30784
  if (this.config) {
30643
30785
  this.config.selectedIndex = tabIndex;
30644
30786
  }
30645
- this.selectedIndex = tabIndex;
30787
+ this._selectedIndex = tabIndex;
30788
+ this._changeDetectorRef.markForCheck();
30646
30789
  return true;
30647
30790
  }
30648
30791
  else {
@@ -30650,51 +30793,25 @@ class QdPageTabsComponent extends CdkStepper {
30650
30793
  }
30651
30794
  });
30652
30795
  }
30653
- save() {
30654
- this.selected?.tabControl?.markAllAsTouched();
30655
- const tabControlValues = this.tabs.map(tab => tab.tabControl?.value);
30656
- this.config?.submitButton?.handler?.(tabControlValues);
30657
- }
30658
- selectTab(tab) {
30659
- if (tab.config?.isDisabled)
30660
- return;
30661
- tab.select();
30662
- }
30663
- isSubmitButtonShown() {
30664
- return this.config?.submitButton?.isHidden !== true && !this.footerService;
30665
- }
30666
- isSubmitButtonDisabled() {
30667
- return this.config?.submitButton?.isDisabled;
30668
- }
30669
- _getTabLabelId(i) {
30670
- return this._getStepLabelId(i);
30671
- }
30672
30796
  blockCdkInput(inputName) {
30673
30797
  throw new Error(`Quadrel Framework | QdPageTabs - The use of the "${inputName}" attribute is not permitted. Please use QdPageTabsConfig instead.`);
30674
30798
  }
30675
- mapSelectionChangeToTabSelectionOutput() {
30676
- this.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(selectionEvent => {
30677
- this.tabSelection.emit({
30678
- selectedIndex: selectionEvent.selectedIndex,
30679
- previouslySelectedIndex: selectionEvent.previouslySelectedIndex,
30680
- selectedTab: selectionEvent.selectedStep,
30681
- previouslySelectedTab: selectionEvent.previouslySelectedStep
30682
- });
30683
- });
30684
- }
30685
30799
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30686
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabsComponent, isStandalone: true, selector: "qd-page-tabs", inputs: { config: "config", testId: ["data-test-id", "testId"] }, outputs: { tabSelection: "tabSelection" }, host: { properties: { "class.standalone": "!hasPageFooter" }, classAttribute: "qd-tabs" }, providers: [{ provide: CdkStepper, useExisting: QdPageTabsComponent }, QdPageTabsRouterConnectorService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"qd-tabs-items-container\" [ngClass]=\"{ scrollable: config?.scrollabe }\">\n <qd-page-tab-header\n *ngFor=\"let tab of tabs; let i = index\"\n (click)=\"selectTab(tab)\"\n [id]=\"_getTabLabelId(i)\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i, tab.state)\"\n [label]=\"tab.config.label.i18n | translate\"\n [counters]=\"tab.config.counters\"\n [isSelected]=\"selectedIndex === i\"\n [isDisabled]=\"tab.config?.isDisabled\"\n [data-test-id]=\"testId + '-header' + '-' + i\"\n >\n </qd-page-tab-header>\n</div>\n\n<div class=\"tabs-content\">\n <ng-container *ngIf=\"!selected?.config?.isDisabled\" [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-tabs-action-area\" *ngIf=\"isSubmitButtonShown()\">\n <button qdButton (click)=\"save()\" [disabled]=\"isSubmitButtonDisabled()\" [data-test-id]=\"testId + '-submit'\">\n {{ config?.submitButton?.i18n || \"i18n.qd.tabs.button.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-tabs-items-container{display:flex;width:100%;flex-direction:row;flex-wrap:wrap;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .9375rem}@media (max-width: 599.98px){:host .qd-tabs-items-container{padding:0 .9375rem}}@media (max-width: 1279.98px){:host .qd-tabs-items-container.scrollable{flex-wrap:nowrap;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none}}:host .tabs-content{flex:1 1 auto}:host .qd-tabs-action-area{display:flex;width:100%;height:50px;justify-content:flex-end}:host .qd-tabs-action-area button{margin-right:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: QdPageTabHeaderComponent, selector: "qd-page-tab-header", inputs: ["state", "label", "counters", "index", "isSelected", "isDisabled", "data-test-id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: QdButtonModule }, { kind: "component", type: QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30800
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabsComponent, isStandalone: true, selector: "qd-page-tabs", inputs: { config: "config", testId: ["data-test-id", "testId"] }, outputs: { tabSelection: "tabSelection" }, host: { properties: { "class.standalone": "!footerService" }, classAttribute: "qd-tabs" }, providers: [QdPageTabsRouterConnectorService], queries: [{ propertyName: "_tabs", predicate: i0.forwardRef(() => QdPageTabComponent) }], usesOnChanges: true, ngImport: i0, template: "<div class=\"qd-tabs-items-container\" [ngClass]=\"{ scrollable: config?.scrollabe }\">\n <qd-page-tab-header\n *ngFor=\"let tab of tabs; let i = index\"\n (click)=\"selectTab(tab)\"\n [id]=\"_getTabLabelId(i)\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i)\"\n [label]=\"tab.config.label.i18n | translate\"\n [counters]=\"tab.config.counters\"\n [isSelected]=\"selectedIndex === i\"\n [isDisabled]=\"tab.config?.isDisabled\"\n [data-test-id]=\"testId + '-header' + '-' + i\"\n >\n </qd-page-tab-header>\n</div>\n\n<div class=\"tabs-content\">\n <ng-container *ngIf=\"!selected?.config?.isDisabled\" [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-tabs-action-area\" *ngIf=\"isSubmitButtonShown()\">\n <button qdButton (click)=\"save()\" [disabled]=\"isSubmitButtonDisabled()\" [data-test-id]=\"testId + '-submit'\">\n {{ config?.submitButton?.i18n || \"i18n.qd.tabs.button.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-tabs-items-container{display:flex;width:100%;flex-direction:row;flex-wrap:wrap;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .9375rem}@media (max-width: 599.98px){:host .qd-tabs-items-container{padding:0 .9375rem}}@media (max-width: 1279.98px){:host .qd-tabs-items-container.scrollable{flex-wrap:nowrap;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none}}:host .tabs-content{flex:1 1 auto}:host .qd-tabs-action-area{display:flex;width:100%;height:50px;justify-content:flex-end}:host .qd-tabs-action-area button{margin-right:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: QdPageTabHeaderComponent, selector: "qd-page-tab-header", inputs: ["state", "label", "counters", "index", "isSelected", "isDisabled", "data-test-id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: QdButtonModule }, { kind: "component", type: QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30687
30801
  }
30688
30802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsComponent, decorators: [{
30689
30803
  type: Component,
30690
- args: [{ selector: 'qd-page-tabs', providers: [{ provide: CdkStepper, useExisting: QdPageTabsComponent }, QdPageTabsRouterConnectorService], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'qd-tabs', '[class.standalone]': '!hasPageFooter' }, standalone: true, imports: [NgFor, NgIf, NgTemplateOutlet, QdPageTabHeaderComponent, TranslateModule, QdButtonModule, CommonModule], template: "<div class=\"qd-tabs-items-container\" [ngClass]=\"{ scrollable: config?.scrollabe }\">\n <qd-page-tab-header\n *ngFor=\"let tab of tabs; let i = index\"\n (click)=\"selectTab(tab)\"\n [id]=\"_getTabLabelId(i)\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i, tab.state)\"\n [label]=\"tab.config.label.i18n | translate\"\n [counters]=\"tab.config.counters\"\n [isSelected]=\"selectedIndex === i\"\n [isDisabled]=\"tab.config?.isDisabled\"\n [data-test-id]=\"testId + '-header' + '-' + i\"\n >\n </qd-page-tab-header>\n</div>\n\n<div class=\"tabs-content\">\n <ng-container *ngIf=\"!selected?.config?.isDisabled\" [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-tabs-action-area\" *ngIf=\"isSubmitButtonShown()\">\n <button qdButton (click)=\"save()\" [disabled]=\"isSubmitButtonDisabled()\" [data-test-id]=\"testId + '-submit'\">\n {{ config?.submitButton?.i18n || \"i18n.qd.tabs.button.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-tabs-items-container{display:flex;width:100%;flex-direction:row;flex-wrap:wrap;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .9375rem}@media (max-width: 599.98px){:host .qd-tabs-items-container{padding:0 .9375rem}}@media (max-width: 1279.98px){:host .qd-tabs-items-container.scrollable{flex-wrap:nowrap;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none}}:host .tabs-content{flex:1 1 auto}:host .qd-tabs-action-area{display:flex;width:100%;height:50px;justify-content:flex-end}:host .qd-tabs-action-area button{margin-right:1.25rem}\n"] }]
30691
- }], ctorParameters: () => [], propDecorators: { config: [{
30804
+ args: [{ selector: 'qd-page-tabs', providers: [QdPageTabsRouterConnectorService], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'qd-tabs', '[class.standalone]': '!footerService' }, standalone: true, imports: [NgFor, NgIf, NgTemplateOutlet, QdPageTabHeaderComponent, TranslateModule, QdButtonModule, CommonModule], template: "<div class=\"qd-tabs-items-container\" [ngClass]=\"{ scrollable: config?.scrollabe }\">\n <qd-page-tab-header\n *ngFor=\"let tab of tabs; let i = index\"\n (click)=\"selectTab(tab)\"\n [id]=\"_getTabLabelId(i)\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i)\"\n [label]=\"tab.config.label.i18n | translate\"\n [counters]=\"tab.config.counters\"\n [isSelected]=\"selectedIndex === i\"\n [isDisabled]=\"tab.config?.isDisabled\"\n [data-test-id]=\"testId + '-header' + '-' + i\"\n >\n </qd-page-tab-header>\n</div>\n\n<div class=\"tabs-content\">\n <ng-container *ngIf=\"!selected?.config?.isDisabled\" [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-tabs-action-area\" *ngIf=\"isSubmitButtonShown()\">\n <button qdButton (click)=\"save()\" [disabled]=\"isSubmitButtonDisabled()\" [data-test-id]=\"testId + '-submit'\">\n {{ config?.submitButton?.i18n || \"i18n.qd.tabs.button.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-tabs-items-container{display:flex;width:100%;flex-direction:row;flex-wrap:wrap;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .9375rem}@media (max-width: 599.98px){:host .qd-tabs-items-container{padding:0 .9375rem}}@media (max-width: 1279.98px){:host .qd-tabs-items-container.scrollable{flex-wrap:nowrap;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none}}:host .tabs-content{flex:1 1 auto}:host .qd-tabs-action-area{display:flex;width:100%;height:50px;justify-content:flex-end}:host .qd-tabs-action-area button{margin-right:1.25rem}\n"] }]
30805
+ }], propDecorators: { config: [{
30692
30806
  type: Input
30693
30807
  }], testId: [{
30694
30808
  type: Input,
30695
30809
  args: ['data-test-id']
30696
30810
  }], tabSelection: [{
30697
30811
  type: Output
30812
+ }], _tabs: [{
30813
+ type: ContentChildren,
30814
+ args: [forwardRef(() => QdPageTabComponent)]
30698
30815
  }] } });
30699
30816
 
30700
30817
  class QdPageSubmitActionService {
@@ -34278,93 +34395,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
34278
34395
  }]
34279
34396
  }] });
34280
34397
 
34281
- // @ts-strict-ignore
34282
- /**
34283
- * The **QdPageTab** is a single tab inside the **QdPageTabs** within a **QdPage**.
34284
- */
34285
- class QdPageTabComponent extends CdkStep {
34286
- translate = inject(TranslateService);
34287
- /**
34288
- * Configuration of QdPageTabComponent.
34289
- *
34290
- * * @note The use of CDK attributes is not permitted. Please configure this component here.
34291
- */
34292
- config;
34293
- /** Form control for this tab. */
34294
- set tabControl(tabControl) {
34295
- this.stepControl = tabControl;
34296
- }
34297
- get tabControl() {
34298
- return this.stepControl;
34299
- }
34300
- infoBanners;
34301
- _destroyed$ = new Subject();
34302
- constructor() {
34303
- const tabs = inject(QdPageTabsComponent);
34304
- const stepperOptions = inject(STEPPER_GLOBAL_OPTIONS, { optional: true });
34305
- super(tabs, stepperOptions);
34306
- }
34307
- ngOnInit() {
34308
- this.validateLabel();
34309
- if (this.tabControl)
34310
- this.initErrorCheck();
34311
- }
34312
- ngOnChanges(changes) {
34313
- super.ngOnChanges();
34314
- ['label', 'errorMessage', 'state']
34315
- .filter(inputName => !!changes[inputName])
34316
- .forEach(inputName => this.blockCdkInput(inputName));
34317
- }
34318
- ngOnDestroy() {
34319
- this._destroyed$.complete();
34320
- }
34321
- blockCdkInput(inputName) {
34322
- throw new Error(`Quadrel Framework | QdPageTab - The use of the "${inputName}" attribute is not permitted. Please use QdPageTabConfig instead.`);
34323
- }
34324
- validateLabel() {
34325
- if (!this.config?.label?.i18n)
34326
- console.error('Quadrel Framework | QdPageTab - Please provide a label for the tab.');
34327
- }
34328
- initErrorCheck() {
34329
- this.tabControl.statusChanges.pipe(takeUntil$1(this._destroyed$)).subscribe(() => {
34330
- if (this.hasAnyError(this.tabControl)) {
34331
- this.interacted = true;
34332
- }
34333
- });
34334
- }
34335
- hasAnyError(control) {
34336
- if (control.errors && control.touched)
34337
- return true;
34338
- if (control instanceof FormGroup) {
34339
- return Object.values(control.controls).some(control => this.hasAnyError(control));
34340
- }
34341
- if (control instanceof FormArray) {
34342
- return control.controls.some(control => this.hasAnyError(control));
34343
- }
34344
- return false;
34345
- }
34346
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34347
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabComponent, isStandalone: true, selector: "qd-page-tab", inputs: { config: "config", tabControl: "tabControl" }, providers: [
34348
- { provide: CdkStep, useExisting: QdPageTabComponent },
34349
- { provide: STEPPER_GLOBAL_OPTIONS, useValue: { showError: true } }
34350
- ], queries: [{ propertyName: "infoBanners", predicate: QdPageInfoBannerComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template>\n <div class=\"page-info-banners\">\n <ng-content select=\"qd-page-info-banner\"></ng-content>\n </div>\n\n <ng-content></ng-content>\n</ng-template>\n", styles: [".page-info-banners:has(>qd-page-info-banner:not(.qd-page-info-banner-empty)){padding:1rem 1.25rem .5rem;border-bottom:rgb(213,213,213) solid .0625rem;background-color:#fff}.page-info-banners>qd-page-info-banner:last-child{margin-bottom:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34351
- }
34352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabComponent, decorators: [{
34353
- type: Component,
34354
- args: [{ selector: 'qd-page-tab', providers: [
34355
- { provide: CdkStep, useExisting: QdPageTabComponent },
34356
- { provide: STEPPER_GLOBAL_OPTIONS, useValue: { showError: true } }
34357
- ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true // inherited by CdkStep
34358
- , template: "<ng-template>\n <div class=\"page-info-banners\">\n <ng-content select=\"qd-page-info-banner\"></ng-content>\n </div>\n\n <ng-content></ng-content>\n</ng-template>\n", styles: [".page-info-banners:has(>qd-page-info-banner:not(.qd-page-info-banner-empty)){padding:1rem 1.25rem .5rem;border-bottom:rgb(213,213,213) solid .0625rem;background-color:#fff}.page-info-banners>qd-page-info-banner:last-child{margin-bottom:0}\n"] }]
34359
- }], ctorParameters: () => [], propDecorators: { config: [{
34360
- type: Input
34361
- }], tabControl: [{
34362
- type: Input
34363
- }], infoBanners: [{
34364
- type: ContentChildren,
34365
- args: [QdPageInfoBannerComponent]
34366
- }] } });
34367
-
34368
34398
  /**
34369
34399
  * **qdPageTabParameterize** turns the active page tab into the `tab` query parameter
34370
34400
  * (`?tab=<name>`).
@@ -34395,7 +34425,6 @@ class QdPageTabsModule {
34395
34425
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34396
34426
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsModule, declarations: [QdPageTabsAdapterDirective], imports: [CommonModule,
34397
34427
  TranslateModule,
34398
- CdkStepperModule,
34399
34428
  QdButtonModule,
34400
34429
  QdIconModule,
34401
34430
  QdPageTabsComponent,
@@ -34404,7 +34433,6 @@ class QdPageTabsModule {
34404
34433
  QdPageTabHeaderCountersComponent], exports: [QdPageTabsComponent, QdPageTabComponent, QdPageTabsAdapterDirective] });
34405
34434
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsModule, imports: [CommonModule,
34406
34435
  TranslateModule,
34407
- CdkStepperModule,
34408
34436
  QdButtonModule,
34409
34437
  QdIconModule,
34410
34438
  QdPageTabsComponent] });
@@ -34415,7 +34443,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
34415
34443
  imports: [
34416
34444
  CommonModule,
34417
34445
  TranslateModule,
34418
- CdkStepperModule,
34419
34446
  QdButtonModule,
34420
34447
  QdIconModule,
34421
34448
  QdPageTabsComponent,
@@ -35072,5 +35099,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
35072
35099
  * Generated bundle index. Do not edit.
35073
35100
  */
35074
35101
 
35075
- export { APP_ENVIRONMENT, AVAILABLE_ICONS, BACKEND_ERROR_CODES, MockLocaleDatePipe, NavigationTileComponent, NavigationTilesComponent, QD_DIALOG_CONFIRMATION_RESOLVER_TOKEN, QD_FILE_MANAGER_TOKEN, QD_FILE_UPLOAD_MANAGER_TOKEN, QD_FORM_OPTIONS_RESOLVER, QD_PAGE_OBJECT_RESOLVER_TOKEN, QD_PAGE_STEP_RESOLVER_TOKEN, QD_POPOVER_TOP_FIRST, QD_SAFE_BOTTOM_OFFSET, QD_TABLE_DATA_RESOLVER_TOKEN, QD_UPLOAD_HTTP_OPTIONS, QdButtonComponent, QdButtonGhostDirective, QdButtonGridComponent, QdButtonLinkDirective, QdButtonModule, QdButtonStackButtonComponent, QdButtonStackComponent, QdCheckboxChipsComponent, QdCheckboxComponent, QdCheckboxesComponent, QdChipComponent, QdChipModule, QdColumnAutoFillDirective, QdColumnBreakBeforeDirective, QdColumnDirective, QdColumnDisableResponsiveColspansDirective, QdColumnFullGridWidthDirective, QdColumnNextInSameRowDirective, QdColumnsDirective, QdColumnsDisableAutoFillDirective, QdColumnsDisableResponsiveColspansDirective, QdColumnsMaxDirective, QdCommentsComponent, QdCommentsModule, QdConnectFormStateToPageDirective, QdConnectorTableContextDirective, QdConnectorTableFilterDirective, QdConnectorTableSearchDirective, QdContactCardComponent, QdContactCardModule, QdContainerPairsCaptionComponent, QdContainerPairsContainerComponent, QdContainerPairsHeaderComponent, QdContainerPairsItemComponent, QdContainerPairsValueComponent, QdContextService, QdCoreModule, QdDatepickerComponent, QdDialogActionComponent, QdDialogAuthSessionEndComponent, QdDialogAuthSessionEndService, QdDialogComponent, QdDialogConfirmationComponent, QdDialogConfirmationErrorDirective, QdDialogConfirmationInfoDirective, QdDialogConfirmationSuccessDirective, QdDialogModule, QdDialogRecordStepperComponent, QdDialogService, QdDialogSize, QdDisabledDirective, QdDropdownComponent, QdFileCollectorComponent, QdFileCollectorModule, QdFileSizePipe$1 as QdFileSizePipe, QdFileUploadComponent, QdFileUploadService, QdFilterComponent, QdFilterFormItemsComponent, QdFilterModule, QdFilterRestParamBuilder, QdFilterService, QdFooterActionType, QdFormArray, QdFormBuilder, QdFormControl, QdFormGroup, QdFormModule, QdGridComponent, QdGridModule, QdHorizontalPairsCaptionComponent, QdHorizontalPairsComponent, QdHorizontalPairsItemComponent, QdHorizontalPairsValueComponent, QdIconButtonComponent, QdIconComponent, QdIconModule, QdImageComponent, QdImageModule, QdIndeterminateProgressBarComponent, QdInputComponent, QdListModule, QdMenuButtonComponent, QdMockBreakpointService, QdMockButtonComponent, QdMockButtonGhostDirective, QdMockButtonGridComponent, QdMockButtonLinkDirective, QdMockButtonModule, QdMockButtonStackButtonComponent, QdMockButtonStackComponent, QdMockCalendarComponent, QdMockCheckboxChipsComponent, QdMockCheckboxComponent, QdMockCheckboxesComponent, QdMockChipComponent, QdMockChipModule, QdMockColumnDirective, QdMockColumnsDirective, QdMockContactCardComponent, QdMockContactCardModule, QdMockContainerPairsCaptionComponent, QdMockContainerPairsContainerComponent, QdMockContainerPairsHeaderComponent, QdMockContainerPairsItemComponent, QdMockContainerPairsValueComponent, QdMockCoreModule, QdMockCounterBadgeComponent, QdMockDatepickerComponent, QdMockDisabledDirective, QdMockDropdownComponent, QdMockFileCollectorComponent, QdMockFileCollectorModule, QdMockFilterCategoryBooleanComponent, QdMockFilterCategoryComponent, QdMockFilterCategoryDateComponent, QdMockFilterCategoryDateRangeComponent, QdMockFilterCategoryFreeTextComponent, QdMockFilterCategorySelectComponent, QdMockFilterComponent, QdMockFilterFormItemsComponent, QdMockFilterItemBooleanComponent, QdMockFilterItemDateComponent, QdMockFilterItemDateRangeComponent, QdMockFilterItemFreeTextComponent, QdMockFilterItemMultiSelectComponent, QdMockFilterItemSingleSelectComponent, QdMockFilterModule, QdMockFilterService, QdMockFormErrorComponent, QdMockFormGroupErrorComponent, QdMockFormHintComponent, QdMockFormLabelComponent, QdMockFormReadonlyComponent, QdMockFormViewonlyComponent, QdMockFormsModule, QdMockGridModule, QdMockIconButtonComponent, QdMockIconComponent, QdMockIconModule, QdMockImageComponent, QdMockImageModule, QdMockIndeterminateProgressBarComponent, QdMockInputComponent, QdMockListModule, QdMockNavigationTileComponent, QdMockNavigationTilesComponent, QdMockNavigationTilesModule, QdMockNotificationComponent, QdMockNotificationContentComponent, QdMockNotificationsComponent, QdMockNotificationsModule, QdMockNotificationsService, QdMockPageComponent, QdMockPageModule, QdMockPercentageProgressBarComponent, QdMockPinCodeComponent, QdMockPlaceHolderModule, QdMockPopoverOnClickDirective, QdMockProgressBarModule, QdMockQdPlaceHolderComponent, QdMockRadioButtonsComponent, QdMockRwdDisabledDirective, QdMockSearchComponent, QdMockSearchModule, QdMockSectionComponent, QdMockSectionModule, QdMockShellComponent, QdMockShellFooterComponent, QdMockShellHeaderBannerComponent, QdMockShellHeaderComponent, QdMockShellHeaderSearchComponent, QdMockShellHeaderWidgetComponent, QdMockShellModule, QdMockShellToolbarComponent, QdMockShellToolbarItemComponent, QdMockStatusIndicatorCaptionComponent, QdMockStatusIndicatorComponent, QdMockStatusIndicatorItemComponent, QdMockStatusIndicatorModule, QdMockStatusPairsCaptionComponent, QdMockStatusPairsComponent, QdMockStatusPairsErrorComponent, QdMockStatusPairsItemComponent, QdMockStatusPairsValueComponent, QdMockSwitchComponent, QdMockSwitchesComponent, QdMockTableComponent, QdMockTableModule, QdMockTextSectionComponent, QdMockTextSectionHeadlineComponent, QdMockTextSectionModule, QdMockTextSectionParagraphComponent, QdMockTextareaComponent, QdMockTileButtonListComponent, QdMockTileComponent, QdMockTileTextListComponent, QdMockTileTextListItemComponent, QdMockTileTitleComponent, QdMockTilesContainerComponent, QdMockTilesContainerTitleComponent, QdMockTilesModule, QdMockTranslatePipe, QdMockVisuallyHiddenDirective, QdMultiInputComponent, QdNavigationTilesModule, QdNotificationComponent, QdNotificationContentComponent, QdNotificationsComponent, QdNotificationsHttpInterceptorService, QdNotificationsModule, QdNotificationsService, QdNotificationsSnackbarListenerDirective, QdNumberInputService, QdPageComponent, QdPageControlPanelComponent, QdPageFooterComponent, QdPageFooterCustomContentDirective, QdPageInfoBannerComponent, QdPageModule, QdPageStepComponent, QdPageStepperAdapterDirective, QdPageStepperComponent, QdPageStepperModule, QdPageStoreService, QdPageTabComponent, QdPageTabsAdapterDirective, QdPageTabsComponent, QdPageTabsModule, QdPanelSectionActionsComponent, QdPanelSectionComponent, QdPanelSectionModule, QdPanelSectionStatusComponent, QdPanelSectionTextParagraphComponent, QdPendingChangesGuardDirective, QdPercentageProgressBarComponent, QdPinCodeComponent, QdPlaceHolderComponent, QdPlaceHolderModule, QdPlaceholderPipe, QdProgressBarModule, QdProjectionGuardComponent, QdPushEventsService, QdQuickEditComponent, QdQuickEditModule, QdRadioButtonsComponent, QdRichtextComponent, QdRouterQueryParamHubService, QdRwdDisabledDirective, QdSearchComponent, QdSearchModule, QdSearchService, QdSectionAdapterDirective, QdSectionComponent, QdSectionModule, QdSectionToolbarComponent, QdShellComponent, QdShellModule, QdSortDirection, QdSpinnerComponent, QdSpinnerModule, QdStatusIndicatorComponent, QdStatusIndicatorModule, QdStatusPairsCaptionComponent, QdStatusPairsComponent, QdStatusPairsErrorComponent, QdStatusPairsItemComponent, QdStatusPairsValueComponent, QdSubgridComponent, QdSwitchComponent, QdSwitchesComponent, QdTableComponent, QdTableModule, QdTableSpringTools, QdTextSectionComponent, QdTextSectionHeadlineComponent, QdTextSectionModule, QdTextSectionParagraphComponent, QdTextareaComponent, QdTileButtonListComponent, QdTileComponent, QdTileTextListComponent, QdTileTextListItemComponent, QdTileTitleComponent, QdTilesComponent, QdTilesModule, QdTilesTitleComponent, QdTooltipAtIntersectionDirective, QdTooltipIconComponent, QdTreeComponent, QdTreeModule, QdTreeRowExpanderService, QdUiMockModule, QdUiModule, QdUploadErrorType, QdValidators, QdViewportAdaptiveDirective, QdVisuallyHiddenDirective, chipColorDefault, createMetadataStream, qdFilterParameterize, qdMergeParams, qdPageTabParameterize, qdPaginationParameterize, qdSearchParameterize, qdSortParameterize, qdTableQueryParameterize, qdWrapParams, quadrelIconNames, updateHtmlLang };
35102
+ export { APP_ENVIRONMENT, AVAILABLE_ICONS, BACKEND_ERROR_CODES, MockLocaleDatePipe, NavigationTileComponent, NavigationTilesComponent, QD_DIALOG_CONFIRMATION_RESOLVER_TOKEN, QD_FILE_MANAGER_TOKEN, QD_FILE_UPLOAD_MANAGER_TOKEN, QD_FORM_OPTIONS_RESOLVER, QD_PAGE_OBJECT_RESOLVER_TOKEN, QD_PAGE_STEP_RESOLVER_TOKEN, QD_POPOVER_TOP_FIRST, QD_SAFE_BOTTOM_OFFSET, QD_TABLE_DATA_RESOLVER_TOKEN, QD_UPLOAD_HTTP_OPTIONS, QdButtonComponent, QdButtonGhostDirective, QdButtonGridComponent, QdButtonLinkDirective, QdButtonModule, QdButtonStackButtonComponent, QdButtonStackComponent, QdCheckboxChipsComponent, QdCheckboxComponent, QdCheckboxesComponent, QdChipComponent, QdChipModule, QdColumnAutoFillDirective, QdColumnBreakBeforeDirective, QdColumnDirective, QdColumnDisableResponsiveColspansDirective, QdColumnFullGridWidthDirective, QdColumnNextInSameRowDirective, QdColumnsDirective, QdColumnsDisableAutoFillDirective, QdColumnsDisableResponsiveColspansDirective, QdColumnsMaxDirective, QdCommentsComponent, QdCommentsModule, QdConnectFormStateToPageDirective, QdConnectorTableContextDirective, QdConnectorTableFilterDirective, QdConnectorTableSearchDirective, QdContactCardComponent, QdContactCardModule, QdContainerPairsCaptionComponent, QdContainerPairsContainerComponent, QdContainerPairsHeaderComponent, QdContainerPairsItemComponent, QdContainerPairsValueComponent, QdContextService, QdCoreModule, QdDatepickerComponent, QdDialogActionComponent, QdDialogAuthSessionEndComponent, QdDialogAuthSessionEndService, QdDialogComponent, QdDialogConfirmationComponent, QdDialogConfirmationErrorDirective, QdDialogConfirmationInfoDirective, QdDialogConfirmationSuccessDirective, QdDialogModule, QdDialogRecordStepperComponent, QdDialogService, QdDialogSize, QdDisabledDirective, QdDropdownComponent, QdFileCollectorComponent, QdFileCollectorModule, QdFileSizePipe$1 as QdFileSizePipe, QdFileUploadComponent, QdFileUploadService, QdFilterComponent, QdFilterFormItemsComponent, QdFilterModule, QdFilterRestParamBuilder, QdFilterService, QdFooterActionType, QdFormArray, QdFormBuilder, QdFormControl, QdFormGroup, QdFormModule, QdGridComponent, QdGridModule, QdHorizontalPairsCaptionComponent, QdHorizontalPairsComponent, QdHorizontalPairsItemComponent, QdHorizontalPairsValueComponent, QdIconButtonComponent, QdIconComponent, QdIconModule, QdImageComponent, QdImageModule, QdIndeterminateProgressBarComponent, QdInputComponent, QdListModule, QdMenuButtonComponent, QdMockBreakpointService, QdMockButtonComponent, QdMockButtonGhostDirective, QdMockButtonGridComponent, QdMockButtonLinkDirective, QdMockButtonModule, QdMockButtonStackButtonComponent, QdMockButtonStackComponent, QdMockCalendarComponent, QdMockCheckboxChipsComponent, QdMockCheckboxComponent, QdMockCheckboxesComponent, QdMockChipComponent, QdMockChipModule, QdMockColumnDirective, QdMockColumnsDirective, QdMockContactCardComponent, QdMockContactCardModule, QdMockContainerPairsCaptionComponent, QdMockContainerPairsContainerComponent, QdMockContainerPairsHeaderComponent, QdMockContainerPairsItemComponent, QdMockContainerPairsValueComponent, QdMockCoreModule, QdMockCounterBadgeComponent, QdMockDatepickerComponent, QdMockDisabledDirective, QdMockDropdownComponent, QdMockFileCollectorComponent, QdMockFileCollectorModule, QdMockFilterCategoryBooleanComponent, QdMockFilterCategoryComponent, QdMockFilterCategoryDateComponent, QdMockFilterCategoryDateRangeComponent, QdMockFilterCategoryFreeTextComponent, QdMockFilterCategorySelectComponent, QdMockFilterComponent, QdMockFilterFormItemsComponent, QdMockFilterItemBooleanComponent, QdMockFilterItemDateComponent, QdMockFilterItemDateRangeComponent, QdMockFilterItemFreeTextComponent, QdMockFilterItemMultiSelectComponent, QdMockFilterItemSingleSelectComponent, QdMockFilterModule, QdMockFilterService, QdMockFormErrorComponent, QdMockFormGroupErrorComponent, QdMockFormHintComponent, QdMockFormLabelComponent, QdMockFormReadonlyComponent, QdMockFormViewonlyComponent, QdMockFormsModule, QdMockGridModule, QdMockIconButtonComponent, QdMockIconComponent, QdMockIconModule, QdMockImageComponent, QdMockImageModule, QdMockIndeterminateProgressBarComponent, QdMockInputComponent, QdMockListModule, QdMockNavigationTileComponent, QdMockNavigationTilesComponent, QdMockNavigationTilesModule, QdMockNotificationComponent, QdMockNotificationContentComponent, QdMockNotificationsComponent, QdMockNotificationsModule, QdMockNotificationsService, QdMockPageComponent, QdMockPageModule, QdMockPercentageProgressBarComponent, QdMockPinCodeComponent, QdMockPlaceHolderModule, QdMockPopoverOnClickDirective, QdMockProgressBarModule, QdMockQdPlaceHolderComponent, QdMockRadioButtonsComponent, QdMockRwdDisabledDirective, QdMockSearchComponent, QdMockSearchModule, QdMockSectionComponent, QdMockSectionModule, QdMockShellComponent, QdMockShellFooterComponent, QdMockShellHeaderBannerComponent, QdMockShellHeaderComponent, QdMockShellHeaderSearchComponent, QdMockShellHeaderWidgetComponent, QdMockShellModule, QdMockShellToolbarComponent, QdMockShellToolbarItemComponent, QdMockStatusIndicatorCaptionComponent, QdMockStatusIndicatorComponent, QdMockStatusIndicatorItemComponent, QdMockStatusIndicatorModule, QdMockStatusPairsCaptionComponent, QdMockStatusPairsComponent, QdMockStatusPairsErrorComponent, QdMockStatusPairsItemComponent, QdMockStatusPairsValueComponent, QdMockSwitchComponent, QdMockSwitchesComponent, QdMockTableComponent, QdMockTableModule, QdMockTextSectionComponent, QdMockTextSectionHeadlineComponent, QdMockTextSectionModule, QdMockTextSectionParagraphComponent, QdMockTextareaComponent, QdMockTileButtonListComponent, QdMockTileComponent, QdMockTileTextListComponent, QdMockTileTextListItemComponent, QdMockTileTitleComponent, QdMockTilesContainerComponent, QdMockTilesContainerTitleComponent, QdMockTilesModule, QdMockTranslatePipe, QdMockVisuallyHiddenDirective, QdMultiInputComponent, QdNavigationTilesModule, QdNotificationComponent, QdNotificationContentComponent, QdNotificationsComponent, QdNotificationsHttpInterceptorService, QdNotificationsModule, QdNotificationsService, QdNotificationsSnackbarListenerDirective, QdNumberInputService, QdPageComponent, QdPageControlPanelComponent, QdPageFooterComponent, QdPageFooterCustomContentDirective, QdPageInfoBannerComponent, QdPageModule, QdPageStepComponent, QdPageStepperAdapterDirective, QdPageStepperComponent, QdPageStepperModule, QdPageStoreService, QdPageTabComponent, QdPageTabsAdapterDirective, QdPageTabsComponent, QdPageTabsModule, QdPanelSectionActionsComponent, QdPanelSectionComponent, QdPanelSectionModule, QdPanelSectionStatusComponent, QdPanelSectionTextParagraphComponent, QdPendingChangesGuardDirective, QdPercentageProgressBarComponent, QdPinCodeComponent, QdPlaceHolderComponent, QdPlaceHolderModule, QdPlaceholderPipe, QdProgressBarModule, QdProjectionGuardComponent, QdPushEventsService, QdQuickEditComponent, QdQuickEditModule, QdRadioButtonsComponent, QdRichtextComponent, QdRouterQueryParamHubService, QdRwdDisabledDirective, QdSearchComponent, QdSearchModule, QdSearchService, QdSectionAdapterDirective, QdSectionComponent, QdSectionModule, QdSectionToolbarComponent, QdShellComponent, QdShellModule, QdSortDirection, QdSpinnerComponent, QdSpinnerModule, QdStatusIndicatorComponent, QdStatusIndicatorModule, QdStatusPairsCaptionComponent, QdStatusPairsComponent, QdStatusPairsErrorComponent, QdStatusPairsItemComponent, QdStatusPairsValueComponent, QdSubgridComponent, QdSwitchComponent, QdSwitchesComponent, QdTableComponent, QdTableModule, QdTableSpringTools, QdTextSectionComponent, QdTextSectionHeadlineComponent, QdTextSectionModule, QdTextSectionParagraphComponent, QdTextareaComponent, QdTileButtonListComponent, QdTileComponent, QdTileTextListComponent, QdTileTextListItemComponent, QdTileTitleComponent, QdTilesComponent, QdTilesModule, QdTilesTitleComponent, QdTooltipAtIntersectionDirective, QdTooltipIconComponent, QdTreeComponent, QdTreeModule, QdTreeRowExpanderService, QdUiMockModule, QdUiModule, QdUploadErrorType, QdValidators, QdViewportAdaptiveDirective, QdVisuallyHiddenDirective, WHITELIST_ERROR_CODES, chipColorDefault, createMetadataStream, qdFilterParameterize, qdMergeParams, qdPageTabParameterize, qdPaginationParameterize, qdSearchParameterize, qdSortParameterize, qdTableQueryParameterize, qdWrapParams, quadrelIconNames, updateHtmlLang };
35076
35103
  //# sourceMappingURL=quadrel-enterprise-ui-framework.mjs.map