@danske/sapphire-angular 2.1.0 → 2.3.0

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 (29) hide show
  1. package/esm2020/lib/radio/public_api.mjs +3 -1
  2. package/esm2020/lib/radio/src/radio-group.component.mjs +22 -159
  3. package/esm2020/lib/radio/src/radio.component.mjs +8 -267
  4. package/esm2020/lib/radio/src/radio.module.mjs +40 -6
  5. package/esm2020/lib/radio/src/segmented/segmented-radio-group.component.mjs +130 -0
  6. package/esm2020/lib/radio/src/segmented/segmented-radio.component.mjs +25 -0
  7. package/esm2020/lib/radio/src/shared/radio-base.mjs +276 -0
  8. package/esm2020/lib/radio/src/shared/radio-group-base.mjs +166 -0
  9. package/esm2020/lib/segmented-tabs/src/segmented-tabs.component.mjs +19 -12
  10. package/esm2020/lib/table/public_api.mjs +2 -1
  11. package/esm2020/lib/table/src/cdk-virtual-scroll-viewport-fix.directive.mjs +61 -0
  12. package/esm2020/lib/table/src/table.module.mjs +7 -2
  13. package/fesm2015/danske-sapphire-angular.mjs +358 -77
  14. package/fesm2015/danske-sapphire-angular.mjs.map +1 -1
  15. package/fesm2020/danske-sapphire-angular.mjs +354 -76
  16. package/fesm2020/danske-sapphire-angular.mjs.map +1 -1
  17. package/lib/radio/public_api.d.ts +2 -0
  18. package/lib/radio/src/radio-group.component.d.ts +5 -60
  19. package/lib/radio/src/radio.component.d.ts +4 -96
  20. package/lib/radio/src/radio.module.d.ts +8 -5
  21. package/lib/radio/src/segmented/segmented-radio-group.component.d.ts +40 -0
  22. package/lib/radio/src/segmented/segmented-radio.component.d.ts +8 -0
  23. package/lib/radio/src/shared/radio-base.d.ts +103 -0
  24. package/lib/radio/src/shared/radio-group-base.d.ts +63 -0
  25. package/lib/segmented-tabs/src/segmented-tabs.component.d.ts +3 -2
  26. package/lib/table/public_api.d.ts +1 -0
  27. package/lib/table/src/cdk-virtual-scroll-viewport-fix.directive.d.ts +25 -0
  28. package/lib/table/src/table.module.d.ts +3 -2
  29. package/package.json +3 -3
@@ -25,8 +25,9 @@ import { Subject, merge, combineLatest, empty, fromEvent } from 'rxjs';
25
25
  import { takeUntil, startWith, map } from 'rxjs/operators';
26
26
  import * as i1$4 from '@angular/cdk/listbox';
27
27
  import { CdkListbox, CdkOption, CdkListboxModule } from '@angular/cdk/listbox';
28
+ import * as i1$5 from '@angular/cdk/scrolling';
28
29
  export { tokens } from '@danske/sapphire-css/themes';
29
- import * as i1$5 from '@angular/cdk/dialog';
30
+ import * as i1$6 from '@angular/cdk/dialog';
30
31
  import { CdkDialogContainer, DialogModule } from '@angular/cdk/dialog';
31
32
 
