@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';
@@ -281,6 +281,8 @@ const commonStringsDefault = {
281
281
  success: 'Success',
282
282
  warning: 'Warning',
283
283
  danger: 'Error',
284
+ neutral: 'Neutral',
285
+ unknown: 'Unknown',
284
286
  rowActions: 'Available actions',
285
287
  pickColumns: 'Manage Columns',
286
288
  showColumns: 'Show Columns',
@@ -363,8 +365,8 @@ const commonStringsDefault = {
363
365
  * Password Input
364
366
  * Screen-reader text for the hide/show password field button
365
367
  */
366
- passwordHide: 'Hide password',
367
- passwordShow: 'Show password',
368
+ passwordHide: 'Hide password for {LABEL}',
369
+ passwordShow: 'Show password for {LABEL}',
368
370
  /**
369
371
  * Datagrid footer; sr-only text after the number of selected rows.
370
372
  */
@@ -668,7 +670,7 @@ class ClrAccordion {
668
670
  }
669
671
  }
670
672
  ClrAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordion, deps: [{ token: AccordionService }], target: i0.ɵɵFactoryTarget.Component });
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, descendants: true }], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
673
+ 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 });
672
674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordion, decorators: [{
673
675
  type: Component,
674
676
  args: [{
@@ -683,7 +685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
683
685
  args: ['clrAccordionMultiPanel']
684
686
  }], panels: [{
685
687
  type: ContentChildren,
686
- args: [ClrAccordionPanel, { descendants: true }]
688
+ args: [ClrAccordionPanel]
687
689
  }] } });
688
690
 
689
691
  /*
@@ -949,6 +951,12 @@ class StepperModel extends AccordionModel {
949
951
  }
950
952
  });
951
953
  }
954
+ setPanelValid(panelId) {
955
+ this._panels[panelId].status = AccordionStatus.Complete;
956
+ }
957
+ setPanelInvalid(panelId) {
958
+ this._panels[panelId].status = AccordionStatus.Error;
959
+ }
952
960
  setPanelsWithErrors(ids) {
953
961
  ids.forEach(id => this.setPanelError(id));
954
962
  }
@@ -1032,6 +1040,14 @@ class StepperService extends AccordionService {
1032
1040
  this.accordion.resetPanels();
1033
1041
  this.emitUpdatedPanels();
1034
1042
  }
1043
+ setPanelValid(panelId) {
1044
+ this.accordion.setPanelValid(panelId);
1045
+ this.emitUpdatedPanels();
1046
+ }
1047
+ setPanelInvalid(panelId) {
1048
+ this.accordion.setPanelInvalid(panelId);
1049
+ this.emitUpdatedPanels();
1050
+ }
1035
1051
  setPanelsWithErrors(ids) {
1036
1052
  this.accordion.setPanelsWithErrors(ids);
1037
1053
  this.emitUpdatedPanels();
@@ -1094,11 +1110,16 @@ class ClrStepperPanel extends ClrAccordionPanel {
1094
1110
  this.panel = this.panel.pipe(tap(panel => this.triggerAllFormControlValidationIfError(panel)));
1095
1111
  this.stepperService.disablePanel(this.id, true);
1096
1112
  this.listenToFocusChanges();
1113
+ // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)
1097
1114
  if (this.formGroup) {
1098
- // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)
1099
- this.subscriptions.push(this.formGroup.statusChanges.pipe(pairwise()).subscribe(([prevStatus, newStatus]) => {
1100
- if ('VALID' === prevStatus && 'INVALID' === newStatus) {
1101
- this.stepperService.navigateToNextPanel(this.id, this.formGroup.valid);
1115
+ // set panel status on form status change only after the form becomes invalid
1116
+ const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));
1117
+ this.subscriptions.push(this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {
1118
+ if (status === 'VALID') {
1119
+ this.stepperService.setPanelValid(this.id);
1120
+ }
1121
+ else if (status === 'INVALID') {
1122
+ this.stepperService.setPanelInvalid(this.id);
1102
1123
  }
1103
1124
  }));
1104
1125
  }
@@ -1943,12 +1964,12 @@ class ClrPopoverPositionService {
1943
1964
  *
1944
1965
  * Note, more than 3 viewport violations and there isn't anything we can do to help. Also when there are two
1945
1966
  * violations, we can't help if the violations are TOP+BOTTOM || LEFT+RIGHT => There is no transformation we
1946
- * can make to the postion that will help.
1967
+ * can make to the position that will help.
1947
1968
  *
1948
1969
  * Some examples:
1949
1970
  * There is only one error and Primary axis is VERTICAL
1950
1971
  * - this.handleVerticalAxisOneViolation has a switch that will use the error sum to apply the correct
1951
- * transform to the postion based on the reduction of visibilityViolations.
1972
+ * transform to the position based on the reduction of visibilityViolations.
1952
1973
  *
1953
1974
  * There are two errors and Primary axis is HORIZONTAL
1954
1975
  * - handleHorizontalAxisTwoViolations has a switch that uses the error sum to apply both transforms needed to
@@ -1980,6 +2001,14 @@ class ClrPopoverPositionService {
1980
2001
  if (this.currentContentCoords.top < 0) {
1981
2002
  this.contentOffsets.yOffset += Math.abs(this.currentContentCoords.top);
1982
2003
  }
2004
+ /**
2005
+ * This detects the condition where the popover is flipped because it would violate the bottom of the viewport, but flipping it results in the
2006
+ * popover rendering above the top of the body (y coordinate outside the body). In that event, it should be rendered within the body
2007
+ * as much as possible, so this logic sets the top of popover to render touching the top of the body.
2008
+ */
2009
+ if (this.contentOffsets.yOffset + this.currentAnchorCoords.y < 0) {
2010
+ this.contentOffsets.yOffset = 0 - this.currentContentCoords.top;
2011
+ }
1983
2012
  return this.contentOffsets;
