@byuhbll/components 7.3.3 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/byuhbll-components.mjs +649 -608
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/index.d.ts +44 -5
- package/package.json +1 -1
|
@@ -3,12 +3,12 @@ import { CommonModule, DatePipe, NgIf, NgClass } from '@angular/common';
|
|
|
3
3
|
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { HttpClient } from '@angular/common/http';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Input, ViewChild, ChangeDetectionStrategy, Component, input, EventEmitter, Output, inject, computed, ViewChildren, Pipe, Renderer2, DOCUMENT, viewChild, HostListener, booleanAttribute, ElementRef, forwardRef, Injector, runInInjectionContext, effect,
|
|
6
|
+
import { Input, ViewChild, ChangeDetectionStrategy, Component, input, EventEmitter, Output, inject, computed, ViewChildren, Pipe, Renderer2, DOCUMENT, viewChild, HostListener, booleanAttribute, ElementRef, forwardRef, Injector, runInInjectionContext, effect, ChangeDetectorRef, model, ViewEncapsulation, ApplicationRef, EnvironmentInjector, createComponent, Injectable, signal, ContentChildren } from '@angular/core';
|
|
7
7
|
import { trigger, transition, group, style, query, animate, animateChild } from '@angular/animations';
|
|
8
8
|
import { map, of, switchMap, shareReplay, combineLatest, Subject, Subscription } from 'rxjs';
|
|
9
9
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
10
10
|
import * as i1$1 from '@angular/forms';
|
|
11
|
-
import { Validators, FormBuilder, ReactiveFormsModule, NG_VALUE_ACCESSOR,
|
|
11
|
+
import { Validators, FormBuilder, ReactiveFormsModule, NG_VALUE_ACCESSOR, NonNullableFormBuilder } from '@angular/forms';
|
|
12
12
|
import { switchMap as switchMap$1, map as map$1, catchError, startWith, tap, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
13
13
|
import { jwtDecode } from 'jwt-decode';
|
|
14
14
|
import urlcat from 'urlcat';
|
|
@@ -17,13 +17,6 @@ import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
|
|
|
17
17
|
import * as i2 from '@angular/cdk/a11y';
|
|
18
18
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
19
19
|
import { MatIconModule } from '@angular/material/icon';
|
|
20
|
-
import * as i3 from '@angular/material/autocomplete';
|
|
21
|
-
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
22
|
-
import * as i2$1 from '@angular/material/form-field';
|
|
23
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
24
|
-
import * as i1$3 from '@angular/material/chips';
|
|
25
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
26
|
-
import { ENTER, COMMA } from '@angular/cdk/keycodes';
|
|
27
20
|
import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
28
21
|
|
|
29
22
|
const libHbllExpandCollapse = trigger('libHbllExpandCollapse', [
|
|
@@ -1492,6 +1485,7 @@ class FieldComponent {
|
|
|
1492
1485
|
this.value = '';
|
|
1493
1486
|
this.isFullText = false;
|
|
1494
1487
|
this.rows = 4;
|
|
1488
|
+
this.wrapContent = false;
|
|
1495
1489
|
this.valueChange = new EventEmitter();
|
|
1496
1490
|
this.iconBeforeClick = new EventEmitter();
|
|
1497
1491
|
this.iconAfterClick = new EventEmitter();
|
|
@@ -1606,13 +1600,13 @@ class FieldComponent {
|
|
|
1606
1600
|
}
|
|
1607
1601
|
}
|
|
1608
1602
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: FieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1609
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: FieldComponent, isStandalone: true, selector: "lib-field", inputs: { inputType: "inputType", inputId: "inputId", placeholder: "placeholder", state: "state", status: "status", iconBefore: "iconBefore", iconAfter: "iconAfter", iconBeforeClickable: "iconBeforeClickable", iconAfterClickable: "iconAfterClickable", iconBeforeAction: "iconBeforeAction", iconAfterAction: "iconAfterAction", disabled: "disabled", ariaLabel: "ariaLabel", value: "value", isFullText: "isFullText", rows: "rows", minWidth: "minWidth", maxWidth: "maxWidth", minHeight: "minHeight", maxHeight: "maxHeight" }, outputs: { valueChange: "valueChange", iconBeforeClick: "iconBeforeClick", iconAfterClick: "iconAfterClick", fieldFocus: "fieldFocus", fieldBlur: "fieldBlur" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)", "document:mousedown": "onDocumentMousedown()", "document:pointerdown": "onDocumentPointerdown()" } }, providers: [
|
|
1603
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: FieldComponent, isStandalone: true, selector: "lib-field", inputs: { inputType: "inputType", inputId: "inputId", placeholder: "placeholder", state: "state", status: "status", iconBefore: "iconBefore", iconAfter: "iconAfter", iconBeforeClickable: "iconBeforeClickable", iconAfterClickable: "iconAfterClickable", iconBeforeAction: "iconBeforeAction", iconAfterAction: "iconAfterAction", disabled: "disabled", ariaLabel: "ariaLabel", value: "value", isFullText: "isFullText", rows: "rows", minWidth: "minWidth", maxWidth: "maxWidth", minHeight: "minHeight", maxHeight: "maxHeight", wrapContent: "wrapContent" }, outputs: { valueChange: "valueChange", iconBeforeClick: "iconBeforeClick", iconAfterClick: "iconAfterClick", fieldFocus: "fieldFocus", fieldBlur: "fieldBlur" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)", "document:mousedown": "onDocumentMousedown()", "document:pointerdown": "onDocumentPointerdown()" } }, providers: [
|
|
1610
1604
|
{
|
|
1611
1605
|
provide: NG_VALUE_ACCESSOR,
|
|
1612
1606
|
useExisting: forwardRef(() => FieldComponent),
|
|
1613
1607
|
multi: true,
|
|
1614
1608
|
},
|
|
1615
|
-
], ngImport: i0, template: "<div\n class=\"field-wrapper\"\n [ngClass]=\"'field-' + state + ' field-' + status + (isFocused ? ' is-focused' : '')\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n>\n <!-- Content projection for pre-tab -->\n <ng-content select=\"lib-pre-tab\"></ng-content>\n\n @if (iconBefore) {\n <span\n class=\"icon icon-before material-symbols-outlined\"\n (click)=\"onIconBeforeClick()\"\n [ngClass]=\"{ clickable: iconBeforeClickable, disabled: disabled }\"\n >\n {{ iconBefore }}\n </span>\n }\n\n @if (isFullText) {\n <textarea\n class=\"field-input field-textarea\"\n [id]=\"inputId\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [rows]=\"rows\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else {\n <input\n [type]=\"inputType\"\n [id]=\"inputId\"\n class=\"field-input\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n\n @if (iconAfter) {\n <span\n class=\"icon icon-after material-symbols-outlined\"\n (click)=\"onIconAfterClick()\"\n (keydown)=\"onIconAfterKeydown($event)\"\n [ngClass]=\"{ clickable: iconAfterClickable, disabled: disabled }\"\n [attr.tabindex]=\"iconAfterClickable && !disabled ? 0 : null\"\n [attr.role]=\"iconAfterClickable ? 'button' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n >\n {{ iconAfter }}\n </span>\n }\n\n <!-- Content projection for post-tab -->\n <ng-content select=\"lib-post-tab\"></ng-content>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.field-wrapper{display:flex;flex-direction:row;align-items:center;padding:.25rem .75rem;gap:.5rem;box-sizing:border-box;border-radius:.25rem;width:100%;min-height:2rem;transition:all .2s ease}.field-wrapper .field-input{flex:1;flex-grow:1;min-width:0;border:none;outline:none;padding:0;resize:none;font-family:Source Sans Pro,sans-serif;font-size:1rem;background:inherit}.field-wrapper .field-input:disabled{cursor:not-allowed}.field-wrapper .field-input.field-textarea{align-self:flex-start;padding:.5rem 0}.field-wrapper .icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex-shrink:0;font-size:1.5rem;color:inherit}.field-wrapper .icon.clickable{cursor:pointer;transition:color .2s ease}.field-wrapper .icon.clickable:hover:not(.disabled){color:#0047ba}.field-wrapper .icon.icon-before{order:0}.field-wrapper .icon.icon-after{order:2}.field-wrapper.field-default{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.field-hover{background:#fff;border:1px solid #0047ba;color:#141414}.field-wrapper.field-focused{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.is-focused{outline:.125rem solid #b967c7;outline-offset:.125rem}.field-wrapper.field-error.field-not-filled{background:#fff;border:1px solid #c73e3d;color:#676767}.field-wrapper.field-error.field-not-filled .icon{color:#b33837}.field-wrapper.field-error.field-filled{background:#f9ecec;border:1px solid #c73e3d;color:#141414}.field-wrapper.field-error.field-filled .icon{color:#b33837}.field-wrapper.field-success.field-not-filled{background:#fff;border:1px solid #3ba35a;color:#676767}.field-wrapper.field-success.field-not-filled .icon{color:#2e8545}.field-wrapper.field-success.field-filled{background:#ebf6ee;border:1px solid #3ba35a;color:#141414}.field-wrapper.field-success.field-filled .icon{color:#2e8545}.field-wrapper.field-disabled{background:#f9f9f9;border:1px solid #676767;color:#676767;cursor:not-allowed}.field-wrapper.field-disabled .icon{color:#8f8f8f}.field-wrapper.field-disabled .icon.clickable{cursor:not-allowed}.field-wrapper.field-disabled .icon.clickable:hover{color:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1609
|
+
], ngImport: i0, template: "<div\n class=\"field-wrapper\"\n [ngClass]=\"\n 'field-' +\n state +\n ' field-' +\n status +\n (isFocused ? ' is-focused' : '') +\n (wrapContent ? ' field-wrap-content' : '')\n \"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n>\n <!-- Content projection for pre-tab -->\n <ng-content select=\"lib-pre-tab\"></ng-content>\n\n <!-- Content projection for field prefix, currently only used for chips in multi-select dropdown -->\n <ng-content select=\"[fieldPrefix]\"></ng-content>\n\n @if (iconBefore) {\n <span\n class=\"icon icon-before material-symbols-outlined\"\n (click)=\"onIconBeforeClick()\"\n [ngClass]=\"{ clickable: iconBeforeClickable, disabled: disabled }\"\n >\n {{ iconBefore }}\n </span>\n }\n\n @if (isFullText) {\n <textarea\n class=\"field-input field-textarea\"\n [id]=\"inputId\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [rows]=\"rows\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else {\n <input\n [type]=\"inputType\"\n [id]=\"inputId\"\n class=\"field-input\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n\n @if (iconAfter) {\n <span\n class=\"icon icon-after material-symbols-outlined\"\n (click)=\"onIconAfterClick()\"\n (keydown)=\"onIconAfterKeydown($event)\"\n [ngClass]=\"{ clickable: iconAfterClickable, disabled: disabled }\"\n [attr.tabindex]=\"iconAfterClickable && !disabled ? 0 : null\"\n [attr.role]=\"iconAfterClickable ? 'button' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n >\n {{ iconAfter }}\n </span>\n }\n\n <!-- Content projection for post-tab -->\n <ng-content select=\"lib-post-tab\"></ng-content>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.field-wrapper{display:flex;flex-direction:row;align-items:center;padding:.25rem .75rem;gap:.5rem;box-sizing:border-box;border-radius:.25rem;width:100%;min-height:2rem;transition:all .2s ease}.field-wrapper .field-input{flex:1;flex-grow:1;min-width:0;border:none;outline:none;padding:0;resize:none;font-family:Source Sans Pro,sans-serif;font-size:1rem;background:inherit}.field-wrapper .field-input:disabled{cursor:not-allowed}.field-wrapper .field-input.field-textarea{align-self:flex-start;padding:.5rem 0}.field-wrapper .icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex-shrink:0;font-size:1.5rem;color:inherit}.field-wrapper .icon.clickable{cursor:pointer;transition:color .2s ease}.field-wrapper .icon.clickable:hover:not(.disabled){color:#0047ba}.field-wrapper .icon.icon-before{order:0}.field-wrapper .icon.icon-after{order:2}.field-wrapper.field-wrap-content{flex-wrap:wrap;max-width:100%}.field-wrapper.field-wrap-content .field-input{flex:1 1 0;min-width:0}.field-wrapper.field-default{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.field-hover{background:#fff;border:1px solid #0047ba;color:#141414}.field-wrapper.field-focused{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.is-focused{outline:.125rem solid #b967c7;outline-offset:.125rem}.field-wrapper.field-error.field-not-filled{background:#fff;border:1px solid #c73e3d;color:#676767}.field-wrapper.field-error.field-not-filled .icon{color:#b33837}.field-wrapper.field-error.field-filled{background:#f9ecec;border:1px solid #c73e3d;color:#141414}.field-wrapper.field-error.field-filled .icon{color:#b33837}.field-wrapper.field-success.field-not-filled{background:#fff;border:1px solid #3ba35a;color:#676767}.field-wrapper.field-success.field-not-filled .icon{color:#2e8545}.field-wrapper.field-success.field-filled{background:#ebf6ee;border:1px solid #3ba35a;color:#141414}.field-wrapper.field-success.field-filled .icon{color:#2e8545}.field-wrapper.field-disabled{background:#f9f9f9;border:1px solid #676767;color:#676767;cursor:not-allowed}.field-wrapper.field-disabled .icon{color:#8f8f8f}.field-wrapper.field-disabled .icon.clickable{cursor:not-allowed}.field-wrapper.field-disabled .icon.clickable:hover{color:inherit}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1616
1610
|
}
|
|
1617
1611
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: FieldComponent, decorators: [{
|
|
1618
1612
|
type: Component,
|
|
@@ -1622,7 +1616,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1622
1616
|
useExisting: forwardRef(() => FieldComponent),
|
|
1623
1617
|
multi: true,
|
|
1624
1618
|
},
|
|
1625
|
-
], template: "<div\n class=\"field-wrapper\"\n [ngClass]=\"'field-' + state + ' field-' + status + (isFocused ? ' is-focused' : '')\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n>\n <!-- Content projection for pre-tab -->\n <ng-content select=\"lib-pre-tab\"></ng-content>\n\n @if (iconBefore) {\n <span\n class=\"icon icon-before material-symbols-outlined\"\n (click)=\"onIconBeforeClick()\"\n [ngClass]=\"{ clickable: iconBeforeClickable, disabled: disabled }\"\n >\n {{ iconBefore }}\n </span>\n }\n\n @if (isFullText) {\n <textarea\n class=\"field-input field-textarea\"\n [id]=\"inputId\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [rows]=\"rows\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else {\n <input\n [type]=\"inputType\"\n [id]=\"inputId\"\n class=\"field-input\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n\n @if (iconAfter) {\n <span\n class=\"icon icon-after material-symbols-outlined\"\n (click)=\"onIconAfterClick()\"\n (keydown)=\"onIconAfterKeydown($event)\"\n [ngClass]=\"{ clickable: iconAfterClickable, disabled: disabled }\"\n [attr.tabindex]=\"iconAfterClickable && !disabled ? 0 : null\"\n [attr.role]=\"iconAfterClickable ? 'button' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n >\n {{ iconAfter }}\n </span>\n }\n\n <!-- Content projection for post-tab -->\n <ng-content select=\"lib-post-tab\"></ng-content>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.field-wrapper{display:flex;flex-direction:row;align-items:center;padding:.25rem .75rem;gap:.5rem;box-sizing:border-box;border-radius:.25rem;width:100%;min-height:2rem;transition:all .2s ease}.field-wrapper .field-input{flex:1;flex-grow:1;min-width:0;border:none;outline:none;padding:0;resize:none;font-family:Source Sans Pro,sans-serif;font-size:1rem;background:inherit}.field-wrapper .field-input:disabled{cursor:not-allowed}.field-wrapper .field-input.field-textarea{align-self:flex-start;padding:.5rem 0}.field-wrapper .icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex-shrink:0;font-size:1.5rem;color:inherit}.field-wrapper .icon.clickable{cursor:pointer;transition:color .2s ease}.field-wrapper .icon.clickable:hover:not(.disabled){color:#0047ba}.field-wrapper .icon.icon-before{order:0}.field-wrapper .icon.icon-after{order:2}.field-wrapper.field-default{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.field-hover{background:#fff;border:1px solid #0047ba;color:#141414}.field-wrapper.field-focused{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.is-focused{outline:.125rem solid #b967c7;outline-offset:.125rem}.field-wrapper.field-error.field-not-filled{background:#fff;border:1px solid #c73e3d;color:#676767}.field-wrapper.field-error.field-not-filled .icon{color:#b33837}.field-wrapper.field-error.field-filled{background:#f9ecec;border:1px solid #c73e3d;color:#141414}.field-wrapper.field-error.field-filled .icon{color:#b33837}.field-wrapper.field-success.field-not-filled{background:#fff;border:1px solid #3ba35a;color:#676767}.field-wrapper.field-success.field-not-filled .icon{color:#2e8545}.field-wrapper.field-success.field-filled{background:#ebf6ee;border:1px solid #3ba35a;color:#141414}.field-wrapper.field-success.field-filled .icon{color:#2e8545}.field-wrapper.field-disabled{background:#f9f9f9;border:1px solid #676767;color:#676767;cursor:not-allowed}.field-wrapper.field-disabled .icon{color:#8f8f8f}.field-wrapper.field-disabled .icon.clickable{cursor:not-allowed}.field-wrapper.field-disabled .icon.clickable:hover{color:inherit}\n"] }]
|
|
1619
|
+
], template: "<div\n class=\"field-wrapper\"\n [ngClass]=\"\n 'field-' +\n state +\n ' field-' +\n status +\n (isFocused ? ' is-focused' : '') +\n (wrapContent ? ' field-wrap-content' : '')\n \"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n>\n <!-- Content projection for pre-tab -->\n <ng-content select=\"lib-pre-tab\"></ng-content>\n\n <!-- Content projection for field prefix, currently only used for chips in multi-select dropdown -->\n <ng-content select=\"[fieldPrefix]\"></ng-content>\n\n @if (iconBefore) {\n <span\n class=\"icon icon-before material-symbols-outlined\"\n (click)=\"onIconBeforeClick()\"\n [ngClass]=\"{ clickable: iconBeforeClickable, disabled: disabled }\"\n >\n {{ iconBefore }}\n </span>\n }\n\n @if (isFullText) {\n <textarea\n class=\"field-input field-textarea\"\n [id]=\"inputId\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [rows]=\"rows\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else {\n <input\n [type]=\"inputType\"\n [id]=\"inputId\"\n class=\"field-input\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n (input)=\"onValueChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n\n @if (iconAfter) {\n <span\n class=\"icon icon-after material-symbols-outlined\"\n (click)=\"onIconAfterClick()\"\n (keydown)=\"onIconAfterKeydown($event)\"\n [ngClass]=\"{ clickable: iconAfterClickable, disabled: disabled }\"\n [attr.tabindex]=\"iconAfterClickable && !disabled ? 0 : null\"\n [attr.role]=\"iconAfterClickable ? 'button' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n >\n {{ iconAfter }}\n </span>\n }\n\n <!-- Content projection for post-tab -->\n <ng-content select=\"lib-post-tab\"></ng-content>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.field-wrapper{display:flex;flex-direction:row;align-items:center;padding:.25rem .75rem;gap:.5rem;box-sizing:border-box;border-radius:.25rem;width:100%;min-height:2rem;transition:all .2s ease}.field-wrapper .field-input{flex:1;flex-grow:1;min-width:0;border:none;outline:none;padding:0;resize:none;font-family:Source Sans Pro,sans-serif;font-size:1rem;background:inherit}.field-wrapper .field-input:disabled{cursor:not-allowed}.field-wrapper .field-input.field-textarea{align-self:flex-start;padding:.5rem 0}.field-wrapper .icon{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;flex-shrink:0;font-size:1.5rem;color:inherit}.field-wrapper .icon.clickable{cursor:pointer;transition:color .2s ease}.field-wrapper .icon.clickable:hover:not(.disabled){color:#0047ba}.field-wrapper .icon.icon-before{order:0}.field-wrapper .icon.icon-after{order:2}.field-wrapper.field-wrap-content{flex-wrap:wrap;max-width:100%}.field-wrapper.field-wrap-content .field-input{flex:1 1 0;min-width:0}.field-wrapper.field-default{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.field-hover{background:#fff;border:1px solid #0047ba;color:#141414}.field-wrapper.field-focused{background:#fff;border:1px solid #d0d0d0;color:#141414}.field-wrapper.is-focused{outline:.125rem solid #b967c7;outline-offset:.125rem}.field-wrapper.field-error.field-not-filled{background:#fff;border:1px solid #c73e3d;color:#676767}.field-wrapper.field-error.field-not-filled .icon{color:#b33837}.field-wrapper.field-error.field-filled{background:#f9ecec;border:1px solid #c73e3d;color:#141414}.field-wrapper.field-error.field-filled .icon{color:#b33837}.field-wrapper.field-success.field-not-filled{background:#fff;border:1px solid #3ba35a;color:#676767}.field-wrapper.field-success.field-not-filled .icon{color:#2e8545}.field-wrapper.field-success.field-filled{background:#ebf6ee;border:1px solid #3ba35a;color:#141414}.field-wrapper.field-success.field-filled .icon{color:#2e8545}.field-wrapper.field-disabled{background:#f9f9f9;border:1px solid #676767;color:#676767;cursor:not-allowed}.field-wrapper.field-disabled .icon{color:#8f8f8f}.field-wrapper.field-disabled .icon.clickable{cursor:not-allowed}.field-wrapper.field-disabled .icon.clickable:hover{color:inherit}\n"] }]
|
|
1626
1620
|
}], propDecorators: { inputType: [{
|
|
1627
1621
|
type: Input
|
|
1628
1622
|
}], inputId: [{
|
|
@@ -1663,6 +1657,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1663
1657
|
type: Input
|
|
1664
1658
|
}], maxHeight: [{
|
|
1665
1659
|
type: Input
|
|
1660
|
+
}], wrapContent: [{
|
|
1661
|
+
type: Input
|
|
1666
1662
|
}], valueChange: [{
|
|
1667
1663
|
type: Output
|
|
1668
1664
|
}], iconBeforeClick: [{
|
|
@@ -1875,7 +1871,7 @@ class ImpersonateModalComponent {
|
|
|
1875
1871
|
this.subs.unsubscribe();
|
|
1876
1872
|
}
|
|
1877
1873
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ImpersonateModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1878
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ImpersonateModalComponent, isStandalone: true, selector: "lib-impersonate-modal", inputs: { showModal: { classPropertyName: "showModal", publicName: "showModal", isSignal: false, isRequired: false, transformFunction: null }, oidcBaseUri: { classPropertyName: "oidcBaseUri", publicName: "oidcBaseUri", isSignal: true, isRequired: false, transformFunction: null }, oidcDefaultIdp: { classPropertyName: "oidcDefaultIdp", publicName: "oidcDefaultIdp", isSignal: true, isRequired: false, transformFunction: null }, accessTokenPayload: { classPropertyName: "accessTokenPayload", publicName: "accessTokenPayload", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { dismiss: "dismiss", init: "init" }, host: { listeners: { "document:mousedown": "outsideClick($event)", "document:keydown": "handleKeyDown($event)" } }, ngImport: i0, template: "@if (isOpen) {\n <div @libHbllFadeInOut class=\"modal-wrapper\" id=\"modalBackdrop\" data-testid=\"backdrop\">\n <div class=\"modal-container\" data-testid=\"modal\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div class=\"modal-header\">\n <h2>Impersonate</h2>\n <button type=\"button\" (click)=\"close()\" aria-label=\"Close\" data-testid=\"close\">\n <span class=\"material-symbols-outlined icon-close\"> close </span>\n </button>\n </div>\n <form [formGroup]=\"form\" (submit)=\"handleFormSubmit($event)\" data-testid=\"searchForm\">\n <div class=\"search-header\">\n <div class=\"secondary\" [class.disabled]=\"!form.valid\">\n <span class=\"keyboard-key\">Enter</span> to search\n </div>\n </div>\n <div class=\"search-field-wrapper\">\n <lib-label\n text=\"Search patrons\"\n [for]=\"'searchInput'\"\n type=\"none\"\n class=\"sr-only\"\n ></lib-label>\n <lib-field\n inputId=\"searchInput\"\n placeholder=\"Search patrons...\"\n formControlName=\"search\"\n iconBefore=\"search\"\n [iconAfter]=\"searchIconAfter\"\n [iconAfterClickable]=\"isIconAfterClickable\"\n (iconAfterClick)=\"handleIconAfterClick()\"\n (keydown)=\"handleSearchKeyPress($event)\"\n [state]=\"fieldState\"\n data-testid=\"searchInput\"\n ></lib-field>\n </div>\n </form>\n <fieldset\n class=\"search-results-wrapper\"\n id=\"resultsScrollContainer\"\n (change)=\"handleSelectUser($event)\"\n >\n @if (!loading && results()) {\n @for (user of results(); track user.netId; let idx = $index) {\n <div\n class=\"result-field result\"\n [class.focus]=\"user.username === selectedUsername\"\n data-testid=\"result\"\n >\n <label\n [for]=\"'result_' + idx\"\n [class.warning]=\"user.restricted\"\n (mouseover)=\"selectedUsername = user.username\"\n >\n @if (user.restricted) {\n <span class=\"material-symbols-outlined icon\"> warning </span>\n } @else {\n <span class=\"material-symbols-outlined icon\"> person </span>\n }\n \n <span [title]=\"user\" data-testid=\"resultText\">{{\n user | impersonateUser\n }}</span>\n <input\n type=\"radio\"\n [value]=\"user.username\"\n class=\"hidden\"\n [id]=\"'result_' + idx\"\n name=\"resultSelect\"\n tabindex=\"-1\"\n />\n </label>\n <button\n class=\"impersonate-button\"\n data-testid=\"impersonateBtn\"\n (click)=\"startImpersonation(user.username)\"\n >\n Impersonate\n </button>\n </div>\n } @empty {\n <div class=\"result-field\">\n No results. Try searching by Net ID or BYU ID.\n </div>\n }\n }\n @if (loading) {\n <div class=\"result-field\">\n <div class=\"lib-spinner\"></div>\n </div>\n }\n @if (hasError) {\n <div class=\"result-field\">Something went wrong. We'll keep trying.</div>\n }\n </fieldset>\n </div>\n </div>\n}\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box}h2{font-size:1.2em;font-weight:600;margin:0;color:#404040}.warning{color:#b33837}.modal-wrapper{position:fixed;inset:0;background-color:#0000007f;z-index:10000;display:grid;place-items:center}.modal-container{color:#404040;padding:1.2em 1.4em;width:90%;max-width:30em;border-radius:4px;border:1px solid #d0d0d0;box-shadow:0 3px 6px #00245d20;background-color:#fff;display:grid;grid-template-columns:1fr;gap:1em}.modal-container .modal-header{display:flex;justify-content:space-between;border-bottom:1px solid #e7e7e7;padding-bottom:.8em}.modal-container .modal-header>button{background:transparent;border:none;padding:.25rem;height:2rem;width:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px}.modal-container .modal-header>button:focus{outline:2px solid #7040aa;outline-offset:2px}.modal-container .modal-header .icon-close{transition:opacity .15s;color:#676767;opacity:1;cursor:pointer}.modal-container .modal-header .icon-close:hover{opacity:.8}.modal-container .hidden{opacity:0;width:0;height:0}.modal-container .search-header{display:flex;align-items:center;justify-content:flex-end;margin-bottom:.8em}.modal-container .search-header .secondary{color:#676767}.modal-container .search-header .keyboard-key{padding:.1em .4em;border:1px solid #676767;border-radius:4px}.modal-container .search-field-wrapper{display:flex;flex-direction:column;gap:.5rem}.modal-container .search-field-wrapper .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.modal-container .search-results-wrapper{border:none;margin:0;padding:0;max-height:25em;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;display:flex;flex-direction:column;align-items:stretch;min-width:0}.modal-container .search-results-wrapper::-webkit-scrollbar{width:6px}.modal-container .search-results-wrapper::-webkit-scrollbar-track{background:#e6e6e6}.modal-container .search-results-wrapper::-webkit-scrollbar-thumb{background-color:#b3b3b3;border-radius:5px}.modal-container .search-results-wrapper::-webkit-scrollbar-thumb:hover{background-color:#888}.modal-container .search-results-wrapper .result-field{font-style:italic;display:flex;align-items:center;justify-content:space-between;padding:.8em}.modal-container .search-results-wrapper .result-field .lib-spinner{margin:auto;display:grid;place-items:center}.modal-container .search-results-wrapper .result-field.result{font-style:normal;padding:0}.modal-container .search-results-wrapper .result-field.result label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1;padding:.8em;display:flex;align-items:center}.modal-container .search-results-wrapper .result-field.result label .icon{font-size:1.2em;margin-right:.4em}.modal-container .search-results-wrapper .result-field.result .impersonate-button{cursor:pointer;display:inline-flex;color:#7040aa;padding:.1em .6em;border:1px solid #8f8f8f;border-radius:4px;background-color:#fff;flex-shrink:0;margin-block:.6em;margin-right:.8em}.modal-container .search-results-wrapper .result-field.result .impersonate-button:hover{color:#b967c7;background-color:#fff8}.modal-container .search-results-wrapper .result-field.result:active,.modal-container .search-results-wrapper .result-field.result.focus{background:#f2f2f2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LabelComponent, selector: "lib-label", inputs: ["text", "type", "showHelpIcon", "ariaLabel", "position", "isRequired", "for", "subtext"], outputs: ["helpIconClick"] }, { kind: "component", type: FieldComponent, selector: "lib-field", inputs: ["inputType", "inputId", "placeholder", "state", "status", "iconBefore", "iconAfter", "iconBeforeClickable", "iconAfterClickable", "iconBeforeAction", "iconAfterAction", "disabled", "ariaLabel", "value", "isFullText", "rows", "minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["valueChange", "iconBeforeClick", "iconAfterClick", "fieldFocus", "fieldBlur"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: ImpersonateUserPipe, name: "impersonateUser" }], animations: [libHbllFadeInOut] }); }
|
|
1874
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ImpersonateModalComponent, isStandalone: true, selector: "lib-impersonate-modal", inputs: { showModal: { classPropertyName: "showModal", publicName: "showModal", isSignal: false, isRequired: false, transformFunction: null }, oidcBaseUri: { classPropertyName: "oidcBaseUri", publicName: "oidcBaseUri", isSignal: true, isRequired: false, transformFunction: null }, oidcDefaultIdp: { classPropertyName: "oidcDefaultIdp", publicName: "oidcDefaultIdp", isSignal: true, isRequired: false, transformFunction: null }, accessTokenPayload: { classPropertyName: "accessTokenPayload", publicName: "accessTokenPayload", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { dismiss: "dismiss", init: "init" }, host: { listeners: { "document:mousedown": "outsideClick($event)", "document:keydown": "handleKeyDown($event)" } }, ngImport: i0, template: "@if (isOpen) {\n <div @libHbllFadeInOut class=\"modal-wrapper\" id=\"modalBackdrop\" data-testid=\"backdrop\">\n <div class=\"modal-container\" data-testid=\"modal\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div class=\"modal-header\">\n <h2>Impersonate</h2>\n <button type=\"button\" (click)=\"close()\" aria-label=\"Close\" data-testid=\"close\">\n <span class=\"material-symbols-outlined icon-close\"> close </span>\n </button>\n </div>\n <form [formGroup]=\"form\" (submit)=\"handleFormSubmit($event)\" data-testid=\"searchForm\">\n <div class=\"search-header\">\n <div class=\"secondary\" [class.disabled]=\"!form.valid\">\n <span class=\"keyboard-key\">Enter</span> to search\n </div>\n </div>\n <div class=\"search-field-wrapper\">\n <lib-label\n text=\"Search patrons\"\n [for]=\"'searchInput'\"\n type=\"none\"\n class=\"sr-only\"\n ></lib-label>\n <lib-field\n inputId=\"searchInput\"\n placeholder=\"Search patrons...\"\n formControlName=\"search\"\n iconBefore=\"search\"\n [iconAfter]=\"searchIconAfter\"\n [iconAfterClickable]=\"isIconAfterClickable\"\n (iconAfterClick)=\"handleIconAfterClick()\"\n (keydown)=\"handleSearchKeyPress($event)\"\n [state]=\"fieldState\"\n data-testid=\"searchInput\"\n ></lib-field>\n </div>\n </form>\n <fieldset\n class=\"search-results-wrapper\"\n id=\"resultsScrollContainer\"\n (change)=\"handleSelectUser($event)\"\n >\n @if (!loading && results()) {\n @for (user of results(); track user.netId; let idx = $index) {\n <div\n class=\"result-field result\"\n [class.focus]=\"user.username === selectedUsername\"\n data-testid=\"result\"\n >\n <label\n [for]=\"'result_' + idx\"\n [class.warning]=\"user.restricted\"\n (mouseover)=\"selectedUsername = user.username\"\n >\n @if (user.restricted) {\n <span class=\"material-symbols-outlined icon\"> warning </span>\n } @else {\n <span class=\"material-symbols-outlined icon\"> person </span>\n }\n \n <span [title]=\"user\" data-testid=\"resultText\">{{\n user | impersonateUser\n }}</span>\n <input\n type=\"radio\"\n [value]=\"user.username\"\n class=\"hidden\"\n [id]=\"'result_' + idx\"\n name=\"resultSelect\"\n tabindex=\"-1\"\n />\n </label>\n <button\n class=\"impersonate-button\"\n data-testid=\"impersonateBtn\"\n (click)=\"startImpersonation(user.username)\"\n >\n Impersonate\n </button>\n </div>\n } @empty {\n <div class=\"result-field\">\n No results. Try searching by Net ID or BYU ID.\n </div>\n }\n }\n @if (loading) {\n <div class=\"result-field\">\n <div class=\"lib-spinner\"></div>\n </div>\n }\n @if (hasError) {\n <div class=\"result-field\">Something went wrong. We'll keep trying.</div>\n }\n </fieldset>\n </div>\n </div>\n}\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box}h2{font-size:1.2em;font-weight:600;margin:0;color:#404040}.warning{color:#b33837}.modal-wrapper{position:fixed;inset:0;background-color:#0000007f;z-index:10000;display:grid;place-items:center}.modal-container{color:#404040;padding:1.2em 1.4em;width:90%;max-width:30em;border-radius:4px;border:1px solid #d0d0d0;box-shadow:0 3px 6px #00245d20;background-color:#fff;display:grid;grid-template-columns:1fr;gap:1em}.modal-container .modal-header{display:flex;justify-content:space-between;border-bottom:1px solid #e7e7e7;padding-bottom:.8em}.modal-container .modal-header>button{background:transparent;border:none;padding:.25rem;height:2rem;width:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:4px}.modal-container .modal-header>button:focus{outline:2px solid #7040aa;outline-offset:2px}.modal-container .modal-header .icon-close{transition:opacity .15s;color:#676767;opacity:1;cursor:pointer}.modal-container .modal-header .icon-close:hover{opacity:.8}.modal-container .hidden{opacity:0;width:0;height:0}.modal-container .search-header{display:flex;align-items:center;justify-content:flex-end;margin-bottom:.8em}.modal-container .search-header .secondary{color:#676767}.modal-container .search-header .keyboard-key{padding:.1em .4em;border:1px solid #676767;border-radius:4px}.modal-container .search-field-wrapper{display:flex;flex-direction:column;gap:.5rem}.modal-container .search-field-wrapper .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.modal-container .search-results-wrapper{border:none;margin:0;padding:0;max-height:25em;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;display:flex;flex-direction:column;align-items:stretch;min-width:0}.modal-container .search-results-wrapper::-webkit-scrollbar{width:6px}.modal-container .search-results-wrapper::-webkit-scrollbar-track{background:#e6e6e6}.modal-container .search-results-wrapper::-webkit-scrollbar-thumb{background-color:#b3b3b3;border-radius:5px}.modal-container .search-results-wrapper::-webkit-scrollbar-thumb:hover{background-color:#888}.modal-container .search-results-wrapper .result-field{font-style:italic;display:flex;align-items:center;justify-content:space-between;padding:.8em}.modal-container .search-results-wrapper .result-field .lib-spinner{margin:auto;display:grid;place-items:center}.modal-container .search-results-wrapper .result-field.result{font-style:normal;padding:0}.modal-container .search-results-wrapper .result-field.result label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1;padding:.8em;display:flex;align-items:center}.modal-container .search-results-wrapper .result-field.result label .icon{font-size:1.2em;margin-right:.4em}.modal-container .search-results-wrapper .result-field.result .impersonate-button{cursor:pointer;display:inline-flex;color:#7040aa;padding:.1em .6em;border:1px solid #8f8f8f;border-radius:4px;background-color:#fff;flex-shrink:0;margin-block:.6em;margin-right:.8em}.modal-container .search-results-wrapper .result-field.result .impersonate-button:hover{color:#b967c7;background-color:#fff8}.modal-container .search-results-wrapper .result-field.result:active,.modal-container .search-results-wrapper .result-field.result.focus{background:#f2f2f2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LabelComponent, selector: "lib-label", inputs: ["text", "type", "showHelpIcon", "ariaLabel", "position", "isRequired", "for", "subtext"], outputs: ["helpIconClick"] }, { kind: "component", type: FieldComponent, selector: "lib-field", inputs: ["inputType", "inputId", "placeholder", "state", "status", "iconBefore", "iconAfter", "iconBeforeClickable", "iconAfterClickable", "iconBeforeAction", "iconAfterAction", "disabled", "ariaLabel", "value", "isFullText", "rows", "minWidth", "maxWidth", "minHeight", "maxHeight", "wrapContent"], outputs: ["valueChange", "iconBeforeClick", "iconAfterClick", "fieldFocus", "fieldBlur"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: ImpersonateUserPipe, name: "impersonateUser" }], animations: [libHbllFadeInOut] }); }
|
|
1879
1875
|
}
|
|
1880
1876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ImpersonateModalComponent, decorators: [{
|
|
1881
1877
|
type: Component,
|
|
@@ -2127,7 +2123,7 @@ const ADVANCED_SEARCH_OPTIONS = {
|
|
|
2127
2123
|
'ldsbc -- reserve': 'Reserve',
|
|
2128
2124
|
},
|
|
2129
2125
|
},
|
|
2130
|
-
// This could be refactored to be a list, but currently the multi-select component expects an object
|
|
2126
|
+
// This could be refactored to be a list, but currently the multi-select dropdown component expects an object
|
|
2131
2127
|
languages: {
|
|
2132
2128
|
English: 'English',
|
|
2133
2129
|
Arabic: 'Arabic',
|
|
@@ -2248,107 +2244,6 @@ const validateDateRangeFields = () => {
|
|
|
2248
2244
|
};
|
|
2249
2245
|
};
|
|
2250
2246
|
|
|
2251
|
-
class HbllMultiSelectComponent {
|
|
2252
|
-
constructor() {
|
|
2253
|
-
this.allOptions = {};
|
|
2254
|
-
this.label = '';
|
|
2255
|
-
/**
|
|
2256
|
-
* An array that indicates which keys are selected.
|
|
2257
|
-
*/
|
|
2258
|
-
this.selectedKeys = [];
|
|
2259
|
-
/**
|
|
2260
|
-
* An EventEmitter that emits an array of keys indicating which options are currently selected.
|
|
2261
|
-
*/
|
|
2262
|
-
this.selectedKeysChange = new EventEmitter();
|
|
2263
|
-
this.inputControl = new FormControl('');
|
|
2264
|
-
this.filteredOptions$ = combineLatest([
|
|
2265
|
-
this.inputControl.valueChanges.pipe(startWith('')),
|
|
2266
|
-
this.selectedKeysChange.asObservable().pipe(startWith([])),
|
|
2267
|
-
]).pipe(map$1(([key]) =>
|
|
2268
|
-
// Display filtered options if there is a value, else display all options currently not selected.
|
|
2269
|
-
key
|
|
2270
|
-
? this.filterOptions(key)
|
|
2271
|
-
: Object.keys(this.allOptions).filter((key) => !this.selectedKeys.find((selectedOption) => key === selectedOption))));
|
|
2272
|
-
this.separatorKeysCodes = [ENTER, COMMA];
|
|
2273
|
-
/**
|
|
2274
|
-
* Adds an option to the array of selected keys when a user selects from the autocomplete.
|
|
2275
|
-
* @param {MatAutocompleteSelectedEvent} event MatAutocompleteSelectedEvent
|
|
2276
|
-
*/
|
|
2277
|
-
this.selectOption = (event) => {
|
|
2278
|
-
this.addOptionToSelectedOptions(event.option.value);
|
|
2279
|
-
};
|
|
2280
|
-
/**
|
|
2281
|
-
* Filters the options by the supplied value as well as the currently selected values.
|
|
2282
|
-
* @param {string} value value to filter by.
|
|
2283
|
-
* @returns {string[]} the filtered keys
|
|
2284
|
-
*/
|
|
2285
|
-
this.filterOptions = (value) => {
|
|
2286
|
-
return Object.keys(this.allOptions).filter((key) => this.allOptions[key].toLowerCase().includes(value.toLowerCase()) &&
|
|
2287
|
-
!this.selectedKeys.includes(key));
|
|
2288
|
-
};
|
|
2289
|
-
/**
|
|
2290
|
-
* Adds a key to the selected keys array if the option is truthy and not already in the array.
|
|
2291
|
-
* The input is also cleared (if available), and the new selected keys are emitted.
|
|
2292
|
-
* @param {key} option key to add
|
|
2293
|
-
*/
|
|
2294
|
-
this.addOptionToSelectedOptions = (key) => {
|
|
2295
|
-
if (key && !this.selectedKeys.includes(key) && this.allOptions[key]) {
|
|
2296
|
-
this.selectedKeys.push(key);
|
|
2297
|
-
this.inputControl.setValue('');
|
|
2298
|
-
this.selectedKeysChange.emit(this.selectedKeys);
|
|
2299
|
-
if (this.inputRef)
|
|
2300
|
-
this.inputRef.nativeElement.value = '';
|
|
2301
|
-
}
|
|
2302
|
-
};
|
|
2303
|
-
}
|
|
2304
|
-
/**
|
|
2305
|
-
* Adds a key from the input to the array of selected key.
|
|
2306
|
-
* The value from the input must match a key from the record of all options.
|
|
2307
|
-
* @param {MatChipInputEvent} event MatChipInputEvent
|
|
2308
|
-
*/
|
|
2309
|
-
addOption(event) {
|
|
2310
|
-
this.addOptionToSelectedOptions(event.value);
|
|
2311
|
-
}
|
|
2312
|
-
/**
|
|
2313
|
-
* Removes a key from the array of selected options and emits the new selected keys.
|
|
2314
|
-
* @param {MultiSelectKeyValPair} key key to remove
|
|
2315
|
-
*/
|
|
2316
|
-
removeOption(key) {
|
|
2317
|
-
const index = this.selectedKeys.indexOf(key);
|
|
2318
|
-
if (index >= 0) {
|
|
2319
|
-
this.selectedKeys.splice(index, 1);
|
|
2320
|
-
this.selectedKeysChange.emit(this.selectedKeys);
|
|
2321
|
-
}
|
|
2322
|
-
}
|
|
2323
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HbllMultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2324
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: HbllMultiSelectComponent, isStandalone: true, selector: "lib-multi-select", inputs: { elementId: "elementId", allOptions: "allOptions", label: "label", selectedKeys: "selectedKeys" }, outputs: { selectedKeysChange: "selectedKeysChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"components-multi-select\">\n <mat-form-field appearance=\"outline\">\n <mat-chip-grid #chipGrid [attr.aria-label]=\"label + ' selection'\">\n @for (key of selectedKeys; track key) {\n @if (allOptions[key]) {\n <mat-chip-row (removed)=\"removeOption(key)\" data-testid=\"matChipRow\">\n {{ allOptions[key] }}\n <button\n matChipRemove\n [attr.aria-label]=\"'remove ' + allOptions[key]\"\n [attr.data-testid]=\"'remove' + key\"\n >\n <span class=\"material-symbols-outlined components-icon\"> cancel </span>\n </button>\n </mat-chip-row>\n }\n }\n </mat-chip-grid>\n <label class=\"sr-only\" for=\"{{elementId}}\">{{ label }}</label>\n <input\n [placeholder]=\"label | titlecase\"\n #input\n id=\"{{elementId}}\"\n [formControl]=\"inputControl\"\n [matChipInputFor]=\"chipGrid\"\n [matAutocomplete]=\"auto\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addOption($event)\"\n data-testid=\"input\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"selectOption($event)\"\n data-testid=\"autocomplete\"\n >\n @for (key of filteredOptions$ | async; track key) {\n <mat-option [value]=\"key\" data-testid=\"autocompleteOption\">\n {{ allOptions[key] }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.components-multi-select{font:inherit}.components-multi-select mat-form-field{font:inherit;background-color:#fff;width:100%}.components-multi-select mat-form-field .mat-mdc-form-field-infix{padding:.35em 0;min-height:0}.components-multi-select mat-form-field .mat-mdc-chip-input{font:inherit;margin-left:0}.components-multi-select mat-form-field .mat-mdc-chip-input::placeholder{opacity:.75}.components-multi-select mat-form-field .mat-mdc-text-field-wrapper{padding:0 .5em}.components-multi-select mat-form-field .mdc-evolution-chip-set__chips{margin-bottom:.25rem}.components-multi-select mat-form-field .mat-mdc-chip-action:focus,.components-multi-select mat-form-field input:focus{outline:none;box-shadow:none;border:none}.components-multi-select mat-form-field .mat-mdc-chip-action:focus-visible,.components-multi-select mat-form-field input:focus-visible{outline:.18rem solid #b967c7}.components-multi-select .components-icon{font-size:1em}.components-multi-select .mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{font:inherit}.mat-mdc-option.mdc-list-item{background-color:#fff;font:inherit}.mat-mdc-autocomplete-panel{background-color:#fff!important}.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item:hover:not(.mdc-list-item--disabled),.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active.mdc-list-item,.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected{background-color:#e7e7e7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i1$3.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i1$3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i1$3.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i1$3.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2325
|
-
}
|
|
2326
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HbllMultiSelectComponent, decorators: [{
|
|
2327
|
-
type: Component,
|
|
2328
|
-
args: [{ selector: 'lib-multi-select', imports: [
|
|
2329
|
-
CommonModule,
|
|
2330
|
-
MatChipsModule,
|
|
2331
|
-
MatFormFieldModule,
|
|
2332
|
-
MatAutocompleteModule,
|
|
2333
|
-
ReactiveFormsModule,
|
|
2334
|
-
MatIconModule,
|
|
2335
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"components-multi-select\">\n <mat-form-field appearance=\"outline\">\n <mat-chip-grid #chipGrid [attr.aria-label]=\"label + ' selection'\">\n @for (key of selectedKeys; track key) {\n @if (allOptions[key]) {\n <mat-chip-row (removed)=\"removeOption(key)\" data-testid=\"matChipRow\">\n {{ allOptions[key] }}\n <button\n matChipRemove\n [attr.aria-label]=\"'remove ' + allOptions[key]\"\n [attr.data-testid]=\"'remove' + key\"\n >\n <span class=\"material-symbols-outlined components-icon\"> cancel </span>\n </button>\n </mat-chip-row>\n }\n }\n </mat-chip-grid>\n <label class=\"sr-only\" for=\"{{elementId}}\">{{ label }}</label>\n <input\n [placeholder]=\"label | titlecase\"\n #input\n id=\"{{elementId}}\"\n [formControl]=\"inputControl\"\n [matChipInputFor]=\"chipGrid\"\n [matAutocomplete]=\"auto\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addOption($event)\"\n data-testid=\"input\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"selectOption($event)\"\n data-testid=\"autocomplete\"\n >\n @for (key of filteredOptions$ | async; track key) {\n <mat-option [value]=\"key\" data-testid=\"autocompleteOption\">\n {{ allOptions[key] }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.components-multi-select{font:inherit}.components-multi-select mat-form-field{font:inherit;background-color:#fff;width:100%}.components-multi-select mat-form-field .mat-mdc-form-field-infix{padding:.35em 0;min-height:0}.components-multi-select mat-form-field .mat-mdc-chip-input{font:inherit;margin-left:0}.components-multi-select mat-form-field .mat-mdc-chip-input::placeholder{opacity:.75}.components-multi-select mat-form-field .mat-mdc-text-field-wrapper{padding:0 .5em}.components-multi-select mat-form-field .mdc-evolution-chip-set__chips{margin-bottom:.25rem}.components-multi-select mat-form-field .mat-mdc-chip-action:focus,.components-multi-select mat-form-field input:focus{outline:none;box-shadow:none;border:none}.components-multi-select mat-form-field .mat-mdc-chip-action:focus-visible,.components-multi-select mat-form-field input:focus-visible{outline:.18rem solid #b967c7}.components-multi-select .components-icon{font-size:1em}.components-multi-select .mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{font:inherit}.mat-mdc-option.mdc-list-item{background-color:#fff;font:inherit}.mat-mdc-autocomplete-panel{background-color:#fff!important}.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item:hover:not(.mdc-list-item--disabled),.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active,.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mat-mdc-option-active.mdc-list-item,.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item.mdc-list-item--selected{background-color:#e7e7e7}\n"] }]
|
|
2336
|
-
}], propDecorators: { inputRef: [{
|
|
2337
|
-
type: ViewChild,
|
|
2338
|
-
args: ['input']
|
|
2339
|
-
}], elementId: [{
|
|
2340
|
-
type: Input,
|
|
2341
|
-
args: [{ required: true }]
|
|
2342
|
-
}], allOptions: [{
|
|
2343
|
-
type: Input
|
|
2344
|
-
}], label: [{
|
|
2345
|
-
type: Input
|
|
2346
|
-
}], selectedKeys: [{
|
|
2347
|
-
type: Input
|
|
2348
|
-
}], selectedKeysChange: [{
|
|
2349
|
-
type: Output
|
|
2350
|
-
}] } });
|
|
2351
|
-
|
|
2352
2247
|
/**
|
|
2353
2248
|
* A flexible, reusable checkbox component that supports multiple states (error, disabled, indeterminate, default, and checked)
|
|
2354
2249
|
*
|
|
@@ -2451,6 +2346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
2451
2346
|
class DateRangeComponent {
|
|
2452
2347
|
constructor() {
|
|
2453
2348
|
this.fb = inject(NonNullableFormBuilder);
|
|
2349
|
+
this.isKeyboardFocus = false;
|
|
2454
2350
|
/**
|
|
2455
2351
|
* Emits `{ from: string, to: string }` object if both values are set to a valid or empty state by the user.
|
|
2456
2352
|
*/
|
|
@@ -2494,12 +2390,20 @@ class DateRangeComponent {
|
|
|
2494
2390
|
if (to !== this.dateForm.controls.to.value)
|
|
2495
2391
|
this.dateForm.controls.to.setValue(to);
|
|
2496
2392
|
}
|
|
2393
|
+
onDocumentKeydown(event) {
|
|
2394
|
+
if (event.key === 'Tab') {
|
|
2395
|
+
this.isKeyboardFocus = true;
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
onDocumentPointerdown() {
|
|
2399
|
+
this.isKeyboardFocus = false;
|
|
2400
|
+
}
|
|
2497
2401
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: DateRangeComponent, isStandalone: true, selector: "lib-date-range", inputs: { from: "from", to: "to" }, outputs: { validDateChange: "validDateChange", fromChange: "fromChange", toChange: "toChange" }, ngImport: i0, template: "<form
|
|
2402
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: DateRangeComponent, isStandalone: true, selector: "lib-date-range", inputs: { from: "from", to: "to" }, outputs: { validDateChange: "validDateChange", fromChange: "fromChange", toChange: "toChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)", "document:mousedown": "onDocumentPointerdown()", "document:pointerdown": "onDocumentPointerdown()" } }, ngImport: i0, template: "<form\n id=\"fromTo\"\n data-testid=\"fromTo\"\n [formGroup]=\"dateForm\"\n [class.ss-keyboard-focus]=\"isKeyboardFocus\"\n>\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}#fromTo{margin-top:.375rem;margin-bottom:.5rem}#fromTo label{margin-right:.7em}#fromTo label:not(:first-of-type){margin-left:.7em}#fromTo input{font-size:inherit;width:3.5em}#fromTo input.error{border-color:#b33837}input:focus{outline:none}.ss-keyboard-focus input:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}@media screen and (min-width: 690px){#fromTo{margin-bottom:.875rem}#fromTo label{margin-right:.65em}#fromTo label:not(:first-of-type){margin-left:.65em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], animations: [libHbllFadeInOut], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2499
2403
|
}
|
|
2500
2404
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DateRangeComponent, decorators: [{
|
|
2501
2405
|
type: Component,
|
|
2502
|
-
args: [{ selector: 'lib-date-range', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, ReactiveFormsModule], animations: [libHbllFadeInOut], template: "<form
|
|
2406
|
+
args: [{ selector: 'lib-date-range', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, ReactiveFormsModule], animations: [libHbllFadeInOut], template: "<form\n id=\"fromTo\"\n data-testid=\"fromTo\"\n [formGroup]=\"dateForm\"\n [class.ss-keyboard-focus]=\"isKeyboardFocus\"\n>\n <label for=\"fromFacet\">Between</label>\n <input\n formControlName=\"from\"\n id=\"fromFacet\"\n name=\"fromFacet\"\n data-testid=\"from\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onFromChange()\"\n [class.error]=\"\n dateForm.errors?.['fromInvalid'] || dateForm.controls.from.errors?.['pattern']\n \"\n />\n <label for=\"toFacet\">and</label>\n <input\n formControlName=\"to\"\n id=\"toFacet\"\n name=\"toFacet\"\n data-testid=\"to\"\n placeholder=\"YYYY\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n (input)=\"onToChange()\"\n [class.error]=\"dateForm.errors?.['toInvalid'] || dateForm.controls.to.errors?.['pattern']\"\n />\n</form>\n", styles: ["input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}#fromTo{margin-top:.375rem;margin-bottom:.5rem}#fromTo label{margin-right:.7em}#fromTo label:not(:first-of-type){margin-left:.7em}#fromTo input{font-size:inherit;width:3.5em}#fromTo input.error{border-color:#b33837}input:focus{outline:none}.ss-keyboard-focus input:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}@media screen and (min-width: 690px){#fromTo{margin-bottom:.875rem}#fromTo label{margin-right:.65em}#fromTo label:not(:first-of-type){margin-left:.65em}}\n"] }]
|
|
2503
2407
|
}], propDecorators: { validDateChange: [{
|
|
2504
2408
|
type: Output
|
|
2505
2409
|
}], fromChange: [{
|
|
@@ -2510,92 +2414,495 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
2510
2414
|
type: Input
|
|
2511
2415
|
}], to: [{
|
|
2512
2416
|
type: Input
|
|
2417
|
+
}], onDocumentKeydown: [{
|
|
2418
|
+
type: HostListener,
|
|
2419
|
+
args: ['document:keydown', ['$event']]
|
|
2420
|
+
}], onDocumentPointerdown: [{
|
|
2421
|
+
type: HostListener,
|
|
2422
|
+
args: ['document:mousedown']
|
|
2423
|
+
}, {
|
|
2424
|
+
type: HostListener,
|
|
2425
|
+
args: ['document:pointerdown']
|
|
2513
2426
|
}] } });
|
|
2514
2427
|
|
|
2515
|
-
|
|
2516
|
-
|
|
2428
|
+
/**
|
|
2429
|
+
* A dropdown component that combines a label and a searchable select field.
|
|
2430
|
+
* Features include:
|
|
2431
|
+
* - Searchable input to filter options
|
|
2432
|
+
* - Keyboard navigation support
|
|
2433
|
+
* - Optional label with help icon
|
|
2434
|
+
* - Optional multiple selection with removable chips
|
|
2435
|
+
* - Multiple states (default, focused, error, etc.)
|
|
2436
|
+
*
|
|
2437
|
+
* @example
|
|
2438
|
+
* ```html
|
|
2439
|
+
* <!-- Basic dropdown -->
|
|
2440
|
+
* <lib-dropdown
|
|
2441
|
+
* label="Select an option"
|
|
2442
|
+
* [options]="myOptions"
|
|
2443
|
+
* (valueChange)="onSelectionChange($event)">
|
|
2444
|
+
* </lib-dropdown>
|
|
2445
|
+
*
|
|
2446
|
+
* <!-- Required dropdown with help icon -->
|
|
2447
|
+
* <lib-dropdown
|
|
2448
|
+
* label="Category"
|
|
2449
|
+
* labelType="required"
|
|
2450
|
+
* [showHelpIcon]="true"
|
|
2451
|
+
* [options]="categories"
|
|
2452
|
+
* placeholder="Choose a category"
|
|
2453
|
+
* (valueChange)="onCategoryChange($event)">
|
|
2454
|
+
* </lib-dropdown>
|
|
2455
|
+
*
|
|
2456
|
+
* <!-- Dropdown with error state -->
|
|
2457
|
+
* <lib-dropdown
|
|
2458
|
+
* label="Status"
|
|
2459
|
+
* [options]="statuses"
|
|
2460
|
+
* state="error"
|
|
2461
|
+
* subtext="Please select a status"
|
|
2462
|
+
* (valueChange)="onStatusChange($event)">
|
|
2463
|
+
* </lib-dropdown>
|
|
2464
|
+
* ```
|
|
2465
|
+
*/
|
|
2466
|
+
class DropdownComponent {
|
|
2517
2467
|
constructor() {
|
|
2518
|
-
this.
|
|
2519
|
-
this.
|
|
2520
|
-
this.
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
this.
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
this.
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2468
|
+
this.labelType = 'none';
|
|
2469
|
+
this.showHelpIcon = false;
|
|
2470
|
+
this.placeholder = 'Select an option';
|
|
2471
|
+
this.options = [];
|
|
2472
|
+
this.state = 'default';
|
|
2473
|
+
this.disabled = false;
|
|
2474
|
+
this.searchable = true;
|
|
2475
|
+
this.multiple = false;
|
|
2476
|
+
this.selectedValues = [];
|
|
2477
|
+
this.valueChange = new EventEmitter();
|
|
2478
|
+
this.selectedValuesChange = new EventEmitter();
|
|
2479
|
+
this.helpIconClick = new EventEmitter();
|
|
2480
|
+
this.value = '';
|
|
2481
|
+
this.searchText = '';
|
|
2482
|
+
this.isOpen = false;
|
|
2483
|
+
this.selectedIndex = -1;
|
|
2484
|
+
this.filteredOptions = [];
|
|
2485
|
+
this.elementRef = inject(ElementRef);
|
|
2486
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
2487
|
+
this.onChange = () => { };
|
|
2488
|
+
this.onTouched = () => { };
|
|
2489
|
+
}
|
|
2490
|
+
ngOnInit() {
|
|
2491
|
+
this.updateFilteredOptions();
|
|
2492
|
+
}
|
|
2493
|
+
ngOnChanges(changes) {
|
|
2494
|
+
if (changes['options'] || changes['selectedValues'] || changes['multiple']) {
|
|
2495
|
+
this.updateFilteredOptions();
|
|
2496
|
+
}
|
|
2497
|
+
}
|
|
2498
|
+
/**
|
|
2499
|
+
* Gets the display text for the selected value
|
|
2500
|
+
*/
|
|
2501
|
+
get displayText() {
|
|
2502
|
+
if (this.multiple) {
|
|
2503
|
+
return this.searchText;
|
|
2504
|
+
}
|
|
2505
|
+
if (!this.value && !this.searchText) {
|
|
2506
|
+
return '';
|
|
2507
|
+
}
|
|
2508
|
+
if (this.searchText) {
|
|
2509
|
+
return this.searchText;
|
|
2510
|
+
}
|
|
2511
|
+
const selectedOption = this.options.find((opt) => opt.value === this.value);
|
|
2512
|
+
return selectedOption ? selectedOption.label : '';
|
|
2513
|
+
}
|
|
2514
|
+
/**
|
|
2515
|
+
* Gets options currently selected in multiple mode, preserving selectedValues order.
|
|
2516
|
+
*/
|
|
2517
|
+
get selectedOptions() {
|
|
2518
|
+
return (this.selectedValues ?? [])
|
|
2519
|
+
.map((selectedValue) => this.options.find((option) => option.value === selectedValue))
|
|
2520
|
+
.filter((option) => !!option);
|
|
2521
|
+
}
|
|
2522
|
+
/**
|
|
2523
|
+
* Checks whether an option is currently selected.
|
|
2524
|
+
* @param {DropdownOption} option option to check
|
|
2525
|
+
* @returns {boolean} whether the option is selected
|
|
2526
|
+
*/
|
|
2527
|
+
isOptionSelected(option) {
|
|
2528
|
+
return this.multiple
|
|
2529
|
+
? (this.selectedValues ?? []).includes(option.value)
|
|
2530
|
+
: option.value === this.value;
|
|
2531
|
+
}
|
|
2532
|
+
/**
|
|
2533
|
+
* Toggles dropdown open/closed state
|
|
2534
|
+
*/
|
|
2535
|
+
toggleDropdown() {
|
|
2536
|
+
if (this.disabled)
|
|
2537
|
+
return;
|
|
2538
|
+
this.isOpen = !this.isOpen;
|
|
2539
|
+
if (this.isOpen) {
|
|
2540
|
+
this.updateFilteredOptions();
|
|
2541
|
+
this.selectedIndex = this.multiple
|
|
2542
|
+
? this.selectedIndex
|
|
2543
|
+
: this.filteredOptions.findIndex((opt) => opt.value === this.value);
|
|
2544
|
+
// Scroll to the currently selected item
|
|
2545
|
+
this.scrollHighlightedIntoView();
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
/**
|
|
2549
|
+
* Focuses the inner input before toggling so keyboard navigation works after mouse opens.
|
|
2550
|
+
*/
|
|
2551
|
+
onFieldClick() {
|
|
2552
|
+
if (this.disabled)
|
|
2553
|
+
return;
|
|
2554
|
+
const input = this.elementRef.nativeElement.querySelector('.field-input');
|
|
2555
|
+
input?.focus();
|
|
2556
|
+
this.toggleDropdown();
|
|
2557
|
+
}
|
|
2558
|
+
/**
|
|
2559
|
+
* Handles input changes for search functionality
|
|
2560
|
+
*/
|
|
2561
|
+
onSearchInput(event) {
|
|
2562
|
+
const input = event.target;
|
|
2563
|
+
this.searchText = input.value;
|
|
2564
|
+
this.filterOptions();
|
|
2565
|
+
if (!this.isOpen) {
|
|
2566
|
+
this.isOpen = true;
|
|
2567
|
+
}
|
|
2568
|
+
}
|
|
2569
|
+
/**
|
|
2570
|
+
* Filters options based on search text
|
|
2571
|
+
*/
|
|
2572
|
+
filterOptions() {
|
|
2573
|
+
this.updateFilteredOptions();
|
|
2574
|
+
this.scrollHighlightedIntoView();
|
|
2575
|
+
}
|
|
2576
|
+
/**
|
|
2577
|
+
* Updates filtered options based on search text and current multiple selection.
|
|
2578
|
+
*/
|
|
2579
|
+
updateFilteredOptions() {
|
|
2580
|
+
const searchText = this.searchText.toLowerCase();
|
|
2581
|
+
const selectedValues = new Set(this.selectedValues ?? []);
|
|
2582
|
+
this.filteredOptions = this.options.filter((option) => {
|
|
2583
|
+
const matchesSearch = !searchText || option.label.toLowerCase().includes(searchText);
|
|
2584
|
+
const isAvailable = !this.multiple || !selectedValues.has(option.value);
|
|
2585
|
+
return matchesSearch && isAvailable;
|
|
2546
2586
|
});
|
|
2547
|
-
this.
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
this.
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
};
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
this.
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2587
|
+
this.selectedIndex = this.filteredOptions.length ? 0 : -1;
|
|
2588
|
+
}
|
|
2589
|
+
/**
|
|
2590
|
+
* Clears search text and resets the filtered options.
|
|
2591
|
+
*/
|
|
2592
|
+
resetSearch() {
|
|
2593
|
+
this.searchText = '';
|
|
2594
|
+
this.updateFilteredOptions();
|
|
2595
|
+
}
|
|
2596
|
+
/**
|
|
2597
|
+
* Scrolls the highlighted item into view
|
|
2598
|
+
*/
|
|
2599
|
+
scrollHighlightedIntoView() {
|
|
2600
|
+
this.cdr.detectChanges();
|
|
2601
|
+
setTimeout(() => {
|
|
2602
|
+
if (!this.dropdownMenuItems)
|
|
2603
|
+
return;
|
|
2604
|
+
const menuContainer = this.dropdownMenuItems.nativeElement;
|
|
2605
|
+
const highlightedItem = menuContainer.querySelector('.dropdown-menu-item.highlighted');
|
|
2606
|
+
if (highlightedItem) {
|
|
2607
|
+
highlightedItem.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
2608
|
+
}
|
|
2609
|
+
}, 0);
|
|
2610
|
+
}
|
|
2611
|
+
/**
|
|
2612
|
+
* Selects an option from the dropdown
|
|
2613
|
+
*/
|
|
2614
|
+
selectOption(option) {
|
|
2615
|
+
if (option.disabled)
|
|
2616
|
+
return;
|
|
2617
|
+
if (this.multiple) {
|
|
2618
|
+
if (!(this.selectedValues ?? []).includes(option.value)) {
|
|
2619
|
+
this.selectedValues = [...(this.selectedValues ?? []), option.value];
|
|
2620
|
+
this.emitSelectedValues();
|
|
2621
|
+
}
|
|
2622
|
+
this.resetSearch();
|
|
2623
|
+
this.isOpen = true;
|
|
2624
|
+
this.scrollHighlightedIntoView();
|
|
2625
|
+
return;
|
|
2626
|
+
}
|
|
2627
|
+
this.value = option.value;
|
|
2628
|
+
this.resetSearch();
|
|
2629
|
+
this.isOpen = false;
|
|
2630
|
+
this.onChange(this.value);
|
|
2631
|
+
this.valueChange.emit(this.value);
|
|
2632
|
+
}
|
|
2633
|
+
/**
|
|
2634
|
+
* Removes a selected value in multiple mode.
|
|
2635
|
+
*/
|
|
2636
|
+
removeSelectedOption(value, event) {
|
|
2637
|
+
event?.stopPropagation();
|
|
2638
|
+
if (this.disabled || !this.multiple)
|
|
2639
|
+
return;
|
|
2640
|
+
this.selectedValues = (this.selectedValues ?? []).filter((selectedValue) => selectedValue !== value);
|
|
2641
|
+
this.emitSelectedValues();
|
|
2642
|
+
this.updateFilteredOptions();
|
|
2643
|
+
}
|
|
2644
|
+
/**
|
|
2645
|
+
* Emits the current multiple selection through Angular forms and component output.
|
|
2646
|
+
*/
|
|
2647
|
+
emitSelectedValues() {
|
|
2648
|
+
const selectedValues = [...(this.selectedValues ?? [])];
|
|
2649
|
+
this.onChange(selectedValues);
|
|
2650
|
+
this.selectedValuesChange.emit(selectedValues);
|
|
2651
|
+
}
|
|
2652
|
+
/**
|
|
2653
|
+
* Handles keyboard navigation
|
|
2654
|
+
*/
|
|
2655
|
+
onKeyDown(event) {
|
|
2656
|
+
if (this.disabled)
|
|
2657
|
+
return;
|
|
2658
|
+
switch (event.key) {
|
|
2659
|
+
case 'ArrowDown':
|
|
2660
|
+
event.preventDefault();
|
|
2661
|
+
if (!this.isOpen) {
|
|
2662
|
+
this.isOpen = true;
|
|
2663
|
+
}
|
|
2664
|
+
else {
|
|
2665
|
+
this.selectedIndex = Math.min(this.selectedIndex + 1, this.filteredOptions.length - 1);
|
|
2666
|
+
this.scrollHighlightedIntoView();
|
|
2667
|
+
}
|
|
2668
|
+
break;
|
|
2669
|
+
case 'ArrowUp':
|
|
2670
|
+
event.preventDefault();
|
|
2671
|
+
if (this.isOpen) {
|
|
2672
|
+
this.selectedIndex = Math.max(this.selectedIndex - 1, 0);
|
|
2673
|
+
this.scrollHighlightedIntoView();
|
|
2674
|
+
}
|
|
2675
|
+
break;
|
|
2676
|
+
case 'Enter':
|
|
2677
|
+
event.preventDefault();
|
|
2678
|
+
if (this.isOpen &&
|
|
2679
|
+
this.selectedIndex >= 0 &&
|
|
2680
|
+
this.selectedIndex < this.filteredOptions.length) {
|
|
2681
|
+
this.selectOption(this.filteredOptions[this.selectedIndex]);
|
|
2682
|
+
}
|
|
2683
|
+
else {
|
|
2684
|
+
this.toggleDropdown();
|
|
2685
|
+
}
|
|
2686
|
+
break;
|
|
2687
|
+
case 'Escape':
|
|
2688
|
+
event.preventDefault();
|
|
2689
|
+
this.isOpen = false;
|
|
2690
|
+
this.resetSearch();
|
|
2691
|
+
break;
|
|
2692
|
+
case 'Tab':
|
|
2693
|
+
if (this.isOpen) {
|
|
2694
|
+
this.isOpen = false;
|
|
2695
|
+
this.resetSearch();
|
|
2696
|
+
}
|
|
2697
|
+
break;
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
/**
|
|
2701
|
+
* Handles blur event
|
|
2702
|
+
*/
|
|
2703
|
+
onBlur() {
|
|
2704
|
+
setTimeout(() => {
|
|
2705
|
+
if (!this.elementRef.nativeElement.contains(document.activeElement)) {
|
|
2706
|
+
this.isOpen = false;
|
|
2707
|
+
this.resetSearch();
|
|
2708
|
+
}
|
|
2709
|
+
}, 200);
|
|
2710
|
+
}
|
|
2711
|
+
/**
|
|
2712
|
+
* Handles help icon click event
|
|
2713
|
+
*/
|
|
2714
|
+
onHelpIconClick() {
|
|
2715
|
+
this.helpIconClick.emit();
|
|
2716
|
+
}
|
|
2717
|
+
/**
|
|
2718
|
+
* Closes dropdown when clicking outside
|
|
2719
|
+
*/
|
|
2720
|
+
onDocumentClick(event) {
|
|
2721
|
+
if (!this.elementRef.nativeElement.contains(event.target)) {
|
|
2722
|
+
this.isOpen = false;
|
|
2723
|
+
this.resetSearch();
|
|
2724
|
+
}
|
|
2725
|
+
}
|
|
2726
|
+
// ControlValueAccessor implementation
|
|
2727
|
+
writeValue(value) {
|
|
2728
|
+
if (Array.isArray(value)) {
|
|
2729
|
+
this.selectedValues = [...value];
|
|
2730
|
+
this.value = '';
|
|
2731
|
+
}
|
|
2732
|
+
else {
|
|
2733
|
+
this.value = value || '';
|
|
2734
|
+
this.selectedValues = [];
|
|
2735
|
+
}
|
|
2736
|
+
this.updateFilteredOptions();
|
|
2737
|
+
}
|
|
2738
|
+
registerOnChange(fn) {
|
|
2739
|
+
this.onChange = fn;
|
|
2740
|
+
}
|
|
2741
|
+
registerOnTouched(fn) {
|
|
2742
|
+
this.onTouched = fn;
|
|
2743
|
+
}
|
|
2744
|
+
setDisabledState(isDisabled) {
|
|
2745
|
+
this.disabled = isDisabled;
|
|
2746
|
+
}
|
|
2747
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2748
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: DropdownComponent, isStandalone: true, selector: "lib-dropdown", inputs: { label: "label", inputId: "inputId", labelType: "labelType", showHelpIcon: "showHelpIcon", subtext: "subtext", placeholder: "placeholder", options: "options", state: "state", disabled: "disabled", ariaLabel: "ariaLabel", searchable: "searchable", multiple: "multiple", selectedValues: "selectedValues" }, outputs: { valueChange: "valueChange", selectedValuesChange: "selectedValuesChange", helpIconClick: "helpIconClick" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
2749
|
+
{
|
|
2750
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2751
|
+
useExisting: forwardRef(() => DropdownComponent),
|
|
2752
|
+
multi: true,
|
|
2753
|
+
},
|
|
2754
|
+
], viewQueries: [{ propertyName: "dropdownInput", first: true, predicate: ["dropdownInput"], descendants: true }, { propertyName: "dropdownMenuItems", first: true, predicate: ["dropdownMenuItems"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-wrapper\">\n @if (label) {\n <lib-label\n [for]=\"inputId\"\n [text]=\"label\"\n [type]=\"labelType\"\n [showHelpIcon]=\"showHelpIcon\"\n [subtext]=\"subtext\"\n (helpIconClick)=\"onHelpIconClick()\"\n ></lib-label>\n }\n\n <div\n class=\"dropdown-field-container\"\n [ngClass]=\"'dropdown-' + state\"\n >\n <div\n class=\"dropdown-field-wrapper\"\n [class.dropdown-field-wrapper-multiple]=\"multiple\"\n (click)=\"onFieldClick()\"\n >\n <lib-field\n #dropdownInput\n [class.dropdown-multi-field]=\"multiple\"\n [inputId]=\"inputId\"\n [placeholder]=\"multiple && selectedOptions.length ? '' : placeholder\"\n [value]=\"displayText\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [wrapContent]=\"multiple\"\n [ariaLabel]=\"ariaLabel ? ariaLabel : label\"\n [iconAfter]=\"isOpen ? 'expand_less' : 'expand_more'\"\n [attr.readonly]=\"!searchable\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (multiple && selectedOptions.length) {\n <div fieldPrefix class=\"dropdown-selected-chips\">\n @for (option of selectedOptions; track option.value) {\n <span class=\"dropdown-selected-chip\" data-testid=\"dropdownChip\">\n <span class=\"dropdown-selected-chip-label\">{{ option.label }}</span>\n <button\n type=\"button\"\n class=\"dropdown-selected-chip-remove\"\n [attr.aria-label]=\"'remove ' + option.label\"\n (click)=\"removeSelectedOption(option.value, $event)\"\n data-testid=\"removeDropdownChip\"\n >\n <span class=\"material-symbols-outlined\">cancel</span>\n </button>\n </span>\n }\n </div>\n }\n </lib-field>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-menu\">\n <div class=\"dropdown-menu-items\" #dropdownMenuItems>\n @if (filteredOptions.length === 0) {\n <div class=\"dropdown-menu-item no-results\">No results found</div>\n }\n @for (option of filteredOptions; track option.value; let i = $index) {\n <div\n class=\"dropdown-menu-item\"\n [ngClass]=\"{\n selected: isOptionSelected(option),\n highlighted: i === selectedIndex,\n disabled: option.disabled\n }\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.dropdown-wrapper{display:flex;flex-direction:column;align-items:flex-start;padding:0;gap:.5rem;min-width:0;width:100%}.dropdown-field-container{min-width:0;position:relative;width:100%}.dropdown-field-container .dropdown-field-wrapper{cursor:pointer;min-width:0;width:100%}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper{min-height:2.5rem}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper.is-focused,.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper:focus-within{outline:none}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper.is-focused .field-input{border-radius:.125rem;outline:.125rem solid #b967c7;outline-offset:.125rem}.dropdown-field-container .dropdown-field-wrapper lib-field{cursor:pointer;display:block;min-width:0;pointer-events:none;width:100%}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input{cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input:not([readonly]){cursor:text}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .icon-after{pointer-events:none}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chips{display:flex;flex:0 0 100%;flex-wrap:wrap;gap:.25rem;min-width:0;max-width:100%;pointer-events:auto;width:100%}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip{display:inline-flex;align-items:center;flex:0 1 auto;min-width:0;max-width:100%;padding:.125rem .25rem .125rem .5rem;border-radius:1rem;background:#e5edf8;color:#141414;font-size:.875rem;line-height:1.25rem}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-label{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:.25rem;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-remove .material-symbols-outlined{font-size:1.5rem}.dropdown-field-container .dropdown-menu{position:absolute;top:100%;left:0;width:100%;max-height:15rem;background:#fff;border:1px solid #d0d0d0;border-radius:0 0 .25rem .25rem;z-index:1000;overflow:hidden;box-shadow:0 2px 8px #0000001a}.dropdown-field-container .dropdown-menu .dropdown-menu-items{max-height:15rem;overflow-y:auto;overflow-x:hidden}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar{width:.5625rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-track{background:#fff}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb{background:#8f8f8f;border-radius:16rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb:hover{background:#676767}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item{display:flex;flex-direction:row;align-items:flex-end;padding:.5rem 1rem;gap:.5rem;color:#141414;cursor:pointer;transition:background-color .2s ease}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item:hover:not(.disabled):not(.no-results){background:#f9f9f9}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.selected{background:#ccdaf1;font-weight:600}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted.selected:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.disabled{color:#676767;cursor:not-allowed;opacity:.6}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.no-results{color:#676767;cursor:default;font-style:italic}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LabelComponent, selector: "lib-label", inputs: ["text", "type", "showHelpIcon", "ariaLabel", "position", "isRequired", "for", "subtext"], outputs: ["helpIconClick"] }, { kind: "component", type: FieldComponent, selector: "lib-field", inputs: ["inputType", "inputId", "placeholder", "state", "status", "iconBefore", "iconAfter", "iconBeforeClickable", "iconAfterClickable", "iconBeforeAction", "iconAfterAction", "disabled", "ariaLabel", "value", "isFullText", "rows", "minWidth", "maxWidth", "minHeight", "maxHeight", "wrapContent"], outputs: ["valueChange", "iconBeforeClick", "iconAfterClick", "fieldFocus", "fieldBlur"] }] }); }
|
|
2755
|
+
}
|
|
2756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
2757
|
+
type: Component,
|
|
2758
|
+
args: [{ selector: 'lib-dropdown', standalone: true, imports: [CommonModule, LabelComponent, FieldComponent], providers: [
|
|
2759
|
+
{
|
|
2760
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2761
|
+
useExisting: forwardRef(() => DropdownComponent),
|
|
2762
|
+
multi: true,
|
|
2763
|
+
},
|
|
2764
|
+
], template: "<div class=\"dropdown-wrapper\">\n @if (label) {\n <lib-label\n [for]=\"inputId\"\n [text]=\"label\"\n [type]=\"labelType\"\n [showHelpIcon]=\"showHelpIcon\"\n [subtext]=\"subtext\"\n (helpIconClick)=\"onHelpIconClick()\"\n ></lib-label>\n }\n\n <div\n class=\"dropdown-field-container\"\n [ngClass]=\"'dropdown-' + state\"\n >\n <div\n class=\"dropdown-field-wrapper\"\n [class.dropdown-field-wrapper-multiple]=\"multiple\"\n (click)=\"onFieldClick()\"\n >\n <lib-field\n #dropdownInput\n [class.dropdown-multi-field]=\"multiple\"\n [inputId]=\"inputId\"\n [placeholder]=\"multiple && selectedOptions.length ? '' : placeholder\"\n [value]=\"displayText\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [wrapContent]=\"multiple\"\n [ariaLabel]=\"ariaLabel ? ariaLabel : label\"\n [iconAfter]=\"isOpen ? 'expand_less' : 'expand_more'\"\n [attr.readonly]=\"!searchable\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n @if (multiple && selectedOptions.length) {\n <div fieldPrefix class=\"dropdown-selected-chips\">\n @for (option of selectedOptions; track option.value) {\n <span class=\"dropdown-selected-chip\" data-testid=\"dropdownChip\">\n <span class=\"dropdown-selected-chip-label\">{{ option.label }}</span>\n <button\n type=\"button\"\n class=\"dropdown-selected-chip-remove\"\n [attr.aria-label]=\"'remove ' + option.label\"\n (click)=\"removeSelectedOption(option.value, $event)\"\n data-testid=\"removeDropdownChip\"\n >\n <span class=\"material-symbols-outlined\">cancel</span>\n </button>\n </span>\n }\n </div>\n }\n </lib-field>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-menu\">\n <div class=\"dropdown-menu-items\" #dropdownMenuItems>\n @if (filteredOptions.length === 0) {\n <div class=\"dropdown-menu-item no-results\">No results found</div>\n }\n @for (option of filteredOptions; track option.value; let i = $index) {\n <div\n class=\"dropdown-menu-item\"\n [ngClass]=\"{\n selected: isOptionSelected(option),\n highlighted: i === selectedIndex,\n disabled: option.disabled\n }\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.dropdown-wrapper{display:flex;flex-direction:column;align-items:flex-start;padding:0;gap:.5rem;min-width:0;width:100%}.dropdown-field-container{min-width:0;position:relative;width:100%}.dropdown-field-container .dropdown-field-wrapper{cursor:pointer;min-width:0;width:100%}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper{min-height:2.5rem}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper.is-focused,.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper:focus-within{outline:none}.dropdown-field-container .dropdown-field-wrapper.dropdown-field-wrapper-multiple lib-field.dropdown-multi-field ::ng-deep .field-wrapper.is-focused .field-input{border-radius:.125rem;outline:.125rem solid #b967c7;outline-offset:.125rem}.dropdown-field-container .dropdown-field-wrapper lib-field{cursor:pointer;display:block;min-width:0;pointer-events:none;width:100%}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input{cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input:not([readonly]){cursor:text}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .icon-after{pointer-events:none}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chips{display:flex;flex:0 0 100%;flex-wrap:wrap;gap:.25rem;min-width:0;max-width:100%;pointer-events:auto;width:100%}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip{display:inline-flex;align-items:center;flex:0 1 auto;min-width:0;max-width:100%;padding:.125rem .25rem .125rem .5rem;border-radius:1rem;background:#e5edf8;color:#141414;font-size:.875rem;line-height:1.25rem}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-label{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:.25rem;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper .dropdown-selected-chip-remove .material-symbols-outlined{font-size:1.5rem}.dropdown-field-container .dropdown-menu{position:absolute;top:100%;left:0;width:100%;max-height:15rem;background:#fff;border:1px solid #d0d0d0;border-radius:0 0 .25rem .25rem;z-index:1000;overflow:hidden;box-shadow:0 2px 8px #0000001a}.dropdown-field-container .dropdown-menu .dropdown-menu-items{max-height:15rem;overflow-y:auto;overflow-x:hidden}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar{width:.5625rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-track{background:#fff}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb{background:#8f8f8f;border-radius:16rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb:hover{background:#676767}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item{display:flex;flex-direction:row;align-items:flex-end;padding:.5rem 1rem;gap:.5rem;color:#141414;cursor:pointer;transition:background-color .2s ease}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item:hover:not(.disabled):not(.no-results){background:#f9f9f9}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.selected{background:#ccdaf1;font-weight:600}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted.selected:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.disabled{color:#676767;cursor:not-allowed;opacity:.6}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.no-results{color:#676767;cursor:default;font-style:italic}\n"] }]
|
|
2765
|
+
}], propDecorators: { label: [{
|
|
2766
|
+
type: Input
|
|
2767
|
+
}], inputId: [{
|
|
2768
|
+
type: Input
|
|
2769
|
+
}], labelType: [{
|
|
2770
|
+
type: Input
|
|
2771
|
+
}], showHelpIcon: [{
|
|
2772
|
+
type: Input
|
|
2773
|
+
}], subtext: [{
|
|
2774
|
+
type: Input
|
|
2775
|
+
}], placeholder: [{
|
|
2776
|
+
type: Input
|
|
2777
|
+
}], options: [{
|
|
2778
|
+
type: Input
|
|
2779
|
+
}], state: [{
|
|
2780
|
+
type: Input
|
|
2781
|
+
}], disabled: [{
|
|
2782
|
+
type: Input
|
|
2783
|
+
}], ariaLabel: [{
|
|
2784
|
+
type: Input
|
|
2785
|
+
}], searchable: [{
|
|
2786
|
+
type: Input
|
|
2787
|
+
}], multiple: [{
|
|
2788
|
+
type: Input
|
|
2789
|
+
}], selectedValues: [{
|
|
2790
|
+
type: Input
|
|
2791
|
+
}], valueChange: [{
|
|
2792
|
+
type: Output
|
|
2793
|
+
}], selectedValuesChange: [{
|
|
2794
|
+
type: Output
|
|
2795
|
+
}], helpIconClick: [{
|
|
2796
|
+
type: Output
|
|
2797
|
+
}], dropdownInput: [{
|
|
2798
|
+
type: ViewChild,
|
|
2799
|
+
args: ['dropdownInput']
|
|
2800
|
+
}], dropdownMenuItems: [{
|
|
2801
|
+
type: ViewChild,
|
|
2802
|
+
args: ['dropdownMenuItems']
|
|
2803
|
+
}], onDocumentClick: [{
|
|
2804
|
+
type: HostListener,
|
|
2805
|
+
args: ['document:click', ['$event']]
|
|
2806
|
+
}] } });
|
|
2807
|
+
|
|
2808
|
+
const DATE_VALIDATOR_REGEX = '^[0-9]{4}$';
|
|
2809
|
+
const toDropdownOptions = (options) => {
|
|
2810
|
+
return Object.entries(options).map(([value, label]) => ({ value, label }));
|
|
2811
|
+
};
|
|
2812
|
+
const toInstitutionDropdownOptions = (options) => {
|
|
2813
|
+
return {
|
|
2814
|
+
byu: toDropdownOptions(options.byu),
|
|
2815
|
+
law: toDropdownOptions(options.law),
|
|
2816
|
+
ensign: toDropdownOptions(options.ensign),
|
|
2817
|
+
};
|
|
2818
|
+
};
|
|
2819
|
+
class AdvancedSearchComponent {
|
|
2820
|
+
constructor() {
|
|
2821
|
+
this.fb = inject(NonNullableFormBuilder);
|
|
2822
|
+
this.advancedSearch = new EventEmitter();
|
|
2823
|
+
this.subscription = new Subscription();
|
|
2824
|
+
/**
|
|
2825
|
+
* Takes a `FormGroup` and syncs up the `field` and `qualifier` values.
|
|
2826
|
+
* After syncing, when the `field` value changes, the `qualifier` value will update appropriately.
|
|
2827
|
+
*/
|
|
2828
|
+
this.syncUpFieldAndQualifier = (fg, scope) => {
|
|
2829
|
+
this.subscription.add(fg.controls.field.valueChanges
|
|
2830
|
+
.pipe(filter(() => scope === 'local'), tap((val) => fg.controls.qualifier.setValue(ADVANCED_SEARCH_OPTIONS.qualifiers[val][0])))
|
|
2831
|
+
.subscribe());
|
|
2832
|
+
};
|
|
2833
|
+
this.advancedSearchForm = this.fb.group({
|
|
2834
|
+
queries: this.fb.array([], [Validators.maxLength(ADVANCED_SEARCH_QUERIES_LIMIT)]),
|
|
2835
|
+
types: [[]],
|
|
2836
|
+
collections: [[]],
|
|
2837
|
+
languages: [[]],
|
|
2838
|
+
date: this.fb.group({
|
|
2839
|
+
from: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],
|
|
2840
|
+
to: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],
|
|
2841
|
+
}, { validators: validateDateRangeFields() }),
|
|
2842
|
+
limitResults: this.fb.group({
|
|
2843
|
+
peerReviewed: [false],
|
|
2844
|
+
}),
|
|
2845
|
+
expandResults: this.fb.group({
|
|
2846
|
+
applyEquivalentSubjects: [false],
|
|
2847
|
+
fullText: [false],
|
|
2848
|
+
}),
|
|
2849
|
+
});
|
|
2850
|
+
this.isSubmitted = false;
|
|
2851
|
+
this.advancedSearchOptions = ADVANCED_SEARCH_OPTIONS;
|
|
2852
|
+
this.advancedSearchFieldMap = ADVANCED_SEARCH_FIELD_MAP;
|
|
2853
|
+
this.advancedSearchQualifierMap = ADVANCED_SEARCH_QUALIFIER_MAP;
|
|
2854
|
+
this.typeDropdownOptions = toInstitutionDropdownOptions(ADVANCED_SEARCH_OPTIONS.types);
|
|
2855
|
+
this.collectionDropdownOptions = toInstitutionDropdownOptions(ADVANCED_SEARCH_OPTIONS.collections);
|
|
2856
|
+
this.languageDropdownOptions = toDropdownOptions(ADVANCED_SEARCH_OPTIONS.languages);
|
|
2857
|
+
this.isKeyboardFocus = false;
|
|
2858
|
+
/**
|
|
2859
|
+
* Add a query to `queries` `FormArray`. This FormGroup has an additional `boolean` control.
|
|
2860
|
+
*/
|
|
2861
|
+
this.addQuery = () => {
|
|
2862
|
+
this.queries.push(this.fb.group({
|
|
2863
|
+
boolean: [ADVANCED_SEARCH_OPTIONS.boolean[0]],
|
|
2864
|
+
field: [
|
|
2865
|
+
ADVANCED_SEARCH_OPTIONS.fields[0],
|
|
2866
|
+
],
|
|
2867
|
+
qualifier: [
|
|
2868
|
+
ADVANCED_SEARCH_OPTIONS.qualifiers[ADVANCED_SEARCH_OPTIONS.localFields[0]][0],
|
|
2869
|
+
],
|
|
2870
|
+
query: ['', Validators.required],
|
|
2871
|
+
}));
|
|
2872
|
+
this.syncUpFieldAndQualifier(this.queries.at(-1), this.config.scope);
|
|
2873
|
+
};
|
|
2874
|
+
this.removeQuery = (i) => {
|
|
2875
|
+
this.queries.removeAt(i);
|
|
2876
|
+
};
|
|
2877
|
+
/**
|
|
2878
|
+
* Prepares appropriate query params before performing a local advanced search.
|
|
2879
|
+
*/
|
|
2880
|
+
this.doLocalAdvancedSearch = () => {
|
|
2881
|
+
this.doAdvancedSearch({
|
|
2882
|
+
localAdvancedSearch: {
|
|
2883
|
+
...this.config.localAdvancedSearch,
|
|
2884
|
+
creationDate: this.gatherToAndFromValues(),
|
|
2885
|
+
selectedLanguages: this.languages.value,
|
|
2886
|
+
selectedResourceTypes: this.types.value,
|
|
2887
|
+
selectedCollections: this.collections.value,
|
|
2888
|
+
},
|
|
2889
|
+
});
|
|
2890
|
+
};
|
|
2891
|
+
/**
|
|
2892
|
+
* Prepares appropriate query params before performing an external advanced search.
|
|
2893
|
+
*/
|
|
2894
|
+
this.doExternalAdvancedSearch = () => {
|
|
2895
|
+
this.doAdvancedSearch({
|
|
2896
|
+
externalAdvancedSearch: {
|
|
2897
|
+
...this.config.externalAdvancedSearch,
|
|
2898
|
+
datePublished: this.gatherToAndFromValues(),
|
|
2899
|
+
selectedLanguages: this.languages.value,
|
|
2900
|
+
limitResults: {
|
|
2901
|
+
peerReviewed: this.peerReviewed.value,
|
|
2902
|
+
},
|
|
2903
|
+
expandResults: {
|
|
2904
|
+
applyEquivalentSubjects: this.applyEquivalentSubjects.value,
|
|
2905
|
+
fullText: this.fullText.value,
|
|
2599
2906
|
},
|
|
2600
2907
|
},
|
|
2601
2908
|
});
|
|
@@ -2714,6 +3021,14 @@ class AdvancedSearchComponent {
|
|
|
2714
3021
|
ngOnDestroy() {
|
|
2715
3022
|
this.subscription.unsubscribe();
|
|
2716
3023
|
}
|
|
3024
|
+
onDocumentKeydown(event) {
|
|
3025
|
+
if (event.key === 'Tab') {
|
|
3026
|
+
this.isKeyboardFocus = true;
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
onDocumentPointerdown() {
|
|
3030
|
+
this.isKeyboardFocus = false;
|
|
3031
|
+
}
|
|
2717
3032
|
get queries() {
|
|
2718
3033
|
return this.advancedSearchForm.controls.queries;
|
|
2719
3034
|
}
|
|
@@ -2758,7 +3073,7 @@ class AdvancedSearchComponent {
|
|
|
2758
3073
|
return `Search terms for ${fieldLabel}`;
|
|
2759
3074
|
}
|
|
2760
3075
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2761
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AdvancedSearchComponent, isStandalone: true, selector: "lib-ss-advanced-search", inputs: { config: "config" }, outputs: { advancedSearch: "advancedSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inputTooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"ss-adv-search-wrapper\"\n>\n <h3>Advanced Search</h3>\n <!-- Queries -->\n @for (query of queries.controls; track $index; let queryIndex = $index) {\n <div class=\"ss-adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'boolean' + queryIndex\"\n [formControlName]=\"'boolean'\"\n [attr.data-testid]=\"'boolean' + queryIndex\"\n >\n @for (boolean of advancedSearchOptions.boolean; track boolean) {\n <option [ngValue]=\"boolean\">\n {{ boolean }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Field -->\n <label [for]=\"'field' + queryIndex\" class=\"sr-only\">Field {{ queryIndex }}</label>\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'field' + queryIndex\"\n [formControlName]=\"'field'\"\n [attr.data-testid]=\"'field' + queryIndex\"\n >\n @for (field of advancedSearchOptions.fields; track field) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n <optgroup\n [label]=\"(config.scope === 'external' ? 'Online' : 'Library') + ' Specific'\"\n >\n @for (\n field of config.scope === 'external'\n ? advancedSearchOptions.externalFields\n : advancedSearchOptions.localFields;\n track field\n ) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n </optgroup>\n </select>\n </div>\n <!-- Qualifiers are only available for local searches -->\n @if (config.scope === 'local') {\n <label [for]=\"'qualifier' + queryIndex\" class=\"sr-only\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'qualifier' + queryIndex\"\n [formControlName]=\"'qualifier'\"\n [attr.data-testid]=\"'qualifier' + queryIndex\"\n >\n <!-- $any because a field can technically be local or external, though this block is scoped strictly to local fields -->\n @for (\n qualifier of $any(advancedSearchOptions.qualifiers)[\n query.controls.field.value\n ];\n track qualifier;\n let optionIndex = $index\n ) {\n <option\n [ngValue]=\"qualifier\"\n [attr.data-testid]=\"\n 'qualifier' + queryIndex + '-option' + optionIndex\n \"\n >\n {{ $any(advancedSearchQualifierMap)[qualifier] }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Query -->\n <label [for]=\"'query' + queryIndex\" class=\"sr-only\">\n {{ getQueryLabel(queryIndex) }}\n </label>\n <div class=\"ss-query-input\">\n <input\n #searchInput\n [id]=\"'query' + queryIndex\"\n [formControlName]=\"'query'\"\n [attr.data-testid]=\"'query' + queryIndex\"\n required\n aria-required=\"true\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && query.controls.query.invalid\"\n [attr.aria-describedby]=\"isSubmitted && query.controls.query.invalid ? ('invalidInputDesc' + queryIndex) : null\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"ss-row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n </div>\n }\n <button\n type=\"button\"\n (click)=\"addQuery()\"\n id=\"addQueryBtn\"\n data-testid=\"addQuery\"\n [disabled]=\"queries.length > 11\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"ss-other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"ss-multi-select-wrapper\">\n <lib-multi-select\n elementId=\"resourceType\"\n [label]=\"'Resource Type'\"\n [allOptions]=\"advancedSearchOptions.types[config.institution]\"\n [selectedKeys]=\"types.value\"\n (selectedKeysChange)=\"types.setValue($event)\"\n ></lib-multi-select>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"ss-multi-select-wrapper\">\n <lib-multi-select\n elementId=\"collection\"\n [label]=\"'Collection'\"\n [allOptions]=\"advancedSearchOptions.collections[config.institution]\"\n [selectedKeys]=\"collections.value\"\n (selectedKeysChange)=\"collections.setValue($event)\"\n ></lib-multi-select>\n </div>\n </div>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Creation Date' }\"\n ></ng-container>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"ss-checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"ss-checkbox-label\" for=\"peerReviewed\">\n <input\n class=\"ss-hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-checkbox inputId=\"peerReviewed\" [isChecked]=\"peerReviewed.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"ss-checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply equivalent subjects -->\n <label class=\"ss-checkbox-label\" for=\"applyEquivalentSubjects\">\n <input\n class=\"ss-hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-checkbox inputId=\"applyEquivalentSubjects\" [isChecked]=\"applyEquivalentSubjects.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"ss-checkbox-label\" for=\"fullText\">\n <input\n class=\"ss-hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-checkbox inputId=\"fullText\" [isChecked]=\"fullText.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Date Published' }\"\n ></ng-container>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n }\n </div>\n <div id=\"advSearchFooter\">\n <a [href]=\"'https://lib.byu.edu/browse/' + config.institution\">Alphabetic Browse</a>\n <button\n class=\"pill-btn--components\"\n [ngClass]=\"{\n ensign: config.institution === 'ensign',\n }\"\n type=\"submit\"\n data-testid=\"advSearchSubmitButton\"\n >\n Search\n </button>\n </div>\n</form>\n\n<ng-template #languageBlock>\n <div>\n <h4>Language</h4>\n <lib-multi-select\n elementId=\"language\"\n [label]=\"'language'\"\n [allOptions]=\"advancedSearchOptions.languages\"\n [selectedKeys]=\"languages.value\"\n (selectedKeysChange)=\"languages.setValue($any($event))\"\n ></lib-multi-select>\n </div>\n</ng-template>\n<ng-template #dateBlock let-header=\"header\">\n <div id=\"dateOptions\" class=\"external\">\n <h4>{{ header }}</h4>\n <lib-date-range\n [from]=\"from.value\"\n [to]=\"to.value\"\n (fromChange)=\"from.setValue($event)\"\n (toChange)=\"to.setValue($event)\"\n ></lib-date-range>\n </div>\n</ng-template>\n", styles: ["select,textarea,input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}.ss-select-wrapper{position:relative}.ss-select-wrapper select{cursor:pointer;padding-right:2em}.ss-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#457fa6;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#676767;background-color:#e7e7e7;pointer-events:none}.pill-btn--components:hover{background-color:#a2bfd3;color:#fff}.destructive.pill-btn--components{background-color:#b33837}.destructive.pill-btn--components:hover{background-color:#c73e3d}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}button.ensign{background-color:#2b6042!important;border-color:#2a6142}button.ensign:hover{background-color:#357551!important}a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#0047ba;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#003995}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}:host{box-sizing:border-box}:host *{box-sizing:inherit}.ss-select-wrapper{margin-right:.3em}.ss-row-cancel{color:#aaa;margin-left:.4em;margin-top:.4em}.ss-row-cancel:hover{color:#666}.ss-row-cancel .ss-icon{font-size:1em}.ss-hidden{display:none}#addQueryBtn{display:flex;align-items:center}#addQueryBtn:disabled{color:#999;pointer-events:none}#addQueryBtn .icon{font-size:1em}.ss-adv-search-wrapper{width:100%}h3{font-size:1.13em;font-weight:300;margin-bottom:.7em;margin-top:0}h4{font:inherit;margin-bottom:.75em;font-weight:600}#dateOptions h4{margin-bottom:.8em}.ss-adv-search-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.6em}.ss-query-input{display:inline-block;width:100%;margin-top:.25rem}.ss-query-input input{width:100%}.ss-other-options{display:grid;grid-template-columns:repeat(1,1fr);gap:.6em 1.6em;grid-auto-rows:minmax(1em,auto);margin-top:1.4em}.ss-other-options label{margin-right:.625rem}.ss-checkbox-label{display:inline-flex;align-items:flex-start;cursor:pointer}.ss-checkbox-label:not(:last-of-type){margin-bottom:.75em}.ss-checkbox-label .ss-label-text{margin-top:-.1em;margin-left:.45em}.ss-checkbox-section{margin-bottom:.8em}#advSearchFooter{margin-bottom:.5em;display:flex;justify-content:space-between;align-items:center;font-size:1.2em}#advSearchFooter a{font-size:.8em}#advSearchFooter .pill-btn--components{background-color:#003995;color:#fff}#advSearchFooter .pill-btn--components:hover{background-color:#0047ba}@media screen and (min-width: 615px){.ss-adv-search-row{flex-wrap:nowrap}.ss-other-options{grid-template-columns:repeat(2,1fr)}.ss-query-input{margin-top:0}#dateOptions .external{grid-column:span 2}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: HbllMultiSelectComponent, selector: "lib-multi-select", inputs: ["elementId", "allOptions", "label", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "component", type: CheckboxComponent, selector: "lib-checkbox", inputs: ["isChecked", "isIndeterminate", "isSmall", "disabled", "isError", "inputId"], outputs: ["checkedChange"] }, { kind: "component", type: DateRangeComponent, selector: "lib-date-range", inputs: ["from", "to"], outputs: ["validDateChange", "fromChange", "toChange"] }] }); }
|
|
3076
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AdvancedSearchComponent, isStandalone: true, selector: "lib-ss-advanced-search", inputs: { config: "config" }, outputs: { advancedSearch: "advancedSearch" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)", "document:mousedown": "onDocumentPointerdown()", "document:pointerdown": "onDocumentPointerdown()" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inputTooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"ss-adv-search-wrapper\"\n [class.ss-keyboard-focus]=\"isKeyboardFocus\"\n>\n <h3>Advanced Search</h3>\n <!-- Queries -->\n @for (query of queries.controls; track $index; let queryIndex = $index) {\n <div class=\"ss-adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'boolean' + queryIndex\"\n [formControlName]=\"'boolean'\"\n [attr.data-testid]=\"'boolean' + queryIndex\"\n >\n @for (boolean of advancedSearchOptions.boolean; track boolean) {\n <option [ngValue]=\"boolean\">\n {{ boolean }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Field -->\n <label [for]=\"'field' + queryIndex\" class=\"sr-only\">Field {{ queryIndex }}</label>\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'field' + queryIndex\"\n [formControlName]=\"'field'\"\n [attr.data-testid]=\"'field' + queryIndex\"\n >\n @for (field of advancedSearchOptions.fields; track field) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n <optgroup\n [label]=\"(config.scope === 'external' ? 'Online' : 'Library') + ' Specific'\"\n >\n @for (\n field of config.scope === 'external'\n ? advancedSearchOptions.externalFields\n : advancedSearchOptions.localFields;\n track field\n ) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n </optgroup>\n </select>\n </div>\n <!-- Qualifiers are only available for local searches -->\n @if (config.scope === 'local') {\n <label [for]=\"'qualifier' + queryIndex\" class=\"sr-only\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'qualifier' + queryIndex\"\n [formControlName]=\"'qualifier'\"\n [attr.data-testid]=\"'qualifier' + queryIndex\"\n >\n <!-- $any because a field can technically be local or external, though this block is scoped strictly to local fields -->\n @for (\n qualifier of $any(advancedSearchOptions.qualifiers)[\n query.controls.field.value\n ];\n track qualifier;\n let optionIndex = $index\n ) {\n <option\n [ngValue]=\"qualifier\"\n [attr.data-testid]=\"\n 'qualifier' + queryIndex + '-option' + optionIndex\n \"\n >\n {{ $any(advancedSearchQualifierMap)[qualifier] }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Query -->\n <label [for]=\"'query' + queryIndex\" class=\"sr-only\">\n {{ getQueryLabel(queryIndex) }}\n </label>\n <div class=\"ss-query-input\">\n <input\n #searchInput\n [id]=\"'query' + queryIndex\"\n [formControlName]=\"'query'\"\n [attr.data-testid]=\"'query' + queryIndex\"\n required\n aria-required=\"true\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && query.controls.query.invalid\"\n [attr.aria-describedby]=\"isSubmitted && query.controls.query.invalid ? ('invalidInputDesc' + queryIndex) : null\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"ss-row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n </div>\n }\n <button\n type=\"button\"\n (click)=\"addQuery()\"\n id=\"addQueryBtn\"\n data-testid=\"addQuery\"\n [disabled]=\"queries.length > 11\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"ss-other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"ss-dropdown-wrapper\">\n <lib-dropdown\n inputId=\"resourceType\"\n placeholder=\"Resource Type\"\n ariaLabel=\"Resource Type\"\n [options]=\"typeDropdownOptions[config.institution]\"\n [multiple]=\"true\"\n [selectedValues]=\"types.value\"\n (selectedValuesChange)=\"types.setValue($event)\"\n ></lib-dropdown>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"ss-dropdown-wrapper\">\n <lib-dropdown\n inputId=\"collection\"\n placeholder=\"Collection\"\n ariaLabel=\"Collection\"\n [options]=\"collectionDropdownOptions[config.institution]\"\n [multiple]=\"true\"\n [selectedValues]=\"collections.value\"\n (selectedValuesChange)=\"collections.setValue($event)\"\n ></lib-dropdown>\n </div>\n </div>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Creation Date' }\"\n ></ng-container>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"ss-checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"ss-checkbox-label\" for=\"peerReviewed\">\n <input\n class=\"ss-hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-checkbox inputId=\"peerReviewed\" [isChecked]=\"peerReviewed.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"ss-checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply equivalent subjects -->\n <label class=\"ss-checkbox-label\" for=\"applyEquivalentSubjects\">\n <input\n class=\"ss-hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-checkbox inputId=\"applyEquivalentSubjects\" [isChecked]=\"applyEquivalentSubjects.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"ss-checkbox-label\" for=\"fullText\">\n <input\n class=\"ss-hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-checkbox inputId=\"fullText\" [isChecked]=\"fullText.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Date Published' }\"\n ></ng-container>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n }\n </div>\n <div id=\"advSearchFooter\">\n <a [href]=\"'https://lib.byu.edu/browse/' + config.institution\">Alphabetic Browse</a>\n <button\n class=\"pill-btn--components\"\n [ngClass]=\"{\n ensign: config.institution === 'ensign',\n }\"\n type=\"submit\"\n data-testid=\"advSearchSubmitButton\"\n >\n Search\n </button>\n </div>\n</form>\n\n<ng-template #languageBlock>\n <div>\n <h4>Language</h4>\n <lib-dropdown\n inputId=\"language\"\n placeholder=\"Language\"\n ariaLabel=\"Language\"\n [options]=\"languageDropdownOptions\"\n [multiple]=\"true\"\n [selectedValues]=\"languages.value\"\n (selectedValuesChange)=\"languages.setValue($any($event))\"\n ></lib-dropdown>\n </div>\n</ng-template>\n<ng-template #dateBlock let-header=\"header\">\n <div id=\"dateOptions\" class=\"external\">\n <h4>{{ header }}</h4>\n <lib-date-range\n [from]=\"from.value\"\n [to]=\"to.value\"\n (fromChange)=\"from.setValue($event)\"\n (toChange)=\"to.setValue($event)\"\n ></lib-date-range>\n </div>\n</ng-template>\n", styles: ["select,textarea,input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}.ss-select-wrapper{position:relative}.ss-select-wrapper select{cursor:pointer;padding-right:2em}.ss-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#457fa6;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#676767;background-color:#e7e7e7;pointer-events:none}.pill-btn--components:hover{background-color:#a2bfd3;color:#fff}.destructive.pill-btn--components{background-color:#b33837}.destructive.pill-btn--components:hover{background-color:#c73e3d}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}button.ensign{background-color:#2b6042!important;border-color:#2a6142}button.ensign:hover{background-color:#357551!important}a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#0047ba;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#003995}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}:host{box-sizing:border-box}:host *{box-sizing:inherit}select:focus,textarea:focus,input:focus{outline:none}.ss-keyboard-focus select:focus,.ss-keyboard-focus textarea:focus,.ss-keyboard-focus input:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}.ss-select-wrapper{margin-right:.3em}.ss-row-cancel{color:#aaa;margin-left:.4em;margin-top:.4em}.ss-row-cancel:hover{color:#666}.ss-row-cancel .ss-icon{font-size:1em}.ss-hidden{display:none}#addQueryBtn{display:flex;align-items:center}#addQueryBtn:disabled{color:#999;pointer-events:none}#addQueryBtn .icon{font-size:1em}.ss-adv-search-wrapper{width:100%}h3{font-size:1.13em;font-weight:300;margin-bottom:.7em;margin-top:0}h4{font:inherit;margin-bottom:.75em;font-weight:600}#dateOptions h4{margin-bottom:.8em}.ss-adv-search-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.6em}.ss-query-input{display:inline-block;width:100%;margin-top:.25rem}.ss-query-input input{width:100%}.ss-other-options{display:grid;grid-template-columns:repeat(1,1fr);gap:.6em 1.6em;grid-auto-rows:minmax(1em,auto);margin-top:1.4em}.ss-other-options label{margin-right:.625rem}.ss-checkbox-label{display:inline-flex;align-items:flex-start;cursor:pointer}.ss-checkbox-label:not(:last-of-type){margin-bottom:.75em}.ss-checkbox-label .ss-label-text{margin-top:-.1em;margin-left:.45em}.ss-checkbox-section{margin-bottom:.8em}#advSearchFooter{margin-bottom:.5em;display:flex;justify-content:space-between;align-items:center;font-size:1.2em}#advSearchFooter a{font-size:.8em}#advSearchFooter .pill-btn--components{background-color:#003995;color:#fff}#advSearchFooter .pill-btn--components:hover{background-color:#0047ba}@media screen and (min-width: 615px){.ss-adv-search-row{flex-wrap:nowrap}.ss-other-options{grid-template-columns:repeat(2,1fr)}.ss-query-input{margin-top:0}#dateOptions .external{grid-column:span 2}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: DropdownComponent, selector: "lib-dropdown", inputs: ["label", "inputId", "labelType", "showHelpIcon", "subtext", "placeholder", "options", "state", "disabled", "ariaLabel", "searchable", "multiple", "selectedValues"], outputs: ["valueChange", "selectedValuesChange", "helpIconClick"] }, { kind: "component", type: CheckboxComponent, selector: "lib-checkbox", inputs: ["isChecked", "isIndeterminate", "isSmall", "disabled", "isError", "inputId"], outputs: ["checkedChange"] }, { kind: "component", type: DateRangeComponent, selector: "lib-date-range", inputs: ["from", "to"], outputs: ["validDateChange", "fromChange", "toChange"] }] }); }
|
|
2762
3077
|
}
|
|
2763
3078
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
|
|
2764
3079
|
type: Component,
|
|
@@ -2767,10 +3082,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
2767
3082
|
ReactiveFormsModule,
|
|
2768
3083
|
MatTooltipModule,
|
|
2769
3084
|
MatIconModule,
|
|
2770
|
-
|
|
3085
|
+
DropdownComponent,
|
|
2771
3086
|
CheckboxComponent,
|
|
2772
3087
|
DateRangeComponent,
|
|
2773
|
-
], template: "<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"ss-adv-search-wrapper\"\n>\n <h3>Advanced Search</h3>\n <!-- Queries -->\n @for (query of queries.controls; track $index; let queryIndex = $index) {\n <div class=\"ss-adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'boolean' + queryIndex\"\n [formControlName]=\"'boolean'\"\n [attr.data-testid]=\"'boolean' + queryIndex\"\n >\n @for (boolean of advancedSearchOptions.boolean; track boolean) {\n <option [ngValue]=\"boolean\">\n {{ boolean }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Field -->\n <label [for]=\"'field' + queryIndex\" class=\"sr-only\">Field {{ queryIndex }}</label>\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'field' + queryIndex\"\n [formControlName]=\"'field'\"\n [attr.data-testid]=\"'field' + queryIndex\"\n >\n @for (field of advancedSearchOptions.fields; track field) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n <optgroup\n [label]=\"(config.scope === 'external' ? 'Online' : 'Library') + ' Specific'\"\n >\n @for (\n field of config.scope === 'external'\n ? advancedSearchOptions.externalFields\n : advancedSearchOptions.localFields;\n track field\n ) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n </optgroup>\n </select>\n </div>\n <!-- Qualifiers are only available for local searches -->\n @if (config.scope === 'local') {\n <label [for]=\"'qualifier' + queryIndex\" class=\"sr-only\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'qualifier' + queryIndex\"\n [formControlName]=\"'qualifier'\"\n [attr.data-testid]=\"'qualifier' + queryIndex\"\n >\n <!-- $any because a field can technically be local or external, though this block is scoped strictly to local fields -->\n @for (\n qualifier of $any(advancedSearchOptions.qualifiers)[\n query.controls.field.value\n ];\n track qualifier;\n let optionIndex = $index\n ) {\n <option\n [ngValue]=\"qualifier\"\n [attr.data-testid]=\"\n 'qualifier' + queryIndex + '-option' + optionIndex\n \"\n >\n {{ $any(advancedSearchQualifierMap)[qualifier] }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Query -->\n <label [for]=\"'query' + queryIndex\" class=\"sr-only\">\n {{ getQueryLabel(queryIndex) }}\n </label>\n <div class=\"ss-query-input\">\n <input\n #searchInput\n [id]=\"'query' + queryIndex\"\n [formControlName]=\"'query'\"\n [attr.data-testid]=\"'query' + queryIndex\"\n required\n aria-required=\"true\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && query.controls.query.invalid\"\n [attr.aria-describedby]=\"isSubmitted && query.controls.query.invalid ? ('invalidInputDesc' + queryIndex) : null\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"ss-row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n </div>\n }\n <button\n type=\"button\"\n (click)=\"addQuery()\"\n id=\"addQueryBtn\"\n data-testid=\"addQuery\"\n [disabled]=\"queries.length > 11\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"ss-other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"ss-multi-select-wrapper\">\n <lib-multi-select\n elementId=\"resourceType\"\n [label]=\"'Resource Type'\"\n [allOptions]=\"advancedSearchOptions.types[config.institution]\"\n [selectedKeys]=\"types.value\"\n (selectedKeysChange)=\"types.setValue($event)\"\n ></lib-multi-select>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"ss-multi-select-wrapper\">\n <lib-multi-select\n elementId=\"collection\"\n [label]=\"'Collection'\"\n [allOptions]=\"advancedSearchOptions.collections[config.institution]\"\n [selectedKeys]=\"collections.value\"\n (selectedKeysChange)=\"collections.setValue($event)\"\n ></lib-multi-select>\n </div>\n </div>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Creation Date' }\"\n ></ng-container>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"ss-checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"ss-checkbox-label\" for=\"peerReviewed\">\n <input\n class=\"ss-hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-checkbox inputId=\"peerReviewed\" [isChecked]=\"peerReviewed.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"ss-checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply equivalent subjects -->\n <label class=\"ss-checkbox-label\" for=\"applyEquivalentSubjects\">\n <input\n class=\"ss-hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-checkbox inputId=\"applyEquivalentSubjects\" [isChecked]=\"applyEquivalentSubjects.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"ss-checkbox-label\" for=\"fullText\">\n <input\n class=\"ss-hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-checkbox inputId=\"fullText\" [isChecked]=\"fullText.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Date Published' }\"\n ></ng-container>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n }\n </div>\n <div id=\"advSearchFooter\">\n <a [href]=\"'https://lib.byu.edu/browse/' + config.institution\">Alphabetic Browse</a>\n <button\n class=\"pill-btn--components\"\n [ngClass]=\"{\n ensign: config.institution === 'ensign',\n }\"\n type=\"submit\"\n data-testid=\"advSearchSubmitButton\"\n >\n Search\n </button>\n </div>\n</form>\n\n<ng-template #languageBlock>\n <div>\n <h4>Language</h4>\n <lib-multi-select\n elementId=\"language\"\n [label]=\"'language'\"\n [allOptions]=\"advancedSearchOptions.languages\"\n [selectedKeys]=\"languages.value\"\n (selectedKeysChange)=\"languages.setValue($any($event))\"\n ></lib-multi-select>\n </div>\n</ng-template>\n<ng-template #dateBlock let-header=\"header\">\n <div id=\"dateOptions\" class=\"external\">\n <h4>{{ header }}</h4>\n <lib-date-range\n [from]=\"from.value\"\n [to]=\"to.value\"\n (fromChange)=\"from.setValue($event)\"\n (toChange)=\"to.setValue($event)\"\n ></lib-date-range>\n </div>\n</ng-template>\n", styles: ["select,textarea,input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}.ss-select-wrapper{position:relative}.ss-select-wrapper select{cursor:pointer;padding-right:2em}.ss-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#457fa6;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#676767;background-color:#e7e7e7;pointer-events:none}.pill-btn--components:hover{background-color:#a2bfd3;color:#fff}.destructive.pill-btn--components{background-color:#b33837}.destructive.pill-btn--components:hover{background-color:#c73e3d}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}button.ensign{background-color:#2b6042!important;border-color:#2a6142}button.ensign:hover{background-color:#357551!important}a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#0047ba;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#003995}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}:host{box-sizing:border-box}:host *{box-sizing:inherit}.ss-select-wrapper{margin-right:.3em}.ss-row-cancel{color:#aaa;margin-left:.4em;margin-top:.4em}.ss-row-cancel:hover{color:#666}.ss-row-cancel .ss-icon{font-size:1em}.ss-hidden{display:none}#addQueryBtn{display:flex;align-items:center}#addQueryBtn:disabled{color:#999;pointer-events:none}#addQueryBtn .icon{font-size:1em}.ss-adv-search-wrapper{width:100%}h3{font-size:1.13em;font-weight:300;margin-bottom:.7em;margin-top:0}h4{font:inherit;margin-bottom:.75em;font-weight:600}#dateOptions h4{margin-bottom:.8em}.ss-adv-search-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.6em}.ss-query-input{display:inline-block;width:100%;margin-top:.25rem}.ss-query-input input{width:100%}.ss-other-options{display:grid;grid-template-columns:repeat(1,1fr);gap:.6em 1.6em;grid-auto-rows:minmax(1em,auto);margin-top:1.4em}.ss-other-options label{margin-right:.625rem}.ss-checkbox-label{display:inline-flex;align-items:flex-start;cursor:pointer}.ss-checkbox-label:not(:last-of-type){margin-bottom:.75em}.ss-checkbox-label .ss-label-text{margin-top:-.1em;margin-left:.45em}.ss-checkbox-section{margin-bottom:.8em}#advSearchFooter{margin-bottom:.5em;display:flex;justify-content:space-between;align-items:center;font-size:1.2em}#advSearchFooter a{font-size:.8em}#advSearchFooter .pill-btn--components{background-color:#003995;color:#fff}#advSearchFooter .pill-btn--components:hover{background-color:#0047ba}@media screen and (min-width: 615px){.ss-adv-search-row{flex-wrap:nowrap}.ss-other-options{grid-template-columns:repeat(2,1fr)}.ss-query-input{margin-top:0}#dateOptions .external{grid-column:span 2}}\n"] }]
|
|
3088
|
+
], template: "<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"ss-adv-search-wrapper\"\n [class.ss-keyboard-focus]=\"isKeyboardFocus\"\n>\n <h3>Advanced Search</h3>\n <!-- Queries -->\n @for (query of queries.controls; track $index; let queryIndex = $index) {\n <div class=\"ss-adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'boolean' + queryIndex\"\n [formControlName]=\"'boolean'\"\n [attr.data-testid]=\"'boolean' + queryIndex\"\n >\n @for (boolean of advancedSearchOptions.boolean; track boolean) {\n <option [ngValue]=\"boolean\">\n {{ boolean }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Field -->\n <label [for]=\"'field' + queryIndex\" class=\"sr-only\">Field {{ queryIndex }}</label>\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'field' + queryIndex\"\n [formControlName]=\"'field'\"\n [attr.data-testid]=\"'field' + queryIndex\"\n >\n @for (field of advancedSearchOptions.fields; track field) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n <optgroup\n [label]=\"(config.scope === 'external' ? 'Online' : 'Library') + ' Specific'\"\n >\n @for (\n field of config.scope === 'external'\n ? advancedSearchOptions.externalFields\n : advancedSearchOptions.localFields;\n track field\n ) {\n <option [ngValue]=\"field\">\n {{ advancedSearchFieldMap[field] }}\n </option>\n }\n </optgroup>\n </select>\n </div>\n <!-- Qualifiers are only available for local searches -->\n @if (config.scope === 'local') {\n <label [for]=\"'qualifier' + queryIndex\" class=\"sr-only\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"ss-select-wrapper\">\n <select\n [id]=\"'qualifier' + queryIndex\"\n [formControlName]=\"'qualifier'\"\n [attr.data-testid]=\"'qualifier' + queryIndex\"\n >\n <!-- $any because a field can technically be local or external, though this block is scoped strictly to local fields -->\n @for (\n qualifier of $any(advancedSearchOptions.qualifiers)[\n query.controls.field.value\n ];\n track qualifier;\n let optionIndex = $index\n ) {\n <option\n [ngValue]=\"qualifier\"\n [attr.data-testid]=\"\n 'qualifier' + queryIndex + '-option' + optionIndex\n \"\n >\n {{ $any(advancedSearchQualifierMap)[qualifier] }}\n </option>\n }\n </select>\n </div>\n }\n <!-- Query -->\n <label [for]=\"'query' + queryIndex\" class=\"sr-only\">\n {{ getQueryLabel(queryIndex) }}\n </label>\n <div class=\"ss-query-input\">\n <input\n #searchInput\n [id]=\"'query' + queryIndex\"\n [formControlName]=\"'query'\"\n [attr.data-testid]=\"'query' + queryIndex\"\n required\n aria-required=\"true\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && query.controls.query.invalid\"\n [attr.aria-describedby]=\"isSubmitted && query.controls.query.invalid ? ('invalidInputDesc' + queryIndex) : null\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"ss-row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n </div>\n }\n <button\n type=\"button\"\n (click)=\"addQuery()\"\n id=\"addQueryBtn\"\n data-testid=\"addQuery\"\n [disabled]=\"queries.length > 11\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"ss-other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"ss-dropdown-wrapper\">\n <lib-dropdown\n inputId=\"resourceType\"\n placeholder=\"Resource Type\"\n ariaLabel=\"Resource Type\"\n [options]=\"typeDropdownOptions[config.institution]\"\n [multiple]=\"true\"\n [selectedValues]=\"types.value\"\n (selectedValuesChange)=\"types.setValue($event)\"\n ></lib-dropdown>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"ss-dropdown-wrapper\">\n <lib-dropdown\n inputId=\"collection\"\n placeholder=\"Collection\"\n ariaLabel=\"Collection\"\n [options]=\"collectionDropdownOptions[config.institution]\"\n [multiple]=\"true\"\n [selectedValues]=\"collections.value\"\n (selectedValuesChange)=\"collections.setValue($event)\"\n ></lib-dropdown>\n </div>\n </div>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Creation Date' }\"\n ></ng-container>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"ss-checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"ss-checkbox-label\" for=\"peerReviewed\">\n <input\n class=\"ss-hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-checkbox inputId=\"peerReviewed\" [isChecked]=\"peerReviewed.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"ss-checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply equivalent subjects -->\n <label class=\"ss-checkbox-label\" for=\"applyEquivalentSubjects\">\n <input\n class=\"ss-hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-checkbox inputId=\"applyEquivalentSubjects\" [isChecked]=\"applyEquivalentSubjects.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"ss-checkbox-label\" for=\"fullText\">\n <input\n class=\"ss-hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-checkbox inputId=\"fullText\" [isChecked]=\"fullText.value\" aria-hidden=\"true\"></lib-checkbox>\n <span class=\"ss-label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <ng-container\n *ngTemplateOutlet=\"dateBlock; context: { header: 'Date Published' }\"\n ></ng-container>\n <!-- Language -->\n <ng-container *ngTemplateOutlet=\"languageBlock\"></ng-container>\n }\n </div>\n <div id=\"advSearchFooter\">\n <a [href]=\"'https://lib.byu.edu/browse/' + config.institution\">Alphabetic Browse</a>\n <button\n class=\"pill-btn--components\"\n [ngClass]=\"{\n ensign: config.institution === 'ensign',\n }\"\n type=\"submit\"\n data-testid=\"advSearchSubmitButton\"\n >\n Search\n </button>\n </div>\n</form>\n\n<ng-template #languageBlock>\n <div>\n <h4>Language</h4>\n <lib-dropdown\n inputId=\"language\"\n placeholder=\"Language\"\n ariaLabel=\"Language\"\n [options]=\"languageDropdownOptions\"\n [multiple]=\"true\"\n [selectedValues]=\"languages.value\"\n (selectedValuesChange)=\"languages.setValue($any($event))\"\n ></lib-dropdown>\n </div>\n</ng-template>\n<ng-template #dateBlock let-header=\"header\">\n <div id=\"dateOptions\" class=\"external\">\n <h4>{{ header }}</h4>\n <lib-date-range\n [from]=\"from.value\"\n [to]=\"to.value\"\n (fromChange)=\"from.setValue($event)\"\n (toChange)=\"to.setValue($event)\"\n ></lib-date-range>\n </div>\n</ng-template>\n", styles: ["select,textarea,input{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}.ss-select-wrapper{position:relative}.ss-select-wrapper select{cursor:pointer;padding-right:2em}.ss-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#457fa6;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#676767;background-color:#e7e7e7;pointer-events:none}.pill-btn--components:hover{background-color:#a2bfd3;color:#fff}.destructive.pill-btn--components{background-color:#b33837}.destructive.pill-btn--components:hover{background-color:#c73e3d}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}button.ensign{background-color:#2b6042!important;border-color:#2a6142}button.ensign:hover{background-color:#357551!important}a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#0047ba;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#003995}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}:host{box-sizing:border-box}:host *{box-sizing:inherit}select:focus,textarea:focus,input:focus{outline:none}.ss-keyboard-focus select:focus,.ss-keyboard-focus textarea:focus,.ss-keyboard-focus input:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}.ss-select-wrapper{margin-right:.3em}.ss-row-cancel{color:#aaa;margin-left:.4em;margin-top:.4em}.ss-row-cancel:hover{color:#666}.ss-row-cancel .ss-icon{font-size:1em}.ss-hidden{display:none}#addQueryBtn{display:flex;align-items:center}#addQueryBtn:disabled{color:#999;pointer-events:none}#addQueryBtn .icon{font-size:1em}.ss-adv-search-wrapper{width:100%}h3{font-size:1.13em;font-weight:300;margin-bottom:.7em;margin-top:0}h4{font:inherit;margin-bottom:.75em;font-weight:600}#dateOptions h4{margin-bottom:.8em}.ss-adv-search-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.6em}.ss-query-input{display:inline-block;width:100%;margin-top:.25rem}.ss-query-input input{width:100%}.ss-other-options{display:grid;grid-template-columns:repeat(1,1fr);gap:.6em 1.6em;grid-auto-rows:minmax(1em,auto);margin-top:1.4em}.ss-other-options label{margin-right:.625rem}.ss-checkbox-label{display:inline-flex;align-items:flex-start;cursor:pointer}.ss-checkbox-label:not(:last-of-type){margin-bottom:.75em}.ss-checkbox-label .ss-label-text{margin-top:-.1em;margin-left:.45em}.ss-checkbox-section{margin-bottom:.8em}#advSearchFooter{margin-bottom:.5em;display:flex;justify-content:space-between;align-items:center;font-size:1.2em}#advSearchFooter a{font-size:.8em}#advSearchFooter .pill-btn--components{background-color:#003995;color:#fff}#advSearchFooter .pill-btn--components:hover{background-color:#0047ba}@media screen and (min-width: 615px){.ss-adv-search-row{flex-wrap:nowrap}.ss-other-options{grid-template-columns:repeat(2,1fr)}.ss-query-input{margin-top:0}#dateOptions .external{grid-column:span 2}}\n"] }]
|
|
2774
3089
|
}], propDecorators: { config: [{
|
|
2775
3090
|
type: Input,
|
|
2776
3091
|
args: [{ required: true }]
|
|
@@ -2782,6 +3097,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
2782
3097
|
}], inputTooltip: [{
|
|
2783
3098
|
type: ViewChild,
|
|
2784
3099
|
args: [MatTooltip]
|
|
3100
|
+
}], onDocumentKeydown: [{
|
|
3101
|
+
type: HostListener,
|
|
3102
|
+
args: ['document:keydown', ['$event']]
|
|
3103
|
+
}], onDocumentPointerdown: [{
|
|
3104
|
+
type: HostListener,
|
|
3105
|
+
args: ['document:mousedown']
|
|
3106
|
+
}, {
|
|
3107
|
+
type: HostListener,
|
|
3108
|
+
args: ['document:pointerdown']
|
|
2785
3109
|
}] } });
|
|
2786
3110
|
|
|
2787
3111
|
class SimpleSearchComponent {
|
|
@@ -3974,445 +4298,162 @@ class PreTabComponent {
|
|
|
3974
4298
|
email: { icon: 'mail', text: 'Email' },
|
|
3975
4299
|
phone: { icon: 'phone', text: 'Tel' },
|
|
3976
4300
|
fax: { icon: 'print', text: 'Fax' },
|
|
3977
|
-
address: { icon: 'location_on', text: 'Addr' },
|
|
3978
|
-
social: { icon: 'share', text: 'Social' },
|
|
3979
|
-
custom: { icon: '', text: '' },
|
|
3980
|
-
};
|
|
3981
|
-
}
|
|
3982
|
-
/**
|
|
3983
|
-
* Gets the icon to display based on type or custom input
|
|
3984
|
-
*/
|
|
3985
|
-
get displayIcon() {
|
|
3986
|
-
if (this.icon) {
|
|
3987
|
-
return this.icon;
|
|
3988
|
-
}
|
|
3989
|
-
return this.presets[this.type]?.icon || '';
|
|
3990
|
-
}
|
|
3991
|
-
/**
|
|
3992
|
-
* Gets the text to display based on type or custom input
|
|
3993
|
-
*/
|
|
3994
|
-
get displayText() {
|
|
3995
|
-
if (this.text) {
|
|
3996
|
-
return this.text;
|
|
3997
|
-
}
|
|
3998
|
-
return this.presets[this.type]?.text || '';
|
|
3999
|
-
}
|
|
4000
|
-
/**
|
|
4001
|
-
* Gets the computed aria-label for accessibility
|
|
4002
|
-
*/
|
|
4003
|
-
get computedAriaLabel() {
|
|
4004
|
-
if (this.ariaLabel) {
|
|
4005
|
-
return this.ariaLabel;
|
|
4006
|
-
}
|
|
4007
|
-
return `${this.displayText} prefix`;
|
|
4008
|
-
}
|
|
4009
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PreTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4010
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: PreTabComponent, isStandalone: true, selector: "lib-pre-tab", inputs: { type: "type", icon: "icon", text: "text", action: "action", disabled: "disabled", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div \n class=\"pre-tab\" \n [ngClass]=\"{\n 'pre-tab--disabled': disabled,\n 'pre-tab--active': action && !disabled,\n 'pre-tab--inactive': !action && !disabled\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"pre-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText) {\n <span class=\"pre-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pre-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:.25rem 0 0 .25rem;transition:background-color .2s ease;margin-left:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.pre-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.pre-tab--disabled .pre-tab__icon{color:#676767}.pre-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.pre-tab--inactive .pre-tab__icon{color:#00245d}.pre-tab--active{background:#0047ba;color:#fff;cursor:pointer}.pre-tab--active:hover{background:#003995}.pre-tab--active .pre-tab__icon{color:#fff}.pre-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.pre-tab__text{flex:none;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
4011
|
-
}
|
|
4012
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PreTabComponent, decorators: [{
|
|
4013
|
-
type: Component,
|
|
4014
|
-
args: [{ selector: 'lib-pre-tab', standalone: true, imports: [CommonModule], template: "<div \n class=\"pre-tab\" \n [ngClass]=\"{\n 'pre-tab--disabled': disabled,\n 'pre-tab--active': action && !disabled,\n 'pre-tab--inactive': !action && !disabled\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"pre-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText) {\n <span class=\"pre-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pre-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:.25rem 0 0 .25rem;transition:background-color .2s ease;margin-left:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.pre-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.pre-tab--disabled .pre-tab__icon{color:#676767}.pre-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.pre-tab--inactive .pre-tab__icon{color:#00245d}.pre-tab--active{background:#0047ba;color:#fff;cursor:pointer}.pre-tab--active:hover{background:#003995}.pre-tab--active .pre-tab__icon{color:#fff}.pre-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.pre-tab__text{flex:none;white-space:nowrap}\n"] }]
|
|
4015
|
-
}], propDecorators: { type: [{
|
|
4016
|
-
type: Input
|
|
4017
|
-
}], icon: [{
|
|
4018
|
-
type: Input
|
|
4019
|
-
}], text: [{
|
|
4020
|
-
type: Input
|
|
4021
|
-
}], action: [{
|
|
4022
|
-
type: Input
|
|
4023
|
-
}], disabled: [{
|
|
4024
|
-
type: Input
|
|
4025
|
-
}], ariaLabel: [{
|
|
4026
|
-
type: Input
|
|
4027
|
-
}] } });
|
|
4028
|
-
|
|
4029
|
-
/**
|
|
4030
|
-
* A suffix tab component that displays an icon (and optionally text) after an input field.
|
|
4031
|
-
* Provides default presets for common types (website, email, phone) or custom configuration.
|
|
4032
|
-
*
|
|
4033
|
-
* @example
|
|
4034
|
-
* ```html
|
|
4035
|
-
* <!-- Website preset (icon only) -->
|
|
4036
|
-
* <lib-post-tab type="website"></lib-post-tab>
|
|
4037
|
-
*
|
|
4038
|
-
* <!-- Email preset (icon only) -->
|
|
4039
|
-
* <lib-post-tab type="email"></lib-post-tab>
|
|
4040
|
-
*
|
|
4041
|
-
* <!-- Phone preset with text -->
|
|
4042
|
-
* <lib-post-tab type="phone" [showText]="true"></lib-post-tab>
|
|
4043
|
-
*
|
|
4044
|
-
* <!-- Fax preset -->
|
|
4045
|
-
* <lib-post-tab type="fax"></lib-post-tab>
|
|
4046
|
-
*
|
|
4047
|
-
* <!-- Address preset -->
|
|
4048
|
-
* <lib-post-tab type="address"></lib-post-tab>
|
|
4049
|
-
*
|
|
4050
|
-
* <!-- Social media preset -->
|
|
4051
|
-
* <lib-post-tab type="social"></lib-post-tab>
|
|
4052
|
-
*
|
|
4053
|
-
* <!-- Custom configuration -->
|
|
4054
|
-
* <lib-post-tab
|
|
4055
|
-
* type="custom"
|
|
4056
|
-
* icon="location_on"
|
|
4057
|
-
* text="Address"
|
|
4058
|
-
* [showText]="true">
|
|
4059
|
-
* </lib-post-tab>
|
|
4060
|
-
*
|
|
4061
|
-
* <!-- Actionable state -->
|
|
4062
|
-
* <lib-post-tab type="phone" [action]="onPostTabAction"></lib-post-tab>
|
|
4063
|
-
*
|
|
4064
|
-
* <!-- Disabled state -->
|
|
4065
|
-
* <lib-post-tab type="website" [disabled]="true"></lib-post-tab>
|
|
4066
|
-
* ```
|
|
4067
|
-
*/
|
|
4068
|
-
class PostTabComponent {
|
|
4069
|
-
constructor() {
|
|
4070
|
-
this.type = 'website';
|
|
4071
|
-
this.showText = false;
|
|
4072
|
-
this.disabled = false;
|
|
4073
|
-
/**
|
|
4074
|
-
* Default preset configurations
|
|
4075
|
-
*/
|
|
4076
|
-
this.presets = {
|
|
4077
|
-
website: { icon: 'language', text: 'WWW.' },
|
|
4078
|
-
email: { icon: 'mail', text: 'Email' },
|
|
4079
|
-
phone: { icon: 'phone', text: 'Tel' },
|
|
4080
|
-
fax: { icon: 'print', text: 'Fax' },
|
|
4081
|
-
address: { icon: 'location_on', text: 'Addr' },
|
|
4082
|
-
social: { icon: 'share', text: 'Social' },
|
|
4083
|
-
custom: { icon: '', text: '' },
|
|
4084
|
-
};
|
|
4085
|
-
}
|
|
4086
|
-
/**
|
|
4087
|
-
* Gets the icon to display based on type or custom input
|
|
4088
|
-
*/
|
|
4089
|
-
get displayIcon() {
|
|
4090
|
-
if (this.icon) {
|
|
4091
|
-
return this.icon;
|
|
4092
|
-
}
|
|
4093
|
-
return this.presets[this.type]?.icon || '';
|
|
4094
|
-
}
|
|
4095
|
-
/**
|
|
4096
|
-
* Gets the text to display based on type or custom input
|
|
4097
|
-
*/
|
|
4098
|
-
get displayText() {
|
|
4099
|
-
if (this.text) {
|
|
4100
|
-
return this.text;
|
|
4101
|
-
}
|
|
4102
|
-
return this.presets[this.type]?.text || '';
|
|
4103
|
-
}
|
|
4104
|
-
/**
|
|
4105
|
-
* Gets the computed aria-label for accessibility
|
|
4106
|
-
*/
|
|
4107
|
-
get computedAriaLabel() {
|
|
4108
|
-
if (this.ariaLabel) {
|
|
4109
|
-
return this.ariaLabel;
|
|
4110
|
-
}
|
|
4111
|
-
return `${this.displayText} suffix`;
|
|
4112
|
-
}
|
|
4113
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PostTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4114
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: PostTabComponent, isStandalone: true, selector: "lib-post-tab", inputs: { type: "type", icon: "icon", text: "text", showText: "showText", action: "action", disabled: "disabled", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div \n class=\"post-tab\" \n [ngClass]=\"{\n 'post-tab--disabled': disabled,\n 'post-tab--active': action && !disabled,\n 'post-tab--inactive': !action && !disabled,\n 'post-tab--icon-only': !showText\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"post-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText && showText) {\n <span class=\"post-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.post-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:0 .25rem .25rem 0;transition:background-color .2s ease;margin-right:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.post-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.post-tab--disabled .post-tab__icon{color:#676767}.post-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.post-tab--inactive .post-tab__icon{color:#00245d}.post-tab--active{background:#0047ba;color:#fff;cursor:pointer}.post-tab--active:hover{background:#003995}.post-tab--active .post-tab__icon{color:#fff}.post-tab--icon-only{padding:.25rem .5rem}.post-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.post-tab__text{flex:none;white-space:nowrap;display:none}.post-tab:not(.post-tab--icon-only) .post-tab__text{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
4115
|
-
}
|
|
4116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PostTabComponent, decorators: [{
|
|
4117
|
-
type: Component,
|
|
4118
|
-
args: [{ selector: 'lib-post-tab', standalone: true, imports: [CommonModule], template: "<div \n class=\"post-tab\" \n [ngClass]=\"{\n 'post-tab--disabled': disabled,\n 'post-tab--active': action && !disabled,\n 'post-tab--inactive': !action && !disabled,\n 'post-tab--icon-only': !showText\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"post-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText && showText) {\n <span class=\"post-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.post-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:0 .25rem .25rem 0;transition:background-color .2s ease;margin-right:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.post-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.post-tab--disabled .post-tab__icon{color:#676767}.post-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.post-tab--inactive .post-tab__icon{color:#00245d}.post-tab--active{background:#0047ba;color:#fff;cursor:pointer}.post-tab--active:hover{background:#003995}.post-tab--active .post-tab__icon{color:#fff}.post-tab--icon-only{padding:.25rem .5rem}.post-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.post-tab__text{flex:none;white-space:nowrap;display:none}.post-tab:not(.post-tab--icon-only) .post-tab__text{display:block}\n"] }]
|
|
4119
|
-
}], propDecorators: { type: [{
|
|
4120
|
-
type: Input
|
|
4121
|
-
}], icon: [{
|
|
4122
|
-
type: Input
|
|
4123
|
-
}], text: [{
|
|
4124
|
-
type: Input
|
|
4125
|
-
}], showText: [{
|
|
4126
|
-
type: Input
|
|
4127
|
-
}], action: [{
|
|
4128
|
-
type: Input
|
|
4129
|
-
}], disabled: [{
|
|
4130
|
-
type: Input
|
|
4131
|
-
}], ariaLabel: [{
|
|
4132
|
-
type: Input
|
|
4133
|
-
}] } });
|
|
4134
|
-
|
|
4135
|
-
/**
|
|
4136
|
-
* A dropdown component that combines a label and a searchable select field.
|
|
4137
|
-
* Features include:
|
|
4138
|
-
* - Searchable input to filter options
|
|
4139
|
-
* - Keyboard navigation support
|
|
4140
|
-
* - Optional label with help icon
|
|
4141
|
-
* - Multiple states (default, focused, error, etc.)
|
|
4142
|
-
*
|
|
4143
|
-
* @example
|
|
4144
|
-
* ```html
|
|
4145
|
-
* <!-- Basic dropdown -->
|
|
4146
|
-
* <lib-dropdown
|
|
4147
|
-
* label="Select an option"
|
|
4148
|
-
* [options]="myOptions"
|
|
4149
|
-
* (valueChange)="onSelectionChange($event)">
|
|
4150
|
-
* </lib-dropdown>
|
|
4151
|
-
*
|
|
4152
|
-
* <!-- Required dropdown with help icon -->
|
|
4153
|
-
* <lib-dropdown
|
|
4154
|
-
* label="Category"
|
|
4155
|
-
* labelType="required"
|
|
4156
|
-
* [showHelpIcon]="true"
|
|
4157
|
-
* [options]="categories"
|
|
4158
|
-
* placeholder="Choose a category"
|
|
4159
|
-
* (valueChange)="onCategoryChange($event)">
|
|
4160
|
-
* </lib-dropdown>
|
|
4161
|
-
*
|
|
4162
|
-
* <!-- Dropdown with error state -->
|
|
4163
|
-
* <lib-dropdown
|
|
4164
|
-
* label="Status"
|
|
4165
|
-
* [options]="statuses"
|
|
4166
|
-
* state="error"
|
|
4167
|
-
* subtext="Please select a status"
|
|
4168
|
-
* (valueChange)="onStatusChange($event)">
|
|
4169
|
-
* </lib-dropdown>
|
|
4170
|
-
* ```
|
|
4171
|
-
*/
|
|
4172
|
-
class DropdownComponent {
|
|
4173
|
-
constructor() {
|
|
4174
|
-
this.labelType = 'none';
|
|
4175
|
-
this.showHelpIcon = false;
|
|
4176
|
-
this.placeholder = 'Select an option';
|
|
4177
|
-
this.options = [];
|
|
4178
|
-
this.state = 'default';
|
|
4179
|
-
this.disabled = false;
|
|
4180
|
-
this.searchable = true;
|
|
4181
|
-
this.valueChange = new EventEmitter();
|
|
4182
|
-
this.helpIconClick = new EventEmitter();
|
|
4183
|
-
this.value = '';
|
|
4184
|
-
this.searchText = '';
|
|
4185
|
-
this.isOpen = false;
|
|
4186
|
-
this.selectedIndex = -1;
|
|
4187
|
-
this.filteredOptions = [];
|
|
4188
|
-
this.elementRef = inject(ElementRef);
|
|
4189
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
4190
|
-
this.onChange = () => { };
|
|
4191
|
-
this.onTouched = () => { };
|
|
4192
|
-
}
|
|
4193
|
-
ngOnInit() {
|
|
4194
|
-
this.filteredOptions = this.options;
|
|
4195
|
-
}
|
|
4196
|
-
/**
|
|
4197
|
-
* Gets the display text for the selected value
|
|
4198
|
-
*/
|
|
4199
|
-
get displayText() {
|
|
4200
|
-
if (!this.value && !this.searchText) {
|
|
4201
|
-
return '';
|
|
4202
|
-
}
|
|
4203
|
-
if (this.searchText) {
|
|
4204
|
-
return this.searchText;
|
|
4205
|
-
}
|
|
4206
|
-
const selectedOption = this.options.find((opt) => opt.value === this.value);
|
|
4207
|
-
return selectedOption ? selectedOption.label : '';
|
|
4208
|
-
}
|
|
4209
|
-
/**
|
|
4210
|
-
* Toggles dropdown open/closed state
|
|
4211
|
-
*/
|
|
4212
|
-
toggleDropdown() {
|
|
4213
|
-
if (this.disabled)
|
|
4214
|
-
return;
|
|
4215
|
-
this.isOpen = !this.isOpen;
|
|
4216
|
-
if (this.isOpen) {
|
|
4217
|
-
this.filteredOptions = this.options;
|
|
4218
|
-
this.selectedIndex = this.options.findIndex((opt) => opt.value === this.value);
|
|
4219
|
-
// Scroll to the currently selected item
|
|
4220
|
-
this.scrollHighlightedIntoView();
|
|
4221
|
-
}
|
|
4222
|
-
}
|
|
4223
|
-
/**
|
|
4224
|
-
* Handles input changes for search functionality
|
|
4225
|
-
*/
|
|
4226
|
-
onSearchInput(event) {
|
|
4227
|
-
const input = event.target;
|
|
4228
|
-
this.searchText = input.value;
|
|
4229
|
-
this.filterOptions();
|
|
4230
|
-
if (!this.isOpen) {
|
|
4231
|
-
this.isOpen = true;
|
|
4232
|
-
}
|
|
4301
|
+
address: { icon: 'location_on', text: 'Addr' },
|
|
4302
|
+
social: { icon: 'share', text: 'Social' },
|
|
4303
|
+
custom: { icon: '', text: '' },
|
|
4304
|
+
};
|
|
4233
4305
|
}
|
|
4234
4306
|
/**
|
|
4235
|
-
*
|
|
4307
|
+
* Gets the icon to display based on type or custom input
|
|
4236
4308
|
*/
|
|
4237
|
-
|
|
4238
|
-
if (
|
|
4239
|
-
|
|
4240
|
-
}
|
|
4241
|
-
else {
|
|
4242
|
-
this.filteredOptions = this.options.filter((option) => option.label.toLowerCase().includes(this.searchText.toLowerCase()));
|
|
4309
|
+
get displayIcon() {
|
|
4310
|
+
if (this.icon) {
|
|
4311
|
+
return this.icon;
|
|
4243
4312
|
}
|
|
4244
|
-
this.
|
|
4245
|
-
this.scrollHighlightedIntoView();
|
|
4246
|
-
}
|
|
4247
|
-
/**
|
|
4248
|
-
* Scrolls the highlighted item into view
|
|
4249
|
-
*/
|
|
4250
|
-
scrollHighlightedIntoView() {
|
|
4251
|
-
this.cdr.detectChanges();
|
|
4252
|
-
setTimeout(() => {
|
|
4253
|
-
if (!this.dropdownMenuItems)
|
|
4254
|
-
return;
|
|
4255
|
-
const menuContainer = this.dropdownMenuItems.nativeElement;
|
|
4256
|
-
const highlightedItem = menuContainer.querySelector('.dropdown-menu-item.highlighted');
|
|
4257
|
-
if (highlightedItem) {
|
|
4258
|
-
highlightedItem.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
4259
|
-
}
|
|
4260
|
-
}, 0);
|
|
4313
|
+
return this.presets[this.type]?.icon || '';
|
|
4261
4314
|
}
|
|
4262
4315
|
/**
|
|
4263
|
-
*
|
|
4316
|
+
* Gets the text to display based on type or custom input
|
|
4264
4317
|
*/
|
|
4265
|
-
|
|
4266
|
-
if (
|
|
4267
|
-
return;
|
|
4268
|
-
|
|
4269
|
-
this.
|
|
4270
|
-
this.isOpen = false;
|
|
4271
|
-
this.onChange(this.value);
|
|
4272
|
-
this.valueChange.emit(this.value);
|
|
4318
|
+
get displayText() {
|
|
4319
|
+
if (this.text) {
|
|
4320
|
+
return this.text;
|
|
4321
|
+
}
|
|
4322
|
+
return this.presets[this.type]?.text || '';
|
|
4273
4323
|
}
|
|
4274
4324
|
/**
|
|
4275
|
-
*
|
|
4325
|
+
* Gets the computed aria-label for accessibility
|
|
4276
4326
|
*/
|
|
4277
|
-
|
|
4278
|
-
if (this.
|
|
4279
|
-
return;
|
|
4280
|
-
switch (event.key) {
|
|
4281
|
-
case 'ArrowDown':
|
|
4282
|
-
event.preventDefault();
|
|
4283
|
-
if (!this.isOpen) {
|
|
4284
|
-
this.isOpen = true;
|
|
4285
|
-
}
|
|
4286
|
-
else {
|
|
4287
|
-
this.selectedIndex = Math.min(this.selectedIndex + 1, this.filteredOptions.length - 1);
|
|
4288
|
-
this.scrollHighlightedIntoView();
|
|
4289
|
-
}
|
|
4290
|
-
break;
|
|
4291
|
-
case 'ArrowUp':
|
|
4292
|
-
event.preventDefault();
|
|
4293
|
-
if (this.isOpen) {
|
|
4294
|
-
this.selectedIndex = Math.max(this.selectedIndex - 1, 0);
|
|
4295
|
-
this.scrollHighlightedIntoView();
|
|
4296
|
-
}
|
|
4297
|
-
break;
|
|
4298
|
-
case 'Enter':
|
|
4299
|
-
event.preventDefault();
|
|
4300
|
-
if (this.isOpen && this.selectedIndex >= 0) {
|
|
4301
|
-
this.selectOption(this.filteredOptions[this.selectedIndex]);
|
|
4302
|
-
}
|
|
4303
|
-
else {
|
|
4304
|
-
this.toggleDropdown();
|
|
4305
|
-
}
|
|
4306
|
-
break;
|
|
4307
|
-
case 'Escape':
|
|
4308
|
-
event.preventDefault();
|
|
4309
|
-
this.isOpen = false;
|
|
4310
|
-
this.searchText = '';
|
|
4311
|
-
this.filteredOptions = this.options;
|
|
4312
|
-
break;
|
|
4313
|
-
case 'Tab':
|
|
4314
|
-
if (this.isOpen) {
|
|
4315
|
-
this.isOpen = false;
|
|
4316
|
-
this.searchText = '';
|
|
4317
|
-
this.filteredOptions = this.options;
|
|
4318
|
-
}
|
|
4319
|
-
break;
|
|
4327
|
+
get computedAriaLabel() {
|
|
4328
|
+
if (this.ariaLabel) {
|
|
4329
|
+
return this.ariaLabel;
|
|
4320
4330
|
}
|
|
4331
|
+
return `${this.displayText} prefix`;
|
|
4332
|
+
}
|
|
4333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PreTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4334
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: PreTabComponent, isStandalone: true, selector: "lib-pre-tab", inputs: { type: "type", icon: "icon", text: "text", action: "action", disabled: "disabled", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div \n class=\"pre-tab\" \n [ngClass]=\"{\n 'pre-tab--disabled': disabled,\n 'pre-tab--active': action && !disabled,\n 'pre-tab--inactive': !action && !disabled\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"pre-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText) {\n <span class=\"pre-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pre-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:.25rem 0 0 .25rem;transition:background-color .2s ease;margin-left:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.pre-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.pre-tab--disabled .pre-tab__icon{color:#676767}.pre-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.pre-tab--inactive .pre-tab__icon{color:#00245d}.pre-tab--active{background:#0047ba;color:#fff;cursor:pointer}.pre-tab--active:hover{background:#003995}.pre-tab--active .pre-tab__icon{color:#fff}.pre-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.pre-tab__text{flex:none;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
4335
|
+
}
|
|
4336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PreTabComponent, decorators: [{
|
|
4337
|
+
type: Component,
|
|
4338
|
+
args: [{ selector: 'lib-pre-tab', standalone: true, imports: [CommonModule], template: "<div \n class=\"pre-tab\" \n [ngClass]=\"{\n 'pre-tab--disabled': disabled,\n 'pre-tab--active': action && !disabled,\n 'pre-tab--inactive': !action && !disabled\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"pre-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText) {\n <span class=\"pre-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pre-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:.25rem 0 0 .25rem;transition:background-color .2s ease;margin-left:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.pre-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.pre-tab--disabled .pre-tab__icon{color:#676767}.pre-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.pre-tab--inactive .pre-tab__icon{color:#00245d}.pre-tab--active{background:#0047ba;color:#fff;cursor:pointer}.pre-tab--active:hover{background:#003995}.pre-tab--active .pre-tab__icon{color:#fff}.pre-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.pre-tab__text{flex:none;white-space:nowrap}\n"] }]
|
|
4339
|
+
}], propDecorators: { type: [{
|
|
4340
|
+
type: Input
|
|
4341
|
+
}], icon: [{
|
|
4342
|
+
type: Input
|
|
4343
|
+
}], text: [{
|
|
4344
|
+
type: Input
|
|
4345
|
+
}], action: [{
|
|
4346
|
+
type: Input
|
|
4347
|
+
}], disabled: [{
|
|
4348
|
+
type: Input
|
|
4349
|
+
}], ariaLabel: [{
|
|
4350
|
+
type: Input
|
|
4351
|
+
}] } });
|
|
4352
|
+
|
|
4353
|
+
/**
|
|
4354
|
+
* A suffix tab component that displays an icon (and optionally text) after an input field.
|
|
4355
|
+
* Provides default presets for common types (website, email, phone) or custom configuration.
|
|
4356
|
+
*
|
|
4357
|
+
* @example
|
|
4358
|
+
* ```html
|
|
4359
|
+
* <!-- Website preset (icon only) -->
|
|
4360
|
+
* <lib-post-tab type="website"></lib-post-tab>
|
|
4361
|
+
*
|
|
4362
|
+
* <!-- Email preset (icon only) -->
|
|
4363
|
+
* <lib-post-tab type="email"></lib-post-tab>
|
|
4364
|
+
*
|
|
4365
|
+
* <!-- Phone preset with text -->
|
|
4366
|
+
* <lib-post-tab type="phone" [showText]="true"></lib-post-tab>
|
|
4367
|
+
*
|
|
4368
|
+
* <!-- Fax preset -->
|
|
4369
|
+
* <lib-post-tab type="fax"></lib-post-tab>
|
|
4370
|
+
*
|
|
4371
|
+
* <!-- Address preset -->
|
|
4372
|
+
* <lib-post-tab type="address"></lib-post-tab>
|
|
4373
|
+
*
|
|
4374
|
+
* <!-- Social media preset -->
|
|
4375
|
+
* <lib-post-tab type="social"></lib-post-tab>
|
|
4376
|
+
*
|
|
4377
|
+
* <!-- Custom configuration -->
|
|
4378
|
+
* <lib-post-tab
|
|
4379
|
+
* type="custom"
|
|
4380
|
+
* icon="location_on"
|
|
4381
|
+
* text="Address"
|
|
4382
|
+
* [showText]="true">
|
|
4383
|
+
* </lib-post-tab>
|
|
4384
|
+
*
|
|
4385
|
+
* <!-- Actionable state -->
|
|
4386
|
+
* <lib-post-tab type="phone" [action]="onPostTabAction"></lib-post-tab>
|
|
4387
|
+
*
|
|
4388
|
+
* <!-- Disabled state -->
|
|
4389
|
+
* <lib-post-tab type="website" [disabled]="true"></lib-post-tab>
|
|
4390
|
+
* ```
|
|
4391
|
+
*/
|
|
4392
|
+
class PostTabComponent {
|
|
4393
|
+
constructor() {
|
|
4394
|
+
this.type = 'website';
|
|
4395
|
+
this.showText = false;
|
|
4396
|
+
this.disabled = false;
|
|
4397
|
+
/**
|
|
4398
|
+
* Default preset configurations
|
|
4399
|
+
*/
|
|
4400
|
+
this.presets = {
|
|
4401
|
+
website: { icon: 'language', text: 'WWW.' },
|
|
4402
|
+
email: { icon: 'mail', text: 'Email' },
|
|
4403
|
+
phone: { icon: 'phone', text: 'Tel' },
|
|
4404
|
+
fax: { icon: 'print', text: 'Fax' },
|
|
4405
|
+
address: { icon: 'location_on', text: 'Addr' },
|
|
4406
|
+
social: { icon: 'share', text: 'Social' },
|
|
4407
|
+
custom: { icon: '', text: '' },
|
|
4408
|
+
};
|
|
4321
4409
|
}
|
|
4322
4410
|
/**
|
|
4323
|
-
*
|
|
4411
|
+
* Gets the icon to display based on type or custom input
|
|
4324
4412
|
*/
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
this.filteredOptions = this.options;
|
|
4331
|
-
}
|
|
4332
|
-
}, 200);
|
|
4413
|
+
get displayIcon() {
|
|
4414
|
+
if (this.icon) {
|
|
4415
|
+
return this.icon;
|
|
4416
|
+
}
|
|
4417
|
+
return this.presets[this.type]?.icon || '';
|
|
4333
4418
|
}
|
|
4334
4419
|
/**
|
|
4335
|
-
*
|
|
4420
|
+
* Gets the text to display based on type or custom input
|
|
4336
4421
|
*/
|
|
4337
|
-
|
|
4338
|
-
this.
|
|
4422
|
+
get displayText() {
|
|
4423
|
+
if (this.text) {
|
|
4424
|
+
return this.text;
|
|
4425
|
+
}
|
|
4426
|
+
return this.presets[this.type]?.text || '';
|
|
4339
4427
|
}
|
|
4340
4428
|
/**
|
|
4341
|
-
*
|
|
4429
|
+
* Gets the computed aria-label for accessibility
|
|
4342
4430
|
*/
|
|
4343
|
-
|
|
4344
|
-
if (
|
|
4345
|
-
this.
|
|
4346
|
-
this.searchText = '';
|
|
4347
|
-
this.filteredOptions = this.options;
|
|
4431
|
+
get computedAriaLabel() {
|
|
4432
|
+
if (this.ariaLabel) {
|
|
4433
|
+
return this.ariaLabel;
|
|
4348
4434
|
}
|
|
4435
|
+
return `${this.displayText} suffix`;
|
|
4349
4436
|
}
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
this.value = value || '';
|
|
4353
|
-
}
|
|
4354
|
-
registerOnChange(fn) {
|
|
4355
|
-
this.onChange = fn;
|
|
4356
|
-
}
|
|
4357
|
-
registerOnTouched(fn) {
|
|
4358
|
-
this.onTouched = fn;
|
|
4359
|
-
}
|
|
4360
|
-
setDisabledState(isDisabled) {
|
|
4361
|
-
this.disabled = isDisabled;
|
|
4362
|
-
}
|
|
4363
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: DropdownComponent, isStandalone: true, selector: "lib-dropdown", inputs: { label: "label", inputId: "inputId", labelType: "labelType", showHelpIcon: "showHelpIcon", subtext: "subtext", placeholder: "placeholder", options: "options", state: "state", disabled: "disabled", ariaLabel: "ariaLabel", searchable: "searchable" }, outputs: { valueChange: "valueChange", helpIconClick: "helpIconClick" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
4365
|
-
{
|
|
4366
|
-
provide: NG_VALUE_ACCESSOR,
|
|
4367
|
-
useExisting: forwardRef(() => DropdownComponent),
|
|
4368
|
-
multi: true,
|
|
4369
|
-
},
|
|
4370
|
-
], viewQueries: [{ propertyName: "dropdownInput", first: true, predicate: ["dropdownInput"], descendants: true }, { propertyName: "dropdownMenuItems", first: true, predicate: ["dropdownMenuItems"], descendants: true }], ngImport: i0, template: "<div class=\"dropdown-wrapper\">\n @if (label) {\n <lib-label\n [for]=\"inputId\"\n [text]=\"label\"\n [type]=\"labelType\"\n [showHelpIcon]=\"showHelpIcon\"\n [subtext]=\"subtext\"\n (helpIconClick)=\"onHelpIconClick()\"\n ></lib-label>\n }\n\n <div\n class=\"dropdown-field-container\"\n [ngClass]=\"'dropdown-' + state\"\n >\n <div class=\"dropdown-field-wrapper\" (click)=\"toggleDropdown()\">\n <lib-field\n #dropdownInput\n [inputId]=\"inputId\"\n [placeholder]=\"placeholder\"\n [value]=\"displayText\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [ariaLabel]=\"ariaLabel ? ariaLabel : label\"\n [iconAfter]=\"isOpen ? 'expand_less' : 'expand_more'\"\n [attr.readonly]=\"!searchable\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n </lib-field>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-menu\">\n <div class=\"dropdown-menu-items\" #dropdownMenuItems>\n @if (filteredOptions.length === 0) {\n <div class=\"dropdown-menu-item no-results\">No results found</div>\n }\n @for (option of filteredOptions; track option.value; let i = $index) {\n <div\n class=\"dropdown-menu-item\"\n [ngClass]=\"{\n selected: option.value === value,\n highlighted: i === selectedIndex,\n disabled: option.disabled\n }\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.dropdown-wrapper{display:flex;flex-direction:column;align-items:flex-start;padding:0;gap:.5rem;width:100%}.dropdown-field-container{position:relative;width:100%}.dropdown-field-container .dropdown-field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field{cursor:pointer;pointer-events:none}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input{cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input:not([readonly]){cursor:text}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .icon-after{pointer-events:none}.dropdown-field-container .dropdown-menu{position:absolute;top:100%;left:0;width:100%;max-height:15rem;background:#fff;border:1px solid #d0d0d0;border-radius:0 0 .25rem .25rem;z-index:1000;overflow:hidden;box-shadow:0 2px 8px #0000001a}.dropdown-field-container .dropdown-menu .dropdown-menu-items{max-height:15rem;overflow-y:auto;overflow-x:hidden}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar{width:.5625rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-track{background:#fff}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb{background:#8f8f8f;border-radius:16rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb:hover{background:#676767}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item{display:flex;flex-direction:row;align-items:flex-end;padding:.5rem 1rem;gap:.5rem;color:#141414;cursor:pointer;transition:background-color .2s ease}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item:hover:not(.disabled):not(.no-results){background:#f9f9f9}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.selected{background:#ccdaf1;font-weight:600}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted.selected:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.disabled{color:#676767;cursor:not-allowed;opacity:.6}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.no-results{color:#676767;cursor:default;font-style:italic}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LabelComponent, selector: "lib-label", inputs: ["text", "type", "showHelpIcon", "ariaLabel", "position", "isRequired", "for", "subtext"], outputs: ["helpIconClick"] }, { kind: "component", type: FieldComponent, selector: "lib-field", inputs: ["inputType", "inputId", "placeholder", "state", "status", "iconBefore", "iconAfter", "iconBeforeClickable", "iconAfterClickable", "iconBeforeAction", "iconAfterAction", "disabled", "ariaLabel", "value", "isFullText", "rows", "minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["valueChange", "iconBeforeClick", "iconAfterClick", "fieldFocus", "fieldBlur"] }] }); }
|
|
4437
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PostTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4438
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: PostTabComponent, isStandalone: true, selector: "lib-post-tab", inputs: { type: "type", icon: "icon", text: "text", showText: "showText", action: "action", disabled: "disabled", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div \n class=\"post-tab\" \n [ngClass]=\"{\n 'post-tab--disabled': disabled,\n 'post-tab--active': action && !disabled,\n 'post-tab--inactive': !action && !disabled,\n 'post-tab--icon-only': !showText\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"post-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText && showText) {\n <span class=\"post-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.post-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:0 .25rem .25rem 0;transition:background-color .2s ease;margin-right:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.post-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.post-tab--disabled .post-tab__icon{color:#676767}.post-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.post-tab--inactive .post-tab__icon{color:#00245d}.post-tab--active{background:#0047ba;color:#fff;cursor:pointer}.post-tab--active:hover{background:#003995}.post-tab--active .post-tab__icon{color:#fff}.post-tab--icon-only{padding:.25rem .5rem}.post-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.post-tab__text{flex:none;white-space:nowrap;display:none}.post-tab:not(.post-tab--icon-only) .post-tab__text{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
4371
4439
|
}
|
|
4372
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
4440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PostTabComponent, decorators: [{
|
|
4373
4441
|
type: Component,
|
|
4374
|
-
args: [{ selector: 'lib-
|
|
4375
|
-
|
|
4376
|
-
provide: NG_VALUE_ACCESSOR,
|
|
4377
|
-
useExisting: forwardRef(() => DropdownComponent),
|
|
4378
|
-
multi: true,
|
|
4379
|
-
},
|
|
4380
|
-
], template: "<div class=\"dropdown-wrapper\">\n @if (label) {\n <lib-label\n [for]=\"inputId\"\n [text]=\"label\"\n [type]=\"labelType\"\n [showHelpIcon]=\"showHelpIcon\"\n [subtext]=\"subtext\"\n (helpIconClick)=\"onHelpIconClick()\"\n ></lib-label>\n }\n\n <div\n class=\"dropdown-field-container\"\n [ngClass]=\"'dropdown-' + state\"\n >\n <div class=\"dropdown-field-wrapper\" (click)=\"toggleDropdown()\">\n <lib-field\n #dropdownInput\n [inputId]=\"inputId\"\n [placeholder]=\"placeholder\"\n [value]=\"displayText\"\n [disabled]=\"disabled\"\n [state]=\"state\"\n [ariaLabel]=\"ariaLabel ? ariaLabel : label\"\n [iconAfter]=\"isOpen ? 'expand_less' : 'expand_more'\"\n [attr.readonly]=\"!searchable\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n >\n </lib-field>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-menu\">\n <div class=\"dropdown-menu-items\" #dropdownMenuItems>\n @if (filteredOptions.length === 0) {\n <div class=\"dropdown-menu-item no-results\">No results found</div>\n }\n @for (option of filteredOptions; track option.value; let i = $index) {\n <div\n class=\"dropdown-menu-item\"\n [ngClass]=\"{\n selected: option.value === value,\n highlighted: i === selectedIndex,\n disabled: option.disabled\n }\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.dropdown-wrapper{display:flex;flex-direction:column;align-items:flex-start;padding:0;gap:.5rem;width:100%}.dropdown-field-container{position:relative;width:100%}.dropdown-field-container .dropdown-field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field{cursor:pointer;pointer-events:none}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper{cursor:pointer}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input{cursor:pointer;pointer-events:auto}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .field-input:not([readonly]){cursor:text}.dropdown-field-container .dropdown-field-wrapper lib-field ::ng-deep .field-wrapper .icon-after{pointer-events:none}.dropdown-field-container .dropdown-menu{position:absolute;top:100%;left:0;width:100%;max-height:15rem;background:#fff;border:1px solid #d0d0d0;border-radius:0 0 .25rem .25rem;z-index:1000;overflow:hidden;box-shadow:0 2px 8px #0000001a}.dropdown-field-container .dropdown-menu .dropdown-menu-items{max-height:15rem;overflow-y:auto;overflow-x:hidden}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar{width:.5625rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-track{background:#fff}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb{background:#8f8f8f;border-radius:16rem}.dropdown-field-container .dropdown-menu .dropdown-menu-items::-webkit-scrollbar-thumb:hover{background:#676767}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item{display:flex;flex-direction:row;align-items:flex-end;padding:.5rem 1rem;gap:.5rem;color:#141414;cursor:pointer;transition:background-color .2s ease}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item:hover:not(.disabled):not(.no-results){background:#f9f9f9}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.selected{background:#ccdaf1;font-weight:600}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.highlighted.selected:not(.disabled):not(.no-results){background:#e5edf8}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.disabled{color:#676767;cursor:not-allowed;opacity:.6}.dropdown-field-container .dropdown-menu .dropdown-menu-items .dropdown-menu-item.no-results{color:#676767;cursor:default;font-style:italic}\n"] }]
|
|
4381
|
-
}], propDecorators: { label: [{
|
|
4382
|
-
type: Input
|
|
4383
|
-
}], inputId: [{
|
|
4384
|
-
type: Input
|
|
4385
|
-
}], labelType: [{
|
|
4386
|
-
type: Input
|
|
4387
|
-
}], showHelpIcon: [{
|
|
4442
|
+
args: [{ selector: 'lib-post-tab', standalone: true, imports: [CommonModule], template: "<div \n class=\"post-tab\" \n [ngClass]=\"{\n 'post-tab--disabled': disabled,\n 'post-tab--active': action && !disabled,\n 'post-tab--inactive': !action && !disabled,\n 'post-tab--icon-only': !showText\n }\"\n [attr.aria-label]=\"computedAriaLabel\"\n role=\"presentation\"\n>\n @if (displayIcon) {\n <span class=\"post-tab__icon material-symbols-outlined\" aria-hidden=\"true\">\n {{ displayIcon }}\n </span>\n }\n @if (displayText && showText) {\n <span class=\"post-tab__text\">{{ displayText }}</span>\n }\n</div>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.post-tab{display:flex;flex-direction:row;align-items:center;gap:.5rem;border-radius:0 .25rem .25rem 0;transition:background-color .2s ease;margin-right:-.75rem;margin-top:-.25rem;margin-bottom:-.25rem;padding:.25rem .5rem}.post-tab--disabled{background:#e7e7e7;color:#676767;cursor:not-allowed}.post-tab--disabled .post-tab__icon{color:#676767}.post-tab--inactive{background:#e7e7e7;color:#00245d;cursor:default}.post-tab--inactive .post-tab__icon{color:#00245d}.post-tab--active{background:#0047ba;color:#fff;cursor:pointer}.post-tab--active:hover{background:#003995}.post-tab--active .post-tab__icon{color:#fff}.post-tab--icon-only{padding:.25rem .5rem}.post-tab__icon{width:1.5rem;height:1.5rem;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.post-tab__text{flex:none;white-space:nowrap;display:none}.post-tab:not(.post-tab--icon-only) .post-tab__text{display:block}\n"] }]
|
|
4443
|
+
}], propDecorators: { type: [{
|
|
4388
4444
|
type: Input
|
|
4389
|
-
}],
|
|
4445
|
+
}], icon: [{
|
|
4390
4446
|
type: Input
|
|
4391
|
-
}],
|
|
4447
|
+
}], text: [{
|
|
4392
4448
|
type: Input
|
|
4393
|
-
}],
|
|
4449
|
+
}], showText: [{
|
|
4394
4450
|
type: Input
|
|
4395
|
-
}],
|
|
4451
|
+
}], action: [{
|
|
4396
4452
|
type: Input
|
|
4397
4453
|
}], disabled: [{
|
|
4398
4454
|
type: Input
|
|
4399
4455
|
}], ariaLabel: [{
|
|
4400
4456
|
type: Input
|
|
4401
|
-
}], searchable: [{
|
|
4402
|
-
type: Input
|
|
4403
|
-
}], valueChange: [{
|
|
4404
|
-
type: Output
|
|
4405
|
-
}], helpIconClick: [{
|
|
4406
|
-
type: Output
|
|
4407
|
-
}], dropdownInput: [{
|
|
4408
|
-
type: ViewChild,
|
|
4409
|
-
args: ['dropdownInput']
|
|
4410
|
-
}], dropdownMenuItems: [{
|
|
4411
|
-
type: ViewChild,
|
|
4412
|
-
args: ['dropdownMenuItems']
|
|
4413
|
-
}], onDocumentClick: [{
|
|
4414
|
-
type: HostListener,
|
|
4415
|
-
args: ['document:click', ['$event']]
|
|
4416
4457
|
}] } });
|
|
4417
4458
|
|
|
4418
4459
|
/*
|