32
33
  /**
@@ -1172,7 +1173,11 @@ const _RadioMixinBase = mixinTabIndex(mixinDisabled(class {
1172
1173
  this._elementRef = _elementRef;
1173
1174
  }
1174
1175
  }));
1175
- class RadioComponent extends _RadioMixinBase {
1176
+ /**
1177
+ * @Directive decorator is just to be able to have a constructor with DI.
1178
+ * This class is being extended by other components.
1179
+ **/
1180
+ class RadioBase extends _RadioMixinBase {
1176
1181
  _getAriaChecked() {
1177
1182
  return this.checked ? 'true' : 'false';
1178
1183
  }
@@ -1245,6 +1250,7 @@ class RadioComponent extends _RadioMixinBase {
1245
1250
  constructor(radioGroup, elementRef, tabIndex, _focusMonitor, _radioDispatcher) {
1246
1251
  super(elementRef);
1247
1252
  this.radioGroup = radioGroup;
1253
+ this.elementRef = elementRef;
1248
1254
  this._focusMonitor = _focusMonitor;
1249
1255
  this._radioDispatcher = _radioDispatcher;
1250
1256
  /**
@@ -1370,21 +1376,15 @@ class RadioComponent extends _RadioMixinBase {
1370
1376
  }
1371
1377
  }
1372
1378
  }
1373
- RadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioComponent, deps: [{ token: RadioGroupComponent, optional: true }, { token: i0.ElementRef }, { token: 'tabindex', attribute: true }, { token: i2$2.FocusMonitor }, { token: i3.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Component });
1374
- RadioComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: RadioComponent, selector: "sp-radio", inputs: { tabIndex: "tabIndex", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], name: "name", autofocus: "autofocus", id: "id", value: "value", checked: "checked", disabled: "disabled", readonly: "readonly", required: "required" }, outputs: { change: "change" }, host: { properties: { "attr.id": "id", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null", "id": "this.id" } }, viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: ThemeCheckDirective }], ngImport: i0, template: "<label\n [for]=\"inputId\"\n class=\"sapphire-radio\"\n [class.sapphire-radio--no-disabled]=\"radioGroup?.disabled\"\n [class.sapphire-radio--checked]=\"checked\"\n [class.sapphire-radio--md]=\"radioGroup?._field?.size === 'md'\"\n>\n <input\n #input\n class=\"sapphire-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <span class=\"sapphire-radio__box\"></span>\n <span class=\"sapphire-radio__label\">\n <ng-content></ng-content>\n </span>\n</label>\n", styles: [".sapphire-radio{display:inline-flex;font-family:var(--sapphire-semantic-font-name-default);max-width:100%;position:relative}.sapphire-radio__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-radio__label{margin-left:var(--sapphire-semantic-size-spacing-20);font-size:var(--sapphire-semantic-size-font-control-default);line-height:var(--sapphire-semantic-size-height-control-xs);color:var(--sapphire-semantic-color-content-default-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-radio--md .sapphire-radio__label{font-size:var(--sapphire-semantic-size-font-control-md);line-height:var(--sapphire-semantic-size-height-control-2xs)}.sapphire-radio__box{box-sizing:border-box;background-color:var(--sapphire-semantic-color-background-control-default);width:var(--sapphire-semantic-size-height-box-lg);height:var(--sapphire-semantic-size-height-box-lg);flex-shrink:0;border-radius:50%;border:var(--sapphire-semantic-size-border-md) solid var(--sapphire-semantic-color-border-control-default);position:relative;margin-top:var(--sapphire-semantic-size-spacing-5);transition-property:background-color,border-color,border-width;transition-duration:var(--sapphire-semantic-time-fade-quick);transition-timing-function:ease-in-out}.sapphire-radio--md .sapphire-radio__box{width:var(--sapphire-semantic-size-height-box-md);height:var(--sapphire-semantic-size-height-box-md)}.sapphire-radio--checked .sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-default);border-width:calc((var(--sapphire-semantic-size-height-box-lg) - var(--sapphire-global-size-generic-20)) / 2)}.sapphire-radio--md.sapphire-radio--checked .sapphire-radio__box{border-width:calc((var(--sapphire-semantic-size-height-box-md) - var(--sapphire-global-size-generic-15)) / 2)}.sapphire-radio--checked .sapphire-radio__box:after{display:block}.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked).is-hover .sapphire-radio__box,.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-border-control-hover)}.sapphire-radio--checked:not(:active):not(.is-active).is-hover .sapphire-radio__box,.sapphire-radio--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-hover)}.sapphire-radio.is-focus .sapphire-radio__input~.sapphire-radio__box,.sapphire-radio:not(.js-focus) .sapphire-radio__input:focus-visible~.sapphire-radio__box{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);outline-offset:var(--sapphire-semantic-size-focus-ring)}.sapphire-radio__input:disabled{cursor:not-allowed}.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__box,.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__label{opacity:var(--sapphire-semantic-opacity-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.Default });
1379
+ RadioBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioBase, deps: [{ token: RadioGroupBase, optional: true }, { token: i0.ElementRef }, { token: 'tabindex', attribute: true }, { token: i2$2.FocusMonitor }, { token: i3.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive });
1380
+ RadioBasedir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: RadioBase, inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], name: "name", autofocus: "autofocus", id: "id", value: "value", checked: "checked", disabled: "disabled", readonly: "readonly", required: "required" }, outputs: { change: "change" }, host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0 });
1375
1381
  __decorate([
1376
1382
  AutoId()
1377
- ], RadioComponent.prototype, "id", void 0);
1378
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioComponent, decorators: [{
1379
- type: Component,
1380
- args: [{ selector: 'sp-radio', changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [ThemeCheckDirective], inputs: ['tabIndex'], host: {
1381
- '[attr.id]': 'id',
1382
- '[attr.tabindex]': 'null',
1383
- '[attr.aria-label]': 'null',
1384
- '[attr.aria-labelledby]': 'null',
1385
- '[attr.aria-describedby]': 'null',
1386
- }, template: "<label\n [for]=\"inputId\"\n class=\"sapphire-radio\"\n [class.sapphire-radio--no-disabled]=\"radioGroup?.disabled\"\n [class.sapphire-radio--checked]=\"checked\"\n [class.sapphire-radio--md]=\"radioGroup?._field?.size === 'md'\"\n>\n <input\n #input\n class=\"sapphire-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <span class=\"sapphire-radio__box\"></span>\n <span class=\"sapphire-radio__label\">\n <ng-content></ng-content>\n </span>\n</label>\n", styles: [".sapphire-radio{display:inline-flex;font-family:var(--sapphire-semantic-font-name-default);max-width:100%;position:relative}.sapphire-radio__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-radio__label{margin-left:var(--sapphire-semantic-size-spacing-20);font-size:var(--sapphire-semantic-size-font-control-default);line-height:var(--sapphire-semantic-size-height-control-xs);color:var(--sapphire-semantic-color-content-default-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-radio--md .sapphire-radio__label{font-size:var(--sapphire-semantic-size-font-control-md);line-height:var(--sapphire-semantic-size-height-control-2xs)}.sapphire-radio__box{box-sizing:border-box;background-color:var(--sapphire-semantic-color-background-control-default);width:var(--sapphire-semantic-size-height-box-lg);height:var(--sapphire-semantic-size-height-box-lg);flex-shrink:0;border-radius:50%;border:var(--sapphire-semantic-size-border-md) solid var(--sapphire-semantic-color-border-control-default);position:relative;margin-top:var(--sapphire-semantic-size-spacing-5);transition-property:background-color,border-color,border-width;transition-duration:var(--sapphire-semantic-time-fade-quick);transition-timing-function:ease-in-out}.sapphire-radio--md .sapphire-radio__box{width:var(--sapphire-semantic-size-height-box-md);height:var(--sapphire-semantic-size-height-box-md)}.sapphire-radio--checked .sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-default);border-width:calc((var(--sapphire-semantic-size-height-box-lg) - var(--sapphire-global-size-generic-20)) / 2)}.sapphire-radio--md.sapphire-radio--checked .sapphire-radio__box{border-width:calc((var(--sapphire-semantic-size-height-box-md) - var(--sapphire-global-size-generic-15)) / 2)}.sapphire-radio--checked .sapphire-radio__box:after{display:block}.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked).is-hover .sapphire-radio__box,.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-border-control-hover)}.sapphire-radio--checked:not(:active):not(.is-active).is-hover .sapphire-radio__box,.sapphire-radio--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-hover)}.sapphire-radio.is-focus .sapphire-radio__input~.sapphire-radio__box,.sapphire-radio:not(.js-focus) .sapphire-radio__input:focus-visible~.sapphire-radio__box{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);outline-offset:var(--sapphire-semantic-size-focus-ring)}.sapphire-radio__input:disabled{cursor:not-allowed}.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__box,.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__label{opacity:var(--sapphire-semantic-opacity-disabled)}\n"] }]
1387
- }], ctorParameters: function () { return [{ type: RadioGroupComponent, decorators: [{
1383
+ ], RadioBase.prototype, "id", void 0);
1384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioBase, decorators: [{
1385
+ type: Directive,
1386
+ args: [{}]
1387
+ }], ctorParameters: function () { return [{ type: RadioGroupBase, decorators: [{
1388
1388
  type: Optional
1389
1389
  }] }, { type: i0.ElementRef }, { type: undefined, decorators: [{
1390
1390
  type: Attribute,
@@ -1423,7 +1423,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
1423
1423
  type: Output
1424
1424
  }] } });
1425
1425
 
1426
- class RadioGroupComponent {
1426
+ class RadioComponent extends RadioBase {
1427
+ }
1428
+ RadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1429
+ RadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: RadioComponent, selector: "sp-radio", inputs: { tabIndex: "tabIndex" }, host: { properties: { "attr.id": "id", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, usesInheritance: true, hostDirectives: [{ directive: ThemeCheckDirective }], ngImport: i0, template: "<label\n [for]=\"inputId\"\n class=\"sapphire-radio\"\n [class.sapphire-radio--no-disabled]=\"radioGroup?.disabled\"\n [class.sapphire-radio--checked]=\"checked\"\n [class.sapphire-radio--md]=\"radioGroup?._field?.size === 'md'\"\n>\n <input\n #input\n class=\"sapphire-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <span class=\"sapphire-radio__box\"></span>\n <span class=\"sapphire-radio__label\">\n <ng-content></ng-content>\n </span>\n</label>\n", styles: [".sapphire-radio{display:inline-flex;font-family:var(--sapphire-semantic-font-name-default);max-width:100%;position:relative}.sapphire-radio__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-radio__label{margin-left:var(--sapphire-semantic-size-spacing-20);font-size:var(--sapphire-semantic-size-font-control-default);line-height:var(--sapphire-semantic-size-height-control-xs);color:var(--sapphire-semantic-color-content-default-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-radio--md .sapphire-radio__label{font-size:var(--sapphire-semantic-size-font-control-md);line-height:var(--sapphire-semantic-size-height-control-2xs)}.sapphire-radio__box{box-sizing:border-box;background-color:var(--sapphire-semantic-color-background-control-default);width:var(--sapphire-semantic-size-height-box-lg);height:var(--sapphire-semantic-size-height-box-lg);flex-shrink:0;border-radius:50%;border:var(--sapphire-semantic-size-border-md) solid var(--sapphire-semantic-color-border-control-default);position:relative;margin-top:var(--sapphire-semantic-size-spacing-5);transition-property:background-color,border-color,border-width;transition-duration:var(--sapphire-semantic-time-fade-quick);transition-timing-function:ease-in-out}.sapphire-radio--md .sapphire-radio__box{width:var(--sapphire-semantic-size-height-box-md);height:var(--sapphire-semantic-size-height-box-md)}.sapphire-radio--checked .sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-default);border-width:calc((var(--sapphire-semantic-size-height-box-lg) - var(--sapphire-global-size-generic-20)) / 2)}.sapphire-radio--md.sapphire-radio--checked .sapphire-radio__box{border-width:calc((var(--sapphire-semantic-size-height-box-md) - var(--sapphire-global-size-generic-15)) / 2)}.sapphire-radio--checked .sapphire-radio__box:after{display:block}.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked).is-hover .sapphire-radio__box,.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-border-control-hover)}.sapphire-radio--checked:not(:active):not(.is-active).is-hover .sapphire-radio__box,.sapphire-radio--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-hover)}.sapphire-radio.is-focus .sapphire-radio__input~.sapphire-radio__box,.sapphire-radio:not(.js-focus) .sapphire-radio__input:focus-visible~.sapphire-radio__box{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);outline-offset:var(--sapphire-semantic-size-focus-ring)}.sapphire-radio__input:disabled{cursor:not-allowed}.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__box,.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__label{opacity:var(--sapphire-semantic-opacity-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.Default });
1430
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioComponent, decorators: [{
1431
+ type: Component,
1432
+ args: [{ selector: 'sp-radio', changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [ThemeCheckDirective], inputs: ['tabIndex'], host: {
1433
+ '[attr.id]': 'id',
1434
+ '[attr.tabindex]': 'null',
1435
+ '[attr.aria-label]': 'null',
1436
+ '[attr.aria-labelledby]': 'null',
1437
+ '[attr.aria-describedby]': 'null',
1438
+ }, template: "<label\n [for]=\"inputId\"\n class=\"sapphire-radio\"\n [class.sapphire-radio--no-disabled]=\"radioGroup?.disabled\"\n [class.sapphire-radio--checked]=\"checked\"\n [class.sapphire-radio--md]=\"radioGroup?._field?.size === 'md'\"\n>\n <input\n #input\n class=\"sapphire-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <span class=\"sapphire-radio__box\"></span>\n <span class=\"sapphire-radio__label\">\n <ng-content></ng-content>\n </span>\n</label>\n", styles: [".sapphire-radio{display:inline-flex;font-family:var(--sapphire-semantic-font-name-default);max-width:100%;position:relative}.sapphire-radio__input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-radio__label{margin-left:var(--sapphire-semantic-size-spacing-20);font-size:var(--sapphire-semantic-size-font-control-default);line-height:var(--sapphire-semantic-size-height-control-xs);color:var(--sapphire-semantic-color-content-default-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-radio--md .sapphire-radio__label{font-size:var(--sapphire-semantic-size-font-control-md);line-height:var(--sapphire-semantic-size-height-control-2xs)}.sapphire-radio__box{box-sizing:border-box;background-color:var(--sapphire-semantic-color-background-control-default);width:var(--sapphire-semantic-size-height-box-lg);height:var(--sapphire-semantic-size-height-box-lg);flex-shrink:0;border-radius:50%;border:var(--sapphire-semantic-size-border-md) solid var(--sapphire-semantic-color-border-control-default);position:relative;margin-top:var(--sapphire-semantic-size-spacing-5);transition-property:background-color,border-color,border-width;transition-duration:var(--sapphire-semantic-time-fade-quick);transition-timing-function:ease-in-out}.sapphire-radio--md .sapphire-radio__box{width:var(--sapphire-semantic-size-height-box-md);height:var(--sapphire-semantic-size-height-box-md)}.sapphire-radio--checked .sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-default);border-width:calc((var(--sapphire-semantic-size-height-box-lg) - var(--sapphire-global-size-generic-20)) / 2)}.sapphire-radio--md.sapphire-radio--checked .sapphire-radio__box{border-width:calc((var(--sapphire-semantic-size-height-box-md) - var(--sapphire-global-size-generic-15)) / 2)}.sapphire-radio--checked .sapphire-radio__box:after{display:block}.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked).is-hover .sapphire-radio__box,.sapphire-radio:not(:active):not(.is-active):not(.sapphire-radio--checked):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-border-control-hover)}.sapphire-radio--checked:not(:active):not(.is-active).is-hover .sapphire-radio__box,.sapphire-radio--checked:not(:active):not(.is-active):not(.js-hover):hover .sapphire-radio__input:not(:disabled)~.sapphire-radio__box{border-color:var(--sapphire-semantic-color-background-action-primary-hover)}.sapphire-radio.is-focus .sapphire-radio__input~.sapphire-radio__box,.sapphire-radio:not(.js-focus) .sapphire-radio__input:focus-visible~.sapphire-radio__box{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);outline-offset:var(--sapphire-semantic-size-focus-ring)}.sapphire-radio__input:disabled{cursor:not-allowed}.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__box,.sapphire-radio:not(.sapphire-radio--no-disabled) .sapphire-radio__input:disabled~.sapphire-radio__label{opacity:var(--sapphire-semantic-opacity-disabled)}\n"] }]
1439
+ }] });
1440
+
1441
+ class RadioGroupBase {
1427
1442
  /** Name of the radio button group. All radio buttons inside this group will use this name. */
1428
1443
  get name() {
1429
1444
  return this._name;
@@ -1526,11 +1541,6 @@ class RadioGroupComponent {
1526
1541
  isDisabled() {
1527
1542
  return this.disabled;
1528
1543
  }
1529
- _contentFocusChanged(focusOrigin) {
1530
- if (!focusOrigin) {
1531
- this.onTouched();
1532
- }
1533
- }
1534
1544
  /** Updates the `selected` radio button from the internal _value state. */
1535
1545
  updateSelectedRadioFromValue() {
1536
1546
  // If the value already matches the selected radio, do nothing.
@@ -1553,8 +1563,52 @@ class RadioGroupComponent {
1553
1563
  }
1554
1564
  }
1555
1565
  }
1556
- RadioGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FieldComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1557
- RadioGroupComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: RadioGroupComponent, selector: "sp-radio-group", inputs: { orientation: "orientation", name: "name", value: "value", selected: "selected", disabled: "disabled", readonly: "readonly", required: "required" }, outputs: { change: "change" }, host: { attributes: { "role": "radiogroup" } }, providers: [
1566
+ RadioGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioGroupBase, deps: [{ token: i0.ChangeDetectorRef }, { token: FieldComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1567
+ RadioGroupBasedir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: RadioGroupBase, isStandalone: true, inputs: { orientation: "orientation", name: "name", value: "value", selected: "selected", disabled: "disabled", readonly: "readonly", required: "required" }, outputs: { change: "change" }, queries: [{ propertyName: "radios", predicate: i0.forwardRef(function () { return RadioComponent; }), descendants: true }], ngImport: i0 });
1568
+ __decorate([
1569
+ AutoId()
1570
+ ], RadioGroupBase.prototype, "uniqueId", void 0);
1571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioGroupBase, decorators: [{
1572
+ type: Directive,
1573
+ args: [{
1574
+ standalone: true,
1575
+ }]
1576
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: FieldComponent, decorators: [{
1577
+ type: Optional
1578
+ }] }]; }, propDecorators: { uniqueId: [], orientation: [{
1579
+ type: Input
1580
+ }], name: [{
1581
+ type: Input
1582
+ }], change: [{
1583
+ type: Output
1584
+ }], value: [{
1585
+ type: Input
1586
+ }], selected: [{
1587
+ type: Input
1588
+ }], disabled: [{
1589
+ type: Input
1590
+ }], readonly: [{
1591
+ type: Input
1592
+ }], required: [{
1593
+ type: Input
1594
+ }], radios: [{
1595
+ type: ContentChildren,
1596
+ args: [forwardRef(() => RadioComponent), { descendants: true }]
1597
+ }] } });
1598
+
1599
+ class RadioGroupComponent extends RadioGroupBase {
1600
+ constructor() {
1601
+ super(...arguments);
1602
+ this.orientation = 'vertical';
1603
+ }
1604
+ _onFocusChange(focusOrigin) {
1605
+ if (!focusOrigin) {
1606
+ this.onTouched();
1607
+ }
1608
+ }
1609
+ }
1610
+ RadioGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1611
+ RadioGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: RadioGroupComponent, selector: "sp-radio-group", inputs: { orientation: "orientation" }, host: { attributes: { "role": "radiogroup" } }, providers: [
1558
1612
  {
1559
1613
  provide: NG_VALUE_ACCESSOR,
1560
1614
  useExisting: forwardRef(() => RadioGroupComponent),
@@ -1564,10 +1618,11 @@ RadioGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
1564
1618
  provide: FieldControl,
1565
1619
  useExisting: forwardRef(() => RadioGroupComponent),
1566
1620
  },
1567
- ], queries: [{ propertyName: "radios", predicate: i0.forwardRef(function () { return RadioComponent; }), descendants: true }], hostDirectives: [{ directive: ThemeCheckDirective }], ngImport: i0, template: "<div\n class=\"sapphire-field-group\"\n role=\"radiogroup\"\n [attr.aria-orientation]=\"orientation\"\n [attr.aria-labelledby]=\"_field?.label?.id\"\n [class.sapphire-field-group--vertical]=\"orientation === 'vertical'\"\n [class.sapphire-field-group--horizontal]=\"orientation === 'horizontal'\"\n [class.sapphire-field-group--md]=\"_field?.size === 'md'\"\n (cdkFocusChange)=\"_contentFocusChanged($event)\"\n cdkMonitorSubtreeFocus\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sapphire-field-group{display:flex;flex-wrap:wrap;column-gap:var(--sapphire-semantic-size-spacing-50);row-gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-field-group--horizontal{flex-direction:row}.sapphire-field-group--vertical{flex-direction:column}.sapphire-field-group--md{row-gap:var(--sapphire-semantic-size-spacing-20)}\n"], dependencies: [{ kind: "directive", type: i2$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
1568
- __decorate([
1569
- AutoId()
1570
- ], RadioGroupComponent.prototype, "uniqueId", void 0);
1621
+ {
1622
+ provide: RadioGroupBase,
1623
+ useExisting: forwardRef(() => RadioGroupComponent),
1624
+ },
1625
+ ], usesInheritance: true, hostDirectives: [{ directive: ThemeCheckDirective }], ngImport: i0, template: "<div\n class=\"sapphire-field-group\"\n role=\"radiogroup\"\n [attr.aria-orientation]=\"orientation\"\n [attr.aria-labelledby]=\"_field?.label?.id\"\n [class.sapphire-field-group--vertical]=\"orientation === 'vertical'\"\n [class.sapphire-field-group--horizontal]=\"orientation === 'horizontal'\"\n [class.sapphire-field-group--md]=\"_field?.size === 'md'\"\n (cdkFocusChange)=\"_onFocusChange($event)\"\n cdkMonitorSubtreeFocus\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sapphire-field-group{display:flex;flex-wrap:wrap;column-gap:var(--sapphire-semantic-size-spacing-50);row-gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-field-group--horizontal{flex-direction:row}.sapphire-field-group--vertical{flex-direction:column}.sapphire-field-group--md{row-gap:var(--sapphire-semantic-size-spacing-20)}\n"], dependencies: [{ kind: "directive", type: i2$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
1571
1626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RadioGroupComponent, decorators: [{
1572
1627
  type: Component,
1573
1628
  args: [{ selector: 'sp-radio-group', changeDetection: ChangeDetectionStrategy.Default, providers: [
@@ -1580,30 +1635,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
1580
1635
  provide: FieldControl,
1581
1636
  useExisting: forwardRef(() => RadioGroupComponent),
1582
1637
  },
1638
+ {
1639
+ provide: RadioGroupBase,
1640
+ useExisting: forwardRef(() => RadioGroupComponent),
1641
+ },
1583
1642
  ], host: {
1584
1643
  role: 'radiogroup',
1585
- }, hostDirectives: [ThemeCheckDirective], template: "<div\n class=\"sapphire-field-group\"\n role=\"radiogroup\"\n [attr.aria-orientation]=\"orientation\"\n [attr.aria-labelledby]=\"_field?.label?.id\"\n [class.sapphire-field-group--vertical]=\"orientation === 'vertical'\"\n [class.sapphire-field-group--horizontal]=\"orientation === 'horizontal'\"\n [class.sapphire-field-group--md]=\"_field?.size === 'md'\"\n (cdkFocusChange)=\"_contentFocusChanged($event)\"\n cdkMonitorSubtreeFocus\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sapphire-field-group{display:flex;flex-wrap:wrap;column-gap:var(--sapphire-semantic-size-spacing-50);row-gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-field-group--horizontal{flex-direction:row}.sapphire-field-group--vertical{flex-direction:column}.sapphire-field-group--md{row-gap:var(--sapphire-semantic-size-spacing-20)}\n"] }]
1586
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: FieldComponent, decorators: [{
1587
- type: Optional
1588
- }] }]; }, propDecorators: { uniqueId: [], orientation: [{
1589
- type: Input
1590
- }], name: [{
1591
- type: Input
1592
- }], change: [{
1593
- type: Output
1594
- }], value: [{
1595
- type: Input
1596
- }], selected: [{
1597
- type: Input
1598
- }], disabled: [{
1599
- type: Input
1600
- }], readonly: [{
1601
- type: Input
1602
- }], required: [{
1644
+ }, hostDirectives: [ThemeCheckDirective], template: "<div\n class=\"sapphire-field-group\"\n role=\"radiogroup\"\n [attr.aria-orientation]=\"orientation\"\n [attr.aria-labelledby]=\"_field?.label?.id\"\n [class.sapphire-field-group--vertical]=\"orientation === 'vertical'\"\n [class.sapphire-field-group--horizontal]=\"orientation === 'horizontal'\"\n [class.sapphire-field-group--md]=\"_field?.size === 'md'\"\n (cdkFocusChange)=\"_onFocusChange($event)\"\n cdkMonitorSubtreeFocus\n>\n <ng-content></ng-content>\n</div>\n", styles: [".sapphire-field-group{display:flex;flex-wrap:wrap;column-gap:var(--sapphire-semantic-size-spacing-50);row-gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-field-group--horizontal{flex-direction:row}.sapphire-field-group--vertical{flex-direction:column}.sapphire-field-group--md{row-gap:var(--sapphire-semantic-size-spacing-20)}\n"] }]
1645
+ }], propDecorators: { orientation: [{
1603
1646
  type: Input
1604
- }], radios: [{
1605
- type: ContentChildren,
1606
- args: [forwardRef(() => RadioComponent), { descendants: true }]
1607
1647
  }] } });
