@clr/angular 17.0.0-next.1 → 17.0.0-next.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.
Files changed (60) hide show
  1. package/README.md +4 -0
  2. package/accordion/stepper/models/stepper.model.d.ts +2 -0
  3. package/accordion/stepper/providers/stepper.service.d.ts +2 -0
  4. package/clarity.api.md +57 -54
  5. package/data/datagrid/datagrid-if-expanded.service.d.ts +1 -1
  6. package/data/datagrid/datagrid.module.d.ts +36 -37
  7. package/data/datagrid/index.d.ts +0 -1
  8. package/data/datagrid/providers/items.d.ts +2 -11
  9. package/emphasis/alert/alert.d.ts +6 -2
  10. package/emphasis/alert/alert.module.d.ts +2 -1
  11. package/esm2020/accordion/accordion.mjs +3 -3
  12. package/esm2020/accordion/stepper/models/stepper.model.mjs +7 -1
  13. package/esm2020/accordion/stepper/providers/stepper.service.mjs +9 -1
  14. package/esm2020/accordion/stepper/stepper-panel.mjs +11 -6
  15. package/esm2020/button/button-group/button-group.mjs +9 -11
  16. package/esm2020/button/button-loading/loading-button.mjs +15 -5
  17. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +3 -4
  18. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +1 -1
  19. package/esm2020/data/datagrid/datagrid-items.mjs +1 -2
  20. package/esm2020/data/datagrid/datagrid.mjs +3 -5
  21. package/esm2020/data/datagrid/datagrid.module.mjs +1 -5
  22. package/esm2020/data/datagrid/index.mjs +1 -2
  23. package/esm2020/data/datagrid/providers/items.mjs +3 -21
  24. package/esm2020/data/datagrid/providers/selection.mjs +16 -22
  25. package/esm2020/emphasis/alert/alert-item.mjs +9 -3
  26. package/esm2020/emphasis/alert/alert.mjs +21 -10
  27. package/esm2020/emphasis/alert/alert.module.mjs +7 -6
  28. package/esm2020/emphasis/alert/alerts.mjs +3 -2
  29. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +20 -5
  30. package/esm2020/emphasis/alert/utils/alert-types.mjs +2 -2
  31. package/esm2020/forms/combobox/option-items.directive.mjs +12 -6
  32. package/esm2020/forms/common/wrapped-control.mjs +29 -5
  33. package/esm2020/forms/datepicker/date-input.mjs +10 -1
  34. package/esm2020/forms/datepicker/providers/date-io.service.mjs +2 -2
  35. package/esm2020/forms/password/password-container.mjs +9 -3
  36. package/esm2020/popover/signpost/signpost-trigger.mjs +2 -1
  37. package/esm2020/progress/progress-bars/progress-bar.mjs +8 -26
  38. package/esm2020/utils/chocolate/willy-wonka.mjs +1 -1
  39. package/esm2020/utils/focus/key-focus/key-focus.mjs +2 -2
  40. package/esm2020/utils/i18n/common-strings.default.mjs +5 -3
  41. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  42. package/esm2020/utils/popover/providers/popover-position.service.mjs +11 -3
  43. package/esm2020/wizard/providers/button-hub.service.mjs +1 -1
  44. package/esm2020/wizard/providers/wizard-navigation.service.mjs +1 -1
  45. package/esm2020/wizard/wizard.mjs +2 -2
  46. package/fesm2015/clr-angular.mjs +210 -184
  47. package/fesm2015/clr-angular.mjs.map +1 -1
  48. package/fesm2020/clr-angular.mjs +208 -181
  49. package/fesm2020/clr-angular.mjs.map +1 -1
  50. package/forms/common/wrapped-control.d.ts +10 -3
  51. package/forms/datepicker/date-input.d.ts +1 -0
  52. package/forms/password/password-container.d.ts +2 -0
  53. package/package.json +3 -3
  54. package/progress/progress-bars/progress-bar.d.ts +2 -10
  55. package/utils/chocolate/willy-wonka.d.ts +1 -1
  56. package/utils/i18n/common-strings.interface.d.ts +8 -0
  57. package/wizard/providers/button-hub.service.d.ts +6 -6
  58. package/wizard/providers/wizard-navigation.service.d.ts +1 -1
  59. package/data/datagrid/datagrid-items-trackby.d.ts +0 -10
  60. package/esm2020/data/datagrid/datagrid-items-trackby.mjs +0 -43
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, SkipSelf, Renderer2, InjectionToken, ElementRef, ContentChild, ComponentFactoryResolver, Self, Attribute, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
2
+ import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, SkipSelf, Renderer2, InjectionToken, ElementRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, Attribute, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
5
- import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, infoCircleIcon, exclamationTriangleIcon, circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';
6
- import { map, tap, startWith, distinctUntilChanged, pairwise, filter, debounceTime, takeUntil, take, first, switchMap } from 'rxjs/operators';
5
+ import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, infoCircleIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
6
+ import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap } from 'rxjs/operators';
7
7
  import * as i3 from 'rxjs';
8
8
  import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, ReplaySubject, combineLatest, merge } from 'rxjs';
9
9
  import { trigger, transition, style, animate, state, keyframes } from '@angular/animations';
@@ -279,6 +279,8 @@ const commonStringsDefault = {
279
279
  success: 'Success',
280
280
  warning: 'Warning',
281
281
  danger: 'Error',
282
+ neutral: 'Neutral',
283
+ unknown: 'Unknown',
282
284
  rowActions: 'Available actions',
283
285
  pickColumns: 'Manage Columns',
284
286
  showColumns: 'Show Columns',
@@ -361,8 +363,8 @@ const commonStringsDefault = {
361
363
  * Password Input
362
364
  * Screen-reader text for the hide/show password field button
363
365
  */
364
- passwordHide: 'Hide password',
365
- passwordShow: 'Show password',
366
+ passwordHide: 'Hide password for {LABEL}',
367
+ passwordShow: 'Show password for {LABEL}',
366
368
  /**
367
369
  * Datagrid footer; sr-only text after the number of selected rows.
368
370
  */
@@ -666,7 +668,7 @@ class ClrAccordion {
666
668
  }
667
669
  }
668
670
  ClrAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordion, deps: [{ token: AccordionService }], target: i0.ɵɵFactoryTarget.Component });
669
- ClrAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAccordion, selector: "clr-accordion", inputs: { multiPanel: ["clrAccordionMultiPanel", "multiPanel"] }, host: { properties: { "class.clr-accordion": "true" } }, providers: [AccordionService], queries: [{ propertyName: "panels", predicate: ClrAccordionPanel, descendants: true }], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
671
+ ClrAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAccordion, selector: "clr-accordion", inputs: { multiPanel: ["clrAccordionMultiPanel", "multiPanel"] }, host: { properties: { "class.clr-accordion": "true" } }, providers: [AccordionService], queries: [{ propertyName: "panels", predicate: ClrAccordionPanel }], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
670
672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordion, decorators: [{
671
673
  type: Component,
672
674
  args: [{
@@ -681,7 +683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
681
683
  args: ['clrAccordionMultiPanel']
682
684
  }], panels: [{
683
685
  type: ContentChildren,
684
- args: [ClrAccordionPanel, { descendants: true }]
686
+ args: [ClrAccordionPanel]
685
687
  }] } });
