@byuhbll/components 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,3 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNjb3BlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvbW9kZWxzL3NlYXJjaC1zY29wZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU2VhcmNoU2NvcGUgPSAnbG9jYWwnIHwgJ2V4dGVybmFsJztcbiJdfQ==
1
+ const searchScopeValues = ['local', 'external'];
2
+ export const isSearchScope = (scope) => searchScopeValues.includes(scope);
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNjb3BlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvbW9kZWxzL3NlYXJjaC1zY29wZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBd0IsRUFBRSxDQUNqRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2VhcmNoU2NvcGVWYWx1ZXMgPSBbJ2xvY2FsJywgJ2V4dGVybmFsJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTZWFyY2hTY29wZSA9ICh0eXBlb2Ygc2VhcmNoU2NvcGVWYWx1ZXMpW251bWJlcl07XG5leHBvcnQgY29uc3QgaXNTZWFyY2hTY29wZSA9IChzY29wZTogc3RyaW5nKTogc2NvcGUgaXMgU2VhcmNoU2NvcGUgPT5cbiAgICBzZWFyY2hTY29wZVZhbHVlcy5pbmNsdWRlcyhzY29wZSBhcyBTZWFyY2hTY29wZSk7XG4iXX0=
@@ -3,5 +3,7 @@
3
3
  */
4
4
  export * from './lib/hbll-header/hbll-header.component';
5
5
  export * from './lib/ss-search-bar/ss-search-bar.component';
6
+ export { isAdvancedSearchExternalFieldOption, isAdvancedSearchFieldOption, isAdvancedSearchLocalFieldOption, } from './lib/ss-search-bar/models/advanced-search.model';
7
+ export * from './lib/ss-search-bar/models/search-scope.model';
6
8
  export { ADVANCED_SEARCH_QUALIFIER_MAP, ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, } from './lib/ss-search-bar/constants';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsT0FBTyxFQUNILDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIsdUJBQXVCLEdBQzFCLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9oYmxsLWhlYWRlci9oYmxsLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9zcy1zZWFyY2gtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQge1xuICAgIEFEVkFOQ0VEX1NFQVJDSF9RVUFMSUZJRVJfTUFQLFxuICAgIEFEVkFOQ0VEX1NFQVJDSF9GSUVMRF9NQVAsXG4gICAgQURWQU5DRURfU0VBUkNIX09QVElPTlMsXG59IGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvY29uc3RhbnRzJztcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsT0FBTyxFQUNILG1DQUFtQyxFQUNuQywyQkFBMkIsRUFDM0IsZ0NBQWdDLEdBQ25DLE1BQU0sa0RBQWtELENBQUM7QUFDMUQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6Qix1QkFBdUIsR0FDMUIsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL3NzLXNlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gICAgaXNBZHZhbmNlZFNlYXJjaEV4dGVybmFsRmllbGRPcHRpb24sXG4gICAgaXNBZHZhbmNlZFNlYXJjaEZpZWxkT3B0aW9uLFxuICAgIGlzQWR2YW5jZWRTZWFyY2hMb2NhbEZpZWxkT3B0aW9uLFxufSBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL21vZGVscy9hZHZhbmNlZC1zZWFyY2gubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9tb2RlbHMvc2VhcmNoLXNjb3BlLm1vZGVsJztcbmV4cG9ydCB7XG4gICAgQURWQU5DRURfU0VBUkNIX1FVQUxJRklFUl9NQVAsXG4gICAgQURWQU5DRURfU0VBUkNIX0ZJRUxEX01BUCxcbiAgICBBRFZBTkNFRF9TRUFSQ0hfT1BUSU9OUyxcbn0gZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9jb25zdGFudHMnO1xuIl19
@@ -1031,6 +1031,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
1031
1031
  args: ['barWrapperRef']
1032
1032
  }] } });
1033
1033
 
1034
+ const searchScopeValues = ['local', 'external'];
1035
+ const isSearchScope = (scope) => searchScopeValues.includes(scope);
1036
+
1034
1037
  /*
1035
1038
  * Public API Surface of components
1036
1039
  */
@@ -1039,5 +1042,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
1039
1042
  * Generated bundle index. Do not edit.
1040
1043
  */
1041
1044
 