1608
1648
 
1609
1649
  /**
@@ -5348,7 +5388,7 @@ class SegmentedTabsComponent {
5348
5388
  this.selectedIndexChange = new EventEmitter();
5349
5389
  this.tabs = new QueryList();
5350
5390
  this._tabIds = [];
5351
- this._activeTabPosition = { left: '0px', width: '0px' };
5391
+ this._gliderStyles = { left: '0px', width: '0px' };
5352
5392
  this._animationEnabled = false;
5353
5393
  this._focusVisible = false;
5354
5394
  this.skipAnimationFrame();
@@ -5370,17 +5410,17 @@ class SegmentedTabsComponent {
5370
5410
  // changed after it was checked" angular error.
5371
5411
  //
5372
5412
  // https://angular.io/errors/NG0100
5373
- this.setActiveTabPosition();
5413
+ this.setGliderStyles();
5374
5414
  this.changeDetector.detectChanges();
5375
5415
  this.resizeObserver = new ResizeObserver(() => {
5376
5416
  // zonejs doesn't monkey-patch resize observer (yet)
5377
5417
  this.zone.run(() => {
5378
- this.setActiveTabPosition();
5418
+ this.setGliderStyles();
5379
5419
  });
5380
5420
  });
5381
5421
  this.resizeObserver.observe(this.segmentedControl.nativeElement);
5382
5422
  this.selectedIndexChange.subscribe(() => {
5383
- this.setActiveTabPosition();
5423
+ this.setGliderStyles();
5384
5424
  });
5385
5425
  }
5386
5426
  ngOnDestroy() {
@@ -5388,7 +5428,7 @@ class SegmentedTabsComponent {
5388
5428
  this.selectedIndexChange.unsubscribe();
5389
5429
  }
5390
5430
  ngAfterViewChecked() {
5391
- this.setActiveTabPosition();
5431
+ this.setGliderStyles();
5392
5432
  this.changeDetector.detectChanges();
5393
5433
  }
5394
5434
  getFocusedTab() {
@@ -5458,11 +5498,18 @@ class SegmentedTabsComponent {
5458
5498
  return;
5459
5499
  }
5460
5500
  }
5461
- setActiveTabPosition() {
5501
+ setGliderStyles() {
5502
+ const { offsetLeft, clientWidth } = this.getSelectedTabPosition();
5503
+ this._gliderStyles = {
5504
+ left: `${offsetLeft}px`,
5505
+ width: `${clientWidth}px`,
5506
+ };
5507
+ }
5508
+ getSelectedTabPosition() {
5462
5509
  const tab = this.tabs.toArray()[this.selectedIndex]?._button?.nativeElement;
5463
- this._activeTabPosition = {
5464
- left: `${tab?.offsetLeft || 0}px`,
5465
- width: `${tab?.clientWidth || 0}px`,
5510
+ return {
5511
+ offsetLeft: tab?.offsetLeft || 0,
5512
+ clientWidth: tab?.clientWidth || 0,
5466
5513
  };
5467
5514
  }
5468
5515
  onTabsChange() {
@@ -5513,7 +5560,7 @@ class SegmentedTabsComponent {
5513
5560
  }
5514
5561
  }
5515
5562
  SegmentedTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedTabsComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5516
- SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", align: "align", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, host: { properties: { "attr.align": "null" } }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], viewQueries: [{ propertyName: "segmentedControl", first: true, predicate: ["segmentedControl"], descendants: true }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
5563
+ SegmentedTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedTabsComponent, selector: "sp-segmented-tabs", inputs: { size: "size", align: "align", keyboardActivation: "keyboardActivation", disabled: "disabled", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange" }, host: { properties: { "attr.align": "null" } }, providers: [ViewEncapsulationProvider], queries: [{ propertyName: "tabs", predicate: i0.forwardRef(function () { return SegmentedTabComponent; }) }], viewQueries: [{ propertyName: "segmentedControl", first: true, predicate: ["segmentedControl"], descendants: true }], exportAs: ["spSegmentedTabs"], ngImport: i0, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_gliderStyles.left\"\n [style.width]=\"_gliderStyles.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }] });
5517
5564
  __decorate([
5518
5565
  CoerceBoolean
5519
5566
  ], SegmentedTabsComponent.prototype, "disabled", void 0);
@@ -5521,7 +5568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
5521
5568
  type: Component,
5522
5569
  args: [{ selector: 'sp-segmented-tabs', providers: [ViewEncapsulationProvider], exportAs: 'spSegmentedTabs', host: {
5523
5570
  '[attr.align]': 'null',
5524
- }, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_activeTabPosition.left\"\n [style.width]=\"_activeTabPosition.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"] }]
5571
+ }, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [class.sapphire-segmented-control--manual-keyboard-activation]=\"\n keyboardActivation === 'manual'\n \"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n (keydown)=\"_onKeyDown($event)\"\n >\n <ng-content select=\"sp-segmented-tab\"></ng-content>\n <span\n [style.left]=\"_gliderStyles.left\"\n [style.width]=\"_gliderStyles.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n<ng-container *ngTemplateOutlet=\"_getTabContentTemplate()\"></ng-container>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"] }]
5525
5572
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { segmentedControl: [{
5526
5573
  type: ViewChild,
5527
5574
  args: ['segmentedControl']
@@ -6381,6 +6428,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
6381
6428
  args: ['class']
6382
6429
  }] } });
6383
6430
 
6431
+ /**
6432
+ * A patch to fix the issue of sticky header position getting affected
6433
+ * by transform, which is due to transform making the element
6434
+ * a [containing block](https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block).
6435
+ *
6436
+ * It intercepts style assignments on the content wrapper, and converts
6437
+ * transform: translateY(value) to top: value, to avoid making the content
6438
+ * wrapper a containing block for sticky positioned children.
6439
+ *
6440
+ * @see
6441
+ * https://github.com/angular/components/issues/14833
6442
+ * https://github.com/angular/components/issues/18240
6443
+ * https://github.com/angular/components/issues/21576
6444
+ * https://github.com/angular/components/issues/28584
6445
+ */
6446
+ class CdkVirtualScrollViewportFixDirective {
6447
+ constructor(cdkViewport) {
6448
+ this.cdkViewport = cdkViewport;
6449
+ }
6450
+ ngOnInit() {
6451
+ const contentWrapper = this.cdkViewport._contentWrapper.nativeElement;
6452
+ /**
6453
+ * Proxy to set `top: {value}px` instead of `transform: translateY({value}px)`
6454
+ * whenever `style.transform` is set.
6455
+ */
6456
+ const styleProxy = new Proxy(contentWrapper.style, {
6457
+ set: (target, prop, value) => {
6458
+ const top = prop === 'transform'
6459
+ ? value?.match(/translateY\((\d+)px\)/)?.[1]
6460
+ : undefined;
6461
+ if (top) {
6462
+ target['top'] = `${top}px`;
6463
+ return true;
6464
+ }
6465
+ target[prop] = value;
6466
+ return true;
6467
+ },
6468
+ });
6469
+ // Not directly setting style proxy to contentWrapper.style, to limit
6470
+ // it to the styles set by CdkVirtualScrollViewport.
6471
+ // i.e. only setting `top` instead of `transform`, when set by cdk viewport.
6472
+ this.cdkViewport._contentWrapper.nativeElement = new Proxy(contentWrapper, {
6473
+ get: (target, prop) => {
6474
+ return prop === 'style' ? styleProxy : target[prop];
6475
+ },
6476
+ });
6477
+ }
6478
+ }
6479
+ CdkVirtualScrollViewportFixDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: CdkVirtualScrollViewportFixDirective, deps: [{ token: i1$5.CdkVirtualScrollViewport }], target: i0.ɵɵFactoryTarget.Directive });
6480
+ CdkVirtualScrollViewportFixDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: CdkVirtualScrollViewportFixDirective, isStandalone: true, selector: "cdk-virtual-scroll-viewport", ngImport: i0 });
6481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: CdkVirtualScrollViewportFixDirective, decorators: [{
6482
+ type: Directive,
6483
+ args: [{
6484
+ selector: 'cdk-virtual-scroll-viewport',
6485
+ standalone: true,
6486
+ }]
6487
+ }], ctorParameters: function () { return [{ type: i1$5.CdkVirtualScrollViewport }]; } });
6488
+
6384
6489
  class SapphireTableModule {
6385
6490
  }