686
688
 
687
689
  /*
@@ -945,6 +947,12 @@ class StepperModel extends AccordionModel {
945
947
  }
946
948
  });
947
949
  }
950
+ setPanelValid(panelId) {
951
+ this._panels[panelId].status = AccordionStatus.Complete;
952
+ }
953
+ setPanelInvalid(panelId) {
954
+ this._panels[panelId].status = AccordionStatus.Error;
955
+ }
948
956
  setPanelsWithErrors(ids) {
949
957
  ids.forEach(id => this.setPanelError(id));
950
958
  }
@@ -1028,6 +1036,14 @@ class StepperService extends AccordionService {
1028
1036
  this.accordion.resetPanels();
1029
1037
  this.emitUpdatedPanels();
1030
1038
  }
1039
+ setPanelValid(panelId) {
1040
+ this.accordion.setPanelValid(panelId);
1041
+ this.emitUpdatedPanels();
1042
+ }
1043
+ setPanelInvalid(panelId) {
1044
+ this.accordion.setPanelInvalid(panelId);
1045
+ this.emitUpdatedPanels();
1046
+ }
1031
1047
  setPanelsWithErrors(ids) {
1032
1048
  this.accordion.setPanelsWithErrors(ids);
1033
1049
  this.emitUpdatedPanels();
@@ -1090,11 +1106,16 @@ class ClrStepperPanel extends ClrAccordionPanel {
1090
1106
  this.panel = this.panel.pipe(tap(panel => this.triggerAllFormControlValidationIfError(panel)));
1091
1107
  this.stepperService.disablePanel(this.id, true);
1092
1108
  this.listenToFocusChanges();
1109
+ // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)
1093
1110
  if (this.formGroup) {
1094
- // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)
1095
- this.subscriptions.push(this.formGroup.statusChanges.pipe(pairwise()).subscribe(([prevStatus, newStatus]) => {
1096
- if ('VALID' === prevStatus && 'INVALID' === newStatus) {
1097
- this.stepperService.navigateToNextPanel(this.id, this.formGroup.valid);
1111
+ // set panel status on form status change only after the form becomes invalid
1112
+ const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));
1113
+ this.subscriptions.push(this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {
1114
+ if (status === 'VALID') {
1115
+ this.stepperService.setPanelValid(this.id);
1116
+ }
1117
+ else if (status === 'INVALID') {
1118
+ this.stepperService.setPanelInvalid(this.id);
1098
1119
  }
1099
1120
  }));
1100
1121
  }
@@ -1940,12 +1961,12 @@ class ClrPopoverPositionService {
1940
1961
  *
1941
1962
  * Note, more than 3 viewport violations and there isn't anything we can do to help. Also when there are two
1942
1963
  * violations, we can't help if the violations are TOP+BOTTOM || LEFT+RIGHT => There is no transformation we
1943
- * can make to the postion that will help.
1964
+ * can make to the position that will help.
1944
1965
  *
1945
1966
  * Some examples:
1946
1967
  * There is only one error and Primary axis is VERTICAL
1947
1968
  * - this.handleVerticalAxisOneViolation has a switch that will use the error sum to apply the correct
1948
- * transform to the postion based on the reduction of visibilityViolations.
1969
+ * transform to the position based on the reduction of visibilityViolations.
1949
1970
  *
1950
1971
  * There are two errors and Primary axis is HORIZONTAL
1951
1972
  * - handleHorizontalAxisTwoViolations has a switch that uses the error sum to apply both transforms needed to
@@ -1977,6 +1998,14 @@ class ClrPopoverPositionService {
1977
1998
  if (this.currentContentCoords.top < 0) {
1978
1999
  this.contentOffsets.yOffset += Math.abs(this.currentContentCoords.top);
1979
2000
  }
2001
+ /**
2002
+ * This detects the condition where the popover is flipped because it would violate the bottom of the viewport, but flipping it results in the
2003
+ * popover rendering above the top of the body (y coordinate outside the body). In that event, it should be rendered within the body
2004
+ * as much as possible, so this logic sets the top of popover to render touching the top of the body.
2005
+ */
2006
+ if (this.contentOffsets.yOffset + this.currentAnchorCoords.y < 0) {
2007
+ this.contentOffsets.yOffset = 0 - this.currentContentCoords.top;
2008
+ }
1980
2009
  return this.contentOffsets;
1981
2010
  }
1982
2011
  handleVerticalAxisOneViolation(errorSum) {
@@ -3802,16 +3831,14 @@ class ClrButtonGroup {
3802
3831
  this.menuButtons = tempInMenuButtons;
3803
3832
  }
3804
3833
  handleFocusOnMenuOpen() {
3805
- if (this.menuButtons.length) {
3806
- this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {
3807
- if (visible) {
3808
- this.focusHandler.initialize({
3809
- menu: this.menu.nativeElement,
3810
- menuToggle: this.menuToggle.nativeElement,
3811
- });
3812
- }
3813
- });
3814
- }
3834
+ this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {
3835
+ if (visible) {
3836
+ this.focusHandler.initialize({
3837
+ menu: this.menu.nativeElement,
3838
+ menuToggle: this.menuToggle.nativeElement,
3839
+ });
3840
+ }
3841
+ });
3815
3842
  }
3816
3843
  }
3817
3844
  ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: ClrCommonStringsService }, { token: ClrDestroyService }, { token: ButtonGroupFocusHandler }], target: i0.ɵɵFactoryTarget.Component });
@@ -3910,7 +3937,7 @@ class ClrLoadingButton {
3910
3937
  }
3911
3938
  ClrLoadingButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrLoadingButton, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3912