1984
2013
  }
1985
2014
  handleVerticalAxisOneViolation(errorSum) {
@@ -3806,16 +3835,14 @@ class ClrButtonGroup {
3806
3835
  this.menuButtons = tempInMenuButtons;
3807
3836
  }
3808
3837
  handleFocusOnMenuOpen() {
3809
- if (this.menuButtons.length) {
3810
- this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {
3811
- if (visible) {
3812
- this.focusHandler.initialize({
3813
- menu: this.menu.nativeElement,
3814
- menuToggle: this.menuToggle.nativeElement,
3815
- });
3816
- }
3817
- });
3818
- }
3838
+ this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {
3839
+ if (visible) {
3840
+ this.focusHandler.initialize({
3841
+ menu: this.menu.nativeElement,
3842
+ menuToggle: this.menuToggle.nativeElement,
3843
+ });
3844
+ }
3845
+ });
3819
3846
  }
3820
3847
  }
3821
3848
  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 });
@@ -3914,7 +3941,7 @@ class ClrLoadingButton {
3914
3941
  }
3915
3942
  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 });
3916
3943
  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: `
3917
- <ng-container [ngSwitch]="state">
3944
+ <span @parent [ngSwitch]="state">
3918
3945
  <span *ngSwitchCase="buttonState.LOADING">
3919
3946
  <span @spinner class="spinner spinner-inline"></span>
3920
3947
  </span>
@@ -3928,8 +3955,13 @@ ClrLoadingButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
3928
3955
  <span *ngSwitchCase="buttonState.DEFAULT" @defaultButton>
3929
3956
  <ng-content></ng-content>
3930
3957
  </span>
3931
- </ng-container>
3958
+ </span>
3932
3959
  `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [
3960
+ trigger('parent', [
3961
+ // Skip :enter animation on first render.
3962
+ // The button text/content should only be faded when transitioning to or from a non-default state.
3963
+ transition(':enter', []),
3964
+ ]),
3933
3965
  trigger('defaultButton', [
3934
3966
  transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
3935
3967
  // TODO: see if we can get leave animation to work before spinner's enter animation
@@ -3957,7 +3989,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
3957
3989
  args: [{
3958
3990
  selector: 'button[clrLoading]',
3959
3991
  template: `
3960
- <ng-container [ngSwitch]="state">
3992
+ <span @parent [ngSwitch]="state">
3961
3993
  <span *ngSwitchCase="buttonState.LOADING">
3962
3994
  <span @spinner class="spinner spinner-inline"></span>
3963
3995
  </span>
@@ -3971,10 +4003,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
3971
4003
  <span *ngSwitchCase="buttonState.DEFAULT" @defaultButton>
3972
4004
  <ng-content></ng-content>
3973
4005
  </span>
3974
- </ng-container>
4006
+ </span>
3975
4007
  `,
3976
4008
  providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],
3977
4009
  animations: [
4010
+ trigger('parent', [
4011
+ // Skip :enter animation on first render.
4012
+ // The button text/content should only be faded when transitioning to or from a non-default state.
4013
+ transition(':enter', []),
4014
+ ]),
3978
4015
  trigger('defaultButton', [
3979
4016
  transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),
3980
4017
  // TODO: see if we can get leave animation to work before spinner's enter animation
@@ -4805,6 +4842,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
4805
4842
  * This software is released under MIT license.
4806
4843
  * The full license information can be found in LICENSE in the root directory of this project.
4807
4844
  */
4845
+ var CHANGE_KEYS;
4846
+ (function (CHANGE_KEYS) {
4847
+ CHANGE_KEYS["FORM"] = "form";
4848
+ CHANGE_KEYS["MODEL"] = "model";
4849
+ })(CHANGE_KEYS || (CHANGE_KEYS = {}));
4808
4850
  class WrappedFormControl {
4809
4851
  // I lost way too much time trying to make this work without injecting the ViewContainerRef and the Injector,
4810
4852
  // I'm giving up. So we have to inject these two manually for now.
@@ -4821,6 +4863,7 @@ class WrappedFormControl {
4821
4863
  this.ifControlStateService = injector.get(IfControlStateService, null);
4822
4864
  this.controlClassService = injector.get(ControlClassService, null);
4823
4865
  this.markControlService = injector.get(MarkControlService, null);
4866
+ this.differs = injector.get(KeyValueDiffers, null);
4824
4867
  }
4825
4868
  if (this.controlClassService) {
4826
4869
  this.controlClassService.initControlClass(renderer, el.nativeElement);
@@ -4835,6 +4878,9 @@ class WrappedFormControl {
4835
4878
  this.setAriaDescribedBy(state);
4836
4879
  }));
4837
4880
  }
4881
+ if (ngControl) {
4882
+ this.differ = this.differs.find(ngControl).create();
4883
+ }
4838
4884
  }
4839
4885
  get id() {
4840
4886
  return this._id;
@@ -4858,10 +4904,23 @@ class WrappedFormControl {
4858
4904
  else {
4859
4905
  this._id = this.controlIdService.id;
4860
4906
  }
4861
- if (this.ngControlService) {
4907
+ if (this.ngControlService && this.ngControl) {
4862
4908
  this.ngControlService.setControl(this.ngControl);
4863
4909
  }
4864
4910
  }
4911
+ ngDoCheck() {
4912
+ if (this.differ) {
4913
+ const changes = this.differ.diff(this.ngControl);
4914
+ if (changes) {
4915
+ changes.forEachChangedItem(change => {
4916
+ if ((change.key === CHANGE_KEYS.FORM || change.key === CHANGE_KEYS.MODEL) &&
4917
+ change.currentValue !== change.previousValue) {
4918
+ this.triggerValidation();
4919
+ }
4920
+ });
4921
+ }
4922
+ }
4923
+ }
4865
4924
  ngOnDestroy() {
4866
4925
  this.subscriptions.forEach(sub => sub.unsubscribe());
4867
4926
  }
@@ -4883,8 +4942,10 @@ class WrappedFormControl {
4883
4942
  }
4884
4943
  }
4885
4944
  markAsTouched() {
4886
- this.ngControl.control.markAsTouched();
4887
- this.ngControl.control.updateValueAndValidity();
4945
+ if (this.ngControl) {
4946
+ this.ngControl.control.markAsTouched();
4947
+ this.ngControl.control.updateValueAndValidity();
4948
+ }
4888
4949
  }
4889
4950
  setAriaDescribedBy(helpers) {
4890
4951
  if (helpers.show) {
@@ -5774,7 +5835,7 @@ class ClrKeyFocus {
5774
5835
  }
5775
5836
  if (this.focusOnLoad) {
5776
5837
  this.currentItem.focus();
5777
- this.focusChange.next();
5838
+ this.focusChange.emit();
5778
5839
  }
5779
5840
  }
5780
5841
  }
@@ -7160,25 +7221,24 @@ class ClrOptionItems {
7160
7221
  if (!this._rawItems || this.filter === undefined || this.filter === null) {
7161
7222
  return;
7162
7223
  }
7224
+ const normalizedFilterValue = normalizeValue(this.filter);
7163
7225
  if (this.optionService.showAllOptions) {
7164
7226
  this.filteredItems = this._rawItems;
7165
7227
  }
7166
7228
  else if (this._filterField) {
7167
7229
  this.filteredItems = this._rawItems.filter(item => {
7168
7230
  const objValue = item[this._filterField];
7169
- return objValue ? objValue.toString().toLowerCase().indexOf(this.filter.toLowerCase().toString()) > -1 : false;
7231
+ return objValue ? normalizeValue(objValue).includes(normalizedFilterValue) : false;
7170
7232
  });
7171
7233
  }
7172
7234
  else {
7173
7235
  // Filter by all item object values
7174
7236
  this.filteredItems = this._rawItems.filter(item => {
7175
7237
  if (typeof item !== 'object') {
7176
- return item.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1;
7238
+ return normalizeValue(item).includes(normalizedFilterValue);
7177
7239
  }
7178
7240
  const objValues = Object.values(item).filter(value => {
7179
- return value !== null && value !== undefined
7180
- ? value.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1
7181
- : false;
7241
+ return value !== null && value !== undefined ? normalizeValue(value).includes(normalizedFilterValue) : false;
7182
7242
  });
7183
7243
  return objValues.length > 0;
7184
7244
  });
@@ -7203,6 +7263,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
7203
7263
  type: Input,
7204
7264
  args: ['clrOptionItemsField']
7205
7265
  }] } });
7266
+ function normalizeValue(value) {
7267
+ return value
7268
+ .toString()
7269
+ .normalize('NFD')
7270
+ .replace(/\p{Diacritic}/gu, '')
7271
+ .toLowerCase();
7272
+ }
7206
7273
 
7207
7274
  /*
7208
7275
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
@@ -8424,7 +8491,7 @@ class DateIOService {
8424
8491
  return '';
8425
8492
  }
8426
8493
  getDateValueFromDateString(date) {
8427
- if (!date) {
8494
+ if (!date || typeof date !== 'string') {
8428
8495
  return null;
8429
8496
  }
8430
8497
  const dateParts = date.match(USER_INPUT_REGEX);
@@ -9634,9 +9701,11 @@ class ClrDateInput extends WrappedFormControl {
9634
9701
  }
9635
9702
  set min(dateString) {
9636
9703
  this.dateIOService.setMinDate(dateString);
9704
+ this.triggerControlValidation();
9637
9705
  }
9638
9706
  set max(dateString) {
9639
9707
  this.dateIOService.setMaxDate(dateString);
9708
+ this.triggerControlValidation();
9640
9709
  }
9641
9710
  get disabled() {
9642
9711
  if (this.dateFormControlService) {
@@ -9701,6 +9770,14 @@ class ClrDateInput extends WrappedFormControl {
9701
9770
  this.focusService.focused = focus;
9702
9771
  }
9703
9772
  }
9773
+ triggerControlValidation() {
9774
+ var _a, _b;
9775
+ if (this.datepickerHasFormControl()) {
9776
+ // Set `emitEvent` to false to prevent unnecessary value change event. Status change event will be emitted by `setErrors` below.
9777
+ (_a = this.control.control) === null || _a === void 0 ? void 0 : _a.updateValueAndValidity({ emitEvent: false });
9778
+ (_b = this.control.control) === null || _b === void 0 ? void 0 : _b.setErrors(this.control.control.errors);
9779
+ }
9780
+ }
9704
9781
  populateServicesFromContainerComponent() {
9705
9782
  if (!this.container) {
9706
9783
  this.dateIOService = this.getProviderFromContainer(DateIOService);
@@ -10010,6 +10087,12 @@ class ClrPasswordContainer extends ClrAbstractContainer {
10010
10087
  this.show = !this.show;
10011
10088
  this.toggleService.next(this.show);
10012
10089
  }
10090
+ showPasswordText(label) {
10091
+ return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });
10092
+ }
10093
+ hidePasswordText(label) {
10094
+ return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });
10095
+ }
10013
10096
  }
10014
10097
  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 });
10015
10098
  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: [
@@ -10035,7 +10118,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
10035
10118
  >
10036
10119
  <cds-icon class="clr-password-eye-icon" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
10037
10120
  <span class="clr-sr-only">
10038
- {{ show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow }}
10121
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
10039
10122
  </span>
10040
10123
  </button>
10041
10124
  </div>
@@ -10079,7 +10162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
10079
10162
  >
10080
10163
  <cds-icon class="clr-password-eye-icon" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
10081
10164
  <span class="clr-sr-only">
10082
- {{ show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow }}
10165
+ {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}
10083
10166
  </span>
10084
10167
  </button>
10085
10168
  </div>
@@ -13290,11 +13373,9 @@ class Items {
13290
13373
  this._change = new Subject();
13291
13374
  this._allChanges = new Subject();
13292
13375
  /**
13293
- * Tracking function to identify objects. Default is reference equality.
13294
- *
13295
- * @deprecated in v15 and scheduled for removal in v17 (CDE-71)
13376
+ * Tracking function to identify objects.
13296
13377
  */
13297
- this.iteratorTrackBy = (_index, item) => item;
13378
+ this.trackBy = item => item;
13298
13379
  }
13299
13380
  get smart() {
13300
13381
  return this._smart;
@@ -13371,22 +13452,6 @@ class Items {
13371
13452
  this._filterItems();
13372
13453
  }
13373
13454
  }
13374
- canTrackBy() {
13375
- // all items are needed unless `datagridTrackBy` is set because `iteratorTrackBy` requires the item's index
13376
- return !!this.datagridTrackBy || Array.isArray(this.all);
13377
- }
13378
- trackBy(item, index) {
13379
- if (this.datagridTrackBy) {
13380
- return this.datagridTrackBy(item);
13381
- }
13382
- else if (Array.isArray(this.all)) {
13383
- index = index !== null && index !== void 0 ? index : this.all.indexOf(item);
13384
- return this.iteratorTrackBy(index, item);
13385
- }
13386
- else {
13387
- throw new Error('improper call to Items#trackBy');
13388
- }
13389
- }
13390
13455
  emitChange() {
13391
13456
  this._change.next(this.displayed);
13392
13457
  }
@@ -13469,7 +13534,6 @@ class ClrDatagridItems {
13469
13534
  this._rawItems = items ? items : []; // local copy for ngOnChange diffing
13470
13535
  }
13471
13536
  set trackBy(value) {
13472
- this.items.iteratorTrackBy = value;
13473
13537
  this.iterableProxy.ngForTrackBy = value;
13474
13538
  }
13475
13539
  /**
@@ -13613,6 +13677,7 @@ class ClrSignpostTrigger {
13613
13677
  this.signpostIdService = signpostIdService;
13614
13678
  this.signpostFocusManager = signpostFocusManager;
13615
13679
  this.platformId = platformId;
13680
+ this.ariaExpanded = false;
13616
13681
  this.subscriptions = [];
13617
13682
  this.document = document;
13618
13683
  }
@@ -13986,12 +14051,10 @@ class Selection {
13986
14051
  let selectionUpdated = false;
13987
14052
  // if the currentSingle has been set before data was loaded, we look up and save the ref from current data set
13988
14053
  if (this.currentSingle && !this.prevSingleSelectionRef) {
13989
- if (this._items.canTrackBy()) {
13990
- this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);
13991
- }
14054
+ this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);
13992
14055
  }
13993
- updatedItems.forEach((item, index) => {
13994
- const ref = this._items.trackBy(item, index);
14056
+ updatedItems.forEach(item => {
14057
+ const ref = this._items.trackBy(item);
13995
14058
  // If one of the updated items is the previously selectedSingle, set it as the new one
13996
14059
  if (this.prevSingleSelectionRef === ref) {
13997
14060
  newSingle = item;
@@ -14024,20 +14087,18 @@ class Selection {
14024
14087
  let selectionUpdated = false;
14025
14088
  // if the current has been set before data was loaded, we look up and save the ref from current data set
14026
14089
  if (this.current.length > 0 && this.prevSelectionRefs.length !== this.current.length) {
14027
- if (this._items.canTrackBy()) {
14028
- this.prevSelectionRefs = [];
14029
- this.current.forEach(item => {
14030
- this.prevSelectionRefs.push(this._items.trackBy(item));
14031
- });
14032
- }
14090
+ this.prevSelectionRefs = [];
14091
+ this.current.forEach(item => {
14092
+ this.prevSelectionRefs.push(this._items.trackBy(item));
14093
+ });
14033
14094
  }
14034
14095
  // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that
14035
14096
  // we need to go over every updated item and check to see if there are valid to be
14036
14097
  // locked or not and update it. When only add items that are found in the lockedRefs back.
14037
14098
  //
14038
14099
  // The both loops below that goes over updatedItems could be combined into one.
14039
- updatedItems.forEach((item, index) => {
14040
- const ref = this._items.trackBy(item, index);
14100
+ updatedItems.forEach(item => {
14101
+ const ref = this._items.trackBy(item);
14041
14102
  if (this.lockedRefs.indexOf(ref) > -1) {
14042
14103
  updateLockedRef.push(ref);
14043
14104
  }
@@ -14046,8 +14107,8 @@ class Selection {
14046
14107
  // currently, the selection is cleared when filter is applied, so the logic inside
14047
14108
  // the if statement below results in broken behavior.
14048
14109
  if (leftOver.length > 0) {
14049
- updatedItems.forEach((item, index) => {
14050
- const ref = this._items.trackBy(item, index);
14110
+ updatedItems.forEach(item => {
14111
+ const ref = this._items.trackBy(item);
14051
14112
  // Look in current selected refs array if item is selected, and update actual value
14052
14113
  const selectedIndex = this.prevSelectionRefs.indexOf(ref);
14053
14114
  if (selectedIndex > -1) {
@@ -14113,7 +14174,7 @@ class Selection {
14113
14174
  return;
14114
14175
  }
14115
14176
  this._currentSingle = value;
14116
- if (this._items.canTrackBy() && value) {
14177
+ if (value) {
14117
14178
  this.prevSingleSelectionRef = this._items.trackBy(value);
14118
14179
  }
14119
14180
  this.emitChange();
@@ -14259,10 +14320,8 @@ class Selection {
14259
14320
  */
14260
14321
  selectItem(item) {
14261
14322
  this.current = this.current.concat(item);
14262
- if (this._items.canTrackBy()) {
14263
- // Push selected ref onto array
14264
- this.prevSelectionRefs.push(this._items.trackBy(item));
14265
- }
14323
+ // Push selected ref onto array
14324
+ this.prevSelectionRefs.push(this._items.trackBy(item));
14266
14325
  }
14267
14326
  /**
14268
14327
  * Deselects an item
@@ -14280,7 +14339,7 @@ class Selection {
14280
14339
  * Make sure that it could be locked
14281
14340
  */
14282
14341
  canItBeLocked() {
14283
- return this._selectionType !== SelectionType.None && this._items.canTrackBy();
14342
+ return this._selectionType !== SelectionType.None;
14284
14343
  }
14285
14344
  emitChange() {
14286
14345
  if (this._selectionType === SelectionType.Single) {
@@ -15068,7 +15127,7 @@ class ClrDatagrid {
15068
15127
  this.selection.rowSelectionMode = value;
15069
15128
  }
15070
15129
  set trackBy(value) {
15071
- this.items.datagridTrackBy = value;
15130
+ this.items.trackBy = value;
15072
15131
  }
15073
15132
  /**
15074
15133
  * Indicates if all currently displayed items are selected
@@ -15110,9 +15169,7 @@ class ClrDatagrid {
15110
15169
  });
15111
15170
  // Try to update only when there is something cached and its open.
15112
15171
  if (this.detailService.state && this.detailService.isOpen) {
15113
- const row = this.items.canTrackBy()
15114
- ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))
15115
- : undefined;
15172
+ const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));
15116
15173
  /**
15117
15174
  * Reopen updated row or close it
15118
15175
  */
@@ -15499,47 +15556,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
15499
15556
  */
15500
15557
  const columnToggleTrackByFn = index => index;
15501
15558
 
15502
- /*
15503
- * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
15504
- * This software is released under MIT license.
15505
- * The full license information can be found in LICENSE in the root directory of this project.
15506
- */
15507
- class ClrDatagridItemsTrackBy {
15508
- constructor(_items) {
15509
- this._items = _items;
15510
- }
15511
- set trackBy(value) {
15512
- /**
15513
- * This is a workaround to prevent the items `trackBy` function from
15514
- * being replaced when the "manage columns" button is clicked. This is
15515
- * not a complete solution. If there is another `ngForTrackBy` function
15516
- * within the datagrid in application code, it could sill replace the
15517
- * items `trackBy` function whether it is the row iterator or not.
15518
- */
15519
- if (value === columnToggleTrackByFn) {
15520
- return;
15521
- }
15522
- if (this._items) {
15523
- this._items.iteratorTrackBy = value;
15524
- }
15525
- }
15526
- }
15527
- 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 });
15528
- ClrDatagridItemsTrackBy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: { trackBy: ["ngForTrackBy", "trackBy"] }, ngImport: i0 });
15529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridItemsTrackBy, decorators: [{
15530
- type: Directive,
15531
- args: [{
15532
- selector: '[ngForTrackBy]',
15533
- }]
15534
- }], ctorParameters: function () {
15535
- return [{ type: Items, decorators: [{
15536
- type: Optional
15537
- }] }];
15538
- }, propDecorators: { trackBy: [{
15539
- type: Input,
15540
- args: ['ngForTrackBy']
15541
- }] } });
15542
-
15543
15559
  /*
15544
15560
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
15545
15561
  * This software is released under MIT license.
@@ -15708,7 +15724,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
15708
15724
  <clr-dg-column-toggle-button (clrAllSelected)="allColumnsSelected()"></clr-dg-column-toggle-button>
15709
15725
  </div>
15710
15726
  </div>
15711
- `, 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"] }] });
15727
+ `, 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"] }] });
15712
15728
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
15713
15729
  type: Component,
15714
15730
  args: [{
@@ -17228,7 +17244,6 @@ const CLR_DATAGRID_DIRECTIVES = [
17228
17244
  ClrDatagridFooter,
17229
17245
  ClrDatagridHideableColumn,
17230
17246
  ClrDatagridItems,
17231
- ClrDatagridItemsTrackBy,
17232
17247
  ClrDatagridPageSize,
17233
17248
  ClrDatagridPagination,
17234
17249
  ClrDatagridPlaceholder,
@@ -17275,7 +17290,6 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
17275
17290
  ClrDatagridFooter,
17276
17291
  ClrDatagridHideableColumn,
17277
17292
  ClrDatagridItems,
17278
- ClrDatagridItemsTrackBy,
17279
17293
  ClrDatagridPageSize,
17280
17294
  ClrDatagridPagination,
17281
17295
  ClrDatagridPlaceholder,
@@ -17326,7 +17340,6 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
17326
17340
  ClrDatagridFooter,
17327
17341
  ClrDatagridHideableColumn,
17328
17342
  ClrDatagridItems,
17329
- ClrDatagridItemsTrackBy,
17330
17343
  ClrDatagridPageSize,
17331
17344
  ClrDatagridPagination,
17332
17345
  ClrDatagridPlaceholder,
@@ -19799,13 +19812,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
19799
19812
  }]
19800
19813
  }] });
19801
19814
 
19815
+ /*
19816
+ * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
19817
+ * This software is released under MIT license.
19818
+ * The full license information can be found in LICENSE in the root directory of this project.
19819
+ */
19820
+
19802
19821
  /*
19803
19822
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
19804
19823
  * This software is released under MIT license.
19805
19824
  * The full license information can be found in LICENSE in the root directory of this project.
19806
19825
  */