6386
6491
  SapphireTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -6396,6 +6501,7 @@ SapphireTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
6396
6501
  TableSortHeaderDirective], imports: [CommonModule,
6397
6502
  SapphireIconModule,
6398
6503
  TruncatedWithTooltipDirective,
6504
+ CdkVirtualScrollViewportFixDirective,
6399
6505
  UseComponentStyles], exports: [TableComponent,
6400
6506
  TableDirective,
6401
6507
  TableBodyDirective,
@@ -6405,7 +6511,8 @@ SapphireTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
6405
6511
  TableHeadCellComponent,
6406
6512
  TableCellDirective,
6407
6513
  TableSortDirective,
6408
- TableSortHeaderDirective] });
6514
+ TableSortHeaderDirective,
6515
+ CdkVirtualScrollViewportFixDirective] });
6409
6516
  SapphireTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireTableModule, imports: [CommonModule,
6410
6517
  SapphireIconModule] });
6411
6518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireTableModule, decorators: [{
@@ -6427,6 +6534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
6427
6534
  CommonModule,
6428
6535
  SapphireIconModule,
6429
6536
  TruncatedWithTooltipDirective,
6537
+ CdkVirtualScrollViewportFixDirective,
6430
6538
  UseComponentStyles,
6431
6539
  ],
6432
6540
  exports: [
@@ -6440,6 +6548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
6440
6548
  TableCellDirective,
6441
6549
  TableSortDirective,
6442
6550
  TableSortHeaderDirective,
6551
+ CdkVirtualScrollViewportFixDirective,
6443
6552
  ],
6444
6553
  }]
