{"version":3,"file":"my-ul-ng-porcelain.mjs","sources":["../../../projects/ng-porcelain/src/lib/Loggable.ts","../../../projects/ng-porcelain/src/lib/services/translation/translation.service.ts","../../../projects/ng-porcelain/src/lib/shared/types/Refiners/BaseRefinerDefinition.ts","../../../projects/ng-porcelain/src/lib/shared/types/Refiners/SimpleRefinerDefinition.ts","../../../projects/ng-porcelain/src/lib/shared/types/Options/SimpleOption.ts","../../../projects/ng-porcelain/src/lib/shared/types/Options/DateOption.ts","../../../projects/ng-porcelain/src/lib/shared/utilities/i18n/i18nDateOptions/i18nDateOptions.ts","../../../projects/ng-porcelain/src/lib/shared/types/Refiners/DateRefinerDefinition.ts","../../../projects/ng-porcelain/src/lib/truncate/truncate/truncate.component.ts","../../../projects/ng-porcelain/src/lib/truncate/truncate/truncate.component.html","../../../projects/ng-porcelain/src/lib/expando/expando/expando.component.ts","../../../projects/ng-porcelain/src/lib/expando/expando/expando.component.html","../../../projects/ng-porcelain/src/lib/date-refiner/date-refiner/date-refiner.component.ts","../../../projects/ng-porcelain/src/lib/date-refiner/date-refiner/date-refiner.component.html","../../../projects/ng-porcelain/src/lib/shared/defaults/labels/defaultShowLessLabel.ts","../../../projects/ng-porcelain/src/lib/shared/defaults/labels/defaultShowMoreLabel.ts","../../../projects/ng-porcelain/src/lib/shared/defaults/labels/defaultSelectAllLabel.ts","../../../projects/ng-porcelain/src/lib/shared/defaults/labels/defaultSelectNoneLabel.ts","../../../projects/ng-porcelain/src/lib/shared/defaults/properties/defaultOptionShowCount.ts","../../../projects/ng-porcelain/src/lib/pipes/sprintf/sprintf.pipe.ts","../../../projects/ng-porcelain/src/lib/simple-refiner/simple-refiner/simple-refiner.component.ts","../../../projects/ng-porcelain/src/lib/simple-refiner/simple-refiner/simple-refiner.component.html","../../../projects/ng-porcelain/src/lib/simple-radio-refiner/simple-radio-refiner/simple-radio-refiner.component.ts","../../../projects/ng-porcelain/src/lib/simple-radio-refiner/simple-radio-refiner/simple-radio-refiner.component.html","../../../projects/ng-porcelain/src/lib/shared/utilities/arrays/clamp.ts","../../../projects/ng-porcelain/src/lib/shared/utilities/arrays/subtract.ts","../../../projects/ng-porcelain/src/lib/pipes/toLocaleString/to-locale-string.pipe.ts","../../../projects/ng-porcelain/src/lib/pipes/highlight/highlight.pipe.ts","../../../projects/ng-porcelain/src/lib/search-refiner/search-refiner/search-refiner.component.ts","../../../projects/ng-porcelain/src/lib/search-refiner/search-refiner/search-refiner.component.html","../../../projects/ng-porcelain/src/lib/refiners/refiners/refiners.component.ts","../../../projects/ng-porcelain/src/lib/refiners/refiners/refiners.component.html","../../../projects/ng-porcelain/src/lib/applicator/applicator/applicator.component.ts","../../../projects/ng-porcelain/src/lib/applicator/applicator/applicator.component.html","../../../projects/ng-porcelain/src/lib/truncate/truncate.module.ts","../../../projects/ng-porcelain/src/lib/expando/expando-header/expando-header.component.ts","../../../projects/ng-porcelain/src/lib/expando/expando-header/expando-header.component.html","../../../projects/ng-porcelain/src/lib/expando/expando-body/expando-body.component.ts","../../../projects/ng-porcelain/src/lib/expando/expando-body/expando-body.component.html","../../../projects/ng-porcelain/src/lib/expando/expando.module.ts","../../../projects/ng-porcelain/src/lib/date-refiner/date-refiner.module.ts","../../../projects/ng-porcelain/src/lib/pipes/ceil/ceil.pipe.ts","../../../projects/ng-porcelain/src/lib/pipes/floor/floor.pipe.ts","../../../projects/ng-porcelain/src/lib/pipes/round/round.pipe.ts","../../../projects/ng-porcelain/src/lib/pipes/filter/filter.pipe.ts","../../../projects/ng-porcelain/src/lib/pipes/pipes.module.ts","../../../projects/ng-porcelain/src/lib/simple-refiner/simple-refiner.module.ts","../../../projects/ng-porcelain/src/lib/simple-radio-refiner/simple-radio-refiner.module.ts","../../../projects/ng-porcelain/src/lib/search-refiner/search-refiner.module.ts","../../../projects/ng-porcelain/src/lib/refiners/refiners.module.ts","../../../projects/ng-porcelain/src/lib/applicator/applicator.module.ts","../../../projects/ng-porcelain/src/lib/footer/link.directive.ts","../../../projects/ng-porcelain/src/lib/footer/footer/footer.component.ts","../../../projects/ng-porcelain/src/lib/footer/footer/footer.component.html","../../../projects/ng-porcelain/src/lib/footer/footer.module.ts","../../../projects/ng-porcelain/src/lib/search-input/search-input/search-input.component.ts","../../../projects/ng-porcelain/src/lib/search-input/search-input/search-input.component.html","../../../projects/ng-porcelain/src/lib/search-input/search-input.module.ts","../../../projects/ng-porcelain/src/lib/spinner/spinner/spinner.component.ts","../../../projects/ng-porcelain/src/lib/spinner/spinner/spinner.component.html","../../../projects/ng-porcelain/src/lib/spinner/spinner.module.ts","../../../projects/ng-porcelain/src/lib/savedsearch-modalpopup/savedsearch-modalpopup/savedsearch-modalpopup.component.ts","../../../projects/ng-porcelain/src/lib/savedsearch-modalpopup/savedsearch-modalpopup/savedsearch-modalpopup.component.html","../../../projects/ng-porcelain/src/lib/savedsearch-modalpopup/savedsearch-modalpopup.module.ts","../../../projects/ng-porcelain/src/lib/shared/animations/slideInOut.animation.ts","../../../projects/ng-porcelain/src/lib/shared/types/Options/SimpleOptions.ts","../../../projects/ng-porcelain/src/lib/shared/types/Values/DateRefinerValue.ts","../../../projects/ng-porcelain/src/lib/shared/utilities/arrays/moveItem.ts","../../../projects/ng-porcelain/src/lib/shared/utilities/reducers/fromEntries/fromEntries.ts","../../../projects/ng-porcelain/src/lib/rack/rack/rack.component.ts","../../../projects/ng-porcelain/src/lib/rack/rack/rack.component.html","../../../projects/ng-porcelain/src/lib/rack/rack.module.ts","../../../projects/ng-porcelain/src/lib/services/window/window.service.ts","../../../projects/ng-porcelain/src/lib/services/frame-guest/frame-guest.service.ts","../../../projects/ng-porcelain/src/lib/services/frame-host/frame-host.service.ts","../../../projects/ng-porcelain/src/lib/services/google-analytics/google-analytics.service.ts","../../../projects/ng-porcelain/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ng-porcelain/src/lib/inputs/password-input/password-input.component.html","../../../projects/ng-porcelain/src/lib/inputs/text-input/text-input.component.ts","../../../projects/ng-porcelain/src/lib/inputs/text-input/text-input.component.html","../../../projects/ng-porcelain/src/lib/inputs/search-input/search-input.component.ts","../../../projects/ng-porcelain/src/lib/inputs/search-input/search-input.component.html","../../../projects/ng-porcelain/src/lib/inputs/inputs.module.ts","../../../projects/ng-porcelain/src/lib/lists/sort-header/sort-header.component.ts","../../../projects/ng-porcelain/src/lib/lists/sort-header/sort-header.component.html","../../../projects/ng-porcelain/src/lib/lists/search-header/search-header.component.ts","../../../projects/ng-porcelain/src/lib/lists/search-header/search-header.component.html","../../../projects/ng-porcelain/src/lib/lists/text-header/text-header.component.ts","../../../projects/ng-porcelain/src/lib/lists/text-header/text-header.component.html","../../../projects/ng-porcelain/src/lib/lists/dynamic-header/dynamic-header.component.ts","../../../projects/ng-porcelain/src/lib/lists/dynamic-header/dynamic-header.component.html","../../../projects/ng-porcelain/src/lib/lists/list-body/list-body.component.ts","../../../projects/ng-porcelain/src/lib/lists/list-body/list-body.component.html","../../../projects/ng-porcelain/src/lib/lists/list-header-cell/list-header-cell.component.ts","../../../projects/ng-porcelain/src/lib/lists/list-header-cell/list-header-cell.component.html","../../../projects/ng-porcelain/src/lib/lists/list-header/list-header.component.ts","../../../projects/ng-porcelain/src/lib/lists/list-header/list-header.component.html","../../../projects/ng-porcelain/src/lib/lists/list-item-cell/list-item-cell.component.ts","../../../projects/ng-porcelain/src/lib/lists/list-item-cell/list-item-cell.component.html","../../../projects/ng-porcelain/src/lib/lists/list-item/list-item.component.ts","../../../projects/ng-porcelain/src/lib/lists/list-item/list-item.component.html","../../../projects/ng-porcelain/src/lib/lists/list/list.component.ts","../../../projects/ng-porcelain/src/lib/lists/list/list.component.html","../../../projects/ng-porcelain/src/lib/lists/lists.module.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-button/toolbar-button.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-button/toolbar-button.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-cell/toolbar-cell.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-cell/toolbar-cell.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-option/toolbar-option.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-option/toolbar-option.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-select/toolbar-select.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-select/toolbar-select.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-selected-template/toolbar-selected-template.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-selected-template/toolbar-selected-template.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-text/toolbar-text.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar-text/toolbar-text.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar/toolbar.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbar/toolbar.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbars/toolbars.component.ts","../../../projects/ng-porcelain/src/lib/toolbar/toolbars/toolbars.component.html","../../../projects/ng-porcelain/src/lib/toolbar/toolbar.module.ts","../../../projects/ng-porcelain/src/lib/combobox/combobox/combobox.component.ts","../../../projects/ng-porcelain/src/lib/combobox/combobox/combobox.component.html","../../../projects/ng-porcelain/src/lib/combobox/combobox.module.ts","../../../projects/ng-porcelain/src/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.ts","../../../projects/ng-porcelain/src/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.html","../../../projects/ng-porcelain/src/lib/breadcrumb/breadcrumbs/breadcrumbs.component.ts","../../../projects/ng-porcelain/src/lib/breadcrumb/breadcrumbs/breadcrumbs.component.html","../../../projects/ng-porcelain/src/lib/breadcrumb/breadcrumb.module.ts","../../../projects/ng-porcelain/src/lib/skeletons/block/block.component.ts","../../../projects/ng-porcelain/src/lib/skeletons/block/block.component.html","../../../projects/ng-porcelain/src/lib/skeletons/word/word.component.ts","../../../projects/ng-porcelain/src/lib/skeletons/word/word.component.html","../../../projects/ng-porcelain/src/lib/skeletons/line/line.component.ts","../../../projects/ng-porcelain/src/lib/skeletons/line/line.component.html","../../../projects/ng-porcelain/src/lib/skeletons/paragraph/paragraph.component.ts","../../../projects/ng-porcelain/src/lib/skeletons/paragraph/paragraph.component.html","../../../projects/ng-porcelain/src/lib/skeletons/skeletons.module.ts","../../../projects/ng-porcelain/src/lib/shared/utilities/toSimpleOptionDictionary.ts","../../../projects/ng-porcelain/src/lib/date-picker/date-picker/date-picker.component.ts","../../../projects/ng-porcelain/src/lib/date-picker/date-picker/date-picker.component.html","../../../projects/ng-porcelain/src/lib/date-picker/date-picker.module.ts","../../../projects/ng-porcelain/src/lib/multiselect-dropdown/multiselect/multiselect.component.ts","../../../projects/ng-porcelain/src/lib/multiselect-dropdown/multiselect/multiselect.component.html","../../../projects/ng-porcelain/src/lib/multiselect-dropdown/multiselect.module.ts","../../../projects/ng-porcelain/src/lib/auto-complete/auto-complete/auto-complete.component.ts","../../../projects/ng-porcelain/src/lib/auto-complete/auto-complete/auto-complete.component.html","../../../projects/ng-porcelain/src/lib/auto-complete/auto-complete.module.ts","../../../projects/ng-porcelain/src/lib/checkbox/checkbox/checkbox.component.ts","../../../projects/ng-porcelain/src/lib/checkbox/checkbox/checkbox.component.html","../../../projects/ng-porcelain/src/lib/checkbox/checkbox.module.ts","../../../projects/ng-porcelain/src/lib/tableview-module/color-directive/background-color.directive.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-header-item/tableview-header-item.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-header-item/tableview-header-item.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-header/tableview-header.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-header/tableview-header.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-body/tableview-list-body.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-body/tableview-list-body.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-item-cell/tableview-list-item-cell.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-item-cell/tableview-list-item-cell.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-item/tableview-list-item.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list-item/tableview-list-item.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list/tableview-list.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-list/tableview-list.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-text-header/tableview-text-header.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-text-header/tableview-text-header.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-sort-header/tableview-sort-header.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-sort-header/tableview-sort-header.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-searchSortHeader/tableview-searchSortHeader.component.ts","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-searchSortHeader/tableview-searchSortHeader.component.html","../../../projects/ng-porcelain/src/lib/tableview-module/tableview-module.module.ts","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-inputbox/dropdown-inputbox.component.ts","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-inputbox/dropdown-inputbox.component.html","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-select-option/dropdown-select-option.component.ts","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-select-option/dropdown-select-option.component.html","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-select/dropdown-select.component.ts","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-select/dropdown-select.component.html","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-selected-template/dropdown-selected-template.component.ts","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-selected-template/dropdown-selected-template.component.html","../../../projects/ng-porcelain/src/lib/dropdown-system/dropdown-system.module.ts","../../../projects/ng-porcelain/src/my-ul-ng-porcelain.ts"],"sourcesContent":["import { isDevMode } from '@angular/core';\r\n\r\nexport interface ILoggable {\r\n\treadonly name: string;\r\n}\r\n/**\r\n * Loggable abstract class to bring log functions to components.  Logging is silenced in production.\r\n */\r\nexport abstract class Loggable implements ILoggable {\r\n\tabstract readonly name: string;\r\n\talwaysLog: boolean = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tforceLog(): this {\r\n\t\tthis.alwaysLog = true;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tcount(label: string) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.count(label);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\tdebug(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.debug(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\terror(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.error(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\tinfo(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.info(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\tlog(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.log(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\ttable(...data) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.table(...data);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\ttrace(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.trace(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n\r\n\twarn(...subjects) {\r\n\t\tif (isDevMode() || this.alwaysLog) {\r\n\t\t\tconsole.warn(`[${this.name}]`, ...subjects);\r\n\t\t}\r\n\t\tthis.alwaysLog = false;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject, Observable } from 'rxjs';\r\nimport { Loggable } from '../../Loggable';\r\n\r\nexport interface TranslationMap<TargetType> {\r\n\t[sourceKey: string]: TargetType;\r\n}\r\n\r\nexport interface Translations {\r\n\t[labelKey: string]: string;\r\n}\r\n\r\n// @dynamic\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class TranslationService extends Loggable {\r\n\tname = 'TranslationService';\r\n\r\n\tprivate translationSubject = new ReplaySubject<Translations>(1);\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.log('new TranslationService()');\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a helper function that will loop through translationMap and take new translations\r\n\t * and copy the values to targetObject.  In the example, the translations at label_Apply\r\n\t * will be copied to this['applyLabel'] (essentially this.applyLabel = translations.label_Apply)\r\n\t * @example\r\n\t * \t\ttranslationService.getTranslations().subscribe(\r\n\t * \t\t\tTranslationService.translate(this, { 'label_Apply': 'applyLabel' })\r\n\t * \t\t)\r\n\t */\r\n\tpublic static translate<T>(targetObject: T, translationMap: TranslationMap<any>) {\r\n\t\treturn function(newTranslations: Translations) {\r\n\t\t\tfor (let sourceKey in translationMap) {\r\n\t\t\t\tlet destKey = translationMap[sourceKey] as string;\r\n\t\t\t\tif (newTranslations[sourceKey]) {\r\n\t\t\t\t\tlet newLabel = newTranslations[sourceKey];\r\n\t\t\t\t\ttargetObject[destKey] = newLabel;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.warn(\r\n\t\t\t\t\t\t`[TranslationService] Unable to find translation for '${sourceKey}' in translations.`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Get the Translations observable.\r\n\t */\r\n\tpublic getTranslations(): Observable<Translations> {\r\n\t\treturn this.translationSubject.asObservable();\r\n\t}\r\n\r\n\t/**\r\n\t * Set the current translation dictionary.  Causes all subscriptions to update.\r\n\t */\r\n\tpublic setTranslations(translations: Translations): this {\r\n\t\tthis.translationSubject.next(translations);\r\n\t\treturn this;\r\n\t}\r\n}\r\n","// Imports\r\nimport { Subject, BehaviorSubject } from 'rxjs';\r\n\r\n// Library\r\nimport { IBaseRefinerDefinition } from './IBaseRefinerDefinition';\r\nimport { RefinerType } from './RefinerType';\r\nimport { SimpleOption } from '../Options/SimpleOption';\r\nimport { SimpleOptions } from '../Options/SimpleOptions';\r\nimport { RefinerValue } from '../Values/RefinerValue';\r\n\r\n/**\r\n * Abstract refiner definition. Can be used for typing arrays of mixed refiner types.\r\n *\r\n * @since 1.4.0\r\n * @example\r\n * \t\tlet refiners: BaseRefinerDefinition[] = [];\r\n */\r\nexport abstract class BaseRefinerDefinition implements IBaseRefinerDefinition {\r\n\t/**\r\n\t * Refiner type discriminator.  Allows refiners to be JSON serialized\r\n\t */\r\n\ttype: RefinerType;\r\n\t/**\r\n\t * Localized string to be shown as a human-readable title for the Refiner\r\n\t *\r\n\t */\r\n\ttitle: string;\r\n\t/**\r\n\t * A \"keyable\" value that is unique within a refiner set.  Usually the name of a property.\r\n\t */\r\n\tslug: string;\r\n\t/**\r\n\t * Dictionary of optionSlug => label or optionSlug => RefinerOption\r\n\t */\r\n\toptions?: SimpleOptions<SimpleOption, any>;\r\n\t/**\r\n\t * True when the Refiner is to be shown in its open state.\r\n\t *\r\n\t */\r\n\tisOpen?: boolean = true;\r\n\t/**\r\n\t * Provide a value if the refiner should initialize with a value.\r\n\t *\r\n\t * @deprecated\r\n\t */\r\n\tvalue?: RefinerValue;\r\n\r\n\t/**\r\n\t * Number of options to show in the refiner in the un-expanded state. Default is 5\r\n\t *\r\n\t */\r\n\tshowCount?: number;\r\n\r\n\t/**\r\n\t * True when the custom range date refiner is to be shown. Currently applicable only in CP apps.\r\n\t *\r\n\t */\r\n\tenableCustomDateRange?: boolean = false;\r\n\r\n\tvalueSubject: Subject<any>;\r\n\r\n\tconstructor(refinerDefinition: IBaseRefinerDefinition) {\r\n\t\tthis.title = refinerDefinition.title ? refinerDefinition.title : '';\r\n\t\tthis.slug = refinerDefinition.slug ? refinerDefinition.slug : '';\r\n\t\tthis.options = refinerDefinition.options ? refinerDefinition.options : {};\r\n\t\tthis.isOpen = typeof refinerDefinition.isOpen === 'boolean' ? refinerDefinition.isOpen : true;\r\n\t\tthis.enableCustomDateRange =\r\n\t\t\ttypeof refinerDefinition.enableCustomDateRange === 'boolean'\r\n\t\t\t\t? refinerDefinition.enableCustomDateRange\r\n\t\t\t\t: false;\r\n\t}\r\n}\r\n\r\n/**\r\n * @deprecated Use `BaseRefinerDefinition` instead of `BaseRefiner`\r\n */\r\nexport abstract class BaseRefiner extends BaseRefinerDefinition {}\r\n","import { RefinerType } from './RefinerType';\r\nimport { BaseRefinerDefinition } from './BaseRefinerDefinition';\r\nimport { ISimpleRefinerDefinition } from './ISimpleRefinerDefinition';\r\nimport { Subject, BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Class used to define Simple Refiner component behavior.\r\n * @since 1.4.0\r\n */\r\nexport class SimpleRefinerDefinition extends BaseRefinerDefinition implements ISimpleRefinerDefinition {\r\n\t/**\r\n\t * Array of slugs to mark as selected on load.\r\n\t */\r\n\tselected?: string[];\r\n\r\n\t/**\r\n\t * State for expanded/not expanded. When true, all options will be shown on initial render.\r\n\t *\r\n\t */\r\n\tisExpanded?: boolean = false;\r\n\r\n\t/**\r\n\t * stores default preselect Values. When reset button is hit these refiners will be selected by default\r\n\t * */\r\n\tdefaultPreSelectValues?: string[] = [];\r\n\r\n\t/**\r\n\t * A subject that can be updated and subscribed to for the current value.\r\n\t */\r\n\tvalueSubject: BehaviorSubject<string[]>;\r\n\r\n\tconstructor(refinerDefinition: ISimpleRefinerDefinition) {\r\n\t\tsuper(refinerDefinition);\r\n\t\t/**\r\n\t\t * Set the refiner type according to the definition type string.\r\n\t\t * The search option will display a\r\n\t\t */\r\n\t\tthis.type = refinerDefinition.type ? refinerDefinition.type : 'simple';\r\n\r\n\t\t/**\r\n\t\t * Set the default showCount value.  This affects the Show %s More and Show Less button.\r\n\t\t */\r\n\t\tthis.showCount = refinerDefinition.showCount ? refinerDefinition.showCount : 5;\r\n\r\n\t\t/**\r\n\t\t * Determines whether expandos are open or closed by default.\r\n\t\t */\r\n\t\tthis.isExpanded =\r\n\t\t\ttypeof refinerDefinition.isExpanded === 'boolean' ? refinerDefinition.isExpanded : false;\r\n\r\n\t\t/**\r\n\t\t * Used to send new selection values to subscribers\r\n\t\t */\r\n\t\tthis.valueSubject = new BehaviorSubject<string[]>([]);\r\n\r\n\t\tif (refinerDefinition.selected) {\r\n\t\t\tthis.valueSubject.next(refinerDefinition.selected);\r\n\t\t}\r\n\r\n\t\tif (refinerDefinition.preSelectedValues) {\r\n\t\t\tthis.defaultPreSelectValues = refinerDefinition.preSelectedValues.map(\r\n\t\t\t\tdefaultSelectedValue => defaultSelectedValue\r\n\t\t\t);\r\n\t\t\tthis.valueSubject.next(refinerDefinition.preSelectedValues);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * @deprecated Use `SimpleRefinerDefinition` instead of `SimpleRefiner`\r\n */\r\nexport class SimpleRefiner extends SimpleRefinerDefinition {}\r\n","import { ISimpleOption } from './ISimpleOption';\r\nexport class SimpleOption implements ISimpleOption {\r\n\t/**\r\n\t * A badge can be shown next to the label.  A badge can be used to indicate how many records an Option represents\r\n\t *\r\n\t * @example\r\n\t * \t\t[X] In Progress\t\t2,900\t{\tslug: 'inProgress'; \tisSelected: true;\tbadge: 2900 }\r\n\t * \t\t[ ] On Hold\t\t\t2,500\t{\tslug: 'onHold'\t\t\tisSelected: false;\tbadge: 2500 }\r\n\t * \t\t[ ] Slipping\t\t  500\t{\tslug: 'slipping';\t\tisSelected: false;\tbadge: 500 }\r\n\t */\r\n\tbadge?: string | number;\r\n\t/**\r\n\t * A translated, human-readable label representing of the option.\r\n\t */\r\n\tlabel: string;\r\n\t/**\r\n\t * A keyable, serializable name/representation of the Option, such as 'inProgress'\r\n\t */\r\n\tslug: string;\r\n\t/**\r\n\t * A default value for the option.\r\n\t */\r\n\tisSelected?: any;\r\n\t/**\r\n\t * If there is value in tooltip text then tooltip would displayed radio refiner\r\n\t */\r\n\ttooltipText?: string = '';\r\n\t/**\r\n\t * By default references the image present in assets folder inside porcelain. Just pass on the image URL located in your application directory\r\n\t * */\r\n\tcustomToolTipImageUrl?: string = '';\r\n\r\n\t/**\r\n\t * Create an instance of Option from an IOption. If incoming IOption fields are present, they will be set.\r\n\t */\r\n\tconstructor(simpleOption?: ISimpleOption) {\r\n\t\tif (simpleOption) {\r\n\t\t\tthis.badge = simpleOption.badge ? simpleOption.badge : null;\r\n\t\t\tthis.label = simpleOption.label ? simpleOption.label : '';\r\n\t\t\tthis.slug = simpleOption.slug ? simpleOption.slug : '';\r\n\t\t\tthis.isSelected = simpleOption.isSelected ? simpleOption.isSelected : null;\r\n\t\t\tthis.tooltipText = simpleOption.tooltipText ? simpleOption.tooltipText : '';\r\n\t\t\tthis.customToolTipImageUrl = simpleOption.customToolTipImageUrl\r\n\t\t\t\t? simpleOption.customToolTipImageUrl\r\n\t\t\t\t: '';\r\n\t\t}\r\n\t}\r\n}\r\n","import { SimpleOption } from './SimpleOption';\r\nimport { IDateOption } from './IDateOption';\r\n/**\r\n * Represents a date range option within a Date Refiner\r\n *\r\n * @example\r\n * ```typescript\r\n * \timport { DateOption } from '../path/to/IOption.ts'\r\n *\r\n * \t@Component({})\r\n * \texport class MyComponent {\r\n * \t\tmodifiedOnRefiner = {\r\n * \t\t\tdateOptionSlug: new DateOption({\r\n * \t\t\t\tbadge: '1',\r\n * \t\t\t\tlabel: 'Modified on...',\r\n * \t\t\t\tslug: 'modified',\r\n * \t\t\t\tvalue: false,\r\n * \t\t\t\tgetFrom: () => getYesterday(),\r\n * \t\t\t\tgetTo: () => getToday()\r\n * \t\t\t})\r\n * \t\t};\r\n * \t}\r\n * ```\r\n */\r\nexport class DateOption extends SimpleOption implements IDateOption {\r\n\t/**\r\n\t * Function to generate the start value for the date refiner range.  If no start value, return null.\r\n\t */\r\n\tgetFrom: (fromString: string | Date) => Date;\r\n\t/**\r\n\t * Function to generate the end (to) value for the date refiner range. If no end value is needed, return null.\r\n\t *\r\n\t * @param toString A string to parse, representing the later date.\r\n\t * @returns a Date object (or null) representing the value parsed from `toString`\r\n\t */\r\n\tgetTo: (toString: string | Date) => Date;\r\n\tconstructor(dateOptionDefinition: IDateOption) {\r\n\t\tsuper(dateOptionDefinition);\r\n\t\tconst returnNull = () => null;\r\n\t\tif (dateOptionDefinition) {\r\n\t\t\tthis.getFrom = dateOptionDefinition.getFrom || returnNull;\r\n\t\t\tthis.getTo = dateOptionDefinition.getTo || returnNull;\r\n\t\t}\r\n\t}\r\n}\r\n","import { DateTime } from 'luxon';\r\nimport { DateOption } from '../../../types/Options/DateOption';\r\nimport { IDictionary } from '../../../types/Containers/IDictonary/IDictionary';\r\n\r\nexport const i18nDateOptions = (\r\n\tviewAllLabel: string = 'View All',\r\n\ttodayLabel: string = 'Today',\r\n\tlastSevenDaysLabel: string = 'Last 7 days',\r\n\tlastThirtyDaysLabel: string = 'Last 30 days',\r\n\tlastNinetyDaysLabel: string = 'Last 90 days',\r\n\tcustomLabel: string = 'Date Range'\r\n): IDictionary<DateOption> => ({\r\n\t'-1': new DateOption({\r\n\t\tslug: '-1',\r\n\t\tgetTo: () => null,\r\n\t\tgetFrom: () => null,\r\n\t\tlabel: viewAllLabel\r\n\t}),\r\n\t// select item where getFrom() <= date < getTo()\r\n\t'1': new DateOption({\r\n\t\tlabel: todayLabel,\r\n\t\tslug: '1',\r\n\t\tgetFrom: () =>\r\n\t\t\tDateTime.now()\r\n\t\t\t\t.toUTC()\r\n\t\t\t\t.startOf('day')\r\n\t\t\t\t.toJSDate(),\r\n\t\tgetTo: () =>\r\n\t\t\tDateTime.now()\r\n\t\t\t\t.toUTC()\r\n\t\t\t\t.endOf('day')\r\n\t\t\t\t.toJSDate()\r\n\t}),\r\n\t'7': new DateOption({\r\n\t\tlabel: lastSevenDaysLabel,\r\n\t\tslug: '7',\r\n\t\tgetFrom: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.startOf('day')\r\n\t\t\t\t.minus({ days: 6 })\r\n\t\t\t\t.toJSDate(),\r\n\t\tgetTo: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.endOf('day')\r\n\t\t\t\t.toJSDate()\r\n\t}),\r\n\t'30': new DateOption({\r\n\t\tlabel: lastThirtyDaysLabel,\r\n\t\tslug: '30',\r\n\t\tgetFrom: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.startOf('day')\r\n\t\t\t\t.minus({ days: 29 })\r\n\t\t\t\t.toJSDate(),\r\n\t\tgetTo: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.endOf('day')\r\n\t\t\t\t.toJSDate()\r\n\t}),\r\n\t'90': new DateOption({\r\n\t\tlabel: lastNinetyDaysLabel,\r\n\t\tslug: '90',\r\n\t\tgetFrom: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.startOf('day')\r\n\t\t\t\t.minus({ days: 89 })\r\n\t\t\t\t.toJSDate(),\r\n\t\tgetTo: () =>\r\n\t\t\tDateTime.utc()\r\n\t\t\t\t.endOf('day')\r\n\t\t\t\t.toJSDate()\r\n\t}),\r\n\tcustom: new DateOption({\r\n\t\tisSelected: true,\r\n\t\tlabel: customLabel,\r\n\t\tslug: 'custom',\r\n\t\tgetFrom: (fromValue?: string | Date) => {\r\n\t\t\tif (fromValue) {\r\n\t\t\t\treturn (typeof fromValue === 'string'\r\n\t\t\t\t\t? DateTime.fromISO(fromValue)\r\n\t\t\t\t\t: DateTime.fromJSDate(fromValue)\r\n\t\t\t\t)\r\n\t\t\t\t\t.toUTC()\r\n\t\t\t\t\t.startOf('day')\r\n\t\t\t\t\t.toJSDate();\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetTo: (toValue?: string | Date) => {\r\n\t\t\tif (toValue) {\r\n\t\t\t\treturn (typeof toValue === 'string'\r\n\t\t\t\t\t? DateTime.fromISO(toValue)\r\n\t\t\t\t\t: DateTime.fromJSDate(toValue)\r\n\t\t\t\t)\r\n\t\t\t\t\t.toUTC()\r\n\t\t\t\t\t.endOf('day')\r\n\t\t\t\t\t.toJSDate();\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n});\r\n","// rxjs\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n// Library\r\nimport { BaseRefinerDefinition } from './BaseRefinerDefinition';\r\nimport { DateOptions } from '../Options/DateOptions';\r\nimport { DateRefinerValue } from '../Values/DateRefinerValue';\r\nimport { i18nDateOptions } from '../../utilities/i18n/i18nDateOptions/i18nDateOptions';\r\nimport { IDateOption } from '../Options/IDateOption';\r\nimport { IDateRefinerDefinition } from './IDateRefinerDefinition';\r\nimport { IDateRefinerState } from '../../../date-refiner/date-refiner/date-refiner.component';\r\nimport { RefinerType } from './RefinerType';\r\n\r\n/**\r\n * Defines DateRefinerComponent behavior.\r\n * @since 1.4.0\r\n */\r\nexport class DateRefinerDefinition extends BaseRefinerDefinition implements IDateRefinerDefinition {\r\n\toptions?: DateOptions;\r\n\tvalue?: DateRefinerValue;\r\n\tvalueSubject: BehaviorSubject<IDateRefinerState>;\r\n\tconstructor(dateRefiner: IDateRefinerDefinition) {\r\n\t\tsuper(dateRefiner);\r\n\t\tthis.type = 'date';\r\n\r\n\t\tif (dateRefiner) {\r\n\t\t\tthis.options = dateRefiner.options || i18nDateOptions();\r\n\t\t}\r\n\r\n\t\tconst firstOption = Object.keys(this.options).map(key => this.options[key])[0] as IDateOption;\r\n\r\n\t\tthis.valueSubject = new BehaviorSubject<IDateRefinerState>(\r\n\t\t\tdateRefiner.value\r\n\t\t\t\t? {\r\n\t\t\t\t\t\tfrom: dateRefiner.value.from,\r\n\t\t\t\t\t\toptionSlug: dateRefiner.value.optionSlug,\r\n\t\t\t\t\t\tto: dateRefiner.value.to\r\n\t\t\t\t  }\r\n\t\t\t\t: {\r\n\t\t\t\t\t\tfrom: firstOption.getFrom(null),\r\n\t\t\t\t\t\toptionSlug: firstOption.slug,\r\n\t\t\t\t\t\tto: firstOption.getTo(null)\r\n\t\t\t\t  }\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * @deprecated Use `DateRefinerDefinition` instead of `DateRefiner`\r\n */\r\nexport class DateRefiner extends DateRefinerDefinition {}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-truncate, p-truncate',\r\n\ttemplateUrl: './truncate.component.html',\r\n\tstyleUrls: ['./truncate.component.scss']\r\n})\r\nexport class TruncateComponent implements OnInit {\r\n\t@Input() value: string;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<div class=\"truncate\">\r\n\t<span class=\"truncate__value\" title=\"{{ value }}\">\r\n\t\t{{ value }}\r\n\t</span>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Loggable } from '../../Loggable';\r\nimport { faCaretDown } from '@fortawesome/free-solid-svg-icons';\r\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\r\n\r\nexport type ExpandoIconPosition = 'before' | 'after';\r\n\r\nconst expandoRestrictInitialAnimation = trigger('restrictInitialAnimation', [transition(':enter', [])]);\r\n\r\nconst expandoSlideInOut = trigger('slideInOut', [\r\n\tstate('in', style({ height: '*' })),\r\n\ttransition(':leave', [style({ height: '*' }), group([animate(300, style({ height: '0px' }))])]),\r\n\ttransition(':enter', [style({ height: '0px' }), group([animate(300, style({ height: '*' }))])])\r\n]);\r\n\r\n@Component({\r\n\tselector: 'porcelain-expando, p-expando',\r\n\ttemplateUrl: './expando.component.html',\r\n\tstyleUrls: ['./expando.component.scss'],\r\n\thost: {\r\n\t\t'[class.expando--open]': 'isOpen',\r\n\t\t'[class.expando--closed]': '!isOpen',\r\n\t\t'[class.expando--disabled]': '!isOpen && isDisabled && disable'\r\n\t},\r\n\tanimations: [expandoRestrictInitialAnimation, expandoSlideInOut]\r\n})\r\nexport class ExpandoComponent extends Loggable implements OnInit {\r\n\treadonly name = 'ExpandoComponent';\r\n\r\n\t@Input() title: string = '';\r\n\r\n\t@Input() iconPosition: ExpandoIconPosition = 'after';\r\n\r\n\t@Input() icon: any = faCaretDown;\r\n\r\n\t@Input() isDisabled: boolean;\r\n\t@Input() disable: boolean = false; /*Sets the disable flag to disable refiners in required apps*/\r\n\t@Input() enableCustomDateRange: boolean = false;\r\n\r\n\tprivate _isOpen: boolean;\r\n\r\n\t@Input()\r\n\tget isOpen(): boolean {\r\n\t\treturn this._isOpen;\r\n\t}\r\n\r\n\tset isOpen(isOpen: boolean) {\r\n\t\tif (this.disable && this.isDisabled) {\r\n\t\t\tthis._isOpen = !this.isDisabled;\r\n\t\t} else {\r\n\t\t\tthis._isOpen = isOpen;\r\n\t\t}\r\n\r\n\t\tthis.isOpenChange.emit(this._isOpen);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic isOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\ttoggle(event) {\r\n\t\tthis.debug(`Toggling isOpen ${this.isOpen} => ${!this.isOpen}`);\r\n\t\tthis.isOpen = !this.isOpen;\r\n\t}\r\n}\r\n","<div class=\"expando__header\" (click)=\"toggle($event)\">\r\n\t<ng-container\r\n\t\t*ngTemplateOutlet=\"icon && iconPosition === 'before' ? iconTemplate : nothing\"\r\n\t></ng-container>\r\n\r\n\t<ng-container\r\n\t\t*ngTemplateOutlet=\"title !== '' ? useTitleProperty : useHeaderComponent\"\r\n\t></ng-container>\r\n\r\n\t<ng-template #useHeaderComponent>\r\n\t\t<div class=\"expando__title\">\r\n\t\t\t<ng-content select=\"porcelain-expando-header, p-expando-header\"></ng-content>\r\n\t\t</div>\r\n\t</ng-template>\r\n\t<ng-template #useTitleProperty>\r\n\t\t<span class=\"expando__title\">{{ title }}</span>\r\n\t</ng-template>\r\n\r\n\t<ng-container\r\n\t\t*ngTemplateOutlet=\"icon && iconPosition === 'after' ? iconTemplate : nothing\"\r\n\t></ng-container>\r\n\r\n\t<ng-template #iconTemplate>\r\n\t\t<span\r\n\t\t\tclass=\"expando__toggle\"\r\n\t\t\t[class.expando__toggle--before]=\"iconPosition === 'before'\"\r\n\t\t\t[class.expando__toggle--after]=\"iconPosition === 'after'\"\r\n\t\t>\r\n\t\t\t<fa-icon [icon]=\"icon\"></fa-icon>\r\n\t\t</span>\r\n\t</ng-template>\r\n\r\n\t<ng-template #nothing></ng-template>\r\n</div>\r\n<div @restrictInitialAnimation>\r\n\t<div class=\"expando__body\" *ngIf=\"isOpen\" @slideInOut>\r\n\t\t<ng-container *ngTemplateOutlet=\"title !== '' ? useAllContent : useBodyComponent\"></ng-container>\r\n\t\t<ng-template #useAllContent>\r\n\t\t\t<ng-content></ng-content>\r\n\t\t</ng-template>\r\n\t\t<ng-template #useBodyComponent>\r\n\t\t\t<ng-content select=\"porcelain-expando-body, p-expando-body\"></ng-content>\r\n\t\t</ng-template>\r\n\t</div>\r\n</div>\r\n","// Angular\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n// Font Awesome 5\r\nimport { faCaretDown, IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n// Utilities\r\n\r\nimport { IMyDateModel, AngularMyDatePickerDirective } from 'angular-mydatepicker';\r\n\r\n// Porcelain\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { IDictionary } from '../../shared/types/Containers/IDictonary/IDictionary';\r\nimport { DateOption } from '../../shared/types/Options/DateOption';\r\nimport { DateRefinerDefinition } from '../../shared/types/Refiners/DateRefinerDefinition';\r\nimport { DateRefinerValue } from '../../shared/types/Values/DateRefinerValue';\r\nimport { i18nDateOptions } from '../../shared/utilities/i18n/i18nDateOptions/i18nDateOptions';\r\nimport { IDateRefinerDefinition } from '../../shared/types/Refiners/IDateRefinerDefinition';\r\nimport { Loggable } from '../../Loggable';\r\nimport { DateTime } from 'luxon';\r\n\r\nexport interface IDateRefinerProps {\r\n\tisOpen?: boolean;\r\n\trefiner: IDateRefinerDefinition;\r\n\tonRefinerChange: EventEmitter<any>;\r\n}\r\n\r\nexport interface IDateRefinerState {\r\n\toptionSlug: string;\r\n\tfrom: string | Date | DateTime;\r\n\tto: string | Date | DateTime;\r\n}\r\n\r\nexport const defaultDateOptions: IDictionary<DateOption> = i18nDateOptions();\r\n//export const customDateRangeFormat: IDictionary<DateOption> = customDateRange();\r\n\r\n// const animationOptionsInOut = generateSlideInOut('optionsInOut'),\r\n// \tanimationRangeInOut = generateSlideInOut('rangeInOut');\r\n\r\nexport interface ISimplifiedMyDateModel {\r\n\tdate: IMyDateModel;\r\n}\r\n\r\n@Component({\r\n\tselector: 'porcelain-date-refiner, p-date-refiner',\r\n\ttemplateUrl: './date-refiner.component.html',\r\n\tstyleUrls: ['./date-refiner.component.scss']\r\n})\r\nexport class DateRefinerComponent extends Loggable implements OnInit {\r\n\treadonly name = 'DateRefinerComponent';\r\n\r\n\t// Inputs\r\n\t@Input('isOpen') isOpen: boolean = true;\r\n\t@Input() disable: boolean;\r\n\t@Input() refiner: DateRefinerDefinition;\r\n\r\n\t@Input() datePickerOptions = {\r\n\t\tdateFormat: 'yyyy-mm-dd',\r\n\t\tdayLabels: {\r\n\t\t\tsu: 'Sun',\r\n\t\t\tmo: 'Mon',\r\n\t\t\ttu: 'Tue',\r\n\t\t\twe: 'Wed',\r\n\t\t\tth: 'Thu',\r\n\t\t\tfr: 'Fri',\r\n\t\t\tsa: 'Sat'\r\n\t\t},\r\n\t\tmonthLabels: {\r\n\t\t\t1: 'Jan',\r\n\t\t\t2: 'Feb',\r\n\t\t\t3: 'Mar',\r\n\t\t\t4: 'Apr',\r\n\t\t\t5: 'May',\r\n\t\t\t6: 'Jun',\r\n\t\t\t7: 'Jul',\r\n\t\t\t8: 'Aug',\r\n\t\t\t9: 'Sep',\r\n\t\t\t10: 'Oct',\r\n\t\t\t11: 'Nov',\r\n\t\t\t12: 'Dec'\r\n\t\t},\r\n\t\tstylesData: {\r\n\t\t\tselector: 'date-picker',\r\n\t\t\tstyles: `\r\n\t\t\t`\r\n\t\t}\r\n\t};\r\n\r\n\t@Input() fromLabel: string = 'From';\r\n\t@Input() toLabel: string = 'To';\r\n\t@Input() fromLabel2: string = 'From:';\r\n\t@Input() toLabel2: string = 'To:';\r\n\t@Input() resetLabel: string = 'Reset';\r\n\t@Input() placeHolderValue: string = 'YYYY-MM-DD';\r\n\t@Input() invalidCustomRangeLabel: string = 'Please select a valid date range.';\r\n\t@Input() enableCustomDateRange: boolean = false; //flag to enable custom date range options in CP apps\r\n\t@Input() invalidFromDateLabel: string = '\"From\" date cannot be greater than \"To\" date';\r\n\t@Input() invalidToDateLabel: string = '\"To\" date cannot be less than \"From\" date';\r\n\t/**\r\n\t/**\r\n\t * Defines emit behavior for invalid ranges.\r\n\t * Set to true to allow unbounded ranges (with a null to or from value)\r\n\t */\r\n\t@Input() allowIncompleteEmit: boolean = true;\r\n\r\n\t// Outputs\r\n\t@Output() onRefinerChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\t@Output() public updateDateInputStatus: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n\t// Icons\r\n\tfaChevronDown: IconDefinition = faCaretDown;\r\n\r\n\t// Constants\r\n\toptions: IDictionary<DateOption> = defaultDateOptions;\r\n\r\n\t// Angular\r\n\tobjectKeys = Object.keys;\r\n\r\n\t// State\r\n\tcurrentOptionSlug: string;\r\n\tprivate ignoreNext: boolean = false;\r\n\r\n\t/**\r\n\t * Boolean flag to keep track of date refiner input invalid status\r\n\t * */\r\n\tpublic isCustomDateRangeInvalid = false;\r\n\r\n\tfromModel: IMyDateModel = null;\r\n\ttoModel: IMyDateModel = null;\r\n\r\n\t@ViewChild('fromDatePicker', { static: false })\r\n\tpublic fromMyDatePickRef: AngularMyDatePickerDirective = null;\r\n\r\n\t@ViewChild('toDatePicker', { static: false })\r\n\tpublic toMyDatePickRef: AngularMyDatePickerDirective = null;\r\n\r\n\tcustomDateRangeErrorMsg: string = '';\r\n\r\n\tconstructor(private translationService: TranslationService) {\r\n\t\tsuper();\r\n\t\tthis.log('constructor()');\r\n\r\n\t\t/**\r\n\t\t * Applies translations using myUL Translation file format.\r\n\t\t **/\r\n\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate<DateRefinerComponent>(this, {\r\n\t\t\t\tlabel_From: 'fromLabel',\r\n\t\t\t\tlabel_To: 'toLabel',\r\n\t\t\t\tlabel_PleaseSelectAValidDateRange: 'invalidCustomRangeLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tparseDateState(date: string | Date | DateTime): IMyDateModel {\r\n\t\tthis.debug('parseDateState(date)', { date });\r\n\t\t// prettier-ignore\r\n\t\tconst parsed: DateTime =\r\n\t\t\ttypeof date === 'string' ? DateTime.fromISO(date, { zone: 'utc' })\r\n\t\t\t\t: date instanceof Date ? DateTime.fromJSDate(date).toUTC()\r\n\t\t\t\t: date instanceof DateTime ? date\r\n\t\t\t\t: null;\r\n\r\n\t\tif (parsed.isValid) {\r\n\t\t\treturn {\r\n\t\t\t\tisRange: false,\r\n\t\t\t\tsingleDate: {\r\n\t\t\t\t\tdate: {\r\n\t\t\t\t\t\tday: parsed.day,\r\n\t\t\t\t\t\tmonth: parsed.month, // Zero-indexed => One-indexed\r\n\t\t\t\t\t\tyear: parsed.year\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.debug('ngOnInit()');\r\n\r\n\t\tthis.options = this.refiner.options ? this.refiner.options : defaultDateOptions;\r\n\r\n\t\tfor (let optionSlug in this.options) {\r\n\t\t\tif (this.options.hasOwnProperty(optionSlug)) {\r\n\t\t\t\tlet option = this.options[optionSlug];\r\n\t\t\t\tif (option instanceof DateOption) {\r\n\t\t\t\t\tif (option.isSelected === true) {\r\n\t\t\t\t\t\tthis.currentOptionSlug = optionSlug;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Connect new Subscription-based state updates to callback system for users using version < 1.3\r\n\t\tthis.refiner.valueSubject.subscribe(value => {\r\n\t\t\tthis.onRefinerChange.emit([this.refiner.slug, value]);\r\n\t\t});\r\n\r\n\t\t// Subscribe to updates to the value, which can be pushed by anyone with a reference to `this.refiner`.\r\n\t\tthis.refiner.valueSubject.subscribe(value => {\r\n\t\t\tif (this.ignoreNext) {\r\n\t\t\t\tthis.ignoreNext = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.currentOptionSlug = value.optionSlug;\r\n\t\t\t\tif (value.from && value.to) {\r\n\t\t\t\t\tthis.fromModel = this.parseDateState(value.from);\r\n\t\t\t\t\tthis.toModel = this.parseDateState(value.to);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.fromModel = null;\r\n\t\t\t\t\tthis.toModel = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetDisabled() {\r\n\t\treturn this.disable && !this.isOpen;\r\n\t}\r\n\r\n\tonFromChange($event) {\r\n\t\tthis.debug('onFromChange($event)', { $event });\r\n\t\tthis.fromModel = $event;\r\n\t\tthis.onChange(this.currentOptionSlug);\r\n\t\tif (this.enableCustomDateRange) {\r\n\t\t\tthis.customDateRangeValidation('onFromChange');\r\n\t\t}\r\n\t}\r\n\r\n\tonToChange($event) {\r\n\t\tthis.debug('onToChange($event)', { $event });\r\n\t\tthis.toModel = $event;\r\n\t\tthis.onChange(this.currentOptionSlug);\r\n\t\tif (this.enableCustomDateRange) {\r\n\t\t\tthis.customDateRangeValidation('onToChange');\r\n\t\t}\r\n\t}\r\n\r\n\tisCustomRangeValid() {\r\n\t\tconst value = this.getValue();\r\n\t\tif (value.optionSlug === 'custom') {\r\n\t\t\tif (this.allowIncompleteEmit) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tvalue.from instanceof Date &&\r\n\t\t\t\t\tvalue.to instanceof Date &&\r\n\t\t\t\t\tvalue.from.getTime() < value.to.getTime()\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculate whether or not the range is considered \"complete\".\r\n\t */\r\n\tisComplete(): boolean {\r\n\t\tconst value = this.getValue();\r\n\t\tthis.debug('isComplete()', { value });\r\n\r\n\t\t// -1 is a slug commonly associated with 'all' (as in no start or end)\r\n\t\tif (value.optionSlug === '-1') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tvalue.from instanceof Date &&\r\n\t\t\tvalue.to instanceof Date &&\r\n\t\t\tvalue.from.getTime() < value.to.getTime() // are unix epoch timestamps\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Events\r\n\tonChange(newOptionSlug: string) {\r\n\t\tlet shouldEmit = false;\r\n\r\n\t\t// update currentOptionSlug here, as inComplete and getValue\r\n\t\t// rely on the updated value.\r\n\t\tthis.currentOptionSlug = newOptionSlug;\r\n\r\n\t\tconst isComplete = this.isComplete();\r\n\t\tconst value = this.getValue();\r\n\r\n\t\tthis.debug('onChange(newOptionSlug)', 'before validation', {\r\n\t\t\tallowIncompleteEmit: this.allowIncompleteEmit,\r\n\t\t\tisComplete,\r\n\t\t\tvalue,\r\n\t\t\tnewOptionSlug\r\n\t\t});\r\n\r\n\t\t// the current option has changed to a predefined range\r\n\t\tif (this.currentOptionSlug !== 'custom' && isComplete) {\r\n\t\t\tshouldEmit = true;\r\n\t\t}\r\n\r\n\t\t// custom refiner options may generate unbounded ranges, and need to emit\r\n\t\tif (this.currentOptionSlug !== 'custom' && !isComplete && this.allowIncompleteEmit) {\r\n\t\t\tshouldEmit = true;\r\n\t\t}\r\n\r\n\t\t// or we're emitting a complete custom range\r\n\t\tif (this.currentOptionSlug === 'custom' && isComplete) {\r\n\t\t\tshouldEmit = true;\r\n\t\t}\r\n\r\n\t\t// or the range is incomplete/invalid, but allowed by flag\r\n\t\tif (this.currentOptionSlug === 'custom' && !isComplete && this.allowIncompleteEmit) {\r\n\t\t\tshouldEmit = true;\r\n\t\t}\r\n\r\n\t\tif (shouldEmit === true) {\r\n\t\t\tthis.debug('onChange()', 'emitting value', { value });\r\n\t\t\tthis.ignoreNext = true;\r\n\t\t\tthis.refiner.valueSubject.next(value);\r\n\t\t}\r\n\r\n\t\t//update date refiner input invalid status incase if it exists\r\n\t\tthis.isCustomDateRangeInvalid = !this.isCustomRangeValid();\r\n\t\tthis.updateDateInputStatus.emit(this.isCustomDateRangeInvalid);\r\n\t}\r\n\r\n\t// States\r\n\toptionHasBadge(dateOptionOrDate: DateOption | Date): boolean {\r\n\t\treturn dateOptionOrDate instanceof DateOption && typeof dateOptionOrDate.badge !== 'undefined';\r\n\t}\r\n\r\n\t/**\r\n\t * Computes and returns the current date range using UTC time as the working time zone.\r\n\t *\r\n\t * When the current option is 'custom', the dates for to and from are computed from toModel and fromModel, respectively.\r\n\t * If the values are not set, (toModel/fromModel are blank), the component will return null.\r\n\t * If the component's shouldEmitIncomplete input is TRUE, these values will be emitted to your application immediately.\r\n\t * Otherwise, the component will wait for a valid range before emitting any values.\r\n\t * \tset [shouldEmitIncomplete]=\"true\" to get incomplete ranges (allowing omitted start and/or omitted end)\r\n\t * \tset [shouldEmitIncomplete]=\"false\" to ensure that your application only receives COMPLETE ranges.\r\n\t */\r\n\tgetValue(): DateRefinerValue {\r\n\t\tthis.debug('getValue()');\r\n\r\n\t\tconst currentOption = this.refiner.options[this.currentOptionSlug];\r\n\r\n\t\tif (this.currentOptionSlug === 'custom') {\r\n\t\t\tthis.debug('this.fromModel, this.toModel', {\r\n\t\t\t\tfromModel: this.fromModel,\r\n\t\t\t\ttoModel: this.toModel\r\n\t\t\t});\r\n\t\t\tconst from = this.fromModel\r\n\t\t\t\t? currentOption.getFrom(\r\n\t\t\t\t\t\tDateTime.utc()\r\n\t\t\t\t\t\t\t.set({\r\n\t\t\t\t\t\t\t\tyear: this.fromModel.singleDate.date.year,\r\n\t\t\t\t\t\t\t\tmonth: this.fromModel.singleDate.date.month,\r\n\t\t\t\t\t\t\t\tday: this.fromModel.singleDate.date.day\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.startOf('day')\r\n\t\t\t\t\t\t\t.toJSDate()\r\n\t\t\t\t  )\r\n\t\t\t\t: null;\r\n\r\n\t\t\tconst to = this.toModel\r\n\t\t\t\t? currentOption.getTo(\r\n\t\t\t\t\t\tDateTime.utc()\r\n\t\t\t\t\t\t\t.set({\r\n\t\t\t\t\t\t\t\tyear: this.toModel.singleDate.date.year,\r\n\t\t\t\t\t\t\t\tmonth: this.toModel.singleDate.date.month,\r\n\t\t\t\t\t\t\t\tday: this.toModel.singleDate.date.day\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.endOf('day')\r\n\t\t\t\t\t\t\t.toJSDate()\r\n\t\t\t\t  )\r\n\t\t\t\t: null;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tfrom,\r\n\t\t\t\tto,\r\n\t\t\t\toptionSlug: 'custom'\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.currentOptionSlug === '-1') {\r\n\t\t\treturn {\r\n\t\t\t\tfrom: null,\r\n\t\t\t\tto: null,\r\n\t\t\t\toptionSlug: '-1'\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\tfrom: currentOption.getFrom(null),\r\n\t\t\t\tto: currentOption.getTo(null),\r\n\t\t\t\toptionSlug: this.currentOptionSlug\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionLabel(option: DateOption): string {\r\n\t\tif (option instanceof DateOption) {\r\n\t\t\tif (option.label) {\r\n\t\t\t\treturn option.label;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionBadge(option: DateOption | Date): string {\r\n\t\tif (option instanceof DateOption) {\r\n\t\t\tif (option.badge) {\r\n\t\t\t\tif (typeof option.badge === 'number') {\r\n\t\t\t\t\treturn option.badge.toLocaleString();\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn option.badge;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t// Mutators\r\n\t//toggleOpen() {\r\n\t//\tthis.debug('toggleOpen()', { isOpen: this.isOpen });\r\n\t//\tthis.isOpen = !this.isOpen;\r\n\t//}\r\n\r\n\t/**\r\n\t * Below Function is for clearing Custom Date Range Refiners. Use ViewChild to get value\r\n\t * */\r\n\tpublic resetCustomDateRange() {\r\n\t\tthis.fromModel = null;\r\n\t\tthis.toModel = null;\r\n\t\tconst value = this.getValue();\r\n\t\tthis.refiner.valueSubject.next(value);\r\n\t\tthis.customDateRangeValidation();\r\n\t}\r\n\r\n\tcustomDateRangeValidation(key?: string) {\r\n\t\tconst value = this.getValue();\r\n\t\tif (value.from instanceof Date && value.to instanceof Date) {\r\n\t\t\tif (value.from.getTime() > value.to.getTime() && key == 'onFromChange') {\r\n\t\t\t\tthis.customDateRangeErrorMsg = this.invalidFromDateLabel;\r\n\t\t\t} else if (value.to.getTime() < value.from.getTime() && key == 'onToChange') {\r\n\t\t\t\tthis.customDateRangeErrorMsg = this.invalidToDateLabel;\r\n\t\t\t} else {\r\n\t\t\t\tthis.customDateRangeErrorMsg = '';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.customDateRangeErrorMsg = '';\r\n\t\t}\r\n\t}\r\n\r\n\tpublic isInvalidDateRange(): boolean {\r\n\t\tlet isdateRangeInvalid = !this.isCustomRangeValid();\r\n\t\treturn isdateRangeInvalid;\r\n\t}\r\n}\r\n","<porcelain-expando\r\n\t[title]=\"refiner.title\"\r\n\t[(isOpen)]=\"isOpen\"\r\n\t[disable]=\"disable\"\r\n\t[isDisabled]=\"getDisabled()\"\r\n>\r\n\t<div class=\"refiner__section refiner__toggleable\">\r\n\t\t<!-- [@optionsInOut] -->\r\n\t\t<div class=\"refiner__section  refiner__body\">\r\n\t\t\t<div class=\"refiner__section refiner__options\">\r\n\t\t\t\t<ul class=\"options\">\r\n\t\t\t\t\t<ng-container *ngIf=\"enableCustomDateRange; else defaultOptions\">\r\n\t\t\t\t\t\t<p\r\n\t\t\t\t\t\t\t[ngClass]=\"{ reset__label__style: enableCustomDateRange }\"\r\n\t\t\t\t\t\t\t(click)=\"resetCustomDateRange()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{{ resetLabel }}\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<ng-template #defaultOptions>\r\n\t\t\t\t\t\t<li *ngFor=\"let optionSlug of objectKeys(options)\" class=\"option\">\r\n\t\t\t\t\t\t\t<label class=\"media media--align-items-center\">\r\n\t\t\t\t\t\t\t\t<div class=\"media__left\">\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"radio\"\r\n\t\t\t\t\t\t\t\t\t\t[checked]=\"currentOptionSlug === optionSlug\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"optionSlug\"\r\n\t\t\t\t\t\t\t\t\t\t(change)=\"onChange(optionSlug)\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div class=\"media__body\">\r\n\t\t\t\t\t\t\t\t\t<porcelain-truncate\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"getOptionLabel(options[optionSlug])\"\r\n\t\t\t\t\t\t\t\t\t></porcelain-truncate>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\tclass=\"media__right media--align-center\"\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"optionHasBadge(options[optionSlug])\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ getOptionBadge(options[optionSlug]) }}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t</li>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t\t<!-- /.refiner__options -->\r\n\r\n\t\t\t<div class=\"refiner__section refiner__custom-range\">\r\n\t\t\t\t<!-- @blockInitialAnimation -->\r\n\t\t\t\t<ng-container>\r\n\t\t\t\t\t<!-- [@rangeInOut] -->\r\n\t\t\t\t\t<div *ngIf=\"currentOptionSlug === 'custom'\">\r\n\t\t\t\t\t\t<div class=\"range\">\r\n\t\t\t\t\t\t\t<div class=\"range__from\">\r\n\t\t\t\t\t\t\t\t<label [for]=\"fromDatePicker\">\r\n\t\t\t\t\t\t\t\t\t{{ enableCustomDateRange ? fromLabel2 : fromLabel }}\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<!-- [(ngModel)]=\"fromModel\" -->\r\n\t\t\t\t\t\t\t\t<div [ngClass]=\"{ custom_date_range_style: enableCustomDateRange }\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"enableCustomDateRange\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"datePicker__window-action\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"fromDatePicker.toggleCalendar()\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<i class=\"calendar_icon\"></i>\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tangular-mydatepicker\r\n\t\t\t\t\t\t\t\t\t\t#fromDatePicker=\"angular-mydatepicker\"\r\n\t\t\t\t\t\t\t\t\t\tname=\"fromDatePicker\"\r\n\t\t\t\t\t\t\t\t\t\t[placeholder]=\"enableCustomDateRange ? placeHolderValue : ''\"\r\n\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t\t\t\t\trange__control: !enableCustomDateRange,\r\n\t\t\t\t\t\t\t\t\t\t\trange__custom: enableCustomDateRange\r\n\t\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t\t[options]=\"datePickerOptions\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"fromModel\"\r\n\t\t\t\t\t\t\t\t\t\t(dateChanged)=\"onFromChange($event)\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"fromDatePicker.toggleCalendar()\"\r\n\t\t\t\t\t\t\t\t\t\treadonly=\"readonly\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<!--class=\"range__control\"-->\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div class=\"range__to\">\r\n\t\t\t\t\t\t\t\t<label [for]=\"toDatePicker\">\r\n\t\t\t\t\t\t\t\t\t{{ enableCustomDateRange ? toLabel2 : toLabel }}\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<div [ngClass]=\"{ custom_date_range_style: enableCustomDateRange }\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"enableCustomDateRange\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"datePicker__window-action\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"toDatePicker.toggleCalendar()\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<i class=\"calendar_icon\"></i>\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tangular-mydatepicker\r\n\t\t\t\t\t\t\t\t\t\t#toDatePicker=\"angular-mydatepicker\"\r\n\t\t\t\t\t\t\t\t\t\tname=\"toDatePicker\"\r\n\t\t\t\t\t\t\t\t\t\t[placeholder]=\"enableCustomDateRange ? placeHolderValue : ''\"\r\n\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t\t\t\t\trange__control: !enableCustomDateRange,\r\n\t\t\t\t\t\t\t\t\t\t\trange__custom: enableCustomDateRange\r\n\t\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t\t[options]=\"datePickerOptions\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"toModel\"\r\n\t\t\t\t\t\t\t\t\t\t(dateChanged)=\"onToChange($event)\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"toDatePicker.toggleCalendar()\"\r\n\t\t\t\t\t\t\t\t\t\treadonly=\"readonly\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t<!-- [(ngModel)]=\"toModel\" -->\r\n\t\t\t\t\t\t\t\t<!--class=\"range__control\"-->\r\n\t\t\t\t\t\t\t\t<!-- <my-date-picker\r\n\t\t\t#toDatePicker\r\n\t\t\tname=\"toDatePicker\"\r\n\t\t\t[options]=\"datePickerOptions\"\r\n\t\t\t[(ngModel)]=\"toModel\"\r\n\t\t\t(dateChanged)=\"onToChange($event)\"\r\n\t\t></my-date-picker> -->\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div class=\"range__error\" *ngIf=\"isInvalidDateRange()\">\r\n\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\t\t\t\tenableCustomDateRange;\r\n\t\t\t\t\t\t\t\t\t\tthen customDateRangeError;\r\n\t\t\t\t\t\t\t\t\t\telse customDateRangeStackError\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t<ng-template #customDateRangeError>\r\n\t\t\t\t\t\t\t\t\t{{ customDateRangeErrorMsg }}\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t<ng-template #customDateRangeStackError>\r\n\t\t\t\t\t\t\t\t\t{{ invalidCustomRangeLabel }}\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t\t<!-- /.refiner__custom-range -->\r\n\t\t</div>\r\n\t\t<!-- /.refiner__body -->\r\n\t</div>\r\n</porcelain-expando>\r\n","export const defaultShowLessLabel = 'Show Less';\r\n","export const defaultShowMoreLabel = 'Show %u More';\r\n","export const defaultSelectAllLabel = 'Select All';\r\n","export const defaultSelectNoneLabel = 'Select None';\r\n","export const defaultOptionShowCount = 5;\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { sprintf } from 'sprintf-js';\r\n\r\n@Pipe({\r\n\tname: 'sprintf'\r\n})\r\nexport class SprintfPipe implements PipeTransform {\r\n\t/**\r\n\t * Provides sprintf pipe for templates\r\n\t * @example html\r\n\t * \t<p>USD {{ currencyAmount | sprintf:'%.02f' }}</p>\r\n\t */\r\n\ttransform(formatString: any, ...args: any[]): any {\r\n\t\treturn sprintf(formatString, ...args);\r\n\t}\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport {\r\n\tfaCaretDown,\r\n\tfaChevronDown,\r\n\tfaChevronUp,\r\n\tIconDefinition\r\n} from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { SimpleRefinerDefinition } from '../../shared/types/Refiners/SimpleRefinerDefinition';\r\nimport { defaultShowLessLabel } from '../../shared/defaults/labels/defaultShowLessLabel';\r\nimport { defaultShowMoreLabel } from '../../shared/defaults/labels/defaultShowMoreLabel';\r\nimport { defaultSelectAllLabel } from '../../shared/defaults/labels/defaultSelectAllLabel';\r\nimport { defaultSelectNoneLabel } from '../../shared/defaults/labels/defaultSelectNoneLabel';\r\nimport { defaultOptionShowCount } from '../../shared/defaults/properties/defaultOptionShowCount';\r\nimport { SimpleOption } from '../../shared/types/Options/SimpleOption';\r\n\r\n@Component({\r\n\tselector: 'porcelain-simple-refiner, p-simple-refiner',\r\n\ttemplateUrl: './simple-refiner.component.html',\r\n\tstyleUrls: ['./simple-refiner.component.scss'],\r\n\tanimations: []\r\n})\r\nexport class SimpleRefinerComponent implements OnInit {\r\n\t// Inputs\r\n\t@Input() refiner: SimpleRefinerDefinition;\r\n\t@Input('showCount') _showCount: number;\r\n\t@Input('isOpen') _isOpen: boolean;\r\n\t@Input('isExpanded') _isExpanded: boolean;\r\n\r\n\t//#region Labels\r\n\r\n\t@Input('showLessLabel') showLessLabel = defaultShowLessLabel;\r\n\t@Input('showMoreLabel') showMoreLabel = defaultShowMoreLabel;\r\n\t@Input('selectAllLabel') selectAllLabel = defaultSelectAllLabel;\r\n\t@Input('selectNoneLabel') selectNoneLabel = defaultSelectNoneLabel;\r\n\t@Input() disable: boolean = true; /*Sets the disable flag to disable refiners in required apps*/\r\n\r\n\t//#endregion\r\n\r\n\t// Getters\r\n\tget showCount() {\r\n\t\treturn this._showCount || this.refiner.showCount || defaultOptionShowCount;\r\n\t}\r\n\r\n\tset showCount(newCount: number) {\r\n\t\tthis._showCount = newCount;\r\n\t}\r\n\r\n\tget isOpen() {\r\n\t\treturn this._isOpen;\r\n\t}\r\n\r\n\tset isOpen(newIsOpenValue: boolean) {\r\n\t\tthis._isOpen = newIsOpenValue;\r\n\t}\r\n\r\n\tget isExpanded(): boolean {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tset isExpanded(newIsExpandedValue: boolean) {\r\n\t\tthis._isExpanded = newIsExpandedValue;\r\n\t}\r\n\r\n\t// Outputs\r\n\t@Output() onRefinerChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\t//#region Icons\r\n\tfaChevronDown: IconDefinition = faCaretDown;\r\n\tcontractIcon: IconDefinition = faChevronUp;\r\n\texpandIcon: IconDefinition = faChevronDown;\r\n\t//#endregion\r\n\r\n\t// State\r\n\tvalues: { [optionSlug: string]: boolean } = {};\r\n\tprivate ignoreNext: boolean = false;\r\n\r\n\tconstructor(private translationService: TranslationService) {\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate<SimpleRefinerComponent>(this, {\r\n\t\t\t\tlabel_ShowMore: 'showMoreLabel',\r\n\t\t\t\tlabel_ShowLess: 'showLessLabel',\r\n\t\t\t\tlabel_SelectAll: 'selectAllLabel',\r\n\t\t\t\tlabel_SelectNone: 'selectNoneLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// Pick the `isOpen` value;\r\n\t\tlet isOpen = true;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.isOpen === 'boolean') {\r\n\t\t\tisOpen = this.refiner.isOpen;\r\n\t\t}\r\n\r\n\t\tif (typeof this._isOpen === 'boolean') {\r\n\t\t\tisOpen = this._isOpen;\r\n\t\t}\r\n\r\n\t\tthis.isOpen = !!isOpen;\r\n\r\n\t\t// Pick the `showCount` value\r\n\t\tlet showCount = defaultOptionShowCount;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.showCount === 'number') {\r\n\t\t\tshowCount = this.refiner.showCount;\r\n\t\t}\r\n\r\n\t\tif (typeof this._showCount === 'number') {\r\n\t\t\tshowCount = this._showCount;\r\n\t\t}\r\n\r\n\t\tthis.showCount = showCount;\r\n\r\n\t\t// Pick the `isExpanded` value\r\n\t\tlet isExpanded = false;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.isExpanded === 'boolean') {\r\n\t\t\tisExpanded = this.refiner.isExpanded;\r\n\t\t}\r\n\r\n\t\tif (typeof this._isExpanded === 'boolean') {\r\n\t\t\tisExpanded = this._isExpanded;\r\n\t\t}\r\n\r\n\t\tthis._isExpanded = !!isExpanded;\r\n\r\n\t\t// Selected options can be modified with the refiner.valueSubject Observable\r\n\t\t// newValue is an array of option slugs to set as true\r\n\t\tthis.refiner.valueSubject.subscribe(selectedOptionSlugs => {\r\n\t\t\tif (this.ignoreNext) {\r\n\t\t\t\tthis.ignoreNext = false;\r\n\t\t\t} else {\r\n\t\t\t\t// blank the values first\r\n\t\t\t\tthis.values = Object.keys(this.refiner.options).reduce((result, optionSlug) => {\r\n\t\t\t\t\tresult[optionSlug] = false;\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}, {});\r\n\r\n\t\t\t\t// then, set any true values\r\n\t\t\t\tselectedOptionSlugs.forEach(optionSlug => {\r\n\t\t\t\t\tthis.values[optionSlug] = true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Enables the callback API <porcelain-simple-refiner (onRefinerChange)=\"...\"></porcelain-simple-refiner>\r\n\t\tthis.refiner.valueSubject.subscribe(newValue =>\r\n\t\t\tthis.onRefinerChange.emit([this.refiner.slug, newValue])\r\n\t\t);\r\n\t}\r\n\r\n\ttoggleExpanded(): void {\r\n\t\tthis._isExpanded = !this._isExpanded;\r\n\t}\r\n\r\n\ttoggleOpen(): void {\r\n\t\tthis._isOpen = !this._isOpen;\r\n\t}\r\n\r\n\tcountTail(): number {\r\n\t\treturn Object.keys(this.refiner.options).length - this._showCount;\r\n\t}\r\n\r\n\tcanExpand(): boolean {\r\n\t\treturn this.refiner.type === 'simple'\r\n\t\t\t? Object.keys(this.refiner.options).length > this._showCount\r\n\t\t\t: false;\r\n\t}\r\n\r\n\tgetExpandedOptionKeys(): string[] {\r\n\t\treturn this._isExpanded\r\n\t\t\t? Object.keys(this.refiner.options)\r\n\t\t\t: Object.keys(this.refiner.options).slice(0, this._showCount);\r\n\t}\r\n\r\n\tgetDisabled(): boolean {\r\n\t\treturn Object.keys(this.refiner.options).length == 0 ? true : false;\r\n\t}\r\n\r\n\toptionHasBadge(option: string | SimpleOption): boolean {\r\n\t\tif (typeof option === 'string') {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn option.badge && option.badge !== '';\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionLabel(option: string | SimpleOption): string {\r\n\t\tif (typeof option === 'string') {\r\n\t\t\treturn option;\r\n\t\t} else {\r\n\t\t\treturn option.label;\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionBadge(option: SimpleOption) {\r\n\t\tif (typeof option.badge === 'number') {\r\n\t\t\treturn option.badge.toLocaleString();\r\n\t\t} else {\r\n\t\t\treturn option.badge;\r\n\t\t}\r\n\t}\r\n\r\n\tgetValue(): string[] {\r\n\t\t// return the keys where the value is true\r\n\t\treturn Object.keys(this.values).filter(key => this.values[key]);\r\n\t}\r\n\r\n\tcanSelectNone(): boolean {\r\n\t\treturn Object.keys(this.values).every(paramName => this.values[paramName] === true);\r\n\t}\r\n\r\n\tselectNone() {\r\n\t\tthis.setAll(false);\r\n\t}\r\n\r\n\tcanSelectAll(): boolean {\r\n\t\treturn Object.keys(this.values).some(paramName => this.values[paramName] === false);\r\n\t}\r\n\r\n\tselectAll() {\r\n\t\treturn this.setAll(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all options to newValue; Used to enable select all/select none capability.\r\n\t */\r\n\tsetAll(newValue: boolean) {\r\n\t\t// only needed for TypeScript\r\n\t\tif (this.refiner instanceof SimpleRefinerDefinition) {\r\n\t\t\tconst checked = newValue\r\n\t\t\t\t? Object.keys(this.refiner.options) // all selected\r\n\t\t\t\t: []; // none selected\r\n\r\n\t\t\tthis.ignoreNext = false;\r\n\t\t\tthis.refiner.valueSubject.next(checked);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Called in Angular template to initiate the propagation of the new values.\r\n\t */\r\n\tonSelectionChange() {\r\n\t\tthis.ignoreNext = true;\r\n\t\tthis.refiner.valueSubject.next(this.getValue());\r\n\t}\r\n}\r\n","<porcelain-expando\r\n\t[title]=\"refiner.title\"\r\n\t[disable]=\"disable\"\r\n\t[isDisabled]=\"getDisabled()\"\r\n\t[(isOpen)]=\"isOpen\"\r\n>\r\n\t<!-- [@optionsInOut -->\r\n\t<div class=\"refiner__section refiner__body\">\r\n\t\t<div class=\"refiner__section refiner__selection-toggles\">\r\n\t\t\t<button (click)=\"selectNone()\" *ngIf=\"canSelectNone()\" class=\"refiner__select-none\">\r\n\t\t\t\t{{ selectNoneLabel }}\r\n\t\t\t</button>\r\n\t\t\t<button (click)=\"selectAll()\" *ngIf=\"canSelectAll()\" class=\"refiner__select-all\">\r\n\t\t\t\t{{ selectAllLabel }}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<!-- /.refiner__selection-toggles -->\r\n\r\n\t\t<div class=\"refiner__section refiner__options\">\r\n\t\t\t<ul class=\"options\">\r\n\t\t\t\t<li class=\"option\" *ngFor=\"let optionKey of getExpandedOptionKeys()\">\r\n\t\t\t\t\t<label class=\"media media--align-items-center\">\r\n\t\t\t\t\t\t<div class=\"media__left\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tname=\"refiner-{{ refiner.slug }}\"\r\n\t\t\t\t\t\t\t\tvalue=\"{{ optionKey }}\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"values[optionKey]\"\r\n\t\t\t\t\t\t\t\t(change)=\"onSelectionChange()\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"media__body\">\r\n\t\t\t\t\t\t\t<porcelain-truncate\r\n\t\t\t\t\t\t\t\t[value]=\"getOptionLabel(refiner.options[optionKey])\"\r\n\t\t\t\t\t\t\t></porcelain-truncate>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"media__right\" *ngIf=\"optionHasBadge(refiner.options[optionKey])\">\r\n\t\t\t\t\t\t\t<div class=\"option__badge\">\r\n\t\t\t\t\t\t\t\t{{ getOptionBadge(refiner.options[optionKey]) }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</label>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- ./refiner__options-->\r\n\r\n\t\t<div class=\"refiner__section refiner__show-hide\" *ngIf=\"canExpand()\">\r\n\t\t\t<button (click)=\"toggleExpanded()\" class=\"refiner__expand-toggle\">\r\n\t\t\t\t<span *ngIf=\"isExpanded\"\r\n\t\t\t\t\t>{{ showLessLabel | sprintf: countTail() }}\r\n\t\t\t\t\t<fa-icon [icon]=\"contractIcon\"></fa-icon>\r\n\t\t\t\t</span>\r\n\t\t\t\t<span *ngIf=\"!isExpanded\"\r\n\t\t\t\t\t>{{ showMoreLabel | sprintf: countTail() }} <fa-icon [icon]=\"expandIcon\"></fa-icon\r\n\t\t\t\t></span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<!-- /.refiner__show-hide -->\r\n\t</div>\r\n</porcelain-expando>\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChildren,\r\n\tQueryList,\r\n\tElementRef,\r\n\tAfterViewInit,\r\n\tRenderer2\r\n} from '@angular/core';\r\nimport {\r\n\tfaCaretDown,\r\n\tfaChevronDown,\r\n\tfaChevronUp,\r\n\tIconDefinition\r\n} from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { SimpleRefinerDefinition } from '../../shared/types/Refiners/SimpleRefinerDefinition';\r\nimport { defaultShowLessLabel } from '../../shared/defaults/labels/defaultShowLessLabel';\r\nimport { defaultShowMoreLabel } from '../../shared/defaults/labels/defaultShowMoreLabel';\r\nimport { defaultSelectAllLabel } from '../../shared/defaults/labels/defaultSelectAllLabel';\r\nimport { defaultSelectNoneLabel } from '../../shared/defaults/labels/defaultSelectNoneLabel';\r\nimport { defaultOptionShowCount } from '../../shared/defaults/properties/defaultOptionShowCount';\r\nimport { SimpleOption } from '../../shared/types/Options/SimpleOption';\r\n\r\nexport interface refinerImageKey {\r\n\tkey: string;\r\n\trefinerIndex: number;\r\n\tisSimpleOptionRefinerType: boolean;\r\n\toptionTooltipUrl: string;\r\n}\r\n@Component({\r\n\tselector: 'porcelain-simple-radio-refiner, p-simple-refiner',\r\n\ttemplateUrl: './simple-radio-refiner.component.html',\r\n\tstyleUrls: ['./simple-radio-refiner.component.scss'],\r\n\tanimations: []\r\n})\r\nexport class SimpleRadioRefinerComponent implements OnInit, AfterViewInit {\r\n\t// Inputs\r\n\t@Input() refiner: SimpleRefinerDefinition;\r\n\t@Input('showCount') _showCount: number;\r\n\t@Input('isOpen') _isOpen: boolean;\r\n\t@Input('isExpanded') _isExpanded: boolean;\r\n\r\n\t//#region Labels\r\n\r\n\t@Input('showLessLabel') showLessLabel = defaultShowLessLabel;\r\n\t@Input('showMoreLabel') showMoreLabel = defaultShowMoreLabel;\r\n\t@Input('selectAllLabel') selectAllLabel = defaultSelectAllLabel;\r\n\t@Input('selectNoneLabel') selectNoneLabel = defaultSelectNoneLabel;\r\n\r\n\t//#endregion\r\n\r\n\t//DOM manipulators\r\n\t@ViewChildren('toolTipImageRef') public toolTipImageRefs: QueryList<ElementRef> = null;\r\n\r\n\t@Input() public defaulttoolTipImageUrl: string = '/assets/info-icon.png';\r\n\r\n\tcustomTooltipImageURLs: string[] = [];\r\n\r\n\tcustomTooltipRefinerImageUrls: refinerImageKey[] = [];\r\n\t// Getters\r\n\tget showCount() {\r\n\t\treturn this._showCount || this.refiner.showCount || defaultOptionShowCount;\r\n\t}\r\n\r\n\tset showCount(newCount: number) {\r\n\t\tthis._showCount = newCount;\r\n\t}\r\n\r\n\tget isOpen() {\r\n\t\treturn this._isOpen;\r\n\t}\r\n\r\n\tset isOpen(newIsOpenValue: boolean) {\r\n\t\tthis._isOpen = newIsOpenValue;\r\n\t}\r\n\r\n\tget isExpanded(): boolean {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tset isExpanded(newIsExpandedValue: boolean) {\r\n\t\tthis._isExpanded = newIsExpandedValue;\r\n\t}\r\n\r\n\t// Outputs\r\n\t@Output() onRefinerChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\t//#region Icons\r\n\tfaChevronDown: IconDefinition = faCaretDown;\r\n\tcontractIcon: IconDefinition = faChevronUp;\r\n\texpandIcon: IconDefinition = faChevronDown;\r\n\r\n\t//#endregion\r\n\tcurrentOptionSlug: string;\r\n\t// State\r\n\tvalues: { [optionSlug: string]: boolean } = {};\r\n\tprivate ignoreNext: boolean = false;\r\n\r\n\tconstructor(private translationService: TranslationService, private _renderer: Renderer2) {\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate<SimpleRadioRefinerComponent>(this, {\r\n\t\t\t\tlabel_ShowMore: 'showMoreLabel',\r\n\t\t\t\tlabel_ShowLess: 'showLessLabel',\r\n\t\t\t\tlabel_SelectAll: 'selectAllLabel',\r\n\t\t\t\tlabel_SelectNone: 'selectNoneLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.customTooltipRefinerImageUrls = [];\r\n\t\t//check if url exists\r\n\t\tObject.keys(this.refiner.options).map((objectKey, Index: number) => {\r\n\t\t\tif (\r\n\t\t\t\tthis.refiner.options &&\r\n\t\t\t\ttypeof this.refiner.options[objectKey] != 'string' &&\r\n\t\t\t\t(this.refiner.options[objectKey] as SimpleOption)\r\n\t\t\t) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(this.refiner.options[objectKey] as SimpleOption).tooltipText &&\r\n\t\t\t\t\t(this.refiner.options[objectKey] as SimpleOption).customToolTipImageUrl\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.customTooltipRefinerImageUrls.push({\r\n\t\t\t\t\t\tkey: objectKey,\r\n\t\t\t\t\t\trefinerIndex: Index,\r\n\t\t\t\t\t\tisSimpleOptionRefinerType: true,\r\n\t\t\t\t\t\toptionTooltipUrl: (this.refiner.options[objectKey] as SimpleOption)\r\n\t\t\t\t\t\t\t.customToolTipImageUrl\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.customTooltipRefinerImageUrls.map(refinerImageObject => {\r\n\t\t\tif (refinerImageObject.isSimpleOptionRefinerType) {\r\n\t\t\t\tthis._renderer.setStyle(\r\n\t\t\t\t\tthis.toolTipImageRefs.toArray()[refinerImageObject.refinerIndex].nativeElement,\r\n\t\t\t\t\t'content',\r\n\t\t\t\t\t`url(${refinerImageObject.optionTooltipUrl})`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\toptions;\r\n\tngOnInit() {\r\n\t\t// Pick the `isOpen` value;\r\n\t\tthis.options = {\r\n\t\t\tAL: new SimpleOption({\r\n\t\t\t\tbadge: 4888949,\r\n\t\t\t\tlabel: 'Compliance summary',\r\n\t\t\t\tslug: 'AL',\r\n\t\t\t\tisSelected: true\r\n\t\t\t}),\r\n\t\t\tAK: new SimpleOption({\r\n\t\t\t\tbadge: 738068,\r\n\t\t\t\tlabel: 'Certificate expiration',\r\n\t\t\t\tslug: 'Certificate expiration'\r\n\t\t\t}),\r\n\t\t\tAZ: new SimpleOption({\r\n\t\t\t\tbadge: 7123898,\r\n\t\t\t\tlabel: 'Certificate requirement changes',\r\n\t\t\t\tslug: 'Certificate requirement changes'\r\n\t\t\t})\r\n\t\t};\r\n\t\tthis.options = this.refiner.options ? this.refiner.options : this.options;\r\n\t\tfor (let optionSlug in this.options) {\r\n\t\t\tif (this.options.hasOwnProperty(optionSlug)) {\r\n\t\t\t\tlet option = this.options[optionSlug];\r\n\t\t\t\tif (option instanceof SimpleOption) {\r\n\t\t\t\t\tif (option.isSelected === true) {\r\n\t\t\t\t\t\tthis.currentOptionSlug = optionSlug;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet isOpen = true;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.isOpen === 'boolean') {\r\n\t\t\tisOpen = this.refiner.isOpen;\r\n\t\t}\r\n\r\n\t\tif (typeof this._isOpen === 'boolean') {\r\n\t\t\tisOpen = this._isOpen;\r\n\t\t}\r\n\r\n\t\tthis.isOpen = !!isOpen;\r\n\r\n\t\t// Pick the `showCount` value\r\n\t\tlet showCount = defaultOptionShowCount;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.showCount === 'number') {\r\n\t\t\tshowCount = this.refiner.showCount;\r\n\t\t}\r\n\r\n\t\tif (typeof this._showCount === 'number') {\r\n\t\t\tshowCount = this._showCount;\r\n\t\t}\r\n\r\n\t\tthis.showCount = showCount;\r\n\r\n\t\t// Pick the `isExpanded` value\r\n\t\tlet isExpanded = false;\r\n\r\n\t\tif (this.refiner && typeof this.refiner.isExpanded === 'boolean') {\r\n\t\t\tisExpanded = this.refiner.isExpanded;\r\n\t\t}\r\n\r\n\t\tif (typeof this._isExpanded === 'boolean') {\r\n\t\t\tisExpanded = this._isExpanded;\r\n\t\t}\r\n\r\n\t\tthis._isExpanded = !!isExpanded;\r\n\r\n\t\t// Selected options can be modified with the refiner.valueSubject Observable\r\n\t\t// newValue is an array of option slugs to set as true\r\n\t\tthis.refiner.valueSubject.subscribe(selectedOptionSlugs => {\r\n\t\t\tif (this.ignoreNext) {\r\n\t\t\t\tthis.ignoreNext = false;\r\n\t\t\t} else {\r\n\t\t\t\t// blank the values first\r\n\t\t\t\tthis.values = Object.keys(this.refiner.options).reduce((result, optionSlug) => {\r\n\t\t\t\t\tresult[optionSlug] = false;\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}, {});\r\n\r\n\t\t\t\t// then, set any true values\r\n\t\t\t\tselectedOptionSlugs.forEach(optionSlug => {\r\n\t\t\t\t\tthis.values[optionSlug] = true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Enables the callback API <porcelain-simple-refiner (onRefinerChange)=\"...\"></porcelain-simple-refiner>\r\n\t\tthis.refiner.valueSubject.subscribe(newValue =>\r\n\t\t\tthis.onRefinerChange.emit([this.refiner.slug, newValue])\r\n\t\t);\r\n\t}\r\n\r\n\ttoggleExpanded(): void {\r\n\t\tthis._isExpanded = !this._isExpanded;\r\n\t}\r\n\r\n\ttoggleOpen(): void {\r\n\t\tthis._isOpen = !this._isOpen;\r\n\t}\r\n\r\n\tcountTail(): number {\r\n\t\treturn Object.keys(this.refiner.options).length - this._showCount;\r\n\t}\r\n\r\n\tcanExpand(): boolean {\r\n\t\treturn this.refiner.type === 'simple'\r\n\t\t\t? Object.keys(this.refiner.options).length > this._showCount\r\n\t\t\t: false;\r\n\t}\r\n\r\n\tgetExpandedOptionKeys(): string[] {\r\n\t\treturn this._isExpanded\r\n\t\t\t? Object.keys(this.refiner.options)\r\n\t\t\t: Object.keys(this.refiner.options).slice(0, this._showCount);\r\n\t}\r\n\r\n\toptionHasBadge(option: string | SimpleOption): boolean {\r\n\t\tif (typeof option === 'string') {\r\n\t\t\treturn false;\r\n\t\t} else if (option && option.tooltipText) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn option.badge && option.badge !== '';\r\n\t\t}\r\n\t}\r\n\r\n\tgetTooltipText(option: string | SimpleOption): string {\r\n\t\tif (typeof option === 'string') {\r\n\t\t\treturn option;\r\n\t\t} else {\r\n\t\t\treturn option && option.tooltipText ? option.tooltipText : '';\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionLabel(option: string | SimpleOption): string {\r\n\t\tif (typeof option === 'string') {\r\n\t\t\treturn option;\r\n\t\t} else {\r\n\t\t\treturn option.label;\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptionBadge(option: SimpleOption) {\r\n\t\tif (typeof option.badge === 'number') {\r\n\t\t\treturn option.badge.toLocaleString();\r\n\t\t} else {\r\n\t\t\treturn option.badge;\r\n\t\t}\r\n\t}\r\n\r\n\tgetValue(): string[] {\r\n\t\t// return the keys where the value is true\r\n\t\treturn Object.keys(this.values).filter(key => this.values[key]);\r\n\t}\r\n\r\n\tcanSelectNone(): boolean {\r\n\t\treturn Object.keys(this.values).every(paramName => this.values[paramName] === true);\r\n\t}\r\n\r\n\tselectNone() {\r\n\t\tthis.setAll(false);\r\n\t}\r\n\r\n\tcanSelectAll(): boolean {\r\n\t\treturn Object.keys(this.values).some(paramName => this.values[paramName] === false);\r\n\t}\r\n\r\n\tselectAll() {\r\n\t\treturn this.setAll(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all options to newValue; Used to enable select all/select none capability.\r\n\t */\r\n\tsetAll(newValue: boolean) {\r\n\t\t// only needed for TypeScript\r\n\t\tif (this.refiner instanceof SimpleRefinerDefinition) {\r\n\t\t\tconst checked = newValue\r\n\t\t\t\t? Object.keys(this.refiner.options) // all selected\r\n\t\t\t\t: []; // none selected\r\n\r\n\t\t\tthis.ignoreNext = false;\r\n\t\t\tthis.refiner.valueSubject.next(checked);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Called in Angular template to initiate the propagation of the new values.\r\n\t */\r\n\tonSelectionChange(slug) {\r\n\t\tthis.currentOptionSlug = slug;\r\n\t\tthis.ignoreNext = true;\r\n\t\tthis.refiner.valueSubject.next([slug]);\r\n\t}\r\n}\r\n","<porcelain-expando [title]=\"refiner.title\" [(isOpen)]=\"isOpen\">\r\n\t<!-- [@optionsInOut -->\r\n\t<div class=\"refiner__section refiner__body\">\r\n\t\t<div class=\"refiner__section refiner__selection-toggles\">\r\n\t\t\t<!-- <button (click)=\"selectNone()\" *ngIf=\"canSelectNone()\" class=\"refiner__select-none\">\r\n\t\t\t\t{{ selectNoneLabel }}\r\n\t\t\t</button>\r\n\t\t\t<button (click)=\"selectAll()\" *ngIf=\"canSelectAll()\" class=\"refiner__select-all\">\r\n\t\t\t\t{{ selectAllLabel }}\r\n\t\t\t</button> -->\r\n\t\t</div>\r\n\t\t<!-- /.refiner__selection-toggles -->\r\n\r\n\t\t<div class=\"refiner__section refiner__options\">\r\n\t\t\t<ul class=\"options\">\r\n\t\t\t\t<li class=\"option\" *ngFor=\"let optionKey of getExpandedOptionKeys()\">\r\n\t\t\t\t\t<label class=\"media media--align-items-center\">\r\n\t\t\t\t\t\t<div class=\"media__left\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"radio\"\r\n\t\t\t\t\t\t\t\tname=\"refiner-{{ refiner.slug }}\"\r\n\t\t\t\t\t\t\t\tvalue=\"{{ optionKey }}\"\r\n\t\t\t\t\t\t\t\t[checked]=\"currentOptionSlug === optionKey\"\r\n\t\t\t\t\t\t\t\t(change)=\"onSelectionChange(optionKey)\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"media__body\">\r\n\t\t\t\t\t\t\t<porcelain-truncate\r\n\t\t\t\t\t\t\t\t[value]=\"getOptionLabel(refiner.options[optionKey])\"\r\n\t\t\t\t\t\t\t></porcelain-truncate>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"media__right\"\r\n\t\t\t\t\t\t\t*ngIf=\"optionHasBadge(refiner.options[optionKey]); else displayIcon\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div class=\"option__badge\">\r\n\t\t\t\t\t\t\t\t{{ getOptionBadge(refiner.options[optionKey]) }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<ng-template #displayIcon>\r\n\t\t\t\t\t\t\t<div class=\"media__right\">\r\n\t\t\t\t\t\t\t\t<div class=\"option__badge porcelain__tooltip\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"porcelain__tooltip--img_size\" #toolTipImageRef></div>\r\n\t\t\t\t\t\t\t\t\t<span class=\"porcelain__tooltiptext\">{{\r\n\t\t\t\t\t\t\t\t\t\tgetTooltipText(refiner.options[optionKey])\r\n\t\t\t\t\t\t\t\t\t}}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</label>\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- ./refiner__options-->\r\n\r\n\t\t<div class=\"refiner__section refiner__show-hide\" *ngIf=\"canExpand()\">\r\n\t\t\t<button (click)=\"toggleExpanded()\" class=\"refiner__expand-toggle\">\r\n\t\t\t\t<span *ngIf=\"isExpanded\"\r\n\t\t\t\t\t>{{ showLessLabel | sprintf: countTail() }}\r\n\t\t\t\t\t<fa-icon [icon]=\"contractIcon\"></fa-icon>\r\n\t\t\t\t</span>\r\n\t\t\t\t<span *ngIf=\"!isExpanded\"\r\n\t\t\t\t\t>{{ showMoreLabel | sprintf: countTail() }} <fa-icon [icon]=\"expandIcon\"></fa-icon\r\n\t\t\t\t></span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<!-- /.refiner__show-hide -->\r\n\t</div>\r\n</porcelain-expando>\r\n","/**\r\n * Ensures value is within the min-max range.\r\n * @param min Lowest possible value to return\r\n * @param value Desired value to return\r\n * @param max Highest possible value to return\r\n */\r\nexport function clamp(min: number, value: number, max: number) {\r\n\treturn Math.min(Math.max(min, value), max);\r\n}\r\n","/**\r\n * Subtracts one set(subtrahend) from another(minuend).\r\n * @param minuend Set of all items for which subtrahend will be removed.\r\n * @param subtrahend Set of items to remove from minuend.\r\n */\r\nexport function subtract<T>(minuend: T[], subtrahend: T[]): T[] {\r\n\treturn minuend.filter(item => subtrahend.indexOf(item) === -1);\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport const defaultLocale = navigator.language || 'en-us';\r\nexport const defaultDateTimeFormatOptions: Intl.DateTimeFormatOptions = {\r\n\tmonth: 'long',\r\n\tday: 'numeric',\r\n\tyear: 'numeric'\r\n};\r\n\r\n@Pipe({\r\n\tname: 'toLocaleString',\r\n\tpure: true\r\n})\r\nexport class ToLocaleStringPipe implements PipeTransform {\r\n\ttransform(\r\n\t\tvalue: any,\r\n\t\tlocale: string = defaultLocale,\r\n\t\toptions: Intl.DateTimeFormatOptions | Intl.NumberFormatOptions = defaultDateTimeFormatOptions\r\n\t): any {\r\n\t\tif (typeof value === 'number') {\r\n\t\t\treturn value.toLocaleString(locale, options as Intl.NumberFormatOptions);\r\n\t\t} else if (value instanceof Date) {\r\n\t\t\treturn value.toLocaleString(locale, options as Intl.DateTimeFormatOptions);\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'highlight'\r\n})\r\nexport class HighlightPipe implements PipeTransform {\r\n\ttransform(value: string, highlight: string): string {\r\n\t\tif (value.toString().includes('<')) {\r\n\t\t\tlet valuedup = value.replace(/\\<(.+?)\\>/g, '');\r\n\t\t\tif (!highlight) return value;\r\n\t\t\tvalue = value.replace(valuedup, '--');\r\n\t\t\tlet re = new RegExp(highlight, 'gi');\r\n\t\t\tvaluedup = valuedup.replace(re, `<mark class=\"highlight__query\">$&</mark>`);\r\n\t\t\treturn value.replace('--', valuedup);\r\n\t\t} else {\r\n\t\t\tif (!highlight) return value;\r\n\t\t\tlet re = new RegExp(highlight, 'gi');\r\n\t\t\treturn value.replace(re, `<mark class=\"highlight__query\">$&</mark>`);\r\n\t\t}\r\n\t}\r\n}\r\n","import { animate, keyframes, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n\tAfterContentInit,\r\n\tComponent,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnInit,\r\n\tOutput,\r\n\tViewChild\r\n} from '@angular/core';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { Loggable } from '../../Loggable';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { SimpleRefinerDefinition } from '../../shared/types/Refiners/SimpleRefinerDefinition';\r\nimport { clamp } from '../../shared/utilities/arrays/clamp';\r\nimport { subtract as arraySubtract } from '../../shared/utilities/arrays/subtract';\r\n\r\n@Component({\r\n\tselector: 'porcelain-search-refiner, p-search-refiner',\r\n\ttemplateUrl: './search-refiner.component.html',\r\n\tstyleUrls: ['./search-refiner.component.scss'],\r\n\thost: {\r\n\t\t'[class.porcelain__search-refiner]': 'true'\r\n\t},\r\n\tanimations: [\r\n\t\ttrigger('highlight', [\r\n\t\t\ttransition(':enter', [\r\n\t\t\t\tanimate(\r\n\t\t\t\t\t300,\r\n\t\t\t\t\tkeyframes([\r\n\t\t\t\t\t\tstyle({ backgroundColor: 'transparent' }),\r\n\t\t\t\t\t\tstyle({ backgroundColor: '#fff883' }),\r\n\t\t\t\t\t\tstyle({ backgroundColor: 'transparent' })\r\n\t\t\t\t\t])\r\n\t\t\t\t)\r\n\t\t\t])\r\n\t\t]),\r\n\t\ttrigger('blockEnterAnimations', [transition(':enter', [])])\r\n\t]\r\n})\r\nexport class SearchRefinerComponent extends Loggable implements OnInit, AfterContentInit {\r\n\t/**\r\n\t * Name of the component, required by Loggable.\r\n\t */\r\n\treadonly name = 'SearchRefinerComponent';\r\n\r\n\t//#region Key Arrays\r\n\r\n\t/**\r\n\t * List of all keys available to be refined by this refiner.  This is generated automatically from\r\n\t * the keys in `this.refiner.options`.\r\n\t */\r\n\tallKeys: string[];\r\n\r\n\tprivate _activeKeys: string[];\r\n\r\n\tget activeKeys(): string[] {\r\n\t\treturn this._activeKeys;\r\n\t}\r\n\r\n\t/*Sets the disable flag to disable refiners in required apps*/\r\n\t@Input() disable: boolean = true;\r\n\t/**\r\n\t * Sets the activeKeys value. Triggers activeKeysChange emit.\r\n\t */\r\n\t@Input()\r\n\tset activeKeys(activeKeys: string[]) {\r\n\t\tthis.setActiveKeys(activeKeys, true);\r\n\t}\r\n\r\n\tsetActiveKeys(activeKeys: string[], updateValueSubject: boolean = true) {\r\n\t\tthis._activeKeys = activeKeys;\r\n\r\n\t\tif (updateValueSubject) {\r\n\t\t\tif (this.refiner && this.refiner.valueSubject)\r\n\t\t\t\tthis.refiner.valueSubject.next(this._activeKeys);\r\n\t\t}\r\n\t}\r\n\r\n\t@Output() activeKeysChange: EventEmitter<string[]> = new EventEmitter();\r\n\r\n\t/**\r\n\t * Array of currently inactive keys/slugs, to be shown below the\r\n\t */\r\n\tinactiveKeys: string[];\r\n\r\n\t/**\r\n\t * List of keys where the option.label matches this.query\r\n\t */\r\n\tfilteredInactiveKeys: string[] = [];\r\n\r\n\t//#endregion\r\n\r\n\t//#region Inputs\r\n\r\n\t/**\r\n\t * A Font Awesome icon to use for the clear button.\r\n\t */\r\n\t@Input() clearIcon: any = faTimesCircle;\r\n\r\n\t/**\r\n\t *\r\n\t * Message to show No value incase no search values are shown\r\n\t * */\r\n\t@Input() public SearchInputPlaceHolderValue: string = 'Search';\r\n\r\n\t/**\r\n\t * Search string used to filter the inactiveItems into filteredInactiveItems\r\n\t */\r\n\t@Input() query: string = '';\r\n\r\n\t/**\r\n\t * SimpleRefiner definition, including options, used to define the whole thing.\r\n\t */\r\n\t@Input() refiner: SimpleRefinerDefinition;\r\n\r\n\t/**\r\n\t * [showLines] input to control how many lines are shown prior to initiating scroll behavior\r\n\t */\r\n\t@Input() showLines: number = 5;\r\n\r\n\t//#endregion\r\n\r\n\t//#region Outputs\r\n\r\n\t/**\r\n\t * Legacy implementation, allows for same-API binding as SimpleRefiner\r\n\t * @deprecated Use (activeKeysChange) or [(activeKeys)]\r\n\t */\r\n\t@Output() onRefinerChange: EventEmitter<[string, string[]]> = new EventEmitter();\r\n\r\n\t//#endregion\r\n\r\n\t//#region ViewChild/ViewChildren\r\n\r\n\t/**\r\n\t * Selects the #searchInput element, which can be used to set focus in the text input.\r\n\t */\r\n\t@ViewChild('searchInput') searchInput: ElementRef<HTMLInputElement>;\r\n\r\n\t//#endregion\r\n\r\n\t//#region Component State\r\n\r\n\t/**\r\n\t * Tracks whether or not there is focus inside the #searchInput element.\r\n\t * Used for a11y outlines to make it obvious which control is active.\r\n\t */\r\n\tsearchHasFocus: boolean = false;\r\n\r\n\t/**\r\n\t * Translateable labels.  Provide labels to the TranslationService to update these strings.\r\n\t * @see README.md\r\n\t * @example\r\n\t * \tclass MyComponent {\r\n\t * \t\tconstructor(\r\n\t *\t\t\tprivate translationService: TranslationService\r\n\t * \t\t) {\r\n\t * \t\t\tthis.translationService.setTranslations({\r\n\t * \t\t\t\t'label_SelectAll': \"Select All\",\r\n\t * \t\t\t\t// ... etc ...//\r\n\t * \t\t\t})\r\n\t * \t\t}\r\n\t * }\r\n\t */\r\n\tlabels = {\r\n\t\tselectAll: 'Select All',\r\n\t\tselectFiltered: 'Select Filtered',\r\n\t\tselectNone: 'Select None',\r\n\t\tclear: 'Clear',\r\n\t\tnHiddenByFilter: '%s hidden by filter',\r\n\t\tplaceholder: 'Search'\r\n\t};\r\n\r\n\t//#endregion\r\n\r\n\t/**\r\n\t * Sets up basic functionalities.\r\n\t * @see ngOnInit\r\n\t * @param translationService Porcelain TranslationService instance, from dependency injection.\r\n\t */\r\n\tconstructor(public translationService: TranslationService) {\r\n\t\tsuper();\r\n\r\n\t\t/**\r\n\t\t * Hook the translation service to set the labels\r\n\t\t */\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this.labels, {\r\n\t\t\t\tlabel_SelectAll: 'selectAll',\r\n\t\t\t\tlabel_SelectNone: 'selectNone',\r\n\t\t\t\tlabel_Clear: 'clear',\r\n\t\t\t\tlabel_nHiddenByFilter: 'nHiddenByFilter',\r\n\t\t\t\tlabel_Search: 'placeholder'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a key from the inactive array, and appends (pseudo-push) to the active array.\r\n\t * @param key Key to activate\r\n\t */\r\n\tactivateKey(key: string) {\r\n\t\t// find the index of the key to activate\r\n\t\tconst keyIdx = this.inactiveKeys.indexOf(key);\r\n\r\n\t\tif (keyIdx > -1) {\r\n\t\t\t// remove the key from inactiveItems\r\n\t\t\tthis.inactiveKeys.splice(keyIdx, 1);\r\n\r\n\t\t\t/*\r\n\t\t\t\tadd the key to activeItems\r\n\t\t\t\tuses array destructuring to trigger an update to activeKeysChange\r\n\t\t\t\tDO NOT change this to use this.activeKeys.push(key)\r\n\t\t\t\tas this would cause the EventEmitter to stop working\r\n\t\t\t\twhen activeKeys is changed.\r\n\t\t\t*/\r\n\t\t\tthis.setActiveKeys([...this.activeKeys, key]);\r\n\r\n\t\t\tthis.updateFilteredInactiveItems().scrollActiveToBottom();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollActiveToBottom(): this {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.activeList.nativeElement.scrollTop = this.activeList.nativeElement.scrollHeight;\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the current search query, and triggers a refresh of the filteredInactiveItems array.\r\n\t */\r\n\tclear(): this {\r\n\t\tthis.query = '';\r\n\t\treturn this.updateFilteredInactiveItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Deactivates a key/slug\r\n\t * @param key Option key/slug to deactivate\r\n\t * @param event? MouseEvent/KeyboardEvent used to call the method.\r\n\t */\r\n\tdeactivateKey(key: string) {\r\n\t\t// find the index of the key to deactivate\r\n\t\tconst keyIdx = this.activeKeys.indexOf(key);\r\n\r\n\t\tif (keyIdx > -1) {\r\n\t\t\t// remove the key from active items\r\n\t\t\tthis.activeKeys.splice(keyIdx, 1);\r\n\r\n\t\t\t// slice to trigger event emitters\r\n\t\t\t// setActiveKeys will trigger valueSubject, which handles\r\n\t\t\t// updates to the inactiveKeys array.\r\n\t\t\tthis.setActiveKeys([...this.activeKeys.slice()]);\r\n\r\n\t\t\tthis\r\n\t\t\t\t// make sure the inactive list is in the same order as allKeys\r\n\t\t\t\t.sortInactive()\r\n\t\t\t\t// sort the inactiveItems\r\n\t\t\t\t.updateFilteredInactiveItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the typing cursor in #searchInput\r\n\t */\r\n\tensureInputFocus(): this {\r\n\t\tthis.searchInput.nativeElement.focus();\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks that require Angular Input/Output binding\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tthis.debug({ refiner: this.refiner });\r\n\r\n\t\t// DX: if developers use refiner.isOpen, offer a warning\r\n\t\t// Does not warn if isDevMode() is false.\r\n\t\tif (this.refiner.isOpen === true || this.refiner.isOpen === false) {\r\n\t\t\tthis.warn('DEPRECATED: Search Refiner does not support the refiner.isOpen property.');\r\n\t\t}\r\n\r\n\t\tthis.allKeys = Object.keys(this.refiner.options);\r\n\r\n\t\tthis.debug('[ngOnInit]', { allKeys: this.allKeys });\r\n\r\n\t\t// support the use of refiner.selected\r\n\t\tif (this.refiner.selected && this.refiner.selected.length > 0) {\r\n\t\t\tthis.setActiveKeys(this.refiner.selected.slice());\r\n\t\t\t// DX: if developers use the refiner.selected binding, warn that activeKeys should be used\r\n\t\t\t// Does not warn if isDevMode() is false;\r\n\t\t\tthis.warn(\r\n\t\t\t\t'Selected options are bound using [selected] and should be updated to use [activeKeys].'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t//if there are preselected default values enable them during intial load\r\n\t\tif (this.refiner.defaultPreSelectValues && this.refiner.defaultPreSelectValues.length > 0) {\r\n\t\t\tthis.setActiveKeys(this.refiner.defaultPreSelectValues.slice());\r\n\t\t}\r\n\r\n\t\t// if inactiveKeys is not set, set it;\r\n\t\tif (this.activeKeys === null || this.activeKeys === undefined) {\r\n\t\t\tthis.debug('[ngOnInit]', 'No keys are selected.');\r\n\t\t\tthis.setActiveKeys([]);\r\n\t\t}\r\n\r\n\t\t// this.inactiveKeys = this.allKeys - this.activeKeys\r\n\t\tthis.inactiveKeys = arraySubtract(this.allKeys, this.activeKeys);\r\n\r\n\t\t// apply filter if necessary.\r\n\t\tthis.updateFilteredInactiveItems();\r\n\r\n\t\tthis.refiner.valueSubject.subscribe(activeKeys => {\r\n\t\t\tthis.debug('valueSubject.subscribe(activeKeys)', {\r\n\t\t\t\tactiveKeys,\r\n\t\t\t\tallKeys: this.allKeys,\r\n\t\t\t\tinactiveKeys: this.inactiveKeys\r\n\t\t\t});\r\n\t\t\tthis.onRefinerChange.emit([this.refiner.slug, activeKeys]);\r\n\t\t\tthis.activeKeysChange.emit(activeKeys);\r\n\r\n\t\t\tthis.setActiveKeys([...activeKeys], false);\r\n\t\t\t// Providing a shortcut reduces the expensive array.filter action\r\n\t\t\t// prettier-ignore\r\n\t\t\tthis.inactiveKeys =\r\n\t\t\t\t// if nothing is active, everything is inactive\r\n\t\t\t\tactiveKeys.length === 0 ? this.allKeys.slice()\r\n\t\t\t\t// if everything is active, nothing is inactive\r\n\t\t\t\t: activeKeys.length === this.allKeys.length ? []\r\n\t\t\t\t// or we're somewhere in between.\r\n\t\t\t\t: arraySubtract(this.allKeys.slice(), this.activeKeys);\r\n\r\n\t\t\tthis.sortInactive().updateFilteredInactiveItems();\r\n\t\t});\r\n\t}\r\n\r\n\t@ViewChild('inactiveList') inactiveList!: ElementRef<HTMLUListElement>;\r\n\t@ViewChild('activeList') activeList!: ElementRef<HTMLUListElement>;\r\n\r\n\titemHeight: number = 25;\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tlet useList: HTMLUListElement;\r\n\t\t\tif (this.inactiveList) {\r\n\t\t\t\tuseList = this.inactiveList.nativeElement;\r\n\t\t\t} else if (this.activeList) {\r\n\t\t\t\tuseList = this.activeList.nativeElement;\r\n\t\t\t}\r\n\t\t\tif (useList) {\r\n\t\t\t\tconst el = useList.querySelector('li');\r\n\t\t\t\tthis.itemHeight = el.scrollHeight;\r\n\t\t\t\tthis.debug('itemHeight updated', { itemHeight: this.itemHeight });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetListHeight(list: any[]): number {\r\n\t\tlet useLines = clamp(0, list.length, this.showLines);\r\n\t\treturn this.itemHeight * useLines;\r\n\t}\r\n\r\n\t/**\r\n\t * Selects all elements in the refiner by copying this.allKeys to activeKeys and clearing inactiveKeys\r\n\t * Since this.activeKeys is defined with a setter, this will trigger the activeKeysChange EventEmitter.\r\n\t */\r\n\tselectAll(): this {\r\n\t\tthis.setActiveKeys(this.allKeys.slice());\r\n\t\treturn this.clear().scrollActiveToBottom();\r\n\t}\r\n\r\n\t/**\r\n\t * Gathers current filtered items and moves them to the activeKeys array. This will update the\r\n\t * inactiveKeys array to be the difference of this.allKeys and this.activeKeys (inactiveKeys=allKeys-activeKeys)\r\n\t * Since this.activeKeys is defined with a setter, this will trigger the activeKeysChange EventEmitter.\r\n\t */\r\n\tselectFiltered(): this {\r\n\t\t// Set addition: this.activeKeys = this.activeKeys + this.filteredInactiveKeys\r\n\t\tthis.setActiveKeys([...this.activeKeys.slice(), ...this.filteredInactiveKeys.slice()]);\r\n\r\n\t\t// Set subtraction: this.inactiveKeys = this.allKeys - this.activeKeys\r\n\t\t//this.inactiveKeys = arraySubtract(this.allKeys.slice(), this.activeKeys);\r\n\r\n\t\treturn (\r\n\t\t\tthis\r\n\t\t\t\t// set the query to empty string\r\n\t\t\t\t.clear()\r\n\t\t\t\t// Recalculate the filteredInactiveItems()\r\n\t\t\t\t.updateFilteredInactiveItems()\r\n\t\t\t\t// set the cursor focus to #searchInput element\r\n\t\t\t\t.ensureInputFocus()\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the current activeKeys to an empty array, and resets the inactiveKeys to [].\r\n\t * Since this.activeKeys is defined with a setter, this will trigger the activeKeysChange EventEmitter.\r\n\t */\r\n\tselectNone(): this {\r\n\t\tthis.setActiveKeys([]);\r\n\t\t//this.inactiveKeys = this.allKeys.slice();\r\n\t\treturn this.updateFilteredInactiveItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates internal state, used to style the component's outline.\r\n\t * @param searchHasFocus Boolean, true if the #searchInput currently has focus, otherwise false.\r\n\t */\r\n\ttrackSearchFocus(searchHasFocus: boolean): this {\r\n\t\tthis.searchHasFocus = searchHasFocus;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts the inactive array to each key's position in the this.allKeys array\r\n\t */\r\n\tsortInactive(): this {\r\n\t\tthis.inactiveKeys = this.inactiveKeys\r\n\t\t\t.slice()\r\n\t\t\t.sort((aKey, bKey) => this.allKeys.indexOf(aKey) - this.allKeys.indexOf(bKey));\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the filteredInactiveItems array by string matching on option.label\r\n\t * @param event A keyboard event, if the method is called by a keyup event.\r\n\t */\r\n\tupdateFilteredInactiveItems(event?: KeyboardEvent): this {\r\n\t\tif (this.query == '') {\r\n\t\t\tthis.filteredInactiveKeys = this.inactiveKeys.slice();\r\n\t\t} else if (this.query.length > 0) {\r\n\t\t\tthis.filteredInactiveKeys = this.inactiveKeys.slice().filter((key, idx) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t(this.refiner.options[key].label as string)\r\n\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t.indexOf(this.query.trim().toLowerCase()) > -1\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n}\r\n","<porcelain-expando\r\n\t[title]=\"refiner.title\"\r\n\t[disable]=\"disable\"\r\n\t[isDisabled]=\"allKeys.length === 0\"\r\n\t[(isOpen)]=\"refiner.isOpen\"\r\n>\r\n\t<div\r\n\t\tclass=\"search-refiner__section search-refiner__search\"\r\n\t\t[class.search-refiner__search--has-focus]=\"searchHasFocus\"\r\n\t\t[class.search-refiner__search--disabled]=\"inactiveKeys.length === 0\"\r\n\t>\r\n\t\t<input\r\n\t\t\t#searchInput\r\n\t\t\tclass=\"search-refiner__search-query\"\r\n\t\t\ttype=\"text\"\r\n\t\t\t(blur)=\"trackSearchFocus(false)\"\r\n\t\t\t(focus)=\"trackSearchFocus(true)\"\r\n\t\t\t(keyup.esc)=\"clear()\"\r\n\t\t\t(keyup)=\"updateFilteredInactiveItems()\"\r\n\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t[disabled]=\"inactiveKeys.length === 0\"\r\n\t\t\t[placeholder]=\"SearchInputPlaceHolderValue\"\r\n\t\t/>\r\n\t\t<button\r\n\t\t\tclass=\"search-refiner__search-clear\"\r\n\t\t\t[disabled]=\"inactiveKeys.length === 0\"\r\n\t\t\t*ngIf=\"query !== ''\"\r\n\t\t\t(click)=\"clear()\"\r\n\t\t>\r\n\t\t\t<fa-icon [icon]=\"clearIcon\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">{{ labels.clear }}</span>\r\n\t\t</button>\r\n\t</div>\r\n\t<div class=\"search-refiner__section search-refiner__active-keys\" *ngIf=\"activeKeys.length > 0\">\r\n\t\t<button\r\n\t\t\t(click)=\"selectNone()\"\r\n\t\t\t*ngIf=\"activeKeys.length === allKeys.length\"\r\n\t\t\tclass=\"search-refiner__select-preset\"\r\n\t\t>\r\n\t\t\t{{ labels.selectNone }}\r\n\t\t</button>\r\n\t\t<ul\r\n\t\t\tclass=\"search-refiner__key-list\"\r\n\t\t\t[class.search-refiner__key-list--scroll]=\"activeKeys.length > showLines\"\r\n\t\t\t[style.height.px]=\"getListHeight(activeKeys)\"\r\n\t\t\t#activeList\r\n\t\t\t[@blockEnterAnimations]\r\n\t\t>\r\n\t\t\t<li *ngFor=\"let key of activeKeys\" class=\"search-refiner__key-list-item\" [@highlight]>\r\n\t\t\t\t<label class=\"option-row\" *ngIf=\"this.refiner.options[key]\">\r\n\t\t\t\t\t<div class=\"option-row__shrink-cell\">\r\n\t\t\t\t\t\t<input type=\"checkbox\" (change)=\"deactivateKey(key)\" [checked]=\"true\" />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"option-row__grow-cell option__label\">\r\n\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\tclass=\"search-refiner__truncate\"\r\n\t\t\t\t\t\t\tinnerHTML=\"{{ this.refiner.options[key].label }}\"\r\n\t\t\t\t\t\t\ttitle=\"{{ this.refiner.options[key].label }}\"\r\n\t\t\t\t\t\t></span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"option-row__shrink-cell\" *ngIf=\"this.refiner.options[key].badge\">\r\n\t\t\t\t\t\t{{ this.refiner.options[key].badge | toLocaleString }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</label>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n\t<div class=\"search-refiner__section search-refiner__inactive-keys\" *ngIf=\"inactiveKeys.length > 0\">\r\n\t\t<p class=\"search-refiner__select-preset-group\">\r\n\t\t\t<button\r\n\t\t\t\t(click)=\"selectAll()\"\r\n\t\t\t\t*ngIf=\"activeKeys.length < allKeys.length\"\r\n\t\t\t\tclass=\"search-refiner__select-preset\"\r\n\t\t\t>\r\n\t\t\t\t{{ labels.selectAll }}\r\n\t\t\t\t<span *ngIf=\"query.trim() !== '' && inactiveKeys.length !== filteredInactiveKeys.length\">\r\n\t\t\t\t\t({{ inactiveKeys.length.toLocaleString() }})\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\t\t</p>\r\n\t\t<p class=\"search-refiner__select-preset-group\">\r\n\t\t\t<button\r\n\t\t\t\t(click)=\"selectFiltered()\"\r\n\t\t\t\tclass=\"search-refiner__select-preset\"\r\n\t\t\t\t*ngIf=\"query.trim() !== '' && filteredInactiveKeys.length > 0\"\r\n\t\t\t>\r\n\t\t\t\t{{ labels.selectFiltered }} ({{ filteredInactiveKeys.length.toLocaleString() }})\r\n\t\t\t</button>\r\n\t\t</p>\r\n\t\t<ul\r\n\t\t\t*ngIf=\"filteredInactiveKeys.length > 0\"\r\n\t\t\tclass=\"search-refiner__key-list\"\r\n\t\t\t[class.search-refiner__key-list--scroll]=\"filteredInactiveKeys.length >= 4\"\r\n\t\t\t[style.height.px]=\"getListHeight(filteredInactiveKeys)\"\r\n\t\t\t#inactiveList\r\n\t\t>\r\n\t\t\t<li *ngFor=\"let key of filteredInactiveKeys\" class=\"search-refiner__key-list-item\">\r\n\t\t\t\t<label class=\"option-row\" *ngIf=\"this.refiner.options[key]\">\r\n\t\t\t\t\t<div class=\"option-row__shrink-cell\">\r\n\t\t\t\t\t\t<input type=\"checkbox\" (change)=\"activateKey(key)\" />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"option-row__grow-cell option__label\">\r\n\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\tclass=\"search-refiner__truncate\"\r\n\t\t\t\t\t\t\tinnerHTML=\"{{ this.refiner.options[key].label | highlight: query }}\"\r\n\t\t\t\t\t\t\ttitle=\"{{ this.refiner.options[key].label }}\"\r\n\t\t\t\t\t\t></span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"option-row__shrink-cell\" *ngIf=\"this.refiner.options[key].badge\">\r\n\t\t\t\t\t\t{{ this.refiner.options[key].badge | toLocaleString }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</label>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</porcelain-expando>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChildren, QueryList } from '@angular/core';\r\nimport { BaseRefinerDefinition } from '../../shared/types/Refiners/BaseRefinerDefinition';\r\nimport { Loggable } from '../../Loggable';\r\nimport { isEqual } from 'lodash-es';\r\nimport { SearchRefinerComponent } from '../../search-refiner/search-refiner/search-refiner.component';\r\nimport { DateRefinerComponent } from '../../date-refiner/date-refiner/date-refiner.component';\r\nimport { SimpleRefinerDefinition } from '../../shared/types/Refiners/SimpleRefinerDefinition';\r\nimport { DateRefinerDefinition } from '../../shared/types/Refiners/DateRefinerDefinition';\r\n\r\n@Component({\r\n\tselector: 'porcelain-refiners, p-refiners',\r\n\ttemplateUrl: './refiners.component.html',\r\n\tstyleUrls: ['./refiners.component.scss']\r\n})\r\nexport class RefinersComponent extends Loggable implements OnInit {\r\n\treadonly name = 'RefinersComponent';\r\n\r\n\t// Inputs\r\n\t@Input() refiners: BaseRefinerDefinition[];\r\n\t@Input() allowIncompleteEmit: boolean = true;\r\n\t@Input() disable: boolean = false; /*Sets the disable flag to disable refiners in required apps*/\r\n\t@Input() enableCustomDateRange: boolean = false; //flag to enable custom date range options in CP apps\r\n\t// @Input() isOpen: boolean;\r\n\r\n\tprivate _isOpen: boolean = true;\r\n\r\n\t@Input() set isOpen(value: boolean) {\r\n\t\tif (value !== this._isOpen) {\r\n\t\t\tthis._isOpen = value;\r\n\t\t\tthis.isOpenChange.emit(this._isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\t@Output() isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n\t// Outputs\r\n\t@Output() onRefinersChange: EventEmitter<any> = new EventEmitter();\r\n\t@Output() updateDateRefinerStackValidityStatus: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n\t//viewchildren refs\r\n\t@ViewChildren('searchRef') public searchRefinerCmpRefs: QueryList<SearchRefinerComponent>;\r\n\r\n\t@ViewChildren('dateRefinerRef') public dateRefinerCmpRefs: QueryList<DateRefinerComponent>;\r\n\r\n\t//booleans\r\n\r\n\t/**\r\n\t * boolen to track invalid date refiner stacks in case it exists\r\n\t * */\r\n\tpublic isDateRefinerStacksInvalid: boolean = false;\r\n\t// Icons\r\n\r\n\t// State\r\n\tvalues: { [slug: string]: string[] } = {};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\thandleRefinerChange(update: [string, any]) {\r\n\t\tthis.updateDateRefinerStackInputStatus();\r\n\r\n\t\tlet [slug, selected] = update;\r\n\r\n\t\tif (!isEqual(this.values[slug], selected)) {\r\n\t\t\tthis.debug('handleRefinerChange(update)', { before: this.values[slug], after: selected });\r\n\t\t\tthis.setValue(slug, selected);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates status of invalid Date refiner if it exists in date refiner stacks\r\n\t * @param dateEventTriggerd\r\n\t */\r\n\r\n\tupdateDateRefinerStackInputStatus(dateEventTriggerd: boolean = true) {\r\n\t\tif (this.dateRefinerCmpRefs) {\r\n\t\t\tlet invalidDateRefinerCmps = this.dateRefinerCmpRefs\r\n\t\t\t\t.toArray()\r\n\t\t\t\t.filter(dateRefinerCmpRef => dateRefinerCmpRef.isCustomDateRangeInvalid == true);\r\n\r\n\t\t\t//if any of date refiner is invalide then there is error in date refiner stacks, update the status in flag and emit to parent component\r\n\r\n\t\t\tthis.isDateRefinerStacksInvalid = invalidDateRefinerCmps.length > 0 ? true : false;\r\n\t\t} else {\r\n\t\t\tthis.isDateRefinerStacksInvalid = false;\r\n\t\t}\r\n\r\n\t\tthis.updateDateRefinerStackValidityStatus.emit(this.isDateRefinerStacksInvalid);\r\n\t}\r\n\r\n\tsetValue(slug: string, value: any) {\r\n\t\tthis.values[slug] = value;\r\n\t\tthis.onRefinersChange.emit(this.values);\r\n\t}\r\n\r\n\tisSimpleRefiner(refiner: BaseRefinerDefinition): refiner is SimpleRefinerDefinition {\r\n\t\treturn refiner.type === 'simple';\r\n\t}\r\n\tisSimpleRadioRefiner(refiner: BaseRefinerDefinition): refiner is SimpleRefinerDefinition {\r\n\t\treturn refiner.type === 'radio';\r\n\t}\r\n\tisDateRefiner(refiner: BaseRefinerDefinition): refiner is DateRefinerDefinition {\r\n\t\treturn refiner.type === 'date';\r\n\t}\r\n\r\n\tisSearchRefiner(refiner: BaseRefinerDefinition): refiner is SimpleRefinerDefinition {\r\n\t\treturn refiner.type === 'search';\r\n\t}\r\n}\r\n","<ul class=\"refiners\">\r\n\t<li *ngFor=\"let refiner of refiners\" class=\"refiner\">\r\n\t\t<ng-container *ngIf=\"isDateRefiner(refiner)\">\r\n\t\t\t<porcelain-date-refiner\r\n\t\t\t\t#dateRefinerRef\r\n\t\t\t\t(onRefinerChange)=\"handleRefinerChange($event)\"\r\n\t\t\t\t(updateDateInputStatus)=\"updateDateRefinerStackInputStatus($event)\"\r\n\t\t\t\t[refiner]=\"refiner\"\r\n\t\t\t\t[allowIncompleteEmit]=\"allowIncompleteEmit\"\r\n\t\t\t\t[enableCustomDateRange]=\"enableCustomDateRange\"\r\n\t\t\t\t[disable]=\"disable\"\r\n\t\t\t\t[isOpen]=\"isOpen\"\r\n\t\t\t></porcelain-date-refiner>\r\n\t\t</ng-container>\r\n\r\n\t\t<ng-container *ngIf=\"isSimpleRefiner(refiner)\">\r\n\t\t\t<porcelain-simple-refiner\r\n\t\t\t\t(onRefinerChange)=\"handleRefinerChange($event)\"\r\n\t\t\t\t[refiner]=\"refiner\"\r\n\t\t\t\t[disable]=\"disable\"\r\n\t\t\t></porcelain-simple-refiner>\r\n\t\t</ng-container>\r\n\t\t<ng-container *ngIf=\"isSimpleRadioRefiner(refiner)\">\r\n\t\t\t<porcelain-simple-radio-refiner\r\n\t\t\t\t(onRefinerChange)=\"handleRefinerChange($event)\"\r\n\t\t\t\t[refiner]=\"refiner\"\r\n\t\t\t></porcelain-simple-radio-refiner>\r\n\t\t</ng-container>\r\n\t\t<ng-container *ngIf=\"isSearchRefiner(refiner)\">\r\n\t\t\t<porcelain-search-refiner\r\n\t\t\t\t#searchRef\r\n\t\t\t\t[activeKeys]=\"values[refiner.slug]\"\r\n\t\t\t\t(activeKeysChange)=\"handleRefinerChange([refiner.slug, $event])\"\r\n\t\t\t\t[refiner]=\"refiner\"\r\n\t\t\t\t[disable]=\"disable\"\r\n\t\t\t></porcelain-search-refiner>\r\n\t\t</ng-container>\r\n\t</li>\r\n</ul>\r\n","import {\r\n\tComponent,\r\n\tEventEmitter,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOutput,\r\n\tOnChanges,\r\n\tSimpleChanges,\r\n\tViewChild,\r\n\tElementRef,\r\n\tRenderer2\r\n} from '@angular/core';\r\n\r\nimport { isEqual } from 'lodash-es';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { IDictionary } from './../../shared/types/Containers/IDictonary/IDictionary';\r\n\r\nimport { BaseRefinerDefinition } from './../../shared/types/Refiners/BaseRefinerDefinition';\r\n\r\nimport { SimpleRefinerDefinition } from './../../shared/types/Refiners/SimpleRefinerDefinition';\r\nimport { OptionRefinerValue } from './../../shared/types/Values/OptionRefinerValue';\r\n\r\nimport { DateRefinerDefinition } from './../../shared/types/Refiners/DateRefinerDefinition';\r\nimport { DateRefinerValue } from './../../shared/types/Values/DateRefinerValue';\r\nimport { Loggable } from '../../Loggable';\r\n\r\nimport { RefinersComponent } from '../../refiners/refiners/refiners.component';\r\nimport ResizeObserver from 'resize-observer-polyfill';\r\n\r\n// https://projects.invisionapp.com/share/J8RB454F2AY#/355536379_44843_-_1\r\n\r\n/*\r\n\t<porcelain-applicator refiners=\"myRefinerArray\" (onApply)=\"myControllerApplyHandler($event)\"></porcelain-applicator>\r\n\r\n\tclass MyComponent {\r\n\t\tmyRefinerArray= []; // see below\r\n\r\n\t\tmyControllerApplyHandler() {\r\n\t\t\t// console.log(args);\r\n\t\t}\r\n\t}\r\n*/\r\n\r\nexport type RefinerValueDictionary = IDictionary<DateRefinerValue | OptionRefinerValue>;\r\n\r\n@Component({\r\n\tselector: 'porcelain-applicator, p-applicator',\r\n\ttemplateUrl: './applicator.component.html',\r\n\tstyleUrls: ['./applicator.component.scss']\r\n})\r\nexport class ApplicatorComponent extends Loggable implements OnInit, OnChanges, OnDestroy {\r\n\treadonly name: string = 'ApplicatorComponent';\r\n\tpublic initialLoad: boolean = true;\r\n\tpublic resetClicked: boolean = false;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\r\n\t@Input() public applyLabel: string = 'Apply';\r\n\t@Input() public loadingLabel: string = 'Loading';\r\n\t@Input() public resetLabel: string = 'Reset';\r\n\t@Input() public allowIncompleteEmit: boolean = true;\r\n\t@Input() public applyOnInit: boolean = true;\r\n\t@Input() public disable: boolean = false; //flag to disable refiners in required apps\r\n\t@Input() public enableCustomDateRange: boolean = false; //flag to enable custom date range options in CP apps\r\n\t@Input() public defaultValues: RefinerValueDictionary = {};\r\n\tprivate stagedValues: RefinerValueDictionary = {};\r\n\tprivate appliedValues: RefinerValueDictionary = {};\r\n\t@Input() public stagedValuesofRefiner: RefinerValueDictionary = {};\r\n\t@Input() public refiners: BaseRefinerDefinition[] = [];\r\n\t@Output() public onApply: EventEmitter<any> = new EventEmitter();\r\n\t@Output() public onReset: EventEmitter<any> = new EventEmitter();\r\n\tprivate _isOpen: boolean = true;\r\n\t// @Input() public isOpen: boolean = true; //flag to open refiners in required apps\r\n\t@Input() set isOpen(value: boolean) {\r\n\t\tif (value !== this._isOpen) {\r\n\t\t\tthis._isOpen = value;\r\n\t\t\tthis.isOpenChange.emit(value);\r\n\t\t}\r\n\t}\r\n\r\n\tget isOpen(): boolean {\r\n\t\treturn this._isOpen;\r\n\t}\r\n\r\n\t@Output() public isOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n\t//view child ref\r\n\t@ViewChild('refinerRef', { static: false }) public refinerCmpRef: RefinersComponent;\r\n\t@ViewChild('applicator') public applicatorRef: ElementRef<HTMLDivElement>;\r\n\t@ViewChild('stickyHeader') public stickyHeaderRef: ElementRef<HTMLDivElement>;\r\n\r\n\t/**\r\n\t * Boolean flag for Date Refiner Stacks Input invalid Status\r\n\t * */\r\n\tpublic isAnyDateRefinerStacksInputInvalid: boolean = false;\r\n\r\n\tprivate observer: ResizeObserver;\r\n\r\n\tconstructor(private translationService: TranslationService, private renderer: Renderer2) {\r\n\t\tsuper();\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate<ApplicatorComponent>(this, {\r\n\t\t\t\tlabel_Apply: 'applyLabel',\r\n\t\t\t\tlabel_Loading: 'loadingLabel',\r\n\t\t\t\tlabel_Reset: 'resetLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\t//Observes the change in width of the #applicator element and sets the StickyHeader width accordingly\r\n\t\tthis.observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\r\n\t\t\tconst currentWidth = entries[0].contentRect.width;\r\n\t\t\tthis.renderer.setStyle(this.stickyHeaderRef.nativeElement, 'width', `${currentWidth}px`);\r\n\t\t});\r\n\t\tthis.observer.observe(this.applicatorRef.nativeElement);\r\n\t}\r\n\r\n\tpublic apply() {\r\n\t\tthis.appliedValues = Object.assign({}, this.stagedValues);\r\n\t\tthis.onApply.emit({\r\n\t\t\tappliedValues: this.appliedValues,\r\n\t\t\tinitialLoad: this.initialLoad\r\n\t\t});\r\n\t}\r\n\r\n\tpublic beforeApply(): void {\r\n\t\tthis.initialLoad = false;\r\n\t\tthis.resetApply();\r\n\t\tthis.apply();\r\n\t}\r\n\r\n\tpublic canApply(): boolean {\r\n\t\t//if any date refiners input is invalid then disable apply button\r\n\t\tif (this.isAnyDateRefinerStacksInputInvalid) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn !isEqual(this.stagedValues, this.appliedValues);\r\n\t}\r\n\r\n\tpublic canReset(): boolean {\r\n\t\treturn !isEqual(this.stagedValues, this.defaultValues);\r\n\t}\r\n\r\n\tpublic getDefaultValueForRefiner(\r\n\t\trefiner: SimpleRefinerDefinition | DateRefinerDefinition | BaseRefinerDefinition\r\n\t): OptionRefinerValue | DateRefinerValue {\r\n\t\t//get default preselected values incase simpleRefiner has preselected values\r\n\t\tlet refinerObject: SimpleRefinerDefinition;\r\n\r\n\t\tthis.debug('getDefaultValueForRefiner(refiner)', { refiner });\r\n\r\n\t\t// If a default value exists for the slug, return it immediately\r\n\t\tif (this.defaultValues && this.defaultValues[refiner.slug]) {\r\n\t\t\treturn this.defaultValues[refiner.slug];\r\n\t\t}\r\n\r\n\t\t// Otherwise, return an empty array for Simple Refiner and \"All\" for Date Refiner\r\n\t\tif (refiner.type === 'radio') {\r\n\t\t\treturn [];\r\n\t\t} else if (refiner.type === 'simple' || refiner instanceof SimpleRefinerDefinition) {\r\n\t\t\trefinerObject = refiner as SimpleRefinerDefinition;\r\n\t\t\tif (refinerObject.defaultPreSelectValues) {\r\n\t\t\t\treturn refinerObject.defaultPreSelectValues;\r\n\t\t\t} else {\r\n\t\t\t\treturn [] as OptionRefinerValue;\r\n\t\t\t}\r\n\t\t} else if (refiner.type === 'date' || refiner instanceof DateRefinerDefinition) {\r\n\t\t\tif (this.enableCustomDateRange) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tfrom: null,\r\n\t\t\t\t\tto: null,\r\n\t\t\t\t\toptionSlug: 'custom'\r\n\t\t\t\t} as DateRefinerValue;\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tfrom: null,\r\n\t\t\t\tto: null,\r\n\t\t\t\toptionSlug: '-1'\r\n\t\t\t} as DateRefinerValue;\r\n\t\t} else if (refiner.type === 'search' || refiner instanceof SimpleRefinerDefinition) {\r\n\t\t\trefinerObject = refiner as SimpleRefinerDefinition;\r\n\t\t\tif (refinerObject.defaultPreSelectValues) {\r\n\t\t\t\treturn refinerObject.defaultPreSelectValues;\r\n\t\t\t} else {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Only reached with invalid refiner definitions.\r\n\t\tthrow new Error(\r\n\t\t\t'Unable to get determine Refiner type from Refiner Definition. Ensure Refiner Definition contains `type` field.'\r\n\t\t);\r\n\t}\r\n\r\n\tpublic handleRefinerValues(refinerSlug, refinerValue): void {\r\n\t\tthis.log('handleRefinerValues(refinerSlug, refinerValue)', { refinerSlug, refinerValue });\r\n\t\tthis.stagedValues[refinerSlug] = refinerValue;\r\n\t\tthis.stagedValuesofRefiner = this.stagedValues;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles Collective date refiner Input stack and update status to the boolean flag of applicator component\r\n\t * @param DateInputStatus\r\n\t */\r\n\tpublic handleDateInputValidationStatus(DateInputStatus: boolean) {\r\n\t\t//update dateRefiners input status from refiners component\r\n\r\n\t\tthis.isAnyDateRefinerStacksInputInvalid = DateInputStatus;\r\n\t}\r\n\r\n\tpublic ngOnDestroy() {\r\n\t\tthis.destroyExistingSubscriptions();\r\n\t\tthis.observer.unobserve(this.applicatorRef.nativeElement);\r\n\t}\r\n\r\n\tpublic ngOnInit() {\r\n\t\tthis.refinerNewSubscriptions();\r\n\t\t// Must execute after the rest of the subscriptions callbacks.\r\n\t\tif (this.applyOnInit) {\r\n\t\t\tcombineLatest(this.refiners.map(refiner => refiner.valueSubject.pipe(take(1)))).subscribe(\r\n\t\t\t\tallRefinersInitialized => {\r\n\t\t\t\t\tthis.apply();\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (changes['refiners']) {\r\n\t\t\tthis.destroyExistingSubscriptions();\r\n\t\t\tthis.refinerNewSubscriptions();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic reset(): void {\r\n\t\tthis.refiners.forEach(refiner => {\r\n\t\t\tconsole.debug('reset()', refiner.slug, this.defaultValues[refiner.slug]);\r\n\t\t\trefiner.valueSubject.next(this.defaultValues[refiner.slug]);\r\n\t\t});\r\n\t\tthis.resetClicked = true;\r\n\t\tthis.beforeApply();\r\n\t}\r\n\r\n\tresetApply() {\r\n\t\tthis.onReset.emit({\r\n\t\t\tresetClicked: this.resetClicked\r\n\t\t});\r\n\t\tthis.resetClicked = false;\r\n\t}\r\n\tpublic refinerNewSubscriptions = (): void => {\r\n\t\t//reset default values for reset and apply states\r\n\t\tthis.defaultValues = {};\r\n\t\t// update default values\r\n\t\tthis.refiners.forEach(refiner => {\r\n\t\t\tthis.defaultValues[refiner.slug] = this.getDefaultValueForRefiner(refiner);\r\n\t\t});\r\n\t\t// take first values and send up\r\n\t\tthis.subscriptions = new Array<Subscription>();\r\n\t\tthis.subscriptions = this.refiners.reduce((allSubscriptions, refiner) => {\r\n\t\t\treturn [\r\n\t\t\t\t...allSubscriptions,\r\n\t\t\t\t// Get notified when value changes\r\n\t\t\t\trefiner.valueSubject.subscribe(newRefinerValues =>\r\n\t\t\t\t\tthis.handleRefinerValues(refiner.slug, newRefinerValues)\r\n\t\t\t\t)\r\n\t\t\t];\r\n\t\t}, []);\r\n\t};\r\n\tpublic destroyExistingSubscriptions = (): void => {\r\n\t\t// prevents memory leaks by properly unsubscribing when this component unmounts.\r\n\t\tthis.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n\t};\r\n}\r\n","<div #applicator class=\"applicator\">\r\n\t<div\r\n\t\tstickyThing\r\n\t\t[spacer]=\"headerSpacer\"\r\n\t\t[boundary]=\"applicator\"\r\n\t\tclass=\"applicator__section\"\r\n\t\t#stickyHeader\r\n\t>\r\n\t\t<div class=\"applicator__header\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"applicator__action applicator__action--primary\"\r\n\t\t\t\t[class.applicator__action--disabled]=\"!canApply()\"\r\n\t\t\t\t[disabled]=\"!canApply()\"\r\n\t\t\t\t(click)=\"beforeApply()\"\r\n\t\t\t>\r\n\t\t\t\t{{ applyLabel }}\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"applicator__action applicator__action--secondary\"\r\n\t\t\t\t[class.applicator__action--disabled]=\"!canReset()\"\r\n\t\t\t\t[disabled]=\"!canReset()\"\r\n\t\t\t\t(click)=\"reset()\"\r\n\t\t\t>\r\n\t\t\t\t{{ resetLabel }}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\t<div #headerSpacer></div>\r\n\t<div class=\"applicator__section\">\r\n\t\t<porcelain-refiners\r\n\t\t\t#refinerRef\r\n\t\t\t*ngIf=\"refiners\"\r\n\t\t\t[refiners]=\"refiners\"\r\n\t\t\t[allowIncompleteEmit]=\"allowIncompleteEmit\"\r\n\t\t\t(updateDateRefinerStackValidityStatus)=\"handleDateInputValidationStatus($event)\"\r\n\t\t\t[disable]=\"disable\"\r\n\t\t\t[isOpen]=\"isOpen\"\r\n\t\t\t[enableCustomDateRange]=\"enableCustomDateRange\"\r\n\t\t></porcelain-refiners>\r\n\t\t<div *ngIf=\"!refiners\">\r\n\t\t\t<p>{{ loadingLabel }}</p>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TruncateComponent } from './truncate/truncate.component';\r\n\r\nconst TRUNCATE_DIRECTIVES = [TruncateComponent];\r\n\r\nconst TRUNCATE_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: TRUNCATE_DIRECTIVES,\r\n\timports: TRUNCATE_IMPORTS,\r\n\texports: TRUNCATE_DIRECTIVES\r\n})\r\nexport class TruncateModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-expando-header, p-expando-header',\r\n\ttemplateUrl: './expando-header.component.html',\r\n\tstyleUrls: ['./expando-header.component.scss']\r\n})\r\nexport class ExpandoHeaderComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-expando-body, p-expando-body',\r\n\ttemplateUrl: './expando-body.component.html',\r\n\tstyleUrls: ['./expando-body.component.scss']\r\n})\r\nexport class ExpandoBodyComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExpandoComponent } from './expando/expando.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ExpandoHeaderComponent } from './expando-header/expando-header.component';\r\nimport { ExpandoBodyComponent } from './expando-body/expando-body.component';\r\n\r\nexport const EXPANDO_DIRECTIVES = [ExpandoComponent, ExpandoHeaderComponent, ExpandoBodyComponent],\r\n\tEXPANDO_IMPORTS = [CommonModule, FontAwesomeModule];\r\n\r\n@NgModule({\r\n\tdeclarations: EXPANDO_DIRECTIVES,\r\n\timports: EXPANDO_IMPORTS,\r\n\texports: EXPANDO_DIRECTIVES\r\n})\r\nexport class ExpandoModule {}\r\n","// From Libraries\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { AngularMyDatePickerModule } from 'angular-mydatepicker';\r\n\r\n// From Porcelain\r\nimport { TruncateModule } from '../truncate/truncate.module';\r\n\r\n// From Module\r\nimport { DateRefinerComponent } from './date-refiner/date-refiner.component';\r\nimport { ExpandoModule } from '../expando/expando.module';\r\n\r\nexport const DATE_REFINER_DIRECTIVES = [DateRefinerComponent];\r\n\r\nexport const DATE_REFINER_IMPORTS = [\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tFontAwesomeModule,\r\n\tTruncateModule,\r\n\tAngularMyDatePickerModule,\r\n\tExpandoModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: DATE_REFINER_DIRECTIVES,\r\n\timports: DATE_REFINER_IMPORTS,\r\n\texports: DATE_REFINER_DIRECTIVES\r\n})\r\nexport class DateRefinerModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { isDevMode } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'ceil'\r\n})\r\nexport class CeilPipe implements PipeTransform {\r\n\t/**\r\n\t * Applies numeric ceil operation to a value\r\n\t */\r\n\ttransform(value: any): any {\r\n\t\tif (typeof value === 'number') {\r\n\t\t\treturn Math.ceil(value);\r\n\t\t} else {\r\n\t\t\tif (isDevMode()) {\r\n\t\t\t\tconsole.trace('CeilPipe.transform(value) called with non-numeric value.');\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, isDevMode } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'floor'\r\n})\r\nexport class FloorPipe implements PipeTransform {\r\n\tname = 'FloorPipe';\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\tif (typeof value === 'number') {\r\n\t\t\treturn Math.floor(value);\r\n\t\t} else {\r\n\t\t\tif (isDevMode()) {\r\n\t\t\t\tconsole.trace('FloorPipe.transform(value) called with non-numeric value.');\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, isDevMode } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'round'\r\n})\r\nexport class RoundPipe implements PipeTransform {\r\n\tname = 'RoundPipe';\r\n\ttransform(value: any, args?: any): any {\r\n\t\tif (typeof value === 'number') {\r\n\t\t\treturn Math.round(value);\r\n\t\t} else {\r\n\t\t\tif (isDevMode()) {\r\n\t\t\t\tconsole.trace('RoundPipe.transform(value) called with non-numeric value.');\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport interface FilterItem {\r\n\tindex: number;\r\n\tvalue: any;\r\n}\r\n\r\n/**\r\n * Filters an array for consumption by an angular *ngFor expression.\r\n * @example\r\n * \t```html\r\n * \t<input [(ngModel)]=\"searchQuery\" placeholder=\"filter the list...\">\r\n * \t<li *ngFor=\"let item of items | filter : searchQuery\">\r\n * \t\t{{item}}\r\n * \t</li>\r\n * \t```\r\n */\r\n@Pipe({\r\n\tname: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\ttransform(\r\n\t\titems: any[],\r\n\t\tquery: string,\r\n\t\tisObjectArray: boolean = false,\r\n\t\tlabelProp: string = ''\r\n\t): FilterItem[] {\r\n\t\t// If there's no search string yet, return all items\r\n\t\tif (!query) {\r\n\t\t\treturn items.map((value, index) => ({ index, value }));\r\n\t\t}\r\n\r\n\t\tquery = query.toLowerCase();\r\n\r\n\t\t// By dynamically asigning the getLabel function,\r\n\t\t// the reduce function is much easier to maintain and read.\r\n\t\tconst getLabel = isObjectArray ? item => item[labelProp] : item => item;\r\n\r\n\t\treturn items.reduce((result, value, index) => {\r\n\t\t\tif (\r\n\t\t\t\tgetLabel(value)\r\n\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t.indexOf(query) > -1\r\n\t\t\t) {\r\n\t\t\t\t// return result array with this item added\r\n\t\t\t\treturn [...result, { index, value }];\r\n\t\t\t} else {\r\n\t\t\t\t// return result array without this item added\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t}, [] as FilterItem[]);\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SprintfPipe } from './sprintf/sprintf.pipe';\r\nimport { CeilPipe } from './ceil/ceil.pipe';\r\nimport { FloorPipe } from './floor/floor.pipe';\r\nimport { RoundPipe } from './round/round.pipe';\r\nimport { ToLocaleStringPipe } from './toLocaleString/to-locale-string.pipe';\r\nimport { FilterPipe } from './filter/filter.pipe';\r\nimport { HighlightPipe } from './highlight/highlight.pipe';\r\n\r\nexport const PIPES_IMPORTS = [CommonModule];\r\nexport const PIPES_DIRECTIVES = [\r\n\tCeilPipe,\r\n\tFloorPipe,\r\n\tRoundPipe,\r\n\tSprintfPipe,\r\n\tToLocaleStringPipe,\r\n\tFilterPipe,\r\n\tHighlightPipe\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: PIPES_DIRECTIVES,\r\n\timports: PIPES_IMPORTS,\r\n\texports: PIPES_DIRECTIVES\r\n})\r\nexport class PipesModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SimpleRefinerComponent } from './simple-refiner/simple-refiner.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TruncateModule } from '../truncate/truncate.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PipesModule } from '../pipes/pipes.module';\r\nimport { ExpandoModule } from '../expando/expando.module';\r\n\r\nexport const SIMPLE_REFINER_DIRECTIVES = [SimpleRefinerComponent];\r\n\r\nexport const SIMPLE_REFINER_IMPORTS = [\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tFontAwesomeModule,\r\n\tTruncateModule,\r\n\tPipesModule,\r\n\tExpandoModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: SIMPLE_REFINER_DIRECTIVES,\r\n\timports: SIMPLE_REFINER_IMPORTS,\r\n\texports: SIMPLE_REFINER_DIRECTIVES\r\n})\r\nexport class SimpleRefinerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SimpleRadioRefinerComponent } from './simple-radio-refiner/simple-radio-refiner.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TruncateModule } from '../truncate/truncate.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PipesModule } from '../pipes/pipes.module';\r\nimport { ExpandoModule } from '../expando/expando.module';\r\n\r\nexport const SIMPLE_RADIO_REFINER_DIRECTIVES = [SimpleRadioRefinerComponent];\r\n\r\nexport const SIMPLE_RADIO_REFINER_IMPORTS = [\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tFontAwesomeModule,\r\n\tTruncateModule,\r\n\tPipesModule,\r\n\tExpandoModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: SIMPLE_RADIO_REFINER_DIRECTIVES,\r\n\timports: SIMPLE_RADIO_REFINER_IMPORTS,\r\n\texports: SIMPLE_RADIO_REFINER_DIRECTIVES\r\n})\r\nexport class SimpleRadioRefinerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SearchRefinerComponent } from './search-refiner/search-refiner.component';\r\nimport { ExpandoModule } from '../expando/expando.module';\r\nimport { TruncateModule } from '../truncate/truncate.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\nimport { PipesModule } from '../pipes/pipes.module';\r\n\r\nexport const SEARCH_REFINER_IMPORTS = [\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tExpandoModule,\r\n\tTruncateModule,\r\n\tPipesModule,\r\n\tFontAwesomeModule\r\n];\r\nexport const SEARCH_REFINER_DIRECTIVES = [SearchRefinerComponent];\r\n\r\n@NgModule({\r\n\tdeclarations: SEARCH_REFINER_DIRECTIVES,\r\n\timports: SEARCH_REFINER_IMPORTS,\r\n\texports: SEARCH_REFINER_DIRECTIVES\r\n})\r\nexport class SearchRefinerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DateRefinerModule } from '../date-refiner/date-refiner.module';\r\nimport { SimpleRefinerModule } from '../simple-refiner/simple-refiner.module';\r\nimport { SimpleRadioRefinerModule } from '../simple-radio-refiner/simple-radio-refiner.module';\r\nimport { SearchRefinerModule } from '../search-refiner/search-refiner.module';\r\n\r\nimport { RefinersComponent } from './refiners/refiners.component';\r\n\r\nexport const REFINERS_DIRECTIVES = [RefinersComponent];\r\n\r\nexport const REFINERS_IMPORTS = [\r\n\tCommonModule,\r\n\tDateRefinerModule,\r\n\tSimpleRefinerModule,\r\n\tSimpleRadioRefinerModule,\r\n\tSearchRefinerModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: REFINERS_DIRECTIVES,\r\n\timports: REFINERS_IMPORTS,\r\n\texports: REFINERS_DIRECTIVES\r\n})\r\nexport class RefinersModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AngularStickyThingsModule } from '@w11k/angular-sticky-things';\r\n\r\nimport { ApplicatorComponent } from './applicator/applicator.component';\r\nimport { RefinersModule } from '../refiners/refiners.module';\r\n\r\nexport const APPLICATOR_DIRECTIVES = [ApplicatorComponent];\r\nexport const APPLICATOR_IMPORTS = [CommonModule, RefinersModule, AngularStickyThingsModule];\r\n\r\n@NgModule({\r\n\tdeclarations: APPLICATOR_DIRECTIVES,\r\n\timports: APPLICATOR_IMPORTS,\r\n\texports: APPLICATOR_DIRECTIVES\r\n})\r\nexport class ApplicatorModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: 'a[href][porcelain-link]',\r\n})\r\nexport class LinkDirective {\r\n\tpublic readonly templateRef!: TemplateRef<any>;\r\n\tconstructor(templateRef?: TemplateRef<any>) {\r\n\t\tif (!this.templateRef) {\r\n\t\t\tthrow new Error(\r\n\t\t\t\t'porcelain-link must be used as a structural directive, prefixed with an asterisk, i.e., <a *porcelain-link href=\"\"></a>.',\r\n\t\t\t);\r\n\t\t}\r\n\t\tthis.templateRef = templateRef;\r\n\t}\r\n}\r\n","import { Component, ContentChildren, Input, QueryList } from '@angular/core';\r\nimport { LinkDirective } from '../link.directive';\r\n\r\n@Component({\r\n\tselector: 'porcelain-footer, p-footer',\r\n\ttemplateUrl: './footer.component.html',\r\n\tstyleUrls: ['./footer.component.scss'],\r\n})\r\nexport class FooterComponent {\r\n\treadonly year = new Date().getFullYear();\r\n\r\n\t@ContentChildren(LinkDirective) hyperlinks!: QueryList<LinkDirective>;\r\n\r\n\t/**\r\n\t * Copyright statement label.  Use %s or %1$s for the current year.\r\n\t */\r\n\t@Input() copyrightLabel: string = 'UL LLC © %s. All Rights Reserved.';\r\n\r\n\t@Input() links: [string, string][] = [\r\n\t\t[\r\n\t\t\t'Access Your Data',\r\n\t\t\t'https://submit-irm.trustarc.eu/services/validation/0d4cb432-d0b6-4d78-ba6a-cb3c5a9a4174',\r\n\t\t],\r\n\t\t['Online Policies', 'https://www.ul.com/resources/online-policies'],\r\n\t\t[\r\n\t\t\t'About Cookies',\r\n\t\t\t'https://www.ul.com/resources/online-policies/about-cookies',\r\n\t\t],\r\n\t];\r\n}\r\n","<div class=\"footer\">\r\n\t<ul>\r\n\t\t<li class=\"footer__ul-link\" title=\"UL Solutions\">\r\n\t\t\t<a href=\"https://ul.com\">UL Solutions</a>\r\n\t\t</li>\r\n\t\t<li>{{ copyrightLabel | sprintf: year }}</li>\r\n\t\t<li *ngFor=\"let link of links\">\r\n\t\t\t<a [href]=\"link[1]\" target=\"_blank\">{{ link[0] }}</a>\r\n\t\t</li>\r\n\t\t<li *ngFor=\"let hyperlink of hyperlinks\">\r\n\t\t\t<ng-container>\r\n\t\t\t\t<ng-template\r\n\t\t\t\t\t[ngTemplateOutlet]=\"hyperlink.templateRef\"\r\n\t\t\t\t></ng-template>\r\n\t\t\t</ng-container>\r\n\t\t</li>\r\n\t</ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { PipesModule } from '../pipes/pipes.module';\r\nimport { FooterComponent } from './footer/footer.component';\r\nimport { LinkDirective } from './link.directive';\r\n\r\nexport const FOOTER_IMPORTS = [CommonModule, PipesModule];\r\nexport const FOOTER_DIRECTIVES = [FooterComponent, LinkDirective];\r\n\r\n@NgModule({\r\n\tdeclarations: FOOTER_DIRECTIVES,\r\n\timports: FOOTER_IMPORTS,\r\n\texports: FOOTER_DIRECTIVES,\r\n})\r\nexport class FooterModule {}\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\n// Font Awesome 5\r\nimport { faSearch, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { Loggable } from '../../Loggable';\r\n\r\n/**\r\n * @deprecated Update your Search Inputs to use p2-search-input.\r\n */\r\n@Component({\r\n\tselector: 'porcelain-search-input, p-legacy-search-input',\r\n\ttemplateUrl: './search-input.component.html',\r\n\tstyleUrls: ['./search-input.component.scss'],\r\n\thost: {\r\n\t\t'[class.search-input]': 'true',\r\n\t\t'[class.search-input--no-borders]': '!borders',\r\n\t\t'[class.search-input--has-focus]': 'isSearchFocused'\r\n\t}\r\n})\r\nexport class /* Legacy */ SearchInputComponent extends Loggable implements OnInit {\r\n\treadonly name = '(deprecated) SearchInputComponent';\r\n\t// @Input() public userValue: string = '';\r\n\t@ViewChild('searchInput', { static: true }) public searchInput: ElementRef<HTMLInputElement>;\r\n\r\n\t@Input() set userValue(userValue: string) {\r\n\t\tif (userValue !== this.currentValue) {\r\n\t\t\tthis.currentValue = userValue;\r\n\t\t}\r\n\t}\r\n\r\n\tget userValue(): string {\r\n\t\treturn this.currentValue;\r\n\t}\r\n\r\n\t//#region Appearance\r\n\r\n\t@Input() public borders: boolean = true;\r\n\t@Input() public clearIconColor: any = '#9dacba';\r\n\t@Input() public submitIconColor: any = '#9dacba';\r\n\r\n\t//#endregion\r\n\r\n\t//#region Handlers\r\n\r\n\t@Output() public emptyHandler: EventEmitter<string> = new EventEmitter();\r\n\t@Output() public submitHandler: EventEmitter<string> = new EventEmitter();\r\n\t@Output() public searchboxValue: EventEmitter<string> = new EventEmitter<string>();\r\n\t@Output() public focusEvent: EventEmitter<boolean> = new EventEmitter<boolean>(false);\r\n\t//#endregion\r\n\r\n\t//#region Icons\r\n\r\n\t@Input() public clearIcon: any = faTimesCircle;\r\n\t@Input() public submitIcon: any = faSearch;\r\n\t@Input() public isDropDownSelect: boolean = false;\r\n\r\n\t//#endregion\r\n\r\n\t//#region Labels\r\n\r\n\t@Input() public placeholderLabel: string = 'Type to search...';\r\n\r\n\t//#endregion\r\n\r\n\tpublic isSearchFocused = false;\r\n\tpublic currentValue = '';\r\n\r\n\tconstructor(private translationService: TranslationService) {\r\n\t\tsuper();\r\n\t\tthis.forceLog().warn('component should be updated to dual-bind Search Input.');\r\n\t\tthis.forceLog().trace('component instantiated here.');\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this, {\r\n\t\t\t\tlabel_TypeToSearch: 'placeholderLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the control is in a condition that allows a submit.\r\n\t */\r\n\tpublic canSubmit(): boolean {\r\n\t\tif (!this.isDropDownSelect) {\r\n\t\t\treturn (this.isEmpty() && this.canEmitEmpty) || !this.isEmpty();\r\n\t\t} else {\r\n\t\t\tthis.canEmitEmpty = true;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the value of the search field and resets focus.\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tthis.currentValue = '';\r\n\r\n\t\t//empty value to be emitted to emptyHandler\r\n\t\tthis.empty();\r\n\r\n\t\tthis.setFocus();\r\n\t}\r\n\r\n\t/**\r\n\t * Empty value emit once search cancel button is clicked\r\n\t */\r\n\tpublic empty(): void {\r\n\t\tthis.emptyHandler.emit('');\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the isSearchFocused value to false.\r\n\t */\r\n\tpublic handleBlur(): void {\r\n\t\tthis.isSearchFocused = false;\r\n\t\tthis.focusEvent.emit(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the isSearchFocused value to true.\r\n\t */\r\n\tpublic handleFocusIn(): void {\r\n\t\tthis.isSearchFocused = true;\r\n\t\tthis.focusEvent.emit(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests the search box for a value.\r\n\t */\r\n\tpublic isEmpty(): boolean {\r\n\t\treturn this.currentValue === '';\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\tpublic ngOnInit(): void {\r\n\t\t/* assigning uservalues */\r\n\t\tthis.currentValue = this.userValue;\r\n\t\t/*to check if there is previous value*/\r\n\t\tthis.canEmitEmpty = this.userValue === '' ? false : true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the value of isSearchFocused.\r\n\t */\r\n\tpublic searchHasFocus(): boolean {\r\n\t\treturn this.isSearchFocused;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets focus on the search input.\r\n\t */\r\n\tpublic setFocus(): void {\r\n\t\tthis.searchInput.nativeElement.focus();\r\n\t}\r\n\r\n\tcanEmitEmpty: boolean = false;\r\n\r\n\t/**\r\n\t * Submits the current value of the search input to outside listener.\r\n\t */\r\n\tpublic submit(): void {\r\n\t\tif (!this.isEmpty()) {\r\n\t\t\tthis.submitHandler.emit(this.currentValue);\r\n\t\t\tthis.canEmitEmpty = true; //to enable empty value sending for submit\r\n\t\t} else {\r\n\t\t\t// is empty\r\n\t\t\tif (this.canEmitEmpty === true) {\r\n\t\t\t\tthis.canEmitEmpty = false;\r\n\t\t\t\tthis.submitHandler.emit(this.currentValue); //empty value is emitted by submit\r\n\t\t\t}\r\n\t\t\tthis.setFocus();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * user enter value, this handler sends input as user types\r\n\t * */\r\n\tpublic userValueHandler(value: string) {\r\n\t\tthis.searchboxValue.emit(value);\r\n\t}\r\n\r\n\t/**\r\n\t * update search input box value,needs to be used with view child\r\n\t * */\r\n\tpublic updateSearchValue(value: string) {\r\n\t\tthis.currentValue = value;\r\n\t}\r\n}\r\n","<input\r\n\t#searchInput\r\n\ttype=\"text\"\r\n\ttitle=\"{{ placeholderLabel }}\"\r\n\tclass=\"search-input__query\"\r\n\t[(ngModel)]=\"currentValue\"\r\n\t(ngModelChange)=\"userValueHandler($event)\"\r\n\t[placeholder]=\"placeholderLabel\"\r\n\t(keyup.enter)=\"submit()\"\r\n\t(keyup.esc)=\"clear()\"\r\n\t(focus)=\"handleFocusIn()\"\r\n\t(blur)=\"handleBlur()\"\r\n/>\r\n<button\r\n\tclass=\"search-input__search-action search-input__search-action--clear\"\r\n\ttitle=\"Clear the search query.\"\r\n\t*ngIf=\"!isEmpty()\"\r\n\t(click)=\"clear()\"\r\n>\r\n\t<fa-icon [icon]=\"clearIcon\" [styles]=\"{ color: clearIconColor }\"></fa-icon>\r\n\t<span class=\"sr-only\">Clear the search query.</span>\r\n</button>\r\n<button\r\n\tclass=\" search-input__search-action  search-input__search\"\r\n\t[class.search-input__search-action--not-active]=\"!canSubmit()\"\r\n\t[class.search-input__search-action--is-active]=\"canSubmit()\"\r\n\t(click)=\"submit()\"\r\n\ttitle=\"Submit the search using the current search query.\"\r\n>\r\n\t<fa-icon [icon]=\"submitIcon\" [styles]=\"{ color: submitIconColor }\"></fa-icon>\r\n\t<span class=\"sr-only\">Submit the search using the current query.</span>\r\n</button>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { SearchInputComponent } from './search-input/search-input.component';\n\nexport const SEARCH_INPUT_DIRECTIVES = [SearchInputComponent];\nexport const SEARCH_INPUT_IMPORTS = [CommonModule, FontAwesomeModule, FormsModule];\n\n@NgModule({\n\tdeclarations: SEARCH_INPUT_DIRECTIVES,\n\timports: SEARCH_INPUT_IMPORTS,\n\texports: SEARCH_INPUT_DIRECTIVES\n})\nexport class SearchInputModule {}\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\n\r\n@Component({\r\n\tselector: 'porcelain-spinner, p-spinner',\r\n\ttemplateUrl: './spinner.component.html',\r\n\tstyleUrls: ['./spinner.component.scss']\r\n})\r\nexport class SpinnerComponent implements OnInit {\r\n\t@Input() loadingLabel: string = 'Loading…';\r\n\r\n\tconstructor(private translationService: TranslationService) {\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this, {\r\n\t\t\t\tlabel_Loading: 'loadingLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<span class=\"spinner\" title=\"{{ loadingLabel }}\">\r\n\t<span class=\"sr-only\">{{ loadingLabel }}</span>\r\n</span>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\n\r\nexport const SPINNER_DIRECTIVES = [SpinnerComponent];\r\nexport const SPINNER_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: SPINNER_DIRECTIVES,\r\n\timports: SPINNER_IMPORTS,\r\n\texports: SPINNER_DIRECTIVES\r\n})\r\nexport class SpinnerModule {}\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-savedsearch-modal, p-savedsearch-modal',\r\n\ttemplateUrl: './savedsearch-modalpopup.component.html',\r\n\tstyleUrls: ['./savedsearch-modalpopup.component.scss']\r\n})\r\nexport class SavedsearchModalpopupComponent implements OnInit {\r\n\tconstructor() {}\r\n\t@Output() onCheckBoxClick = new EventEmitter<string>();\r\n\t@Output() onModalClose = new EventEmitter<string>();\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tonCheckboxClick() {\r\n\t\tthis.onCheckBoxClick.emit('true');\r\n\t}\r\n\r\n\tcloseModel() {\r\n\t\tthis.onModalClose.emit('true');\r\n\t}\r\n}\r\n","<div class=\"modal-tooltip\">\r\n\t<div class=\"tooltipContent\">\r\n\t\t<div class=\"header\">\r\n\t\t\t<div #quickTip><ng-content select=\"[quickTipHeader]\"></ng-content></div>\r\n\t\t\t<ng-container *ngIf=\"!quickTip.children.length\">\r\n\t\t\t\tQuick Tip\r\n\t\t\t</ng-container>\r\n\t\t\t<span class=\"close-modal\" (click)=\"closeModel()\">&times;</span>\r\n\t\t</div>\r\n\r\n\t\t<div>\r\n\t\t\t<div #content><ng-content select=\"[quickTipContent]\"></ng-content></div>\r\n\t\t\t<ng-container *ngIf=\"!content.children.length\">\r\n\t\t\t\tSave your searches for quick access with the Save Search button in certain applications.\r\n\t\t\t\tYou can access your saved searches anywhere in the portal by clicking on this Saved\r\n\t\t\t\tSearches link.\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"warn-checkbox\">\r\n\t\t\t<input type=\"checkbox\" (click)=\"onCheckboxClick()\" />\r\n\t\t\t<span class=\"warn-msg\">\r\n\t\t\t\t<span #checkBox><ng-content select=\"[checkBoxContent]\"></ng-content></span>\r\n\t\t\t\t<ng-container *ngIf=\"!checkBox.children.length\">\r\n\t\t\t\t\tDon't show this again\r\n\t\t\t\t</ng-container>\r\n\t\t\t</span>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SavedsearchModalpopupComponent } from './savedsearch-modalpopup/savedsearch-modalpopup.component';\r\n\r\nexport const SAVEDSEARCHMODAL_DIRECTIVES = [SavedsearchModalpopupComponent];\r\nexport const SAVEDSEARCHMODAL_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: SAVEDSEARCHMODAL_DIRECTIVES,\r\n\timports: SAVEDSEARCHMODAL_IMPORTS,\r\n\texports: SAVEDSEARCHMODAL_DIRECTIVES\r\n})\r\nexport class SavedsearchModalpopupModule {}\r\n","import {\r\n\ttrigger,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\tgroup,\r\n\tanimate,\r\n\tquery,\r\n\tanimation,\r\n\tAnimationTriggerMetadata\r\n} from '@angular/animations';\r\n\r\nconst defaultTriggerName = 'slideInOut',\r\n\tdefaultAnimationDurationMs = 200,\r\n\tdefaultOpenStyle = {\r\n\t\theight: '*',\r\n\t\toverflow: 'hidden'\r\n\t},\r\n\tdefaultClosedStyle = {\r\n\t\theight: '0',\r\n\t\toverflow: 'hidden'\r\n\t};\r\n\r\nexport const generateSlideInOut: () => AnimationTriggerMetadata = (\r\n\ttriggerName = defaultTriggerName,\r\n\topenStyle = defaultOpenStyle,\r\n\tclosedStyle = defaultClosedStyle,\r\n\tanimationDurationMs = defaultAnimationDurationMs\r\n) =>\r\n\ttrigger(triggerName, [\r\n\t\tstate('in', style(openStyle)),\r\n\t\ttransition(':leave', [\r\n\t\t\tstyle(openStyle),\r\n\t\t\tgroup([animate(`${animationDurationMs}ms`, style(closedStyle))])\r\n\t\t]),\r\n\t\ttransition(':enter', [\r\n\t\t\tstyle(closedStyle),\r\n\t\t\tgroup([animate(`${animationDurationMs}ms`, style(openStyle))])\r\n\t\t])\r\n\t]);\r\n","import { SimpleOption } from './SimpleOption';\r\nimport { ISimpleOption } from './ISimpleOption';\r\nimport { ISimpleOptions } from './ISimpleOptions';\r\nexport class SimpleOptions<\r\n\tOptionType extends ISimpleOption = SimpleOption,\r\n\tValueType = string\r\n> implements ISimpleOptions<OptionType, ValueType> {\r\n\t[optionSlug: string]: ValueType | OptionType;\r\n}\r\n","import { IDateRefinerValue } from './IDateRefinerValue';\r\n/**\r\n * Class implementation of an IDateRefiner. Simple construction of a date\r\n */\r\nexport class DateRefinerValue implements IDateRefinerValue {\r\n\toptionSlug: string;\r\n\tfrom: Date;\r\n\tto: Date;\r\n\tconstructor(optionSlug?: string, from?: Date, to?: Date) {\r\n\t\tif (optionSlug) {\r\n\t\t\tthis.optionSlug = optionSlug;\r\n\t\t}\r\n\t\tif (from) {\r\n\t\t\tthis.from = from;\r\n\t\t}\r\n\t\tif (to) {\r\n\t\t\tthis.to = to;\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * Moves item at arr[sourceIdx] to arr[destIdx]\r\n */\r\nexport function moveItem<U>(arr: U[], sourceIdx, destIdx) {\r\n\t// remove `from` item and store it\r\n\tconst item = arr.splice(sourceIdx, 1)[0];\r\n\t// insert stored item into position `to`\r\n\tarr.splice(destIdx, 0, item);\r\n}\r\n","import { IDictionary } from '../../../types/Containers/IDictonary/IDictionary';\r\nimport { Entry } from '../../../types/Containers/Entry/Entry';\r\n\r\n/**\r\n * A reducer designed to turn an array of Entry tuples into a Dictionary.\r\n * @example\r\n * let myEntries = collection.toEntries(); // or anything yielding an Entry 2-tuple [string, any]\r\n * let myObject = myEntries.reduce(fromEntries, {}); // idiomatic: \"reduce from entries.\"\r\n */\r\nexport function fromEntries<ValueType>(\r\n\tresult: IDictionary<ValueType>,\r\n\t[currentKey, currentValue]: Entry<ValueType>,\r\n\tcurrentIdx: number,\r\n\tarray: Entry<ValueType>[]\r\n) {\r\n\tresult[currentKey] = currentValue;\r\n\treturn result;\r\n}\r\n","import {\r\n\tComponent,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostListener,\r\n\tViewChild,\r\n\tElementRef,\r\n\tOnInit\r\n} from '@angular/core';\r\nimport {\r\n\tfaChevronLeft,\r\n\tfaChevronRight,\r\n\tfaChevronUp,\r\n\tfaChevronDown\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { sprintf } from 'sprintf-js';\r\n\r\nimport { clamp } from '../../shared/utilities/arrays/clamp';\r\nimport { moveItem } from '../../shared/utilities/arrays/moveItem';\r\nimport { Loggable } from '../../Loggable';\r\n\r\ninterface CSSStyleDeclarationWithGrid extends CSSStyleDeclaration {\r\n\tgrid: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'porcelain-rack, p-rack',\r\n\ttemplateUrl: './rack.component.html',\r\n\tstyleUrls: ['./rack.component.scss']\r\n})\r\nexport class RackComponent<TItemType extends any = any> extends Loggable implements OnInit {\r\n\t/**\r\n\t * Component name; used for logging.\r\n\t */\r\n\tname: string = 'RackComponent';\r\n\r\n\t/**\r\n\t * activeItems backing field\r\n\t */\r\n\tprivate _activeItems: TItemType[] = [];\r\n\t/**\r\n\t * inactiveItems backing field\r\n\t */\r\n\tprivate _inactiveItems: TItemType[] = [];\r\n\r\n\treadonly activateIcon: any = faChevronRight;\r\n\treadonly deactivateIcon: any = faChevronLeft;\r\n\treadonly moveDownIcon: any = faChevronDown;\r\n\treadonly moveUpIcon: any = faChevronUp;\r\n\r\n\t/**\r\n\t * The property on your inactiveItems/activeItems array items that should be shown as label.\r\n\t * For example, if you use item.name for the display, set this to 'name'\r\n\t */\r\n\t@Input() labelProp: string = 'label';\r\n\t/**\r\n\t * The property on the inactiveItems/activeItems array items that should be used to determine\r\n\t * locked item state.  For example if you use item.locked, this value should be 'locked'\r\n\t */\r\n\t@Input() lockedProp: string = 'locked';\r\n\r\n\t/**\r\n\t * The number of rows to show in the column <select> elements.\r\n\t */\r\n\t@Input() size: number = 6;\r\n\r\n\t/**\r\n\t * The property on your inactiveItems/activeItems array items that should be used as the value.\r\n\t * For example, if you use item.id as the value, set this value to 'id'\r\n\t */\r\n\t@Input() valueProp: string = 'value';\r\n\r\n\t/**\r\n\t * activeItems change emitter; emits changes to the activeItems property to parent scopes\r\n\t */\r\n\t@Output() activeItemsChange = new EventEmitter<TItemType[]>();\r\n\r\n\t/**\r\n\t * inactiveItems EventEmitter; emits changes to the inactiveItems property to parent scopes\r\n\t */\r\n\t@Output() inactiveItemsChange = new EventEmitter<TItemType[]>();\r\n\r\n\t@ViewChild('activePicker')\r\n\tactiveSelectElement: ElementRef;\r\n\r\n\t@ViewChild('inactivePicker')\r\n\tinactiveSelectElement: ElementRef;\r\n\r\n\t/**\r\n\t * Label for the list header of the \"active\" items.\r\n\t */\r\n\t@Input() labelActiveList: string = 'Active';\r\n\r\n\t/**\r\n\t * Label for the button that moves an item from \"inactive\" to \"active\"\r\n\t */\r\n\t@Input() labelActivate: string = 'Add';\r\n\r\n\t/**\r\n\t * Label for the button that moves selected item from \"active\" to \"inactive\"\r\n\t */\r\n\t@Input() labelDeactivate: string = 'Remove';\r\n\r\n\t/**\r\n\t * Label for the list header of the \"inactive\" items.\r\n\t */\r\n\t@Input() labelInactiveList: string = 'Inactive';\r\n\r\n\t/**\r\n\t * Label for the notice shown when hovering over a locked \"active\" item.\r\n\t */\r\n\t@Input() labelLocked: string = 'This item cannot be removed from the active items';\r\n\r\n\t/**\r\n\t * Label for the button used to move selected item down the \"active\" list.\r\n\t */\r\n\t@Input() labelMoveDown: string = 'Move Down';\r\n\r\n\t/**\r\n\t * Label for the button used to move the selected item up the \"active\" list.\r\n\t */\r\n\t@Input() labelMoveUp: string = 'Move Up';\r\n\r\n\t/**\r\n\t * Label for the button where a shift+click/shift+alt+up moves the selected item to the top of the \"active\" list.\r\n\t */\r\n\t@Input() labelMoveToTop: string = 'Move to Top';\r\n\r\n\t/**\r\n\t * Label for the button where a shift+click/shift+alt+down moves the selected item to the bottom of the \"active\" list.\r\n\t */\r\n\t@Input() labelMoveToBottom: string = 'Move to Bottom';\r\n\r\n\t/**\r\n\t * Label/string for the inflected form for referring to more than one item.\r\n\t * Used with i18n/inflection. Example: {{ '%u %s' | sprintf : count : labelPluralItems }}\r\n\t * @example\r\n\t * \t5 Columns\r\n\t * \t5 Apples\r\n\t * \t5 Deer\r\n\t */\r\n\t@Input() labelPluralItems: string = 'Items';\r\n\r\n\t/**\r\n\t * Label/string for the inflectef form for referring to exactly one item.\r\n\t * Used with i18n/inflection. Example: {{ '%u %s' | sprintf : count : labelSingleItems }}\r\n\t * @example\r\n\t * \t1 Column\r\n\t * \t1 Apple\r\n\t * \t1 Deer\r\n\t */\r\n\t@Input() labelSingleItem: string = 'Item';\r\n\r\n\t/**\r\n\t * Label/string for the inflected form for referring to zero/no items.\r\n\t * Used with i18n/inflection. Example: {{ '%u %s' | sprintf : count : labelZeroItems }}\r\n\t * @example\r\n\t *  0 Columns\r\n\t *  0 Fruits\r\n\t *  0 Deer\r\n\t */\r\n\t@Input() labelZeroItems: string = 'Items';\r\n\r\n\t/**\r\n\t * Renders an accessible string that is helpful for screen readers to report how many items are in each list.\r\n\t * @param list A list of items to be counted\r\n\t */\r\n\ti18nListCount(list: TItemType[]): string {\r\n\t\tconst length = list.length;\r\n\t\treturn sprintf(\r\n\t\t\t'%s %s',\r\n\t\t\tlength.toLocaleString(),\r\n\t\t\t// prettier-ignore\r\n\t\t\tlength === 0 ? this.labelZeroItems\r\n\t\t\t: length === 1 ? this.labelSingleItem\r\n\t\t\t: this.labelPluralItems\r\n\t\t);\r\n\t}\r\n\r\n\tsupportsGrid(): boolean {\r\n\t\treturn (\r\n\t\t\ttypeof (document.createElement('div').style as CSSStyleDeclarationWithGrid).grid === 'string'\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Tracks whether or not the \"activeItems\" list currently has focus.\r\n\t */\r\n\tisActiveFocused: boolean = true;\r\n\r\n\t/**\r\n\t * Tracks whether or not the \"inactiveItems\" list currently has focus\r\n\t */\r\n\tisInactiveFocused: boolean = false;\r\n\r\n\t/**\r\n\t * The object defining the currently selected Active item.\r\n\t */\r\n\tselectedActiveItem: TItemType = null;\r\n\r\n\t/**\r\n\t * The object defining the currently selected Inactive item.\r\n\t */\r\n\tselectedInactiveItem: TItemType = null;\r\n\r\n\t/**\r\n\t * activeItems getter; returns the value of _activeItems\r\n\t */\r\n\t@Input()\r\n\tget activeItems(): TItemType[] {\r\n\t\treturn this._activeItems;\r\n\t}\r\n\r\n\t/**\r\n\t * inactiveItems getter; returns value of _inactiveItems backing field\r\n\t */\r\n\t@Input()\r\n\tget inactiveItems(): TItemType[] {\r\n\t\treturn this._inactiveItems;\r\n\t}\r\n\r\n\t/**\r\n\t * activeItems setter; sets the value of _activeItems and emits the changes\r\n\t */\r\n\tset activeItems(activeItems: TItemType[]) {\r\n\t\tthis._activeItems = activeItems;\r\n\t\tthis.activeItemsChange.emit(this._activeItems);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the conditions are acceptable to activate the currently selected inactive item.\r\n\t */\r\n\tget canActivateItem(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.inactiveItems.length > 0 && // there are items in the inactive items\r\n\t\t\tthis.selectedInactiveItem !== null && // something is highlighted in the inactive list\r\n\t\t\ttrue\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the conditions are acceptable to deactivate the currenty selected active item.\r\n\t */\r\n\tget canDeactivateItem(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.activeItems.length > 0 && // there are items to move\r\n\t\t\tthis.selectedActiveItem !== null && // something is highlighted in the active list\r\n\t\t\t!this.isItemLocked(this.selectedActiveItem) && // it isn't required to be there\r\n\t\t\ttrue\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the selectedActiveItem is in a position where it can move down the activeItems array.\r\n\t */\r\n\tget canMoveDown(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.currentActiveIdx > -1 && // an item is selected\r\n\t\t\tthis.activeItems.length > 1 && // there is more than one item to move\r\n\t\t\tthis.currentActiveIdx < this.lastActiveIdx // the selected item is not at the bottom\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the selectedActiveItem is in a position where it can move UP the activeItems array.\r\n\t */\r\n\tget canMoveUp(): boolean {\r\n\t\treturn (\r\n\t\t\tthis.currentActiveIdx > -1 && // an item is selected\r\n\t\t\tthis.activeItems.length > 1 && // there is more than one item to move\r\n\t\t\tthis.currentActiveIdx > 0 // the selected item is not at the top\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the index of the currently-selected active item.  Returns -1 when nothing is selected.\r\n\t */\r\n\tget currentActiveIdx(): number {\r\n\t\treturn this.activeItems.findIndex(item => this.selectedActiveItem === item);\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the index of the currently-selected inactive item.  Returns -1 when nothing is selected.\r\n\t */\r\n\tget currentInactiveIdx(): number {\r\n\t\treturn this.inactiveItems.findIndex(item => this.selectedInactiveItem === item);\r\n\t}\r\n\r\n\t/**\r\n\t * inactiveItems setter; sets value of _inactiveItems backing field and emits the new value.\r\n\t */\r\n\tset inactiveItems(inactiveItems: TItemType[]) {\r\n\t\tthis._inactiveItems = inactiveItems;\r\n\t\tthis.inactiveItemsChange.emit(this._inactiveItems);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests whether the inactive or active list currently have focus.\r\n\t */\r\n\tget isRackFocused(): boolean {\r\n\t\treturn this.isInactiveFocused || this.isActiveFocused;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the index of the last item in the active items array.\r\n\t */\r\n\tget lastActiveIdx(): number {\r\n\t\treturn this.activeItems.length - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates the index of the last item in the indactive items array.\r\n\t */\r\n\tget lastInactiveIdx(): number {\r\n\t\treturn this.inactiveItems.length - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Binds keyboard navigation to the document keydown event.\r\n\t */\r\n\t@HostListener('document:keydown', ['$event'])\r\n\tonDocumentKeyDown(event: KeyboardEvent): void {\r\n\t\tif (this.isRackFocused) {\r\n\t\t\tif (event.altKey) {\r\n\t\t\t\tif (event.key === 'ArrowDown' && this.canMoveDown) {\r\n\t\t\t\t\tthis.moveSelectedItemDown(event.shiftKey);\r\n\t\t\t\t} else if (event.key === 'ArrowUp' && this.canMoveUp) {\r\n\t\t\t\t\tthis.moveSelectedItemUp(event.shiftKey);\r\n\t\t\t\t} else if (event.key === 'ArrowLeft' && this.canDeactivateItem) {\r\n\t\t\t\t\tthis.deactivateItem();\r\n\t\t\t\t} else if (event.key === 'ArrowRight' && this.canActivateItem) {\r\n\t\t\t\t\tthis.activateItem();\r\n\t\t\t\t}\r\n\t\t\t\tif (event.key.indexOf('Arrow') === 0) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t} else if (event.key == 'ArrowRight' && this.isInactiveFocused) {\r\n\t\t\t\tthis.ensureActiveFocus(this.currentInactiveIdx);\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t} else if (event.key == 'ArrowLeft' && this.isActiveFocused) {\r\n\t\t\t\tthis.ensureInactiveFocus(this.currentActiveIdx);\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the currently-selected inactive item to the active items array.\r\n\t */\r\n\tactivateItem() {\r\n\t\tif (this.canActivateItem) {\r\n\t\t\tconst inactiveItemIdx = this.currentInactiveIdx;\r\n\t\t\tconst item = this.inactiveItems.splice(inactiveItemIdx, 1)[0];\r\n\t\t\tthis.activeItems.push(item);\r\n\t\t\tthis.setInactiveItem(inactiveItemIdx);\r\n\t\t\tif (this.inactiveItems.length === 0) {\r\n\t\t\t\tthis.ensureActiveFocus(this.activeItems.length);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the currently-selected active item to the inactive items array.\r\n\t */\r\n\tdeactivateItem() {\r\n\t\tif (this.canDeactivateItem) {\r\n\t\t\tconst activeItemIdx = this.currentActiveIdx;\r\n\t\t\tconst item = this.activeItems.splice(activeItemIdx, 1)[0];\r\n\t\t\tthis.inactiveItems.push(item);\r\n\t\t\tthis.setActiveItem(activeItemIdx);\r\n\t\t\tif (this.activeItems.length === 0) {\r\n\t\t\t\tthis.ensureInactiveFocus(this.inactiveItems.length);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tensureActiveFocus(targetIdx: number = 0): this {\r\n\t\tthis.activeSelectElement.nativeElement.focus();\r\n\t\tconst newActiveIdx = clamp(0, targetIdx, this.lastActiveIdx);\r\n\t\tthis.setActiveItem(newActiveIdx).setInactiveItem(-1);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tensureInactiveFocus(targetIdx: number = 0): this {\r\n\t\tthis.inactiveSelectElement.nativeElement.focus();\r\n\t\tconst newInactiveIdx = clamp(0, targetIdx, this.lastInactiveIdx);\r\n\t\tthis.setInactiveItem(newInactiveIdx).setActiveItem(-1);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tisItemLocked(item: TItemType): boolean {\r\n\t\tif (Object.hasOwnProperty.call(item, this.lockedProp)) {\r\n\t\t\treturn !!item[this.lockedProp]; // uses double negate (!!) to ensure boolean;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tmoveActiveItem(destIdxFn: (number) => number) {\r\n\t\tif (this.selectedActiveItem !== null) {\r\n\t\t\tconst srcIdx = this.currentActiveIdx;\r\n\t\t\tconst destIdx = clamp(0, destIdxFn(srcIdx), this.lastActiveIdx);\r\n\t\t\tmoveItem(this.activeItems, srcIdx, destIdx);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveSelectedItemDown(toBottom: boolean = false) {\r\n\t\tthis.moveActiveItem(srcIdx => (toBottom ? this.lastActiveIdx : srcIdx + 1));\r\n\t}\r\n\r\n\tmoveSelectedItemUp(toTop: boolean = false) {\r\n\t\tthis.moveActiveItem(srcIdx => (toTop ? 0 : srcIdx - 1));\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// ensure all locked items are in the active column\r\n\t\tfor (let inactiveIdx in this.inactiveItems) {\r\n\t\t\tlet inactiveItem = this.inactiveItems[inactiveIdx];\r\n\t\t\tif (\r\n\t\t\t\tObject.hasOwnProperty.call(inactiveItem, this.lockedProp) &&\r\n\t\t\t\t!!inactiveItem[this.lockedProp]\r\n\t\t\t) {\r\n\t\t\t\tthis.warn(\r\n\t\t\t\t\t'Locked item found in inactive array.',\r\n\t\t\t\t\t`${inactiveItem[this.valueProp]} => ${inactiveItem[this.labelProp]}`\r\n\t\t\t\t);\r\n\t\t\t\tthis.selectedInactiveItem = inactiveItem;\r\n\t\t\t\tthis.activateItem();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set the isActiveFocused state; If the activeItems array contains no items, focus will\r\n\t * be given to the inactive list.\r\n\t */\r\n\tsetActiveFocus(isActiveFocused: boolean) {\r\n\t\tif (isActiveFocused) {\r\n\t\t\tthis.selectedInactiveItem = null;\r\n\t\t}\r\n\t\tif (this.activeItems.length > 0) {\r\n\t\t\tthis.isActiveFocused = isActiveFocused;\r\n\t\t} else {\r\n\t\t\tthis.ensureInactiveFocus(this.inactiveItems.length);\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveItem(targetIdx: number): this {\r\n\t\tif (targetIdx === -1) {\r\n\t\t\tthis.selectedActiveItem = null;\r\n\t\t} else if (targetIdx > -1 && this.activeItems.length > 0) {\r\n\t\t\tconst newActiveIdx = clamp(0, targetIdx, this.lastActiveIdx);\r\n\t\t\tthis.selectedActiveItem = this.activeItems[newActiveIdx];\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the isInactiveFocused state; If the inactiveItems array contains no items, focus will\r\n\t * be given to the active list.\r\n\t */\r\n\tsetInactiveFocus(isInactiveFocused: boolean) {\r\n\t\tif (isInactiveFocused) {\r\n\t\t\tthis.selectedActiveItem = null;\r\n\t\t}\r\n\t\tif (this.inactiveItems.length > 0) {\r\n\t\t\tthis.isInactiveFocused = isInactiveFocused;\r\n\t\t} else {\r\n\t\t\tthis.ensureActiveFocus(this.activeItems.length);\r\n\t\t}\r\n\t}\r\n\r\n\tsetInactiveItem(targetIdx): this {\r\n\t\tif (targetIdx === -1) {\r\n\t\t\tthis.selectedInactiveItem = null;\r\n\t\t} else if (targetIdx > -1 && this.inactiveItems.length > 0) {\r\n\t\t\t// Clamp the selected item to the bounds of the array\r\n\t\t\tconst newInactiveIdx = clamp(0, targetIdx, this.lastInactiveIdx);\r\n\t\t\tthis.selectedInactiveItem = this.inactiveItems[newInactiveIdx];\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n}\r\n","<ng-container *ngIf=\"supportsGrid(); then hasGrid; else noGrid\"></ng-container>\r\n\r\n<ng-template #hasGrid>\r\n\t<div class=\"rack rack--grid\">\r\n\t\t<!-- Inactive List -->\r\n\t\t<label class=\"inactive-label\" for=\"inactive-list\" aria-live=\"assertive\">\r\n\t\t\t{{ labelInactiveList }}\r\n\t\t\t<span class=\"sr-only\">({{ i18nListCount(inactiveItems) }})</span>\r\n\t\t</label>\r\n\t\t<select\r\n\t\t\t#inactivePicker\r\n\t\t\t[size]=\"size\"\r\n\t\t\tclass=\"inactive-list\"\r\n\t\t\tname=\"inactive-list\"\r\n\t\t\tid=\"inactive-list\"\r\n\t\t\t[(ngModel)]=\"selectedInactiveItem\"\r\n\t\t\t(focus)=\"setInactiveFocus(true)\"\r\n\t\t\t(blur)=\"setInactiveFocus(false)\"\r\n\t\t>\r\n\t\t\t<option [ngValue]=\"item\" *ngFor=\"let item of inactiveItems\">{{ item[labelProp] }}</option>\r\n\t\t</select>\r\n\r\n\t\t<!-- Activation Buttons -->\r\n\t\t<div class=\"activation-buttons\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"rack__activate-button\"\r\n\t\t\t\t(click)=\"activateItem()\"\r\n\t\t\t\t[disabled]=\"!canActivateItem\"\r\n\t\t\t\t[title]=\"[labelActivate, '(Alt + Right Arrow)'].join(' ')\"\r\n\t\t\t>\r\n\t\t\t\t<span class=\"activation-button-label\">{{ labelActivate }}</span>\r\n\t\t\t\t<fa-icon [icon]=\"activateIcon\"></fa-icon>\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"rack__deactivate-button\"\r\n\t\t\t\t(click)=\"deactivateItem()\"\r\n\t\t\t\t[disabled]=\"!canDeactivateItem\"\r\n\t\t\t\t[title]=\"[labelDeactivate, '(Alt + Left Arrow)'].join(' ')\"\r\n\t\t\t>\r\n\t\t\t\t<fa-icon [icon]=\"deactivateIcon\"></fa-icon>\r\n\t\t\t\t<span class=\"activation-button-label\">{{ labelDeactivate }}</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\r\n\t\t<!-- Active List -->\r\n\t\t<label class=\"active-label\" for=\"active-list\" aria-live=\"assertive\">\r\n\t\t\t{{ labelActiveList }}\r\n\t\t\t<span class=\"sr-only\">({{ i18nListCount(activeItems) }})</span>\r\n\t\t</label>\r\n\t\t<select\r\n\t\t\t#activePicker\r\n\t\t\t[size]=\"size\"\r\n\t\t\t[(ngModel)]=\"selectedActiveItem\"\r\n\t\t\tclass=\"active-list\"\r\n\t\t\tname=\"active-list\"\r\n\t\t\tid=\"active-list\"\r\n\t\t\t(focus)=\"setActiveFocus(true)\"\r\n\t\t\t(blur)=\"setActiveFocus(false)\"\r\n\t\t>\r\n\t\t\t<option\r\n\t\t\t\tclass=\"rack__option\"\r\n\t\t\t\t[class.rack__option--locked]=\"isItemLocked(item)\"\r\n\t\t\t\t[ngValue]=\"item\"\r\n\t\t\t\t[attr.title]=\"isItemLocked(item) ? labelLocked : null\"\r\n\t\t\t\t*ngFor=\"let item of activeItems\"\r\n\t\t\t>\r\n\t\t\t\t{{ item[labelProp] }}\r\n\t\t\t\t<span class=\"rack__locked-asterisk\" *ngIf=\"isItemLocked(item)\"> * </span>\r\n\t\t\t</option>\r\n\t\t</select>\r\n\r\n\t\t<div class=\"order-buttons\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"move-up-button\"\r\n\t\t\t\t(click)=\"moveSelectedItemUp($event.shiftKey)\"\r\n\t\t\t\t[disabled]=\"!canMoveUp\"\r\n\t\t\t\t[title]=\"\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t[labelMoveUp, ' (Alt + Up Arrow)'].join(' '),\r\n\t\t\t\t\t\t[labelMoveToTop, '(Shift + Alt + Up Arrow)'].join(' ')\r\n\t\t\t\t\t].join('\\n')\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<fa-icon [icon]=\"moveUpIcon\"></fa-icon>\r\n\t\t\t\t<span class=\"sr-only\">{{ labelMoveUp }}</span>\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"move-down-button\"\r\n\t\t\t\t(click)=\"moveSelectedItemDown($event.shiftKey)\"\r\n\t\t\t\t[disabled]=\"!canMoveDown\"\r\n\t\t\t\t[title]=\"\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t[labelMoveDown, ' (Alt + Down Arrow)'].join(' '),\r\n\t\t\t\t\t\t[labelMoveToBottom, '(Shift + Alt + Down Arrow)'].join(' ')\r\n\t\t\t\t\t].join('\\n')\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<fa-icon [icon]=\"moveDownIcon\"></fa-icon>\r\n\t\t\t\t<span class=\"sr-only\">{{ labelMoveDown }}</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n<ng-template #noGrid>\r\n\t<div class=\"rack rack--flex\">\r\n\t\t<div class=\"inactive\">\r\n\t\t\t<label class=\"inactive-label\" for=\"inactive-list\" aria-live=\"assertive\">\r\n\t\t\t\t{{ labelInactiveList }}\r\n\t\t\t\t<span class=\"sr-only\">({{ i18nListCount(inactiveItems) }})</span>\r\n\t\t\t</label>\r\n\t\t\t<select\r\n\t\t\t\t#inactivePicker\r\n\t\t\t\t[size]=\"size\"\r\n\t\t\t\tclass=\"inactive-list\"\r\n\t\t\t\tname=\"inactive-list\"\r\n\t\t\t\tid=\"inactive-list\"\r\n\t\t\t\t[(ngModel)]=\"selectedInactiveItem\"\r\n\t\t\t\t(focus)=\"setInactiveFocus(true)\"\r\n\t\t\t\t(blur)=\"setInactiveFocus(false)\"\r\n\t\t\t>\r\n\t\t\t\t<option [ngValue]=\"item\" *ngFor=\"let item of inactiveItems\">{{\r\n\t\t\t\t\titem[labelProp]\r\n\t\t\t\t}}</option>\r\n\t\t\t</select>\r\n\t\t</div>\r\n\t\t<div class=\"activation-buttons\">\r\n\t\t\t<!-- Activation Buttons -->\r\n\t\t\t<button\r\n\t\t\t\tclass=\"rack__activate-button\"\r\n\t\t\t\t(click)=\"activateItem()\"\r\n\t\t\t\t[disabled]=\"!canActivateItem\"\r\n\t\t\t\t[title]=\"[labelActivate, '(Alt + Right Arrow)'].join(' ')\"\r\n\t\t\t>\r\n\t\t\t\t<span class=\"activation-button-label\">{{ labelActivate }}</span>\r\n\t\t\t\t<fa-icon [icon]=\"activateIcon\"></fa-icon>\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"rack__deactivate-button\"\r\n\t\t\t\t(click)=\"deactivateItem()\"\r\n\t\t\t\t[disabled]=\"!canDeactivateItem\"\r\n\t\t\t\t[title]=\"[labelDeactivate, '(Alt + Left Arrow)'].join(' ')\"\r\n\t\t\t>\r\n\t\t\t\t<fa-icon [icon]=\"deactivateIcon\"></fa-icon>\r\n\t\t\t\t<span class=\"activation-button-label\">{{ labelDeactivate }}</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"active\">\r\n\t\t\t<!-- Active List -->\r\n\t\t\t<label class=\"active-label\" for=\"active-list\" aria-live=\"assertive\">\r\n\t\t\t\t{{ labelActiveList }}\r\n\t\t\t\t<span class=\"sr-only\">({{ i18nListCount(activeItems) }})</span>\r\n\t\t\t</label>\r\n\t\t\t<select\r\n\t\t\t\t#activePicker\r\n\t\t\t\t[size]=\"size\"\r\n\t\t\t\t[(ngModel)]=\"selectedActiveItem\"\r\n\t\t\t\tclass=\"active-list\"\r\n\t\t\t\tname=\"active-list\"\r\n\t\t\t\tid=\"active-list\"\r\n\t\t\t\t(focus)=\"setActiveFocus(true)\"\r\n\t\t\t\t(blur)=\"setActiveFocus(false)\"\r\n\t\t\t>\r\n\t\t\t\t<option\r\n\t\t\t\t\tclass=\"rack__option\"\r\n\t\t\t\t\t[class.rack__option--locked]=\"isItemLocked(item)\"\r\n\t\t\t\t\t[ngValue]=\"item\"\r\n\t\t\t\t\t[attr.title]=\"isItemLocked(item) ? labelLocked : null\"\r\n\t\t\t\t\t*ngFor=\"let item of activeItems\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ item[labelProp] }}\r\n\t\t\t\t\t<span class=\"rack__locked-asterisk\" *ngIf=\"isItemLocked(item)\"> * </span>\r\n\t\t\t\t</option>\r\n\t\t\t</select>\r\n\r\n\t\t\t<div class=\"order-buttons\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tclass=\"move-up-button\"\r\n\t\t\t\t\t(click)=\"moveSelectedItemUp($event.shiftKey)\"\r\n\t\t\t\t\t[disabled]=\"!canMoveUp\"\r\n\t\t\t\t\t[title]=\"\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t[labelMoveUp, ' (Alt + Up Arrow)'].join(' '),\r\n\t\t\t\t\t\t\t[labelMoveToTop, '(Shift + Alt + Up Arrow)'].join(' ')\r\n\t\t\t\t\t\t].join('\\n')\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<fa-icon [icon]=\"moveUpIcon\"></fa-icon>\r\n\t\t\t\t\t<span class=\"sr-only\">{{ labelMoveUp }}</span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button\r\n\t\t\t\t\tclass=\"move-down-button\"\r\n\t\t\t\t\t(click)=\"moveSelectedItemDown($event.shiftKey)\"\r\n\t\t\t\t\t[disabled]=\"!canMoveDown\"\r\n\t\t\t\t\t[title]=\"\r\n\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t[labelMoveDown, ' (Alt + Down Arrow)'].join(' '),\r\n\t\t\t\t\t\t\t[labelMoveToBottom, '(Shift + Alt + Down Arrow)'].join(' ')\r\n\t\t\t\t\t\t].join('\\n')\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<fa-icon [icon]=\"moveDownIcon\"></fa-icon>\r\n\t\t\t\t\t<span class=\"sr-only\">{{ labelMoveDown }}</span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RackComponent } from './rack/rack.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nexport const RACK_IMPORTS = [CommonModule, FontAwesomeModule, FormsModule];\r\nexport const RACK_DIRECTIVES = [RackComponent];\r\n\r\n@NgModule({\r\n\timports: RACK_IMPORTS,\r\n\tdeclarations: RACK_DIRECTIVES,\r\n\texports: RACK_DIRECTIVES\r\n})\r\nexport class RackModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\nfunction _window(): Window {\r\n\treturn window;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class WindowService {\r\n\tconstructor() {}\r\n\r\n\tget nativeWindow(): Window {\r\n\t\treturn _window();\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { fromEvent, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { WindowService } from '../window/window.service';\r\n\r\nexport type MessageType =\r\n\t| 'Ping'\r\n\t| 'DismissUpload'\r\n\t| 'LaunchContactUs'\r\n\t| 'LaunchUpload'\r\n\t| 'Ping'\r\n\t| 'RequestDocumentHeight'\r\n\t| 'SetChildLoaded';\r\n\r\nexport interface IMessage<T> {\r\n\tmessage?: T;\r\n\ttype: string;\r\n}\r\n\r\nexport interface IPing<T> extends IMessage<T> {\r\n\tpingId: string;\r\n\ttype: MessageType;\r\n}\r\n\r\nexport interface IPong<T> extends IMessage<T> {\r\n\tmessage?: T;\r\n\tpongId: string;\r\n\ttype: string;\r\n}\r\n\r\nexport interface IPongMessage {}\r\n\r\nexport interface IPongResponse extends IPong<IPongMessage> {\r\n\tmessage?: {};\r\n\ttype: 'Pong';\r\n}\r\n\r\nexport interface IDocumentHeightMessage {\r\n\tdocumentHeight: number;\r\n}\r\n\r\nexport interface IDocumentHeightResponse extends IPong<IDocumentHeightMessage> {\r\n\ttype: 'DocumentHeight';\r\n}\r\n\r\nexport interface ILaunchUploadMessage {\r\n\tuploads: string[];\r\n}\r\n\r\nexport interface ILaunchUploadResponse extends IPong<ILaunchUploadMessage> {\r\n\ttype: 'LaunchUpload';\r\n}\r\n\r\nexport interface ISuccessMessage {\r\n\tsuccess: boolean;\r\n}\r\n\r\nexport interface ISuccessResponse extends IPong<ISuccessMessage> {\r\n\ttype: 'Success';\r\n}\r\n\r\nexport interface ISetChildLoadedMessage {}\r\n\r\nexport interface ISetChildLoadedResponse extends IPong<ISetChildLoadedMessage> {\r\n\ttype: 'SetChildLoaded';\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FrameGuestService {\r\n\tpublic parent: Window;\r\n\r\n\tconstructor(private windowService: WindowService) {\r\n\t\tif (windowService.nativeWindow.parent) {\r\n\t\t\tthis.setParent(windowService.nativeWindow.parent);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic DismissUpload(): Observable<ISuccessResponse> {\r\n\t\treturn this.send<null>({\r\n\t\t\ttype: 'DismissUpload',\r\n\t\t}) as Observable<ISuccessResponse>;\r\n\t}\r\n\r\n\tpublic LaunchContactUs(): Observable<ISuccessResponse> {\r\n\t\treturn this.send({\r\n\t\t\ttype: 'LaunchContactUs',\r\n\t\t}) as Observable<ISuccessResponse>;\r\n\t}\r\n\r\n\tpublic LaunchUpload(): Observable<ILaunchUploadResponse> {\r\n\t\treturn this.send({\r\n\t\t\ttype: 'LaunchUpload',\r\n\t\t}) as Observable<ILaunchUploadResponse>;\r\n\t}\r\n\r\n\tpublic Ping(): Observable<IPongResponse> {\r\n\t\treturn this.send({\r\n\t\t\ttype: 'Ping',\r\n\t\t}) as Observable<IPongResponse>;\r\n\t}\r\n\r\n\tpublic RequestDocumentHeight(): Observable<IDocumentHeightResponse> {\r\n\t\treturn this.send({\r\n\t\t\ttype: 'RequestDocumentHeight',\r\n\t\t}) as Observable<IDocumentHeightResponse>;\r\n\t}\r\n\r\n\tpublic SetChildLoaded(): Observable<ISetChildLoadedResponse> {\r\n\t\treturn this.send({\r\n\t\t\ttype: 'SetChildLoaded',\r\n\t\t\tmessage: false,\r\n\t\t}) as Observable<ISetChildLoadedResponse>;\r\n\t}\r\n\r\n\tpublic setParent(newParent: Window) {\r\n\t\tthis.parent = newParent;\r\n\t}\r\n\r\n\tprivate static _pingId = 0;\r\n\r\n\tprivate static get pingId() {\r\n\t\treturn FrameGuestService._pingId++;\r\n\t}\r\n\r\n\t/**\r\n\t * Injects a pingId into the message and sends to window.parent.\r\n\t * @param message A message to send to the parent frame\r\n\t */\r\n\tprivate send<T>(message: IMessage<T>): Observable<any> {\r\n\t\tconst pingId = FrameGuestService.pingId;\r\n\t\tif (this.parent) {\r\n\t\t\tconst taggedMessage = Object.assign(message, {\r\n\t\t\t\tpingId,\r\n\t\t\t});\r\n\r\n\t\t\tthis.parent.postMessage(taggedMessage, '*');\r\n\r\n\t\t\t// returns observable to allow reply\r\n\t\t\treturn fromEvent(this.parent, 'message').pipe(\r\n\t\t\t\tfilter(\r\n\t\t\t\t\t(messageEvent: MessageEvent) =>\r\n\t\t\t\t\t\tmessageEvent.data.pongId === pingId,\r\n\t\t\t\t),\r\n\t\t\t\tmap((messageEvent: MessageEvent) => messageEvent.data),\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WindowService } from '../window/window.service';\r\nimport { IPing, MessageType } from '../frame-guest/frame-guest.service';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { IDictionary } from '../../shared/types/Containers/IDictonary/IDictionary';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class FrameHostService {\r\n\tprivate listener = (event: MessageEvent) => {\r\n\t\tconst msg = event.data as IPing<any>;\r\n\t\tif (msg.type) {\r\n\t\t\tswitch (msg.type) {\r\n\t\t\t\tcase 'DismissUpload':\r\n\t\t\t\tcase 'LaunchContactUs':\r\n\t\t\t\tcase 'LaunchUpload':\r\n\t\t\t\tcase 'Ping':\r\n\t\t\t\tcase 'RequestDocumentHeight':\r\n\t\t\t\tcase 'SetChildLoaded':\r\n\t\t\t\t\treturn this.handleRegisteredMessage(event);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate subjects: IDictionary<Subject<any>>;\r\n\tprivate window: Window;\r\n\r\n\tconstructor(private windowService: WindowService) {\r\n\t\tthis.subjects = {\r\n\t\t\tDismissUpload: new Subject(),\r\n\t\t\tLaunchContactUs: new Subject(),\r\n\t\t\tLaunchUpload: new Subject(),\r\n\t\t\tPing: new Subject(),\r\n\t\t\tRequestDocumentHeight: new Subject(),\r\n\t\t\tSetChildLoaded: new Subject()\r\n\t\t};\r\n\r\n\t\tthis.setWindow(this.windowService.nativeWindow);\r\n\t}\r\n\r\n\t/**\r\n\t * Allow an external event to get an observable that emits when the event happens.\r\n\t * @param messageType\r\n\t */\r\n\tpublic getMessageSubject(messageType: MessageType): Observable<any> {\r\n\t\tif (messageType in this.subjects) {\r\n\t\t\treturn this.subjects[messageType].asObservable();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set the window to a different window object. Useful for unit testing.\r\n\t * @param newWindow\r\n\t */\r\n\tpublic setWindow(newWindow: Window) {\r\n\t\tif (this.window) this.removeEvent(this.window, 'message', this.listener);\r\n\r\n\t\tthis.window = newWindow;\r\n\r\n\t\tthis.addEvent(this.window, 'message', this.listener);\r\n\t}\r\n\r\n\tprivate addEvent(obj, type, fn) {\r\n\t\tif (obj.attachEvent) {\r\n\t\t\tobj['e' + type + fn] = fn;\r\n\t\t\tobj[type + fn] = function() {\r\n\t\t\t\tobj['e' + type + fn](window.event);\r\n\t\t\t};\r\n\t\t\tobj.attachEvent('on' + type, obj[type + fn]);\r\n\t\t} else obj.addEventListener(type, fn, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers the subject responsible for propagating state.\r\n\t * @param event A MessageEvent containing the message.\r\n\t */\r\n\tprivate handleRegisteredMessage(event: MessageEvent) {\r\n\t\treturn this.subjects[event.data.type].next({\r\n\t\t\tmessage: event.data as IPing<any>,\r\n\t\t\tdone: (response: any) => {\r\n\t\t\t\tthis.send(response, event);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate removeEvent(obj, type, fn) {\r\n\t\tif (obj.detachEvent) {\r\n\t\t\tobj.detachEvent('on' + type, obj[type + fn]);\r\n\t\t\tobj[type + fn] = null;\r\n\t\t} else obj.removeEventListener(type, fn, false);\r\n\t}\r\n\r\n\tprivate send(response: any, initialEvent: MessageEvent) {\r\n\t\tif (initialEvent.source) {\r\n\t\t\t(initialEvent.source as Window).postMessage(response, initialEvent.origin);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, isDevMode } from '@angular/core';\r\nimport { Loggable } from '../../Loggable';\r\n\r\nexport type GoogleAnalyticsEvent = string | number;\r\n\r\nexport interface IGoogleAnalytics {\r\n\tpush(...events: GoogleAnalyticsEvent[]);\r\n}\r\n\r\n/**\r\n * Returns the current gaq instance.\r\n */\r\nfunction getGaq(): IGoogleAnalytics {\r\n\treturn window['_gaq'] || [];\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class GoogleAnalyticsService extends Loggable {\r\n\tname = 'GoogleAnalyticsService';\r\n\t/**\r\n\t * Construct a new GoogleAnalyticsService\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.log('new GoogleAnalyticsService()');\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy for the ga asynchronous event api; when developing, logs events to console.\r\n\t * @example\r\n\t * \tthis.googleAnalyticsService.push(['_trackPageview']);\r\n\t */\r\n\tpublic push(...events: GoogleAnalyticsEvent[]) {\r\n\t\tif (isDevMode()) {\r\n\t\t\tevents.forEach(this.log);\r\n\t\t}\r\n\r\n\t\tgetGaq().push(...events);\r\n\t}\r\n}\r\n","import { Component, OnInit, HostBinding, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\n\r\n@Component({\r\n\tselector: 'porcelain-password-input, p-password-input',\r\n\ttemplateUrl: './password-input.component.html',\r\n\tstyleUrls: ['./password-input.component.scss']\r\n})\r\nexport class PasswordInputComponent implements OnInit {\r\n\t// Icons\r\n\treadonly showIcon: any = faEye;\r\n\treadonly hideIcon: any = faEyeSlash;\r\n\r\n\t// Labels\r\n\tlabels = {\r\n\t\tshowPassword: 'Show Password',\r\n\t\thidePassword: 'Hide Password'\r\n\t};\r\n\r\n\tisRevealed = false;\r\n\r\n\t@Input('border')\r\n\t@HostBinding('class.password-input--has-border')\r\n\thasBorder = true;\r\n\r\n\tprivate _value: string;\r\n\r\n\t@Input()\r\n\tget value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(val) {\r\n\t\tthis._value = val;\r\n\t\tthis.valueChange.emit(this._value);\r\n\t}\r\n\r\n\t@Output()\r\n\tvalueChange = new EventEmitter<string>();\r\n\r\n\tgetInputType(): string {\r\n\t\treturn this.isRevealed ? 'text' : 'password';\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\tthis.isRevealed = !this.isRevealed;\r\n\t}\r\n\r\n\t@HostBinding('class.password-input--has-focus')\r\n\tfocus: boolean = false;\r\n\r\n\t/**\r\n\t * Sets the focus state of the control when the input gains focus;\r\n\t * Currentl bound to (focus) and (blur)\r\n\t */\r\n\tsetFocus(focus: boolean) {\r\n\t\tthis.focus = focus;\r\n\t}\r\n\r\n\tconstructor(public translationService: TranslationService) {\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this.labels, {\r\n\t\t\t\tlabel_ShowPassword: 'showPassword',\r\n\t\t\t\tlabel_HidePassword: 'hidePassword'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<input\r\n\tclass=\"password-input__input\"\r\n\tautocomplete=\"current-password\"\r\n\t[(ngModel)]=\"value\"\r\n\t[attr.type]=\"getInputType()\"\r\n\t(focus)=\"setFocus(true)\"\r\n\t(blur)=\"setFocus(false)\"\r\n/>\r\n<button class=\"password-input__toggle\" (click)=\"toggle()\">\r\n\t<ng-container *ngIf=\"isRevealed\">\r\n\t\t<fa-icon [icon]=\"hideIcon\" [title]=\"labels.hidePassword\"></fa-icon>\r\n\t\t<span class=\"sr-only\">{{ labels.hidePassword }}</span>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!isRevealed\">\r\n\t\t<fa-icon [icon]=\"showIcon\" [title]=\"labels.showPassword\"></fa-icon>\r\n\t\t<span class=\"sr-only\">{{ labels.showPassword }}</span>\r\n\t</ng-container>\r\n</button>\r\n","import { Component, OnInit, EventEmitter, Input, Output, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-text-input, p-text-input',\r\n\ttemplateUrl: './text-input.component.html',\r\n\tstyleUrls: ['./text-input.component.scss']\r\n})\r\nexport class TextInputComponent implements OnInit {\r\n\t_value: string = '';\r\n\r\n\t@Input('border')\r\n\t@HostBinding('class.text-input--has-border')\r\n\thasBorder = true;\r\n\r\n\t@Input()\r\n\tget value(): string {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(value: string) {\r\n\t\tthis._value = value;\r\n\t\tthis.valueChange.emit(this._value);\r\n\t}\r\n\r\n\t@Output()\r\n\tvalueChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n\r\n\t@HostBinding('class.text-input--has-focus')\r\n\tisFocused: boolean = false;\r\n\r\n\tsetFocus(isFocused: boolean): this {\r\n\t\tthis.isFocused = isFocused;\r\n\t\treturn this;\r\n\t}\r\n}\r\n","<input\r\n\tclass=\"text-input__input\"\r\n\ttype=\"text\"\r\n\t[(ngModel)]=\"value\"\r\n\t(focus)=\"setFocus(true)\"\r\n\t(blur)=\"setFocus(false)\"\r\n/>\r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\n\r\n// Font Awesome 5\r\nimport { faSearch, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { Loggable } from '../../Loggable';\r\n\r\n@Component({\r\n\tselector: 'p-search-input',\r\n\ttemplateUrl: './search-input.component.html',\r\n\tstyleUrls: ['./search-input.component.scss'],\r\n\thost: {\r\n\t\t'[class.search-input]': 'true',\r\n\t\t'[class.search-input--no-borders]': '!borders',\r\n\t\t'[class.search-input--has-focus]': 'isSearchFocused'\r\n\t}\r\n})\r\nexport class SearchInputComponent extends Loggable {\r\n\tprivate _value: string;\r\n\r\n\t@Input()\r\n\treadonly canEmitEmpty: boolean = false;\r\n\r\n\treadonly name = 'SearchInputComponent';\r\n\r\n\t@Input() public borders: boolean = true;\r\n\r\n\t@Input() public clearIcon: any = faTimesCircle;\r\n\t@Input() public clearIconColor: any = '#9dacba';\r\n\r\n\t@Input() public placeholderLabel: string = 'Type to search...';\r\n\r\n\t@Input() public submitIcon: any = faSearch;\r\n\t@Input() public submitIconColor: any = '#9dacba';\r\n\r\n\t@Output() public clear: EventEmitter<string> = new EventEmitter();\r\n\t@Output() public submit: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@Output()\r\n\tpublic valueChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@ViewChild('searchInput', { static: true }) public searchInput: ElementRef<HTMLInputElement>;\r\n\r\n\tpublic isSearchFocused = false;\r\n\r\n\tconstructor(private translationService: TranslationService) {\r\n\t\tsuper();\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this, {\r\n\t\t\t\tlabel_TypeToSearch: 'placeholderLabel'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t@Input()\r\n\tget value(): string {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(value: string) {\r\n\t\tthis._value = value;\r\n\t\tthis.valueChange.emit(this._value);\r\n\t}\r\n\r\n\t/**\r\n\t * Tests if the control is in a condition that allows a submit.\r\n\t */\r\n\tpublic canSubmit(): boolean {\r\n\t\treturn (this.isEmpty() && this.canEmitEmpty) || !this.isEmpty();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the isSearchFocused value to false.\r\n\t */\r\n\tpublic handleBlur(): void {\r\n\t\tthis.isSearchFocused = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the isSearchFocused value to true.\r\n\t */\r\n\tpublic handleFocusIn(): void {\r\n\t\tthis.isSearchFocused = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Tests the search box for a value.\r\n\t */\r\n\tpublic isEmpty(): boolean {\r\n\t\treturn this.value === '';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the value of isSearchFocused.\r\n\t */\r\n\tpublic searchHasFocus(): boolean {\r\n\t\treturn this.isSearchFocused;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets focus on the search input.\r\n\t */\r\n\tpublic ensureFocus(): void {\r\n\t\tthis.searchInput.nativeElement.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the value of the search field and resets focus.\r\n\t */\r\n\tpublic tryClear(): void {\r\n\t\tthis.value = '';\r\n\r\n\t\t//empty value to be emitted to emptyHandler\r\n\t\tthis.clear.emit('');\r\n\r\n\t\tthis.ensureFocus();\r\n\t}\r\n\r\n\t/**\r\n\t * Submits the current value of the search input to outside listener.\r\n\t */\r\n\tpublic trySubmit(): void {\r\n\t\tthis.log('trySubmit()', { value: this.value });\r\n\t\tif ((this.isEmpty() && this.canEmitEmpty) || !this.isEmpty()) {\r\n\t\t\tthis.submit.emit(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic setFocus(isFocused: boolean): this {\r\n\t\tthis.log('setFocus(isFocused)', { isFocused });\r\n\t\tthis.isSearchFocused = isFocused;\r\n\t\treturn this;\r\n\t}\r\n}\r\n","<div class=\"search-input__query-wrap\">\r\n\t<input\r\n\t\t#searchInput\r\n\t\ttype=\"text\"\r\n\t\ttitle=\"{{ placeholderLabel }}\"\r\n\t\tclass=\"search-input__query\"\r\n\t\t[(ngModel)]=\"value\"\r\n\t\t[placeholder]=\"placeholderLabel\"\r\n\t\t(keyup.enter)=\"trySubmit()\"\r\n\t\t(keyup.esc)=\"tryClear()\"\r\n\t\t(focus)=\"setFocus(true)\"\r\n\t\t(blur)=\"setFocus(false)\"\r\n\t/>\r\n</div>\r\n<button\r\n\tclass=\"search-input__search-action search-input__search-action--clear\"\r\n\ttitle=\"Clear the search query.\"\r\n\t*ngIf=\"!isEmpty()\"\r\n\t(click)=\"tryClear()\"\r\n>\r\n\t<fa-icon [icon]=\"clearIcon\" [styles]=\"{ color: clearIconColor }\"></fa-icon>\r\n\t<span class=\"sr-only\">Clear the search query.</span>\r\n</button>\r\n<button\r\n\tclass=\" search-input__search-action  search-input__search\"\r\n\t[class.search-input__search-action--not-active]=\"!canSubmit()\"\r\n\t[class.search-input__search-action--is-active]=\"canSubmit()\"\r\n\t(click)=\"trySubmit()\"\r\n\ttitle=\"Submit the search using the current search query.\"\r\n>\r\n\t<fa-icon [icon]=\"submitIcon\" [styles]=\"{ color: submitIconColor }\"></fa-icon>\r\n\t<span class=\"sr-only\">Submit the search using the current query.</span>\r\n</button>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\nimport { PasswordInputComponent } from './password-input/password-input.component';\r\nimport { TextInputComponent } from './text-input/text-input.component';\r\nimport { SearchInputComponent } from './search-input/search-input.component';\r\n\r\nexport const INPUTS_COMPONENTS = [PasswordInputComponent, TextInputComponent, SearchInputComponent];\r\nexport const INPUTS_IMPORTS = [CommonModule, FormsModule, FontAwesomeModule];\r\n\r\n@NgModule({\r\n\timports: INPUTS_IMPORTS,\r\n\tdeclarations: INPUTS_COMPONENTS,\r\n\texports: INPUTS_COMPONENTS\r\n})\r\nexport class InputsModule {}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tHostBinding,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-common-types';\r\nimport { faSort, faSortDown, faSortUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { Loggable } from '../../Loggable';\r\nimport { SortDirection, SortTuple } from '../../shared/types/Values/Sortoptions';\r\n\r\n@Component({\r\n\tselector: 'porcelain-sort-header, p-sort-header',\r\n\ttemplateUrl: './sort-header.component.html',\r\n\tstyleUrls: ['./sort-header.component.scss']\r\n})\r\nexport class SortHeaderComponent extends Loggable implements OnInit {\r\n\treadonly name = 'SortHeaderComponent';\r\n\r\n\treadonly faSortUp = faSortUp;\r\n\treadonly faSortDown = faSortDown;\r\n\treadonly faSort = faSort;\r\n\r\n\t@HostBinding('class')\r\n\tclasses = 'sort-header';\r\n\r\n\tisNullOrUndefined(subject: any): subject is null | undefined {\r\n\t\treturn subject === null || subject === undefined;\r\n\t}\r\n\r\n\t@HostBinding('class.sort-header--active')\r\n\tget active() {\r\n\t\treturn this.sortKey === this.activeSortKey && !this.isNullOrUndefined(this.activeSortDirection);\r\n\t}\r\n\r\n\t@Input()\r\n\tlabel: string = '';\r\n\r\n\t@Input()\r\n\tsortKey: string = null;\r\n\r\n\t/**\r\n\t * Backing field for activeSortKey getter/setter\r\n\t */\r\n\tprivate _activeSortKey: string;\r\n\r\n\t@Input()\r\n\tget activeSortKey(): string {\r\n\t\treturn this._activeSortKey;\r\n\t}\r\n\r\n\tset activeSortKey(activeSortKey: string) {\r\n\t\tthis._activeSortKey = activeSortKey;\r\n\t\tthis.activeSortKeyChange.emit(this.activeSortKey);\r\n\t}\r\n\r\n\t@Output()\r\n\tactiveSortKeyChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t/**\r\n\t * Backing field for the current sort direction of the application.\r\n\t */\r\n\tprivate _activeSortDirection: SortDirection;\r\n\r\n\t@Input()\r\n\tget activeSortDirection(): SortDirection {\r\n\t\treturn this._activeSortDirection;\r\n\t}\r\n\r\n\tset activeSortDirection(activeSortDirection: SortDirection) {\r\n\t\tthis._activeSortDirection = activeSortDirection;\r\n\t\tthis.activeSortDirectionChange.emit(this.activeSortDirection);\r\n\t}\r\n\r\n\t@Output()\r\n\tactiveSortDirectionChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t/**\r\n\t * @deprecated Change bindings like `(onSortChange)=\"...\"` to `(sortChange)=\"...\"`\r\n\t */\r\n\t@Output()\r\n\tonSortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\t@Output()\r\n\tsortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.sortChange.subscribe(sort => this.onSortChange.emit(sort));\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\t@HostListener('click')\r\n\ttoggleSort() {\r\n\t\tif (this.activeSortKey === this.sortKey) {\r\n\t\t\tif (this.isNullOrUndefined(this.activeSortDirection)) {\r\n\t\t\t\tthis.activeSortDirection = 'asc';\r\n\t\t\t} else if (this.activeSortDirection === 'asc') {\r\n\t\t\t\tthis.activeSortDirection = 'desc';\r\n\t\t\t} else {\r\n\t\t\t\tthis.activeSortDirection = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.activeSortDirection = 'asc';\r\n\t\t\tthis.activeSortKey = this.sortKey;\r\n\t\t}\r\n\t\tthis.sortChange.emit([this.sortKey, this.activeSortDirection]);\r\n\t\tthis.log('toggleSort()', [this.sortKey, this.activeSortDirection]);\r\n\t}\r\n}\r\n","<label class=\"sort-header__box\">\r\n\t<span class=\"sort-header__label\">\r\n\t\t{{ label }}\r\n\t</span>\r\n\t<span class=\"sort-header__sort-direction\" *ngIf=\"!active\">\r\n\t\t<span>\r\n\t\t\t<fa-icon [icon]=\"faSortDown\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Not Sorted</span>\r\n\t\t</span>\r\n\t</span>\r\n\t<span class=\"sort-header__sort-direction\" *ngIf=\"active\">\r\n\t\t<span *ngIf=\"activeSortDirection === 'asc'\">\r\n\t\t\t<fa-icon [icon]=\"faSortUp\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Sorted Ascending</span>\r\n\t\t</span>\r\n\t\t<span *ngIf=\"activeSortDirection === 'desc'\">\r\n\t\t\t<fa-icon [icon]=\"faSortDown\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Sorted Descending</span>\r\n\t\t</span>\r\n\t</span>\r\n</label>\r\n","import { Component, OnInit, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\n\r\nimport { faSort, faSearch } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { Loggable } from '../../Loggable';\r\nimport { SearchInputComponent } from '../../inputs/search-input/search-input.component';\r\nimport { SortDirection, SortTuple } from '../../shared/types/Values/Sortoptions';\r\n\r\nexport type SearchTuple = [string, string];\r\n\r\n@Component({\r\n\tselector: 'porcelain-search-header, p-search-header',\r\n\ttemplateUrl: './search-header.component.html',\r\n\tstyleUrls: ['./search-header.component.scss']\r\n})\r\nexport class SearchHeaderComponent extends Loggable implements OnInit {\r\n\treadonly name = 'SearchHeaderComponent';\r\n\treadonly sortIcon: any = faSort;\r\n\treadonly searchIcon: any = faSearch;\r\n\r\n\tmode: 'search' | 'sort' = 'sort';\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.info(`new SearchHeaderComponent()`, { arguments });\r\n\t}\r\n\r\n\t@Input() label: string = '';\r\n\r\n\t@Input() sortKey: string = '';\r\n\r\n\t//#region `[(query)]` Binding\r\n\r\n\tprivate _query: string;\r\n\r\n\t@Output()\r\n\tpublic queryChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@Input()\r\n\tget query(): string {\r\n\t\treturn this._query;\r\n\t}\r\n\r\n\tset query(query: string) {\r\n\t\tthis._query = query;\r\n\t\tthis.queryChange.emit(this._query);\r\n\t}\r\n\r\n\tsetQuery(query: string) {\r\n\t\tif (this.query !== query) {\r\n\t\t\tthis.query = query;\r\n\t\t}\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region `[(activeSortKey)]` Binding\r\n\r\n\tprivate _activeSortKey: string;\r\n\r\n\t@Input()\r\n\tget activeSortKey(): string {\r\n\t\treturn this._activeSortKey;\r\n\t}\r\n\r\n\tset activeSortKey(activeSortKey: string) {\r\n\t\tthis._activeSortKey = activeSortKey;\r\n\t\tthis.activeSortKeyChange.emit(this._activeSortKey);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic activeSortKeyChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t//#endregion\r\n\r\n\t//#region `[(activeSortDirection)]` Binding\r\n\r\n\tprivate _activeSortDirection: SortDirection;\r\n\r\n\t@Input()\r\n\tget activeSortDirection(): SortDirection {\r\n\t\treturn this._activeSortDirection;\r\n\t}\r\n\r\n\tset activeSortDirection(activeSortDirection: SortDirection) {\r\n\t\tthis._activeSortDirection = activeSortDirection;\r\n\t\tthis.activeSortDirectionChange.emit(this._activeSortDirection);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic activeSortDirectionChange: EventEmitter<SortDirection> = new EventEmitter();\r\n\r\n\t//#endregion\r\n\r\n\t//#region `@Output()` Bindings\r\n\r\n\t@Output()\r\n\tpublic sortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\t//#endregion\r\n\r\n\tsortChanged([activeSortKey, activeSortDirection]: SortTuple) {\r\n\t\t// These assignments will fire their own events; do not fire.\r\n\t\tif (this.activeSortKey !== activeSortKey) {\r\n\t\t\tthis.activeSortKey = activeSortKey;\r\n\t\t}\r\n\r\n\t\tif (this.activeSortDirection !== activeSortDirection) {\r\n\t\t\tthis.activeSortDirection = activeSortDirection;\r\n\t\t}\r\n\r\n\t\tthis.sortChange.emit([this.activeSortKey, this.activeSortDirection]);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic searchChange: EventEmitter<SearchTuple> = new EventEmitter();\r\n\r\n\tsearchChanged(query: string): void {\r\n\t\tthis.info('searchChanged(query)', { query }, { sortKey: this.sortKey, query });\r\n\t\tif (this.query !== query) {\r\n\t\t\tthis.query = query;\r\n\t\t}\r\n\t\tthis.searchChange.emit([this.sortKey, query]);\r\n\t}\r\n\r\n\t@ViewChild(SearchInputComponent) searchInputComponent: SearchInputComponent;\r\n\r\n\tswitchModes() {\r\n\t\tthis.mode = this.mode === 'sort' ? 'search' : 'sort';\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.mode === 'search') {\r\n\t\t\t\tthis.searchInputComponent.ensureFocus();\r\n\t\t\t}\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.info('ngOnInit()', this.query);\r\n\t}\r\n}\r\n","<div class=\"search-header__active-control\">\r\n\t<porcelain-sort-header\r\n\t\t*ngIf=\"mode === 'sort'\"\r\n\t\t[label]=\"label\"\r\n\t\t[activeSortDirection]=\"activeSortDirection\"\r\n\t\t[activeSortKey]=\"activeSortKey\"\r\n\t\t[sortKey]=\"sortKey\"\r\n\t\t(sortChange)=\"sortChanged($event)\"\r\n\t></porcelain-sort-header>\r\n\r\n\t<p-search-input\r\n\t\t#searchInput\r\n\t\t*ngIf=\"mode === 'search'\"\r\n\t\t[placeholderLabel]=\"label\"\r\n\t\t[borders]=\"false\"\r\n\t\t[canEmitEmpty]=\"true\"\r\n\t\t[value]=\"query\"\r\n\t\t(submit)=\"searchChanged($event)\"\r\n\t\t(clear)=\"searchChanged(null)\"\r\n\t></p-search-input>\r\n</div>\r\n\r\n<button (click)=\"switchModes()\" class=\"search-header__swap\">\r\n\t<span title=\"Switch to Search\" *ngIf=\"mode === 'sort'\">\r\n\t\t<span class=\"sr-only\">Switch to Search</span>\r\n\t\t<fa-icon [icon]=\"searchIcon\"></fa-icon>\r\n\t</span>\r\n\r\n\t<span title=\"Switch to Sort\" *ngIf=\"mode === 'search'\">\r\n\t\t<span class=\"sr-only\">Switch to Sort</span>\r\n\t\t<fa-icon [icon]=\"sortIcon\"></fa-icon>\r\n\t</span>\r\n</button>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-text-header, p-text-header',\r\n\ttemplateUrl: './text-header.component.html',\r\n\tstyleUrls: ['./text-header.component.scss']\r\n})\r\nexport class TextHeaderComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\n\r\nimport { faGripLinesVertical } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { SortDirection, SortTuple } from '../../shared/types/Values/Sortoptions';\r\nimport { Loggable } from '../../Loggable';\r\nimport { SearchTuple } from '../search-header/search-header.component';\r\n\r\nexport type DynamicColumnType = 'search' | 'sort' | 'text' | 'searchSort';\r\n\r\nexport interface DynamicColumn {\r\n\tlabel: string;\r\n\tkey: string;\r\n\tlocked: boolean;\r\n\ttype: DynamicColumnType;\r\n\twidth: number;\r\n}\r\n\r\nexport interface DynamicSearchQuery {\r\n\t[key: string]: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'porcelain-dynamic-header, p-dynamic-header',\r\n\ttemplateUrl: './dynamic-header.component.html',\r\n\tstyleUrls: ['./dynamic-header.component.scss'],\r\n\thost: {\r\n\t\t'porcelain-dynamic-header': 'true'\r\n\t}\r\n})\r\nexport class DynamicHeaderComponent<TColumnType extends any = any> extends Loggable implements OnInit {\r\n\treadonly name = 'DynamicHeaderComponent';\r\n\treadonly gripIcon: any = faGripLinesVertical;\r\n\r\n\t@Input() labelProp: string = 'label';\r\n\r\n\t@Input() widthProp: string = 'width';\r\n\r\n\t//#region `[(column)]` Binding\r\n\r\n\tprivate _columns: DynamicColumn[];\r\n\r\n\t@Output()\r\n\tpublic columnsChange: EventEmitter<DynamicColumn[]> = new EventEmitter();\r\n\r\n\t@Input()\r\n\tget columns(): DynamicColumn[] {\r\n\t\treturn this._columns;\r\n\t}\r\n\r\n\tset columns(columns: DynamicColumn[]) {\r\n\t\tthis._columns = columns;\r\n\t\tthis.columnsChange.emit(this._columns);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region `[(activeSortKey)]` Binding\r\n\r\n\tprivate _activeSortKey: string;\r\n\r\n\t@Output()\r\n\tpublic activeSortKeyChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@Input()\r\n\tget activeSortKey(): string {\r\n\t\treturn this._activeSortKey;\r\n\t}\r\n\r\n\tset activeSortKey(activeSortKey: string) {\r\n\t\tthis._activeSortKey = activeSortKey;\r\n\t\tthis.activeSortKeyChange.emit(this._activeSortKey);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region `[(activeSortDirection)]` Binding\r\n\r\n\tprivate _activeSortDirection: SortDirection;\r\n\r\n\t@Output()\r\n\tpublic activeSortDirectionChange: EventEmitter<SortDirection> = new EventEmitter();\r\n\r\n\t@Input()\r\n\tget activeSortDirection(): SortDirection {\r\n\t\treturn this._activeSortDirection;\r\n\t}\r\n\r\n\tset activeSortDirection(activeSortDirection: SortDirection) {\r\n\t\tthis._activeSortDirection = activeSortDirection;\r\n\t\tthis.activeSortDirectionChange.emit(this._activeSortDirection);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region `(sortChange)` Binding\r\n\r\n\t@Output()\r\n\tpublic sortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\tsortChanged(sort: SortTuple) {\r\n\t\tthis.sortChange.emit(sort);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region `[(query)]` Binding\r\n\r\n\tprivate _query: DynamicSearchQuery = {};\r\n\r\n\t@Input()\r\n\tget query(): DynamicSearchQuery {\r\n\t\treturn this._query;\r\n\t}\r\n\r\n\tset query(query: DynamicSearchQuery) {\r\n\t\tthis._query = query;\r\n\t\tthis.queryChange.emit(this._query);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic queryChange: EventEmitter<DynamicSearchQuery> = new EventEmitter();\r\n\r\n\tsearchChanged([searchKey, searchValue]: SearchTuple): void {\r\n\t\tif (searchValue === null) {\r\n\t\t\tthis.query = Object.keys(this.query)\r\n\t\t\t\t.filter(key => key !== searchKey)\r\n\t\t\t\t.reduce((query, key) => {\r\n\t\t\t\t\tquery[key] = this.query[key];\r\n\t\t\t\t\treturn query;\r\n\t\t\t\t}, {});\r\n\t\t} else {\r\n\t\t\tthis.query = {\r\n\t\t\t\t[searchKey]: searchValue,\r\n\t\t\t\t...this.query\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis.log(\r\n\t\t\t'searchChanged([searchKey, searchValue]) query updated',\r\n\t\t\t{ searchKey, searchValue },\r\n\t\t\tthis.query\r\n\t\t);\r\n\t}\r\n\r\n\tgetQueryValue(key: string): string {\r\n\t\tthis.info('getQueryValue(key)', { key }, { query: this.query }, this.query[key]);\r\n\t\tif (this.query[key]) {\r\n\t\t\treturn this.query[key];\r\n\t\t} else {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\tdrop(event: CdkDragDrop<string[]>) {\r\n\t\tmoveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n\t}\r\n\r\n\tgetLabel(column: any) {\r\n\t\treturn column[this.labelProp] || '';\r\n\t}\r\n\r\n\tgetWidth(column: any, assume: '%' | '#' | 'px' | 'em' | 'rem' | 'none' = '%') {\r\n\t\tconst value = column[this.widthProp];\r\n\t\tif (assume === 'none') {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tif (typeof value === 'number') {\r\n\t\t\tswitch (assume) {\r\n\t\t\t\tcase '%':\r\n\t\t\t\t\treturn `${value * 100}%`;\r\n\r\n\t\t\t\tcase '#':\r\n\t\t\t\t\treturn `${value}%`;\r\n\r\n\t\t\t\tcase 'px':\r\n\t\t\t\tcase 'em':\r\n\t\t\t\tcase 'rem':\r\n\t\t\t\t\treturn `${value}${assume}`;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet totalWidth = this.columns.reduce((sum, currentColumn) => {\r\n\t\t\treturn sum + currentColumn.width;\r\n\t\t}, 0);\r\n\t\tif (totalWidth !== 1) {\r\n\t\t\tthis.forceLog().warn(\r\n\t\t\t\t`Column widths do not equal 100%: (${totalWidth} !== 1) column layout may fail.`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.info('ngOnInit()', { query: this.query });\r\n\t}\r\n}\r\n","<ul\r\n\tclass=\"porcelain-dynamic-header__list\"\r\n\tcdkDropList\r\n\tcdkDropListOrientation=\"horizontal\"\r\n\tcdkDropListLockAxis=\"x\"\r\n\t(cdkDropListDropped)=\"drop($event)\"\r\n>\r\n\t<li\r\n\t\tclass=\"porcelain-dynamic-header__column\"\r\n\t\t*ngFor=\"let column of columns\"\r\n\t\t[style.width]=\"getWidth(column)\"\r\n\t\tcdkDrag\r\n\t>\r\n\t\t<div class=\"porcelain-dynamic-header__column-handle\" cdkDragHandle>\r\n\t\t\t<fa-icon [icon]=\"gripIcon\"></fa-icon>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"porcelain-dynamic-header__column-control\">\r\n\t\t\t<ng-container *ngIf=\"column.type === 'search'\">\r\n\t\t\t\t<porcelain-search-header\r\n\t\t\t\t\t[sortKey]=\"column.key\"\r\n\t\t\t\t\t[query]=\"getQueryValue(column.key)\"\r\n\t\t\t\t\t[label]=\"getLabel(column)\"\r\n\t\t\t\t\t[activeSortKey]=\"activeSortKey\"\r\n\t\t\t\t\t[activeSortDirection]=\"activeSortDirection\"\r\n\t\t\t\t\t(sortChange)=\"sortChanged($event)\"\r\n\t\t\t\t\t(searchChange)=\"searchChanged($event)\"\r\n\t\t\t\t></porcelain-search-header>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<ng-container *ngIf=\"column.type === 'sort'\">\r\n\t\t\t\t<porcelain-sort-header\r\n\t\t\t\t\t[label]=\"getLabel(column)\"\r\n\t\t\t\t\t[sortKey]=\"column.key\"\r\n\t\t\t\t\t[activeSortDirection]=\"activeSortDirection\"\r\n\t\t\t\t\t[activeSortKey]=\"activeSortKey\"\r\n\t\t\t\t\t(sortChange)=\"sortChanged($event)\"\r\n\t\t\t\t></porcelain-sort-header>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<ng-container *ngIf=\"column.type === 'text'\">\r\n\t\t\t\t<porcelain-text-header>{{ getLabel(column) }}</porcelain-text-header>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</li>\r\n</ul>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list-body, p-list-body',\r\n\ttemplateUrl: './list-body.component.html',\r\n\tstyleUrls: ['./list-body.component.scss']\r\n})\r\nexport class ListBodyComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list-header-cell, p-list-header-cell',\r\n\ttemplateUrl: './list-header-cell.component.html',\r\n\tstyleUrls: ['./list-header-cell.component.scss']\r\n})\r\nexport class ListHeaderCellComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list-header__cell'].join(' ');\r\n\r\n\t@HostBinding('class.list-header__cell--pad-all')\r\n\t@Input()\r\n\tpadAll: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-left')\r\n\t@Input()\r\n\tpadLeft: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-right')\r\n\t@Input()\r\n\tpadRight: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-bottom')\r\n\t@Input()\r\n\tpadBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-top')\r\n\t@Input()\r\n\tpadTop: boolean = false;\r\n\r\n\tprivate _width: number = 1 / 1;\r\n\r\n\t@Input('width')\r\n\tget width(): number {\r\n\t\treturn this._width;\r\n\t}\r\n\tset width(width: number) {\r\n\t\tthis._width = width;\r\n\t}\r\n\r\n\t@HostBinding('style.width')\r\n\tget widthStyle(): string {\r\n\t\treturn `${this.width * 100}%`;\r\n\t}\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list-header, p-list-header',\r\n\ttemplateUrl: './list-header.component.html',\r\n\tstyleUrls: ['./list-header.component.scss']\r\n})\r\nexport class ListHeaderComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content select=\"porcelain-list-header-cell, p-list-header-cell\"></ng-content>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list-item-cell, p-list-item-cell',\r\n\ttemplateUrl: './list-item-cell.component.html',\r\n\tstyleUrls: ['./list-item-cell.component.scss']\r\n})\r\nexport class ListItemCellComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list-item__cell'].join(' ');\r\n\r\n\t@HostBinding('class.list-item__cell--align-top')\r\n\t@Input()\r\n\talignTop: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--align-bottom')\r\n\t@Input()\r\n\talignBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-all')\r\n\t@Input()\r\n\tpadAll: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-left')\r\n\t@Input()\r\n\tpadLeft: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-right')\r\n\t@Input()\r\n\tpadRight: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-bottom')\r\n\t@Input()\r\n\tpadBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-top')\r\n\t@Input()\r\n\tpadTop: boolean = false;\r\n\r\n\tprivate _width: number = 1 / 1;\r\n\r\n\t@Input('width')\r\n\tget width(): number {\r\n\t\treturn this._width;\r\n\t}\r\n\tset width(width: number) {\r\n\t\tthis._width = width;\r\n\t}\r\n\r\n\t@HostBinding('style.width')\r\n\tget widthStyle(): string {\r\n\t\treturn `${this.width * 100}%`;\r\n\t}\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<div class=\"list-item-cell__inner\">\r\n\t<ng-content></ng-content>\r\n</div>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list-item, p-list-item',\r\n\ttemplateUrl: './list-item.component.html',\r\n\tstyleUrls: ['./list-item.component.scss']\r\n})\r\nexport class ListItemComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list-item'].join(' ');\r\n\r\n\t@HostBinding('class.list-item--success')\r\n\t@Input()\r\n\tsuccess: boolean = false;\r\n\r\n\t@HostBinding('class.list-item--error')\r\n\t@Input()\r\n\terror: boolean = false;\r\n\r\n\t@HostBinding('class.list-item--warning')\r\n\t@Input()\r\n\twarning: boolean = false;\r\n\r\n\t@HostBinding('class.list-item--primary')\r\n\t@Input()\r\n\tprimary: boolean = false;\r\n\r\n\t@HostBinding('class.list-item--secondary')\r\n\t@Input()\r\n\tsecondary: boolean = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<div class=\"list-item__inner\">\r\n\t<ng-content select=\"porcelain-list-item-cell, p-list-item-cell\"></ng-content>\r\n</div>\r\n","import { Component, OnInit, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-list, p-list',\r\n\ttemplateUrl: './list.component.html',\r\n\tstyleUrls: ['./list.component.scss']\r\n})\r\nexport class ListComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list'].join(' ');\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<div class=\"list__header\">\r\n\t<ng-content\r\n\t\tselect=\"porcelain-list-header, p-list-header, porcelain-dynamic-header, p-dynamic-header\"\r\n\t></ng-content>\r\n</div>\r\n<div class=\"list__items\">\r\n\t<ng-content select=\"porcelain-list-body, p-list-body\"></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\nimport { InputsModule } from '../inputs/inputs.module';\r\n\r\nimport { ListComponent } from './list/list.component';\r\nimport { ListHeaderComponent } from './list-header/list-header.component';\r\nimport { ListHeaderCellComponent } from './list-header-cell/list-header-cell.component';\r\nimport { ListBodyComponent } from './list-body/list-body.component';\r\nimport { ListItemComponent } from './list-item/list-item.component';\r\nimport { ListItemCellComponent } from './list-item-cell/list-item-cell.component';\r\nimport { SortHeaderComponent } from './sort-header/sort-header.component';\r\nimport { TextHeaderComponent } from './text-header/text-header.component';\r\nimport { DynamicHeaderComponent } from './dynamic-header/dynamic-header.component';\r\nimport { SearchHeaderComponent } from './search-header/search-header.component';\r\n\r\nexport const LISTS_IMPORTS = [\r\n\tCommonModule,\r\n\tFontAwesomeModule,\r\n\tDragDropModule,\r\n\tFormsModule,\r\n\tInputsModule\r\n];\r\n\r\nexport const LISTS_DIRECTIVES = [\r\n\tListHeaderComponent,\r\n\tListHeaderCellComponent,\r\n\tSortHeaderComponent,\r\n\tSearchHeaderComponent,\r\n\tTextHeaderComponent,\r\n\tListComponent,\r\n\tListBodyComponent,\r\n\tListItemComponent,\r\n\tListItemCellComponent,\r\n\tDynamicHeaderComponent\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: LISTS_DIRECTIVES,\r\n\timports: LISTS_IMPORTS,\r\n\texports: LISTS_DIRECTIVES\r\n})\r\nexport class ListsModule {}\r\n","import {\r\n\tComponent,\r\n\tHostBinding,\r\n\tHostListener,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tViewChild,\r\n\tElementRef,\r\n\tInput\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-button, p-toolbar-button',\r\n\ttemplateUrl: './toolbar-button.component.html',\r\n\tstyleUrls: ['./toolbar-button.component.scss']\r\n})\r\nexport class ToolbarButtonComponent {\r\n\t/**\r\n\t * Initializes the button by adding the default porcelain classes.\r\n\t */\r\n\t@HostBinding('class')\r\n\treadonly componentClasses: string = 'porcelain-toolbar-button';\r\n\r\n\t/**\r\n\t * Reference to the #label in the template.\r\n\t */\r\n\t@ViewChild('label', { read: ElementRef, static: true })\r\n\tlabelRef: ElementRef;\r\n\r\n\t/**\r\n\t * Title to be added to the host element as a descriptive title.\r\n\t */\r\n\t@HostBinding('title')\r\n\ttitle: string;\r\n\r\n\t/**\r\n\t * Boolean to track whether the component has focus or not.\r\n\t */\r\n\tprivate _hasFocus = false;\r\n\r\n\tget hasFocus() {\r\n\t\treturn this._hasFocus;\r\n\t}\r\n\r\n\tset hasFocus(hasFocus: boolean) {\r\n\t\tthis._hasFocus = hasFocus;\r\n\t}\r\n\r\n\t@HostBinding('class.porcelain-toolbar-button--disabled')\r\n\t@Input()\r\n\tdisabled: boolean = false;\r\n\r\n\t/**\r\n\t * A Font Awesome 5 Icon to display on the icon.\r\n\t */\r\n\t@Input() icon = null;\r\n\r\n\t/**\r\n\t * Allows the icon to be placed before or after the label, defaults to \"before\"\r\n\t */\r\n\t@Input() iconPosition: 'before' | 'after' = 'before';\r\n\r\n\t/**\r\n\t * Allows the label to be hidden, except for screen readers.\r\n\t */\r\n\t@Input() isLabelSrOnly: boolean = false;\r\n\r\n\t/**\r\n\t * Event emitter for the click and enter/space keypresses\r\n\t */\r\n\t@Output() onClick = new EventEmitter<void>();\r\n\r\n\t/**\r\n\t * Allows the button to fill its container.\r\n\t */\r\n\t@HostBinding('class.porcelain-toolbar-button--is-block')\r\n\t@Input()\r\n\tisBlock: boolean = false;\r\n\r\n\t/**\r\n\t * Sets the tabindex for the button, allowing it to be focusable with tab/keyboard.\r\n\t */\r\n\t@HostBinding('tabindex')\r\n\ttabIndex = 0;\r\n\r\n\t/**\r\n\t * Sets hasFocus to true when the button gains focus.\r\n\t */\r\n\t@HostListener('focus')\r\n\tonFocus() {\r\n\t\tthis.hasFocus = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets hasFocus to false when the button loses focus.\r\n\t */\r\n\t@HostListener('blur')\r\n\tonBlur() {\r\n\t\tthis.hasFocus = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Listens to document key presses, and \"clicks\" the button when enter\r\n\t * or space are pressed.\r\n\t * @param event A keyboard event.\r\n\t */\r\n\t@HostListener('document:keydown', ['$event'])\r\n\tonDocumentKeyDown(event: KeyboardEvent) {\r\n\t\t// Using the event.key api is recommended\r\n\t\t// see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\r\n\t\tconst keys = [\r\n\t\t\t'Enter',\r\n\t\t\t' ', // Space\r\n\t\t\t'Spacebar' // IE 11\r\n\t\t];\r\n\r\n\t\tif (!this.disabled && this.hasFocus && ~keys.indexOf(event.key)) {\r\n\t\t\tthis.onClick.emit();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Emits a click when the button is clicked.\r\n\t */\r\n\t@HostListener('click')\r\n\tonHostClick() {\r\n\t\tif (!this.disabled) {\r\n\t\t\tthis.onClick.emit();\r\n\t\t}\r\n\t}\r\n}\r\n","<ng-container\r\n\t*ngTemplateOutlet=\"icon && iconPosition === 'before' ? iconTemplate : nothing\"\r\n></ng-container>\r\n\r\n<span\r\n\t#label\r\n\tclass=\"porcelain-toolbar-button__label\"\r\n\t[class.porcelain-toolbar-button__label--sr-only]=\"isLabelSrOnly\"\r\n>\r\n\t<ng-content></ng-content>\r\n</span>\r\n\r\n<ng-container\r\n\t*ngTemplateOutlet=\"icon && iconPosition === 'after' ? iconTemplate : nothing\"\r\n></ng-container>\r\n\r\n<ng-template #iconTemplate>\r\n\t<span class=\"porcelain-toolbar-button__icon\">\r\n\t\t<fa-icon [icon]=\"icon\"></fa-icon>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #nothing></ng-template>\r\n","import { Component, OnInit, Input, HostBinding } from '@angular/core';\r\nimport { Loggable } from '../../Loggable';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-cell, p-toolbar-cell',\r\n\ttemplateUrl: './toolbar-cell.component.html',\r\n\tstyleUrls: ['./toolbar-cell.component.scss']\r\n})\r\nexport class ToolbarCellComponent extends Loggable implements OnInit {\r\n\treadonly name = 'ToolbarCellComponent';\r\n\r\n\t_flex = '0 0 auto';\r\n\r\n\t@HostBinding('style.flex')\r\n\t@Input()\r\n\tget flex() {\r\n\t\treturn this._flex;\r\n\t}\r\n\tset flex(val: string | number) {\r\n\t\tif (val === 'shrink' || val === 0) {\r\n\t\t\tthis._flex = '0 0 auto';\r\n\t\t} else if (val === 'grow' || val === -1) {\r\n\t\t\tthis._flex = '1 1 auto';\r\n\t\t} else {\r\n\t\t\tthis._flex = val.toString();\r\n\t\t}\r\n\t}\r\n\r\n\t@HostBinding('class.porcelain-toolbar__cell')\r\n\tinit = true;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.log('new ToolbarCellComponent()', { arguments });\r\n\t}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tElementRef,\r\n\tHostBinding,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport { Loggable } from '../../Loggable';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-option, p-toolbar-option',\r\n\ttemplateUrl: './toolbar-option.component.html',\r\n\tstyleUrls: ['./toolbar-option.component.scss']\r\n})\r\nexport class ToolbarOptionComponent extends Loggable implements OnInit {\r\n\treadonly name = 'ToolbarOptionComponent';\r\n\r\n\t@Input() value: any;\r\n\r\n\t// tslint:disable-next-line: no-output-on-prefix\r\n\t@Output() onValue: EventEmitter<any> = new EventEmitter();\r\n\r\n\t// tslint:disable-next-line: no-output-on-prefix\r\n\t@Output() onHover: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\t@HostBinding('class.porcelain-toolbar-option--is-highlighted')\r\n\tisHighlighted: boolean = false;\r\n\r\n\tconstructor(public elementRef: ElementRef) {\r\n\t\tsuper();\r\n\t\tthis.log('new ToolbarOptionComponent()', { component: this });\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\t@HostListener('click')\r\n\tselect() {\r\n\t\tthis.onValue.emit(this.value);\r\n\t}\r\n\r\n\t@HostListener('mouseover')\r\n\thoverIn() {\r\n\t\tthis.onHover.emit(true);\r\n\t}\r\n\r\n\t@HostListener('mouseout')\r\n\thoverOut() {\r\n\t\tthis.onHover.emit(false);\r\n\t}\r\n}\r\n","<div>\r\n\t<ng-content></ng-content>\r\n</div>\r\n","// Angular\r\nimport {\r\n\tAfterContentInit,\r\n\tComponent,\r\n\tContentChildren,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tHostBinding,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOutput,\r\n\tQueryList\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// Third-Party\r\nimport { faAngleDown, IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n// Porcelain\r\nimport { ToolbarOptionComponent } from '../toolbar-option/toolbar-option.component';\r\nimport { trigger, style, transition, animate } from '@angular/animations';\r\nimport { Loggable } from '../../Loggable';\r\n\r\nlet closedStyle = {\r\n\ttransform: 'translateY(-20px)',\r\n\topacity: 0\r\n};\r\n\r\nlet openStyle = {\r\n\ttransform: 'translateY(0)',\r\n\topacity: 1\r\n};\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-select, p-toolbar-select',\r\n\ttemplateUrl: './toolbar-select.component.html',\r\n\tstyleUrls: ['./toolbar-select.component.scss'],\r\n\tanimations: [\r\n\t\ttrigger('slideInOut', [\r\n\t\t\ttransition(':enter', [\r\n\t\t\t\tstyle(closedStyle),\r\n\t\t\t\tanimate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style(openStyle))\r\n\t\t\t]),\r\n\t\t\ttransition(':leave', [\r\n\t\t\t\tstyle(openStyle),\r\n\t\t\t\tanimate('150ms cubic-bezier(0.4, 0.0, 0.2, 1)', style(closedStyle))\r\n\t\t\t])\r\n\t\t\t// state(\r\n\t\t\t// \t'open',\r\n\t\t\t// \tstyle({\r\n\t\t\t// \t\topacity: 1,\r\n\t\t\t// \t\ttransform: 'translateY(0px)',\r\n\t\t\t// \t\tdisplay: 'block'\r\n\t\t\t// \t})\r\n\t\t\t// ),\r\n\t\t\t// state(\r\n\t\t\t// \t'closed',\r\n\t\t\t// \tstyle({\r\n\t\t\t// \t\topacity: 0,\r\n\t\t\t// \t\ttransform: 'translateY(-10px)',\r\n\t\t\t// \t\tdisplay: 'none'\r\n\t\t\t// \t})\r\n\t\t\t// ),\r\n\t\t\t// transition('open=>closed', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n\t\t\t// transition('closed=>open', animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\r\n\t\t])\r\n\t]\r\n})\r\nexport class ToolbarSelectComponent extends Loggable implements OnDestroy, AfterContentInit {\r\n\treadonly name = 'ToolbarSelectComponent';\r\n\t/**\r\n\t * Font Awesome 5 icon to use for the dropdown arrow.\r\n\t */\r\n\treadonly faAngleDown: IconDefinition = faAngleDown;\r\n\r\n\t/**\r\n\t * A QueryList of the ToolbarOptionComponents that populate the options.\r\n\t */\r\n\t@ContentChildren(ToolbarOptionComponent)\r\n\treadonly options: QueryList<ToolbarOptionComponent>;\r\n\r\n\t/**\r\n\t * Used to apply classes to the host element\r\n\t */\r\n\t@HostBinding('class.porcelain-toolbar-select')\r\n\treadonly isInitialized = true;\r\n\r\n\t/**\r\n\t * Tab Index to enable keyboard navigation\r\n\t */\r\n\t@HostBinding('tabindex')\r\n\treadonly tabIndex = 0;\r\n\r\n\t/**\r\n\t * Boolean state of the dropdown menu. open = true; closed = false\r\n\t */\r\n\t@HostBinding('class.porcelain-toolbar-select--is-open')\r\n\tisOpen: boolean = false;\r\n\r\n\t/**\r\n\t * Controls the presentation of the dropdown. When fullWidth is true,\r\n\t * the dropdown is left aligned and the width of the dropdown label.\r\n\t */\r\n\t@Input()\r\n\t@HostBinding('class.porcelain-toolbar-select--full-width')\r\n\tfullWidth: boolean = false;\r\n\r\n\t/**\r\n\t * Boolean. True when the component has focus, otherwise false.\r\n\t */\r\n\thasFocus = false;\r\n\r\n\t/**\r\n\t * Allows the control to be disabled.\r\n\t */\r\n\t@Input()\r\n\t@HostBinding('class.porcelain-toolbar-select--disabled')\r\n\tdisabled: boolean = false;\r\n\r\n\t/**\r\n\t * The index of the currently-highlighted option\r\n\t */\r\n\thighlightedIndex: number = -1;\r\n\r\n\t/**\r\n\t * Label for the input, shown to the left of the current value.\r\n\t */\r\n\t@Input() label: string;\r\n\r\n\t/**\r\n\t * The index of the currently-selected option.\r\n\t */\r\n\tselectedIndex: number = -1;\r\n\r\n\t/**\r\n\t * Array of subscriptions created during the life of the component.\r\n\t */\r\n\tprivate _subscriptions: Subscription[] = [];\r\n\r\n\t/**\r\n\t * The current value of the component.\r\n\t */\r\n\tprivate _value: any;\r\n\r\n\t@Input()\r\n\tget value() {\r\n\t\tthis.log('get value()');\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(value) {\r\n\t\tthis.log('set value(value)', { value });\r\n\t\tthis._value = value;\r\n\t\tthis.selectedIndex = this.getIndexByValue(value);\r\n\t\tthis.valueChange.emit(this._value);\r\n\t}\r\n\r\n\t@Output()\r\n\tvalueChange = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * Constructs a new ToolbarSelectComponent.\r\n\t * @param elementRef Reference to the component's host element.\r\n\t */\r\n\tconstructor(private elementRef: ElementRef) {\r\n\t\tsuper();\r\n\t\tthis.log('new ToolbarSelectComponent(elementRef)', { elementRef });\r\n\t}\r\n\r\n\t/**\r\n\t * Manages rxjs subscriptions so that the component doesn't leak memory.\r\n\t * @param subscription Subscription to add to tracking array.\r\n\t */\r\n\taddSubscription(subscription: Subscription): this {\r\n\t\tthis.log('addSubscription(subscription)', { subscription });\r\n\t\tthis._subscriptions.push(subscription);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the subscriptions for hover and clicks from ToolbarOptionComponent children.\r\n\t */\r\n\tngAfterContentInit(): void {\r\n\t\tthis.log('ngAfterContentInit()');\r\n\t\tthis.options.toArray().forEach((child, idx) => {\r\n\t\t\tthis.addSubscription(\r\n\t\t\t\tchild.onValue.subscribe(newValue => {\r\n\t\t\t\t\tthis.value = newValue;\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t})\r\n\t\t\t).addSubscription(\r\n\t\t\t\tchild.onHover.subscribe(isHover => {\r\n\t\t\t\t\tif (isHover) {\r\n\t\t\t\t\t\tthis.highlightOptionByIndex(idx, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Safely closes subscriptions when the component is destroyed.\r\n\t */\r\n\tngOnDestroy(): void {\r\n\t\tthis.log('ngOnDestroy()');\r\n\t\tthis._subscriptions.forEach(sub => {\r\n\t\t\tif (!sub.closed) {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Finds the index of a value within the options ToolbarOptionComponent array.\r\n\t * @param value Value to find in the options.\r\n\t */\r\n\tgetIndexByValue(value: any) {\r\n\t\tthis.log('getIndexByValue(value)', { value });\r\n\t\treturn this.options ? this.options.map(option => option.value).indexOf(value) : -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Highlights an option by its position in the `option` array.\r\n\t * @param highlightIndex The index of the option to highlight on screen.\r\n\t * @param scrollToHighlightedOption Boolean, if the option should be scrolled to on highlight.\r\n\t */\r\n\thighlightOptionByIndex(highlightIndex: number, scrollToHighlightedOption: boolean = true) {\r\n\t\tthis.log('highlightOptionByIndex(highlightIndex, scrollToHighlightedOption)', {\r\n\t\t\thighlightIndex,\r\n\t\t\tscrollToOption: scrollToHighlightedOption\r\n\t\t});\r\n\r\n\t\tthis.options.toArray().forEach((child, idx, all) => {\r\n\t\t\tchild.isHighlighted = idx === highlightIndex;\r\n\r\n\t\t\t/*\r\n\t\t\t\tMouseover highlighting should not initiate a scroll-to-option,\r\n\t\t\t\tas this seems glitchy and unfamiliar.\r\n\t\t\t*/\r\n\t\t\tif (child.isHighlighted && scrollToHighlightedOption) {\r\n\t\t\t\tconst childElement = child.elementRef.nativeElement,\r\n\t\t\t\t\tparentElement = childElement.parentElement;\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t\tElement dimensions and scroll offsets might not be available immediately,\r\n\t\t\t\t\tso this uses setTimeout to trigger the scroll-into-view behaviors\r\n\t\t\t\t\twhen the element is painted and has dimensions and positions.\r\n\t\t\t\t*/\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst bounds = {\r\n\t\t\t\t\t\t// distance from top of parent to top of option element\r\n\t\t\t\t\t\telementTop: childElement.offsetTop,\r\n\r\n\t\t\t\t\t\t// distance from top of parent to bottom of option element\r\n\t\t\t\t\t\telementBottom: childElement.offsetTop + childElement.offsetHeight,\r\n\r\n\t\t\t\t\t\t// top of parent current scroll\r\n\t\t\t\t\t\tscrollTop: parentElement.scrollTop,\r\n\r\n\t\t\t\t\t\t// bottom of parent current scroll\r\n\t\t\t\t\t\tscrollBottom: parentElement.scrollTop + parentElement.offsetHeight\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// If the parent is taller than the child,\r\n\t\t\t\t\t// it is safe to attempt scroll-into-view behaviors.\r\n\t\t\t\t\tif (parentElement.offsetHeight > childElement.offsetHeight) {\r\n\t\t\t\t\t\t// if any part of the element is below the scroll window\r\n\t\t\t\t\t\tif (bounds.elementBottom > bounds.scrollBottom) {\r\n\t\t\t\t\t\t\tparentElement.scrollTop += bounds.elementBottom - bounds.scrollBottom;\r\n\t\t\t\t\t\t\t// if any part of the element is above the scroll window\r\n\t\t\t\t\t\t} else if (bounds.elementTop < bounds.scrollTop) {\r\n\t\t\t\t\t\t\tparentElement.scrollTop -= bounds.scrollTop - bounds.elementTop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.highlightedIndex = highlightIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the dropdown being open or closed.\r\n\t */\r\n\ttoggleOpen() {\r\n\t\tthis.log('toggleOpen()');\r\n\t\tif (!this.disabled) {\r\n\t\t\tif (this.isOpen) {\r\n\t\t\t\tthis.close();\r\n\t\t\t} else {\r\n\t\t\t\tthis.open();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => this.highlightOptionByIndex(this.selectedIndex > -1 ? this.selectedIndex : 0),\r\n\t\t\t\t\t0\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the dropdown.\r\n\t */\r\n\tprivate open(): this {\r\n\t\tthis.log('open()');\r\n\t\tthis.isOpen = true;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dropdown\r\n\t */\r\n\tprivate close(): this {\r\n\t\tthis.log('close()');\r\n\t\tthis.isOpen = false;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Called when the component gets focus.  Used to make keyboard navigation make sense.\r\n\t */\r\n\t@HostListener('focus')\r\n\tonFocusIn(): void {\r\n\t\tthis.hasFocus = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Called when the component loses focus.\r\n\t */\r\n\t@HostListener('blur')\r\n\tonFocusOut(): void {\r\n\t\tthis.hasFocus = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes dropdown on stray click\r\n\t * @param event Click event containing the target.\r\n\t */\r\n\t@HostListener('document:click', ['$event'])\r\n\tonClick(event): void {\r\n\t\tif (!this.elementRef.nativeElement.contains(event.target)) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes keyboard presses to enable keyboard navigation.\r\n\t * @param event An event containing details about the key press.\r\n\t */\r\n\t@HostListener('keydown', ['$event'])\r\n\tonDocumentKeyDown(event: KeyboardEvent): void {\r\n\t\tif (this.hasFocus && !this.disabled) {\r\n\t\t\t// The tab key should always allow navigation\r\n\t\t\tif (event.key !== 'Tab') {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t\tif (this.isOpen) {\r\n\t\t\t\tif (event.key === 'ArrowDown') {\r\n\t\t\t\t\tthis.highlightedIndex = Math.min(this.options.length - 1, this.highlightedIndex + 1);\r\n\t\t\t\t} else if (event.key === 'ArrowUp') {\r\n\t\t\t\t\tthis.highlightedIndex = Math.max(0, this.highlightedIndex - 1);\r\n\t\t\t\t} else if (event.key === 'Home') {\r\n\t\t\t\t\tthis.highlightedIndex = 0;\r\n\t\t\t\t} else if (event.key === 'End') {\r\n\t\t\t\t\tthis.highlightedIndex = this.options.length - 1;\r\n\t\t\t\t} else if (event.key === 'Enter' || event.key === 'Tab') {\r\n\t\t\t\t\tthis.options.toArray()[this.highlightedIndex].select();\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t} else if (event.key === 'Escape') {\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.highlightedIndex > -1) {\r\n\t\t\t\t\tthis.highlightOptionByIndex(this.highlightedIndex);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Not open, but it is focused\r\n\t\t\t\tconst openKeys = ['Enter', ' ', 'Spacebar'];\r\n\t\t\t\tif (~openKeys.indexOf(event.key)) {\r\n\t\t\t\t\tthis.toggleOpen();\r\n\t\t\t\t} else if (event.key === 'ArrowUp') {\r\n\t\t\t\t\tconst previousIndex = Math.max(0, this.getIndexByValue(this.value) - 1);\r\n\t\t\t\t\tthis.options.toArray()[previousIndex].select();\r\n\t\t\t\t} else if (event.key === 'ArrowDown') {\r\n\t\t\t\t\tconst nextIndex = Math.min(\r\n\t\t\t\t\t\tthis.options.length - 1,\r\n\t\t\t\t\t\tthis.getIndexByValue(this.value) + 1\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.options.toArray()[nextIndex].select();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<label class=\"porcelain-toolbar-select__toggle\" (click)=\"toggleOpen()\">\r\n\t<span class=\"porcelain-toolbar-select__toggle-label\">{{ label }}</span>\r\n\t<span class=\"porcelain-toolbar-select__toggle-current\">\r\n\t\t<ng-content\r\n\t\t\tselect=\"porcelain-toolbar-selected-template, p-toolbar-selected-template\"\r\n\t\t></ng-content>\r\n\t</span>\r\n\t<span class=\"porcelain-toolbar-select__toggle-caret\">\r\n\t\t<fa-icon [icon]=\"faAngleDown\"></fa-icon>\r\n\t</span>\r\n</label>\r\n\r\n<div class=\"porcelain-toolbar-select__options\" [@slideInOut] *ngIf=\"isOpen\">\r\n\t<ng-content select=\"porcelain-toolbar-option, p-toolbar-option\"></ng-content>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-selected-template, p-toolbar-selected-template',\r\n\ttemplateUrl: './toolbar-selected-template.component.html',\r\n\tstyleUrls: ['./toolbar-selected-template.component.scss']\r\n})\r\nexport class ToolbarSelectedTemplateComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar-text, p-toolbar-text',\r\n\ttemplateUrl: './toolbar-text.component.html',\r\n\tstyleUrls: ['./toolbar-text.component.scss'],\r\n\thost: {\r\n\t\t'[class.porcelain-toolbar-text]': 'true'\r\n\t}\r\n})\r\nexport class ToolbarTextComponent implements OnInit {\r\n\t@HostBinding('class.porcelain-toolbar-text--text-right')\r\n\t@Input()\r\n\ttextRight: boolean = false;\r\n\r\n\t@HostBinding('class.porcelain-toolbar-text--text-center')\r\n\t@Input()\r\n\ttextCenter: boolean = false;\r\n\r\n\t@HostBinding('class.porcelain-toolbar-text--no-wrap')\r\n\t@Input()\r\n\tnoWrap: boolean = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbar, p-toolbar',\r\n\ttemplateUrl: './toolbar.component.html',\r\n\tstyleUrls: ['./toolbar.component.scss'],\r\n\thost: {\r\n\t\t'[class.porcelain-toolbar]': 'true'\r\n\t}\r\n})\r\nexport class ToolbarComponent implements OnInit {\r\n\t@HostBinding('class.porcelain-toolbar--right')\r\n\t@Input()\r\n\talignRight: boolean = false;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content select=\"porcelain-toolbar-cell, p-toolbar-cell\"></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-toolbars, p-toolbars',\r\n\ttemplateUrl: './toolbars.component.html',\r\n\tstyleUrls: ['./toolbars.component.scss']\r\n})\r\nexport class ToolbarsComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit() {}\r\n}\r\n","<ng-content select=\"porcelain-toolbar, p-toolbar\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n// Other Modules\r\n\r\n// This module\r\nimport { ToolbarComponent } from './toolbar/toolbar.component';\r\nimport { ToolbarTextComponent } from './toolbar-text/toolbar-text.component';\r\nimport { ToolbarButtonComponent } from './toolbar-button/toolbar-button.component';\r\nimport { ToolbarSelectComponent } from './toolbar-select/toolbar-select.component';\r\nimport { ToolbarOptionComponent } from './toolbar-option/toolbar-option.component';\r\nimport { ToolbarCellComponent } from './toolbar-cell/toolbar-cell.component';\r\nimport { ToolbarSelectedTemplateComponent } from './toolbar-selected-template/toolbar-selected-template.component';\r\nimport { ToolbarsComponent } from './toolbars/toolbars.component';\r\nimport { InputsModule } from '../inputs/inputs.module';\r\n\r\nexport const TOOLBAR_IMPORTS = [CommonModule, FontAwesomeModule, InputsModule];\r\nexport const TOOLBAR_DIRECTIVES = [\r\n\tToolbarsComponent,\r\n\tToolbarComponent,\r\n\tToolbarTextComponent,\r\n\tToolbarButtonComponent,\r\n\tToolbarSelectComponent,\r\n\tToolbarOptionComponent,\r\n\tToolbarCellComponent,\r\n\tToolbarSelectedTemplateComponent\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: TOOLBAR_DIRECTIVES,\r\n\timports: TOOLBAR_IMPORTS,\r\n\texports: TOOLBAR_DIRECTIVES\r\n})\r\nexport class ToolbarModule {}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tHostBinding,\r\n\tInput,\r\n\tHostListener,\r\n\tElementRef,\r\n\tOutput,\r\n\tEventEmitter\r\n} from '@angular/core';\r\nimport { faChevronDown, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { clamp } from '../../shared/utilities/arrays/clamp';\r\nimport { Loggable } from '../../Loggable';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\n\r\ntype ItemType = string | object;\r\n\r\n@Component({\r\n\tselector: 'porcelain-combobox, p-combobox',\r\n\ttemplateUrl: './combobox.component.html',\r\n\tstyleUrls: ['./combobox.component.scss'],\r\n\thost: {\r\n\t\t'[class.combobox--has-focus]': 'hasFocus'\r\n\t}\r\n})\r\nexport class ComboboxComponent extends Loggable implements OnInit {\r\n\t/**\r\n\t * Icon of chevron pointing down, used for the dropdown toggle.\r\n\t */\r\n\t@Input() dropdownToggleIcon = faChevronDown;\r\n\r\n\t/**\r\n\t * Icon for the clear button\r\n\t */\r\n\t@Input() clearIcon = faTimesCircle;\r\n\r\n\t/**\r\n\t * Color for the clear icon.  By default, #9dacba\r\n\t */\r\n\t@Input() clearIconColor: string = '#9dacba';\r\n\r\n\t/**\r\n\t * Name of the component, used when the Loggable behaviors are used.\r\n\t */\r\n\treadonly name = 'ComboboxComponent';\r\n\r\n\t/**\r\n\t * isObjectArray checks whether its plain value array or array of objects\r\n\t * @param isObjectArray\r\n\t */\r\n\t@Input() isObjectArray: boolean = false;\r\n\r\n\t/**\r\n\t * Array of items to filter. Can be strings or objects.\r\n\t */\r\n\t@Input() items: ItemType[] = [];\r\n\r\n\t/**\r\n\t * Property used for comparison when isObjectArray is true. For example,\r\n\t * if item['name'] contains the label, labelProp should be 'name'.\r\n\t * @param labelProp\r\n\t */\r\n\t@Input() labelProp: string = '';\r\n\r\n\t/**\r\n\t * Placeholder value shown in the input when query\r\n\t * is the empty string.\r\n\t */\r\n\t@Input() placeholder: string = '';\r\n\r\n\t/**\r\n\t * Event emitter that emits whenever the selected item changes.\r\n\t */\r\n\t@Output()\r\n\tpublic valueChange: EventEmitter<ItemType> = new EventEmitter();\r\n\t/**\r\n\t * Event emitter that emits whenever clear icon is clicked.\r\n\t */\r\n\t@Output()\r\n\tpublic clearEvent: EventEmitter<string> = new EventEmitter<string>();\r\n\t/**\r\n\t * The current filtered set of items.  Force repopulation with applyFilter().\r\n\t */\r\n\tfilteredItems: any[] = [];\r\n\r\n\t/**\r\n\t * Controls the display of the border.  Set to false to eliminate borders.\r\n\t */\r\n\t@HostBinding('class.combobox--has-border')\r\n\t@Input()\r\n\tborder: boolean = true;\r\n\r\n\t/**\r\n\t * Boolean that tracks if the query input has focus.\r\n\t */\r\n\thasFocus: boolean = false;\r\n\r\n\t/**\r\n\t * The index of the currently highlighted item in filteredItems\r\n\t */\r\n\thighlightedIndex: number = -1;\r\n\r\n\t/**\r\n\t * When true, the dropdown will be displayed; if false, the dropdown will not be displayed.\r\n\t */\r\n\tisOpen: boolean = false;\r\n\r\n\t/**\r\n\t * Accessibility label for the clear button.\r\n\t */\r\n\tlabelClear: string = 'Clear';\r\n\r\n\t/**\r\n\t * Shown when the user has filtered too much, and no valid items remain in filteredItems.\r\n\t */\r\n\t@Input() public labelNoItemsFound: string = 'No results found.';\r\n\r\n\t/**\r\n\t * Placeholder for text input when search field is empty\r\n\t */\r\n\tlabelPlaceholder: string = 'type to search...';\r\n\r\n\t/**\r\n\t * Accessibility label for dropdown icon.\r\n\t */\r\n\tlabelSelect: string = 'Select';\r\n\r\n\t/**\r\n\t * The current query.\r\n\t */\r\n\t@Input() public query: string = '';\r\n\r\n\t/**\r\n\t * Index of the selected item with respect to the `items` array.\r\n\t */\r\n\tselectedIndex: number = -1;\r\n\t/**\r\n\t * Strings containing html template.\r\n\t */\r\n\t@Input() type: string = '';\r\n\t@Input() types: string = '';\r\n\r\n\t/**\r\n\t * isComplexArray checks whether its normal object array or it contains any html template contents.\r\n\t * @param isComplexArray\r\n\t */\r\n\t@Input() isComplexArray: boolean = false;\r\n\r\n\t/**\r\n\t *boolean to check whether clearing the values in input field needs confirmation or not.\r\n\t */\r\n\t@Input() isConfirmationNeeded: boolean = false;\r\n\r\n\t/**\r\n\t *boolean to decide whether to clear the values in the input field.\r\n\t */\r\n\t@Input() isCleared: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate element: ElementRef<HTMLElement>,\r\n\t\tprivate translationService: TranslationService\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this, {\r\n\t\t\t\tlabel_TypeToSearch: 'labelPlaceholder',\r\n\t\t\t\tlabel_Select: 'labelSelect',\r\n\t\t\t\tlabel_NoItemsFound: 'labelNoItemsFound',\r\n\t\t\t\tlabel_Clear: 'labelClear'\r\n\t\t\t})\r\n\t\t);\r\n\t\tif (this.items[this.labelProp] == '') {\r\n\t\t\tthis.items[this.labelProp] = ((this.items[this.type].replace(/\\<(.+?)\\>/g, '') as string) +\r\n\t\t\t\t', ' +\r\n\t\t\t\tthis.items[this.types].replace(/\\<(.+?)\\>/g, '')) as string;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the component state to blank query and resets the filteredItems array.\r\n\t */\r\n\tpublic clear() {\r\n\t\tthis.clearEvent.emit('');\r\n\t\tif (this.isConfirmationNeeded) {\r\n\t\t\tif (this.isCleared) {\r\n\t\t\t\tif (this.query != '') {\r\n\t\t\t\t\tthis.query = '';\r\n\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.query = '';\r\n\t\t\tthis.applyFilter();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the currently selected item. Returns null when no item is selected.\r\n\t */\r\n\tget value(): ItemType {\r\n\t\treturn this.selectedIndex > -1 ? this.items[this.selectedIndex] : null;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the selectedIndex by reference to selected item.\r\n\t */\r\n\t@Input()\r\n\tset value(value: ItemType) {\r\n\t\tthis.selectedIndex = this.items.indexOf(value);\r\n\t\tif (this.selectedIndex > -1) {\r\n\t\t\tif (this.isComplexArray) {\r\n\t\t\t\tthis.query = this.isObjectArray\r\n\t\t\t\t\t? this.value[this.type].replace(/\\<(.+?)\\>/g, '')\r\n\t\t\t\t\t: this.value;\r\n\t\t\t} else {\r\n\t\t\t\tthis.query = this.isObjectArray ? this.value[this.labelProp] : this.value;\r\n\t\t\t}\r\n\t\t\tthis.valueChange.emit(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dropdown when document receives a stray click.\r\n\t * @param event Event emitted when the document is clicked.\r\n\t */\r\n\t@HostListener('document:click', ['$event'])\r\n\tonStrayClick(event): void {\r\n\t\tif (!this.element.nativeElement.contains(event.target)) {\r\n\t\t\tthis.setOpen(false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Searches the `items` array for items that match the query.\r\n\t * Result is placed at this.filteredItems\r\n\t */\r\n\tpublic applyFilter(): this {\r\n\t\tthis.filteredItems = this.items.filter(item => {\r\n\t\t\tif (this.isObjectArray) {\r\n\t\t\t\tif (this.isComplexArray) {\r\n\t\t\t\t\titem[this.labelProp] = (((item[this.type] as string) +\r\n\t\t\t\t\t\t', ' +\r\n\t\t\t\t\t\titem[this.types]) as string).replace(/\\<(.+?)\\>/g, '');\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(item[this.labelProp] as string)\r\n\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t.indexOf(this.query.trim().toLowerCase()) > -1\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t(item[this.labelProp] as string)\r\n\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t.indexOf(this.query.trim().toLowerCase()) > -1\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn (item as string).toLowerCase().indexOf(this.query.trim().toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\t/**\r\n\t * Handles keyup events when the user types in the field. Binds special keys\r\n\t * to create and maintain traditional key behaviors expected of a select control.\r\n\t * @param event Event object emitted by the keyup\r\n\t */\r\n\tkeyUp(event: KeyboardEvent) {\r\n\t\t//Check focus exists\r\n\t\tif (this.hasFocus) {\r\n\t\t\tthis.applyFilter();\r\n\t\t\tlet key = event.key,\r\n\t\t\t\tlastIndex = this.filteredItems.length - 1;\r\n\r\n\t\t\t// If there's only one item in the filteredItems,\r\n\t\t\t// highlight it so the user can select it with Enter\r\n\t\t\tif (this.filteredItems.length === 1) {\r\n\t\t\t\tthis.highlightedIndex = 0;\r\n\t\t\t}\r\n\r\n\t\t\t//check if open\r\n\t\t\tif (this.isOpen) {\r\n\t\t\t\tif ('ArrowUp' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(\r\n\t\t\t\t\t\tMath.max(0, this.highlightedIndex - 1)\r\n\t\t\t\t\t).scrollToHighlighted();\r\n\t\t\t\t} else if ('ArrowDown' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(\r\n\t\t\t\t\t\tMath.min(lastIndex, this.highlightedIndex + 1)\r\n\t\t\t\t\t).scrollToHighlighted();\r\n\t\t\t\t} else if (~['Enter', 'Space', ' '].indexOf(key)) {\r\n\t\t\t\t\tthis.setSelectedIndex(this.highlightedIndex).setOpen(false);\r\n\t\t\t\t} else if ('Home' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(0).scrollToHighlighted();\r\n\t\t\t\t} else if ('End' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(lastIndex).scrollToHighlighted();\r\n\t\t\t\t} else if ('Escape' == key) {\r\n\t\t\t\t\tif (this.query === '') {\r\n\t\t\t\t\t\tthis.setOpen(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.query = '';\r\n\t\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//if closed\r\n\t\t\telse {\r\n\t\t\t\t//opens only if enter is clicked\r\n\t\t\t\tif (~['Enter', 'Space', ' '].indexOf(key)) {\r\n\t\t\t\t\tthis.setHighlightedIndex(clamp(0, this.selectedIndex, lastIndex))\r\n\t\t\t\t\t\t.setOpen(true)\r\n\t\t\t\t\t\t.scrollToHighlighted();\r\n\t\t\t\t} else if ('ArrowUp' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(Math.max(0, this.selectedIndex - 1));\r\n\t\t\t\t} else if ('ArrowDown' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(Math.min(lastIndex, this.selectedIndex + 1));\r\n\t\t\t\t} else if ('Home' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(0);\r\n\t\t\t\t} else if ('End' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(lastIndex);\r\n\t\t\t\t} else if ('Escape' == key) {\r\n\t\t\t\t\tif (this.query !== '') {\r\n\t\t\t\t\t\tthis.query = '';\r\n\t\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// These keys should have their default actions stopped.\r\n\t\t\t// Calling stopPropagation() and returning false will ensure a stopped event.\r\n\t\t\tconst swallowKeys = ['ArrowUp', 'ArrowDown', 'Enter', 'Space', 'Home', 'End', 'Escape', ' '];\r\n\t\t\tif (~swallowKeys.indexOf(key)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set up the component after the Inputs are mounted.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tthis.filteredItems = this.items.slice();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates and scrolls the item dropdown to the current highlightedIndex.\r\n\t */\r\n\tscrollToHighlighted(): this {\r\n\t\tlet itemElements = this.element.nativeElement.querySelectorAll('.select__item');\r\n\t\tif (itemElements && itemElements[this.highlightedIndex] /** && elementNotInView */) {\r\n\t\t\tlet childElement = itemElements[this.highlightedIndex] as HTMLElement;\r\n\t\t\tlet parentElement = childElement.parentElement;\r\n\r\n\t\t\tconst bounds = {\r\n\t\t\t\t// distance from top of parent to top of option element\r\n\t\t\t\telementTop: childElement.offsetTop,\r\n\r\n\t\t\t\t// distance from top of parent to bottom of option element\r\n\t\t\t\telementBottom: childElement.offsetTop + childElement.offsetHeight,\r\n\r\n\t\t\t\t// top of parent current scroll\r\n\t\t\t\tscrollTop: parentElement.scrollTop,\r\n\r\n\t\t\t\t// bottom of parent current scroll\r\n\t\t\t\tscrollBottom: parentElement.scrollTop + parentElement.offsetHeight\r\n\t\t\t};\r\n\r\n\t\t\t// Because of animations, and other UI painting, set this to execute at the end of the\r\n\t\t\t// current call stack.  Attempting to change scroll position too soon will result\r\n\t\t\t// in errors.\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\t// If the parent is taller than the child,\r\n\t\t\t\t// it is safe to attempt scroll-into-view behaviors.\r\n\t\t\t\tif (parentElement.offsetHeight > childElement.offsetHeight) {\r\n\t\t\t\t\t// if any part of the element is below the scroll window\r\n\t\t\t\t\tif (bounds.elementBottom > bounds.scrollBottom) {\r\n\t\t\t\t\t\tparentElement.scrollTop += bounds.elementBottom - bounds.scrollBottom;\r\n\t\t\t\t\t\t// if any part of the element is above the scroll window\r\n\t\t\t\t\t} else if (bounds.elementTop < bounds.scrollTop) {\r\n\t\t\t\t\t\tparentElement.scrollTop -= bounds.scrollTop - bounds.elementTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the status of focus.\r\n\t * @param focus Boolean. Set to true when the component gains focus.\r\n\t */\r\n\tsetFocus(focus: boolean): this {\r\n\t\tthis.hasFocus = focus;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the highlighted item within the filteredItems array.\r\n\t * @param idx Index of the highlighted item (within filteredItems array).\r\n\t */\r\n\tsetHighlightedIndex(idx: number) {\r\n\t\tthis.highlightedIndex = idx;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Opens or closes the suggestion dropdown.\r\n\t * @param isOpen Boolean value for the desired state of the control.\r\n\t */\r\n\tsetOpen(isOpen: boolean): this {\r\n\t\tthis.isOpen = isOpen;\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.applyFilter();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Tracks the index of the selected item. Sets the value,\r\n\t * which locates the filtered item in the items array.\r\n\t * @param selectedFilteredIndex The index of the selected item in the filteredItems array\r\n\t */\r\n\tsetSelectedIndex(selectedFilteredIndex: number) {\r\n\t\tthis.info('setSelectedIndex(selectedFilteredIndex)', { selectedFilteredIndex });\r\n\t\t// the this.value setter will find the item in the items array\r\n\t\tthis.value = this.filteredItems[selectedFilteredIndex];\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the isOpen property by negation.\r\n\t */\r\n\ttoggleOpen() {\r\n\t\tthis.setOpen(!this.isOpen);\r\n\t}\r\n\r\n\t/**\r\n\t * Insert query Value and filter programmatically. Use angular ViewChild,ViewChildren\r\n\t *\r\n\t * */\r\n\tpublic setSelectData(SerachValue: string = '') {\r\n\t\tthis.query = SerachValue;\r\n\t\tthis.applyFilter();\r\n\t}\r\n}\r\n","<div class=\"select__window\">\r\n\t<input\r\n\t\ttype=\"text\"\r\n\t\tclass=\"select__window-value\"\r\n\t\t[(ngModel)]=\"query\"\r\n\t\t[placeholder]=\"placeholder || labelPlaceholder\"\r\n\t\t[class.select__window-value--placeholder]=\"query === ''\"\r\n\t\t(focus)=\"setOpen(true).setFocus(true)\"\r\n\t\t(blur)=\"setFocus(false)\"\r\n\t\t(keyup)=\"keyUp($event)\"\r\n\t/>\r\n\r\n\t<button\r\n\t\tclass=\"select__window-action\"\r\n\t\t*ngIf=\"query !== ''\"\r\n\t\t[style.color]=\"clearIconColor\"\r\n\t\t(click)=\"clear()\"\r\n\t>\r\n\t\t<span class=\"sr-only\">{{ labelClear }}</span>\r\n\t\t<fa-icon [icon]=\"clearIcon\"></fa-icon>\r\n\t</button>\r\n\r\n\t<button class=\"select__window-action\" (click)=\"toggleOpen()\">\r\n\t\t<span class=\"sr-only\">{{ labelSelect }}</span>\r\n\t\t<fa-icon [icon]=\"dropdownToggleIcon\"></fa-icon>\r\n\t</button>\r\n</div>\r\n\r\n<ul class=\"select__items\" *ngIf=\"isOpen\">\r\n\t<li class=\"select__no-results\" *ngIf=\"filteredItems.length === 0\">\r\n\t\t{{ labelNoItemsFound }}\r\n\t</li>\r\n\t<li\r\n\t\tclass=\"select__item\"\r\n\t\t*ngFor=\"let item of filteredItems; index as idx\"\r\n\t\t(mouseover)=\"setHighlightedIndex(idx)\"\r\n\t\t(click)=\"setSelectedIndex(idx).setOpen(false)\"\r\n\t\t[title]=\"isObjectArray ? item[labelProp] : item\"\r\n\t\t[class.select__item--highlighted]=\"highlightedIndex == idx\"\r\n\t\t[class.select__item--selected]=\"selectedIndex == idx\"\r\n\t>\r\n\t\t<ng-container *ngIf=\"isComplexArray && isObjectArray\">\r\n\t\t\t<span innerHTML=\"{{ item[type] | highlight: query }}{{ item[types] | highlight: query }}\">\r\n\t\t\t</span>\r\n\t\t</ng-container>\r\n\t\t<ng-container *ngIf=\"!isComplexArray && isObjectArray\">\r\n\t\t\t<span innerHTML=\"{{ item[labelProp] | highlight: query }}\"> </span>\r\n\t\t</ng-container>\r\n\t\t<ng-container *ngIf=\"!isObjectArray\">\r\n\t\t\t<span innerHTML=\"{{ item | highlight: query }}\"></span>\r\n\t\t</ng-container>\r\n\t</li>\r\n</ul>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n//Import Directives\r\nimport { ComboboxComponent } from './combobox/combobox.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { PipesModule } from '../pipes/pipes.module';\r\nexport const COMBOBOX_DIRECTIVES = [ComboboxComponent];\r\nexport const COMBOBOX_IMPORTS = [CommonModule, FormsModule, PipesModule, FontAwesomeModule];\r\n\r\n@NgModule({\r\n\tdeclarations: COMBOBOX_DIRECTIVES,\r\n\timports: COMBOBOX_IMPORTS,\r\n\texports: COMBOBOX_DIRECTIVES\r\n})\r\nexport class ComboboxModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Loggable } from '../../../lib/Loggable';\r\n\r\n@Component({\r\n\tselector: 'porcelain-breadcrumb-item, p-breadcrumb-item',\r\n\ttemplateUrl: './breadcrumb-item.component.html',\r\n\tstyleUrls: ['./breadcrumb-item.component.scss']\r\n})\r\nexport class BreadcrumbItemComponent extends Loggable implements OnInit {\r\n\tname = 'BreadcrumbItemComponent';\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.info('new BreadcrumbItemComponent()');\r\n\t}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Loggable } from '../../../lib/Loggable';\r\n\r\n@Component({\r\n\tselector: 'porcelain-breadcrumbs, p-breadcrumbs',\r\n\ttemplateUrl: './breadcrumbs.component.html',\r\n\tstyleUrls: ['./breadcrumbs.component.scss']\r\n})\r\nexport class BreadcrumbsComponent extends Loggable implements OnInit {\r\n\tname = 'BreadcrumbsComponent';\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.info('new BreadcrumbsComponent()');\r\n\t}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content select=\"porcelain-breadcrumb-item, p-breadcrumb-item\"></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component';\r\nimport { BreadcrumbItemComponent } from './breadcrumb-item/breadcrumb-item.component';\r\n\r\nexport const BREADCRUMB_DIRECTIVES = [BreadcrumbsComponent, BreadcrumbItemComponent];\r\nexport const BREADCRUMB_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: BREADCRUMB_DIRECTIVES,\r\n\timports: BREADCRUMB_IMPORTS,\r\n\texports: BREADCRUMB_DIRECTIVES\r\n})\r\nexport class BreadcrumbModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-skeleton-block, p-skeleton-block',\r\n\ttemplateUrl: './block.component.html',\r\n\tstyleUrls: ['./block.component.scss']\r\n})\r\nexport class SkeletonBlockComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<!-- the porcelain block has no content -->\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Loggable } from '../../Loggable';\r\n\r\nfunction getRandomInt(max) {\r\n\treturn Math.floor(Math.random() * Math.floor(max));\r\n}\r\n\r\n@Component({\r\n\tselector: 'porcelain-skeleton-word, p-skeleton-word',\r\n\ttemplateUrl: './word.component.html',\r\n\tstyleUrls: ['./word.component.scss'],\r\n\thost: {\r\n\t\t'[style.width.em]': 'characters'\r\n\t}\r\n})\r\nexport class SkeletonWordComponent extends Loggable implements OnInit {\r\n\treadonly name = 'WordComponent';\r\n\r\n\t@Input() characters: number;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tif (!this.characters) {\r\n\t\t\tthis.characters = 2 + getRandomInt(7);\r\n\t\t}\r\n\t}\r\n}\r\n","<porcelain-skeleton-block></porcelain-skeleton-block>\r\n","import { Component, OnInit, ElementRef, Input } from '@angular/core';\r\n\r\nfunction getRandomInt(min, max) {\r\n\tmin = Math.ceil(min);\r\n\tmax = Math.floor(max);\r\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\r\n}\r\n\r\n@Component({\r\n\tselector: 'porcelain-skeleton-line, p-skeleton-line',\r\n\ttemplateUrl: './line.component.html',\r\n\tstyleUrls: ['./line.component.scss']\r\n})\r\nexport class SkeletonLineComponent implements OnInit {\r\n\tconstructor(public host: ElementRef<HTMLDivElement>) {}\r\n\r\n\twordLengths: number[] = [];\r\n\r\n\t@Input() minLength: number = 7;\r\n\r\n\t@Input() maxLength: number = 13;\r\n\r\n\tngOnInit(): void {\r\n\t\tlet budgetPx = this.host.nativeElement.clientWidth;\r\n\t\tlet emWidthPx = parseFloat(getComputedStyle(this.host.nativeElement).fontSize) || 14;\r\n\r\n\t\twhile (budgetPx > 0) {\r\n\t\t\tlet wordsCount = this.wordLengths.length;\r\n\r\n\t\t\tlet wordLength = getRandomInt(this.minLength, this.maxLength);\r\n\t\t\tlet wordPx = wordLength * emWidthPx;\r\n\t\t\tlet gapPx = wordsCount === 0 ? 0 : emWidthPx;\r\n\t\t\tlet proposedWidth = wordPx + gapPx;\r\n\t\t\tif (budgetPx > proposedWidth) {\r\n\t\t\t\tthis.wordLengths.push(wordLength);\r\n\t\t\t\tbudgetPx -= proposedWidth;\r\n\t\t\t} else {\r\n\t\t\t\tbudgetPx = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<porcelain-skeleton-word\r\n\t*ngFor=\"let wordLength of wordLengths\"\r\n\t[characters]=\"wordLength\"\r\n></porcelain-skeleton-word>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-skeleton-paragraph, p-skeleton-paragraph',\r\n\ttemplateUrl: './paragraph.component.html',\r\n\tstyleUrls: ['./paragraph.component.scss']\r\n})\r\nexport class SkeletonParagraphComponent {\r\n\t@Input() lines = 4;\r\n\r\n\tget range(): number[] {\r\n\t\tconst range = [];\r\n\t\tfor (let i = 0; i < this.lines; i++) {\r\n\t\t\trange.push(i);\r\n\t\t}\r\n\t\treturn range;\r\n\t}\r\n\r\n\tconstructor() {}\r\n}\r\n","<porcelain-skeleton-line *ngFor=\"let lineNumber of range\"></porcelain-skeleton-line>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SkeletonWordComponent } from './word/word.component';\r\nimport { SkeletonLineComponent } from './line/line.component';\r\nimport { SkeletonBlockComponent } from './block/block.component';\r\nimport { SkeletonParagraphComponent } from './paragraph/paragraph.component';\r\n\r\nexport const SKELETON_DIRECTIVES = [\r\n\tSkeletonBlockComponent,\r\n\tSkeletonWordComponent,\r\n\tSkeletonParagraphComponent,\r\n\tSkeletonLineComponent\r\n];\r\n\r\nexport const SKELETON_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: SKELETON_DIRECTIVES,\r\n\timports: SKELETON_IMPORTS,\r\n\texports: SKELETON_DIRECTIVES\r\n})\r\nexport class SkeletonsModule {}\r\n","import { IDictionary } from '../types/Containers/IDictonary/IDictionary';\r\nimport { SimpleOption } from '../types/Options/SimpleOption';\r\nimport { fromEntries } from './reducers/fromEntries/fromEntries';\r\n\r\n/**\r\n * Converts string dictionaries to SimpleOption dictionary to be be used as the refiner.options property.\r\n * @param dict A string => string dictionary that should be converted to a SimpleOption dictionary\r\n */\r\nexport function toSimpleOptionDictionary(dict: IDictionary<string>): IDictionary<SimpleOption> {\r\n\treturn Object.keys(dict)\r\n\t\t.map(slug => {\r\n\t\t\tconst label = dict[slug];\r\n\t\t\treturn [\r\n\t\t\t\tslug,\r\n\t\t\t\tnew SimpleOption({\r\n\t\t\t\t\tslug,\r\n\t\t\t\t\tlabel\r\n\t\t\t\t})\r\n\t\t\t];\r\n\t\t})\r\n\t\t.reduce(fromEntries, {});\r\n}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostBinding,\r\n\tViewChild,\r\n\tOnChanges,\r\n\tSimpleChanges\r\n} from '@angular/core';\r\nimport { AngularMyDatePickerDirective, IMyDateModel, IMyOptions } from 'angular-mydatepicker';\r\n\r\nimport { faCalendarAlt, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { DateTime } from 'luxon';\r\n\r\n@Component({\r\n\tselector: 'porcelain-datepicker',\r\n\ttemplateUrl: './date-picker.component.html',\r\n\tstyleUrls: ['./date-picker.component.scss']\r\n})\r\nexport class datePickerComponent implements OnInit, OnChanges {\r\n\t@Input() placeHolderValue: string = 'YYYY-MM-DD';\r\n\r\n\t/**\r\n\t * Icon of chevron pointing down, used for the dropdown toggle.\r\n\t */\r\n\t@Input() datePickerIcon = faCalendarAlt;\r\n\r\n\t/**\r\n\t * Icon for the clear button\r\n\t */\r\n\t@Input() clearIcon = faTimesCircle;\r\n\r\n\t/**\r\n\t * Accessibility label for the clear button.\r\n\t */\r\n\t@Input() labelClear: string = 'Clear';\r\n\r\n\t/**\r\n\t * Accessibility label for dropdown icon.\r\n\t */\r\n\t@Input() labelSelect: string = 'Select';\r\n\r\n\t/**\r\n\t * Controls the display of the border.  Set to false to eliminate borders.\r\n\t */\r\n\t@HostBinding('class.datePicker--has-border')\r\n\t@Input()\r\n\tborder: boolean = true;\r\n\r\n\t/**\r\n\t * Color for the clear icon.  By default, #9dacba\r\n\t */\r\n\t@Input() clearIconColor: string = '#9dacba';\r\n\r\n\t/**\r\n\t * Color for the clear icon.  By default, #9dacba\r\n\t */\r\n\t@Input() datePickerIconColor: string = 'unset';\r\n\r\n\t/**\r\n\t * if preselected date is given then this will be set\r\n\t */\r\n\t@Input() preselectedDate: string = '';\r\n\r\n\t/**\r\n\t *optional datepicker input\r\n\t */\r\n\t@Input() datePickerOptions: IMyOptions = {\r\n\t\tdateFormat: 'yyyy-mm-dd',\r\n\t\tdayLabels: {\r\n\t\t\tsu: 'Sun',\r\n\t\t\tmo: 'Mon',\r\n\t\t\ttu: 'Tue',\r\n\t\t\twe: 'Wed',\r\n\t\t\tth: 'Thu',\r\n\t\t\tfr: 'Fri',\r\n\t\t\tsa: 'Sat'\r\n\t\t},\r\n\t\tmonthLabels: {\r\n\t\t\t1: 'Jan',\r\n\t\t\t2: 'Feb',\r\n\t\t\t3: 'Mar',\r\n\t\t\t4: 'Apr',\r\n\t\t\t5: 'May',\r\n\t\t\t6: 'Jun',\r\n\t\t\t7: 'Jul',\r\n\t\t\t8: 'Aug',\r\n\t\t\t9: 'Sep',\r\n\t\t\t10: 'Oct',\r\n\t\t\t11: 'Nov',\r\n\t\t\t12: 'Dec'\r\n\t\t},\r\n\t\tstylesData: {\r\n\t\t\tselector: 'date-picker',\r\n\t\t\tstyles: `\r\n\t\t\t`\r\n\t\t},\r\n\t\t//showFooterToday: true,\r\n\t\ttodayTxt: 'Today'\r\n\t};\r\n\r\n\t/**\r\n\t * outputs selected date as in given format\r\n\t */\r\n\t@Output() userSelectedDate: EventEmitter<IMyDateModel> = new EventEmitter<IMyDateModel>();\r\n\t/**\r\n\t * outputs selected date as in string format in YYYY-MM-DD\r\n\t */\r\n\t@Output() selectedFormatDate: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t@ViewChild('DatePicker', { static: false })\r\n\tpublic myDatePickRef: AngularMyDatePickerDirective = null;\r\n\tpublic selectedDate: IMyDateModel = null;\r\n\tconstructor() {}\r\n\r\n\tpublic ngOnInit() {\r\n\t\tif (this.preselectedDate !== '') {\r\n\t\t\tthis.setPreselectedDate();\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t *\r\n\t * Incase input changes update datepicker\r\n\t *\r\n\t * @param changes\r\n\t */\r\n\r\n\tpublic ngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (changes['preselectedDate']) {\r\n\t\t\tthis.setPreselectedDate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t *SetPreselectedDate After Validation\r\n\t * */\r\n\r\n\tpublic setPreselectedDate() {\r\n\t\tlet preselectedDate: Date = this.getPreSelectedDate(this.preselectedDate);\r\n\t\tif (preselectedDate) {\r\n\t\t\tthis.selectedDate = {\r\n\t\t\t\tisRange: false,\r\n\t\t\t\tsingleDate: {\r\n\t\t\t\t\tdate: {\r\n\t\t\t\t\t\tday: preselectedDate.getDate(),\r\n\t\t\t\t\t\tmonth: preselectedDate.getMonth() + 1, // Zero-indexed => One-indexed\r\n\t\t\t\t\t\tyear: preselectedDate.getFullYear()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t *Onchange date update ngmodel date and emits value\r\n\t * */\r\n\r\n\tpublic onDateChanged(event: IMyDateModel) {\r\n\t\t// Update value of selDate variable\r\n\t\tthis.selectedDate = event;\r\n\t\tthis.userSelectedDate.emit(event);\r\n\t\tthis.selectedFormatDate.emit(event.singleDate.formatted);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * Below function is reference to convert from date to string\r\n\t * @param date\r\n\t */\r\n\r\n\tpublic getPreSelectedDate(date: string): Date {\r\n\t\tlet parsed = DateTime.fromISO(date);\r\n\t\tif (parsed.isValid) {\r\n\t\t\treturn parsed.toJSDate();\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * Below function is reference to convert from date to string\r\n\t * @param date\r\n\t */\r\n\tpublic filterDateToStringFormat(date: Date): string {\r\n\t\tlet DateValues = DateTime.fromJSDate(date, { zone: 'UTC' }).toISODate();\r\n\t\treturn DateValues;\r\n\t}\r\n\t/**\r\n\t * Below Function is for clearing Datepicker. Use ViewChild to get value\r\n\t * */\r\n\tpublic clear() {\r\n\t\tthis.myDatePickRef.clearDate();\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * Utility function for setting date via viewChild. USE OF Preselected Input is adviced!!\r\n\t * */\r\n\tpublic SetDatePickerValue(inputdate: string) {\r\n\t\tthis.preselectedDate = inputdate;\r\n\t\tthis.setPreselectedDate();\r\n\t}\r\n}\r\n","<div class=\"datePicker__window\">\r\n\t<!-- toggle calendar button -->\r\n\t<button\r\n\t\tclass=\"datePicker__window-action\"\r\n\t\t(click)=\"DatePicker.toggleCalendar()\"\r\n\t\t[style.color]=\"datePickerIconColor\"\r\n\t\t[title]=\"labelSelect\"\r\n\t>\r\n\t\t<i class=\"calendar_icon\"></i>\r\n\t</button>\r\n\t<input\r\n\t\tangular-mydatepicker\r\n\t\tclass=\"datePicker__window-value\"\r\n\t\t#DatePicker=\"angular-mydatepicker\"\r\n\t\tname=\"DatePicker\"\r\n\t\t[placeholder]=\"placeHolderValue\"\r\n\t\t[options]=\"datePickerOptions\"\r\n\t\t[(ngModel)]=\"selectedDate\"\r\n\t\t(dateChanged)=\"onDateChanged($event)\"\r\n\t\t(click)=\"DatePicker.toggleCalendar()\"\r\n\t/>\r\n\t<!-- clear date button -->\r\n\t<button\r\n\t\tclass=\"datePicker__clear\"\r\n\t\t*ngIf=\"selectedDate\"\r\n\t\t[style.color]=\"clearIconColor\"\r\n\t\t(click)=\"clear()\"\r\n\t\t[title]=\"labelClear\"\r\n\t>\r\n\t\t<span class=\"sr-only\">{{ labelClear }}</span>\r\n\t\t<fa-icon [icon]=\"clearIcon\"></fa-icon>\r\n\t</button>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AngularMyDatePickerModule } from 'angular-mydatepicker';\r\nimport { datePickerComponent } from './date-picker/date-picker.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n//directives\r\n\r\nexport const DATE_PICKER_DIRECTIVES = [datePickerComponent];\r\n\r\nexport const DATE_PICKER_IMPORTS = [\r\n\tAngularMyDatePickerModule,\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tFontAwesomeModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: DATE_PICKER_DIRECTIVES,\r\n\timports: DATE_PICKER_IMPORTS,\r\n\texports: DATE_PICKER_DIRECTIVES\r\n})\r\nexport class DatePickerModule {}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\n\r\nimport { faAngleDown, IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Component({\r\n\tselector: 'porcelain-multiselect',\r\n\ttemplateUrl: './multiselect.component.html',\r\n\tstyleUrls: ['./multiselect.component.scss']\r\n})\r\nexport class MultiSelectComponent implements OnInit {\r\n\treadonly faAngleDown: IconDefinition = faAngleDown;\r\n\tisOpen: boolean = false;\r\n\r\n\t/**\r\n\t * sends the selected values in a single string separated by comma\r\n\t * */\r\n\t@Output() public userEnteredInputBoxValue: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t * sends only  selected Array to user\r\n\t *\r\n\t * */\r\n\t@Output() public SelectedArrayItems: EventEmitter<Array<any>> = new EventEmitter<Array<any>>();\r\n\r\n\t/**\r\n\t * Default Label string displayed\r\n\t * */\r\n\t@Input() public selectedLabel: string = '';\r\n\r\n\t/**\r\n\t * Displays placeholder value by default\r\n\t *\r\n\t * */\r\n\t@Input() public selectedLabelPlaceholder: string = 'select';\r\n\r\n\t/*{ id: 1, name: 'apple', isSelected: false },\r\n\t\t{ id: 2, name: 'banana', isSelected: false }  Data format for multiselect\r\n\t\t*/\r\n\r\n\t/**\r\n\t * The Input List item to be show. NOTE VERY IMPORTANT!!\r\n\t * The input should Array of objects with A MANDATORY @field isSelected\r\n\t * like [{name:something, isSelected:false}]\r\n\t * */\r\n\t@Input() public listItems: any[] = [];\r\n\r\n\t/**\r\n\t * The label Prop to be displayed. By default set to name\r\n\t */\r\n\t@Input() public LabelProp: string = 'name';\r\n\tpublic initialPlaceHolder: string = '';\r\n\tpublic focusToggle: boolean = false;\r\n\tconstructor(public eRef: ElementRef) {}\r\n\r\n\tpublic toggleOpen() {\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tthis.open();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic open(): this {\r\n\t\tthis.isOpen = true;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dropdown\r\n\t */\r\n\tpublic close(): this {\r\n\t\tthis.isOpen = false;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tpublic ngOnInit(): void {\r\n\t\tthis.initialPlaceHolder = this.selectedLabel;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * Display no list separation if all are selected or none are selected\r\n\t * @param event\r\n\t * @param index\r\n\t */\r\n\r\n\tpublic allOrNoneSelected(): boolean {\r\n\t\tvar selectedLength = this.listItems.filter(x => x.isSelected);\r\n\t\tvar unselectedLength = this.listItems.filter(x => !x.isSelected);\r\n\t\tif (selectedLength.length != 0 && unselectedLength.length != 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * On user selection emit array and form the string\r\n\t * @param event\r\n\t * @param index\r\n\t */\r\n\tpublic onUserselection(event: any, index): void {\r\n\t\tvar SelectedItemsArray = this.listItems.map(x => x).filter(x => x.isSelected);\r\n\t\tthis.SelectedArrayItems.emit(SelectedItemsArray);\r\n\t\t//emit selected values\r\n\t\tvar selectedValueprops = this.listItems.filter(x => x.isSelected).map(x => x[this.LabelProp]);\r\n\r\n\t\tlet selectedValues =\r\n\t\t\tselectedValueprops.length > 1\r\n\t\t\t\t? selectedValueprops.join(', ')\r\n\t\t\t\t: selectedValueprops.toString();\r\n\t\tthis.userEnteredInputBoxValue.emit(selectedValues);\r\n\t\t//display values\r\n\t\tthis.selectedLabel = selectedValues == '' ? this.selectedLabelPlaceholder : selectedValues;\r\n\t}\r\n\r\n\t/**\r\n\t * reset and uncheck boxes\r\n\t * */\r\n\tpublic resetFunctionality(): void {\r\n\t\tthis.listItems.forEach(x => {\r\n\t\t\tx.isSelected = false;\r\n\t\t});\r\n\t\tthis.selectedLabel = this.selectedLabelPlaceholder;\r\n\t}\r\n\tpublic placeHolderStyle(): any {\r\n\t\treturn this.selectedLabel == this.initialPlaceHolder ? '#9EA6BA' : '#303741';\r\n\t}\r\n}\r\n","<div class=\"porcelain-multiselect-content\">\r\n\t<label\r\n\t\tclass=\"porcelain-toolbar-select__toggle\"\r\n\t\t(click)=\"toggleOpen()\"\r\n\t\t[class.porcelain-multiselect-items]=\"listItems.length > 0\"\r\n\t>\r\n\t\t<span class=\"porcelain-toolbar-select__toggle-label\" [style.color]=\"placeHolderStyle()\">\r\n\t\t\t<porcelain-truncate [value]=\"selectedLabel\"></porcelain-truncate>\r\n\t\t</span>\r\n\t\t<span class=\"porcelain-toolbar-select__toggle-caret\">\r\n\t\t\t<fa-icon [icon]=\"faAngleDown\"></fa-icon>\r\n\t\t</span>\r\n\t</label>\r\n\r\n\t<div *ngIf=\"isOpen\" class=\"select__items\">\r\n\t\t<div *ngIf=\"listItems.length > 0\">\r\n\t\t\t<ng-container *ngFor=\"let item of listItems; let j = index\">\r\n\t\t\t\t<ng-container *ngIf=\"item.isSelected\">\r\n\t\t\t\t\t<div class=\"multiselect-list-items select_item\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tstyle=\"cursor:pointer\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"item.isSelected\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onUserselection(item, j)\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<span class=\"checkbox-content\">\r\n\t\t\t\t\t\t\t\t{{ item[LabelProp] }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<div [class.porcelain-multiselect-border]=\"allOrNoneSelected()\"></div>\r\n\t\t<div>\r\n\t\t\t<ng-container *ngFor=\"let item of listItems; let i = index\">\r\n\t\t\t\t<ng-container *ngIf=\"!item.isSelected\">\r\n\t\t\t\t\t<div class=\"multiselect-list-items\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tstyle=\"cursor:pointer\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"item.isSelected\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onUserselection(item, i)\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<span class=\"checkbox-content\">\r\n\t\t\t\t\t\t\t\t{{ item[LabelProp] }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MultiSelectComponent } from './multiselect/multiselect.component';\r\nimport { TruncateModule } from '../truncate/truncate.module';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\nexport const MULTISELECT_DIRECTIVES = [MultiSelectComponent];\r\nexport const MULTISELECT_IMPORTS = [CommonModule, FontAwesomeModule, TruncateModule, FormsModule];\r\n\r\n@NgModule({\r\n\tdeclarations: MULTISELECT_DIRECTIVES,\r\n\timports: MULTISELECT_IMPORTS,\r\n\texports: MULTISELECT_DIRECTIVES\r\n})\r\nexport class MultiSelectModule {}\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tHostBinding,\r\n\tInput,\r\n\tHostListener,\r\n\tElementRef,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tSimpleChanges,\r\n\tOnChanges,\r\n\tOnDestroy\r\n} from '@angular/core';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { clamp } from '../../shared/utilities/arrays/clamp';\r\nimport { Loggable } from '../../Loggable';\r\nimport { TranslationService } from '../../services/translation/translation.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n\tselector: 'porcelain-auto-complete',\r\n\ttemplateUrl: './auto-complete.component.html',\r\n\tstyleUrls: ['./auto-complete.component.scss'],\r\n\thost: {\r\n\t\t'[class.autocomplete--has-focus]': 'hasFocus'\r\n\t}\r\n})\r\nexport class AutoCompleteComponent extends Loggable implements OnInit, OnChanges, OnDestroy {\r\n\t/**\r\n\t * Icon for the clear button\r\n\t */\r\n\t@Input() public clearIcon = faTimesCircle;\r\n\r\n\t/**\r\n\t * Color for the clear icon.  By default, #9dacba\r\n\t */\r\n\t@Input() public clearIconColor: string = '#9dacba';\r\n\r\n\t/**\r\n\t * Name of the component, used when the Loggable behaviors are used.\r\n\t */\r\n\treadonly name = 'AutoCompleteComponent';\r\n\r\n\t/**\r\n\t * The current user input box value\r\n\t */\r\n\t@Input() public inputBoxValue: string = '';\r\n\r\n\t/**\r\n\t * debounce Time controls time Eventmitter fire\r\n\t * @param debounceTime\r\n\t */\r\n\t@Input() public debounceTime: number = 1000;\r\n\r\n\t/**\r\n\t * Input Box Value Change behaviour subject will emit user value change based on ngmodelchange\r\n\t */\r\n\tpublic inputBoxBehaviorSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n\t/**\r\n\t * Array of items that hold AutoComplete Items. Strictly uses strings only\r\n\t */\r\n\t@Input() public AutoCompleteitems: Array<string> = new Array<string>();\r\n\r\n\t/**\r\n\t * If autocomplete items are fetched, then spinner is shown\r\n\t * @param:AutoCompleteLoadingSpinner\r\n\t */\r\n\t@Input() public AutoCompleteLoadingSpinner: boolean = false;\r\n\r\n\t/**\r\n\t * Property is used to enable internal filter. To disable set to false. For example,\r\n\t * if Filter is disabled\r\n\t * @param isFilterEnabled\r\n\t */\r\n\t@Input() public isFilterEnabled: boolean = true;\r\n\r\n\t/**\r\n\t * Placeholder value shown in the input when query\r\n\t * is the empty string.\r\n\t */\r\n\t@Input() public placeholder: string = '';\r\n\r\n\t/**\r\n\t * The throttled or debounced user selected value emit\r\n\t */\r\n\t@Output() public userEnteredInputBoxValue: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t * Event emitter that emits whenever a item in the autocomplete List is selected. OPTIONAL\r\n\t */\r\n\t@Output()\r\n\tpublic autoCompleteSelectedItem: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t * The current filtered set of items.  Force repopulation with applyFilter().\r\n\t */\r\n\tfilteredItems: any[] = [];\r\n\r\n\t/**\r\n\t * Controls the display of the border.  Set to false to eliminate borders.\r\n\t */\r\n\t@HostBinding('class.autocomplete--has-border')\r\n\t@Input()\r\n\tborder: boolean = true;\r\n\r\n\t/**\r\n\t * Boolean that tracks if the query input has focus.\r\n\t */\r\n\tpublic hasFocus: boolean = false;\r\n\r\n\t/**\r\n\t * The index of the currently highlighted item in filteredItems\r\n\t */\r\n\thighlightedIndex: number = -1;\r\n\r\n\t/**\r\n\t * When true, the dropdown will be displayed; if false, the dropdown will not be displayed.\r\n\t */\r\n\tpublic isOpen: boolean = false;\r\n\r\n\t/**\r\n\t * Accessibility label for the clear button.\r\n\t */\r\n\t@Input() public labelClear: string = 'Clear';\r\n\r\n\t/**\r\n\t * Shown when the user has filtered too much, and no valid items remain in filteredItems.\r\n\t */\r\n\t@Input() public labelNoItemsFound: string = 'No results found.';\r\n\r\n\t/**\r\n\t * Placeholder for text input when search field is empty\r\n\t */\r\n\t@Input() public labelPlaceholder: string = 'type to search...';\r\n\r\n\t/**\r\n\t * Accessibility label for dropdown icon.\r\n\t */\r\n\t@Input() public labelSelect: string = 'Select';\r\n\r\n\t/**\r\n\t * Index of the selected item with respect to the `items` array.\r\n\t */\r\n\tpublic selectedIndex: number = -1;\r\n\r\n\tconstructor(\r\n\t\tprivate element: ElementRef<HTMLElement>,\r\n\t\tprivate translationService: TranslationService\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.translationService.getTranslations().subscribe(\r\n\t\t\tTranslationService.translate(this, {\r\n\t\t\t\tlabel_TypeToSearch: 'labelPlaceholder',\r\n\t\t\t\tlabel_Select: 'labelSelect',\r\n\t\t\t\tlabel_NoItemsFound: 'labelNoItemsFound',\r\n\t\t\t\tlabel_Clear: 'labelClear'\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the component state to blank query and resets the filteredItems array.\r\n\t */\r\n\tpublic clear() {\r\n\t\tthis.inputBoxValue = '';\r\n\t\tthis.debounceEmit('');\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the currently selected item. Returns null when no item is selected.\r\n\t */\r\n\tget value(): string {\r\n\t\treturn this.selectedIndex > -1 ? this.AutoCompleteitems[this.selectedIndex] : null;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the selectedIndex by reference to selected item.\r\n\t */\r\n\t@Input()\r\n\tset value(value: string) {\r\n\t\tthis.selectedIndex = this.AutoCompleteitems.indexOf(value);\r\n\t\tif (this.selectedIndex > -1) {\r\n\t\t\tthis.inputBoxValue = this.value;\r\n\t\t\tthis.autoCompleteSelectedItem.emit(this.value);\r\n\t\t\tthis.debounceEmit(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dropdown when document receives a stray click.\r\n\t * @param event Event emitted when the document is clicked.\r\n\t */\r\n\t@HostListener('document:click', ['$event'])\r\n\tonStrayClick(event): void {\r\n\t\tif (!this.element.nativeElement.contains(event.target)) {\r\n\t\t\tthis.setOpen(false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Searches the `items` array for items that match the query.\r\n\t * Result is placed at this.filteredItems\r\n\t */\r\n\tapplyFilter(): this {\r\n\t\tthis.filteredItems = this.AutoCompleteitems.filter(item => {\r\n\t\t\treturn (item as string).toLowerCase().indexOf(this.inputBoxValue.trim().toLowerCase()) > -1;\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles keyup events when the user types in the field. Binds special keys\r\n\t * to create and maintain traditional key behaviors expected of a select control.\r\n\t * @param event Event object emitted by the keyup\r\n\t */\r\n\tkeyUp(event: KeyboardEvent) {\r\n\t\t//Check focus exists\r\n\t\tif (this.hasFocus) {\r\n\t\t\tthis.applyFilter();\r\n\r\n\t\t\tlet key = event.key,\r\n\t\t\t\tlastIndex = this.filteredItems.length - 1;\r\n\r\n\t\t\t// If there's only one item in the filteredItems,\r\n\t\t\t// highlight it so the user can select it with Enter\r\n\t\t\tif (this.filteredItems.length === 1) {\r\n\t\t\t\tthis.highlightedIndex = 0;\r\n\t\t\t}\r\n\r\n\t\t\t//check if open\r\n\t\t\tif (this.isOpen) {\r\n\t\t\t\tif ('ArrowUp' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(\r\n\t\t\t\t\t\tMath.max(0, this.highlightedIndex - 1)\r\n\t\t\t\t\t).scrollToHighlighted();\r\n\t\t\t\t} else if ('ArrowDown' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(\r\n\t\t\t\t\t\tMath.min(lastIndex, this.highlightedIndex + 1)\r\n\t\t\t\t\t).scrollToHighlighted();\r\n\t\t\t\t} else if (~['Enter'].indexOf(key)) {\r\n\t\t\t\t\tthis.setSelectedIndex(this.highlightedIndex).setOpen(false);\r\n\t\t\t\t} else if ('Home' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(0).scrollToHighlighted();\r\n\t\t\t\t} else if ('End' == key) {\r\n\t\t\t\t\tthis.setHighlightedIndex(lastIndex).scrollToHighlighted();\r\n\t\t\t\t} else if ('Escape' == key) {\r\n\t\t\t\t\tif (this.inputBoxValue === '') {\r\n\t\t\t\t\t\tthis.setOpen(false);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.inputBoxValue = '';\r\n\t\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//if closed\r\n\t\t\telse {\r\n\t\t\t\t//opens only if enter is clicked\r\n\t\t\t\tif (~['Enter'].indexOf(key)) {\r\n\t\t\t\t\tthis.setHighlightedIndex(clamp(0, this.selectedIndex, lastIndex))\r\n\t\t\t\t\t\t.setOpen(true)\r\n\t\t\t\t\t\t.scrollToHighlighted();\r\n\t\t\t\t} else if ('ArrowUp' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(Math.max(0, this.selectedIndex - 1));\r\n\t\t\t\t} else if ('ArrowDown' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(Math.min(lastIndex, this.selectedIndex + 1));\r\n\t\t\t\t} else if ('Home' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(0);\r\n\t\t\t\t} else if ('End' == key) {\r\n\t\t\t\t\tthis.setSelectedIndex(lastIndex);\r\n\t\t\t\t} else if ('Escape' == key) {\r\n\t\t\t\t\tif (this.inputBoxValue !== '') {\r\n\t\t\t\t\t\tthis.inputBoxValue = '';\r\n\t\t\t\t\t\tthis.applyFilter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// These keys should have their default actions stopped.\r\n\t\t\t// Calling stopPropagation() and returning false will ensure a stopped event.\r\n\t\t\tconst swallowKeys = ['ArrowUp', 'ArrowDown', 'Enter', 'Space', 'Home', 'End', 'Escape', ' '];\r\n\t\t\tif (~swallowKeys.indexOf(key)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tevent.stopPropagation();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set up the component after the Inputs are mounted.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tthis.filteredItems = this.AutoCompleteitems.slice();\r\n\r\n\t\t//initialize and listen for input box value changes\r\n\t\tthis.inputBoxBehaviorSubject.pipe(debounceTime(this.debounceTime)).subscribe(uservalue => {\r\n\t\t\tthis.userEnteredInputBoxValue.emit(uservalue);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (changes['AutoCompleteitems']) {\r\n\t\t\tthis.filteredItems = this.AutoCompleteitems.slice();\r\n\t\t\tthis.applyFilter();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic debounceEmit = (selectevalue: string): void => {\r\n\t\tthis.inputBoxBehaviorSubject.next(selectevalue);\r\n\t};\r\n\r\n\t/**\r\n\t * Calculates and scrolls the item dropdown to the current highlightedIndex.\r\n\t */\r\n\tpublic scrollToHighlighted(): this {\r\n\t\tlet itemElements = this.element.nativeElement.querySelectorAll('.select__item');\r\n\t\tif (itemElements && itemElements[this.highlightedIndex] /** && elementNotInView */) {\r\n\t\t\tlet childElement = itemElements[this.highlightedIndex] as HTMLElement;\r\n\t\t\tlet parentElement = childElement.parentElement;\r\n\r\n\t\t\tconst bounds = {\r\n\t\t\t\t// distance from top of parent to top of option element\r\n\t\t\t\telementTop: childElement.offsetTop,\r\n\r\n\t\t\t\t// distance from top of parent to bottom of option element\r\n\t\t\t\telementBottom: childElement.offsetTop + childElement.offsetHeight,\r\n\r\n\t\t\t\t// top of parent current scroll\r\n\t\t\t\tscrollTop: parentElement.scrollTop,\r\n\r\n\t\t\t\t// bottom of parent current scroll\r\n\t\t\t\tscrollBottom: parentElement.scrollTop + parentElement.offsetHeight\r\n\t\t\t};\r\n\r\n\t\t\t// Because of animations, and other UI painting, set this to execute at the end of the\r\n\t\t\t// current call stack.  Attempting to change scroll position too soon will result\r\n\t\t\t// in errors.\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\t// If the parent is taller than the child,\r\n\t\t\t\t// it is safe to attempt scroll-into-view behaviors.\r\n\t\t\t\tif (parentElement.offsetHeight > childElement.offsetHeight) {\r\n\t\t\t\t\t// if any part of the element is below the scroll window\r\n\t\t\t\t\tif (bounds.elementBottom > bounds.scrollBottom) {\r\n\t\t\t\t\t\tparentElement.scrollTop += bounds.elementBottom - bounds.scrollBottom;\r\n\t\t\t\t\t\t// if any part of the element is above the scroll window\r\n\t\t\t\t\t} else if (bounds.elementTop < bounds.scrollTop) {\r\n\t\t\t\t\t\tparentElement.scrollTop -= bounds.scrollTop - bounds.elementTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the status of focus.\r\n\t * @param focus Boolean. Set to true when the component gains focus.\r\n\t */\r\n\tpublic setFocus(focus: boolean): this {\r\n\t\tthis.hasFocus = focus;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the highlighted item within the filteredItems array.\r\n\t * @param idx Index of the highlighted item (within filteredItems array).\r\n\t */\r\n\tpublic setHighlightedIndex(idx: number) {\r\n\t\tthis.highlightedIndex = idx;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Opens or closes the suggestion dropdown.\r\n\t * @param isOpen Boolean value for the desired state of the control.\r\n\t */\r\n\tpublic setOpen(isOpen: boolean): this {\r\n\t\tthis.isOpen = isOpen;\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.applyFilter();\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Tracks the index of the selected item. Sets the value,\r\n\t * which locates the filtered item in the items array.\r\n\t * @param selectedFilteredIndex The index of the selected item in the filteredItems array\r\n\t */\r\n\tpublic setSelectedIndex(selectedFilteredIndex: number) {\r\n\t\tthis.info('setSelectedIndex(selectedFilteredIndex)', { selectedFilteredIndex });\r\n\t\t// the this.value setter will find the item in the items array\r\n\t\tthis.value = this.filteredItems[selectedFilteredIndex];\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the isOpen property by negation.\r\n\t */\r\n\tpublic toggleOpen() {\r\n\t\tthis.setOpen(!this.isOpen);\r\n\t}\r\n\tngOnDestroy(): void {\r\n\t\t//unsubscribe Rxjs behaviour subject to prevent memory leaks\r\n\t\tthis.inputBoxBehaviorSubject.unsubscribe();\r\n\t}\r\n}\r\n","<div class=\"autocomplete__window\">\r\n\t<input\r\n\t\ttype=\"text\"\r\n\t\tclass=\"autocomplete__window-value\"\r\n\t\t[(ngModel)]=\"inputBoxValue\"\r\n\t\t(ngModelChange)=\"debounceEmit($event)\"\r\n\t\t[placeholder]=\"placeholder || labelPlaceholder\"\r\n\t\t[class.autocomplete__window-value--placeholder]=\"inputBoxValue === ''\"\r\n\t\t(focus)=\"setOpen(true).setFocus(true)\"\r\n\t\t(keypress)=\"setOpen(true)\"\r\n\t\t(blur)=\"setFocus(false)\"\r\n\t\t(keyup)=\"keyUp($event)\"\r\n\t/>\r\n\r\n\t<button\r\n\t\tclass=\"autocomplete__window-action\"\r\n\t\t*ngIf=\"inputBoxValue !== ''\"\r\n\t\t[style.color]=\"clearIconColor\"\r\n\t\t(click)=\"clear()\"\r\n\t>\r\n\t\t<span class=\"sr-only\">{{ labelClear }}</span>\r\n\t\t<fa-icon [icon]=\"clearIcon\"></fa-icon>\r\n\t</button>\r\n</div>\r\n\r\n<ul class=\"autocomplete__items\" *ngIf=\"isOpen\">\r\n\t<li class=\"autocomplete__no-results\" *ngIf=\"filteredItems.length === 0\">\r\n\t\t<ng-container *ngIf=\"!AutoCompleteLoadingSpinner\">\r\n\t\t\t{{ labelNoItemsFound }}\r\n\t\t</ng-container>\r\n\t</li>\r\n\t<li\r\n\t\tclass=\"autocomplete__item\"\r\n\t\t*ngFor=\"let item of filteredItems; index as idx\"\r\n\t\t(mouseover)=\"setHighlightedIndex(idx)\"\r\n\t\t(click)=\"setSelectedIndex(idx).setOpen(false)\"\r\n\t\t[title]=\"item\"\r\n\t\t[class.autocomplete__item--highlighted]=\"highlightedIndex == idx\"\r\n\t\t[class.autocomplete__item--selected]=\"selectedIndex == idx\"\r\n\t>\r\n\t\t<span innerHTML=\"{{ item | highlight: inputBoxValue }}\"></span>\r\n\t</li>\r\n\t<li class=\"autocomplete__spinner\" *ngIf=\"AutoCompleteLoadingSpinner\">\r\n\t\t<porcelain-spinner></porcelain-spinner>\r\n\t</li>\r\n</ul>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n////Import Directives\r\nimport { AutoCompleteComponent } from './auto-complete/auto-complete.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { PipesModule } from '../pipes/pipes.module';\r\nimport { SpinnerModule } from '../spinner/spinner.module';\r\n\r\nexport const AUTOCOMPLETE_DIRECTIVES = [AutoCompleteComponent];\r\nexport const AUTOCOMPLETE_IMPORTS = [\r\n\tCommonModule,\r\n\tFormsModule,\r\n\tPipesModule,\r\n\tFontAwesomeModule,\r\n\tSpinnerModule\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: AUTOCOMPLETE_DIRECTIVES,\r\n\timports: AUTOCOMPLETE_IMPORTS,\r\n\texports: AUTOCOMPLETE_DIRECTIVES\r\n})\r\nexport class AutoCompleteModule {}\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-checkbox, p-checkbox',\r\n\ttemplateUrl: './checkbox.component.html',\r\n\tstyleUrls: ['./checkbox.component.scss']\r\n})\r\nexport class CheckboxComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tprivate _checked: boolean;\r\n\r\n\t@Input()\r\n\tget checked(): boolean {\r\n\t\treturn this._checked;\r\n\t}\r\n\r\n\tset checked(checked: boolean) {\r\n\t\tthis._checked = checked;\r\n\t\tthis.checkedChange.emit(this._checked);\r\n\t}\r\n\r\n\t@Output()\r\n\tpublic checkedChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\tcheck() {\r\n\t\tthis.checked = true;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tuncheck() {\r\n\t\tthis.checked = false;\r\n\t\treturn this;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\tthis.checked = !this.checked;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t@Input()\r\n\tdisabled: boolean;\r\n\r\n\tenable() {\r\n\t\tthis.disabled = false;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tdisable() {\r\n\t\tthis.disabled = true;\r\n\t\treturn this;\r\n\t}\r\n}\r\n","<label\r\n\tclass=\"b-contain\"\r\n\t[class.porcelain-checkbox__container--checked]=\"checked\"\r\n\t[class.porcelain-checkbox__container--disabled]=\"disabled\"\r\n>\r\n\t<span class=\"porcelain-checkbox__label\"><ng-content></ng-content></span>\r\n\t<input type=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" #cbx />\r\n\t<div class=\"b-input\"></div>\r\n</label>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\n\r\nexport const CHECKBOX_DIRECTIVES = [CheckboxComponent];\r\nexport const CHECKBOX_IMPORTS = [CommonModule];\r\n\r\n@NgModule({\r\n\tdeclarations: CHECKBOX_DIRECTIVES,\r\n\timports: CHECKBOX_IMPORTS,\r\n\texports: CHECKBOX_DIRECTIVES\r\n})\r\nexport class CheckboxModule {}\r\n","import { Directive, Input, ElementRef, Renderer2, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[bgColorModify]'\r\n})\r\nexport class BackgroundColorDirective {\r\n\t@Input() Index: number;\r\n\t@Input() oddColor: string = '#EDF1F6';\r\n\t@Input() evenColor: string = '#FFFFFF';\r\n\r\n\tconstructor(private _ElementRef: ElementRef, private _renderer: Renderer2) {}\r\n\tngOnInit(): void {}\r\n\r\n\t//onchanges lifecycle hook\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (this.Index % 2 == 0) {\r\n\t\t\t// not safe this.el.nativeElement.style.backgroundColor = this.evencolor;\r\n\t\t\tthis._renderer.setStyle(this._ElementRef.nativeElement, 'background-color', this.evenColor);\r\n\t\t} else {\r\n\t\t\t//not safe this.el.nativeElement.style.backgroundColor = this.oddcolor;\r\n\t\t\tthis._renderer.setStyle(this._ElementRef.nativeElement, 'background-color', this.oddColor);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-header-item',\r\n\ttemplateUrl: './tableview-header-item.component.html',\r\n\tstyleUrls: ['./tableview-header-item.component.scss']\r\n})\r\nexport class TableviewHeaderItemComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list-header__cell'].join(' ');\r\n\r\n\t@HostBinding('class.list-header__cell--pad-all')\r\n\t@Input()\r\n\tpadAll: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-left')\r\n\t@Input()\r\n\tpadLeft: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-right')\r\n\t@Input()\r\n\tpadRight: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-bottom')\r\n\t@Input()\r\n\tpadBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-header__cell--pad-top')\r\n\t@Input()\r\n\tpadTop: boolean = false;\r\n\r\n\tprivate _width: number = 1 / 1;\r\n\r\n\t@Input('width')\r\n\tget width(): number {\r\n\t\treturn this._width;\r\n\t}\r\n\tset width(width: number) {\r\n\t\tthis._width = width;\r\n\t}\r\n\r\n\t@HostBinding('style.width')\r\n\tget widthStyle(): string {\r\n\t\treturn `${this.width * 100}%`;\r\n\t}\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-header',\r\n\ttemplateUrl: './tableview-header.component.html',\r\n\tstyleUrls: ['./tableview-header.component.scss']\r\n})\r\nexport class TableviewHeaderComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-list-body',\r\n\ttemplateUrl: './tableview-list-body.component.html',\r\n\tstyleUrls: ['./tableview-list-body.component.scss']\r\n})\r\nexport class TableviewListBodyComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-list-item-cell',\r\n\ttemplateUrl: './tableview-list-item-cell.component.html',\r\n\tstyleUrls: ['./tableview-list-item-cell.component.scss']\r\n})\r\nexport class TableviewListItemCellComponent implements OnInit {\r\n\t@HostBinding('class')\r\n\tclasses = ['list-item__cell'].join(' ');\r\n\r\n\t@HostBinding('class.list-item__cell--align-top')\r\n\t@Input()\r\n\talignTop: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--align-bottom')\r\n\t@Input()\r\n\talignBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-all')\r\n\t@Input()\r\n\tpadAll: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-left')\r\n\t@Input()\r\n\tpadLeft: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-right')\r\n\t@Input()\r\n\tpadRight: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-bottom')\r\n\t@Input()\r\n\tpadBottom: boolean = false;\r\n\r\n\t@HostBinding('class.list-item__cell--pad-top')\r\n\t@Input()\r\n\tpadTop: boolean = false;\r\n\r\n\tprivate _width: number = 1 / 1;\r\n\r\n\t@Input('width')\r\n\tget width(): number {\r\n\t\treturn this._width;\r\n\t}\r\n\tset width(width: number) {\r\n\t\tthis._width = width;\r\n\t}\r\n\r\n\t@HostBinding('style.width')\r\n\tget widthStyle(): string {\r\n\t\treturn `${this.width * 100}%`;\r\n\t}\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<div class=\"list-item-cell__inner\">\r\n\t<ng-content></ng-content>\r\n</div>\r\n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { BackgroundColorDirective } from '../color-directive/background-color.directive';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-list-item',\r\n\ttemplateUrl: './tableview-list-item.component.html',\r\n\tstyleUrls: ['./tableview-list-item.component.scss']\r\n})\r\nexport class TableviewListItemComponent implements OnInit {\r\n\t@Input() ElementIndex: number = 0;\r\n\r\n\t@ViewChild(BackgroundColorDirective, { static: false })\r\n\tpublic bgColorforListitem: BackgroundColorDirective;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<div class=\"list-item__inner\" bgColorModify [Index]=\"ElementIndex\">\r\n\t<ng-content select=\"p-tableview-list-item-cell\"></ng-content>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-list',\r\n\ttemplateUrl: './tableview-list.component.html',\r\n\tstyleUrls: ['./tableview-list.component.scss']\r\n})\r\nexport class TableviewListComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<div class=\"list__items\">\r\n\t<ng-content select=\"p-tableview-list-body\"></ng-content>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-text-header',\r\n\ttemplateUrl: './tableview-text-header.component.html',\r\n\tstyleUrls: ['./tableview-text-header.component.scss']\r\n})\r\nexport class TableviewTextHeaderComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tHostBinding,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostListener\r\n} from '@angular/core';\r\nimport { faSort, faSortDown, faSortUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { SortDirection, SortTuple } from './../../shared/types/Values/Sortoptions';\r\n\r\n@Component({\r\n\tselector: 'p-tableview-sort-header',\r\n\ttemplateUrl: './tableview-sort-header.component.html',\r\n\tstyleUrls: ['./tableview-sort-header.component.scss']\r\n})\r\nexport class TableviewSortHeaderComponent implements OnInit {\r\n\treadonly name = 'SortHeaderComponent';\r\n\r\n\treadonly faSortUp = faSortUp;\r\n\treadonly faSortDown = faSortDown;\r\n\treadonly faSort = faSort;\r\n\r\n\t@HostBinding('class')\r\n\tclasses = 'sort-header';\r\n\r\n\tisNullOrUndefined(subject: any): subject is null | undefined {\r\n\t\treturn subject === null || subject === undefined;\r\n\t}\r\n\r\n\t@HostBinding('class.sort-header--active')\r\n\tget active() {\r\n\t\treturn this.sortKey === this.activeSortKey && !this.isNullOrUndefined(this.activeSortDirection);\r\n\t}\r\n\r\n\t@Input()\r\n\tlabel: string = '';\r\n\r\n\t@Input()\r\n\tsortKey: string = null;\r\n\r\n\t/**\r\n\t * Backing field for activeSortKey getter/setter\r\n\t */\r\n\tprivate _activeSortKey: string;\r\n\r\n\t@Input()\r\n\tget activeSortKey(): string {\r\n\t\treturn this._activeSortKey;\r\n\t}\r\n\r\n\tset activeSortKey(activeSortKey: string) {\r\n\t\tthis._activeSortKey = activeSortKey;\r\n\t\tthis.activeSortKeyChange.emit(this.activeSortKey);\r\n\t}\r\n\r\n\t@Output()\r\n\tactiveSortKeyChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t/**\r\n\t * Backing field for the current sort direction of the application.\r\n\t */\r\n\tprivate _activeSortDirection: SortDirection;\r\n\r\n\t@Input()\r\n\tget activeSortDirection(): SortDirection {\r\n\t\treturn this._activeSortDirection;\r\n\t}\r\n\r\n\tset activeSortDirection(activeSortDirection: SortDirection) {\r\n\t\tthis._activeSortDirection = activeSortDirection;\r\n\t\tthis.activeSortDirectionChange.emit(this.activeSortDirection);\r\n\t}\r\n\r\n\t@Output()\r\n\tactiveSortDirectionChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t/**\r\n\t * @deprecated Change bindings like `(onSortChange)=\"...\"` to `(sortChange)=\"...\"`\r\n\t */\r\n\t@Output()\r\n\tonSortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\t@Output()\r\n\tsortChange: EventEmitter<SortTuple> = new EventEmitter();\r\n\r\n\tconstructor() {\r\n\t\tthis.sortChange.subscribe(sort => this.onSortChange.emit(sort));\r\n\t}\r\n\r\n\tngOnInit() {}\r\n\r\n\t@HostListener('click')\r\n\ttoggleSort() {\r\n\t\tif (this.activeSortKey === this.sortKey) {\r\n\t\t\tif (this.isNullOrUndefined(this.activeSortDirection)) {\r\n\t\t\t\tthis.activeSortDirection = 'asc';\r\n\t\t\t} else if (this.activeSortDirection === 'asc') {\r\n\t\t\t\tthis.activeSortDirection = 'desc';\r\n\t\t\t} else {\r\n\t\t\t\tthis.activeSortDirection = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.activeSortDirection = 'asc';\r\n\t\t\tthis.activeSortKey = this.sortKey;\r\n\t\t}\r\n\t\tthis.sortChange.emit([this.sortKey, this.activeSortDirection]);\r\n\t}\r\n}\r\n","<label class=\"sort-header__box\">\r\n\t<span class=\"sort-header__label\">\r\n\t\t{{ label }}\r\n\t</span>\r\n\t<span class=\"sort-header__sort-direction\" *ngIf=\"!active\">\r\n\t\t<span class=\"sort-header__sort-down\">\r\n\t\t\t<fa-icon [icon]=\"faSortDown\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Not Sorted</span>\r\n\t\t</span>\r\n\t</span>\r\n\t<span class=\"sort-header__sort-direction\" *ngIf=\"active\">\r\n\t\t<span *ngIf=\"activeSortDirection === 'asc'\" class=\"sort-header__sort-up\">\r\n\t\t\t<fa-icon [icon]=\"faSortUp\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Sorted Ascending</span>\r\n\t\t</span>\r\n\t\t<span *ngIf=\"activeSortDirection === 'desc'\" class=\"sort-header__sort-down\">\r\n\t\t\t<fa-icon [icon]=\"faSortDown\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Sorted Descending</span>\r\n\t\t</span>\r\n\t</span>\r\n</label>\r\n","import { Component, OnInit, Input, ContentChild } from '@angular/core';\r\nimport { faSortDown, faSortUp, faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { TableviewSortHeaderComponent } from './../tableview-sort-header/tableview-sort-header.component';\r\n@Component({\r\n\tselector: 'p-tableview-searchSort-header',\r\n\ttemplateUrl: './tableview-searchSortHeader.component.html',\r\n\tstyleUrls: ['./tableview-searchSortHeader.component.scss']\r\n})\r\nexport class TableviewSearchSortHeaderComponent implements OnInit {\r\n\t/**\r\n\t * default state search box is show, set it to false to show sort box first\r\n\t * */\r\n\t@Input() public isSearchEnabled: boolean = true;\r\n\t/**\r\n\t * fontAwesome search toggle Icon\r\n\t * */\r\n\t@Input() public searchIcon: any = faSearch;\r\n\t/**\r\n\t * This controls the search Icon toggle color\r\n\t * */\r\n\t@Input() public searchToggleIconColor: any = '#9dacba';\r\n\t/**\r\n\t * Incase projected sort component is already sorted ascending, this icon will show up.\r\n\t * */\r\n\t@Input() public faSortUpIcon: any = faSortUp;\r\n\t/**\r\n\t * fontAwesome sortUpIcon. This is a toggle sort icon. By default shows up\r\n\t * */\r\n\t@Input() public faSortDownIcon: any = faSortDown;\r\n\t/**\r\n\t * External color control for sort toggle Icon.\r\n\t * */\r\n\t@Input() public sortToggleIconColor: any = 'inherit';\r\n\r\n\t/**\r\n\t * sort component Ref. Note Use only if necessary\r\n\t * */\r\n\t@ContentChild(TableviewSortHeaderComponent, { static: false })\r\n\tpublic sortComponentRef: TableviewSortHeaderComponent = null;\r\n\r\n\tconstructor() {}\r\n\r\n\tpublic ngOnInit(): void {}\r\n\r\n\t/**\r\n\t * determines if projected sort component is ascending or desecding*/\r\n\tpublic isSortAsc(): boolean {\r\n\t\treturn this.sortComponentRef && this.sortComponentRef.activeSortDirection === 'asc'\r\n\t\t\t? true\r\n\t\t\t: false;\r\n\t}\r\n\r\n\t/**\r\n\t * render sort Icon based on sort component\r\n\t * */\r\n\r\n\tpublic getSortIcon(): any {\r\n\t\treturn this.isSortAsc() ? this.faSortUpIcon : this.faSortDownIcon;\r\n\t}\r\n\r\n\t/**\r\n\t *Utility functions to align\r\n\t * */\r\n\tpublic sortAscStyle(): any {\r\n\t\treturn this.isSortAsc() ? '5.5px' : '0';\r\n\t}\r\n\tpublic sortDescStyle(): any {\r\n\t\treturn this.isSortAsc() ? '0' : '5.5px';\r\n\t}\r\n}\r\n","<div class=\"search-sort__header-container\">\r\n\t<ng-container *ngIf=\"isSearchEnabled; then searchContent; else sortContent\"> </ng-container>\r\n\t<ng-template #searchContent>\r\n\t\t<ng-content select=\"p-search-input,porcelain-search-input,porcelain-dropdown-select\">\r\n\t\t</ng-content>\r\n\t\t<span class=\"sort-header__sortIconContainer\" (click)=\"isSearchEnabled = !isSearchEnabled\">\r\n\t\t\t<ng-container *ngIf=\"sortComponentRef && sortComponentRef.active; else inactive\">\r\n\t\t\t\t<span\r\n\t\t\t\t\tclass=\"sort-header__sort-icon\"\r\n\t\t\t\t\t[style.padding-top]=\"sortAscStyle()\"\r\n\t\t\t\t\t[style.padding-bottom]=\"sortDescStyle()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<fa-icon [icon]=\"getSortIcon()\" [styles]=\"{ color: sortToggleIconColor }\"></fa-icon>\r\n\t\t\t\t\t<span class=\"sr-only\">Sort</span>\r\n\t\t\t\t</span>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-template #inactive>\r\n\t\t\t\t<span class=\"sort-header__sort-icon--inActiveState\">\r\n\t\t\t\t\t<fa-icon [icon]=\"faSortDownIcon\" [styles]=\"{ color: sortToggleIconColor }\"></fa-icon>\r\n\t\t\t\t\t<span class=\"sr-only\">Sort</span>\r\n\t\t\t\t</span>\r\n\t\t\t</ng-template>\r\n\t\t</span>\r\n\t</ng-template>\r\n\t<ng-template #sortContent>\r\n\t\t<ng-content select=\"p-tableview-sort-header\"> </ng-content>\r\n\t\t<span class=\"sort-header__search-Icon\" (click)=\"isSearchEnabled = !isSearchEnabled\">\r\n\t\t\t<fa-icon [icon]=\"searchIcon\" [styles]=\"{ color: searchToggleIconColor }\"></fa-icon>\r\n\t\t\t<span class=\"sr-only\">Search</span>\r\n\t\t</span>\r\n\t</ng-template>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TableviewListComponent } from './tableview-list/tableview-list.component';\r\nimport { TableviewListBodyComponent } from './tableview-list-body/tableview-list-body.component';\r\nimport { TableviewListItemComponent } from './tableview-list-item/tableview-list-item.component';\r\nimport { TableviewListItemCellComponent } from './tableview-list-item-cell/tableview-list-item-cell.component';\r\nimport { TableviewHeaderComponent } from './tableview-header/tableview-header.component';\r\nimport { TableviewHeaderItemComponent } from './tableview-header-item/tableview-header-item.component';\r\nimport { TableviewTextHeaderComponent } from './tableview-text-header/tableview-text-header.component';\r\nimport { TableviewSortHeaderComponent } from './tableview-sort-header/tableview-sort-header.component';\r\nimport { TableviewSearchSortHeaderComponent } from './tableview-searchSortHeader/tableview-searchSortHeader.component';\r\nimport { BackgroundColorDirective } from './color-directive/background-color.directive';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\nexport const TABLEVIEW_IMPORTS = [CommonModule, FormsModule, FontAwesomeModule];\r\n\r\nexport const TABLEVIEW_DIRECTIVES = [\r\n\tTableviewListComponent,\r\n\tTableviewListBodyComponent,\r\n\tTableviewListItemComponent,\r\n\tTableviewListItemCellComponent,\r\n\tTableviewHeaderComponent,\r\n\tTableviewHeaderItemComponent,\r\n\tTableviewTextHeaderComponent,\r\n\tTableviewSortHeaderComponent,\r\n\tTableviewSearchSortHeaderComponent,\r\n\tBackgroundColorDirective\r\n];\r\n\r\n@NgModule({\r\n\tdeclarations: TABLEVIEW_DIRECTIVES,\r\n\timports: TABLEVIEW_IMPORTS,\r\n\texports: TABLEVIEW_DIRECTIVES\r\n})\r\nexport class TableviewModule {}\r\n","import { Component, OnInit, Input, EventEmitter, Output, OnDestroy } from '@angular/core';\r\nimport { faChevronDown, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Component({\r\n\tselector: 'porcelain-dropdown-inputbox',\r\n\ttemplateUrl: './dropdown-inputbox.component.html',\r\n\tstyleUrls: ['./dropdown-inputbox.component.scss']\r\n})\r\nexport class DropdownInputboxComponent implements OnInit, OnDestroy {\r\n\t/**\r\n\t * Icon of chevron pointing down, used for the dropdown toggle.\r\n\t */\r\n\t@Input() public dropdownToggleIcon = faChevronDown;\r\n\r\n\t/**\r\n\t * Icon for the clear button\r\n\t */\r\n\t@Input() public clearIcon = faTimesCircle;\r\n\r\n\t/**\r\n\t * Color for the clear icon.  By default, #9dacba\r\n\t */\r\n\t@Input() public clearIconColor: string = '#9dacba';\r\n\r\n\t/**\r\n\t * event emitter to detech clear icon click\r\n\t * */\r\n\t@Output() public clearIconClick: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t * Input string query\r\n\t * */\r\n\t@Input() public query: string = '';\r\n\r\n\t/**\r\n\t * controls whether to show showClearButton\r\n\t * */\r\n\t@Input() public showClearButton: boolean = true;\r\n\r\n\t/**\r\n\t * controls whether to show showClearButton\r\n\t * */\r\n\t@Input() public showDropdownButton: boolean = true;\r\n\r\n\t/**\r\n\t * event to emit input query\r\n\t * */\r\n\t@Output() public queryChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t * Input box focus event, needs to be binded separately to hasfocus using viewchild\r\n\t * */\r\n\r\n\t@Output() public focusState: EventEmitter<boolean> = new EventEmitter<boolean>(false);\r\n\r\n\t/**\r\n\t *\r\n\t *\r\n\t * This is a separate event handler\r\n\t */\r\n\r\n\t@Output() public submitHandler: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\tpublic labelClear: string = '';\r\n\tpublic labelSelect: string = '';\r\n\t@Input() public placeholder: string = '';\r\n\t@Input() public labelPlaceholder: string = '';\r\n\r\n\tpublic setFocus(focus: boolean) {\r\n\t\tthis.focusState.emit(focus);\r\n\t}\r\n\r\n\tpublic clearEventHandler() {\r\n\t\tthis.clearIconClick.emit('');\r\n\t}\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tngOnDestroy(): void {}\r\n\r\n\tpublic submit(value) {\r\n\t\tthis.submitHandler.emit(value);\r\n\t}\r\n\r\n\tpublic handleUserInput(value: string) {\r\n\t\tthis.queryChange.emit(value);\r\n\t}\r\n}\r\n","<div class=\"select__inputwindow\">\r\n\t<input\r\n\t\ttype=\"text\"\r\n\t\tclass=\"select__inputwindow-value\"\r\n\t\t[(ngModel)]=\"query\"\r\n\t\t[placeholder]=\"placeholder || labelPlaceholder\"\r\n\t\t[class.select__input-value--placeholder]=\"query === ''\"\r\n\t\t(ngModelChange)=\"handleUserInput($event)\"\r\n\t\t(keyup.enter)=\"submit($event)\"\r\n\t\t(focus)=\"setFocus(true)\"\r\n\t\t(blur)=\"setFocus(false)\"\r\n\t/>\r\n\r\n\t<ng-container *ngIf=\"showClearButton\">\r\n\t\t<button\r\n\t\t\tclass=\"select__inputwindow-action\"\r\n\t\t\t*ngIf=\"query !== ''\"\r\n\t\t\t[style.color]=\"clearIconColor\"\r\n\t\t\t(click)=\"clearEventHandler()\"\r\n\t\t>\r\n\t\t\t<span class=\"sr-only\">{{ labelClear }}</span>\r\n\t\t\t<fa-icon [icon]=\"clearIcon\"></fa-icon>\r\n\t\t</button>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"showDropdownButton\">\r\n\t\t<button class=\"select__inputwindow-action\">\r\n\t\t\t<span class=\"sr-only\">{{ labelSelect }}</span>\r\n\t\t\t<fa-icon [icon]=\"dropdownToggleIcon\"></fa-icon>\r\n\t\t</button>\r\n\t</ng-container>\r\n\r\n\t<ng-content>\r\n\t\t<!--display only buttons!!!!-->\r\n\t</ng-content>\r\n</div>\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tInput,\r\n\tOutput,\r\n\tEventEmitter,\r\n\tHostBinding,\r\n\tElementRef,\r\n\tHostListener\r\n} from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-dropdown-selectoption, p-dropdown-selectoption',\r\n\ttemplateUrl: './dropdown-select-option.component.html',\r\n\tstyleUrls: ['./dropdown-select-option.component.scss']\r\n})\r\nexport class DropdownSelectOptionComponent implements OnInit {\r\n\treadonly name = 'ToolbarOptionComponent';\r\n\r\n\t@Input() public value: any;\r\n\r\n\t// tslint:disable-next-line: no-output-on-prefix\r\n\t@Output() public onValue: EventEmitter<any> = new EventEmitter();\r\n\r\n\t// tslint:disable-next-line: no-output-on-prefix\r\n\t@Output() public onHover: EventEmitter<boolean> = new EventEmitter();\r\n\r\n\t@HostBinding('class.porcelain-dropdown-selectoption--is-highlighted')\r\n\tisHighlighted: boolean = false;\r\n\r\n\tconstructor(public elementRef: ElementRef) {}\r\n\r\n\tngOnInit() {}\r\n\r\n\t@HostListener('click')\r\n\tselect() {\r\n\t\tthis.onValue.emit(this.value);\r\n\t}\r\n\r\n\t@HostListener('mouseover')\r\n\thoverIn() {\r\n\t\tthis.onHover.emit(true);\r\n\t}\r\n\r\n\t@HostListener('mouseout')\r\n\thoverOut() {\r\n\t\tthis.onHover.emit(false);\r\n\t}\r\n}\r\n","<div>\r\n\t<ng-content></ng-content>\r\n</div>\r\n","import {\r\n\tComponent,\r\n\tOnInit,\r\n\tHostBinding,\r\n\tInput,\r\n\tContentChildren,\r\n\tQueryList,\r\n\tEventEmitter,\r\n\tOutput,\r\n\tElementRef,\r\n\tAfterContentInit,\r\n\tOnDestroy,\r\n\tHostListener,\r\n\tSimpleChanges,\r\n\tOnChanges,\r\n\tAfterContentChecked\r\n} from '@angular/core';\r\nimport { DropdownSelectOptionComponent } from '../dropdown-select-option/dropdown-select-option.component';\r\nimport { Subscription, BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'porcelain-dropdown-select',\r\n\ttemplateUrl: './dropdown-select.component.html',\r\n\tstyleUrls: ['./dropdown-select.component.scss']\r\n})\r\nexport class DropdownSelectComponent\r\n\timplements OnInit, OnDestroy, AfterContentInit, OnChanges, AfterContentChecked {\r\n\t/**\r\n\t * Controls the display of the border.  Set to false to eliminate borders.\r\n\t */\r\n\t@HostBinding('class.combobox--has-border')\r\n\t@Input()\r\n\tpublic border: boolean = true;\r\n\r\n\t/**\r\n\t * A QueryList of the DropdownSelectOptionComponent that populate the options.\r\n\t */\r\n\t@ContentChildren(DropdownSelectOptionComponent)\r\n\tpublic readonly options: QueryList<DropdownSelectOptionComponent>;\r\n\r\n\t/**\r\n\t * Tab Index to enable keyboard navigation\r\n\t */\r\n\t@HostBinding('tabindex')\r\n\treadonly tabIndex = 0;\r\n\r\n\t/**\r\n\t * Boolean state of the dropdown menu. open = true; closed = false\r\n\t */\r\n\t@HostBinding('class.porcelain-dropdown-select--is-open')\r\n\tisOpen: boolean = false;\r\n\r\n\t/**\r\n\t * Boolean. True when the component has focus, otherwise false.\r\n\t */\r\n\tpublic hasFocus = false;\r\n\r\n\t/**\r\n\t * The index of the currently-highlighted option\r\n\t */\r\n\tpublic highlightedIndex: number = -1;\r\n\r\n\t/**\r\n\t * The index of the currently-selected option.\r\n\t */\r\n\tpublic selectedIndex: number = -1;\r\n\r\n\t/**\r\n\t * Array of subscriptions created during the life of the component.\r\n\t */\r\n\tpublic _subscriptions: Subscription[] = [];\r\n\r\n\t/**\r\n\t * Detect focus and blur events from projected components\r\n\t * */\r\n\t@Input() contentFocusState: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null);\r\n\r\n\t/**\r\n\t * Input options state, this is any as we need to now only if option state has changed or not\r\n\t * */\r\n\r\n\t@Input() public optionsListstate: any;\r\n\r\n\t/**\r\n\t * display or hide options\r\n\t * */\r\n\t@Input() public showOptions: boolean = true;\r\n\r\n\t/**\r\n\t * The current value of the component.\r\n\t */\r\n\tpublic _value: any;\r\n\r\n\t@Input()\r\n\tget value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(value) {\r\n\t\tthis._value = value;\r\n\t\tthis.selectedIndex = this.getIndexByValue(value);\r\n\t\tthis.valueChange.emit(this._value);\r\n\t}\r\n\r\n\t@Output()\r\n\tvalueChange = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * Constructs a new ToolbarSelectComponent.\r\n\t * @param elementRef Reference to the component's host element.\r\n\t */\r\n\tconstructor(private elementRef: ElementRef) {}\r\n\r\n\t/**\r\n\t * Manages rxjs subscriptions so that the component doesn't leak memory.\r\n\t * @param subscription Subscription to add to tracking array.\r\n\t */\r\n\taddSubscription(subscription: Subscription): this {\r\n\t\tthis._subscriptions.push(subscription);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the subscriptions for hover and clicks from ToolbarOptionComponent children.\r\n\t */\r\n\tngAfterContentInit(): void {\r\n\t\tthis.options.toArray().forEach((child, idx) => {\r\n\t\t\tthis.addSubscription(\r\n\t\t\t\tchild.onValue.subscribe(newValue => {\r\n\t\t\t\t\tthis.value = newValue;\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t})\r\n\t\t\t).addSubscription(\r\n\t\t\t\tchild.onHover.subscribe(isHover => {\r\n\t\t\t\t\tif (isHover) {\r\n\t\t\t\t\t\tthis.highlightOptionByIndex(idx, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tthis.contentFocusState.subscribe(focus => {\r\n\t\t\tthis.hasFocus = focus;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t *Responds everytime new content is rendered\r\n\t * */\r\n\tngAfterContentChecked(): void {\r\n\t\tthis.options.toArray().forEach((child, idx) => {\r\n\t\t\tthis.addSubscription(\r\n\t\t\t\tchild.onValue.subscribe(newValue => {\r\n\t\t\t\t\tthis.value = newValue;\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t})\r\n\t\t\t).addSubscription(\r\n\t\t\t\tchild.onHover.subscribe(isHover => {\r\n\t\t\t\t\tif (isHover) {\r\n\t\t\t\t\t\tthis.highlightOptionByIndex(idx, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tthis.contentFocusState.subscribe(focus => {\r\n\t\t\tthis.hasFocus = focus;\r\n\t\t});\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges): void {}\r\n\r\n\t/**\r\n\t * Safely closes subscriptions when the component is destroyed.\r\n\t */\r\n\tngOnDestroy(): void {\r\n\t\tthis._subscriptions.forEach(sub => {\r\n\t\t\tif (!sub.closed) {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.contentFocusState.unsubscribe();\r\n\t}\r\n\r\n\t/**\r\n\t * destroys all exising subscriptions\r\n\t * */\r\n\tpublic destoryExistingSubscriptionsListOptions() {\r\n\t\tthis._subscriptions.forEach(sub => {\r\n\t\t\tif (!sub.closed) {\r\n\t\t\t\tsub.unsubscribe();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._subscriptions = [];\r\n\t}\r\n\r\n\t/**\r\n\t * creates new subscriptions\r\n\t * */\r\n\r\n\tpublic createNewSubscriptionsListOptions() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.options.toArray().forEach((child, idx) => {\r\n\t\t\t\tthis.addSubscription(\r\n\t\t\t\t\tchild.onValue.subscribe(newValue => {\r\n\t\t\t\t\t\tthis.value = newValue;\r\n\t\t\t\t\t\tthis.close();\r\n\t\t\t\t\t})\r\n\t\t\t\t).addSubscription(\r\n\t\t\t\t\tchild.onHover.subscribe(isHover => {\r\n\t\t\t\t\t\tif (isHover) {\r\n\t\t\t\t\t\t\tthis.highlightOptionByIndex(idx, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Highlights an option by its position in the `option` array.\r\n\t * @param highlightIndex The index of the option to highlight on screen.\r\n\t * @param scrollToHighlightedOption Boolean, if the option should be scrolled to on highlight.\r\n\t */\r\n\tpublic highlightOptionByIndex(highlightIndex: number, scrollToHighlightedOption: boolean = true) {\r\n\t\tthis.options.toArray().forEach((child, idx, all) => {\r\n\t\t\tchild.isHighlighted = idx === highlightIndex;\r\n\r\n\t\t\t/*\r\n\t\t\t\tMouseover highlighting should not initiate a scroll-to-option,\r\n\t\t\t\tas this seems glitchy and unfamiliar.\r\n\t\t\t*/\r\n\t\t\tif (child.isHighlighted && scrollToHighlightedOption) {\r\n\t\t\t\tconst childElement = child.elementRef.nativeElement,\r\n\t\t\t\t\tparentElement = childElement.parentElement;\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t\tElement dimensions and scroll offsets might not be available immediately,\r\n\t\t\t\t\tso this uses setTimeout to trigger the scroll-into-view behaviors\r\n\t\t\t\t\twhen the element is painted and has dimensions and positions.\r\n\t\t\t\t*/\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst bounds = {\r\n\t\t\t\t\t\t// distance from top of parent to top of option element\r\n\t\t\t\t\t\telementTop: childElement.offsetTop,\r\n\r\n\t\t\t\t\t\t// distance from top of parent to bottom of option element\r\n\t\t\t\t\t\telementBottom: childElement.offsetTop + childElement.offsetHeight,\r\n\r\n\t\t\t\t\t\t// top of parent current scroll\r\n\t\t\t\t\t\tscrollTop: parentElement.scrollTop,\r\n\r\n\t\t\t\t\t\t// bottom of parent current scroll\r\n\t\t\t\t\t\tscrollBottom: parentElement.scrollTop + parentElement.offsetHeight\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// If the parent is taller than the child,\r\n\t\t\t\t\t// it is safe to attempt scroll-into-view behaviors.\r\n\t\t\t\t\tif (parentElement.offsetHeight > childElement.offsetHeight) {\r\n\t\t\t\t\t\t// if any part of the element is below the scroll window\r\n\t\t\t\t\t\tif (bounds.elementBottom > bounds.scrollBottom) {\r\n\t\t\t\t\t\t\tparentElement.scrollTop += bounds.elementBottom - bounds.scrollBottom;\r\n\t\t\t\t\t\t\t// if any part of the element is above the scroll window\r\n\t\t\t\t\t\t} else if (bounds.elementTop < bounds.scrollTop) {\r\n\t\t\t\t\t\t\tparentElement.scrollTop -= bounds.scrollTop - bounds.elementTop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.highlightedIndex = highlightIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the dropdown being open or closed.\r\n\t */\r\n\tpublic toggleOpen() {\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.close();\r\n\t\t} else {\r\n\t\t\tthis.open();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => this.highlightOptionByIndex(this.selectedIndex > -1 ? this.selectedIndex : 0),\r\n\t\t\t\t0\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the dropdown.\r\n\t */\r\n\tpublic open(): this {\r\n\t\tthis.isOpen = true;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dropdown\r\n\t */\r\n\tpublic close(): this {\r\n\t\tthis.isOpen = false;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Called when the component gets focus.  Used to make keyboard navigation make sense.\r\n\t */\r\n\t@HostListener('focus')\r\n\tonFocusIn(): void {\r\n\t\tthis.hasFocus = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Called when the component loses focus.\r\n\t */\r\n\t@HostListener('blur')\r\n\tonFocusOut(): void {\r\n\t\tthis.hasFocus = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes dropdown on stray click\r\n\t * @param event Click event containing the target.\r\n\t */\r\n\t@HostListener('document:click', ['$event'])\r\n\tonClick(event): void {\r\n\t\tif (!this.elementRef.nativeElement.contains(event.target)) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes keyboard presses to enable keyboard navigation.\r\n\t * @param event An event containing details about the key press.\r\n\t */\r\n\t@HostListener('keydown', ['$event'])\r\n\tonDocumentKeyDown(event: KeyboardEvent): void {\r\n\t\tif (this.hasFocus) {\r\n\t\t\t// The tab key should always allow navigation\r\n\t\t\tif (event.key !== 'Tab') {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\t\t\tif (this.isOpen) {\r\n\t\t\t\tif (event.key === 'ArrowDown') {\r\n\t\t\t\t\tthis.highlightedIndex = Math.min(this.options.length - 1, this.highlightedIndex + 1);\r\n\t\t\t\t} else if (event.key === 'ArrowUp') {\r\n\t\t\t\t\tthis.highlightedIndex = Math.max(0, this.highlightedIndex - 1);\r\n\t\t\t\t} else if (event.key === 'Home') {\r\n\t\t\t\t\tthis.highlightedIndex = 0;\r\n\t\t\t\t} else if (event.key === 'End') {\r\n\t\t\t\t\tthis.highlightedIndex = this.options.length - 1;\r\n\t\t\t\t} else if (event.key === 'Enter' || event.key === 'Tab') {\r\n\t\t\t\t\tthis.options.toArray()[this.highlightedIndex].select();\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t} else if (event.key === 'Escape') {\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.highlightedIndex > -1) {\r\n\t\t\t\t\tthis.highlightOptionByIndex(this.highlightedIndex);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Not open, but it is focused\r\n\t\t\t\tconst openKeys = ['Enter', ' ', 'Spacebar'];\r\n\t\t\t\tif (~openKeys.indexOf(event.key)) {\r\n\t\t\t\t\tthis.toggleOpen();\r\n\t\t\t\t} else if (event.key === 'ArrowUp') {\r\n\t\t\t\t\tconst previousIndex = Math.max(0, this.getIndexByValue(this.value) - 1);\r\n\t\t\t\t\tthis.options.toArray()[previousIndex].select();\r\n\t\t\t\t} else if (event.key === 'ArrowDown') {\r\n\t\t\t\t\tconst nextIndex = Math.min(\r\n\t\t\t\t\t\tthis.options.length - 1,\r\n\t\t\t\t\t\tthis.getIndexByValue(this.value) + 1\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.options.toArray()[nextIndex].select();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic ngOnInit(): void {}\r\n\r\n\t/**\r\n\t * Finds the index of a value within the options ToolbarOptionComponent array.\r\n\t * @param value Value to find in the options.\r\n\t */\r\n\tpublic getIndexByValue(value: any) {\r\n\t\treturn this.options ? this.options.map(option => option.value).indexOf(value) : -1;\r\n\t}\r\n}\r\n","<div class=\"select__window\" (click)=\"toggleOpen()\">\r\n\t<ng-content select=\"porcelain-dropdown-selectedtemplate, p-dropdown-selectedtemplate\"></ng-content>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showOptions\">\r\n\t<div class=\"options-container\" *ngIf=\"isOpen\">\r\n\t\t<div class=\"select__items\">\r\n\t\t\t<ng-content select=\"porcelain-dropdown-selectoption, p-dropdown-selectoption\"></ng-content>\r\n\t\t</div>\r\n\t</div>\r\n</ng-container>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'porcelain-dropdown-selectedtemplate, p-dropdown-selectedtemplate',\r\n\ttemplateUrl: './dropdown-selected-template.component.html',\r\n\tstyleUrls: ['./dropdown-selected-template.component.scss']\r\n})\r\nexport class DropdownSelectedTemplateComponent implements OnInit {\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n//import directives\r\nimport { DropdownSelectComponent } from './dropdown-select/dropdown-select.component';\r\nimport { DropdownSelectOptionComponent } from './dropdown-select-option/dropdown-select-option.component';\r\nimport { DropdownSelectedTemplateComponent } from './dropdown-selected-template/dropdown-selected-template.component';\r\nimport { DropdownInputboxComponent } from './dropdown-inputbox/dropdown-inputbox.component';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { PipesModule } from '../pipes/pipes.module';\r\n\r\nexport const DROPDOWNSYSTEM_DIRECTIVES = [\r\n\tDropdownSelectComponent,\r\n\tDropdownSelectOptionComponent,\r\n\tDropdownSelectedTemplateComponent,\r\n\tDropdownInputboxComponent\r\n];\r\n\r\nexport const DROPDOWNSYSTEM_IMPORTS = [CommonModule, FormsModule, PipesModule, FontAwesomeModule];\r\n\r\n@NgModule({\r\n\tdeclarations: DROPDOWNSYSTEM_DIRECTIVES,\r\n\timports: DROPDOWNSYSTEM_IMPORTS,\r\n\texports: DROPDOWNSYSTEM_DIRECTIVES\r\n})\r\nexport class DropdownSystemModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.TranslationService","i2","i4.TruncateComponent","i6.ExpandoComponent","i4","i5.TruncateComponent","i7.SprintfPipe","i3","i5.ExpandoComponent","i6.SprintfPipe","arraySubtract","i4.ExpandoComponent","i5","i6.ToLocaleStringPipe","i7.HighlightPipe","i2.DateRefinerComponent","i3.SimpleRefinerComponent","i4.SimpleRadioRefinerComponent","i5.SearchRefinerComponent","i3.RefinersComponent","i2.SprintfPipe","SearchInputComponent","i1.WindowService","i1","i3.SearchInputComponent","i4.SortHeaderComponent","i5.SearchHeaderComponent","i6.TextHeaderComponent","i5.HighlightPipe","getRandomInt","i1.SkeletonBlockComponent","i2.SkeletonWordComponent","i2.SkeletonLineComponent","i3.TruncateComponent","i5.SpinnerComponent","i6.HighlightPipe","i1.BackgroundColorDirective"],"mappings":"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"}