19807
19826
  // @TODO Make this an enum
19808
- const ALERT_TYPES = ['info', 'warning', 'danger', 'success'];
19827
+ const ALERT_TYPES = ['info', 'warning', 'danger', 'success', 'neutral', 'unknown', 'loading'];
19809
19828
 
19810
19829
  /*
19811
19830
  * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
@@ -19815,7 +19834,7 @@ const ALERT_TYPES = ['info', 'warning', 'danger', 'success'];
19815
19834
  class AlertIconAndTypesService {
19816
19835
  constructor(commonStrings) {
19817
19836
  this.commonStrings = commonStrings;
19818
- this.defaultIconShape = 'info-circle';
19837
+ this.defaultIconShape = 'info-standard';
19819
19838
  this._alertIconShape = '';
19820
19839
  this._alertType = 'info';
19821
19840
  }
@@ -19848,20 +19867,35 @@ class AlertIconAndTypesService {
19848
19867
  const returnObj = { shape: '', cssClass: '', title: '' };
19849
19868
  switch (type) {
19850
19869
  case 'warning':
19851
- returnObj.shape = 'exclamation-triangle';
19870
+ returnObj.shape = 'warning-standard';
19852
19871
  returnObj.cssClass = 'alert-warning';
19853
19872
  returnObj.title = this.commonStrings.keys.warning;
19854
19873
  break;
19855
19874
  case 'danger':
19856
- returnObj.shape = 'exclamation-circle';
19875
+ returnObj.shape = 'error-standard';
19857
19876
  returnObj.cssClass = 'alert-danger';
19858
19877
  returnObj.title = this.commonStrings.keys.danger;
19859
19878
  break;
19860
19879
  case 'success':
19861
- returnObj.shape = 'check-circle';
19880
+ returnObj.shape = 'success-standard';
19862
19881
  returnObj.cssClass = 'alert-success';
19863
19882
  returnObj.title = this.commonStrings.keys.success;
19864
19883
  break;
19884
+ case 'neutral':
19885
+ returnObj.shape = 'note';
19886
+ returnObj.cssClass = 'alert-neutral';
19887
+ returnObj.title = this.commonStrings.keys.neutral;
19888
+ break;
19889
+ case 'unknown':
19890
+ returnObj.shape = 'help';
19891
+ returnObj.cssClass = 'alert-neutral';
19892
+ returnObj.title = this.commonStrings.keys.unknown;
19893
+ break;
19894
+ case 'loading':
19895
+ returnObj.shape = 'loading';
19896
+ returnObj.cssClass = 'alert-neutral';
19897
+ returnObj.title = this.commonStrings.keys.unknown;
19898
+ break;
19865
19899
  default:
19866
19900
  returnObj.shape = this.defaultIconShape;
19867
19901
  returnObj.cssClass = 'alert-info';
@@ -19983,7 +20017,6 @@ class ClrAlert {
19983
20017
  this.commonStrings = commonStrings;
19984
20018
  this.renderer = renderer;
19985
20019
  this.hostElement = hostElement;
19986
- this.isLight = false;
19987
20020
  this.isSmall = false;
19988
20021
  this.closable = true;
19989
20022
  this.isAppLevel = false;
@@ -19991,12 +20024,21 @@ class ClrAlert {
19991
20024
  this._closedChanged = new EventEmitter(false);
19992
20025
  this._closed = false;
19993
20026
  this.subscriptions = [];
20027
+ this._isLightweight = false;
20028
+ }
20029
+ get isLightweight() {
20030
+ return this._isLightweight;
20031
+ }
20032
+ set isLightweight(val) {
20033
+ this._isLightweight = val;
20034
+ this.configAlertType(this._origAlertType);
19994
20035
  }
19995
20036
  get alertType() {
19996
20037
  return this.iconService.alertType;
19997
20038
  }
19998
20039
  set alertType(val) {
19999
- this.iconService.alertType = val;
20040
+ this._origAlertType = val;
20041
+ this.configAlertType(val);
20000
20042
  }
20001
20043
  set alertIconShape(value) {
20002
20044
  this.iconService.alertIconShape = value;
@@ -20038,6 +20080,9 @@ class ClrAlert {
20038
20080
  ngOnDestroy() {
20039
20081
  this.subscriptions.forEach(sub => sub.unsubscribe());
20040
20082
  }
20083
+ configAlertType(val) {
20084
+ this.iconService.alertType = val;
20085
+ }
20041
20086
  open() {
20042
20087
  this._closed = false;
20043
20088
  if (this.multiAlertService) {
@@ -20046,31 +20091,28 @@ class ClrAlert {
20046
20091
  this._closedChanged.emit(false);
20047
20092
  }
20048
20093
  close() {
20049
- var _a;
20094
+ var _a, _b;
20050
20095
  if (!this.closable) {
20051
20096
  return;
20052
20097
  }
20053
20098
  const isCurrentAlert = ((_a = this.multiAlertService) === null || _a === void 0 ? void 0 : _a.currentAlert) === this;
20054
20099
  this._closed = true;
20055
- if (this.multiAlertService) {
20100
+ if ((_b = this.multiAlertService) === null || _b === void 0 ? void 0 : _b.activeAlerts) {
20056
20101
  this.multiAlertService.close(isCurrentAlert);
20057
20102
  }
20058
20103
  this._closedChanged.emit(true);
20059
20104
  }
20060
20105
  }
20061
20106
  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 });
20062
- 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" }] });
20107
+ 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" }] });
20063
20108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlert, decorators: [{
20064
20109
  type: Component,
20065
- 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" }]
20110
+ 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" }]
20066
20111
  }], ctorParameters: function () {
20067
20112
  return [{ type: AlertIconAndTypesService }, { type: i0.ChangeDetectorRef }, { type: MultiAlertService, decorators: [{
20068
20113
  type: Optional
20069
20114
  }] }, { type: ClrCommonStringsService }, { type: i0.Renderer2 }, { type: i0.ElementRef }];
20070
- }, propDecorators: { isLight: [{
20071
- type: Input,
20072
- args: ['clrAlertLightweight']
20073
- }], isSmall: [{
20115
+ }, propDecorators: { isSmall: [{
20074
20116
  type: Input,
20075
20117
  args: ['clrAlertSizeSmall']
20076
20118
  }], closable: [{
@@ -20084,6 +20126,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
20084
20126
  }], _closedChanged: [{
20085
20127
  type: Output,
20086
20128
  args: ['clrAlertClosedChange']
20129
+ }], isLightweight: [{
20130
+ type: Input,
20131
+ args: ['clrAlertLightweight']
20087
20132
  }], alertType: [{
20088
20133
  type: Input,
20089
20134
  args: ['clrAlertType']
@@ -20108,24 +20153,28 @@ class ClrAlertItem {
20108
20153
  ClrAlertItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertItem, deps: [{ token: AlertIconAndTypesService }], target: i0.ɵɵFactoryTarget.Component });
20109
20154
  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: `
20110
20155
  <div class="alert-icon-wrapper">
20156
+ <clr-spinner class="alert-spinner" clrInline *ngIf="iconService.alertIconShape === 'loading'"></clr-spinner>
20111
20157
  <cds-icon
20112
20158
  class="alert-icon"
20113
20159
  role="img"
20160
+ *ngIf="iconService.alertIconShape !== 'loading'"
20114
20161
  [attr.shape]="iconService.alertIconShape"
20115
20162
  [attr.aria-label]="iconService.alertIconTitle"
20116
20163
  ></cds-icon>
20117
20164
  </div>
20118
20165
  <ng-content></ng-content>
20119
- `, isInline: true, dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }] });
20166
+ `, 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"] }] });
20120
20167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertItem, decorators: [{
20121
20168
  type: Component,
20122
20169
  args: [{
20123
20170
  selector: 'clr-alert-item',
20124
20171
  template: `
20125
20172
  <div class="alert-icon-wrapper">
20173
+ <clr-spinner class="alert-spinner" clrInline *ngIf="iconService.alertIconShape === 'loading'"></clr-spinner>
20126
20174
  <cds-icon
20127
20175
  class="alert-icon"
20128
20176
  role="img"
20177
+ *ngIf="iconService.alertIconShape !== 'loading'"
20129
20178
  [attr.shape]="iconService.alertIconShape"
20130
20179
  [attr.aria-label]="iconService.alertIconTitle"
20131
20180
  ></cds-icon>
@@ -20303,7 +20352,7 @@ class ClrAlerts {
20303
20352
  }
20304
20353
  }
20305
20354
  ClrAlerts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlerts, deps: [{ token: MultiAlertService }], target: i0.ɵɵFactoryTarget.Component });
20306
- 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"] }] });
20355
+ 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"] }] });
20307
20356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlerts, decorators: [{
20308
20357
  type: Component,
20309
20358
  args: [{ selector: 'clr-alerts', providers: [MultiAlertService], host: {
@@ -20312,6 +20361,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
20312
20361
  '[class.alert-info]': "this.currentAlertType == 'info'",
20313
20362
  '[class.alert-success]': "this.currentAlertType == 'success'",
20314
20363
  '[class.alert-warning]': "this.currentAlertType == 'warning'",
20364
+ '[class.alert-neutral]': "this.currentAlertType == 'neutral'",
20315
20365
  }, 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"] }]
20316
20366
  }], ctorParameters: function () { return [{ type: MultiAlertService }]; }, propDecorators: { currentAlertChange: [{
20317
20367
  type: Output,
@@ -20338,16 +20388,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
20338
20388
  const CLR_ALERT_DIRECTIVES = [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText];
20339
20389
  class ClrAlertModule {
20340
20390
  constructor() {
20341
- ClarityIcons.addIcons(checkCircleIcon, infoCircleIcon, exclamationCircleIcon, exclamationTriangleIcon, windowCloseIcon);
20391
+ ClarityIcons.addIcons(errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, windowCloseIcon);
20342
20392
  }
20343
20393
  }
20344
20394
  ClrAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20345
- 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] });
20346
- ClrAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, imports: [CommonModule, ClrIconModule, ClrDropdownModule] });
20395
+ 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] });
20396
+ ClrAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, imports: [CommonModule, ClrIconModule, ClrDropdownModule, ClrSpinnerModule] });
20347
20397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlertModule, decorators: [{
20348
20398
  type: NgModule,
20349
20399
  args: [{
20350
- imports: [CommonModule, ClrIconModule, ClrDropdownModule],
20400
+ imports: [CommonModule, ClrIconModule, ClrDropdownModule, ClrSpinnerModule],
20351
20401
  declarations: [CLR_ALERT_DIRECTIVES],
20352
20402
  exports: [CLR_ALERT_DIRECTIVES],
20353
20403
  }]
@@ -23020,26 +23070,14 @@ class ClrProgressBar {
23020
23070
  get loopClass() {
23021
23071
  return this._loop;
23022
23072
  }
23023
- /** @deprecated since 2.0, remove in 4.0 */
23024
- set clrWarning(value) {
23025
- this._warning = isBooleanAttributeSet(value);
23026
- }
23027
23073
  get warningClass() {
23028
- return this._warning;
23029
- }
23030
- /** @deprecated since 2.0, remove in 4.0 */
23031
- set clrSuccess(value) {
23032
- this._success = isBooleanAttributeSet(value);
23074
+ return this.color === 'warning';
23033
23075
  }