6445
6554
  }] });
@@ -6846,17 +6955,186 @@ const DEFAULT_BREAKPOINTS = {
6846
6955
  XL: 1400,
6847
6956
  };
6848
6957
 
6958
+ class SegmentedRadioGroupComponent extends RadioGroupBase {
6959
+ constructor(zone, changeDetector) {
6960
+ super(changeDetector, undefined);
6961
+ this.zone = zone;
6962
+ this.changeDetector = changeDetector;
6963
+ /** Size of tabs */
6964
+ this.size = 'md';
6965
+ /**
6966
+ * Alignment of tabs' buttons group.
6967
+ * @default 'left'
6968
+ */
6969
+ this.align = 'left';
6970
+ this._gliderStyles = { left: '0px', width: '0px' };
6971
+ this._animationEnabled = false;
6972
+ this._focusVisible = false;
6973
+ this.skipAnimationFrame();
6974
+ }
6975
+ skipAnimationFrame() {
6976
+ // We want to avoid animation on first render and whenever tab content changes
6977
+ this._animationEnabled = false;
6978
+ requestAnimationFrame(() => {
6979
+ this._animationEnabled = true;
6980
+ });
6981
+ }
6982
+ setGliderStyles() {
6983
+ const { offsetLeft, clientWidth } = this.getSelectedTabPosition();
6984
+ this._gliderStyles = {
6985
+ left: `${offsetLeft}px`,
6986
+ width: `${clientWidth}px`,
6987
+ };
6988
+ }
6989
+ getSelectedTabPosition() {
6990
+ const selected = this.selected?.elementRef.nativeElement;
6991
+ return {
6992
+ offsetLeft: selected?.offsetLeft || 0,
6993
+ clientWidth: selected?.clientWidth || 0,
6994
+ };
6995
+ }
6996
+ shouldUpdateGliderStyles() {
6997
+ const { offsetLeft, clientWidth } = this.getSelectedTabPosition();
6998
+ return (`${offsetLeft}px` !== this._gliderStyles.left ||
6999
+ `${clientWidth}px` !== this._gliderStyles.width);
7000
+ }
7001
+ ngAfterViewInit() {
7002
+ this.setGliderStyles();
7003
+ this.resizeObserver = new ResizeObserver(() => {
7004
+ if (this.shouldUpdateGliderStyles()) {
7005
+ // zonejs doesn't monkey-patch resize observer (yet)
7006
+ this.zone.run(() => {
7007
+ this.setGliderStyles();
7008
+ });
7009
+ }
7010
+ });
7011
+ this.resizeObserver.observe(this.segmentedControl.nativeElement);
7012
+ this.change.subscribe(() => {
7013
+ this.setGliderStyles();
7014
+ });
7015
+ }
7016
+ ngAfterViewChecked() {
7017
+ this.setGliderStyles();
7018
+ this.changeDetector.detectChanges();
7019
+ }
7020
+ ngOnDestroy() {
7021
+ this.resizeObserver?.unobserve(this.segmentedControl.nativeElement);
7022
+ this.change.unsubscribe();
7023
+ }
7024
+ _onFocusChange(focusOrigin) {
7025
+ this._focusVisible = focusOrigin === 'keyboard';
7026
+ if (!focusOrigin) {
7027
+ this.onTouched();
7028
+ }
7029
+ }
7030
+ }
7031
+ SegmentedRadioGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedRadioGroupComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
7032
+ SegmentedRadioGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedRadioGroupComponent, selector: "sp-segmented-radio-group", inputs: { ariaLabel: ["aria-label", "ariaLabel"], size: "size", align: "align" }, providers: [
7033
+ ViewEncapsulationProvider,
7034
+ {
7035
+ provide: NG_VALUE_ACCESSOR,
7036
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7037
+ multi: true,
7038
+ },
7039
+ {
7040
+ provide: FieldControl,
7041
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7042
+ },
7043
+ {
7044
+ provide: RadioGroupBase,
7045
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7046
+ },
7047
+ ], viewQueries: [{ propertyName: "segmentedControl", first: true, predicate: ["segmentedControl"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: ThemeCheckDirective }], ngImport: i0, template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n >\n <ng-content></ng-content>\n <span\n [style.left]=\"_gliderStyles.left\"\n [style.width]=\"_gliderStyles.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
7048
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedRadioGroupComponent, decorators: [{
7049
+ type: Component,
7050
+ args: [{ selector: 'sp-segmented-radio-group', changeDetection: ChangeDetectionStrategy.Default, providers: [
7051
+ ViewEncapsulationProvider,
7052
+ {
7053
+ provide: NG_VALUE_ACCESSOR,
7054
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7055
+ multi: true,
7056
+ },
7057
+ {
7058
+ provide: FieldControl,
7059
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7060
+ },
7061
+ {
7062
+ provide: RadioGroupBase,
7063
+ useExisting: forwardRef(() => SegmentedRadioGroupComponent),
7064
+ },
7065
+ ], hostDirectives: [ThemeCheckDirective], template: "<div\n #segmentedControl\n class=\"sapphire-segmented-control\"\n [class.sapphire-segmented-control--lg]=\"size === 'lg'\"\n [class.sapphire-segmented-control--sm]=\"size === 'sm'\"\n [class.focus-visible]=\"_focusVisible\"\n [ngClass]=\"\n align === 'stretch'\n ? 'sapphire-segmented-control--stretch'\n : 'sapphire-segmented-control--align-' + align\n \"\n>\n <div\n class=\"sapphire-segmented-control__button-container\"\n role=\"radiogroup\"\n [attr.aria-label]=\"ariaLabel\"\n aria-orientation=\"horizontal\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_onFocusChange($event)\"\n >\n <ng-content></ng-content>\n <span\n [style.left]=\"_gliderStyles.left\"\n [style.width]=\"_gliderStyles.width\"\n [class.sapphire-segmented-control__glider--with-transition]=\"\n _animationEnabled\n \"\n class=\"sapphire-segmented-control__glider\"\n role=\"none\"\n ></span>\n </div>\n</div>\n", styles: [".sapphire-segmented-control{display:flex;height:var(--sapphire-semantic-size-height-control-md)}.sapphire-segmented-control--stretch .sapphire-segmented-control__button-container{width:100%}.sapphire-segmented-control--align-center{justify-content:center}.sapphire-segmented-control--align-right{justify-content:flex-end}.sapphire-segmented-control--align-left{justify-content:flex-start}.sapphire-segmented-control__button-container{display:inline-flex;position:relative;height:100%;background-color:var(--sapphire-semantic-color-background-control-special-secondary-default);border-radius:var(--sapphire-semantic-size-height-control-lg);padding:var(--sapphire-global-size-static-5);box-sizing:border-box}.sapphire-segmented-control__glider{position:absolute;top:var(--sapphire-global-size-static-5);left:0;height:calc(100% - var(--sapphire-global-size-static-5) * 2);display:block;background-color:var(--sapphire-semantic-color-background-control-special-primary-default);box-shadow:var(--sapphire-global-shadow-sm);box-sizing:border-box;z-index:1;border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control__glider--with-transition{transition:width var(--sapphire-semantic-time-motion-quick) ease-in-out,left var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button{font-family:var(--sapphire-semantic-font-name-default);font-weight:var(--sapphire-semantic-font-weight-default-semibold);font-size:var(--sapphire-semantic-size-font-control-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex:1 1 auto;box-sizing:content-box;margin:0;border:0;height:100%;min-width:var(--sapphire-global-size-generic-120);padding:0 var(--sapphire-semantic-size-spacing-50);background-color:transparent;color:var(--sapphire-semantic-color-content-default-primary);cursor:pointer;outline:none;z-index:2;display:flex;align-items:center;justify-content:center;position:relative;transition:color var(--sapphire-semantic-time-motion-quick) ease-in-out}.sapphire-segmented-control__button--active{color:var(--sapphire-semantic-color-content-link-primary-default)}.sapphire-segmented-control__button--disabled{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-segmented-control.focus-visible:focus-within .sapphire-segmented-control__glider{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring)}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__glider{transition:none}.sapphire-segmented-control--manual-keyboard-activation.focus-visible .sapphire-segmented-control__button:focus{outline:var(--sapphire-semantic-size-focus-ring) solid var(--sapphire-semantic-color-focus-ring);border-radius:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control.focus-visible:focus-within.sapphire-segmented-control--manual-keyboard-activation .sapphire-segmented-control__glider{outline:none}.sapphire-segmented-control--lg{height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-segmented-control--lg .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-default)}.sapphire-segmented-control--sm{height:var(--sapphire-semantic-size-height-control-sm)}.sapphire-segmented-control--sm .sapphire-segmented-control__button{font-size:var(--sapphire-semantic-size-font-control-sm)}.sapphire-segmented-control__radio-input{margin:0;overflow:visible;position:absolute;top:0;left:0;height:100%;width:100%;opacity:.0001;z-index:1;cursor:pointer}.sapphire-segmented-control__button--disabled .sapphire-segmented-control__radio-input{cursor:not-allowed}\n"] }]
7066
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { segmentedControl: [{
7067
+ type: ViewChild,
7068
+ args: ['segmentedControl']
7069
+ }], ariaLabel: [{
7070
+ type: Input,
7071
+ args: ['aria-label']
7072
+ }], size: [{
7073
+ type: Input
7074
+ }], align: [{
7075
+ type: Input
7076
+ }] } });
7077
+
7078
+ class SegmentedRadioComponent extends RadioBase {
7079
+ }
7080
+ SegmentedRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
7081
+ SegmentedRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: SegmentedRadioComponent, selector: "sp-segmented-radio", inputs: { tabIndex: "tabIndex" }, host: { properties: { "class.sapphire-segmented-control__button--disabled": "disabled", "class.sapphire-segmented-control__button--active": "checked", "attr.id": "id", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" }, classAttribute: "sapphire-segmented-control__button" }, usesInheritance: true, hostDirectives: [{ directive: ThemeCheckDirective }, { directive: UseComponentStyles }], ngImport: i0, template: "<label [for]=\"inputId\">\n <input\n #input\n _spUseComponentStyles\n class=\"sapphire-segmented-control__radio-input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <ng-content></ng-content>\n</label>\n", dependencies: [{ kind: "directive", type: UseComponentStyles, selector: "[_spUseComponentStyles]" }], changeDetection: i0.ChangeDetectionStrategy.Default });
7082
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SegmentedRadioComponent, decorators: [{
7083
+ type: Component,
7084
+ args: [{ selector: 'sp-segmented-radio', changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [ThemeCheckDirective, UseComponentStyles], inputs: ['tabIndex'], host: {
7085
+ class: 'sapphire-segmented-control__button',
7086
+ '[class.sapphire-segmented-control__button--disabled]': 'disabled',
7087
+ '[class.sapphire-segmented-control__button--active]': 'checked',
7088
+ '[attr.id]': 'id',
7089
+ '[attr.tabindex]': 'null',
7090
+ '[attr.aria-label]': 'null',
7091
+ '[attr.aria-labelledby]': 'null',
7092
+ '[attr.aria-describedby]': 'null',
7093
+ }, template: "<label [for]=\"inputId\">\n <input\n #input\n _spUseComponentStyles\n class=\"sapphire-segmented-control__radio-input\"\n type=\"radio\"\n [id]=\"inputId\"\n [attr.aria-checked]=\"_getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (change)=\"_onInputInteraction($event)\"\n [attr.autofocus]=\"autofocus ? true : null\"\n />\n <ng-content></ng-content>\n</label>\n" }]
7094
+ }] });
7095
+
6849
7096
  class SapphireRadioModule {
6850
7097
  }
