@skyux/indicators 15.0.0-alpha.8 → 15.0.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule, NgClass } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { NgModule, EventEmitter, inject, ChangeDetectorRef, Output, Input, ChangeDetectionStrategy, Component, Injectable, input, ViewEncapsulation, ElementRef, HostBinding, Directive, ViewChild, Injector, signal, afterNextRender, ViewChildren, RendererFactory2, EnvironmentInjector } from '@angular/core';
4
+ import { NgModule, EventEmitter, inject, ChangeDetectorRef, Output, Input, ChangeDetectionStrategy, Component, Injectable, input, ViewEncapsulation, ElementRef, HostBinding, Directive, InjectionToken, computed, ViewChild, signal, contentChildren, Injector, afterNextRender, ViewChildren, RendererFactory2, EnvironmentInjector } from '@angular/core';
5
5
  import * as i3 from '@skyux/icon';
6
6
  import { SkyIconModule } from '@skyux/icon';
7
7
  import * as i1$1 from '@skyux/theme';
@@ -1045,8 +1045,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
1045
1045
  }]
1046
1046
  }] });
1047
1047
 
1048
+ /** @internal */
1049
+ const SKY_TOKENS_ROLE_CONTEXT = new InjectionToken('SkyTokensRoleContext');
1050
+
1048
1051
  class SkyTokenComponent {
1049
1052
  constructor() {
1053
+ /**
1054
+ * Used by the tokens component to set the appropriate role for each token
1055
+ * generated from the `tokens` input.
1056
+ * @internal
1057
+ */
1058
+ this.role = input(/* @ts-ignore */
1059
+ ...(ngDevMode ? [undefined, { debugName: "role" }] : /* istanbul ignore next */ []));
1060
+ /**
1061
+ * The role to apply to the token's host element. Tokens generated from the
1062
+ * `tokens` input receive their role directly through the `role` input above.
1063
+ * Manually projected tokens never receive that binding (Angular does not
1064
+ * apply template bindings to projected content), so they fall back to
1065
+ * asking the ancestor `sky-tokens` component whether its grid role is
1066
+ * active. Reading `#roleContext`'s signal-backed value here (rather than
1067
+ * having `sky-tokens` push the value in imperatively) lets this OnPush
1068
+ * component's view update automatically when that ancestor state changes.
1069
+ * @internal
1070
+ */
1071
+ this.effectiveRole = computed(() => this.role() ?? (this.#roleContext?.gridRoleActive() ? 'row' : undefined), /* @ts-ignore */
1072
+ ...(ngDevMode ? [{ debugName: "effectiveRole" }] : /* istanbul ignore next */ []));
1050
1073
  /**
1051
1074
  * Fires when users click the close button.
1052
1075
  */
@@ -1062,6 +1085,7 @@ class SkyTokenComponent {
1062
1085
  this.#elementRef = inject(ElementRef);
1063
1086
  this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);
1064
1087
  this.#resourcesSvc = inject(SkyLibResourcesService);
1088
+ this.#roleContext = inject(SKY_TOKENS_ROLE_CONTEXT, { optional: true });
1065
1089
  this.#_disabled = false;
1066
1090
  this.#_dismissible = true;
1067
1091
  }
@@ -1098,6 +1122,7 @@ class SkyTokenComponent {
1098
1122
  #elementRef;
1099
1123
  #liveAnnouncerSvc;
1100
1124
  #resourcesSvc;
1125
+ #roleContext;
1101
1126
  #_disabled;
1102
1127
  #_dismissible;
1103
1128
  onFocusIn() {
@@ -1132,11 +1157,11 @@ class SkyTokenComponent {
1132
1157
  });
1133
1158
  }
1134
1159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: SkyTokenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: SkyTokenComponent, isStandalone: false, selector: "sky-token", inputs: { disabled: "disabled", ariaLabel: "ariaLabel", dismissible: "dismissible", focusable: "focusable", role: "role" }, outputs: { dismiss: "dismiss", tokenFocus: "tokenFocus" }, viewQueries: [{ propertyName: "actionButtonRef", first: true, predicate: ["actionButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"role\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n", styles: [":host{interpolate-size:allow-keywords;flex:0 0 auto;display:inline-flex;padding:var(--sky-token-gutter, 0)}.sky-token:not(.sky-theme-modern *){--sky-override-token-active-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-active-border: 1px solid #00b4f1;--sky-override-token-active-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-align-items: inherit;--sky-override-token-background-color: #c1e8fb;--sky-override-token-border: 1px solid #00b4f1;--sky-override-token-box-shadow: none;--sky-override-token-button-padding: 2px 8px;--sky-override-token-close-align-items: inherit;--sky-override-token-close-active-background-color: transparent;--sky-override-token-close-active-box-shadow: none;--sky-override-token-close-border-radius: 3px;--sky-override-token-close-button-opacity: .9;--sky-override-token-close-display: inline-block;--sky-override-token-close-focus-background-color: transparent;--sky-override-token-close-focus-box-shadow: none;--sky-override-token-close-focus-outline: auto;--sky-override-token-close-hover-background-color: transparent;--sky-override-token-close-hover-box-shadow: none;--sky-override-token-close-icon-width: initial;--sky-override-token-close-line-height: calc(20 / 14);--sky-override-token-close-margin-left: -2px;--sky-override-token-close-padding: 2px 8px;--sky-override-token-display: inline-block;--sky-override-token-disabled-background-color: #c1e8fb;--sky-override-token-dismissible-padding-right: 0;--sky-override-token-font-size: 15px;--sky-override-token-focused-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-focused-border: 1px solid #00b4f1;--sky-override-token-focused-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-hover-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-hover-border: 1px solid rgb(0, 141.9087136929, 190);--sky-override-token-hover-box-shadow: none;--sky-override-token-padding: 0}.sky-token{background-color:var(--sky-override-token-background-color, var(--sky-color-background-selected-soft));font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m));border:var(--sky-override-token-border, none);box-shadow:var(--sky-override-token-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-selected_soft));padding:var(--sky-override-token-padding, var(--sky-comp-token-space-inset-top) var(--sky-comp-token-space-inset-right) var(--sky-comp-token-space-inset-bottom) var(--sky-comp-token-space-inset-left));align-items:var(--sky-override-token-align-items, center);display:var(--sky-override-token-display, inline-flex)}.sky-token.sky-token-focused:not(:active),.sky-token:focus-visible:not(:active){background-color:var(--sky-override-token-focused-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-focused-border, none);box-shadow:var(--sky-override-token-focused-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus));cursor:pointer}.sky-token:hover{background-color:var(--sky-override-token-hover-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-hover-border, none);box-shadow:var(--sky-override-token-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover));cursor:pointer}.sky-token.sky-token-active{background-color:var(--sky-override-token-active-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-active-border, none);box-shadow:var(--sky-override-token-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active));cursor:pointer}.sky-token .sky-token-btn{background-color:transparent;border:0;box-shadow:none}.sky-token-btn{padding:var(--sky-override-token-button-padding, 0)}.sky-btn-disabled{cursor:default;-webkit-user-select:none;user-select:none}.sky-btn-disabled.sky-token{background-color:var(--sky-override-token-disabled-background-color, var(--sky-color-background-action-tertiary-disabled));border:var(--sky-override-token-border, none)}.sky-btn-disabled .sky-btn-disabled{opacity:1}.sky-btn-disabled .sky-token-btn-action{color:var(--sky-color-text-deemphasized)}.sky-btn-disabled .sky-token-btn-close{color:var(--sky-color-icon-deemphasized)}.sky-token-btn-close{margin-left:var(--sky-override-token-close-margin-left, var(--sky-space-gap-text_action-xs));opacity:var(--sky-override-token-close-button-opacity, 1);padding:var(--sky-override-token-close-padding, var(--sky-comp-token-close-space-inset-top) var(--sky-comp-token-close-space-inset-right) var(--sky-comp-token-close-space-inset-bottom) var(--sky-comp-token-close-space-inset-left));border-radius:var(--sky-override-token-close-border-radius, calc(var(--sky-border-radius-s) - var(--sky-border-width-selected-s)));align-items:var(--sky-override-token-close-align-items, center);display:var(--sky-override-token-close-display, flex);line-height:var(--sky-override-token-close-line-height, 1)}.sky-token-btn-close:hover,.sky-token-btn-close:focus-visible{opacity:1}.sky-token-btn-close:hover{background-color:var(--sky-override-token-close-hover-background-color, var(--sky-color-background-action-tertiary-hover));border:none;box-shadow:var(--sky-override-token-close-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-token-btn-close:focus-visible{outline:var(--sky-override-token-close-focus-outline, none)}.sky-token-btn-close:focus-visible:not(:active){background-color:var(--sky-override-token-close-focus-background-color, var(--sky-color-background-action-tertiary-focus));border:none;box-shadow:var(--sky-override-token-close-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-token-btn-close.sky-token-btn-close-active{background-color:var(--sky-override-token-close-active-background-color, var(--sky-color-background-action-tertiary-active));border:none;box-shadow:var(--sky-override-token-close-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-token-dismissible{padding-right:var(--sky-override-token-dismissible-padding-right, var(--sky-border-width-selected-s))}.sky-token-dismissible .sky-token-btn-action{padding-right:0}.sky-token-btn-action{font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m))}.sky-token-btn-action:focus-visible{outline:none}.sky-token-btn-close-icon{width:var(--sky-override-token-close-icon-width, 100%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "directive", type: i4$1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "directive", type: i4$1.SkyScreenReaderLabelDirective, selector: "[skyScreenReaderLabel]", inputs: ["createLabel"] }, { kind: "pipe", type: i4.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: SkyTokenComponent, isStandalone: false, selector: "sky-token", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: false, isRequired: false, transformFunction: null }, focusable: { classPropertyName: "focusable", publicName: "focusable", isSignal: false, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismiss: "dismiss", tokenFocus: "tokenFocus" }, viewQueries: [{ propertyName: "actionButtonRef", first: true, predicate: ["actionButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"effectiveRole()\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n", styles: [":host{interpolate-size:allow-keywords;flex:0 0 auto;display:inline-flex;padding:var(--sky-token-gutter, 0)}.sky-token:not(.sky-theme-modern *){--sky-override-token-active-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-active-border: 1px solid #00b4f1;--sky-override-token-active-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-align-items: inherit;--sky-override-token-background-color: #c1e8fb;--sky-override-token-border: 1px solid #00b4f1;--sky-override-token-box-shadow: none;--sky-override-token-button-padding: 2px 8px;--sky-override-token-close-align-items: inherit;--sky-override-token-close-active-background-color: transparent;--sky-override-token-close-active-box-shadow: none;--sky-override-token-close-border-radius: 3px;--sky-override-token-close-button-opacity: .9;--sky-override-token-close-display: inline-block;--sky-override-token-close-focus-background-color: transparent;--sky-override-token-close-focus-box-shadow: none;--sky-override-token-close-focus-outline: auto;--sky-override-token-close-hover-background-color: transparent;--sky-override-token-close-hover-box-shadow: none;--sky-override-token-close-icon-width: initial;--sky-override-token-close-line-height: calc(20 / 14);--sky-override-token-close-margin-left: -2px;--sky-override-token-close-padding: 2px 8px;--sky-override-token-display: inline-block;--sky-override-token-disabled-background-color: #c1e8fb;--sky-override-token-dismissible-padding-right: 0;--sky-override-token-font-size: 15px;--sky-override-token-focused-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-focused-border: 1px solid #00b4f1;--sky-override-token-focused-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-hover-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-hover-border: 1px solid rgb(0, 141.9087136929, 190);--sky-override-token-hover-box-shadow: none;--sky-override-token-padding: 0}.sky-token{background-color:var(--sky-override-token-background-color, var(--sky-color-background-selected-soft));font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m));border:var(--sky-override-token-border, none);box-shadow:var(--sky-override-token-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-selected_soft));padding:var(--sky-override-token-padding, var(--sky-comp-token-space-inset-top) var(--sky-comp-token-space-inset-right) var(--sky-comp-token-space-inset-bottom) var(--sky-comp-token-space-inset-left));align-items:var(--sky-override-token-align-items, center);display:var(--sky-override-token-display, inline-flex)}.sky-token.sky-token-focused:not(:active),.sky-token:focus-visible:not(:active){background-color:var(--sky-override-token-focused-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-focused-border, none);box-shadow:var(--sky-override-token-focused-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus));cursor:pointer}.sky-token:hover{background-color:var(--sky-override-token-hover-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-hover-border, none);box-shadow:var(--sky-override-token-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover));cursor:pointer}.sky-token.sky-token-active{background-color:var(--sky-override-token-active-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-active-border, none);box-shadow:var(--sky-override-token-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active));cursor:pointer}.sky-token .sky-token-btn{background-color:transparent;border:0;box-shadow:none}.sky-token-btn{padding:var(--sky-override-token-button-padding, 0)}.sky-btn-disabled{cursor:default;-webkit-user-select:none;user-select:none}.sky-btn-disabled.sky-token{background-color:var(--sky-override-token-disabled-background-color, var(--sky-color-background-action-tertiary-disabled));border:var(--sky-override-token-border, none)}.sky-btn-disabled .sky-btn-disabled{opacity:1}.sky-btn-disabled .sky-token-btn-action{color:var(--sky-color-text-deemphasized)}.sky-btn-disabled .sky-token-btn-close{color:var(--sky-color-icon-deemphasized)}.sky-token-btn-close{margin-left:var(--sky-override-token-close-margin-left, var(--sky-space-gap-text_action-xs));opacity:var(--sky-override-token-close-button-opacity, 1);padding:var(--sky-override-token-close-padding, var(--sky-comp-token-close-space-inset-top) var(--sky-comp-token-close-space-inset-right) var(--sky-comp-token-close-space-inset-bottom) var(--sky-comp-token-close-space-inset-left));border-radius:var(--sky-override-token-close-border-radius, calc(var(--sky-border-radius-s) - var(--sky-border-width-selected-s)));align-items:var(--sky-override-token-close-align-items, center);display:var(--sky-override-token-close-display, flex);line-height:var(--sky-override-token-close-line-height, 1)}.sky-token-btn-close:hover,.sky-token-btn-close:focus-visible{opacity:1}.sky-token-btn-close:hover{background-color:var(--sky-override-token-close-hover-background-color, var(--sky-color-background-action-tertiary-hover));border:none;box-shadow:var(--sky-override-token-close-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-token-btn-close:focus-visible{outline:var(--sky-override-token-close-focus-outline, none)}.sky-token-btn-close:focus-visible:not(:active){background-color:var(--sky-override-token-close-focus-background-color, var(--sky-color-background-action-tertiary-focus));border:none;box-shadow:var(--sky-override-token-close-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-token-btn-close.sky-token-btn-close-active{background-color:var(--sky-override-token-close-active-background-color, var(--sky-color-background-action-tertiary-active));border:none;box-shadow:var(--sky-override-token-close-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-token-dismissible{padding-right:var(--sky-override-token-dismissible-padding-right, var(--sky-border-width-selected-s))}.sky-token-dismissible .sky-token-btn-action{padding-right:0}.sky-token-btn-action{font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m))}.sky-token-btn-action:focus-visible{outline:none}.sky-token-btn-close-icon{width:var(--sky-override-token-close-icon-width, 100%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "directive", type: i4$1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "directive", type: i4$1.SkyScreenReaderLabelDirective, selector: "[skyScreenReaderLabel]", inputs: ["createLabel"] }, { kind: "pipe", type: i4.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1136
1161
  }
1137
1162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: SkyTokenComponent, decorators: [{
1138
1163
  type: Component,
1139
- args: [{ selector: 'sky-token', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"role\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n", styles: [":host{interpolate-size:allow-keywords;flex:0 0 auto;display:inline-flex;padding:var(--sky-token-gutter, 0)}.sky-token:not(.sky-theme-modern *){--sky-override-token-active-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-active-border: 1px solid #00b4f1;--sky-override-token-active-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-align-items: inherit;--sky-override-token-background-color: #c1e8fb;--sky-override-token-border: 1px solid #00b4f1;--sky-override-token-box-shadow: none;--sky-override-token-button-padding: 2px 8px;--sky-override-token-close-align-items: inherit;--sky-override-token-close-active-background-color: transparent;--sky-override-token-close-active-box-shadow: none;--sky-override-token-close-border-radius: 3px;--sky-override-token-close-button-opacity: .9;--sky-override-token-close-display: inline-block;--sky-override-token-close-focus-background-color: transparent;--sky-override-token-close-focus-box-shadow: none;--sky-override-token-close-focus-outline: auto;--sky-override-token-close-hover-background-color: transparent;--sky-override-token-close-hover-box-shadow: none;--sky-override-token-close-icon-width: initial;--sky-override-token-close-line-height: calc(20 / 14);--sky-override-token-close-margin-left: -2px;--sky-override-token-close-padding: 2px 8px;--sky-override-token-display: inline-block;--sky-override-token-disabled-background-color: #c1e8fb;--sky-override-token-dismissible-padding-right: 0;--sky-override-token-font-size: 15px;--sky-override-token-focused-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-focused-border: 1px solid #00b4f1;--sky-override-token-focused-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-hover-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-hover-border: 1px solid rgb(0, 141.9087136929, 190);--sky-override-token-hover-box-shadow: none;--sky-override-token-padding: 0}.sky-token{background-color:var(--sky-override-token-background-color, var(--sky-color-background-selected-soft));font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m));border:var(--sky-override-token-border, none);box-shadow:var(--sky-override-token-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-selected_soft));padding:var(--sky-override-token-padding, var(--sky-comp-token-space-inset-top) var(--sky-comp-token-space-inset-right) var(--sky-comp-token-space-inset-bottom) var(--sky-comp-token-space-inset-left));align-items:var(--sky-override-token-align-items, center);display:var(--sky-override-token-display, inline-flex)}.sky-token.sky-token-focused:not(:active),.sky-token:focus-visible:not(:active){background-color:var(--sky-override-token-focused-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-focused-border, none);box-shadow:var(--sky-override-token-focused-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus));cursor:pointer}.sky-token:hover{background-color:var(--sky-override-token-hover-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-hover-border, none);box-shadow:var(--sky-override-token-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover));cursor:pointer}.sky-token.sky-token-active{background-color:var(--sky-override-token-active-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-active-border, none);box-shadow:var(--sky-override-token-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active));cursor:pointer}.sky-token .sky-token-btn{background-color:transparent;border:0;box-shadow:none}.sky-token-btn{padding:var(--sky-override-token-button-padding, 0)}.sky-btn-disabled{cursor:default;-webkit-user-select:none;user-select:none}.sky-btn-disabled.sky-token{background-color:var(--sky-override-token-disabled-background-color, var(--sky-color-background-action-tertiary-disabled));border:var(--sky-override-token-border, none)}.sky-btn-disabled .sky-btn-disabled{opacity:1}.sky-btn-disabled .sky-token-btn-action{color:var(--sky-color-text-deemphasized)}.sky-btn-disabled .sky-token-btn-close{color:var(--sky-color-icon-deemphasized)}.sky-token-btn-close{margin-left:var(--sky-override-token-close-margin-left, var(--sky-space-gap-text_action-xs));opacity:var(--sky-override-token-close-button-opacity, 1);padding:var(--sky-override-token-close-padding, var(--sky-comp-token-close-space-inset-top) var(--sky-comp-token-close-space-inset-right) var(--sky-comp-token-close-space-inset-bottom) var(--sky-comp-token-close-space-inset-left));border-radius:var(--sky-override-token-close-border-radius, calc(var(--sky-border-radius-s) - var(--sky-border-width-selected-s)));align-items:var(--sky-override-token-close-align-items, center);display:var(--sky-override-token-close-display, flex);line-height:var(--sky-override-token-close-line-height, 1)}.sky-token-btn-close:hover,.sky-token-btn-close:focus-visible{opacity:1}.sky-token-btn-close:hover{background-color:var(--sky-override-token-close-hover-background-color, var(--sky-color-background-action-tertiary-hover));border:none;box-shadow:var(--sky-override-token-close-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-token-btn-close:focus-visible{outline:var(--sky-override-token-close-focus-outline, none)}.sky-token-btn-close:focus-visible:not(:active){background-color:var(--sky-override-token-close-focus-background-color, var(--sky-color-background-action-tertiary-focus));border:none;box-shadow:var(--sky-override-token-close-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-token-btn-close.sky-token-btn-close-active{background-color:var(--sky-override-token-close-active-background-color, var(--sky-color-background-action-tertiary-active));border:none;box-shadow:var(--sky-override-token-close-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-token-dismissible{padding-right:var(--sky-override-token-dismissible-padding-right, var(--sky-border-width-selected-s))}.sky-token-dismissible .sky-token-btn-action{padding-right:0}.sky-token-btn-action{font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m))}.sky-token-btn-action:focus-visible{outline:none}.sky-token-btn-close-icon{width:var(--sky-override-token-close-icon-width, 100%)}\n"] }]
1164
+ args: [{ selector: 'sky-token', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"effectiveRole()\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n", styles: [":host{interpolate-size:allow-keywords;flex:0 0 auto;display:inline-flex;padding:var(--sky-token-gutter, 0)}.sky-token:not(.sky-theme-modern *){--sky-override-token-active-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-active-border: 1px solid #00b4f1;--sky-override-token-active-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-align-items: inherit;--sky-override-token-background-color: #c1e8fb;--sky-override-token-border: 1px solid #00b4f1;--sky-override-token-box-shadow: none;--sky-override-token-button-padding: 2px 8px;--sky-override-token-close-align-items: inherit;--sky-override-token-close-active-background-color: transparent;--sky-override-token-close-active-box-shadow: none;--sky-override-token-close-border-radius: 3px;--sky-override-token-close-button-opacity: .9;--sky-override-token-close-display: inline-block;--sky-override-token-close-focus-background-color: transparent;--sky-override-token-close-focus-box-shadow: none;--sky-override-token-close-focus-outline: auto;--sky-override-token-close-hover-background-color: transparent;--sky-override-token-close-hover-box-shadow: none;--sky-override-token-close-icon-width: initial;--sky-override-token-close-line-height: calc(20 / 14);--sky-override-token-close-margin-left: -2px;--sky-override-token-close-padding: 2px 8px;--sky-override-token-display: inline-block;--sky-override-token-disabled-background-color: #c1e8fb;--sky-override-token-dismissible-padding-right: 0;--sky-override-token-font-size: 15px;--sky-override-token-focused-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-focused-border: 1px solid #00b4f1;--sky-override-token-focused-box-shadow: 0 0 8px rgba(0, 180, 241, .6);--sky-override-token-hover-background-color: rgb(145.0909090909, 214.2272727273, 247.9090909091);--sky-override-token-hover-border: 1px solid rgb(0, 141.9087136929, 190);--sky-override-token-hover-box-shadow: none;--sky-override-token-padding: 0}.sky-token{background-color:var(--sky-override-token-background-color, var(--sky-color-background-selected-soft));font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m));border:var(--sky-override-token-border, none);box-shadow:var(--sky-override-token-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-selected_soft));padding:var(--sky-override-token-padding, var(--sky-comp-token-space-inset-top) var(--sky-comp-token-space-inset-right) var(--sky-comp-token-space-inset-bottom) var(--sky-comp-token-space-inset-left));align-items:var(--sky-override-token-align-items, center);display:var(--sky-override-token-display, inline-flex)}.sky-token.sky-token-focused:not(:active),.sky-token:focus-visible:not(:active){background-color:var(--sky-override-token-focused-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-focused-border, none);box-shadow:var(--sky-override-token-focused-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus));cursor:pointer}.sky-token:hover{background-color:var(--sky-override-token-hover-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-hover-border, none);box-shadow:var(--sky-override-token-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover));cursor:pointer}.sky-token.sky-token-active{background-color:var(--sky-override-token-active-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-token-active-border, none);box-shadow:var(--sky-override-token-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active));cursor:pointer}.sky-token .sky-token-btn{background-color:transparent;border:0;box-shadow:none}.sky-token-btn{padding:var(--sky-override-token-button-padding, 0)}.sky-btn-disabled{cursor:default;-webkit-user-select:none;user-select:none}.sky-btn-disabled.sky-token{background-color:var(--sky-override-token-disabled-background-color, var(--sky-color-background-action-tertiary-disabled));border:var(--sky-override-token-border, none)}.sky-btn-disabled .sky-btn-disabled{opacity:1}.sky-btn-disabled .sky-token-btn-action{color:var(--sky-color-text-deemphasized)}.sky-btn-disabled .sky-token-btn-close{color:var(--sky-color-icon-deemphasized)}.sky-token-btn-close{margin-left:var(--sky-override-token-close-margin-left, var(--sky-space-gap-text_action-xs));opacity:var(--sky-override-token-close-button-opacity, 1);padding:var(--sky-override-token-close-padding, var(--sky-comp-token-close-space-inset-top) var(--sky-comp-token-close-space-inset-right) var(--sky-comp-token-close-space-inset-bottom) var(--sky-comp-token-close-space-inset-left));border-radius:var(--sky-override-token-close-border-radius, calc(var(--sky-border-radius-s) - var(--sky-border-width-selected-s)));align-items:var(--sky-override-token-close-align-items, center);display:var(--sky-override-token-close-display, flex);line-height:var(--sky-override-token-close-line-height, 1)}.sky-token-btn-close:hover,.sky-token-btn-close:focus-visible{opacity:1}.sky-token-btn-close:hover{background-color:var(--sky-override-token-close-hover-background-color, var(--sky-color-background-action-tertiary-hover));border:none;box-shadow:var(--sky-override-token-close-hover-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-token-btn-close:focus-visible{outline:var(--sky-override-token-close-focus-outline, none)}.sky-token-btn-close:focus-visible:not(:active){background-color:var(--sky-override-token-close-focus-background-color, var(--sky-color-background-action-tertiary-focus));border:none;box-shadow:var(--sky-override-token-close-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-token-btn-close.sky-token-btn-close-active{background-color:var(--sky-override-token-close-active-background-color, var(--sky-color-background-action-tertiary-active));border:none;box-shadow:var(--sky-override-token-close-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-token-dismissible{padding-right:var(--sky-override-token-dismissible-padding-right, var(--sky-border-width-selected-s))}.sky-token-dismissible .sky-token-btn-action{padding-right:0}.sky-token-btn-action{font-size:var(--sky-override-token-font-size, var(--sky-font-size-body-m))}.sky-token-btn-action:focus-visible{outline:none}.sky-token-btn-close-icon{width:var(--sky-override-token-close-icon-width, 100%)}\n"] }]
1140
1165
  }], propDecorators: { disabled: [{
1141
1166
  type: Input
1142
1167
  }], ariaLabel: [{
@@ -1145,9 +1170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
1145
1170
  type: Input
1146
1171
  }], focusable: [{
1147
1172
  type: Input
1148
- }], role: [{
1149
- type: Input
1150
- }], dismiss: [{
1173
+ }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], dismiss: [{
1151
1174
  type: Output
1152
1175
  }], tokenFocus: [{
1153
1176
  type: Output
@@ -1235,7 +1258,7 @@ class SkyTokensComponent {
1235
1258
  * The array of tokens to include in the list.
1236
1259
  */
1237
1260
  set tokens(value) {
1238
- this.#_tokens = value || [];
1261
+ this.#tokens.set(value || []);
1239
1262
  // The previous behavior was to set `this._tokens = value`, then emit `this._tokens`,
1240
1263
  // which would emit `undefined` instead of a default value of `[]` returned by the
1241
1264
  // get accessor when set to `undefined`. Emitting `value` instead of `this.#_tokensOrDefault`
@@ -1244,7 +1267,7 @@ class SkyTokensComponent {
1244
1267
  this.#queueTokensRenderedEmit();
1245
1268
  }
1246
1269
  get tokens() {
1247
- return this.#_tokens;
1270
+ return this.#tokens();
1248
1271
  }
1249
1272
  /**
1250
1273
  * The observable of `SkyTokensMessage` that can place focus on a
@@ -1261,8 +1284,8 @@ class SkyTokensComponent {
1261
1284
  return this.#_activeIndex;
1262
1285
  }
1263
1286
  set activeIndex(value) {
1264
- if (value >= this.#_tokens.length) {
1265
- value = this.#_tokens.length - 1;
1287
+ if (value >= this.#tokens().length) {
1288
+ value = this.#tokens().length - 1;
1266
1289
  this.focusIndexOverRange.emit();
1267
1290
  }
1268
1291
  if (value < 0) {
@@ -1274,8 +1297,8 @@ class SkyTokensComponent {
1274
1297
  #_disabled;
1275
1298
  #_dismissible;
1276
1299
  #_focusable;
1277
- #_tokens;
1278
1300
  #_displayWith;
1301
+ #tokens;
1279
1302
  #messageStreamSub;
1280
1303
  #ngUnsubscribe;
1281
1304
  #tokensRenderedQueued;
@@ -1311,8 +1334,24 @@ class SkyTokensComponent {
1311
1334
  this.#_disabled = false;
1312
1335
  this.#_dismissible = true;
1313
1336
  this.#_focusable = true;
1314
- this.#_tokens = [];
1315
1337
  this.#_displayWith = DISPLAY_WITH_DEFAULT;
1338
+ this.#tokens = signal([], /* @ts-ignore */
1339
+ ...(ngDevMode ? [{ debugName: "#tokens" }] : /* istanbul ignore next */ []));
1340
+ /**
1341
+ * The tokens manually projected into the component via
1342
+ * `<ng-content select="sky-token" />`, as opposed to the ones generated from
1343
+ * the `tokens` input.
1344
+ */
1345
+ this.projectedTokenComponents = contentChildren(SkyTokenComponent, /* @ts-ignore */
1346
+ ...(ngDevMode ? [{ debugName: "projectedTokenComponents" }] : /* istanbul ignore next */ []));
1347
+ /**
1348
+ * Whether the grid role is active on this component's host element. A
1349
+ * `sky-token` element (whether generated from the `tokens` input or
1350
+ * manually projected) reads this to determine its own `row` role, since
1351
+ * Angular does not apply template bindings to projected content.
1352
+ */
1353
+ this.gridRoleActive = computed(() => this.#tokens().length > 0 || this.projectedTokenComponents().length > 0, /* @ts-ignore */
1354
+ ...(ngDevMode ? [{ debugName: "gridRoleActive" }] : /* istanbul ignore next */ []));
1316
1355
  this.#ngUnsubscribe = new Subject();
1317
1356
  this.#tokensRenderedQueued = false;
1318
1357
  this.#changeDetector = inject(ChangeDetectorRef);
@@ -1462,11 +1501,15 @@ class SkyTokensComponent {
1462
1501
  });
1463
1502
  }
1464
1503
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: SkyTokensComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: SkyTokensComponent, isStandalone: false, selector: "sky-tokens", inputs: { disabled: "disabled", dismissible: "dismissible", displayWith: "displayWith", trackWith: "trackWith", focusable: "focusable", tokens: "tokens", messageStream: "messageStream" }, outputs: { focusIndexOverRange: "focusIndexOverRange", focusIndexUnderRange: "focusIndexUnderRange", tokenSelected: "tokenSelected", tokensChange: "tokensChange", tokensRendered: "tokensRendered" }, viewQueries: [{ propertyName: "tokenComponents", predicate: SkyTokenComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"tokens.length ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <div class=\"sky-tokens-content\" [attr.role]=\"tokens.length ? 'row' : null\">\n <div [attr.role]=\"tokens.length ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes sky-token-enter-animation{0%{opacity:0;width:0;padding:0}to{opacity:1;width:auto}}@keyframes sky-token-leave-animation{0%{opacity:1;width:auto}to{opacity:0;width:0;padding:0}}.sky-tokens{--sky-token-gutter: 2px;display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens.sky-tokens-animation-enabled sky-token.sky-token-leave{animation:sky-token-leave-animation var(--sky-global-duration-short) ease-in forwards;overflow:hidden}.sky-tokens.sky-tokens-animation-ready.sky-tokens-animation-enabled sky-token.sky-token-enter{animation:sky-token-enter-animation var(--sky-global-duration-short) ease-in;overflow:hidden}.sky-tokens .sky-tokens-content{flex:0 0 auto;display:inline-flex;padding:2px;flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"], dependencies: [{ kind: "component", type: SkyTokenComponent, selector: "sky-token", inputs: ["disabled", "ariaLabel", "dismissible", "focusable", "role"], outputs: ["dismiss", "tokenFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1504
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: SkyTokensComponent, isStandalone: false, selector: "sky-tokens", inputs: { disabled: "disabled", dismissible: "dismissible", displayWith: "displayWith", trackWith: "trackWith", focusable: "focusable", tokens: "tokens", messageStream: "messageStream" }, outputs: { focusIndexOverRange: "focusIndexOverRange", focusIndexUnderRange: "focusIndexUnderRange", tokenSelected: "tokenSelected", tokensChange: "tokensChange", tokensRendered: "tokensRendered" }, providers: [
1505
+ { provide: SKY_TOKENS_ROLE_CONTEXT, useExisting: SkyTokensComponent },
1506
+ ], queries: [{ propertyName: "projectedTokenComponents", predicate: SkyTokenComponent, isSignal: true }], viewQueries: [{ propertyName: "tokenComponents", predicate: SkyTokenComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"gridRoleActive() ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <ng-content select=\"sky-token\" />\n <div class=\"sky-tokens-content\" [attr.role]=\"gridRoleActive() ? 'row' : null\">\n <div [attr.role]=\"gridRoleActive() ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes sky-token-enter-animation{0%{opacity:0;width:0;padding:0}to{opacity:1;width:auto}}@keyframes sky-token-leave-animation{0%{opacity:1;width:auto}to{opacity:0;width:0;padding:0}}.sky-tokens{--sky-token-gutter: 2px;display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens.sky-tokens-animation-enabled sky-token.sky-token-leave{animation:sky-token-leave-animation var(--sky-global-duration-short) ease-in forwards;overflow:hidden}.sky-tokens.sky-tokens-animation-ready.sky-tokens-animation-enabled sky-token.sky-token-enter{animation:sky-token-enter-animation var(--sky-global-duration-short) ease-in;overflow:hidden}.sky-tokens .sky-tokens-content{flex:0 0 auto;display:inline-flex;padding:2px;flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"], dependencies: [{ kind: "component", type: SkyTokenComponent, selector: "sky-token", inputs: ["disabled", "ariaLabel", "dismissible", "focusable", "role"], outputs: ["dismiss", "tokenFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1466
1507
  }
1467
1508
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: SkyTokensComponent, decorators: [{
1468
1509
  type: Component,
1469
- args: [{ selector: 'sky-tokens', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"tokens.length ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <div class=\"sky-tokens-content\" [attr.role]=\"tokens.length ? 'row' : null\">\n <div [attr.role]=\"tokens.length ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes sky-token-enter-animation{0%{opacity:0;width:0;padding:0}to{opacity:1;width:auto}}@keyframes sky-token-leave-animation{0%{opacity:1;width:auto}to{opacity:0;width:0;padding:0}}.sky-tokens{--sky-token-gutter: 2px;display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens.sky-tokens-animation-enabled sky-token.sky-token-leave{animation:sky-token-leave-animation var(--sky-global-duration-short) ease-in forwards;overflow:hidden}.sky-tokens.sky-tokens-animation-ready.sky-tokens-animation-enabled sky-token.sky-token-enter{animation:sky-token-enter-animation var(--sky-global-duration-short) ease-in;overflow:hidden}.sky-tokens .sky-tokens-content{flex:0 0 auto;display:inline-flex;padding:2px;flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"] }]
1510
+ args: [{ selector: 'sky-tokens', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, providers: [
1511
+ { provide: SKY_TOKENS_ROLE_CONTEXT, useExisting: SkyTokensComponent },
1512
+ ], template: "<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"gridRoleActive() ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <ng-content select=\"sky-token\" />\n <div class=\"sky-tokens-content\" [attr.role]=\"gridRoleActive() ? 'row' : null\">\n <div [attr.role]=\"gridRoleActive() ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@keyframes sky-token-enter-animation{0%{opacity:0;width:0;padding:0}to{opacity:1;width:auto}}@keyframes sky-token-leave-animation{0%{opacity:1;width:auto}to{opacity:0;width:0;padding:0}}.sky-tokens{--sky-token-gutter: 2px;display:flex;flex-wrap:wrap;align-items:baseline;margin:-2px}.sky-tokens.sky-tokens-animation-enabled sky-token.sky-token-leave{animation:sky-token-leave-animation var(--sky-global-duration-short) ease-in forwards;overflow:hidden}.sky-tokens.sky-tokens-animation-ready.sky-tokens-animation-enabled sky-token.sky-token-enter{animation:sky-token-enter-animation var(--sky-global-duration-short) ease-in;overflow:hidden}.sky-tokens .sky-tokens-content{flex:0 0 auto;display:inline-flex;padding:2px;flex-grow:1;flex-basis:0px}.sky-tokens .sky-tokens-content>div{display:contents}.sky-tokens .sky-tokens-content>div:before{content:\"\\200b\"}\n"] }]
1470
1513
  }], ctorParameters: () => [], propDecorators: { disabled: [{
1471
1514
  type: Input
1472
1515
  }], dismissible: [{
@@ -1494,7 +1537,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
1494
1537
  }], tokenComponents: [{
1495
1538
  type: ViewChildren,
1496
1539
  args: [SkyTokenComponent]
1497
- }] } });
1540
+ }], projectedTokenComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SkyTokenComponent), { isSignal: true }] }] } });
1498
1541
 
1499
1542
  class SkyTokensModule {
1500
1543
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: SkyTokensModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-indicators.mjs","sources":["../../../../../libs/components/indicators/src/lib/modules/shared/sky-indicators-resources.module.ts","../../../../../libs/components/indicators/src/lib/modules/shared/indicator-icon-utility.ts","../../../../../libs/components/indicators/src/lib/modules/alert/alert.component.ts","../../../../../libs/components/indicators/src/lib/modules/alert/alert.component.html","../../../../../libs/components/indicators/src/lib/modules/alert/alert.module.ts","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.component.ts","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.component.html","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.module.ts","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.component.ts","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.component.html","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.module.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration-resolver.service.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.component.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.component.html","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.module.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info-label.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info-value.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.component.html","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.module.ts","../../../../../libs/components/indicators/src/lib/modules/label/label.component.ts","../../../../../libs/components/indicators/src/lib/modules/label/label.component.html","../../../../../libs/components/indicators/src/lib/modules/label/label.module.ts","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.component.ts","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.component.html","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.module.ts","../../../../../libs/components/indicators/src/lib/modules/text-highlight/text-highlight.directive.ts","../../../../../libs/components/indicators/src/lib/modules/text-highlight/text-highlight.module.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/token.component.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/token.component.html","../../../../../libs/components/indicators/src/lib/modules/tokens/types/tokens-message-type.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.component.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.component.html","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.module.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-adapter.service.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait.component.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait.component.html","../../../../../libs/components/indicators/src/lib/modules/wait/wait.module.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-page.component.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-page.component.html","../../../../../libs/components/indicators/src/lib/modules/wait/wait.service.ts","../../../../../libs/components/indicators/src/skyux-indicators.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-indicators' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_alert_close: { message: 'Close the alert' },\n skyux_alert_sr_attention: { message: 'Attention:' },\n skyux_alert_sr_caution: { message: 'Caution:' },\n skyux_alert_sr_completed: { message: 'Completed:' },\n skyux_alert_sr_danger: { message: 'Danger:' },\n skyux_alert_sr_error: { message: 'Error:' },\n skyux_alert_sr_important_info: { message: 'Important information:' },\n skyux_alert_sr_important_warning: { message: 'Important warning:' },\n skyux_alert_sr_success: { message: 'Success:' },\n skyux_alert_sr_warning: { message: 'Warning:' },\n skyux_help_inline_button_title: { message: 'Show help content' },\n skyux_label_sr_attention: { message: 'Attention:' },\n skyux_label_sr_caution: { message: 'Caution:' },\n skyux_label_sr_completed: { message: 'Completed:' },\n skyux_label_sr_danger: { message: 'Danger:' },\n skyux_label_sr_error: { message: 'Error:' },\n skyux_label_sr_important_info: { message: 'Important information:' },\n skyux_label_sr_important_warning: { message: 'Important warning:' },\n skyux_label_sr_success: { message: 'Success:' },\n skyux_label_sr_warning: { message: 'Warning:' },\n skyux_status_indicator_sr_attention: { message: 'Attention:' },\n skyux_status_indicator_sr_caution: { message: 'Caution:' },\n skyux_status_indicator_sr_completed: { message: 'Completed:' },\n skyux_status_indicator_sr_danger: { message: 'Danger:' },\n skyux_status_indicator_sr_error: { message: 'Error:' },\n skyux_status_indicator_sr_important_info: {\n message: 'Important information:',\n },\n skyux_status_indicator_sr_important_warning: {\n message: 'Important warning:',\n },\n skyux_status_indicator_sr_success: { message: 'Success:' },\n skyux_status_indicator_sr_warning: { message: 'Warning:' },\n skyux_tokens_dismiss_button_default_label: { message: 'Remove ' },\n skyux_tokens_dismiss_button_title: { message: 'Remove item' },\n skyux_tokens_token_dismissed: { message: '{0} removed' },\n skyux_wait_aria_alt_text: { message: 'Loading.' },\n skyux_wait_blocking_aria_alt_text: { message: 'Loading. Please wait.' },\n skyux_wait_page_aria_alt_text: { message: 'Page loading.' },\n skyux_wait_page_blocking_aria_alt_text: {\n message: 'Page loading. Please wait.',\n },\n skyux_wait_screen_reader_completed_text: { message: 'Loading complete.' },\n skyux_wait_page_screen_reader_completed_text: {\n message: 'Page loading complete.',\n },\n },\n 'FR-CA': {\n skyux_alert_close: { message: 'Fermer l’alerte' },\n skyux_alert_sr_attention: { message: 'Attention :' },\n skyux_alert_sr_caution: { message: 'Mise en garde :' },\n skyux_alert_sr_completed: { message: 'Terminé :' },\n skyux_alert_sr_danger: { message: 'Danger :' },\n skyux_alert_sr_error: { message: 'Erreur :' },\n skyux_alert_sr_important_info: { message: 'Information importante :' },\n skyux_alert_sr_important_warning: { message: 'Avertissement important :' },\n skyux_alert_sr_success: { message: 'Réussi :' },\n skyux_alert_sr_warning: { message: 'Avertissement :' },\n skyux_help_inline_button_title: {\n message: 'Afficher le contenu de l’aide',\n },\n skyux_label_sr_attention: { message: 'Attention :' },\n skyux_label_sr_caution: { message: 'Mise en garde :' },\n skyux_label_sr_completed: { message: 'Terminé :' },\n skyux_label_sr_danger: { message: 'Danger :' },\n skyux_label_sr_error: { message: 'Erreur :' },\n skyux_label_sr_important_info: { message: 'Information importante :' },\n skyux_label_sr_important_warning: { message: 'Avertissement important :' },\n skyux_label_sr_success: { message: 'Réussi :' },\n skyux_label_sr_warning: { message: 'Avertissement :' },\n skyux_status_indicator_sr_attention: { message: 'Attention :' },\n skyux_status_indicator_sr_caution: { message: 'Mise en garde :' },\n skyux_status_indicator_sr_completed: { message: 'Terminé :' },\n skyux_status_indicator_sr_danger: { message: 'Danger :' },\n skyux_status_indicator_sr_error: { message: 'Erreur :' },\n skyux_status_indicator_sr_important_info: {\n message: 'Information importante :',\n },\n skyux_status_indicator_sr_important_warning: {\n message: 'Avertissement important :',\n },\n skyux_status_indicator_sr_success: { message: 'Réussi :' },\n skyux_status_indicator_sr_warning: { message: 'Avertissement :' },\n skyux_tokens_dismiss_button_default_label: { message: 'Retirer ' },\n skyux_tokens_dismiss_button_title: { message: 'Retirer l’article' },\n skyux_tokens_token_dismissed: { message: '{0} retiré' },\n skyux_wait_aria_alt_text: { message: 'Chargement en cours.' },\n skyux_wait_blocking_aria_alt_text: {\n message: 'Chargement en cours. Veuillez patienter.',\n },\n skyux_wait_page_aria_alt_text: {\n message: 'Chargement de la page en cours.',\n },\n skyux_wait_page_blocking_aria_alt_text: {\n message: 'Chargement de la page en cours. Veuillez patienter.',\n },\n skyux_wait_screen_reader_completed_text: { message: 'Chargement terminé.' },\n skyux_wait_page_screen_reader_completed_text: {\n message: 'Chargement de la page terminé.',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyIndicatorsResourcesModule {}\n","import { SkyIndicatorIconType } from './indicator-icon-type';\n\n/**\n * @internal\n */\nexport class SkyIndicatorIconUtility {\n public static getIconNameForType(\n indicatorType: SkyIndicatorIconType,\n ): string {\n let icon: string;\n\n switch (indicatorType) {\n case 'danger':\n case 'warning':\n icon = 'warning';\n break;\n case 'info':\n icon = 'info';\n break;\n case 'success':\n icon = 'success';\n break;\n }\n\n return icon;\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subscription } from 'rxjs';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconType } from '../shared/indicator-icon-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nconst ALERT_TYPE_DEFAULT = 'warning';\n\n@Component({\n selector: 'sky-alert',\n styleUrls: [\n './alert.default.component.scss',\n './alert.modern.component.scss',\n ],\n templateUrl: './alert.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyAlertComponent implements AfterViewChecked, OnInit, OnDestroy {\n /**\n * The style for the alert, which determines the icon and background color.\n * The valid options are `danger`, `info`, `success`, and `warning`.\n * @default \"warning\"\n */\n @Input()\n public set alertType(value: SkyIndicatorIconType | undefined) {\n if (value !== this.alertTypeOrDefault) {\n this.alertTypeOrDefault = value || ALERT_TYPE_DEFAULT;\n this.#updateAlertIcon();\n }\n }\n\n /**\n * Whether to include a close button for users to dismiss the alert.\n * @default false\n */\n @Input()\n public closeable: boolean | undefined;\n\n /**\n * Whether the alert is closed.\n * @default false\n */\n @Input()\n public closed: boolean | undefined;\n\n /**\n * The predefined text to be read by screen readers for users who cannot see the alert icon.\n * This property is optional but will be required in future versions of SKY UX.\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n /**\n * Fires when users close the alert.\n */\n @Output()\n public closedChange = new EventEmitter<boolean>();\n\n public iconName =\n SkyIndicatorIconUtility.getIconNameForType(ALERT_TYPE_DEFAULT);\n\n public alertTypeOrDefault: SkyIndicatorIconType = ALERT_TYPE_DEFAULT;\n\n public descriptionComputed: string | undefined;\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n\n #_customDescription: string | undefined;\n\n #descriptionTypeResourceSubscription: Subscription | undefined;\n #descriptionTypeWarned: boolean | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #resources = inject(SkyLibResourcesService);\n readonly #logSvc = inject(SkyLogService);\n\n public ngOnInit(): void {\n this.#updateAlertIcon();\n }\n\n public ngAfterViewChecked(): void {\n if (!this.descriptionType && !this.#descriptionTypeWarned) {\n this.#logSvc.deprecated('SkyAlertComponent without `descriptionType`', {\n deprecationMajorVersion: 8,\n replacementRecommendation:\n 'Always specify a `descriptionType` property.',\n });\n\n this.#descriptionTypeWarned = true;\n }\n }\n\n public ngOnDestroy(): void {\n this.#unsubscribe();\n }\n\n public close(): void {\n this.closed = true;\n this.closedChange.emit(true);\n }\n\n #updateAlertIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.alertTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n this.#unsubscribe();\n\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = undefined;\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#descriptionTypeResourceSubscription = this.#resources\n .getString(\n 'skyux_alert_sr_' + this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n\n #unsubscribe(): void {\n if (this.#descriptionTypeResourceSubscription) {\n this.#descriptionTypeResourceSubscription.unsubscribe();\n this.#descriptionTypeResourceSubscription = undefined;\n }\n }\n}\n","<div\n class=\"sky-alert\"\n role=\"alert\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners': 'default',\n 'sky-box sky-elevation-1': 'modern'\n }\"\n [hidden]=\"closed\"\n [ngClass]=\"{\n 'sky-alert-info': alertTypeOrDefault === 'info',\n 'sky-alert-success': alertTypeOrDefault === 'success',\n 'sky-alert-warning': alertTypeOrDefault === 'warning',\n 'sky-alert-danger': alertTypeOrDefault === 'danger',\n 'sky-alert-closeable': closeable\n }\"\n>\n <div *skyThemeIf=\"'modern'\" aria-hidden=\"true\" class=\"sky-alert-icon\">\n <sky-icon iconSize=\"xl\" variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n <div *skyThemeIf=\"'default'\" aria-hidden=\"true\" class=\"sky-alert-icon\">\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <div class=\"sky-alert-content\">\n <ng-content />\n </div>\n <button\n class=\"sky-alert-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_alert_close' | skyLibResources\"\n [hidden]=\"!closeable\"\n (click)=\"close()\"\n >\n <span aria-hidden=\"true\">\n <sky-icon iconName=\"close\" />\n </span>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyAlertComponent } from './alert.component';\n\n@NgModule({\n declarations: [SkyAlertComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyAlertComponent],\n})\nexport class SkyAlertModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\n/**\n * Displays a chevron icon.\n * @internal\n */\n@Component({\n selector: 'sky-expansion-indicator',\n styleUrls: ['./expansion-indicator.component.scss'],\n templateUrl: './expansion-indicator.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyExpansionIndicatorComponent {\n /**\n * The direction that the chevron points, which can be up or down.\n */\n @Input()\n public set direction(value: string | undefined) {\n /* istanbul ignore else */\n if (value !== this.directionOrDefault) {\n this.directionOrDefault = value ? value : 'up';\n }\n }\n\n public directionOrDefault = 'up';\n}\n","<div\n aria-hidden=\"true\"\n class=\"sky-expansion-indicator\"\n [ngClass]=\"['sky-expansion-indicator-' + directionOrDefault]\"\n>\n <span class=\"sky-expansion-indicator-glyph-container\">\n <i class=\"sky-expansion-indicator-part sky-expansion-indicator-left\"> </i>\n <i class=\"sky-expansion-indicator-part sky-expansion-indicator-right\"> </i>\n </span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyExpansionIndicatorComponent } from './expansion-indicator.component';\n\n@NgModule({\n declarations: [SkyExpansionIndicatorComponent],\n imports: [CommonModule, SkyThemeModule],\n exports: [SkyExpansionIndicatorComponent],\n})\nexport class SkyExpansionIndicatorModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\n/**\n * Creates an accessible button that wraps the chevron icon.\n * @internal\n */\n@Component({\n selector: 'sky-chevron',\n styleUrls: [\n './chevron.default.component.scss',\n './chevron.modern.component.scss',\n ],\n templateUrl: './chevron.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyChevronComponent {\n /**\n * The element whose contents are controlled by the chevron.\n * This sets the chevron's `aria-controls` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-controls` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-controls).\n */\n @Input()\n public ariaControls: string | undefined;\n\n /**\n * The ARIA label for the chevron. This sets the chevron's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The direction that the chevron points, which can be up or down.\n */\n @Input()\n public set direction(value: string | undefined) {\n /* istanbul ignore else */\n if (value !== this.directionOrDefault) {\n this.directionOrDefault = value ? value : 'up';\n /* istanbul ignore else */\n if (this.directionOrDefault === 'up') {\n this.ariaExpanded = true;\n } else if (this.directionOrDefault === 'down') {\n this.ariaExpanded = false;\n }\n }\n }\n\n /**\n * Whether to disable the chevron button.\n */\n @Input()\n public disabled = false;\n\n /**\n * Fires when the direction of the chevron changes.\n */\n @Output()\n public directionChange = new EventEmitter<string>();\n\n public ariaExpanded = true;\n\n public directionOrDefault = 'up';\n\n public chevronClick(event: Event): void {\n event.stopPropagation();\n this.direction = this.directionOrDefault === 'up' ? 'down' : 'up';\n this.directionChange.emit(this.directionOrDefault);\n }\n\n public chevronKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n switch (event.key.toLowerCase()) {\n case ' ':\n case 'enter':\n this.direction = this.directionOrDefault === 'up' ? 'down' : 'up';\n this.directionChange.emit(this.directionOrDefault);\n event.preventDefault();\n event.stopPropagation();\n break;\n default:\n break;\n }\n }\n }\n}\n","<button\n class=\"sky-chevron\"\n type=\"button\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [ngClass]=\"['sky-chevron-' + directionOrDefault]\"\n [skyThemeClass]=\"{\n 'sky-btn sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"chevronClick($event)\"\n (keydown)=\"chevronKeyDown($event)\"\n>\n <sky-expansion-indicator [direction]=\"directionOrDefault\" />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyExpansionIndicatorModule } from '../expansion-indicator/expansion-indicator.module';\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyChevronComponent } from './chevron.component';\n\n/**\n * @internal\n */\n@NgModule({\n declarations: [SkyChevronComponent],\n imports: [\n CommonModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n SkyExpansionIndicatorModule,\n ],\n exports: [SkyChevronComponent],\n})\nexport class SkyChevronModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Resolves information about spot illustrations.\n */\n@Injectable()\nexport abstract class SkyIllustrationResolverService {\n /**\n * Resolves a URL for the specified illustration name to render in an `img`.\n */\n public abstract resolveUrl(name: string): Promise<string>;\n\n /**\n * Resolves the `href` of the SVG element to reference in `use`.\n * If both an `href` and a URL are resolved, the SVG with `href` will be rendered.\n */\n public resolveHref(name: string): Promise<string> {\n return Promise.resolve('');\n }\n\n /**\n * Gets the names of all available illustrations.\n */\n public getNames(): Promise<string[]> {\n return Promise.resolve([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { catchError, from, of, switchMap } from 'rxjs';\n\nimport { SkyIllustrationResolverService } from './illustration-resolver.service';\nimport { SkyIllustrationSize } from './illustration-size';\n\n/**\n * Displays a spot illustration at the specified size.\n */\n@Component({\n selector: 'sky-illustration',\n imports: [],\n templateUrl: './illustration.component.html',\n styleUrls: ['./illustration.component.scss'],\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyIllustrationComponent {\n readonly #resolverSvc = inject(SkyIllustrationResolverService, {\n optional: true,\n });\n\n /**\n * The name of the illustration to display.\n * @required\n */\n public readonly name = input.required<string>();\n\n /**\n * The size of the illustration.\n * @required\n */\n public readonly size = input.required<SkyIllustrationSize>();\n\n protected readonly url = toSignal(\n toObservable(this.name).pipe(\n switchMap((name) =>\n this.#resolverSvc ? from(this.#resolverSvc.resolveUrl(name)) : of(''),\n ),\n catchError(() => of('')),\n ),\n );\n\n protected readonly svgHref = toSignal(\n toObservable(this.name).pipe(\n switchMap((name) =>\n this.#resolverSvc ? from(this.#resolverSvc.resolveHref(name)) : of(''),\n ),\n catchError(() => of('')),\n ),\n );\n}\n","<div\n [attr.data-sky-illustration-name]=\"name()\"\n [class]=\"'sky-illustration-wrapper sky-illustration-' + size()\"\n>\n @if (svgHref(); as svgHrefValue) {\n <svg aria-hidden=\"true\" class=\"sky-illustration-svg\">\n <use [attr.xlink:href]=\"svgHrefValue\" />\n </svg>\n } @else {\n <img alt=\"\" loading=\"lazy\" class=\"sky-illustration-img\" [src]=\"url()\" />\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyIllustrationComponent } from './illustration.component';\n\n@NgModule({\n imports: [SkyIllustrationComponent],\n exports: [SkyIllustrationComponent],\n})\nexport class SkyIllustrationModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyTrimModule } from '@skyux/core';\n\n/**\n * Specifies a label to display in smaller text under or beside the value.\n * To display a help button beside the label, include a help button element, such as `sky-help-inline`,\n * in the `sky-key-info` element and a `sky-control-help` CSS class on that help button element.\n * @required\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyTrimModule],\n selector: 'sky-key-info-label',\n template: '<span skyTrim><ng-content /></span>',\n})\nexport class SkyKeyInfoLabelComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * Specifies a value to display in larger, bold text.\n * @required\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sky-key-info-value',\n styleUrl: './key-info-value.component.scss',\n template: '<ng-content />',\n // Disable view encapsulation to reduce selector specificity, making it\n // possible for users to override styles with font classes.\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyKeyInfoValueComponent {}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\nimport { SkyKeyInfoLayoutType } from './key-info-layout-type';\n\n@Component({\n imports: [NgClass, SkyHelpInlineModule, SkyIdModule],\n selector: 'sky-key-info',\n templateUrl: './key-info.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './key-info.component.scss',\n})\nexport class SkyKeyInfoComponent {\n /**\n * A help key that identifies the global help content to display. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline) button is\n * placed beside the key info. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help) as configured by the application.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * The content of the help popover. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the key info. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The layout for the key info. The vertical layout places the label under the\n * value, while the horizontal layout places the label beside the value.\n * @default \"vertical\"\n */\n @Input()\n public layout: SkyKeyInfoLayoutType | undefined = 'vertical';\n}\n","<div\n class=\"sky-key-info\"\n [ngClass]=\"{\n 'sky-key-info-horizontal': layout === 'horizontal'\n }\"\n>\n <div class=\"sky-key-info-value\">\n <ng-content select=\"sky-key-info-value\" />\n </div>\n <div class=\"sky-key-info-label sky-field-label sky-font-data-label\">\n <span #label=\"skyId\" skyId><ng-content select=\"sky-key-info-label\" /></span\n ><span class=\"sky-control-help-container\">\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [labelledBy]=\"label.id\"\n [helpKey]=\"helpKey\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n } @else {\n <ng-content select=\".sky-control-help\" />\n }\n </span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyKeyInfoLabelComponent } from './key-info-label.component';\nimport { SkyKeyInfoValueComponent } from './key-info-value.component';\nimport { SkyKeyInfoComponent } from './key-info.component';\n\n@NgModule({\n imports: [\n SkyKeyInfoComponent,\n SkyKeyInfoLabelComponent,\n SkyKeyInfoValueComponent,\n ],\n exports: [\n SkyKeyInfoComponent,\n SkyKeyInfoLabelComponent,\n SkyKeyInfoValueComponent,\n ],\n})\nexport class SkyKeyInfoModule {}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subscription } from 'rxjs/internal/Subscription';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nimport { SkyLabelType } from './label-type';\n\nconst LABEL_TYPE_DEFAULT: SkyLabelType = 'info';\n\n@Component({\n selector: 'sky-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyLabelComponent implements AfterViewChecked, OnDestroy, OnInit {\n /**\n * The type of label to display.\n * @default 'info'\n */\n @Input()\n public set labelType(value: SkyLabelType | undefined) {\n this.labelTypeOrDefault = value === undefined ? LABEL_TYPE_DEFAULT : value;\n\n this.#updateIcon();\n }\n\n /**\n * The predefined text to be read by screen readers for users who cannot see the indicator icon.\n * This property is optional but will be required in future versions of SKY UX.\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n public descriptionComputed: string | undefined;\n\n public iconName =\n SkyIndicatorIconUtility.getIconNameForType(LABEL_TYPE_DEFAULT);\n\n public labelTypeOrDefault = LABEL_TYPE_DEFAULT;\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n #_customDescription: string | undefined;\n\n #descriptionTypeResourceSubscription: Subscription | undefined;\n #descriptionTypeWarned: boolean | undefined;\n\n #changeDetector = inject(ChangeDetectorRef);\n #resources = inject(SkyLibResourcesService);\n #logSvc = inject(SkyLogService);\n\n public ngOnInit(): void {\n this.#updateIcon();\n }\n\n public ngAfterViewChecked(): void {\n if (!this.descriptionType && !this.#descriptionTypeWarned) {\n this.#logSvc.deprecated('SkyLabelComponent without `descriptionType`', {\n deprecationMajorVersion: 8,\n replacementRecommendation:\n 'Always specify a `descriptionType` property.',\n });\n\n this.#descriptionTypeWarned = true;\n }\n }\n\n public ngOnDestroy(): void {\n this.#unsubscribe();\n }\n\n #updateIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.labelTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n this.#unsubscribe();\n\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = undefined;\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#descriptionTypeResourceSubscription = this.#resources\n .getString(\n 'skyux_label_sr_' + this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n\n #unsubscribe(): void {\n if (this.#descriptionTypeResourceSubscription) {\n this.#descriptionTypeResourceSubscription.unsubscribe();\n this.#descriptionTypeResourceSubscription = undefined;\n }\n }\n}\n","<span class=\"sky-label\" [ngClass]=\"'sky-label-' + labelTypeOrDefault\">\n <span class=\"sky-label-icon\">\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </span>\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <span class=\"sky-label-text\">\n <ng-content />\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyLabelComponent } from './label.component';\n\n@NgModule({\n declarations: [SkyLabelComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyLabelComponent],\n})\nexport class SkyLabelModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconType } from '../shared/indicator-icon-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nconst INDICATOR_TYPE_DEFAULT: SkyIndicatorIconType = 'warning';\n/**\n * Displays status text with an icon matching the specified indicator type.\n * To display a help button beside the label, include a help button element, such as\n * `sky-help-inline`, in the `sky-status-indicator` element and a `sky-control-help`\n * CSS class on that help button element.\n */\n@Component({\n selector: 'sky-status-indicator',\n templateUrl: './status-indicator.component.html',\n styleUrls: ['./status-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyStatusIndicatorComponent implements OnInit {\n /**\n * The style for the status indicator, which determines the icon.\n * @default \"warning\"\n */\n @Input()\n public set indicatorType(value: SkyIndicatorIconType) {\n this.indicatorTypeOrDefault =\n value === undefined ? INDICATOR_TYPE_DEFAULT : value;\n\n this.#updateIcon();\n }\n\n /**\n * The predefined text to be read by screen readers for users who\n * cannot see the indicator icon.\n * @required\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n /**\n * The content of the help popover. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the status indicator. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline) button is\n * placed beside the status indicator label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help) as configured by the application.\n */\n @Input()\n public helpKey: string | undefined;\n\n public descriptionComputed: string | undefined;\n\n public iconName = SkyIndicatorIconUtility.getIconNameForType(\n INDICATOR_TYPE_DEFAULT,\n );\n\n public indicatorTypeOrDefault: SkyIndicatorIconType = INDICATOR_TYPE_DEFAULT;\n\n #changeDetector = inject(ChangeDetectorRef);\n #resourcesSvc = inject(SkyLibResourcesService);\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n #_customDescription: string | undefined;\n\n public ngOnInit(): void {\n this.#updateIcon();\n }\n\n #updateIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.indicatorTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = '';\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#resourcesSvc\n .getString(\n 'skyux_status_indicator_sr_' +\n this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n}\n","@if (descriptionType) {\n <div class=\"sky-status-indicator\">\n <div\n aria-hidden=\"true\"\n class=\"sky-status-indicator-icon\"\n [ngClass]=\"'sky-status-indicator-icon-' + indicatorTypeOrDefault\"\n >\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n <div class=\"sky-status-indicator-message-wrapper\">\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <span #message=\"skyId\" skyId class=\"sky-status-indicator-message\" skyTrim\n ><ng-content /></span\n ><span class=\"sky-control-help-container\">\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [labelledBy]=\"message.id\"\n [helpKey]=\"helpKey\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n } @else {\n <ng-content select=\".sky-control-help\" />\n }\n </span>\n </div>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyStatusIndicatorComponent } from './status-indicator.component';\n\n@NgModule({\n declarations: [SkyStatusIndicatorComponent],\n imports: [\n CommonModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n SkyTrimModule,\n ],\n exports: [SkyStatusIndicatorComponent],\n})\nexport class SkyStatusIndicatorModule {}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\n\nconst CLASS_NAME = 'sky-highlight-mark';\nconst SPECIAL_CHAR_REGEX = /[-/\\\\^$*+?.()|[\\]{}]/g;\n\nfunction markNode(node: Text, searchRegex: RegExp): number {\n // The search regular expression is reused across calls to markNode(), so reset\n // it so it searches from the start of the string each time.\n searchRegex.lastIndex = 0;\n\n const text = node.nodeValue;\n\n if (text) {\n const match = searchRegex.exec(text);\n\n if (match) {\n // Split apart text node with mark tags in the middle on the search term.\n const matchIndex = match.index;\n\n const middle = node.splitText(matchIndex);\n middle.splitText(searchRegex.lastIndex - matchIndex);\n const middleClone = middle.cloneNode(true);\n\n const markNode = document.createElement('mark');\n markNode.className = CLASS_NAME;\n markNode.appendChild(middleClone);\n\n /* istanbul ignore else */\n if (middle.parentNode) {\n middle.parentNode.replaceChild(markNode, middle);\n }\n\n return 1;\n }\n }\n\n return 0;\n}\n\nfunction markTextNodes(node: Node, searchRegex: RegExp): number {\n if (node.nodeType === 3) {\n return markNode(node as Text, searchRegex);\n } else if (node.nodeType === 1 && node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n const childNode = node.childNodes[i];\n i += markTextNodes(childNode, searchRegex);\n }\n }\n\n return 0;\n}\n\nfunction removeHighlight(el: ElementRef): void {\n const matchedElements = Array.from(\n (el.nativeElement as Element).querySelectorAll(`mark.${CLASS_NAME}`),\n );\n\n if (matchedElements) {\n for (const node of matchedElements) {\n const parentNode = node.parentNode;\n\n if (parentNode && node.firstChild) {\n parentNode.replaceChild(node.firstChild, node);\n parentNode.normalize();\n }\n }\n }\n}\n\nfunction createSearchRegex(searchTerms: string[]): RegExp | undefined {\n let searchRegex: RegExp | undefined;\n\n if (searchTerms.length > 0) {\n // Escape all the special regular expression characters by adding a\n // preceding '\\' to each match.\n searchTerms = searchTerms.map((searchTerm) =>\n searchTerm.replace(SPECIAL_CHAR_REGEX, '\\\\$&'),\n );\n\n searchRegex = new RegExp(searchTerms.join('|'), 'gi');\n }\n\n return searchRegex;\n}\n\n/**\n * Highlights all matching text within the current DOM element.\n */\n@Directive({\n selector: '[skyHighlight]',\n})\nexport class SkyTextHighlightDirective\n implements OnChanges, AfterViewInit, OnDestroy\n{\n /**\n * The text to highlight.\n */\n @Input()\n public set skyHighlight(value: string | string[] | undefined) {\n value = value || [];\n\n if (Array.isArray(value)) {\n this.#searchTerms = value.filter((item) => !!item);\n // Reorder strings by their length in descending order to avoid missing matches\n // that contain substrings of other matches.\n this.#searchTerms.sort(function (a, b) {\n return b.length - a.length;\n });\n } else {\n this.#searchTerms = [value as string];\n }\n }\n\n @HostBinding('attr.skyHighlight') public readonly highlight = true;\n\n #existingHighlight = false;\n\n #observer: MutationObserver | undefined;\n\n #searchTerms: string[] = [];\n\n #el = inject(ElementRef);\n #observerSvc = inject(SkyMutationObserverService);\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['skyHighlight'] && !changes['skyHighlight'].firstChange) {\n this.#highlight();\n }\n }\n\n public ngAfterViewInit(): void {\n this.#observer = this.#observerSvc.create(() => {\n this.#highlight();\n });\n\n this.#highlight();\n }\n\n public ngOnDestroy(): void {\n this.#disconnectObserver();\n }\n\n #disconnectObserver(): void {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n }\n\n #highlight(): void {\n this.#disconnectObserver();\n\n if (this.#existingHighlight) {\n removeHighlight(this.#el);\n }\n\n const node = this.#el.nativeElement;\n\n if (node) {\n const searchRegex = createSearchRegex(this.#searchTerms);\n\n // mark all matched text in the DOM\n if (searchRegex) {\n markTextNodes(node, searchRegex);\n this.#existingHighlight = true;\n }\n }\n\n this.#observeDom();\n }\n\n #observeDom(): void {\n if (this.#observer) {\n const config = {\n attributes: false,\n childList: true,\n characterData: true,\n subtree: true,\n };\n\n this.#observer.observe(this.#el.nativeElement, config);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\n\nimport { SkyTextHighlightDirective } from './text-highlight.directive';\n\n@NgModule({\n imports: [SkyTextHighlightDirective],\n exports: [SkyTextHighlightDirective],\n providers: [SkyMutationObserverService],\n})\nexport class SkyTextHighlightModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { take } from 'rxjs';\n\n@Component({\n selector: 'sky-token',\n templateUrl: './token.component.html',\n styleUrls: ['./token.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyTokenComponent {\n /**\n * Whether to disable the token to prevent users from selecting it, dismissing it,\n * or navigating to it with the arrow keys. When the token is disabled,\n * users can still place focus on it using the `Tab` key.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = !!value;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The ARIA label for the token's close button. This sets the button's `aria-label` to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @default \"Remove item\"\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * Whether users can remove the token from the list by selecting the close button.\n * @default true\n */\n @Input()\n public set dismissible(value: boolean | undefined) {\n this.#_dismissible = value !== false;\n }\n\n public get dismissible(): boolean {\n return this.#_dismissible;\n }\n\n /**\n * Whether users can place focus on the token using the `Tab`. This does not\n * affect the ability to select the token, dismiss it, or navigate to it with the arrow keys.\n * @default true\n */\n @Input()\n public set focusable(value: boolean | undefined) {\n this.tabIndex = value !== false ? 0 : -1;\n }\n\n /**\n * Used by the tokens component to set the appropriate role for each token.\n * @internal\n */\n @Input()\n public role: string | undefined;\n\n /**\n * Fires when users click the close button.\n */\n @Output()\n public dismiss = new EventEmitter<void>();\n\n /**\n * Fires when users place focus on the token by navigating to it with the `Tab` key.\n */\n @Output()\n public tokenFocus = new EventEmitter<void>();\n\n @ViewChild('actionButton', { read: ElementRef, static: true })\n public actionButtonRef: ElementRef | undefined;\n\n public isFocused = false;\n public tokenActive = false;\n public closeActive = false;\n public tabIndex = 0;\n\n #elementRef = inject(ElementRef);\n\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n #_disabled = false;\n #_dismissible = true;\n\n protected onFocusIn(): void {\n if (!this.isFocused) {\n this.tokenFocus.emit();\n this.isFocused = true;\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n this.isFocused = this.#elementRef.nativeElement.contains(\n event.relatedTarget,\n );\n }\n\n public dismissToken(event: Event): void {\n event.stopPropagation();\n this.#announceState(\n 'skyux_tokens_token_dismissed',\n this.actionButtonRef?.nativeElement.textContent.trim(),\n );\n this.dismiss.emit();\n }\n\n public focusElement(): void {\n this.actionButtonRef?.nativeElement.focus();\n }\n\n public setTokenActive(tokenActive: boolean): void {\n this.tokenActive = tokenActive;\n }\n\n public setCloseActive(closeActive: boolean): void {\n this.closeActive = closeActive;\n }\n\n #announceState(resourceString: string, ...args: any[]): void {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n}\n","<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"role\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"role === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n","export enum SkyTokensMessageType {\n /**\n * Places focus on the last token in the list.\n */\n FocusLastToken = 0,\n\n /**\n * Places focus on the token that is currently selected.\n */\n FocusActiveToken = 1,\n\n /**\n * Places focus on the token before the currently selected token.\n */\n FocusPreviousToken = 2,\n\n /**\n * Places focus on the token after the currently selected token.\n */\n FocusNextToken = 3,\n\n /**\n * Removes the token that is currently selected from the list of tokens.\n */\n RemoveActiveToken = 4,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TrackByFunction,\n ViewChildren,\n afterNextRender,\n inject,\n signal,\n} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyTokenComponent } from './token.component';\nimport { SkyToken } from './types/token';\nimport { SkyTokenSelectedEventArgs } from './types/token-selected-event-args';\nimport { SkyTokensMessage } from './types/tokens-message';\nimport { SkyTokensMessageType } from './types/tokens-message-type';\n\nconst DISPLAY_WITH_DEFAULT = 'name';\n\n/**\n * Creates a container that enables navigation between tokens using keyboard arrow keys.\n * This is useful when combined with other components where the <kbd>Tab</kbd> key is\n * reserved for other functions, such as the SKY UX Lookup component.\n */\n@Component({\n selector: 'sky-tokens',\n templateUrl: './tokens.component.html',\n styleUrls: ['./tokens.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyTokensComponent implements OnDestroy {\n /**\n * Whether to disable the tokens list to prevent users from selecting tokens,\n * dismissing tokens, or navigating through the list with the arrow keys. When the tokens list\n * is disabled, users can still place focus on items in the list using the `Tab` key.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = !!value;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Whether users can remove a token from the list by selecting a token's close button.\n * @default true\n */\n @Input()\n public set dismissible(value: boolean | undefined) {\n this.#_dismissible = value !== false;\n }\n\n public get dismissible(): boolean {\n return this.#_dismissible;\n }\n\n /**\n * The token property to display for each item in the tokens list.\n * @default \"name\"\n */\n @Input()\n public set displayWith(value: string | undefined) {\n this.#_displayWith = value || DISPLAY_WITH_DEFAULT;\n }\n\n public get displayWith(): string {\n return this.#_displayWith;\n }\n\n /**\n * The token property that represents the token's unique identifier. When this property\n * is set, animations are enabled when dismissing tokens.\n */\n @Input()\n public trackWith: string | undefined;\n\n /**\n * Whether users can place focus on tokens in the list using the `Tab` key.\n * This does not affect the ability of users to select tokens, dismiss tokens,\n * or navigate through the list with the arrow keys.\n * @default true\n */\n @Input()\n public set focusable(value: boolean | undefined) {\n this.#_focusable = value !== false;\n }\n\n public get focusable(): boolean {\n return this.#_focusable;\n }\n\n /**\n * The array of tokens to include in the list.\n */\n @Input()\n public set tokens(value: SkyToken[] | undefined) {\n this.#_tokens = value || [];\n // The previous behavior was to set `this._tokens = value`, then emit `this._tokens`,\n // which would emit `undefined` instead of a default value of `[]` returned by the\n // get accessor when set to `undefined`. Emitting `value` instead of `this.#_tokensOrDefault`\n // preserves that behavior.\n this.tokensChange.emit(value);\n\n this.#queueTokensRenderedEmit();\n }\n\n public get tokens(): SkyToken[] {\n return this.#_tokens;\n }\n\n /**\n * The observable of `SkyTokensMessage` that can place focus on a\n * particular token or remove the active token from the list.\n */\n @Input()\n public set messageStream(value: Subject<SkyTokensMessage> | undefined) {\n this.#_messageStream = value || new Subject<SkyTokensMessage>();\n this.#initMessageStream();\n }\n\n public get messageStream(): Subject<SkyTokensMessage> {\n return this.#_messageStream;\n }\n\n /**\n * Fires when users navigate through the tokens list with the `Tab` key\n * and attempt to move past the final token in the list.\n */\n @Output()\n public focusIndexOverRange = new EventEmitter<void>();\n\n /**\n * Fires when users navigate through the tokens list with the `Tab` key\n * and attempt to move before the first token in the list.\n */\n @Output()\n public focusIndexUnderRange = new EventEmitter<void>();\n\n /**\n * Fires when users select a token in the list. This event emits the selected token.\n */\n @Output()\n public tokenSelected = new EventEmitter<SkyTokenSelectedEventArgs>();\n\n /**\n * Fires when the tokens in the list change.\n * This event emits an array of the tokens in the updated list.\n */\n @Output()\n public tokensChange = new EventEmitter<SkyToken[]>();\n\n /**\n * Fires when all animations on the tokens are complete.\n * @internal\n */\n @Output()\n public tokensRendered = new EventEmitter<void>();\n\n public get activeIndex(): number {\n return this.#_activeIndex;\n }\n\n public set activeIndex(value: number) {\n if (value >= this.#_tokens.length) {\n value = this.#_tokens.length - 1;\n this.focusIndexOverRange.emit();\n }\n\n if (value < 0) {\n value = 0;\n this.focusIndexUnderRange.emit();\n }\n\n this.#_activeIndex = value || 0;\n }\n\n public trackTokenFn: TrackByFunction<SkyToken>;\n\n #_disabled = false;\n #_dismissible = true;\n #_focusable = true;\n #_tokens: SkyToken[] = [];\n #_displayWith = DISPLAY_WITH_DEFAULT;\n\n @ViewChildren(SkyTokenComponent)\n public tokenComponents: QueryList<SkyTokenComponent> | undefined;\n\n #messageStreamSub: Subscription | undefined;\n #ngUnsubscribe = new Subject<void>();\n #tokensRenderedQueued = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #injector = inject(Injector);\n\n #_activeIndex = 0;\n #_messageStream = new Subject<SkyTokensMessage>();\n\n /**\n * Tracks whether the component has completed its initial render.\n * Used to suppress enter animations on first load.\n */\n protected readonly animationReady = signal(false);\n\n constructor() {\n // Wait for Angular's animation scheduler to remove initial enter classes\n // before enabling enter animations for future token changes.\n afterNextRender({\n read: () => {\n requestAnimationFrame(() => {\n this.animationReady.set(true);\n });\n },\n });\n\n this.#initMessageStream();\n\n // Angular calls the trackBy function without applying the component instance's scope.\n // Use a fat-arrow function so the current component instance's trackWith property can\n // be referenced.\n this.trackTokenFn = (_index, item): unknown => {\n if (this.trackWith) {\n return item.value[this.trackWith];\n }\n\n return item;\n };\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public onTokenClick(token: SkyToken): void {\n if (this.disabled) {\n return;\n }\n\n this.#notifyTokenSelected(token);\n }\n\n public onTokenKeyDown(event: KeyboardEvent): void {\n if (!this.disabled) {\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n this.#_messageStream.next({\n type: SkyTokensMessageType.FocusPreviousToken,\n });\n event.preventDefault();\n break;\n\n case 'Right':\n case 'ArrowRight':\n this.#_messageStream.next({\n type: SkyTokensMessageType.FocusNextToken,\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public selectToken(token: SkyToken): void {\n if (!this.disabled) {\n this.#notifyTokenSelected(token);\n }\n }\n\n public removeToken(token: SkyToken): void {\n this.tokens = this.tokens.filter((t) => t !== token);\n this.#changeDetector.detectChanges();\n }\n\n #focusPreviousToken(): void {\n this.activeIndex--;\n this.#focusActiveToken();\n }\n\n #focusNextToken(): void {\n this.activeIndex++;\n this.#focusActiveToken();\n }\n\n #focusLastToken(): void {\n if (this.tokenComponents) {\n this.activeIndex = this.tokenComponents.length - 1;\n this.#focusActiveToken();\n }\n }\n\n #focusActiveToken(): void {\n if (this.tokenComponents) {\n const tokenComponent = this.tokenComponents.find(\n (_comp: SkyTokenComponent, i: number) => {\n return this.activeIndex === i;\n },\n );\n\n if (tokenComponent) {\n tokenComponent.focusElement();\n }\n }\n }\n\n #removeActiveToken(): void {\n const token = this.tokens[this.activeIndex];\n if (token) {\n this.removeToken(token);\n }\n }\n\n #initMessageStream(): void {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n }\n\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message: SkyTokensMessage) => {\n switch (message.type) {\n case SkyTokensMessageType.FocusLastToken:\n this.#focusLastToken();\n break;\n\n case SkyTokensMessageType.FocusActiveToken:\n this.#focusActiveToken();\n break;\n\n case SkyTokensMessageType.FocusPreviousToken:\n this.#focusPreviousToken();\n break;\n\n case SkyTokensMessageType.FocusNextToken:\n this.#focusNextToken();\n break;\n\n case SkyTokensMessageType.RemoveActiveToken:\n this.#removeActiveToken();\n break;\n }\n });\n }\n\n #notifyTokenSelected(token: SkyToken): void {\n this.tokenSelected.emit({\n token,\n });\n }\n\n /**\n * Debounces the tokensRendered emit so that rapid token changes\n * (e.g. bulk additions or removals) result in a single event.\n */\n #queueTokensRenderedEmit(): void {\n if (this.#tokensRenderedQueued) {\n return;\n }\n\n this.#tokensRenderedQueued = true;\n\n afterNextRender(\n () => {\n this.#tokensRenderedQueued = false;\n this.tokensRendered.emit();\n },\n {\n injector: this.#injector,\n },\n );\n }\n}\n","<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"tokens.length ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <div class=\"sky-tokens-content\" [attr.role]=\"tokens.length ? 'row' : null\">\n <div [attr.role]=\"tokens.length ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyScreenReaderLabelDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyTokenComponent } from './token.component';\nimport { SkyTokensComponent } from './tokens.component';\n\n@NgModule({\n declarations: [SkyTokenComponent, SkyTokensComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyIdModule,\n SkyScreenReaderLabelDirective,\n ],\n exports: [SkyTokenComponent, SkyTokensComponent],\n})\nexport class SkyTokensModule {}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nconst busyElements: Record<\n string,\n {\n busyEl: HTMLElement | undefined;\n listener: () => void;\n restoreFocusElement?: HTMLElement | undefined;\n restoreFocusCheckElement?: HTMLElement | undefined;\n }\n> = {};\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyWaitAdapterService implements OnDestroy {\n public static isPageWaitActive = false;\n\n #focusableElements: HTMLElement[] | undefined;\n #renderer: Renderer2;\n\n constructor() {\n this.#renderer = inject(RendererFactory2).createRenderer(undefined, null);\n }\n\n public ngOnDestroy(): void {\n this.#clearListeners();\n }\n\n public setWaitBounds(waitEl: ElementRef): void {\n this.#renderer.addClass(\n waitEl.nativeElement.parentElement,\n 'sky-wait-element-active',\n );\n }\n\n public removeWaitBounds(waitEl: ElementRef): void {\n this.#renderer.removeClass(\n waitEl.nativeElement.parentElement,\n 'sky-wait-element-active',\n );\n }\n\n public setBusyState(\n waitEl: ElementRef,\n isFullPage: boolean,\n isWaiting: boolean,\n isNonBlocking: boolean,\n waitComponentId?: string,\n ): void {\n const busyEl = isFullPage\n ? document.body\n : waitEl.nativeElement.parentElement;\n\n if (!isNonBlocking) {\n if (isWaiting) {\n let restoreFocusElement: HTMLElement | undefined = undefined;\n let restoreFocusCheckElement: HTMLElement | undefined = undefined;\n this.#renderer.setAttribute(busyEl, 'aria-busy', 'true');\n\n // Remove focus from page when full page blocking wait\n if (isFullPage || busyEl.contains(document.activeElement)) {\n if (document.activeElement !== document.body) {\n restoreFocusElement = document.activeElement as HTMLElement;\n }\n this.#clearDocumentFocus();\n restoreFocusCheckElement = document.activeElement as HTMLElement;\n }\n\n if (isFullPage) {\n SkyWaitAdapterService.isPageWaitActive = true;\n const endListenerFunc = this.#renderer.listen(\n document.body,\n 'keydown',\n (event: KeyboardEvent) => {\n /*istanbul ignore else */\n if (event.key) {\n /* istanbul ignore else */\n if (event.key.toLowerCase() === 'tab') {\n (event.target as HTMLElement).blur();\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n this.#clearDocumentFocus();\n }\n }\n },\n );\n\n if (waitComponentId) {\n busyElements[waitComponentId] = {\n listener: endListenerFunc,\n busyEl: undefined,\n restoreFocusElement,\n restoreFocusCheckElement,\n };\n }\n } else {\n const endListenerFunc = this.#renderer.listen(\n busyEl,\n 'focusin',\n (event: KeyboardEvent) => {\n /* istanbul ignore else */\n if (!isNonBlocking) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (SkyWaitAdapterService.isPageWaitActive) {\n this.#clearDocumentFocus();\n } else {\n // Propagate tab navigation if attempted into waited element\n const target = event.target as HTMLElement;\n\n if (target) {\n target.blur();\n this.#focusNextElement(target, this.#isShift(event));\n }\n }\n }\n },\n );\n\n if (waitComponentId) {\n busyElements[waitComponentId] = {\n listener: endListenerFunc,\n busyEl,\n restoreFocusElement,\n restoreFocusCheckElement,\n };\n }\n }\n } else {\n this.#renderer.removeAttribute(busyEl, 'aria-busy');\n\n if (isFullPage) {\n SkyWaitAdapterService.isPageWaitActive = false;\n }\n\n if (waitComponentId && waitComponentId in busyElements) {\n const busyElement = busyElements[waitComponentId];\n\n busyElement.listener();\n\n // If there is a restore focus element and the focus has not moved, restore focus.\n if (busyElement.restoreFocusCheckElement === document.activeElement) {\n busyElement.restoreFocusElement?.focus();\n }\n\n delete busyElements[waitComponentId];\n }\n }\n }\n }\n\n #focusNextElement(targetElement: HTMLElement, shiftKey: boolean): void {\n const focusable = this.#getFocusableElements();\n\n // If shift tab, go in the other direction\n const modifier = shiftKey ? -1 : 1;\n\n // Find the next navigable element that isn't waiting\n const startingIndex = focusable.indexOf(targetElement);\n let curIndex = startingIndex + modifier;\n while (\n focusable[curIndex] &&\n this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n curIndex += modifier;\n }\n\n if (\n focusable[curIndex] &&\n !this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n focusable[curIndex].focus();\n } else {\n // Try wrapping the navigation\n /* istanbul ignore next */\n /* sanity check */\n curIndex = modifier > 0 ? 0 : focusable.length - 1;\n while (\n curIndex !== startingIndex &&\n focusable[curIndex] &&\n this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n /* istanbul ignore next */\n /* sanity check */\n curIndex += modifier;\n }\n\n /* istanbul ignore else */\n /* sanity check */\n if (\n focusable[curIndex] &&\n !this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n focusable[curIndex].focus();\n } else {\n // No valid target, wipe focus\n this.#clearDocumentFocus();\n }\n }\n\n // clear focusableElements list\n this.#focusableElements = undefined;\n }\n\n #isShift(event: Event): boolean {\n // Determine if shift+tab was used based on element order\n const elements = this.#getFocusableElements().filter(\n (elem) => !this.#isElementHidden(elem),\n );\n\n const previousInd = elements.indexOf((event as any).relatedTarget);\n const currentInd = elements.indexOf(event.target as HTMLElement);\n\n return (\n previousInd === currentInd + 1 ||\n (previousInd === 0 && currentInd === elements.length - 1) ||\n previousInd > currentInd ||\n !(event as any).relatedTarget\n );\n }\n\n #isElementHidden(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n return style.display === 'none' || style.visibility === 'hidden';\n }\n\n #isElementBusyOrHidden(element: HTMLElement): boolean {\n if (this.#isElementHidden(element)) {\n return true;\n }\n\n for (const key of Object.keys(busyElements)) {\n const parentElement = busyElements[key].busyEl;\n if (parentElement && parentElement.contains(element)) {\n return true;\n }\n }\n return false;\n }\n\n #clearDocumentFocus(): void {\n const activeElement = document.activeElement as HTMLElement;\n\n /* istanbul ignore else */\n if (activeElement) {\n activeElement.blur();\n }\n\n document.body.focus();\n }\n\n #getFocusableElements(): HTMLElement[] {\n // Keep this cached so we can reduce queries\n if (this.#focusableElements) {\n return this.#focusableElements;\n }\n\n // Select all possible focusable elements\n const focusableElements =\n 'a[href], ' +\n 'area[href], ' +\n \"input:not([disabled]):not([tabindex='-1']), \" +\n \"button:not([disabled]):not([tabindex='-1']), \" +\n \"select:not([disabled]):not([tabindex='-1']), \" +\n \"textarea:not([disabled]):not([tabindex='-1']), \" +\n 'iframe, object, embed, ' +\n \"*[tabindex]:not([tabindex='-1']), \" +\n '*[contenteditable=true]';\n\n this.#focusableElements = Array.prototype.filter.call(\n document.body.querySelectorAll(focusableElements),\n (element: HTMLElement) => {\n return (\n element.offsetWidth > 0 ||\n element.offsetHeight > 0 ||\n element === document.activeElement\n );\n },\n );\n return this.#focusableElements;\n }\n\n #clearListeners(): void {\n SkyWaitAdapterService.isPageWaitActive = false;\n for (const key of Object.keys(busyElements)) {\n busyElements[key].listener();\n delete busyElements[key];\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyWaitAdapterService } from './wait-adapter.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-wait',\n templateUrl: './wait.component.html',\n styleUrls: ['./wait.component.scss'],\n providers: [SkyWaitAdapterService],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [CommonModule, SkyIndicatorsResourcesModule],\n})\nexport class SkyWaitComponent implements OnInit, OnDestroy {\n /**\n * The ARIA label for the wait icon.\n * This sets the icon's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when an element or page loads and when users tab to a wait icon.\n * The default value varies based on whether the wait is for an element or a page and whether it is a blocking wait. For example, the default for a page-level blocking wait is \"Page loading. Please wait.\"\n * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.\n * \"For more information, see the Design tab and the [WAI-ARIA `aria-label` definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public set ariaLabel(value: string | undefined) {\n this.#customAriaLabel = value;\n this.#publishAriaLabel();\n }\n\n /**\n * When set to `true`, wait indication appears on the parent element of the `sky-wait` component.\n */\n @Input()\n public set isWaiting(value: boolean | undefined) {\n if (!this.isFullPage) {\n if (value) {\n this.#adapterService.setWaitBounds(this.#elRef);\n } else {\n this.#adapterService.removeWaitBounds(this.#elRef);\n }\n }\n\n this.#adapterService.setBusyState(\n this.#elRef,\n !!this.isFullPage,\n !!value,\n !!this.isNonBlocking,\n this.#id,\n );\n\n if (value) {\n this.#liveAnnouncer.announce(this.ariaLabelStream.getValue());\n } else if (this.#_isWaiting) {\n // NOTE: This should only happen if the wait was previously waiting and no longer is waiting.\n this.#liveAnnouncer.announce(\n this.screenReaderCompletedTextStream.getValue(),\n );\n }\n\n this.#_isWaiting = value;\n }\n\n public get isWaiting(): boolean | undefined {\n return this.#_isWaiting;\n }\n\n /**\n * When set to `true`, wait indication appears on the page level instead of the\n * parent element level. We recommend that you use the `beginBlockingPageWait` or\n * `beginNonBlockingPageWait` functions of the `SkyWaitService` instead of setting this\n * on the component level.\n * @default false\n */\n @Input()\n public set isFullPage(value: boolean | undefined) {\n /* istanbul ignore else: untestable */\n if (value) {\n this.#adapterService.removeWaitBounds(this.#elRef);\n } else if (this.isWaiting) {\n this.#adapterService.setWaitBounds(this.#elRef);\n }\n\n this.#_isFullPage = value;\n this.#publishAriaLabel();\n this.#publishScreenReaderCompletedText();\n }\n\n public get isFullPage(): boolean | undefined {\n return this.#_isFullPage;\n }\n\n /**\n * When set to `true`, wait indication appears in the bottom left corner of the element\n * instead of hiding the entire parent element.\n * @default false\n */\n @Input()\n public set isNonBlocking(value: boolean | undefined) {\n this.#_isNonBlocking = value;\n this.#publishAriaLabel();\n }\n\n public get isNonBlocking(): boolean | undefined {\n return this.#_isNonBlocking;\n }\n\n /**\n * Screen reader text [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when the wait toggles off.\n * The default varies based on whether the wait is for an element or a page.\n * For example, the default for a page-level wait is \"Page loading complete.\"\n * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.\n * For more information, see the Design tab and the [WCAG documentation on status messages](https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html).\n */\n @Input()\n public set screenReaderCompletedText(value: string | undefined) {\n this.#customScreenReaderCompletedText = value;\n this.#publishScreenReaderCompletedText();\n }\n\n public ariaLabelStream = new BehaviorSubject<string>('');\n public ariaLiveText = '';\n public screenReaderCompletedTextStream = new BehaviorSubject<string>('');\n\n #customAriaLabel: string | undefined;\n #customScreenReaderCompletedText: string | undefined;\n #id = `sky-wait-${++nextId}`;\n #ngUnsubscribe = new Subject<void>();\n\n #_isFullPage: boolean | undefined;\n #_isNonBlocking: boolean | undefined;\n #_isWaiting: boolean | undefined;\n\n readonly #adapterService = inject(SkyWaitAdapterService);\n readonly #elRef = inject(ElementRef);\n readonly #liveAnnouncer = inject(SkyLiveAnnouncerService);\n readonly #resourceSvc = inject(SkyLibResourcesService);\n\n public ngOnInit(): void {\n this.#publishAriaLabel();\n this.#publishScreenReaderCompletedText();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #publishAriaLabel(): void {\n if (this.#customAriaLabel) {\n this.ariaLabelStream.next(this.#customAriaLabel);\n } else {\n const type = this.isFullPage ? '_page' : '';\n const blocking = this.isNonBlocking ? '' : '_blocking';\n const key = `skyux_wait${type}${blocking}_aria_alt_text`;\n this.#resourceSvc\n .getString(key)\n .pipe(take(1), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.ariaLabelStream.next(value);\n });\n }\n }\n\n #publishScreenReaderCompletedText(): void {\n if (this.#customScreenReaderCompletedText) {\n this.screenReaderCompletedTextStream.next(\n this.#customScreenReaderCompletedText,\n );\n } else {\n const type = this.isFullPage ? '_page' : '';\n const key = `skyux_wait${type}_screen_reader_completed_text`;\n this.#resourceSvc\n .getString(key)\n .pipe(take(1), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.screenReaderCompletedTextStream.next(value);\n });\n }\n }\n}\n","<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n @if (isWaiting) {\n <div\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyWaitComponent } from './wait.component';\n\n@NgModule({\n imports: [SkyWaitComponent],\n exports: [SkyWaitComponent],\n})\nexport class SkyWaitModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { SkyWaitComponent } from './wait.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-wait-page',\n templateUrl: './wait-page.component.html',\n styleUrls: ['./wait-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [SkyWaitComponent],\n})\nexport class SkyWaitPageComponent {\n @Input()\n public hasBlockingWait: boolean | undefined;\n\n @Input()\n public hasNonBlockingWait: boolean | undefined;\n}\n","<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n />\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n />\n</div>\n","import {\n ComponentRef,\n EnvironmentInjector,\n Injectable,\n inject,\n} from '@angular/core';\nimport { SkyAppWindowRef, SkyDynamicComponentService } from '@skyux/core';\n\nimport { Observable, defer as observableDefer } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { SkyWaitPageComponent } from './wait-page.component';\n\nlet waitComponent: SkyWaitPageComponent | undefined;\nlet waitComponentRef: ComponentRef<SkyWaitPageComponent> | undefined;\nlet pageWaitBlockingCount = 0;\nlet pageWaitNonBlockingCount = 0;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyWaitService {\n #environmentInjector = inject(EnvironmentInjector);\n #windowSvc = inject(SkyAppWindowRef);\n #dynamicComponentService = inject(SkyDynamicComponentService);\n\n /**\n * Starts a blocking page wait on the page.\n */\n public beginBlockingPageWait(): void {\n this.#beginPageWait(true);\n }\n\n /**\n * Starts a non-blocking page wait on the page.\n */\n public beginNonBlockingPageWait(): void {\n this.#beginPageWait(false);\n }\n\n /**\n * Ends a blocking page wait on the page. Blocking page wait indication\n * is removed when all running blocking page waits are ended.\n */\n public endBlockingPageWait(): void {\n this.#endPageWait(true);\n }\n\n /**\n * Ends a non-blocking page wait on the page. Non-blocking page wait indication\n * is removed when all running non-blocking page waits are ended.\n */\n public endNonBlockingPageWait(): void {\n this.#endPageWait(false);\n }\n\n /**\n * Clears all blocking and non-blocking page waits on the page.\n */\n public clearAllPageWaits(): void {\n this.#clearPageWait(true);\n this.#clearPageWait(false);\n }\n\n /**\n * @internal\n */\n public dispose(): void {\n if (waitComponent) {\n waitComponent = undefined;\n pageWaitBlockingCount = 0;\n pageWaitNonBlockingCount = 0;\n this.#dynamicComponentService.removeComponent(waitComponentRef);\n }\n }\n\n /**\n * Launches a page wait and automatically stops when the specific asynchronous event completes.\n */\n public blockingWrap<T>(observable: Observable<T>): Observable<T> {\n return observableDefer(() => {\n this.beginBlockingPageWait();\n return observable.pipe(finalize(() => this.endBlockingPageWait()));\n });\n }\n\n /**\n * Launches a non-blocking page wait and automatically stops when the specific\n * asynchronous event completes.\n */\n public nonBlockingWrap<T>(observable: Observable<T>): Observable<T> {\n return observableDefer(() => {\n this.beginNonBlockingPageWait();\n return observable.pipe(finalize(() => this.endNonBlockingPageWait()));\n });\n }\n\n #setWaitComponentProperties(isBlocking: boolean): void {\n if (waitComponent) {\n if (isBlocking) {\n waitComponent.hasBlockingWait = true;\n pageWaitBlockingCount++;\n } else {\n waitComponent.hasNonBlockingWait = true;\n pageWaitNonBlockingCount++;\n }\n }\n }\n\n #beginPageWait(isBlocking: boolean): void {\n if (!waitComponent) {\n /*\n Dynamic component creation needs to be done in a timeout to prevent ApplicationRef from\n crashing when wait service is called in Angular lifecycle functions.\n */\n this.#windowSvc.nativeWindow.setTimeout(() => {\n // Ensuring here that we recheck this after the setTimeout is over so that we don't clash\n // with any other waits that are created.\n if (!waitComponent) {\n waitComponentRef = this.#dynamicComponentService.createComponent(\n SkyWaitPageComponent,\n {\n environmentInjector: this.#environmentInjector,\n },\n );\n\n waitComponent = waitComponentRef.instance;\n }\n\n this.#setWaitComponentProperties(isBlocking);\n });\n } else {\n this.#setWaitComponentProperties(isBlocking);\n }\n }\n\n #endPageWait(isBlocking: boolean): void {\n /*\n Needs to yield so that wait creation can finish\n before it is dismissed in the event of a race.\n */\n this.#windowSvc.nativeWindow.setTimeout(() => {\n if (waitComponent) {\n if (isBlocking) {\n if (pageWaitBlockingCount > 0) {\n pageWaitBlockingCount--;\n }\n\n if (pageWaitBlockingCount < 1) {\n waitComponent.hasBlockingWait = false;\n }\n } else {\n if (pageWaitNonBlockingCount > 0) {\n pageWaitNonBlockingCount--;\n }\n\n if (pageWaitNonBlockingCount < 1) {\n waitComponent.hasNonBlockingWait = false;\n }\n }\n }\n });\n }\n\n #clearPageWait(isBlocking: boolean): void {\n // Wait for the component to be created before clearing it.\n this.#windowSvc.nativeWindow.setTimeout(() => {\n if (waitComponent) {\n if (isBlocking) {\n pageWaitBlockingCount = 0;\n waitComponent.hasBlockingWait = false;\n } else {\n pageWaitNonBlockingCount = 0;\n waitComponent.hasNonBlockingWait = false;\n }\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.SkyExpansionIndicatorComponent","i4","i3","i1.SkyTokenComponent","take","observableDefer"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-indicators.mjs","sources":["../../../../../libs/components/indicators/src/lib/modules/shared/sky-indicators-resources.module.ts","../../../../../libs/components/indicators/src/lib/modules/shared/indicator-icon-utility.ts","../../../../../libs/components/indicators/src/lib/modules/alert/alert.component.ts","../../../../../libs/components/indicators/src/lib/modules/alert/alert.component.html","../../../../../libs/components/indicators/src/lib/modules/alert/alert.module.ts","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.component.ts","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.component.html","../../../../../libs/components/indicators/src/lib/modules/expansion-indicator/expansion-indicator.module.ts","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.component.ts","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.component.html","../../../../../libs/components/indicators/src/lib/modules/chevron/chevron.module.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration-resolver.service.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.component.ts","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.component.html","../../../../../libs/components/indicators/src/lib/modules/illustration/illustration.module.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info-label.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info-value.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.component.ts","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.component.html","../../../../../libs/components/indicators/src/lib/modules/key-info/key-info.module.ts","../../../../../libs/components/indicators/src/lib/modules/label/label.component.ts","../../../../../libs/components/indicators/src/lib/modules/label/label.component.html","../../../../../libs/components/indicators/src/lib/modules/label/label.module.ts","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.component.ts","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.component.html","../../../../../libs/components/indicators/src/lib/modules/status-indicator/status-indicator.module.ts","../../../../../libs/components/indicators/src/lib/modules/text-highlight/text-highlight.directive.ts","../../../../../libs/components/indicators/src/lib/modules/text-highlight/text-highlight.module.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens-role-context.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/token.component.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/token.component.html","../../../../../libs/components/indicators/src/lib/modules/tokens/types/tokens-message-type.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.component.ts","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.component.html","../../../../../libs/components/indicators/src/lib/modules/tokens/tokens.module.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-adapter.service.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait.component.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait.component.html","../../../../../libs/components/indicators/src/lib/modules/wait/wait.module.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-page.component.ts","../../../../../libs/components/indicators/src/lib/modules/wait/wait-page.component.html","../../../../../libs/components/indicators/src/lib/modules/wait/wait.service.ts","../../../../../libs/components/indicators/src/skyux-indicators.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-indicators' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_alert_close: { message: 'Close the alert' },\n skyux_alert_sr_attention: { message: 'Attention:' },\n skyux_alert_sr_caution: { message: 'Caution:' },\n skyux_alert_sr_completed: { message: 'Completed:' },\n skyux_alert_sr_danger: { message: 'Danger:' },\n skyux_alert_sr_error: { message: 'Error:' },\n skyux_alert_sr_important_info: { message: 'Important information:' },\n skyux_alert_sr_important_warning: { message: 'Important warning:' },\n skyux_alert_sr_success: { message: 'Success:' },\n skyux_alert_sr_warning: { message: 'Warning:' },\n skyux_help_inline_button_title: { message: 'Show help content' },\n skyux_label_sr_attention: { message: 'Attention:' },\n skyux_label_sr_caution: { message: 'Caution:' },\n skyux_label_sr_completed: { message: 'Completed:' },\n skyux_label_sr_danger: { message: 'Danger:' },\n skyux_label_sr_error: { message: 'Error:' },\n skyux_label_sr_important_info: { message: 'Important information:' },\n skyux_label_sr_important_warning: { message: 'Important warning:' },\n skyux_label_sr_success: { message: 'Success:' },\n skyux_label_sr_warning: { message: 'Warning:' },\n skyux_status_indicator_sr_attention: { message: 'Attention:' },\n skyux_status_indicator_sr_caution: { message: 'Caution:' },\n skyux_status_indicator_sr_completed: { message: 'Completed:' },\n skyux_status_indicator_sr_danger: { message: 'Danger:' },\n skyux_status_indicator_sr_error: { message: 'Error:' },\n skyux_status_indicator_sr_important_info: {\n message: 'Important information:',\n },\n skyux_status_indicator_sr_important_warning: {\n message: 'Important warning:',\n },\n skyux_status_indicator_sr_success: { message: 'Success:' },\n skyux_status_indicator_sr_warning: { message: 'Warning:' },\n skyux_tokens_dismiss_button_default_label: { message: 'Remove ' },\n skyux_tokens_dismiss_button_title: { message: 'Remove item' },\n skyux_tokens_token_dismissed: { message: '{0} removed' },\n skyux_wait_aria_alt_text: { message: 'Loading.' },\n skyux_wait_blocking_aria_alt_text: { message: 'Loading. Please wait.' },\n skyux_wait_page_aria_alt_text: { message: 'Page loading.' },\n skyux_wait_page_blocking_aria_alt_text: {\n message: 'Page loading. Please wait.',\n },\n skyux_wait_screen_reader_completed_text: { message: 'Loading complete.' },\n skyux_wait_page_screen_reader_completed_text: {\n message: 'Page loading complete.',\n },\n },\n 'FR-CA': {\n skyux_alert_close: { message: 'Fermer l’alerte' },\n skyux_alert_sr_attention: { message: 'Attention :' },\n skyux_alert_sr_caution: { message: 'Mise en garde :' },\n skyux_alert_sr_completed: { message: 'Terminé :' },\n skyux_alert_sr_danger: { message: 'Danger :' },\n skyux_alert_sr_error: { message: 'Erreur :' },\n skyux_alert_sr_important_info: { message: 'Information importante :' },\n skyux_alert_sr_important_warning: { message: 'Avertissement important :' },\n skyux_alert_sr_success: { message: 'Réussi :' },\n skyux_alert_sr_warning: { message: 'Avertissement :' },\n skyux_help_inline_button_title: {\n message: 'Afficher le contenu de l’aide',\n },\n skyux_label_sr_attention: { message: 'Attention :' },\n skyux_label_sr_caution: { message: 'Mise en garde :' },\n skyux_label_sr_completed: { message: 'Terminé :' },\n skyux_label_sr_danger: { message: 'Danger :' },\n skyux_label_sr_error: { message: 'Erreur :' },\n skyux_label_sr_important_info: { message: 'Information importante :' },\n skyux_label_sr_important_warning: { message: 'Avertissement important :' },\n skyux_label_sr_success: { message: 'Réussi :' },\n skyux_label_sr_warning: { message: 'Avertissement :' },\n skyux_status_indicator_sr_attention: { message: 'Attention :' },\n skyux_status_indicator_sr_caution: { message: 'Mise en garde :' },\n skyux_status_indicator_sr_completed: { message: 'Terminé :' },\n skyux_status_indicator_sr_danger: { message: 'Danger :' },\n skyux_status_indicator_sr_error: { message: 'Erreur :' },\n skyux_status_indicator_sr_important_info: {\n message: 'Information importante :',\n },\n skyux_status_indicator_sr_important_warning: {\n message: 'Avertissement important :',\n },\n skyux_status_indicator_sr_success: { message: 'Réussi :' },\n skyux_status_indicator_sr_warning: { message: 'Avertissement :' },\n skyux_tokens_dismiss_button_default_label: { message: 'Retirer ' },\n skyux_tokens_dismiss_button_title: { message: 'Retirer l’article' },\n skyux_tokens_token_dismissed: { message: '{0} retiré' },\n skyux_wait_aria_alt_text: { message: 'Chargement en cours.' },\n skyux_wait_blocking_aria_alt_text: {\n message: 'Chargement en cours. Veuillez patienter.',\n },\n skyux_wait_page_aria_alt_text: {\n message: 'Chargement de la page en cours.',\n },\n skyux_wait_page_blocking_aria_alt_text: {\n message: 'Chargement de la page en cours. Veuillez patienter.',\n },\n skyux_wait_screen_reader_completed_text: { message: 'Chargement terminé.' },\n skyux_wait_page_screen_reader_completed_text: {\n message: 'Chargement de la page terminé.',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyIndicatorsResourcesModule {}\n","import { SkyIndicatorIconType } from './indicator-icon-type';\n\n/**\n * @internal\n */\nexport class SkyIndicatorIconUtility {\n public static getIconNameForType(\n indicatorType: SkyIndicatorIconType,\n ): string {\n let icon: string;\n\n switch (indicatorType) {\n case 'danger':\n case 'warning':\n icon = 'warning';\n break;\n case 'info':\n icon = 'info';\n break;\n case 'success':\n icon = 'success';\n break;\n }\n\n return icon;\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n inject,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subscription } from 'rxjs';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconType } from '../shared/indicator-icon-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nconst ALERT_TYPE_DEFAULT = 'warning';\n\n@Component({\n selector: 'sky-alert',\n styleUrls: [\n './alert.default.component.scss',\n './alert.modern.component.scss',\n ],\n templateUrl: './alert.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyAlertComponent implements AfterViewChecked, OnInit, OnDestroy {\n /**\n * The style for the alert, which determines the icon and background color.\n * The valid options are `danger`, `info`, `success`, and `warning`.\n * @default \"warning\"\n */\n @Input()\n public set alertType(value: SkyIndicatorIconType | undefined) {\n if (value !== this.alertTypeOrDefault) {\n this.alertTypeOrDefault = value || ALERT_TYPE_DEFAULT;\n this.#updateAlertIcon();\n }\n }\n\n /**\n * Whether to include a close button for users to dismiss the alert.\n * @default false\n */\n @Input()\n public closeable: boolean | undefined;\n\n /**\n * Whether the alert is closed.\n * @default false\n */\n @Input()\n public closed: boolean | undefined;\n\n /**\n * The predefined text to be read by screen readers for users who cannot see the alert icon.\n * This property is optional but will be required in future versions of SKY UX.\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n /**\n * Fires when users close the alert.\n */\n @Output()\n public closedChange = new EventEmitter<boolean>();\n\n public iconName =\n SkyIndicatorIconUtility.getIconNameForType(ALERT_TYPE_DEFAULT);\n\n public alertTypeOrDefault: SkyIndicatorIconType = ALERT_TYPE_DEFAULT;\n\n public descriptionComputed: string | undefined;\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n\n #_customDescription: string | undefined;\n\n #descriptionTypeResourceSubscription: Subscription | undefined;\n #descriptionTypeWarned: boolean | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #resources = inject(SkyLibResourcesService);\n readonly #logSvc = inject(SkyLogService);\n\n public ngOnInit(): void {\n this.#updateAlertIcon();\n }\n\n public ngAfterViewChecked(): void {\n if (!this.descriptionType && !this.#descriptionTypeWarned) {\n this.#logSvc.deprecated('SkyAlertComponent without `descriptionType`', {\n deprecationMajorVersion: 8,\n replacementRecommendation:\n 'Always specify a `descriptionType` property.',\n });\n\n this.#descriptionTypeWarned = true;\n }\n }\n\n public ngOnDestroy(): void {\n this.#unsubscribe();\n }\n\n public close(): void {\n this.closed = true;\n this.closedChange.emit(true);\n }\n\n #updateAlertIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.alertTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n this.#unsubscribe();\n\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = undefined;\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#descriptionTypeResourceSubscription = this.#resources\n .getString(\n 'skyux_alert_sr_' + this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n\n #unsubscribe(): void {\n if (this.#descriptionTypeResourceSubscription) {\n this.#descriptionTypeResourceSubscription.unsubscribe();\n this.#descriptionTypeResourceSubscription = undefined;\n }\n }\n}\n","<div\n class=\"sky-alert\"\n role=\"alert\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners': 'default',\n 'sky-box sky-elevation-1': 'modern'\n }\"\n [hidden]=\"closed\"\n [ngClass]=\"{\n 'sky-alert-info': alertTypeOrDefault === 'info',\n 'sky-alert-success': alertTypeOrDefault === 'success',\n 'sky-alert-warning': alertTypeOrDefault === 'warning',\n 'sky-alert-danger': alertTypeOrDefault === 'danger',\n 'sky-alert-closeable': closeable\n }\"\n>\n <div *skyThemeIf=\"'modern'\" aria-hidden=\"true\" class=\"sky-alert-icon\">\n <sky-icon iconSize=\"xl\" variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n <div *skyThemeIf=\"'default'\" aria-hidden=\"true\" class=\"sky-alert-icon\">\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <div class=\"sky-alert-content\">\n <ng-content />\n </div>\n <button\n class=\"sky-alert-close\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_alert_close' | skyLibResources\"\n [hidden]=\"!closeable\"\n (click)=\"close()\"\n >\n <span aria-hidden=\"true\">\n <sky-icon iconName=\"close\" />\n </span>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyAlertComponent } from './alert.component';\n\n@NgModule({\n declarations: [SkyAlertComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyAlertComponent],\n})\nexport class SkyAlertModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\n/**\n * Displays a chevron icon.\n * @internal\n */\n@Component({\n selector: 'sky-expansion-indicator',\n styleUrls: ['./expansion-indicator.component.scss'],\n templateUrl: './expansion-indicator.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyExpansionIndicatorComponent {\n /**\n * The direction that the chevron points, which can be up or down.\n */\n @Input()\n public set direction(value: string | undefined) {\n /* istanbul ignore else */\n if (value !== this.directionOrDefault) {\n this.directionOrDefault = value ? value : 'up';\n }\n }\n\n public directionOrDefault = 'up';\n}\n","<div\n aria-hidden=\"true\"\n class=\"sky-expansion-indicator\"\n [ngClass]=\"['sky-expansion-indicator-' + directionOrDefault]\"\n>\n <span class=\"sky-expansion-indicator-glyph-container\">\n <i class=\"sky-expansion-indicator-part sky-expansion-indicator-left\"> </i>\n <i class=\"sky-expansion-indicator-part sky-expansion-indicator-right\"> </i>\n </span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyExpansionIndicatorComponent } from './expansion-indicator.component';\n\n@NgModule({\n declarations: [SkyExpansionIndicatorComponent],\n imports: [CommonModule, SkyThemeModule],\n exports: [SkyExpansionIndicatorComponent],\n})\nexport class SkyExpansionIndicatorModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\n/**\n * Creates an accessible button that wraps the chevron icon.\n * @internal\n */\n@Component({\n selector: 'sky-chevron',\n styleUrls: [\n './chevron.default.component.scss',\n './chevron.modern.component.scss',\n ],\n templateUrl: './chevron.component.html',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyChevronComponent {\n /**\n * The element whose contents are controlled by the chevron.\n * This sets the chevron's `aria-controls` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-controls` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-controls).\n */\n @Input()\n public ariaControls: string | undefined;\n\n /**\n * The ARIA label for the chevron. This sets the chevron's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The direction that the chevron points, which can be up or down.\n */\n @Input()\n public set direction(value: string | undefined) {\n /* istanbul ignore else */\n if (value !== this.directionOrDefault) {\n this.directionOrDefault = value ? value : 'up';\n /* istanbul ignore else */\n if (this.directionOrDefault === 'up') {\n this.ariaExpanded = true;\n } else if (this.directionOrDefault === 'down') {\n this.ariaExpanded = false;\n }\n }\n }\n\n /**\n * Whether to disable the chevron button.\n */\n @Input()\n public disabled = false;\n\n /**\n * Fires when the direction of the chevron changes.\n */\n @Output()\n public directionChange = new EventEmitter<string>();\n\n public ariaExpanded = true;\n\n public directionOrDefault = 'up';\n\n public chevronClick(event: Event): void {\n event.stopPropagation();\n this.direction = this.directionOrDefault === 'up' ? 'down' : 'up';\n this.directionChange.emit(this.directionOrDefault);\n }\n\n public chevronKeyDown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key) {\n switch (event.key.toLowerCase()) {\n case ' ':\n case 'enter':\n this.direction = this.directionOrDefault === 'up' ? 'down' : 'up';\n this.directionChange.emit(this.directionOrDefault);\n event.preventDefault();\n event.stopPropagation();\n break;\n default:\n break;\n }\n }\n }\n}\n","<button\n class=\"sky-chevron\"\n type=\"button\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n [ngClass]=\"['sky-chevron-' + directionOrDefault]\"\n [skyThemeClass]=\"{\n 'sky-btn sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"chevronClick($event)\"\n (keydown)=\"chevronKeyDown($event)\"\n>\n <sky-expansion-indicator [direction]=\"directionOrDefault\" />\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyExpansionIndicatorModule } from '../expansion-indicator/expansion-indicator.module';\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyChevronComponent } from './chevron.component';\n\n/**\n * @internal\n */\n@NgModule({\n declarations: [SkyChevronComponent],\n imports: [\n CommonModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n SkyExpansionIndicatorModule,\n ],\n exports: [SkyChevronComponent],\n})\nexport class SkyChevronModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Resolves information about spot illustrations.\n */\n@Injectable()\nexport abstract class SkyIllustrationResolverService {\n /**\n * Resolves a URL for the specified illustration name to render in an `img`.\n */\n public abstract resolveUrl(name: string): Promise<string>;\n\n /**\n * Resolves the `href` of the SVG element to reference in `use`.\n * If both an `href` and a URL are resolved, the SVG with `href` will be rendered.\n */\n public resolveHref(name: string): Promise<string> {\n return Promise.resolve('');\n }\n\n /**\n * Gets the names of all available illustrations.\n */\n public getNames(): Promise<string[]> {\n return Promise.resolve([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { catchError, from, of, switchMap } from 'rxjs';\n\nimport { SkyIllustrationResolverService } from './illustration-resolver.service';\nimport { SkyIllustrationSize } from './illustration-size';\n\n/**\n * Displays a spot illustration at the specified size.\n */\n@Component({\n selector: 'sky-illustration',\n imports: [],\n templateUrl: './illustration.component.html',\n styleUrls: ['./illustration.component.scss'],\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyIllustrationComponent {\n readonly #resolverSvc = inject(SkyIllustrationResolverService, {\n optional: true,\n });\n\n /**\n * The name of the illustration to display.\n * @required\n */\n public readonly name = input.required<string>();\n\n /**\n * The size of the illustration.\n * @required\n */\n public readonly size = input.required<SkyIllustrationSize>();\n\n protected readonly url = toSignal(\n toObservable(this.name).pipe(\n switchMap((name) =>\n this.#resolverSvc ? from(this.#resolverSvc.resolveUrl(name)) : of(''),\n ),\n catchError(() => of('')),\n ),\n );\n\n protected readonly svgHref = toSignal(\n toObservable(this.name).pipe(\n switchMap((name) =>\n this.#resolverSvc ? from(this.#resolverSvc.resolveHref(name)) : of(''),\n ),\n catchError(() => of('')),\n ),\n );\n}\n","<div\n [attr.data-sky-illustration-name]=\"name()\"\n [class]=\"'sky-illustration-wrapper sky-illustration-' + size()\"\n>\n @if (svgHref(); as svgHrefValue) {\n <svg aria-hidden=\"true\" class=\"sky-illustration-svg\">\n <use [attr.xlink:href]=\"svgHrefValue\" />\n </svg>\n } @else {\n <img alt=\"\" loading=\"lazy\" class=\"sky-illustration-img\" [src]=\"url()\" />\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyIllustrationComponent } from './illustration.component';\n\n@NgModule({\n imports: [SkyIllustrationComponent],\n exports: [SkyIllustrationComponent],\n})\nexport class SkyIllustrationModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyTrimModule } from '@skyux/core';\n\n/**\n * Specifies a label to display in smaller text under or beside the value.\n * To display a help button beside the label, include a help button element, such as `sky-help-inline`,\n * in the `sky-key-info` element and a `sky-control-help` CSS class on that help button element.\n * @required\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyTrimModule],\n selector: 'sky-key-info-label',\n template: '<span skyTrim><ng-content /></span>',\n})\nexport class SkyKeyInfoLabelComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * Specifies a value to display in larger, bold text.\n * @required\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sky-key-info-value',\n styleUrl: './key-info-value.component.scss',\n template: '<ng-content />',\n // Disable view encapsulation to reduce selector specificity, making it\n // possible for users to override styles with font classes.\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyKeyInfoValueComponent {}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\nimport { SkyKeyInfoLayoutType } from './key-info-layout-type';\n\n@Component({\n imports: [NgClass, SkyHelpInlineModule, SkyIdModule],\n selector: 'sky-key-info',\n templateUrl: './key-info.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './key-info.component.scss',\n})\nexport class SkyKeyInfoComponent {\n /**\n * A help key that identifies the global help content to display. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline) button is\n * placed beside the key info. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help) as configured by the application.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * The content of the help popover. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the key info. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The layout for the key info. The vertical layout places the label under the\n * value, while the horizontal layout places the label beside the value.\n * @default \"vertical\"\n */\n @Input()\n public layout: SkyKeyInfoLayoutType | undefined = 'vertical';\n}\n","<div\n class=\"sky-key-info\"\n [ngClass]=\"{\n 'sky-key-info-horizontal': layout === 'horizontal'\n }\"\n>\n <div class=\"sky-key-info-value\">\n <ng-content select=\"sky-key-info-value\" />\n </div>\n <div class=\"sky-key-info-label sky-field-label sky-font-data-label\">\n <span #label=\"skyId\" skyId><ng-content select=\"sky-key-info-label\" /></span\n ><span class=\"sky-control-help-container\">\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [labelledBy]=\"label.id\"\n [helpKey]=\"helpKey\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n } @else {\n <ng-content select=\".sky-control-help\" />\n }\n </span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyKeyInfoLabelComponent } from './key-info-label.component';\nimport { SkyKeyInfoValueComponent } from './key-info-value.component';\nimport { SkyKeyInfoComponent } from './key-info.component';\n\n@NgModule({\n imports: [\n SkyKeyInfoComponent,\n SkyKeyInfoLabelComponent,\n SkyKeyInfoValueComponent,\n ],\n exports: [\n SkyKeyInfoComponent,\n SkyKeyInfoLabelComponent,\n SkyKeyInfoValueComponent,\n ],\n})\nexport class SkyKeyInfoModule {}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subscription } from 'rxjs/internal/Subscription';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nimport { SkyLabelType } from './label-type';\n\nconst LABEL_TYPE_DEFAULT: SkyLabelType = 'info';\n\n@Component({\n selector: 'sky-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n standalone: false,\n})\nexport class SkyLabelComponent implements AfterViewChecked, OnDestroy, OnInit {\n /**\n * The type of label to display.\n * @default 'info'\n */\n @Input()\n public set labelType(value: SkyLabelType | undefined) {\n this.labelTypeOrDefault = value === undefined ? LABEL_TYPE_DEFAULT : value;\n\n this.#updateIcon();\n }\n\n /**\n * The predefined text to be read by screen readers for users who cannot see the indicator icon.\n * This property is optional but will be required in future versions of SKY UX.\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n public descriptionComputed: string | undefined;\n\n public iconName =\n SkyIndicatorIconUtility.getIconNameForType(LABEL_TYPE_DEFAULT);\n\n public labelTypeOrDefault = LABEL_TYPE_DEFAULT;\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n #_customDescription: string | undefined;\n\n #descriptionTypeResourceSubscription: Subscription | undefined;\n #descriptionTypeWarned: boolean | undefined;\n\n #changeDetector = inject(ChangeDetectorRef);\n #resources = inject(SkyLibResourcesService);\n #logSvc = inject(SkyLogService);\n\n public ngOnInit(): void {\n this.#updateIcon();\n }\n\n public ngAfterViewChecked(): void {\n if (!this.descriptionType && !this.#descriptionTypeWarned) {\n this.#logSvc.deprecated('SkyLabelComponent without `descriptionType`', {\n deprecationMajorVersion: 8,\n replacementRecommendation:\n 'Always specify a `descriptionType` property.',\n });\n\n this.#descriptionTypeWarned = true;\n }\n }\n\n public ngOnDestroy(): void {\n this.#unsubscribe();\n }\n\n #updateIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.labelTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n this.#unsubscribe();\n\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = undefined;\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#descriptionTypeResourceSubscription = this.#resources\n .getString(\n 'skyux_label_sr_' + this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n\n #unsubscribe(): void {\n if (this.#descriptionTypeResourceSubscription) {\n this.#descriptionTypeResourceSubscription.unsubscribe();\n this.#descriptionTypeResourceSubscription = undefined;\n }\n }\n}\n","<span class=\"sky-label\" [ngClass]=\"'sky-label-' + labelTypeOrDefault\">\n <span class=\"sky-label-icon\">\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </span>\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <span class=\"sky-label-text\">\n <ng-content />\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyLabelComponent } from './label.component';\n\n@NgModule({\n declarations: [SkyLabelComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyLabelComponent],\n})\nexport class SkyLabelModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyIndicatorDescriptionType } from '../shared/indicator-description-type';\nimport { SkyIndicatorIconType } from '../shared/indicator-icon-type';\nimport { SkyIndicatorIconUtility } from '../shared/indicator-icon-utility';\n\nconst INDICATOR_TYPE_DEFAULT: SkyIndicatorIconType = 'warning';\n/**\n * Displays status text with an icon matching the specified indicator type.\n * To display a help button beside the label, include a help button element, such as\n * `sky-help-inline`, in the `sky-status-indicator` element and a `sky-control-help`\n * CSS class on that help button element.\n */\n@Component({\n selector: 'sky-status-indicator',\n templateUrl: './status-indicator.component.html',\n styleUrls: ['./status-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyStatusIndicatorComponent implements OnInit {\n /**\n * The style for the status indicator, which determines the icon.\n * @default \"warning\"\n */\n @Input()\n public set indicatorType(value: SkyIndicatorIconType) {\n this.indicatorTypeOrDefault =\n value === undefined ? INDICATOR_TYPE_DEFAULT : value;\n\n this.#updateIcon();\n }\n\n /**\n * The predefined text to be read by screen readers for users who\n * cannot see the indicator icon.\n * @required\n */\n @Input()\n public set descriptionType(value: SkyIndicatorDescriptionType | undefined) {\n this.#_descriptionType = value;\n this.#updateDescriptionComputed();\n }\n\n public get descriptionType(): SkyIndicatorDescriptionType | undefined {\n return this.#_descriptionType;\n }\n\n /**\n * The text to be read by screen readers for users who cannot see\n * the indicator icon when `descriptionType` is `custom`.\n */\n @Input()\n public set customDescription(value: string | undefined) {\n this.#_customDescription = value;\n this.#updateDescriptionComputed();\n }\n\n public get customDescription(): string | undefined {\n return this.#_customDescription;\n }\n\n /**\n * The content of the help popover. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the status indicator. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline) button is\n * placed beside the status indicator label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help) as configured by the application.\n */\n @Input()\n public helpKey: string | undefined;\n\n public descriptionComputed: string | undefined;\n\n public iconName = SkyIndicatorIconUtility.getIconNameForType(\n INDICATOR_TYPE_DEFAULT,\n );\n\n public indicatorTypeOrDefault: SkyIndicatorIconType = INDICATOR_TYPE_DEFAULT;\n\n #changeDetector = inject(ChangeDetectorRef);\n #resourcesSvc = inject(SkyLibResourcesService);\n\n #_descriptionType: SkyIndicatorDescriptionType | undefined;\n #_customDescription: string | undefined;\n\n public ngOnInit(): void {\n this.#updateIcon();\n }\n\n #updateIcon(): void {\n this.iconName = SkyIndicatorIconUtility.getIconNameForType(\n this.indicatorTypeOrDefault,\n );\n }\n\n #updateDescriptionComputed(): void {\n if (this.descriptionType) {\n switch (this.descriptionType) {\n case 'none':\n this.descriptionComputed = '';\n break;\n case 'custom':\n this.descriptionComputed = this.customDescription;\n break;\n default:\n this.#resourcesSvc\n .getString(\n 'skyux_status_indicator_sr_' +\n this.descriptionType.replace(/-/g, '_'),\n )\n .subscribe((value) => {\n this.descriptionComputed = value;\n this.#changeDetector.markForCheck();\n });\n\n break;\n }\n } else {\n this.descriptionComputed = undefined;\n }\n }\n}\n","@if (descriptionType) {\n <div class=\"sky-status-indicator\">\n <div\n aria-hidden=\"true\"\n class=\"sky-status-indicator-icon\"\n [ngClass]=\"'sky-status-indicator-icon-' + indicatorTypeOrDefault\"\n >\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n </div>\n <div class=\"sky-status-indicator-message-wrapper\">\n @if (descriptionComputed) {\n <span class=\"sky-screen-reader-only\">\n {{ descriptionComputed }}\n </span>\n }\n <span #message=\"skyId\" skyId class=\"sky-status-indicator-message\" skyTrim\n ><ng-content /></span\n ><span class=\"sky-control-help-container\">\n @if (helpPopoverContent || helpKey) {\n <sky-help-inline\n [labelledBy]=\"message.id\"\n [helpKey]=\"helpKey\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n } @else {\n <ng-content select=\".sky-control-help\" />\n }\n </span>\n </div>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyStatusIndicatorComponent } from './status-indicator.component';\n\n@NgModule({\n declarations: [SkyStatusIndicatorComponent],\n imports: [\n CommonModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyIndicatorsResourcesModule,\n SkyThemeModule,\n SkyTrimModule,\n ],\n exports: [SkyStatusIndicatorComponent],\n})\nexport class SkyStatusIndicatorModule {}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n inject,\n} from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\n\nconst CLASS_NAME = 'sky-highlight-mark';\nconst SPECIAL_CHAR_REGEX = /[-/\\\\^$*+?.()|[\\]{}]/g;\n\nfunction markNode(node: Text, searchRegex: RegExp): number {\n // The search regular expression is reused across calls to markNode(), so reset\n // it so it searches from the start of the string each time.\n searchRegex.lastIndex = 0;\n\n const text = node.nodeValue;\n\n if (text) {\n const match = searchRegex.exec(text);\n\n if (match) {\n // Split apart text node with mark tags in the middle on the search term.\n const matchIndex = match.index;\n\n const middle = node.splitText(matchIndex);\n middle.splitText(searchRegex.lastIndex - matchIndex);\n const middleClone = middle.cloneNode(true);\n\n const markNode = document.createElement('mark');\n markNode.className = CLASS_NAME;\n markNode.appendChild(middleClone);\n\n /* istanbul ignore else */\n if (middle.parentNode) {\n middle.parentNode.replaceChild(markNode, middle);\n }\n\n return 1;\n }\n }\n\n return 0;\n}\n\nfunction markTextNodes(node: Node, searchRegex: RegExp): number {\n if (node.nodeType === 3) {\n return markNode(node as Text, searchRegex);\n } else if (node.nodeType === 1 && node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n const childNode = node.childNodes[i];\n i += markTextNodes(childNode, searchRegex);\n }\n }\n\n return 0;\n}\n\nfunction removeHighlight(el: ElementRef): void {\n const matchedElements = Array.from(\n (el.nativeElement as Element).querySelectorAll(`mark.${CLASS_NAME}`),\n );\n\n if (matchedElements) {\n for (const node of matchedElements) {\n const parentNode = node.parentNode;\n\n if (parentNode && node.firstChild) {\n parentNode.replaceChild(node.firstChild, node);\n parentNode.normalize();\n }\n }\n }\n}\n\nfunction createSearchRegex(searchTerms: string[]): RegExp | undefined {\n let searchRegex: RegExp | undefined;\n\n if (searchTerms.length > 0) {\n // Escape all the special regular expression characters by adding a\n // preceding '\\' to each match.\n searchTerms = searchTerms.map((searchTerm) =>\n searchTerm.replace(SPECIAL_CHAR_REGEX, '\\\\$&'),\n );\n\n searchRegex = new RegExp(searchTerms.join('|'), 'gi');\n }\n\n return searchRegex;\n}\n\n/**\n * Highlights all matching text within the current DOM element.\n */\n@Directive({\n selector: '[skyHighlight]',\n})\nexport class SkyTextHighlightDirective\n implements OnChanges, AfterViewInit, OnDestroy\n{\n /**\n * The text to highlight.\n */\n @Input()\n public set skyHighlight(value: string | string[] | undefined) {\n value = value || [];\n\n if (Array.isArray(value)) {\n this.#searchTerms = value.filter((item) => !!item);\n // Reorder strings by their length in descending order to avoid missing matches\n // that contain substrings of other matches.\n this.#searchTerms.sort(function (a, b) {\n return b.length - a.length;\n });\n } else {\n this.#searchTerms = [value as string];\n }\n }\n\n @HostBinding('attr.skyHighlight') public readonly highlight = true;\n\n #existingHighlight = false;\n\n #observer: MutationObserver | undefined;\n\n #searchTerms: string[] = [];\n\n #el = inject(ElementRef);\n #observerSvc = inject(SkyMutationObserverService);\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['skyHighlight'] && !changes['skyHighlight'].firstChange) {\n this.#highlight();\n }\n }\n\n public ngAfterViewInit(): void {\n this.#observer = this.#observerSvc.create(() => {\n this.#highlight();\n });\n\n this.#highlight();\n }\n\n public ngOnDestroy(): void {\n this.#disconnectObserver();\n }\n\n #disconnectObserver(): void {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n }\n\n #highlight(): void {\n this.#disconnectObserver();\n\n if (this.#existingHighlight) {\n removeHighlight(this.#el);\n }\n\n const node = this.#el.nativeElement;\n\n if (node) {\n const searchRegex = createSearchRegex(this.#searchTerms);\n\n // mark all matched text in the DOM\n if (searchRegex) {\n markTextNodes(node, searchRegex);\n this.#existingHighlight = true;\n }\n }\n\n this.#observeDom();\n }\n\n #observeDom(): void {\n if (this.#observer) {\n const config = {\n attributes: false,\n childList: true,\n characterData: true,\n subtree: true,\n };\n\n this.#observer.observe(this.#el.nativeElement, config);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\n\nimport { SkyTextHighlightDirective } from './text-highlight.directive';\n\n@NgModule({\n imports: [SkyTextHighlightDirective],\n exports: [SkyTextHighlightDirective],\n providers: [SkyMutationObserverService],\n})\nexport class SkyTextHighlightModule {}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Lets a projected `sky-token` element read the grid-role state of its ancestor\n * `sky-tokens` component. Angular does not apply template bindings to content\n * projected elements, so `sky-token` cannot receive its `role` the same way\n * tokens generated from the `tokens` input do.\n * @internal\n */\nexport interface SkyTokensRoleContext {\n /**\n * Whether the ancestor `sky-tokens` component's grid role is currently active.\n */\n readonly gridRoleActive: () => boolean;\n}\n\n/** @internal */\nexport const SKY_TOKENS_ROLE_CONTEXT = new InjectionToken<SkyTokensRoleContext>(\n 'SkyTokensRoleContext',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { take } from 'rxjs';\n\nimport { SKY_TOKENS_ROLE_CONTEXT } from './tokens-role-context';\n\n@Component({\n selector: 'sky-token',\n templateUrl: './token.component.html',\n styleUrls: ['./token.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyTokenComponent {\n /**\n * Whether to disable the token to prevent users from selecting it, dismissing it,\n * or navigating to it with the arrow keys. When the token is disabled,\n * users can still place focus on it using the `Tab` key.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = !!value;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The ARIA label for the token's close button. This sets the button's `aria-label` to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @default \"Remove item\"\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * Whether users can remove the token from the list by selecting the close button.\n * @default true\n */\n @Input()\n public set dismissible(value: boolean | undefined) {\n this.#_dismissible = value !== false;\n }\n\n public get dismissible(): boolean {\n return this.#_dismissible;\n }\n\n /**\n * Whether users can place focus on the token using the `Tab`. This does not\n * affect the ability to select the token, dismiss it, or navigate to it with the arrow keys.\n * @default true\n */\n @Input()\n public set focusable(value: boolean | undefined) {\n this.tabIndex = value !== false ? 0 : -1;\n }\n\n /**\n * Used by the tokens component to set the appropriate role for each token\n * generated from the `tokens` input.\n * @internal\n */\n public readonly role = input<string | undefined>();\n\n /**\n * The role to apply to the token's host element. Tokens generated from the\n * `tokens` input receive their role directly through the `role` input above.\n * Manually projected tokens never receive that binding (Angular does not\n * apply template bindings to projected content), so they fall back to\n * asking the ancestor `sky-tokens` component whether its grid role is\n * active. Reading `#roleContext`'s signal-backed value here (rather than\n * having `sky-tokens` push the value in imperatively) lets this OnPush\n * component's view update automatically when that ancestor state changes.\n * @internal\n */\n protected readonly effectiveRole = computed(\n () =>\n this.role() ?? (this.#roleContext?.gridRoleActive() ? 'row' : undefined),\n );\n\n /**\n * Fires when users click the close button.\n */\n @Output()\n public dismiss = new EventEmitter<void>();\n\n /**\n * Fires when users place focus on the token by navigating to it with the `Tab` key.\n */\n @Output()\n public tokenFocus = new EventEmitter<void>();\n\n @ViewChild('actionButton', { read: ElementRef, static: true })\n public actionButtonRef: ElementRef | undefined;\n\n public isFocused = false;\n public tokenActive = false;\n public closeActive = false;\n public tabIndex = 0;\n\n #elementRef = inject(ElementRef);\n\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n readonly #roleContext = inject(SKY_TOKENS_ROLE_CONTEXT, { optional: true });\n\n #_disabled = false;\n #_dismissible = true;\n\n protected onFocusIn(): void {\n if (!this.isFocused) {\n this.tokenFocus.emit();\n this.isFocused = true;\n }\n }\n\n protected onFocusOut(event: FocusEvent): void {\n this.isFocused = this.#elementRef.nativeElement.contains(\n event.relatedTarget,\n );\n }\n\n public dismissToken(event: Event): void {\n event.stopPropagation();\n this.#announceState(\n 'skyux_tokens_token_dismissed',\n this.actionButtonRef?.nativeElement.textContent.trim(),\n );\n this.dismiss.emit();\n }\n\n public focusElement(): void {\n this.actionButtonRef?.nativeElement.focus();\n }\n\n public setTokenActive(tokenActive: boolean): void {\n this.tokenActive = tokenActive;\n }\n\n public setCloseActive(closeActive: boolean): void {\n this.closeActive = closeActive;\n }\n\n #announceState(resourceString: string, ...args: any[]): void {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n}\n","<div\n class=\"sky-token sky-btn sky-btn-default\"\n [attr.role]=\"effectiveRole()\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-disabled': disabled,\n 'sky-token-dismissible': dismissible,\n 'sky-token-active': tokenActive && !closeActive,\n 'sky-token-focused': isFocused\n }\"\n (document:mouseup)=\"setTokenActive(false)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n (mousedown)=\"setTokenActive(true)\"\n>\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n #actionButton=\"skyId\"\n class=\"sky-btn sky-btn-default sky-token-btn sky-token-btn-action\"\n type=\"button\"\n skyId\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled\n }\"\n >\n <ng-content />\n </button>\n </span>\n @if (dismissible) {\n <span\n class=\"sky-token-cell\"\n [attr.role]=\"effectiveRole() === 'row' ? 'gridcell' : undefined\"\n >\n <button\n class=\"sky-btn sky-token-btn sky-token-btn-close\"\n type=\"button\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"\n !ariaLabel\n ? screenReaderLabelDismiss.id + ' ' + actionButton.id\n : undefined\n \"\n [attr.tabindex]=\"tabIndex\"\n [attr.title]=\"\n ariaLabel || ('skyux_tokens_dismiss_button_title' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-btn-disabled': disabled,\n 'sky-token-btn-close-active': closeActive\n }\"\n (click)=\"dismissToken($event)\"\n (document:mouseup)=\"setCloseActive(false)\"\n (mousedown)=\"setCloseActive(true)\"\n >\n <sky-icon\n class=\"sky-token-btn-close-icon\"\n iconName=\"close\"\n iconSize=\"s\"\n />\n </button>\n </span>\n }\n</div>\n<span\n #screenReaderLabelDismiss=\"skyId\"\n skyScreenReaderLabel\n skyId\n [createLabel]=\"dismissible && !ariaLabel\"\n>\n {{ 'skyux_tokens_dismiss_button_default_label' | skyLibResources }}\n</span>\n","export enum SkyTokensMessageType {\n /**\n * Places focus on the last token in the list.\n */\n FocusLastToken = 0,\n\n /**\n * Places focus on the token that is currently selected.\n */\n FocusActiveToken = 1,\n\n /**\n * Places focus on the token before the currently selected token.\n */\n FocusPreviousToken = 2,\n\n /**\n * Places focus on the token after the currently selected token.\n */\n FocusNextToken = 3,\n\n /**\n * Removes the token that is currently selected from the list of tokens.\n */\n RemoveActiveToken = 4,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TrackByFunction,\n ViewChildren,\n afterNextRender,\n computed,\n contentChildren,\n inject,\n signal,\n} from '@angular/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyTokenComponent } from './token.component';\nimport {\n SKY_TOKENS_ROLE_CONTEXT,\n SkyTokensRoleContext,\n} from './tokens-role-context';\nimport { SkyToken } from './types/token';\nimport { SkyTokenSelectedEventArgs } from './types/token-selected-event-args';\nimport { SkyTokensMessage } from './types/tokens-message';\nimport { SkyTokensMessageType } from './types/tokens-message-type';\n\nconst DISPLAY_WITH_DEFAULT = 'name';\n\n/**\n * Creates a container that enables navigation between tokens using keyboard arrow keys.\n * This is useful when combined with other components where the <kbd>Tab</kbd> key is\n * reserved for other functions, such as the SKY UX Lookup component.\n */\n@Component({\n selector: 'sky-tokens',\n templateUrl: './tokens.component.html',\n styleUrls: ['./tokens.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n providers: [\n { provide: SKY_TOKENS_ROLE_CONTEXT, useExisting: SkyTokensComponent },\n ],\n})\nexport class SkyTokensComponent implements SkyTokensRoleContext, OnDestroy {\n /**\n * Whether to disable the tokens list to prevent users from selecting tokens,\n * dismissing tokens, or navigating through the list with the arrow keys. When the tokens list\n * is disabled, users can still place focus on items in the list using the `Tab` key.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = !!value;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Whether users can remove a token from the list by selecting a token's close button.\n * @default true\n */\n @Input()\n public set dismissible(value: boolean | undefined) {\n this.#_dismissible = value !== false;\n }\n\n public get dismissible(): boolean {\n return this.#_dismissible;\n }\n\n /**\n * The token property to display for each item in the tokens list.\n * @default \"name\"\n */\n @Input()\n public set displayWith(value: string | undefined) {\n this.#_displayWith = value || DISPLAY_WITH_DEFAULT;\n }\n\n public get displayWith(): string {\n return this.#_displayWith;\n }\n\n /**\n * The token property that represents the token's unique identifier. When this property\n * is set, animations are enabled when dismissing tokens.\n */\n @Input()\n public trackWith: string | undefined;\n\n /**\n * Whether users can place focus on tokens in the list using the `Tab` key.\n * This does not affect the ability of users to select tokens, dismiss tokens,\n * or navigate through the list with the arrow keys.\n * @default true\n */\n @Input()\n public set focusable(value: boolean | undefined) {\n this.#_focusable = value !== false;\n }\n\n public get focusable(): boolean {\n return this.#_focusable;\n }\n\n /**\n * The array of tokens to include in the list.\n */\n @Input()\n public set tokens(value: SkyToken[] | undefined) {\n this.#tokens.set(value || []);\n // The previous behavior was to set `this._tokens = value`, then emit `this._tokens`,\n // which would emit `undefined` instead of a default value of `[]` returned by the\n // get accessor when set to `undefined`. Emitting `value` instead of `this.#_tokensOrDefault`\n // preserves that behavior.\n this.tokensChange.emit(value);\n\n this.#queueTokensRenderedEmit();\n }\n\n public get tokens(): SkyToken[] {\n return this.#tokens();\n }\n\n /**\n * The observable of `SkyTokensMessage` that can place focus on a\n * particular token or remove the active token from the list.\n */\n @Input()\n public set messageStream(value: Subject<SkyTokensMessage> | undefined) {\n this.#_messageStream = value || new Subject<SkyTokensMessage>();\n this.#initMessageStream();\n }\n\n public get messageStream(): Subject<SkyTokensMessage> {\n return this.#_messageStream;\n }\n\n /**\n * Fires when users navigate through the tokens list with the `Tab` key\n * and attempt to move past the final token in the list.\n */\n @Output()\n public focusIndexOverRange = new EventEmitter<void>();\n\n /**\n * Fires when users navigate through the tokens list with the `Tab` key\n * and attempt to move before the first token in the list.\n */\n @Output()\n public focusIndexUnderRange = new EventEmitter<void>();\n\n /**\n * Fires when users select a token in the list. This event emits the selected token.\n */\n @Output()\n public tokenSelected = new EventEmitter<SkyTokenSelectedEventArgs>();\n\n /**\n * Fires when the tokens in the list change.\n * This event emits an array of the tokens in the updated list.\n */\n @Output()\n public tokensChange = new EventEmitter<SkyToken[]>();\n\n /**\n * Fires when all animations on the tokens are complete.\n * @internal\n */\n @Output()\n public tokensRendered = new EventEmitter<void>();\n\n public get activeIndex(): number {\n return this.#_activeIndex;\n }\n\n public set activeIndex(value: number) {\n if (value >= this.#tokens().length) {\n value = this.#tokens().length - 1;\n this.focusIndexOverRange.emit();\n }\n\n if (value < 0) {\n value = 0;\n this.focusIndexUnderRange.emit();\n }\n\n this.#_activeIndex = value || 0;\n }\n\n public trackTokenFn: TrackByFunction<SkyToken>;\n\n #_disabled = false;\n #_dismissible = true;\n #_focusable = true;\n #_displayWith = DISPLAY_WITH_DEFAULT;\n\n readonly #tokens = signal<SkyToken[]>([]);\n\n @ViewChildren(SkyTokenComponent)\n public tokenComponents: QueryList<SkyTokenComponent> | undefined;\n\n /**\n * The tokens manually projected into the component via\n * `<ng-content select=\"sky-token\" />`, as opposed to the ones generated from\n * the `tokens` input.\n */\n protected readonly projectedTokenComponents =\n contentChildren(SkyTokenComponent);\n\n /**\n * Whether the grid role is active on this component's host element. A\n * `sky-token` element (whether generated from the `tokens` input or\n * manually projected) reads this to determine its own `row` role, since\n * Angular does not apply template bindings to projected content.\n */\n public readonly gridRoleActive = computed(\n () =>\n this.#tokens().length > 0 || this.projectedTokenComponents().length > 0,\n );\n\n #messageStreamSub: Subscription | undefined;\n #ngUnsubscribe = new Subject<void>();\n #tokensRenderedQueued = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #injector = inject(Injector);\n\n #_activeIndex = 0;\n #_messageStream = new Subject<SkyTokensMessage>();\n\n /**\n * Tracks whether the component has completed its initial render.\n * Used to suppress enter animations on first load.\n */\n protected readonly animationReady = signal(false);\n\n constructor() {\n // Wait for Angular's animation scheduler to remove initial enter classes\n // before enabling enter animations for future token changes.\n afterNextRender({\n read: () => {\n requestAnimationFrame(() => {\n this.animationReady.set(true);\n });\n },\n });\n\n this.#initMessageStream();\n\n // Angular calls the trackBy function without applying the component instance's scope.\n // Use a fat-arrow function so the current component instance's trackWith property can\n // be referenced.\n this.trackTokenFn = (_index, item): unknown => {\n if (this.trackWith) {\n return item.value[this.trackWith];\n }\n\n return item;\n };\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public onTokenClick(token: SkyToken): void {\n if (this.disabled) {\n return;\n }\n\n this.#notifyTokenSelected(token);\n }\n\n public onTokenKeyDown(event: KeyboardEvent): void {\n if (!this.disabled) {\n switch (event.key) {\n case 'Left':\n case 'ArrowLeft':\n this.#_messageStream.next({\n type: SkyTokensMessageType.FocusPreviousToken,\n });\n event.preventDefault();\n break;\n\n case 'Right':\n case 'ArrowRight':\n this.#_messageStream.next({\n type: SkyTokensMessageType.FocusNextToken,\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public selectToken(token: SkyToken): void {\n if (!this.disabled) {\n this.#notifyTokenSelected(token);\n }\n }\n\n public removeToken(token: SkyToken): void {\n this.tokens = this.tokens.filter((t) => t !== token);\n this.#changeDetector.detectChanges();\n }\n\n #focusPreviousToken(): void {\n this.activeIndex--;\n this.#focusActiveToken();\n }\n\n #focusNextToken(): void {\n this.activeIndex++;\n this.#focusActiveToken();\n }\n\n #focusLastToken(): void {\n if (this.tokenComponents) {\n this.activeIndex = this.tokenComponents.length - 1;\n this.#focusActiveToken();\n }\n }\n\n #focusActiveToken(): void {\n if (this.tokenComponents) {\n const tokenComponent = this.tokenComponents.find(\n (_comp: SkyTokenComponent, i: number) => {\n return this.activeIndex === i;\n },\n );\n\n if (tokenComponent) {\n tokenComponent.focusElement();\n }\n }\n }\n\n #removeActiveToken(): void {\n const token = this.tokens[this.activeIndex];\n if (token) {\n this.removeToken(token);\n }\n }\n\n #initMessageStream(): void {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n }\n\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message: SkyTokensMessage) => {\n switch (message.type) {\n case SkyTokensMessageType.FocusLastToken:\n this.#focusLastToken();\n break;\n\n case SkyTokensMessageType.FocusActiveToken:\n this.#focusActiveToken();\n break;\n\n case SkyTokensMessageType.FocusPreviousToken:\n this.#focusPreviousToken();\n break;\n\n case SkyTokensMessageType.FocusNextToken:\n this.#focusNextToken();\n break;\n\n case SkyTokensMessageType.RemoveActiveToken:\n this.#removeActiveToken();\n break;\n }\n });\n }\n\n #notifyTokenSelected(token: SkyToken): void {\n this.tokenSelected.emit({\n token,\n });\n }\n\n /**\n * Debounces the tokensRendered emit so that rapid token changes\n * (e.g. bulk additions or removals) result in a single event.\n */\n #queueTokensRenderedEmit(): void {\n if (this.#tokensRenderedQueued) {\n return;\n }\n\n this.#tokensRenderedQueued = true;\n\n afterNextRender(\n () => {\n this.#tokensRenderedQueued = false;\n this.tokensRendered.emit();\n },\n {\n injector: this.#injector,\n },\n );\n }\n}\n","<div\n class=\"sky-tokens\"\n [class.sky-tokens-animation-ready]=\"animationReady()\"\n [class.sky-tokens-animation-enabled]=\"trackWith\"\n [attr.role]=\"gridRoleActive() ? 'grid' : null\"\n>\n <!--\n The role must use square brackets otherwise Angular sets the native 'role'\n attribute as well as the input attribute of the token, which fails accessibility rules.\n -->\n @for (token of tokens; track trackTokenFn(i, token); let i = $index) {\n <sky-token\n animate.enter=\"sky-token-enter\"\n animate.leave=\"sky-token-leave\"\n [disabled]=\"disabled\"\n [dismissible]=\"dismissible\"\n [focusable]=\"focusable\"\n [role]=\"'row'\"\n (dismiss)=\"removeToken(token)\"\n (click)=\"onTokenClick(token)\"\n (keydown)=\"onTokenKeyDown($event)\"\n (keyup.enter)=\"selectToken(token); $event.preventDefault()\"\n (tokenFocus)=\"activeIndex = i\"\n >\n {{ token.value[displayWith] }}\n </sky-token>\n }\n <ng-content select=\"sky-token\" />\n <div class=\"sky-tokens-content\" [attr.role]=\"gridRoleActive() ? 'row' : null\">\n <div [attr.role]=\"gridRoleActive() ? 'gridcell' : null\">\n <ng-content />\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIdModule, SkyScreenReaderLabelDirective } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyTokenComponent } from './token.component';\nimport { SkyTokensComponent } from './tokens.component';\n\n@NgModule({\n declarations: [SkyTokenComponent, SkyTokensComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyIndicatorsResourcesModule,\n SkyIdModule,\n SkyScreenReaderLabelDirective,\n ],\n exports: [SkyTokenComponent, SkyTokensComponent],\n})\nexport class SkyTokensModule {}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nconst busyElements: Record<\n string,\n {\n busyEl: HTMLElement | undefined;\n listener: () => void;\n restoreFocusElement?: HTMLElement | undefined;\n restoreFocusCheckElement?: HTMLElement | undefined;\n }\n> = {};\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyWaitAdapterService implements OnDestroy {\n public static isPageWaitActive = false;\n\n #focusableElements: HTMLElement[] | undefined;\n #renderer: Renderer2;\n\n constructor() {\n this.#renderer = inject(RendererFactory2).createRenderer(undefined, null);\n }\n\n public ngOnDestroy(): void {\n this.#clearListeners();\n }\n\n public setWaitBounds(waitEl: ElementRef): void {\n this.#renderer.addClass(\n waitEl.nativeElement.parentElement,\n 'sky-wait-element-active',\n );\n }\n\n public removeWaitBounds(waitEl: ElementRef): void {\n this.#renderer.removeClass(\n waitEl.nativeElement.parentElement,\n 'sky-wait-element-active',\n );\n }\n\n public setBusyState(\n waitEl: ElementRef,\n isFullPage: boolean,\n isWaiting: boolean,\n isNonBlocking: boolean,\n waitComponentId?: string,\n ): void {\n const busyEl = isFullPage\n ? document.body\n : waitEl.nativeElement.parentElement;\n\n if (!isNonBlocking) {\n if (isWaiting) {\n let restoreFocusElement: HTMLElement | undefined = undefined;\n let restoreFocusCheckElement: HTMLElement | undefined = undefined;\n this.#renderer.setAttribute(busyEl, 'aria-busy', 'true');\n\n // Remove focus from page when full page blocking wait\n if (isFullPage || busyEl.contains(document.activeElement)) {\n if (document.activeElement !== document.body) {\n restoreFocusElement = document.activeElement as HTMLElement;\n }\n this.#clearDocumentFocus();\n restoreFocusCheckElement = document.activeElement as HTMLElement;\n }\n\n if (isFullPage) {\n SkyWaitAdapterService.isPageWaitActive = true;\n const endListenerFunc = this.#renderer.listen(\n document.body,\n 'keydown',\n (event: KeyboardEvent) => {\n /*istanbul ignore else */\n if (event.key) {\n /* istanbul ignore else */\n if (event.key.toLowerCase() === 'tab') {\n (event.target as HTMLElement).blur();\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n this.#clearDocumentFocus();\n }\n }\n },\n );\n\n if (waitComponentId) {\n busyElements[waitComponentId] = {\n listener: endListenerFunc,\n busyEl: undefined,\n restoreFocusElement,\n restoreFocusCheckElement,\n };\n }\n } else {\n const endListenerFunc = this.#renderer.listen(\n busyEl,\n 'focusin',\n (event: KeyboardEvent) => {\n /* istanbul ignore else */\n if (!isNonBlocking) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (SkyWaitAdapterService.isPageWaitActive) {\n this.#clearDocumentFocus();\n } else {\n // Propagate tab navigation if attempted into waited element\n const target = event.target as HTMLElement;\n\n if (target) {\n target.blur();\n this.#focusNextElement(target, this.#isShift(event));\n }\n }\n }\n },\n );\n\n if (waitComponentId) {\n busyElements[waitComponentId] = {\n listener: endListenerFunc,\n busyEl,\n restoreFocusElement,\n restoreFocusCheckElement,\n };\n }\n }\n } else {\n this.#renderer.removeAttribute(busyEl, 'aria-busy');\n\n if (isFullPage) {\n SkyWaitAdapterService.isPageWaitActive = false;\n }\n\n if (waitComponentId && waitComponentId in busyElements) {\n const busyElement = busyElements[waitComponentId];\n\n busyElement.listener();\n\n // If there is a restore focus element and the focus has not moved, restore focus.\n if (busyElement.restoreFocusCheckElement === document.activeElement) {\n busyElement.restoreFocusElement?.focus();\n }\n\n delete busyElements[waitComponentId];\n }\n }\n }\n }\n\n #focusNextElement(targetElement: HTMLElement, shiftKey: boolean): void {\n const focusable = this.#getFocusableElements();\n\n // If shift tab, go in the other direction\n const modifier = shiftKey ? -1 : 1;\n\n // Find the next navigable element that isn't waiting\n const startingIndex = focusable.indexOf(targetElement);\n let curIndex = startingIndex + modifier;\n while (\n focusable[curIndex] &&\n this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n curIndex += modifier;\n }\n\n if (\n focusable[curIndex] &&\n !this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n focusable[curIndex].focus();\n } else {\n // Try wrapping the navigation\n /* istanbul ignore next */\n /* sanity check */\n curIndex = modifier > 0 ? 0 : focusable.length - 1;\n while (\n curIndex !== startingIndex &&\n focusable[curIndex] &&\n this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n /* istanbul ignore next */\n /* sanity check */\n curIndex += modifier;\n }\n\n /* istanbul ignore else */\n /* sanity check */\n if (\n focusable[curIndex] &&\n !this.#isElementBusyOrHidden(focusable[curIndex])\n ) {\n focusable[curIndex].focus();\n } else {\n // No valid target, wipe focus\n this.#clearDocumentFocus();\n }\n }\n\n // clear focusableElements list\n this.#focusableElements = undefined;\n }\n\n #isShift(event: Event): boolean {\n // Determine if shift+tab was used based on element order\n const elements = this.#getFocusableElements().filter(\n (elem) => !this.#isElementHidden(elem),\n );\n\n const previousInd = elements.indexOf((event as any).relatedTarget);\n const currentInd = elements.indexOf(event.target as HTMLElement);\n\n return (\n previousInd === currentInd + 1 ||\n (previousInd === 0 && currentInd === elements.length - 1) ||\n previousInd > currentInd ||\n !(event as any).relatedTarget\n );\n }\n\n #isElementHidden(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n return style.display === 'none' || style.visibility === 'hidden';\n }\n\n #isElementBusyOrHidden(element: HTMLElement): boolean {\n if (this.#isElementHidden(element)) {\n return true;\n }\n\n for (const key of Object.keys(busyElements)) {\n const parentElement = busyElements[key].busyEl;\n if (parentElement && parentElement.contains(element)) {\n return true;\n }\n }\n return false;\n }\n\n #clearDocumentFocus(): void {\n const activeElement = document.activeElement as HTMLElement;\n\n /* istanbul ignore else */\n if (activeElement) {\n activeElement.blur();\n }\n\n document.body.focus();\n }\n\n #getFocusableElements(): HTMLElement[] {\n // Keep this cached so we can reduce queries\n if (this.#focusableElements) {\n return this.#focusableElements;\n }\n\n // Select all possible focusable elements\n const focusableElements =\n 'a[href], ' +\n 'area[href], ' +\n \"input:not([disabled]):not([tabindex='-1']), \" +\n \"button:not([disabled]):not([tabindex='-1']), \" +\n \"select:not([disabled]):not([tabindex='-1']), \" +\n \"textarea:not([disabled]):not([tabindex='-1']), \" +\n 'iframe, object, embed, ' +\n \"*[tabindex]:not([tabindex='-1']), \" +\n '*[contenteditable=true]';\n\n this.#focusableElements = Array.prototype.filter.call(\n document.body.querySelectorAll(focusableElements),\n (element: HTMLElement) => {\n return (\n element.offsetWidth > 0 ||\n element.offsetHeight > 0 ||\n element === document.activeElement\n );\n },\n );\n return this.#focusableElements;\n }\n\n #clearListeners(): void {\n SkyWaitAdapterService.isPageWaitActive = false;\n for (const key of Object.keys(busyElements)) {\n busyElements[key].listener();\n delete busyElements[key];\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n inject,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyIndicatorsResourcesModule } from '../shared/sky-indicators-resources.module';\n\nimport { SkyWaitAdapterService } from './wait-adapter.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-wait',\n templateUrl: './wait.component.html',\n styleUrls: ['./wait.component.scss'],\n providers: [SkyWaitAdapterService],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [CommonModule, SkyIndicatorsResourcesModule],\n})\nexport class SkyWaitComponent implements OnInit, OnDestroy {\n /**\n * The ARIA label for the wait icon.\n * This sets the icon's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when an element or page loads and when users tab to a wait icon.\n * The default value varies based on whether the wait is for an element or a page and whether it is a blocking wait. For example, the default for a page-level blocking wait is \"Page loading. Please wait.\"\n * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.\n * \"For more information, see the Design tab and the [WAI-ARIA `aria-label` definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public set ariaLabel(value: string | undefined) {\n this.#customAriaLabel = value;\n this.#publishAriaLabel();\n }\n\n /**\n * When set to `true`, wait indication appears on the parent element of the `sky-wait` component.\n */\n @Input()\n public set isWaiting(value: boolean | undefined) {\n if (!this.isFullPage) {\n if (value) {\n this.#adapterService.setWaitBounds(this.#elRef);\n } else {\n this.#adapterService.removeWaitBounds(this.#elRef);\n }\n }\n\n this.#adapterService.setBusyState(\n this.#elRef,\n !!this.isFullPage,\n !!value,\n !!this.isNonBlocking,\n this.#id,\n );\n\n if (value) {\n this.#liveAnnouncer.announce(this.ariaLabelStream.getValue());\n } else if (this.#_isWaiting) {\n // NOTE: This should only happen if the wait was previously waiting and no longer is waiting.\n this.#liveAnnouncer.announce(\n this.screenReaderCompletedTextStream.getValue(),\n );\n }\n\n this.#_isWaiting = value;\n }\n\n public get isWaiting(): boolean | undefined {\n return this.#_isWaiting;\n }\n\n /**\n * When set to `true`, wait indication appears on the page level instead of the\n * parent element level. We recommend that you use the `beginBlockingPageWait` or\n * `beginNonBlockingPageWait` functions of the `SkyWaitService` instead of setting this\n * on the component level.\n * @default false\n */\n @Input()\n public set isFullPage(value: boolean | undefined) {\n /* istanbul ignore else: untestable */\n if (value) {\n this.#adapterService.removeWaitBounds(this.#elRef);\n } else if (this.isWaiting) {\n this.#adapterService.setWaitBounds(this.#elRef);\n }\n\n this.#_isFullPage = value;\n this.#publishAriaLabel();\n this.#publishScreenReaderCompletedText();\n }\n\n public get isFullPage(): boolean | undefined {\n return this.#_isFullPage;\n }\n\n /**\n * When set to `true`, wait indication appears in the bottom left corner of the element\n * instead of hiding the entire parent element.\n * @default false\n */\n @Input()\n public set isNonBlocking(value: boolean | undefined) {\n this.#_isNonBlocking = value;\n this.#publishAriaLabel();\n }\n\n public get isNonBlocking(): boolean | undefined {\n return this.#_isNonBlocking;\n }\n\n /**\n * Screen reader text [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when the wait toggles off.\n * The default varies based on whether the wait is for an element or a page.\n * For example, the default for a page-level wait is \"Page loading complete.\"\n * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.\n * For more information, see the Design tab and the [WCAG documentation on status messages](https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html).\n */\n @Input()\n public set screenReaderCompletedText(value: string | undefined) {\n this.#customScreenReaderCompletedText = value;\n this.#publishScreenReaderCompletedText();\n }\n\n public ariaLabelStream = new BehaviorSubject<string>('');\n public ariaLiveText = '';\n public screenReaderCompletedTextStream = new BehaviorSubject<string>('');\n\n #customAriaLabel: string | undefined;\n #customScreenReaderCompletedText: string | undefined;\n #id = `sky-wait-${++nextId}`;\n #ngUnsubscribe = new Subject<void>();\n\n #_isFullPage: boolean | undefined;\n #_isNonBlocking: boolean | undefined;\n #_isWaiting: boolean | undefined;\n\n readonly #adapterService = inject(SkyWaitAdapterService);\n readonly #elRef = inject(ElementRef);\n readonly #liveAnnouncer = inject(SkyLiveAnnouncerService);\n readonly #resourceSvc = inject(SkyLibResourcesService);\n\n public ngOnInit(): void {\n this.#publishAriaLabel();\n this.#publishScreenReaderCompletedText();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #publishAriaLabel(): void {\n if (this.#customAriaLabel) {\n this.ariaLabelStream.next(this.#customAriaLabel);\n } else {\n const type = this.isFullPage ? '_page' : '';\n const blocking = this.isNonBlocking ? '' : '_blocking';\n const key = `skyux_wait${type}${blocking}_aria_alt_text`;\n this.#resourceSvc\n .getString(key)\n .pipe(take(1), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.ariaLabelStream.next(value);\n });\n }\n }\n\n #publishScreenReaderCompletedText(): void {\n if (this.#customScreenReaderCompletedText) {\n this.screenReaderCompletedTextStream.next(\n this.#customScreenReaderCompletedText,\n );\n } else {\n const type = this.isFullPage ? '_page' : '';\n const key = `skyux_wait${type}_screen_reader_completed_text`;\n this.#resourceSvc\n .getString(key)\n .pipe(take(1), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.screenReaderCompletedTextStream.next(value);\n });\n }\n }\n}\n","<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n @if (isWaiting) {\n <div\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SkyWaitComponent } from './wait.component';\n\n@NgModule({\n imports: [SkyWaitComponent],\n exports: [SkyWaitComponent],\n})\nexport class SkyWaitModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { SkyWaitComponent } from './wait.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-wait-page',\n templateUrl: './wait-page.component.html',\n styleUrls: ['./wait-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [SkyWaitComponent],\n})\nexport class SkyWaitPageComponent {\n @Input()\n public hasBlockingWait: boolean | undefined;\n\n @Input()\n public hasNonBlockingWait: boolean | undefined;\n}\n","<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n />\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n />\n</div>\n","import {\n ComponentRef,\n EnvironmentInjector,\n Injectable,\n inject,\n} from '@angular/core';\nimport { SkyAppWindowRef, SkyDynamicComponentService } from '@skyux/core';\n\nimport { Observable, defer as observableDefer } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\n\nimport { SkyWaitPageComponent } from './wait-page.component';\n\nlet waitComponent: SkyWaitPageComponent | undefined;\nlet waitComponentRef: ComponentRef<SkyWaitPageComponent> | undefined;\nlet pageWaitBlockingCount = 0;\nlet pageWaitNonBlockingCount = 0;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyWaitService {\n #environmentInjector = inject(EnvironmentInjector);\n #windowSvc = inject(SkyAppWindowRef);\n #dynamicComponentService = inject(SkyDynamicComponentService);\n\n /**\n * Starts a blocking page wait on the page.\n */\n public beginBlockingPageWait(): void {\n this.#beginPageWait(true);\n }\n\n /**\n * Starts a non-blocking page wait on the page.\n */\n public beginNonBlockingPageWait(): void {\n this.#beginPageWait(false);\n }\n\n /**\n * Ends a blocking page wait on the page. Blocking page wait indication\n * is removed when all running blocking page waits are ended.\n */\n public endBlockingPageWait(): void {\n this.#endPageWait(true);\n }\n\n /**\n * Ends a non-blocking page wait on the page. Non-blocking page wait indication\n * is removed when all running non-blocking page waits are ended.\n */\n public endNonBlockingPageWait(): void {\n this.#endPageWait(false);\n }\n\n /**\n * Clears all blocking and non-blocking page waits on the page.\n */\n public clearAllPageWaits(): void {\n this.#clearPageWait(true);\n this.#clearPageWait(false);\n }\n\n /**\n * @internal\n */\n public dispose(): void {\n if (waitComponent) {\n waitComponent = undefined;\n pageWaitBlockingCount = 0;\n pageWaitNonBlockingCount = 0;\n this.#dynamicComponentService.removeComponent(waitComponentRef);\n }\n }\n\n /**\n * Launches a page wait and automatically stops when the specific asynchronous event completes.\n */\n public blockingWrap<T>(observable: Observable<T>): Observable<T> {\n return observableDefer(() => {\n this.beginBlockingPageWait();\n return observable.pipe(finalize(() => this.endBlockingPageWait()));\n });\n }\n\n /**\n * Launches a non-blocking page wait and automatically stops when the specific\n * asynchronous event completes.\n */\n public nonBlockingWrap<T>(observable: Observable<T>): Observable<T> {\n return observableDefer(() => {\n this.beginNonBlockingPageWait();\n return observable.pipe(finalize(() => this.endNonBlockingPageWait()));\n });\n }\n\n #setWaitComponentProperties(isBlocking: boolean): void {\n if (waitComponent) {\n if (isBlocking) {\n waitComponent.hasBlockingWait = true;\n pageWaitBlockingCount++;\n } else {\n waitComponent.hasNonBlockingWait = true;\n pageWaitNonBlockingCount++;\n }\n }\n }\n\n #beginPageWait(isBlocking: boolean): void {\n if (!waitComponent) {\n /*\n Dynamic component creation needs to be done in a timeout to prevent ApplicationRef from\n crashing when wait service is called in Angular lifecycle functions.\n */\n this.#windowSvc.nativeWindow.setTimeout(() => {\n // Ensuring here that we recheck this after the setTimeout is over so that we don't clash\n // with any other waits that are created.\n if (!waitComponent) {\n waitComponentRef = this.#dynamicComponentService.createComponent(\n SkyWaitPageComponent,\n {\n environmentInjector: this.#environmentInjector,\n },\n );\n\n waitComponent = waitComponentRef.instance;\n }\n\n this.#setWaitComponentProperties(isBlocking);\n });\n } else {\n this.#setWaitComponentProperties(isBlocking);\n }\n }\n\n #endPageWait(isBlocking: boolean): void {\n /*\n Needs to yield so that wait creation can finish\n before it is dismissed in the event of a race.\n */\n this.#windowSvc.nativeWindow.setTimeout(() => {\n if (waitComponent) {\n if (isBlocking) {\n if (pageWaitBlockingCount > 0) {\n pageWaitBlockingCount--;\n }\n\n if (pageWaitBlockingCount < 1) {\n waitComponent.hasBlockingWait = false;\n }\n } else {\n if (pageWaitNonBlockingCount > 0) {\n pageWaitNonBlockingCount--;\n }\n\n if (pageWaitNonBlockingCount < 1) {\n waitComponent.hasNonBlockingWait = false;\n }\n }\n }\n });\n }\n\n #clearPageWait(isBlocking: boolean): void {\n // Wait for the component to be created before clearing it.\n this.#windowSvc.nativeWindow.setTimeout(() => {\n if (waitComponent) {\n if (isBlocking) {\n pageWaitBlockingCount = 0;\n waitComponent.hasBlockingWait = false;\n } else {\n pageWaitNonBlockingCount = 0;\n waitComponent.hasNonBlockingWait = false;\n }\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.SkyExpansionIndicatorComponent","i4","i3","i1.SkyTokenComponent","take","observableDefer"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/indicators",
3
- "version": "15.0.0-alpha.8",
3
+ "version": "15.0.0-alpha.9",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "keywords": [
6
6
  "blackbaud",
@@ -20,11 +20,11 @@
20
20
  "@angular/common": "^22.1.2",
21
21
  "@angular/core": "^22.1.2",
22
22
  "@angular/platform-browser": "^22.1.2",
23
- "@skyux/core": "15.0.0-alpha.8",
24
- "@skyux/help-inline": "15.0.0-alpha.8",
25
- "@skyux/i18n": "15.0.0-alpha.8",
26
- "@skyux/icon": "15.0.0-alpha.8",
27
- "@skyux/theme": "15.0.0-alpha.8"
23
+ "@skyux/core": "15.0.0-alpha.9",
24
+ "@skyux/help-inline": "15.0.0-alpha.9",
25
+ "@skyux/i18n": "15.0.0-alpha.9",
26
+ "@skyux/icon": "15.0.0-alpha.9",
27
+ "@skyux/theme": "15.0.0-alpha.9"
28
28
  },
29
29
  "dependencies": {
30
30
  "tslib": "^2.8.1"
@@ -390,10 +390,23 @@ declare class SkyTokenComponent {
390
390
  */
391
391
  set focusable(value: boolean | undefined);
392
392
  /**
393
- * Used by the tokens component to set the appropriate role for each token.
393
+ * Used by the tokens component to set the appropriate role for each token
394
+ * generated from the `tokens` input.
394
395
  * @internal
395
396
  */
396
- role: string | undefined;
397
+ readonly role: i0.InputSignal<string | undefined>;
398
+ /**
399
+ * The role to apply to the token's host element. Tokens generated from the
400
+ * `tokens` input receive their role directly through the `role` input above.
401
+ * Manually projected tokens never receive that binding (Angular does not
402
+ * apply template bindings to projected content), so they fall back to
403
+ * asking the ancestor `sky-tokens` component whether its grid role is
404
+ * active. Reading `#roleContext`'s signal-backed value here (rather than
405
+ * having `sky-tokens` push the value in imperatively) lets this OnPush
406
+ * component's view update automatically when that ancestor state changes.
407
+ * @internal
408
+ */
409
+ protected readonly effectiveRole: i0.Signal<string | undefined>;
397
410
  /**
398
411
  * Fires when users click the close button.
399
412
  */
@@ -414,7 +427,21 @@ declare class SkyTokenComponent {
414
427
  setTokenActive(tokenActive: boolean): void;
415
428
  setCloseActive(closeActive: boolean): void;
416
429
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyTokenComponent, never>;
417
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyTokenComponent, "sky-token", never, { "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "role": { "alias": "role"; "required": false; }; }, { "dismiss": "dismiss"; "tokenFocus": "tokenFocus"; }, never, ["*"], false, never>;
430
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyTokenComponent, "sky-token", never, { "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; "tokenFocus": "tokenFocus"; }, never, ["*"], false, never>;
431
+ }
432
+
433
+ /**
434
+ * Lets a projected `sky-token` element read the grid-role state of its ancestor
435
+ * `sky-tokens` component. Angular does not apply template bindings to content
436
+ * projected elements, so `sky-token` cannot receive its `role` the same way
437
+ * tokens generated from the `tokens` input do.
438
+ * @internal
439
+ */
440
+ interface SkyTokensRoleContext {
441
+ /**
442
+ * Whether the ancestor `sky-tokens` component's grid role is currently active.
443
+ */
444
+ readonly gridRoleActive: () => boolean;
418
445
  }
419
446
 
420
447
  interface SkyToken<T = any> {
@@ -467,7 +494,7 @@ interface SkyTokensMessage {
467
494
  * This is useful when combined with other components where the <kbd>Tab</kbd> key is
468
495
  * reserved for other functions, such as the SKY UX Lookup component.
469
496
  */
470
- declare class SkyTokensComponent implements OnDestroy {
497
+ declare class SkyTokensComponent implements SkyTokensRoleContext, OnDestroy {
471
498
  #private;
472
499
  /**
473
500
  * Whether to disable the tokens list to prevent users from selecting tokens,
@@ -541,6 +568,19 @@ declare class SkyTokensComponent implements OnDestroy {
541
568
  set activeIndex(value: number);
542
569
  trackTokenFn: TrackByFunction<SkyToken>;
543
570
  tokenComponents: QueryList<SkyTokenComponent> | undefined;
571
+ /**
572
+ * The tokens manually projected into the component via
573
+ * `<ng-content select="sky-token" />`, as opposed to the ones generated from
574
+ * the `tokens` input.
575
+ */
576
+ protected readonly projectedTokenComponents: i0.Signal<readonly SkyTokenComponent[]>;
577
+ /**
578
+ * Whether the grid role is active on this component's host element. A
579
+ * `sky-token` element (whether generated from the `tokens` input or
580
+ * manually projected) reads this to determine its own `row` role, since
581
+ * Angular does not apply template bindings to projected content.
582
+ */
583
+ readonly gridRoleActive: i0.Signal<boolean>;
544
584
  /**
545
585
  * Tracks whether the component has completed its initial render.
546
586
  * Used to suppress enter animations on first load.
@@ -553,7 +593,7 @@ declare class SkyTokensComponent implements OnDestroy {
553
593
  selectToken(token: SkyToken): void;
554
594
  removeToken(token: SkyToken): void;
555
595
  static ɵfac: i0.ɵɵFactoryDeclaration<SkyTokensComponent, never>;
556
- static ɵcmp: i0.ɵɵComponentDeclaration<SkyTokensComponent, "sky-tokens", never, { "disabled": { "alias": "disabled"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "trackWith": { "alias": "trackWith"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "tokens": { "alias": "tokens"; "required": false; }; "messageStream": { "alias": "messageStream"; "required": false; }; }, { "focusIndexOverRange": "focusIndexOverRange"; "focusIndexUnderRange": "focusIndexUnderRange"; "tokenSelected": "tokenSelected"; "tokensChange": "tokensChange"; "tokensRendered": "tokensRendered"; }, never, ["*"], false, never>;
596
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkyTokensComponent, "sky-tokens", never, { "disabled": { "alias": "disabled"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "trackWith": { "alias": "trackWith"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "tokens": { "alias": "tokens"; "required": false; }; "messageStream": { "alias": "messageStream"; "required": false; }; }, { "focusIndexOverRange": "focusIndexOverRange"; "focusIndexUnderRange": "focusIndexUnderRange"; "tokenSelected": "tokenSelected"; "tokensChange": "tokensChange"; "tokensRendered": "tokensRendered"; }, ["projectedTokenComponents"], ["sky-token", "*"], false, never>;
557
597
  }
558
598
 
559
599
  declare class SkyTokensModule {