23034
23076
  get successClass() {
23035
- return this._success;
23036
- }
23037
- /** @deprecated since 2.0, remove in 4.0 */
23038
- set clrDanger(value) {
23039
- this._danger = isBooleanAttributeSet(value);
23077
+ return this.color === 'success';
23040
23078
  }
23041
23079
  get dangerClass() {
23042
- return this._danger;
23080
+ return this.color === 'danger';
23043
23081
  }
23044
23082
  set clrFlash(value) {
23045
23083
  this._flash = isBooleanAttributeSet(value);
@@ -23072,7 +23110,7 @@ class ClrProgressBar {
23072
23110
  }
23073
23111
  }
23074
23112
  ClrProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
23075
- 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: `
23113
+ 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: `
23076
23114
  <progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
23077
23115
  <span *ngIf="displayStringValue()">{{ displayValue }}</span>
23078
23116
  `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
@@ -23091,6 +23129,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
23091
23129
  }], displayval: [{
23092
23130
  type: Input,
23093
23131
  args: ['clrDisplayval']
23132
+ }], color: [{
23133
+ type: Input,
23134
+ args: ['clrColor']
23094
23135
  }], value: [{
23095
23136
  type: Input,
23096
23137
  args: ['clrValue']
@@ -23126,21 +23167,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
23126
23167
  }], loopClass: [{
23127
23168
  type: HostBinding,
23128
23169
  args: ['class.loop']
23129
- }], clrWarning: [{
23130
- type: Input,
23131
- args: ['clrWarning']
23132
23170
  }], warningClass: [{
23133
23171
  type: HostBinding,
23134
23172
  args: ['class.warning']
23135
- }], clrSuccess: [{
23136
- type: Input,
23137
- args: ['clrSuccess']
23138
23173
  }], successClass: [{
23139
23174
  type: HostBinding,
23140
23175
  args: ['class.success']
23141
- }], clrDanger: [{
23142
- type: Input,
23143
- args: ['clrDanger']
23144
23176
  }], dangerClass: [{
23145
23177
  type: HostBinding,
23146
23178
  args: ['class.danger']
@@ -25801,7 +25833,7 @@ class ClrWizard {
25801
25833
  */
25802
25834
  reset() {
25803
25835
  this.pageCollection.reset();
25804
- this.onReset.next();
25836
+ this.onReset.emit();
25805
25837
  }
25806
25838
  listenForNextPageChanges() {
25807
25839
  return this.navService.movedToNextPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {
@@ -26480,15 +26512,9 @@ const CLR_MENU_POSITIONS = [
26480
26512
  * The full license information can be found in LICENSE in the root directory of this project.
26481
26513
  */
26482
26514
 
26483
- /*
26484
- * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
26485
- * This software is released under MIT license.
26486
- * The full license information can be found in LICENSE in the root directory of this project.
26487
- */
26488
-
26489
26515
  /**
26490
26516
  * Generated bundle index. Do not edit.
26491
26517
  */
26492
26518
 
26493
- 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 };
26519
+ 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 };
26494
26520
  //# sourceMappingURL=clr-angular.mjs.map