6851
7098
  SapphireRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6852
- SapphireRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, declarations: [RadioComponent, RadioGroupComponent], imports: [CommonModule, LabelComponent, A11yModule, SapphireFieldModule], exports: [RadioComponent, RadioGroupComponent, SapphireFieldModule] });
6853
- SapphireRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, imports: [CommonModule, LabelComponent, A11yModule, SapphireFieldModule, SapphireFieldModule] });
7099
+ SapphireRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, declarations: [RadioComponent,
7100
+ RadioGroupComponent,
7101
+ SegmentedRadioComponent,
7102
+ SegmentedRadioGroupComponent], imports: [CommonModule,
7103
+ LabelComponent,
7104
+ A11yModule,
7105
+ SapphireFieldModule,
7106
+ UseComponentStyles], exports: [RadioComponent,
7107
+ RadioGroupComponent,
7108
+ SegmentedRadioComponent,
7109
+ SegmentedRadioGroupComponent,
7110
+ SapphireFieldModule] });
7111
+ SapphireRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, imports: [CommonModule,
7112
+ LabelComponent,
7113
+ A11yModule,
7114
+ SapphireFieldModule, SapphireFieldModule] });
6854
7115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireRadioModule, decorators: [{
6855
7116
  type: NgModule,
6856
7117
  args: [{
6857
- declarations: [RadioComponent, RadioGroupComponent],
6858
- imports: [CommonModule, LabelComponent, A11yModule, SapphireFieldModule],
6859
- exports: [RadioComponent, RadioGroupComponent, SapphireFieldModule],
7118
+ declarations: [
7119
+ RadioComponent,
7120
+ RadioGroupComponent,
7121
+ SegmentedRadioComponent,
7122
+ SegmentedRadioGroupComponent,
7123
+ ],
7124
+ imports: [
7125
+ CommonModule,
7126
+ LabelComponent,
7127
+ A11yModule,
7128
+ SapphireFieldModule,
7129
+ UseComponentStyles,
7130
+ ],
7131
+ exports: [
7132
+ RadioComponent,
7133
+ RadioGroupComponent,
7134
+ SegmentedRadioComponent,
7135
+ SegmentedRadioGroupComponent,
7136
+ SapphireFieldModule,
7137
+ ],
6860
7138
  }]
6861
7139
  }] });
6862
7140
 
@@ -6919,12 +7197,12 @@ class ModalService {
6919
7197
  return this.open(componentOrTemplateRef, options, this.overlay.position().global().right());
6920
7198
  }
6921
7199
  }
6922
- ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalService, deps: [{ token: i1$5.Dialog }, { token: i1$3.Overlay }], target: i0.ɵɵFactoryTarget.Injectable });
7200
+ ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalService, deps: [{ token: i1$6.Dialog }, { token: i1$3.Overlay }], target: i0.ɵɵFactoryTarget.Injectable });
6923
7201
  ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalService, providedIn: 'root' });
6924
7202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalService, decorators: [{
6925
7203
  type: Injectable,
6926
7204
  args: [{ providedIn: 'root' }]
6927
- }], ctorParameters: function () { return [{ type: i1$5.Dialog }, { type: i1$3.Overlay }]; } });
7205
+ }], ctorParameters: function () { return [{ type: i1$6.Dialog }, { type: i1$3.Overlay }]; } });
6928
7206
 
