@huntsman-cancer-institute/input 17.9.3 → 17.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"huntsman-cancer-institute-input.mjs","sources":["../../../projects/input/src/dropdown/dropdown-select-result.component.ts","../../../projects/input/src/dropdown/select-item.ts","../../../projects/input/src/dropdown/messages.ts","../../../projects/input/src/dropdown/dropdown-select.component.ts","../../../projects/input/src/dropdown/template-dropdown.directive.ts","../../../projects/input/src/dropdown/dropdown.service.ts","../../../projects/input/src/dropdown/dropdown.component.ts","../../../projects/input/src/dropdown/dropdown.module.ts","../../../projects/input/src/date/date-validator.ts","../../../projects/input/src/date/date-base.ts","../../../projects/input/src/date/date-date.component.ts","../../../projects/input/src/date/date-date-range.component.ts","../../../projects/input/src/date/date.module.ts","../../../projects/input/src/inline/inline.component.ts","../../../projects/input/src/inline/inline.module.ts","../../../projects/input/src/select/md-select.component.ts","../../../projects/input/src/select/native-select.component.ts","../../../projects/input/src/select/md-multi-select.component.ts","../../../projects/input/src/select/custom-combobox.component.ts","../../../projects/input/src/select/custom-multi-combobox.component.ts","../../../projects/input/src/select/select.module.ts","../../../projects/input/src/search/search.component.ts","../../../projects/input/src/search/search.module.ts","../../../projects/input/src/huntsman-cancer-institute-input.ts"],"sourcesContent":["import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from \"@angular/core\";\r\n\r\nimport {SelectItem} from \"./select-item\";\r\n\r\n@Component({\r\n selector: \"hci-dropdown-select-result\",\r\n template: `\r\n <div class=\"select-results-container\" *ngIf=\"items !== undefined && items.length > 0\" id=\"resultsContainer\">\r\n <div *ngFor=\"let item of items; let i = index;\"\r\n class=\"select-result\" id=\"item-{{i}}\"\r\n (mousedown)=\"onSelected(item)\" [class.selected]=\"isSelected(item)\"\r\n [class.active]=\"i === activeIndex\"\r\n (mouseover)=\"onMouseOver(i)\"\r\n (mouseenter)=\"onHovering($event)\">\r\n <ng-container [ngTemplateOutlet]=\"templateRef\"\r\n [ngTemplateOutletContext]=\"{$item: item, $entity: item.entity, $id: item.id, $index: i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class DropdownSelectResultComponent implements OnInit {\r\n\r\n @Input() items: SelectItem[];\r\n @Input() searchFocused: boolean;\r\n @Input() selectedItems: SelectItem[];\r\n @Input() templateRef: TemplateRef<any>;\r\n @Output() itemSelectedEvent: EventEmitter<any> = new EventEmitter();\r\n activeIndex = 0;\r\n private usingKeys = false;\r\n\r\n ngOnInit() {}\r\n\r\n onSelected(item: SelectItem) {\r\n this.itemSelectedEvent.emit(item);\r\n }\r\n\r\n onMouseOver(index: number) {\r\n if (!this.usingKeys) {\r\n this.activeIndex = index;\r\n }\r\n }\r\n\r\n onHovering(event) {\r\n this.usingKeys = false;\r\n }\r\n\r\n isSelected(currentItem) {\r\n let result = false;\r\n this.selectedItems.forEach(item => {\r\n if (item.id === currentItem.id) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n activeNext() {\r\n if (this.activeIndex >= this.items.length - 1) {\r\n this.activeIndex = this.items.length - 1;\r\n } else {\r\n this.activeIndex++;\r\n }\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n activePrevious() {\r\n if (this.activeIndex - 1 < 0) {\r\n this.activeIndex = 0;\r\n } else {\r\n this.activeIndex--;\r\n }\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n scrollToElement() {\r\n const element = document.getElementById(\"item-\" + this.activeIndex);\r\n const container = document.getElementById(\"resultsContainer\");\r\n\r\n if (element) {\r\n container.scrollTop = element.offsetTop;\r\n }\r\n }\r\n\r\n selectCurrentItem() {\r\n if (this.items[this.activeIndex]) {\r\n this.onSelected(this.items[this.activeIndex]);\r\n this.activeIndex = 0;\r\n }\r\n }\r\n}\r\n","/**\r\n * @description: A model of common data for dropdown components.\r\n * @since 5.0.0\r\n */\r\n\r\nexport interface SelectItem {\r\n id: any;\r\n text: string;\r\n entity?: any;\r\n}\r\n\r\nexport const KEY_CODE = Object.freeze({\r\n DOWN_ARROW: 40,\r\n UP_ARROW: 38,\r\n ENTER: 13,\r\n TAB: 9,\r\n DELETE: 8\r\n});\r\n\r\n\r\n","/**\r\n * A model of common messages for dropdown components.\r\n *\r\n * @since 5.0.0\r\n */\r\nexport class Messages {\r\n\r\n static readonly PARTIAL_COUNT_VAR = \"%PARTIAL_COUNT%\";\r\n static readonly TOTAL_COUNT_VAR = \"%TOTAL_COUNT%\";\r\n\r\n moreResultsMsg?: string;\r\n noResultsMsg?: string;\r\n}\r\n","import {AfterViewInit, Component, Input, TemplateRef, EventEmitter, ViewChild, forwardRef, Output} from \"@angular/core\";\r\nimport {ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\nimport {Observable, of} from \"rxjs\";\r\nimport {debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, tap} from \"rxjs/operators\";\r\n\r\nimport {DropdownSelectResultComponent} from \"./dropdown-select-result.component\";\r\nimport {SelectItem, KEY_CODE} from \"./select-item\";\r\nimport {Messages} from \"./messages\";\r\n\r\nconst VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DropdownSelectComponent),\r\n multi: true\r\n};\r\n\r\nconst noop = () => {};\r\n\r\n@Component({\r\n selector: \"hci-dropdown-select\",\r\n template: `\r\n <div class=\"select-container\">\r\n <ul class=\"form-control\"\r\n [class.simple-selection]=\"!multiple\"\r\n [class.multiple-selection]=\"multiple\"\r\n [class.search-focused]=\"searchFocused\"\r\n [class.readonly]=\"disabled\">\r\n\r\n <ng-container *ngIf=\"!searchFocused || multiple\">\r\n <li *ngFor=\"let item of selectedItems\" class=\"select-selected label label-info\" [class.label]=\"multiple\"\r\n [class.label-info]=\"multiple\">\r\n <span class=\"selected-item-text\">{{item.text}}</span>\r\n <a class=\"select-selection-remove\" (click)=\"removeItem(item)\" *ngIf=\"!disabled\">\r\n <i [class]=\"deleteIcon\" [class.text-info]=\"!multiple\"></i>\r\n </a>\r\n </li>\r\n </ng-container>\r\n\r\n <li class=\"select-input\">\r\n <input #termInput type=\"text\"\r\n [placeholder]=\"getPlaceholder()\"\r\n [formControl]=\"term\"\r\n [class.hideable]=\"isHideable()\"\r\n [style.width]=\"getInputWidth()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (click)=\"showResults()\" *ngIf=\"!disabled\" attr.aria-label=\"{{getPlaceholder()}}\"/>\r\n </li>\r\n </ul>\r\n <span class=\"icon-drop-menu\" *ngIf=\"inputState===0\" (click)=\"showResults()\">\r\n <span class=\"after\"></span>\r\n </span>\r\n <div class=\"results-container\" *ngIf=\"resultsVisible\">\r\n <span class=\"results-msg\" *ngIf=\"listedData && (listedData.length + selectedItems.length) < resultsCount\">\r\n {{getCountMessage()}}\r\n </span>\r\n <span class=\"results-msg no-results-msg\" *ngIf=\"searchFocused && listedData && listedData.length === 0\">\r\n {{messages && messages.noResultsMsg ? messages.noResultsMsg : NO_RESULTS_MSG}}\r\n </span>\r\n <hci-dropdown-select-result #results\r\n [selectedItems]=\"selectedItems\"\r\n [items]=\"listedData\"\r\n (itemSelectedEvent)=\"onItemSelected($event)\"\r\n [templateRef]=\"templateRef\"\r\n [searchFocused]=\"searchFocused\"></hci-dropdown-select-result>\r\n </div>\r\n </div>\r\n `,\r\n providers: [VALUE_ACCESSOR],\r\n host: {class: \"flex-grow-1\"}\r\n})\r\nexport class DropdownSelectComponent implements AfterViewInit, ControlValueAccessor {\r\n\r\n MORE_RESULTS_MSG = \"Showing \" + Messages.PARTIAL_COUNT_VAR + \" of \" + Messages.TOTAL_COUNT_VAR + \" results.\";\r\n NO_RESULTS_MSG = \"No results found\";\r\n\r\n @Input() messages: Messages = {\r\n moreResultsMsg: this.MORE_RESULTS_MSG,\r\n noResultsMsg: this.NO_RESULTS_MSG\r\n };\r\n\r\n @Input() dataProvider: (item: string, selected?: any[]) => Observable<any[]>;\r\n @Input() selectedProvider: (ids: any[]) => Observable<any[]>;\r\n @Input() selectItemAdapter: (entity: any) => SelectItem;\r\n @Input() referenceMode: \"id\" | \"entity\" = \"id\";\r\n @Input() placeholder = \"\";\r\n @Input() disabled = false;\r\n @Input() multiple = false;\r\n @Input() clientMode = false;\r\n @Input() deleteIcon = \"fas fa-times-circle\";\r\n @Input() inputState = 2; // selectIcon controller: 0->with selectIcon 2->without selectIcon\r\n @Input() resultsCount;\r\n @Input() searchDelay = 100;\r\n\r\n @Output() select: EventEmitter<SelectItem> = new EventEmitter<SelectItem>();\r\n @Output() remove: EventEmitter<SelectItem> = new EventEmitter<SelectItem>();\r\n\r\n @ViewChild(\"results\", {static: false}) results: DropdownSelectResultComponent;\r\n\r\n onTouchedCallback: () => void = noop;\r\n onChangeCallback: (_: any) => void = noop;\r\n templateRef: TemplateRef<any>;\r\n term = new UntypedFormControl();\r\n searchFocused = false;\r\n resultsVisible = false;\r\n listedData: SelectItem[];\r\n modifiedData: SelectItem[];\r\n selectedItems: SelectItem[] = [];\r\n\r\n @ViewChild(\"termInput\", {static: false}) private termInput;\r\n\r\n private placeholderSelected = \"\";\r\n\r\n ngAfterViewInit() {\r\n this.subscribeToChangesAndLoadDataFromObservable();\r\n }\r\n\r\n onItemSelected(item: SelectItem) {\r\n if (this.multiple) {\r\n this.selectedItems.push(item);\r\n const index = this.listedData.indexOf(item, 0);\r\n if (index > -1) {\r\n this.listedData.splice(index, 1);\r\n }\r\n } else {\r\n this.selectedItems.length = 0;\r\n this.selectedItems.push(item);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.term.patchValue(\"\", {emitEvent: false});\r\n setTimeout(() => this.focusInput(), 1);\r\n this.resultsVisible = false;\r\n this.select.emit(item);\r\n if (!this.multiple) {\r\n this.placeholderSelected = item.text;\r\n }\r\n }\r\n\r\n focusInput() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.resultsVisible = false;\r\n }\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n writeValue(selectedValues: any): void {\r\n if (selectedValues) {\r\n if (this.referenceMode === \"id\") {\r\n this.populateItemsFromIds(selectedValues);\r\n } else {\r\n this.populateItemsFromEntities(selectedValues);\r\n }\r\n } else {\r\n this.placeholderSelected = \"\";\r\n this.selectedItems = [];\r\n }\r\n }\r\n\r\n getCountMessage(): string {\r\n let msg = this.messages && this.messages.moreResultsMsg ? this.messages.moreResultsMsg : this.MORE_RESULTS_MSG;\r\n msg = msg.replace(Messages.PARTIAL_COUNT_VAR, String(this.listedData.length));\r\n msg = msg.replace(Messages.TOTAL_COUNT_VAR, String(this.resultsCount - this.selectedItems.length));\r\n return msg;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n removeItem(item: SelectItem) {\r\n const index = this.selectedItems.indexOf(item, 0);\r\n\r\n if (index > -1) {\r\n this.selectedItems.splice(index, 1);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.remove.emit(item);\r\n if (!this.multiple) {\r\n this.placeholderSelected = \"\";\r\n }\r\n }\r\n\r\n getPlaceholder(): string {\r\n return this.selectedItems.length > 0 ? this.placeholderSelected : this.placeholder;\r\n }\r\n\r\n getInputWidth(): string {\r\n const searchEmpty = this.selectedItems.length === 0 && (this.term.value === null || this.term.value.length === 0);\r\n const length = this.term.value === null ? 0 : this.term.value.length;\r\n if (!this.multiple) {\r\n return \"100%\";\r\n } else {\r\n return searchEmpty ? \"100%\" : (1 + length * .6) + \"em\";\r\n }\r\n }\r\n\r\n isHideable(): boolean {\r\n return !this.multiple && this.placeholderSelected !== \"\";\r\n }\r\n\r\n onFocus() {\r\n this.searchFocused = true;\r\n }\r\n\r\n onBlur() {\r\n this.term.patchValue(\"\", {emitEvent: false});\r\n this.searchFocused = false;\r\n this.resultsVisible = false;\r\n this.onTouchedCallback();\r\n }\r\n\r\n onKeyUp(ev: KeyboardEvent) {\r\n if (this.results) {\r\n if (ev.keyCode === KEY_CODE.DOWN_ARROW) {\r\n this.results.activeNext();\r\n } else if (ev.keyCode === KEY_CODE.UP_ARROW) {\r\n this.results.activePrevious();\r\n } else if (ev.keyCode === KEY_CODE.ENTER) {\r\n this.results.selectCurrentItem();\r\n }\r\n } else {\r\n if (this.inputState === 0) {\r\n if (ev.keyCode === KEY_CODE.ENTER || ev.keyCode === KEY_CODE.DOWN_ARROW) {\r\n this.showResults();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeyDown(ev: KeyboardEvent) {\r\n if (this.results) {\r\n if (ev.keyCode === KEY_CODE.TAB) {\r\n this.results.selectCurrentItem();\r\n }\r\n }\r\n\r\n if (ev.keyCode === KEY_CODE.DELETE) {\r\n if ((!this.term.value || this.term.value.length === 0) && this.selectedItems.length > 0) {\r\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n }\r\n }\r\n\r\n onKeyPress(ev: KeyboardEvent) {\r\n if (ev.keyCode === KEY_CODE.ENTER) {\r\n ev.preventDefault();\r\n }\r\n }\r\n\r\n showResults() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.subscribeToResults(of(\"\"));\r\n }\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n focus(): void {\r\n this.termInput.nativeElement.focus();\r\n }\r\n\r\n private subscribeToChangesAndLoadDataFromObservable() {\r\n const observable = this.term.valueChanges.pipe(\r\n debounceTime(this.searchDelay),\r\n distinctUntilChanged()\r\n );\r\n this.subscribeToResults(observable);\r\n }\r\n\r\n private subscribeToResults(observable: Observable<string>): void {\r\n observable.pipe(\r\n tap(() => this.resultsVisible = false),\r\n filter((term) => term.length >= this.inputState),\r\n switchMap(term => this.loadDataFromObservable(term)),\r\n map(items => items.filter(item => !(this.multiple && this.alreadySelected(item)))),\r\n tap(() => this.resultsVisible = this.searchFocused)\r\n ).subscribe((items) => this.listedData = items);\r\n }\r\n\r\n private loadDataFromObservable(term: string): Observable<SelectItem[]> {\r\n return this.clientMode ? this.fetchAndfilterLocalData(term) : this.fetchData(term);\r\n }\r\n\r\n private alreadySelected(item: SelectItem): boolean {\r\n let result = false;\r\n this.selectedItems.forEach(selectedItem => {\r\n if (selectedItem.id === item.id) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private fetchAndfilterLocalData(term: string): Observable<SelectItem[]> {\r\n if (!this.modifiedData) {\r\n return this.fetchData(\"\").pipe(\r\n mergeMap((items) => {\r\n this.modifiedData = items;\r\n return this.filterLocalData(term);\r\n })\r\n );\r\n } else {\r\n return this.filterLocalData(term);\r\n }\r\n }\r\n\r\n private fetchData(term: string): Observable<SelectItem[]> {\r\n return this\r\n .dataProvider(term, this.buildValue())\r\n .pipe(map((items: any[]) => this.adaptItems(items)));\r\n }\r\n\r\n private filterLocalData(term: string): Observable<SelectItem[]> {\r\n return of(this.modifiedData.filter((item) => this.containsText(item, term)));\r\n }\r\n\r\n private containsText(item, term: string) {\r\n return item.text.toUpperCase().indexOf(term.toUpperCase()) !== -1;\r\n }\r\n\r\n private adaptItems(items: any[]): SelectItem[] {\r\n const convertedItems = [];\r\n items.map((item) => this.selectItemAdapter(item))\r\n .forEach((selectItem) => convertedItems.push(selectItem));\r\n return convertedItems;\r\n }\r\n\r\n private buildValue() {\r\n return \"id\" === this.referenceMode ? this.getSelectedIds() : this.getEntities();\r\n }\r\n\r\n private getSelectedIds(): any {\r\n if (this.multiple) {\r\n const ids: any[] = [];\r\n this.selectedItems.forEach(item => ids.push(item.id));\r\n return ids;\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].id;\r\n }\r\n }\r\n\r\n private getEntities(): any[] {\r\n if (this.multiple) {\r\n const entities = [];\r\n this.selectedItems.forEach(item => {\r\n entities.push(item.entity);\r\n });\r\n return entities;\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].entity;\r\n }\r\n }\r\n\r\n private populateItemsFromEntities(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithEntities(selectedValues);\r\n } else {\r\n const selectItem = this.selectItemAdapter(selectedValues);\r\n this.selectedItems = [selectItem];\r\n this.placeholderSelected = selectItem.text;\r\n }\r\n }\r\n\r\n private handleMultipleWithEntities(selectedValues: any) {\r\n this.selectedItems = [];\r\n selectedValues.forEach((entity) => {\r\n const item = this.selectItemAdapter(entity);\r\n const ids = this.getSelectedIds();\r\n\r\n if (ids.indexOf(item.id) === -1) {\r\n this.selectedItems.push(item);\r\n }\r\n });\r\n }\r\n\r\n private populateItemsFromIds(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithIds(selectedValues);\r\n } else {\r\n this.handleSingleWithId(selectedValues);\r\n }\r\n }\r\n\r\n private handleMultipleWithIds(selectedValues: any) {\r\n if (selectedValues !== undefined && this.selectedProvider !== undefined) {\r\n const uniqueIds = [];\r\n selectedValues.forEach((id) => {\r\n if (uniqueIds.indexOf(id) === -1) {\r\n uniqueIds.push(id);\r\n }\r\n });\r\n\r\n this.selectedProvider(uniqueIds).subscribe((items: any[]) => {\r\n this.selectedItems = items.map(this.selectItemAdapter);\r\n });\r\n }\r\n }\r\n\r\n private handleSingleWithId(id: any) {\r\n if (id !== undefined && this.selectedProvider !== undefined) {\r\n this.selectedProvider([id]).subscribe((items: any[]) => {\r\n items.forEach((item) => {\r\n const selectItem = this.selectItemAdapter(item);\r\n this.selectedItems = [selectItem];\r\n this.placeholderSelected = selectItem.text;\r\n });\r\n });\r\n }\r\n }\r\n}\r\n","import {Directive, Host, TemplateRef} from \"@angular/core\";\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\n\r\n/**\r\n * A customized template for Dropdown list items.\r\n */\r\n@Directive({\r\n selector: \"[appTemplateDropdown]\"\r\n})\r\nexport class TemplateDropdownDirective<T> {\r\n\r\n constructor(private templateRef: TemplateRef<T>, @Host() host: DropdownSelectComponent) {\r\n if (host instanceof DropdownSelectComponent) {\r\n host.templateRef = templateRef;\r\n }\r\n }\r\n\r\n}\r\n","import {Inject, Injectable, isDevMode} from \"@angular/core\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\n\r\nimport {Observable, of, timer} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nimport {DICTIONARY_ENDPOINT} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\nexport const DROPDOWN_TYPE = Object.freeze({\r\n INPUT_SINGLE: 0,\r\n INPUT_MULTI: 1,\r\n SELECT_SINGLE: 2,\r\n SELECT_MULTI: 3,\r\n SELECT_SINGLE_CUSTOM: 4,\r\n SELECT_MULTI_CUSTOM: 5\r\n});\r\n\r\n@Injectable()\r\nexport class DropdownService {\r\n\r\n listField : string[] = [];\r\n\r\n DICTIONARY_ENDPOINT = \"\";\r\n\r\n private headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n private options = {headers: this.headers};\r\n\r\n sortFunction: (dropdownObj1: Object, dropdownObj2: Object) => number = (dropdownObj1: Object, dropdownObj2: Object) => {\r\n if (dropdownObj1[this.listField[0]] < dropdownObj2[this.listField[0]]) {\r\n return -1;\r\n } else if (dropdownObj1[this.listField[0]] > dropdownObj2[this.listField[0]]) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n constructor(private http: HttpClient, @Inject(DICTIONARY_ENDPOINT) private dictionaryEndpoint: string) {}\r\n\r\n /**\r\n * Get a list of data from the given object or url to set to the dropdown list.\r\n * @param {string} urlStr\r\n * @param {Object[]} dataObject\r\n * @param {string} displayField\r\n * @returns {any[]}\r\n */\r\n setData(urlStr: string, dataObject: Object[], displayField: string): any[] {\r\n let listFieldSet: string[] = [];\r\n let dataListSet: Object[] = [];\r\n\r\n if (dataObject) {\r\n // Set data from the passed object.\r\n if (isDevMode) {\r\n console.debug(\"DropdownService.setData. dataObject=:\", dataObject);\r\n }\r\n if (dataObject) {\r\n if (listFieldSet.length === 0 || listFieldSet[0] === \"\") {\r\n dataObject.forEach(item => dataListSet.push(item));\r\n listFieldSet.push(displayField);\r\n this.listField.push(displayField);\r\n }\r\n }\r\n } else if (urlStr && urlStr.length > 0) {\r\n // Set data from a passed url.\r\n if (isDevMode) {\r\n console.debug(\"DropdownService.setData. urlStr=:\", urlStr);\r\n }\r\n this.getDataList(urlStr).subscribe((data: Object[]) => {\r\n if (data) {\r\n if (listFieldSet.length === 0 || listFieldSet[0] === \"\") {\r\n data.forEach(item => dataListSet.push(item));\r\n listFieldSet.push(displayField);\r\n this.listField.push(displayField);\r\n\r\n console.debug(data);\r\n console.debug(this.listField);\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error(\"Neither optionData or dataUrl were defined.\");\r\n }\r\n\r\n return dataListSet;\r\n }\r\n\r\n listData(pattern: string, dataSet: any[], maxResults?: number): Observable<Object[]> {\r\n return of(dataSet\r\n .filter((dropdownObj) => dropdownObj[this.listField[0]].toUpperCase().indexOf(pattern.toUpperCase()) !== -1)\r\n .sort(this.sortFunction));\r\n }\r\n\r\n /**\r\n * Get the max list data\r\n * @param {string} pattern\r\n * @param {number} maxResults\r\n * @param {any[]} dataSet\r\n * @returns {Observable<{count: number; results: Object[]}>}\r\n */\r\n listDataMax(pattern: string, maxResults: number, dataSet: any[]): Observable<{ count: number, results: Object[] }> {\r\n const filteredList = dataSet\r\n .filter((dropdownObj) => dropdownObj[this.listField[0]].toUpperCase().indexOf(pattern.toUpperCase()) !== -1)\r\n .sort(this.sortFunction);\r\n\r\n return timer(3000)\r\n .pipe(map((t) => {\r\n return {\r\n count: filteredList.length,\r\n results: maxResults && maxResults < filteredList.length ? filteredList.splice(0, maxResults) : filteredList\r\n };\r\n }));\r\n }\r\n\r\n /**\r\n * Push the selected items to a list to show in the input text area.\r\n * @param {any[]} ids\r\n * @param {any[]} dataSet\r\n * @returns {Observable<Object[]>}\r\n */\r\n getItems(ids: any[], dataSet: any[]): Observable<Object[]> {\r\n const selectedItems: Object[] = [];\r\n\r\n ids.forEach((id) => {\r\n dataSet\r\n .filter((item) => item.id === id)\r\n .map((item) => selectedItems.push(item));\r\n });\r\n\r\n return of(selectedItems);\r\n }\r\n\r\n // Get data from the given url to set in the dropdown list.\r\n getDataList(urlStr: string): Observable<any> {\r\n return this.http.get(this.dictionaryEndpoint + urlStr);\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, isDevMode, OnInit, Output, ViewChild} from \"@angular/core\";\r\nimport {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from \"@angular/forms\";\r\n\r\nimport {Observable} from \"rxjs\";\r\nimport {map, tap} from \"rxjs/operators\";\r\n\r\nimport {DropdownService} from \"./dropdown.service\";\r\nimport {SelectItem} from \"./select-item\";\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\n\r\n@Component({\r\n selector: \"hci-dropdown\",\r\n template: `\r\n <form novalidate [formGroup]=\"dropdownForm\">\r\n <div class=\"form-group\">\r\n <hci-dropdown-select #dropdownSingle *ngIf=\"dropdownType === 0\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingleTypeAhead\"\r\n [multiple]=\"false\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n referenceMode=\"entity\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 1\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownMultipleTypeAhead\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [clientMode]=\"true\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"true\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 2\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingle\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"false\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 3\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownMultiple\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"true\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [selectedProvider]=\"getItems\"\r\n [disabled]=\"isDisabled\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 4\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingle\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [selectedProvider]=\"getItems\"\r\n [disabled]=\"isDisabled\"\r\n [clientMode]=\"true\">\r\n <div *appTemplateDropdown=\"let item = $entity; let i = $index\">\r\n <span>[{{item.id}}]</span> {{item[displayField]}}\r\n </div>\r\n </hci-dropdown-select>\r\n </div>\r\n </form>\r\n `,\r\n providers: [DropdownService]\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n\r\n public dropdownForm: UntypedFormGroup;\r\n public getItems: (ids: any[]) => Observable<Object[]>;\r\n public listItems: (item: string) => Observable<Object[]>;\r\n public listItemsMax: (item: string, ids: any[]) => Observable<Object[]>;\r\n public entityToSelectItem: (entity: Object) => SelectItem;\r\n public count: number;\r\n\r\n @Input() inputSingleData: Object;\r\n @Input() inputMultiData: Object[];\r\n @Input() modifiedData: Object[] = [];\r\n @Input() optionData: Object[];\r\n @Input() displayField: string;\r\n @Input() displayId: any;\r\n @Input() dataUrl: string;\r\n @Input() dropdownType: any;\r\n @Input() placeholder: string;\r\n @Input() isDisabled = false;\r\n @Output() inputSingleDataChange = new EventEmitter<any>();\r\n @Output() inputMultiDataChange = new EventEmitter<any>();\r\n\r\n @ViewChild(\"dropdownSingle\", {static: false}) dropdownSingle: DropdownSelectComponent;\r\n\r\n constructor(private dropdownService: DropdownService,\r\n private formBuilder: UntypedFormBuilder) {\r\n }\r\n\r\n ngOnInit() {\r\n this.dropdownForm = this.formBuilder.group({\r\n option: new UntypedFormControl(\"\"),\r\n dropdownSingleTypeAhead: new UntypedFormControl(\"\"),\r\n dropdownMultipleTypeAhead: new UntypedFormControl(\"\"),\r\n dropdownSingle: new UntypedFormControl(\"\"),\r\n dropdownMultiple: new UntypedFormControl(\"\"),\r\n habilitado: true\r\n });\r\n\r\n this.initDropdownForm();\r\n this.initDropdownItem();\r\n\r\n this.dropdownForm.valueChanges.subscribe(() => {});\r\n }\r\n\r\n onSelect(item: SelectItem) {\r\n if (this.dropdownType === 0 || this.dropdownType === 2 || this.dropdownType === 4) {\r\n this.modifiedData.length = 0;\r\n this.modifiedData.push(item.entity);\r\n this.inputSingleData = this.modifiedData[0];\r\n this.inputSingleDataChange.emit(this.inputSingleData);\r\n } else if (this.dropdownType === 1 || this.dropdownType === 3) {\r\n this.modifiedData.push(item.entity);\r\n this.inputMultiData = this.modifiedData;\r\n this.inputMultiDataChange.emit(this.inputMultiData);\r\n }\r\n }\r\n\r\n onRemove(item: SelectItem) {\r\n if (this.modifiedData.length > 0) {\r\n const index = this.modifiedData.indexOf(item.entity, 0);\r\n if (index > -1) {\r\n this.modifiedData.splice(index, 1);\r\n }\r\n }\r\n\r\n if (this.inputSingleData) {\r\n this.inputSingleData = \"\";\r\n this.inputSingleDataChange.emit(this.inputSingleData);\r\n }\r\n\r\n if (this.inputMultiData) {\r\n this.inputMultiData = this.modifiedData;\r\n this.inputMultiDataChange.emit(this.inputMultiData);\r\n }\r\n }\r\n\r\n reset() {\r\n this.dropdownForm.reset();\r\n }\r\n\r\n send(formJson: string) {}\r\n\r\n private initDropdownItem() {\r\n let dataSet: Object[] = [];\r\n\r\n // Set dropdown data list from a given array or a json file\r\n if (this.optionData && this.optionData.length > 0) {\r\n // Get dropdown list data from an object\r\n if (isDevMode()) {\r\n console.debug(\"optionData=\", this.optionData);\r\n }\r\n dataSet = this.dropdownService.setData(undefined, this.optionData, this.displayField);\r\n } else if (this.dataUrl && this.dataUrl !== \"\") {\r\n // Get dropdown list data from an url with json file\r\n if (isDevMode()) {\r\n console.debug(\"dataUrl=\", this.dataUrl);\r\n }\r\n dataSet = this.dropdownService.setData(this.dataUrl, undefined, this.displayField);\r\n } else {\r\n console.error(\"Neither optionData or dataUrl were defined.\");\r\n if (isDevMode()) {\r\n console.debug(\"dataUrl=\", this.dataUrl);\r\n console.debug(\"optionData=\", this.optionData);\r\n }\r\n }\r\n\r\n // Filter and sort data\r\n this.listItems = (term: string) => this.dropdownService.listData(term, dataSet);\r\n this.listItemsMax = (term: string, ids: any[]) => {\r\n const selectedCount = ids ? ids.length : 0;\r\n return this.dropdownService.listDataMax(term, 3 + selectedCount, dataSet)\r\n .pipe(\r\n tap(response => this.count = response.count),\r\n map((response) => response.results)\r\n );\r\n };\r\n\r\n // Get items and set them to the dropdown entiry\r\n this.getItems = (ids: any[]) => this.dropdownService.getItems(ids, dataSet);\r\n this.entityToSelectItem = (entity: any) => {\r\n return {\r\n id: entity[this.displayId],\r\n text: entity[this.displayField],\r\n entity: entity\r\n };\r\n };\r\n }\r\n\r\n private initDropdownForm() {\r\n this.modifiedData.length = 0;\r\n\r\n if (this.dropdownType === 0 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingleTypeAhead\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n\r\n if (this.dropdownType === 1 && this.inputMultiData) {\r\n this.dropdownForm.controls[\"dropdownMultipleTypeAhead\"].setValue(this.inputMultiData);\r\n this.modifiedData = this.inputMultiData;\r\n }\r\n\r\n if (this.dropdownType === 2 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingle\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n\r\n if (this.dropdownType === 3 && this.inputMultiData) {\r\n this.dropdownForm.controls[\"dropdownMultiple\"].setValue(this.inputMultiData);\r\n this.modifiedData = this.inputMultiData;\r\n }\r\n\r\n if (this.dropdownType === 4 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingle\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\nimport {DropdownSelectResultComponent} from \"./dropdown-select-result.component\";\r\nimport {DropdownComponent} from \"./dropdown.component\";\r\nimport {TemplateDropdownDirective} from \"./template-dropdown.directive\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule\r\n ],\r\n declarations: [\r\n TemplateDropdownDirective,\r\n DropdownSelectComponent,\r\n DropdownComponent,\r\n DropdownSelectResultComponent\r\n ],\r\n exports: [\r\n TemplateDropdownDirective,\r\n DropdownSelectComponent,\r\n DropdownComponent,\r\n DropdownSelectResultComponent\r\n ]\r\n})\r\nexport class DropdownModule {}\r\n","import {AbstractControl} from \"@angular/forms\";\r\n\r\nimport * as moment from \"moment\";\r\n\r\nexport class DateValidator {\r\n static minValue = undefined;\r\n static maxValue = undefined;\r\n\r\n static dateFormatValidator(ac: AbstractControl) {\r\n let dateArr = ac.value.split(\"/\");\r\n if (dateArr.length != 3 || dateArr[0].length > 3 || dateArr[0].length < 1 || dateArr[1].length > 3 ||\r\n dateArr[1].length < 1 || dateArr[2].length !== 4) {\r\n return { \"dateFormatValidator\": true };\r\n }\r\n return null;\r\n }\r\n\r\n static dateRangeValidator(ac: AbstractControl) {\r\n if (ac && ac.value && DateValidator.minValue && DateValidator.maxValue && (moment(ac.value, \"M/D/YYYY\", true).isValid() || moment(ac.value, \"MM/DD/YYYY\", true).isValid())) {\r\n let dateValue = moment(ac.value);\r\n let minDate = moment(DateValidator.convertNgbStructToDate(DateValidator.minValue));\r\n let maxDate = moment(DateValidator.convertNgbStructToDate(DateValidator.maxValue));\r\n\r\n if (dateValue.isBefore(minDate, \"day\") || dateValue.isAfter(maxDate, \"day\")) {\r\n return { \"dateRangeValidator\": true };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static dateInvalidValidator(ac: AbstractControl) {\r\n if (ac && ac.value && !moment(ac.value, \"M/D/YYYY\", true).isValid() && !moment(ac.value, \"MM/DD/YYYY\", true).isValid()) {\r\n return { \"dateInvalidValidator\": true };\r\n }\r\n return null;\r\n }\r\n\r\n static convertNgbStructToDate(struct) {\r\n return {year: struct.year, month: struct.month - 1, day: struct.day};\r\n }\r\n\r\n static inRange(ac: AbstractControl) {\r\n if (ac && ac.value && DateValidator.minValue && DateValidator.maxValue && (moment(ac.value, \"M/D/YYYY\", true).isValid() || moment(ac.value, \"MM/DD/YYYY\", true).isValid())) {\r\n let dateValue = moment(ac.value);\r\n let minDate = moment(DateValidator.convertNgbStructToDate(DateValidator.minValue));\r\n let maxDate = moment(DateValidator.convertNgbStructToDate(DateValidator.maxValue));\r\n\r\n if (dateValue.isBefore(minDate, \"day\") || dateValue.isAfter(maxDate, \"day\")) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","/**\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n *\r\n * Extending class works like in Java except that decorators are only scanned in the child class. In this case,\r\n * we want variables like inputData to be available to all inline components that extend this class; however, we want\r\n * this variable to be an @Input.\r\n * What we can do here is define \"inputData: Object\" here and in the extending class, define \"@Input inputData: Object\".\r\n *\r\n * The two way binding to the component is inputData. To allow non-saving modification to this data, we copy\r\n * it to modifiedData. The wrapped component such as input/select/... then use modifiedData as their ngModel.\r\n * When we cancel out of editing, modifiedData is ignored and replaced with inputData. When editing is saved, inputData\r\n * is replaced with modifiedData.\r\n *\r\n * @since 1.0.0\r\n */\r\nimport {ElementRef, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport abstract class DateBase {\r\n\r\n inputData: Object;\r\n modifiedData: Object;\r\n state: number = 0;\r\n\r\n _el: HTMLElement;\r\n\r\n constructor(elementRef: ElementRef) {\r\n this._el = elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Listen to clicks on the document. If the state is in edit mode and there is a click outside the element,\r\n * then save it.\r\n *\r\n * @param event\r\n */\r\n public handleOutsideEvent(event: Event) {\r\n if (this.state !== 1) {\r\n return;\r\n }\r\n let targetCmpt: HTMLElement = null;\r\n\r\n try {\r\n // Catch exception if target is not an element\r\n targetCmpt = (<HTMLElement>event.target);\r\n } catch (e) {\r\n this.save();\r\n return;\r\n }\r\n\r\n let inside: boolean = false;\r\n do {\r\n if (targetCmpt === this._el) {\r\n inside = true;\r\n break;\r\n }\r\n targetCmpt = targetCmpt.parentElement;\r\n } while (targetCmpt);\r\n if (!inside) {\r\n this.save();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the modifiedData (working data) to the bound data.\r\n */\r\n public updateInternalDataFromModel() {\r\n this.modifiedData = this.inputData;\r\n }\r\n\r\n /**\r\n * Updates the bound data with the working data.\r\n */\r\n public updateModelFromInternalData() {\r\n this.inputData = this.modifiedData;\r\n }\r\n\r\n /**\r\n * When user chooses to edit, change state to show edit dialog.\r\n */\r\n public startEdit() {\r\n this.modifiedData = this.inputData;\r\n this.state = 1;\r\n }\r\n\r\n /**\r\n * Generic actions to change state based on key input. Escape will cancel out of the edit\r\n * without saving, enter will save and exit.\r\n *\r\n * @param event\r\n */\r\n public onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"escape\") {\r\n this.cancel();\r\n } else if (event.key === \"enter\") {\r\n this.save();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param newValue\r\n */\r\n public onChange(newValue: Object) {\r\n this.modifiedData = newValue;\r\n }\r\n\r\n /**\r\n * Replace the bound data with the working data and exit editing mode.\r\n */\r\n public save() {\r\n this.updateModelFromInternalData();\r\n this.state = 0;\r\n }\r\n\r\n /**\r\n * Don't update the bound data and exit the editing mode.\r\n */\r\n public cancel() {\r\n this.updateInternalDataFromModel();\r\n this.state = 0;\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, Input, OnInit, DoCheck, AfterViewInit, ViewChild, Output,\r\n ChangeDetectorRef\r\n} from \"@angular/core\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {UntypedFormBuilder, UntypedFormGroup, UntypedFormControl} from \"@angular/forms\";\r\n\r\nimport {NgbDateStruct} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DateValidator} from \"./date-validator\";\r\nimport {DateBase} from \"./date-base\";\r\n\r\nimport * as moment from \"moment\";\r\n\r\n/**\r\n * TODO: Confirm timezone behavior.\r\n *\r\n * @since 4.0.0\r\n */\r\n@Component({\r\n selector: \"hci-date\",\r\n providers: [DatePipe, DateValidator],\r\n template: `\r\n <div class=\"form-group\">\r\n <div class=\"input-group d-flex\">\r\n <form [formGroup]=\"dateForm\" class=\"flex-grow-1\">\r\n <div class=\"date-wrapper\">\r\n <div class=\"input-group-append\">\r\n <input type=\"text\" (keyup)=\"onKeyUpInput($event)\"\r\n (ngModelChange)=\"onChange($event)\" class=\"form-control\"\r\n formControlName=\"dateInput\" placeholder=\"{{label}}\"\r\n aria-label=\"date\" aria-describedby=\"basic-addon2\" attr.aria-label=\"hci-ng-date-{{label}}\"/>\r\n <span class=\"input-group-text\" id=\"basic-addon2\" (click)=\"clear()\">\r\n <i class=\"fas fa-times\"></i>\r\n </span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"startEdit();\">\r\n <i class=\"fas fa-calendar-alt\"></i>\r\n </button>\r\n </div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateFormatValidator')\"\r\n class=\"invalid-date\">Enter date as M/D/YYYY or MM/DD/YYYY</div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateRangeValidator')\"\r\n class=\"invalid-date\">Invalid Date Range</div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateInvalidValidator')\"\r\n class=\"invalid-date\">Not a real date</div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div *ngIf=\"state === 1\" class=\"inline-editing\">\r\n <ngb-datepicker [ngModel]=\"modifiedData\" #dp [startDate]=\"startDate\" [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\" (keydown)=\"onKeyDown($event)\"\r\n (ngModelChange)=\"onChange($event)\" (dateSelect)=\"save()\"></ngb-datepicker>\r\n <div class=\"inline-hover-save-options\">\r\n </div>\r\n </div>\r\n\r\n `,\r\n styles: [`\r\n `],\r\n host: {\r\n \"(document:click)\": \"handleOutsideEvent($event)\"\r\n }\r\n})\r\n\r\nexport class DateComponent extends DateBase implements OnInit, DoCheck, AfterViewInit {\r\n\r\n @ViewChild(\"dp\", {static: false}) dp: any;\r\n\r\n // Binded data from the parent component.\r\n @Input() dateFormat: string = \"shortDate\";\r\n startDate;\r\n @Input() minDate;\r\n @Input() maxDate;\r\n @Input() label: string;\r\n labelDate: string;\r\n @Input() inputData: Object;\r\n // The data used in our input. We stored this as well as the inputData so we can cancel the edit and preserve the original data.\r\n @Input() modifiedData: Object;\r\n\r\n @Output() inputDataChange = new EventEmitter<any>();\r\n @Output() dateValid = new EventEmitter<boolean>();\r\n\r\n dateForm: UntypedFormGroup;\r\n dateInput: UntypedFormControl;\r\n\r\n // only validate if user is typing\r\n validate: boolean = false;\r\n\r\n private focused: boolean = false;\r\n\r\n constructor(elementRef: ElementRef, private formBuilder: UntypedFormBuilder, private datePipe: DatePipe, private changeDetectorRef: ChangeDetectorRef) {\r\n super(elementRef);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n this.dateForm = this.formBuilder.group({\r\n dateInput : new UntypedFormControl(\"\", [DateValidator.dateFormatValidator, DateValidator.dateRangeValidator, DateValidator.dateInvalidValidator])\r\n });\r\n this.onChanges();\r\n\r\n this.updateInternalDataFromModel();\r\n // set the minDate to 20 years in the past by default\r\n let today = new Date();\r\n if (!this.minDate) {\r\n this.minDate = {year: today.getFullYear() - 20, month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n // set max date to today by default\r\n if (!this.maxDate) {\r\n this.maxDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Fill the input with the bound data set in the parent component.\r\n if (this.inputData) {\r\n let formattedDate = this.datePipe.transform(<string>this.inputData, this.dateFormat);\r\n this.dateForm.controls[\"dateInput\"].setValue(formattedDate);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onChanges(): void {}\r\n\r\n\r\n ngDoCheck() {\r\n // this is the only way I found to have the focus on the startDate day when the user opens\r\n // the popup. We only want to focus once otherwise user can not click anywhere else in the popup\r\n if (this.dp && !this.focused) {\r\n this.dp.focus();\r\n this.focused = true;\r\n }\r\n // mark picker for focusing next time it is open\r\n if (this.state === 0) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n public updateInternalDataFromModel() {\r\n if (this.inputData) {\r\n this.modifiedData = new Date(<string>this.inputData);\r\n let md: Date = new Date(<string>this.inputData);\r\n this.startDate = {year: md.getFullYear(), month: md.getMonth() + 1, day: md.getDate()};\r\n } else {\r\n let today: Date = new Date();\r\n this.startDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n }\r\n\r\n /**\r\n * Updates the bound data with the working data.\r\n */\r\n public updateModelFromInternalData() {\r\n if (this.modifiedData) {\r\n let dsDate = this.ngbDateToString(<NgbDateStruct>this.modifiedData);\r\n if (dsDate) {\r\n this.inputData = dsDate;\r\n } else {\r\n this.inputData = this.modifiedData;\r\n }\r\n\r\n const formattedModifiedDate = this.datePipe.transform(<string>this.inputData, this.dateFormat);\r\n this.dateForm.controls[\"dateInput\"].setValue(formattedModifiedDate, { emitEvent: false});\r\n\r\n }\r\n this.inputDataChange.emit(this.inputData);\r\n this.updateInternalDataFromModel();\r\n }\r\n\r\n public clear() {\r\n this.modifiedData = null;\r\n this.inputData = null;\r\n this.dateForm.controls[\"dateInput\"].setValue(\"\");\r\n this.validate = false;\r\n let today: Date = new Date();\r\n this.startDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n this.state = 0;\r\n this.dateForm.controls[\"dateInput\"].setValue(\"\");\r\n this.inputDataChange.emit(this.inputData);\r\n this.dateValid.emit(true);\r\n }\r\n\r\n public onKeyUpInput(event: KeyboardEvent) {\r\n // Check for when the input is deleted before being saved\r\n if ((event.key === \"Delete\" || event.key === \"Backspace\") && this.dateForm.controls[\"dateInput\"].value.length === 0) {\r\n this.clear();\r\n } else {\r\n // update range so that the date range validator can run accurately\r\n DateValidator.minValue = this.minDate;\r\n DateValidator.maxValue = this.maxDate;\r\n\r\n // Get the updated dateForm value\r\n let eventTarget = event.target as HTMLInputElement;\r\n let inputValue = eventTarget.value;\r\n this.dateForm.controls[\"dateInput\"].patchValue(inputValue);\r\n\r\n // if we have a good date and is within the range update the picker\r\n if (DateValidator.inRange(this.dateForm.controls[\"dateInput\"])) {\r\n this.validate = false;\r\n this.getDateValid();\r\n this.inputData = this.datePipe.transform(this.dateForm.controls[\"dateInput\"].value, this.dateFormat);\r\n this.updateInternalDataFromModel();\r\n this.dateForm.controls[\"dateInput\"].setValue(this.inputData);\r\n this.inputDataChange.emit(this.inputData);\r\n } else {\r\n this.validate = true;\r\n this.getDateValid();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * NgbDateStruct stores day, month and year. Convert this to ISO8601.\r\n *\r\n * @param date\r\n * @returns {any}\r\n */\r\n private ngbDateToString(date: NgbDateStruct): string {\r\n if (date === undefined || date === null) {\r\n return null;\r\n } else if (date.year === undefined || date.month === undefined || date.day === undefined) {\r\n return null;\r\n }\r\n\r\n return date.year + \"-\" + ((date.month < 10) ? \"0\" : \"\") + date.month + \"-\" + ((date.day < 10) ? \"0\" : \"\") + date.day + \"T12:00-06:00\";\r\n }\r\n\r\n public getDateValid(): boolean {\r\n if (this.dateForm.get(\"dateInput\").hasError(\"dateFormatValidator\")\r\n || this.dateForm.get(\"dateInput\").hasError(\"dateRangeValidator\")\r\n || this.dateForm.get(\"dateInput\").hasError(\"dateInvalidValidator\")) {\r\n this.dateValid.emit(false);\r\n return false;\r\n } else {\r\n this.dateValid.emit(true);\r\n return true;\r\n }\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, AfterViewInit, Output, ViewChild} from \"@angular/core\";\r\n\r\nimport {DateComponent} from \"./date-date.component\";\r\n\r\n/**\r\n * TODO: Confirm timezone behavior.\r\n *\r\n * @since 4.0.0\r\n */\r\n@Component({\r\n selector: \"hci-date-range\",\r\n template: ` \r\n <div class=\"d-flex flex-wrap date-range\">\r\n <hci-date #startdate\r\n class=\"date\"\r\n [label]=\"startLabel\"\r\n [(inputData)]=\"inputStartData\"\r\n (inputDataChange)=\"onClickSubmitStartDate($event)\"\r\n [dateFormat]=\"dateFormat\"\r\n [minDate]=\"minStartDate\"\r\n [maxDate]=\"maxStartDate\">\r\n </hci-date>\r\n <hci-date #enddate\r\n class=\"date\"\r\n [label]=\"endLabel\"\r\n [(inputData)]=\"inputEndData\"\r\n (inputDataChange)=\"onClickSubmitEndDate($event)\"\r\n [dateFormat]=\"dateFormat\"\r\n [minDate]=\"minEndDate\"\r\n [maxDate]=\"maxEndDate\">\r\n </hci-date>\r\n </div>\r\n `\r\n})\r\nexport class DateRangeComponent implements AfterViewInit {\r\n\r\n @ViewChild(\"startdate\", {static: true})\r\n sp: DateComponent;\r\n\r\n @ViewChild(\"enddate\", {static: true})\r\n ep: DateComponent;\r\n\r\n // Binded data from the parent component.\r\n @Input() dateFormat: string = \"shortDate\";\r\n @Input() inputStartData: Object;\r\n @Input() inputEndData: Object;\r\n @Input() startLabel: string;\r\n @Input() endLabel: string;\r\n @Output() inputDataChange = new EventEmitter<any[]>();\r\n\r\n @Input() minStartDate: any;\r\n public maxStartDate;\r\n public minEndDate;\r\n public maxEndDate;\r\n\r\n ngOnInit() {\r\n this.setRange();\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngAfterViewInit() {\r\n // if there is no start date but there is an end date, make the start date go to the end date\r\n if (!this.inputStartData && this.inputEndData) {\r\n let dt: Date = new Date(<string>this.inputEndData);\r\n this.sp.startDate = {year: dt.getFullYear(), month: dt.getMonth() + 1, day: dt.getDate()};\r\n }\r\n }\r\n\r\n onClickSubmitStartDate(startData) {\r\n this.setRange();\r\n // if there is no start date but there is an end date, make the start date go to the end date\r\n if (!startData && this.inputEndData) {\r\n let dt: Date = new Date(<string>this.inputEndData);\r\n this.sp.startDate = {year: dt.getFullYear(), month: dt.getMonth() + 1, day: dt.getDate()};\r\n }\r\n this.inputDataChange.emit([this.inputStartData, this.inputEndData]);\r\n }\r\n\r\n onClickSubmitEndDate(endData) {\r\n this.setRange();\r\n this.inputDataChange.emit([this.inputStartData, this.inputEndData]);\r\n }\r\n\r\n private setRange() {\r\n // set the minDate to 20 years in the past by default\r\n let today = new Date();\r\n if (!this.minStartDate) {\r\n this.minStartDate = {year: today.getFullYear() - 20, month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n this.minEndDate = this.minStartDate;\r\n // set the maxDate to today by default\r\n this.maxStartDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n this.maxEndDate = this.maxStartDate;\r\n if (this.inputEndData) {\r\n let endDate = new Date(<string>this.inputEndData);\r\n this.maxStartDate = {year: endDate.getFullYear(), month: endDate.getMonth() + 1, day: endDate.getDate()};\r\n }\r\n if (this.inputStartData) {\r\n let startDate = new Date(<string>this.inputStartData);\r\n this.minEndDate = {year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate()};\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DateComponent} from \"./date-date.component\";\r\nimport {DateRangeComponent} from \"./date-date-range.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatLegacyFormFieldModule as MatFormFieldModule } from \"@angular/material/legacy-form-field\";\r\nimport {MatNativeDateModule} from \"@angular/material/core\";\r\nimport {MatLegacyInputModule as MatInputModule} from \"@angular/material/legacy-input\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n MatTabsModule,\r\n MatFormFieldModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatInputModule\r\n ],\r\n declarations: [\r\n DateComponent,\r\n DateRangeComponent\r\n ],\r\n exports: [\r\n DateComponent,\r\n DateRangeComponent\r\n ]\r\n})\r\nexport class DateModule {}\r\n","import {\r\n Component, ContentChild, forwardRef, HostListener, Input, isDevMode, SimpleChange,\r\n TemplateRef\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, NgModel} from \"@angular/forms\";\r\n\r\n/**\r\n * This component is designed to take any input as ng-content and wrap it such that it renders as a string. When hovering\r\n * over, a border and edit icon is shown. Upon clicking, it enters edit mode and the passed in input is rendered. The\r\n * bound ngModel is wrapped in an intermediary. This component binds a separate internal value to the wrapped component.\r\n * This allows the user to cancel out and not update the ngModel bound to this component.\r\n */\r\n@Component({\r\n selector: \"hci-inline-input\",\r\n template: `\r\n <div *ngIf=\"!editMode; else editTemplate\"\r\n (click)=\"setEditMode($event, true)\"\r\n class=\"edit-false ps-1\">\r\n <ng-container *ngIf=\"renderTemplate; else defaultRenderTemplate\">\r\n <ng-container *ngTemplateOutlet=\"renderTemplate; context: {value: value}\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultRenderTemplate>\r\n <ng-container *ngIf=\"value\">\r\n {{value}}\r\n </ng-container>\r\n <ng-container *ngIf=\"!value\">\r\n {{noValueMessage}}\r\n </ng-container>\r\n </ng-template>\r\n <button class=\"btn btn-primary ms-auto\">\r\n <i class=\"fas fa-pencil-alt\"></i>\r\n </button>\r\n </div>\r\n\r\n <ng-template #editTemplate>\r\n <div class=\"edit-true\">\r\n <div class=\"input-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"d-flex\">\r\n <button class=\"btn btn-green\" (click)=\"save()\">\r\n <i class=\"fas fa-check\"></i>\r\n </button>\r\n <button class=\"btn btn-red d-flex\" (click)=\"cancel()\">\r\n <i class=\"fas fa-times ms-auto me-auto\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InlineComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InlineComponent implements ControlValueAccessor {\r\n\r\n @ContentChild(\"renderTemplate\", {read: TemplateRef, static: true}) renderTemplate: TemplateRef<any>;\r\n\r\n @Input() noValueMessage: string = \"Click to Add\";\r\n\r\n // View state\r\n editMode: boolean = false;\r\n\r\n // Value that updates based on this ngModel.\r\n value: any;\r\n\r\n // The value we bind to the passed in input component.\r\n modifiedValue: any;\r\n\r\n // Store the ngModel directive on the passed in input component.\r\n ngModelRef: NgModel;\r\n\r\n // Functions to register from Angular\r\n onChange: (value: any) => void;\r\n onTouched: () => void;\r\n\r\n /**\r\n * Called when the model updates and we need to up the view.\r\n *\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: writeValue\");\r\n console.debug(\"InlineComponent: \" + value);\r\n }\r\n\r\n // Update the internal values.\r\n this.value = value;\r\n this.modifiedValue = this.value;\r\n\r\n if (this.ngModelRef !== undefined) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: update ngModelRef: \" + this.modifiedValue);\r\n }\r\n\r\n // Update the model, then tell the directive that it has been updated.\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Register the function that is called when the value changes in the value.\r\n *\r\n * @param {(value: any) => void} fn\r\n */\r\n registerOnChange(fn: (value: any) => void) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: registerOnChange\");\r\n console.debug(fn);\r\n }\r\n\r\n this.onChange = () => {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: onChange Function\" + this.value);\r\n }\r\n fn(this.value);\r\n };\r\n }\r\n\r\n /**\r\n * Register the function called to update the model on blur.\r\n *\r\n * @param {() => void} fn\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: registerOnTouched\");\r\n console.debug(fn);\r\n }\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the editMode. If true then tell the passed in input to bind the current modified value.\r\n *\r\n * @param {boolean} editMode\r\n */\r\n setEditMode(event: MouseEvent, editMode: boolean): void {\r\n event.stopPropagation();\r\n\r\n this.editMode = editMode;\r\n if (this.editMode) {\r\n this.onTouched();\r\n\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Cancel edit mode which resets the modified value.\r\n */\r\n cancel(): void {\r\n this.editMode = false;\r\n this.modifiedValue = this.value;\r\n }\r\n\r\n /**\r\n * Update the value with the modified value and call the onChange function so two way binding is updated with this component.\r\n */\r\n save(): void {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: save modifiedValue: \" + this.modifiedValue + \", value: \" + this.value);\r\n }\r\n\r\n this.value = this.modifiedValue;\r\n this.onChange(this.value);\r\n this.editMode = false;\r\n }\r\n\r\n /**\r\n * The component to wrap must be named with #input and have a ngModel directive. When the content is set here, we\r\n * read the ngModel and set the model as well as listen to changes.\r\n *\r\n * @param {NgModel} ngModel\r\n */\r\n @ContentChild(\"input\", {read: NgModel, static: false}) set contentChild(ngModel: NgModel) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: set contentChild: \" + this.modifiedValue);\r\n console.debug(ngModel);\r\n }\r\n\r\n this.ngModelRef = ngModel;\r\n if (this.ngModelRef) {\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n this.ngModelRef.update.subscribe((value: any) => {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: cmpt model change: \" + value);\r\n }\r\n this.modifiedValue = value;\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * If the click target is outside the inline input then cancel it.\r\n *\r\n * @param {MouseEvent} event\r\n */\r\n @HostListener(\"document:click\", [\"$event\"])\r\n documentClick(event: MouseEvent): void {\r\n if (this.editMode) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: documentClick\");\r\n }\r\n\r\n let e: Element = (<HTMLElement>event.target).closest(\"hci-inline-input\");\r\n if (!e) {\r\n this.cancel();\r\n }\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {InlineComponent} from \"./inline.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n InlineComponent\r\n ],\r\n exports: [\r\n InlineComponent\r\n ]\r\n})\r\nexport class InlineModule {}\r\n","import {Component, forwardRef, HostBinding, Input} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-md-select\",\r\n template: `\r\n <mat-form-field>\r\n <mat-label>{{label}}</mat-label>\r\n <mat-select [(value)]=\"value\" [required]=\"required\">\r\n <mat-option *ngIf=\"!required\" [value]=\"undefined\"></mat-option>\r\n <mat-option *ngFor=\"let row of entries\" [value]=\"row[idKey]\">{{ row[displayKey] }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MdSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MdSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() className: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n\r\n private _value: number;\r\n private onChangeCallback: (_: number) => void = () => {};\r\n private onTouchedCallback: () => void = () => {};\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n });\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" material-input\";\r\n }else {\r\n this.classList = \"material-input\";\r\n }\r\n }\r\n\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(newValue: number) {\r\n this._value = newValue;\r\n this.onChangeCallback(newValue);\r\n }\r\n\r\n public onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n public writeValue(value: number) {\r\n if (value !== this.value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n public registerOnChange(callback: (_: number) => void) {\r\n this.onChangeCallback = callback;\r\n }\r\n\r\n\r\n public registerOnTouched(callback: () => void) {\r\n this.onTouchedCallback = callback;\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding, Input, ChangeDetectorRef} from \"@angular/core\";\r\n\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-native-select\",\r\n template: `\r\n <label [for]=\"id\" *ngIf=\"label\" class=\"label\">\r\n {{label}}{{(required) ? \" *\" : \"\"}}\r\n </label>\r\n <select [(ngModel)]=\"value\"\r\n [style.height.px]=\"height\"\r\n (change)=\"onChange()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id\"\r\n class=\"form-control flex-grow-1\"\r\n style=\"min-width: 4rem;\">\r\n <ng-container *ngIf=\"!required\">\r\n <option [ngValue]=\"undefined\">\r\n </option>\r\n </ng-container>\r\n <option *ngFor=\"let row of entries\"\r\n [ngValue]=\"row[idKey]\">\r\n {{ row[displayKey] }}\r\n </option>\r\n </select>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NativeSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NativeSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n value: any;\r\n height: number;\r\n unfilteredEntries: DropdownEntry[];\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n @Input() disabled: boolean = false;\r\n @Input() sortKey: string = null;\r\n @Input() sortNumeric: boolean = false;\r\n @Input() filterKey: string = null;\r\n @Input() id: string = \"\";\r\n\r\n _filter: any = null;\r\n get filter(): any{\r\n return this._filter;\r\n }\r\n @Input() set filter(f: any){\r\n this._filter = f;\r\n\r\n if(this.filterKey != null && this.filter != null && this.unfilteredEntries != null) {\r\n this.entries = this.unfilteredEntries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n onChange: any;\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient, private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n });\r\n }else {\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" native-input\"; //?\r\n }else {\r\n this.classList = \"native-input\";\r\n }\r\n }\r\n\r\n public setHeight(h: number) {\r\n this.height = h;\r\n // avoid ExpressionChangedAfterItHasBeenCheckedError\r\n this.cdr.detectChanges();\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.onChange = () => {\r\n fn(this.value);\r\n };\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {}\r\n}\r\n","import {Component, forwardRef, HostBinding, Input} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-md-multi-select\",\r\n template: `\r\n <mat-form-field class=\"flex-grow-1\">\r\n <mat-label>{{label}}</mat-label>\r\n <mat-select [(value)]=\"value\" [formControl]=\"options\" [required]=\"required\" multiple>\r\n <mat-select-trigger class=\"d-flex flex-wrap\">\r\n <div *ngFor=\"let option of options.value\" class=\"chip\">\r\n {{getOptionDisplay(option)}}\r\n <div (click)=\"$event.stopPropagation(); remove(option)\" class=\"chip-remove\">\r\n <i class=\"fas fa-times-circle fa-xs\"></i>\r\n </div>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let row of entries\" [value]=\"row[idKey]\">{{ row[displayKey] }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MdMultiSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MdMultiSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n @Input() sortKey: string = null;\r\n @Input() sortNumeric: boolean = false;\r\n\r\n options = new UntypedFormControl();\r\n\r\n private _value: any[];\r\n private onChangeCallback: (_: any[]) => void = () => {};\r\n private onTouchedCallback: () => void = () => {};\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n this.sortEntries();\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n this.sortEntries();\r\n });\r\n } else {\r\n this.sortEntries();\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" material-input\";\r\n }else {\r\n this.classList = \"material-input\";\r\n }\r\n }\r\n\r\n sortEntries() {\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n getOptionDisplay(value: any): string {\r\n for (let entry of this.entries) {\r\n if (entry[this.idKey] === value) {\r\n return entry[this.displayKey];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n remove(value: any): void {\r\n console.debug(this.options);\r\n\r\n let newValue: any[] = [];\r\n\r\n for (let option of this.options.value) {\r\n if (option !== value) {\r\n newValue.push(option);\r\n }\r\n }\r\n\r\n this.writeValue(newValue);\r\n }\r\n\r\n public get value(): any[] {\r\n return this._value;\r\n }\r\n\r\n public set value(newValue: any[]) {\r\n this._value = newValue;\r\n this.options.setValue(newValue);\r\n this.onChangeCallback(newValue);\r\n }\r\n\r\n public onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n public writeValue(value: any[]) {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.options.setValue(value);\r\n }\r\n }\r\n\r\n public registerOnChange(callback: (_: any[]) => void) {\r\n this.onChangeCallback = callback;\r\n }\r\n\r\n\r\n public registerOnTouched(callback: () => void) {\r\n this.onTouchedCallback = callback;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChange,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR, NgControl} from \"@angular/forms\";\r\nimport {combineLatest, Subscription} from \"rxjs\";\r\nimport {debounceTime} from \"rxjs/operators\";\r\nimport {CdkVirtualScrollViewport} from \"@angular/cdk/scrolling\";\r\nimport {MatLegacyAutocompleteTrigger as MatAutocompleteTrigger} from \"@angular/material/legacy-autocomplete\";\r\nimport {ListRange} from \"@angular/cdk/collections\";\r\nimport {ListKeyManager, Highlightable} from '@angular/cdk/a11y';\r\nimport {MatLegacyOption as MatOption} from \"@angular/material/legacy-core\";\r\nimport {LegacyFloatLabelType as FloatLabelType} from \"@angular/material/legacy-form-field\";\r\n\r\n@Component({\r\n selector: \"hci-combobox\",\r\n template: `\r\n <mat-form-field (click)=\"onClick($event)\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n [appearance]=\"appearance\"\r\n [floatLabel]=\"floatLabel\"\r\n [matTooltip]=\"this.tooltip\"\r\n [ngClass]=\"customFieldClasses\"\r\n >\r\n <mat-label *ngIf=\"label !== undefined\">{{ label }}</mat-label>\r\n <mat-label *ngIf=\"label === undefined\">\r\n {{ temporaryPlaceholder ? (innerControl.value ? '' : placeholder) : placeholder }}\r\n </mat-label>\r\n <input #input\r\n matInput\r\n name=\"customComboBoxFilter\"\r\n [placeholder]=\"temporaryPlaceholder ? (innerControl.value ? '' : placeholder) : placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n autocomplete=\"off\"\r\n [formControl]=\"innerControl\"\r\n [attr.cdkFocusInitial]=\"cdkFocusInitial === undefined ? null : cdkFocusInitial\"\r\n [tabindex]=\"tabindex\"\r\n (keydown)=\"onKey($event)\"\r\n (focus)=\"onFocus()\"\r\n (focusout)=\"onFocusOut()\" attr.aria-label=\"hci-ng-custom-combobox-{{label}}\"\r\n >\r\n <div matSuffix\r\n class=\"hci-combobox-arrow-wrapper\"\r\n (click) = \"toggleOpen($event)\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n >\r\n <div class=\"hci-combobox-arrow\"></div>\r\n </div>\r\n <mat-spinner matSuffix *ngIf=\"showLoader()\" [diameter]=\"30\" style=\"float: right; margin-left: 8px\"></mat-spinner>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n autoActiveFirstOption\r\n (optionSelected)=\"this.selectOption($event.option.value)\"\r\n (opened)=\"this.onOpened()\"\r\n (closed)=\"this.onClosed()\"\r\n [displayWith]=\"this.displayFn\">\r\n <cdk-virtual-scroll-viewport #viewport\r\n [style.display]=\"isOpen ? null : 'none'\"\r\n class=\"hci-combobox-viewport\"\r\n [ngClass]= \"customViewportClass\"\r\n [itemSize]=\"optionSizePx\"\r\n [style.height.px]=\"numOptionsToShow * optionSizePx\"\r\n [minBufferPx]=\"numOptionsToShow * optionSizePx * 2\"\r\n [maxBufferPx]=\"numOptionsToShow * optionSizePx * 3\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n >\r\n <mat-option *ngIf=\"allowNone && isOpen && (this.forceShowNone || !this.innerControl.value)\"\r\n [ngClass]=\"customOptionClasses\"\r\n [style.height.px]=\"optionSizePx\"\r\n >\r\n None\r\n </mat-option>\r\n <mat-option *cdkVirtualFor=\"let opt of this.loadedOptions\"\r\n [value]=\"opt\"\r\n [ngClass]=\"customOptionClasses\"\r\n [class.hci-combobox-selected]=\"(valueField ? opt[valueField] : opt) === outerControl.value\"\r\n [class.mat-selected]=\"(valueField ? opt[valueField] : opt) === outerControl.value\"\r\n [style.height.px]=\"optionSizePx\"\r\n >\r\n {{ displayField ? opt[displayField] : opt }}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n <mat-error>\r\n {{ getError() }}\r\n </mat-error>\r\n <ng-content></ng-content>\r\n </mat-form-field>\r\n `,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomComboBoxComponent),\r\n multi: true,\r\n }],\r\n host: {\r\n class: \"hci-combobox-container\"\r\n },\r\n styles: [`\r\n .hci-combobox-container {\r\n display: inline-block;\r\n }\r\n\r\n .hci-combobox-arrow {\r\n width: 0;\r\n height: 0;\r\n border-left: 5px solid transparent;\r\n border-right: 5px solid transparent;\r\n border-top: 5px solid;\r\n margin: 0 4px;\r\n color: var(--black-darkest);\r\n }\r\n\r\n .hci-combobox-arrow-wrapper {\r\n display: table-cell;\r\n vertical-align: middle;\r\n }\r\n\r\n .hci-combobox-viewport mat-option {\r\n display: flex;\r\n align-items: center;\r\n padding: 0 .2rem;\r\n }\r\n\r\n .hci-combobox-viewport mat-option .mat-option-text {\r\n white-space: nowrap;\r\n }\r\n\r\n .hci-combobox-viewport .hci-combobox-selected {\r\n background-color: #dddddd;\r\n }\r\n\r\n .hci-combobox-viewport .mat-active {\r\n background-color: #f3f3f3;\r\n }\r\n\r\n /* fix jittery scroll bug in chrome */\r\n .hci-combobox-viewport {\r\n overflow-anchor: none;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CustomComboBoxComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n public optionSizePx: number = 25;\r\n public numOptionsToShow: number = 10;\r\n\r\n @Input()\r\n public maxOptionsToShow: number = 10;\r\n\r\n @Input()\r\n public customViewportClass: string = \"\";\r\n\r\n @Input()\r\n public set customFieldClasses(value: string) {\r\n this._customFieldClasses = value ? value : \"\";\r\n }\r\n\r\n public get customFieldClasses(): string {\r\n return !!this._customFieldClasses ? this._customFieldClasses : \"mat-form-field-should-float\";\r\n }\r\n\r\n @Input()\r\n public set customOptionClasses(value: string) {\r\n this._customOptionClasses = value ? value : \"\";\r\n }\r\n\r\n public get customOptionClasses(): string {\r\n return !!this._customOptionClasses ? this._customOptionClasses : \"\";\r\n }\r\n\r\n // If a label is not specified the placeholder is promoted to a label.\r\n // To create a form field with only a placeholder, specify an empty\r\n // label to prevent the placeholder from being promoted.\r\n @Input() public label: string;\r\n @Input() public placeholder: string = \"\";\r\n\r\n // Removes the placeholder after a selection is made\r\n @Input() public temporaryPlaceholder: boolean = false;\r\n\r\n @Input() public tooltip: string = \"\";\r\n @Input() public allowNone: boolean = true;\r\n\r\n @Input() public selectTextOnOpen = true;\r\n\r\n // tell mat-dialog to pass initial focus to the inner input\r\n @HostBinding(\"attr.cdkFocusInitial\") _cdkFocusInitial = null;\r\n @Input() public cdkFocusInitial: string = undefined;\r\n\r\n // on tab, skip the host element and focus the input\r\n @HostBinding(\"attr.tabindex\") _tabindex = null;\r\n @Input() public tabindex: number = 0;\r\n\r\n public forceShowNone: boolean = false;\r\n\r\n @Input() public options: any[] = [];\r\n @Input() allowLoader: boolean = false;\r\n\r\n public isOpen: boolean = false;\r\n public loadedOptions: any[] = [];\r\n\r\n @Input() public valueField: string;\r\n @Input() private forceEmitObject: boolean = false;\r\n @Input() public displayField: string;\r\n @Input() public appearance: string = \"\";\r\n @Input() public floatLabel: FloatLabelType;\r\n\r\n // Set to empty to not show errors\r\n @Input()\r\n public defineErrors: any = {required: \"This is a required field\"};\r\n\r\n private _showLoader = false;\r\n private _customFieldClasses: string = \"\";\r\n private _customOptionClasses: string = \"\";\r\n\r\n public outerControl: AbstractControl = new UntypedFormControl();\r\n public innerControl: UntypedFormControl = new UntypedFormControl(null);\r\n private ignoreInnerControlChanges: boolean = false;\r\n private subs: Subscription = new Subscription();\r\n private noNgControl: boolean = false;\r\n public selectedIndex: number;\r\n\r\n keyManager: ListKeyManager<Highlightable>;\r\n viewportRenderRange: ListRange;\r\n viewportVisibleRange: ListRange = {\r\n start: 0,\r\n end: this.numOptionsToShow - 1\r\n };\r\n\r\n activeValue: any;\r\n\r\n public clickInProgress: boolean = false;\r\n\r\n @Output() optionSelected: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() optionChanged: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() optionsLoaded: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @ViewChild(\"viewport\", {static: true})\r\n viewport: CdkVirtualScrollViewport;\r\n\r\n @ViewChild(\"input\", {static: true})\r\n inputElement: ElementRef;\r\n\r\n @ViewChild(\"input\", {read: MatAutocompleteTrigger, static: false})\r\n autoCompleteTrigger: MatAutocompleteTrigger;\r\n\r\n private onChangeFn: (val: any) => void = () => {};\r\n private onTouchedFn: () => void = () => {};\r\n\r\n public displayFn: (opt?: any) => string | undefined = (opt?: any) => {\r\n return opt ? (this.displayField ? opt[this.displayField] : opt) : undefined;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef,\r\n private injector: Injector) { }\r\n\r\n ngOnInit(): void {\r\n this._showLoader = this.allowLoader && (! this.options || this.options.length === 0);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let ngControl: NgControl = this.injector.get(NgControl, null);\r\n if (ngControl && ngControl.control) {\r\n this.outerControl = ngControl.control;\r\n this.innerControl.setValidators(this.outerControl.validator);\r\n this.innerControl.setAsyncValidators(this.outerControl.asyncValidator);\r\n this.innerControl.updateValueAndValidity();\r\n this.cdr.detectChanges();\r\n } else {\r\n this.noNgControl = true;\r\n }\r\n\r\n this.subs.add(this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe((_value: any) => {\r\n if (this.isOpen && !this.ignoreInnerControlChanges) {\r\n this.filterOptions();\r\n } else {\r\n this.ignoreInnerControlChanges = false;\r\n }\r\n }));\r\n\r\n // work around for validators not always propagating\r\n this.subs.add(this.outerControl.statusChanges.subscribe((_event: any) => {\r\n this.innerControl.setValidators(this.outerControl.validator);\r\n this.innerControl.setAsyncValidators(this.outerControl.asyncValidator);\r\n this.innerControl.updateValueAndValidity();\r\n this.innerControl.setErrors(this.outerControl.errors);\r\n\r\n if (this.outerControl.touched) {\r\n this.innerControl.markAsTouched();\r\n }\r\n }));\r\n\r\n // this object is used to control the active state when keying up and down\r\n this.keyManager = this.autoCompleteTrigger.autocomplete._keyManager;\r\n this.keyManager.withWrap(false);\r\n\r\n this.subs.add(combineLatest([\r\n this.viewport.renderedRangeStream,\r\n this.viewport.scrolledIndexChange\r\n ]).subscribe(([renderedRange, scrolledIndex]: [ListRange, number]) => {\r\n\r\n // Instead of loading the whole item list at once, the virtual scroll viewport buffers\r\n // a range of entries, only a portion of which are within the visible fold\r\n this.viewportRenderRange = renderedRange;\r\n\r\n // we have to figure out the visible range ourselves\r\n let len: number = Math.min(this.loadedOptions.length + (this.allowNone ? 1 : 0), this.numOptionsToShow - 1);\r\n\r\n this.viewportVisibleRange = {\r\n start: scrolledIndex,\r\n end: scrolledIndex + len\r\n };\r\n }));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.options) {\r\n let optionsChange: SimpleChange = changes.options;\r\n if (!optionsChange.currentValue || optionsChange.currentValue.length < 1) {\r\n this.options = [];\r\n if(this.innerControl.value != null){\r\n //Reset the innerControl value of the dropdown list to an empty array in case of no results are present to be displayed.\r\n //This flushes out the stale value from the list if there are no results to be displayed.\r\n this.innerControl.setValue([]);\r\n }\r\n }\r\n\r\n let currentOpts: any[] = <any[]>optionsChange.currentValue;\r\n if (currentOpts && \"length\" in currentOpts && currentOpts !== optionsChange.previousValue) {\r\n this._showLoader = false;\r\n this.optionsLoaded.emit();\r\n\r\n // If number of options is less than our max, reduce size of overlay\r\n this.numOptionsToShow = Math.min(currentOpts.length + (this.allowNone ? 1 : 0), this.maxOptionsToShow);\r\n } else {\r\n this._showLoader = true;\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n // The autocomplete will automatically pop open once it has options filtered into it,\r\n // but we don't want it to on initial page load or when tabbing though\r\n if (this.isOpen) {\r\n this.filterOptions();\r\n } else {\r\n this.loadOnlyCurrentValue(this.outerControl.value);\r\n }\r\n });\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.loadOnlyCurrentValue(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.innerControl.disable();\r\n } else {\r\n this.innerControl.enable();\r\n }\r\n }\r\n\r\n getError(): string {\r\n for (const error in this.outerControl.errors) {\r\n if (this.defineErrors && error in this.defineErrors) {\r\n return this.defineErrors[error];\r\n }\r\n }\r\n }\r\n\r\n private loadOnlyCurrentValue(cntrlVal: any): void {\r\n if (!this.options || this.options.length < 1) {\r\n return;\r\n }\r\n\r\n let newValue: any = null;\r\n if (cntrlVal !== null && cntrlVal !== undefined) {\r\n let currentlySelected: any = this.options.find((opt: any) => {\r\n let optValue: any = this.valueField ? opt[this.valueField] : opt;\r\n if (this.forceEmitObject) {\r\n let outerValue: any = cntrlVal ? (this.valueField ? cntrlVal[this.valueField] : cntrlVal) : null;\r\n if (optValue === outerValue) {\r\n return true;\r\n }\r\n } else {\r\n return optValue === cntrlVal;\r\n }\r\n });\r\n if (currentlySelected) {\r\n newValue = currentlySelected;\r\n }\r\n }\r\n\r\n // prefer to check id if it has one vs straight against it's object identity\r\n if (this.innerControl.value && newValue != null && this.valueField) {\r\n if (this.innerControl.value[this.valueField] !== newValue[this.valueField]) {\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(newValue);\r\n this.optionSelected.emit(newValue[this.valueField]);\r\n }\r\n } else if (this.innerControl.value !== newValue) {\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(newValue);\r\n let nv = newValue ? ((this.valueField && !this.forceEmitObject) ? newValue[this.valueField] : newValue) : null;\r\n this.optionSelected.emit(nv);\r\n }\r\n }\r\n\r\n private filterOptions(showAll: boolean = false): void {\r\n this.forceShowNone = showAll;\r\n this.isOpen = true;\r\n if (!this.options || this.options.length < 1) {\r\n return;\r\n }\r\n\r\n if (showAll || !this.innerControl.value) {\r\n this.loadedOptions = [...this.options];\r\n } else {\r\n let searchValue: string = \"\";\r\n if (typeof this.innerControl.value === \"string\") {\r\n searchValue = this.innerControl.value.toLowerCase();\r\n } else if (this.displayField) {\r\n searchValue = this.innerControl.value[this.displayField].toLowerCase();\r\n }\r\n this.loadedOptions = this.options.filter((opt: any) => {\r\n let optDisplay: string = (this.displayField ? opt[this.displayField] : opt).toLowerCase();\r\n return optDisplay.includes(searchValue);\r\n });\r\n this.forceShowNone = this.loadedOptions.length === 0;\r\n }\r\n\r\n this.selectedIndex = this.getOptIndex(this.outerControl.value);\r\n }\r\n\r\n public showLoader(): boolean {\r\n return this.allowLoader && this._showLoader;\r\n }\r\n\r\n public open() {\r\n if (this.innerControl.disabled) {\r\n return;\r\n }\r\n\r\n // The autocomplete will only open when options are loaded\r\n this.filterOptions(true);\r\n this.autoCompleteTrigger.openPanel();\r\n }\r\n\r\n public close() {\r\n this.autoCompleteTrigger.closePanel();\r\n }\r\n\r\n public onOpened(): void {\r\n this.forceShowNone = true;\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n\r\n if(this.selectTextOnOpen){\r\n this.inputElement.nativeElement.select(); // Highlights text\r\n }\r\n\r\n if (this.selectedIndex > 0) {\r\n // make the selected option also the active option\r\n this.activeValue = this.getOptVal(this.loadedOptions[this.selectedIndex]);\r\n\r\n setTimeout(() => {\r\n this.scrollToSelectedOption();\r\n });\r\n }\r\n }\r\n\r\n public onClosed(): void {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n\r\n this.isOpen = false;\r\n\r\n if (!this.innerControl.value && this.outerControl.value) {\r\n this.selectOption(null);\r\n }\r\n\r\n this.loadOnlyCurrentValue(this.outerControl.value);\r\n\r\n // reset the options so the autocomplete won't automatically open on the next tab through\r\n this.loadedOptions = [];\r\n }\r\n\r\n public startClick() {\r\n // clicking on certain parts of the mat-field will \"flicker\" the focus, triggering\r\n // error validation early. This tracks those internal clicks so they can be ignored\r\n this.clickInProgress = true;\r\n }\r\n\r\n public endClick() {\r\n this.clickInProgress = false;\r\n }\r\n\r\n public onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.isOpen) {\r\n this.open();\r\n }\r\n }\r\n\r\n public toggleOpen(event: MouseEvent):void {\r\n event.stopPropagation();\r\n\r\n if (this.isOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n public onKey(event: KeyboardEvent): void {\r\n if (event.key === \"Tab\" || event.key === \"Enter\") {\r\n return;\r\n } else {\r\n if (!this.isOpen) {\r\n this.open();\r\n }\r\n\r\n // There is a bug where the cdk a11y KeyManager implementation is not compatible with\r\n // the MatAutocompleteTrigger, which causes the Drop-down not scroll with keyboard\r\n // on long option lists.\r\n //\r\n // https://github.com/angular/components/issues/16598\r\n //\r\n // This work around takes control of the keyboard and manually scrolls and activates\r\n // the options\r\n //\r\n // References:\r\n // https://github.com/angular/components/blob/master/src/material/autocomplete/autocomplete-trigger.ts\r\n // https://github.com/angular/components/blob/master/src/cdk/a11y/key-manager/list-key-manager.ts\r\n // https://github.com/angular/components/blob/master/src/cdk/a11y/key-manager/activedescendant-key-manager.ts\r\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\r\n event.stopPropagation();\r\n\r\n this.initActiveItem();\r\n this.shiftActiveItem(event.key);\r\n this.checkActiveBoundaries();\r\n }\r\n }\r\n }\r\n\r\n // before our keypress binding even triggers, angular has already moved the active selection\r\n // unsyncing it with our display. this code re-initializes the active option\r\n initActiveItem(): void {\r\n if (this.activeValue === undefined || this.activeValue === null) {\r\n this.keyManager.setFirstItemActive();\r\n } else {\r\n let activeIndex: number = this.getActiveIndex();\r\n\r\n // this does the conversion from an index within all options down to a position within the\r\n // displayed range, which is all the keymanager is aware of\r\n let position = activeIndex - this.viewportRenderRange.start;\r\n this.keyManager.setActiveItem(position);\r\n }\r\n }\r\n\r\n shiftActiveItem(key: string): void {\r\n if (key === \"ArrowUp\") {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (key === \"ArrowDown\") {\r\n this.keyManager.setNextItemActive();\r\n }\r\n\r\n if (this.keyManager.activeItem) {\r\n this.activeValue = this.getOptVal((<MatOption>this.keyManager.activeItem).value);\r\n }\r\n }\r\n\r\n // check if the active option index is within the displayed viewport window\r\n // if not, scroll it into view\r\n checkActiveBoundaries(): void {\r\n let activeIndex: number = this.getActiveIndex();\r\n\r\n if (activeIndex < this.viewportVisibleRange.start) {\r\n setTimeout(() => {\r\n this.viewport.scrollToOffset(activeIndex * this.optionSizePx);\r\n });\r\n\r\n } else if (activeIndex > this.viewportVisibleRange.end) {\r\n setTimeout(() => {\r\n this.viewport.scrollToOffset((activeIndex - (this.numOptionsToShow - 1)) * this.optionSizePx);\r\n });\r\n }\r\n }\r\n\r\n getActiveIndex() {\r\n let activeIndex: number = 0;\r\n\r\n if (this.activeValue !== undefined && this.activeValue !== null) {\r\n\r\n // if we added a none option the returned index would be off by one\r\n let valIndex = this.getOptIndex(this.activeValue) + (this.allowNone && (this.forceShowNone || !this.innerControl.value) ? 1 : 0);\r\n\r\n // the index should be within the range of our entire buffer, or just allow it to reset\r\n if (valIndex >= this.viewportRenderRange.start\r\n && (!this.viewportRenderRange.end || valIndex <= this.viewportRenderRange.end)\r\n ) {\r\n activeIndex = valIndex;\r\n }\r\n }\r\n\r\n return activeIndex;\r\n }\r\n\r\n public onFocus() {\r\n if (!this.isOpen) {\r\n // Highlights text\r\n if (this.selectTextOnOpen) {\r\n this.inputElement.nativeElement.select();\r\n }\r\n }\r\n }\r\n\r\n public onFocusOut() {\r\n // mark control touched and trigger error validation\r\n if (!this.clickInProgress) {\r\n this.close();\r\n this.onTouchedFn();\r\n }\r\n }\r\n\r\n public selectOption(opt: any): void {\r\n let newVal = this.getOptVal(opt, this.forceEmitObject);\r\n\r\n if (this.noNgControl) {\r\n this.outerControl.setValue(newVal);\r\n }\r\n\r\n this.onChangeFn(newVal);\r\n this.optionSelected.emit(newVal);\r\n this.optionChanged.emit(newVal);\r\n }\r\n\r\n public scrollToSelectedOption(): void {\r\n // scroll to the currently selected option when we open the dropdown\r\n if (this.selectedIndex > 0) {\r\n let offsetIndex: number = this.selectedIndex + (this.allowNone ? 1 : 0); // adjust for None entry\r\n offsetIndex -= (this.numOptionsToShow / 2) - 1; // calculate middle of viewport\r\n this.viewport.scrollToOffset(offsetIndex * this.optionSizePx);\r\n }\r\n }\r\n\r\n getOptVal(opt: any, forceObject: boolean = false): any {\r\n if (this.valueField && !forceObject) {\r\n if (opt !== null && opt !== undefined && typeof opt === \"object\" && this.valueField in opt) {\r\n return opt[this.valueField];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return opt;\r\n }\r\n\r\n getOptIndex(optValue: any): number {\r\n // find the index for the currently selected option\r\n if (optValue !== null && optValue !== undefined) {\r\n return this.loadedOptions.findIndex((option: any) => {\r\n return this.getOptVal(option) === optValue;\r\n });\r\n }\r\n return undefined;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component, ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output, SimpleChange,\r\n SimpleChanges, ViewChild,\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR, NgControl} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {debounceTime} from \"rxjs/operators\";\r\nimport {MatLegacySelect as MatSelect} from \"@angular/material/legacy-select\";\r\nimport {LegacyFloatLabelType as FloatLabelType} from \"@angular/material/legacy-form-field\";\r\n\r\n@Component({\r\n selector: \"hci-multi-combobox\",\r\n template: `\r\n <div class=\"combobox-multi-container d-flex font-sm\">\r\n <mat-form-field [appearance]=\"appearance\" [matTooltip]=\"this.tooltip\" [floatLabel]=\"floatLabel\">\r\n <mat-label *ngIf=\"label !== undefined\">{{ label }}</mat-label>\r\n <mat-label *ngIf=\"label === undefined\">\r\n {{ temporaryPlaceholder ? (outerControl.value && outerControl.value.length ? '' : placeholder) : placeholder }}\r\n </mat-label>\r\n <input #input matInput name=\"customMultiComboBoxFilter\" class=\"ellipsis\"\r\n (focus)=\"this.onInputFocus()\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"temporaryPlaceholder ? (outerControl.value && outerControl.value.length ? '' : placeholder) : placeholder\"\r\n [formControl]=\"this.innerControl\"\r\n [attr.cdkFocusInitial]=\"initialFocus === undefined ? null : initialFocus\">\r\n <div matSuffix class=\"hci-combobox-arrow-wrapper\">\r\n <mat-select\r\n #select [multiple]=\"true\"\r\n (selectionChange)=\"this.selectOptions($event.value)\"\r\n (openedChange)=\"this.onOpenedChange($event)\"\r\n [(ngModel)]=\"selectedListItems\"\r\n [compareWith]=\"compareByID\">\r\n <mat-option *ngFor=\"let opt of this.loadedOptions\" [value]=\"opt\">\r\n {{this.displayField ? opt[this.displayField] : opt}}\r\n </mat-option>\r\n <mat-option *ngIf=\"this.includeLoadingOption\">Loading...</mat-option>\r\n <mat-option *ngIf=\"!this.includeLoadingOption && !this.options.length\">None</mat-option>\r\n </mat-select>\r\n </div>\r\n </mat-form-field>\r\n </div>\r\n `,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: CustomMultiComboBoxComponent,\r\n multi: true,\r\n }],\r\n styles: [``],\r\n})\r\n\r\nexport class CustomMultiComboBoxComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n @ViewChild(\"input\", { static: false}) inputElement: ElementRef;\r\n @ViewChild(\"select\", { static: false}) selectElement: MatSelect;\r\n\r\n @Input() public label: string;\r\n @Input() public placeholder: string = \"\";\r\n @Input() public temporaryPlaceholder: boolean = false;\r\n @Input() public tooltip: string = \"\";\r\n\r\n @Input() public options: any[] = [];\r\n public includeLoadingOption: boolean = true;\r\n public loadedOptions: any[] = [];\r\n private isSelectOpen: boolean = false;\r\n\r\n @Input() private valueField: string;\r\n @Input() private forceEmitObject: boolean = false;\r\n @Input() public displayField: string;\r\n @Input() public appearance: string = \"\";\r\n @Input() public initialFocus: string;\r\n @Input() public floatLabel: FloatLabelType;\r\n\r\n public outerControl: AbstractControl = new UntypedFormControl([]);\r\n public innerControl: UntypedFormControl = new UntypedFormControl(\"\");\r\n private ignoreInnerControlChanges: boolean = false;\r\n private innerControlSubscription: Subscription;\r\n private noNgControl: boolean = false;\r\n public selectedListItems: any[] = [];\r\n\r\n @Output() selectionChanged: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private onChangeFn: (val: any) => void = () => {};\r\n private onTouchedFn: () => void = () => {};\r\n\r\n constructor(private injector: Injector) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let ngControl: NgControl = this.injector.get(NgControl, null);\r\n if (ngControl && ngControl.control) {\r\n this.outerControl = ngControl.control;\r\n setTimeout(() => {\r\n this.loadOnlyCurrentValue();\r\n });\r\n } else {\r\n this.noNgControl = true;\r\n }\r\n\r\n this.innerControlSubscription = this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n if (!this.ignoreInnerControlChanges) {\r\n this.filterOptions();\r\n } else {\r\n this.ignoreInnerControlChanges = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.options) {\r\n let optionsChange: SimpleChange = changes.options;\r\n if (!optionsChange.currentValue) {\r\n this.options = [];\r\n }\r\n }\r\n\r\n this.loadOnlyCurrentValue();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.loadOnlyCurrentValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.innerControl.disable();\r\n this.selectElement.disabled = true;\r\n } else {\r\n this.innerControl.enable();\r\n this.selectElement.disabled = false;\r\n }\r\n }\r\n\r\n public onInputFocus(): void {\r\n this.selectElement.open();\r\n }\r\n\r\n private loadOnlyCurrentValue(): void {\r\n this.loadedOptions = [];\r\n if (this.outerControl.value && this.outerControl.value.length) {\r\n for (let opt of this.options) {\r\n if (this.isOptInOuterValue(opt)) {\r\n this.loadedOptions.push(opt);\r\n }\r\n }\r\n }\r\n this.selectedListItems = this.loadedOptions;\r\n\r\n\r\n let currentValueLabel: string = \"\";\r\n for (let opt of this.loadedOptions) {\r\n if (currentValueLabel) {\r\n currentValueLabel += \", \";\r\n }\r\n currentValueLabel += this.displayField ? opt[this.displayField] : opt;\r\n }\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(currentValueLabel);\r\n }\r\n\r\n private filterOptions(showAll: boolean = false): void {\r\n if (showAll || !this.innerControl.value) {\r\n this.loadedOptions = this.options;\r\n } else {\r\n let searchValue: string = this.innerControl.value.toLowerCase();\r\n this.loadedOptions = this.options.filter((opt: any) => {\r\n let optDisplay: string = (this.displayField ? opt[this.displayField] : opt).toLowerCase();\r\n return optDisplay.includes(searchValue) || this.isOptInOuterValue(opt);\r\n });\r\n }\r\n }\r\n\r\n private isOptInOuterValue(opt: any): boolean {\r\n let optValue: any = this.valueField ? opt[this.valueField] : opt;\r\n if (this.forceEmitObject) {\r\n for (let outerValOpt of this.outerControl.value) {\r\n let outerOptValue: any = this.valueField ? outerValOpt[this.valueField] : outerValOpt;\r\n if (optValue === outerOptValue) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return this.outerControl.value.includes(optValue);\r\n }\r\n }\r\n\r\n public onOpenedChange(opened: boolean): void {\r\n this.isSelectOpen = opened;\r\n if (opened) {\r\n this.onTouchedFn();\r\n\r\n this.inputElement.nativeElement.focus();\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(\"\");\r\n\r\n setTimeout(() => {\r\n this.filterOptions(true);\r\n this.includeLoadingOption = false;\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.loadOnlyCurrentValue();\r\n this.includeLoadingOption = true;\r\n });\r\n }\r\n }\r\n\r\n public selectOptions(options: any[]): void {\r\n let newVal: any[] = [];\r\n for (let opt of options) {\r\n if (opt) {\r\n newVal.push((this.valueField && !this.forceEmitObject) ? opt[this.valueField] : opt);\r\n }\r\n }\r\n if (this.noNgControl) {\r\n this.outerControl.setValue(newVal);\r\n }\r\n\r\n this.onChangeFn(newVal);\r\n this.selectionChanged.emit(newVal);\r\n\r\n if (this.isSelectOpen) {\r\n this.inputElement.nativeElement.focus();\r\n }\r\n }\r\n\r\n compareByID(itemOne, itemTwo) {\r\n if(!itemOne) {\r\n return false;\r\n } else if (!itemTwo) {\r\n return false;\r\n } else {\r\n if(this.valueField) {\r\n return itemOne[this.valueField] && itemTwo[this.valueField] && itemOne[this.valueField] === itemTwo[this.valueField];\r\n } else {\r\n return itemOne === itemTwo;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.innerControlSubscription) {\r\n this.innerControlSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {MatLegacySelectModule as MatSelectModule} from \"@angular/material/legacy-select\";\r\nimport {MatLegacyAutocompleteModule as MatAutocompleteModule} from \"@angular/material/legacy-autocomplete\";\r\nimport {MatLegacyInputModule as MatInputModule} from \"@angular/material/legacy-input\";\r\nimport {MatLegacyTooltipModule as MatTooltipModule} from \"@angular/material/legacy-tooltip\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {ScrollingModule} from \"@angular/cdk/scrolling\";\r\n\r\nimport {MdSelectComponent} from \"./md-select.component\";\r\nimport {NativeSelectComponent} from \"./native-select.component\";\r\nimport {MdMultiSelectComponent} from \"./md-multi-select.component\";\r\nimport {CustomComboBoxComponent} from \"./custom-combobox.component\";\r\nimport {CustomMultiComboBoxComponent} from \"./custom-multi-combobox.component\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport {DictionaryServiceModule} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n ScrollingModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n DictionaryServiceModule\r\n ],\r\n declarations: [\r\n MdSelectComponent,\r\n MdMultiSelectComponent,\r\n NativeSelectComponent,\r\n CustomComboBoxComponent,\r\n CustomMultiComboBoxComponent\r\n ],\r\n exports: [\r\n MdSelectComponent,\r\n MdMultiSelectComponent,\r\n NativeSelectComponent,\r\n CustomComboBoxComponent,\r\n CustomMultiComboBoxComponent\r\n ]\r\n})\r\nexport class SelectModule {}\r\n","import {\r\n ChangeDetectorRef, Component, EventEmitter, Input, isDevMode, Output, SimpleChange,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\n\r\n/**\r\n * I'm just screwing around with some ideas here, beware of actually using any of this code.\r\n */\r\n@Component({\r\n selector: \"hci-search\",\r\n template: `\r\n <div class=\"input-group \">\r\n <input #searchBox type=\"text\"\r\n (keyup.enter)=\"doSearch(searchBox.value)\"\r\n class=\"form-control\"\r\n placeholder=\"Search for...\"\r\n aria-label=\"Search for text\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"doSearch(searchBox.value)\">\r\n <i class=\"fas fa-search\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class SearchComponent {\r\n\r\n CHILD_NODE: string = \"children\";\r\n\r\n search: string;\r\n @Input() isArray: boolean;\r\n @Input() isIncludeChildren: boolean;\r\n\r\n @Input() anyComponent: any;\r\n @Input() input: string;\r\n @Input() data: any[];\r\n\r\n @Output() dataFiltered: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n if (isDevMode()) {\r\n console.debug(\"SearchComponent.ngAfterViewInit\");\r\n }\r\n setTimeout(() => {\r\n if (this.anyComponent && this.data && this.input) {\r\n let changes = {};\r\n changes[this.input] = new SimpleChange([], this.data, false);\r\n this.anyComponent.ngOnChanges(changes);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (isDevMode()) {\r\n console.debug(\"SearchComponent.ngOnChanges\");\r\n }\r\n if (changes.data && this.isArray === undefined) {\r\n for (let item of this.data) {\r\n if (item[this.CHILD_NODE]) {\r\n this.isArray = false;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * A tree or a grid? Who knows.\r\n *\r\n * @param {KeyboardEvent} event\r\n */\r\n doSearch(searchBox: string) {\r\n if (isDevMode()) {\r\n console.debug(\"doSearch\");\r\n }\r\n\r\n this.search = searchBox;\r\n let filteredData = null;\r\n if (this.isArray) {\r\n console.debug(\"array option\");\r\n filteredData = this.filterArray(this.data);\r\n } else if(this.isIncludeChildren) {\r\n console.debug(\"child option\");\r\n filteredData = this.filterTreeIncludeChildren(JSON.parse(JSON.stringify(this.data)));\r\n } else {\r\n console.debug(\"not child option\");\r\n filteredData = this.filterTree(JSON.parse(JSON.stringify(this.data)));\r\n }\r\n\r\n // This is what triggers the @Output\r\n this.dataFiltered.emit(filteredData);\r\n\r\n if (this.anyComponent) {\r\n let changes = {};\r\n changes[this.input] = new SimpleChange(this.anyComponent[this.input], filteredData, false);\r\n this.anyComponent.ngOnChanges(changes);\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n filterArray(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterArray\");\r\n }\r\n return data.filter((o: any) => {\r\n return (o[\"name\"].indexOf(this.search) >= 0);\r\n });\r\n }\r\n\r\n /**\r\n * Recursive tree search. It will include parent nodes if a leaf node matches the search string.\r\n *\r\n * @param {any[]} data\r\n * @returns {any[]}\r\n */\r\n filterTree(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterTreeOrigional\");\r\n }\r\n let filteredData: any[] = [];\r\n for (let child of data) {\r\n let pushed: boolean = false;\r\n if (child[\"children\"]) {\r\n child[\"children\"] = this.filterTree(child[\"children\"]);\r\n if (child[\"children\"].length > 0) {\r\n pushed = true;\r\n filteredData.push(child);\r\n }\r\n }\r\n if (!pushed && child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Recursive tree search. It will include children nodes if a parent node matches the search string.\r\n *\r\n * @param {any[]} data\r\n * @returns {any[]}\r\n */\r\n filterTreeIncludeChildren(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterTreeIncludeChildren\");\r\n }\r\n let filteredData: any[] = [];\r\n for (let child of data) {\r\n if (child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }else {\r\n let pushed: boolean = false;\r\n if (child[\"children\"]) {\r\n child[\"children\"] = this.filterTreeIncludeChildren(child[\"children\"]);\r\n if (child[\"children\"].length > 0) {\r\n pushed = true;\r\n filteredData.push(child);\r\n }\r\n }\r\n if (!pushed && child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }\r\n }\r\n }\r\n return filteredData;\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SearchComponent} from \"./search.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule\r\n ],\r\n declarations: [\r\n SearchComponent\r\n ],\r\n exports: [\r\n SearchComponent\r\n ]\r\n})\r\nexport class SearchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.DropdownSelectResultComponent","i1.DropdownSelectComponent","i1.DropdownService","i3","i4.TemplateDropdownDirective","i5.DropdownSelectComponent","i1","i2","i1.DateComponent","MatTabsModule","MatFormFieldModule","MatInputModule","i4","i5","i6","i7","MatAutocompleteTrigger","MatSelectModule","MatAutocompleteModule","MatTooltipModule","MatProgressSpinnerModule"],"mappings":"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"}
1
+ {"version":3,"file":"huntsman-cancer-institute-input.mjs","sources":["../../../projects/input/src/dropdown/dropdown-select-result.component.ts","../../../projects/input/src/dropdown/select-item.ts","../../../projects/input/src/dropdown/messages.ts","../../../projects/input/src/dropdown/dropdown-select.component.ts","../../../projects/input/src/dropdown/template-dropdown.directive.ts","../../../projects/input/src/dropdown/dropdown.service.ts","../../../projects/input/src/dropdown/dropdown.component.ts","../../../projects/input/src/dropdown/dropdown.module.ts","../../../projects/input/src/date/date-validator.ts","../../../projects/input/src/date/date-base.ts","../../../projects/input/src/date/date-date.component.ts","../../../projects/input/src/date/date-date-range.component.ts","../../../projects/input/src/date/date.module.ts","../../../projects/input/src/inline/inline.component.ts","../../../projects/input/src/inline/inline.module.ts","../../../projects/input/src/select/md-select.component.ts","../../../projects/input/src/select/native-select.component.ts","../../../projects/input/src/select/md-multi-select.component.ts","../../../projects/input/src/select/custom-combobox.component.ts","../../../projects/input/src/select/custom-multi-combobox.component.ts","../../../projects/input/src/select/select.module.ts","../../../projects/input/src/search/search.component.ts","../../../projects/input/src/search/search.module.ts","../../../projects/input/src/huntsman-cancer-institute-input.ts"],"sourcesContent":["import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from \"@angular/core\";\r\n\r\nimport {SelectItem} from \"./select-item\";\r\n\r\n@Component({\r\n selector: \"hci-dropdown-select-result\",\r\n template: `\r\n <div class=\"select-results-container\" *ngIf=\"items !== undefined && items.length > 0\" id=\"resultsContainer\">\r\n <div *ngFor=\"let item of items; let i = index;\"\r\n class=\"select-result\" id=\"item-{{i}}\"\r\n (mousedown)=\"onSelected(item)\" [class.selected]=\"isSelected(item)\"\r\n [class.active]=\"i === activeIndex\"\r\n (mouseover)=\"onMouseOver(i)\"\r\n (mouseenter)=\"onHovering($event)\">\r\n <ng-container [ngTemplateOutlet]=\"templateRef\"\r\n [ngTemplateOutletContext]=\"{$item: item, $entity: item.entity, $id: item.id, $index: i}\"></ng-container>\r\n <ng-container *ngIf=\"!templateRef\">{{item.text}}</ng-container>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class DropdownSelectResultComponent implements OnInit {\r\n\r\n @Input() items: SelectItem[];\r\n @Input() searchFocused: boolean;\r\n @Input() selectedItems: SelectItem[];\r\n @Input() templateRef: TemplateRef<any>;\r\n @Output() itemSelectedEvent: EventEmitter<any> = new EventEmitter();\r\n activeIndex = 0;\r\n private usingKeys = false;\r\n\r\n ngOnInit() {}\r\n\r\n onSelected(item: SelectItem) {\r\n this.itemSelectedEvent.emit(item);\r\n }\r\n\r\n onMouseOver(index: number) {\r\n if (!this.usingKeys) {\r\n this.activeIndex = index;\r\n }\r\n }\r\n\r\n onHovering(event) {\r\n this.usingKeys = false;\r\n }\r\n\r\n isSelected(currentItem) {\r\n let result = false;\r\n this.selectedItems.forEach(item => {\r\n if (item.id === currentItem.id) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n activeNext() {\r\n if (this.activeIndex >= this.items.length - 1) {\r\n this.activeIndex = this.items.length - 1;\r\n } else {\r\n this.activeIndex++;\r\n }\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n activePrevious() {\r\n if (this.activeIndex - 1 < 0) {\r\n this.activeIndex = 0;\r\n } else {\r\n this.activeIndex--;\r\n }\r\n this.scrollToElement();\r\n this.usingKeys = true;\r\n }\r\n\r\n scrollToElement() {\r\n const element = document.getElementById(\"item-\" + this.activeIndex);\r\n const container = document.getElementById(\"resultsContainer\");\r\n\r\n if (element) {\r\n container.scrollTop = element.offsetTop;\r\n }\r\n }\r\n\r\n selectCurrentItem() {\r\n if (this.items[this.activeIndex]) {\r\n this.onSelected(this.items[this.activeIndex]);\r\n this.activeIndex = 0;\r\n }\r\n }\r\n}\r\n","/**\r\n * @description: A model of common data for dropdown components.\r\n * @since 5.0.0\r\n */\r\n\r\nexport interface SelectItem {\r\n id: any;\r\n text: string;\r\n entity?: any;\r\n}\r\n\r\nexport const KEY_CODE = Object.freeze({\r\n DOWN_ARROW: 40,\r\n UP_ARROW: 38,\r\n ENTER: 13,\r\n TAB: 9,\r\n DELETE: 8\r\n});\r\n\r\n\r\n","/**\r\n * A model of common messages for dropdown components.\r\n *\r\n * @since 5.0.0\r\n */\r\nexport class Messages {\r\n\r\n static readonly PARTIAL_COUNT_VAR = \"%PARTIAL_COUNT%\";\r\n static readonly TOTAL_COUNT_VAR = \"%TOTAL_COUNT%\";\r\n\r\n moreResultsMsg?: string;\r\n noResultsMsg?: string;\r\n}\r\n","import {AfterViewInit, Component, Input, TemplateRef, EventEmitter, ViewChild, forwardRef, Output} from \"@angular/core\";\r\nimport {ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\nimport {Observable, of} from \"rxjs\";\r\nimport {debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, tap} from \"rxjs/operators\";\r\n\r\nimport {DropdownSelectResultComponent} from \"./dropdown-select-result.component\";\r\nimport {SelectItem, KEY_CODE} from \"./select-item\";\r\nimport {Messages} from \"./messages\";\r\n\r\nconst VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DropdownSelectComponent),\r\n multi: true\r\n};\r\n\r\nconst noop = () => {};\r\n\r\n@Component({\r\n selector: \"hci-dropdown-select\",\r\n template: `\r\n <div class=\"select-container\">\r\n <ul class=\"form-control\"\r\n [class.simple-selection]=\"!multiple\"\r\n [class.multiple-selection]=\"multiple\"\r\n [class.search-focused]=\"searchFocused\"\r\n [class.readonly]=\"disabled\">\r\n\r\n <ng-container *ngIf=\"!searchFocused || multiple\">\r\n <li *ngFor=\"let item of selectedItems\" class=\"select-selected label label-info\" [class.label]=\"multiple\"\r\n [class.label-info]=\"multiple\">\r\n <span class=\"selected-item-text\">{{item.text}}</span>\r\n <a class=\"select-selection-remove\" (click)=\"removeItem(item)\" *ngIf=\"!disabled\">\r\n <i [class]=\"deleteIcon\" [class.text-info]=\"!multiple\"></i>\r\n </a>\r\n </li>\r\n </ng-container>\r\n\r\n <li class=\"select-input\">\r\n <input #termInput type=\"text\"\r\n [placeholder]=\"getPlaceholder()\"\r\n [formControl]=\"term\"\r\n [class.hideable]=\"isHideable()\"\r\n [style.width]=\"getInputWidth()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n (click)=\"showResults()\" *ngIf=\"!disabled\" attr.aria-label=\"{{getPlaceholder()}}\"/>\r\n </li>\r\n </ul>\r\n <span class=\"icon-drop-menu\" *ngIf=\"inputState===0\" (click)=\"showResults()\">\r\n <span class=\"after\"></span>\r\n </span>\r\n <div class=\"results-container\" *ngIf=\"resultsVisible\">\r\n <span class=\"results-msg\" *ngIf=\"listedData && (listedData.length + selectedItems.length) < resultsCount\">\r\n {{getCountMessage()}}\r\n </span>\r\n <span class=\"results-msg no-results-msg\" *ngIf=\"searchFocused && listedData && listedData.length === 0\">\r\n {{messages && messages.noResultsMsg ? messages.noResultsMsg : NO_RESULTS_MSG}}\r\n </span>\r\n <hci-dropdown-select-result #results\r\n [selectedItems]=\"selectedItems\"\r\n [items]=\"listedData\"\r\n (itemSelectedEvent)=\"onItemSelected($event)\"\r\n [templateRef]=\"templateRef\"\r\n [searchFocused]=\"searchFocused\"></hci-dropdown-select-result>\r\n </div>\r\n </div>\r\n `,\r\n providers: [VALUE_ACCESSOR],\r\n host: {class: \"flex-grow-1\"}\r\n})\r\nexport class DropdownSelectComponent implements AfterViewInit, ControlValueAccessor {\r\n\r\n MORE_RESULTS_MSG = \"Showing \" + Messages.PARTIAL_COUNT_VAR + \" of \" + Messages.TOTAL_COUNT_VAR + \" results.\";\r\n NO_RESULTS_MSG = \"No results found\";\r\n\r\n @Input() messages: Messages = {\r\n moreResultsMsg: this.MORE_RESULTS_MSG,\r\n noResultsMsg: this.NO_RESULTS_MSG\r\n };\r\n\r\n @Input() dataProvider: (item: string, selected?: any[]) => Observable<any[]>;\r\n @Input() selectedProvider: (ids: any[]) => Observable<any[]>;\r\n @Input() selectItemAdapter: (entity: any) => SelectItem;\r\n @Input() referenceMode: \"id\" | \"entity\" = \"id\";\r\n @Input() placeholder = \"\";\r\n @Input() disabled = false;\r\n @Input() multiple = false;\r\n @Input() clientMode = false;\r\n @Input() deleteIcon = \"fas fa-times-circle\";\r\n @Input() inputState = 2; // selectIcon controller: 0->with selectIcon 2->without selectIcon\r\n @Input() resultsCount;\r\n @Input() searchDelay = 100;\r\n\r\n @Output() select: EventEmitter<SelectItem> = new EventEmitter<SelectItem>();\r\n @Output() remove: EventEmitter<SelectItem> = new EventEmitter<SelectItem>();\r\n\r\n @ViewChild(\"results\", {static: false}) results: DropdownSelectResultComponent;\r\n\r\n onTouchedCallback: () => void = noop;\r\n onChangeCallback: (_: any) => void = noop;\r\n templateRef: TemplateRef<any>;\r\n term = new UntypedFormControl();\r\n searchFocused = false;\r\n resultsVisible = false;\r\n listedData: SelectItem[];\r\n modifiedData: SelectItem[];\r\n selectedItems: SelectItem[] = [];\r\n\r\n @ViewChild(\"termInput\", {static: false}) private termInput;\r\n\r\n private placeholderSelected = \"\";\r\n\r\n ngAfterViewInit() {\r\n this.subscribeToChangesAndLoadDataFromObservable();\r\n }\r\n\r\n onItemSelected(item: SelectItem) {\r\n if (this.multiple) {\r\n this.selectedItems.push(item);\r\n const index = this.listedData.indexOf(item, 0);\r\n if (index > -1) {\r\n this.listedData.splice(index, 1);\r\n }\r\n } else {\r\n this.selectedItems.length = 0;\r\n this.selectedItems.push(item);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.term.patchValue(\"\", {emitEvent: false});\r\n setTimeout(() => this.focusInput(), 1);\r\n this.resultsVisible = false;\r\n this.select.emit(item);\r\n if (!this.multiple) {\r\n this.placeholderSelected = item.text;\r\n }\r\n }\r\n\r\n focusInput() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.resultsVisible = false;\r\n }\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n writeValue(selectedValues: any): void {\r\n if (selectedValues) {\r\n if (this.referenceMode === \"id\") {\r\n this.populateItemsFromIds(selectedValues);\r\n } else {\r\n this.populateItemsFromEntities(selectedValues);\r\n }\r\n } else {\r\n this.placeholderSelected = \"\";\r\n this.selectedItems = [];\r\n }\r\n }\r\n\r\n getCountMessage(): string {\r\n let msg = this.messages && this.messages.moreResultsMsg ? this.messages.moreResultsMsg : this.MORE_RESULTS_MSG;\r\n msg = msg.replace(Messages.PARTIAL_COUNT_VAR, String(this.listedData.length));\r\n msg = msg.replace(Messages.TOTAL_COUNT_VAR, String(this.resultsCount - this.selectedItems.length));\r\n return msg;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n removeItem(item: SelectItem) {\r\n const index = this.selectedItems.indexOf(item, 0);\r\n\r\n if (index > -1) {\r\n this.selectedItems.splice(index, 1);\r\n }\r\n\r\n this.onChangeCallback(this.buildValue());\r\n this.remove.emit(item);\r\n if (!this.multiple) {\r\n this.placeholderSelected = \"\";\r\n }\r\n }\r\n\r\n getPlaceholder(): string {\r\n return this.selectedItems.length > 0 ? this.placeholderSelected : this.placeholder;\r\n }\r\n\r\n getInputWidth(): string {\r\n const searchEmpty = this.selectedItems.length === 0 && (this.term.value === null || this.term.value.length === 0);\r\n const length = this.term.value === null ? 0 : this.term.value.length;\r\n if (!this.multiple) {\r\n return \"100%\";\r\n } else {\r\n return searchEmpty ? \"100%\" : (1 + length * .6) + \"em\";\r\n }\r\n }\r\n\r\n isHideable(): boolean {\r\n return !this.multiple && this.placeholderSelected !== \"\";\r\n }\r\n\r\n onFocus() {\r\n this.searchFocused = true;\r\n }\r\n\r\n onBlur() {\r\n this.term.patchValue(\"\", {emitEvent: false});\r\n this.searchFocused = false;\r\n this.resultsVisible = false;\r\n this.onTouchedCallback();\r\n }\r\n\r\n onKeyUp(ev: KeyboardEvent) {\r\n if (this.results) {\r\n if (ev.keyCode === KEY_CODE.DOWN_ARROW) {\r\n this.results.activeNext();\r\n } else if (ev.keyCode === KEY_CODE.UP_ARROW) {\r\n this.results.activePrevious();\r\n } else if (ev.keyCode === KEY_CODE.ENTER) {\r\n this.results.selectCurrentItem();\r\n }\r\n } else {\r\n if (this.inputState === 0) {\r\n if (ev.keyCode === KEY_CODE.ENTER || ev.keyCode === KEY_CODE.DOWN_ARROW) {\r\n this.showResults();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeyDown(ev: KeyboardEvent) {\r\n if (this.results) {\r\n if (ev.keyCode === KEY_CODE.TAB) {\r\n this.results.selectCurrentItem();\r\n }\r\n }\r\n\r\n if (ev.keyCode === KEY_CODE.DELETE) {\r\n if ((!this.term.value || this.term.value.length === 0) && this.selectedItems.length > 0) {\r\n this.removeItem(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n }\r\n }\r\n\r\n onKeyPress(ev: KeyboardEvent) {\r\n if (ev.keyCode === KEY_CODE.ENTER) {\r\n ev.preventDefault();\r\n }\r\n }\r\n\r\n showResults() {\r\n if (!this.disabled) {\r\n this.termInput.nativeElement.focus();\r\n this.subscribeToResults(of(\"\"));\r\n }\r\n this.searchFocused = !this.disabled;\r\n }\r\n\r\n focus(): void {\r\n this.termInput.nativeElement.focus();\r\n }\r\n\r\n private subscribeToChangesAndLoadDataFromObservable() {\r\n const observable = this.term.valueChanges.pipe(\r\n debounceTime(this.searchDelay),\r\n distinctUntilChanged()\r\n );\r\n this.subscribeToResults(observable);\r\n }\r\n\r\n private subscribeToResults(observable: Observable<string>): void {\r\n observable.pipe(\r\n tap(() => this.resultsVisible = false),\r\n filter((term) => term.length >= this.inputState),\r\n switchMap(term => this.loadDataFromObservable(term)),\r\n map(items => items.filter(item => !(this.multiple && this.alreadySelected(item)))),\r\n tap(() => this.resultsVisible = this.searchFocused)\r\n ).subscribe((items) => this.listedData = items);\r\n }\r\n\r\n private loadDataFromObservable(term: string): Observable<SelectItem[]> {\r\n return this.clientMode ? this.fetchAndfilterLocalData(term) : this.fetchData(term);\r\n }\r\n\r\n private alreadySelected(item: SelectItem): boolean {\r\n let result = false;\r\n this.selectedItems.forEach(selectedItem => {\r\n if (selectedItem.id === item.id) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private fetchAndfilterLocalData(term: string): Observable<SelectItem[]> {\r\n if (!this.modifiedData) {\r\n return this.fetchData(\"\").pipe(\r\n mergeMap((items) => {\r\n this.modifiedData = items;\r\n return this.filterLocalData(term);\r\n })\r\n );\r\n } else {\r\n return this.filterLocalData(term);\r\n }\r\n }\r\n\r\n private fetchData(term: string): Observable<SelectItem[]> {\r\n return this\r\n .dataProvider(term, this.buildValue())\r\n .pipe(map((items: any[]) => this.adaptItems(items)));\r\n }\r\n\r\n private filterLocalData(term: string): Observable<SelectItem[]> {\r\n return of(this.modifiedData.filter((item) => this.containsText(item, term)));\r\n }\r\n\r\n private containsText(item, term: string) {\r\n return item.text.toUpperCase().indexOf(term.toUpperCase()) !== -1;\r\n }\r\n\r\n private adaptItems(items: any[]): SelectItem[] {\r\n const convertedItems = [];\r\n items.map((item) => this.selectItemAdapter(item))\r\n .forEach((selectItem) => convertedItems.push(selectItem));\r\n return convertedItems;\r\n }\r\n\r\n private buildValue() {\r\n return \"id\" === this.referenceMode ? this.getSelectedIds() : this.getEntities();\r\n }\r\n\r\n private getSelectedIds(): any {\r\n if (this.multiple) {\r\n const ids: any[] = [];\r\n this.selectedItems.forEach(item => ids.push(item.id));\r\n return ids;\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].id;\r\n }\r\n }\r\n\r\n private getEntities(): any[] {\r\n if (this.multiple) {\r\n const entities = [];\r\n this.selectedItems.forEach(item => {\r\n entities.push(item.entity);\r\n });\r\n return entities;\r\n } else {\r\n return this.selectedItems.length === 0 ? null : this.selectedItems[0].entity;\r\n }\r\n }\r\n\r\n private populateItemsFromEntities(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithEntities(selectedValues);\r\n } else {\r\n const selectItem = this.selectItemAdapter(selectedValues);\r\n this.selectedItems = [selectItem];\r\n this.placeholderSelected = selectItem.text;\r\n }\r\n }\r\n\r\n private handleMultipleWithEntities(selectedValues: any) {\r\n this.selectedItems = [];\r\n selectedValues.forEach((entity) => {\r\n const item = this.selectItemAdapter(entity);\r\n const ids = this.getSelectedIds();\r\n\r\n if (ids.indexOf(item.id) === -1) {\r\n this.selectedItems.push(item);\r\n }\r\n });\r\n }\r\n\r\n private populateItemsFromIds(selectedValues: any) {\r\n if (this.multiple) {\r\n this.handleMultipleWithIds(selectedValues);\r\n } else {\r\n this.handleSingleWithId(selectedValues);\r\n }\r\n }\r\n\r\n private handleMultipleWithIds(selectedValues: any) {\r\n if (selectedValues !== undefined && this.selectedProvider !== undefined) {\r\n const uniqueIds = [];\r\n selectedValues.forEach((id) => {\r\n if (uniqueIds.indexOf(id) === -1) {\r\n uniqueIds.push(id);\r\n }\r\n });\r\n\r\n this.selectedProvider(uniqueIds).subscribe((items: any[]) => {\r\n this.selectedItems = items.map(this.selectItemAdapter);\r\n });\r\n }\r\n }\r\n\r\n private handleSingleWithId(id: any) {\r\n if (id !== undefined && this.selectedProvider !== undefined) {\r\n this.selectedProvider([id]).subscribe((items: any[]) => {\r\n items.forEach((item) => {\r\n const selectItem = this.selectItemAdapter(item);\r\n this.selectedItems = [selectItem];\r\n this.placeholderSelected = selectItem.text;\r\n });\r\n });\r\n }\r\n }\r\n}\r\n","import {Directive, Host, TemplateRef} from \"@angular/core\";\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\n\r\n/**\r\n * A customized template for Dropdown list items.\r\n */\r\n@Directive({\r\n selector: \"[appTemplateDropdown]\"\r\n})\r\nexport class TemplateDropdownDirective<T> {\r\n\r\n constructor(private templateRef: TemplateRef<T>, @Host() host: DropdownSelectComponent) {\r\n if (host instanceof DropdownSelectComponent) {\r\n host.templateRef = templateRef;\r\n }\r\n }\r\n\r\n}\r\n","import {Inject, Injectable, isDevMode} from \"@angular/core\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\n\r\nimport {Observable, of, timer} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nimport {DICTIONARY_ENDPOINT} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\nexport const DROPDOWN_TYPE = Object.freeze({\r\n INPUT_SINGLE: 0,\r\n INPUT_MULTI: 1,\r\n SELECT_SINGLE: 2,\r\n SELECT_MULTI: 3,\r\n SELECT_SINGLE_CUSTOM: 4,\r\n SELECT_MULTI_CUSTOM: 5\r\n});\r\n\r\n@Injectable()\r\nexport class DropdownService {\r\n\r\n listField : string[] = [];\r\n\r\n DICTIONARY_ENDPOINT = \"\";\r\n\r\n private headers: HttpHeaders = new HttpHeaders().set(\"Content-Type\", \"application/json\");\r\n private options = {headers: this.headers};\r\n\r\n sortFunction: (dropdownObj1: Object, dropdownObj2: Object) => number = (dropdownObj1: Object, dropdownObj2: Object) => {\r\n if (dropdownObj1[this.listField[0]] < dropdownObj2[this.listField[0]]) {\r\n return -1;\r\n } else if (dropdownObj1[this.listField[0]] > dropdownObj2[this.listField[0]]) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n constructor(private http: HttpClient, @Inject(DICTIONARY_ENDPOINT) private dictionaryEndpoint: string) {}\r\n\r\n /**\r\n * Get a list of data from the given object or url to set to the dropdown list.\r\n * @param {string} urlStr\r\n * @param {Object[]} dataObject\r\n * @param {string} displayField\r\n * @returns {any[]}\r\n */\r\n setData(urlStr: string, dataObject: Object[], displayField: string): any[] {\r\n let listFieldSet: string[] = [];\r\n let dataListSet: Object[] = [];\r\n\r\n if (dataObject) {\r\n // Set data from the passed object.\r\n if (isDevMode) {\r\n console.debug(\"DropdownService.setData. dataObject=:\", dataObject);\r\n }\r\n if (dataObject) {\r\n if (listFieldSet.length === 0 || listFieldSet[0] === \"\") {\r\n dataObject.forEach(item => dataListSet.push(item));\r\n listFieldSet.push(displayField);\r\n this.listField.push(displayField);\r\n }\r\n }\r\n } else if (urlStr && urlStr.length > 0) {\r\n // Set data from a passed url.\r\n if (isDevMode) {\r\n console.debug(\"DropdownService.setData. urlStr=:\", urlStr);\r\n }\r\n this.getDataList(urlStr).subscribe((data: Object[]) => {\r\n if (data) {\r\n if (listFieldSet.length === 0 || listFieldSet[0] === \"\") {\r\n data.forEach(item => dataListSet.push(item));\r\n listFieldSet.push(displayField);\r\n this.listField.push(displayField);\r\n\r\n console.debug(data);\r\n console.debug(this.listField);\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error(\"Neither optionData or dataUrl were defined.\");\r\n }\r\n\r\n return dataListSet;\r\n }\r\n\r\n listData(pattern: string, dataSet: any[], maxResults?: number): Observable<Object[]> {\r\n return of(dataSet\r\n .filter((dropdownObj) => dropdownObj[this.listField[0]].toUpperCase().indexOf(pattern.toUpperCase()) !== -1)\r\n .sort(this.sortFunction));\r\n }\r\n\r\n /**\r\n * Get the max list data\r\n * @param {string} pattern\r\n * @param {number} maxResults\r\n * @param {any[]} dataSet\r\n * @returns {Observable<{count: number; results: Object[]}>}\r\n */\r\n listDataMax(pattern: string, maxResults: number, dataSet: any[]): Observable<{ count: number, results: Object[] }> {\r\n const filteredList = dataSet\r\n .filter((dropdownObj) => dropdownObj[this.listField[0]].toUpperCase().indexOf(pattern.toUpperCase()) !== -1)\r\n .sort(this.sortFunction);\r\n\r\n return timer(3000)\r\n .pipe(map((t) => {\r\n return {\r\n count: filteredList.length,\r\n results: maxResults && maxResults < filteredList.length ? filteredList.splice(0, maxResults) : filteredList\r\n };\r\n }));\r\n }\r\n\r\n /**\r\n * Push the selected items to a list to show in the input text area.\r\n * @param {any[]} ids\r\n * @param {any[]} dataSet\r\n * @returns {Observable<Object[]>}\r\n */\r\n getItems(ids: any[], dataSet: any[]): Observable<Object[]> {\r\n const selectedItems: Object[] = [];\r\n\r\n ids.forEach((id) => {\r\n dataSet\r\n .filter((item) => item.id === id)\r\n .map((item) => selectedItems.push(item));\r\n });\r\n\r\n return of(selectedItems);\r\n }\r\n\r\n // Get data from the given url to set in the dropdown list.\r\n getDataList(urlStr: string): Observable<any> {\r\n return this.http.get(this.dictionaryEndpoint + urlStr);\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, isDevMode, OnInit, Output, ViewChild} from \"@angular/core\";\r\nimport {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from \"@angular/forms\";\r\n\r\nimport {Observable} from \"rxjs\";\r\nimport {map, tap} from \"rxjs/operators\";\r\n\r\nimport {DropdownService} from \"./dropdown.service\";\r\nimport {SelectItem} from \"./select-item\";\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\n\r\n@Component({\r\n selector: \"hci-dropdown\",\r\n template: `\r\n <form novalidate [formGroup]=\"dropdownForm\">\r\n <div class=\"form-group\">\r\n <hci-dropdown-select #dropdownSingle *ngIf=\"dropdownType === 0\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingleTypeAhead\"\r\n [multiple]=\"false\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n referenceMode=\"entity\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 1\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownMultipleTypeAhead\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [clientMode]=\"true\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"true\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 2\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingle\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"false\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [disabled]=\"isDisabled\"\r\n [selectedProvider]=\"getItems\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 3\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownMultiple\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n [multiple]=\"true\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [selectedProvider]=\"getItems\"\r\n [disabled]=\"isDisabled\"\r\n [clientMode]=\"true\"></hci-dropdown-select>\r\n <hci-dropdown-select *ngIf=\"dropdownType === 4\"\r\n [placeholder]=\"placeholder\"\r\n formControlName=\"dropdownSingle\"\r\n [dataProvider]=\"listItems\"\r\n [selectItemAdapter]=\"entityToSelectItem\"\r\n [inputState]=\"0\"\r\n referenceMode=\"entity\"\r\n (select)=\"onSelect($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [selectedProvider]=\"getItems\"\r\n [disabled]=\"isDisabled\"\r\n [clientMode]=\"true\">\r\n <div *appTemplateDropdown=\"let item = $entity; let i = $index\">\r\n <span>[{{item.id}}]</span> {{item[displayField]}}\r\n </div>\r\n </hci-dropdown-select>\r\n </div>\r\n </form>\r\n `,\r\n providers: [DropdownService]\r\n})\r\nexport class DropdownComponent implements OnInit {\r\n\r\n public dropdownForm: UntypedFormGroup;\r\n public getItems: (ids: any[]) => Observable<Object[]>;\r\n public listItems: (item: string) => Observable<Object[]>;\r\n public listItemsMax: (item: string, ids: any[]) => Observable<Object[]>;\r\n public entityToSelectItem: (entity: Object) => SelectItem;\r\n public count: number;\r\n\r\n @Input() inputSingleData: Object;\r\n @Input() inputMultiData: Object[];\r\n @Input() modifiedData: Object[] = [];\r\n @Input() optionData: Object[];\r\n @Input() displayField: string;\r\n @Input() displayId: any;\r\n @Input() dataUrl: string;\r\n @Input() dropdownType: any;\r\n @Input() placeholder: string;\r\n @Input() isDisabled = false;\r\n @Output() inputSingleDataChange = new EventEmitter<any>();\r\n @Output() inputMultiDataChange = new EventEmitter<any>();\r\n\r\n @ViewChild(\"dropdownSingle\", {static: false}) dropdownSingle: DropdownSelectComponent;\r\n\r\n constructor(private dropdownService: DropdownService,\r\n private formBuilder: UntypedFormBuilder) {\r\n }\r\n\r\n ngOnInit() {\r\n this.dropdownForm = this.formBuilder.group({\r\n option: new UntypedFormControl(\"\"),\r\n dropdownSingleTypeAhead: new UntypedFormControl(\"\"),\r\n dropdownMultipleTypeAhead: new UntypedFormControl(\"\"),\r\n dropdownSingle: new UntypedFormControl(\"\"),\r\n dropdownMultiple: new UntypedFormControl(\"\"),\r\n habilitado: true\r\n });\r\n\r\n this.initDropdownForm();\r\n this.initDropdownItem();\r\n\r\n this.dropdownForm.valueChanges.subscribe(() => {});\r\n }\r\n\r\n onSelect(item: SelectItem) {\r\n if (this.dropdownType === 0 || this.dropdownType === 2 || this.dropdownType === 4) {\r\n this.modifiedData.length = 0;\r\n this.modifiedData.push(item.entity);\r\n this.inputSingleData = this.modifiedData[0];\r\n this.inputSingleDataChange.emit(this.inputSingleData);\r\n } else if (this.dropdownType === 1 || this.dropdownType === 3) {\r\n this.modifiedData.push(item.entity);\r\n this.inputMultiData = this.modifiedData;\r\n this.inputMultiDataChange.emit(this.inputMultiData);\r\n }\r\n }\r\n\r\n onRemove(item: SelectItem) {\r\n if (this.modifiedData.length > 0) {\r\n const index = this.modifiedData.indexOf(item.entity, 0);\r\n if (index > -1) {\r\n this.modifiedData.splice(index, 1);\r\n }\r\n }\r\n\r\n if (this.inputSingleData) {\r\n this.inputSingleData = \"\";\r\n this.inputSingleDataChange.emit(this.inputSingleData);\r\n }\r\n\r\n if (this.inputMultiData) {\r\n this.inputMultiData = this.modifiedData;\r\n this.inputMultiDataChange.emit(this.inputMultiData);\r\n }\r\n }\r\n\r\n reset() {\r\n this.dropdownForm.reset();\r\n }\r\n\r\n send(formJson: string) {}\r\n\r\n private initDropdownItem() {\r\n let dataSet: Object[] = [];\r\n\r\n // Set dropdown data list from a given array or a json file\r\n if (this.optionData && this.optionData.length > 0) {\r\n // Get dropdown list data from an object\r\n if (isDevMode()) {\r\n console.debug(\"optionData=\", this.optionData);\r\n }\r\n dataSet = this.dropdownService.setData(undefined, this.optionData, this.displayField);\r\n } else if (this.dataUrl && this.dataUrl !== \"\") {\r\n // Get dropdown list data from an url with json file\r\n if (isDevMode()) {\r\n console.debug(\"dataUrl=\", this.dataUrl);\r\n }\r\n dataSet = this.dropdownService.setData(this.dataUrl, undefined, this.displayField);\r\n } else {\r\n console.error(\"Neither optionData or dataUrl were defined.\");\r\n if (isDevMode()) {\r\n console.debug(\"dataUrl=\", this.dataUrl);\r\n console.debug(\"optionData=\", this.optionData);\r\n }\r\n }\r\n\r\n // Filter and sort data\r\n this.listItems = (term: string) => this.dropdownService.listData(term, dataSet);\r\n this.listItemsMax = (term: string, ids: any[]) => {\r\n const selectedCount = ids ? ids.length : 0;\r\n return this.dropdownService.listDataMax(term, 3 + selectedCount, dataSet)\r\n .pipe(\r\n tap(response => this.count = response.count),\r\n map((response) => response.results)\r\n );\r\n };\r\n\r\n // Get items and set them to the dropdown entiry\r\n this.getItems = (ids: any[]) => this.dropdownService.getItems(ids, dataSet);\r\n this.entityToSelectItem = (entity: any) => {\r\n return {\r\n id: entity[this.displayId],\r\n text: entity[this.displayField],\r\n entity: entity\r\n };\r\n };\r\n }\r\n\r\n private initDropdownForm() {\r\n this.modifiedData.length = 0;\r\n\r\n if (this.dropdownType === 0 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingleTypeAhead\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n\r\n if (this.dropdownType === 1 && this.inputMultiData) {\r\n this.dropdownForm.controls[\"dropdownMultipleTypeAhead\"].setValue(this.inputMultiData);\r\n this.modifiedData = this.inputMultiData;\r\n }\r\n\r\n if (this.dropdownType === 2 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingle\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n\r\n if (this.dropdownType === 3 && this.inputMultiData) {\r\n this.dropdownForm.controls[\"dropdownMultiple\"].setValue(this.inputMultiData);\r\n this.modifiedData = this.inputMultiData;\r\n }\r\n\r\n if (this.dropdownType === 4 && this.inputSingleData) {\r\n this.dropdownForm.controls[\"dropdownSingle\"].setValue(this.inputSingleData);\r\n this.modifiedData.push(this.inputSingleData);\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DropdownSelectComponent} from \"./dropdown-select.component\";\r\nimport {DropdownSelectResultComponent} from \"./dropdown-select-result.component\";\r\nimport {DropdownComponent} from \"./dropdown.component\";\r\nimport {TemplateDropdownDirective} from \"./template-dropdown.directive\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule\r\n ],\r\n declarations: [\r\n TemplateDropdownDirective,\r\n DropdownSelectComponent,\r\n DropdownComponent,\r\n DropdownSelectResultComponent\r\n ],\r\n exports: [\r\n TemplateDropdownDirective,\r\n DropdownSelectComponent,\r\n DropdownComponent,\r\n DropdownSelectResultComponent\r\n ]\r\n})\r\nexport class DropdownModule {}\r\n","import {AbstractControl} from \"@angular/forms\";\r\n\r\nimport moment from \"moment\";\r\n\r\nexport class DateValidator {\r\n static minValue = undefined;\r\n static maxValue = undefined;\r\n\r\n static dateFormatValidator(ac: AbstractControl) {\r\n let dateArr = ac.value.split(\"/\");\r\n if (dateArr.length != 3 || dateArr[0].length > 3 || dateArr[0].length < 1 || dateArr[1].length > 3 ||\r\n dateArr[1].length < 1 || dateArr[2].length !== 4) {\r\n return { \"dateFormatValidator\": true };\r\n }\r\n return null;\r\n }\r\n\r\n static dateRangeValidator(ac: AbstractControl) {\r\n if (ac && ac.value && DateValidator.minValue && DateValidator.maxValue && (moment(ac.value, \"M/D/YYYY\", true).isValid() || moment(ac.value, \"MM/DD/YYYY\", true).isValid())) {\r\n let dateValue = moment(ac.value);\r\n let minDate = moment(DateValidator.convertNgbStructToDate(DateValidator.minValue));\r\n let maxDate = moment(DateValidator.convertNgbStructToDate(DateValidator.maxValue));\r\n\r\n if (dateValue.isBefore(minDate, \"day\") || dateValue.isAfter(maxDate, \"day\")) {\r\n return { \"dateRangeValidator\": true };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static dateInvalidValidator(ac: AbstractControl) {\r\n if (ac && ac.value && !moment(ac.value, \"M/D/YYYY\", true).isValid() && !moment(ac.value, \"MM/DD/YYYY\", true).isValid()) {\r\n return { \"dateInvalidValidator\": true };\r\n }\r\n return null;\r\n }\r\n\r\n static convertNgbStructToDate(struct) {\r\n return {year: struct.year, month: struct.month - 1, day: struct.day};\r\n }\r\n\r\n static inRange(ac: AbstractControl) {\r\n if (ac && ac.value && DateValidator.minValue && DateValidator.maxValue && (moment(ac.value, \"M/D/YYYY\", true).isValid() || moment(ac.value, \"MM/DD/YYYY\", true).isValid())) {\r\n let dateValue = moment(ac.value);\r\n let minDate = moment(DateValidator.convertNgbStructToDate(DateValidator.minValue));\r\n let maxDate = moment(DateValidator.convertNgbStructToDate(DateValidator.maxValue));\r\n\r\n if (dateValue.isBefore(minDate, \"day\") || dateValue.isAfter(maxDate, \"day\")) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","/**\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n *\r\n * Extending class works like in Java except that decorators are only scanned in the child class. In this case,\r\n * we want variables like inputData to be available to all inline components that extend this class; however, we want\r\n * this variable to be an @Input.\r\n * What we can do here is define \"inputData: Object\" here and in the extending class, define \"@Input inputData: Object\".\r\n *\r\n * The two way binding to the component is inputData. To allow non-saving modification to this data, we copy\r\n * it to modifiedData. The wrapped component such as input/select/... then use modifiedData as their ngModel.\r\n * When we cancel out of editing, modifiedData is ignored and replaced with inputData. When editing is saved, inputData\r\n * is replaced with modifiedData.\r\n *\r\n * @since 1.0.0\r\n */\r\nimport {ElementRef, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport abstract class DateBase {\r\n\r\n inputData: Object;\r\n modifiedData: Object;\r\n state: number = 0;\r\n\r\n _el: HTMLElement;\r\n\r\n constructor(elementRef: ElementRef) {\r\n this._el = elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Listen to clicks on the document. If the state is in edit mode and there is a click outside the element,\r\n * then save it.\r\n *\r\n * @param event\r\n */\r\n public handleOutsideEvent(event: Event) {\r\n if (this.state !== 1) {\r\n return;\r\n }\r\n let targetCmpt: HTMLElement = null;\r\n\r\n try {\r\n // Catch exception if target is not an element\r\n targetCmpt = (<HTMLElement>event.target);\r\n } catch (e) {\r\n this.save();\r\n return;\r\n }\r\n\r\n let inside: boolean = false;\r\n do {\r\n if (targetCmpt === this._el) {\r\n inside = true;\r\n break;\r\n }\r\n targetCmpt = targetCmpt.parentElement;\r\n } while (targetCmpt);\r\n if (!inside) {\r\n this.save();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the modifiedData (working data) to the bound data.\r\n */\r\n public updateInternalDataFromModel() {\r\n this.modifiedData = this.inputData;\r\n }\r\n\r\n /**\r\n * Updates the bound data with the working data.\r\n */\r\n public updateModelFromInternalData() {\r\n this.inputData = this.modifiedData;\r\n }\r\n\r\n /**\r\n * When user chooses to edit, change state to show edit dialog.\r\n */\r\n public startEdit() {\r\n this.modifiedData = this.inputData;\r\n this.state = 1;\r\n }\r\n\r\n /**\r\n * Generic actions to change state based on key input. Escape will cancel out of the edit\r\n * without saving, enter will save and exit.\r\n *\r\n * @param event\r\n */\r\n public onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"escape\") {\r\n this.cancel();\r\n } else if (event.key === \"enter\") {\r\n this.save();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param newValue\r\n */\r\n public onChange(newValue: Object) {\r\n this.modifiedData = newValue;\r\n }\r\n\r\n /**\r\n * Replace the bound data with the working data and exit editing mode.\r\n */\r\n public save() {\r\n this.updateModelFromInternalData();\r\n this.state = 0;\r\n }\r\n\r\n /**\r\n * Don't update the bound data and exit the editing mode.\r\n */\r\n public cancel() {\r\n this.updateInternalDataFromModel();\r\n this.state = 0;\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, Input, OnInit, DoCheck, AfterViewInit, ViewChild, Output,\r\n ChangeDetectorRef\r\n} from \"@angular/core\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {UntypedFormBuilder, UntypedFormGroup, UntypedFormControl} from \"@angular/forms\";\r\n\r\nimport {NgbDateStruct} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DateValidator} from \"./date-validator\";\r\nimport {DateBase} from \"./date-base\";\r\n\r\n\r\n/**\r\n * TODO: Confirm timezone behavior.\r\n *\r\n * @since 4.0.0\r\n */\r\n@Component({\r\n selector: \"hci-date\",\r\n providers: [DatePipe, DateValidator],\r\n template: `\r\n <div class=\"form-group\">\r\n <div class=\"input-group d-flex\">\r\n <form [formGroup]=\"dateForm\" class=\"flex-grow-1\">\r\n <div class=\"date-wrapper\">\r\n <div class=\"input-group-member\">\r\n <input type=\"text\" (keyup)=\"onKeyUpInput($event)\"\r\n (ngModelChange)=\"onChange($event)\" class=\"form-control\"\r\n formControlName=\"dateInput\" placeholder=\"{{label}}\"\r\n aria-label=\"date\" aria-describedby=\"basic-addon2\" attr.aria-label=\"hci-ng-date-{{label}}\"/>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"clear()\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"startEdit();\">\r\n <i class=\"fas fa-calendar-alt\"></i>\r\n </button>\r\n </div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateFormatValidator')\"\r\n class=\"invalid-date\">Enter date as M/D/YYYY or MM/DD/YYYY</div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateRangeValidator')\"\r\n class=\"invalid-date\">Invalid Date Range</div>\r\n <div *ngIf=\"validate && dateForm.get('dateInput').hasError('dateInvalidValidator')\"\r\n class=\"invalid-date\">Not a real date</div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div *ngIf=\"state === 1\" class=\"inline-editing\">\r\n <ngb-datepicker [ngModel]=\"modifiedData\" #dp [startDate]=\"startDate\" [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\" (keydown)=\"onKeyDown($event)\"\r\n (ngModelChange)=\"onChange($event)\" (dateSelect)=\"save()\"></ngb-datepicker>\r\n <div class=\"inline-hover-save-options\">\r\n </div>\r\n </div>\r\n\r\n `,\r\n styles: [`\r\n `],\r\n host: {\r\n \"(document:click)\": \"handleOutsideEvent($event)\"\r\n }\r\n})\r\n\r\nexport class DateComponent extends DateBase implements OnInit, DoCheck, AfterViewInit {\r\n\r\n @ViewChild(\"dp\", {static: false}) dp: any;\r\n\r\n // Binded data from the parent component.\r\n @Input() dateFormat: string = \"shortDate\";\r\n startDate;\r\n @Input() minDate;\r\n @Input() maxDate;\r\n @Input() label: string;\r\n labelDate: string;\r\n @Input() inputData: Object;\r\n // The data used in our input. We stored this as well as the inputData so we can cancel the edit and preserve the original data.\r\n @Input() modifiedData: Object;\r\n\r\n @Output() inputDataChange = new EventEmitter<any>();\r\n @Output() dateValid = new EventEmitter<boolean>();\r\n\r\n dateForm: UntypedFormGroup;\r\n dateInput: UntypedFormControl;\r\n\r\n // only validate if user is typing\r\n validate: boolean = false;\r\n\r\n private focused: boolean = false;\r\n\r\n constructor(elementRef: ElementRef, private formBuilder: UntypedFormBuilder, private datePipe: DatePipe, private changeDetectorRef: ChangeDetectorRef) {\r\n super(elementRef);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n this.dateForm = this.formBuilder.group({\r\n dateInput : new UntypedFormControl(\"\", [DateValidator.dateFormatValidator, DateValidator.dateRangeValidator, DateValidator.dateInvalidValidator])\r\n });\r\n this.onChanges();\r\n\r\n this.updateInternalDataFromModel();\r\n // set the minDate to 20 years in the past by default\r\n let today = new Date();\r\n if (!this.minDate) {\r\n this.minDate = {year: today.getFullYear() - 20, month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n // set max date to today by default\r\n if (!this.maxDate) {\r\n this.maxDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Fill the input with the bound data set in the parent component.\r\n if (this.inputData) {\r\n let formattedDate = this.datePipe.transform(<string>this.inputData, this.dateFormat);\r\n this.dateForm.controls[\"dateInput\"].setValue(formattedDate);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onChanges(): void {}\r\n\r\n\r\n ngDoCheck() {\r\n // this is the only way I found to have the focus on the startDate day when the user opens\r\n // the popup. We only want to focus once otherwise user can not click anywhere else in the popup\r\n if (this.dp && !this.focused) {\r\n this.dp.focus();\r\n this.focused = true;\r\n }\r\n // mark picker for focusing next time it is open\r\n if (this.state === 0) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n public updateInternalDataFromModel() {\r\n if (this.inputData) {\r\n this.modifiedData = new Date(<string>this.inputData);\r\n let md: Date = new Date(<string>this.inputData);\r\n this.startDate = {year: md.getFullYear(), month: md.getMonth() + 1, day: md.getDate()};\r\n } else {\r\n let today: Date = new Date();\r\n this.startDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n }\r\n\r\n /**\r\n * Updates the bound data with the working data.\r\n */\r\n public updateModelFromInternalData() {\r\n if (this.modifiedData) {\r\n let dsDate = this.ngbDateToString(<NgbDateStruct>this.modifiedData);\r\n if (dsDate) {\r\n this.inputData = dsDate;\r\n } else {\r\n this.inputData = this.modifiedData;\r\n }\r\n\r\n const formattedModifiedDate = this.datePipe.transform(<string>this.inputData, this.dateFormat);\r\n this.dateForm.controls[\"dateInput\"].setValue(formattedModifiedDate, { emitEvent: false});\r\n\r\n }\r\n this.inputDataChange.emit(this.inputData);\r\n this.updateInternalDataFromModel();\r\n }\r\n\r\n public clear() {\r\n this.modifiedData = null;\r\n this.inputData = null;\r\n this.dateForm.controls[\"dateInput\"].setValue(\"\");\r\n this.validate = false;\r\n let today: Date = new Date();\r\n this.startDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n this.state = 0;\r\n this.dateForm.controls[\"dateInput\"].setValue(\"\");\r\n this.inputDataChange.emit(this.inputData);\r\n this.dateValid.emit(true);\r\n }\r\n\r\n public onKeyUpInput(event: KeyboardEvent) {\r\n // Check for when the input is deleted before being saved\r\n if ((event.key === \"Delete\" || event.key === \"Backspace\") && this.dateForm.controls[\"dateInput\"].value.length === 0) {\r\n this.clear();\r\n } else {\r\n // update range so that the date range validator can run accurately\r\n DateValidator.minValue = this.minDate;\r\n DateValidator.maxValue = this.maxDate;\r\n\r\n // Get the updated dateForm value\r\n let eventTarget = event.target as HTMLInputElement;\r\n let inputValue = eventTarget.value;\r\n this.dateForm.controls[\"dateInput\"].patchValue(inputValue);\r\n\r\n // if we have a good date and is within the range update the picker\r\n if (DateValidator.inRange(this.dateForm.controls[\"dateInput\"])) {\r\n this.validate = false;\r\n this.getDateValid();\r\n this.inputData = this.datePipe.transform(this.dateForm.controls[\"dateInput\"].value, this.dateFormat);\r\n this.updateInternalDataFromModel();\r\n this.dateForm.controls[\"dateInput\"].setValue(this.inputData);\r\n this.inputDataChange.emit(this.inputData);\r\n } else {\r\n this.validate = true;\r\n this.getDateValid();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * NgbDateStruct stores day, month and year. Convert this to ISO8601.\r\n *\r\n * @param date\r\n * @returns {any}\r\n */\r\n private ngbDateToString(date: NgbDateStruct): string {\r\n if (date === undefined || date === null) {\r\n return null;\r\n } else if (date.year === undefined || date.month === undefined || date.day === undefined) {\r\n return null;\r\n }\r\n\r\n return date.year + \"-\" + ((date.month < 10) ? \"0\" : \"\") + date.month + \"-\" + ((date.day < 10) ? \"0\" : \"\") + date.day + \"T12:00-06:00\";\r\n }\r\n\r\n public getDateValid(): boolean {\r\n if (this.dateForm.get(\"dateInput\").hasError(\"dateFormatValidator\")\r\n || this.dateForm.get(\"dateInput\").hasError(\"dateRangeValidator\")\r\n || this.dateForm.get(\"dateInput\").hasError(\"dateInvalidValidator\")) {\r\n this.dateValid.emit(false);\r\n return false;\r\n } else {\r\n this.dateValid.emit(true);\r\n return true;\r\n }\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, AfterViewInit, Output, ViewChild} from \"@angular/core\";\r\n\r\nimport {DateComponent} from \"./date-date.component\";\r\n\r\n/**\r\n * TODO: Confirm timezone behavior.\r\n *\r\n * @since 4.0.0\r\n */\r\n@Component({\r\n selector: \"hci-date-range\",\r\n template: ` \r\n <div class=\"d-flex flex-wrap date-range\">\r\n <hci-date #startdate\r\n class=\"date\"\r\n [label]=\"startLabel\"\r\n [(inputData)]=\"inputStartData\"\r\n (inputDataChange)=\"onClickSubmitStartDate($event)\"\r\n [dateFormat]=\"dateFormat\"\r\n [minDate]=\"minStartDate\"\r\n [maxDate]=\"maxStartDate\">\r\n </hci-date>\r\n <hci-date #enddate\r\n class=\"date\"\r\n [label]=\"endLabel\"\r\n [(inputData)]=\"inputEndData\"\r\n (inputDataChange)=\"onClickSubmitEndDate($event)\"\r\n [dateFormat]=\"dateFormat\"\r\n [minDate]=\"minEndDate\"\r\n [maxDate]=\"maxEndDate\">\r\n </hci-date>\r\n </div>\r\n `\r\n})\r\nexport class DateRangeComponent implements AfterViewInit {\r\n\r\n @ViewChild(\"startdate\", {static: true})\r\n sp: DateComponent;\r\n\r\n @ViewChild(\"enddate\", {static: true})\r\n ep: DateComponent;\r\n\r\n // Binded data from the parent component.\r\n @Input() dateFormat: string = \"shortDate\";\r\n @Input() inputStartData: Object;\r\n @Input() inputEndData: Object;\r\n @Input() startLabel: string;\r\n @Input() endLabel: string;\r\n @Output() inputDataChange = new EventEmitter<any[]>();\r\n\r\n @Input() minStartDate: any;\r\n public maxStartDate;\r\n public minEndDate;\r\n public maxEndDate;\r\n\r\n ngOnInit() {\r\n this.setRange();\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngAfterViewInit() {\r\n // if there is no start date but there is an end date, make the start date go to the end date\r\n if (!this.inputStartData && this.inputEndData) {\r\n let dt: Date = new Date(<string>this.inputEndData);\r\n this.sp.startDate = {year: dt.getFullYear(), month: dt.getMonth() + 1, day: dt.getDate()};\r\n }\r\n }\r\n\r\n onClickSubmitStartDate(startData) {\r\n this.setRange();\r\n // if there is no start date but there is an end date, make the start date go to the end date\r\n if (!startData && this.inputEndData) {\r\n let dt: Date = new Date(<string>this.inputEndData);\r\n this.sp.startDate = {year: dt.getFullYear(), month: dt.getMonth() + 1, day: dt.getDate()};\r\n }\r\n this.inputDataChange.emit([this.inputStartData, this.inputEndData]);\r\n }\r\n\r\n onClickSubmitEndDate(endData) {\r\n this.setRange();\r\n this.inputDataChange.emit([this.inputStartData, this.inputEndData]);\r\n }\r\n\r\n private setRange() {\r\n // set the minDate to 20 years in the past by default\r\n let today = new Date();\r\n if (!this.minStartDate) {\r\n this.minStartDate = {year: today.getFullYear() - 20, month: today.getMonth() + 1, day: today.getDate()};\r\n }\r\n this.minEndDate = this.minStartDate;\r\n // set the maxDate to today by default\r\n this.maxStartDate = {year: today.getFullYear(), month: today.getMonth() + 1, day: today.getDate()};\r\n this.maxEndDate = this.maxStartDate;\r\n if (this.inputEndData) {\r\n let endDate = new Date(<string>this.inputEndData);\r\n this.maxStartDate = {year: endDate.getFullYear(), month: endDate.getMonth() + 1, day: endDate.getDate()};\r\n }\r\n if (this.inputStartData) {\r\n let startDate = new Date(<string>this.inputStartData);\r\n this.minEndDate = {year: startDate.getFullYear(), month: startDate.getMonth() + 1, day: startDate.getDate()};\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {DateComponent} from \"./date-date.component\";\r\nimport {DateRangeComponent} from \"./date-date-range.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\nimport { MatLegacyFormFieldModule as MatFormFieldModule } from \"@angular/material/legacy-form-field\";\r\nimport {MatNativeDateModule} from \"@angular/material/core\";\r\nimport {MatLegacyInputModule as MatInputModule} from \"@angular/material/legacy-input\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n MatTabsModule,\r\n MatFormFieldModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatInputModule\r\n ],\r\n declarations: [\r\n DateComponent,\r\n DateRangeComponent\r\n ],\r\n exports: [\r\n DateComponent,\r\n DateRangeComponent\r\n ]\r\n})\r\nexport class DateModule {}\r\n","import {\r\n Component, ContentChild, forwardRef, HostListener, Input, isDevMode, SimpleChange,\r\n TemplateRef\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, NgModel} from \"@angular/forms\";\r\n\r\n/**\r\n * This component is designed to take any input as ng-content and wrap it such that it renders as a string. When hovering\r\n * over, a border and edit icon is shown. Upon clicking, it enters edit mode and the passed in input is rendered. The\r\n * bound ngModel is wrapped in an intermediary. This component binds a separate internal value to the wrapped component.\r\n * This allows the user to cancel out and not update the ngModel bound to this component.\r\n */\r\n@Component({\r\n selector: \"hci-inline-input\",\r\n template: `\r\n <div *ngIf=\"!editMode; else editTemplate\"\r\n (click)=\"setEditMode($event, true)\"\r\n class=\"edit-false ps-1\">\r\n <ng-container *ngIf=\"renderTemplate; else defaultRenderTemplate\">\r\n <ng-container *ngTemplateOutlet=\"renderTemplate; context: {value: value}\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultRenderTemplate>\r\n <ng-container *ngIf=\"value\">\r\n {{value}}\r\n </ng-container>\r\n <ng-container *ngIf=\"!value\">\r\n {{noValueMessage}}\r\n </ng-container>\r\n </ng-template>\r\n <button class=\"btn btn-primary ms-auto\">\r\n <i class=\"fas fa-pencil-alt\"></i>\r\n </button>\r\n </div>\r\n\r\n <ng-template #editTemplate>\r\n <div class=\"edit-true\">\r\n <div class=\"input-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"d-flex\">\r\n <button class=\"btn btn-green\" (click)=\"save()\">\r\n <i class=\"fas fa-check\"></i>\r\n </button>\r\n <button class=\"btn btn-red d-flex\" (click)=\"cancel()\">\r\n <i class=\"fas fa-times ms-auto me-auto\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InlineComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InlineComponent implements ControlValueAccessor {\r\n\r\n @ContentChild(\"renderTemplate\", {read: TemplateRef, static: true}) renderTemplate: TemplateRef<any>;\r\n\r\n @Input() noValueMessage: string = \"Click to Add\";\r\n\r\n // View state\r\n editMode: boolean = false;\r\n\r\n // Value that updates based on this ngModel.\r\n value: any;\r\n\r\n // The value we bind to the passed in input component.\r\n modifiedValue: any;\r\n\r\n // Store the ngModel directive on the passed in input component.\r\n ngModelRef: NgModel;\r\n\r\n // Functions to register from Angular\r\n onChange: (value: any) => void;\r\n onTouched: () => void;\r\n\r\n /**\r\n * Called when the model updates and we need to up the view.\r\n *\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: writeValue\");\r\n console.debug(\"InlineComponent: \" + value);\r\n }\r\n\r\n // Update the internal values.\r\n this.value = value;\r\n this.modifiedValue = this.value;\r\n\r\n if (this.ngModelRef !== undefined) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: update ngModelRef: \" + this.modifiedValue);\r\n }\r\n\r\n // Update the model, then tell the directive that it has been updated.\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Register the function that is called when the value changes in the value.\r\n *\r\n * @param {(value: any) => void} fn\r\n */\r\n registerOnChange(fn: (value: any) => void) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: registerOnChange\");\r\n console.debug(fn);\r\n }\r\n\r\n this.onChange = () => {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: onChange Function\" + this.value);\r\n }\r\n fn(this.value);\r\n };\r\n }\r\n\r\n /**\r\n * Register the function called to update the model on blur.\r\n *\r\n * @param {() => void} fn\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: registerOnTouched\");\r\n console.debug(fn);\r\n }\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Set the editMode. If true then tell the passed in input to bind the current modified value.\r\n *\r\n * @param {boolean} editMode\r\n */\r\n setEditMode(event: MouseEvent, editMode: boolean): void {\r\n event.stopPropagation();\r\n\r\n this.editMode = editMode;\r\n if (this.editMode) {\r\n this.onTouched();\r\n\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Cancel edit mode which resets the modified value.\r\n */\r\n cancel(): void {\r\n this.editMode = false;\r\n this.modifiedValue = this.value;\r\n }\r\n\r\n /**\r\n * Update the value with the modified value and call the onChange function so two way binding is updated with this component.\r\n */\r\n save(): void {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: save modifiedValue: \" + this.modifiedValue + \", value: \" + this.value);\r\n }\r\n\r\n this.value = this.modifiedValue;\r\n this.onChange(this.value);\r\n this.editMode = false;\r\n }\r\n\r\n /**\r\n * The component to wrap must be named with #input and have a ngModel directive. When the content is set here, we\r\n * read the ngModel and set the model as well as listen to changes.\r\n *\r\n * @param {NgModel} ngModel\r\n */\r\n @ContentChild(\"input\", {read: NgModel, static: false}) set contentChild(ngModel: NgModel) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: set contentChild: \" + this.modifiedValue);\r\n console.debug(ngModel);\r\n }\r\n\r\n this.ngModelRef = ngModel;\r\n if (this.ngModelRef) {\r\n this.ngModelRef.model = this.modifiedValue;\r\n this.ngModelRef.ngOnChanges({\r\n model: new SimpleChange(undefined, this.modifiedValue, false)\r\n });\r\n this.ngModelRef.update.subscribe((value: any) => {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: cmpt model change: \" + value);\r\n }\r\n this.modifiedValue = value;\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * If the click target is outside the inline input then cancel it.\r\n *\r\n * @param {MouseEvent} event\r\n */\r\n @HostListener(\"document:click\", [\"$event\"])\r\n documentClick(event: MouseEvent): void {\r\n if (this.editMode) {\r\n if (isDevMode()) {\r\n console.debug(\"InlineComponent: documentClick\");\r\n }\r\n\r\n let e: Element = (<HTMLElement>event.target).closest(\"hci-inline-input\");\r\n if (!e) {\r\n this.cancel();\r\n }\r\n }\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {InlineComponent} from \"./inline.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n InlineComponent\r\n ],\r\n exports: [\r\n InlineComponent\r\n ]\r\n})\r\nexport class InlineModule {}\r\n","import {Component, forwardRef, HostBinding, Input} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-md-select\",\r\n template: `\r\n <mat-form-field>\r\n <mat-label>{{label}}</mat-label>\r\n <mat-select [(value)]=\"value\" [required]=\"required\">\r\n <mat-option *ngIf=\"!required\" [value]=\"undefined\"></mat-option>\r\n <mat-option *ngFor=\"let row of entries\" [value]=\"row[idKey]\">{{ row[displayKey] }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MdSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MdSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() className: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n\r\n private _value: number;\r\n private onChangeCallback: (_: number) => void = () => {};\r\n private onTouchedCallback: () => void = () => {};\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n });\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" material-input\";\r\n }else {\r\n this.classList = \"material-input\";\r\n }\r\n }\r\n\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(newValue: number) {\r\n this._value = newValue;\r\n this.onChangeCallback(newValue);\r\n }\r\n\r\n public onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n public writeValue(value: number) {\r\n if (value !== this.value) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n public registerOnChange(callback: (_: number) => void) {\r\n this.onChangeCallback = callback;\r\n }\r\n\r\n\r\n public registerOnTouched(callback: () => void) {\r\n this.onTouchedCallback = callback;\r\n }\r\n}\r\n","import {Component, forwardRef, HostBinding, Input, ChangeDetectorRef} from \"@angular/core\";\r\n\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-native-select\",\r\n template: `\r\n <label [for]=\"id\" *ngIf=\"label\" class=\"label\">\r\n {{label}}{{(required) ? \" *\" : \"\"}}\r\n </label>\r\n <select [(ngModel)]=\"value\"\r\n [style.height.px]=\"height\"\r\n (change)=\"onChange()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id\"\r\n class=\"form-select flex-grow-1\"\r\n style=\"min-width: 4rem;\">\r\n <ng-container *ngIf=\"!required\">\r\n <option [ngValue]=\"undefined\">\r\n </option>\r\n </ng-container>\r\n <option *ngFor=\"let row of entries\"\r\n [ngValue]=\"row[idKey]\">\r\n {{ row[displayKey] }}\r\n </option>\r\n </select>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NativeSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NativeSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n value: any;\r\n height: number;\r\n unfilteredEntries: DropdownEntry[];\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n @Input() disabled: boolean = false;\r\n @Input() sortKey: string = null;\r\n @Input() sortNumeric: boolean = false;\r\n @Input() filterKey: string = null;\r\n @Input() id: string = \"\";\r\n\r\n _filter: any = null;\r\n get filter(): any{\r\n return this._filter;\r\n }\r\n @Input() set filter(f: any){\r\n this._filter = f;\r\n\r\n if(this.filterKey != null && this.filter != null && this.unfilteredEntries != null) {\r\n this.entries = this.unfilteredEntries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n onChange: any;\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient, private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n });\r\n }else {\r\n\r\n if(this.filterKey != null && this.filter != null) {\r\n this.unfilteredEntries = this.entries;\r\n var newlist = this.entries.filter(entry => entry[this.filterKey] == this.filter);\r\n this.entries = newlist;\r\n }\r\n\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" native-input\"; //?\r\n }else {\r\n this.classList = \"native-input\";\r\n }\r\n }\r\n\r\n public setHeight(h: number) {\r\n this.height = h;\r\n // avoid ExpressionChangedAfterItHasBeenCheckedError\r\n this.cdr.detectChanges();\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.onChange = () => {\r\n fn(this.value);\r\n };\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {}\r\n}\r\n","import {Component, forwardRef, HostBinding, Input} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\nimport {DictionaryService, DropdownEntry} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@Component({\r\n selector: \"hci-md-multi-select\",\r\n template: `\r\n <mat-form-field class=\"flex-grow-1\">\r\n <mat-label>{{label}}</mat-label>\r\n <mat-select [(value)]=\"value\" [formControl]=\"options\" [required]=\"required\" multiple>\r\n <mat-select-trigger class=\"d-flex flex-wrap\">\r\n <div *ngFor=\"let option of options.value\" class=\"chip\">\r\n {{getOptionDisplay(option)}}\r\n <div (click)=\"$event.stopPropagation(); remove(option)\" class=\"chip-remove\">\r\n <i class=\"fas fa-times-circle fa-xs\"></i>\r\n </div>\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let row of entries\" [value]=\"row[idKey]\">{{ row[displayKey] }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n `,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MdMultiSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MdMultiSelectComponent implements ControlValueAccessor {\r\n\r\n @HostBinding(\"class\") @Input(\"class\") classList: string = \"\";\r\n\r\n @Input() name: string;\r\n @Input() label: string;\r\n @Input() url: string;\r\n @Input() entries: DropdownEntry[];\r\n @Input() required: boolean = false;\r\n @Input() idKey: string = \"id\";\r\n @Input() displayKey: string = \"display\";\r\n @Input() sortKey: string = null;\r\n @Input() sortNumeric: boolean = false;\r\n\r\n options = new UntypedFormControl();\r\n\r\n private _value: any[];\r\n private onChangeCallback: (_: any[]) => void = () => {};\r\n private onTouchedCallback: () => void = () => {};\r\n\r\n constructor(private dictionaryService: DictionaryService, private http: HttpClient) {}\r\n\r\n ngOnInit(): void {\r\n if (this.url && this.url.indexOf(\"/\") === -1) {\r\n this.dictionaryService.getDictionaryDropdownEntries(this.url).subscribe((entries: DropdownEntry[]) => {\r\n this.entries = entries;\r\n this.sortEntries();\r\n });\r\n } else if (this.url) {\r\n this.http.get(this.url).subscribe((entries: any[]) => {\r\n this.entries = entries;\r\n this.sortEntries();\r\n });\r\n } else {\r\n this.sortEntries();\r\n }\r\n\r\n if(this.classList.length > 0) {\r\n this.classList += \" material-input\";\r\n }else {\r\n this.classList = \"material-input\";\r\n }\r\n }\r\n\r\n sortEntries() {\r\n if(this.sortKey != null) {\r\n if(this.sortNumeric) {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey] - b[this.sortKey];\r\n });\r\n }else {\r\n this.entries.sort((a, b) => {\r\n return a[this.sortKey].localeCompare(b[this.sortKey]);\r\n });\r\n }\r\n }\r\n }\r\n\r\n getOptionDisplay(value: any): string {\r\n for (let entry of this.entries) {\r\n if (entry[this.idKey] === value) {\r\n return entry[this.displayKey];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n remove(value: any): void {\r\n console.debug(this.options);\r\n\r\n let newValue: any[] = [];\r\n\r\n for (let option of this.options.value) {\r\n if (option !== value) {\r\n newValue.push(option);\r\n }\r\n }\r\n\r\n this.writeValue(newValue);\r\n }\r\n\r\n public get value(): any[] {\r\n return this._value;\r\n }\r\n\r\n public set value(newValue: any[]) {\r\n this._value = newValue;\r\n this.options.setValue(newValue);\r\n this.onChangeCallback(newValue);\r\n }\r\n\r\n public onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n public writeValue(value: any[]) {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.options.setValue(value);\r\n }\r\n }\r\n\r\n public registerOnChange(callback: (_: any[]) => void) {\r\n this.onChangeCallback = callback;\r\n }\r\n\r\n\r\n public registerOnTouched(callback: () => void) {\r\n this.onTouchedCallback = callback;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChange,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR, NgControl} from \"@angular/forms\";\r\nimport {combineLatest, Subscription} from \"rxjs\";\r\nimport {debounceTime} from \"rxjs/operators\";\r\nimport {CdkVirtualScrollViewport} from \"@angular/cdk/scrolling\";\r\nimport {MatLegacyAutocompleteTrigger as MatAutocompleteTrigger} from \"@angular/material/legacy-autocomplete\";\r\nimport {ListRange} from \"@angular/cdk/collections\";\r\nimport {ListKeyManager, Highlightable} from '@angular/cdk/a11y';\r\nimport {MatLegacyOption as MatOption} from \"@angular/material/legacy-core\";\r\nimport {LegacyFloatLabelType as FloatLabelType} from \"@angular/material/legacy-form-field\";\r\n\r\n@Component({\r\n selector: \"hci-combobox\",\r\n template: `\r\n <mat-form-field (click)=\"onClick($event)\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n [appearance]=\"appearance\"\r\n [floatLabel]=\"floatLabel\"\r\n [matTooltip]=\"this.tooltip\"\r\n [ngClass]=\"customFieldClasses\"\r\n >\r\n <mat-label *ngIf=\"label !== undefined\">{{ label }}</mat-label>\r\n <mat-label *ngIf=\"label === undefined\">\r\n {{ temporaryPlaceholder ? (innerControl.value ? '' : placeholder) : placeholder }}\r\n </mat-label>\r\n <input #input\r\n matInput\r\n name=\"customComboBoxFilter\"\r\n [placeholder]=\"temporaryPlaceholder ? (innerControl.value ? '' : placeholder) : placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n autocomplete=\"off\"\r\n [formControl]=\"innerControl\"\r\n [attr.cdkFocusInitial]=\"cdkFocusInitial === undefined ? null : cdkFocusInitial\"\r\n [tabindex]=\"tabindex\"\r\n (keydown)=\"onKey($event)\"\r\n (focus)=\"onFocus()\"\r\n (focusout)=\"onFocusOut()\" attr.aria-label=\"hci-ng-custom-combobox-{{label}}\"\r\n >\r\n <div matSuffix\r\n class=\"hci-combobox-arrow-wrapper\"\r\n (click) = \"toggleOpen($event)\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n >\r\n <div class=\"hci-combobox-arrow\"></div>\r\n </div>\r\n <mat-spinner matSuffix *ngIf=\"showLoader()\" [diameter]=\"30\" style=\"float: right; margin-left: 8px\"></mat-spinner>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n autoActiveFirstOption\r\n (optionSelected)=\"this.selectOption($event.option.value)\"\r\n (opened)=\"this.onOpened()\"\r\n (closed)=\"this.onClosed()\"\r\n [displayWith]=\"this.displayFn\">\r\n <cdk-virtual-scroll-viewport #viewport\r\n [style.display]=\"isOpen ? null : 'none'\"\r\n class=\"hci-combobox-viewport\"\r\n [ngClass]= \"customViewportClass\"\r\n [itemSize]=\"optionSizePx\"\r\n [style.height.px]=\"numOptionsToShow * optionSizePx\"\r\n [minBufferPx]=\"numOptionsToShow * optionSizePx * 2\"\r\n [maxBufferPx]=\"numOptionsToShow * optionSizePx * 3\"\r\n (mousedown)=\"startClick()\"\r\n (mouseup)=\"endClick()\"\r\n >\r\n <mat-option *ngIf=\"allowNone && isOpen && (this.forceShowNone || !this.innerControl.value)\"\r\n [ngClass]=\"customOptionClasses\"\r\n [style.height.px]=\"optionSizePx\"\r\n >\r\n None\r\n </mat-option>\r\n <mat-option *cdkVirtualFor=\"let opt of this.loadedOptions\"\r\n [value]=\"opt\"\r\n [ngClass]=\"customOptionClasses\"\r\n [class.hci-combobox-selected]=\"(valueField ? opt[valueField] : opt) === outerControl.value\"\r\n [class.mat-selected]=\"(valueField ? opt[valueField] : opt) === outerControl.value\"\r\n [style.height.px]=\"optionSizePx\"\r\n >\r\n {{ displayField ? opt[displayField] : opt }}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n <mat-error>\r\n {{ getError() }}\r\n </mat-error>\r\n <ng-content></ng-content>\r\n </mat-form-field>\r\n `,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomComboBoxComponent),\r\n multi: true,\r\n }],\r\n host: {\r\n class: \"hci-combobox-container\"\r\n },\r\n styles: [`\r\n .hci-combobox-container {\r\n display: inline-block;\r\n }\r\n\r\n .hci-combobox-arrow {\r\n width: 0;\r\n height: 0;\r\n border-left: 5px solid transparent;\r\n border-right: 5px solid transparent;\r\n border-top: 5px solid;\r\n margin: 0 4px;\r\n color: var(--black-darkest);\r\n }\r\n\r\n .hci-combobox-arrow-wrapper {\r\n display: table-cell;\r\n vertical-align: middle;\r\n }\r\n\r\n .hci-combobox-viewport mat-option {\r\n display: flex;\r\n align-items: center;\r\n padding: 0 .2rem;\r\n }\r\n\r\n .hci-combobox-viewport mat-option .mat-option-text {\r\n white-space: nowrap;\r\n }\r\n\r\n .hci-combobox-viewport .hci-combobox-selected {\r\n background-color: #dddddd;\r\n }\r\n\r\n .hci-combobox-viewport .mat-active {\r\n background-color: #f3f3f3;\r\n }\r\n\r\n /* fix jittery scroll bug in chrome */\r\n .hci-combobox-viewport {\r\n overflow-anchor: none;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CustomComboBoxComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n public optionSizePx: number = 25;\r\n public numOptionsToShow: number = 10;\r\n\r\n @Input()\r\n public maxOptionsToShow: number = 10;\r\n\r\n @Input()\r\n public customViewportClass: string = \"\";\r\n\r\n @Input()\r\n public set customFieldClasses(value: string) {\r\n this._customFieldClasses = value ? value : \"\";\r\n }\r\n\r\n public get customFieldClasses(): string {\r\n return !!this._customFieldClasses ? this._customFieldClasses : \"mat-form-field-should-float\";\r\n }\r\n\r\n @Input()\r\n public set customOptionClasses(value: string) {\r\n this._customOptionClasses = value ? value : \"\";\r\n }\r\n\r\n public get customOptionClasses(): string {\r\n return !!this._customOptionClasses ? this._customOptionClasses : \"\";\r\n }\r\n\r\n // If a label is not specified the placeholder is promoted to a label.\r\n // To create a form field with only a placeholder, specify an empty\r\n // label to prevent the placeholder from being promoted.\r\n @Input() public label: string;\r\n @Input() public placeholder: string = \"\";\r\n\r\n // Removes the placeholder after a selection is made\r\n @Input() public temporaryPlaceholder: boolean = false;\r\n\r\n @Input() public tooltip: string = \"\";\r\n @Input() public allowNone: boolean = true;\r\n\r\n @Input() public selectTextOnOpen = true;\r\n\r\n // tell mat-dialog to pass initial focus to the inner input\r\n @HostBinding(\"attr.cdkFocusInitial\") _cdkFocusInitial = null;\r\n @Input() public cdkFocusInitial: string = undefined;\r\n\r\n // on tab, skip the host element and focus the input\r\n @HostBinding(\"attr.tabindex\") _tabindex = null;\r\n @Input() public tabindex: number = 0;\r\n\r\n public forceShowNone: boolean = false;\r\n\r\n @Input() public options: any[] = [];\r\n @Input() allowLoader: boolean = false;\r\n\r\n public isOpen: boolean = false;\r\n public loadedOptions: any[] = [];\r\n\r\n @Input() public valueField: string;\r\n @Input() private forceEmitObject: boolean = false;\r\n @Input() public displayField: string;\r\n @Input() public appearance: string = \"\";\r\n @Input() public floatLabel: FloatLabelType;\r\n\r\n // Set to empty to not show errors\r\n @Input()\r\n public defineErrors: any = {required: \"This is a required field\"};\r\n\r\n private _showLoader = false;\r\n private _customFieldClasses: string = \"\";\r\n private _customOptionClasses: string = \"\";\r\n\r\n public outerControl: AbstractControl = new UntypedFormControl();\r\n public innerControl: UntypedFormControl = new UntypedFormControl(null);\r\n private ignoreInnerControlChanges: boolean = false;\r\n private subs: Subscription = new Subscription();\r\n private noNgControl: boolean = false;\r\n public selectedIndex: number;\r\n\r\n keyManager: ListKeyManager<Highlightable>;\r\n viewportRenderRange: ListRange;\r\n viewportVisibleRange: ListRange = {\r\n start: 0,\r\n end: this.numOptionsToShow - 1\r\n };\r\n\r\n activeValue: any;\r\n\r\n public clickInProgress: boolean = false;\r\n\r\n @Output() optionSelected: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() optionChanged: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() optionsLoaded: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @ViewChild(\"viewport\", {static: true})\r\n viewport: CdkVirtualScrollViewport;\r\n\r\n @ViewChild(\"input\", {static: true})\r\n inputElement: ElementRef;\r\n\r\n @ViewChild(\"input\", {read: MatAutocompleteTrigger, static: false})\r\n autoCompleteTrigger: MatAutocompleteTrigger;\r\n\r\n private onChangeFn: (val: any) => void = () => {};\r\n private onTouchedFn: () => void = () => {};\r\n\r\n public displayFn: (opt?: any) => string | undefined = (opt?: any) => {\r\n return opt ? (this.displayField ? opt[this.displayField] : opt) : undefined;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef,\r\n private injector: Injector) { }\r\n\r\n ngOnInit(): void {\r\n this._showLoader = this.allowLoader && (! this.options || this.options.length === 0);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let ngControl: NgControl = this.injector.get(NgControl, null);\r\n if (ngControl && ngControl.control) {\r\n this.outerControl = ngControl.control;\r\n this.innerControl.setValidators(this.outerControl.validator);\r\n this.innerControl.setAsyncValidators(this.outerControl.asyncValidator);\r\n this.innerControl.updateValueAndValidity();\r\n this.cdr.detectChanges();\r\n } else {\r\n this.noNgControl = true;\r\n }\r\n\r\n this.subs.add(this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe((_value: any) => {\r\n if (this.isOpen && !this.ignoreInnerControlChanges) {\r\n this.filterOptions();\r\n } else {\r\n this.ignoreInnerControlChanges = false;\r\n }\r\n }));\r\n\r\n // work around for validators not always propagating\r\n this.subs.add(this.outerControl.statusChanges.subscribe((_event: any) => {\r\n this.innerControl.setValidators(this.outerControl.validator);\r\n this.innerControl.setAsyncValidators(this.outerControl.asyncValidator);\r\n this.innerControl.updateValueAndValidity();\r\n this.innerControl.setErrors(this.outerControl.errors);\r\n\r\n if (this.outerControl.touched) {\r\n this.innerControl.markAsTouched();\r\n }\r\n }));\r\n\r\n // this object is used to control the active state when keying up and down\r\n this.keyManager = this.autoCompleteTrigger.autocomplete._keyManager;\r\n this.keyManager.withWrap(false);\r\n\r\n this.subs.add(combineLatest([\r\n this.viewport.renderedRangeStream,\r\n this.viewport.scrolledIndexChange\r\n ]).subscribe(([renderedRange, scrolledIndex]: [ListRange, number]) => {\r\n\r\n // Instead of loading the whole item list at once, the virtual scroll viewport buffers\r\n // a range of entries, only a portion of which are within the visible fold\r\n this.viewportRenderRange = renderedRange;\r\n\r\n // we have to figure out the visible range ourselves\r\n let len: number = Math.min(this.loadedOptions.length + (this.allowNone ? 1 : 0), this.numOptionsToShow - 1);\r\n\r\n this.viewportVisibleRange = {\r\n start: scrolledIndex,\r\n end: scrolledIndex + len\r\n };\r\n }));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.options) {\r\n let optionsChange: SimpleChange = changes.options;\r\n if (!optionsChange.currentValue || optionsChange.currentValue.length < 1) {\r\n this.options = [];\r\n if(this.innerControl.value != null){\r\n //Reset the innerControl value of the dropdown list to an empty array in case of no results are present to be displayed.\r\n //This flushes out the stale value from the list if there are no results to be displayed.\r\n this.innerControl.setValue([]);\r\n }\r\n }\r\n\r\n let currentOpts: any[] = <any[]>optionsChange.currentValue;\r\n if (currentOpts && \"length\" in currentOpts && currentOpts !== optionsChange.previousValue) {\r\n this._showLoader = false;\r\n this.optionsLoaded.emit();\r\n\r\n // If number of options is less than our max, reduce size of overlay\r\n this.numOptionsToShow = Math.min(currentOpts.length + (this.allowNone ? 1 : 0), this.maxOptionsToShow);\r\n } else {\r\n this._showLoader = true;\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n // The autocomplete will automatically pop open once it has options filtered into it,\r\n // but we don't want it to on initial page load or when tabbing though\r\n if (this.isOpen) {\r\n this.filterOptions();\r\n } else {\r\n this.loadOnlyCurrentValue(this.outerControl.value);\r\n }\r\n });\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.loadOnlyCurrentValue(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.innerControl.disable();\r\n } else {\r\n this.innerControl.enable();\r\n }\r\n }\r\n\r\n getError(): string {\r\n for (const error in this.outerControl.errors) {\r\n if (this.defineErrors && error in this.defineErrors) {\r\n return this.defineErrors[error];\r\n }\r\n }\r\n }\r\n\r\n private loadOnlyCurrentValue(cntrlVal: any): void {\r\n if (!this.options || this.options.length < 1) {\r\n return;\r\n }\r\n\r\n let newValue: any = null;\r\n if (cntrlVal !== null && cntrlVal !== undefined) {\r\n let currentlySelected: any = this.options.find((opt: any) => {\r\n let optValue: any = this.valueField ? opt[this.valueField] : opt;\r\n if (this.forceEmitObject) {\r\n let outerValue: any = cntrlVal ? (this.valueField ? cntrlVal[this.valueField] : cntrlVal) : null;\r\n if (optValue === outerValue) {\r\n return true;\r\n }\r\n } else {\r\n return optValue === cntrlVal;\r\n }\r\n });\r\n if (currentlySelected) {\r\n newValue = currentlySelected;\r\n }\r\n }\r\n\r\n // prefer to check id if it has one vs straight against it's object identity\r\n if (this.innerControl.value && newValue != null && this.valueField) {\r\n if (this.innerControl.value[this.valueField] !== newValue[this.valueField]) {\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(newValue);\r\n this.optionSelected.emit(newValue[this.valueField]);\r\n }\r\n } else if (this.innerControl.value !== newValue) {\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(newValue);\r\n let nv = newValue ? ((this.valueField && !this.forceEmitObject) ? newValue[this.valueField] : newValue) : null;\r\n this.optionSelected.emit(nv);\r\n }\r\n }\r\n\r\n private filterOptions(showAll: boolean = false): void {\r\n this.forceShowNone = showAll;\r\n this.isOpen = true;\r\n if (!this.options || this.options.length < 1) {\r\n return;\r\n }\r\n\r\n if (showAll || !this.innerControl.value) {\r\n this.loadedOptions = [...this.options];\r\n } else {\r\n let searchValue: string = \"\";\r\n if (typeof this.innerControl.value === \"string\") {\r\n searchValue = this.innerControl.value.toLowerCase();\r\n } else if (this.displayField) {\r\n searchValue = this.innerControl.value[this.displayField].toLowerCase();\r\n }\r\n this.loadedOptions = this.options.filter((opt: any) => {\r\n let optDisplay: string = (this.displayField ? opt[this.displayField] : opt).toLowerCase();\r\n return optDisplay.includes(searchValue);\r\n });\r\n this.forceShowNone = this.loadedOptions.length === 0;\r\n }\r\n\r\n this.selectedIndex = this.getOptIndex(this.outerControl.value);\r\n }\r\n\r\n public showLoader(): boolean {\r\n return this.allowLoader && this._showLoader;\r\n }\r\n\r\n public open() {\r\n if (this.innerControl.disabled) {\r\n return;\r\n }\r\n\r\n // The autocomplete will only open when options are loaded\r\n this.filterOptions(true);\r\n this.autoCompleteTrigger.openPanel();\r\n }\r\n\r\n public close() {\r\n this.autoCompleteTrigger.closePanel();\r\n }\r\n\r\n public onOpened(): void {\r\n this.forceShowNone = true;\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.isOpen = true;\r\n\r\n if(this.selectTextOnOpen){\r\n this.inputElement.nativeElement.select(); // Highlights text\r\n }\r\n\r\n if (this.selectedIndex > 0) {\r\n // make the selected option also the active option\r\n this.activeValue = this.getOptVal(this.loadedOptions[this.selectedIndex]);\r\n\r\n setTimeout(() => {\r\n this.scrollToSelectedOption();\r\n });\r\n }\r\n }\r\n\r\n public onClosed(): void {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n\r\n this.isOpen = false;\r\n\r\n if (!this.innerControl.value && this.outerControl.value) {\r\n this.selectOption(null);\r\n }\r\n\r\n this.loadOnlyCurrentValue(this.outerControl.value);\r\n\r\n // reset the options so the autocomplete won't automatically open on the next tab through\r\n this.loadedOptions = [];\r\n }\r\n\r\n public startClick() {\r\n // clicking on certain parts of the mat-field will \"flicker\" the focus, triggering\r\n // error validation early. This tracks those internal clicks so they can be ignored\r\n this.clickInProgress = true;\r\n }\r\n\r\n public endClick() {\r\n this.clickInProgress = false;\r\n }\r\n\r\n public onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.isOpen) {\r\n this.open();\r\n }\r\n }\r\n\r\n public toggleOpen(event: MouseEvent):void {\r\n event.stopPropagation();\r\n\r\n if (this.isOpen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n public onKey(event: KeyboardEvent): void {\r\n if (event.key === \"Tab\" || event.key === \"Enter\") {\r\n return;\r\n } else {\r\n if (!this.isOpen) {\r\n this.open();\r\n }\r\n\r\n // There is a bug where the cdk a11y KeyManager implementation is not compatible with\r\n // the MatAutocompleteTrigger, which causes the Drop-down not scroll with keyboard\r\n // on long option lists.\r\n //\r\n // https://github.com/angular/components/issues/16598\r\n //\r\n // This work around takes control of the keyboard and manually scrolls and activates\r\n // the options\r\n //\r\n // References:\r\n // https://github.com/angular/components/blob/master/src/material/autocomplete/autocomplete-trigger.ts\r\n // https://github.com/angular/components/blob/master/src/cdk/a11y/key-manager/list-key-manager.ts\r\n // https://github.com/angular/components/blob/master/src/cdk/a11y/key-manager/activedescendant-key-manager.ts\r\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\r\n event.stopPropagation();\r\n\r\n this.initActiveItem();\r\n this.shiftActiveItem(event.key);\r\n this.checkActiveBoundaries();\r\n }\r\n }\r\n }\r\n\r\n // before our keypress binding even triggers, angular has already moved the active selection\r\n // unsyncing it with our display. this code re-initializes the active option\r\n initActiveItem(): void {\r\n if (this.activeValue === undefined || this.activeValue === null) {\r\n this.keyManager.setFirstItemActive();\r\n } else {\r\n let activeIndex: number = this.getActiveIndex();\r\n\r\n // this does the conversion from an index within all options down to a position within the\r\n // displayed range, which is all the keymanager is aware of\r\n let position = activeIndex - this.viewportRenderRange.start;\r\n this.keyManager.setActiveItem(position);\r\n }\r\n }\r\n\r\n shiftActiveItem(key: string): void {\r\n if (key === \"ArrowUp\") {\r\n this.keyManager.setPreviousItemActive();\r\n } else if (key === \"ArrowDown\") {\r\n this.keyManager.setNextItemActive();\r\n }\r\n\r\n if (this.keyManager.activeItem) {\r\n this.activeValue = this.getOptVal((<MatOption>this.keyManager.activeItem).value);\r\n }\r\n }\r\n\r\n // check if the active option index is within the displayed viewport window\r\n // if not, scroll it into view\r\n checkActiveBoundaries(): void {\r\n let activeIndex: number = this.getActiveIndex();\r\n\r\n if (activeIndex < this.viewportVisibleRange.start) {\r\n setTimeout(() => {\r\n this.viewport.scrollToOffset(activeIndex * this.optionSizePx);\r\n });\r\n\r\n } else if (activeIndex > this.viewportVisibleRange.end) {\r\n setTimeout(() => {\r\n this.viewport.scrollToOffset((activeIndex - (this.numOptionsToShow - 1)) * this.optionSizePx);\r\n });\r\n }\r\n }\r\n\r\n getActiveIndex() {\r\n let activeIndex: number = 0;\r\n\r\n if (this.activeValue !== undefined && this.activeValue !== null) {\r\n\r\n // if we added a none option the returned index would be off by one\r\n let valIndex = this.getOptIndex(this.activeValue) + (this.allowNone && (this.forceShowNone || !this.innerControl.value) ? 1 : 0);\r\n\r\n // the index should be within the range of our entire buffer, or just allow it to reset\r\n if (valIndex >= this.viewportRenderRange.start\r\n && (!this.viewportRenderRange.end || valIndex <= this.viewportRenderRange.end)\r\n ) {\r\n activeIndex = valIndex;\r\n }\r\n }\r\n\r\n return activeIndex;\r\n }\r\n\r\n public onFocus() {\r\n if (!this.isOpen) {\r\n // Highlights text\r\n if (this.selectTextOnOpen) {\r\n this.inputElement.nativeElement.select();\r\n }\r\n }\r\n }\r\n\r\n public onFocusOut() {\r\n // mark control touched and trigger error validation\r\n if (!this.clickInProgress) {\r\n this.close();\r\n this.onTouchedFn();\r\n }\r\n }\r\n\r\n public selectOption(opt: any): void {\r\n let newVal = this.getOptVal(opt, this.forceEmitObject);\r\n\r\n if (this.noNgControl) {\r\n this.outerControl.setValue(newVal);\r\n }\r\n\r\n this.onChangeFn(newVal);\r\n this.optionSelected.emit(newVal);\r\n this.optionChanged.emit(newVal);\r\n }\r\n\r\n public scrollToSelectedOption(): void {\r\n // scroll to the currently selected option when we open the dropdown\r\n if (this.selectedIndex > 0) {\r\n let offsetIndex: number = this.selectedIndex + (this.allowNone ? 1 : 0); // adjust for None entry\r\n offsetIndex -= (this.numOptionsToShow / 2) - 1; // calculate middle of viewport\r\n this.viewport.scrollToOffset(offsetIndex * this.optionSizePx);\r\n }\r\n }\r\n\r\n getOptVal(opt: any, forceObject: boolean = false): any {\r\n if (this.valueField && !forceObject) {\r\n if (opt !== null && opt !== undefined && typeof opt === \"object\" && this.valueField in opt) {\r\n return opt[this.valueField];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return opt;\r\n }\r\n\r\n getOptIndex(optValue: any): number {\r\n // find the index for the currently selected option\r\n if (optValue !== null && optValue !== undefined) {\r\n return this.loadedOptions.findIndex((option: any) => {\r\n return this.getOptVal(option) === optValue;\r\n });\r\n }\r\n return undefined;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component, ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output, SimpleChange,\r\n SimpleChanges, ViewChild,\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, UntypedFormControl, NG_VALUE_ACCESSOR, NgControl} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {debounceTime} from \"rxjs/operators\";\r\nimport {MatLegacySelect as MatSelect} from \"@angular/material/legacy-select\";\r\nimport {LegacyFloatLabelType as FloatLabelType} from \"@angular/material/legacy-form-field\";\r\n\r\n@Component({\r\n selector: \"hci-multi-combobox\",\r\n template: `\r\n <div class=\"combobox-multi-container d-flex font-sm\">\r\n <mat-form-field [appearance]=\"appearance\" [matTooltip]=\"this.tooltip\" [floatLabel]=\"floatLabel\">\r\n <mat-label *ngIf=\"label !== undefined\">{{ label }}</mat-label>\r\n <mat-label *ngIf=\"label === undefined\">\r\n {{ temporaryPlaceholder ? (outerControl.value && outerControl.value.length ? '' : placeholder) : placeholder }}\r\n </mat-label>\r\n <input #input matInput name=\"customMultiComboBoxFilter\" class=\"ellipsis\"\r\n (focus)=\"this.onInputFocus()\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"temporaryPlaceholder ? (outerControl.value && outerControl.value.length ? '' : placeholder) : placeholder\"\r\n [formControl]=\"this.innerControl\"\r\n [attr.cdkFocusInitial]=\"initialFocus === undefined ? null : initialFocus\">\r\n <div matSuffix class=\"hci-combobox-arrow-wrapper\">\r\n <mat-select\r\n #select [multiple]=\"true\"\r\n (selectionChange)=\"this.selectOptions($event.value)\"\r\n (openedChange)=\"this.onOpenedChange($event)\"\r\n [(ngModel)]=\"selectedListItems\"\r\n [compareWith]=\"compareByID\">\r\n <mat-option *ngFor=\"let opt of this.loadedOptions\" [value]=\"opt\">\r\n {{this.displayField ? opt[this.displayField] : opt}}\r\n </mat-option>\r\n <mat-option *ngIf=\"this.includeLoadingOption\">Loading...</mat-option>\r\n <mat-option *ngIf=\"!this.includeLoadingOption && !this.options.length\">None</mat-option>\r\n </mat-select>\r\n </div>\r\n </mat-form-field>\r\n </div>\r\n `,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: CustomMultiComboBoxComponent,\r\n multi: true,\r\n }],\r\n styles: [``],\r\n})\r\n\r\nexport class CustomMultiComboBoxComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n @ViewChild(\"input\", { static: false}) inputElement: ElementRef;\r\n @ViewChild(\"select\", { static: false}) selectElement: MatSelect;\r\n\r\n @Input() public label: string;\r\n @Input() public placeholder: string = \"\";\r\n @Input() public temporaryPlaceholder: boolean = false;\r\n @Input() public tooltip: string = \"\";\r\n\r\n @Input() public options: any[] = [];\r\n public includeLoadingOption: boolean = true;\r\n public loadedOptions: any[] = [];\r\n private isSelectOpen: boolean = false;\r\n\r\n @Input() private valueField: string;\r\n @Input() private forceEmitObject: boolean = false;\r\n @Input() public displayField: string;\r\n @Input() public appearance: string = \"\";\r\n @Input() public initialFocus: string;\r\n @Input() public floatLabel: FloatLabelType;\r\n\r\n public outerControl: AbstractControl = new UntypedFormControl([]);\r\n public innerControl: UntypedFormControl = new UntypedFormControl(\"\");\r\n private ignoreInnerControlChanges: boolean = false;\r\n private innerControlSubscription: Subscription;\r\n private noNgControl: boolean = false;\r\n public selectedListItems: any[] = [];\r\n\r\n @Output() selectionChanged: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private onChangeFn: (val: any) => void = () => {};\r\n private onTouchedFn: () => void = () => {};\r\n\r\n constructor(private injector: Injector) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let ngControl: NgControl = this.injector.get(NgControl, null);\r\n if (ngControl && ngControl.control) {\r\n this.outerControl = ngControl.control;\r\n setTimeout(() => {\r\n this.loadOnlyCurrentValue();\r\n });\r\n } else {\r\n this.noNgControl = true;\r\n }\r\n\r\n this.innerControlSubscription = this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe(() => {\r\n if (!this.ignoreInnerControlChanges) {\r\n this.filterOptions();\r\n } else {\r\n this.ignoreInnerControlChanges = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.options) {\r\n let optionsChange: SimpleChange = changes.options;\r\n if (!optionsChange.currentValue) {\r\n this.options = [];\r\n }\r\n }\r\n\r\n this.loadOnlyCurrentValue();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.loadOnlyCurrentValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.innerControl.disable();\r\n this.selectElement.disabled = true;\r\n } else {\r\n this.innerControl.enable();\r\n this.selectElement.disabled = false;\r\n }\r\n }\r\n\r\n public onInputFocus(): void {\r\n this.selectElement.open();\r\n }\r\n\r\n private loadOnlyCurrentValue(): void {\r\n this.loadedOptions = [];\r\n if (this.outerControl.value && this.outerControl.value.length) {\r\n for (let opt of this.options) {\r\n if (this.isOptInOuterValue(opt)) {\r\n this.loadedOptions.push(opt);\r\n }\r\n }\r\n }\r\n this.selectedListItems = this.loadedOptions;\r\n\r\n\r\n let currentValueLabel: string = \"\";\r\n for (let opt of this.loadedOptions) {\r\n if (currentValueLabel) {\r\n currentValueLabel += \", \";\r\n }\r\n currentValueLabel += this.displayField ? opt[this.displayField] : opt;\r\n }\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(currentValueLabel);\r\n }\r\n\r\n private filterOptions(showAll: boolean = false): void {\r\n if (showAll || !this.innerControl.value) {\r\n this.loadedOptions = this.options;\r\n } else {\r\n let searchValue: string = this.innerControl.value.toLowerCase();\r\n this.loadedOptions = this.options.filter((opt: any) => {\r\n let optDisplay: string = (this.displayField ? opt[this.displayField] : opt).toLowerCase();\r\n return optDisplay.includes(searchValue) || this.isOptInOuterValue(opt);\r\n });\r\n }\r\n }\r\n\r\n private isOptInOuterValue(opt: any): boolean {\r\n let optValue: any = this.valueField ? opt[this.valueField] : opt;\r\n if (this.forceEmitObject) {\r\n for (let outerValOpt of this.outerControl.value) {\r\n let outerOptValue: any = this.valueField ? outerValOpt[this.valueField] : outerValOpt;\r\n if (optValue === outerOptValue) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n return this.outerControl.value.includes(optValue);\r\n }\r\n }\r\n\r\n public onOpenedChange(opened: boolean): void {\r\n this.isSelectOpen = opened;\r\n if (opened) {\r\n this.onTouchedFn();\r\n\r\n this.inputElement.nativeElement.focus();\r\n this.ignoreInnerControlChanges = true;\r\n this.innerControl.setValue(\"\");\r\n\r\n setTimeout(() => {\r\n this.filterOptions(true);\r\n this.includeLoadingOption = false;\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.loadOnlyCurrentValue();\r\n this.includeLoadingOption = true;\r\n });\r\n }\r\n }\r\n\r\n public selectOptions(options: any[]): void {\r\n let newVal: any[] = [];\r\n for (let opt of options) {\r\n if (opt) {\r\n newVal.push((this.valueField && !this.forceEmitObject) ? opt[this.valueField] : opt);\r\n }\r\n }\r\n if (this.noNgControl) {\r\n this.outerControl.setValue(newVal);\r\n }\r\n\r\n this.onChangeFn(newVal);\r\n this.selectionChanged.emit(newVal);\r\n\r\n if (this.isSelectOpen) {\r\n this.inputElement.nativeElement.focus();\r\n }\r\n }\r\n\r\n compareByID(itemOne, itemTwo) {\r\n if(!itemOne) {\r\n return false;\r\n } else if (!itemTwo) {\r\n return false;\r\n } else {\r\n if(this.valueField) {\r\n return itemOne[this.valueField] && itemTwo[this.valueField] && itemOne[this.valueField] === itemTwo[this.valueField];\r\n } else {\r\n return itemOne === itemTwo;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.innerControlSubscription) {\r\n this.innerControlSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {MatLegacySelectModule as MatSelectModule} from \"@angular/material/legacy-select\";\r\nimport {MatLegacyAutocompleteModule as MatAutocompleteModule} from \"@angular/material/legacy-autocomplete\";\r\nimport {MatLegacyInputModule as MatInputModule} from \"@angular/material/legacy-input\";\r\nimport {MatLegacyTooltipModule as MatTooltipModule} from \"@angular/material/legacy-tooltip\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {ScrollingModule} from \"@angular/cdk/scrolling\";\r\n\r\nimport {MdSelectComponent} from \"./md-select.component\";\r\nimport {NativeSelectComponent} from \"./native-select.component\";\r\nimport {MdMultiSelectComponent} from \"./md-multi-select.component\";\r\nimport {CustomComboBoxComponent} from \"./custom-combobox.component\";\r\nimport {CustomMultiComboBoxComponent} from \"./custom-multi-combobox.component\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport {DictionaryServiceModule} from \"@huntsman-cancer-institute/dictionary-service\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n ScrollingModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n DictionaryServiceModule\r\n ],\r\n declarations: [\r\n MdSelectComponent,\r\n MdMultiSelectComponent,\r\n NativeSelectComponent,\r\n CustomComboBoxComponent,\r\n CustomMultiComboBoxComponent\r\n ],\r\n exports: [\r\n MdSelectComponent,\r\n MdMultiSelectComponent,\r\n NativeSelectComponent,\r\n CustomComboBoxComponent,\r\n CustomMultiComboBoxComponent\r\n ]\r\n})\r\nexport class SelectModule {}\r\n","import {\r\n ChangeDetectorRef, Component, EventEmitter, Input, isDevMode, Output, SimpleChange,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\n\r\n/**\r\n * I'm just screwing around with some ideas here, beware of actually using any of this code.\r\n */\r\n@Component({\r\n selector: \"hci-search\",\r\n template: `\r\n <div class=\"input-group \">\r\n <input #searchBox type=\"text\"\r\n (keyup.enter)=\"doSearch(searchBox.value)\"\r\n class=\"form-control\"\r\n placeholder=\"Search for...\"\r\n aria-label=\"Search for text\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"doSearch(searchBox.value)\">\r\n <i class=\"fas fa-search\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class SearchComponent {\r\n\r\n CHILD_NODE: string = \"children\";\r\n\r\n search: string;\r\n @Input() isArray: boolean;\r\n @Input() isIncludeChildren: boolean;\r\n\r\n @Input() anyComponent: any;\r\n @Input() input: string;\r\n @Input() data: any[];\r\n\r\n @Output() dataFiltered: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n if (isDevMode()) {\r\n console.debug(\"SearchComponent.ngAfterViewInit\");\r\n }\r\n setTimeout(() => {\r\n if (this.anyComponent && this.data && this.input) {\r\n let changes = {};\r\n changes[this.input] = new SimpleChange([], this.data, false);\r\n this.anyComponent.ngOnChanges(changes);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (isDevMode()) {\r\n console.debug(\"SearchComponent.ngOnChanges\");\r\n }\r\n if (changes.data && this.isArray === undefined) {\r\n for (let item of this.data) {\r\n if (item[this.CHILD_NODE]) {\r\n this.isArray = false;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * A tree or a grid? Who knows.\r\n *\r\n * @param {KeyboardEvent} event\r\n */\r\n doSearch(searchBox: string) {\r\n if (isDevMode()) {\r\n console.debug(\"doSearch\");\r\n }\r\n\r\n this.search = searchBox;\r\n let filteredData = null;\r\n if (this.isArray) {\r\n console.debug(\"array option\");\r\n filteredData = this.filterArray(this.data);\r\n } else if(this.isIncludeChildren) {\r\n console.debug(\"child option\");\r\n filteredData = this.filterTreeIncludeChildren(JSON.parse(JSON.stringify(this.data)));\r\n } else {\r\n console.debug(\"not child option\");\r\n filteredData = this.filterTree(JSON.parse(JSON.stringify(this.data)));\r\n }\r\n\r\n // This is what triggers the @Output\r\n this.dataFiltered.emit(filteredData);\r\n\r\n if (this.anyComponent) {\r\n let changes = {};\r\n changes[this.input] = new SimpleChange(this.anyComponent[this.input], filteredData, false);\r\n this.anyComponent.ngOnChanges(changes);\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n filterArray(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterArray\");\r\n }\r\n return data.filter((o: any) => {\r\n return (o[\"name\"].indexOf(this.search) >= 0);\r\n });\r\n }\r\n\r\n /**\r\n * Recursive tree search. It will include parent nodes if a leaf node matches the search string.\r\n *\r\n * @param {any[]} data\r\n * @returns {any[]}\r\n */\r\n filterTree(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterTreeOrigional\");\r\n }\r\n let filteredData: any[] = [];\r\n for (let child of data) {\r\n let pushed: boolean = false;\r\n if (child[\"children\"]) {\r\n child[\"children\"] = this.filterTree(child[\"children\"]);\r\n if (child[\"children\"].length > 0) {\r\n pushed = true;\r\n filteredData.push(child);\r\n }\r\n }\r\n if (!pushed && child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Recursive tree search. It will include children nodes if a parent node matches the search string.\r\n *\r\n * @param {any[]} data\r\n * @returns {any[]}\r\n */\r\n filterTreeIncludeChildren(data: any[]): any[] {\r\n if (isDevMode()) {\r\n console.debug(\"filterTreeIncludeChildren\");\r\n }\r\n let filteredData: any[] = [];\r\n for (let child of data) {\r\n if (child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }else {\r\n let pushed: boolean = false;\r\n if (child[\"children\"]) {\r\n child[\"children\"] = this.filterTreeIncludeChildren(child[\"children\"]);\r\n if (child[\"children\"].length > 0) {\r\n pushed = true;\r\n filteredData.push(child);\r\n }\r\n }\r\n if (!pushed && child[\"name\"].indexOf(this.search) >= 0) {\r\n filteredData.push(child);\r\n }\r\n }\r\n }\r\n return filteredData;\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SearchComponent} from \"./search.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule\r\n ],\r\n declarations: [\r\n SearchComponent\r\n ],\r\n exports: [\r\n SearchComponent\r\n ]\r\n})\r\nexport class SearchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.DropdownSelectResultComponent","i1.DropdownSelectComponent","i1.DropdownService","i3","i4.TemplateDropdownDirective","i5.DropdownSelectComponent","i1","i2","i1.DateComponent","MatTabsModule","MatFormFieldModule","MatInputModule","i4","i5","i6","i7","MatAutocompleteTrigger","MatSelectModule","MatAutocompleteModule","MatTooltipModule","MatProgressSpinnerModule"],"mappings":"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"}