3939
  ClrLoadingButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrLoadingButton, selector: "button[clrLoading]", inputs: { disabled: "disabled" }, outputs: { clrLoadingChange: "clrLoadingChange" }, host: { properties: { "attr.disabled": "disabled? '' : null" } }, providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }], ngImport: i0, template: `
3913
- <ng-container [ngSwitch]="state">
3940
+ <span @parent [ngSwitch]="state">
3914
3941
  <span *ngSwitchCase="buttonState.LOADING">
3915
3942
  <span @spinner class="spinner spinner-inline"></span>
3916
3943
  </span>
@@ -3924,8 +3951,13 @@ ClrLoadingButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
3924
3951
  <span *ngSwitchCase="buttonState.DEFAULT" @defaultButton>
3925
3952
  <ng-content></ng-content>
3926
3953
  </span>
3927
- </ng-container>
3954
+ </span>
3928
3955
  `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [
3956
+ trigger('parent', [
3957
+ // Skip :enter animation on first render.
3958
+ // The button text/content should only be faded when transitioning to or from a non-default state.
3959
+ transition(':enter', []),
3960
+ ]),
3929
3961
  trigger('defaultButton', [
3930
3962
  transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
3931
3963
  // TODO: see if we can get leave animation to work before spinner's enter animation
@@ -3953,7 +3985,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
3953
3985
  args: [{
3954
3986
  selector: 'button[clrLoading]',
3955
3987
  template: `
3956
- <ng-container [ngSwitch]="state">
3988
+ <span @parent [ngSwitch]="state">
3957
3989
  <span *ngSwitchCase="buttonState.LOADING">
3958
3990
  <span @spinner class="spinner spinner-inline"></span>
3959
3991
  </span>
@@ -3967,10 +3999,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
3967
3999
  <span *ngSwitchCase="buttonState.DEFAULT" @defaultButton>
3968
4000
  <ng-content></ng-content>
3969
4001
  </span>
3970
- </ng-container>
4002
+ </span>
3971
4003
  `,
3972
4004
  providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],
3973
4005
  animations: [
4006
+ trigger('parent', [
4007
+ // Skip :enter animation on first render.
4008
+ // The button text/content should only be faded when transitioning to or from a non-default state.
4009
+ transition(':enter', []),
4010
+ ]),
3974
4011
  trigger('defaultButton', [
3975
4012
  transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
3976
4013
  // TODO: see if we can get leave animation to work before spinner's enter animation
@@ -4786,6 +4823,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
4786
4823
  * This software is released under MIT license.
4787
4824
  * The full license information can be found in LICENSE in the root directory of this project.
4788
4825
  */
4826
+ var CHANGE_KEYS;
4827
+ (function (CHANGE_KEYS) {
4828
+ CHANGE_KEYS["FORM"] = "form";
4829
+ CHANGE_KEYS["MODEL"] = "model";
4830
+ })(CHANGE_KEYS || (CHANGE_KEYS = {}));
4789
4831
  class WrappedFormControl {
4790
4832
  // I lost way too much time trying to make this work without injecting the ViewContainerRef and the Injector,
4791
4833
  // I'm giving up. So we have to inject these two manually for now.
@@ -4802,6 +4844,7 @@ class WrappedFormControl {
4802
4844
  this.ifControlStateService = injector.get(IfControlStateService, null);
4803
4845
  this.controlClassService = injector.get(ControlClassService, null);
4804
4846
  this.markControlService = injector.get(MarkControlService, null);
4847
+ this.differs = injector.get(KeyValueDiffers, null);
4805
4848
  }
4806
4849
  if (this.controlClassService) {
4807
4850
  this.controlClassService.initControlClass(renderer, el.nativeElement);
@@ -4816,6 +4859,9 @@ class WrappedFormControl {
4816
4859
  this.setAriaDescribedBy(state);
4817
4860
  }));
4818
4861
  }
4862
+ if (ngControl) {
4863
+ this.differ = this.differs.find(ngControl).create();
4864
+ }
4819
4865
  }
4820
4866
  get id() {
4821
4867
  return this._id;
@@ -4839,10 +4885,23 @@ class WrappedFormControl {
4839
4885
  else {
4840
4886
  this._id = this.controlIdService.id;
4841
4887
  }
4842
- if (this.ngControlService) {
4888
+ if (this.ngControlService && this.ngControl) {
4843
4889
  this.ngControlService.setControl(this.ngControl);
4844
4890
  }
4845
4891
  }
4892
+ ngDoCheck() {
4893
+ if (this.differ) {
4894
+ const changes = this.differ.diff(this.ngControl);
4895
+ if (changes) {
4896
+ changes.forEachChangedItem(change => {
4897
+ if ((change.key === CHANGE_KEYS.FORM || change.key === CHANGE_KEYS.MODEL) &&
4898
+ change.currentValue !== change.previousValue) {
4899
+ this.triggerValidation();
4900
+ }
4901
+ });
4902
+ }
4903
+ }
4904
+ }
4846
4905
  ngOnDestroy() {
4847
4906
  this.subscriptions.forEach(sub => sub.unsubscribe());
4848
4907
  }
@@ -4864,8 +4923,10 @@ class WrappedFormControl {
4864
4923
  }
4865
4924
  }
4866
4925
  markAsTouched() {
4867
- this.ngControl.control.markAsTouched();
4868
- this.ngControl.control.updateValueAndValidity();
4926
+ if (this.ngControl) {
4927
+ this.ngControl.control.markAsTouched();
4928
+ this.ngControl.control.updateValueAndValidity();
4929
+ }
4869
4930
  }
4870
4931
  setAriaDescribedBy(helpers) {
4871
4932
  if (helpers.show) {
@@ -5739,7 +5800,7 @@ class ClrKeyFocus {
5739
5800
  }
5740
5801
  if (this.focusOnLoad) {
5741
5802
  this.currentItem.focus();
5742
- this.focusChange.next();
5803
+ this.focusChange.emit();
5743
5804
  }
5744
5805
  }
5745
5806
  }
@@ -7115,25 +7176,24 @@ class ClrOptionItems {
7115
7176
  if (!this._rawItems || this.filter === undefined || this.filter === null) {
7116
7177
  return;
7117
7178
  }
7179
+ const normalizedFilterValue = normalizeValue(this.filter);
7118
7180
  if (this.optionService.showAllOptions) {
7119
7181
  this.filteredItems = this._rawItems;
7120
7182
  }
7121
7183
  else if (this._filterField) {
7122
7184
  this.filteredItems = this._rawItems.filter(item => {
7123
7185
  const objValue = item[this._filterField];
7124
- return objValue ? objValue.toString().toLowerCase().indexOf(this.filter.toLowerCase().toString()) > -1 : false;
7186
+ return objValue ? normalizeValue(objValue).includes(normalizedFilterValue) : false;
7125
7187
  });
7126
7188
  }
7127
7189
  else {
7128
7190
  // Filter by all item object values
7129
7191
  this.filteredItems = this._rawItems.filter(item => {
7130
7192
  if (typeof item !== 'object') {
7131
- return item.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1;
7193
+ return normalizeValue(item).includes(normalizedFilterValue);
7132
7194
  }
7133
7195
  const objValues = Object.values(item).filter(value => {
7134
- return value !== null && value !== undefined
7135
- ? value.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1
7136
- : false;
7196
+ return value !== null && value !== undefined ? normalizeValue(value).includes(normalizedFilterValue) : false;
7137
7197
  });
7138
7198
  return objValues.length > 0;
7139
7199
  });
@@ -7158,6 +7218,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
7158
7218
  type: Input,
7159
7219
  args: ['clrOptionItemsField']
7160
7220
  }] } });
7221
+ function normalizeValue(value) {
7222
+ return value
7223
+ .toString()
7224
+ .normalize('NFD')
7225
+ .replace(/\p{Diacritic}/gu, '')
7226
+ .toLowerCase();
7227
+ }
7161
7228
 
7162
7229
  /*
7163
7230
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
@@ -8367,7 +8434,7 @@ class DateIOService {
8367
8434
  return '';
8368
8435
  }
8369
8436
  getDateValueFromDateString(date) {
8370
- if (!date) {
8437
+ if (!date || typeof date !== 'string') {
8371
8438
  return null;
8372
8439
  }
8373
8440
  const dateParts = date.match(USER_INPUT_REGEX);
@@ -9573,9 +9640,11 @@ class ClrDateInput extends WrappedFormControl {
9573
9640
  }
9574
9641
  set min(dateString) {
9575
9642
  this.dateIOService.setMinDate(dateString);
9643
+ this.triggerControlValidation();
9576
9644
  }
9577
9645
  set max(dateString) {
9578
9646
  this.dateIOService.setMaxDate(dateString);
9647
+ this.triggerControlValidation();
9579
9648
  }
9580
9649
  get disabled() {
9581
9650
  if (this.dateFormControlService) {
@@ -9640,6 +9709,13 @@ class ClrDateInput extends WrappedFormControl {
9640
9709
  this.focusService.focused = focus;
9641
9710
  }
9642
9711
  }
9712
+ triggerControlValidation() {
9713
+ if (this.datepickerHasFormControl()) {
9714
+ // Set `emitEvent` to false to prevent unnecessary value change event. Status change event will be emitted by `setErrors` below.
9715
+ this.control.control?.updateValueAndValidity({ emitEvent: false });
9716
+ this.control.control?.setErrors(this.control.control.errors);
9717
+ }
9718
+ }
9643
9719
  populateServicesFromContainerComponent() {
9644
9720
  if (!this.container) {
9645
9721
  this.dateIOService = this.getProviderFromContainer(DateIOService);
@@ -9945,6 +10021,12 @@ class ClrPasswordContainer extends ClrAbstractContainer {
9945
10021
  this.show = !this.show;
9946
10022
  this.toggleService.next(this.show);
9947
10023
  }
10024
+ showPasswordText(label) {
10025
+ return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });
10026
+ }
10027
+ hidePasswordText(label) {
10028
+ return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });
10029
+ }
9948
10030
  }
9949
10031
  ClrPasswordContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrPasswordContainer, deps: [{ token: IfControlStateService }, { token: LayoutService, optional: true }, { token: ControlClassService }, { token: NgControlService }, { token: FocusService }, { token: TOGGLE_SERVICE }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
9950
10032
  ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrPasswordContainer, selector: "clr-password-container", inputs: { clrToggle: "clrToggle" }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()" } }, providers: [
@@ -9970,7 +10052,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
9970
10052
  >
9971
10053
  <cds-icon class="clr-password-eye-icon" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
9972
10054
  <span class="clr-sr-only">
9973
- {{ show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow }}
10055
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
9974
10056
  </span>
9975
10057
  </button>
9976
10058
  </div>
@@ -10014,7 +10096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
10014
10096
  >
10015
10097
  <cds-icon class="clr-password-eye-icon" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
10016
10098
  <span class="clr-sr-only">
10017
- {{ show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow }}
10099
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
10018
10100
  </span>
10019
10101
  </button>
10020
10102
  </div>
@@ -13194,11 +13276,9 @@ class Items {
13194
13276
  this._change = new Subject();
13195
13277
  this._allChanges = new Subject();
13196
13278
  /**
13197
- * Tracking function to identify objects. Default is reference equality.
13198
- *
13199
- * @deprecated in v15 and scheduled for removal in v17 (CDE-71)
13279
+ * Tracking function to identify objects.
13200
13280
  */
13201
- this.iteratorTrackBy = (_index, item) => item;
13281
+ this.trackBy = item => item;
13202
13282
  }
13203
13283
  get smart() {
13204
13284
  return this._smart;
@@ -13275,22 +13355,6 @@ class Items {
13275
13355
  this._filterItems();
13276
13356
  }
13277
13357
  }
13278
- canTrackBy() {
13279
- // all items are needed unless `datagridTrackBy` is set because `iteratorTrackBy` requires the item's index
13280
- return !!this.datagridTrackBy || Array.isArray(this.all);
13281
- }
13282
- trackBy(item, index) {
13283
- if (this.datagridTrackBy) {
13284
- return this.datagridTrackBy(item);
13285
- }
13286
- else if (Array.isArray(this.all)) {
13287
- index = index ?? this.all.indexOf(item);
13288
- return this.iteratorTrackBy(index, item);
13289
- }
13290
- else {
13291
- throw new Error('improper call to Items#trackBy');
13292
- }
13293
- }
13294
13358
  emitChange() {
13295
13359
  this._change.next(this.displayed);
13296
13360
  }
@@ -13373,7 +13437,6 @@ class ClrDatagridItems {
13373
13437
  this._rawItems = items ? items : []; // local copy for ngOnChange diffing
13374
13438
  }
13375
13439
  set trackBy(value) {
13376
- this.items.iteratorTrackBy = value;
13377
13440
  this.iterableProxy.ngForTrackBy = value;
13378
13441
  }
13379
13442
  /**
@@ -13517,6 +13580,7 @@ class ClrSignpostTrigger {
13517
13580
  this.signpostIdService = signpostIdService;
13518
13581
  this.signpostFocusManager = signpostFocusManager;
13519
13582
  this.platformId = platformId;
13583
+ this.ariaExpanded = false;
13520
13584
  this.subscriptions = [];
13521
13585
  this.document = document;
13522
13586
  }
@@ -13888,12 +13952,10 @@ class Selection {
13888
13952
  let selectionUpdated = false;
13889
13953
  // if the currentSingle has been set before data was loaded, we look up and save the ref from current data set
13890
13954
  if (this.currentSingle && !this.prevSingleSelectionRef) {
13891
- if (this._items.canTrackBy()) {
13892
- this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);
13893
- }
13955
+ this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);
13894
13956
  }
13895
- updatedItems.forEach((item, index) => {
13896
- const ref = this._items.trackBy(item, index);
13957
+ updatedItems.forEach(item => {
13958
+ const ref = this._items.trackBy(item);
13897
13959
  // If one of the updated items is the previously selectedSingle, set it as the new one
13898
13960
  if (this.prevSingleSelectionRef === ref) {
13899
13961
  newSingle = item;
@@ -13926,20 +13988,18 @@ class Selection {
13926
13988
  let selectionUpdated = false;
13927
13989
  // if the current has been set before data was loaded, we look up and save the ref from current data set
13928
13990
  if (this.current.length > 0 && this.prevSelectionRefs.length !== this.current.length) {
13929
- if (this._items.canTrackBy()) {
13930
- this.prevSelectionRefs = [];
13931
- this.current.forEach(item => {
13932
- this.prevSelectionRefs.push(this._items.trackBy(item));
13933
- });
13934
- }
13991
+ this.prevSelectionRefs = [];
13992
+ this.current.forEach(item => {
13993
+ this.prevSelectionRefs.push(this._items.trackBy(item));
13994
+ });
13935
13995
  }
13936
13996
  // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that
13937
13997
  // we need to go over every updated item and check to see if there are valid to be
13938
13998
  // locked or not and update it. When only add items that are found in the lockedRefs back.
13939
13999
  //
13940
14000
  // The both loops below that goes over updatedItems could be combined into one.
13941
- updatedItems.forEach((item, index) => {
13942
- const ref = this._items.trackBy(item, index);
14001
+ updatedItems.forEach(item => {
14002
+ const ref = this._items.trackBy(item);
13943
14003
  if (this.lockedRefs.indexOf(ref) > -1) {
13944
14004
  updateLockedRef.push(ref);
13945
14005
  }
@@ -13948,8 +14008,8 @@ class Selection {
13948
14008
  // currently, the selection is cleared when filter is applied, so the logic inside
13949
14009
  // the if statement below results in broken behavior.
13950
14010
  if (leftOver.length > 0) {
13951
- updatedItems.forEach((item, index) => {
13952
- const ref = this._items.trackBy(item, index);
14011
+ updatedItems.forEach(item => {
14012
+ const ref = this._items.trackBy(item);
13953
14013
  // Look in current selected refs array if item is selected, and update actual value
13954
14014
  const selectedIndex = this.prevSelectionRefs.indexOf(ref);
13955
14015
  if (selectedIndex > -1) {
@@ -14015,7 +14075,7 @@ class Selection {
14015
14075
  return;
14016
14076
  }
14017
14077
  this._currentSingle = value;
14018
- if (this._items.canTrackBy() && value) {
14078
+ if (value) {
14019
14079
  this.prevSingleSelectionRef = this._items.trackBy(value);
14020
14080
  }
14021
14081
  this.emitChange();
@@ -14161,10 +14221,8 @@ class Selection {
14161
14221
  */
14162
14222
  selectItem(item) {
14163
14223
  this.current = this.current.concat(item);
14164
- if (this._items.canTrackBy()) {
14165
- // Push selected ref onto array
14166
- this.prevSelectionRefs.push(this._items.trackBy(item));
14167
- }
14224
+ // Push selected ref onto array
14225
+ this.prevSelectionRefs.push(this._items.trackBy(item));
14168
14226
  }
14169
14227
  /**
14170
14228
  * Deselects an item
@@ -14182,7 +14240,7 @@ class Selection {
14182
14240
  * Make sure that it could be locked
14183
14241
  */
14184
14242
  canItBeLocked() {
14185
- return this._selectionType !== SelectionType.None && this._items.canTrackBy();
14243
+ return this._selectionType !== SelectionType.None;
14186
14244
  }
14187
14245
  emitChange() {
14188
14246
  if (this._selectionType === SelectionType.Single) {
@@ -14964,7 +15022,7 @@ class ClrDatagrid {
14964
15022
  this.selection.rowSelectionMode = value;
14965
15023
  }
14966
15024
  set trackBy(value) {
14967
- this.items.datagridTrackBy = value;
15025
+ this.items.trackBy = value;
14968
15026
  }
14969
15027
  /**
14970
15028
  * Indicates if all currently displayed items are selected
@@ -15006,9 +15064,7 @@ class ClrDatagrid {
15006
15064
  });
15007
15065
  // Try to update only when there is something cached and its open.
15008
15066
  if (this.detailService.state && this.detailService.isOpen) {
15009
- const row = this.items.canTrackBy()
15010
- ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))
15011
- : undefined;
15067
+ const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));
15012
15068
  /**
15013
15069
  * Reopen updated row or close it
15014
15070
  */
@@ -15391,45 +15447,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15391
15447
  */
15392
15448
  const columnToggleTrackByFn = index => index;
15393
15449
 
15394
- /*
15395
- * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
15396
- * This software is released under MIT license.
15397
- * The full license information can be found in LICENSE in the root directory of this project.
15398
- */
15399
- class ClrDatagridItemsTrackBy {
15400
- constructor(_items) {
15401
- this._items = _items;
15402
- }
15403
- set trackBy(value) {
15404
- /**
15405
- * This is a workaround to prevent the items `trackBy` function from
15406
- * being replaced when the "manage columns" button is clicked. This is
15407
- * not a complete solution. If there is another `ngForTrackBy` function
15408
- * within the datagrid in application code, it could sill replace the
15409
- * items `trackBy` function whether it is the row iterator or not.
15410
- */
15411
- if (value === columnToggleTrackByFn) {
15412
- return;
15413
- }
15414
- if (this._items) {
15415
- this._items.iteratorTrackBy = value;
15416
- }
15417
- }
15418
- }
15419
- ClrDatagridItemsTrackBy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridItemsTrackBy, deps: [{ token: Items, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
15420
- ClrDatagridItemsTrackBy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: { trackBy: ["ngForTrackBy", "trackBy"] }, ngImport: i0 });
15421
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridItemsTrackBy, decorators: [{
15422
- type: Directive,
15423
- args: [{
15424
- selector: '[ngForTrackBy]',
15425
- }]
15426
- }], ctorParameters: function () { return [{ type: Items, decorators: [{
15427
- type: Optional
15428
- }] }]; }, propDecorators: { trackBy: [{
15429
- type: Input,
15430
- args: ['ngForTrackBy']
15431
- }] } });
15432
-
15433
15450
  /*
15434
15451
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
15435
15452
  * This software is released under MIT license.
@@ -15598,7 +15615,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
15598
15615
  <clr-dg-column-toggle-button (clrAllSelected)="allColumnsSelected()"></clr-dg-column-toggle-button>
15599
15616
  </div>
15600
15617
  </div>
15601
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] });
15618
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] });
15602
15619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
15603
15620
  type: Component,
15604
15621
  args: [{
@@ -17115,7 +17132,6 @@ const CLR_DATAGRID_DIRECTIVES = [
17115
17132
  ClrDatagridFooter,
17116
17133
  ClrDatagridHideableColumn,
17117
17134
  ClrDatagridItems,
17118
- ClrDatagridItemsTrackBy,
17119
17135
  ClrDatagridPageSize,
17120
17136
  ClrDatagridPagination,
17121
17137
  ClrDatagridPlaceholder,
@@ -17162,7 +17178,6 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
17162
17178
  ClrDatagridFooter,
17163
17179
  ClrDatagridHideableColumn,
17164
17180
  ClrDatagridItems,
17165
- ClrDatagridItemsTrackBy,
17166
17181
  ClrDatagridPageSize,
17167
17182
  ClrDatagridPagination,
17168
17183
  ClrDatagridPlaceholder,
@@ -17212,7 +17227,6 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
17212
17227
  ClrDatagridFooter,
17213
17228
  ClrDatagridHideableColumn,
17214
17229
  ClrDatagridItems,
17215
- ClrDatagridItemsTrackBy,
17216
17230
  ClrDatagridPageSize,
17217
17231
  ClrDatagridPagination,
17218
17232
  ClrDatagridPlaceholder,
@@ -19667,13 +19681,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
19667
19681
  }]
19668
19682
  }] });
19669
19683
 
19684
+ /*
19685
+ * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
19686
+ * This software is released under MIT license.
19687
+ * The full license information can be found in LICENSE in the root directory of this project.
19688
+ */
19689
+
19670
19690
  /*
19671
19691
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
19672
19692
  * This software is released under MIT license.
19673
19693
  * The full license information can be found in LICENSE in the root directory of this project.
19674
19694
  */
19675
19695
  // @TODO Make this an enum
19676
- const ALERT_TYPES = ['info', 'warning', 'danger', 'success'];
19696
+ const ALERT_TYPES = ['info', 'warning', 'danger', 'success', 'neutral', 'unknown', 'loading'];
19677
19697
 
19678
19698
  /*
19679
19699
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
@@ -19683,7 +19703,7 @@ const ALERT_TYPES = ['info', 'warning', 'danger', 'success'];
19683
19703
  class AlertIconAndTypesService {
19684
19704
  constructor(commonStrings) {
19685
19705
  this.commonStrings = commonStrings;
19686
- this.defaultIconShape = 'info-circle';
19706
+ this.defaultIconShape = 'info-standard';
19687
19707
  this._alertIconShape = '';
19688
19708
  this._alertType = 'info';
19689
19709
  }
@@ -19716,20 +19736,35 @@ class AlertIconAndTypesService {
19716
19736
  const returnObj = { shape: '', cssClass: '', title: '' };
19717
19737
  switch (type) {
19718
19738
  case 'warning':
19719
- returnObj.shape = 'exclamation-triangle';
19739
+ returnObj.shape = 'warning-standard';
19720
19740
  returnObj.cssClass = 'alert-warning';
19721
19741
  returnObj.title = this.commonStrings.keys.warning;
19722
19742
  break;
19723
19743
  case 'danger':
19724
- returnObj.shape = 'exclamation-circle';
19744
+ returnObj.shape = 'error-standard';
19725
19745
  returnObj.cssClass = 'alert-danger';
19726
19746
  returnObj.title = this.commonStrings.keys.danger;
19727
19747
  break;
19728
19748
  case 'success':
19729
- returnObj.shape = 'check-circle';
19749
+ returnObj.shape = 'success-standard';
19730
19750
  returnObj.cssClass = 'alert-success';
19731
19751
  returnObj.title = this.commonStrings.keys.success;
19732
19752
  break;
19753
+ case 'neutral':
19754
+ returnObj.shape = 'note';
19755
+ returnObj.cssClass = 'alert-neutral';
19756
+ returnObj.title = this.commonStrings.keys.neutral;
19757
+ break;
19758
+ case 'unknown':
19759
+ returnObj.shape = 'help';
19760
+ returnObj.cssClass = 'alert-neutral';
19761
+ returnObj.title = this.commonStrings.keys.unknown;
19762
+ break;
19763
+ case 'loading':
19764
+ returnObj.shape = 'loading';
19765
+ returnObj.cssClass = 'alert-neutral';
19766
+ returnObj.title = this.commonStrings.keys.unknown;
19767
+ break;
19733
19768
  default:
19734
19769
  returnObj.shape = this.defaultIconShape;
19735
19770
  returnObj.cssClass = 'alert-info';
@@ -19851,7 +19886,6 @@ class ClrAlert {
19851
19886
  this.commonStrings = commonStrings;
19852
19887
  this.renderer = renderer;
19853
19888
  this.hostElement = hostElement;
19854
- this.isLight = false;
19855
19889
  this.isSmall = false;
19856
19890
  this.closable = true;
19857
19891
  this.isAppLevel = false;
@@ -19859,12 +19893,21 @@ class ClrAlert {
19859
19893
  this._closedChanged = new EventEmitter(false);
19860
19894
  this._closed = false;
19861
19895
  this.subscriptions = [];
19896
+ this._isLightweight = false;
19897
+ }
19898
+ get isLightweight() {
19899
+ return this._isLightweight;
19900
+ }
19901
+ set isLightweight(val) {
19902
+ this._isLightweight = val;
19903
+ this.configAlertType(this._origAlertType);
19862
19904
  }
19863
19905
  get alertType() {
19864
19906
  return this.iconService.alertType;
19865
19907
  }
19866
19908
  set alertType(val) {
19867
- this.iconService.alertType = val;
19909
+ this._origAlertType = val;
19910
+ this.configAlertType(val);
19868
19911
  }
19869
19912
  set alertIconShape(value) {
19870
19913
  this.iconService.alertIconShape = value;
@@ -19906,6 +19949,9 @@ class ClrAlert {
19906
19949
  ngOnDestroy() {
19907
19950
  this.subscriptions.forEach(sub => sub.unsubscribe());
19908
19951
  }
19952
+ configAlertType(val) {
19953
+ this.iconService.alertType = val;
19954
+ }
19909
19955
  open() {
19910
19956
  this._closed = false;
19911
19957
  if (this.multiAlertService) {
@@ -19919,23 +19965,20 @@ class ClrAlert {
19919
19965
  }
19920
19966
  const isCurrentAlert = this.multiAlertService?.currentAlert === this;
19921
19967
  this._closed = true;
19922
- if (this.multiAlertService) {
19968
+ if (this.multiAlertService?.activeAlerts) {
19923
19969
  this.multiAlertService.close(isCurrentAlert);
19924
19970
  }
19925
19971
  this._closedChanged.emit(true);
19926
19972
  }
19927
19973
  }
19928
19974
  ClrAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlert, deps: [{ token: AlertIconAndTypesService }, { token: i0.ChangeDetectorRef }, { token: MultiAlertService, optional: true }, { token: ClrCommonStringsService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
19929
- ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlert, selector: "clr-alert", inputs: { isLight: ["clrAlertLightweight", "isLight"], isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"], closed: ["clrAlertClosed", "closed"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }] });
19975
+ ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlert, selector: "clr-alert", inputs: { isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", isLightweight: ["clrAlertLightweight", "isLightweight"], alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"], closed: ["clrAlertClosed", "closed"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }] });
19930
19976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlert, decorators: [{
19931
19977
  type: Component,
19932
- args: [{ selector: 'clr-alert', providers: [AlertIconAndTypesService], template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n" }]
19978
+ args: [{ selector: 'clr-alert', providers: [AlertIconAndTypesService], template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n" }]
19933
19979
  }], ctorParameters: function () { return [{ type: AlertIconAndTypesService }, { type: i0.ChangeDetectorRef }, { type: MultiAlertService, decorators: [{
19934
19980
  type: Optional
19935
- }] }, { type: ClrCommonStringsService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { isLight: [{
19936
- type: Input,
19937
- args: ['clrAlertLightweight']
19938
- }], isSmall: [{
19981
+ }] }, { type: ClrCommonStringsService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { isSmall: [{
19939
19982
  type: Input,
19940
19983
  args: ['clrAlertSizeSmall']
19941
19984
  }], closable: [{
@@ -19949,6 +19992,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
19949
19992
  }], _closedChanged: [{
19950
19993
  type: Output,
19951
19994
  args: ['clrAlertClosedChange']
19995
+ }], isLightweight: [{
19996
+ type: Input,
19997
+ args: ['clrAlertLightweight']
19952
19998
  }], alertType: [{
19953
19999
  type: Input,
19954
20000
  args: ['clrAlertType']
@@ -19973,24 +20019,28 @@ class ClrAlertItem {
19973
20019
  ClrAlertItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertItem, deps: [{ token: AlertIconAndTypesService }], target: i0.ɵɵFactoryTarget.Component });
19974
20020
  ClrAlertItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlertItem, selector: "clr-alert-item", host: { classAttribute: "alert-item" }, ngImport: i0, template: `
19975
20021
  <div class="alert-icon-wrapper">
20022
+ <clr-spinner class="alert-spinner" clrInline *ngIf="iconService.alertIconShape === 'loading'"></clr-spinner>
19976
20023
  <cds-icon
19977
20024
  class="alert-icon"
19978
20025
  role="img"
20026
+ *ngIf="iconService.alertIconShape !== 'loading'"
19979
20027
  [attr.shape]="iconService.alertIconShape"
19980
20028
  [attr.aria-label]="iconService.alertIconTitle"
19981
20029
  ></cds-icon>
19982
20030
  </div>
19983
20031
  <ng-content></ng-content>
19984
- `, isInline: true, dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }] });
20032
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }] });
19985
20033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertItem, decorators: [{
19986
20034
  type: Component,
19987
20035
  args: [{
19988
20036
  selector: 'clr-alert-item',
19989
20037
  template: `
19990
20038
  <div class="alert-icon-wrapper">
20039
+ <clr-spinner class="alert-spinner" clrInline *ngIf="iconService.alertIconShape === 'loading'"></clr-spinner>
19991
20040
  <cds-icon
19992
20041
  class="alert-icon"
19993
20042
  role="img"
20043
+ *ngIf="iconService.alertIconShape !== 'loading'"
19994
20044
  [attr.shape]="iconService.alertIconShape"
19995
20045
  [attr.aria-label]="iconService.alertIconTitle"
19996
20046
  ></cds-icon>
@@ -20168,7 +20218,7 @@ class ClrAlerts {
20168
20218
  }
20169
20219
  }
20170
20220
  ClrAlerts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlerts, deps: [{ token: MultiAlertService }], target: i0.ɵɵFactoryTarget.Component });
20171
- ClrAlerts.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlerts, selector: "clr-alerts", inputs: { _inputCurrentIndex: ["clrCurrentAlertIndex", "_inputCurrentIndex"], currentAlert: ["clrCurrentAlert", "currentAlert"] }, outputs: { currentAlertChange: "clrCurrentAlertChange", currentAlertIndexChange: "clrCurrentAlertIndexChange" }, host: { properties: { "class.alerts": "true", "class.alert-danger": "this.currentAlertType == 'danger'", "class.alert-info": "this.currentAlertType == 'info'", "class.alert-success": "this.currentAlertType == 'success'", "class.alert-warning": "this.currentAlertType == 'warning'" } }, providers: [MultiAlertService], queries: [{ propertyName: "allAlerts", predicate: ClrAlert }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"alerts-wrapper\">\n <clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"></clr-alerts-pager>\n <ng-content select=\"clr-alert\"></ng-content>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: ["clrCurrentAlert", "clrCurrentAlertIndex"], outputs: ["clrCurrentAlertChange", "clrCurrentAlertIndexChange"] }] });
20221
+ ClrAlerts.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlerts, selector: "clr-alerts", inputs: { _inputCurrentIndex: ["clrCurrentAlertIndex", "_inputCurrentIndex"], currentAlert: ["clrCurrentAlert", "currentAlert"] }, outputs: { currentAlertChange: "clrCurrentAlertChange", currentAlertIndexChange: "clrCurrentAlertIndexChange" }, host: { properties: { "class.alerts": "true", "class.alert-danger": "this.currentAlertType == 'danger'", "class.alert-info": "this.currentAlertType == 'info'", "class.alert-success": "this.currentAlertType == 'success'", "class.alert-warning": "this.currentAlertType == 'warning'", "class.alert-neutral": "this.currentAlertType == 'neutral'" } }, providers: [MultiAlertService], queries: [{ propertyName: "allAlerts", predicate: ClrAlert }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"alerts-wrapper\">\n <clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"></clr-alerts-pager>\n <ng-content select=\"clr-alert\"></ng-content>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: ["clrCurrentAlert", "clrCurrentAlertIndex"], outputs: ["clrCurrentAlertChange", "clrCurrentAlertIndexChange"] }] });
20172
20222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlerts, decorators: [{
20173
20223
  type: Component,
20174
20224
  args: [{ selector: 'clr-alerts', providers: [MultiAlertService], host: {
@@ -20177,6 +20227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
20177
20227
  '[class.alert-info]': "this.currentAlertType == 'info'",
20178
20228
  '[class.alert-success]': "this.currentAlertType == 'success'",
20179
20229
  '[class.alert-warning]': "this.currentAlertType == 'warning'",
20230
+ '[class.alert-neutral]': "this.currentAlertType == 'neutral'",
20180
20231
  }, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"alerts-wrapper\">\n <clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"></clr-alerts-pager>\n <ng-content select=\"clr-alert\"></ng-content>\n</div>\n", styles: [":host{display:block}\n"] }]
20181
20232
  }], ctorParameters: function () { return [{ type: MultiAlertService }]; }, propDecorators: { currentAlertChange: [{
20182
20233
  type: Output,
@@ -20203,16 +20254,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
20203
20254
  const CLR_ALERT_DIRECTIVES = [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText];
20204
20255
  class ClrAlertModule {
20205
20256
  constructor() {
20206
- ClarityIcons.addIcons(checkCircleIcon, infoCircleIcon, exclamationCircleIcon, exclamationTriangleIcon, windowCloseIcon);
20257
+ ClarityIcons.addIcons(errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, windowCloseIcon);
20207
20258
  }
20208
20259
  }
20209
20260
  ClrAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20210
- ClrAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, declarations: [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText], imports: [CommonModule, ClrIconModule, ClrDropdownModule], exports: [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText] });
20211
- ClrAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, imports: [CommonModule, ClrIconModule, ClrDropdownModule] });
20261
+ ClrAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, declarations: [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText], imports: [CommonModule, ClrIconModule, ClrDropdownModule, ClrSpinnerModule], exports: [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText] });
20262
+ ClrAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, imports: [CommonModule, ClrIconModule, ClrDropdownModule, ClrSpinnerModule] });
20212
20263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, decorators: [{
20213
20264
  type: NgModule,
20214
20265
  args: [{
20215
- imports: [CommonModule, ClrIconModule, ClrDropdownModule],
20266
+ imports: [CommonModule, ClrIconModule, ClrDropdownModule, ClrSpinnerModule],
20216
20267
  declarations: [CLR_ALERT_DIRECTIVES],
20217
20268
  exports: [CLR_ALERT_DIRECTIVES],
20218
20269
  }]
@@ -22861,26 +22912,14 @@ class ClrProgressBar {
22861
22912
  get loopClass() {
22862
22913
  return this._loop;
22863
22914
  }
22864
- /** @deprecated since 2.0, remove in 4.0 */
22865
- set clrWarning(value) {
22866
- this._warning = isBooleanAttributeSet(value);
22867
- }
22868
22915
  get warningClass() {
22869
- return this._warning;
22870
- }
22871
- /** @deprecated since 2.0, remove in 4.0 */
22872
- set clrSuccess(value) {
22873
- this._success = isBooleanAttributeSet(value);
22916
+ return this.color === 'warning';
22874
22917
  }
22875
22918
  get successClass() {
22876
- return this._success;
22877
- }
22878
- /** @deprecated since 2.0, remove in 4.0 */
22879
- set clrDanger(value) {
22880
- this._danger = isBooleanAttributeSet(value);
22919
+ return this.color === 'success';
22881
22920
  }
22882
22921
  get dangerClass() {
22883
- return this._danger;
22922
+ return this.color === 'danger';
22884
22923
  }
22885
22924
  set clrFlash(value) {
22886
22925
  this._flash = isBooleanAttributeSet(value);
@@ -22913,7 +22952,7 @@ class ClrProgressBar {
22913
22952
  }
22914
22953
  }
22915
22954
  ClrProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
22916
- ClrProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrProgressBar, selector: "clr-progress-bar", inputs: { max: ["clrMax", "max"], displayval: ["clrDisplayval", "displayval"], value: ["clrValue", "value"], id: "id", clrCompact: "clrCompact", clrLabeled: "clrLabeled", clrFade: "clrFade", clrLoop: "clrLoop", clrWarning: "clrWarning", clrSuccess: "clrSuccess", clrDanger: "clrDanger", clrFlash: "clrFlash", clrFlashDanger: "clrFlashDanger" }, host: { properties: { "attr.id": "this.externalId", "class.progress": "this.progressClass", "class.compact": "this.compactClass", "class.labeled": "this.labeledClass", "class.progress-fade": "this.fadeClass", "class.loop": "this.loopClass", "class.warning": "this.warningClass", "class.success": "this.successClass", "class.danger": "this.dangerClass", "class.flash": "this.flashClass", "class.flash-danger": "this.flashDangerClass" } }, ngImport: i0, template: `
22955
+ ClrProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrProgressBar, selector: "clr-progress-bar", inputs: { max: ["clrMax", "max"], displayval: ["clrDisplayval", "displayval"], color: ["clrColor", "color"], value: ["clrValue", "value"], id: "id", clrCompact: "clrCompact", clrLabeled: "clrLabeled", clrFade: "clrFade", clrLoop: "clrLoop", clrFlash: "clrFlash", clrFlashDanger: "clrFlashDanger" }, host: { properties: { "attr.id": "this.externalId", "class.progress": "this.progressClass", "class.compact": "this.compactClass", "class.labeled": "this.labeledClass", "class.progress-fade": "this.fadeClass", "class.loop": "this.loopClass", "class.warning": "this.warningClass", "class.success": "this.successClass", "class.danger": "this.dangerClass", "class.flash": "this.flashClass", "class.flash-danger": "this.flashDangerClass" } }, ngImport: i0, template: `
22917
22956
  <progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
22918
22957
  <span *ngIf="displayStringValue()">{{ displayValue }}</span>
22919
22958
  `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
@@ -22932,6 +22971,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
22932
22971
  }], displayval: [{
22933
22972
  type: Input,
22934
22973
  args: ['clrDisplayval']
22974
+ }], color: [{
22975
+ type: Input,
22976
+ args: ['clrColor']
22935
22977
  }], value: [{
22936
22978
  type: Input,
22937
22979
  args: ['clrValue']
@@ -22967,21 +23009,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
22967
23009
  }], loopClass: [{
22968
23010
  type: HostBinding,
22969
23011
  args: ['class.loop']
22970
- }], clrWarning: [{
22971
- type: Input,
22972
- args: ['clrWarning']
22973
23012
  }], warningClass: [{
22974
23013
  type: HostBinding,
22975
23014
  args: ['class.warning']
22976
- }], clrSuccess: [{
22977
- type: Input,
22978
- args: ['clrSuccess']
22979
23015
  }], successClass: [{
22980
23016
  type: HostBinding,
22981
23017
  args: ['class.success']
22982
- }], clrDanger: [{
22983
- type: Input,
22984
- args: ['clrDanger']
22985
23018
  }], dangerClass: [{
22986
23019
  type: HostBinding,
22987
23020
  args: ['class.danger']
@@ -25640,7 +25673,7 @@ class ClrWizard {
25640
25673
  */
25641
25674
  reset() {
25642
25675
  this.pageCollection.reset();
25643
- this.onReset.next();
25676
+ this.onReset.emit();
25644
25677
  }
25645
25678
  listenForNextPageChanges() {
25646
25679
  return this.navService.movedToNextPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {
@@ -26350,15 +26383,9 @@ const CLR_MENU_POSITIONS = [
26350
26383
  * The full license information can be found in LICENSE in the root directory of this project.
26351
26384
  */
26352
26385
 
26353
- /*
26354
- * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
26355
- * This software is released under MIT license.
26356
- * The full license information can be found in LICENSE in the root directory of this project.
26357
- */
26358
-
26359
26386
  /**
26360
26387
  * Generated bundle index. Do not edit.
26361
26388
  */
26362
26389
 
26363
- export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
26390
+ export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
26364
26391
  //# sourceMappingURL=clr-angular.mjs.map