6929
7207
  /**
6930
7208
  * Monitors host element's **scrolled** and **scrollable** state.
@@ -7040,7 +7318,7 @@ class ModalCloseButtonDirective {
7040
7318
  this.dialogRef?.close();
7041
7319
  }
7042
7320
  }
7043
- ModalCloseButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalCloseButtonDirective, deps: [{ token: TranslateService }, { token: i1$5.DialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
7321
+ ModalCloseButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalCloseButtonDirective, deps: [{ token: TranslateService }, { token: i1$6.DialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
7044
7322
  ModalCloseButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: ModalCloseButtonDirective, selector: "button[spModalCloseButton]", host: { listeners: { "click": "close()" }, properties: { "attr.aria-label": "dismissLabel" } }, ngImport: i0 });
7045
7323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalCloseButtonDirective, decorators: [{
7046
7324
  type: Directive,
@@ -7050,7 +7328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
7050
7328
  '[attr.aria-label]': 'dismissLabel',
7051
7329
  },
7052
7330
  }]
7053
- }], ctorParameters: function () { return [{ type: TranslateService }, { type: i1$5.DialogRef, decorators: [{
7331
+ }], ctorParameters: function () { return [{ type: TranslateService }, { type: i1$6.DialogRef, decorators: [{
7054
7332
  type: Optional
7055
7333
  }] }]; }, propDecorators: { close: [{
7056
7334
  type: HostListener,
@@ -7171,7 +7449,7 @@ class ModalBaseComponent {
7171
7449
  this.dialogRef.immediateClose();
7172
7450
  }
7173
7451
  }
7174
- ModalBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalBaseComponent, deps: [{ token: i1$5.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7452
+ ModalBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalBaseComponent, deps: [{ token: i1$6.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7175
7453
  ModalBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: ModalBaseComponent, selector: "ng-component", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaDescribedBy: ["aria-describedby", "ariaDescribedBy"], role: "role" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null", "attr.role": "null" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
7176
7454
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: ModalBaseComponent, decorators: [{
7177
7455
  type: Component,
@@ -7186,7 +7464,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
7186
7464
  '[attr.role]': 'null',
7187
7465
  },
7188
7466
  }]
7189
- }], ctorParameters: function () { return [{ type: i1$5.DialogRef }]; }, propDecorators: { ariaLabel: [{
7467
+ }], ctorParameters: function () { return [{ type: i1$6.DialogRef }]; }, propDecorators: { ariaLabel: [{
7190
7468
  type: Input,
7191
7469
  args: ['aria-label']
7192
7470
  }], ariaLabelledBy: [{
@@ -7217,7 +7495,7 @@ class DialogComponent extends ModalBaseComponent {
7217
7495
  this.size = 'sm';
7218
7496
  }
7219
7497
  }
7220
- DialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: DialogComponent, deps: [{ token: i1$5.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7498
+ DialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: DialogComponent, deps: [{ token: i1$6.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7221
7499
  DialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: DialogComponent, selector: "sp-dialog", inputs: { size: "size" }, host: { properties: { "class.sapphire-dialog--xs": "size === 'xs'", "class.sapphire-dialog--sm": "size === 'sm'", "class.sapphire-dialog--md": "size === 'md'", "class.sapphire-dialog--lg": "size === 'lg'", "class.sapphire-dialog--exiting": "dialogRef.closing" }, classAttribute: "sapphire-dialog" }, usesInheritance: true, hostDirectives: [{ directive: UseComponentStylesOnHost }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.sapphire-dialog{border-radius:var(--sapphire-semantic-size-radius-lg);background-color:var(--sapphire-semantic-color-background-surface);font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-content-default-primary);box-sizing:border-box;overflow:hidden;max-height:90vh;max-width:90vw;display:flex;flex-direction:column;outline:none;animation-name:fade-in;animation-duration:var(--sapphire-semantic-time-fade-default);animation-timing-function:ease-in-out;animation-fill-mode:forwards}.sapphire-dialog--exiting{animation-name:fade-out}.sapphire-dialog--xs{width:var(--sapphire-global-size-generic-800)}.sapphire-dialog--sm{width:var(--sapphire-global-size-generic-1400)}.sapphire-dialog--md{width:var(--sapphire-global-size-generic-1920)}.sapphire-dialog--lg{width:var(--sapphire-global-size-generic-2560)}\n"] });
7222
7500
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: DialogComponent, decorators: [{
7223
7501
  type: Component,
@@ -7229,7 +7507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
7229
7507
  '[class.sapphire-dialog--lg]': "size === 'lg'",
7230
7508
  '[class.sapphire-dialog--exiting]': 'dialogRef.closing',
7231
7509
  }, hostDirectives: [UseComponentStylesOnHost], styles: ["@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.sapphire-dialog{border-radius:var(--sapphire-semantic-size-radius-lg);background-color:var(--sapphire-semantic-color-background-surface);font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-content-default-primary);box-sizing:border-box;overflow:hidden;max-height:90vh;max-width:90vw;display:flex;flex-direction:column;outline:none;animation-name:fade-in;animation-duration:var(--sapphire-semantic-time-fade-default);animation-timing-function:ease-in-out;animation-fill-mode:forwards}.sapphire-dialog--exiting{animation-name:fade-out}.sapphire-dialog--xs{width:var(--sapphire-global-size-generic-800)}.sapphire-dialog--sm{width:var(--sapphire-global-size-generic-1400)}.sapphire-dialog--md{width:var(--sapphire-global-size-generic-1920)}.sapphire-dialog--lg{width:var(--sapphire-global-size-generic-2560)}\n"] }]
7232
- }], ctorParameters: function () { return [{ type: i1$5.DialogRef }]; }, propDecorators: { size: [{
7510
+ }], ctorParameters: function () { return [{ type: i1$6.DialogRef }]; }, propDecorators: { size: [{
7233
7511
  type: Input
7234
7512
  }] } });
7235
7513
 
@@ -7496,7 +7774,7 @@ class PanelComponent extends ModalBaseComponent {
7496
7774
  this.size = 'lg';
7497
7775
  }
7498
7776
  }
7499
- PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: PanelComponent, deps: [{ token: i1$5.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7777
+ PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: PanelComponent, deps: [{ token: i1$6.DialogRef }], target: i0.ɵɵFactoryTarget.Component });
7500
7778
  PanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: PanelComponent, selector: "sp-panel", inputs: { size: "size" }, host: { properties: { "class.sapphire-panel--sm": "size === \"sm\"", "class.sapphire-panel--visible": "!dialogRef.closing" }, classAttribute: "sapphire-panel" }, usesInheritance: true, hostDirectives: [{ directive: UseComponentStylesOnHost }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".sapphire-panel{box-sizing:border-box;overflow:hidden;max-width:100%;display:block;height:100%;outline:0;transition:transform var(--sapphire-semantic-time-motion-default) ease-in-out;transform:translate(100%);width:var(--sapphire-semantic-size-width-panel-lg)}.sapphire-panel--visible{transform:translate(0)}.sapphire-panel--sm{width:var(--sapphire-semantic-size-width-panel-sm)}.sapphire-modal-layout{display:flex;flex-direction:column;height:100%;min-height:0;background-color:var(--sapphire-semantic-color-background-surface);font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-content-default-primary)}.sapphire-modal-layout__header-container{flex-shrink:0}.sapphire-modal-layout__header{display:flex;justify-content:space-between;padding:var(--sapphire-semantic-size-spacing-50) var(--sapphire-semantic-size-spacing-container-horizontal-md);gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-modal-layout__body{overflow-y:auto;overflow-x:hidden;flex-grow:1;padding:0 var(--sapphire-semantic-size-spacing-container-horizontal-md)}.sapphire-modal-layout__body.sapphire-modal-layout__body--no-padding{padding:0}.sapphire-modal-layout__footer-container{flex-shrink:0}.sapphire-modal-layout__footer{padding:var(--sapphire-semantic-size-spacing-70) var(--sapphire-semantic-size-spacing-container-horizontal-md) var(--sapphire-semantic-size-spacing-70) var(--sapphire-semantic-size-spacing-container-horizontal-md)}.sapphire-modal-layout__heading-container{flex:1;padding:var(--sapphire-semantic-size-spacing-20) 0;display:flex;flex-direction:column;justify-content:center;word-break:break-word}.sapphire-modal-layout__subheading{color:var(--sapphire-semantic-color-content-default-secondary);margin-top:var(--sapphire-semantic-size-spacing-20)}.sapphire-modal-layout__header-container+.sapphire-modal-layout__body{border-top:var(--sapphire-semantic-size-border-sm) solid transparent}.sapphire-modal-layout__header-container+.sapphire-modal-layout__body.sapphire-modal-layout__body--scrolled{border-top:var(--sapphire-semantic-size-border-sm) solid var(--sapphire-semantic-color-border-separator-default)}.sapphire-modal-layout:not(:has(.sapphire-modal-layout__footer)) .sapphire-modal-layout__body:not(.sapphire-modal-layout__body--no-padding){padding-bottom:var(--sapphire-semantic-size-spacing-50)}.sapphire-modal-layout__body+.sapphire-modal-layout__footer-container{border-top:var(--sapphire-semantic-size-border-sm) solid transparent}.sapphire-modal-layout__body.sapphire-modal-layout__body--scrollable+.sapphire-modal-layout__footer-container{border-top:var(--sapphire-semantic-size-border-sm) solid var(--sapphire-semantic-color-border-separator-default)}\n"] });
7501
7779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: PanelComponent, decorators: [{
7502
7780
  type: Component,
@@ -7505,7 +7783,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
7505
7783
  '[class.sapphire-panel--sm]': 'size === "sm"',
7506
7784
  '[class.sapphire-panel--visible]': '!dialogRef.closing',
7507
7785
  }, hostDirectives: [UseComponentStylesOnHost], styles: [".sapphire-panel{box-sizing:border-box;overflow:hidden;max-width:100%;display:block;height:100%;outline:0;transition:transform var(--sapphire-semantic-time-motion-default) ease-in-out;transform:translate(100%);width:var(--sapphire-semantic-size-width-panel-lg)}.sapphire-panel--visible{transform:translate(0)}.sapphire-panel--sm{width:var(--sapphire-semantic-size-width-panel-sm)}.sapphire-modal-layout{display:flex;flex-direction:column;height:100%;min-height:0;background-color:var(--sapphire-semantic-color-background-surface);font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-content-default-primary)}.sapphire-modal-layout__header-container{flex-shrink:0}.sapphire-modal-layout__header{display:flex;justify-content:space-between;padding:var(--sapphire-semantic-size-spacing-50) var(--sapphire-semantic-size-spacing-container-horizontal-md);gap:var(--sapphire-semantic-size-spacing-30)}.sapphire-modal-layout__body{overflow-y:auto;overflow-x:hidden;flex-grow:1;padding:0 var(--sapphire-semantic-size-spacing-container-horizontal-md)}.sapphire-modal-layout__body.sapphire-modal-layout__body--no-padding{padding:0}.sapphire-modal-layout__footer-container{flex-shrink:0}.sapphire-modal-layout__footer{padding:var(--sapphire-semantic-size-spacing-70) var(--sapphire-semantic-size-spacing-container-horizontal-md) var(--sapphire-semantic-size-spacing-70) var(--sapphire-semantic-size-spacing-container-horizontal-md)}.sapphire-modal-layout__heading-container{flex:1;padding:var(--sapphire-semantic-size-spacing-20) 0;display:flex;flex-direction:column;justify-content:center;word-break:break-word}.sapphire-modal-layout__subheading{color:var(--sapphire-semantic-color-content-default-secondary);margin-top:var(--sapphire-semantic-size-spacing-20)}.sapphire-modal-layout__header-container+.sapphire-modal-layout__body{border-top:var(--sapphire-semantic-size-border-sm) solid transparent}.sapphire-modal-layout__header-container+.sapphire-modal-layout__body.sapphire-modal-layout__body--scrolled{border-top:var(--sapphire-semantic-size-border-sm) solid var(--sapphire-semantic-color-border-separator-default)}.sapphire-modal-layout:not(:has(.sapphire-modal-layout__footer)) .sapphire-modal-layout__body:not(.sapphire-modal-layout__body--no-padding){padding-bottom:var(--sapphire-semantic-size-spacing-50)}.sapphire-modal-layout__body+.sapphire-modal-layout__footer-container{border-top:var(--sapphire-semantic-size-border-sm) solid transparent}.sapphire-modal-layout__body.sapphire-modal-layout__body--scrollable+.sapphire-modal-layout__footer-container{border-top:var(--sapphire-semantic-size-border-sm) solid var(--sapphire-semantic-color-border-separator-default)}\n"] }]
7508
- }], ctorParameters: function () { return [{ type: i1$5.DialogRef }]; }, propDecorators: { size: [{
7786
+ }], ctorParameters: function () { return [{ type: i1$6.DialogRef }]; }, propDecorators: { size: [{
7509
7787
  type: Input
7510
7788
  }] } });
7511
7789
 
@@ -8510,5 +8788,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
8510
8788
  * Generated bundle index. Do not edit.
8511
8789
  */