1042
- export { ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, ADVANCED_SEARCH_QUALIFIER_MAP, HbllHeaderComponent, LibraryHoursDatePipe, SsSearchBarComponent };
1045
+ export { ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, ADVANCED_SEARCH_QUALIFIER_MAP, HbllHeaderComponent, LibraryHoursDatePipe, SsSearchBarComponent, isAdvancedSearchExternalFieldOption, isAdvancedSearchFieldOption, isAdvancedSearchLocalFieldOption, isSearchScope };
1043
1046
  //# sourceMappingURL=byuhbll-components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"byuhbll-components.mjs","sources":["../../../projects/components/src/lib/hbll-header/hbll-header.component.ts","../../../projects/components/src/lib/hbll-header/hbll-header.component.html","../../../projects/components/src/lib/ss-search-bar/constants.ts","../../../projects/components/src/lib/ss-search-bar/models/advanced-search.model.ts","../../../projects/components/src/lib/ss-search-bar/pipes/field-by-scope.pipe.ts","../../../projects/components/src/lib/ss-search-bar/pipes/advanced-queries.pipe.ts","../../../projects/components/src/lib/animations/animations.ts","../../../projects/components/src/lib/ss-search-bar/utils.ts","../../../projects/components/src/lib/hbll-multi-select/hbll-multi-select.component.ts","../../../projects/components/src/lib/hbll-multi-select/hbll-multi-select.component.html","../../../projects/components/src/lib/hbll-checkbox/hbll-checkbox.component.ts","../../../projects/components/src/lib/hbll-checkbox/hbll-checkbox.component.html","../../../projects/components/src/lib/directives/hbll-pill-btn/hbll-pill-btn.directive.ts","../../../projects/components/src/lib/ss-search-bar/date-range/date-range.component.ts","../../../projects/components/src/lib/ss-search-bar/date-range/date-range.component.html","../../../projects/components/src/lib/ss-search-bar/advanced-search/advanced-search.component.ts","../../../projects/components/src/lib/ss-search-bar/advanced-search/advanced-search.component.html","../../../projects/components/src/lib/ss-search-bar/simple-search/simple-search.component.ts","../../../projects/components/src/lib/ss-search-bar/simple-search/simple-search.component.html","../../../projects/components/src/lib/ss-search-bar/pipes/advanced-field-warning.pipe.ts","../../../projects/components/src/lib/ss-search-bar/ss-search-bar.component.ts","../../../projects/components/src/lib/ss-search-bar/ss-search-bar.component.html","../../../projects/components/src/public-api.ts","../../../projects/components/src/byuhbll-components.ts"],"sourcesContent":["import { DatePipe, LowerCasePipe } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { HttpClient } from '@angular/common/http';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Output,\n Pipe,\n PipeTransform,\n Renderer2,\n computed,\n inject,\n input,\n viewChild,\n} from '@angular/core';\n\nconst LIBRARY_HOURS_API_URL = 'https://apps.lib.byu.edu/libraryhours/api/hours';\n\ninterface LibraryHours {\n date: string;\n is_closed: boolean;\n open_time: string;\n close_time: string;\n has_exception: boolean;\n exception_title: string;\n exception_message: string;\n is_currently_open: boolean;\n}\n\n@Pipe({\n name: 'libraryHoursDate',\n standalone: true,\n})\nexport class LibraryHoursDatePipe implements PipeTransform {\n transform(date: string, time: string): Date {\n return new Date(date + 'T' + time);\n }\n}\n\n/**\n * Header component built to be exported as a custom element.\n * This component uses icons provided by Google Material.\n * The link to these icons should be included once in the \\<head> of your base html.\n *\n * When a non-empty string `name` is provided to this component, the user is considered logged in.\n * Two outputs/events are accessible: `login` and `logout`.\n */\n@Component({\n selector: 'lib-hbll-header',\n standalone: true,\n imports: [DatePipe, LowerCasePipe, LibraryHoursDatePipe],\n templateUrl: './hbll-header.component.html',\n styleUrl: './hbll-header.component.scss',\n})\nexport class HbllHeaderComponent implements AfterViewInit {\n private readonly r2 = inject(Renderer2);\n private readonly http = inject(HttpClient);\n\n // --- API ---\n protected name = input<string>('');\n @Output() login = new EventEmitter<void>();\n @Output() logout = new EventEmitter<void>();\n // -----------\n\n private accountInfoEl = viewChild<ElementRef>('accountInfo');\n\n protected isLoggedIn = computed(() => !!this.name());\n protected libraryHours = toSignal(this.http.get<LibraryHours>(LIBRARY_HOURS_API_URL));\n protected showAccountDropdown = false;\n\n ngAfterViewInit(): void {\n this.r2.listen('window', 'click', (e: Event) => {\n if (!this.accountInfoEl()?.nativeElement.contains(e.target))\n this.showAccountDropdown = false;\n });\n }\n}\n","<header role=\"banner\" class=\"wrapper\">\n <h1>\n <a href=\"https://lib.byu.edu/\">\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/byu-library-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </a>\n </h1>\n <div id=\"libraryInfo\" class=\"wrapper\">\n @if (libraryHours()) {\n <div id=\"libraryHours\">\n <div class=\"wrapper\">\n <span class=\"material-symbols-outlined left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? \"CLOSED\"\n : \"Today's hours: \" +\n (libraryHours()!.date\n | libraryHoursDate : libraryHours()!.open_time\n | date : \"ha\"\n | lowercase) +\n \" - \" +\n (libraryHours()!.date\n | libraryHoursDate : libraryHours()!.close_time\n | date : \"ha\"\n | lowercase)\n }}\n </div>\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"\n isLoggedIn()\n ? (showAccountDropdown = !showAccountDropdown)\n : login.emit()\n \"\n class=\"wrapper\"\n id=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined left-icon\"> person </span>\n {{ isLoggedIn() ? name : \"Login\" }}\n @if (isLoggedIn()) {\n <span class=\"material-symbols-outlined\"> arrow_drop_down </span>\n }\n </button>\n @if (isLoggedIn() && showAccountDropdown) {\n <div id=\"accountDropdown\">\n <a class=\"item\">My Account</a>\n <a class=\"item\">Preferences</a>\n <button class=\"item\" (click)=\"logout.emit()\">Logout</button>\n </div>\n }\n </div>\n </div>\n</header>\n<nav></nav>\n","export const ADVANCED_SEARCH_QUALIFIER_MAP = {\n contains: 'contains',\n begins_with: 'begins with',\n exact: 'is (exact)',\n index: 'browse value',\n subject_lc: 'LC browse',\n subject_expanded: 'expanded browse',\n};\n\nexport const ADVANCED_SEARCH_FIELD_MAP = {\n abstract: 'Abstract',\n any: 'Any Field',\n callNumber: 'Call Number',\n contributor: 'Contributor',\n creator: 'Author/Creator',\n genre: 'Genre',\n isbn: 'ISBN',\n issn: 'ISSN',\n series: 'Series',\n source: 'Source',\n subject: 'Subject',\n title: 'Title',\n};\n\nexport const ADVANCED_SEARCH_QUERIES_LIMIT = 12;\n\nexport const ADVANCED_SEARCH_OPTIONS = {\n boolean: ['AND', 'OR', 'NOT'],\n // In SS-api, the EDS key for all fields is `allText`, however this is the default and is never used in the URL, so we omit it here.\n fields: ['any', 'title', 'creator', 'subject', 'issn', 'isbn'],\n localFields: ['callNumber', 'contributor', 'genre', 'series'],\n externalFields: ['source', 'abstract'],\n qualifiers: {\n any: ['contains'],\n title: ['contains', 'exact', 'begins_with', 'index'],\n callNumber: ['contains', 'exact', 'begins_with', 'index'],\n creator: ['contains', 'exact', 'begins_with', 'index'],\n contributor: ['contains', 'exact'],\n isbn: ['contains', 'exact'],\n issn: ['contains', 'exact'],\n genre: ['contains', 'exact'],\n subject: ['contains', 'exact', 'subject_lc', 'subject_expanded'],\n series: ['contains', 'exact'],\n },\n resultsPerPage: ['10', '20', '50', '100'],\n languages: {\n eng: 'English',\n ara: 'Arabic',\n chi: 'Chinese',\n ces: 'Czech',\n dan: 'Danish',\n dut: 'Dutch',\n fin: 'Finnish',\n fre: 'French',\n ger: 'German',\n gre: 'Greek, Modern',\n heb: 'Hebrew',\n hin: 'Hindi',\n hun: 'Hungarian',\n ice: 'Icelandic',\n ita: 'Italian',\n jpn: 'Japanese',\n kor: 'Korean',\n lat: 'Latin',\n nor: 'Norwegian',\n pol: 'Polish',\n por: 'Portuguese',\n pan: 'Punjabi',\n rum: 'Romanian',\n rus: 'Russian',\n spa: 'Spanish',\n swe: 'Swedish',\n wel: 'Welsh',\n yid: 'Yiddish',\n },\n} as const;\n\nexport const PRIMARY_BLUE = 'rgba(63, 112, 176, 1)';\nexport const PRIMARY_BLUE_HOVER = 'hsl(214, 48%, 60%, 1)';\nexport const PRIMARY_LIGHT_BLUE = 'rgba(223, 233, 247, 1)';\nexport const PRIMARY_PURPLE = '#8772A6';\nexport const PRIMARY_PURPLE_HOVER = '#7C659F';\nexport const DESTRUCTIVE_RED = 'hsl(5, 47%, 47%, 1)';\nexport const DESTRUCTIVE_RED_HOVER = 'hsl(5, 47%, 50%, 1)';\nexport const SECONDARY_TEXT_GRAY = 'rgba(112, 112, 112, 1)';\nexport const LIGHT_GRAY = 'rgba(230, 230, 230, 1)';\nexport const DROP_SHADOW_DARK_BLUE = 'rgba(51, 62, 77, 0.16)';\nexport const TEXT_SEMIBOLD = '600';\nexport const TEXT_BOLD = '700';\nexport const ANIMATION_LENGTH_STD = '0.15s';\nexport const LINE_HEIGHT_STD = '1.4';\nexport const CONTEXTUAL_SELECTOR_HEIGHT = '4.5rem';\nexport const CONTENT_MAX_WIDTH = '75rem';\nexport const CONTENT_PADDING = '5.4rem';\n","import { ADVANCED_SEARCH_OPTIONS } from '../constants';\n\nexport type AdvancedSearchBooleanOption = (typeof ADVANCED_SEARCH_OPTIONS.boolean)[number];\n\nexport type AdvancedSearchFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.fields)[number];\n\nexport const isAdvancedSearchFieldOption = (\n field: string,\n): field is AdvancedSearchLocalFieldOption =>\n [...ADVANCED_SEARCH_OPTIONS.fields].includes(field as AdvancedSearchFieldOption);\n\nexport type AdvancedSearchLocalFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.localFields)[number];\n\nexport const isAdvancedSearchLocalFieldOption = (\n field: string,\n): field is AdvancedSearchLocalFieldOption =>\n ADVANCED_SEARCH_OPTIONS.localFields.includes(field as AdvancedSearchLocalFieldOption);\n\nexport type AdvancedSearchExternalFieldOption =\n (typeof ADVANCED_SEARCH_OPTIONS.externalFields)[number];\n\nexport const isAdvancedSearchExternalFieldOption = (\n field: string,\n): field is AdvancedSearchExternalFieldOption =>\n ADVANCED_SEARCH_OPTIONS.externalFields.includes(field as AdvancedSearchExternalFieldOption);\n\nexport type AdvancedSearchQualifierOption =\n (typeof ADVANCED_SEARCH_OPTIONS.qualifiers)[keyof typeof ADVANCED_SEARCH_OPTIONS.qualifiers][number];\n\nexport type AdvancedSearchResultsPerPageOption =\n (typeof ADVANCED_SEARCH_OPTIONS.resultsPerPage)[number];\n\nexport type AdvancedSearchLanguageOption = (keyof typeof ADVANCED_SEARCH_OPTIONS.languages)[number];\n\nexport type AdvancedSearchQualifier = keyof typeof ADVANCED_SEARCH_OPTIONS.qualifiers;\n\nexport interface AdvancedSearchQueryRow {\n boolean?: AdvancedSearchBooleanOption;\n field?:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption;\n qualifier?: AdvancedSearchQualifierOption;\n query: string;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n AdvancedSearchExternalFieldOption,\n AdvancedSearchFieldOption,\n AdvancedSearchLocalFieldOption,\n isAdvancedSearchExternalFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n} from '../models/advanced-search.model';\nimport { ADVANCED_SEARCH_OPTIONS } from '../constants';\nimport { SearchScope } from '../models/search-scope.model';\n\n/**\n * Returns the field value based on the scope. If a field value does not exist in a specific scope, the default is returned.\n */\n@Pipe({\n name: 'fieldByScope',\n standalone: true,\n})\nexport class FieldByScopePipe implements PipeTransform {\n transform(\n fieldValue:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption,\n scope: SearchScope,\n ):\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption {\n if (\n isAdvancedSearchFieldOption(fieldValue) ||\n (scope === 'local'\n ? isAdvancedSearchLocalFieldOption(fieldValue)\n : isAdvancedSearchExternalFieldOption(fieldValue))\n )\n return fieldValue;\n return ADVANCED_SEARCH_OPTIONS.fields[0];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n ADVANCED_SEARCH_QUALIFIER_MAP,\n} from '../constants';\nimport {\n AdvancedSearchExternalFieldOption,\n AdvancedSearchFieldOption,\n AdvancedSearchLocalFieldOption,\n AdvancedSearchQueryRow,\n isAdvancedSearchExternalFieldOption,\n} from '../models/advanced-search.model';\nimport { SearchScope } from '../models/search-scope.model';\nimport { FieldByScopePipe } from './field-by-scope.pipe';\n\n@Pipe({\n name: 'ssAdvancedQueries',\n standalone: true,\n})\nexport class SsAdvancedQueriesPipe implements PipeTransform {\n constructor(private fieldByScopePipe: FieldByScopePipe) {}\n transform(queryRows: AdvancedSearchQueryRow[], scope: SearchScope): string {\n return queryRows\n .map((row, i) => {\n const b = i !== 0 ? row.boolean || ADVANCED_SEARCH_OPTIONS.boolean[0] : '';\n const f:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption = this.fieldByScopePipe.transform(\n row.field ?? ADVANCED_SEARCH_OPTIONS.fields[0],\n scope,\n );\n const o = isAdvancedSearchExternalFieldOption(f)\n ? 'contains'\n : row.qualifier ??\n ADVANCED_SEARCH_OPTIONS.qualifiers[\n f as AdvancedSearchFieldOption | AdvancedSearchLocalFieldOption\n ][0];\n return `${b ? b + ' ' : ''}${\n ADVANCED_SEARCH_FIELD_MAP[f]\n } ${ADVANCED_SEARCH_QUALIFIER_MAP[o as keyof typeof ADVANCED_SEARCH_QUALIFIER_MAP]} <b>${row.query}</b>`;\n })\n .join(' ');\n }\n}\n","import {\n trigger,\n transition,\n animate,\n style,\n group,\n query,\n animateChild,\n} from '@angular/animations';\n\nexport const libHbllExpandCollapse = trigger('libHbllExpandCollapse', [\n transition('void <=> *', []),\n transition(\n '* <=> *',\n [\n group([\n style({ height: '{{startHeight}}px' }),\n query('@*', [animateChild()], { optional: true }),\n animate('.15s ease-in-out'),\n ]),\n ],\n { params: { startHeight: '0px' } },\n ),\n]);\n\nexport const libHbllFadeInOut = trigger('libHbllFadeInOut', [\n transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),\n transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),\n]);\n\nexport const libHbllFadeIn = trigger('libHbllFadeIn', [\n transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),\n]);\n\nexport const libHbllFadeOut = trigger('libHbllFadeOut', [\n transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),\n]);\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Validator method to check if a `FormGroup<{ from: FormControl<string>; to: FormControl<string> }>` is valid.\n * The FormGroup is considered valid if either both `from` and `to` are set, or both are empty strings.\n * @returns {ValidationErrors | null} validation errors, if any\n */\nexport const validateDateRangeFields = (): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const from: string = control.get('from')?.value;\n const to: string = control.get('to')?.value;\n // Valid if both fields are set or both are empty.\n if ((!from && !to) || (from && to)) return null;\n return from ? { toInvalid: true } : { fromInvalid: true };\n };\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'lib-hbll-multi-select',\n standalone: true,\n imports: [\n CommonModule,\n MatChipsModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatIconModule,\n ],\n // Necessary to override material design styles.\n // IMPORTANT: Tightly scope classes and ids to this component if they are necessary.\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './hbll-multi-select.component.html',\n styleUrls: ['./hbll-multi-select.component.scss'],\n})\nexport class HbllMultiSelectComponent {\n @ViewChild('input') private inputRef!: ElementRef<HTMLInputElement>;\n @Input() allOptions: Record<string, string> = {};\n @Input() label = '';\n /**\n * An array that indicates which keys are selected.\n */\n @Input() selectedKeys: string[] = [];\n /**\n * An EventEmitter that emits an array of keys indicating which options are currently selected.\n */\n @Output() selectedKeysChange = new EventEmitter<string[]>();\n\n protected inputControl = new FormControl('');\n protected filteredOptions$: Observable<string[]> = combineLatest([\n this.inputControl.valueChanges.pipe(startWith('')),\n this.selectedKeysChange.asObservable().pipe(startWith([])),\n ]).pipe(\n map(([key]: [string | null, unknown]) =>\n // Display filtered options if there is a value, else display all options currently not selected.\n key\n ? this.filterOptions(key)\n : Object.keys(this.allOptions).filter(\n (key) => !this.selectedKeys.find((selectedOption) => key === selectedOption),\n ),\n ),\n );\n protected separatorKeysCodes: number[] = [ENTER, COMMA];\n\n /**\n * Adds a key from the input to the array of selected key.\n * The value from the input must match a key from the record of all options.\n * @param {MatChipInputEvent} event MatChipInputEvent\n */\n protected addOption(event: MatChipInputEvent): void {\n this.addOptionToSelectedOptions(event.value);\n }\n\n /**\n * Removes a key from the array of selected options and emits the new selected keys.\n * @param {MultiSelectKeyValPair} key key to remove\n */\n protected removeOption(key: string): void {\n const index = this.selectedKeys.indexOf(key);\n if (index >= 0) {\n this.selectedKeys.splice(index, 1);\n this.selectedKeysChange.emit(this.selectedKeys);\n }\n }\n\n /**\n * Adds an option to the array of selected keys when a user selects from the autocomplete.\n * @param {MatAutocompleteSelectedEvent} event MatAutocompleteSelectedEvent\n */\n protected selectOption = (event: MatAutocompleteSelectedEvent): void => {\n this.addOptionToSelectedOptions(event.option.value);\n };\n\n /**\n * Filters the options by the supplied key as well as the currently selected key.\n * @param {string} key key to filter by.\n * @returns {string[]} the filtered keys\n */\n private filterOptions = (newKey: string): string[] => {\n return Object.keys(this.allOptions).filter(\n (key: string) => this.allOptions[key] !== newKey && !this.selectedKeys.includes(key),\n );\n };\n\n /**\n * Adds a key to the selected keys array if the option is truthy and not already in the array.\n * The input is also cleared (if available), and the new selected keys are emitted.\n * @param {key} option key to add\n */\n private addOptionToSelectedOptions = (key: string): void => {\n if (key && !this.selectedKeys.includes(key) && this.allOptions[key]) {\n this.selectedKeys.push(key);\n this.inputControl.setValue('');\n this.selectedKeysChange.emit(this.selectedKeys);\n if (this.inputRef) this.inputRef.nativeElement.value = '';\n }\n };\n}\n","<div class=\"hbll-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 <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 icon\"> cancel </span>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <label class=\"hidden\" for=\"input\">{{ label }}</label>\n <input\n [placeholder]=\"label | titlecase\"\n #input\n id=\"input\"\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","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-hbll-checkbox',\n templateUrl: './hbll-checkbox.component.html',\n styleUrls: ['./hbll-checkbox.component.scss'],\n standalone: true,\n imports: [CommonModule],\n})\nexport class HbllCheckboxComponent {\n @Input() isChecked = false;\n}\n","<span class=\"checkbox-container\" [class.checked]=\"isChecked\">\n @if (isChecked) {\n <span class=\"material-symbols-outlined icon\"> check </span>\n }\n</span>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n inject,\n type OnChanges,\n type OnInit,\n} from '@angular/core';\nimport {\n ANIMATION_LENGTH_STD,\n DESTRUCTIVE_RED,\n DESTRUCTIVE_RED_HOVER,\n LIGHT_GRAY,\n PRIMARY_BLUE,\n PRIMARY_BLUE_HOVER,\n PRIMARY_PURPLE,\n PRIMARY_PURPLE_HOVER,\n SECONDARY_TEXT_GRAY,\n TEXT_SEMIBOLD,\n} from '../../ss-search-bar/constants';\n\nconst BG_COLORS = {\n blue: PRIMARY_BLUE,\n purple: PRIMARY_PURPLE,\n};\n\nconst BG_COLORS_HOVER = {\n blue: PRIMARY_BLUE_HOVER,\n purple: PRIMARY_PURPLE_HOVER,\n};\n\n@Directive({\n selector: '[libHbllPillBtn]',\n standalone: true,\n})\nexport class HbllPillBtnDirective implements OnInit, OnChanges {\n private readonly el = inject(ElementRef);\n @Input() isDestructiveStyle = false;\n @Input() isDisabled = false;\n @Input() isFullWidth = false;\n @Input() color: 'blue' | 'purple' = 'purple';\n\n @HostListener('mouseenter') onMouseEnter() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS_HOVER[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED_HOVER;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n @HostListener('click') onClick() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n ngOnInit() {\n this.setupButton();\n }\n\n ngOnChanges() {\n this.setupButton();\n }\n\n setupButton() {\n if (this.isDisabled) {\n this.el.nativeElement.style.color = SECONDARY_TEXT_GRAY;\n this.el.nativeElement.style.backgroundColor = LIGHT_GRAY;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n this.el.nativeElement.style.color = 'white';\n }\n this.el.nativeElement.style.transition = 'all ' + ANIMATION_LENGTH_STD;\n this.el.nativeElement.style.fontSize = '1em';\n this.el.nativeElement.style.fontWeight = TEXT_SEMIBOLD;\n this.el.nativeElement.style.textAlign = 'center';\n this.el.nativeElement.style.display = this.isFullWidth ? 'flex' : 'inline-flex';\n this.el.nativeElement.style.justifyContent = 'center';\n this.el.nativeElement.style.alignItems = 'center';\n this.el.nativeElement.style.width = this.isFullWidth ? '100%' : 'auto';\n this.el.nativeElement.style.borderRadius = '100em';\n this.el.nativeElement.style.padding = '0.4em 1.3em';\n this.el.nativeElement.style.boxSizing = 'border-box';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { libHbllFadeInOut } from '../../animations/animations';\nimport { validateDateRangeFields } from '../utils';\n\n@Component({\n selector: 'lib-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule],\n animations: [libHbllFadeInOut],\n})\nexport class DateRangeComponent {\n private readonly fb = inject(NonNullableFormBuilder);\n /**\n * Emits `{ from: string, to: string }` object if both values are set to a valid or empty state by the user.\n */\n @Output() validDateChange = new EventEmitter<{ from: string; to: string }>();\n @Output() fromChange = new EventEmitter<string>();\n @Output() toChange = new EventEmitter<string>();\n protected dateForm = this.fb.group(\n {\n from: ['', [Validators.pattern('^[0-9]{4}$')]],\n to: ['', [Validators.pattern('^[0-9]{4}$')]],\n },\n { validators: validateDateRangeFields() },\n );\n @Input() set from(from: string) {\n if (from !== this.dateForm.controls.from.value) this.dateForm.controls.from.setValue(from);\n }\n @Input() set to(to: string) {\n if (to !== this.dateForm.controls.to.value) this.dateForm.controls.to.setValue(to);\n }\n protected onFromChange = () => {\n this.onInputChange();\n this.fromChange.emit(this.dateForm.controls.from.value);\n };\n protected onToChange = () => {\n this.onInputChange();\n this.toChange.emit(this.dateForm.controls.to.value);\n };\n\n private onInputChange = () => {\n let from = this.dateForm.controls.from.value;\n let to = this.dateForm.controls.to.value;\n if (from && to && this.dateForm.controls.from.valid && this.dateForm.controls.to.valid) {\n // Ensure 'to' contains the larger year. Swap if necessary.\n if (parseInt(from) > parseInt(to)) {\n const swap = from;\n from = to;\n to = swap;\n }\n this.validDateChange.emit({ from, to });\n } else if (!from && !to) {\n this.validDateChange.emit({ from, to });\n }\n };\n}\n","<form id=\"from-to\" data-testid=\"from-to\" [formGroup]=\"dateForm\">\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","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n NonNullableFormBuilder,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { filter, startWith, tap } from 'rxjs/operators';\nimport {\n AdvancedSearchBooleanOption,\n AdvancedSearchLocalFieldOption,\n AdvancedSearchLanguageOption,\n AdvancedSearchQualifierOption,\n AdvancedSearchQualifier,\n AdvancedSearchExternalFieldOption,\n AdvancedSearchQueryRow,\n AdvancedSearchFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n isAdvancedSearchExternalFieldOption,\n} from '../models/advanced-search.model';\nimport { Subscription } from 'rxjs';\nimport { SearchConfig } from '../ss-search-bar.component';\nimport { validateDateRangeFields } from '../utils';\nimport { CommonModule } from '@angular/common';\nimport {\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n ADVANCED_SEARCH_QUALIFIER_MAP,\n ADVANCED_SEARCH_QUERIES_LIMIT,\n} from '../constants';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HbllMultiSelectComponent } from '../../hbll-multi-select/hbll-multi-select.component';\nimport { HbllCheckboxComponent } from '../../hbll-checkbox/hbll-checkbox.component';\nimport { HbllPillBtnDirective } from '../../directives/hbll-pill-btn/hbll-pill-btn.directive';\nimport { DateRangeComponent } from '../date-range/date-range.component';\n\ntype QueryRow = {\n boolean: FormControl<AdvancedSearchBooleanOption>;\n field: FormControl<\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption\n >;\n qualifier: FormControl<AdvancedSearchQualifierOption>;\n query: FormControl<string>;\n};\n\nconst DATE_VALIDATOR_REGEX = '^[0-9]{4}$';\n\n@Component({\n selector: 'lib-ss-advanced-search',\n standalone: true,\n templateUrl: './advanced-search.component.html',\n styleUrls: ['./advanced-search.component.scss'],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatTooltipModule,\n MatIconModule,\n HbllMultiSelectComponent,\n HbllCheckboxComponent,\n HbllPillBtnDirective,\n DateRangeComponent,\n ],\n})\nexport class AdvancedSearchComponent implements OnDestroy {\n private readonly fb = inject(NonNullableFormBuilder);\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: SearchConfig) {\n this._config = config;\n this.setupForm();\n }\n get config() {\n return this._config;\n }\n @Output() advancedSearch = new EventEmitter<SearchConfig>();\n\n // Though multiple instances exists, this represent query 1.\n @ViewChild('searchInput') private searchInput!: ElementRef;\n // The tooltip is disabled in the template.\n // It is enabled and displayed if a user searches against an empty query (simple or q1).\n // Any change to the search field disables the tooltip.\n @ViewChild(MatTooltip) private inputTooltip!: MatTooltip;\n\n private subscription = new Subscription();\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Takes a `FormGroup` and syncs up the `field` and `qualifier` values.\n * After syncing, when the `field` value changes, the `qualifier` value will update appropriately.\n */\n private syncUpFieldAndQualifier = (\n fg: FormGroup<{\n boolean: FormControl;\n field: FormControl;\n qualifier: FormControl;\n query: FormControl;\n }>,\n scope: SearchConfig['scope'],\n ) => {\n this.subscription.add(\n fg.controls.field.valueChanges\n .pipe(\n filter(() => scope === 'local'),\n tap((val: AdvancedSearchQualifier) =>\n fg.controls.qualifier.setValue(ADVANCED_SEARCH_OPTIONS.qualifiers[val][0]),\n ),\n )\n .subscribe(),\n );\n };\n\n protected advancedSearchForm = this.fb.group({\n queries: this.fb.array<FormGroup<QueryRow>>(\n [],\n [Validators.maxLength(ADVANCED_SEARCH_QUERIES_LIMIT)],\n ),\n types: [[] as string[]],\n collections: [[] as string[]],\n languages: [[] as AdvancedSearchLanguageOption[]],\n datePublished: this.fb.group(\n {\n from: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],\n to: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],\n },\n { validators: validateDateRangeFields() },\n ),\n limitResults: this.fb.group({\n peerReviewed: [false],\n }),\n expandResults: this.fb.group({\n applyRelatedWords: [false],\n applyEquivalentSubjects: [false],\n fullText: [false],\n }),\n });\n\n protected isSubmitted = false;\n protected advancedSearchOptions = ADVANCED_SEARCH_OPTIONS;\n protected advancedSearchFieldMap = ADVANCED_SEARCH_FIELD_MAP;\n protected advancedSearchQualifierMap = ADVANCED_SEARCH_QUALIFIER_MAP;\n\n get queries() {\n return this.advancedSearchForm.controls.queries;\n }\n get types() {\n return this.advancedSearchForm.controls.types;\n }\n get collections() {\n return this.advancedSearchForm.controls.collections;\n }\n get languages() {\n return this.advancedSearchForm.controls.languages;\n }\n get from() {\n return this.advancedSearchForm.controls.datePublished.controls.from;\n }\n get to() {\n return this.advancedSearchForm.controls.datePublished.controls.to;\n }\n get peerReviewed() {\n return this.advancedSearchForm.controls.limitResults.controls.peerReviewed;\n }\n get fullText() {\n return this.advancedSearchForm.controls.expandResults.controls.fullText;\n }\n get applyRelatedWords() {\n return this.advancedSearchForm.controls.expandResults.controls.applyRelatedWords;\n }\n get applyEquivalentSubjects() {\n return this.advancedSearchForm.controls.expandResults.controls.applyEquivalentSubjects;\n }\n\n /**\n * Add a query to `queries` `FormArray`. This FormGroup has an additional `boolean` control.\n */\n protected addQuery = () => {\n this.queries.push(\n this.fb.group({\n boolean: [ADVANCED_SEARCH_OPTIONS.boolean[0] as AdvancedSearchBooleanOption],\n field: [\n ADVANCED_SEARCH_OPTIONS.fields[0] as\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption,\n ],\n qualifier: [\n ADVANCED_SEARCH_OPTIONS.qualifiers[\n ADVANCED_SEARCH_OPTIONS.localFields[0]\n ][0] as AdvancedSearchQualifierOption,\n ],\n query: ['', Validators.required],\n }),\n );\n this.syncUpFieldAndQualifier(this.queries.at(-1), this.config.scope);\n };\n\n protected removeQuery = (i: number) => {\n this.queries.removeAt(i);\n };\n\n /**\n * Prepares appropriate query params before performing a local advanced search.\n */\n protected doLocalAdvancedSearch = () => {\n this.doAdvancedSearch({\n localAdvancedSearch: {\n ...this.config.localAdvancedSearch,\n selectedResourceTypes: this.types.value,\n selectedCollections: this.collections.value,\n },\n });\n };\n\n /**\n * Prepares appropriate query params before performing an external advanced search.\n */\n protected doExternalAdvancedSearch = () => {\n // Compares 'from' and 'to' to ensure 'to' is greater than / equal to 'from', swaps them if not\n const from = this.from.value\n ? parseInt(this.from.value) <= parseInt(this.to.value)\n ? this.from.value\n : this.to.value\n : '';\n // Compares 'from' and 'to' to ensure 'to' is greater than / equal to 'from', swaps them if not\n const to = this.to.value\n ? parseInt(this.to.value) >= parseInt(this.from.value)\n ? this.to.value\n : this.from.value\n : '';\n this.doAdvancedSearch({\n externalAdvancedSearch: {\n ...this.config.externalAdvancedSearch,\n datePublished: { from, to },\n selectedLanguages: this.languages.value,\n limitResults: {\n peerReviewed: this.peerReviewed.value,\n },\n expandResults: {\n applyRelatedWords: this.applyRelatedWords.value,\n applyEquivalentSubjects: this.applyEquivalentSubjects.value,\n fullText: this.fullText.value,\n },\n },\n });\n };\n\n /**\n * Verifies that there is a query to use, gathers all other query parameters needed, then performs an advanced search via `router.navigate()`.\n * @param {Record<string, string>} queryParams base set of query params to navigate with\n */\n private doAdvancedSearch = (updatedProps: Partial<SearchConfig>): void => {\n this.isSubmitted = true;\n // Don't perform a search unless there is at least one query\n if (\n this.queries.at(0).controls.query.invalid &&\n !this.queries.value.some((v) => !!v.query)\n ) {\n this.showSearchValidationToolTip();\n return;\n }\n // Don't perform a search unless the date form is valid\n if (this.advancedSearchForm.controls.datePublished.invalid) return;\n\n this.advancedSearch.emit({\n ...this.config,\n ...updatedProps,\n advancedSearchQueryRows: this.queries.value as AdvancedSearchQueryRow[],\n });\n this.isSubmitted = false;\n };\n\n private showSearchValidationToolTip = () => {\n this.searchInput.nativeElement.focus();\n this.inputTooltip.disabled = false;\n this.inputTooltip.show();\n };\n\n private setupForm = () => {\n this.queries.clear();\n // Always keep at least two queries available\n this.addQuery();\n this.addQuery();\n\n // Ensure validation tooltip closes when uses enters a query\n this.subscription.add(\n this.queries\n .at(0)\n .controls.query.valueChanges.pipe(startWith(''))\n .pipe(filter(() => !!this.inputTooltip))\n .subscribe(() => (this.inputTooltip.disabled = true)),\n );\n\n // If no `q{NUM}` use `q` for first query\n if (!this.config.advancedSearchQueryRows.length)\n this.queries.at(0).controls.query.setValue(this.config.q);\n\n this.config.advancedSearchQueryRows.forEach((queryRow, i) => {\n // Add a query form control for every q{num} key after the first.\n let queryControl = null;\n if (i === 0 || i === 1) {\n queryControl = this.queries.at(i);\n } else {\n this.addQuery();\n queryControl = this.queries.at(-1);\n }\n\n // Add the query value.\n queryControl.controls.query.setValue(queryRow.query);\n\n // Add the field value, if available.\n if (\n queryRow.field && // Only set the field if the value belongs to the current scope\n (isAdvancedSearchFieldOption(queryRow.field) ||\n (this.config.scope === 'local'\n ? isAdvancedSearchLocalFieldOption(queryRow.field)\n : isAdvancedSearchExternalFieldOption(queryRow.field)))\n )\n queryControl.controls.field.setValue(queryRow.field);\n else queryControl.controls.field.setValue(this.advancedSearchOptions.fields[0]);\n\n // Add the qualifier value, if available and a local search.\n if (this.config.scope === 'local' && queryRow.qualifier)\n queryControl.controls.qualifier.setValue(\n queryRow.qualifier ||\n this.advancedSearchOptions.qualifiers[\n queryControl.controls.field.value as\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n ],\n );\n\n // Add the boolean, if available and not the first query.\n if (i !== 0 && queryRow.boolean)\n queryControl.controls.boolean.setValue(queryRow.boolean);\n });\n if (this.config.scope === 'local') {\n this.types.setValue(this.config.localAdvancedSearch.selectedResourceTypes);\n this.collections.setValue(this.config.localAdvancedSearch.selectedCollections);\n } else {\n this.languages.setValue(\n this.config.externalAdvancedSearch\n .selectedLanguages as AdvancedSearchLanguageOption[],\n );\n this.peerReviewed.setValue(\n this.config.externalAdvancedSearch.limitResults.peerReviewed,\n );\n this.applyRelatedWords.setValue(\n this.config.externalAdvancedSearch.expandResults.applyRelatedWords,\n );\n this.applyEquivalentSubjects.setValue(\n this.config.externalAdvancedSearch.expandResults.applyEquivalentSubjects,\n );\n this.fullText.setValue(this.config.externalAdvancedSearch.expandResults.fullText);\n this.from.setValue(this.config.externalAdvancedSearch.datePublished.from);\n this.to.setValue(this.config.externalAdvancedSearch.datePublished.to);\n }\n };\n}\n","<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"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=\"adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"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=\"hidden\">Field {{ queryIndex }}</label>\n <div class=\"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=\"hidden\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"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=\"hidden\">Query {{ queryIndex }}</label>\n <div class=\"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 && queries.at(0).controls.query.invalid\"\n aria-describedby=\"invalidInputDesc\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined 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 icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"multi-select-wrapper\">\n <lib-hbll-multi-select\n [label]=\"'Resource Type'\"\n [allOptions]=\"config.localAdvancedSearch.availableResourceTypes\"\n [selectedKeys]=\"types.value\"\n (selectedKeysChange)=\"types.setValue($event)\"\n ></lib-hbll-multi-select>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"multi-select-wrapper\">\n <lib-hbll-multi-select\n [label]=\"'Collection'\"\n [allOptions]=\"config.localAdvancedSearch.availableCollections\"\n [selectedKeys]=\"collections.value\"\n (selectedKeysChange)=\"collections.setValue($event)\"\n ></lib-hbll-multi-select>\n </div>\n </div>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"checkbox-label\" for=\"peerReviewed\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-hbll-checkbox [isChecked]=\"peerReviewed.value\"></lib-hbll-checkbox>\n <span class=\"label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply related words -->\n <label class=\"checkbox-label\" for=\"applyRelatedWords\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"applyRelatedWords\"\n type=\"checkbox\"\n [formControlName]=\"'applyRelatedWords'\"\n data-testid=\"applyRelatedWords\"\n />\n <lib-hbll-checkbox [isChecked]=\"applyRelatedWords.value\"></lib-hbll-checkbox>\n <span class=\"label-text\">Apply related words</span>\n </label>\n <!-- Apply equivalent subjects -->\n <label class=\"checkbox-label\" for=\"applyEquivalentSubjects\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-hbll-checkbox\n [isChecked]=\"applyEquivalentSubjects.value\"\n ></lib-hbll-checkbox>\n <span class=\"label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"checkbox-label\" for=\"fullText\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-hbll-checkbox [isChecked]=\"fullText.value\"></lib-hbll-checkbox>\n <span class=\"label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <div id=\"dateOptions\">\n <h4>Date Published</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 <!-- Language -->\n <div>\n <h4>Language</h4>\n <lib-hbll-multi-select\n [label]=\"'language'\"\n [allOptions]=\"advancedSearchOptions.languages\"\n [selectedKeys]=\"languages.value\"\n (selectedKeysChange)=\"languages.setValue($any($event))\"\n ></lib-hbll-multi-select>\n </div>\n }\n </div>\n <div id=\"advSearchFooter\">\n <button libHbllPillBtn [color]=\"'blue'\" type=\"submit\" data-testid=\"advSearchSubmitButton\">\n Search\n </button>\n </div>\n</form>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormBuilder, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs';\nimport { startWith, filter } from 'rxjs/operators';\nimport { SearchConfig } from '../ss-search-bar.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-ss-simple-search',\n standalone: true,\n imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n})\nexport class SimpleSearchComponent implements OnInit, OnDestroy {\n private readonly fb = inject(FormBuilder);\n @ViewChild('searchInput') private searchInput!: ElementRef;\n // The tooltip is disabled in the template.\n // It is enabled and displayed if a user searches against an empty query (simple or q1).\n // Any change to the search field disables the tooltip.\n @ViewChild(MatTooltip) private inputTooltip!: MatTooltip;\n private subscription = new Subscription();\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: SearchConfig) {\n this._config = config;\n this.setupForm();\n }\n get config() {\n return this._config;\n }\n @Output() simpleSearch = new EventEmitter<SearchConfig>();\n @Output() clearSimpleSearch = new EventEmitter<void>();\n protected isSubmitted = false;\n protected searchForm = this.fb.nonNullable.group({\n simpleQuery: ['', Validators.required],\n });\n\n get simpleQuery() {\n return this.searchForm.get('simpleQuery') as FormControl;\n }\n\n ngOnInit() {\n // Ensure validation tooltip closes when uses enters a query\n this.subscription.add(\n this.simpleQuery.valueChanges\n .pipe(startWith(''))\n .pipe(filter(() => !!this.inputTooltip))\n .subscribe(() => {\n this.inputTooltip.disabled = true;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n protected emitSimpleSearch = () => {\n this.isSubmitted = true;\n // Don't perform a search unless there is a query\n if (this.simpleQuery.invalid) {\n this.showSearchValidationToolTip();\n return;\n }\n this.simpleSearch.emit({ ...this.config, q: this.simpleQuery.value });\n this.isSubmitted = false;\n };\n\n protected clearQuery = () => {\n this.simpleQuery.setValue('');\n this.clearSimpleSearch.emit();\n };\n\n private setupForm = () => {\n this.simpleQuery.setValue(\n this.config.q || this.config.advancedSearchQueryRows[0]?.query || '',\n );\n };\n\n private showSearchValidationToolTip = () => {\n this.searchInput.nativeElement.focus();\n this.inputTooltip.disabled = false;\n this.inputTooltip.show();\n };\n}\n","<div class=\"container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button type=\"submit\" aria-label=\"search\" data-testid=\"searchBtn\">\n <span class=\"material-symbols-outlined icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined icon\"> cancel </span>\n </button>\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ADVANCED_SEARCH_FIELD_MAP } from '../constants';\nimport {\n AdvancedSearchQueryRow,\n isAdvancedSearchExternalFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n} from '../models/advanced-search.model';\nimport { SearchScope } from '../models/search-scope.model';\n\n@Pipe({\n name: 'advancedFieldWarning',\n standalone: true,\n})\nexport class AdvancedFieldWarningPipe implements PipeTransform {\n transform(queryRows: AdvancedSearchQueryRow[], scope: SearchScope): string {\n let warning = '';\n queryRows.forEach((row) => {\n if (\n row.field &&\n !isAdvancedSearchFieldOption(row.field as string) &&\n (scope === 'local'\n ? !isAdvancedSearchLocalFieldOption(row.field as string)\n : !isAdvancedSearchExternalFieldOption(row.field as string))\n ) {\n if (!warning)\n warning = `Searching by <b>${\n ADVANCED_SEARCH_FIELD_MAP[row.field]\n }</b> is not an option for this tab. <b>${\n ADVANCED_SEARCH_FIELD_MAP['any']\n }</b> has replaced it.`;\n else {\n warning += '<br />All other unavailable options have also been replaced.';\n return;\n }\n }\n });\n return warning;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SsAdvancedQueriesPipe } from './pipes/advanced-queries.pipe';\nimport { libHbllExpandCollapse } from '../animations/animations';\nimport { AdvancedSearchComponent } from './advanced-search/advanced-search.component';\nimport { SimpleSearchComponent } from './simple-search/simple-search.component';\nimport { AdvancedSearchQueryRow } from './models/advanced-search.model';\nimport { SearchScope } from './models/search-scope.model';\nimport { AdvancedFieldWarningPipe } from './pipes/advanced-field-warning.pipe';\nimport { FieldByScopePipe } from './pipes/field-by-scope.pipe';\n\nexport interface SearchConfig {\n showExternalTab: boolean;\n showAdvancedSearch: boolean;\n showAdvancedSearchAsText: boolean;\n scope: SearchScope;\n q: string;\n advancedSearchQueryRows: AdvancedSearchQueryRow[];\n localAdvancedSearch: {\n selectedResourceTypes: string[];\n availableResourceTypes: Record<string, string>;\n selectedCollections: string[];\n availableCollections: Record<string, string>;\n };\n externalAdvancedSearch: {\n datePublished: { from: string; to: string };\n selectedLanguages: string[];\n limitResults: {\n peerReviewed: boolean;\n };\n expandResults: {\n applyRelatedWords: boolean;\n applyEquivalentSubjects: boolean;\n fullText: boolean;\n };\n };\n}\n\n/**\n * Accepts as input, and emits as events, SearchConfig objects:\n * ```\n * SearchConfig {\n showExternalTab: boolean;\n showAdvancedSearch: boolean;\n showAdvancedSearchAsText: boolean;\n scope: SearchScope;\n q: string;\n isFacetSearch: boolean;\n advancedSearchQueryRows: AdvancedSearchQueryRow[];\n localAdvancedSearch: {\n selectedResourceTypes: string[];\n availableResourceTypes: Record<string, string>;\n selectedCollections: string[];\n availableCollections: Record<string, string>;\n };\n externalAdvancedSearch: {\n datePublished: { from: string; to: string };\n selectedLanguages: string[];\n limitResults: {\n peerReviewed: boolean;\n };\n expandResults: {\n applyRelatedWords: boolean;\n applyEquivalentSubjects: boolean;\n fullText: boolean;\n };\n };\n * ```\n */\n@Component({\n selector: 'lib-ss-search-bar',\n standalone: true,\n imports: [\n CommonModule,\n SsAdvancedQueriesPipe,\n AdvancedSearchComponent,\n SimpleSearchComponent,\n AdvancedFieldWarningPipe,\n ],\n providers: [FieldByScopePipe],\n animations: [libHbllExpandCollapse],\n templateUrl: './ss-search-bar.component.html',\n styleUrl: './ss-search-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class SsSearchBarComponent {\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: string) {\n this._config = JSON.parse(config) as SearchConfig;\n }\n get config(): SearchConfig {\n return this._config;\n }\n @Output() simpleSearch = new EventEmitter<SearchConfig>();\n @Output() clearSimpleSearch = new EventEmitter<SearchConfig>();\n @Output() advancedSearch = new EventEmitter<SearchConfig>();\n @Output() advancedSearchClosed = new EventEmitter<SearchConfig>();\n @Output() advancedSearchOpen = new EventEmitter<SearchConfig>();\n @Output() tabChange = new EventEmitter<SearchConfig>();\n @ViewChild('barWrapperRef') private barWrapperRef!: ElementRef;\n protected heightOfContainer = 0;\n\n protected emitClearSimpleSearch = () => {\n this.clearSimpleSearch.emit({\n ...this.config,\n q: '',\n advancedSearchQueryRows: [],\n });\n };\n\n protected emitSimpleSearch = (updatedProps: Partial<SearchConfig>) => {\n this.simpleSearch.emit({\n ...this.config,\n ...updatedProps,\n });\n };\n\n protected emitAdvancedSearchClosed = () => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearchClosed.emit({\n ...this.config,\n showAdvancedSearch: false,\n showAdvancedSearchAsText: false,\n });\n };\n\n protected emitAdvancedSearch = (config: SearchConfig) => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearch.emit({\n ...config,\n showAdvancedSearchAsText: true,\n showAdvancedSearch: true,\n });\n };\n\n protected emitAdvancedSearchOpen = () => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearchOpen.emit({\n ...this.config,\n showAdvancedSearchAsText: false,\n showAdvancedSearch: true,\n });\n };\n\n protected emitTabChange = (newScope: SearchScope) => {\n this.tabChange.emit({ ...this.config, scope: newScope });\n };\n}\n","<div id=\"ssSearchBar\">\n <button\n (click)=\"emitTabChange('local')\"\n class=\"tab\"\n [ngClass]=\"{ active: config.scope === 'local' }\"\n data-testid=\"localTab\"\n [disabled]=\"config.scope === 'local'\"\n >\n In the Library\n </button>\n @if (config.showExternalTab) {\n <button\n (click)=\"emitTabChange('external')\"\n class=\"tab\"\n [ngClass]=\"{ active: config.scope === 'external' }\"\n data-testid=\"externalTab\"\n [disabled]=\"config.scope === 'external'\"\n >\n Available Online\n </button>\n }\n <div\n class=\"bar-wrapper\"\n #barWrapperRef\n [@libHbllExpandCollapse]=\"{\n value: config.showAdvancedSearch ? (!config.showAdvancedSearchAsText ? 1 : 2) : 3,\n params: { startHeight: heightOfContainer },\n }\"\n >\n <div class=\"bar-content\" data-testid=\"searchForm\">\n @if (!config.showAdvancedSearch) {\n <div class=\"search-bar\">\n <lib-ss-simple-search\n [config]=\"config\"\n (simpleSearch)=\"emitSimpleSearch($event)\"\n (clearSimpleSearch)=\"emitClearSimpleSearch()\"\n ></lib-ss-simple-search>\n </div>\n } @else {\n <button\n id=\"advSearchCloseBtn\"\n (click)=\"emitAdvancedSearchClosed()\"\n data-testid=\"advSearchCloseBtn\"\n >\n <span class=\"material-symbols-outlined icon\"> close </span>\n </button>\n <div id=\"advSearchWrapper\">\n @if (config.showAdvancedSearch && !config.showAdvancedSearchAsText) {\n <div>\n <lib-ss-advanced-search\n [config]=\"config\"\n (advancedSearch)=\"emitAdvancedSearch($event)\"\n ></lib-ss-advanced-search>\n </div>\n } @else {\n <div\n class=\"adv-search-text\"\n data-testid=\"advancedSearchText\"\n [innerHTML]=\"\n config.advancedSearchQueryRows | ssAdvancedQueries: config.scope\n \"\n ></div>\n <div\n class=\"field-warning\"\n [innerHTML]=\"\n config.advancedSearchQueryRows | advancedFieldWarning: config.scope\n \"\n ></div>\n }\n </div>\n }\n </div>\n @if (!config.showAdvancedSearch || config.showAdvancedSearchAsText) {\n <button\n data-testid=\"toggleAdvSearchButton\"\n class=\"adv-search-btn\"\n (click)=\"emitAdvancedSearchOpen()\"\n >\n Advanced <span class=\"material-symbols-outlined icon\"> keyboard_arrow_down </span>\n </button>\n }\n </div>\n</div>\n","/*\n * Public API Surface of components\n */\n\nexport * from './lib/hbll-header/hbll-header.component';\nexport * from './lib/ss-search-bar/ss-search-bar.component';\nexport {\n ADVANCED_SEARCH_QUALIFIER_MAP,\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n} from './lib/ss-search-bar/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FieldByScopePipe","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"byuhbll-components.mjs","sources":["../../../projects/components/src/lib/hbll-header/hbll-header.component.ts","../../../projects/components/src/lib/hbll-header/hbll-header.component.html","../../../projects/components/src/lib/ss-search-bar/constants.ts","../../../projects/components/src/lib/ss-search-bar/models/advanced-search.model.ts","../../../projects/components/src/lib/ss-search-bar/pipes/field-by-scope.pipe.ts","../../../projects/components/src/lib/ss-search-bar/pipes/advanced-queries.pipe.ts","../../../projects/components/src/lib/animations/animations.ts","../../../projects/components/src/lib/ss-search-bar/utils.ts","../../../projects/components/src/lib/hbll-multi-select/hbll-multi-select.component.ts","../../../projects/components/src/lib/hbll-multi-select/hbll-multi-select.component.html","../../../projects/components/src/lib/hbll-checkbox/hbll-checkbox.component.ts","../../../projects/components/src/lib/hbll-checkbox/hbll-checkbox.component.html","../../../projects/components/src/lib/directives/hbll-pill-btn/hbll-pill-btn.directive.ts","../../../projects/components/src/lib/ss-search-bar/date-range/date-range.component.ts","../../../projects/components/src/lib/ss-search-bar/date-range/date-range.component.html","../../../projects/components/src/lib/ss-search-bar/advanced-search/advanced-search.component.ts","../../../projects/components/src/lib/ss-search-bar/advanced-search/advanced-search.component.html","../../../projects/components/src/lib/ss-search-bar/simple-search/simple-search.component.ts","../../../projects/components/src/lib/ss-search-bar/simple-search/simple-search.component.html","../../../projects/components/src/lib/ss-search-bar/pipes/advanced-field-warning.pipe.ts","../../../projects/components/src/lib/ss-search-bar/ss-search-bar.component.ts","../../../projects/components/src/lib/ss-search-bar/ss-search-bar.component.html","../../../projects/components/src/lib/ss-search-bar/models/search-scope.model.ts","../../../projects/components/src/public-api.ts","../../../projects/components/src/byuhbll-components.ts"],"sourcesContent":["import { DatePipe, LowerCasePipe } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { HttpClient } from '@angular/common/http';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Output,\n Pipe,\n PipeTransform,\n Renderer2,\n computed,\n inject,\n input,\n viewChild,\n} from '@angular/core';\n\nconst LIBRARY_HOURS_API_URL = 'https://apps.lib.byu.edu/libraryhours/api/hours';\n\ninterface LibraryHours {\n date: string;\n is_closed: boolean;\n open_time: string;\n close_time: string;\n has_exception: boolean;\n exception_title: string;\n exception_message: string;\n is_currently_open: boolean;\n}\n\n@Pipe({\n name: 'libraryHoursDate',\n standalone: true,\n})\nexport class LibraryHoursDatePipe implements PipeTransform {\n transform(date: string, time: string): Date {\n return new Date(date + 'T' + time);\n }\n}\n\n/**\n * Header component built to be exported as a custom element.\n * This component uses icons provided by Google Material.\n * The link to these icons should be included once in the \\<head> of your base html.\n *\n * When a non-empty string `name` is provided to this component, the user is considered logged in.\n * Two outputs/events are accessible: `login` and `logout`.\n */\n@Component({\n selector: 'lib-hbll-header',\n standalone: true,\n imports: [DatePipe, LowerCasePipe, LibraryHoursDatePipe],\n templateUrl: './hbll-header.component.html',\n styleUrl: './hbll-header.component.scss',\n})\nexport class HbllHeaderComponent implements AfterViewInit {\n private readonly r2 = inject(Renderer2);\n private readonly http = inject(HttpClient);\n\n // --- API ---\n protected name = input<string>('');\n @Output() login = new EventEmitter<void>();\n @Output() logout = new EventEmitter<void>();\n // -----------\n\n private accountInfoEl = viewChild<ElementRef>('accountInfo');\n\n protected isLoggedIn = computed(() => !!this.name());\n protected libraryHours = toSignal(this.http.get<LibraryHours>(LIBRARY_HOURS_API_URL));\n protected showAccountDropdown = false;\n\n ngAfterViewInit(): void {\n this.r2.listen('window', 'click', (e: Event) => {\n if (!this.accountInfoEl()?.nativeElement.contains(e.target))\n this.showAccountDropdown = false;\n });\n }\n}\n","<header role=\"banner\" class=\"wrapper\">\n <h1>\n <a href=\"https://lib.byu.edu/\">\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/byu-library-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </a>\n </h1>\n <div id=\"libraryInfo\" class=\"wrapper\">\n @if (libraryHours()) {\n <div id=\"libraryHours\">\n <div class=\"wrapper\">\n <span class=\"material-symbols-outlined left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? \"CLOSED\"\n : \"Today's hours: \" +\n (libraryHours()!.date\n | libraryHoursDate : libraryHours()!.open_time\n | date : \"ha\"\n | lowercase) +\n \" - \" +\n (libraryHours()!.date\n | libraryHoursDate : libraryHours()!.close_time\n | date : \"ha\"\n | lowercase)\n }}\n </div>\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"\n isLoggedIn()\n ? (showAccountDropdown = !showAccountDropdown)\n : login.emit()\n \"\n class=\"wrapper\"\n id=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined left-icon\"> person </span>\n {{ isLoggedIn() ? name : \"Login\" }}\n @if (isLoggedIn()) {\n <span class=\"material-symbols-outlined\"> arrow_drop_down </span>\n }\n </button>\n @if (isLoggedIn() && showAccountDropdown) {\n <div id=\"accountDropdown\">\n <a class=\"item\">My Account</a>\n <a class=\"item\">Preferences</a>\n <button class=\"item\" (click)=\"logout.emit()\">Logout</button>\n </div>\n }\n </div>\n </div>\n</header>\n<nav></nav>\n","export const ADVANCED_SEARCH_QUALIFIER_MAP = {\n contains: 'contains',\n begins_with: 'begins with',\n exact: 'is (exact)',\n index: 'browse value',\n subject_lc: 'LC browse',\n subject_expanded: 'expanded browse',\n};\n\nexport const ADVANCED_SEARCH_FIELD_MAP = {\n abstract: 'Abstract',\n any: 'Any Field',\n callNumber: 'Call Number',\n contributor: 'Contributor',\n creator: 'Author/Creator',\n genre: 'Genre',\n isbn: 'ISBN',\n issn: 'ISSN',\n series: 'Series',\n source: 'Source',\n subject: 'Subject',\n title: 'Title',\n};\n\nexport const ADVANCED_SEARCH_QUERIES_LIMIT = 12;\n\nexport const ADVANCED_SEARCH_OPTIONS = {\n boolean: ['AND', 'OR', 'NOT'],\n // In SS-api, the EDS key for all fields is `allText`, however this is the default and is never used in the URL, so we omit it here.\n fields: ['any', 'title', 'creator', 'subject', 'issn', 'isbn'],\n localFields: ['callNumber', 'contributor', 'genre', 'series'],\n externalFields: ['source', 'abstract'],\n qualifiers: {\n any: ['contains'],\n title: ['contains', 'exact', 'begins_with', 'index'],\n callNumber: ['contains', 'exact', 'begins_with', 'index'],\n creator: ['contains', 'exact', 'begins_with', 'index'],\n contributor: ['contains', 'exact'],\n isbn: ['contains', 'exact'],\n issn: ['contains', 'exact'],\n genre: ['contains', 'exact'],\n subject: ['contains', 'exact', 'subject_lc', 'subject_expanded'],\n series: ['contains', 'exact'],\n },\n resultsPerPage: ['10', '20', '50', '100'],\n languages: {\n eng: 'English',\n ara: 'Arabic',\n chi: 'Chinese',\n ces: 'Czech',\n dan: 'Danish',\n dut: 'Dutch',\n fin: 'Finnish',\n fre: 'French',\n ger: 'German',\n gre: 'Greek, Modern',\n heb: 'Hebrew',\n hin: 'Hindi',\n hun: 'Hungarian',\n ice: 'Icelandic',\n ita: 'Italian',\n jpn: 'Japanese',\n kor: 'Korean',\n lat: 'Latin',\n nor: 'Norwegian',\n pol: 'Polish',\n por: 'Portuguese',\n pan: 'Punjabi',\n rum: 'Romanian',\n rus: 'Russian',\n spa: 'Spanish',\n swe: 'Swedish',\n wel: 'Welsh',\n yid: 'Yiddish',\n },\n} as const;\n\nexport const PRIMARY_BLUE = 'rgba(63, 112, 176, 1)';\nexport const PRIMARY_BLUE_HOVER = 'hsl(214, 48%, 60%, 1)';\nexport const PRIMARY_LIGHT_BLUE = 'rgba(223, 233, 247, 1)';\nexport const PRIMARY_PURPLE = '#8772A6';\nexport const PRIMARY_PURPLE_HOVER = '#7C659F';\nexport const DESTRUCTIVE_RED = 'hsl(5, 47%, 47%, 1)';\nexport const DESTRUCTIVE_RED_HOVER = 'hsl(5, 47%, 50%, 1)';\nexport const SECONDARY_TEXT_GRAY = 'rgba(112, 112, 112, 1)';\nexport const LIGHT_GRAY = 'rgba(230, 230, 230, 1)';\nexport const DROP_SHADOW_DARK_BLUE = 'rgba(51, 62, 77, 0.16)';\nexport const TEXT_SEMIBOLD = '600';\nexport const TEXT_BOLD = '700';\nexport const ANIMATION_LENGTH_STD = '0.15s';\nexport const LINE_HEIGHT_STD = '1.4';\nexport const CONTEXTUAL_SELECTOR_HEIGHT = '4.5rem';\nexport const CONTENT_MAX_WIDTH = '75rem';\nexport const CONTENT_PADDING = '5.4rem';\n","import { ADVANCED_SEARCH_OPTIONS } from '../constants';\n\nexport type AdvancedSearchBooleanOption = (typeof ADVANCED_SEARCH_OPTIONS.boolean)[number];\n\nexport type AdvancedSearchFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.fields)[number];\n\nexport const isAdvancedSearchFieldOption = (\n field: string,\n): field is AdvancedSearchLocalFieldOption =>\n [...ADVANCED_SEARCH_OPTIONS.fields].includes(field as AdvancedSearchFieldOption);\n\nexport type AdvancedSearchLocalFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.localFields)[number];\n\nexport const isAdvancedSearchLocalFieldOption = (\n field: string,\n): field is AdvancedSearchLocalFieldOption =>\n ADVANCED_SEARCH_OPTIONS.localFields.includes(field as AdvancedSearchLocalFieldOption);\n\nexport type AdvancedSearchExternalFieldOption =\n (typeof ADVANCED_SEARCH_OPTIONS.externalFields)[number];\n\nexport const isAdvancedSearchExternalFieldOption = (\n field: string,\n): field is AdvancedSearchExternalFieldOption =>\n ADVANCED_SEARCH_OPTIONS.externalFields.includes(field as AdvancedSearchExternalFieldOption);\n\nexport type AdvancedSearchQualifierOption =\n (typeof ADVANCED_SEARCH_OPTIONS.qualifiers)[keyof typeof ADVANCED_SEARCH_OPTIONS.qualifiers][number];\n\nexport type AdvancedSearchResultsPerPageOption =\n (typeof ADVANCED_SEARCH_OPTIONS.resultsPerPage)[number];\n\nexport type AdvancedSearchLanguageOption = (keyof typeof ADVANCED_SEARCH_OPTIONS.languages)[number];\n\nexport type AdvancedSearchQualifier = keyof typeof ADVANCED_SEARCH_OPTIONS.qualifiers;\n\nexport interface AdvancedSearchQueryRow {\n boolean?: AdvancedSearchBooleanOption;\n field?:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption;\n qualifier?: AdvancedSearchQualifierOption;\n query: string;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n AdvancedSearchExternalFieldOption,\n AdvancedSearchFieldOption,\n AdvancedSearchLocalFieldOption,\n isAdvancedSearchExternalFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n} from '../models/advanced-search.model';\nimport { ADVANCED_SEARCH_OPTIONS } from '../constants';\nimport { SearchScope } from '../models/search-scope.model';\n\n/**\n * Returns the field value based on the scope. If a field value does not exist in a specific scope, the default is returned.\n */\n@Pipe({\n name: 'fieldByScope',\n standalone: true,\n})\nexport class FieldByScopePipe implements PipeTransform {\n transform(\n fieldValue:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption,\n scope: SearchScope,\n ):\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption {\n if (\n isAdvancedSearchFieldOption(fieldValue) ||\n (scope === 'local'\n ? isAdvancedSearchLocalFieldOption(fieldValue)\n : isAdvancedSearchExternalFieldOption(fieldValue))\n )\n return fieldValue;\n return ADVANCED_SEARCH_OPTIONS.fields[0];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n ADVANCED_SEARCH_QUALIFIER_MAP,\n} from '../constants';\nimport {\n AdvancedSearchExternalFieldOption,\n AdvancedSearchFieldOption,\n AdvancedSearchLocalFieldOption,\n AdvancedSearchQueryRow,\n isAdvancedSearchExternalFieldOption,\n} from '../models/advanced-search.model';\nimport { SearchScope } from '../models/search-scope.model';\nimport { FieldByScopePipe } from './field-by-scope.pipe';\n\n@Pipe({\n name: 'ssAdvancedQueries',\n standalone: true,\n})\nexport class SsAdvancedQueriesPipe implements PipeTransform {\n constructor(private fieldByScopePipe: FieldByScopePipe) {}\n transform(queryRows: AdvancedSearchQueryRow[], scope: SearchScope): string {\n return queryRows\n .map((row, i) => {\n const b = i !== 0 ? row.boolean || ADVANCED_SEARCH_OPTIONS.boolean[0] : '';\n const f:\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption = this.fieldByScopePipe.transform(\n row.field ?? ADVANCED_SEARCH_OPTIONS.fields[0],\n scope,\n );\n const o = isAdvancedSearchExternalFieldOption(f)\n ? 'contains'\n : row.qualifier ??\n ADVANCED_SEARCH_OPTIONS.qualifiers[\n f as AdvancedSearchFieldOption | AdvancedSearchLocalFieldOption\n ][0];\n return `${b ? b + ' ' : ''}${\n ADVANCED_SEARCH_FIELD_MAP[f]\n } ${ADVANCED_SEARCH_QUALIFIER_MAP[o as keyof typeof ADVANCED_SEARCH_QUALIFIER_MAP]} <b>${row.query}</b>`;\n })\n .join(' ');\n }\n}\n","import {\n trigger,\n transition,\n animate,\n style,\n group,\n query,\n animateChild,\n} from '@angular/animations';\n\nexport const libHbllExpandCollapse = trigger('libHbllExpandCollapse', [\n transition('void <=> *', []),\n transition(\n '* <=> *',\n [\n group([\n style({ height: '{{startHeight}}px' }),\n query('@*', [animateChild()], { optional: true }),\n animate('.15s ease-in-out'),\n ]),\n ],\n { params: { startHeight: '0px' } },\n ),\n]);\n\nexport const libHbllFadeInOut = trigger('libHbllFadeInOut', [\n transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),\n transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),\n]);\n\nexport const libHbllFadeIn = trigger('libHbllFadeIn', [\n transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),\n]);\n\nexport const libHbllFadeOut = trigger('libHbllFadeOut', [\n transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),\n]);\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/**\n * Validator method to check if a `FormGroup<{ from: FormControl<string>; to: FormControl<string> }>` is valid.\n * The FormGroup is considered valid if either both `from` and `to` are set, or both are empty strings.\n * @returns {ValidationErrors | null} validation errors, if any\n */\nexport const validateDateRangeFields = (): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n const from: string = control.get('from')?.value;\n const to: string = control.get('to')?.value;\n // Valid if both fields are set or both are empty.\n if ((!from && !to) || (from && to)) return null;\n return from ? { toInvalid: true } : { fromInvalid: true };\n };\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n@Component({\n selector: 'lib-hbll-multi-select',\n standalone: true,\n imports: [\n CommonModule,\n MatChipsModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatIconModule,\n ],\n // Necessary to override material design styles.\n // IMPORTANT: Tightly scope classes and ids to this component if they are necessary.\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './hbll-multi-select.component.html',\n styleUrls: ['./hbll-multi-select.component.scss'],\n})\nexport class HbllMultiSelectComponent {\n @ViewChild('input') private inputRef!: ElementRef<HTMLInputElement>;\n @Input() allOptions: Record<string, string> = {};\n @Input() label = '';\n /**\n * An array that indicates which keys are selected.\n */\n @Input() selectedKeys: string[] = [];\n /**\n * An EventEmitter that emits an array of keys indicating which options are currently selected.\n */\n @Output() selectedKeysChange = new EventEmitter<string[]>();\n\n protected inputControl = new FormControl('');\n protected filteredOptions$: Observable<string[]> = combineLatest([\n this.inputControl.valueChanges.pipe(startWith('')),\n this.selectedKeysChange.asObservable().pipe(startWith([])),\n ]).pipe(\n map(([key]: [string | null, unknown]) =>\n // Display filtered options if there is a value, else display all options currently not selected.\n key\n ? this.filterOptions(key)\n : Object.keys(this.allOptions).filter(\n (key) => !this.selectedKeys.find((selectedOption) => key === selectedOption),\n ),\n ),\n );\n protected separatorKeysCodes: number[] = [ENTER, COMMA];\n\n /**\n * Adds a key from the input to the array of selected key.\n * The value from the input must match a key from the record of all options.\n * @param {MatChipInputEvent} event MatChipInputEvent\n */\n protected addOption(event: MatChipInputEvent): void {\n this.addOptionToSelectedOptions(event.value);\n }\n\n /**\n * Removes a key from the array of selected options and emits the new selected keys.\n * @param {MultiSelectKeyValPair} key key to remove\n */\n protected removeOption(key: string): void {\n const index = this.selectedKeys.indexOf(key);\n if (index >= 0) {\n this.selectedKeys.splice(index, 1);\n this.selectedKeysChange.emit(this.selectedKeys);\n }\n }\n\n /**\n * Adds an option to the array of selected keys when a user selects from the autocomplete.\n * @param {MatAutocompleteSelectedEvent} event MatAutocompleteSelectedEvent\n */\n protected selectOption = (event: MatAutocompleteSelectedEvent): void => {\n this.addOptionToSelectedOptions(event.option.value);\n };\n\n /**\n * Filters the options by the supplied key as well as the currently selected key.\n * @param {string} key key to filter by.\n * @returns {string[]} the filtered keys\n */\n private filterOptions = (newKey: string): string[] => {\n return Object.keys(this.allOptions).filter(\n (key: string) => this.allOptions[key] !== newKey && !this.selectedKeys.includes(key),\n );\n };\n\n /**\n * Adds a key to the selected keys array if the option is truthy and not already in the array.\n * The input is also cleared (if available), and the new selected keys are emitted.\n * @param {key} option key to add\n */\n private addOptionToSelectedOptions = (key: string): void => {\n if (key && !this.selectedKeys.includes(key) && this.allOptions[key]) {\n this.selectedKeys.push(key);\n this.inputControl.setValue('');\n this.selectedKeysChange.emit(this.selectedKeys);\n if (this.inputRef) this.inputRef.nativeElement.value = '';\n }\n };\n}\n","<div class=\"hbll-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 <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 icon\"> cancel </span>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n <label class=\"hidden\" for=\"input\">{{ label }}</label>\n <input\n [placeholder]=\"label | titlecase\"\n #input\n id=\"input\"\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","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-hbll-checkbox',\n templateUrl: './hbll-checkbox.component.html',\n styleUrls: ['./hbll-checkbox.component.scss'],\n standalone: true,\n imports: [CommonModule],\n})\nexport class HbllCheckboxComponent {\n @Input() isChecked = false;\n}\n","<span class=\"checkbox-container\" [class.checked]=\"isChecked\">\n @if (isChecked) {\n <span class=\"material-symbols-outlined icon\"> check </span>\n }\n</span>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n inject,\n type OnChanges,\n type OnInit,\n} from '@angular/core';\nimport {\n ANIMATION_LENGTH_STD,\n DESTRUCTIVE_RED,\n DESTRUCTIVE_RED_HOVER,\n LIGHT_GRAY,\n PRIMARY_BLUE,\n PRIMARY_BLUE_HOVER,\n PRIMARY_PURPLE,\n PRIMARY_PURPLE_HOVER,\n SECONDARY_TEXT_GRAY,\n TEXT_SEMIBOLD,\n} from '../../ss-search-bar/constants';\n\nconst BG_COLORS = {\n blue: PRIMARY_BLUE,\n purple: PRIMARY_PURPLE,\n};\n\nconst BG_COLORS_HOVER = {\n blue: PRIMARY_BLUE_HOVER,\n purple: PRIMARY_PURPLE_HOVER,\n};\n\n@Directive({\n selector: '[libHbllPillBtn]',\n standalone: true,\n})\nexport class HbllPillBtnDirective implements OnInit, OnChanges {\n private readonly el = inject(ElementRef);\n @Input() isDestructiveStyle = false;\n @Input() isDisabled = false;\n @Input() isFullWidth = false;\n @Input() color: 'blue' | 'purple' = 'purple';\n\n @HostListener('mouseenter') onMouseEnter() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS_HOVER[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED_HOVER;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n @HostListener('click') onClick() {\n if (this.isDisabled) {\n return;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n }\n this.el.nativeElement.style.cursor = 'pointer';\n }\n\n ngOnInit() {\n this.setupButton();\n }\n\n ngOnChanges() {\n this.setupButton();\n }\n\n setupButton() {\n if (this.isDisabled) {\n this.el.nativeElement.style.color = SECONDARY_TEXT_GRAY;\n this.el.nativeElement.style.backgroundColor = LIGHT_GRAY;\n } else {\n if (!this.isDestructiveStyle) {\n this.el.nativeElement.style.backgroundColor = BG_COLORS[this.color];\n } else {\n this.el.nativeElement.style.backgroundColor = DESTRUCTIVE_RED;\n }\n this.el.nativeElement.style.color = 'white';\n }\n this.el.nativeElement.style.transition = 'all ' + ANIMATION_LENGTH_STD;\n this.el.nativeElement.style.fontSize = '1em';\n this.el.nativeElement.style.fontWeight = TEXT_SEMIBOLD;\n this.el.nativeElement.style.textAlign = 'center';\n this.el.nativeElement.style.display = this.isFullWidth ? 'flex' : 'inline-flex';\n this.el.nativeElement.style.justifyContent = 'center';\n this.el.nativeElement.style.alignItems = 'center';\n this.el.nativeElement.style.width = this.isFullWidth ? '100%' : 'auto';\n this.el.nativeElement.style.borderRadius = '100em';\n this.el.nativeElement.style.padding = '0.4em 1.3em';\n this.el.nativeElement.style.boxSizing = 'border-box';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\nimport { NonNullableFormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { libHbllFadeInOut } from '../../animations/animations';\nimport { validateDateRangeFields } from '../utils';\n\n@Component({\n selector: 'lib-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule],\n animations: [libHbllFadeInOut],\n})\nexport class DateRangeComponent {\n private readonly fb = inject(NonNullableFormBuilder);\n /**\n * Emits `{ from: string, to: string }` object if both values are set to a valid or empty state by the user.\n */\n @Output() validDateChange = new EventEmitter<{ from: string; to: string }>();\n @Output() fromChange = new EventEmitter<string>();\n @Output() toChange = new EventEmitter<string>();\n protected dateForm = this.fb.group(\n {\n from: ['', [Validators.pattern('^[0-9]{4}$')]],\n to: ['', [Validators.pattern('^[0-9]{4}$')]],\n },\n { validators: validateDateRangeFields() },\n );\n @Input() set from(from: string) {\n if (from !== this.dateForm.controls.from.value) this.dateForm.controls.from.setValue(from);\n }\n @Input() set to(to: string) {\n if (to !== this.dateForm.controls.to.value) this.dateForm.controls.to.setValue(to);\n }\n protected onFromChange = () => {\n this.onInputChange();\n this.fromChange.emit(this.dateForm.controls.from.value);\n };\n protected onToChange = () => {\n this.onInputChange();\n this.toChange.emit(this.dateForm.controls.to.value);\n };\n\n private onInputChange = () => {\n let from = this.dateForm.controls.from.value;\n let to = this.dateForm.controls.to.value;\n if (from && to && this.dateForm.controls.from.valid && this.dateForm.controls.to.valid) {\n // Ensure 'to' contains the larger year. Swap if necessary.\n if (parseInt(from) > parseInt(to)) {\n const swap = from;\n from = to;\n to = swap;\n }\n this.validDateChange.emit({ from, to });\n } else if (!from && !to) {\n this.validDateChange.emit({ from, to });\n }\n };\n}\n","<form id=\"from-to\" data-testid=\"from-to\" [formGroup]=\"dateForm\">\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","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n NonNullableFormBuilder,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { filter, startWith, tap } from 'rxjs/operators';\nimport {\n AdvancedSearchBooleanOption,\n AdvancedSearchLocalFieldOption,\n AdvancedSearchLanguageOption,\n AdvancedSearchQualifierOption,\n AdvancedSearchQualifier,\n AdvancedSearchExternalFieldOption,\n AdvancedSearchQueryRow,\n AdvancedSearchFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n isAdvancedSearchExternalFieldOption,\n} from '../models/advanced-search.model';\nimport { Subscription } from 'rxjs';\nimport { SearchConfig } from '../ss-search-bar.component';\nimport { validateDateRangeFields } from '../utils';\nimport { CommonModule } from '@angular/common';\nimport {\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n ADVANCED_SEARCH_QUALIFIER_MAP,\n ADVANCED_SEARCH_QUERIES_LIMIT,\n} from '../constants';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HbllMultiSelectComponent } from '../../hbll-multi-select/hbll-multi-select.component';\nimport { HbllCheckboxComponent } from '../../hbll-checkbox/hbll-checkbox.component';\nimport { HbllPillBtnDirective } from '../../directives/hbll-pill-btn/hbll-pill-btn.directive';\nimport { DateRangeComponent } from '../date-range/date-range.component';\n\ntype QueryRow = {\n boolean: FormControl<AdvancedSearchBooleanOption>;\n field: FormControl<\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption\n >;\n qualifier: FormControl<AdvancedSearchQualifierOption>;\n query: FormControl<string>;\n};\n\nconst DATE_VALIDATOR_REGEX = '^[0-9]{4}$';\n\n@Component({\n selector: 'lib-ss-advanced-search',\n standalone: true,\n templateUrl: './advanced-search.component.html',\n styleUrls: ['./advanced-search.component.scss'],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatTooltipModule,\n MatIconModule,\n HbllMultiSelectComponent,\n HbllCheckboxComponent,\n HbllPillBtnDirective,\n DateRangeComponent,\n ],\n})\nexport class AdvancedSearchComponent implements OnDestroy {\n private readonly fb = inject(NonNullableFormBuilder);\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: SearchConfig) {\n this._config = config;\n this.setupForm();\n }\n get config() {\n return this._config;\n }\n @Output() advancedSearch = new EventEmitter<SearchConfig>();\n\n // Though multiple instances exists, this represent query 1.\n @ViewChild('searchInput') private searchInput!: ElementRef;\n // The tooltip is disabled in the template.\n // It is enabled and displayed if a user searches against an empty query (simple or q1).\n // Any change to the search field disables the tooltip.\n @ViewChild(MatTooltip) private inputTooltip!: MatTooltip;\n\n private subscription = new Subscription();\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Takes a `FormGroup` and syncs up the `field` and `qualifier` values.\n * After syncing, when the `field` value changes, the `qualifier` value will update appropriately.\n */\n private syncUpFieldAndQualifier = (\n fg: FormGroup<{\n boolean: FormControl;\n field: FormControl;\n qualifier: FormControl;\n query: FormControl;\n }>,\n scope: SearchConfig['scope'],\n ) => {\n this.subscription.add(\n fg.controls.field.valueChanges\n .pipe(\n filter(() => scope === 'local'),\n tap((val: AdvancedSearchQualifier) =>\n fg.controls.qualifier.setValue(ADVANCED_SEARCH_OPTIONS.qualifiers[val][0]),\n ),\n )\n .subscribe(),\n );\n };\n\n protected advancedSearchForm = this.fb.group({\n queries: this.fb.array<FormGroup<QueryRow>>(\n [],\n [Validators.maxLength(ADVANCED_SEARCH_QUERIES_LIMIT)],\n ),\n types: [[] as string[]],\n collections: [[] as string[]],\n languages: [[] as AdvancedSearchLanguageOption[]],\n datePublished: this.fb.group(\n {\n from: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],\n to: ['', [Validators.maxLength(4), Validators.pattern(DATE_VALIDATOR_REGEX)]],\n },\n { validators: validateDateRangeFields() },\n ),\n limitResults: this.fb.group({\n peerReviewed: [false],\n }),\n expandResults: this.fb.group({\n applyRelatedWords: [false],\n applyEquivalentSubjects: [false],\n fullText: [false],\n }),\n });\n\n protected isSubmitted = false;\n protected advancedSearchOptions = ADVANCED_SEARCH_OPTIONS;\n protected advancedSearchFieldMap = ADVANCED_SEARCH_FIELD_MAP;\n protected advancedSearchQualifierMap = ADVANCED_SEARCH_QUALIFIER_MAP;\n\n get queries() {\n return this.advancedSearchForm.controls.queries;\n }\n get types() {\n return this.advancedSearchForm.controls.types;\n }\n get collections() {\n return this.advancedSearchForm.controls.collections;\n }\n get languages() {\n return this.advancedSearchForm.controls.languages;\n }\n get from() {\n return this.advancedSearchForm.controls.datePublished.controls.from;\n }\n get to() {\n return this.advancedSearchForm.controls.datePublished.controls.to;\n }\n get peerReviewed() {\n return this.advancedSearchForm.controls.limitResults.controls.peerReviewed;\n }\n get fullText() {\n return this.advancedSearchForm.controls.expandResults.controls.fullText;\n }\n get applyRelatedWords() {\n return this.advancedSearchForm.controls.expandResults.controls.applyRelatedWords;\n }\n get applyEquivalentSubjects() {\n return this.advancedSearchForm.controls.expandResults.controls.applyEquivalentSubjects;\n }\n\n /**\n * Add a query to `queries` `FormArray`. This FormGroup has an additional `boolean` control.\n */\n protected addQuery = () => {\n this.queries.push(\n this.fb.group({\n boolean: [ADVANCED_SEARCH_OPTIONS.boolean[0] as AdvancedSearchBooleanOption],\n field: [\n ADVANCED_SEARCH_OPTIONS.fields[0] as\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n | AdvancedSearchExternalFieldOption,\n ],\n qualifier: [\n ADVANCED_SEARCH_OPTIONS.qualifiers[\n ADVANCED_SEARCH_OPTIONS.localFields[0]\n ][0] as AdvancedSearchQualifierOption,\n ],\n query: ['', Validators.required],\n }),\n );\n this.syncUpFieldAndQualifier(this.queries.at(-1), this.config.scope);\n };\n\n protected removeQuery = (i: number) => {\n this.queries.removeAt(i);\n };\n\n /**\n * Prepares appropriate query params before performing a local advanced search.\n */\n protected doLocalAdvancedSearch = () => {\n this.doAdvancedSearch({\n localAdvancedSearch: {\n ...this.config.localAdvancedSearch,\n selectedResourceTypes: this.types.value,\n selectedCollections: this.collections.value,\n },\n });\n };\n\n /**\n * Prepares appropriate query params before performing an external advanced search.\n */\n protected doExternalAdvancedSearch = () => {\n // Compares 'from' and 'to' to ensure 'to' is greater than / equal to 'from', swaps them if not\n const from = this.from.value\n ? parseInt(this.from.value) <= parseInt(this.to.value)\n ? this.from.value\n : this.to.value\n : '';\n // Compares 'from' and 'to' to ensure 'to' is greater than / equal to 'from', swaps them if not\n const to = this.to.value\n ? parseInt(this.to.value) >= parseInt(this.from.value)\n ? this.to.value\n : this.from.value\n : '';\n this.doAdvancedSearch({\n externalAdvancedSearch: {\n ...this.config.externalAdvancedSearch,\n datePublished: { from, to },\n selectedLanguages: this.languages.value,\n limitResults: {\n peerReviewed: this.peerReviewed.value,\n },\n expandResults: {\n applyRelatedWords: this.applyRelatedWords.value,\n applyEquivalentSubjects: this.applyEquivalentSubjects.value,\n fullText: this.fullText.value,\n },\n },\n });\n };\n\n /**\n * Verifies that there is a query to use, gathers all other query parameters needed, then performs an advanced search via `router.navigate()`.\n * @param {Record<string, string>} queryParams base set of query params to navigate with\n */\n private doAdvancedSearch = (updatedProps: Partial<SearchConfig>): void => {\n this.isSubmitted = true;\n // Don't perform a search unless there is at least one query\n if (\n this.queries.at(0).controls.query.invalid &&\n !this.queries.value.some((v) => !!v.query)\n ) {\n this.showSearchValidationToolTip();\n return;\n }\n // Don't perform a search unless the date form is valid\n if (this.advancedSearchForm.controls.datePublished.invalid) return;\n\n this.advancedSearch.emit({\n ...this.config,\n ...updatedProps,\n advancedSearchQueryRows: this.queries.value as AdvancedSearchQueryRow[],\n });\n this.isSubmitted = false;\n };\n\n private showSearchValidationToolTip = () => {\n this.searchInput.nativeElement.focus();\n this.inputTooltip.disabled = false;\n this.inputTooltip.show();\n };\n\n private setupForm = () => {\n this.queries.clear();\n // Always keep at least two queries available\n this.addQuery();\n this.addQuery();\n\n // Ensure validation tooltip closes when uses enters a query\n this.subscription.add(\n this.queries\n .at(0)\n .controls.query.valueChanges.pipe(startWith(''))\n .pipe(filter(() => !!this.inputTooltip))\n .subscribe(() => (this.inputTooltip.disabled = true)),\n );\n\n // If no `q{NUM}` use `q` for first query\n if (!this.config.advancedSearchQueryRows.length)\n this.queries.at(0).controls.query.setValue(this.config.q);\n\n this.config.advancedSearchQueryRows.forEach((queryRow, i) => {\n // Add a query form control for every q{num} key after the first.\n let queryControl = null;\n if (i === 0 || i === 1) {\n queryControl = this.queries.at(i);\n } else {\n this.addQuery();\n queryControl = this.queries.at(-1);\n }\n\n // Add the query value.\n queryControl.controls.query.setValue(queryRow.query);\n\n // Add the field value, if available.\n if (\n queryRow.field && // Only set the field if the value belongs to the current scope\n (isAdvancedSearchFieldOption(queryRow.field) ||\n (this.config.scope === 'local'\n ? isAdvancedSearchLocalFieldOption(queryRow.field)\n : isAdvancedSearchExternalFieldOption(queryRow.field)))\n )\n queryControl.controls.field.setValue(queryRow.field);\n else queryControl.controls.field.setValue(this.advancedSearchOptions.fields[0]);\n\n // Add the qualifier value, if available and a local search.\n if (this.config.scope === 'local' && queryRow.qualifier)\n queryControl.controls.qualifier.setValue(\n queryRow.qualifier ||\n this.advancedSearchOptions.qualifiers[\n queryControl.controls.field.value as\n | AdvancedSearchFieldOption\n | AdvancedSearchLocalFieldOption\n ],\n );\n\n // Add the boolean, if available and not the first query.\n if (i !== 0 && queryRow.boolean)\n queryControl.controls.boolean.setValue(queryRow.boolean);\n });\n if (this.config.scope === 'local') {\n this.types.setValue(this.config.localAdvancedSearch.selectedResourceTypes);\n this.collections.setValue(this.config.localAdvancedSearch.selectedCollections);\n } else {\n this.languages.setValue(\n this.config.externalAdvancedSearch\n .selectedLanguages as AdvancedSearchLanguageOption[],\n );\n this.peerReviewed.setValue(\n this.config.externalAdvancedSearch.limitResults.peerReviewed,\n );\n this.applyRelatedWords.setValue(\n this.config.externalAdvancedSearch.expandResults.applyRelatedWords,\n );\n this.applyEquivalentSubjects.setValue(\n this.config.externalAdvancedSearch.expandResults.applyEquivalentSubjects,\n );\n this.fullText.setValue(this.config.externalAdvancedSearch.expandResults.fullText);\n this.from.setValue(this.config.externalAdvancedSearch.datePublished.from);\n this.to.setValue(this.config.externalAdvancedSearch.datePublished.to);\n }\n };\n}\n","<form\n data-testid=\"advancedSearchForm\"\n (submit)=\"config.scope === 'local' ? doLocalAdvancedSearch() : doExternalAdvancedSearch()\"\n [formGroup]=\"advancedSearchForm\"\n class=\"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=\"adv-search-row\" [formGroup]=\"query\">\n <!-- Boolean operator -->\n <!-- Add boolean for each row except for first -->\n @if (!$first) {\n <div class=\"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=\"hidden\">Field {{ queryIndex }}</label>\n <div class=\"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=\"hidden\"\n >Match Criteria {{ queryIndex }}</label\n >\n <div class=\"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=\"hidden\">Query {{ queryIndex }}</label>\n <div class=\"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 && queries.at(0).controls.query.invalid\"\n aria-describedby=\"invalidInputDesc\"\n />\n </div>\n @if (!$first) {\n <button\n class=\"row-cancel\"\n type=\"button\"\n (click)=\"removeQuery(queryIndex)\"\n [attr.data-testid]=\"'cancelRow' + queryIndex\"\n >\n <span class=\"material-symbols-outlined 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 icon\"> add </span>\n Add a row\n </button>\n <!-- OTHER OPTIONS -->\n <div class=\"other-options\">\n <!-- LOCAL -->\n @if (config.scope === 'local') {\n <!-- Type -->\n <div data-testid=\"resourceType\">\n <h4>Resource Type</h4>\n <div class=\"multi-select-wrapper\">\n <lib-hbll-multi-select\n [label]=\"'Resource Type'\"\n [allOptions]=\"config.localAdvancedSearch.availableResourceTypes\"\n [selectedKeys]=\"types.value\"\n (selectedKeysChange)=\"types.setValue($event)\"\n ></lib-hbll-multi-select>\n </div>\n </div>\n <!-- Collection -->\n <div data-testid=\"collection\">\n <h4>Collection</h4>\n <div class=\"multi-select-wrapper\">\n <lib-hbll-multi-select\n [label]=\"'Collection'\"\n [allOptions]=\"config.localAdvancedSearch.availableCollections\"\n [selectedKeys]=\"collections.value\"\n (selectedKeysChange)=\"collections.setValue($event)\"\n ></lib-hbll-multi-select>\n </div>\n </div>\n }\n <!-- EXTERNAL -->\n @if (config.scope === 'external') {\n <div formGroupName=\"limitResults\" class=\"checkbox-section\">\n <h4>For Fewer Results Try</h4>\n <!-- Peer reviewed -->\n <label class=\"checkbox-label\" for=\"peerReviewed\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"peerReviewed\"\n type=\"checkbox\"\n [formControlName]=\"'peerReviewed'\"\n data-testid=\"peerReviewed\"\n />\n <lib-hbll-checkbox [isChecked]=\"peerReviewed.value\"></lib-hbll-checkbox>\n <span class=\"label-text\">Peer reviewed journal articles</span>\n </label>\n </div>\n <div formGroupName=\"expandResults\" class=\"checkbox-section\">\n <h4>For More Results Try</h4>\n <!-- Apply related words -->\n <label class=\"checkbox-label\" for=\"applyRelatedWords\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"applyRelatedWords\"\n type=\"checkbox\"\n [formControlName]=\"'applyRelatedWords'\"\n data-testid=\"applyRelatedWords\"\n />\n <lib-hbll-checkbox [isChecked]=\"applyRelatedWords.value\"></lib-hbll-checkbox>\n <span class=\"label-text\">Apply related words</span>\n </label>\n <!-- Apply equivalent subjects -->\n <label class=\"checkbox-label\" for=\"applyEquivalentSubjects\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"applyEquivalentSubjects\"\n type=\"checkbox\"\n [formControlName]=\"'applyEquivalentSubjects'\"\n data-testid=\"applyEquivalentSubjects\"\n />\n <lib-hbll-checkbox\n [isChecked]=\"applyEquivalentSubjects.value\"\n ></lib-hbll-checkbox>\n <span class=\"label-text\">Apply equivalent subjects</span>\n </label>\n <!-- Full text -->\n <label class=\"checkbox-label\" for=\"fullText\" tabindex=\"0\">\n <input\n class=\"hidden\"\n id=\"fullText\"\n type=\"checkbox\"\n [formControlName]=\"'fullText'\"\n data-testid=\"fullText\"\n />\n <lib-hbll-checkbox [isChecked]=\"fullText.value\"></lib-hbll-checkbox>\n <span class=\"label-text\"\n >Include results the library doesn't have access to</span\n >\n </label>\n </div>\n <!-- Date -->\n <div id=\"dateOptions\">\n <h4>Date Published</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 <!-- Language -->\n <div>\n <h4>Language</h4>\n <lib-hbll-multi-select\n [label]=\"'language'\"\n [allOptions]=\"advancedSearchOptions.languages\"\n [selectedKeys]=\"languages.value\"\n (selectedKeysChange)=\"languages.setValue($any($event))\"\n ></lib-hbll-multi-select>\n </div>\n }\n </div>\n <div id=\"advSearchFooter\">\n <button libHbllPillBtn [color]=\"'blue'\" type=\"submit\" data-testid=\"advSearchSubmitButton\">\n Search\n </button>\n </div>\n</form>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { FormBuilder, FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs';\nimport { startWith, filter } from 'rxjs/operators';\nimport { SearchConfig } from '../ss-search-bar.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-ss-simple-search',\n standalone: true,\n imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n})\nexport class SimpleSearchComponent implements OnInit, OnDestroy {\n private readonly fb = inject(FormBuilder);\n @ViewChild('searchInput') private searchInput!: ElementRef;\n // The tooltip is disabled in the template.\n // It is enabled and displayed if a user searches against an empty query (simple or q1).\n // Any change to the search field disables the tooltip.\n @ViewChild(MatTooltip) private inputTooltip!: MatTooltip;\n private subscription = new Subscription();\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: SearchConfig) {\n this._config = config;\n this.setupForm();\n }\n get config() {\n return this._config;\n }\n @Output() simpleSearch = new EventEmitter<SearchConfig>();\n @Output() clearSimpleSearch = new EventEmitter<void>();\n protected isSubmitted = false;\n protected searchForm = this.fb.nonNullable.group({\n simpleQuery: ['', Validators.required],\n });\n\n get simpleQuery() {\n return this.searchForm.get('simpleQuery') as FormControl;\n }\n\n ngOnInit() {\n // Ensure validation tooltip closes when uses enters a query\n this.subscription.add(\n this.simpleQuery.valueChanges\n .pipe(startWith(''))\n .pipe(filter(() => !!this.inputTooltip))\n .subscribe(() => {\n this.inputTooltip.disabled = true;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n protected emitSimpleSearch = () => {\n this.isSubmitted = true;\n // Don't perform a search unless there is a query\n if (this.simpleQuery.invalid) {\n this.showSearchValidationToolTip();\n return;\n }\n this.simpleSearch.emit({ ...this.config, q: this.simpleQuery.value });\n this.isSubmitted = false;\n };\n\n protected clearQuery = () => {\n this.simpleQuery.setValue('');\n this.clearSimpleSearch.emit();\n };\n\n private setupForm = () => {\n this.simpleQuery.setValue(\n this.config.q || this.config.advancedSearchQueryRows[0]?.query || '',\n );\n };\n\n private showSearchValidationToolTip = () => {\n this.searchInput.nativeElement.focus();\n this.inputTooltip.disabled = false;\n this.inputTooltip.show();\n };\n}\n","<div class=\"container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button type=\"submit\" aria-label=\"search\" data-testid=\"searchBtn\">\n <span class=\"material-symbols-outlined icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined icon\"> cancel </span>\n </button>\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ADVANCED_SEARCH_FIELD_MAP } from '../constants';\nimport {\n AdvancedSearchQueryRow,\n isAdvancedSearchExternalFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n} from '../models/advanced-search.model';\nimport { SearchScope } from '../models/search-scope.model';\n\n@Pipe({\n name: 'advancedFieldWarning',\n standalone: true,\n})\nexport class AdvancedFieldWarningPipe implements PipeTransform {\n transform(queryRows: AdvancedSearchQueryRow[], scope: SearchScope): string {\n let warning = '';\n queryRows.forEach((row) => {\n if (\n row.field &&\n !isAdvancedSearchFieldOption(row.field as string) &&\n (scope === 'local'\n ? !isAdvancedSearchLocalFieldOption(row.field as string)\n : !isAdvancedSearchExternalFieldOption(row.field as string))\n ) {\n if (!warning)\n warning = `Searching by <b>${\n ADVANCED_SEARCH_FIELD_MAP[row.field]\n }</b> is not an option for this tab. <b>${\n ADVANCED_SEARCH_FIELD_MAP['any']\n }</b> has replaced it.`;\n else {\n warning += '<br />All other unavailable options have also been replaced.';\n return;\n }\n }\n });\n return warning;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SsAdvancedQueriesPipe } from './pipes/advanced-queries.pipe';\nimport { libHbllExpandCollapse } from '../animations/animations';\nimport { AdvancedSearchComponent } from './advanced-search/advanced-search.component';\nimport { SimpleSearchComponent } from './simple-search/simple-search.component';\nimport { AdvancedSearchQueryRow } from './models/advanced-search.model';\nimport { SearchScope } from './models/search-scope.model';\nimport { AdvancedFieldWarningPipe } from './pipes/advanced-field-warning.pipe';\nimport { FieldByScopePipe } from './pipes/field-by-scope.pipe';\n\nexport interface SearchConfig {\n showExternalTab: boolean;\n showAdvancedSearch: boolean;\n showAdvancedSearchAsText: boolean;\n scope: SearchScope;\n q: string;\n advancedSearchQueryRows: AdvancedSearchQueryRow[];\n localAdvancedSearch: {\n selectedResourceTypes: string[];\n availableResourceTypes: Record<string, string>;\n selectedCollections: string[];\n availableCollections: Record<string, string>;\n };\n externalAdvancedSearch: {\n datePublished: { from: string; to: string };\n selectedLanguages: string[];\n limitResults: {\n peerReviewed: boolean;\n };\n expandResults: {\n applyRelatedWords: boolean;\n applyEquivalentSubjects: boolean;\n fullText: boolean;\n };\n };\n}\n\n/**\n * Accepts as input, and emits as events, SearchConfig objects:\n * ```\n * SearchConfig {\n showExternalTab: boolean;\n showAdvancedSearch: boolean;\n showAdvancedSearchAsText: boolean;\n scope: SearchScope;\n q: string;\n isFacetSearch: boolean;\n advancedSearchQueryRows: AdvancedSearchQueryRow[];\n localAdvancedSearch: {\n selectedResourceTypes: string[];\n availableResourceTypes: Record<string, string>;\n selectedCollections: string[];\n availableCollections: Record<string, string>;\n };\n externalAdvancedSearch: {\n datePublished: { from: string; to: string };\n selectedLanguages: string[];\n limitResults: {\n peerReviewed: boolean;\n };\n expandResults: {\n applyRelatedWords: boolean;\n applyEquivalentSubjects: boolean;\n fullText: boolean;\n };\n };\n * ```\n */\n@Component({\n selector: 'lib-ss-search-bar',\n standalone: true,\n imports: [\n CommonModule,\n SsAdvancedQueriesPipe,\n AdvancedSearchComponent,\n SimpleSearchComponent,\n AdvancedFieldWarningPipe,\n ],\n providers: [FieldByScopePipe],\n animations: [libHbllExpandCollapse],\n templateUrl: './ss-search-bar.component.html',\n styleUrl: './ss-search-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class SsSearchBarComponent {\n private _config!: SearchConfig;\n @Input({ required: true }) set config(config: string) {\n this._config = JSON.parse(config) as SearchConfig;\n }\n get config(): SearchConfig {\n return this._config;\n }\n @Output() simpleSearch = new EventEmitter<SearchConfig>();\n @Output() clearSimpleSearch = new EventEmitter<SearchConfig>();\n @Output() advancedSearch = new EventEmitter<SearchConfig>();\n @Output() advancedSearchClosed = new EventEmitter<SearchConfig>();\n @Output() advancedSearchOpen = new EventEmitter<SearchConfig>();\n @Output() tabChange = new EventEmitter<SearchConfig>();\n @ViewChild('barWrapperRef') private barWrapperRef!: ElementRef;\n protected heightOfContainer = 0;\n\n protected emitClearSimpleSearch = () => {\n this.clearSimpleSearch.emit({\n ...this.config,\n q: '',\n advancedSearchQueryRows: [],\n });\n };\n\n protected emitSimpleSearch = (updatedProps: Partial<SearchConfig>) => {\n this.simpleSearch.emit({\n ...this.config,\n ...updatedProps,\n });\n };\n\n protected emitAdvancedSearchClosed = () => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearchClosed.emit({\n ...this.config,\n showAdvancedSearch: false,\n showAdvancedSearchAsText: false,\n });\n };\n\n protected emitAdvancedSearch = (config: SearchConfig) => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearch.emit({\n ...config,\n showAdvancedSearchAsText: true,\n showAdvancedSearch: true,\n });\n };\n\n protected emitAdvancedSearchOpen = () => {\n this.heightOfContainer = this.barWrapperRef?.nativeElement.clientHeight;\n this.advancedSearchOpen.emit({\n ...this.config,\n showAdvancedSearchAsText: false,\n showAdvancedSearch: true,\n });\n };\n\n protected emitTabChange = (newScope: SearchScope) => {\n this.tabChange.emit({ ...this.config, scope: newScope });\n };\n}\n","<div id=\"ssSearchBar\">\n <button\n (click)=\"emitTabChange('local')\"\n class=\"tab\"\n [ngClass]=\"{ active: config.scope === 'local' }\"\n data-testid=\"localTab\"\n [disabled]=\"config.scope === 'local'\"\n >\n In the Library\n </button>\n @if (config.showExternalTab) {\n <button\n (click)=\"emitTabChange('external')\"\n class=\"tab\"\n [ngClass]=\"{ active: config.scope === 'external' }\"\n data-testid=\"externalTab\"\n [disabled]=\"config.scope === 'external'\"\n >\n Available Online\n </button>\n }\n <div\n class=\"bar-wrapper\"\n #barWrapperRef\n [@libHbllExpandCollapse]=\"{\n value: config.showAdvancedSearch ? (!config.showAdvancedSearchAsText ? 1 : 2) : 3,\n params: { startHeight: heightOfContainer },\n }\"\n >\n <div class=\"bar-content\" data-testid=\"searchForm\">\n @if (!config.showAdvancedSearch) {\n <div class=\"search-bar\">\n <lib-ss-simple-search\n [config]=\"config\"\n (simpleSearch)=\"emitSimpleSearch($event)\"\n (clearSimpleSearch)=\"emitClearSimpleSearch()\"\n ></lib-ss-simple-search>\n </div>\n } @else {\n <button\n id=\"advSearchCloseBtn\"\n (click)=\"emitAdvancedSearchClosed()\"\n data-testid=\"advSearchCloseBtn\"\n >\n <span class=\"material-symbols-outlined icon\"> close </span>\n </button>\n <div id=\"advSearchWrapper\">\n @if (config.showAdvancedSearch && !config.showAdvancedSearchAsText) {\n <div>\n <lib-ss-advanced-search\n [config]=\"config\"\n (advancedSearch)=\"emitAdvancedSearch($event)\"\n ></lib-ss-advanced-search>\n </div>\n } @else {\n <div\n class=\"adv-search-text\"\n data-testid=\"advancedSearchText\"\n [innerHTML]=\"\n config.advancedSearchQueryRows | ssAdvancedQueries: config.scope\n \"\n ></div>\n <div\n class=\"field-warning\"\n [innerHTML]=\"\n config.advancedSearchQueryRows | advancedFieldWarning: config.scope\n \"\n ></div>\n }\n </div>\n }\n </div>\n @if (!config.showAdvancedSearch || config.showAdvancedSearchAsText) {\n <button\n data-testid=\"toggleAdvSearchButton\"\n class=\"adv-search-btn\"\n (click)=\"emitAdvancedSearchOpen()\"\n >\n Advanced <span class=\"material-symbols-outlined icon\"> keyboard_arrow_down </span>\n </button>\n }\n </div>\n</div>\n","const searchScopeValues = ['local', 'external'] as const;\nexport type SearchScope = (typeof searchScopeValues)[number];\nexport const isSearchScope = (scope: string): scope is SearchScope =>\n searchScopeValues.includes(scope as SearchScope);\n","/*\n * Public API Surface of components\n */\n\nexport * from './lib/hbll-header/hbll-header.component';\nexport * from './lib/ss-search-bar/ss-search-bar.component';\nexport {\n isAdvancedSearchExternalFieldOption,\n isAdvancedSearchFieldOption,\n isAdvancedSearchLocalFieldOption,\n} from './lib/ss-search-bar/models/advanced-search.model';\nexport * from './lib/ss-search-bar/models/search-scope.model';\nexport {\n ADVANCED_SEARCH_QUALIFIER_MAP,\n ADVANCED_SEARCH_FIELD_MAP,\n ADVANCED_SEARCH_OPTIONS,\n} from './lib/ss-search-bar/constants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FieldByScopePipe","i1","i2"],"mappings":"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"}
@@ -1 +1,4 @@
1
- export type SearchScope = 'local' | 'external';
1
+ declare const searchScopeValues: readonly ["local", "external"];
2
+ export type SearchScope = (typeof searchScopeValues)[number];
3
+ export declare const isSearchScope: (scope: string) => scope is "local" | "external";
4
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@byuhbll/components",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.0",
6
6
  "@angular/core": "^18.0.0"
package/public-api.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './lib/hbll-header/hbll-header.component';
2
2
  export * from './lib/ss-search-bar/ss-search-bar.component';
3
+ export { isAdvancedSearchExternalFieldOption, isAdvancedSearchFieldOption, isAdvancedSearchLocalFieldOption, } from './lib/ss-search-bar/models/advanced-search.model';
4
+ export * from './lib/ss-search-bar/models/search-scope.model';
3
5
  export { ADVANCED_SEARCH_QUALIFIER_MAP, ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, } from './lib/ss-search-bar/constants';