8512
8790
 
8513
- export { BadgeComponent, BasicSelectComponent, BasicSingleSelectDirective, ButtonComponent, ButtonGroupComponent, ButtonIconDirective, CheckboxChange, CheckboxComponent, CheckboxGroupComponent, ConfirmationDialogComponent, DEFAULT_BREAKPOINTS, DangerDialogComponent, DialogComponent, DialogTriggerDirective, FieldComponent, FieldControl, FieldErrorDirective, FieldLabelDirective, FieldNoteDirective, FieldNoteSuffixDirective, FocusedDirective, HeadingComponent, HelpButtonComponent, HelpButtonContentDirective, HelpButtonFooterDirective, HelpButtonHeaderDirective, ICON_SIZE_PROVIDER, IconButtonComponent, IconComponent, LabelComponent, LinkComponent, ListboxChild, ListboxComponent, ListboxInputDirective, MenuComponent, MenuIconComponent, MenuItemComponent, MenuPrimaryTextComponent, MenuSecondaryTextComponent, MenuSectionComponent, MenuTriggerDirective, ModalBackButtonDirective, ModalBodyComponent, ModalCloseButtonDirective, ModalFooterComponent, ModalFooterDirective, ModalHeaderComponent, ModalHeaderDirective, ModalLayoutComponent, ModalService, MultiSelectDirective, NotificationBadgeComponent, OptionComponent, OptionIconDirective, OptionPrimaryTextDirective, OptionSecondaryTextDirective, POPOVER_TRIGGER, PaginationComponent, PanelComponent, PanelTriggerDirective, ParagraphComponent, PopoverCloseButtonDirective, PopoverComponent, PopoverTitleDirective, PopoverTriggerDirective, PressedDirective, RadioComponent, RadioGroupComponent, SapphireBadgeModule, SapphireButtonModule, SapphireCheckboxModule, SapphireCheckboxRequiredValidator, SapphireCoreModule, SapphireFieldModule, SapphireHelpButtonModule, SapphireIconModule, SapphireLinkModule, SapphireListboxModule, SapphireMenuModule, SapphireModalModule, SapphireNotificationBadgeModule, SapphireOverlayContainer, SapphirePaginationChange, SapphirePaginationModule, SapphirePopoverModule, SapphireRadioChange, SapphireRadioModule, SapphireSegmentedTabsModule, SapphireSelectModule, SapphireSkeletonModule, SapphireSurfaceModule, SapphireSwitchChange, SapphireSwitchModule, SapphireSwitchRequiredValidator, SapphireTableModule, SapphireTextFieldModule, SapphireThemeModule, SapphireToggleButtonRequiredValidator, SapphireTooltipModule, SapphireTypographyModule, ScrollMonitorDirective, SearchableSelectDirective, SectionDirective, SegmentedTabComponent, SegmentedTabContentDirective, SegmentedTabLabelDirective, SegmentedTabsComponent, SelectComponent, SelectionTextDirective, SingleSelectDirective, SkeletonBlockDirective, SkeletonCircleDirective, SkeletonComponent, SkeletonTextDirective, SurfaceComponent, SwitchComponent, TableBodyDirective, TableCellDirective, TableComponent, TableDirective, TableFooterDirective, TableHeadCellComponent, TableHeadDirective, TableRowDirective, TableSortDirective, TableSortHeaderDirective, TextFieldComponent, TextFieldInputDirective, TextFieldPostfixDirective, TextFieldPrefixDirective, TextFieldTextareaAutosizeDirective, ThemeBaseDirective, ThemeCheckDirective, ThemeDefault, ThemeDefaultDark, ThemeRootDirective, ToggleButtonComponent, TooltipComponent, TooltipDirective, TranslatePipe, TranslateService, TruncatedWithTooltipDirective, UseComponentStyles, UseComponentStylesOnHost, ViewEncapsulationProvider };
8791
+ export { BadgeComponent, BasicSelectComponent, BasicSingleSelectDirective, ButtonComponent, ButtonGroupComponent, ButtonIconDirective, CdkVirtualScrollViewportFixDirective, CheckboxChange, CheckboxComponent, CheckboxGroupComponent, ConfirmationDialogComponent, DEFAULT_BREAKPOINTS, DangerDialogComponent, DialogComponent, DialogTriggerDirective, FieldComponent, FieldControl, FieldErrorDirective, FieldLabelDirective, FieldNoteDirective, FieldNoteSuffixDirective, FocusedDirective, HeadingComponent, HelpButtonComponent, HelpButtonContentDirective, HelpButtonFooterDirective, HelpButtonHeaderDirective, ICON_SIZE_PROVIDER, IconButtonComponent, IconComponent, LabelComponent, LinkComponent, ListboxChild, ListboxComponent, ListboxInputDirective, MenuComponent, MenuIconComponent, MenuItemComponent, MenuPrimaryTextComponent, MenuSecondaryTextComponent, MenuSectionComponent, MenuTriggerDirective, ModalBackButtonDirective, ModalBodyComponent, ModalCloseButtonDirective, ModalFooterComponent, ModalFooterDirective, ModalHeaderComponent, ModalHeaderDirective, ModalLayoutComponent, ModalService, MultiSelectDirective, NotificationBadgeComponent, OptionComponent, OptionIconDirective, OptionPrimaryTextDirective, OptionSecondaryTextDirective, POPOVER_TRIGGER, PaginationComponent, PanelComponent, PanelTriggerDirective, ParagraphComponent, PopoverCloseButtonDirective, PopoverComponent, PopoverTitleDirective, PopoverTriggerDirective, PressedDirective, RadioComponent, RadioGroupComponent, SapphireBadgeModule, SapphireButtonModule, SapphireCheckboxModule, SapphireCheckboxRequiredValidator, SapphireCoreModule, SapphireFieldModule, SapphireHelpButtonModule, SapphireIconModule, SapphireLinkModule, SapphireListboxModule, SapphireMenuModule, SapphireModalModule, SapphireNotificationBadgeModule, SapphireOverlayContainer, SapphirePaginationChange, SapphirePaginationModule, SapphirePopoverModule, SapphireRadioModule, SapphireSegmentedTabsModule, SapphireSelectModule, SapphireSkeletonModule, SapphireSurfaceModule, SapphireSwitchChange, SapphireSwitchModule, SapphireSwitchRequiredValidator, SapphireTableModule, SapphireTextFieldModule, SapphireThemeModule, SapphireToggleButtonRequiredValidator, SapphireTooltipModule, SapphireTypographyModule, ScrollMonitorDirective, SearchableSelectDirective, SectionDirective, SegmentedRadioComponent, SegmentedRadioGroupComponent, SegmentedTabComponent, SegmentedTabContentDirective, SegmentedTabLabelDirective, SegmentedTabsComponent, SelectComponent, SelectionTextDirective, SingleSelectDirective, SkeletonBlockDirective, SkeletonCircleDirective, SkeletonComponent, SkeletonTextDirective, SurfaceComponent, SwitchComponent, TableBodyDirective, TableCellDirective, TableComponent, TableDirective, TableFooterDirective, TableHeadCellComponent, TableHeadDirective, TableRowDirective, TableSortDirective, TableSortHeaderDirective, TextFieldComponent, TextFieldInputDirective, TextFieldPostfixDirective, TextFieldPrefixDirective, TextFieldTextareaAutosizeDirective, ThemeBaseDirective, ThemeCheckDirective, ThemeDefault, ThemeDefaultDark, ThemeRootDirective, ToggleButtonComponent, TooltipComponent, TooltipDirective, TranslatePipe, TranslateService, TruncatedWithTooltipDirective, UseComponentStyles, UseComponentStylesOnHost, ViewEncapsulationProvider };
8514
8792
  //# sourceMappingURL=danske-sapphire-angular.mjs.map