slick-components 5.0.7 → 5.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +3 -3
- package/esm2020/utils/slick-init.service.mjs +2 -2
- package/fesm2015/slick-components.mjs +3 -3
- package/fesm2015/slick-components.mjs.map +1 -1
- package/fesm2020/slick-components.mjs +3 -3
- package/fesm2020/slick-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slick-components.mjs","sources":["../../../projects/components/src/utils/slick-init.service.ts","../../../projects/components/src/utils/slick-sleep.service.ts","../../../projects/components/src/utils/slick-utils.service.ts","../../../projects/components/src/slick-accordion/slick-accordion-item.component.ts","../../../projects/components/src/slick-accordion/slick-accordion-item.component.html","../../../projects/components/src/slick-accordion/slick-accordion.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.component.html","../../../projects/components/src/slick-accordion/slick-accordion-item-header.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.module.ts","../../../projects/components/src/slick-search-bar/slick-search-bar.component.ts","../../../projects/components/src/slick-search-bar/slick-search-bar.component.html","../../../projects/components/src/slick-search-bar/slick-search-bar.module.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete-list-item-template.directive.ts","../../../projects/components/src/utils/slick-function-lock.service.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete.component.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete.component.html","../../../projects/components/src/slick-auto-complete/slick-auto-complete.module.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.html","../../../projects/components/src/slick-button-spinner/slick-button-spinner.module.ts","../../../projects/components/src/slick-calendar/slick-calendar.component.ts","../../../projects/components/src/slick-calendar/slick-calendar.component.html","../../../projects/components/src/slick-calendar/slick-calendar.module.ts","../../../projects/components/src/slick-card/slick-card-header.component.ts","../../../projects/components/src/slick-card/slick-card.component.ts","../../../projects/components/src/slick-card/slick-card.component.html","../../../projects/components/src/slick-card/slick-card.module.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.html","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.html","../../../projects/components/src/slick-dialog/slick-dialog-footer.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.module.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.module.ts","../../../projects/components/src/slick-container/slick-container.component.ts","../../../projects/components/src/slick-container/slick-container.component.html","../../../projects/components/src/slick-container/slick-container-header.component.ts","../../../projects/components/src/slick-container/slick-container-body.component.ts","../../../projects/components/src/slick-container/slick-container-footer.component.ts","../../../projects/components/src/slick-container/slick-container.module.ts","../../../projects/components/src/slick-context-menu/slick-context-menu-item.component.ts","../../../projects/components/src/slick-context-menu/slick-context-menu.component.ts","../../../projects/components/src/slick-context-menu/slick-context-menu.component.html","../../../projects/components/src/slick-context-menu/slick-context-menu.module.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask-options.model.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask.directive.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask.module.ts","../../../projects/components/src/slick-date-picker/slick-date-picker.component.ts","../../../projects/components/src/slick-date-picker/slick-date-picker.component.html","../../../projects/components/src/slick-date-picker/slick-date-picker.module.ts","../../../projects/components/src/slick-drag-drop/slick-drag-drop.directive.ts","../../../projects/components/src/slick-drag-drop/slick-draggable.directive.ts","../../../projects/components/src/slick-drag-drop/slick-drag-drop.module.ts","../../../projects/components/src/slick-validation-indicator/slick-validation-indicator.directive.ts","../../../projects/components/src/slick-validation-indicator/slick-validation-indicator.module.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.service.ts","../../../projects/components/src/utils/slick-log.service.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.component.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.component.html","../../../projects/components/src/slick-drop-down/slick-drop-down-button.model.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.module.ts","../../../projects/components/src/slick-drop-list/slick-drop-list.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list-item.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list-grab.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list.module.ts","../../../projects/components/src/slick-file-model/slick-file.model.ts","../../../projects/components/src/slick-file-drop/slick-file-drop.component.ts","../../../projects/components/src/slick-file-drop/slick-file-drop.component.html","../../../projects/components/src/slick-file-drop/slick-file-drop.module.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.model.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.component.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.component.html","../../../projects/components/src/slick-file-list/slick-file-list-item.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.html","../../../projects/components/src/slick-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list.component.html","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.module.ts","../../../projects/components/src/slick-file-list/slick-file-list.module.ts","../../../projects/components/src/slick-emailer/slick-emailer-address.model.ts","../../../projects/components/src/slick-emailer/slick-emailer.component.ts","../../../projects/components/src/slick-emailer/slick-emailer.component.html","../../../projects/components/src/slick-emailer/slick-emailer-dialog.component.ts","../../../projects/components/src/slick-emailer/slick-emailer.model.ts","../../../projects/components/src/slick-emailer/slick-emailer.module.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.component.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.component.html","../../../projects/components/src/slick-email-viewer/slick-email-viewer-dialog.component.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.module.ts","../../../projects/components/src/slick-google-address-search/slick-google-address-search.directive.ts","../../../projects/components/src/slick-google-address-search/slick-google-address-search.module.ts","../../../projects/components/src/slick-google-map/slick-google-map.component.ts","../../../projects/components/src/slick-google-map/slick-google-map-dialog.component.ts","../../../projects/components/src/slick-google-map/slick-google-map.module.ts","../../../projects/components/src/slick-grid/slick-grid-column.model.ts","../../../projects/components/src/slick-grid/slick-grid-favorite.model.ts","../../../projects/components/src/slick-grid/slick-grid-request.model.ts","../../../projects/components/src/slick-grid/slick-grid-response.model.ts","../../../projects/components/src/slick-grid/slick-grid.service.ts","../../../projects/components/src/slick-grid/slick-grid-column-template.directive.ts","../../../projects/components/src/slick-popover/slick-popover.component.ts","../../../projects/components/src/slick-popover/slick-popover.component.html","../../../projects/components/src/slick-paging/slick-paging.component.ts","../../../projects/components/src/slick-paging/slick-paging.component.html","../../../projects/components/src/slick-grid/slick-grid-sanitize.pipe.ts","../../../projects/components/src/slick-grid/slick-grid.component.ts","../../../projects/components/src/slick-grid/slick-grid.component.html","../../../projects/components/src/slick-grid/slick-grid.options.ts","../../../projects/components/src/slick-paging/slick-paging.module.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.html","../../../projects/components/src/slick-pick-list/slick-pick-list.component.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.component.html","../../../projects/components/src/slick-ordered-list/slick-ordered-list.module.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.module.ts","../../../projects/components/src/slick-popover/slick-popover.module.ts","../../../projects/components/src/slick-grid/slick-grid.module.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.service.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.component.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.component.html","../../../projects/components/src/slick-multi-select/slick-multi-select.module.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.html","../../../projects/components/src/slick-profile-picture/slick-profile-picture.module.ts","../../../projects/components/src/slick-progress-bar/slick-progress-bar.service.ts","../../../projects/components/src/slick-progress-bar/slick-progress-bar.module.ts","../../../projects/components/src/slick-screen-blocker/slick-screen-blocker.service.ts","../../../projects/components/src/slick-screen-blocker/slick-screen-blocker.module.ts","../../../projects/components/src/slick-slider/slick-slider.component.ts","../../../projects/components/src/slick-slider/slick-slider.component.html","../../../projects/components/src/slick-slider/slick-slider-tick.model.ts","../../../projects/components/src/slick-slider/slick-slider.module.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.component.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.component.html","../../../projects/components/src/slick-split-screen/slick-screen-split-left-content.component.ts","../../../projects/components/src/slick-split-screen/slick-screen-split-right-content.component.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.module.ts","../../../projects/components/src/slick-star-rating/slick-star-rating.component.ts","../../../projects/components/src/slick-star-rating/slick-star-rating.component.html","../../../projects/components/src/slick-star-rating/slick-star-rating.module.ts","../../../projects/components/src/slick-tabs/slick-tab-header.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.html","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.html","../../../projects/components/src/slick-tabs/slick-tabs.module.ts","../../../projects/components/src/slick-toast/slick-toast.service.ts","../../../projects/components/src/slick-toast/slick-toast.module.ts","../../../projects/components/src/slick-tree-view/slick-tree-node.model.ts","../../../projects/components/src/slick-tree-view/slick-tree-view.component.ts","../../../projects/components/src/slick-tree-view/slick-tree-view.component.html","../../../projects/components/src/slick-tree-view/slick-tree-view.module.ts","../../../projects/components/src/slick-type-ahead/slick-type-ahead.directive.ts","../../../projects/components/src/slick-type-ahead/slick-type-ahead.module.ts","../../../projects/components/src/public-api.ts","../../../projects/components/src/slick-components.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\n\r\nexport class SlickInitParams {\r\n\tattachTo: string;\r\n\tplatform: string;\r\n\terrorLog: string = \"minimal\";\r\n\tversion: string;\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class SlickInitService {\t\r\n\tstatic version = \"5.0.7\";\r\n\r\n\tconstructor() { }\r\n\r\n\r\n\tstatic init(initParams: SlickInitParams): SlickInitParams {\r\n\t\tconsole.info(`Slick Components Version ${SlickInitService.version}`);\r\n\t\tinitParams.version = SlickInitService.version;\r\n\t\t(<any>window).slickComponentsParams = initParams;\r\n\r\n\t\treturn (<any>window).slickComponentsParams;\r\n\t}\r\n\r\n\tstatic getParams(): SlickInitParams {\r\n\t\tif (!(<any>window).slickComponentsParams) {\r\n\t\t\tconst defaultParams = new SlickInitParams();\r\n\t\t\tdefaultParams.attachTo = \"body\";\r\n\t\t\t(<any>window).slickComponentsParams = defaultParams;\r\n\t\t}\r\n\r\n\t\treturn <SlickInitParams>(<any>window).slickComponentsParams;\r\n\t}\r\n\r\n\tstatic getAttachTo(): string {\r\n\t\treturn SlickInitService.getParams().attachTo;\r\n\t}\r\n\r\n\tstatic setAttachTo(attachToElement: string) {\r\n\t\tSlickInitService.getParams().attachTo = attachToElement;\r\n\t}\r\n\r\n\tstatic getPlatform(): string {\r\n\t\treturn SlickInitService.getParams().platform;\r\n\t}\r\n\r\n\tstatic setPlatform(platform: string) {\r\n\t\tSlickInitService.getParams().platform = platform;\r\n\t}\r\n\r\n\tstatic getErrorLog(): string {\r\n\t\treturn SlickInitService.getParams().errorLog;\r\n\t}\r\n\r\n\tstatic setErrorLog(errorLog: string) {\r\n\t\tSlickInitService.getParams().errorLog = errorLog;\r\n\t}\r\n}\r\n\r\n","import { Injectable, NgModule } from \"@angular/core\";\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickSleepService {\r\n\tstatic async sleep(timeout: number = 0): Promise<void> {\r\n\t\treturn new Promise<void>((resolve) => setTimeout(() => resolve(), timeout));\r\n\t}\r\n}\r\n","import { Injectable, ElementRef } from \"@angular/core\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickUtilsService {\r\n\tstatic newGuid(): string {\r\n\t\tlet d = new Date().getTime();\r\n\t\tconst uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tconst r = (d + Math.random() * 16) % 16 | 0;\r\n\t\t\td = Math.floor(d / 16);\r\n\t\t\treturn (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n\t\t});\r\n\t\treturn uuid;\r\n\t}\r\n\r\n\tstatic waitForElement(elementSelector: string, iterationTimeout = 50): Promise<HTMLElement> {\r\n\t\tlet infiniteLoopCheck = 10;\r\n\t\tlet iterationId: NodeJS.Timer;\r\n\t\tconst p = new Promise<HTMLElement>((resolve, reject) => {\r\n\t\t\titerationId = setInterval(() => {\r\n\t\t\t\tconst el = <HTMLElement>document.querySelector(elementSelector);\r\n\t\t\t\tif (el) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tresolve(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (--infiniteLoopCheck <= 0) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\talert(\"Loop Check failed trying to find \" + elementSelector);\r\n\t\t\t\t\treject();\r\n\t\t\t\t}\r\n\r\n\t\t\t}, 100);\r\n\r\n\t\t});\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\tstatic waitForElementRef(elementRef: ElementRef, iterationTimeout = 50): Promise<ElementRef> {\r\n\t\tlet infiniteLoopCheck = 10;\r\n\t\tlet iterationId: NodeJS.Timer;\r\n\t\tconst p = new Promise<ElementRef>((resolve, reject) => {\r\n\t\t\titerationId = setInterval(() => {\r\n\t\t\t\tconst el = <HTMLElement>elementRef.nativeElement;\r\n\t\t\t\tif (el && el.clientHeight && el.clientWidth) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tresolve(elementRef);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (--infiniteLoopCheck <= 0) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tconsole.error(\"Loop Check failed trying to find element\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t}\r\n\t\t\t}, iterationTimeout);\r\n\r\n\t\t});\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\tstatic getDeepObject(obj: any, objName: string): any {\r\n\t\tconst dotSplit = objName.split(\".\");\r\n\r\n\t\tlet currentObj = obj;\r\n\t\tdotSplit.forEach((o) => {\r\n\t\t\tif (currentObj === null || currentObj === undefined)\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tcurrentObj = currentObj[o];\r\n\t\t});\r\n\r\n\t\treturn currentObj;\r\n\t}\r\n\r\n\tstatic setDeepObject(obj: any, objName: string, val: any) {\r\n\t\tconst dotSplit = objName.split(\".\");\r\n\r\n\t\tlet prevObj = obj;\r\n\t\tlet currentObj = obj;\r\n\t\tdotSplit.forEach((o) => {\r\n\t\t\tif (currentObj === null || currentObj === undefined)\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tprevObj = currentObj;\r\n\t\t\tcurrentObj = currentObj[o];\r\n\t\t});\r\n\r\n\t\tprevObj[dotSplit[dotSplit.length - 1]] = val;\r\n\r\n\t\treturn currentObj;\r\n\t}\r\n\r\n\tstatic clone(obj: any): any {\r\n\t\tif (obj === null || obj === undefined)\r\n\t\t\treturn obj;\r\n\r\n\t\tlet returnObj = JSON.parse(JSON.stringify(obj));\r\n\t\t//returnObj = this.dateSanitize(returnObj);\r\n\r\n\t\treturn returnObj;\r\n\t}\r\n\r\n\tstatic dateSanitize(obj: any, infiniteLoopCheck: number = 0): any {\r\n\t\tinfiniteLoopCheck++;\r\n\r\n\t\tif (infiniteLoopCheck > 20) {\r\n\t\t\tconsole.error(\"infinte loop\");\r\n\t\t\treturn obj;\r\n\t\t}\r\n\r\n\t\tif (obj === null || obj === undefined)\r\n\t\t\treturn obj;\r\n\r\n\t\t// If the obj IS a date, return the processed date\r\n\t\tif (typeof obj === \"string\" && /^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj))\r\n\t\t\treturn new Date(obj);\r\n\r\n\t\t// If this is an atomic type (string, bool, number), just return the atomic object\r\n\t\tif (typeof obj !== \"object\")\r\n\t\t\treturn obj;\r\n\r\n\t\tlet returnObj;\r\n\t\tif (Array.isArray(obj)) {\r\n\t\t\treturnObj = [];\r\n\t\t\tobj.forEach(o => returnObj.push(this.dateSanitize(o, infiniteLoopCheck)));\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturnObj = {};\r\n\r\n\t\t\tfor (const key in obj) {\r\n\t\t\t\tif (obj[key] === null)\r\n\t\t\t\t\treturnObj[key] = null;\r\n\t\t\t\telse if (Array.isArray(obj[key])) {\r\n\t\t\t\t\treturnObj[key] = [];\r\n\t\t\t\t\tobj[key].forEach(o => returnObj[key].push(this.dateSanitize(o, infiniteLoopCheck)));\r\n\t\t\t\t}\r\n\t\t\t\telse if (typeof obj[key] === \"object\")\r\n\t\t\t\t\treturnObj[key] = this.dateSanitize(obj[key], ++infiniteLoopCheck);\r\n\t\t\t\telse if (/^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj[key]))\r\n\t\t\t\t\treturnObj[key] = new Date(obj[key]);\r\n\t\t\t\telse\r\n\t\t\t\t\treturnObj[key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn returnObj;\r\n\t}\r\n\r\n\tstatic round(num: number, decimals: number): number {\r\n\t\treturn Number(Math.round(parseFloat(num + 'e' + decimals)) + 'e-' + decimals);\r\n\t}\r\n\r\n\tstatic checkParentClassExists(el: HTMLElement, className: string): boolean {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\tlet hasSelector = false;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList.contains(className)) {\r\n\t\t\t\thasSelector = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcurrentEl = currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn hasSelector;\r\n\t}\r\n\r\n\tstatic checkParentIdExists(el: HTMLElement, idName: string): boolean {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\tlet hasSelector = false;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.getAttribute(\"id\") === idName) {\r\n\t\t\t\thasSelector = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcurrentEl = currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn hasSelector;\r\n\t}\r\n\r\n\tstatic findParentByAttr(el: HTMLElement, attrName: string, attrValue: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.hasAttribute(attrName) && currentEl.getAttribute(attrName) === attrValue) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic findParent(el: HTMLElement, className: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList && currentEl.classList.contains(className)) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\tstatic getClosestSibling(el: HTMLElement, className: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList && currentEl.classList.contains(className)) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.previousSibling;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic getHashCode = function (str: string) {\r\n\t\tlet hash: number = 0;\r\n\t\tlet chr: number;\r\n\r\n\t\tif (str.length === 0) return hash;\r\n\t\tfor (let i = 0; i < str.length; i++) {\r\n\t\t\tchr = str.charCodeAt(i);\r\n\t\t\thash = ((hash << 5) - hash) + chr;\r\n\t\t\thash |= 0; // Convert to 32bit integer\r\n\t\t}\r\n\t\treturn Math.abs(hash);\r\n\t};\r\n\r\n\tstatic waitForTinyMCE(tinyMCEId: string): Promise<void> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tlet waitForTinyMCE: NodeJS.Timer;\r\n\r\n\t\t\tif (tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) {\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tclearInterval(waitForTinyMCE);\r\n\t\t\t\tlet infiniteLoopCheck = 100;\r\n\t\t\t\twaitForTinyMCE = setInterval(() => {\r\n\t\t\t\t\tif ((tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) || infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\tclearInterval(waitForTinyMCE);\r\n\r\n\t\t\t\t\t\tif (infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\t\tconsole.error(\"Timed out waiting for tinyMCE Id: \" + tinyMCEId);\r\n\t\t\t\t\t\t\treturn reject();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\treturn resolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinfiniteLoopCheck--;\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic attachElement(el: HTMLElement, attachTo: string) {\r\n\t\tif (attachTo === 'body')\r\n\t\t\tdocument.body.appendChild(el);\r\n\t\telse {\r\n\t\t\tconst parent = document.body.querySelector(attachTo);\r\n\t\t\tif (!parent) {\r\n\t\t\t\tconsole.error(\"Could not find element \" + attachTo + \" to attach to\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparent.appendChild(el);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic removeElement(el: HTMLElement) {\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\t// the default destroy won't get rid of this\r\n\t\t\tdocument.body.removeChild(el);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tstatic arrayInsert<T>(elementToInsert: T, arr: T[], index: number): T[] {\r\n\t\tconst pre = arr.slice(0, index);\r\n\t\tconst post = arr.slice(index, arr.length);\r\n\t\treturn [...pre, elementToInsert, ...post];\r\n\t}\r\n}\r\n\r\n","import { Component, Input, ViewChild, ElementRef, OnChanges } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion-item\",\r\n\ttemplateUrl: \"slick-accordion-item.component.html\"\r\n})\r\nexport class SlickAccordionItemComponent implements OnChanges {\r\n\t@Input(\"header\") header: string;\r\n\t@Input(\"headerIcon\") headerIcon: string;\r\n\t@Input(\"key\") key: string;\r\n\t@Input() noExpand: boolean = false;\r\n\r\n\t@ViewChild(\"slickAccordionItemRef\") slickAccordionItemRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBodyWrapperRef\") slickAccordionBodyWrapperRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBodyRef\") slickAccordionBodyRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBouncePaddingRef\") slickAccordionBouncePaddingRef: ElementRef;\r\n\r\n\treadonly PIXELS_PER_TICK = 15;\r\n\r\n\tisExpanded: boolean = false;\r\n\tindex: number;\r\n\t// This will be set in the slick-accordion.component as a callback\r\n\tonChangeCallback: any;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnChanges() {\r\n\t\tthis.noExpand = (this.noExpand.toString().toLowerCase() === 'true') ? true : false;\r\n\t}\r\n\r\n\tasync onHeaderClicked() {\r\n\t\tif (this.noExpand) {\r\n\t\t\tif (this.onChangeCallback)\r\n\t\t\t\tthis.onChangeCallback(this.index);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isExpanded === false)\r\n\t\t\t\tthis.expand();\r\n\t\t\telse\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync expand() {\r\n\t\tif (this.noExpand)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isExpanded === true)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.onChangeCallback)\r\n\t\t\tthis.onChangeCallback(this.index);\r\n\r\n\t\tthis.isExpanded = true;\r\n\r\n\t\tawait SlickUtilsService.waitForElementRef(this.slickAccordionItemRef);\r\n\r\n\t\t// Give the collapses a chance to collapse down before we expand\r\n\t\tawait SlickSleepService.sleep(100);\r\n\t\tconst maxHeight = (<HTMLDivElement>this.slickAccordionBodyRef.nativeElement).offsetHeight;\r\n\t\t(<HTMLDivElement>this.slickAccordionBouncePaddingRef.nativeElement).style.display = \"block\";\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = (maxHeight + 30) + \"px\";\r\n\t\tawait SlickSleepService.sleep(125);\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = maxHeight + \"px\";\r\n\t\tawait SlickSleepService.sleep(100);\r\n\t\t(<HTMLDivElement>this.slickAccordionBouncePaddingRef.nativeElement).style.display = \"none\";\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = \"none\";\r\n\t}\r\n\r\n\tasync collapse(ignoreOnChangeCallback: boolean = false) {\r\n\t\tif (this.isExpanded === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isExpanded = false;\r\n\r\n\t\t// The animations requires a number for maxHeight. Just set it to the current height, then to 0\r\n\t\tconst maxHeight = (<HTMLDivElement>this.slickAccordionBodyRef.nativeElement).offsetHeight;\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = maxHeight + \"px\";\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = \"0\";\r\n\r\n\t\tif (this.onChangeCallback && ignoreOnChangeCallback === false)\r\n\t\t\tthis.onChangeCallback(this.index);\r\n\t}\r\n\r\n\tgetKey(): string {\r\n\t\treturn this.key || null;\r\n\t}\r\n}","<div #slickAccordionItemRef class=\"slick-accordion-item\">\r\n\t<div *ngIf=\"header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><i *ngIf=\"headerIcon\" class=\"far\" [ngClass]=\"headerIcon\"></i> {{header}}</div>\r\n\t<div *ngIf=\"!header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><ng-content select=\"slick-accordion-item-header\"></ng-content></div>\r\n\t<div #slickAccordionBodyWrapperRef class=\"slick-accordion-body-wrapper\">\r\n\t\t<div #slickAccordionBodyRef class=\"card-body slick-accordion-body\"><ng-content></ng-content></div>\r\n\t\t<div #slickAccordionBouncePaddingRef style=\"display: none; min-height: 30px;\"></div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnChanges, OnDestroy, SimpleChanges, AfterContentInit, ContentChildren, forwardRef, QueryList } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickAccordionItemComponent } from \"./slick-accordion-item.component\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion\",\r\n\ttemplateUrl: \"slick-accordion.component.html\"\r\n})\r\nexport class SlickAccordionComponent implements OnChanges, AfterContentInit, OnDestroy {\r\n\t@Input() accordionIndex: number;\r\n\t@Output() accordionIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\t@Input() keepExpanded: boolean = false;\r\n\t@Output() onChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n\t@ContentChildren(forwardRef(() => SlickAccordionItemComponent)) slickAccordionItems: QueryList<SlickAccordionItemComponent>;\r\n\r\n\tprivate slickAccordionItems$: Subscription;\r\n\r\n\tconstructor() { }\r\n\r\n\tasync ngAfterContentInit() {\r\n\t\tthis.slickAccordionItems$ = this.slickAccordionItems.changes.subscribe(async (slickAccordionItems: QueryList<SlickAccordionItemComponent>) => {\r\n\t\t\t// Go through each of the accordion items and set the callback to collapse\r\n\t\t\tslickAccordionItems.forEach((x, idx) => {\r\n\t\t\t\tx.index = idx;\r\n\t\t\t\tx.onChangeCallback = (index) => {\r\n\t\t\t\t\tif (this.keepExpanded === false && x.noExpand === false)\r\n\t\t\t\t\t\tthis.collapseAll();\r\n\r\n\t\t\t\t\tif (this.accordionIndexChange)\r\n\t\t\t\t\t\tthis.accordionIndexChange.emit(index)\r\n\r\n\t\t\t\t\tif (this.onChange) \r\n\t\t\t\t\t\tthis.onChange.emit(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\tif (this.accordionIndex !== undefined && this.accordionIndex !== null) \r\n\t\t\t\tthis.expand(this.accordionIndex);\r\n\t\t});\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.slickAccordionItems.notifyOnChanges();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tif (this.slickAccordionItems$)\r\n\t\t\tthis.slickAccordionItems$.unsubscribe();\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.keepExpanded = (this.keepExpanded.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (this.keepExpanded === false && changes.accordionIndex) \r\n\t\t\tthis.expand(this.accordionIndex);\t\t\r\n\t}\r\n\r\n\texpand(index: number) {\r\n\t\tif (!this.slickAccordionItems || (this.slickAccordionItems.length - 1) < index)\r\n\t\t\treturn;\r\n\r\n\t\tthis.slickAccordionItems.toArray()[index].expand();\r\n\t}\r\n\r\n\tcollapse(index: number) {\r\n\t\tif (!this.slickAccordionItems || (this.slickAccordionItems.length - 1) < index)\r\n\t\t\treturn;\r\n\r\n\t\tthis.slickAccordionItems.toArray()[index].collapse();\r\n\t}\r\n\r\n\tgetKey(index: number): string {\r\n\t\treturn this.slickAccordionItems.toArray()[index].getKey();\r\n\t}\r\n\r\n\tcollapseAll() {\r\n\t\tthis.slickAccordionItems.forEach(x => x.collapse(true));\r\n\t}\r\n}","<div class=\"slick-accordion card\">\r\n\t<ng-content select=\"slick-accordion-item\"></ng-content>\r\n</div>\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion-item-header\",\r\n\ttemplate: \"<ng-content></ng-content>\"\r\n})\r\nexport class SlickAccordionItemHeaderComponent {\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickAccordionComponent } from \"./slick-accordion.component\";\r\nimport { SlickAccordionItemComponent } from \"./slick-accordion-item.component\";\r\nimport { SlickAccordionItemHeaderComponent } from \"./slick-accordion-item-header.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [CommonModule, SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent],\r\n\tdeclarations: [SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent]\r\n})\r\nexport class SlickAccordionModule { }\r\n\r\nexport { SlickAccordionComponent }\r\nexport { SlickAccordionItemComponent }\r\nexport { SlickAccordionItemHeaderComponent }\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnChanges, Output, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-search-bar\",\r\n\ttemplateUrl: \"slick-search-bar.component.html\",\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickSearchBarComponent),\r\n\t\t\tmulti: true\r\n\t\t}]\r\n})\r\nexport class SlickSearchBarComponent implements OnChanges, AfterViewInit {\r\n\t@HostBinding('style.flex') flex = '1 1';\r\n\r\n\t@Input() showSearchIcon: boolean;\r\n\t@Input() showAddButton: boolean;\r\n\t@Input() disableAddButton: boolean;\r\n\t@Input() showEditButton: boolean;\r\n\t@Input() disableEditButton: boolean;\r\n\t@Input() autofocus: boolean;\r\n\t@Input() delay: number;\r\n\t@Input() placeholder: string;\r\n\t@Input() icon: string;\r\n\r\n\t@Output() onAddClick: EventEmitter<string> = new EventEmitter();\r\n\t@Output() onEditClick: EventEmitter<string> = new EventEmitter();\r\n\t@Output() onSearch: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@ViewChild(\"slickSearchTextBoxRef\") slickSearchTextBoxRef: ElementRef;\r\n\tpublic get slickSearchTextBox(): HTMLInputElement {\r\n\t\treturn <HTMLInputElement>this.slickSearchTextBoxRef?.nativeElement;\r\n\t}\r\n\r\n\tprotected searchTimer: NodeJS.Timer;\r\n\tprotected searchText: string;\r\n\tprotected lastSearchText: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.searchText = '';\r\n\t\tthis.lastSearchText = '';\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.setDefaults();\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\tthis.setDefaults();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.autofocus === true) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\t(<HTMLInputElement>this.slickSearchTextBoxRef.nativeElement).focus();\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t}\r\n\r\n\t// Since it's possible to have this with no inputs, we need to set the inputs on both OnInit and OnChanges\r\n\tprivate setDefaults() {\r\n\t\tthis.showSearchIcon = (this.showSearchIcon ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.showAddButton = (this.showAddButton ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.disableAddButton = (this.disableAddButton ?? \"false\").toString().toLowerCase() === \"true\";\r\n\t\tthis.showEditButton = (this.showEditButton ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.disableEditButton = (this.disableEditButton ?? \"false\").toString().toLowerCase() === \"true\";\r\n\t\tthis.autofocus = (this.autofocus ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tif (isNaN(this.delay))\r\n\t\t\tthis.delay = 600;\r\n\t\telse\r\n\t\t\tthis.delay = parseInt((this.delay ?? '600').toString());\r\n\t\tthis.placeholder = this.placeholder || 'Search...';\r\n\t\tthis.icon = this.icon || 'far fa-search';\r\n\t}\r\n\r\n\tprotected async onKeyUp() {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (this.lastSearchText === this.searchText)\r\n\t\t\treturn;\r\n\r\n\t\tthis.lastSearchText = this.searchText;\r\n\r\n\t\tclearTimeout(this.searchTimer);\r\n\r\n\t\tthis.searchTimer = setTimeout(() => {\r\n\t\t\tthis.propagateChange(this.searchText);\r\n\t\t\tthis.onSearch.emit(this.searchText);\r\n\t\t}, this.delay);\r\n\t}\r\n\r\n\tprotected propagateChange = (_: any) => { };\r\n\r\n\tprotected async writeValue(obj: any) {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.searchText = obj;\r\n\t\tthis.lastSearchText = this.searchText;\r\n\t}\r\n\r\n\tprotected registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tprotected registerOnTouched() { }\r\n\r\n\tprotected async onAddClicked() {\r\n\t\tif (this.disableAddButton)\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.onAddClick.emit(this.searchText);\r\n\t}\r\n\r\n\tprotected async onEditClicked() {\r\n\t\tif (this.disableEditButton)\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.onEditClick.emit(this.searchText);\r\n\t}\r\n}","<div class=\"slick-search-bar border d-flex flex-fill align-items-center bg-white\">\r\n\t<div *ngIf=\"showSearchIcon\" class=\"slick-search-bar_icon ms-3 p-0\"><i [ngClass]=\"icon\"></i></div>\r\n\t<div *ngIf=\"!showSearchIcon\" class=\"ms-3\"></div>\r\n\t<input #slickSearchTextBoxRef type=\"text\" class=\"form-control ms-2\" [(ngModel)]=\"searchText\" (keydown)=\"onKeyUp()\" [placeholder]=\"placeholder\" />\r\n\t<div *ngIf=\"(showAddButton || showEditButton)\" class=\"d-flex\">\r\n\t\t<div *ngIf=\"showAddButton\" class=\"slick-search-bar_add-button me-2\">\r\n\t\t\t<div *ngIf=\"disableAddButton\"><i class=\"far fa-plus\"></i></div>\r\n\t\t\t<a href=\"#\" *ngIf=\"!disableAddButton\" (click)=\"onAddClicked(); false;\"><i class=\"far fa-plus\"></i></a>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"showEditButton\" class=\"slick-search-bar_edit-button me-2\">\r\n\t\t\t<div *ngIf=\"disableEditButton\"><i class=\"far fa-pencil\"></i></div>\r\n\t\t\t<a href=\"#\" *ngIf=\"!disableEditButton\" (click)=\"onEditClicked(); false;\"><i class=\"far fa-pencil\"></i></a>\r\n\t\t</div>\r\n\t</div>\r\n\t<div style=\"width: 10px\"></div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickSearchBarComponent } from \"./slick-search-bar.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\texports: [SlickSearchBarComponent],\r\n\tdeclarations: [SlickSearchBarComponent]\r\n})\r\nexport class SlickSearchBarModule { }\r\n\r\nexport { SlickSearchBarComponent } ","import { Directive, Input, TemplateRef, OnInit, OnDestroy, EmbeddedViewRef, ViewContainerRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[slickAutoCompleteListItemTemplate]',\r\n\thost: {\r\n\t}\r\n})\r\nexport class SlickAutoCompleteListItemTemplateDirective {\r\n\t@Input() type: string;\r\n\t@Input('slickAutoCompleteListItemTemplate') name: string;\r\n\r\n\tconstructor(public template: TemplateRef<any>) { }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nclass SlickFunctionLockModel {\r\n\tuuid: string;\r\n\tfunctionKey: string;\r\n\tinfiniteLoopCheck: number = 100;\r\n\tpromise: Promise<void>;\r\n\tlockCount: number;\r\n\tintervalId: NodeJS.Timer;\r\n}\r\n\r\n@Injectable()\r\nexport class SlickFunctionLockService {\r\n\tprivate functionLocks: any = {};\r\n\r\n\tconstructor() {}\r\n\r\n\tlock(functionKey: string, iterationTimeout: number = 200): Promise<void> {\r\n\t\tif (!this.functionLocks[functionKey])\r\n\t\t\tthis.functionLocks[functionKey] = [];\r\n\r\n\t\tconst functionLock = new SlickFunctionLockModel();\r\n\t\tfunctionLock.functionKey = functionKey;\r\n\t\tlet d = new Date().getTime();\r\n\t\tconst uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tvar r = (d + Math.random() * 16) % 16 | 0;\r\n\t\t\td = Math.floor(d / 16);\r\n\t\t\treturn (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n\t\t});\r\n\t\tfunctionLock.uuid = uuid;\r\n\t\tfunctionLock.lockCount = this.functionLocks[functionKey].length + 1;\r\n\t\tfunctionLock.promise = new Promise<any>((resolve, reject) => {\r\n\t\t\tfunctionLock.intervalId = setInterval(() => {\r\n\t\t\t\tif (functionLock.lockCount === 1 || functionLock.infiniteLoopCheck-- === 0) {\r\n\t\t\t\t\tclearInterval(functionLock.intervalId);\r\n\t\t\t\t\tif (functionLock.infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\talert(\"Inifite loop detected for \" + functionLock.functionKey);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t}, iterationTimeout);\r\n\t\t});\r\n\r\n\t\t\r\n\t\tthis.functionLocks[functionKey].push(functionLock);\r\n\r\n\t\treturn functionLock.promise;\r\n\t}\r\n\r\n\trelease(functionKey: string): number {\r\n\t\tif (this.functionLocks && this.functionLocks[functionKey]) {\r\n\t\t\tthis.functionLocks[functionKey].splice(0, 1);\r\n\t\t\tthis.functionLocks[functionKey].forEach((fl: SlickFunctionLockModel) => fl.lockCount--);\r\n\r\n\t\t\treturn this.functionLocks[functionKey].length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n\r\n","import { Component, OnInit, OnDestroy, ElementRef, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef, OnChanges, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete-list-item-template.directive\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickSearchBarComponent } from \"../slick-search-bar/slick-search-bar.module\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-auto-complete',\r\n\ttemplateUrl: 'slick-auto-complete.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickAutoCompleteComponent),\r\n\t\t\tmulti: true\r\n\t\t}]\r\n})\r\nexport class SlickAutoCompleteComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\r\n\t@Input(\"inputRef\") inputRef: HTMLInputElement;\r\n\t@Input(\"searchBarRef\") searchBarRef: SlickSearchBarComponent;\r\n\t@Input(\"items\") items: any[];\r\n\t@Input(\"delay\") delay: number = 300;\r\n\t@Input(\"selectFirst\") selectFirst: boolean = true;\r\n\t@Input(\"displayTextFieldName\") displayTextFieldName: string;\r\n\t@Input(\"offset\") offset: number = 0;\r\n\t@Input(\"listHeight\") listHeight = \"300px\";\r\n\t@Input(\"listWidth\") listWidth: string = '100%';\r\n\t@Input(\"allowFreeformText\") allowFreeformText = true;\r\n\t@Input(\"showNoItemsFoundDisplay\") showNoItemsFoundDisplay = true;\r\n\t@Output(\"onRefresh\") onRefresh: EventEmitter<string> = new EventEmitter<string>();\r\n\t@Output(\"onSelect\") onSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output(\"onFreeformTextSelect\") onFreeformTextSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t@ViewChild(\"autoCompleteRef\", { static: true }) autoCompleteRef: ElementRef;\r\n\t@ContentChild(SlickAutoCompleteListItemTemplateDirective, { static: true }) listItemTemplateRef: SlickAutoCompleteListItemTemplateDirective;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnKeyDown = (e) => this.keyDown(e);\r\n\r\n\tprivate selectedItem: any;\r\n\tprivate delayTimeout: NodeJS.Timer;\r\n\tprivate waitForItemsInterval: NodeJS.Timer;\r\n\tprivate lastInputValue: string = \"\";\r\n\tprivate forcedCollapse = false;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tprivate fnReposition = () => this.reposition();\r\n\r\n\tuuid: string;\r\n\tleft: string;\r\n\ttop: string;\r\n\twidth: string;\r\n\tselectedIndex: number = -1;\r\n\tshowAutoComplete: boolean = false;\r\n\tautoCompleteVisiblity: boolean = false;\r\n\texpanded: boolean = true;\r\n\tloading: boolean = false;\r\n\r\n\tconstructor(private slickFunctionLockService: SlickFunctionLockService) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.searchBarRef) \r\n\t\t\tthis.inputRef = (<ElementRef>this.searchBarRef.slickSearchTextBoxRef).nativeElement;\r\n\t\t\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.autoCompleteRef.nativeElement.remove(this.autoCompleteRef);\r\n\t\tdocument.body.appendChild(this.autoCompleteRef.nativeElement);\r\n\r\n\t\tthis.inputRef.addEventListener(\"keydown\", this.fnKeyDown);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.inputRef.removeEventListener(\"keydown\", this.fnKeyDown);\r\n\r\n\t\tclearTimeout(this.delayTimeout);\r\n\t\tthis.delayTimeout = null;\r\n\r\n\t\tthis.collapse();\r\n\r\n\t\t// Is okay if this fails. It just means it was already removed.\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.autoCompleteRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\t\t\r\n\t\tif (changes.allowFreeformText) \r\n\t\t\tthis.allowFreeformText = (this.allowFreeformText.toString().toLowerCase() === 'false') ? false : true;\t\t\r\n\r\n\t\tif (changes.showNoItemsFoundDisplay)\r\n\t\t\tthis.showNoItemsFoundDisplay = (this.showNoItemsFoundDisplay.toString().toLowerCase() === 'false') ? false : true;\t\t\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tif (this.items && this.items.length === 0 && this.showNoItemsFoundDisplay === false)\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t\tif (isNaN(this.offset))\r\n\t\t\tthis.offset = parseInt(this.offset.toString());\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (e.target === this.inputRef)\r\n\t\t\treturn;\r\n\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-auto-complete_\" + this.uuid) === false) {\r\n\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect)\r\n\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t}\r\n\t}\r\n\r\n\tonItemClick(index) {\r\n\t\tthis.selectItem(index);\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\tprivate async keyDown(event: KeyboardEvent) {\r\n\t\t// alt\r\n\t\tif (event.keyCode === 18)\r\n\t\t\treturn;\r\n\r\n\t\tclearInterval(this.waitForItemsInterval);\r\n\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\r\n\t\t// If we're just tabbing through, don't even do anything\r\n\t\tif (!this.lastInputValue && (event.keyCode === 9 || event.keyCode === 13))\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (this.lastInputValue !== this.inputRef.value) {\r\n\t\t\tthis.lastInputValue = this.inputRef.value;\r\n\t\t\tthis.forcedCollapse = false;\r\n\r\n\t\t\tif (!this.lastInputValue) {\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\tthis.delayTimeout = null;\r\n\t\t\tif (this.inputRef.value === '') {\r\n\t\t\t\tthis.items = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.delayTimeout = setTimeout(async () => {\r\n\t\t\t\t\t(this.selectFirst === true) ? this.selectedIndex = 0 : this.selectedIndex = -1;\r\n\t\t\t\t\tthis.delayTimeout = null;\r\n\t\t\t\t\tthis.items = null;\r\n\t\t\t\t\tthis.expand();\r\n\t\t\t\t\tawait this.refreshItems(true);\r\n\t\t\t\t}, this.delay);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (event.keyCode === 9 || event.keyCode === 13) {\r\n\t\t\tif (this.delayTimeout && this.selectFirst) {\r\n\t\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\t\tthis.delayTimeout = null;\r\n\t\t\t\tthis.items = null;\r\n\t\t\t\tthis.collapse();\r\n\r\n\t\t\t\tif (this.selectFirst === true && !this.forcedCollapse) {\r\n\t\t\t\t\tawait this.refreshItems(false);\r\n\t\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\t\t\tif (!this.items && !this.inputRef.value && this.onSelect) {\r\n\t\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.items && this.items.length > 0) {\r\n\t\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\t\tthis.selectItem(this.selectedIndex);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) \r\n\t\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) \r\n\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\t\tif (!this.items && !this.inputRef.value && this.onSelect) {\r\n\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.items && this.items.length > 0 && this.expanded && !this.forcedCollapse) {\r\n\t\t\t\t\tthis.selectItem(this.selectedIndex);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) {\r\n\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (event.which === 27) {\r\n\t\t\tthis.forcedCollapse = true;\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (event.which === 38) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (event.which === 40) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded) {\r\n\t\t\t\tthis.expand();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.selectedIndex < this.items.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\twriteValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tregisterOnTouched() { }\r\n\r\n\tasync selectItem(index: number) {\r\n\t\tif (index < 0 || !this.items || this.items.length === 0) {\r\n\t\t\tthis.selectedItem = null;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedItem = this.items[index];\r\n\t\t\tif (this.displayTextFieldName) {\r\n\t\t\t\tconst text = SlickUtilsService.getDeepObject(this.selectedItem, this.displayTextFieldName);\r\n\t\t\t\tif (text) {\r\n\t\t\t\t\tthis.inputRef.value = text;\r\n\t\t\t\t\tthis.lastInputValue = this.inputRef.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.propagateChange(this.selectedItem);\r\n\t\tif (this.onSelect)\r\n\t\t\tthis.onSelect.emit(this.selectedItem);\r\n\t\t// Call to update the model for the textbox\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tlet evt = document.createEvent('Event');\r\n\t\tevt.initEvent('input', true, false);\r\n\t\tthis.inputRef.dispatchEvent(evt);\r\n\t}\r\n\r\n\tprivate async expand() {\r\n\t\tthis.reposition();\r\n\r\n\t\t// If the flag to show items is false, don't display \"Loading...\"\r\n\t\tif (this.showNoItemsFoundDisplay === false && (!this.items || this.items.length === 0)) {\r\n\t\t\tthis.showAutoComplete = false;\r\n\t\t\tthis.autoCompleteVisiblity = false;\r\n\t\t\tthis.expanded = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.showAutoComplete = true;\r\n\t\tthis.autoCompleteRef.nativeElement.style.display = \"inline-block\";\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.autoCompleteVisiblity = true;\r\n\t\tthis.expanded = true;\r\n\r\n\t\tthis.inputRef.classList.add(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\tthis.inputRef.classList.add(\"slick-auto-complete_remove-bottom-right-border-radius\");\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tprivate collapse() {\r\n\t\tlet inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, \"input-group-prepend\");\r\n\t\tif (inputGroupPrepend)\r\n\t\t\tinputGroupPrepend.classList.remove(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\r\n\t\tthis.inputRef.classList.remove(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\tthis.inputRef.classList.remove(\"slick-auto-complete_remove-bottom-right-border-radius\");\r\n\r\n\t\tthis.autoCompleteVisiblity = false;\r\n\t\tthis.expanded = false;\r\n\t\tthis.autoCompleteRef.nativeElement.style.display = \"none\";\r\n\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tlet rect = this.inputRef.getBoundingClientRect();\r\n\t\tlet inputLeft = rect.left;\r\n\t\tlet inputTop = rect.top;\r\n\t\tlet inputHeight = this.inputRef.offsetHeight;\r\n\t\tlet inputWidth = this.inputRef.offsetWidth;\r\n\r\n\t\tlet inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, \"input-group-prepend\");\r\n\t\tif (inputGroupPrepend) {\r\n\t\t\tinputLeft = inputGroupPrepend.getBoundingClientRect().left;\r\n\t\t\tinputWidth = inputWidth += inputGroupPrepend.offsetWidth;\r\n\t\t\tinputGroupPrepend.classList.add(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\t}\r\n\r\n\t\tthis.left = (inputLeft + this.offset) + \"px\";\r\n\t\tthis.top = (inputTop + inputHeight + 1) + \"px\";\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.width = inputWidth + \"px\";\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.width = \"auto\";\r\n\t\telse\r\n\t\t\tthis.width = this.listWidth;\r\n\t}\r\n\r\n\tprivate async refreshItems(expand: boolean): Promise<void> {\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\tthis.items = null;\r\n\r\n\t\t\tif (!this.onRefresh || !this.inputRef.value) {\r\n\t\t\t\tthis.items = [];\r\n\t\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.loading = true;\r\n\t\t\t\tif (this.showNoItemsFoundDisplay === false)\r\n\t\t\t\t\tthis.collapse();\r\n\t\t\t\t// Call the users refresh method to get a fresh list of items\r\n\t\t\t\tthis.onRefresh.emit(this.inputRef.value);\r\n\r\n\t\t\t\t// Wait for the list to refresh\r\n\t\t\t\tlet timeoutCheck = 1000;\r\n\t\t\t\tthis.waitForItemsInterval = setInterval(() => {\r\n\t\t\t\t\t// If we've timedout, got a response or they started typing something else, stop the interval\r\n\t\t\t\t\tif (timeoutCheck <= 0 || this.items) {\r\n\t\t\t\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\t\t\t\tif (timeoutCheck <= 0) {\r\n\t\t\t\t\t\t\tconsole.error(\"Timed out waiting for list in auto complete\");\r\n\t\t\t\t\t\t\tthis.items = [];\r\n\t\t\t\t\t\t\tif (this.showNoItemsFoundDisplay === false)\r\n\t\t\t\t\t\t\t\tthis.collapse();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\tif (expand)\r\n\t\t\t\t\t\t\tthis.expand();\r\n\t\t\t\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttimeoutCheck--;\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n}","<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickSearchBarModule } from \"../slick-search-bar/slick-search-bar.module\";\r\nimport { SlickAutoCompleteComponent } from \"./slick-auto-complete.component\";\r\nimport { SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete-list-item-template.directive\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickSearchBarModule],\r\n\tdeclarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],\r\n\texports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],\r\n\tproviders: [SlickFunctionLockService]\r\n})\r\nexport class SlickAutoCompleteModule { }\r\n\r\nexport { SlickAutoCompleteComponent }\r\nexport { SlickAutoCompleteListItemTemplateDirective }","import { Component, Input, ElementRef, OnChanges, OnInit, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: '[slick-button-spinner]',\r\n\ttemplateUrl: \"slick-button-spinner.component.html\"\r\n})\r\nexport class SlickButtonSpinnerComponent implements OnChanges, OnInit, AfterViewInit {\r\n\t@Input('slick-button-spinner') spinnerStatus: string;\r\n\r\n\tspinnerVisible: boolean = false;\r\n\tcheckVisible: boolean = false;\r\n\terrorVisible: boolean = false;\r\n\r\n\tprivate currentStatus: string = \"hidden\";\r\n\tprivate inProcess: boolean = false;\r\n\tprivate expanded: boolean = false;\r\n\tprivate showCheckInterval: NodeJS.Timer;\r\n\tprivate originalPadding: string;\r\n\r\n\tconstructor(private el: ElementRef) {\t\t\r\n\t\tel.nativeElement.classList.add(\"slick-button-spinner\");\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.originalPadding = this.el.nativeElement.style.paddingRight;\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (!changes.spinnerStatus || !changes.spinnerStatus.currentValue)\r\n\t\t\treturn;\r\n\r\n\t\tswitch (changes.spinnerStatus.currentValue.toLowerCase()) {\r\n\t\t\tcase 'spin':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(async () => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tawait this.expand();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.showSpinner();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tawait this.expand();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.showSpinner();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ok':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.showCheck();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.showCheck();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'error':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.showError();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'hide':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.collapse()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.collapse();\r\n\t\t\t\t}\r\n\r\n\t\t\tcase 'reset':\r\n\t\t\t\tthis.expanded = false;\r\n\t\t\t\tthis.hideCheck();\r\n\t\t\t\tthis.hideError();\r\n\t\t\t\tthis.hideSpinner();\r\n\t\t\t\tthis.el.nativeElement.disabled = false;\r\n\t\t\t\tthis.el.nativeElement.style.paddingRight = this.originalPadding;\r\n\t\t\t\tthis.el.nativeElement.classList.remove(\"expand-button-spinner\");\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showSpinner() {\r\n\t\tthis.spinnerVisible = true;\r\n\t\tthis.el.nativeElement.disabled = true;\r\n\t}\r\n\r\n\tprivate hideSpinner() {\r\n\t\tthis.spinnerVisible = false;\r\n\t\tthis.el.nativeElement.disabled = false;\r\n\t}\r\n\r\n\tprivate showCheck() {\r\n\t\tthis.checkVisible = true;\r\n\t\tthis.showCheckInterval = setTimeout(() => {\r\n\t\t\tthis.hideCheck();\r\n\t\t\tthis.hideError();\r\n\t\t\tthis.collapse();\r\n\t\t}, 2500);\r\n\t}\r\n\r\n\tprivate hideCheck() {\r\n\t\tclearTimeout(this.showCheckInterval);\r\n\t\tthis.checkVisible = false;\r\n\t}\r\n\r\n\tprivate showError() {\r\n\t\tthis.el.nativeElement.disabled = false;\r\n\t\tthis.errorVisible = true;\r\n\t}\r\n\r\n\tprivate hideError() {\r\n\t\tthis.errorVisible = false;\r\n\t}\r\n\r\n\tprivate async expand(): Promise<void> {\r\n\r\n\t\tif (this.inProcess === true || this.expanded === true) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tthis.expanded = true;\r\n\t\tthis.inProcess = true;\r\n\t\tthis.el.nativeElement.classList.remove(\"collapse-button-spinner\");\r\n\t\tthis.el.nativeElement.classList.add(\"expand-button-spinner\");\r\n\r\n\t\tawait SlickSleepService.sleep(350);\r\n\t\tthis.originalPadding = this.el.nativeElement.style.paddingRight;\r\n\t\tthis.el.nativeElement.style.paddingRight = \"35px\";\r\n\t\tthis.inProcess = false;\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tprivate async collapse(): Promise<void> {\r\n\t\tif (this.inProcess === true || this.expanded === false) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tthis.expanded = false;\r\n\t\tthis.inProcess = true;\r\n\t\tthis.el.nativeElement.classList.remove(\"expand-button-spinner\");\r\n\t\tthis.el.nativeElement.classList.add(\"collapse-button-spinner\");\r\n\t\tawait SlickSleepService.sleep(500);\r\n\t\tthis.el.nativeElement.style.paddingRight = this.originalPadding;\r\n\t\tthis.inProcess = false;\r\n\t\tPromise.resolve();\r\n\t}\r\n}","<ng-content></ng-content><div *ngIf=\"spinnerVisible\" class=\"slick-button-spinner_spin-icon\"></div><div *ngIf=\"checkVisible\" class=\"slick-button-spinner_check\"><i class=\"far fa-check-circle\"></i></div><div *ngIf=\"errorVisible\" class=\"slick-button-spinner_error\"><i class=\"far fa-times-circle\"></i></div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickButtonSpinnerComponent } from \"./slick-button-spinner.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickButtonSpinnerComponent],\r\n\texports: [SlickButtonSpinnerComponent]\r\n})\r\nexport class SlickButtonSpinnerModule { }\r\n\r\nexport { SlickButtonSpinnerComponent }","import { Component, forwardRef, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport moment from \"moment\";\r\n\r\n\r\nclass DayModel {\r\n\tdate: Date;\r\n\tisSelected: boolean;\r\n\tisToday: boolean;\r\n\tisInCurrentMonth: boolean;\r\n\tisActive: boolean;\r\n}\r\n\r\nclass WeekModel {\r\n\tdays: DayModel[];\r\n}\r\n\r\nclass MonthModel {\r\n\tmonthDisplay: string;\r\n\tweeks: WeekModel[]\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-calendar',\r\n\ttemplateUrl: 'slick-calendar.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickCalendarComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickCalendarComponent implements ControlValueAccessor, OnInit, OnChanges {\r\n\t@Input() condensed: boolean = false;\r\n\t@Input() monthsToShow: number = 1;\r\n\t@Input() monthsToIncrement: number = 1;\r\n\t@Input() inactiveDates: Date[] = [];\r\n\t@Input() inactiveWeekends: boolean = false;\r\n\t@Input() showDaysNotInMonth: boolean = false;\r\n\t@Input() multiSelect: boolean = false;\r\n\t@Input() multiSelectDates: Date[];\r\n\t@Output() multiSelectDatesChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\r\n\t@Output() onDateSelect: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onDateChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onMonthChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onMultiDateChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\r\n\r\n\t@HostListener('click', ['$event', '$event.target'])\r\n\tonClick(event: MouseEvent, targetElement: HTMLElement): void {\r\n\t\tif (!targetElement || SlickUtilsService.checkParentClassExists(targetElement, \"slickCalendar_month\"))\r\n\t\t\treturn;\r\n\t}\r\n\r\n\tuuid: string;\r\n\tselectedDate: Date = new Date();\r\n\tvisibleDate: Date = new Date();\r\n\tmonths: MonthModel[];\r\n\tminWidth: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.condensed)\r\n\t\t\tthis.condensed = (this.condensed || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tif (changes.inactiveWeekends)\r\n\t\t\tthis.inactiveWeekends = (this.inactiveWeekends || 'true').toString().toLowerCase() === 'false' ? false : true;\r\n\r\n\t\tif (changes.showDaysNotInMonth)\r\n\t\t\tthis.showDaysNotInMonth = (this.showDaysNotInMonth || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tif (changes.multiSelect)\r\n\t\t\tthis.multiSelect = (this.multiSelect || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tconst widthPerCalendar = (this.condensed) ? 180 : 250;\r\n\t\tthis.minWidth = this.monthsToShow * widthPerCalendar;\r\n\r\n\t\tthis.recalc();\r\n\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\twriteValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t\tif (moment(obj).isValid()) {\r\n\t\t\t\tthis.selectedDate = obj;\r\n\t\t\t\tthis.visibleDate = obj;\r\n\r\n\t\t\t\tif (this.months) {\r\n\r\n\t\t\t\t\t// Say we have 3 months showing and they select a date on the 3rd month\r\n\t\t\t\t\t// Recalc will re-draw the 3rd month as the first month instead of just \r\n\t\t\t\t\t// higlighting the date on the 3rd month. Highlight instead.\r\n\t\t\t\t\tlet dateFound = false;\r\n\t\t\t\t\tfor (let month of this.months) {\r\n\t\t\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\t\t\tif (day.isInCurrentMonth === true && moment(day.date).isSame(this.selectedDate, \"date\")) {\r\n\t\t\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t\t\t\tdateFound = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// But if they've \r\n\t\t\t\t\tif (dateFound === false)\r\n\t\t\t\t\t\tthis.recalc();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.recalc();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedDate = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!this.selectedDate && this.onDateChange)\r\n\t\t\t\tthis.onDateChange.emit(null);\r\n\t\t\tthis.selectedDate = null;\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tregisterOnTouched() { }\r\n\r\n\tprevMonth() {\r\n\t\tthis.visibleDate = moment(this.visibleDate).subtract(this.monthsToIncrement, \"months\").toDate();\r\n\t\tthis.recalc();\r\n\r\n\t\tif (this.onMonthChange) {\r\n\t\t\tlet monthStart = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tif (this.showDaysNotInMonth === true)\r\n\t\t\t\tmonthStart = monthStart.startOf(\"week\");\r\n\r\n\t\t\tthis.onMonthChange.emit(monthStart.toDate());\r\n\t\t}\r\n\t}\r\n\r\n\tnextMonth() {\r\n\t\tthis.visibleDate = moment(this.visibleDate).add(this.monthsToIncrement, \"months\").toDate();\r\n\t\tthis.recalc();\r\n\r\n\t\tif (this.onMonthChange) {\r\n\t\t\tlet monthStart = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tif (this.showDaysNotInMonth === true)\r\n\t\t\t\tmonthStart = monthStart.startOf(\"week\");\r\n\r\n\t\t\tthis.onMonthChange.emit(monthStart.toDate());\r\n\t\t}\r\n\t}\r\n\r\n\tselectMonth(monthIdx) {\r\n\t\tconst month = this.months[monthIdx];\r\n\t\tlet visibleDate = moment(this.visibleDate);\r\n\t\tlet dateString = month + visibleDate.format(\" 1, YYYY\");\r\n\r\n\t\tthis.visibleDate = moment(dateString, \"MMMM DD, YYYY\").toDate();\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tsetDate(dayModel: DayModel) {\r\n\t\tif (this.showDaysNotInMonth === false && dayModel.isInCurrentMonth === false)\r\n\t\t\treturn;\r\n\r\n\t\tif (dayModel.isActive === false)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.multiSelect === false) {\r\n\t\t\tthis.selectedDate = dayModel.date;\r\n\t\t\tthis.visibleDate = dayModel.date;\r\n\r\n\t\t\tthis.propagateChange(this.selectedDate);\r\n\r\n\t\t\tif (this.onDateChange)\r\n\t\t\t\tthis.onDateChange.emit(this.selectedDate);\r\n\r\n\t\t\tif (this.onDateSelect)\r\n\t\t\t\tthis.onDateSelect.emit(this.selectedDate);\r\n\r\n\t\t\t// Say we have 3 months showing and they select a date on the 3rd month\r\n\t\t\t// Recalc will re-draw the 3rd month as the first month instead of just \r\n\t\t\t// higlighting the date on the 3rd month. Highlight instead.\r\n\t\t\tlet dateFound = false;\r\n\t\t\tfor (let month of this.months) {\r\n\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\tif (day.isInCurrentMonth === true && moment(day.date).isSame(this.selectedDate, \"date\")) {\r\n\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t\tdateFound = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// But if they've \r\n\t\t\tif (dateFound === false)\r\n\t\t\t\tthis.recalc();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// This will be reversed since we haven't re-calced the dates yet.\r\n\t\t\tif (!dayModel.isSelected)\r\n\t\t\t\tthis.multiSelectDates.push(dayModel.date);\r\n\t\t\telse {\r\n\t\t\t\tlet dateIdx = this.multiSelectDates.findIndex(d => moment(d).startOf(\"date\").isSame(moment(dayModel.date).startOf(\"date\")));\r\n\t\t\t\tthis.multiSelectDates.splice(dateIdx, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.onMultiDateChange)\r\n\t\t\t\tthis.onMultiDateChange.emit(this.multiSelectDates)\r\n\r\n\t\t\tfor (let month of this.months) {\r\n\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\tif (day.isInCurrentMonth === true && (this.multiSelectDates.findIndex(x => moment(x).isSame(moment(day.date), \"date\")) >= 0)) {\r\n\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate recalc() {\r\n\t\tthis.months = [];\r\n\r\n\t\tfor (let monthCount = 0; monthCount < this.monthsToShow; monthCount++) {\r\n\t\t\tlet currentDate = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tcurrentDate = moment(currentDate).add(monthCount, \"months\")\r\n\t\t\tcurrentDate = moment(currentDate).startOf(\"week\").startOf(\"date\");\r\n\r\n\t\t\tconst month = new MonthModel();\r\n\t\t\tmonth.weeks = [];\r\n\r\n\t\t\t// CurrentDate is most likely going to be the month before, so add 15 days to get to the middle of the current month\r\n\t\t\tconst monthToDisplay = moment(currentDate).add(15, \"days\");\r\n\t\t\tmonth.monthDisplay = (this.condensed === true) ? monthToDisplay.format(\"MMMM, YYYY\") : monthToDisplay.format(\"MMMM, YYYY\");\r\n\r\n\t\t\tfor (let weekCount = 0; weekCount < 6; weekCount++) {\r\n\t\t\t\tconst week = new WeekModel();\r\n\t\t\t\tweek.days = [];\r\n\r\n\t\t\t\tfor (let dayCount = 0; dayCount < 7; dayCount++) {\r\n\t\t\t\t\tconst day = new DayModel();\r\n\t\t\t\t\tday.date = currentDate.toDate();\r\n\t\t\t\t\tday.isToday = moment().isSame(currentDate, \"date\");\r\n\t\t\t\t\tif (this.multiSelect && this.multiSelectDates)\r\n\t\t\t\t\t\tday.isSelected = (this.multiSelectDates.findIndex(x => moment(x).isSame(moment(day.date), \"date\")) >= 0);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tday.isSelected = moment(this.selectedDate).isSame(currentDate, \"date\");\r\n\r\n\t\t\t\t\tday.isInCurrentMonth = (currentDate.month() === monthToDisplay.month());\r\n\r\n\t\t\t\t\tday.isActive = true;\r\n\r\n\t\t\t\t\tif (this.inactiveWeekends && currentDate.day() === 6 || currentDate.day() === 7)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\tif (this.inactiveDates && this.inactiveDates.findIndex(x => moment(x).isSame(currentDate, \"date\")) >= 0)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\tif (this.showDaysNotInMonth === false && day.isInCurrentMonth === false)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\t// It's possible for the day to be in the month display, but hidden, but active\r\n\t\t\t\t\tif (day.isActive === false)\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\r\n\t\t\t\t\tif (day.isInCurrentMonth === false)\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\r\n\t\t\t\t\tweek.days.push(day);\r\n\r\n\t\t\t\t\tcurrentDate = moment(currentDate).add(1, \"days\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmonth.weeks.push(week);\r\n\t\t\t}\r\n\r\n\t\t\tthis.months.push(month);\r\n\t\t}\r\n\t}\r\n\r\n}","<div class=\"slick-calendar default-width card\" id=\"slick-calendar_{{uuid}}\" [style.minWidth.px]=\"minWidth\" [ngClass]=\"{'slick-calendar_condensed': condensed === true, 'slick-calendar_single': monthsToShow === 1 }\">\r\n\t<div class=\"slick-calendar_prev-month slick-calendar-arrow\" (click)=\"prevMonth()\" style=\"margin-left: 12px; margin-top: 3px;\"><i class=\"fas fa-long-arrow-left\" ></i></div>\r\n\t<div class=\"slick-calendar_next-month slick-calendar-arrow\" (click)=\"nextMonth()\" style=\"margin-right: 12px; margin-top: 3px;\"><i class=\"fas fa-long-arrow-right\" ></i></div>\r\n\r\n\t<div class=\"d-flex justify-content-around pt-2\" [ngClass]=\"{ 'mx-3': monthsToShow > 1, 'mx-1': monthsToShow === 1 }\">\r\n\t\t<div *ngFor=\"let month of months\" class=\"flex-fill mx-2\" style=\"text-align: center;max-width: 220px;\">\r\n\r\n\t\t\t<table class=\"table table-sm table-borderless\" style=\"table-layout: fixed; \">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr class=\"slick-calendar_month-display\">\r\n\t\t\t\t\t\t<td colspan=\"7\"><b>{{month.monthDisplay}}</b></td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr class=\"slick-calendar_days-of-week\">\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>S</span><span *ngIf='condensed === true'>S</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>M</span><span *ngIf='condensed === true'>M</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>T</span><span *ngIf='condensed === true'>T</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>W</span><span *ngIf='condensed === true'>W</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>T</span><span *ngIf='condensed === true'>Th</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>F</span><span *ngIf='condensed === true'>F</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>S</span><span *ngIf='condensed === true'>S</span></td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngFor=\"let week of month.weeks\">\r\n\t\t\t\t\t\t<td *ngFor=\"let day of week.days\" (click)=\"setDate(day)\" class=\"slick-calendar_date\" [ngClass]=\"{ 'slick-calendar_is-today': day.isToday, 'bg-primary text-white': day.isSelected, 'slick-calendar_not_in_month': day.isInCurrentMonth === false, 'slick-calendar_inactive': day.isActive === false }\">\r\n\t\t\t\t\t\t\t<span *ngIf=\"showDaysNotInMonth === true || (showDaysNotInMonth === false && day.isInCurrentMonth === true)\">{{day.date | date:'d'}}</span>\r\n\t\t\t\t\t\t\t<span *ngIf=\"monthsToShow > 1 && (showDaysNotInMonth === false && day.isInCurrentMonth === false)\"> </span>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\r\n\r\n\t\t</div>\r\n\r\n\t</div>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickCalendarComponent } from \"./slick-calendar.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickCalendarComponent],\r\n\texports: [SlickCalendarComponent]\r\n})\r\nexport class SlickCalendarModule { }\r\n\r\nexport { SlickCalendarComponent }\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-card-header\",\r\n\ttemplate: \"<div class='card-header'><ng-content></ng-content></div>\"\r\n})\r\nexport class SlickCardHeaderComponent {}","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-card\",\r\n\ttemplateUrl: \"slick-card.component.html\"\r\n})\r\nexport class SlickCardComponent implements OnChanges {\r\n\t@Input() header;\r\n\t@Input() clickable: boolean = true;\r\n\t@Input() selected: boolean = false;\r\n\t@Input() cardKey: string = '';\r\n\t@Output() onSelect: EventEmitter<string> = new EventEmitter();\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.clickable) \r\n\t\t\tthis.clickable = (this.clickable === null || this.clickable === undefined) ? true : this.clickable.toString().toLowerCase() === \"true\";\r\n\r\n\t\tif (changes.selected) {\r\n\t\t\tif (this.clickable === true)\r\n\t\t\t\tthis.selected = (this.selected === null || this.selected === undefined) ? false : this.selected.toString().toLowerCase() === \"true\";\r\n\t\t\telse\r\n\t\t\t\tthis.selected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tonClick() {\r\n\t\tif (this.clickable === true && this.onSelect)\r\n\t\t\tthis.onSelect.emit(this.cardKey);\r\n\t}\r\n}","<div class=\"slick-card card\" [ngClass]=\"{'slick-card_clickable': clickable === true, 'bg-primary text-white': selected === true }\" (click)=\"onClick()\">\r\n\t<div *ngIf=\"header\" class=\"card-header\">{{header}}</div>\r\n\t<ng-content select=\"slick-card-header\"></ng-content>\r\n\t<div class=\"card-body\"><ng-content></ng-content></div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickCardHeaderComponent } from \"./slick-card-header.component\";\r\nimport { SlickCardComponent } from \"./slick-card.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickCardComponent, SlickCardHeaderComponent, CommonModule],\r\n\tdeclarations: [SlickCardComponent, SlickCardHeaderComponent]\r\n})\r\nexport class SlickCardModule { }\r\n\r\nexport { SlickCardComponent, SlickCardHeaderComponent }\r\n","import { Injectable, ElementRef } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickDialogService {\r\n\tstatic overlayCount: number = 1;\r\n\tconstructor() { }\r\n\r\n static minimizedDialogs = new Array<ElementRef>();\r\n\r\n\tpublic createOverlay(): HTMLDivElement {\r\n\t\tlet overlayEl = document.createElement(\"div\");\r\n\t\toverlayEl.classList.add(\"slick-dialog-overlay\");\r\n\r\n\t\tdocument.body.appendChild(overlayEl);\r\n\r\n\t\treturn overlayEl;\r\n\t}\r\n\r\n\tpublic showOverlay(overlayEl: HTMLDivElement) {\r\n\t\toverlayEl.classList.add(\"visible\");\r\n\t\toverlayEl.style.zIndex = (SlickDialogService.overlayCount * 100).toString();\r\n\t\tSlickDialogService.overlayCount++;\r\n\t}\r\n\r\n\tpublic hideOverlay(overlayEl: HTMLDivElement) {\r\n\t\toverlayEl.classList.remove(\"visible\");\r\n\t\t//SlickDialogService.overlayCount--;\r\n\t}\r\n\r\n public minimize(el: ElementRef) {\r\n SlickDialogService.minimizedDialogs.push(el);\r\n\r\n for (let i = 0; i < SlickDialogService.minimizedDialogs.length; i++)\r\n this.positionInBottomBar(i + 1);\r\n }\r\n\r\n public maximize(el: ElementRef, top: number, width: number, height: number, xOffset: number, yOffset: number) {\r\n\r\n this.positionAtCenter(el, top, width, height, xOffset, yOffset);\r\n this.removeDialogFromMinimized(el);\r\n\r\n }\r\n\r\n public removeDialogFromMinimized(el: ElementRef) {\r\n SlickDialogService.minimizedDialogs = SlickDialogService.minimizedDialogs.filter((x) => {\r\n return x.nativeElement !== el.nativeElement;\r\n });\r\n\r\n for (let i = 0; i < SlickDialogService.minimizedDialogs.length; i++)\r\n this.positionInBottomBar(i + 1);\r\n }\r\n\r\n public positionAtCenter(el: ElementRef, top: number, width: number, height: number, xOffset: number, yOffset: number) {\r\n el.nativeElement.style.top = top + \"px\";\r\n el.nativeElement.style.width = width + \"px\";\r\n el.nativeElement.style.height = height === 0 ? \"initial\" : height + \"px\";\r\n el.nativeElement.style.bottom = \"initial\";\r\n el.nativeElement.style.right = \"calc(50% - \" + ( width / 2 ) + \"px)\";\r\n el.nativeElement.style.transform = \"translate(\" + xOffset + \"px, \" + yOffset +\"px)\";\r\n }\r\n\r\n public positionInBottomBar(position: number) {\r\n const index = position - 1;\r\n const slotSize = 280;\r\n const slotHeight = 44;\r\n const padding = 10;\r\n const width = window.innerWidth;\r\n const availableSlots = parseInt((width / (slotSize + padding)).toString());\r\n\r\n const column = position % availableSlots;\r\n const row = parseInt((position / availableSlots).toString()) + 1;\r\n const el = SlickDialogService.minimizedDialogs[index];\r\n\r\n el.nativeElement.style.left = \"initial\";\r\n el.nativeElement.style.top = `calc(100% - ${row * (slotHeight + padding)}px)`;\r\n el.nativeElement.style.bottom = (row * (slotHeight + padding)) + \"px\";\r\n el.nativeElement.style.right = \"0\";\r\n el.nativeElement.style.transform = `translateX(-${((column - 1) * slotSize) + padding}px)`;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnDestroy, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { SlickDialogService } from \"./slick-dialog.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\n\r\n@Component({\r\n selector: 'slick-dialog',\r\n templateUrl: 'slick-dialog.component.html',\r\n styleUrls: [\"slick-dialog.component.css\"],\r\n providers: [SlickDialogService]\r\n})\r\nexport class SlickDialogComponent implements OnChanges, OnDestroy, OnInit {\r\n @Input() draggable: boolean = true;\r\n @Input() resizable: boolean = true;\r\n @Input() minimizable: boolean = true;\r\n @Input() header: string;\r\n @Input() showHeader: boolean = true;\r\n @Input() noPadding: boolean = false;\r\n @Input() top: number = 80;\r\n @Input() width: number = 600;\r\n @Input() height: number = 0;\r\n @Input() maxHeight: number = 0;\r\n @Input() cssClass: string;\r\n @Input() key: string;\r\n @Input() showOverlay: boolean = true;\r\n @Input() disableScrollbar: boolean = false;\r\n\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"dialogRef\") dialogRef: ElementRef;\r\n\t@ViewChild(\"headerRef\") headerRef: ElementRef;\r\n\t@ViewChild(\"footerRef\") footerRef: ElementRef;\r\n\t@ViewChild(\"dialogWrapper\") dialogWrapper: ElementRef;\r\n\r\n fnResize = () => this.resize();\r\n\r\n private overlayEl: HTMLDivElement;\r\n\r\n showDialog_internal: boolean = false;\r\n isDialogVisible: boolean = false;\r\n isBodyVisible: boolean = false;\r\n hasFooter: boolean = false;\r\n zIndex: number = 0;\r\n inBounds: boolean = true;\r\n isMaximized: boolean = false;\r\n isMinimized: boolean = false;\r\n\r\n positionXOffset: number = 0;\r\n positionYOffset: number = 0;\r\n\r\n position: any;\r\n\r\n constructor(private readonly dialogService: SlickDialogService) {}\r\n\r\n ngOnInit() {\r\n this.loadPositionAndSize();\r\n }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.draggable) \r\n\t\t\tthis.draggable = (this.draggable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.resizable)\r\n\t\t\tthis.resizable = (this.resizable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.minimizable)\r\n\t\t\tthis.minimizable = (this.minimizable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.showHeader)\r\n\t\t\tthis.showHeader = (this.showHeader.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n if (changes.noPadding)\r\n this.noPadding = (this.noPadding.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.top)\r\n\t\t\tthis.top = parseInt(this.top.toString());\r\n\r\n\t\tif (changes.width)\r\n\t\t\tthis.width = parseInt(this.width.toString());\r\n\r\n\t\tif (changes.height)\r\n\t\t\tthis.height = parseInt(this.height.toString());\r\n\r\n\t\tif (changes.maxHeight)\r\n\t\t\tthis.maxHeight = parseInt(this.maxHeight.toString());\r\n\r\n\t\tif (changes.showOverlay)\r\n\t\t\tthis.showOverlay = (this.showOverlay.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.disableScrollbar)\r\n\t\t\tthis.disableScrollbar = (this.disableScrollbar.toString().toLowerCase() === 'true') ? true : false;\r\n\t}\r\n\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener(\"resize\", this.fnResize, true);\r\n\r\n // It's fine if this fails. It just means they were already removed\r\n try {\r\n document.body.removeChild(this.containerRef.nativeElement);\r\n document.body.removeChild(this.overlayEl);\r\n }\r\n catch { }\r\n\r\n this.overlayEl = null;\r\n }\r\n\r\n onMoveEnd(event) {\r\n this.positionXOffset = event.x;\r\n this.positionYOffset = event.y;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n onResizeStop(event) {\r\n this.width = event.size.width;\r\n this.height = event.size.height;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n updatePositionAndSize() {\r\n const state = {\r\n positionXOffset: this.positionXOffset,\r\n positionYOffset: this.positionYOffset,\r\n width: this.width,\r\n height: this.height\r\n };\r\n\r\n this.position = {\r\n x: this.positionXOffset,\r\n y: this.positionYOffset\r\n };\r\n\r\n if (this.key) {\r\n localStorage.setItem(`DIALOG_STATE_${this.key}`, JSON.stringify(state));\r\n }\r\n }\r\n\r\n loadPositionAndSize() {\r\n if (!this.key && SlickInitService.getParams().errorLog === \"verbose\") {\r\n console.error(\"Storage Key ([key] parameter) is not provided for Slick Dialog. Persisting state is disabled.\");\r\n return;\r\n }\r\n\r\n const state = JSON.parse(localStorage.getItem(`DIALOG_STATE_${this.key}`));\r\n \r\n if (state) {\r\n this.positionXOffset = state.positionXOffset;\r\n this.positionYOffset = state.positionYOffset;\r\n this.width = state.width;\r\n this.height = state.height;\r\n\r\n // Sometimes this goes above the top of the screen. If it does, reset it\r\n if (this.positionYOffset < 0 && this.positionYOffset < (this.top * -1)) {\r\n this.positionYOffset = this.top * -1;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n this.position = {\r\n x: this.positionXOffset,\r\n y: this.positionYOffset\r\n };\r\n }\r\n }\r\n\r\n\tasync showDialog() {\r\n\t\tthis.showDialog_internal = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n document.body.appendChild(this.containerRef.nativeElement);\r\n this.overlayEl = this.dialogService.createOverlay();\r\n\r\n this.isMinimized = false;\r\n this.isMaximized = false;\r\n this.dialogService.removeDialogFromMinimized(this.dialogWrapper);\r\n\r\n this.dialogService.positionAtCenter(this.dialogWrapper, this.top, this.width, this.height, this.positionXOffset, this.positionYOffset);\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n\r\n this.zIndex = ((SlickDialogService.overlayCount * 100) + 1);\r\n if (this.showOverlay) {\r\n this.dialogService.showOverlay(this.overlayEl);\r\n }\r\n this.isDialogVisible = true;\r\n this.resize();\r\n\r\n this.dialogRef.nativeElement.classList.remove(\"collapse-dialog\");\r\n this.dialogRef.nativeElement.classList.add(\"expand-dialog\");\r\n\r\n window.addEventListener(\"resize\", this.fnResize, true);\r\n }\r\n\r\n async onDialogClose(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n await this.hideDialog();\r\n\r\n if (this.onClose)\r\n this.onClose.emit();\r\n }\r\n\r\n async hideDialog() {\r\n if (this.isDialogVisible === false)\r\n return;\r\n\r\n this.isMaximized = false;\r\n if (this.showOverlay) {\r\n this.dialogService.hideOverlay(this.overlayEl);\r\n }\r\n this.dialogRef.nativeElement.classList.remove(\"expand-dialog\");\r\n this.dialogRef.nativeElement.classList.add(\"collapse-dialog\");\r\n await SlickSleepService.sleep(350);\r\n this.isBodyVisible = false;\r\n this.isDialogVisible = false;\r\n\r\n if (this.isMinimized) {\r\n this.dialogService.removeDialogFromMinimized(this.dialogWrapper);\r\n this.isMinimized = false;\r\n }\r\n\r\n window.removeEventListener(\"resize\", this.fnResize, true);\r\n\r\n // It's fine if this fails. It just means they were already removed\r\n try {\r\n document.body.removeChild(this.containerRef.nativeElement);\r\n document.body.removeChild(this.overlayEl);\r\n }\r\n catch { }\r\n\r\n this.overlayEl = null;\r\n this.showDialog_internal = false;\r\n }\r\n\r\n onDialogMinimize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n \r\n this.isMaximized = false;\r\n this.isMinimized = true;\r\n this.dialogRef.nativeElement.style.height = \"initial\";\r\n\r\n if (this.showOverlay) {\r\n this.dialogService.hideOverlay(this.overlayEl);\r\n }\r\n this.dialogService.minimize(this.dialogWrapper);\r\n }\r\n\r\n onDialogMaximize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n this.dialogService.maximize(this.dialogWrapper, this.top, this.width, this.height, this.positionXOffset, this.positionYOffset);\r\n\r\n if (this.showOverlay) {\r\n this.dialogService.showOverlay(this.overlayEl);\r\n }\r\n\r\n this.zIndex = parseInt(this.overlayEl.style.zIndex) + 1;\r\n setTimeout(() => {\r\n this.isMinimized = false;\r\n this.dialogRef.nativeElement.style.height = \"100%\";\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n this.resize();\r\n }, 300);\r\n }\r\n\r\n toggleFullSize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n \r\n if (!this.isMaximized) {\r\n this.dialogWrapper.nativeElement.style.top = \"0px\";\r\n this.dialogWrapper.nativeElement.style.right = \"0px\";\r\n this.dialogWrapper.nativeElement.style.left = \"0px\";\r\n this.dialogRef.nativeElement.style.height = window.innerHeight + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.width = window.innerWidth + \"px\";\r\n this.dialogWrapper.nativeElement.style.width = window.innerWidth + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.maxHeight = \"initial\";\r\n this.dialogWrapper.nativeElement.style.transform = \"translate(0%)\";\r\n this.isMaximized = true;\r\n this.resize(true);\r\n\r\n } else {\r\n this.dialogWrapper.nativeElement.style.top = this.top + \"px\";\r\n this.dialogWrapper.nativeElement.style.right = \"calc(50% - \" + (this.width / 2) + \"px)\";\r\n this.dialogWrapper.nativeElement.style.left = \"calc(50% - \" + (this.width / 2) + \"px)\";\r\n this.dialogWrapper.nativeElement.style.transform = \"translate(\" + this.positionXOffset + \"px, \" + this.positionYOffset + \"px)\";\r\n this.dialogRef.nativeElement.style.height = this.height === 0 ? \"initial\" : this.height + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n this.dialogWrapper.nativeElement.style.width = this.width + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.maxHeight = this.maxHeight + \"\";\r\n this.isMaximized = false;\r\n this.resize(false);\r\n }\r\n }\r\n\r\n private async resize(forFullSize: boolean = false) {\r\n\r\n if (this.isMaximized)\r\n forFullSize = true;\r\n\r\n await SlickSleepService.sleep(50);\r\n let headerHeight = (this.headerRef) ? this.headerRef.nativeElement.clientHeight : 0;\r\n let footerHeight = (this.footerRef) ? this.footerRef.nativeElement.clientHeight : 0;\r\n this.hasFooter = footerHeight > 0;\r\n\r\n let documentBodyHeight = !forFullSize ? (document.body.clientHeight || window.innerHeight) : window.innerHeight;\r\n this.maxHeight = !forFullSize ? documentBodyHeight - (this.top * 2) : documentBodyHeight;\r\n this.isBodyVisible = true;\r\n }\r\n}","<div #containerRef class=\"slick-dialog-container modal\" *ngIf=\"showDialog_internal === true\" [hidden]=\"!isDialogVisible\" [style.zIndex]=\"zIndex\" #bounds>\r\n <div #dialogWrapper class=\"position-absolute slick-dialog-z-index d-inline-block\" [ngClass]=\"{'isMinimized' : isMinimized }\" (endOffset)=\"onMoveEnd($event)\" [position]=\"position\" [ngDraggable]=\"draggable && !isMinimized\" [bounds]=\"bounds\" [handle]=\"draggingHandle\" [inBounds]=\"inBounds\" [style.top.px]=\"top\">\r\n <div #dialogRef (rzStop)=\"onResizeStop($event)\" [ngResizable]=\"resizable && !isMinimized\" class=\"slick-dialog modal-content d-flex flex-column drag-block-handle {{cssClass}}\" [style.height]=\"height === 0 ? '100%' : height + 'px'\" [style.width.px]=\"width\" [style.max-height.px]=\"maxHeight\">\r\n <div [class.slick-dialog-draggingHangle]=\"draggable && !isMinimized\" #draggingHandle>\r\n <div #headerRef class=\"slick-dialog_header modal-header py-0\" *ngIf=\"showHeader === true\">\r\n <div class=\"header-left\">{{header}}</div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && !isMinimized\" (mousedown)=\"onDialogMinimize($event)\" style=\"width: 28px;\"><i class=\"far fa-window-minimize\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && !isMinimized\" (mousedown)=\"toggleFullSize($event)\" style=\"width: 28px;\"><i *ngIf=\"!isMaximized\" class=\"far fa-window-maximize\"></i><i *ngIf=\"isMaximized\" class=\"far fa-window-restore\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && isMinimized\" (mousedown)=\"onDialogMaximize($event)\" style=\"width: 28px;\"><i class=\"far fa-window-restore\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"!isMinimized\" (mousedown)=\"onDialogClose($event)\" style=\"width: 28px;\"><i class=\"far fa-times\"></i></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMinimized\" [style.visibility]=\"(isBodyVisible === true) ? 'visible' : 'hidden'\" style=\"overflow-y: auto\" class=\"slick-dialog_body modal-body flex-fill\" [ngClass]=\"{'disable_scrollbar' : disableScrollbar === true, 'p-0': noPadding === true }\"><ng-content></ng-content></div>\r\n <div #footerRef [ngClass]=\"{'slick-dialog_footer modal-footer': hasFooter === true }\" *ngIf=\"!isMinimized\"><ng-content select=\"slick-dialog-footer\"></ng-content></div>\r\n </div>\r\n </div>\r\n\r\n</div>","import { Component, Input, ViewChild, OnChanges, SimpleChanges, ChangeDetectorRef } from \"@angular/core\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\n\r\nexport enum SlickConfirmDialogResults { Ok, Cancel }\r\n\r\n@Component({\r\n\tselector: 'slick-confirm-dialog',\r\n\ttemplateUrl: 'slick-confirm-dialog.component.html'\r\n})\r\nexport class SlickConfirmDialogComponent implements OnChanges {\r\n\t@Input() width = 300;\r\n\t@Input() okButtonText = \"Ok\";\r\n\t@Input() cancelButtonText = \"Cancel\";\r\n\t@Input() showOkButton = true;\r\n\t@Input() showCancelButton = true;\r\n\r\n\t@ViewChild(\"dialogRef\") dialogRef: SlickDialogComponent;\r\n\r\n\tisVisible = false;\r\n\r\n\tprivate dialogResolve: any;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.showOkButton)\r\n\t\t\tthis.showOkButton = (this.showOkButton.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.showCancelButton)\r\n\t\t\tthis.showCancelButton = (this.showCancelButton.toString().toLowerCase() === 'false') ? false : true;\r\n\t}\r\n\r\n\tconfirm(): Promise<SlickConfirmDialogResults> {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\treturn new Promise<any>((resolve, reject) => {\r\n\t\t\tthis.dialogRef.showDialog()\r\n\t\t\tthis.dialogResolve = resolve;\r\n\t\t});\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.dialogRef.hideDialog()\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Ok);\r\n\t}\r\n\r\n\tonCancel() {\r\n\t\tthis.dialogRef.hideDialog()\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Cancel);\r\n\t}\r\n\r\n\tonClose() {\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Cancel);\r\n\t}\r\n}","<slick-dialog *ngIf=\"isVisible === true\" #dialogRef [top]='200' [width]='width' [showHeader]='false' [resizable]=\"false\" [draggable]=\"false\" [minimizable]=\"false\" onClose='onClose()'>\r\n\t<div class=\"form-group text-center\">\r\n\t\t<h4 style='margin-top: 10px; margin-bottom: 20px'><ng-content></ng-content></h4>\r\n\t</div>\r\n\r\n\t<div class=\"text-center\" style='margin-top: 10px;'>\r\n\t\t<button *ngIf=\"showOkButton === true\" type=\"button\" style='width: 80px' class=\"btn btn-outline-primary\" (click)=\"onOk()\">{{okButtonText}}</button> \r\n\t\t<button *ngIf=\"showCancelButton === true\" type=\"button\" style='width: 80px' class=\"btn btn-outline-danger\" (click)=\"onCancel()\">Cancel</button>\r\n\t</div>\r\n</slick-dialog>\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-dialog-footer',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickDialogFooterComponent {\r\n\t@HostBinding('style.flex') flex = '1 1';\r\n\t@HostBinding('style.textAlign') textAlign = 'center';\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common'; \r\nimport { SlickDialogComponent } from \"./slick-dialog.component\";\r\nimport { SlickDialogFooterComponent } from \"./slick-dialog-footer.component\";\r\nimport { SlickDialogService } from \"./slick-dialog.service\";\r\nimport { AngularDraggableModule } from \"angular2-draggable\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, AngularDraggableModule],\r\n\tdeclarations: [SlickDialogComponent, SlickDialogFooterComponent],\r\n\texports: [SlickDialogComponent, SlickDialogFooterComponent],\r\n\tproviders: [SlickDialogService]\r\n})\r\nexport class SlickDialogModule { }\r\n\r\nexport { SlickDialogComponent, SlickDialogFooterComponent }","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common'; \r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog.component\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\n\r\n@NgModule({\r\n\timports: [SlickDialogModule, CommonModule],\r\n\tdeclarations: [SlickConfirmDialogComponent],\r\n\texports: [SlickConfirmDialogComponent]\r\n})\r\nexport class SlickConfirmDialogModule { }\r\nexport { SlickConfirmDialogComponent, SlickConfirmDialogResults }\r\n","import { Component, Input, AfterViewInit, ViewChild, ElementRef, OnDestroy, HostBinding, ContentChild, OnChanges } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Component({\r\n\tselector: 'slick-container',\r\n\ttemplateUrl: 'slick-container.component.html'\r\n})\r\nexport class SlickContainerComponent {\r\n\t@Input() maxHeight: string;\r\n\t@Input() padding: boolean = true;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n}\r\n","<div #slickContainerDivRef id=\"slick-container_{{uuid}}\" class=\"slick-container\" [ngClass]=\"{ 'slick-container-padding': padding === true }\" [style.minHeight]=\"maxHeight\" [style.maxHeight]=\"maxHeight\">\r\n\t<ng-content select=\"slick-container-header\"></ng-content>\r\n\t<ng-content select=\"slick-container-body\"></ng-content>\r\n\t<ng-content select=\"slick-container-footer\"></ng-content>\r\n</div>\r\n\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-header',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerHeaderComponent {\r\n\t@HostBinding(\"class\") slickContainerHeader = 'slick-container-header';\r\n}\r\n","import { Component, HostBinding, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-body',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerBodyComponent {\r\n\t@HostBinding('class') flex = 'slick-container-body flex-fill';\r\n\t@HostBinding('style.overflowY') overflowY = 'auto';\r\n}\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-footer',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerFooterComponent {\r\n\t@HostBinding(\"class\") slickContainerFooter = 'slick-container-footer';\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickContainerComponent } from \"./slick-container.component\";\r\n\r\nimport { SlickContainerHeaderComponent } from \"./slick-container-header.component\";\r\nimport { SlickContainerBodyComponent } from \"./slick-container-body.component\";\r\nimport { SlickContainerFooterComponent } from \"./slick-container-footer.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent],\r\n\texports: [CommonModule, SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent]\r\n})\r\nexport class SlickContainerModule { }\r\n\r\nexport { SlickContainerComponent }\r\nexport { SlickContainerHeaderComponent }\r\nexport { SlickContainerBodyComponent }\r\nexport { SlickContainerFooterComponent }\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-context-menu-item\",\r\n\ttemplate: `<div class=\"dropdown-item\"><ng-content></ng-content></div>`\r\n})\r\nexport class SlickContextMenuItemComponent {}","import { Component, Input, AfterViewInit, ViewChild, ElementRef, HostListener } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-context-menu\",\r\n\ttemplateUrl: \"slick-context-menu.component.html\"\r\n})\r\nexport class SlickContextMenuComponent implements AfterViewInit {\r\n\t@ViewChild(\"slickContextMenuRef\") slickContextMenuRef: ElementRef;\r\n\t@ViewChild(\"slickContextMenuDropdownMenuRef\") slickContextMenuDropdownMenuRef: ElementRef;\r\n\t\r\n\t@HostListener('document:click', ['$event.target'])\r\n\tpublic onClick(targetElement) {\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.display = \"none\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuDropdownMenuRef.nativeElement).style.opacity = \"0\";\r\n\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n public onRightClick(event: MouseEvent) {\r\n if (event.button === 2) {\r\n this.onClick(event.target);\r\n }\r\n }\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.slickContextMenuRef.nativeElement.remove(this.slickContextMenuRef);\r\n\t\tdocument.body.appendChild(this.slickContextMenuRef.nativeElement);\r\n\t}\r\n\r\n\tshowContextMenu(e: MouseEvent) {\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.left = (e.pageX) + \"px\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.top = (e.pageY) + \"px\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.display = \"block\";\r\n\t\tsetTimeout(() => {\r\n\t\t\t(<HTMLDivElement>this.slickContextMenuDropdownMenuRef.nativeElement).style.opacity = \"1\";\r\n\t\t});\r\n\t}\r\n}","<div #slickContextMenuRef class=\"slick-context-menu\">\r\n\t<div #slickContextMenuDropdownMenuRef class=\"dropdown-menu show\">\r\n\t\t<ng-content select=\"slick-context-menu-item\"></ng-content>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickContextMenuItemComponent } from \"./slick-context-menu-item.component\";\r\nimport { SlickContextMenuComponent } from \"./slick-context-menu.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickContextMenuComponent, SlickContextMenuItemComponent, CommonModule],\r\n\tdeclarations: [SlickContextMenuComponent, SlickContextMenuItemComponent]\r\n})\r\nexport class SlickContextMenuModule {}\r\n\r\nexport { SlickContextMenuComponent, SlickContextMenuItemComponent }","export class SlickCurrencyMaskOptions {\r\n\tprefix: string;\r\n\tdecimal: string;\r\n\tthousands: string;\r\n\tprecision: number;\r\n\tallowNegative: boolean;\t\r\n\tupdateOnBlurOnly: boolean;\r\n\tdefaultToZero: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.prefix = \"$\";\r\n\t\tthis.decimal = \".\";\r\n\t\tthis.thousands = \",\";\r\n\t\tthis.precision = 2;\r\n\t\tthis.allowNegative = true;\r\n\t\tthis.updateOnBlurOnly = true;\r\n\t\tthis.defaultToZero = true;\r\n\t}\r\n}\r\n","import { Directive, Input, ElementRef, forwardRef, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from '../utils/slick-sleep.service';\r\nimport { SlickCurrencyMaskOptions } from \"./slick-currency-mask-options.model\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-currency-mask]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickCurrencyMaskDirective),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickCurrencyMaskDirective implements OnInit, ControlValueAccessor {\r\n\t@Input(\"slick-currency-mask\") slickCurrencyMask: SlickCurrencyMaskOptions;\r\n\thasFocus: boolean = false;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\r\n\toptions: SlickCurrencyMaskOptions = new SlickCurrencyMaskOptions();\r\n\r\n\tprivate fnKeyDown = (e) => this.keyDown(e);\r\n\tprivate fnFocus = () => this.focus();\r\n\tprivate fnBlur = () => this.blur();\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\t(<HTMLInputElement>this.el.nativeElement).style.textAlign = \"right\";\r\n\t\tthis.hasFocus = false;\r\n\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.addEventListener('focus', this.fnFocus);\r\n\t\tthis.el.nativeElement.addEventListener('blur', this.fnBlur);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// If the currency mask doesn't have any options, set default options\r\n\t\tif (!this.slickCurrencyMask) \r\n\t\t\tthis.slickCurrencyMask = new SlickCurrencyMaskOptions();\r\n\r\n\t\tthis.options = new SlickCurrencyMaskOptions();\r\n\t\tthis.options.prefix = this.slickCurrencyMask.prefix || \"$\";\r\n\t\tthis.options.decimal = this.slickCurrencyMask.decimal || \".\";\r\n\t\tthis.options.thousands = this.slickCurrencyMask.thousands || \",\";\r\n\t\tthis.options.precision = (this.slickCurrencyMask.precision === null || this.slickCurrencyMask.precision === undefined) ? 2 : parseInt(this.slickCurrencyMask.precision.toString());\r\n\t\tthis.options.allowNegative = (this.slickCurrencyMask.allowNegative === null || this.slickCurrencyMask.allowNegative === undefined) ? true : (this.slickCurrencyMask.allowNegative.toString() === 'true');\r\n\t\tthis.options.updateOnBlurOnly = (this.slickCurrencyMask.updateOnBlurOnly === null || this.slickCurrencyMask.updateOnBlurOnly === undefined) ? true : (this.slickCurrencyMask.updateOnBlurOnly.toString() === 'true');\r\n\t\tthis.options.defaultToZero = (this.slickCurrencyMask.defaultToZero === null || this.slickCurrencyMask.defaultToZero === undefined) ? true : (this.slickCurrencyMask.defaultToZero.toString() === 'true');\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.removeEventListener('focus', this.fnFocus);\r\n\t\tthis.el.nativeElement.removeEventListener('blur', this.fnBlur);\r\n\t}\r\n\r\n\tasync keyDown(e: KeyboardEvent) {\r\n\t\tif (e.altKey || e.ctrlKey)\r\n\t\t\treturn;\r\n\r\n\t\tlet isValid = false;\r\n\r\n\t\tif (e.key === this.options.decimal)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.code === 'ArrowLeft' || e.code === 'ArrowRight')\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Backspace\r\n\t\tif (e.keyCode === 8)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Tab\r\n\t\tif (e.keyCode === 9)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Del\r\n\t\tif (e.keyCode === 46)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// F1-F12\r\n\t\tif (e.keyCode >= 112 && e.keyCode <= 123)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.key >= '0' && e.key <= '9')\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.key === '-' && this.options.allowNegative === true)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.keyCode === 46)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (!isValid) {\r\n\t\t\te.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\r\n\t\tconst dollarValue = this.parseDollarValue(usLocaleText);\r\n\t\tif (this.options.updateOnBlurOnly === false)\r\n\t\t\tthis.propagateChange(dollarValue);\r\n\r\n\t}\r\n\r\n\tasync focus() {\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.addEventListener('blur', this.fnBlur);\r\n\r\n\t\tthis.hasFocus = true;\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\t\tthis.updateTextbox(usLocaleText);\r\n\t\t(<HTMLInputElement>this.el.nativeElement).select()\r\n\t}\r\n\r\n\tasync blur() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.removeEventListener('blur', this.fnBlur);\r\n\r\n\t\tthis.hasFocus = false;\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\t\tthis.updateTextbox(usLocaleText);\r\n\t\tconst dollarValue = this.parseDollarValue(usLocaleText);\r\n\t\tthis.propagateChange(dollarValue);\r\n\t}\r\n\r\n\tpropagateChange = (_: number) => {};\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: number | string) {\r\n\t\tif (obj === null || obj === undefined) {\r\n\t\t\tif (this.options.defaultToZero === true) {\r\n\t\t\t\tobj = 0;\r\n\t\t\t\tthis.propagateChange(0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<HTMLInputElement>this.el.nativeElement).value = null;\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If this is a locale where , is the decimal separator, convert it back to . for our purposes\r\n\t\tconst objStr = obj.toString().replace(\",\", \".\");\r\n\t\tconst objNum = parseFloat(objStr);\r\n\t\t// toLocaleString will add in the ,'s so make sure to remove them\r\n\t\tconst objStrLocale = objNum.toLocaleString(\"en-US\").replace(\",\", \"\");\r\n\t\tthis.updateTextbox(objStrLocale);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tprivate convertToUSLocale(text: string): string {\r\n\t\twhile (text.indexOf(\" \") >= 0)\r\n\t\t\ttext = text.replace(\" \", \"\");\r\n\r\n\t\tif (!text) {\r\n\t\t\tif (this.options.defaultToZero === true) \r\n\t\t\t\ttext = \"0.0\";\t\t\t\r\n\t\t\telse \r\n\t\t\t\treturn null;\t\t\t\r\n\t\t}\r\n\r\n\t\tif (text.indexOf(this.options.decimal) === 0)\r\n\t\t\ttext = `0${text}`;\r\n\r\n\t\tconst textParts = text.split(this.options.decimal).filter(x => x !== \"\");\r\n\r\n\t\tif (textParts.length === 0)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\tif (textParts.length === 1)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\t// Only take the first 2. The rest are errors\r\n\t\tif (textParts.length > 2)\r\n\t\t\ttextParts.slice(0, 1);\r\n\r\n\t\ttextParts[0] = textParts[0]\r\n\t\t\t.replace(this.options.thousands, \"\")\r\n\t\t\t.replace(this.options.prefix, \"\")\r\n\t\t\t.replace(this.options.decimal, \"\");\r\n\r\n\t\treturn `${textParts[0]}.${textParts[1]}`;\r\n\t}\r\n\r\n\tprivate parseDollarValue(text: string): number {\r\n\t\tif (!text) \r\n\t\t\treturn null;\r\n\t\t\r\n\t\twhile (text.indexOf(\" \") >= 0)\r\n\t\t\ttext = text.replace(\" \", \"\");\r\n\r\n\t\t// Split the text into the dollar's part and the cents part\r\n\t\tconst textParts = text.split(\".\").filter(x => x !== \"\");\r\n\t\t// Make sure we have a dollars and cents\r\n\t\tif (textParts.length === 0)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\tif (textParts.length === 1)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\t// Only take the first 2. The rest are not allowed\r\n\t\tif (textParts.length > 2)\r\n\t\t\ttextParts.slice(0, 1);\r\n\r\n\t\ttextParts[0] = textParts[0]\r\n\t\t\t.replace(this.options.prefix, \"\")\r\n\t\t\t.replace(\",\", \"\");\r\n\r\n\t\ttry {\r\n\t\t\treturn parseFloat(`${textParts[0]}.${textParts[1]}`);\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateTextbox(strVal: string) {\r\n\t\tif (!strVal) {\r\n\t\t\t(<HTMLInputElement>this.el.nativeElement).value = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.options.allowNegative === false)\r\n\t\t\tstrVal = strVal.replace(\"-\", \"\");\r\n\r\n\t\t// If there is a - sign, remove it temporarily\r\n\t\tconst negativePart = (strVal.indexOf(\"-\") === 0) ? \"-\" : \"\";\r\n\t\tstrVal = strVal.replace(\"-\", \"\");\r\n\r\n\t\tconst currencyParts = strVal.split(\".\").filter(x => x !== \"\");\r\n\t\t// make sure there is a dollar amount\r\n\t\tif (currencyParts.length === 0) \r\n\t\t\tcurrencyParts.push(\"0\");\r\n\r\n\t\t// make sure there is a cents amount\r\n\t\tif (currencyParts.length === 1)\r\n\t\t\tcurrencyParts.push(\"0\");\r\n\r\n\t\t// Only take the first 2. The rest are errors\r\n\t\tif (currencyParts.length > 2)\r\n\t\t\tcurrencyParts.slice(0, 1);\r\n\r\n\t\tlet dollarPart = <string>currencyParts[0];\r\n\t\tdollarPart = dollarPart.replace(',', '').replace('.', '');\r\n\t\tlet centsPart = currencyParts[1];\r\n\t\tif (centsPart.length > this.options.precision)\r\n\t\t\tcentsPart = centsPart.substr(0, this.options.precision);\r\n\r\n\t\twhile (centsPart.length < this.options.precision)\r\n\t\t\tcentsPart = centsPart + \"0\";\r\n\r\n\t\t// reverse the dollar part so we can put commas every 3 chars\r\n\t\tif (!this.hasFocus && dollarPart.length > 3) {\r\n\t\t\tfor (let i = dollarPart.length - 3; i > 0; i -= 3)\r\n\t\t\t\tdollarPart = [dollarPart.slice(0, i), this.options.thousands, dollarPart.slice(i)].join('');\r\n\t\t}\r\n\r\n\t\tlet textboxVal = `${negativePart}${dollarPart}${this.options.decimal}${centsPart}`;\r\n\t\tif (!this.hasFocus)\r\n\t\t\ttextboxVal = `${this.options.prefix}${textboxVal}`;\r\n\r\n\t\t(<HTMLInputElement>this.el.nativeElement).value = textboxVal;\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { SlickCurrencyMaskDirective } from \"./slick-currency-mask.directive\";\r\n\r\n@NgModule({\r\n\timports: [],\r\n\tdeclarations: [SlickCurrencyMaskDirective],\r\n\texports: [SlickCurrencyMaskDirective]\r\n})\r\nexport class SlickCurrencyMaskModule { }\r\nexport { SlickCurrencyMaskDirective }\r\nexport { SlickCurrencyMaskOptions } from \"./slick-currency-mask-options.model\";\r\n","import { Component, ElementRef, ViewChild, Input, HostListener, forwardRef, OnInit, OnDestroy, EventEmitter, Output } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport moment from \"moment\";\r\n\r\n@Component({\r\n\tselector: '[slick-date-picker]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickDatePickerComponent),\r\n\t\t\tmulti: true\r\n\t\t}],\r\n\ttemplateUrl: 'slick-date-picker.component.html'\r\n})\r\nexport class SlickDatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\t@Input(\"slick-date-picker\") slickDatePicker: SlickDatePickerComponent;\r\n\t@Input(\"slick-date-picker-format\") format: string = \"M/D/YYYY\";\r\n\t@Input(\"slick-date-picker-condensed\") condensed: boolean = false;\r\n\t@Input(\"slick-date-picker-mobile\") mobile: boolean = false;\r\n\t@Output(\"onDateChange\") onDateChange = new EventEmitter<Date>();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnDocumentMouseDown = (e) => this.documentMouseDown(e);\r\n\r\n\t// Make sure they only press valid keys\r\n\t@HostListener('keydown', ['$event'])\r\n\tasync onKeydown(event: KeyboardEvent) {\t\t\r\n\t\tif (event.altKey || event.ctrlKey || event.metaKey === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.hideCalendar();\r\n\r\n\t\t// Allow: backspace, delete, tab, escape, enter\r\n\t\tif ((event.keyCode === 46 || event.keyCode === 8) ||\r\n\t\t\t(event.keyCode === 9 || event.keyCode === 27 || event.keyCode === 13) ||\r\n\t\t\t// Allow F1-F12 keys\r\n\t\t\t((event.keyCode >= 112 && event.keyCode <= 123)) ||\r\n\t\t\t// Allow: home, end, left, right, down, up\r\n\t\t\t(event.keyCode >= 35 && event.keyCode <= 40)) {\r\n\t\t\t// let it happen, don't do anything\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ensure that it is a number and stop the keypress\r\n\t\tif ((event.shiftKey || event.altKey || event.key < '0' || event.key > '9') &&\r\n\t\t\tevent.key !== '/' && // Allow /\r\n\t\t\tevent.key !== '-') { // Allow -\t\t\r\n\t\t\tevent.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// When we first focus, show the date picker\r\n\t@HostListener('focus', ['$event'])\r\n\tonFocus(event: FocusEvent): void {\r\n\t\tthis.showCalendar();\r\n\t}\r\n\r\n\t// When we blur, update the model\r\n\t@HostListener('blur', ['$event', '$event.target'])\r\n\tasync onBlur(event: FocusEvent, targetElement: HTMLElement) {\r\n\t\t// If the user clicked on the calendar, it will trigger a mouse down event before the blur event. Don't blur\r\n\t\t// if they clicked on the calendar.\r\n\t\tif (this.ignoreBlur === true) {\r\n\t\t\tthis.ignoreBlur = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst textVal = this.el.nativeElement.value;\r\n\r\n\t\tif (!textVal) {\r\n\t\t\tthis.doPropagate(null);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (moment(textVal, this.format).isValid()) {\r\n\t\t\tvar newDate = moment(textVal, this.format);\r\n\t\t\tthis.doPropagate(newDate.toDate())\r\n\t\t\tthis.el.nativeElement.value = newDate.format(this.format);\r\n\t\t}\r\n\t}\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tignoreBlur: boolean = false;\r\n\tshowDatePicker: boolean = false;\r\n\tdatePickerVisiblity: string = \"hidden\";\r\n\tdatePickerOpacity: string = '0';\r\n\tleft: string;\r\n\ttop: string;\r\n\tselectedDate: Date = null;\r\n\tisInitial = true;\r\n\r\n\tprivate inputGroupPrepend: HTMLElement;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\r\n\t\tthis.mobile = (this.mobile || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\t\tthis.condensed = (this.condensed || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\t// Since this.mobile isn't necessarily defined yet, we need to sleep to allow the ngIf's to do their thing\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.containerRef.nativeElement.remove(this.containerRef);\r\n\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.inputGroupPrepend = SlickUtilsService.getClosestSibling(this.el.nativeElement, \"input-group-prepend\");\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t// Is okay if this fails. It just means it was already removed.\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n private doPropagate(date: Date) {\r\n // We don't always go through the emit on the first call, so make sure this isn't the first change\r\n this.isInitial = false;\r\n\r\n\t\tif (!date) {\r\n\t\t\tif (this.selectedDate) {\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\tthis.emitDateChange(null);\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedDate = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst newDate = moment(date);\r\n\t\t\t// If the date is not valid, return\r\n\t\t\tif (newDate.isValid() === false)\r\n\t\t\t\treturn;\r\n\r\n\t\t\t// Don't propogate if the dates are the same\r\n\t\t\tif (moment(this.selectedDate).isSame(newDate))\r\n\t\t\t\treturn;\r\n\r\n\r\n\t\t\t// Setting this selectedDate will trigger the ngModelChange of the calendar. Ignore this.\r\n\t\t\tthis.selectedDate = moment(date).startOf(\"date\").toDate();\r\n\t\t\tthis.propagateChange(this.selectedDate);\r\n\t\t\tthis.emitDateChange(this.selectedDate);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate emitDateChange(date: Date) {\r\n\t\tif (this.onDateChange && !this.isInitial)\r\n\t\t\tthis.onDateChange.emit(date);\r\n\r\n\t\tthis.isInitial = false;\r\n\t}\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t\tif (moment(obj).isValid() === false) {\r\n\t\t\t\tthis.selectedDate = null;\r\n this.el.nativeElement.value = \"Invalid Date\";\r\n this.isInitial = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet updatedDate: moment.Moment;\r\n\t\t\tif (obj instanceof Date || obj.indexOf(\"Z\") >= 0)\r\n\t\t\t\tupdatedDate = moment(obj).startOf(\"date\");\r\n\t\t\telse\r\n\t\t\t\tupdatedDate = moment(obj, this.format).startOf(\"date\");\r\n\r\n if (moment(this.selectedDate || new Date()).isSame(updatedDate)) {\r\n this.isInitial = false;\r\n return;\r\n }\r\n\r\n\t\t\tthis.selectedDate = updatedDate.toDate();\r\n\t\t\tthis.el.nativeElement.value = moment(this.selectedDate).format(this.format);\r\n\t\t}\r\n\t\telse {\r\n if (!this.selectedDate && !obj) {\r\n this.isInitial = false;\r\n return;\r\n }\r\n\r\n\t\t\tthis.el.nativeElement.value = '';\r\n\t\t\tthis.selectedDate = null;\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tprivate documentMouseDown(e: MouseEvent) {\r\n\t\t// This is the only way to capture that they clicked on the calendar before the blur event\r\n\t\t// fires. \r\n\t\tif (SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-calendar\") === true)\r\n\t\t\tthis.ignoreBlur = true;\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!e.target)\r\n\t\t\treturn;\r\n\r\n\t\tlet targetElement: HTMLElement = (<HTMLElement>e.target);\r\n\r\n\t\tif (SlickUtilsService.checkParentClassExists(targetElement, \"slick-calendar\") === true)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.inputGroupPrepend && ((targetElement === this.inputGroupPrepend)\r\n\t\t\t|| (targetElement.parentElement && targetElement.parentElement === this.inputGroupPrepend))\r\n\t\t\t|| (targetElement.parentElement && targetElement.parentElement.parentElement && targetElement.parentElement.parentElement === this.inputGroupPrepend)) {\r\n\t\t\tthis.toggleCalendar();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst clickedInside = this.el.nativeElement.contains(targetElement);\r\n\t\tif (!clickedInside) {\r\n\t\t\tthis.hideCalendar();\r\n\t\t}\r\n\t}\r\n\r\n\tonDateSelect(date) {\r\n\t\tthis.el.nativeElement.value = moment(date).format(this.format);\r\n\t\tthis.hideCalendar();\r\n\r\n\t\tconst newDate = moment(this.el.nativeElement.value, this.format).toDate();\r\n\r\n\t\tthis.doPropagate(newDate);\t\t\r\n\t}\r\n\r\n\tasync showCalendar() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tthis.showDatePicker = true;\r\n\r\n\t\tif (!this.mobile) {\r\n\t\t\tthis.reposition();\r\n\t\t}\r\n\r\n\t\tthis.datePickerOpacity = '1';\r\n\t\tthis.datePickerVisiblity = 'visible';\r\n\r\n\t\t// Not sure why, but the click event is called immediately, which hides the calendar\r\n\t\tsetTimeout(() => {\r\n\t\t\tdocument.addEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}, 350)\r\n\t}\r\n\r\n\thideCalendar() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tthis.datePickerVisiblity = 'hidden';\r\n\t\tthis.datePickerOpacity = '0';\r\n\t\tthis.showDatePicker = false;\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tif (this.mobile === true)\r\n\t\t\treturn;\r\n\r\n\t\t// Reposition the element to be where the textbox is, either below or above if there isn't enough room\r\n\t\tconst inputEl: HTMLInputElement = this.el.nativeElement;\r\n\r\n\t\tconst rect = inputEl.getBoundingClientRect();\r\n\t\tconst textboxLeft = rect.left;\r\n\t\tconst textboxTop = rect.top;\r\n\t\tconst textboxHeight = inputEl.offsetHeight;\r\n\t\tconst containerHeight = (<HTMLDivElement>this.containerRef.nativeElement).offsetHeight;\r\n\r\n\t\tthis.left = textboxLeft + \"px\";\r\n\t\tthis.top = (textboxTop + textboxHeight) + \"px\";\r\n\r\n\t\tif (textboxTop + textboxHeight + containerHeight > window.innerHeight) {\r\n\t\t\tthis.top = (textboxTop - containerHeight - 2) + \"px\";\r\n\t\t}\r\n\r\n\t}\r\n\r\n\ttoggleCalendar() {\r\n\t\t(this.showDatePicker === true) ? this.hideCalendar() : this.showCalendar();\r\n\t}\r\n}","<ng-content></ng-content>\r\n<div *ngIf=\"mobile === false\" #containerRef class=\"slick-date-picker-container\" [style.left]=\"left\" [style.top]=\"top\" [style.visibility]=\"datePickerVisiblity\" [style.opacity]=\"datePickerOpacity\">\r\n\t<slick-calendar [ngModel]=\"selectedDate\" [condensed]=\"condensed\" (onDateSelect)=\"onDateSelect($event)\"></slick-calendar>\r\n</div>\r\n<div *ngIf=\"mobile === true\" #containerRef class=\"slick-date-picker-mobile-container\" [style.visibility]=\"datePickerVisiblity\" [style.opacity]=\"datePickerOpacity\">\r\n\t<div class=\"slick-date-picker-mobile-calendar\">\r\n\t\t<slick-calendar [ngModel]=\"selectedDate\" [condensed]=\"condensed\" (onDateSelect)=\"onDateSelect($event)\"></slick-calendar>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickDatePickerComponent } from \"./slick-date-picker.component\";\r\nimport { SlickCalendarModule } from \"../slick-calendar/slick-calendar.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickCalendarModule],\r\n\tdeclarations: [SlickDatePickerComponent],\r\n\texports: [SlickDatePickerComponent, SlickCalendarModule]\r\n})\r\nexport class SlickDatePickerModule { }\r\n\r\nexport { SlickDatePickerComponent }","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-drag-drop]'\r\n})\r\nexport class SlickDragDropDirective {\r\n\r\n}","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-draggable]'\r\n})\r\nexport class SlickDraggableDirective {\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDragDropDirective } from \"./slick-drag-drop.directive\";\r\nimport { SlickDraggableDirective } from \"./slick-draggable.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickDragDropDirective, SlickDraggableDirective],\r\n\texports: [SlickDragDropDirective, SlickDraggableDirective]\r\n})\r\nexport class SlickDragDropModule { }\r\n\r\nexport { SlickDragDropDirective }\r\nexport { SlickDraggableDirective }","import { Directive, Input, OnInit, OnChanges, SimpleChanges, ElementRef } from \"@angular/core\";\r\n\r\nexport enum SlickValidationTypes { None, Error, Warning }\r\n\r\n@Directive({\r\n\tselector: '[slick-validation-indicator]'\r\n})\r\nexport class SlickValidationIndicatorDirective implements OnInit, OnChanges {\r\n\t@Input(\"slick-validation-indicator\") isValid: boolean;\r\n\t@Input(\"slickValidationType\") validationType: SlickValidationTypes = SlickValidationTypes.Warning;\r\n\r\n\tprivate bgWarningStyle: string = \"#ffc207\";\r\n\tprivate bgDangerStyle: string = \"#dc3545\";\r\n\tprivate bgSuccessStyle: string = \"#28a745\";\r\n\r\n\tprivate originalBorderStyle: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.originalBorderStyle = this.el.nativeElement.style.borderLeft;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.validationType) {\r\n\t\t\tif ((<any>this.validationType).toString().toLowerCase() === 'warning')\r\n\t\t\t\tthis.validationType = SlickValidationTypes.Warning;\r\n\t\t\telse if ((<any>this.validationType).toString().toLowerCase() === 'none')\r\n\t\t\t\tthis.validationType = SlickValidationTypes.None;\r\n\t\t\telse\r\n\t\t\t\tthis.validationType = SlickValidationTypes.Error;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.validationType = SlickValidationTypes.None;\r\n\t\t}\r\n\r\n\t\tthis.setIndicator();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.setIndicator();\r\n\t}\r\n\r\n\tprivate setIndicator() {\r\n\t\tif (this.validationType === SlickValidationTypes.None) {\r\n\t\t\tthis.el.nativeElement.style.borderLeft = this.originalBorderStyle;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isValid) {\r\n\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgSuccessStyle;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.validationType === SlickValidationTypes.Warning)\r\n\t\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgWarningStyle;\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgDangerStyle;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickValidationIndicatorDirective, SlickValidationTypes } from \"./slick-validation-indicator.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickValidationIndicatorDirective],\r\n\texports: [CommonModule, SlickValidationIndicatorDirective]\r\n})\r\nexport class SlickValidationIndicatorModule { }\r\nexport { SlickValidationIndicatorDirective, SlickValidationTypes }\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Injectable()\r\nexport class SlickDropDownService {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tpublic getVisibleItems(items: any[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet visibleItems: any[] = items.map((item) => {\r\n\t\t\tlet id = SlickUtilsService.getDeepObject(item, idFieldName);\r\n\t\t\tif (id === null || id === undefined) {\r\n\t\t\t\tconsole.debug(\"%c slick-drop-down: Id not found for dropdown item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.debug(\"First Item: \", items[0]);\r\n\t\t\t}\r\n\r\n\t\t\tlet text = SlickUtilsService.getDeepObject(item, textFieldName);\r\n\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tid: id,\r\n\t\t\t\ttext: text ? text.toString() : null,\r\n\t\t\t\titem: item\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c slick-drop-down: Warning! No text was found for dropdown item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\r\n\t\treturn visibleItems;\r\n\t}\r\n\r\n\tpublic getSelectedItem(items: any[], selectedId: string | number): any {\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItem = items.find((item) => { return item.id == selectedId });\r\n\r\n\t\tif (selectedItem)\r\n\t\t\treturn selectedItem;\r\n\t\telse\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tpublic async getItemsFromServer(url: string): Promise<any> {\r\n\t\treturn Promise.resolve((await this.http.get(url).toPromise()));\r\n\t}\r\n\r\n\tpublic getItemIndex(items: any[], selectedId: string): number {\r\n\t\treturn items.findIndex((item) => { return item.id == selectedId });\r\n\t}\r\n}","import { Injectable, ElementRef } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickLogService {\r\n\tconstructor(private httpClient: HttpClient) { }\r\n\r\n\tasync writeLog(text: string): Promise<any> {\r\n\t\tconst params = {\r\n\t\t\ttext: text,\r\n\t\t\tlogDate: new Date()\r\n\t\t}\r\n\r\n\t\tawait (this.httpClient.post(\"https://api.crflow.com/debuglogs/writelog\", params).toPromise()); \r\n\t};\r\n}\r\n\r\n","import { Component, Input, Output, EventEmitter, ElementRef, OnInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, forwardRef, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { SlickDropDownService } from \"./slick-drop-down.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\nimport { SlickLogService } from \"../utils/slick-log.service\";\r\nimport { ISlickDropDownButtonModel } from \"./slick-drop-down-button.model\";\r\n\r\nexport enum SlickDropDownSearchTypes { startsWith, eachWord, any }\r\n\r\n@Component({\r\n\tselector: 'slick-drop-down',\r\n\ttemplateUrl: 'slick-drop-down.component.html',\r\n\tproviders: [SlickDropDownService, SlickLogService,\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickDropDownComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickDropDownComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n\t@Input() placeholder: string = '';\r\n\t@Input() items: any[];\r\n\t@Input() idFieldName: string = \"id\";\r\n\t@Input() textFieldName: string = \"text\";\r\n\t@Input() compact: boolean = false;\r\n\t@Input() disabled: boolean = false;\r\n\t@Input() allowEmpty: boolean = true;\r\n\t@Input() getUrl: string;\r\n\t@Input() width: string = '100%';\r\n\t@Input() listWidth: string = '100%';\r\n\t@Input() height: string = '300px';\r\n\t@Input() showLoadingMessage: boolean = false;\r\n\t@Input() showDebug: boolean;\r\n\t@Input() tabindex: number;\r\n\t@Input() validationIndicator: boolean;\r\n\t@Input() validationIndicatorType: string;\r\n\t@Input() attachTo: string;\r\n\t@Input() searchType: SlickDropDownSearchTypes = SlickDropDownSearchTypes.startsWith;\r\n\t@Input() icon: string;\r\n\t@Input() isMobile: boolean = false;\r\n\t@Input() cssClass: string;\r\n\r\n\t@Output() onExpand: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t@ViewChild(\"containerDiv\") containerDiv: ElementRef;\r\n\t@ViewChild(\"dropdownList\") dropdownList: ElementRef;\r\n\t@ViewChild(\"selectedTextInputRef\") selectedTextInputRef: ElementRef;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tfnReposition = () => this.reposition();\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tuuid: string;\r\n\tselectedId: string;\r\n\tselectedText: string;\r\n\texpanded: boolean = false;\r\n\tselectedItem: any;\r\n\tselectedIndex: number;\r\n\tfilterText: string = '';\r\n\tvisibleItems: any[];\r\n\tleft: number;\r\n\ttop: number;\r\n\tlistGroupWidth: string;\r\n\tisVisible: boolean = false;\r\n\tisAndroid: boolean = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');\r\n\r\n\r\n\r\n\tconstructor(private slickDropDownService: SlickDropDownService,\r\n\t\tprivate changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tthis.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.cssClass)\r\n\t\t\t(<HTMLDivElement>this.containerDiv.nativeElement).classList.add(...this.cssClass.split(\" \"));\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj !== null && obj !== undefined)\r\n\t\t\tthis.selectedId = obj;\r\n\t\telse\r\n\t\t\tthis.selectedId = null;\r\n\r\n\t\tthis.selectItem(this.selectedId, false);\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectItem(this.selectedId, false);\r\n\t\t\tif (this.selectedTextInputRef && document.activeElement === this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tif (changes.showLoadingMessage) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\tif (this.showLoadingMessage === true)\r\n\t\t\t\tthis.selectedText = \"Loading...\";\r\n\t\t}\r\n\r\n\t\tif (changes.getUrl) {\r\n\t\t\tif (this.showLoadingMessage === true) {\r\n\t\t\t\tthis.selectedText = \"Loading...\";\r\n\t\t\t}\r\n\r\n\t\t\tlet items: any[] = await this.slickDropDownService.getItemsFromServer(this.getUrl)\r\n\t\t\tthis.selectedText = null;\r\n\t\t\tthis.items = items\r\n\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectItem(this.selectedId, false);\r\n\t\t\tif (document.activeElement === this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tif (changes.validationIndicator && changes.validationIndicator.firstChange) {\r\n\t\t\tif (!this.validationIndicatorType)\r\n\t\t\t\tthis.validationIndicatorType = \"error\";\r\n\t\t}\r\n\r\n\t\tif (changes.allowEmpty)\r\n\t\t\tthis.allowEmpty = (this.allowEmpty.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.isMobile)\r\n\t\t\tthis.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.disabled && changes.disabled.currentValue)\r\n\t\t\tthis.disabled = (changes.disabled.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.compact && changes.compact.currentValue)\r\n\t\t\tthis.compact = (changes.compact.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.searchType) {\r\n\t\t\tif (changes.searchType.currentValue.toString().toLowerCase() === 'eachword')\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.eachWord;\r\n\t\t\telse if (changes.searchType.currentValue.toString().toLowerCase() === 'any')\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.any;\r\n\t\t\telse\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.startsWith;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.collapse();\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.dropdownList.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tasync setFocus(showDropdownList: boolean = false) {\r\n\t\tthis.filterText = '';\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\r\n\t\t// If this is true, just set expanded to false to force an expand\r\n\t\tif (showDropdownList === true)\r\n\t\t\tthis.expanded = false;\r\n\r\n\t\tawait SlickUtilsService.waitForElement(\"#slick-drop-down_\" + this.uuid);\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t}\r\n\r\n\tprivate async expand() {\r\n\t\tif (this.disabled)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tSlickUtilsService.attachElement(this.dropdownList.nativeElement, this.attachTo)\r\n\r\n\t\tthis.reposition();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.dropdownList.nativeElement.style.display = \"inline-block\";\r\n\r\n\t\tconst selectedItems = this.dropdownList.nativeElement.getElementsByClassName(\"active\");\r\n\t\tif (selectedItems && selectedItems.length > 0)\r\n\t\t\t(<HTMLElement>selectedItems[0]).scrollIntoView({ block: 'nearest' });\r\n\r\n\t\tthis.expanded = true;\r\n\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onExpand)\r\n\t\t\tthis.onExpand.emit();\r\n\t}\r\n\r\n\tprivate collapse() {\r\n\t\tif (this.expanded === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.expanded = false;\r\n\t\tthis.dropdownList.nativeElement.style.display = \"none\";\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tSlickUtilsService.removeElement(this.dropdownList.nativeElement);\r\n\r\n\t\tthis.isVisible = false;\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tconst dropDownRect = this.containerDiv.nativeElement.getBoundingClientRect();\r\n\t\tconst parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();\r\n\r\n\t\tconst containerLeft = (this.attachTo === 'body') ? dropDownRect.left : (dropDownRect.left - parentRect.left);\r\n\t\tconst containerTop = (this.attachTo === 'body') ? dropDownRect.top : (dropDownRect.top - parentRect.top);\r\n\r\n\t\tconst containerHeight = this.containerDiv.nativeElement.offsetHeight;\r\n\t\tconst containerWidth = dropDownRect.width;\r\n\r\n\t\tthis.width = containerWidth;\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.listGroupWidth = this.width;\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.listGroupWidth = \"auto\";\r\n\t\telse\r\n\t\t\tthis.listGroupWidth = this.listWidth;\r\n\t\tthis.top = (containerTop + containerHeight);\r\n\t\tthis.left = containerLeft;\r\n\t}\r\n\r\n\tprivate async documentClick(e: MouseEvent) {\r\n\t\t// Not entirely sure why, but iPhones call onFocus when clicking out of the dropdown\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-drop-down_\" + this.uuid) === true)\r\n\t\t\treturn;\r\n\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, 0);\r\n\t\tif (this.selectedIndex !== null && this.visibleItems.length > 0) {\r\n\t\t\tlet itemId = this.visibleItems[this.selectedIndex].id;\r\n\t\t\tthis.selectItem(itemId, true);\r\n\t\t}\r\n\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\tprivate selectItem(id: string | number, emitOnSelect: boolean) {\r\n\t\tlet item = this.slickDropDownService.getSelectedItem(this.visibleItems, id);\r\n\r\n\t\tif (item) {\r\n\t\t\tthis.selectedItem = item;\r\n\t\t\tthis.selectedId = item.id;\r\n\t\t\tthis.selectedText = item.text;\r\n\t\t\tthis.selectedIndex = this.slickDropDownService.getItemIndex(this.visibleItems, this.selectedId);\r\n\r\n\t\t\tif (this.onChange)\r\n\t\t\t\tthis.onChange.emit(this.selectedItem.item);\r\n\t\t\tif (emitOnSelect === true && this.onSelect)\r\n\t\t\t\tthis.onSelect.emit(this.selectedItem.item);\r\n\t\t\tthis.propagateChange(this.selectedId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedItem = null;\r\n\t\t\tthis.selectedText = null;\r\n\t\t\tthis.selectedIndex = null;\r\n\t\t}\r\n\t}\r\n\r\n\tasync onKeyDown(e: KeyboardEvent) {\r\n\t\tif (this.isAndroid)\r\n\t\t\treturn;\r\n\r\n\t\t// Tab/enter\r\n\t\tif (e.which === 9 || e.which === 13) {\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\treturn;\r\n\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, 0);\r\n\t\t\tlet itemId = this.visibleItems[this.selectedIndex].id;\r\n\t\t\tthis.selectItem(itemId, true);\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (e.key && e.key.length > 1)\r\n\t\t\treturn true;\r\n\r\n\t\tif (e.which === 46 || e.which === 8) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\tif (e.which >= 32 && e.which <= 126) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\t}\r\n\r\n\tasync onKeyUp(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\t// If this is android, it won't pass us any key data so just read the entire input element\r\n\t\tif (this.isAndroid === true) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tthis.filterText = (<HTMLInputElement>this.selectedTextInputRef.nativeElement).value;\r\n\t\t\tthis.filterSearch();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// del or backspace\r\n\t\tif (e.which === 46 || e.which === 8 && !this.filterText) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tif (this.allowEmpty === true) {\r\n\t\t\t\tthis.selectItem(null, true);\r\n\t\t\t\tthis.selectedId = null;\r\n\t\t\t\tthis.propagateChange(null);\r\n\r\n\t\t\t\tif (this.onChange)\r\n\t\t\t\t\tthis.onChange.emit(null);\r\n\r\n\t\t\t\tif (this.onSelect)\r\n\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (e.which === 8 && this.filterText) {\r\n\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t\t\tif (this.filterText.length === 0) {\r\n\t\t\t\tthis.selectedText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tthis.filterSearch();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (e.which === 38) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (e.which === 40) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded || !this.visibleItems) {\r\n\t\t\t\tthis.expand();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.selectedIndex < this.visibleItems.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If F1 is pressed, key length will be 2\r\n\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey)\r\n\t\t\treturn false;\r\n\r\n\t\tif (e.which >= 32 && e.which <= 126) {\r\n\t\t\tthis.filterText += e.key;\r\n\r\n\t\t\tthis.filterSearch();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async filterSearch() {\r\n\t\tif (!this.expanded)\r\n\t\t\tthis.expand();\r\n\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\tif (this.searchType === SlickDropDownSearchTypes.startsWith) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.searchType === SlickDropDownSearchTypes.eachWord) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => (\" \" + x.text.toLowerCase()).indexOf(\" \" + this.filterText.toLowerCase()) >= 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\t\tconst selectedTextStart = (\" \" + this.visibleItems[0].text).toLowerCase().indexOf(\" \" + this.filterText.toLowerCase());\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(selectedTextStart, selectedTextStart + this.filterText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tlastEvent: string = null;\r\n\tonDropdownClicked(e: MouseEvent) {\r\n\t\t// This is some hacky code that only allows 1 event every 100ms\r\n\t\t// This is because we don't know if they will tab into the focus or click into it. If they tab, we only get 1 focus event\r\n\t\t// if they click we get focus AND click.\r\n\t\tif (this.lastEvent !== null)\r\n\t\t\treturn;\r\n\r\n\t\tthis.lastEvent = e.type;\r\n\r\n\t\t// If this is the focus event, we may or may not get\r\n\t\t// a click event after. If it is, wait a bit longer for\r\n\t\t// slower computers to fire the click\r\n\t\tif (this.lastEvent === 'focus')\r\n\t\t\tsetTimeout(() => this.lastEvent = null, 500);\r\n\t\telse\r\n\t\t\tsetTimeout(() => this.lastEvent = null, 250);\r\n\r\n\t\tthis.filterText = '';\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectItem(this.selectedId, false);\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\tif (this.expanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\t}\r\n\r\n\tonItemClick(item: any) {\r\n\t\tthis.selectItem(item.id, true);\r\n\t\tthis.collapse();\r\n\t}\r\n}","<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center position-relative\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon p-0\" style=\"position: absolute;\"><i class=\"px-1\" [ngClass]=\"icon\"></i></div>\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" disabled=\"disabled\" [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div style=\"position: absolute; right: 0;\">\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"compact\" #containerDiv class=\"slick-drop-down slick-drop-down-compact form-control d-flex flex-fill align-items-center\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control me-2' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control me-2' [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div>\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n <li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n</ul>\r\n","export interface ISlickDropDownButtonModel {\r\n onClick: Function;\r\n faClass: string;\r\n tabIndex: number;\r\n disabled: boolean;\r\n}\r\n\r\nexport class SlickDropDownButtonModel implements ISlickDropDownButtonModel {\r\n\r\n constructor(faClass: string = null, onClick: Function = null) {\r\n this.onClick = onClick;\r\n this.faClass = faClass;\r\n this.tabIndex = -1;\r\n }\r\n\r\n onClick: Function;\r\n faClass: string;\r\n tabIndex: number;\r\n disabled: boolean;\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { SlickValidationIndicatorModule } from \"../slick-validation-indicator/slick-validation-indicator.module\";\r\nimport { SlickDropDownComponent } from \"./slick-drop-down.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, HttpClientModule, SlickValidationIndicatorModule],\r\n\tdeclarations: [SlickDropDownComponent],\r\n\texports: [SlickDropDownComponent],\r\n\tproviders: [HttpClientModule]\r\n})\r\nexport class SlickDropDownModule { }\r\n\r\nexport { SlickDropDownComponent }\r\nexport { SlickDropDownButtonModel, ISlickDropDownButtonModel } from \"./slick-drop-down-button.model\";","import { Directive, ElementRef, OnDestroy, OnInit, EventEmitter, Output } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list]'\r\n})\r\nexport class SlickDropListDirective implements OnInit, OnDestroy {\r\n\t@Output(\"onSlickDropListReorder\") onSlickDropListReorder = new EventEmitter<number[]>();\r\n\t@Output(\"onSlickDropListEnter\") onSlickDropListEnter = new EventEmitter<any>();\r\n\t@Output(\"onSlickDropListLeave\") onSlickDropListLeave = new EventEmitter<number>();\r\n\r\n\tel: HTMLElement;\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tfnMouseDown = (e) => this.mouseDown(e);\r\n\tfnMouseMove = (e) => this.mouseMove(e);\r\n\tfnMouseUp = () => this.mouseUp();\r\n\r\n\tisAdding: boolean;\r\n\tisAddingMouseEvent: MouseEvent;\r\n\tisMoving: boolean;\r\n\tplaceholderEl: HTMLElement;\r\n\tplaceholderHeight: number;\r\n\titemHeights: number[];\r\n\tcursorOffset: number;\r\n\toriginalIdx: number;\r\n\tcurrentIdx: number;\r\n\t\r\n\tconstructor(el: ElementRef) {\r\n\t\tthis.el = (<HTMLElement>el.nativeElement);\r\n\t\tthis.el.setAttribute(\"drop-list-uuid\", this.uuid);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.el.style.position = \"relative\";\r\n\t\tdocument.addEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t}\r\n\r\n\tasync mouseDown(e: MouseEvent, target: HTMLElement = null) {\r\n\t\tthis.isAdding = false;\r\n\t\tthis.isMoving = false;\r\n\r\n\t\tif (e.button !== 0 || !e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.addEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\r\n\t\tif (!target)\r\n\t\t\ttarget = <HTMLElement>e.target;\r\n\r\n\t\tconst parent = SlickUtilsService.findParentByAttr(target, 'drop-list-uuid', this.uuid);\r\n\t\tif (!parent)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isMoving = true;\r\n\r\n\t\tconst grabEls = this.el.querySelectorAll(\".slick-drop-list-grab\");\r\n\t\tif (grabEls.length > 0 && !SlickUtilsService.findParent(target, \"slick-drop-list-grab\"))\r\n\t\t\treturn true;\r\n\r\n\t\tconst dropListItem = SlickUtilsService.findParent(target, \"slick-drop-list-item\");\r\n\t\tif (!dropListItem) {\r\n\t\t\tconsole.error(\"Can't find item element\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Find which element the mouse is over\r\n\t\tthis.currentIdx = this.findElementIdx(e.y, false);\r\n\t\tthis.originalIdx = this.currentIdx;\r\n\r\n\t\tthis.startMove(dropListItem);\r\n\t}\r\n\r\n\tmouseMove(e: MouseEvent) {\r\n\t\tif (this.isAdding)\r\n\t\t\treturn;\r\n\r\n\t\tconst parent = SlickUtilsService.findParentByAttr(<HTMLElement>e.target, 'drop-list-uuid', this.uuid);\r\n\t\tif (!parent) {\r\n\t\t\t// If this isn't the parent, but we we're moving, that means we just left this parent\r\n\t\t\t// Send a message which element was dragged out and reset everything else\r\n\t\t\tif (this.isMoving && this.onSlickDropListLeave.observers.length > 0) {\r\n\t\t\t\tthis.isMoving = false;\r\n\t\t\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\t\tallItems.forEach(item => {\r\n\t\t\t\t\titem.classList.remove(\"slick-drop-list-item-animation\");\r\n\t\t\t\t\titem.style.transform = \"\";\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.onSlickDropListLeave.emit(this.originalIdx);\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.isMoving && this.onSlickDropListEnter.observers.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\t// If the mouse was clicked outside of this droplist, but it has now moved inside this droplist, tell the parent where\r\n\t\t// in the droplist it has moved.\r\n\t\t// Since there is no way for a directive to have functions called via ViewChild, just assume that the page \r\n\t\t// has added the appropriate element at the appropriate place\r\n\t\tif (!this.isMoving && this.onSlickDropListEnter) {\r\n\t\t\tthis.isAdding = true;\r\n\r\n\t\t\t// Find which element the mouse is over\r\n\t\t\tconst idx = this.findElementIdx(e.y, false);\r\n\t\t\tthis.isAddingMouseEvent = e;\r\n\t\t\t// The caller needs to call the ready function after adding the new record to the array\r\n\t\t\tthis.onSlickDropListEnter.emit({ idx: idx, ready: this.newItemReady.bind(this) });\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\t// Find which element the mouse is over\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst dropListItem = dropListItems[i];\r\n\t\t\tconst boundingRect = dropListItem.getBoundingClientRect();\r\n\r\n\t\t\tconst topHalfTop = boundingRect.top;\r\n\t\t\tconst topHalfBottom = topHalfTop + (boundingRect.height / 2);\r\n\t\t\tconst bottomHalfTop = topHalfBottom + 1;\r\n\t\t\tconst bottomHalfBottom = boundingRect.bottom;\r\n\r\n\t\t\tif (this.currentIdx !== i && e.y >= topHalfTop && e.y <= topHalfBottom) {\r\n\t\t\t\tthis.currentIdx = i;\r\n\t\t\t\tthis.redraw();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.currentIdx !== i + 1 && e.y >= bottomHalfTop && e.y <= bottomHalfBottom) {\r\n\t\t\t\tthis.currentIdx = i + 1;\r\n\t\t\t\tthis.redraw();\r\n\t\t\t\tbreak;\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tmouseUp() {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\r\n\t\tif (!this.isMoving)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isMoving = false;\r\n\r\n\t\t// Remove the placeholder\r\n\t\tthis.placeholderEl.classList.remove(\"slick-drop-list-placeholder\");\r\n\t\tthis.placeholderEl.classList.add(\"slick-drop-list-item\");\r\n\t\tthis.placeholderEl.style.boxShadow = \"\";\r\n\t\tthis.placeholderEl.style.transform = \"\";\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\r\n\t\t// Add the placeholder back\r\n\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tif (this.currentIdx === allItems.length)\r\n\t\t\tthis.el.appendChild(this.placeholderEl);\r\n\t\telse\r\n\t\t\tthis.el.insertBefore(this.placeholderEl, allItems[this.currentIdx]);\r\n\r\n\t\tthis.placeholderEl = null;\r\n\r\n\t\tallItems.forEach(item => {\r\n\t\t\titem.classList.remove(\"slick-drop-list-item-animation\");\r\n\t\t\titem.style.transform = \"\";\r\n\t\t});\r\n\r\n\t\tif (this.onSlickDropListReorder)\r\n\t\t\tthis.onSlickDropListReorder.emit([this.originalIdx, this.currentIdx]);\r\n\r\n\t\tthis.originalIdx = null;\r\n\t\tthis.currentIdx = null;\r\n\t}\r\n\r\n\tprivate redraw() {\r\n\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tlet placeholderOffset = 0;\r\n\r\n\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\tif (i < this.currentIdx) {\r\n\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.placeholderEl.style.transform = `translate3d(0px, -${placeholderOffset}px, 0px)`;\r\n\t}\r\n\r\n\tnewItemReady(idx: number) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.currentIdx = idx;\r\n\t\t\tthis.originalIdx = idx;\r\n\r\n\t\t\tconst dropListItem = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\").item(idx);\r\n\t\t\tthis.mouseDown(this.isAddingMouseEvent, dropListItem);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate findElementIdx(mouseY, useTopAndBottom: boolean): number {\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst dropListItem = dropListItems[i];\r\n\t\t\tconst boundingRect = dropListItem.getBoundingClientRect();\r\n\r\n\t\t\tif (useTopAndBottom) {\r\n\t\t\t\tconst topHalfTop = boundingRect.top;\r\n\t\t\t\tconst topHalfBottom = topHalfTop + (boundingRect.height / 2);\r\n\t\t\t\tconst bottomHalfTop = topHalfBottom + 1;\r\n\t\t\t\tconst bottomHalfBottom = boundingRect.bottom;\r\n\r\n\t\t\t\tif (mouseY >= topHalfTop && mouseY <= topHalfBottom)\r\n\t\t\t\t\treturn i;\r\n\r\n\t\t\t\tif (mouseY >= bottomHalfTop && mouseY <= bottomHalfBottom)\r\n\t\t\t\t\treturn i + 1;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (mouseY >= boundingRect.top && mouseY <= boundingRect.bottom)\r\n\t\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate startMove(dropListItem: HTMLElement) {\r\n\t\tthis.el.style.userSelect = \"none\";\r\n\r\n\t\tthis.placeholderEl = <HTMLElement>dropListItem;\r\n\t\tthis.placeholderEl.classList.add(\"slick-drop-list-placeholder\");\r\n\t\tthis.placeholderEl.classList.remove(\"slick-drop-list-item\");\r\n\t\tthis.placeholderEl.style.boxShadow = \"4px 12px 6px rgba(0,0,0,.24)\"\r\n\r\n\t\tthis.placeholderHeight = this.placeholderEl.getBoundingClientRect().height;\r\n\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\t\tthis.el.appendChild(this.placeholderEl);\r\n\r\n\t\tthis.itemHeights = [];\r\n\t\tthis.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\").forEach(item => this.itemHeights.push(item.getBoundingClientRect().height));\r\n\r\n\t\tthis.redraw();\r\n\r\n\t\t// Don't start the animation until after the first click because it looks weird\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\tallChildren.forEach(item => item.classList.add(\"slick-drop-list-item-animation\"));\r\n\t\t});\r\n\t}\r\n}","import { Directive, ElementRef, AfterViewInit, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list-item]'\r\n})\r\nexport class SlickDropListItemDirective {\r\n\r\n\tconstructor(el: ElementRef) {\r\n\t\tconst dropListEl = <HTMLElement>el.nativeElement;\r\n\t\tif (dropListEl.classList.contains(\"slick-drop-list-item\") === false)\r\n\t\t\tdropListEl.classList.add(\"slick-drop-list-item\");\r\n\r\n\t}\r\n}","import { Directive, ElementRef, AfterViewInit, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list-grab]'\r\n})\r\nexport class SlickDropListGrabDirective {\r\n\r\n\tconstructor(el: ElementRef) {\r\n\t\tconst dropListEl = <HTMLElement>el.nativeElement;\r\n\t\tif (dropListEl.classList.contains(\"slick-drop-list-grab\") === false)\r\n\t\t\tdropListEl.classList.add(\"slick-drop-list-grab\");\r\n\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDropListDirective } from \"./slick-drop-list.directive\";\r\nimport { SlickDropListItemDirective } from \"./slick-drop-list-item.directive\";\r\nimport { SlickDropListGrabDirective } from \"./slick-drop-list-grab.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective],\r\n\texports: [SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective]\r\n})\r\nexport class SlickDropListModule { }\r\n\r\nexport { SlickDropListDirective } \r\nexport { SlickDropListItemDirective } \r\nexport { SlickDropListGrabDirective }\r\n","export interface ISlickFileModel {\r\n\tuuid: string;\r\n\tfile: File;\r\n\ttitle: string;\r\n\tname: string;\r\n\tfileDate?: Date;\r\n\tfileDateFormat: string;\r\n\tthumbnailUrl: string;\r\n\turl: string;\r\n\tthumbnailBase64Image: string;\r\n\tbase64Image: string;\r\n isChecked: boolean;\r\n\tparentFolderId: number;\r\n}\r\n\r\nexport class SlickFileModel implements ISlickFileModel {\r\n\tuuid: string;\r\n\tfile: File;\r\n\ttitle: string;\r\n\tname: string;\r\n\tfileDate?: Date;\r\n\tfileDateFormat: string;\r\n\tthumbnailUrl: string;\r\n\turl: string;\r\n\tthumbnailBase64Image: string;\r\n\tbase64Image: string;\r\n isChecked: boolean;\r\n parentFolderId: number;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, HostListener, OnDestroy } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickFileModel, SlickFileModel } from \"../slick-file-model/slick-file.model\";\r\n\r\nconst imgExtensions: string[] = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tif', 'tiff']\r\n\r\n@Component({\r\n\tselector: 'slick-file-drop',\r\n\ttemplateUrl: 'slick-file-drop.component.html'\r\n})\r\nexport class SlickFileDropComponent implements OnDestroy {\r\n\t@Input(\"displayText\") displayText: string = \"Drop Files Here...\";\r\n\t@Output(\"filesChanged\") filesChangedEmitter: EventEmitter<ISlickFileModel[]> = new EventEmitter();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"fileInput\") fileInput: ElementRef;\r\n\r\n\tprivate fnOnFileInputChange = (e) => this.onFileInputChange(e);\r\n\tprivate processFileTimeout: NodeJS.Timer;\r\n\r\n\t@HostListener('click', ['$event'])\r\n\tonClick(e) {\r\n\t\tthis.fileInput.nativeElement.click();\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).removeEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).addEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).removeEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t}\r\n\r\n\tprivate onFileInputChange(e) {\r\n\t\ttry {\r\n\t\t\tthis.processFileTimeout = setTimeout(() => {\r\n\t\t\t\talert(\"Processing files timed out\");\r\n\t\t\t}, 10000);\r\n\r\n\t\t\tthis.processFiles((<HTMLInputElement>this.fileInput.nativeElement).files);\r\n\r\n\t\t\t// A validation to make sure the files all got processed\r\n\t\t\tclearTimeout(this.processFileTimeout);\r\n\t\t\t(<HTMLInputElement>this.fileInput.nativeElement).value = '';\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\talert(\"SlickFileDrop Error: \" + err);\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event'])\r\n\tonDrop(e) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\r\n\t\tthis.processFiles((<DataTransfer>e.dataTransfer).files);\r\n\t}\r\n\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(e) {\r\n\t\tthis.containerRef.nativeElement.classList.add(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(e) {\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(e) {\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\tuuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tprivate async processFiles(files: FileList) {\r\n\t\tlet slickFileModels: ISlickFileModel[] = [];\r\n\t\tlet imageLoadPromises = [];\r\n\r\n\t\tlet imgPromises: Promise<string>[] = [];\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\timageLoadPromises.push(new Promise(async (resolve) => {\r\n\t\t\t\tlet file: File = files.item(i);\r\n\t\t\t\tlet slickFileModel = new SlickFileModel();\r\n\t\t\t\tslickFileModel.uuid = SlickUtilsService.newGuid();\r\n\t\t\t\tslickFileModel.file = file;\r\n\t\t\t\tslickFileModel.name = file.name;\r\n\t\t\t\tslickFileModel.title = file.name;\r\n\r\n\t\t\t\tlet fileNameParts = slickFileModel.name.split('.');\r\n\t\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\r\n\t\t\t\tif (imgExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tlet img = new Image;\r\n\t\t\t\t\timg.onload = () => {\t\r\n\t\t\t\t\t\tslickFileModel.thumbnailBase64Image = this.resizeImageToBase64(img, 60, 60);\r\n\t\t\t\t\t\tslickFileModel.base64Image = this.resizeImageToBase64(img, 1600, 1600);\r\n\t\t\t\t\t\tslickFileModels.push(slickFileModel);\r\n\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\timg.src = await this.getBase64(file);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tslickFileModels.push(slickFileModel);\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\tawait Promise.all(imageLoadPromises);\r\n\t\tthis.filesChangedEmitter.emit(slickFileModels);\r\n\t}\r\n\r\n\tprivate resizeImageToBase64(img: HTMLImageElement, width: number, height: number): string {\r\n\t\tlet scale: number = 1;\r\n\t\tif (img.width > img.height) {\r\n\t\t\tif (img.width > width)\r\n\t\t\t\tscale = width / img.width;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (img.height > height)\r\n\t\t\t\tscale = height / img.height;\r\n\t\t}\r\n\r\n\t\tlet newWidth = img.width * scale;\r\n\t\tlet newHeight = img.height * scale;\r\n\r\n\t\t// We create a canvas and get its context.\r\n\t\tvar canvas = document.createElement('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\t// We set the dimensions at the wanted size.\r\n\t\tcanvas.width = newWidth;\r\n\t\tcanvas.height = newHeight;\r\n\r\n\t\t// We resize the image with the canvas method drawImage();\r\n\t\tctx.drawImage(img, 0, 0, newWidth, newHeight);\r\n\r\n\t\treturn canvas.toDataURL(\"image/jpeg\");\r\n\t}\r\n\r\n\tprivate getBase64(file: File): Promise<string> {\r\n\t\treturn new Promise<string>((resolve, reject) => {\r\n\t\t\t// Capacitor fails on the FileReader, so we need to get _readReader\r\n\t\t\t// See: https://github.com/ionic-team/ionic-native/issues/505#issuecomment-503316333\r\n\t\t\tlet fileReader = new FileReader();\r\n\r\n\t\t\t// Get the original real FileReader. The polyfill saves a reference to it.\r\n\t\t\tconst realFileReader = (fileReader as any)._realReader;\r\n\r\n\t\t\t// Make sure we were able to get the original FileReader \r\n\t\t\tif (realFileReader) {\r\n\t\t\t\t// Swap out the polyfill instance for the original instance.\r\n\t\t\t\tfileReader = realFileReader;\r\n\t\t\t}\r\n\r\n\t\t\tfileReader.readAsDataURL(file);\r\n\t\t\tfileReader.onload = () => resolve(<string>fileReader.result);\r\n\t\t\tfileReader.onerror = (error) => reject('Error: ' + error);\r\n\t\t});\r\n\t}\r\n}\r\n","<p #containerRef id=\"slick-file-drop_{{uuid}}\" class=\"slick-file-drop card\">\r\n\t{{displayText}}\r\n</p>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickFileDropComponent } from \"./slick-file-drop.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickFileDropComponent],\r\n\texports: [CommonModule, FormsModule, SlickFileDropComponent]\r\n})\r\nexport class SlickFileDropModule { }\r\nexport { SlickFileDropComponent }\r\n","export interface ISlickPhotoGalleryModel {\r\n\tphotoUrl: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport class SlickPhotoGalleryModel implements ISlickPhotoGalleryModel {\r\n\tphotoUrl: string;\r\n\ttitle: string;\r\n}","import { Component, Input, ViewChild, ElementRef, OnChanges, SimpleChanges, OnDestroy, HostListener, ChangeDetectorRef } from \"@angular/core\";\r\nimport { ISlickPhotoGalleryModel, SlickPhotoGalleryModel } from \"./slick-photo-gallery.model\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-photo-gallery\",\r\n\ttemplateUrl: \"slick-photo-gallery.component.html\"\r\n})\r\nexport class SlickPhotoGalleryComponent implements OnChanges, OnDestroy {\r\n\t@Input() photos: ISlickPhotoGalleryModel[];\r\n\t@Input() files: ISlickFileModel[];\r\n\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\r\n\t@HostListener('window:keydown', ['$event'])\r\n\tasync onResize(e: KeyboardEvent) {\r\n\t\tif (e.which === 39)\r\n\t\t\tthis.nextPhoto();\r\n\t\telse if (e.which === 37)\r\n\t\t\tthis.previousPhoto();\r\n\t\telse if (e.which === 27)\r\n\t\t\tthis.closeWindow();\r\n\t}\r\n\r\n\tisVisible: boolean = false;\r\n\tisPhotoGalleryVisible: boolean = false;\r\n\tselectedPhoto: ISlickPhotoGalleryModel = null;\r\n\tvisibleIndex: number = 0;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tngOnDestroy() {\r\n\t\t// It's fine if this fails. It just means it was removed elsewhere\r\n\t\ttry {\r\n\t\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.files) {\r\n\t\t\tthis.photos = [];\r\n\t\t\tif (changes.files.currentValue) {\r\n\t\t\t\tthis.photos = changes.files.currentValue.map((f) => {\r\n\t\t\t\t\tlet photoModel = new SlickPhotoGalleryModel();\r\n\t\t\t\t\tphotoModel.photoUrl = f.base64Image || f.url;\r\n\t\t\t\t\tphotoModel.title = f.title;\r\n\t\t\t\t\treturn photoModel;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync showPhotoGallery(visibleIndex: number = 0) {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.isPhotoGalleryVisible = true;\r\n\r\n\t\tthis.visibleIndex = visibleIndex;\r\n\t\tif (this.photos && this.photos.length > 0)\r\n\t\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\thidePhotoGallery() {\r\n\t\t// It's fine if this fails. It just means it was removed elsewhere\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\r\n\t\tthis.isVisible = false;\r\n\t}\r\n\r\n\tpreviousPhoto() {\r\n\t\tif (this.visibleIndex === 0)\r\n\t\t\tthis.visibleIndex = this.photos.length - 1;\r\n\t\telse\r\n\t\t\tthis.visibleIndex--;\r\n\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tnextPhoto() {\r\n\t\tif (this.visibleIndex === this.photos.length - 1)\r\n\t\t\tthis.visibleIndex = 0;\r\n\t\telse\r\n\t\t\tthis.visibleIndex++;\r\n\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tsetPosition(idx: number) {\r\n\t\tthis.visibleIndex = idx;\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tcloseWindow() {\r\n\t\tthis.hidePhotoGallery();\r\n\t}\r\n}","<div #containerRef *ngIf=\"isVisible === true\" class='slick-photo-gallery'>\r\n\t<div class=\"slick-photo-gallery_overlay\" (click)=\"closeWindow()\" [ngClass]=\"{'visible': isPhotoGalleryVisible === true}\"></div>\r\n\t<div class=\"modal-content slick-photo-gallery_content\" style=\"width: 90%; margin-left: 5%;\" *ngIf=\"isPhotoGalleryVisible === true\">\r\n\t\t<div class=\"modal-header slick-photo-gallery_header\"><div class=\"header-right\" (click)='closeWindow()'><i class=\"far fa-times\"></i></div></div>\r\n\t\t<div class=\"modal-body\">\r\n\t\t\t<div *ngIf=\"selectedPhoto\" class='slick-photo-gallery_photo-container'>\r\n\t\t\t\t<img class='slick-photo-gallery_photo' [src]='selectedPhoto.photoUrl' />\r\n\t\t\t</div>\r\n\t\t\t<div (click)='previousPhoto()' class='slick-photo-gallery_previous-photo'><i class='far fa-chevron-left'></i></div>\r\n\t\t\t<div (click)='nextPhoto()' class='slick-photo-gallery_next-photo'><i class='far fa-chevron-right'></i></div>\r\n\t\t\t<!--<div *ngIf=\"photos\" class='slick-photo-gallery_position-indicators'>\r\n\t\t\t\t<i (click)='setPosition(index)' *ngFor='let photo of photos; let index = index' [ngClass]='(index === visibleIndex) ? \"fas fa-circle\" : \"far fa-circle\"'></i>\r\n\t\t\t</div>-->\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, ViewChild, EventEmitter, OnChanges, SimpleChanges, OnDestroy, ElementRef, HostBinding } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport moment from \"moment\";\r\n\r\nconst excelExtensions: string[] = ['xls', 'xlt', 'xlm', 'xlsx', 'xlsm', 'xltx', 'xltm', 'xlsb', 'xla', 'xlam', 'xll', 'xlw'];\r\nconst wordExtensions: string[] = ['doc', 'dot', 'wbk', 'docx', 'docm', 'dotx', 'dotm', 'docb'];\r\nconst pdfExtensions: string[] = ['pdf'];\r\n\r\n@Component({\r\n\tselector: 'slick-file-list-item',\r\n\ttemplateUrl: 'slick-file-list-item.component.html'\r\n})\r\nexport class SlickFileListItemComponent implements OnChanges, OnDestroy {\r\n\t@Input(\"file\") file: ISlickFileModel;\t\r\n\t@Input(\"allowDelete\") allowDelete: boolean = true;\r\n\t@Input(\"showPhotoGallery\") showPhotoGallery: boolean = false;\r\n\t@Input(\"showCheckbox\") showCheckbox: boolean = false;\r\n\t@Input(\"thumbnailSize\") thumbnailSize: number;\r\n\t@Input(\"confirmDelete\") confirmDelete: boolean = true;\r\n\t@Output(\"fileChange\") fileChangeEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"fileDelete\") fileDeleteEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"fileClicked\") fileClicked: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"checkChanged\") checkChanged: EventEmitter<MouseEvent> = new EventEmitter();\r\n\r\n\t@ViewChild(\"titleDivRef\") titleDivRef: ElementRef;\r\n\t@ViewChild(\"editTitleDivRef\") editTitleDivRef: ElementRef;\r\n\t@ViewChild(\"editTitleInputRef\") editTitleInputRef: ElementRef;\r\n\t@ViewChild(\"deleteConfirmRef\") deleteConfirmRef: SlickConfirmDialogComponent;\r\n\r\n\tuuid: string;\r\n\tisEditing: boolean = false;\r\n\ttempTitle: string = '';\r\n\tfileDateFormatted: string;\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\titemSize: number = 120;\r\n\titemImgSize: number = 90;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.thumbnailSize) {\r\n\t\t\tthis.itemImgSize = parseInt(this.thumbnailSize.toString());\r\n\t\t\tthis.itemSize = this.itemImgSize + 20;\r\n\t\t}\r\n\r\n\t\tif (changes.allowDelete && changes.allowDelete.currentValue)\r\n\t\t\tthis.allowDelete = (changes.allowDelete.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tif (changes.showPhotoGallery && changes.showPhotoGallery.currentValue)\r\n\t\t\tthis.showPhotoGallery = (changes.showPhotoGallery.currentValue.toString().toLowerCase() !== 'false');\t\r\n\r\n\t\tif (changes.showCheckbox && changes.showCheckbox.currentValue)\r\n\t\t\tthis.showCheckbox = (changes.showCheckbox.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tthis.confirmDelete = (this.confirmDelete.toString() === 'true') ? true : false;\r\n\r\n\t\tif (this.file && this.file.name && !this.file.thumbnailBase64Image && !this.file.url) {\r\n\t\t\tif (this.file.isChecked === null)\r\n\t\t\t\tthis.file.isChecked = false;\r\n\r\n\t\t\tlet fileNameParts = this.file.name.split('.');\r\n\t\t\tif (fileNameParts.length > 1) {\r\n\t\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\r\n\t\t\t\tif (excelExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAAA5CAYAAACI7VO4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhFQjQ5NUJFODUwNzExRTdBRTM4ODhEODFBNTAzMTU3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhFQjQ5NUJGODUwNzExRTdBRTM4ODhEODFBNTAzMTU3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OEVCNDk1QkM4NTA3MTFFN0FFMzg4OEQ4MUE1MDMxNTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OEVCNDk1QkQ4NTA3MTFFN0FFMzg4OEQ4MUE1MDMxNTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7t+5xAAAAdSklEQVR42sxb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (wordExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA7CAYAAAAn+enKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzODkyMUVBODUwNzExRTc5MjkxQTlBRjg4QzFEQjY1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzODkyMUVCODUwNzExRTc5MjkxQTlBRjg4QzFEQjY1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjM4OTIxRTg4NTA3MTFFNzkyOTFBOUFGODhDMURCNjUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjM4OTIxRTk4NTA3MTFFNzkyOTFBOUFGODhDMURCNjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4T4+oBAAAaRklEQVR42sxb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (pdfExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYyRUQwREYxODUwODExRTdBN0NCQUZBNUY3NDBGRUMwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYyRUQwREYyODUwODExRTdBN0NCQUZBNUY3NDBGRUMwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjJFRDBERUY4NTA4MTFFN0E3Q0JBRkE1Rjc0MEZFQzAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjJFRDBERjA4NTA4MTFFN0E3Q0JBRkE1Rjc0MEZFQzAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6x4oA3AAATPklEQVR42tRb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAA8CAYAAAAgwDn8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0OEFBMUY4ODUwQTExRTdCRTBEODA1RTkwQkYwRkEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA0OEFBMUY5ODUwQTExRTdCRTBEODA1RTkwQkYwRkEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ4QUExRjY4NTBBMTFFN0JFMEQ4MDVFOTBCRjBGQTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDQ4QUExRjc4NTBBMTFFN0JFMEQ4MDVFOTBCRjBGQTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4yP5ieAAAFD0lEQVR42uxayUsbURh/iaPGfQsKerGuuCAFL54KIip6sVIEe5MeRJHqX9NelCq1SCuFGoPiUpeDoh4UxZPe3SO4a+LW93v6hsmQmJkks0jzwTCTOGa+37f83vd9byxTU1NVa2trPx4fH6OsVuuNxWIh9NpKnoRePtrpOZ4ed/SaSEX+OVi5v7+30VN0RUXFp+zs7P7r62sSFRVFoqOjSVxcHLvGIQgCgX5SEdbX14f29vbeJCQkeP1BfqMvUXKPEsHvuN1usri4+K2qqiouLy/v69XVlaL/FS4uLuypqamiMrBquCyrRKjX2RkGvLm5IUtLS1+opT35+fl9SkAIcNPt7S0DgB87Pz9n1uA/rJXASHhGcnIyO+OzzWYjCJ+FhYVefFdUVNQHXV4E8Bzz5OHhgVmgrq6OFBQUEOoZTQHExsYyY01MTLBnxcTEMD3i4+PJ5eUlmZub66XfucvKygbPzs78A+AxCAA0mQh1HcnNzdUlfOD52dlZ9mxcw9rwCMIJIKanp79TEJ6SkpJfp6envkOQxzsHcXd3p1v8Q2k8D8rScCHl5eXk4OCA6cFJZWxs7OfW1taHjIwMn2FtJSYQJGtiYiJpa2tjIHZ2dlg4JSUlMcM6HI7fm5ubH9PT01mogVI5GFMA4OQB6ezs9AIBYFB4dHR0iFL+e1wj0eE90wCQS1dXF6FxT3Z3d0UQYEun0/lndXW1EbkKrzEm05PzlQqsDBCFhYUiCOQEwolS7JjL5apJS0t7AkBMKrB4d3c3o3RaKbDvkBOw/uTk5N/9/f13LLHNoCxf1HyB6OnpIcXFxeTo6EgEgfVqZGRkhubJW9N4wF9dBRAdHR2MZrGggWJR+ng8HoGy00/BDMqnpKQw1hkYGGAKSvMSIYN4h4cABoJ7sODRFTxbXImNSGY8E2UEQoLGNNne3hZDSeoRzkSolaA8khxnlCOC0WyTk5PDlEPdD2vLew1eHeMAKIDFfRygoQBg0fb2dvEzrOoPAJoZHP39/WRjY4OFleEAuBd8XfsTlBJSoKZdB/wJij9pfrw6AHK6fXUATFlO/9cAArIQuqXl5WVGZUpYIpxNDlpb2hOHBgD1x/DwMAOAlU8vQfGGAUPIAGB1u93OAICD9WQbVJ6BWCggACzbsIbeHjg8PCQvjVMUA0An1NDQoHilDJcg99CRhQwAZWtzc3OERg2l0ZWVFU1CiA+00PdqBkBLGkWz3traqgqAvPFSRKPo/rWgUVSWGOaqLb+lIBTRqMvl0sQDoEqEkaqkfR7FKwaAdq+xsVGTHMA4ERM4tX20dDELCACrYVNTU4RGDaNRuHlmZkZsrLUUTBwwQq+pqQkvgPHxcV1qoZOTE7ZDFFYAsHpmZqYu1SgMBMoOVKWqplHQnV4e8FVCh1yN1tbW6pID2HkJ5IGgqtGWlpYIjRpGo5gez8/PB70S8+a8srLSuHXA6XQGncRoR6urq8MKQFUpEWpT7685D0VU0+jx8XFAAPINCakHlL46o7QaVRVCsB56YnkVKFdUOs+Xjr9RLqutOFXnwEvbSyin6+vrIzQaAeAPQLjeezPcA3y3XM/pWzDit6mH8jiw4Yz6R8lcUldLU92wFQu9pHTuBQAjDjQvDodD85f+gl3AAAJbrJyqBemYAmds58NNZswNHuZeIUQR3WObH3z/GsTj8YgrP6oEobS09DONq0GbzXaLV49fCflY3G53YlZW1sI/AQYA/aOxmPzI7uUAAAAASUVORK5CYII=\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.file && this.file.fileDate) {\r\n\t\t\tconst fileDateFormat = (this.file.fileDateFormat ?? '') !== '' ? this.file.fileDateFormat : 'M/D/YYYY h:mm:ss a';\r\n\t\t\tthis.fileDateFormatted = moment(this.file.fileDate).format(fileDateFormat);\r\n\t\t}\r\n\t}\r\n\r\n\tonClick() {\r\n\t\tif (this.fileClicked)\r\n\t\t\tthis.fileClicked.emit(this.file);\r\n\t}\r\n\r\n\tasync deleteFile(e: Event) {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.confirmDelete === false) {\r\n\t\t\tthis.fileDeleteEmitter.emit(this.file);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst result: SlickConfirmDialogResults = await this.deleteConfirmRef.confirm();\r\n\r\n\t\t\tif (result === SlickConfirmDialogResults.Ok)\r\n\t\t\t\tthis.fileDeleteEmitter.emit(this.file);\r\n\t\t}\r\n\t}\r\n\r\n\tasync editTitle() {\r\n\t\tthis.isEditing = true;\r\n\t\tthis.tempTitle = this.file.title;\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.editTitleInputRef.nativeElement.setSelectionRange(0, this.editTitleInputRef.nativeElement.value.length)\r\n\t\tthis.editTitleInputRef.nativeElement.focus();\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tonKeyDown(e: KeyboardEvent) {\r\n\t\tif (e.which === 13) {\r\n\t\t\tthis.file.title = this.tempTitle;\r\n\t\t\tthis.fileChangeEmitter.emit(this.file);\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.tempTitle = null;\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\t}\r\n\r\n\tasync documentClick(e: MouseEvent) {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tconst clickedInside = SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, 'slick-file-list-item_title')\r\n\t\tif (clickedInside)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isEditing === true) {\r\n\t\t\tthis.file.title = this.tempTitle;\r\n\t\t\tthis.fileChangeEmitter.emit(this.file);\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onCheckboxClicked(e: MouseEvent) {\r\n\t\tthis.file.isChecked = !this.file.isChecked;\r\n\t\tif (this.checkChanged)\r\n\t\t\tthis.checkChanged.emit(e);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n}\r\n","<div class=\"slick-file-list-item\" id=\"slick-file-list-item_{{uuid}}\">\r\n\t<div class=\"slick-file-list-item_img card\" (click)=\"onClick()\" [ngStyle]=\"{ 'cursor': (showPhotoGallery === true) ? 'pointer' : 'default' }\" [style.minHeight.px]=\"itemSize + 2\" [style.minWidth.px]=\"itemSize\">\r\n\t\t<img *ngIf=\"file.thumbnailBase64Image\" [src]=\"file.thumbnailBase64Image\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && file.base64Image\" [src]=\"file.base64Image\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && !file.base64Image && file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && !file.base64Image && !file.thumbnailUrl && file.url\" [src]=\"file.url\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<i *ngIf=\"allowDelete\" class=\"fas fa-times-circle bg-white text-danger\" (click)=\"deleteFile($event)\"></i>\r\n\t</div>\r\n\t<div class=\"slick-file-list-item_title\" *ngIf=\"fileDateFormatted\" [style.minWidth.px]=\"itemSize\" [style.maxWidth.px]=\"itemSize\">\r\n\t\t<div class=\"slick-file-list-item_date\" *ngIf=\"fileDateFormatted\" [style.minWidth.px]=\"itemSize\">{{fileDateFormatted}}</div>\r\n\t</div>\r\n\t<div class=\"slick-file-list-item_title\" [style.minWidth.px]=\"itemSize\" [style.maxWidth.px]=\"itemSize\">\r\n\t\t<div class=\"slick-file-list-item_display-title\" #titleDivRef style=\"cursor: pointer\" *ngIf=\"!isEditing\" (click)=\"editTitle()\">{{file.title}}</div>\r\n\t\t<div #editTitleDivRef class=\"slick-file-list-item_edit-title\" *ngIf=\"isEditing\"><input #editTitleInputRef type=\"text\" class=\"form-control\" [(ngModel)]=\"tempTitle\" (keydown)=\"onKeyDown($event)\" [style.width.px]=\"itemSize\" /></div>\r\n\t</div>\r\n\r\n\t<!-- We want the user to be able to click just a little outside of the checkbox and still have it check -->\r\n\t<div *ngIf=\"showCheckbox === true\" class=\"slick-file-checkbox\" (click)=\"onCheckboxClicked($event)\">\r\n\t\t<input type=\"checkbox\" [ngModel]=\"file.isChecked\" />\r\n\t</div>\r\n</div>\r\n\r\n<slick-confirm-dialog #deleteConfirmRef>\r\n\t<h4 class=\"p-0 m-0 text-danger\">Are you sure you want to delete?</h4>\r\n</slick-confirm-dialog>","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickPhotoGalleryComponent, SlickPhotoGalleryModel } from \"../slick-photo-gallery/slick-photo-gallery.module\";\r\n\r\n@Component({\r\n\tselector: 'slick-file-list',\r\n\ttemplateUrl: 'slick-file-list.component.html'\r\n})\r\nexport class SlickFileListComponent implements OnChanges {\r\n\t@Input(\"files\") files: ISlickFileModel[];\r\n\t@Input(\"allowDelete\") allowDelete: boolean = true;\r\n\t@Input(\"showPhotoGallery\") showPhotoGallery: boolean = false;\r\n\t@Input(\"showCheckboxes\") showCheckboxes: boolean = false;\r\n\t@Input(\"thumbnailSize\") thumbnailSize: number = 90;\r\n\t@Input(\"confirmDelete\") confirmDelete: boolean = true;\r\n\t@Output(\"filesEmitter\") filesEmitter: EventEmitter<ISlickFileModel[]> = new EventEmitter();\r\n\t@Output(\"onFileDelete\") onFileDeleteEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"onFileCheckChanged\") onFileCheckChanged: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"onFileClicked\") onFileClicked: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\r\n\t@ViewChild(\"photoGalleryRef\") photoGalleryRef: SlickPhotoGalleryComponent;\r\n\r\n\tphotos: SlickPhotoGalleryModel[] = [];\r\n\tuuid: string;\r\n\r\n\tprivate lastCheckedIdx: number = null;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.thumbnailSize)\r\n\t\t\tthis.thumbnailSize = parseInt(this.thumbnailSize.toString());\r\n\r\n\t\tif (changes.allowDelete && changes.allowDelete.currentValue)\r\n\t\t\tthis.allowDelete = (changes.allowDelete.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.showPhotoGallery && changes.showPhotoGallery.currentValue)\r\n\t\t\tthis.showPhotoGallery = (changes.showPhotoGallery.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.showCheckboxes && changes.showCheckboxes.currentValue)\r\n\t\t\tthis.showCheckboxes = (changes.showCheckboxes.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.deleteConfirmation && changes.deleteConfirmation.currentValue)\r\n\t\t\tthis.confirmDelete = (this.confirmDelete.toString() === 'true') ? true : false;\r\n\t}\r\n\r\n\tfileClicked(file: ISlickFileModel, idx: number) {\r\n\t\tif (this.showPhotoGallery === true) {\r\n\t\t\tthis.photoGalleryRef.showPhotoGallery(idx);\r\n\t\t}\r\n\r\n\t\tif (this.onFileClicked)\r\n\t\t\tthis.onFileClicked.emit(file);\r\n\t}\r\n\r\n\tonFileChange(file: ISlickFileModel, idx: number) {\r\n\t\tthis.files[idx] = file;\r\n\t\tthis.filesEmitter.emit(this.files);\r\n\t}\r\n\r\n\tasync onFileDelete(file: ISlickFileModel, idx) {\r\n\t\tthis.files.splice(idx, 1);\r\n\t\tthis.filesEmitter.emit(this.files);\r\n\t\tif (this.onFileDeleteEmitter)\r\n\t\t\tthis.onFileDeleteEmitter.emit(file);\r\n\t}\r\n\r\n\tasync onCheckChanged(e: MouseEvent, fileIdx: number) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (e.shiftKey === true && this.lastCheckedIdx !== null) {\r\n\t\t\tlet startIdx = (this.lastCheckedIdx < fileIdx) ? this.lastCheckedIdx : fileIdx;\r\n\t\t\tlet endIdx = (this.lastCheckedIdx < fileIdx) ? fileIdx : this.lastCheckedIdx;\r\n\r\n\t\t\tfor (let i = startIdx; i <= endIdx; i++) {\r\n\t\t\t\tthis.files[i].isChecked = true;\r\n\t\t\t\tif (this.onFileCheckChanged)\r\n\t\t\t\t\tthis.onFileCheckChanged.emit(this.files[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.lastCheckedIdx = fileIdx;\r\n\t\t\tif (this.onFileCheckChanged)\r\n\t\t\t\tthis.onFileCheckChanged.emit(this.files[fileIdx]);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tcheckAllFiles() {\r\n\t\tthis.files.forEach(x => {\r\n\t\t\tif (x.isChecked === false && this.onFileCheckChanged) {\r\n\t\t\t\tx.isChecked = true;\r\n\t\t\t\tthis.onFileCheckChanged.emit(x);\r\n\t\t\t}\r\n\r\n\t\t\tx.isChecked = true;\r\n\t\t});\r\n\t}\r\n\r\n\tuncheckAllFiles() {\r\n\t\tthis.files.forEach(x => {\r\n\t\t\tif (x.isChecked === true && this.onFileCheckChanged) {\r\n\t\t\t\tx.isChecked = false;\r\n\t\t\t\tthis.onFileCheckChanged.emit(x);\r\n\t\t\t}\r\n\r\n\t\t\tx.isChecked = false;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCheckedFiles(): ISlickFileModel[] {\r\n\t\treturn this.files.filter(x => x.isChecked === true);\r\n\t}\r\n}\r\n","<div #containerRef id=\"slick-file-list_{{uuid}}\" class=\"slick-file-list\">\r\n\t<slick-file-list-item *ngFor=\"let file of files; let idx = index\" \r\n\t\t\t\t\t\t [file]=\"file\" \r\n\t\t\t\t\t\t [allowDelete]=\"allowDelete\" \r\n\t\t\t\t\t\t [showPhotoGallery]=\"showPhotoGallery\" \r\n\t\t\t\t\t\t [showCheckbox]=\"showCheckboxes\" \r\n\t\t\t\t\t\t [thumbnailSize]=\"thumbnailSize\" \r\n\t\t\t\t\t\t [confirmDelete]=\"confirmDelete\"\r\n\t\t\t\t\t\t (checkChanged)=\"onCheckChanged($event, idx)\" \r\n\t\t\t\t\t\t (fileClicked)=\"fileClicked($event, idx)\" \r\n\t\t\t\t\t\t (fileChanged)=\"onFileChange($event, idx)\" \r\n\t\t\t\t\t\t (fileDelete)=\"onFileDelete($event, idx)\"></slick-file-list-item>\r\n</div>\r\n\r\n<slick-photo-gallery #photoGalleryRef *ngIf=\"showPhotoGallery === true\" [files]=\"files\"></slick-photo-gallery>\r\n\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPhotoGalleryComponent } from \"./slick-photo-gallery.component\";\r\nimport { SlickPhotoGalleryModel } from \"./slick-photo-gallery.model\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickPhotoGalleryComponent],\r\n\tdeclarations: [SlickPhotoGalleryComponent]\r\n})\r\nexport class SlickPhotoGalleryModule { }\r\n\r\nexport { SlickPhotoGalleryComponent }\r\nexport { SlickPhotoGalleryModel }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickFileListComponent } from \"./slick-file-list.component\";\r\nimport { SlickFileListItemComponent } from \"./slick-file-list-item.component\";\r\nimport { SlickPhotoGalleryModule } from \"../slick-photo-gallery/slick-photo-gallery.module\";\r\nimport { SlickConfirmDialogModule } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickConfirmDialogModule, SlickPhotoGalleryModule],\r\n\tdeclarations: [SlickFileListComponent, SlickFileListItemComponent],\r\n\texports: [CommonModule, FormsModule, SlickFileListComponent]\r\n})\r\nexport class SlickFileListModule { }\r\n\r\nexport { SlickFileListComponent }\r\n","export interface ISlickEmailerAddressModel {\r\n\tcontactId: number;\r\n\tdisplayName: string;\r\n\temailAddress: string;\r\n}\r\n\r\nexport class SlickEmailerAddressModel implements ISlickEmailerAddressModel {\r\n\tcontactId: number;\r\n\tdisplayName: string;\r\n\temailAddress: string;\r\n}\r\n","import { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, OnDestroy, ChangeDetectorRef, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerModel, } from \"./slick-emailer.model\";\r\nimport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n@Component({\r\n\tselector: 'slick-emailer',\r\n\ttemplateUrl: 'slick-emailer.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailerComponent),\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\tSlickFunctionLockService\r\n\t]\r\n})\r\nexport class SlickEmailerComponent implements AfterViewInit, OnDestroy {\r\n\t@Input(\"toEmailAddressList\") toEmailAddressList: ISlickEmailerAddressModel[];\r\n\t@Input(\"showButtons\") showButtons: boolean = true;\r\n\t@Input(\"bodyHeight\") bodyHeight: string = \"180px\";\r\n\t@Output(\"toAddressSearch\") toAddressSearchEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@Output(\"sendEmailClick\") sendEmailClickEmitter: EventEmitter<ISlickEmailerModel> = new EventEmitter();\r\n\t@Output(\"cancelEmailClick\") cancelEmailClickEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"tinyMCEContainerRef\") tinyMCEContainerRef: ElementRef;\r\n\r\n\temailerModel: ISlickEmailerModel;\r\n\tisSubmitted: boolean = false;\r\n\r\n\tuuid: string;\r\n\ttinyMCEUuid: string;\r\n\ttinyMCEInitialized: boolean = false;\r\n\ttoEmailAddress: string;\r\n\teditor: any;\r\n\tspinnerStatus: string = null;\r\n\r\n\tconstructor(private slickFunctionLockService: SlickFunctionLockService, private changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.removeTinyMCE();\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic async writeValue(obj: ISlickEmailerModel) {\r\n\t\tif (obj) {\r\n\t\t\tthis.spinnerStatus = \"reset\";\r\n\t\t\tthis.emailerModel = obj;\r\n\r\n\t\t\tif (!this.emailerModel.attachments)\r\n\t\t\t\tthis.emailerModel.attachments = [];\r\n\r\n\t\t\tif (!this.emailerModel.toEmailAddresses)\r\n\t\t\t\tthis.emailerModel.toEmailAddresses = [];\t\t\t\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.emailerModel = null;\r\n\t\t}\r\n\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\ttoAddressSearch(searchText) {\r\n\t\tthis.toAddressSearchEmitter.emit(searchText);\r\n\t}\r\n\r\n\tonSelectEmailAddress(emailerAddressModel: ISlickEmailerAddressModel) {\r\n\t\tthis.emailerModel.toEmailAddresses.push(emailerAddressModel);\r\n\r\n\t\tthis.toEmailAddress = null;\r\n\t}\r\n\r\n\tonFreeformTextSelect(text: string) {\r\n\t\tconst freeformEmailAddress = new SlickEmailerAddressModel();\r\n\t\tfreeformEmailAddress.displayName = text;\r\n\t\tfreeformEmailAddress.emailAddress = text;\r\n\r\n\t\tthis.emailerModel.toEmailAddresses.push(freeformEmailAddress);\r\n\t\tthis.toEmailAddress = null;\r\n\t}\r\n\r\n\tdeleteEmailAddress(idx: number) {\r\n\t\tthis.emailerModel.toEmailAddresses.splice(idx, 1);\r\n\t}\r\n\r\n\tonAttachmentsChanged(attachments: ISlickFileModel[]) {\r\n\t\tthis.emailerModel.attachments = this.emailerModel.attachments.concat(attachments);\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.isSubmitted = true;\r\n\t\tif (this.emailerModel.toEmailAddresses.length === 0)\r\n\t\t\treturn false;\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetEmailAddresses(emailerModel: ISlickEmailerModel): ISlickEmailerAddressModel[] {\r\n\t\tlet slickEmailerAddresses = emailerModel.toEmailAddresses || [];\r\n\r\n\t\tif (this.toEmailAddress) {\r\n\t\t\tconst scrubbedToEmailAddress = this.toEmailAddress.replace(\",\", \";\").replace(/\\s/g, \";\");\r\n\t\t\tconst emailAddressesToAddStrings = scrubbedToEmailAddress.split(\";\").filter(x => x !== '');\r\n\t\t\tconst emailAddressesToAdd = emailAddressesToAddStrings.map(x => {\r\n\t\t\t\tconst slickEmailerAddressModel = new SlickEmailerAddressModel();\r\n\t\t\t\tslickEmailerAddressModel.contactId = 0;\r\n\t\t\t\tslickEmailerAddressModel.displayName = x;\r\n\t\t\t\tslickEmailerAddressModel.emailAddress = x;\r\n\t\t\t\treturn slickEmailerAddressModel;\r\n\t\t\t});\r\n\t\t\tslickEmailerAddresses = slickEmailerAddresses.concat(emailAddressesToAdd);\r\n\t\t}\r\n\r\n\t\tthis.toEmailAddress = null;\r\n\r\n\t\treturn slickEmailerAddresses;\r\n\t}\r\n\r\n\tasync setBody(body: string) {\r\n\t\ttry {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"SLICK_EMAILER_SET_BODY\");\r\n\r\n\t\t\tawait this.initTinyMCE();\r\n\t\t\tconst tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);\r\n\r\n\t\t\tif (!tinyMCE)\r\n\t\t\t\tconsole.error(\"tinyMCE not initialized\");\r\n\r\n\t\t\ttinyMCE.setContent(body);\r\n\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_SET_BODY\");\r\n\t\t}\r\n\t}\r\n\r\n\tgetBody() {\r\n\t\treturn tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).getContent();\r\n\t}\r\n\r\n\tonSendEmail() {\r\n\t\tthis.emailerModel.toEmailAddresses = this.getEmailAddresses(this.emailerModel);\r\n\r\n\t\tif (this.validate() === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.emailerModel.body = this.getBody();\r\n\t\tthis.spinnerStatus = \"spin\";\r\n\t\tif (this.sendEmailClickEmitter)\r\n\t\t\tthis.sendEmailClickEmitter.emit(this.emailerModel);\r\n\t}\r\n\r\n\temailSent() {\r\n\t\tthis.spinnerStatus = \"ok\";\r\n\t}\r\n\r\n\temailError() {\r\n\t\tthis.spinnerStatus = \"error\";\r\n\t}\r\n\r\n\tonCancelEmail() {\r\n\t\tif (this.cancelEmailClickEmitter)\r\n\t\t\tthis.cancelEmailClickEmitter.emit();\r\n\t}\r\n\r\n\tasync dialogInit() {\r\n\t\tthis.removeTinyMCE();\r\n\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\tasync initTinyMCE(): Promise<void> {\r\n\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\r\n\t\t\tif (this.tinyMCEUuid) {\r\n\t\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.tinyMCEUuid = SlickUtilsService.newGuid();\r\n\r\n\t\t\t\tconst tinyMCEContainer = <HTMLDivElement>this.tinyMCEContainerRef.nativeElement;\r\n\t\t\t\tconst tinyMCETextarea = document.createElement(\"textarea\");\r\n\t\t\t\ttinyMCETextarea.id = `emailer_tinymce_${this.tinyMCEUuid}`;\r\n\t\t\t\ttinyMCETextarea.style.minHeight = \"300px\";\r\n\t\t\t\ttinyMCETextarea.style.maxHeight = \"300px\";\r\n\t\t\t\ttinyMCEContainer.appendChild(tinyMCETextarea);\r\n\r\n\t\t\t\ttinymce.init({\r\n\t\t\t\t\tselector: `#emailer_tinymce_${this.tinyMCEUuid}`,\r\n\t\t\t\t\tbranding: false,\r\n\t\t\t\t\tmenubar: 'edit insert format tools',\r\n\t\t\t\t\tplugins: 'link image imagetools code',\r\n\t\t\t\t\ttoolbar: 'fontselect | fontsizeselect | styleselect | bold italic underline | indent outdent | bullist | alignleft aligncenter alignright | code | image',\r\n\t\t\t\t\tfontsize_formats: \"8px 10px 12px 14px 18px 24px 36px\",\r\n\t\t\t\t\theight: this.bodyHeight,\r\n\t\t\t\t\tconvert_urls: false,\r\n\t\t\t\t\tsetup: (ed) => {\r\n\t\t\t\t\t\ted.on('init', (args) => {\r\n\r\n\t\t\t\t\t\t\ted.setContent((this.emailerModel) ? (this.emailerModel.body || '') : '');\r\n\t\t\t\t\t\t\tthis.tinyMCEInitialized = true;\r\n\t\t\t\t\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync removeTinyMCE() {\r\n\t\tif (this.tinyMCEUuid) {\r\n\t\t\tconst tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);\r\n\r\n\t\t\tif (tinyMCE)\r\n\t\t\t\ttinyMCE.remove();\r\n\r\n\t\t\tconst tinyMCEContainer = <HTMLDivElement>this.tinyMCEContainerRef.nativeElement;\r\n\t\t\ttinyMCEContainer.innerHTML = \"\";\r\n\r\n\t\t\tthis.tinyMCEInitialized = false;\r\n\r\n\t\t\tthis.tinyMCEUuid = null;\r\n\t\t}\r\n\t}\r\n}\r\n","<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n <div class=\"input-group\">\r\n <span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n <input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n </div>\r\n <slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n <ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n <div style='line-height: 1.1em; font-size: 12px;'>\r\n {{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n </div>\r\n </ng-template>\r\n </slick-auto-complete>\r\n\r\n <label>To: </label>\r\n <div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ms-1\"></i></div>\r\n </div>\r\n </div>\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Subject:</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Body:</label>\r\n <div #tinyMCEContainerRef></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Attachments:</label>\r\n <slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n <slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showButtons\" class=\"row form-group\">\r\n <div class=\"col-12 text-center\">\r\n <button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n <button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ViewChild, forwardRef, ChangeDetectorRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { SlickEmailerComponent } from \"./slick-emailer.component\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerModel, } from \"./slick-emailer.model\";\r\nimport { ISlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n@Component({\r\n\tselector: 'slick-emailer-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='Send Email' [width]='800' (onClose)='onCancelEmail()' #emailerDialogRef>\r\n\t\t<slick-emailer #emailerRef [(ngModel)]='dialogEmailerModel'\r\n\t\t\t\t\t[bodyHeight]='bodyHeight'\r\n\t\t\t\t\t[showButtons]='false'\r\n\t\t\t\t\t[toEmailAddressList]='toEmailAddressList' \r\n\t\t\t (toAddressSearch)='toAddressSearch($event)'>\r\n\t\t</slick-emailer>\r\n\r\n\t\t<slick-dialog-footer>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</slick-dialog-footer>\r\n\t</slick-dialog>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailerDialogComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailerDialogComponent {\r\n\t@Input(\"toEmailAddressList\") toEmailAddressList: ISlickEmailerAddressModel[];\r\n\t@Input(\"bodyHeight\") bodyHeight: string = \"180px\";\r\n\t@Output(\"toAddressSearch\") toAddressSearchEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@Output(\"sendEmailClick\") sendEmailClickEmitter: EventEmitter<ISlickEmailerModel> = new EventEmitter();\r\n\t@Output(\"cancelEmailClick\") cancelEmailClickEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"emailerDialogRef\") emailerDialogRef: SlickDialogComponent;\r\n\t@ViewChild(\"emailerRef\") emailerRef: SlickEmailerComponent;\r\n\r\n\tdialogEmailerModel: ISlickEmailerModel;\r\n\temailerModel: ISlickEmailerModel;\r\n\tspinnerStatus: string = null;\r\n\tisVisible = false;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tpropagateChange = (_: ISlickEmailerModel) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tasync showDialog() {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tthis.dialogEmailerModel = this.emailerModel;\r\n\t\tthis.emailerRef.isSubmitted = false;\r\n\t\tthis.spinnerStatus = \"reset\";\r\n\t\tthis.emailerRef.dialogInit();\r\n\t\tthis.emailerDialogRef.showDialog();\r\n\t}\r\n\r\n\ttoAddressSearch(searchText) {\r\n\t\tthis.toAddressSearchEmitter.emit(searchText);\r\n\t}\r\n\r\n\tonSendEmail() {\r\n\t\tthis.dialogEmailerModel.toEmailAddresses = this.emailerRef.getEmailAddresses(this.dialogEmailerModel);\r\n\t\tif (this.emailerRef.validate() === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.dialogEmailerModel.body = this.emailerRef.getBody();\r\n\t\tthis.spinnerStatus = \"spin\";\r\n\r\n\t\tif (this.sendEmailClickEmitter)\r\n\t\t\tthis.sendEmailClickEmitter.emit(this.dialogEmailerModel);\r\n\t}\r\n\r\n\tasync emailSent() {\r\n\t\ttry {\r\n\t\t\tthis.spinnerStatus = \"ok\";\r\n\t\t\tthis.emailerRef.emailSent();\r\n\t\t\tthis.emailerDialogRef.hideDialog();\r\n\t\t\tawait SlickSleepService.sleep(500);\r\n\t\t\tthis.emailerRef.removeTinyMCE();\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\tthis.spinnerStatus = \"error\";\r\n\t\t}\r\n\r\n\t}\r\n\r\n\temailError() {\r\n\t\tthis.spinnerStatus = \"error\";\r\n\t}\r\n\r\n\tasync onCancelEmail() {\r\n\t\tthis.spinnerStatus = \"reset\";\r\n\t\tthis.emailerRef.removeTinyMCE();\r\n\t\tthis.emailerDialogRef.hideDialog();\r\n\t\tif (this.cancelEmailClickEmitter)\r\n\t\t\tthis.cancelEmailClickEmitter.emit();\r\n\t}\r\n}\r\n","import { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n\r\nexport interface ISlickEmailerModel {\r\n\tuuid: string;\r\n\ttoEmailAddresses: ISlickEmailerAddressModel[];\r\n\tsubject: string;\r\n\tbody: string;\r\n\tattachments: ISlickFileModel[];\r\n}\r\n\r\nexport class SlickEmailerModel implements ISlickEmailerModel {\r\n\tuuid: string;\r\n\ttoEmailAddresses: ISlickEmailerAddressModel[];\r\n\tsubject: string;\r\n\tbody: string;\r\n\tattachments: ISlickFileModel[];\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickAutoCompleteModule } from \"../slick-auto-complete/slick-auto-complete.module\";\r\nimport { SlickButtonSpinnerModule } from \"../slick-button-spinner/slick-button-spinner.module\";\r\nimport { SlickFileDropModule } from \"../slick-file-drop/slick-file-drop.module\";\r\nimport { SlickFileListModule } from \"../slick-file-list/slick-file-list.module\";\r\nimport { SlickEmailerComponent } from \"./slick-emailer.component\";\r\nimport { SlickEmailerDialogComponent } from \"./slick-emailer-dialog.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule],\r\n\tdeclarations: [SlickEmailerComponent, SlickEmailerDialogComponent],\r\n\texports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent]\r\n})\r\nexport class SlickEmailerModule { }\r\nexport { SlickEmailerComponent }\r\nexport { SlickEmailerDialogComponent }\r\nexport { ISlickEmailerModel, SlickEmailerModel } from \"./slick-emailer.model\";\r\nexport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n","import { Component, forwardRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickEmailerModel, } from \"../slick-emailer/slick-emailer.model\";\r\n\r\n@Component({\r\n\tselector: 'slick-email-viewer',\r\n\ttemplateUrl: 'slick-email-viewer.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailViewerComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailViewerComponent {\r\n\tuuid: string;\r\n\temailerModel: ISlickEmailerModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic async writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\r\n}\r\n","<div *ngIf=\"emailerModel\" id=\"slick-email-viewer_{{uuid}}\" class=\"slick-email-viewer\">\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>To: </label><br />\r\n\t\t\t<div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-email-viewer_email-address card\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Subject:</label><br />\r\n\t\t\t<div class=\"slick-email-viewer_subject card\">{{emailerModel.subject}}</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Body:</label><br />\r\n\t\t\t<div class=\"slick-email-viewer_body card\" [innerHTML]=\"emailerModel.body\"></div>\r\n\t\t\t\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"emailerModel.attachments && emailerModel.attachments.length > 0\" class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Attachments:</label>\r\n\t\t\t<slick-file-list [(files)]=\"emailerModel.attachments\" [allowDelete]=\"false\"></slick-file-list>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, ViewChild, forwardRef, ChangeDetectorRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { ISlickEmailerModel } from \"../slick-emailer/slick-emailer.model\";\r\n\r\n@Component({\r\n\tselector: 'slick-email-viewer-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='View Email' [width]='800' #emailViewerDialogRef>\r\n\t\t<slick-email-viewer [(ngModel)]='emailerModel'></slick-email-viewer>\r\n\r\n\t\t<slick-dialog-footer>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-primary\" (click)=\"onOk()\">Ok</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</slick-dialog-footer>\r\n\t</slick-dialog>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailViewerDialogComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailViewerDialogComponent {\r\n\r\n\t@ViewChild(\"emailViewerDialogRef\") emailViewerDialogRef: SlickDialogComponent;\r\n\r\n\temailerModel: ISlickEmailerModel;\r\n\tisVisible = false;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tpropagateChange = (_: ISlickEmailerModel) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tshowDialog() {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tthis.emailViewerDialogRef.showDialog();\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.isVisible = false;\r\n\r\n\t\tthis.emailViewerDialogRef.hideDialog();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickEmailViewerComponent } from \"./slick-email-viewer.component\";\r\nimport { SlickEmailViewerDialogComponent } from \"./slick-email-viewer-dialog.component\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickFileListModule } from \"../slick-file-list/slick-file-list.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickDialogModule, SlickFileListModule],\r\n\tdeclarations: [SlickEmailViewerComponent, SlickEmailViewerDialogComponent],\r\n\texports: [CommonModule, FormsModule, SlickEmailViewerComponent, SlickEmailViewerDialogComponent]\r\n})\r\nexport class SlickEmailViewerModule { }\r\nexport { SlickEmailViewerComponent }\r\nexport { SlickEmailViewerDialogComponent }\r\nexport { ISlickEmailerModel, SlickEmailerModel } from \"../slick-emailer/slick-emailer.model\";\r\nexport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"../slick-emailer/slick-emailer-address.model\";\r\n","import { Directive, NgZone, ElementRef, Input, Output, EventEmitter, OnInit, OnDestroy } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-google-address-search]'\r\n})\r\nexport class SlickGoogleAddressSearchDirective implements OnInit, OnDestroy {\r\n\t@Input() googleAddressSearch;\r\n\t@Output() googleAddressSearchChange = new EventEmitter<google.maps.places.PlaceResult>();\r\n\t@Output() onGoogleAddressSelect = new EventEmitter<google.maps.places.PlaceResult>();\r\n\r\n\tautocomplete: google.maps.places.Autocomplete;\r\n\r\n\tconstructor(private el: ElementRef, private ngZone: NgZone) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (typeof google === 'undefined' || typeof google.maps === 'undefined') {\r\n\t\t\tconsole.error(\"%c Error: It appears you have not included the google maps scripts. Please see www.slickcomponents.com for instructions on how to add this.\", 'background: red; color: white');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnew google.maps.places.Autocomplete(this.el.nativeElement);\r\n\t\tthis.autocomplete = new google.maps.places.Autocomplete(this.el.nativeElement, {\r\n\t\t\ttypes: []\r\n\t\t});\r\n\t\tthis.autocomplete.addListener(\"place_changed\", () => {\r\n\t\t\t//get the place result\r\n\t\t\tlet place: google.maps.places.PlaceResult = this.autocomplete.getPlace();\r\n\r\n\t\t\t// Google maps kind of sucks. Often times it will strip the house number, but it's there\r\n\t\t\t// in the prediction.\r\n\t\t\t// So take the predictive text and use the house number from that instead\r\n\t\t\tconst sessionToken = new google.maps.places.AutocompleteSessionToken()\r\n\t\t\tconst autocompleteService = new google.maps.places.AutocompleteService();\r\n\t\t\tautocompleteService.getPlacePredictions({\r\n\t\t\t\tinput: this.el.nativeElement.value,\r\n\t\t\t\tsessionToken: sessionToken\r\n\t\t\t}, (predictionAddr) => {\r\n\t\t\t\t// Give control back to angular\r\n\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t// See if we got a prediction back\r\n\t\t\t\t\tif (predictionAddr && predictionAddr.length > 0) {\r\n\t\t\t\t\t\t// See if the original place already has a street #\r\n\t\t\t\t\t\tif (!(place.address_components.find(x => x.types.find(addrType => addrType === 'street_number')))) {\r\n\t\t\t\t\t\t\t// Parse out the prediction addr, by spaces\r\n\t\t\t\t\t\t\tconst preditionAddrParts = predictionAddr[0].structured_formatting.main_text.split(\" \");\r\n\t\t\t\t\t\t\t// If we couldn't parse it, ignore the street\r\n\t\t\t\t\t\t\tif (preditionAddrParts.length > 0) {\r\n\t\t\t\t\t\t\t\t// Add a new \"street_number\" field to the components\r\n\t\t\t\t\t\t\t\tconst streetNumber = preditionAddrParts[0];\r\n\t\t\t\t\t\t\t\tplace.address_components.unshift({\r\n\t\t\t\t\t\t\t\t\tlong_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\tshort_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\ttypes: ['street_number']\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.googleAddressSearchChange)\r\n\t\t\t\t\t\tthis.googleAddressSearchChange.emit(place);\r\n\r\n\t\t\t\t\tif (this.onGoogleAddressSelect)\r\n\t\t\t\t\t\tthis.onGoogleAddressSelect.emit(place);\r\n\r\n\t\t\t\t\tthis.el.nativeElement.value = \"\";\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.autocomplete.unbindAll();\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickGoogleAddressSearchDirective } from \"./slick-google-address-search.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickGoogleAddressSearchDirective],\r\n\texports: [SlickGoogleAddressSearchDirective]\r\n})\r\nexport class SlickGoogleAddressSearchModule { }\r\n\r\nexport { SlickGoogleAddressSearchDirective }","import { Component, Input, OnChanges, OnDestroy, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-google-map\",\r\n\ttemplate:\r\n\t`<div #googleMapRef [style.width]='width' [style.height]='height'></div>`\r\n})\r\nexport class SlickGoogleMapComponent implements OnChanges, OnDestroy {\r\n\t@Input() options: google.maps.MapOptions;\r\n\t@Input() overlays: google.maps.Marker[];\r\n\t@Input() width: string;\r\n\t@Input() height: string;\r\n\t@ViewChild(\"googleMapRef\", { static: true }) googleMapRef: ElementRef;\r\n\r\n\tprivate map: google.maps.Map;\r\n\tprivate currentMarkers: google.maps.Marker[];\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.map = null;\r\n\t}\r\n\r\n\tasync ngOnChanges() {\r\n\t\tif (!this.map)\r\n\t\t\tthis.map = new google.maps.Map(this.googleMapRef.nativeElement, this.options);\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\r\n\t\tthis.map.setOptions(this.options);\r\n\r\n\t\tif (this.currentMarkers)\r\n\t\t\tthis.currentMarkers.forEach(currentMarker => currentMarker.setMap(null));\r\n\r\n\t\tthis.currentMarkers = [];\r\n\t\tif (this.overlays && this.overlays.length > 0) {\r\n\t\t\tthis.overlays.forEach(o => {\r\n\t\t\t\to.setMap(this.map);\r\n\r\n\t\t\t\tthis.currentMarkers.push(o);\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\t\tgoogle.maps.event.trigger(this.map, 'resize')\r\n\t}\r\n}\r\n\t\t","import { Component, Input, ViewChild } from \"@angular/core\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-google-map-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='Map' [width]='600' #googleMapDialogRef>\r\n\t\t<slick-google-map *ngIf='showMap' [options]=\"options\" [overlays]=\"overlays\" [width]=\"'580px'\" [height]=\"'500px'\"></slick-google-map>\r\n\t</slick-dialog>`\r\n})\r\nexport class SlickGoogleMapDialogComponent {\r\n\t@Input() options: google.maps.MapOptions;\r\n\t@Input() overlays: google.maps.Marker[];\r\n\r\n\t@ViewChild(\"googleMapDialogRef\") googleMapDialogRef: SlickDialogComponent;\r\n\r\n\tisVisible: boolean = false;\r\n\tshowMap: boolean = false;\r\n\r\n\tconstructor() { }\r\n\r\n\tasync showDialog(googleMapOptions: google.maps.MapOptions = null, googleMapOverlays: google.maps.Marker[] = null) {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.showMap = true;\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (googleMapOptions) {\r\n\t\t\tthis.options = {};\r\n\t\t\tthis.options = googleMapOptions;\r\n\t\t}\r\n\r\n\t\tif (googleMapOverlays)\r\n\t\t\tthis.overlays = googleMapOverlays;\r\n\r\n\t\tthis.googleMapDialogRef.showDialog();\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.options = null\r\n\t\tthis.overlays = null;\r\n\r\n\t\tthis.googleMapDialogRef.hideDialog();\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickGoogleMapComponent } from \"./slick-google-map.component\";\r\nimport { SlickGoogleMapDialogComponent } from \"./slick-google-map-dialog.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickDialogModule],\r\n\tdeclarations: [SlickGoogleMapComponent, SlickGoogleMapDialogComponent],\r\n\texports: [SlickGoogleMapComponent, SlickGoogleMapDialogComponent]\r\n})\r\nexport class SlickGoogleMapModule { }\r\n\r\nexport { SlickGoogleMapComponent }\r\nexport { SlickGoogleMapDialogComponent }\r\n","export enum SlickGridColumnFilterTypes { none, text, dropdown }\r\nexport enum SlickGridColumnSortDirection { none, asc, desc }\r\nexport enum SlickGridColumnTitleOrientation { Horizontal, Vertical }\r\n\r\nexport interface ISlickGridFilterDropdownValue {\r\n\tid: string,\r\n\ttext: string\r\n}\r\n\r\nexport interface ISlickGridColumnModel {\r\n\tcolumnKey: string;\r\n\ttitle: string;\r\n\ttitleOrientation: SlickGridColumnTitleOrientation;\r\n\ttitleHeight: string;\r\n\tdataFieldName: string;\r\n\tdisplayOrder: number;\r\n\tsortable: boolean;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tfilterType: SlickGridColumnFilterTypes;\r\n\tfilterText: string;\r\n\tlastSearchText: string;\r\n\tfilterDropdownValues: ISlickGridFilterDropdownValue[];\r\n\tfilterDropdownValue: string;\r\n\tisFiltering: boolean;\r\n\tisLocked: boolean;\r\n\tdefault: boolean;\r\n\tvisible: boolean;\r\n\twidth: string;\r\n\tflexible: boolean;\r\n\thtml: string;\r\n}\r\n\r\nexport class SlickGridColumnModel implements ISlickGridColumnModel {\r\n\tcolumnKey: string;\r\n\ttitle: string;\r\n\ttitleOrientation: SlickGridColumnTitleOrientation;\r\n\ttitleHeight: string;\r\n\tdataFieldName: string;\r\n\tdisplayOrder: number;\r\n\tsortable: boolean = true;\r\n\tsortDirection: SlickGridColumnSortDirection = SlickGridColumnSortDirection.none;\r\n\tfilterType: SlickGridColumnFilterTypes = SlickGridColumnFilterTypes.none;\r\n\tfilterText: string;\r\n\tlastSearchText: string;\r\n\tfilterDropdownValues: ISlickGridFilterDropdownValue[];\r\n\tfilterDropdownValue: string;\r\n\tisFiltering: boolean;\r\n\tisLocked: boolean;\r\n\tdefault: boolean = true;\r\n\tvisible: boolean = true;\r\n\twidth: string;\r\n\tflexible: boolean = false;\r\n\thtml: string = '';\r\n\t// Used to create custom HTML for the column\r\n\tcolumnFormatCallback: Function;\r\n\r\n\tstatic addGridColumn(params: any): ISlickGridColumnModel {\r\n\t\tlet gridColumn = new SlickGridColumnModel();\r\n\r\n\t\tif (params.columnKey)\r\n\t\t\tgridColumn.columnKey = params.columnKey;\r\n\t\tif (params.title)\r\n\t\t\tgridColumn.title = params.title;\r\n\t\tgridColumn.titleOrientation = params.titleOrientation || SlickGridColumnTitleOrientation.Horizontal;\r\n\t\tif (params.titleHeight)\r\n\t\t\tgridColumn.titleHeight = params.titleHeight;\r\n\t\tif (params.dataFieldName)\r\n\t\t\tgridColumn.dataFieldName = params.dataFieldName;\r\n\t\tif (params.displayOrder !== null && params.displayOrder !== undefined)\r\n\t\t\tgridColumn.displayOrder = params.displayOrder;\r\n\t\tif (params.sortable !== null && params.sortable !== undefined)\r\n\t\t\tgridColumn.sortable = params.sortable;\r\n\t\tif (params.sortDirection)\r\n\t\t\tgridColumn.sortDirection = <SlickGridColumnSortDirection>params.sortDirection;\r\n\t\tif (params.filterType)\r\n\t\t\tgridColumn.filterType = <SlickGridColumnFilterTypes>params.filterType;\r\n\t\tif (params.filterDropdownValues)\r\n\t\t\tgridColumn.filterDropdownValues = <ISlickGridFilterDropdownValue[]>params.filterDropdownValues;\r\n\t\tif (params.width !== null && params.width !== undefined) \r\n\t\t\tgridColumn.width = params.width;\r\n\t\tif (!!params.flexible)\r\n\t\t\tgridColumn.flexible = params.flexible;\r\n\t\tif (params.html)\r\n\t\t\tgridColumn.html = params.html;\r\n\t\tif (params.default === null || params.default === undefined)\r\n\t\t\tgridColumn.default = true\r\n\t\telse\r\n\t\t\tgridColumn.default = params.default;\r\n\t\tgridColumn.visible = gridColumn.default;\r\n\t\tif (params.columnFormatCallback) {\r\n\t\t\tconsole.error(\"columnFormatCallback is no longer used. Please use key and <slick-grid-column columnKey='key'> with <ng-template let-item [slickGridColumnTemplate]>\")\r\n\t\t}\r\n\r\n\t\treturn gridColumn;\r\n\t}\r\n}\r\n\r\n","import { ISlickGridColumnModel } from \"./slick-grid-column.model\";\r\n\r\nexport interface ISlickGridFavoriteModel {\r\n\tfavoriteName: string;\r\n\tcolumns: ISlickGridColumnModel[];\r\n}\r\n\r\nexport class SlickGridFavoriteModel implements ISlickGridFavoriteModel {\r\n\tfavoriteName: string;\r\n\tcolumns: ISlickGridColumnModel[];\r\n}\r\n\r\n","import { SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\n\r\nexport interface ISlickGridRequestSearchModel {\r\n\tcolumnName: string,\r\n\tsearchValueId: string,\r\n\tsearchValueText: string\r\n}\r\n\r\nexport interface ISlickGridRequestSortModel {\r\n\tcolumnName: string,\r\n\tsortDirection: string\r\n}\r\n\r\nexport interface ISlickGridRequestModel {\r\n\turl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\tadditionalParams: any;\r\n\tpage: number;\r\n\trecordsPerPage: number;\r\n\tsortColumn: string;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tsearchString: string;\r\n\tcolumnSearchValues: ISlickGridRequestSearchModel[];\r\n}\r\n\r\nexport class SlickGridRequestModel implements ISlickGridRequestModel {\r\n\turl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\tadditionalParams: any;\r\n\tpage: number;\r\n\trecordsPerPage: number;\r\n\tsortColumn: string;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tsearchString: string;\r\n\tcolumnSearchValues: ISlickGridRequestSearchModel[];\r\n}\r\n\r\n","export interface ISlickGridResponseModel {\r\n\ttotalRecords: number;\r\n\tdata: any[];\r\n}\r\n\r\nexport class SlickGridResponseModel implements ISlickGridResponseModel {\r\n\ttotalRecords: number;\r\n\tdata: any[];\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Injectable()\r\nexport class SlickGridService {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tasync getDataFromServer (requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tlet params = <any>{};\r\n\t\t\tif (requestModel.additionalParams)\r\n\t\t\t\tparams.additionalParams = requestModel.additionalParams;\r\n\r\n\t\t\t// If the user has a custom search string, add it to the params here\r\n\t\t\tif (requestModel.searchString)\r\n\t\t\t\tparams.searchString = requestModel.searchString;\r\n\r\n\t\t\tif (requestModel.recordsPerPage)\r\n\t\t\t\tparams.recordsPerPage = requestModel.recordsPerPage;\r\n\r\n\t\t\tparams.page = (requestModel.page === null || requestModel.page === undefined) ? 1: requestModel.page;\r\n\r\n\t\t\tif (requestModel.sortColumn) {\r\n\t\t\t\tparams.sortColumn = requestModel.sortColumn;\r\n\t\t\t\tparams.sortDirection = requestModel.sortDirection;\r\n\t\t\t}\r\n\r\n\t\t\tdelete params.columnSearchValues;\r\n\t\t\tif (requestModel.columnSearchValues)\r\n\t\t\t\tparams.columnSearchValues = requestModel.columnSearchValues;\r\n\r\n\t\t\tlet data: SlickGridResponseModel = (<SlickGridResponseModel>await this.http.post(requestModel.url, params, { headers: requestModel.httpHeaders }).toPromise());\r\n\t\t\tdata = SlickUtilsService.dateSanitize(data);\r\n\t\t\treturn Promise.resolve(data);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync getDataFromDataObj(requestModel: SlickGridRequestModel, data: any[]): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tlet responseModel: SlickGridResponseModel = new SlickGridResponseModel();\r\n\t\t\t\r\n\t\t\tif (!data || data.length === 0) {\r\n\t\t\t\tresponseModel.totalRecords = 0;\r\n\t\t\t\tresponseModel.data = [];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tresponseModel.totalRecords = data.length;\r\n\t\t\t\tlet page = (requestModel.page === null || requestModel.page === undefined) ? 1 : requestModel.page;\r\n\r\n\t\t\t\tlet startIndex = (page - 1) * requestModel.recordsPerPage;\r\n\t\t\t\tlet endIndex = startIndex + requestModel.recordsPerPage;\r\n\t\t\t\tif (endIndex > data.length)\r\n\t\t\t\t\tendIndex = data.length;\r\n\t\t\t\tresponseModel.data = data.slice(startIndex, endIndex);\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n}","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[slickGridColumnTemplate]'\r\n})\r\nexport class SlickGridColumnTemplateDirective {\r\n\t@Input('slickGridColumnTemplate') columnKey: string;\r\n\r\n\tconstructor(public template: TemplateRef<any>) {\r\n\t}\r\n}\r\n\r\n","import { Component, Input, AfterViewInit, OnDestroy, ElementRef, ViewChild, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-popover',\r\n\ttemplateUrl: 'slick-popover.component.html'\r\n})\r\nexport class SlickPopoverComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n\t@Input() element: HTMLElement;\r\n\t@Input() position: string = 'right';\r\n\t@Input() hoverDelay: number = 250;\r\n\t@Input() outDelay: number = 250;\r\n\t@Input() alignment: string = \"left\";\r\n\t@Input() topOffsetPx: number = 0;\r\n\t@Input() leftOffsetPx: number = 0;\r\n\t@Input() whiteBackground: boolean = false;\r\n\t@Input() showByClick: boolean = false;\r\n\t@Input() showArrow: boolean = true;\r\n\r\n\t@ViewChild(\"containerDivRef\", { static: true }) containerDivRef: ElementRef;\r\n\t@ViewChild(\"popoverContentRef\", { static: true }) popoverContentRef: ElementRef;\r\n\t\r\n\tuuid: string;\r\n\ttop: number;\r\n\tleft: number;\r\n\r\n\tfnReposition = () => this.reposition();\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnMouseEnter = () => this.mouseEnter();\r\n\tfnMouseLeave = () => this.mouseLeave();\r\n\r\n\tdisplayTimeout: NodeJS.Timer;\r\n\tleaveTimeout: NodeJS.Timer;\r\n\tisVisible = false;\r\n\telementId: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.topOffsetPx)\r\n\t\t\tthis.topOffsetPx = parseFloat(changes.topOffsetPx.currentValue);\r\n\r\n\t\tif (changes.leftOffsetPx)\r\n\t\t\tthis.leftOffsetPx = parseFloat(changes.leftOffsetPx.currentValue);\r\n\r\n\t\tif (changes.position) {\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t}\r\n\r\n\t\tif (changes.showByClick) \r\n\t\t\tthis.showByClick = (this.showByClick.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.whiteBackground && changes.whiteBackground.currentValue)\r\n\t\t\tthis.whiteBackground = (changes.whiteBackground.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tif (changes.showArrow && changes.showArrow.currentValue)\r\n\t\t\tthis.showArrow = (changes.showArrow.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.reposition();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\tthis.containerDivRef.nativeElement.classList.add(\"showArrow\");\r\n\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\t//this.el.nativeElement.remove(this.el);\r\n\t\tdocument.body.appendChild(this.el.nativeElement);\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tif (this.showByClick === true) {\r\n\t\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t\tif (!this.element.getAttribute(\"id\"))\r\n\t\t\t\tthis.element.setAttribute('id', `slick-popover-element_${this.uuid}`);\r\n\r\n\t\t\tthis.elementId = this.element.getAttribute(\"id\");\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.el.nativeElement.addEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\t\tthis.element.addEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\t\tthis.el.nativeElement.addEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t\tthis.element.addEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\t\t\t\r\n\t\tthis.el.nativeElement.removeEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\tthis.element.removeEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\tthis.el.nativeElement.removeEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\ttry {\r\n\t\t\tthis.element.removeEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t\tdocument.body.removeChild(this.el.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tprivate mouseEnter() {\r\n\t\tclearTimeout(this.displayTimeout);\r\n\t\tclearTimeout(this.leaveTimeout);\r\n\t\tthis.displayTimeout = setTimeout(() => {\r\n\t\t\tthis.reposition();\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"visible\");\r\n\t\t}, this.hoverDelay);\r\n\t}\r\n\r\n\tprivate mouseLeave() {\r\n\t\tclearTimeout(this.displayTimeout);\r\n\t\tclearTimeout(this.leaveTimeout);\r\n\r\n\t\tthis.leaveTimeout = setTimeout(() => {\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t}, this.outDelay);\r\n\t}\r\n\r\n\tprivate async reposition() {\r\n\t\tif (!this.topOffsetPx)\r\n\t\t\tthis.topOffsetPx = 0;\r\n\r\n\t\tif (!this.leftOffsetPx)\r\n\t\t\tthis.leftOffsetPx = 0;\r\n\r\n\t\tif (this.showArrow === true)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"showArrow\");\r\n\t\telse if (this.showArrow === false)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"showArrow\");\r\n\r\n\t\tif (this.whiteBackground === true)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"whiteBackground\");\r\n\t\telse if (this.whiteBackground === false)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"whiteBackground\");\r\n\r\n\r\n\t\tlet targetRect = this.element.getBoundingClientRect();\r\n\t\tlet targetLeft = targetRect.left;\r\n\t\tlet targetTop = targetRect.top;\r\n\t\tlet targetHeight = this.element.offsetHeight;\r\n\t\tlet targetWidth = targetRect.width;\r\n\r\n\t\tlet popoverHeight = this.popoverContentRef.nativeElement.offsetHeight;\r\n\t\tlet popoverWidth = this.popoverContentRef.nativeElement.getBoundingClientRect().width;\r\n\r\n\t\tif (this.showArrow) {\r\n\t\t\tpopoverWidth += 5;\r\n\t\t}\r\n\r\n\t\tif (this.position === 'left') {\r\n\t\t\tthis.top = (targetTop + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft - popoverWidth - 3 + this.leftOffsetPx);\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.left -= 2;\r\n\t\t}\r\n\t\telse if (this.position === 'right') {\r\n\t\t\tthis.top = (targetTop + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft + targetWidth -7 + this.leftOffsetPx);\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.left += 7;\r\n\t\t}\r\n\t\telse if (this.position === 'top') {\r\n\t\t\tthis.top = (targetTop - popoverHeight - 3 + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\t// default to left aligned\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\tif (this.alignment && this.alignment.toLowerCase() === 'right')\r\n\t\t\t\tthis.left = targetLeft + targetWidth - popoverWidth - 4 + this.leftOffsetPx;\r\n\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.top -= 7;\r\n\t\t}\r\n\t\telse if (this.position === 'bottom') {\t\t\t\r\n\t\t\tthis.top = (targetTop + targetHeight - 7 + this.topOffsetPx);\r\n\t\t\t// default to left aligned\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\tif (this.alignment && this.alignment.toLowerCase() === 'right')\r\n\t\t\t\tthis.left = targetLeft + targetWidth - popoverWidth - 4 + this.leftOffsetPx;\r\n\t\t\t\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.top += 7;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, this.elementId) === true) {\r\n\t\t\tif (this.isVisible === true) {\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.reposition();\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"hidden\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"visible\");\r\n\t\t\t\tthis.isVisible = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isVisible === true) {\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<div #containerDivRef id=\"slick-popover_{{uuid}}\" class=\"slick-popover slick-popover_{{position}}\" [style.top.px]=\"top\" [style.left.px]=\"left\">\r\n\t<div #popoverContentRef class=\"popover fade bs-popover-{{position}} show\">\r\n\t\t<div *ngIf=\"showArrow === true\" class=\"arrow\"></div>\r\n\t\t<div class=\"popover-body\"><ng-content></ng-content></div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-paging',\r\n\ttemplateUrl: 'slick-paging.component.html'\r\n})\r\nexport class SlickPagingComponent implements OnChanges {\r\n\t@HostBinding('class') class = 'd-flex';\r\n\r\n\t@Input() pageNumber: number = 1;\r\n\t@Output() pageNumberChange: EventEmitter<number> = new EventEmitter();\r\n\t@Output() onPageChange: EventEmitter<number> = new EventEmitter();\r\n\t@Input() totalRecords: number;\r\n\t@Input() recordsPerPage: number;\r\n\r\n\tshowEllipses: boolean = false;\r\n\ttotalPages: number;\r\n\t// This will be 10 20 30, etc\r\n\tpreDisplayPageNumbers: number[] = [];\r\n\tpreDisplayEllipses: boolean = false;\r\n\t// This will be 41, 42, 43, 44, etc\r\n\tdisplayPageNumbers: number[] = [];\r\n\t// This will be 50 60 70, etc\r\n\tpostDisplayPageNumbers: number[] = [];\r\n\tpostDisplayEllipses: boolean = false;\r\n\tcurrentRecordNumber: number;\r\n\tendRecordNumber: number;\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.pageNumber) {\r\n\t\t\tthis.pageNumber = parseInt((changes.pageNumber.currentValue || '1').toString());\r\n\t\t}\r\n\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tselectPage(selectedPageNumber: number) {\r\n\t\tthis.pageNumber = selectedPageNumber;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tfirst() {\r\n\t\tthis.pageNumber = 1;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tpreviousPage() {\r\n\t\tthis.pageNumber--;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tpreviousSet() {\r\n\t\tthis.pageNumber -= 10;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tnextPage() {\r\n\t\tthis.pageNumber++;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tnextSet() {\r\n\t\tthis.pageNumber += 10;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tlast() {\r\n\t\tthis.pageNumber = this.totalPages;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\trecalc() {\r\n\t\tthis.preDisplayEllipses = false;\r\n\t\tthis.postDisplayEllipses = false;\r\n\r\n\t\tif (!this.recordsPerPage)\r\n\t\t\treturn;\r\n\r\n\t\tthis.totalRecords = this.totalRecords || 0;\r\n\t\tif (this.totalRecords < 0)\r\n\t\t\tthis.totalRecords = 0;\r\n\t\tthis.recordsPerPage = this.recordsPerPage || 1;\r\n\t\tif (this.recordsPerPage <= 0)\r\n\t\t\tthis.recordsPerPage = 1;\r\n\r\n\t\tthis.totalPages = Math.floor(this.totalRecords / this.recordsPerPage);\r\n\t\tif ((this.totalRecords % this.recordsPerPage) > 0)\r\n\t\t\tthis.totalPages++;\r\n\r\n\t\tif (this.pageNumber < 1)\r\n\t\t\tthis.pageNumber = 1;\r\n\r\n\t\tif (this.pageNumber > this.totalPages)\r\n\t\t\tthis.pageNumber = this.totalPages;\r\n\r\n\t\tthis.currentRecordNumber = ((this.recordsPerPage) * (this.pageNumber - 1)) + 1;\r\n\r\n\t\tthis.endRecordNumber = this.currentRecordNumber + this.recordsPerPage - 1;\r\n\t\tif (this.endRecordNumber > this.totalRecords)\r\n\t\t\tthis.endRecordNumber = this.totalRecords;\r\n\r\n\t\tthis.preDisplayPageNumbers = [];\r\n\t\tthis.displayPageNumbers = [];\r\n\t\tthis.postDisplayPageNumbers = [];\r\n\r\n\t\t// 10 is a special case where we want to just show all 10\r\n\t\tif (this.totalPages === 10) {\r\n\t\t\tfor (let i = 1; i <= 10; i++) {\r\n\t\t\t\tthis.displayPageNumbers.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst preDisplayPageTotal = Math.floor(this.pageNumber / 5);\r\n\t\t\tif (preDisplayPageTotal > 0) {\r\n\t\t\t\tfor (let i = 0; i < preDisplayPageTotal; i++) {\r\n\t\t\t\t\tif (i === 0)\r\n\t\t\t\t\t\tthis.preDisplayPageNumbers.push(1);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthis.preDisplayPageNumbers.push(i * 5);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet currentDisplayPageStart = preDisplayPageTotal * 5;\r\n\t\t\tlet currentDisplayPageEnd = currentDisplayPageStart + 4;\r\n\t\t\tif (currentDisplayPageEnd > this.totalPages)\r\n\t\t\t\tcurrentDisplayPageEnd = this.totalPages;\r\n\r\n\t\t\tfor (let i = currentDisplayPageStart; i <= currentDisplayPageEnd; i++) {\r\n\t\t\t\tif (i > 0)\r\n\t\t\t\t\tthis.displayPageNumbers.push(i);\r\n\t\t\t}\r\n\r\n\t\t\tconst postDisplayPageTotal = Math.floor((this.totalPages - preDisplayPageTotal + 5) / 5);\r\n\t\t\tif (postDisplayPageTotal > 0) {\r\n\t\t\t\tfor (let i = preDisplayPageTotal + 1; i < postDisplayPageTotal; i++)\r\n\t\t\t\t\tthis.postDisplayPageNumbers.push(i * 5);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.preDisplayPageNumbers.length > 1) {\r\n\t\t\t\tthis.preDisplayEllipses = true;\r\n\t\t\t\tthis.preDisplayPageNumbers = this.preDisplayPageNumbers.slice(this.preDisplayPageNumbers.length - 1, this.preDisplayPageNumbers.length);\r\n\t\t\t}\r\n\t\t\tif (this.postDisplayPageNumbers.length > 1) {\r\n\t\t\t\tthis.postDisplayEllipses = true;\r\n\t\t\t\tthis.postDisplayPageNumbers = this.postDisplayPageNumbers.slice(0, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//// If we can show ALL the pages without the ..., then do it\r\n\t\t//if (this.totalPages <= (this.adjacent * 2)) {\r\n\t\t//\tthis.allDisplayPageNumbers = [];\r\n\r\n\t\t//\tthis.showEllipses = false;\r\n\r\n\t\t//\tfor (let i = 1; i <= this.totalPages; i++) {\r\n\t\t//\t\tthis.allDisplayPageNumbers.push(i);\r\n\t\t//\t}\r\n\t\t//}\r\n\t\t//else {\r\n\t\t//\tthis.showEllipses = true;\r\n\r\n\t\t//\tif (this.allDisplayPageNumbers.indexOf(this.pageNumber) < 0) {\r\n\t\t//\t\tthis.allDisplayPageNumbers = [];\r\n\r\n\t\t//\t\tfor (let i = this.pageNumber; i < this.pageNumber + this.adjacent; i++)\r\n\t\t//\t\t\tthis.allDisplayPageNumbers.push(i);\r\n\r\n\t\t//\t\tthis.allDisplayPageNumbers.push(-1)\r\n\r\n\t\t//\t\tfor (let i = this.totalPages - this.adjacent; i < this.totalPages; i++)\r\n\t\t//\t\t\tthis.allDisplayPageNumbers.push(i);\r\n\t\t//\t}\r\n\t\t//}\r\n\t}\r\n\r\n}","<div class=\"slick-paging\">\r\n\t<div class=\"ms-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses px-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\"> </div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'slickGridSanitizeHtml'\r\n})\r\nexport class SlickGridSanitizeHtmlPipe implements PipeTransform {\r\n\r\n\tconstructor(private _sanitizer: DomSanitizer) {\r\n\t}\r\n\r\n\ttransform(v: string): SafeHtml {\r\n\t\treturn this._sanitizer.bypassSecurityTrustHtml(v);\r\n\t}\r\n}","import { Component, Input, Output, EventEmitter, ViewChild, HostListener, ElementRef, OnInit, AfterViewInit, OnChanges, SimpleChanges, OnDestroy, ContentChildren, QueryList, HostBinding, ChangeDetectorRef } from \"@angular/core\";\r\nimport { SlickGridService } from \"./slick-grid.service\";\r\nimport { ISlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { ISlickGridOptions } from \"./slick-grid.options\";\r\nimport { SlickGridRequestModel, ISlickGridRequestSearchModel } from \"./slick-grid-request.model\";\r\nimport { SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { SlickGridColumnTemplateDirective } from \"./slick-grid-column-template.directive\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\nimport { ISlickGridFavoriteModel, SlickGridFavoriteModel } from './slick-grid-favorite.model';\r\n\r\nclass DropDownModel {\r\n\tconstructor(text: string) {\r\n\t\tthis.id = text;\r\n\t\tthis.text = text;\r\n\t}\r\n\r\n\tid: string;\r\n\ttext: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-grid',\r\n\ttemplateUrl: 'slick-grid.component.html',\r\n\tproviders: [SlickGridService]\r\n})\r\nexport class SlickGridComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n\t@HostBinding('class') flexColumn = 'slick-flex-column';\r\n\t//@HostBinding('class') class = 'd-flex flex-column flex-fill';\r\n\r\n\t@Input() gridOptions: ISlickGridOptions;\r\n\t@Input() bordered: boolean = true;\r\n\t@Input() striped: boolean = true;\r\n\t@Input() hover: boolean = true;\r\n\t@Input() showingAllRecords = false;\r\n\t@Input() data: any[];\r\n\t@Output() onRowSelected: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onRowDoubleClick: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onRowContextMenu: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onFavoritesModified: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\t@ViewChild(\"slickGrid\", { static: true }) slickGridRef: ElementRef;\r\n\t@ViewChild(\"tableContainer\") tableContainerRef: ElementRef;\r\n\t@ViewChild(\"tableRef\") tableRef: ElementRef;\r\n\t@ViewChild(\"tableHeaderRow\") tableHeaderRowRef: ElementRef;\r\n\t@ViewChild(\"tableHeaderSearchRow\") tableHeaderSearchRowRef: ElementRef;\r\n\t// This is to test how high a standard row is\r\n\t@ViewChild(\"testRow\") testRowRef: ElementRef;\r\n\t@ViewChild(\"tableBodyRows\") tableBodyRowsRef: ElementRef;\r\n\t@ViewChild(\"columnSelectDialogRef\") columnSelectDialogRef: SlickDialogComponent;\r\n\t@ViewChild(\"addNewFavoriteDialogRef\") addNewFavoriteDialogRef: SlickConfirmDialogComponent;\r\n\r\n\t@ContentChildren(SlickGridColumnTemplateDirective) slickGridColumnTemplates: QueryList<SlickGridColumnTemplateDirective>;\r\n\ttemplateRefs: any;\r\n\r\n\tprivate fnOnMouseUp = (e) => this.onMouseUp(e);\r\n\r\n\tuuid: string;\r\n\tselectedIndex: number = null;\r\n\tgridOpacity = 0;\r\n\tvisibleColumns: ISlickGridColumnModel[];\r\n\tfavorites: DropDownModel[];\r\n\tselectedFavorite: string;\r\n\tnewFavoriteText: string;\r\n\tcolumnSelectDialogColumns: ISlickGridColumnModel[];\r\n\tloaded: boolean = false;\r\n\tisDoubleClick: boolean = false;\r\n\tdoubleClickWaitTimeout: NodeJS.Timer;\r\n\tcurrentPage: number = 1;\r\n\tsearchTimeout: NodeJS.Timer;\r\n\tkeypressTimeout: NodeJS.Timer;\r\n\tshowTestRow = false;\r\n\tshowSearchRow = false;\r\n\tisResizing: boolean = false;\r\n\tvisibleData: any[] = [];\r\n\trecordsPerPage: number;\r\n\ttotalRecords: number;\r\n\trecordsPerPageValue: string = \"Auto\";\r\n\r\n\tprivate slickGridHeight: number;\r\n\tprivate resizeTimeout: NodeJS.Timer = null;\r\n\tprivate requestModel: SlickGridRequestModel;\r\n\tprivate resizeInitialPos: number;\r\n\tprivate resizeInitialWidth: number;\r\n\tprivate resizeColIdx: number;\r\n\r\n\t@HostListener('window:resize', ['$event', '$event.target'])\r\n\tasync onResize(event: UIEvent, targetElement: HTMLElement) {\r\n\t\t// This is here because firefox shows/hides the menu if you press alt. Don't redraw the grid if we're\r\n\t\t// just showing the menu\r\n\t\tif (Math.abs(this.slickGridHeight - this.slickGridRef.nativeElement.offsetHeight) < 50)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.slickGridHeight !== this.slickGridRef.nativeElement.offsetHeight) {\r\n\t\t\tclearTimeout(this.resizeTimeout);\r\n\t\t\tthis.resizeTimeout = setTimeout(async () => {\r\n\t\t\t\tthis.currentPage = 1;\r\n\t\t\t\tthis.requestModel.page = 1;\r\n\t\t\t\tawait this.resizeGrid();\r\n\t\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\t\t\tthis.reload(this.requestModel);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(private gridService: SlickGridService,\r\n\t\tprivate functionLockService: SlickFunctionLockService,\r\n\t\tprivate changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t\tthis.requestModel = new SlickGridRequestModel();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tthis.setGridOptions(this.gridOptions);\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Copy the templates to a variable that the html can access. It can't access a QueryList\r\n\t\tthis.templateRefs = {};\r\n\t\tthis.slickGridColumnTemplates.forEach(t => {\r\n\t\t\tthis.templateRefs[t.columnKey] = t.template;\r\n\t\t});\r\n\t\tif (this.tableRef)\r\n\t\t\t(<HTMLTableElement>this.tableRef.nativeElement).focus();\r\n\t}\r\n\r\n\tasync tableKeydown(e: KeyboardEvent) {\r\n\t\t// Key up\r\n\t\tif (e.which === 38 && !(this.selectedIndex === 0 && this.currentPage === 1)) {\r\n\t\t\tclearTimeout(this.keypressTimeout);\r\n\r\n\t\t\tthis.selectedIndex--;\r\n\t\t\tif (this.selectedIndex < 0) {\r\n\t\t\t\tif (this.currentPage > 1) {\r\n\t\t\t\t\tthis.currentPage--;\r\n\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\tawait this.onPageChange(this.currentPage, false);\r\n\t\t\t\t\tthis.selectedIndex = this.recordsPerPage - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.keypressTimeout = setTimeout(() => {\r\n\t\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\t// Key down\r\n\t\tif (e.which === 40) {\r\n\t\t\tif (((this.currentPage - 1) * this.recordsPerPage) + this.selectedIndex >= this.totalRecords)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tclearTimeout(this.keypressTimeout);\r\n\t\t\tthis.selectedIndex++;\r\n\t\t\tif (this.selectedIndex >= this.recordsPerPage) {\r\n\t\t\t\tif (((this.currentPage - 1) * this.recordsPerPage) + this.selectedIndex < this.totalRecords) {\r\n\t\t\t\t\tthis.currentPage++;\r\n\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\tawait this.onPageChange(this.currentPage, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.keypressTimeout = setTimeout(() => {\r\n\t\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.bordered) {\r\n\t\t\tif (this.gridOptions.bordered === null)\r\n\t\t\t\tthis.bordered = (this.bordered.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.striped) {\r\n\t\t\t// The grid options override the tag options\r\n\t\t\tif (this.gridOptions.striped === null)\r\n\t\t\t\tthis.striped = (this.striped.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.hover) {\r\n\t\t\t// The grid options override the tag options\r\n\t\t\tif (this.gridOptions.hover === null)\r\n\t\t\t\tthis.hover = (this.hover.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.gridOptions) {\r\n\t\t\tif (this.gridOptions.bordered !== null)\r\n\t\t\t\tthis.bordered = this.gridOptions.bordered;\r\n\r\n\t\t\tif (this.gridOptions.striped !== null)\r\n\t\t\t\tthis.striped = this.gridOptions.striped;\r\n\r\n\t\t\tif (this.gridOptions.hover !== null)\r\n\t\t\t\tthis.hover = this.gridOptions.hover;\r\n\r\n\t\t\tthis.setGridOptions(this.gridOptions);\r\n\t\t}\r\n\r\n\t\tif (changes.data) {\r\n\t\t\t// If we don't do this lock, the first change will have null data and crash. The second request will have the actual data\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_DATA_CHANGES\");\r\n\t\t\t// Only resize the grid on the first change, otherwise we get a flicker\r\n\t\t\tif (changes.data.firstChange === true)\r\n\t\t\t\tawait this.resizeGrid();\r\n\t\t\t// We need to wait for the resize in the OnInit to finish before we continue\r\n\t\t\tthis.loaded = true;\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\t\tawait this.reload(this.requestModel);\r\n\t\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\t\tthis.selectRow(0);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_DATA_CHANGES\");\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tasync onRecordsPerPageSelected(recordsPerPage: string) {\r\n\t\tif (!recordsPerPage)\r\n\t\t\treturn;\r\n\r\n\t\tthis.recordsPerPageValue = recordsPerPage;\r\n\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\", recordsPerPage);\r\n\r\n\t\tthis.visibleData = [];\r\n\t\tthis.gridOpacity = 0;\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tawait this.resizeGrid(true);\r\n\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tawait this.onPageChange(this.currentPage, true);\r\n\t}\r\n\r\n\tonColResizeMousedown(e: MouseEvent, columnIdx: number) {\r\n\t\tthis.isResizing = true;\r\n\t\tthis.resizeInitialPos = e.pageX;\r\n\t\tthis.resizeColIdx = columnIdx;\r\n\t\tlet col = (<HTMLTableRowElement>this.tableHeaderRowRef.nativeElement).querySelectorAll(\"td\").item(columnIdx);\r\n\t\tthis.resizeInitialWidth = col.offsetWidth - 9;\r\n\r\n\t\tthis.visibleColumns[columnIdx].flexible = false;\r\n\r\n\t\tdocument.addEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tonColResizeDoubleclick(e: MouseEvent, columnIdx: number) {\r\n\t\tthis.visibleColumns[columnIdx].flexible = true;\r\n\t\tthis.visibleColumns[columnIdx].width = null;\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tonColResizeMousemove(e: MouseEvent) {\r\n\t\tif (!this.isResizing)\r\n\t\t\treturn;\r\n\r\n\t\tlet newCursorPos = e.pageX;\r\n\t\tlet diff = newCursorPos - this.resizeInitialPos;\r\n\t\tthis.visibleColumns[this.resizeColIdx].width = (this.resizeInitialWidth + diff) + \"px\";\r\n\t\tif ((this.resizeInitialWidth + diff) < 10)\r\n\t\t\tthis.visibleColumns[this.resizeColIdx].width = \"10px\";\r\n\t\tthis.visibleColumns[this.resizeColIdx].flexible = false;\r\n\t}\r\n\r\n\tprivate onMouseUp(e) {\r\n\t\tthis.isResizing = false;\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tgetVisibleRecords() {\r\n\t\treturn this.visibleData;\r\n\t}\r\n\r\n\taddNewRecord(newRecord: any, selectNewRecord: boolean = false) {\r\n\t\tthis.visibleData.unshift(newRecord);\r\n\r\n\t\tif (selectNewRecord === true) {\r\n\t\t\tthis.selectedIndex = 0;\r\n\t\t\tthis.selectRow(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.selectedIndex)\r\n\t\t\t\tthis.selectedIndex++;\r\n\t\t}\r\n\t}\r\n\r\n\tupdateRecord(rowNum: number, record: any) {\r\n\t\tthis.visibleData[rowNum] = record;\r\n\t}\r\n\r\n\tonRowClicked(rowData: any, idx: number) {\r\n\t\tthis.selectedIndex = idx;\r\n\t\tclearTimeout(this.doubleClickWaitTimeout);\r\n\t\tthis.doubleClickWaitTimeout = setTimeout(() => {\r\n\t\t\tthis.onRowSelected.emit(rowData);\r\n\t\t}, 250);\r\n\t}\r\n\r\n\tonRowDoubleClicked(rowData: any, idx) {\r\n\t\tthis.selectedIndex = idx;\r\n\t\tclearTimeout(this.doubleClickWaitTimeout);\r\n\t\tthis.onRowDoubleClick.emit(rowData);\r\n\t}\r\n\r\n\tonRowContextMenuClicked(e: MouseEvent, rowData, idx) {\r\n\t\tif (this.onRowContextMenu) {\r\n\t\t\tlet rowContextMenuModel = {\r\n\t\t\t\tmouseEvent: e,\r\n\t\t\t\tdata: rowData,\r\n\t\t\t\trowIdx: idx\r\n\t\t\t}\r\n\r\n\t\t\tthis.onRowContextMenu.emit(rowContextMenuModel);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onPageChange(pageNumber, selectRow: boolean = true) {\r\n\t\tthis.currentPage = pageNumber;\r\n\t\tthis.requestModel.page = pageNumber;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tthis.selectedIndex = (this.gridOptions.autoSelectFirstRow === true) ? 0 : null;\r\n\r\n\t\tif (selectRow === true && this.gridOptions.autoSelectFirstRow === true) {\r\n\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t}\r\n\r\n\t\t(<HTMLTableElement>this.tableRef.nativeElement).focus();\r\n\t}\r\n\r\n\tasync reloadGrid(additionalParams: any): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.resizeGrid();\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOADGRID\");\r\n\t\t\tthis.requestModel.url = this.gridOptions.getUrl;\r\n\t\t\tthis.requestModel.httpHeaders = this.gridOptions.httpHeaders;\r\n\t\t\tthis.requestModel.additionalParams = additionalParams;\r\n\t\t\tthis.requestModel.page = this.currentPage;\r\n\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\r\n\t\t\tlet responseModel: SlickGridResponseModel = await this.reload(this.requestModel);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOADGRID\");\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync reloadGridWithRequestModel(requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.resizeGrid();\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOADGRIDWITHREQUESTMODEL\");\r\n\t\t\tthis.requestModel = requestModel;\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tlet responseModel: SlickGridResponseModel = await this.reload(this.requestModel);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOADGRIDWITHREQUESTMODEL\");\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async reload(requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOAD\");\r\n\r\n\t\t\trequestModel = this.getRequestModel(this.requestModel);\r\n\r\n\t\t\tlet responseModel: SlickGridResponseModel = null;\r\n\t\t\tif (requestModel.url)\r\n\t\t\t\tresponseModel = await this.gridService.getDataFromServer(requestModel);\r\n\t\t\telse\r\n\t\t\t\tresponseModel = await this.gridService.getDataFromDataObj(requestModel, this.data);\r\n\r\n\t\t\tthis.loaded = true;\r\n\t\t\tthis.totalRecords = responseModel.totalRecords;\r\n\t\t\tthis.visibleData = responseModel.data;\r\n\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOAD\");\r\n\t\t\tPromise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tunselectRow() {\r\n\t\tthis.selectedIndex = null;\r\n\t}\r\n\r\n\tselectRow(rowNumber: number) {\r\n\t\tlet rowData = this.visibleData[rowNumber];\r\n\t\tthis.onRowClicked(rowData, rowNumber);\r\n\t}\r\n\r\n\tgetColumnHTML(rowData, dataFieldName) {\r\n\t\tconst columnHTML = SlickUtilsService.getDeepObject(rowData, dataFieldName);\r\n\r\n\t\tif (columnHTML === null || columnHTML === undefined)\r\n\t\t\treturn '';\r\n\r\n\t\treturn columnHTML.toString();\r\n\t}\r\n\r\n\tasync sortBy(sortColumn: ISlickGridColumnModel) {\r\n\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\tif (sortColumn && c.columnKey !== sortColumn.columnKey) {\r\n\r\n\t\t\t\tc.sortDirection = SlickGridColumnSortDirection.none;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (sortColumn) {\r\n\t\t\tif (sortColumn.sortDirection === SlickGridColumnSortDirection.none) {\r\n\t\t\t\tthis.visibleColumns.forEach(c => c.sortDirection = SlickGridColumnSortDirection.none);\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.asc;\r\n\t\t\t}\r\n\t\t\telse if (sortColumn.sortDirection === SlickGridColumnSortDirection.asc)\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.desc;\r\n\t\t\telse {\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\tasync onSearchSelect(ddValue, column: ISlickGridColumnModel) {\r\n\t\tif (!this.requestModel.columnSearchValues)\r\n\t\t\tthis.requestModel.columnSearchValues = [];\r\n\r\n\t\tlet columnSearchValueIdx = this.requestModel.columnSearchValues.findIndex(x => x.columnName === column.dataFieldName);\r\n\t\tif (columnSearchValueIdx >= 0)\r\n\t\t\tthis.requestModel.columnSearchValues.splice(columnSearchValueIdx, 1);\r\n\r\n\t\tcolumn.isFiltering = false;\r\n\r\n\t\tif (ddValue) {\r\n\t\t\tthis.requestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\tcolumnName: column.dataFieldName,\r\n\t\t\t\tsearchValueId: ddValue.id,\r\n\t\t\t\tsearchValueText: ddValue.text\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.isFiltering = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcolumn.isLocked = false;\r\n\t\t}\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\tasync onSearch(column: ISlickGridColumnModel) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (!this.requestModel.columnSearchValues)\r\n\t\t\tthis.requestModel.columnSearchValues = [];\r\n\r\n\t\tif (column.filterText === column.lastSearchText)\r\n\t\t\treturn;\r\n\r\n\t\tcolumn.lastSearchText = column.filterText;\r\n\t\tcolumn.isFiltering = !!column.filterText;\r\n\t\tif (!column.isFiltering)\r\n\t\t\tcolumn.isLocked = false;\r\n\r\n\t\tclearTimeout(this.searchTimeout);\r\n\t\tthis.searchTimeout = setTimeout(async () => {\r\n\t\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\t\tlet columnSearchValueIdx = this.requestModel.columnSearchValues.findIndex(x => x.columnName === column.dataFieldName);\r\n\t\t\tif (columnSearchValueIdx >= 0)\r\n\t\t\t\tthis.requestModel.columnSearchValues.splice(columnSearchValueIdx, 1);\r\n\r\n\t\t\tif (column.filterText) {\r\n\t\t\t\tthis.requestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\tcolumnName: column.dataFieldName,\r\n\t\t\t\t\tsearchValueText: column.filterText\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tawait this.reload(this.requestModel);\r\n\t\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\t\tthis.selectRow(0);\r\n\t\t}, 250);\r\n\t}\r\n\r\n\ttoggleLock(column: ISlickGridColumnModel) {\r\n\t\tcolumn.isLocked = !column.isLocked;\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tasync resetFilter(column: ISlickGridColumnModel) {\r\n\t\tcolumn.isFiltering = false;\r\n\t\tcolumn.isLocked = false;\r\n\r\n\t\tcolumn.filterText = null;\r\n\t\tcolumn.lastSearchText = null;\r\n\t\tcolumn.filterDropdownValue = null;\r\n\t\tthis.requestModel.columnSearchValues = this.requestModel.columnSearchValues.filter(x => x.columnName !== column.dataFieldName);\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\topenColumnSelectDialog() {\r\n\t\tthis.columnSelectDialogColumns = [...this.gridOptions.columns];\r\n\t\tthis.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.columnSelectDialogRef.showDialog();\r\n\t}\r\n\r\n\tonColumnDrop(e: any) {\r\n\t\tconsole.info(e);\r\n\t}\r\n\r\n\tasync onColumnReorder(e: number[]) {\r\n\t\tconst oldOrder = e[0];\r\n\t\tconst newOrder = e[1];\r\n\r\n\t\tif (oldOrder === newOrder)\r\n\t\t\treturn;\r\n\r\n\t\tconst selectedCol = this.columnSelectDialogColumns.splice(oldOrder, 1)[0];\r\n\t\tselectedCol.displayOrder = newOrder;\r\n\r\n\t\tlet currentOrder = 0;\r\n\t\t// Everything up to the new order reordered from 0\r\n\t\tfor (let i = 0; i < this.columnSelectDialogColumns.length; i++) {\r\n\t\t\t// If we're at newOrder, leave a spot\r\n\t\t\tif (i === newOrder)\r\n\t\t\t\tcurrentOrder++;\r\n\t\t\tthis.columnSelectDialogColumns[i].displayOrder = currentOrder++;\r\n\t\t}\r\n\r\n\t\tthis.columnSelectDialogColumns = [...this.columnSelectDialogColumns, selectedCol];\r\n\t\tthis.columnSelectDialogColumns = this.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t}\r\n\r\n\tasync addNewFavorite() {\r\n\t\tthis.newFavoriteText = '';\r\n\r\n\t\tconst confirmResult = await this.addNewFavoriteDialogRef.confirm();\r\n\r\n\t\tif (confirmResult === SlickConfirmDialogResults.Ok && this.newFavoriteText) {\r\n\t\t\t// Save the previous selection to localstorage\r\n\t\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\t\tthis.favorites.push(new DropDownModel(this.newFavoriteText));\r\n\r\n\t\t\tthis.selectedFavorite = this.newFavoriteText;\r\n\t\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\", this.selectedFavorite);\r\n\r\n\t\t\tconst favoritesJson = JSON.stringify(this.favorites.map(x => x.text));\r\n\t\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_FAVORITES\", favoritesJson);\r\n\r\n\t\t\t// Save the new one to localstorage\r\n\t\t\tthis.saveDialogColumnsToLocalStorage();\r\n\t\t}\r\n\t}\r\n\r\n\tloadFavorite(favorite: DropDownModel) {\r\n\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\tthis.selectedFavorite = favorite.text;\r\n\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${this.selectedFavorite === 'Default' ? '' : '_' + this.selectedFavorite}`);\r\n\t\tif (gridColumnsJson) {\r\n\t\t\tthis.columnSelectDialogColumns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\t\t\tthis.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\t}\r\n\t}\r\n\r\n\tasync setFavorite(favorite: string) {\r\n\t\tthis.selectedFavorite = favorite;\r\n\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\", this.selectedFavorite);\r\n\r\n\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${this.selectedFavorite === 'Default' ? '' : '_' + this.selectedFavorite}`);\r\n\t\tthis.gridOptions.columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\t\tthis.gridOptions.columns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\tawait this.reload(this.requestModel);\r\n\t}\r\n\r\n\tonSaveColumns() {\r\n\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\tthis.gridOptions.columns = [...this.columnSelectDialogColumns];\r\n\r\n\t\t// Make sure if they've hidden a column that we aren't trying to sort or filter by this column\r\n\t\tthis.gridOptions.columns.forEach(x => {\r\n\t\t\tif (x.visible === false) {\r\n\t\t\t\tx.filterDropdownValue = null;\r\n\t\t\t\tx.filterText = null;\r\n\t\t\t\tx.isFiltering = false;\r\n\t\t\t\tx.isLocked = false;\r\n\t\t\t\tx.lastSearchText = null;\r\n\t\t\t\tx.sortDirection = null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\r\n\t\tthis.columnSelectDialogRef.hideDialog();\r\n\t\tthis.resizeGrid();\r\n\r\n\t\tif (this.onFavoritesModified) {\r\n\t\t\tconst gridFavorites: ISlickGridFavoriteModel[] = this.favorites.map(favorite => {\r\n\t\t\t\tconst gridFavorite = new SlickGridFavoriteModel();\r\n\t\t\t\tgridFavorite.favoriteName = favorite.text;\r\n\t\t\t\tconst suffix = gridFavorite.favoriteName === 'Default' ? '' : ('_' + gridFavorite.favoriteName);\r\n\t\t\t\tconst dialogColumnsJSON = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\tgridFavorite.columns = JSON.parse(dialogColumnsJSON);\r\n\t\t\t\treturn gridFavorite;\r\n\t\t\t});\r\n\r\n\t\t\tthis.onFavoritesModified.emit(gridFavorites);\r\n\t\t}\r\n\t}\r\n\r\n\tonCancelColumns() {\r\n\t\tthis.columnSelectDialogRef.hideDialog();\r\n\t}\r\n\r\n\tsaveDialogColumnsToLocalStorage() {\r\n\t\tlet dialogColumnsJSON = JSON.stringify(this.columnSelectDialogColumns);\r\n\t\tif (this.gridOptions.gridKey) {\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, dialogColumnsJSON);\r\n\t\t}\r\n\t}\r\n\r\n\tsaveColumnsToLocalStorage() {\r\n\t\tlet gridColumnsJSON = JSON.stringify(this.gridOptions.columns);\r\n\t\tif (this.gridOptions.gridKey) {\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\r\n\t\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\r\n\t\t\tif (gridColumnsJson) {\r\n\t\t\t\tlet columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\r\n\t\t\t\tlet displayOrder = 0;\r\n\t\t\t\tcolumns.forEach(c => {\r\n\t\t\t\t\tlet column = this.gridOptions.columns.find(gridColumn => gridColumn.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\tif (column) {\r\n\t\t\t\t\t\tc.displayOrder = displayOrder;\r\n\t\t\t\t\t\tc.titleOrientation = column.titleOrientation;\r\n\t\t\t\t\t\tc.titleHeight = column.titleHeight;\r\n\t\t\t\t\t\tc.width = column.width;\r\n\t\t\t\t\t\tc.filterDropdownValue = column.filterDropdownValue;\r\n\t\t\t\t\t\tc.filterText = column.filterText;\r\n\t\t\t\t\t\tc.isLocked = column.isLocked;\r\n\t\t\t\t\t\tc.isFiltering = column.isFiltering;\r\n\t\t\t\t\t\tc.sortDirection = column.sortDirection;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdisplayOrder++;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tcolumns = columns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\t\t\tgridColumnsJSON = JSON.stringify(columns);\r\n\t\t\t}\r\n\r\n\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, gridColumnsJSON);\r\n\t\t}\r\n\r\n\t\tif (this.onFavoritesModified) {\r\n\t\t\tconst gridFavorites: ISlickGridFavoriteModel[] = this.favorites.map(favorite => {\r\n\t\t\t\tconst gridFavorite = new SlickGridFavoriteModel();\r\n\t\t\t\tgridFavorite.favoriteName = favorite.text;\r\n\t\t\t\tconst suffix = gridFavorite.favoriteName === 'Default' ? '' : ('_' + gridFavorite.favoriteName);\r\n\t\t\t\tconst dialogColumnsJSON = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\tgridFavorite.columns = JSON.parse(dialogColumnsJSON);\r\n\t\t\t\treturn gridFavorite;\r\n\t\t\t});\r\n\r\n\t\t\tthis.onFavoritesModified.emit(gridFavorites);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate async resizeGrid(forceRefresh: boolean = false): Promise<void> {\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tif (!forceRefresh && this.slickGridRef.nativeElement.offsetHeight === this.slickGridHeight) {\r\n\t\t\t\tresolve();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.recordsPerPageValue === 'Auto') {\r\n\t\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RESIZEGRID\");\r\n\r\n\t\t\t\tthis.slickGridHeight = this.tableContainerRef.nativeElement.offsetHeight;\r\n\r\n\t\t\t\tconst testRow = (<HTMLTableElement>this.tableRef.nativeElement).insertRow(0);\r\n\t\t\t\tconst testCell = testRow.insertCell(0);\r\n\t\t\t\ttestCell.style.visibility = \"hidden\";\r\n\t\t\t\ttestCell.innerHTML = \"&NBSP\";\r\n\t\t\t\tconst rowHeight = testCell.offsetHeight;\r\n\t\t\t\t(<HTMLTableElement>this.tableRef.nativeElement).deleteRow(0);\r\n\r\n\t\t\t\tlet headerHeight = this.tableHeaderRowRef.nativeElement.offsetHeight + 2;\r\n\t\t\t\tif (this.tableHeaderSearchRowRef)\r\n\t\t\t\t\theaderHeight += this.tableHeaderSearchRowRef.nativeElement.offsetHeight + 2;\r\n\t\t\t\tconst clientHeight = this.tableContainerRef.nativeElement.offsetHeight - headerHeight;\r\n\t\t\t\tthis.recordsPerPage = parseInt(((clientHeight / rowHeight) - 1).toFixed(0));\r\n\t\t\t\tlet actualRowHeight = parseInt((clientHeight / this.recordsPerPage).toFixed(0)) - 1;\r\n\t\t\t\tif (actualRowHeight < rowHeight)\r\n\t\t\t\t\tactualRowHeight = rowHeight;\r\n\r\n\t\t\t\tconst allRows = <HTMLElement[]>this.slickGridRef.nativeElement.querySelectorAll(\".table tbody tr\");\r\n\t\t\t\tallRows.forEach(row => {\r\n\t\t\t\t\trow.style.height = (actualRowHeight) + \"px\";\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RESIZEGRID\");\r\n\r\n\t\t\t\tthis.gridOpacity = 1;\r\n\t\t\t\tthis.showTestRow = false;\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\t\tthis.recordsPerPage = parseInt(this.recordsPerPageValue);\r\n\t\t\t\tthis.gridOpacity = 1;\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddColumn(column: ISlickGridColumnModel, idx: number = null) {\r\n\r\n\t\tif (idx === null)\r\n\t\t\tthis.gridOptions.columns.push(column);\r\n\t\telse\r\n\t\t\tthis.gridOptions.columns.splice(idx, 0, column);\r\n\r\n\t\tthis.setGridOptions(this.gridOptions);\r\n\t}\r\n\r\n\tgetRequestModel(requestModel: SlickGridRequestModel = null): SlickGridRequestModel {\r\n\t\tif (!requestModel)\r\n\t\t\trequestModel = this.requestModel;\r\n\r\n\t\trequestModel.columnSearchValues = [];\r\n\r\n\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\tif (c.visible) {\r\n\t\t\t\tif (c.filterType === SlickGridColumnFilterTypes.text && c.filterText) {\r\n\t\t\t\t\tc.filterText = c.filterText;\r\n\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\tsearchValueId: null,\r\n\t\t\t\t\t\tsearchValueText: c.filterText\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse if (c.filterType === SlickGridColumnFilterTypes.dropdown && c.filterDropdownValue) {\r\n\t\t\t\t\tc.filterDropdownValue = c.filterDropdownValue;\r\n\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\tsearchValueId: c.filterDropdownValue,\r\n\t\t\t\t\t\tsearchValueText: null\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trequestModel.sortColumn = null;\r\n\t\tconst sortColumn = this.gridOptions.columns.find(x => x.sortDirection === SlickGridColumnSortDirection.asc || x.sortDirection === SlickGridColumnSortDirection.desc);\r\n\t\tif (sortColumn) {\r\n\t\t\trequestModel.sortColumn = (sortColumn.sortDirection === 0) ? null : sortColumn.dataFieldName;\r\n\t\t\trequestModel.sortDirection = sortColumn.sortDirection;\r\n\t\t}\r\n\r\n\t\tif (requestModel.recordsPerPage <= 0)\r\n\t\t\trequestModel.recordsPerPage = 20;\r\n\r\n\t\treturn this.requestModel;\r\n\t}\r\n\r\n\tsetGridOptions(gridOptions: ISlickGridOptions) {\r\n\t\tthis.gridOptions = gridOptions;\r\n\r\n\t\tif (this.gridOptions.gridKey) {\r\n\r\n\t\t\tif (this.gridOptions.favorites) {\r\n\t\t\t\tconst favoriteNames = this.gridOptions.favorites.map(f => f.favoriteName);\r\n\t\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_FAVORITES`, JSON.stringify(favoriteNames));\r\n\r\n\t\t\t\tthis.gridOptions.favorites.forEach(favorite => {\r\n\t\t\t\t\t// Make sure we haven't added a new column that needs to be saved\r\n\t\t\t\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\t\t\t\tconst columnExists = favorite.columns.findIndex(x => x.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\t\tif (columnExists < 0)\r\n\t\t\t\t\t\t\tfavorite.columns.push(c);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlet gridColumnsJSON = JSON.stringify(favorite.columns);\r\n\t\t\t\t\tif (this.gridOptions.gridKey) {\r\n\t\t\t\t\t\tconst suffix = favorite.favoriteName === 'Default' ? '' : ('_' + favorite.favoriteName);\r\n\t\t\t\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, gridColumnsJSON);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (favoriteNames.indexOf(this.selectedFavorite) < 0)\r\n\t\t\t\t\tthis.selectedFavorite = \"Default\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedFavorite = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\") || 'Default';\r\n\r\n\t\t\t// Check to make sure we don't have any duplicate column names\r\n\t\t\tthis.gridOptions.columns.forEach(c1 => {\r\n\t\t\t\tconst dataFieldCount = (this.gridOptions.columns.filter(x => x.dataFieldName === c1.dataFieldName) || []).length;\r\n\t\t\t\tif (dataFieldCount > 1)\r\n\t\t\t\t\tconsole.error(`Grid ${this.gridOptions.gridKey} column ${c1.dataFieldName} is defined ${dataFieldCount} times`);\r\n\t\t\t});\r\n\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\t\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\tif (gridColumnsJson) {\r\n\t\t\t\tlet columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\r\n\t\t\t\tlet displayOrder = 0;\r\n\t\t\t\tcolumns.forEach(c => {\r\n\t\t\t\t\tlet column = this.gridOptions.columns.find(gridColumn => gridColumn.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\tif (column) {\r\n\t\t\t\t\t\tcolumn.visible = c.visible;\r\n\t\t\t\t\t\tcolumn.displayOrder = displayOrder;\r\n\t\t\t\t\t\tcolumn.titleOrientation = c.titleOrientation;\r\n\t\t\t\t\t\tcolumn.titleHeight = c.titleHeight;\r\n\t\t\t\t\t\tcolumn.width = c.width;\r\n\t\t\t\t\t\tcolumn.flexible = c.flexible;\r\n\t\t\t\t\t\tcolumn.sortDirection = c.sortDirection;\r\n\t\t\t\t\t\tcolumn.isLocked = c.isLocked;\r\n\t\t\t\t\t\t//column.filterType = c.filterType;\r\n\t\t\t\t\t\tif (column.isLocked && column.filterType !== SlickGridColumnFilterTypes.none) {\r\n\t\t\t\t\t\t\tcolumn.isFiltering = true;\r\n\r\n\t\t\t\t\t\t\tif (column.filterType === SlickGridColumnFilterTypes.text)\r\n\t\t\t\t\t\t\t\tcolumn.filterText = c.filterText;\r\n\t\t\t\t\t\t\telse if (column.filterType === SlickGridColumnFilterTypes.dropdown)\r\n\t\t\t\t\t\t\t\tcolumn.filterDropdownValue = c.filterDropdownValue;\r\n\r\n\t\t\t\t\t\t\tif (!column.filterText && !column.filterDropdownValue) {\r\n\t\t\t\t\t\t\t\tcolumn.isFiltering = false;\r\n\t\t\t\t\t\t\t\tcolumn.isLocked = false;\r\n\t\t\t\t\t\t\t\tcolumn.filterText = null;\r\n\t\t\t\t\t\t\t\tcolumn.filterDropdownValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdisplayOrder++;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.gridOptions.defaultRecordsPerPage && !localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\"))\r\n\t\t\t\tthis.recordsPerPageValue = this.gridOptions.defaultRecordsPerPage.toString();\r\n\t\t\telse\r\n\t\t\t\tthis.recordsPerPageValue = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\") || \"Auto\";\r\n\r\n\t\t\tconst favoritesJson = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_FAVORITES\") || `[\"Default\"]`;\r\n\t\t\tthis.favorites = (<string[]>JSON.parse(favoritesJson)).map(favorite => {\r\n\t\t\t\treturn new DropDownModel(favorite);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\t\tlet sortColumn = this.visibleColumns.find(c => c.sortable === true && c.sortDirection > 0);\r\n\t\tif (this.visibleColumns.length > 0 && sortColumn) {\r\n\t\t\tthis.requestModel.sortColumn = sortColumn.dataFieldName;\r\n\t\t\tthis.requestModel.sortDirection = sortColumn.sortDirection;\r\n\t\t}\r\n\t}\r\n}","<div id=\"slick-grid_{{uuid}}\" class=\"slick-grid d-flex flex-column flex-fill\" style=\"position: absolute; left: 0; top: 0; right: 0; bottom: 0;\" #slickGrid>\r\n\t<div #tableContainer class=\"d-flex flex-fill\" style=\"overflow: auto\">\r\n\r\n\t\t<div>\r\n\t\t\t<table #tableRef class=\"table table-sm\" [class.table-bordered]=\"bordered\" [class.table-borderless]=\"!bordered\" [class.table-striped]=\"striped\" [class.table-hover]=\"hover\" [style.opacity]=\"gridOpacity\" style=\"margin: 0; padding: 0;\" (keydown)=\"tableKeydown($event)\" tabindex=\"0\">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr #tableHeaderRow (mousemove)=\"onColResizeMousemove($event)\" [ngClass]=\"{ 'resizing': isResizing === true }\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns; let idx = index\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\" [style.height]=\"column.titleHeight\">\r\n\t\t\t\t\t\t\t<div [ngClass]=\"{ 'slick-grid_title-vertical' : column.titleOrientation === 1 }\">\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"idx > 0 && idx < visibleColumns.length\" class=\"resize_column_left\" [class.table-bordered]=\"bordered\" (mousedown)=\"onColResizeMousedown($event, idx - 1)\" (dblclick)=\"onColResizeDoubleclick($event, idx - 1)\"></div>\r\n\t\t\t\t\t\t\t\t<span class=\"sortIcon\" *ngIf=\"column.sortable === true && column.sortDirection > 0\"><i class=\"far\" [ngClass]=\"{'fa-caret-up': column.sortDirection === 1, 'fa-caret-down': column.sortDirection === 2}\"></i> </span>\r\n\t\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" *ngIf=\"column.sortable === true\" (click)=\"sortBy(column)\" draggable=\"false\" title=\"{{column.title}}\">{{column.title}}</a>\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.sortable === false\" title=\"{{column.title}}\">{{column.title}}</div>\r\n\t\t\t\t\t\t\t\t<div class=\"resize_column_right\" (mousedown)=\"onColResizeMousedown($event, idx)\" (dblclick)=\"onColResizeDoubleclick($event, idx)\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr #tableHeaderSearchRow *ngIf=\"showSearchRow === true\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns\">\r\n\t\t\t\t\t\t\t<div class=\"slick-grid_search-column\">\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering\" class=\"fas fa-times-circle bg-white text-danger me-1\" (click)=\"resetFilter(column)\"></i>\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering && column.isLocked\" class=\"far fa-lock me-1\" (click)=\"toggleLock(column)\"></i>\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering && !column.isLocked\" class=\"far fa-lock-open me-1\" (click)=\"toggleLock(column)\"></i>\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.filterType === 1\" class=\"slick-grid_text-search\">\r\n\t\t\t\t\t\t\t\t\t<input autocomplete=\"nope\" type=\"text\" class=\"form-control\" [(ngModel)]=\"column.filterText\" name=\"searchText\" placeholder=\"Search...\" (keydown)=\"onSearch(column)\" />\r\n\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.filterType === 2\" class=\"input-group slick-grid_drop-down-search\">\r\n\t\t\t\t\t\t\t\t\t<slick-drop-down [items]=\"column.filterDropdownValues\" [(ngModel)]=\"column.filterDropdownValue\" cssClass=\"slick-grid_filter-drop-down\" listWidth=\"auto\" placeholder=\"Search...\" (onSelect)=\"onSearchSelect($event, column)\"></slick-drop-down>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngIf=\"loaded && visibleData.length === 0\"><td [colSpan]=\"visibleColumns.length\">No Data</td></tr>\r\n\t\t\t\t\t<tr *ngFor=\"let rowData of visibleData; let idx = index\" #tableBodyRows (click)=\"onRowClicked(rowData, idx)\" (dblclick)=\"onRowDoubleClicked(rowData, idx)\" (contextmenu)=\"onRowContextMenuClicked($event, rowData, idx)\" [class.table-success]=\"selectedIndex === idx\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns\">\r\n\t\t\t\t\t\t\t<div *ngIf=\"!column.columnKey\" class=\"slick-grid_column-content\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\" [innerHTML]=\"getColumnHTML(rowData, column.dataFieldName) | slickGridSanitizeHtml\"></div>\r\n\t\t\t\t\t\t\t<div *ngIf=\"column.columnKey\" class=\"slick-grid_column-content\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\">\r\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRefs[column.columnKey], context: { $implicit: rowData }\">\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\r\n\t<div class=\"slick-grid-footer mt-2 d-flex\">\r\n\t\t<div>\r\n\t\t <button type=\"button\" (click)=\"openColumnSelectDialog()\" class=\"btn btn-outline-primary\" style=\"border-radius: 100%; height: 2.2rem; width: 2.2rem; padding: 0;\"><i class=\"fal fa-columns\"></i></button>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"favorites?.length > 1\">\r\n\t\t <button #favoriteSelectRef type=\"button\" class=\"btn btn-outline-primary ms-1\"><i class=\"far fa-star\"></i> {{this.selectedFavorite}}</button>\r\n\t\t <slick-popover [element]=\"favoriteSelectRef\" position=\"top\" showArrow=\"false\" [topOffsetPx]=\"0\" [leftOffsetPx]=\"0\" [showByClick]=\"true\">\r\n\t\t\t<table class=\"table-borderless table-sm table-hover\" style=\"min-width: 250px; cursor: default\">\r\n\t\t\t <tbody>\r\n\t\t\t\t<tr *ngFor=\"let favorite of favorites\" (click)=\"setFavorite(favorite.text)\">\r\n\t\t\t\t <td><i *ngIf=\"favorite.text === selectedFavorite\" class=\"far fa-star me-1\"></i>{{favorite.text}}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t </tbody>\r\n\t\t\t</table>\r\n\t\t </slick-popover>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"showingAllRecords == false\">\r\n\t\t <slick-paging [(pageNumber)]=\"currentPage\" [totalRecords]=\"totalRecords\" [recordsPerPage]=\"recordsPerPage\" (onPageChange)=\"onPageChange($event)\"></slick-paging>\r\n\t\t</div>\r\n\t\t<div class=\"ms-auto\">\r\n\t\t <button #recordsPerPageRef type=\"button\" class=\"btn btn-outline-primary\">{{recordsPerPageValue}} <i style=\"font-size: 12px;\" class=\"far fa-chevron-down\"></i></button>\r\n\t\t <slick-popover [element]=\"recordsPerPageRef\" position=\"top\" showArrow=\"false\" [topOffsetPx]=\"0\" [leftOffsetPx]=\"0\" [showByClick]=\"true\">\r\n\t\t\t<table class=\"table-borderless table-sm table-hover\" style=\"min-width: 150px;\">\r\n\t\t\t <tbody>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('Auto')\"><td>Auto</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('25')\"><td>25</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('50')\"><td>50</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('100')\"><td>100</td></tr>\r\n\t\t\t </tbody>\r\n\t\t\t</table>\r\n\t\t </slick-popover>\r\n\t\t</div>\r\n\t </div>\r\n\t \r\n</div>\r\n\r\n<slick-dialog #columnSelectDialogRef header=\"Select Columns\">\r\n\t<div style=\"text-align: center; width: 475px;\" class=\"mx-5\">\r\n\t\t<div class=\"d-flex\">\r\n\t\t\t<div class=\"flex-fill\">\r\n\t\t\t\t<slick-drop-down [items]=\"favorites\"\r\n\t\t\t\t\t\t\t\t [ngModel]=\"selectedFavorite\"\r\n\t\t\t\t\t\t\t\t (onSelect)=\"loadFavorite($event)\"></slick-drop-down>\r\n\t\t\t</div>\r\n\t\t\t<div><button class=\"btn btn-outline-primary ms-1\" (click)=\"addNewFavorite()\"><i class=\"far fa-plus\"></i></button></div>\r\n\t\t</div>\r\n\t\t<div class=\"d-flex flex-column mt-1\" slick-drop-list (onSlickDropListReorder)=\"onColumnReorder($event)\">\r\n\t\t\t<div *ngFor=\"let column of columnSelectDialogColumns\" class=\"d-flex\" slick-drop-list-item>\r\n\t\t\t\t<div style=\"width: 20px\"><input type=\"checkbox\" style=\"position: relative; top: 2px;\" [(ngModel)]=\"column.visible\" /></div>\r\n\t\t\t\t<div class=\"py-0 flex-fill\" style=\"text-align: left; cursor: ns-resize\" slick-drop-list-grab>{{column.title}}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<slick-dialog-footer>\r\n\t\t<div style=\"margin-top: 10px;\" class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t<button type=\"button\" (click)=\"onSaveColumns()\" class=\"btn btn-outline-primary me-1\"><i class=\"far fa-save\"></i> Save</button> \r\n\t\t\t<button type=\"button\" class=\"btn btn-outline-danger\" (click)=\"onCancelColumns()\">Cancel</button>\r\n\t\t</div>\r\n\t</slick-dialog-footer>\r\n</slick-dialog>\r\n\r\n\r\n<slick-confirm-dialog #addNewFavoriteDialogRef width=\"300\">\r\n\t<label>Enter new favorite name</label>\r\n\t<input type=\"text\" class=\"form-control mx-3\" style=\"width: 250px\" [(ngModel)]=\"newFavoriteText\" />\r\n</slick-confirm-dialog>","import { Injectable } from \"@angular/core\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\nimport { ISlickGridColumnModel } from \"./slick-grid-column.model\";\r\nimport { SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { ISlickGridFavoriteModel } from './slick-grid-favorite.model';\r\n\r\nexport interface ISlickGridOptions {\r\n\tgridKey: string;\r\n\trowHeight: number[];\r\n\r\n\tgetUrl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\trequestModel: SlickGridRequestModel;\r\n\tcolumns: ISlickGridColumnModel[];\r\n\tfavorites: ISlickGridFavoriteModel[];\r\n\tonRowSelectCallback: Function;\r\n\tbordered: boolean;\r\n\tstriped: boolean;\r\n\thover: boolean;\r\n\tautoSelectFirstRow: boolean;\r\n\tdefaultRecordsPerPage: number;\r\n}\r\n\r\nexport class SlickGridOptions implements ISlickGridOptions{\r\n\tpublic gridKey: string;\r\n\tpublic rowHeight: number[];\r\n\r\n\tpublic getUrl: string;\r\n\tpublic httpHeaders: HttpHeaders;\r\n\tpublic requestModel: SlickGridRequestModel;\r\n\tpublic columns: ISlickGridColumnModel[];\r\n\tpublic favorites: ISlickGridFavoriteModel[];\r\n\tpublic onRowSelectCallback: Function;\r\n\tpublic bordered: boolean = null;\r\n\tpublic striped: boolean = null;\r\n\tpublic hover: boolean = null;\r\n\tpublic autoSelectFirstRow: boolean = true;\r\n\tpublic defaultRecordsPerPage: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.columns = [];\r\n\t\tthis.httpHeaders = new HttpHeaders();\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPagingComponent } from \"./slick-paging.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickPagingComponent],\r\n\texports: [SlickPagingComponent]\r\n})\r\nexport class SlickPagingModule { }\r\n\r\nexport { SlickPagingComponent }","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-ordered-list',\r\n\ttemplateUrl: 'slick-ordered-list.component.html'\r\n})\r\nexport class SlickOrderedListComponent implements OnInit, OnDestroy, OnChanges {\r\n\t@Input() items: any[];\r\n\t@Output() itemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() title: string;\r\n\t@Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() sortOrderFieldName: string;\r\n\t@Input() displayFieldName: string;\r\n\t@Input() buttonAlignment: string = \"left\";\r\n\r\n\tuuid: string;\r\n\tinternalItems: any[] = [];\r\n\tanySelected: boolean = false;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\t\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\t\r\n\t}\r\n\r\n\tdocumentClick(e: MouseEvent) {\r\n\t\tif (e.target && SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-ordered-list_\" + this.uuid))\r\n\t\t\treturn;\r\n\r\n\t\t// If we're using this in the picklist, don't do anything\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-pick-list_buttons\")) \r\n\t\t\treturn;\r\n\r\n\t\tthis.internalItems.forEach(item => item.selected = false);\t\t\r\n\t\tthis.anySelected = false;\r\n\t\tif (this.selectedItemsChange)\r\n\t\t\tthis.selectedItemsChange.emit(null);\r\n\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (!this.items || !this.sortOrderFieldName || !this.displayFieldName)\r\n\t\t\treturn;\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.internalItems = [];\r\n\t\t\t\r\n\t\t\tthis.sortList();\r\n\r\n\t\t\tlet sortOrder = 0;\r\n\t\t\tthis.items.forEach(item => {\r\n\t\t\t\tif (!item.uuid)\r\n\t\t\t\t\titem.uuid = SlickUtilsService.newGuid();\r\n\r\n\t\t\t\tif (item)\r\n\t\t\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, sortOrder);\r\n\r\n\t\t\t\tthis.internalItems.push({\r\n\t\t\t\t\tuuid: item.uuid,\r\n\t\t\t\t\tsortOrder: sortOrder,\r\n\t\t\t\t\tselected: false,\r\n\t\t\t\t\ttext: SlickUtilsService.getDeepObject(item, this.displayFieldName)\r\n\t\t\t\t});\r\n\r\n\t\t\t\tsortOrder++;\r\n\t\t\t});\r\n\r\n\t\t\tthis.anySelected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tselectItem(e: MouseEvent, item: any) {\r\n\t\tif (e.ctrlKey) {\r\n\t\t\titem.selected = !item.selected;\r\n\t\t}\r\n\t\telse if (e.shiftKey) {\r\n\t\t\tlet selectedItemIdx = this.internalItems.findIndex(internalItem => item.uuid === internalItem.uuid);\r\n\t\t\tthis.internalItems[selectedItemIdx].selected = !this.internalItems[selectedItemIdx].selected;\r\n\r\n\t\t\t// Check to see if there is a selected item previously in the list. This will be the default\r\n\t\t\t// For example, if the 2nd item has been selected, then they shift-select the 5th item, iterate backwards through\r\n\t\t\t// the list until we find the 2nd item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.\r\n\t\t\tlet prevSelectedIndex = selectedItemIdx;\r\n\t\t\tdo {\r\n\t\t\t\tprevSelectedIndex--;\r\n\t\t\t} while (prevSelectedIndex >= 0 && this.internalItems[prevSelectedIndex].selected === false);\r\n\t\t\t\r\n\t\t\tif (prevSelectedIndex >= 0) {\r\n\t\t\t\tfor (let i = prevSelectedIndex; i <= selectedItemIdx; i++) \r\n\t\t\t\t\tthis.internalItems[i].selected = true;\r\n\t\t\t} else {\r\n\t\t\t\t// Check to see if we're going bottom->top select\r\n\t\t\t\t// For example, if the 5th item has been selected, then they shift-select the 2nd item, iterate forwards through\r\n\t\t\t\t// the list until we find the 5th item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.\r\n\t\t\t\tlet nextSelectedIndex = selectedItemIdx;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tnextSelectedIndex++;\r\n\t\t\t\t} while (nextSelectedIndex <= this.internalItems.length && this.internalItems[nextSelectedIndex].selected === false);\r\n\r\n\t\t\t\tif (nextSelectedIndex <= this.internalItems.length) {\r\n\t\t\t\t\tfor (let i = selectedItemIdx; i <= nextSelectedIndex; i++) \r\n\t\t\t\t\t\tthis.internalItems[i].selected = true;\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.internalItems.forEach(item => item.selected = false);\r\n\t\t\titem.selected = true;\r\n\t\t}\r\n\r\n\t\tthis.anySelected = false;\r\n\t\tlet selectedItems = [];\r\n\t\tthis.internalItems.forEach(item => {\r\n\t\t\tif (item.selected === true)\r\n\t\t\t\tselectedItems.push(item);\r\n\t\t\tthis.anySelected = (this.anySelected === true || item.selected === true);\r\n\t\t});\r\n\r\n\t\tif (this.selectedItemsChange)\r\n\t\t\tthis.selectedItemsChange.emit((selectedItems.length > 0) ? selectedItems : null);\r\n\t}\r\n\r\n\tmoveTop() {\r\n\t\tlet uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);\r\n\t\tlet topArray: any[] = [];\r\n\t\tuuidsToMove.forEach((uuid, idx) => {\r\n\t\t\tlet itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);\r\n\t\t\tlet temp = this.internalItems.splice(itemIdx, 1);\r\n\t\t\ttopArray.push(temp[0]);\r\n\t\t});\r\n\r\n\t\tthis.internalItems = topArray.concat(this.internalItems);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveUp() {\r\n\t\tlet newArray = [];\r\n\t\tthis.internalItems.forEach(x => x.sortOrder *= 10);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tif (internalItem.selected === true)\r\n\t\t\t\tinternalItem.sortOrder -= 11;\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);\r\n\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\t\t\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveDown() {\r\n\t\tlet newArray = [];\r\n\t\tthis.internalItems.forEach(x => x.sortOrder *= 10);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tif (internalItem.selected === true)\r\n\t\t\t\tinternalItem.sortOrder += 11;\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);\r\n\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveBottom() {\r\n\t\tlet uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);\r\n\t\tlet bottomArray: any[] = [];\r\n\t\tuuidsToMove.forEach((uuid, idx) => {\r\n\t\t\tlet itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);\r\n\t\t\tlet temp = this.internalItems.splice(itemIdx, 1);\r\n\t\t\tbottomArray.push(temp[0]);\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.concat(bottomArray);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tsortList() {\r\n\t\tif (this.items) {\r\n\t\t\tthis.items = this.items.sort((a: any, b: any) => {\r\n\t\t\t\tlet val1 = SlickUtilsService.getDeepObject(a, this.sortOrderFieldName);\r\n\t\t\t\tlet val2 = SlickUtilsService.getDeepObject(b, this.sortOrderFieldName);\r\n\r\n\t\t\t\tif (val1 < val2)\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\telse if (val1 > val2)\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\telse\r\n\t\t\t\t\treturn 0;\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.items.forEach((item, idx) => SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx));\r\n\t\tthis.itemsChange.emit(this.items);\r\n\t}\r\n}","<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-pick-list\",\r\n\ttemplateUrl: \"slick-pick-list.component.html\"\r\n})\r\nexport class SlickPickListComponent {\r\n\t@Input() leftItems: any[];\r\n\t@Output() leftItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() leftTitle: string;\r\n\t@Input() rightItems: any[];\r\n\t@Output() rightItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() rightTitle: string;\r\n\t@Input() sortOrderFieldName: string;\r\n\t@Input() displayFieldName: string;\r\n\r\n\tuuid: string;\r\n\tleftAnySelected = false;\r\n\trightAnySelected = false;\r\n\tleftSelectedItems: any[] = [];\r\n\trightSelectedItems: any[] = [];\r\n\t\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tonLeftSelectedItemsChange(selectedItems: any[]) {\r\n\t\tthis.leftSelectedItems = selectedItems || [];\r\n\t\tthis.leftAnySelected = (this.leftSelectedItems.length > 0);\t\t\t\r\n\t\tthis.rightAnySelected = (this.rightSelectedItems.length > 0);\r\n\t}\r\n\r\n\tonRightSelectedItemsChange(selectedItems: any[]) {\r\n\t\tthis.rightSelectedItems = selectedItems || [];\r\n\t\tthis.leftAnySelected = (this.leftSelectedItems.length > 0);\r\n\t\tthis.rightAnySelected = (this.rightSelectedItems.length > 0);\r\n\t}\r\n\r\n\tmoveLeft() {\r\n\t\tlet rightSelectedUuids = this.rightSelectedItems.map(item => item.uuid);\r\n\t\trightSelectedUuids.forEach(uuid => {\r\n\t\t\tlet itemIndex = this.rightItems.findIndex(i => i.uuid === uuid);\r\n\t\t\tlet item = this.rightItems.splice(itemIndex, 1)[0];\t\t\t\r\n\r\n\t\t\tthis.leftItems.push(item);\r\n\t\t});\r\n\t\t// Angular ngOnChange only works on reference detection. This will create a new array with a new ref\r\n\t\tthis.leftItems = this.leftItems.slice();\r\n\t\tthis.rightItems = this.rightItems.slice();\r\n\r\n\t\tthis.rightSelectedItems = [];\r\n\r\n\t\tif (this.leftItemsChange)\r\n\t\t\tthis.leftItemsChange.emit(this.leftItems);\r\n\r\n\t\tif (this.rightItemsChange)\r\n\t\t\tthis.rightItemsChange.emit(this.rightItems);\r\n\r\n\t\tthis.leftAnySelected = false;\r\n\t\tthis.rightAnySelected = false;\r\n\t}\r\n\r\n\tmoveRight() {\r\n\t\tlet leftSelectedUuids = this.leftSelectedItems.map(item => item.uuid);\r\n\t\tleftSelectedUuids.forEach(uuid => {\r\n\t\t\tlet itemIndex = this.leftItems.findIndex(i => i.uuid === uuid);\r\n\t\t\tlet item = this.leftItems.splice(itemIndex, 1)[0];\r\n\r\n\t\t\tthis.rightItems.push(item);\r\n\t\t});\r\n\t\t// Angular ngOnChange only works on reference detection. This will create a new array with a new ref\r\n\t\tthis.rightItems = this.rightItems.slice();\r\n\t\tthis.leftItems = this.leftItems.slice();\r\n\r\n\t\tthis.leftSelectedItems = [];\r\n\r\n\t\tif (this.leftItemsChange)\r\n\t\t\tthis.leftItemsChange.emit(this.leftItems);\r\n\r\n\t\tif (this.rightItemsChange)\r\n\t\t\tthis.rightItemsChange.emit(this.rightItems);\r\n\r\n\t\tthis.leftAnySelected = false;\r\n\t\tthis.rightAnySelected = false;\r\n\t}\r\n}","<div class=\"slick-pick-list\" id=\"slick-pick-list_{{uuid}}\">\r\n\t<div class=\"slick-pick-list_left\">\r\n\t\t<slick-ordered-list [(items)]=\"leftItems\" [title]=\"leftTitle\" (selectedItemsChange)=\"onLeftSelectedItemsChange($event)\" [sortOrderFieldName]=\"sortOrderFieldName\" [displayFieldName]=\"displayFieldName\"></slick-ordered-list>\r\n\t</div>\r\n\t<div class=\"slick-pick-list_buttons\">\r\n\t\t<button type=\"button\" class=\"moveLeft btn btn-outline-primary\" (click)=\"moveLeft()\" [disabled]=\"rightAnySelected === false\"><i class=\"far fa-chevron-double-left\"></i></button>\r\n\t\t<button type=\"button\" class=\"moveRight btn btn-outline-primary\" (click)=\"moveRight()\" [disabled]=\"leftAnySelected === false\"><i class=\"far fa-chevron-double-right\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-pick-list_right\">\r\n\t\t<slick-ordered-list [(items)]=\"rightItems\" [title]=\"rightTitle\" (selectedItemsChange)=\"onRightSelectedItemsChange($event)\" [sortOrderFieldName]=\"sortOrderFieldName\" [displayFieldName]=\"displayFieldName\" buttonAlignment=\"right\"></slick-ordered-list>\r\n\t</div>\r\n\t<br />\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickOrderedListComponent } from \"./slick-ordered-list.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickOrderedListComponent],\r\n\texports: [CommonModule, FormsModule, SlickOrderedListComponent]\r\n})\r\nexport class SlickOrderedListModule { }\r\n\r\nexport { SlickOrderedListComponent };","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPickListComponent } from \"./slick-pick-list.component\";\r\nimport { SlickOrderedListModule } from \"../slick-ordered-list/slick-ordered-list.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickOrderedListModule],\r\n\tdeclarations: [SlickPickListComponent],\r\n\texports: [CommonModule, SlickOrderedListModule, SlickPickListComponent]\r\n})\r\nexport class SlickPickListModule { }\r\n\r\nexport { SlickPickListComponent }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickPopoverComponent } from \"./slick-popover.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickPopoverComponent],\r\n\texports: [CommonModule, SlickPopoverComponent]\r\n})\r\nexport class SlickPopoverModule { }\r\nexport { SlickPopoverComponent }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { SlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { ISlickGridFavoriteModel, SlickGridFavoriteModel } from \"./slick-grid-favorite.model\";\r\nimport { ISlickGridRequestModel, SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { ISlickGridResponseModel, SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { SlickGridComponent } from \"./slick-grid.component\";\r\nimport { SlickGridColumnTemplateDirective } from \"./slick-grid-column-template.directive\";\r\nimport { ISlickGridOptions, SlickGridOptions } from \"./slick-grid.options\";\r\nimport { SlickGridService } from \"./slick-grid.service\";\r\nimport { SlickConfirmDialogModule } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickDropDownModule } from \"../slick-drop-down/slick-drop-down.module\";\r\nimport { SlickDropListModule } from \"../slick-drop-list/slick-drop-list.module\";\r\nimport { SlickPagingModule } from \"../slick-paging/slick-paging.module\";\r\nimport { SlickPickListModule } from \"../slick-pick-list/slick-pick-list.module\";\r\nimport { SlickPopoverModule } from \"../slick-popover/slick-popover.module\";\r\nimport { SlickGridSanitizeHtmlPipe } from \"./slick-grid-sanitize.pipe\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickConfirmDialogModule, SlickPickListModule, SlickPopoverModule, SlickDialogModule, SlickDropDownModule, SlickDropListModule, SlickPagingModule, HttpClientModule],\r\n\tdeclarations: [SlickGridComponent, SlickGridColumnTemplateDirective, SlickGridSanitizeHtmlPipe],\r\n\texports: [SlickGridComponent, SlickGridColumnTemplateDirective, SlickPickListModule, SlickDialogModule, SlickDropDownModule],\r\n\tproviders: [SlickGridService, SlickFunctionLockService, SlickGridSanitizeHtmlPipe]\r\n})\r\nexport class SlickGridModule {\r\n}\r\nexport { SlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection }\r\nexport { ISlickGridFavoriteModel, SlickGridFavoriteModel }\r\nexport { ISlickGridRequestModel, SlickGridRequestModel }\r\nexport { ISlickGridResponseModel, SlickGridResponseModel }\r\nexport { SlickGridComponent }\r\nexport { SlickGridColumnTemplateDirective }\r\nexport { ISlickGridOptions, SlickGridOptions }\r\n\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickMultiSelectService {\r\n\tpublic getVisibleItems(items: any[], selectedIds: string[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\t\t\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet visibleItems: any[] = items.map((item) => {\r\n\t\t\tlet id = item[idFieldName];\t\t\t\t\t\t\r\n\t\t\tif (id === null || id === undefined) {\r\n\t\t\t\tconsole.error(\"%c Id not found for multiSelect item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t\t}\r\n\r\n\t\t\tif (!selectedIds || (selectedIds.indexOf(id) === -1 && selectedIds.indexOf(id.toString()) === -1)) {\r\n\t\t\t\tlet text = item[textFieldName];\r\n\t\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttext: (text ?? \"\").toString(),\r\n\t\t\t\t\titem: item\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvisibleItems = visibleItems.filter(x => !!x);\r\n\r\n\t\tif (visibleItems.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c Warning! No text was found for multiSelect item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\r\n\t\treturn visibleItems;\r\n\t}\r\n\r\n\tpublic getSelectedItems(items: any[], selectedIds: string[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\r\n\t\tif (!items || items.length === 0 || !selectedIds || selectedIds.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItems: any[] = selectedIds.map((id: string) => {\r\n\t\t\tlet item = items.find(x => x[idFieldName] == id);\r\n\t\t\t\r\n\t\t\tif (item === null || item === undefined) {\r\n\t\t\t\tconsole.error(\"%c Id not found for multiSelect item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tlet text = item[textFieldName];\r\n\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tid: id,\r\n\t\t\t\ttext: text ? text.toString() : null\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c Warning! No text was found for multiSelect item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\t\treturn selectedItems;\r\n\t}\r\n\r\n\tpublic getSelectedItem(items: any[], selectedId: string): any {\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItem = items.find((item) => { return item.id === selectedId });\r\n\r\n\t\tif (selectedItem)\r\n\t\t\treturn selectedItem;\r\n\t\telse\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tpublic getItemIndex(items: any[], selectedId: string): number {\r\n\t\treturn items.findIndex((item) => { return item.id === selectedId });\r\n\t}\r\n}","import { Component, NgZone, Input, Output, EventEmitter, ElementRef, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, forwardRef } from \"@angular/core\";\r\nimport { SlickMultiSelectService } from \"./slick-multi-select.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\n\r\nexport enum SlickMultiSelectSearchTypes { startsWith, eachWord, any }\r\n\r\n@Component({\r\n\tselector: 'slick-multi-select',\r\n\ttemplateUrl: 'slick-multi-select.component.html',\r\n\tproviders: [SlickMultiSelectService,\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickMultiSelectComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickMultiSelectComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n\t@Input() placeholder: string = '';\r\n\t@Input() items: any[];\r\n\t@Input() idFieldName: string = \"id\";\r\n\t@Input() textFieldName: string = \"text\";\r\n\t@Input() disabled: boolean = false;\r\n\t@Input() allowEmpty: string = 'true';\r\n\t@Input() singleSelect: boolean = false;\r\n\t@Input() width: string = '100%';\r\n\t@Input() listWidth: string = '100%';\r\n\t@Input() height: string = '300px';\r\n\t@Input() showLoadingMessage: boolean = false;\r\n\t@Input() showDebug: boolean;\r\n\t@Input() tabindex: number;\r\n\t@Input() isMobile: boolean;\r\n\t@Input() searchType: SlickMultiSelectSearchTypes = SlickMultiSelectSearchTypes.eachWord;\r\n\r\n\t@Output() onExpand: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onCollapse: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t@ViewChild(\"containerDiv\") containerDiv: ElementRef;\r\n\t@ViewChild(\"multiSelectList\") multiSelectList: ElementRef;\r\n\t@ViewChild(\"selectedTextInputRef\") selectedTextInputRef: ElementRef;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tprivate fnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\tuuid: string;\r\n\tselectedIds: string[];\r\n\tselectedText: string;\r\n\tkeyboardActive: boolean = false;\r\n\texpanded: boolean = false;\r\n\tfilterText: string = '';\r\n\tselectedIndex: number;\r\n\tselectedItems: any[];\r\n\tvisibleItems: any[];\r\n\tleft: string;\r\n\ttop: string;\r\n\tlistGroupWidth: string;\r\n\tisAndroid: boolean = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');\r\n\r\n\tprivate skipClickExpand: boolean = false;\r\n\r\n\tconstructor(private ngZone: NgZone,\r\n\t\tprivate slickMultiSelectService: SlickMultiSelectService,\r\n\t\tprivate el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.multiSelectList.nativeElement.remove(this.multiSelectList);\r\n\t\tdocument.body.appendChild(this.multiSelectList.nativeElement);\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj)\r\n\t\t\tthis.selectedIds = obj;\r\n\t\telse\r\n\t\t\tthis.selectedIds = null;\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.isMobile) {\r\n\t\t\tthis.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.singleSelect) {\r\n\t\t\tthis.singleSelect = (this.singleSelect.toString().toLowerCase() === 'true') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.searchType) {\r\n\t\t\tif (changes.searchType.currentValue.toString().toLowerCase() === 'startswith')\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.startsWith;\r\n\t\t\telse if (changes.searchType.currentValue.toString().toLowerCase() === 'any')\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.any;\r\n\t\t\telse\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.eachWord;\r\n\t\t}\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tif (this.selectedTextInputRef && document.activeElement == this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.collapse();\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.multiSelectList.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\r\n\t}\r\n\r\n\tasync onKeyboardIconClicked() {\r\n\t\tif (this.keyboardActive === true) {\r\n\t\t\tthis.collapse();\r\n\t\t\tthis.keyboardActive = false;\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.keyboardActive = true;\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t(<HTMLElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t\t}\r\n\t}\r\n\r\n\tasync expand() {\r\n\t\tif (this.disabled)\r\n\t\t\treturn;\r\n\r\n\t\tthis.reposition();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.multiSelectList.nativeElement.style.display = \"inline-block\";\r\n\r\n\t\tlet selectedItems = this.multiSelectList.nativeElement.getElementsByClassName(\"selected\");\r\n\t\tif (selectedItems && selectedItems.length > 0)\r\n\t\t\t(<HTMLElement>selectedItems[0]).scrollIntoView({ block: 'nearest' });\r\n\r\n\t\tthis.expanded = true;\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onExpand)\r\n\t\t\tthis.onExpand.emit();\r\n\t}\r\n\r\n\tcollapse() {\r\n\t\tthis.expanded = false;\r\n\t\tthis.multiSelectList.nativeElement.style.display = \"none\";\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onCollapse)\r\n\t\t\tthis.onCollapse.emit();\r\n\t}\r\n\r\n\tasync reposition() {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tlet rect = this.containerDiv.nativeElement.getBoundingClientRect();\r\n\t\tlet containerLeft = rect.left;\r\n\t\tlet containerTop = rect.top;\r\n\t\tlet containerHeight = this.containerDiv.nativeElement.offsetHeight;\r\n\t\tlet containerWidth = rect.width;\r\n\r\n\t\tthis.width = containerWidth;\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.listGroupWidth = this.width;\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.listGroupWidth = \"auto\";\r\n\t\telse\r\n\t\t\tthis.listGroupWidth = this.listWidth;\r\n\t\tthis.top = (containerTop + containerHeight);\r\n\t\tthis.left = containerLeft;\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\t// If they clicked on the keyboard icon, don't do anything\r\n\t\tif (SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-multi-select_mobile-container\") &&\r\n\t\t\tSlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-multi-select_\" + this.uuid))\r\n\t\t\treturn;\r\n\r\n\t\tconst clickedInside = SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-multi-select_list-item\");\r\n\t\tif (!clickedInside) {\r\n\t\t\tthis.keyboardActive = false;\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.collapse();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate selectItem(id: string) {\r\n\t\tlet item = this.slickMultiSelectService.getSelectedItem(this.visibleItems, id);\r\n\r\n\t\tif (item) {\r\n\r\n\t\t\tif (this.onSelect)\r\n\t\t\t\tthis.onSelect.emit(item);\r\n\r\n\t\t\tif (!this.selectedIds)\r\n\t\t\t\tthis.selectedIds = [];\r\n\r\n\t\t\tthis.selectedIds.push(id);\r\n\t\t\tthis.propagateChange(this.selectedIds);\r\n\r\n\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\t\tthis.reposition();\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\r\n\t\t\tif (this.singleSelect === true)\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus(showMobileKeyboard: boolean = false) {\r\n\t\t(<HTMLElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t\tif (showMobileKeyboard === true)\r\n\t\t\tthis.keyboardActive = true;\r\n\t}\r\n\r\n\tasync onFocus() {\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tthis.filterText = '';\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\t// This is kind of hacky, but if onFocus is called by clicking the multiSelect, the onMultiSelectClick event is called as well\r\n\t\t// That function will expand or collapse, depending on the state. Since this expands, it thinks it needs to collapse.\r\n\t\t// So fake it out and tell it NOT to collapse. BUT, if we came in from tabbing into the field, then it would mess up\r\n\t\t// the click event. So only wait for 1/2 second.\r\n\t\tthis.skipClickExpand = true;\r\n\t\tthis.expand();\r\n\t\tawait SlickSleepService.sleep(500);\r\n\t\tthis.skipClickExpand = false;\r\n\t}\r\n\r\n\tasync onKeyDown(e: KeyboardEvent) {\r\n\t\tif (e.key !== 'Tab' &&\r\n\t\t\te.key !== 'Enter' &&\r\n\t\t\te.key !== 'Escape' &&\r\n\t\t\te.key !== 'Backspace' &&\r\n\t\t\te.key !== 'ArrowUp' &&\r\n\t\t\te.key !== 'ArrowDown'\r\n\t\t) {\r\n\t\t\t// If F1 is pressed, key length will be 2\r\n\t\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\t// If this is android, it won't pass us any key data so just read the entire input element\r\n\t\tif (this.isAndroid === true) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tthis.filterText = (<HTMLInputElement>this.selectedTextInputRef.nativeElement).value;\r\n\t\t\tthis.filterSearch();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Tab/enter\r\n\t\tif (e.key === 'Tab') {\r\n\t\t\tif (this.filterText && this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectItem(this.visibleItems[0].id);\r\n\t\t\t\tthis.filterText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.selectedIndex = null;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tif (this.filterText && this.selectedIndex !== null && this.selectedIndex !== undefined) {\r\n\t\t\t\tthis.selectItem(this.visibleItems[this.selectedIndex].id);\r\n\t\t\t\tthis.filterText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.selectedIndex = null;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (e.key === 'Escape') {\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Backspace\r\n\t\tif (e.key === 'Backspace' && this.filterText) {\r\n\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t\t\tif (this.filterText.length === 0) {\r\n\t\t\t\tthis.selectedText = '';\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tthis.filterSearch();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (e.key === 'ArrowUp') {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (e.key === 'ArrowDown') {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded || !this.visibleItems)\r\n\t\t\t\tthis.expand();\r\n\r\n\t\t\tif (this.selectedIndex < this.visibleItems.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If F1 is pressed, key length will be 2\r\n\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey)\r\n\t\t\treturn false;\r\n\r\n\t\tif (e.key >= ' ' && e.key <= '~') {\r\n\t\t\tthis.filterText += e.key;\r\n\r\n\t\t\tthis.filterSearch();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async filterSearch() {\r\n\t\tif (!this.expanded)\r\n\t\t\tthis.expand();\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tif (this.searchType === SlickMultiSelectSearchTypes.startsWith) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => (x.text ?? \"\").toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.searchType === SlickMultiSelectSearchTypes.eachWord) {\r\n\r\n\t\t\t// Get the words where the beginning matches the search first\r\n\t\t\tconst startsWithItems = this.visibleItems.filter(x => (x.text ?? \"\").toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tconst eachWordItems = this.visibleItems.filter(x => (\" \" + (x.text ?? \"\").toLowerCase()).indexOf(\" \" + this.filterText.toLowerCase()) > 0);\r\n\r\n\t\t\tthis.visibleItems = [...startsWithItems, ...eachWordItems];\r\n\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.reposition();\r\n\t}\r\n\r\n\tonMultiSelectClicked() {\r\n\t\tif (this.skipClickExpand === true) {\r\n\t\t\tthis.skipClickExpand = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\tif (this.expanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\t}\r\n\r\n\tonItemClick(item: any) {\r\n\t\tthis.selectItem(item.id);\r\n\r\n\t\tif (this.keyboardActive === true)\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t}\r\n\r\n\tonRemoveItem(item: any) {\r\n\t\tthis.selectedIds = this.selectedIds.filter(id => id !== item.id);\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tthis.propagateChange(this.selectedIds);\r\n\t}\r\n}","<div #containerDiv id=\"slick-multi-select_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" class=\"slick-multi-select\" [class.mobile]=\"isMobile === true\" [class.open]=\"expanded\">\r\n\t<div class=\"slick-multi-select_input-container\">\r\n\t\t<div *ngIf=\"disabled === false\" style=\"cursor: pointer !important; flex-grow: 1;\" [ngClass]=\"{ 'slick-multi-select_mobile': isMobile === true }\" (click)=\"onMultiSelectClicked()\">\r\n\t\t\t<div *ngFor=\"let selectedItem of selectedItems\" class=\"slick-multi-select_selected-item card\"><div class=\"slick-multi-select_remove\" (click)=\"onRemoveItem(selectedItem)\"><i class=\"fas fa-times-circle bg-white text-danger\"></i></div>{{selectedItem.text}}</div>\r\n\t\t\t<input #selectedTextInputRef *ngIf=\"!isMobile\" [attr.tabindex]=\"tabindex\" [ngClass]=\"{'slick-multi-select_show-selected-text': (keyboardActive || (selectedText && selectedText.length > 0)) }\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" ng-disabled='disabled' readonly [placeholder]='placeholder' />\r\n\t\t\t<input #selectedTextInputRef *ngIf=\"isMobile === true\" [ngClass]=\"{'slick-multi-select_show-selected-text': (keyboardActive || (selectedText && selectedText.length > 0)) }\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" />\r\n\t\t</div>\r\n\t\t<div *ngIf=\"disabled === false && isMobile === true\" class=\"slick-multi-select_mobile-container\">\r\n\t\t\t<i class=\"far fa-keyboard\" style=\"cursor: pointer\" (click)=\"onKeyboardIconClicked()\"></i>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"disabled === true\" class='input-group'>\r\n\t\t<div *ngFor=\"let selectedItem of selectedItems\" class=\"slick-multi-select_selected-item card\">{{selectedItem.text}}</div>\r\n\t</div>\r\n\r\n\t<ul #multiSelectList id=\"slick-multi-select-list_{{uuid}}\" class='slick-multi-select-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n\t\t<li *ngFor=\"let item of visibleItems; let index = index;\" (mouseover)=\"selectedIndex = index\" (click)=\"onItemClick(item)\" class=\"dropdown-item slick-multi-select_list-item\">{{item.text}}</li>\r\n\t</ul>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickMultiSelectComponent } from \"./slick-multi-select.component\";\r\nimport { SlickMultiSelectService } from \"./slick-multi-select.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickMultiSelectComponent],\r\n\texports: [SlickMultiSelectComponent]\r\n})\r\nexport class SlickMultiSelectModule { }\r\n\r\nexport { SlickMultiSelectComponent }","import { Component, Input, Output, OnChanges, SimpleChanges, EventEmitter, ElementRef, ViewChild, HostListener } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\nconst imgExtensions: string[] = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tif', 'tiff']\r\n\r\n@Component({\r\n\tselector: 'slick-profile-picture',\r\n\ttemplateUrl: 'slick-profile-picture.component.html'\r\n})\r\nexport class SlickProfilePictureComponent implements OnChanges {\r\n\t@Input(\"imageSrc\") imageSrc: string;\r\n\t@Input(\"gravatarEmailAddress\") gravatarEmailAddress: string;\r\n\t@Input(\"viewOnly\") viewOnly: boolean = false;\r\n\t@Input(\"width\") width: string = \"80px\";\r\n\t@Input(\"height\") height: string = \"80px\";\r\n\t@Input(\"resizeWidth\") resizeWidth: number = 600;\r\n\t@Input(\"resizeHeight\") resizeHeight: number = 600;\r\n\t@Output(\"profilePictureChanged\") filesChangedEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"fileInput\") fileInput: ElementRef;\r\n\r\n\tprivate fnOnFileInputChange = (e) => this.onFileInputChange(e);\r\n\r\n\t@HostListener('click', ['$event'])\r\n\tonClick(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.fileInput.nativeElement.click();\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).addEventListener(\"change\", this.fnOnFileInputChange);\r\n\t}\r\n\r\n\tprivate onFileInputChange(e) {\r\n\t\tthis.processFile((<HTMLInputElement>this.fileInput.nativeElement).files);\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event'])\r\n\tonDrop(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\r\n\t\tthis.processFile((<DataTransfer>e.dataTransfer).files);\r\n\t}\r\n\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.containerRef.nativeElement.classList.add(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\tuuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.gravatarEmailAddress) {\r\n\t\t\tvar MD5 = function (s) { function L(k, d) { return (k << d) | (k >>> (32 - d)) } function K(G, k) { var I, d, F, H, x; F = (G & 2147483648); H = (k & 2147483648); I = (G & 1073741824); d = (k & 1073741824); x = (G & 1073741823) + (k & 1073741823); if (I & d) { return (x ^ 2147483648 ^ F ^ H) } if (I | d) { if (x & 1073741824) { return (x ^ 3221225472 ^ F ^ H) } else { return (x ^ 1073741824 ^ F ^ H) } } else { return (x ^ F ^ H) } } function r(d, F, k) { return (d & F) | ((~d) & k) } function q(d, F, k) { return (d & k) | (F & (~k)) } function p(d, F, k) { return (d ^ F ^ k) } function n(d, F, k) { return (F ^ (d | (~k))) } function u(G, F, aa, Z, k, H, I) { G = K(G, K(K(r(F, aa, Z), k), I)); return K(L(G, H), F) } function f(G, F, aa, Z, k, H, I) { G = K(G, K(K(q(F, aa, Z), k), I)); return K(L(G, H), F) } function D(G, F, aa, Z, k, H, I) { G = K(G, K(K(p(F, aa, Z), k), I)); return K(L(G, H), F) } function t(G, F, aa, Z, k, H, I) { G = K(G, K(K(n(F, aa, Z), k), I)); return K(L(G, H), F) } function e(G) { var Z; var F = G.length; var x = F + 8; var k = (x - (x % 64)) / 64; var I = (k + 1) * 16; var aa = Array(I - 1); var d = 0; var H = 0; while (H < F) { Z = (H - (H % 4)) / 4; d = (H % 4) * 8; aa[Z] = (aa[Z] | (G.charCodeAt(H) << d)); H++ } Z = (H - (H % 4)) / 4; d = (H % 4) * 8; aa[Z] = aa[Z] | (128 << d); aa[I - 2] = F << 3; aa[I - 1] = F >>> 29; return aa } function B(x) { var k = \"\", F = \"\", G, d; for (d = 0; d <= 3; d++) { G = (x >>> (d * 8)) & 255; F = \"0\" + G.toString(16); k = k + F.substr(F.length - 2, 2) } return k } function J(k) { k = k.replace(/rn/g, \"n\"); var d = \"\"; for (var F = 0; F < k.length; F++) { var x = k.charCodeAt(F); if (x < 128) { d += String.fromCharCode(x) } else { if ((x > 127) && (x < 2048)) { d += String.fromCharCode((x >> 6) | 192); d += String.fromCharCode((x & 63) | 128) } else { d += String.fromCharCode((x >> 12) | 224); d += String.fromCharCode(((x >> 6) & 63) | 128); d += String.fromCharCode((x & 63) | 128) } } } return d } var C = Array(); var P, h, E, v, g, Y, X, W, V; var S = 7, Q = 12, N = 17, M = 22; var A = 5, z = 9, y = 14, w = 20; var o = 4, m = 11, l = 16, j = 23; var U = 6, T = 10, R = 15, O = 21; s = J(s); C = e(s); Y = 1732584193; X = 4023233417; W = 2562383102; V = 271733878; for (P = 0; P < C.length; P += 16) { h = Y; E = X; v = W; g = V; Y = u(Y, X, W, V, C[P + 0], S, 3614090360); V = u(V, Y, X, W, C[P + 1], Q, 3905402710); W = u(W, V, Y, X, C[P + 2], N, 606105819); X = u(X, W, V, Y, C[P + 3], M, 3250441966); Y = u(Y, X, W, V, C[P + 4], S, 4118548399); V = u(V, Y, X, W, C[P + 5], Q, 1200080426); W = u(W, V, Y, X, C[P + 6], N, 2821735955); X = u(X, W, V, Y, C[P + 7], M, 4249261313); Y = u(Y, X, W, V, C[P + 8], S, 1770035416); V = u(V, Y, X, W, C[P + 9], Q, 2336552879); W = u(W, V, Y, X, C[P + 10], N, 4294925233); X = u(X, W, V, Y, C[P + 11], M, 2304563134); Y = u(Y, X, W, V, C[P + 12], S, 1804603682); V = u(V, Y, X, W, C[P + 13], Q, 4254626195); W = u(W, V, Y, X, C[P + 14], N, 2792965006); X = u(X, W, V, Y, C[P + 15], M, 1236535329); Y = f(Y, X, W, V, C[P + 1], A, 4129170786); V = f(V, Y, X, W, C[P + 6], z, 3225465664); W = f(W, V, Y, X, C[P + 11], y, 643717713); X = f(X, W, V, Y, C[P + 0], w, 3921069994); Y = f(Y, X, W, V, C[P + 5], A, 3593408605); V = f(V, Y, X, W, C[P + 10], z, 38016083); W = f(W, V, Y, X, C[P + 15], y, 3634488961); X = f(X, W, V, Y, C[P + 4], w, 3889429448); Y = f(Y, X, W, V, C[P + 9], A, 568446438); V = f(V, Y, X, W, C[P + 14], z, 3275163606); W = f(W, V, Y, X, C[P + 3], y, 4107603335); X = f(X, W, V, Y, C[P + 8], w, 1163531501); Y = f(Y, X, W, V, C[P + 13], A, 2850285829); V = f(V, Y, X, W, C[P + 2], z, 4243563512); W = f(W, V, Y, X, C[P + 7], y, 1735328473); X = f(X, W, V, Y, C[P + 12], w, 2368359562); Y = D(Y, X, W, V, C[P + 5], o, 4294588738); V = D(V, Y, X, W, C[P + 8], m, 2272392833); W = D(W, V, Y, X, C[P + 11], l, 1839030562); X = D(X, W, V, Y, C[P + 14], j, 4259657740); Y = D(Y, X, W, V, C[P + 1], o, 2763975236); V = D(V, Y, X, W, C[P + 4], m, 1272893353); W = D(W, V, Y, X, C[P + 7], l, 4139469664); X = D(X, W, V, Y, C[P + 10], j, 3200236656); Y = D(Y, X, W, V, C[P + 13], o, 681279174); V = D(V, Y, X, W, C[P + 0], m, 3936430074); W = D(W, V, Y, X, C[P + 3], l, 3572445317); X = D(X, W, V, Y, C[P + 6], j, 76029189); Y = D(Y, X, W, V, C[P + 9], o, 3654602809); V = D(V, Y, X, W, C[P + 12], m, 3873151461); W = D(W, V, Y, X, C[P + 15], l, 530742520); X = D(X, W, V, Y, C[P + 2], j, 3299628645); Y = t(Y, X, W, V, C[P + 0], U, 4096336452); V = t(V, Y, X, W, C[P + 7], T, 1126891415); W = t(W, V, Y, X, C[P + 14], R, 2878612391); X = t(X, W, V, Y, C[P + 5], O, 4237533241); Y = t(Y, X, W, V, C[P + 12], U, 1700485571); V = t(V, Y, X, W, C[P + 3], T, 2399980690); W = t(W, V, Y, X, C[P + 10], R, 4293915773); X = t(X, W, V, Y, C[P + 1], O, 2240044497); Y = t(Y, X, W, V, C[P + 8], U, 1873313359); V = t(V, Y, X, W, C[P + 15], T, 4264355552); W = t(W, V, Y, X, C[P + 6], R, 2734768916); X = t(X, W, V, Y, C[P + 13], O, 1309151649); Y = t(Y, X, W, V, C[P + 4], U, 4149444226); V = t(V, Y, X, W, C[P + 11], T, 3174756917); W = t(W, V, Y, X, C[P + 2], R, 718787259); X = t(X, W, V, Y, C[P + 9], O, 3951481745); Y = K(Y, h); X = K(X, E); W = K(W, v); V = K(V, g) } var i = B(Y) + B(X) + B(W) + B(V); return i.toLowerCase() };\r\n\t\t\tthis.gravatarEmailAddress = this.gravatarEmailAddress.trim().toLowerCase();\r\n\t\t\tthis.imageSrc = 'http://www.gravatar.com/avatar/' + MD5(this.gravatarEmailAddress) + '.jpg?s=' + 80;\r\n\t\t}\r\n\r\n\t\tif (changes.viewOnly && changes.viewOnly.currentValue)\r\n\t\t\tthis.viewOnly = (changes.viewOnly.currentValue.toString().toLowerCase() !== 'false');\r\n\t}\r\n\r\n\tprivate async processFile(files: FileList) {\r\n\t\tif (files && files.length > 0) {\r\n\t\t\tlet file: File = files.item(0);\r\n\r\n\t\t\tlet fileNameParts = file.name.split('.');\r\n\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\t\t\tlet fileType = file.type;\r\n\r\n\t\t\tif (imgExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\tlet img = new Image;\r\n\t\t\t\timg.onload = () => {\r\n\t\t\t\t\tthis.imageSrc = this.resizeImageToBase64(img, fileType, this.resizeWidth, this.resizeHeight);\r\n\t\t\t\t\tif (this.filesChangedEmitter)\r\n\t\t\t\t\t\tthis.filesChangedEmitter.emit(this.imageSrc);\r\n\t\t\t\t}\r\n\t\t\t\timg.src = await this.getBase64(file);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate resizeImageToBase64(img: HTMLImageElement, fileType: string, width: number, height: number): string {\r\n\t\tlet scale: number = 1;\r\n\t\tif (img.width > img.height) {\r\n\t\t\tif (img.width > width)\r\n\t\t\t\tscale = width / img.width;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (img.height > height)\r\n\t\t\t\tscale = height / img.height;\r\n\t\t}\r\n\r\n\t\tlet newWidth = img.width * scale;\r\n\t\tlet newHeight = img.height * scale;\r\n\r\n\t\t// We create a canvas and get its context.\r\n\t\tvar canvas = document.createElement('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\t// We set the dimensions at the wanted size.\r\n\t\tcanvas.width = newWidth;\r\n\t\tcanvas.height = newHeight;\r\n\r\n\t\t// We resize the image with the canvas method drawImage();\r\n\t\tctx.drawImage(img, 0, 0, newWidth, newHeight);\r\n\r\n\t\treturn canvas.toDataURL(fileType);\r\n\t}\r\n\r\n\tprivate getBase64(file: File): Promise<string> {\r\n\t\treturn new Promise<string>((resolve, reject) => {\r\n\t\t\tlet reader = new FileReader();\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t\treader.onload = () => resolve(<string>reader.result);\r\n\t\t\treader.onerror = (error) => reject('Error: ' + error);\r\n\t\t});\r\n\t}\r\n}\r\n","<div #containerRef id=\"slick-profile-picture_{{uuid}}\" class=\"slick-profile-picture card\" [ngClass]=\"{ 'slick-profile-picture_view-only': viewOnly === true, 'slick-profile-picture_editable': viewOnly === false }\" [ngStyle]=\"{ 'width': width, 'min-width': width, 'height': height, 'min-height': height }\">\r\n\t<div class=\"slick-profile-picture_text\" *ngIf='viewOnly === false'>Click to change...</div>\r\n\t<img class=\"slick-profile-picture_img\" *ngIf=\"imageSrc\" [src]=\"imageSrc\" [ngStyle]=\"{ 'max-width': width, 'max-height': height }\" />\r\n</div>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickProfilePictureComponent } from \"./slick-profile-picture.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickProfilePictureComponent],\r\n\texports: [CommonModule, FormsModule, SlickProfilePictureComponent]\r\n})\r\nexport class SlickProfilePictureModule { }\r\nexport { SlickProfilePictureComponent }\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickProgressBarService {\r\n\tprivate isVisible: boolean = false;\r\n\tprivate progressPercent: number = 0;\r\n\tprivate progressBarTextDiv: HTMLDivElement;\r\n\tprivate progressBarDiv: HTMLDivElement;\r\n\r\n\tsetProgress(progressPercent: number, message: string) {\r\n\t\tif (progressPercent < 1)\r\n\t\t\tprogressPercent *= 100;\r\n\t\tthis.progressPercent = progressPercent;\r\n\r\n\t\tthis.progressBarDiv.style.width = (progressPercent + \"%\");\r\n\t\tthis.progressBarTextDiv.innerHTML = message;\r\n\t}\r\n\r\n\tshow(initialPercent: number = 0) {\r\n\t\tthis.progressPercent = initialPercent;\r\n\r\n\t\tthis.isVisible = false;\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-progress-bar-screen-blocker\"));\r\n\t\tif (!screenBlockerDiv) {\r\n\t\t\tscreenBlockerDiv = document.createElement(\"div\");\r\n\t\t\tscreenBlockerDiv.id = \"slick-progress-bar-screen-blocker\";\r\n\t\t\tscreenBlockerDiv.classList.add('slick-progress-bar-screen-blocker');\r\n\r\n\t\t\tdocument.body.appendChild(screenBlockerDiv);\r\n\t\t}\r\n\r\n\t\tconst progressDiv = document.createElement(\"div\");\r\n\t\tprogressDiv.classList.add('progress');\r\n\t\tprogressDiv.classList.add('slick-progress-bar');\r\n\t\tprogressDiv.classList.add('bg-dark');\r\n\t\t\r\n\t\tthis.progressBarDiv = document.createElement(\"div\");\r\n\t\tthis.progressBarDiv.classList.add('progress-bar');\r\n\t\tthis.progressBarDiv.classList.add('bg-primary');\r\n\t\tthis.progressBarDiv.style.width = \"0\";\r\n\t\tprogressDiv.append(this.progressBarDiv);\r\n\r\n\t\tthis.progressBarTextDiv = document.createElement(\"div\");\r\n\t\tthis.progressBarTextDiv.classList.add('progress-bar-text');\r\n\t\tthis.progressBarTextDiv.classList.add('text-white');\r\n\t\tprogressDiv.append(this.progressBarTextDiv);\r\n\r\n\t\tscreenBlockerDiv.append(progressDiv);\r\n\r\n\t\tscreenBlockerDiv.classList.add('visible');\r\n\t}\r\n\r\n\thide() {\r\n\t\tthis.isVisible = false;\r\n\r\n\t\tconst screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-progress-bar-screen-blocker\"));\r\n\t\tif (screenBlockerDiv)\r\n\t\t\tscreenBlockerDiv.remove();\r\n\t}\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { SlickProgressBarService } from \"./slick-progress-bar.service\";\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [SlickProgressBarService]\r\n})\r\nexport class SlickProgressBarModule { }\r\n\r\nexport { SlickProgressBarService }","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickScreenBlockerService {\r\n\tisVisible: boolean = false;\r\n\tforceBlockActive: boolean = false;\r\n\r\n\tprivate static blockCount: number = 0;\r\n\tprivate static preShowTimeout: NodeJS.Timer = null;\r\n\tprivate static blockTimeout: NodeJS.Timer = null;\r\n\r\n\tblock(delay: number = 350) {\r\n\t\tif (this.forceBlockActive === true)\r\n\t\t\treturn;\r\n\r\n\t\tSlickScreenBlockerService.blockCount++;\r\n\r\n\t\tif (!SlickScreenBlockerService.preShowTimeout) {\r\n\t\t\tSlickScreenBlockerService.preShowTimeout = setTimeout(() => {\r\n\t\t\t\tthis.show();\r\n\r\n\t\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\t\tSlickScreenBlockerService.blockTimeout = setTimeout(() => {\r\n\t\t\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\t\t\tthis.isVisible = false;\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}, 20000);\r\n\t\t\t}, delay);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\tSlickScreenBlockerService.blockTimeout = setTimeout(() => {\r\n\t\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t\tthis.hide();\r\n\t\t\t}, 20000);\r\n\t\t}\r\n\t}\r\n\r\n\tunblock() {\r\n\t\tif (this.forceBlockActive === true)\r\n\t\t\treturn;\r\n\r\n\t\tSlickScreenBlockerService.blockCount--;\r\n\r\n\t\tif (SlickScreenBlockerService.blockCount <= 0) {\r\n\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\tclearTimeout(SlickScreenBlockerService.preShowTimeout);\r\n\t\t\tSlickScreenBlockerService.preShowTimeout = null;\r\n\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\tthis.isVisible = false;\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tforceBlock() {\r\n\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\tthis.forceBlockActive = true;\r\n\t\tthis.isVisible = true;\r\n\t\tthis.show();\r\n\t}\r\n\r\n\tforceUnblock() {\r\n\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\tthis.forceBlockActive = false;\r\n\t\tthis.isVisible = false;\r\n\t\tthis.hide();\r\n\t}\r\n\r\n\tprivate show() {\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-screen-blocker\"));\r\n\t\tif (!screenBlockerDiv) {\r\n\t\t\tscreenBlockerDiv = document.createElement(\"div\");\r\n\t\t\tscreenBlockerDiv.id = \"slick-screen-blocker\";\r\n\t\t\tscreenBlockerDiv.classList.add('slick-screen-blocker');\r\n\t\t\tscreenBlockerDiv.innerHTML = `<div class='slick-screen-blocker_spinner'></div>`;\r\n\r\n\t\t\tdocument.body.appendChild(screenBlockerDiv);\r\n\t\t}\r\n\r\n\t\tscreenBlockerDiv.classList.add('visible');\r\n\t}\r\n\r\n\tprivate hide() {\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-screen-blocker\"));\r\n\t\tif (screenBlockerDiv)\r\n\t\t\tscreenBlockerDiv.classList.remove('visible');\r\n\t}\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickScreenBlockerService } from \"./slick-screen-blocker.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tproviders: [SlickScreenBlockerService]\r\n})\r\nexport class SlickScreenBlockerModule { }\r\n\r\nexport { SlickScreenBlockerService }\r\n","import { Component, Input, Output, EventEmitter, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { ISlickSliderTickModel } from \"./slick-slider-tick.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-slider\",\r\n\ttemplateUrl: \"slick-slider.component.html\"\r\n})\r\nexport class SlickSliderComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n\t@Input() ticks: ISlickSliderTickModel[] = [];\r\n\t@Input() startTick: number;\r\n\t@Input() endTick: number;\r\n\t@Output() startTickChange = new EventEmitter<number>();\r\n\t@Output() endTickChange = new EventEmitter<number>();\r\n\r\n\t@ViewChild(\"sliderTicksRef\") sliderTicksRef: ElementRef;\r\n\r\n\tfnDocumentMouseUp = (e) => this.documentMouseUp(e);\r\n\r\n\tstartMoving = false;\r\n\tendMoving = false;\r\n\tstartLeftPx: string;\r\n\tendLeftPx: string;\r\n\tselectionLeftPx: string;\r\n\tselectionWidthPx: string;\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.startTick) \r\n\t\t\tthis.startTick = parseInt(this.startTick.toString());\r\n\t\t\r\n\t\tif (changes.endTick)\r\n\t\t\tthis.endTick = parseInt(this.endTick.toString());\r\n\t}\r\n\r\n\tonStartMouseDown(e: MouseEvent) {\r\n\t\tthis.startMoving = true;\r\n\t\tthis.endMoving = false;\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tonEndMouseDown(e: MouseEvent) {\r\n\t\tthis.startMoving = false;\r\n\t\tthis.endMoving = true;\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tdocumentMouseUp(e: MouseEvent) {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\r\n\t\tif (this.startMoving && this.startTickChange)\r\n\t\t\tthis.startTickChange.emit(this.startTick);\r\n\r\n\t\tif (this.endMoving && this.endTickChange)\r\n\t\t\tthis.endTickChange.emit(this.endTick);\r\n\r\n\t\tthis.startMoving = false;\r\n\t\tthis.endMoving = false;\r\n\t}\r\n\r\n\tonTickMouseOver(idx) {\r\n\t\t\r\n\t\tif (this.startMoving === true && idx < this.endTick) {\r\n\t\t\tthis.startTick = idx;\r\n\t\t\tthis.recalc();\r\n\t\t}\r\n\r\n\t\tif (this.endMoving === true && idx > this.startTick) {\r\n\t\t\tthis.endTick = idx;\r\n\t\t\tthis.recalc();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async recalc() {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tconst startLeft = this.findTickLeft(this.startTick) + 3;\r\n\t\tthis.startLeftPx = startLeft + \"px\";\r\n\r\n\t\tconst endLeft = this.findTickLeft(this.endTick) + 3;\r\n\t\tthis.endLeftPx = endLeft + \"px\";\r\n\r\n\t\tthis.selectionLeftPx = (startLeft + 7) + \"px\";\r\n\t\tthis.selectionWidthPx = (endLeft - startLeft + 1) + \"px\";\r\n\t}\r\n\r\n\tprivate findTickLeft(tickNumber) {\r\n\t\tconst tickEl = <HTMLTableCellElement>(<HTMLTableElement>this.sliderTicksRef.nativeElement).querySelector(\"tr td[data-tick='\" + tickNumber + \"']\");\r\n\t\treturn tickEl.offsetLeft;\r\n\r\n\t}\r\n}","<div class=\"slick-slider\" [ngClass]=\"{'slick-slider-moving': startMoving === true || endMoving === true }\">\r\n\t<div class=\"slick-slider-selection bg-primary\" [style.left]=\"selectionLeftPx\" [style.width]=\"selectionWidthPx\" style=\"opacity:15%; margin-bottom:7px\"></div>\r\n\t<table #sliderTicksRef class='slick-slider-ticks'>\r\n\t\t<tr>\r\n\t\t\t<td *ngFor='let tick of ticks; let idx = index' [attr.data-tick]='idx' (mouseover)=\"onTickMouseOver(idx)\">\r\n\t\t\t\t<div class='slick-slider-tick border-bottom text-dark dark-border'>\r\n\t\t\t\t\t<div class=\"slick-slider-tick-text text-dark \">{{tick.text}}</div>\r\n\t\t\t\t\t<div *ngIf=\"tick.majorTick === true\" class=\"slick-slider-major-tick border-left\"></div>\r\n\t\t\t\t\t<div *ngIf=\"tick.minorTick === true\" class=\"slick-slider-minor-tick border-left\"></div>\r\n\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t\t<td [attr.data-tick]='ticks.length' (mouseover)=\"onTickMouseOver(ticks.length)\">\r\n\t\t\t\t<div class=\"slick-slider-tick border-0\">\r\n\t\t\t\t\t<div class=\"slick-slider-major-tick border-left\" style=\"height: 6px;\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<div *ngIf=\"startLeftPx\" class='slick-slider-start' (mousedown)=\"onStartMouseDown($event)\" [style.left]=\"startLeftPx\">\r\n\t\t<div class='bg-primary'></div>\r\n\t\t <span class=\"rounded-square-icon\">\r\n\t\t\t<i class=\"far fa-grip-lines-vertical grip-icon\"></i>\r\n\t\t </span>\r\n\t\t<div class='bg-primary'></div>\r\n\t</div>\r\n\t<div *ngIf=\"endLeftPx\" class='slick-slider-end' (mousedown)=\"onEndMouseDown($event)\" [style.left]=\"endLeftPx\">\r\n\t\t<div class='bg-primary'></div>\r\n\t\t<span class=\"rounded-square-icon\">\r\n\t\t\t<i class=\"far fa-grip-lines-vertical grip-icon\"></i>\r\n\t\t </span>\r\n\t\t<div class='bg-primary'></div>\r\n\t</div>\r\n\r\n</div>\r\n","export interface ISlickSliderTickModel {\r\n\tmajorTick: boolean;\r\n\tminorTick: boolean;\r\n\ttext: string;\r\n}\r\n\r\nexport class SlickSliderTickModel implements ISlickSliderTickModel {\r\n\tmajorTick: boolean;\r\n\tminorTick: boolean;\r\n\ttext: string;\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickSliderComponent } from \"./slick-slider.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickSliderComponent, CommonModule],\r\n\tdeclarations: [SlickSliderComponent]\r\n})\r\nexport class SlickSliderModule { }\r\n\r\nexport { SlickSliderComponent }\r\nexport * from \"./slick-slider-tick.model\";","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnChanges, SimpleChanges, OnDestroy } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-split-screen\",\r\n\ttemplateUrl: 'slick-split-screen.component.html'\r\n})\r\nexport class SlickSplitScreenComponent implements OnChanges, OnDestroy {\r\n\t@Input() orientation: string = 'vertical';\r\n\t@Input() allowSwitch: boolean = true;\r\n\t@Input() key: string;\r\n\t@Input() verticalSplitPercent: number = 75;\r\n\t@Input() horizontalSplitPercent: number = 60;\r\n\t@Output() onResizeStart: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onResizeEnd: EventEmitter<void> = new EventEmitter<void>();\r\n\t@ViewChild(\"slickSplitScreenContainer\") slickSplitScreenContainer: ElementRef;\r\n\t@ViewChild(\"slickSplitScreenLeftContent\") slickSplitScreenLeft: ElementRef;\r\n\t@ViewChild(\"slickSplitScreenRightContent\") slickSplitScreenRight: ElementRef;\r\n\r\n\tcurrentOrientation: string = 'vertical';\r\n\tleftWidth: string;\r\n\tleftHeight: string;\r\n\trightWidth: string;\r\n\trightHeight: string;\r\n\tclientRectTop: number;\r\n\tclientRectLeft: number;\r\n\tfullWidthPx: number;\r\n\tfullHeightPx: number;\r\n\tsplitBarMiddleTop: string;\r\n\tsplitBarMiddleLeft: string;\r\n\tresizing: boolean = false;\r\n\tprivate fnOnMouseMove = (e) => this.onMouseMove(e);\r\n\tprivate fnOnMouseUp = (e) => this.onMouseUp(e);\r\n\tprivate throttleTimeout: NodeJS.Timer = null;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.orientation) {\r\n\t\t\tif (changes.orientation.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.currentOrientation = localStorage.getItem(\"SLICK_SPLIT_SCREEN_ORIENTATION_\" + this.key) || changes.orientation.currentValue;\r\n\r\n\t\t\telse\r\n\t\t\t\tthis.currentOrientation = changes.orientation.currentValue;\r\n\t\t}\r\n\r\n\t\tif (changes.verticalSplitPercent) {\r\n\t\t\tif (changes.verticalSplitPercent.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.verticalSplitPercent = parseInt(localStorage.getItem(\"SLICK_SPLIT_SCREEN_VERTICAL_SPLIT_PERCENT_\" + this.key) || this.verticalSplitPercent.toString());\r\n\t\t\telse\r\n\t\t\t\tthis.verticalSplitPercent = changes.verticalSplitPercent.currentValue;\r\n\t\t}\r\n\t\t\r\n\t\tif (changes.horizontalSplitPercent) {\r\n\t\t\tif (changes.horizontalSplitPercent.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.horizontalSplitPercent = parseInt(localStorage.getItem(\"SLICK_SPLIT_SCREEN_HORIZONTAL_SPLIT_PERCENT_\" + this.key) || this.horizontalSplitPercent.toString());\r\n\t\t\telse\r\n\t\t\t\tthis.horizontalSplitPercent = changes.horizontalSplitPercent.currentValue;\r\n\t\t}\r\n\r\n\t\tthis.resize();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tchangeOrientation() {\r\n\t\tif (this.currentOrientation === 'vertical')\r\n\t\t\tthis.currentOrientation = 'horizontal';\r\n\t\telse\r\n\t\t\tthis.currentOrientation = 'vertical';\r\n\r\n\t\tthis.resize();\r\n\t}\r\n\r\n\tonDragStart(e) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tonMouseDown(e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.onResizeStart)\r\n\t\t\tthis.onResizeStart.emit();\r\n\r\n\t\tif (this.currentOrientation === \"vertical\")\r\n\t\t\tdocument.body.style.cursor = \"col-resize\";\r\n\t\telse\r\n\t\t\tdocument.body.style.cursor = \"row-resize\";\r\n\t\tthis.resizing = true;\r\n\t\tthis.fullWidthPx = this.slickSplitScreenContainer.nativeElement.offsetWidth;\r\n\t\tthis.fullHeightPx = this.slickSplitScreenContainer.nativeElement.offsetHeight;\r\n\r\n\t\tlet rect = this.slickSplitScreenLeft.nativeElement.getBoundingClientRect();\r\n\t\tthis.clientRectLeft = rect.left;\r\n\t\tthis.clientRectTop = rect.top;\r\n\t\tthis.resize();\r\n\r\n\t\tdocument.addEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.addEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tprivate onMouseUp(e) {\r\n\t\tthis.resizing = false;\r\n\t\tdocument.body.style.cursor = \"default\";\r\n\t\tdocument.removeEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\r\n\t\tif (this.onResizeEnd)\r\n\t\t\tthis.onResizeEnd.emit();\r\n\t}\r\n\r\n\tprivate onMouseMove(e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.throttleTimeout)\r\n\t\t\treturn;\r\n\r\n\t\tthis.throttleTimeout = setTimeout(() => {\r\n\t\t\tif (this.currentOrientation === 'vertical') {\r\n\t\t\t\tlet adjustedLeft: number = e.pageX - this.clientRectLeft;\r\n\t\t\t\tthis.verticalSplitPercent = (adjustedLeft / this.fullWidthPx) * 100;\r\n\t\t\t\tif (this.verticalSplitPercent > 80)\r\n\t\t\t\t\tthis.verticalSplitPercent = 80;\r\n\r\n\t\t\t\tif (this.verticalSplitPercent < 20)\r\n\t\t\t\t\tthis.verticalSplitPercent = 20;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet adjustedTop: number = e.pageY - this.clientRectTop;\r\n\t\t\t\tthis.horizontalSplitPercent = (adjustedTop / this.fullHeightPx) * 100;\r\n\t\t\t\tif (this.horizontalSplitPercent > 80)\r\n\t\t\t\t\tthis.horizontalSplitPercent = 80;\r\n\r\n\t\t\t\tif (this.horizontalSplitPercent < 20)\r\n\t\t\t\t\tthis.horizontalSplitPercent = 20;\r\n\t\t\t}\r\n\r\n\t\t\tthis.resize();\r\n\t\t\tthis.throttleTimeout = null;\r\n\t\t}, 25);\r\n\r\n\t}\r\n\r\n\tprivate resize() {\r\n\t\tif (this.currentOrientation === \"vertical\") {\r\n\t\t\tthis.leftWidth = \"calc(\" + this.verticalSplitPercent + \"% - 1px)\";\r\n\t\t\tthis.leftHeight = \"100%\";\r\n\t\t\tthis.rightWidth = (100 - this.verticalSplitPercent) + \"%\";\r\n\t\t\tthis.rightHeight = \"100%\";\r\n\t\t\tthis.splitBarMiddleTop = \"0\";\r\n\t\t\tthis.splitBarMiddleLeft = \"calc(\" + this.verticalSplitPercent + \"% - 4px)\";\r\n\t\t\tif (this.key)\r\n\t\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_VERTICAL_SPLIT_PERCENT_\" + this.key, this.verticalSplitPercent.toString());\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.leftWidth = \"100%\";\r\n\t\t\tthis.leftHeight = \"calc(\" + this.horizontalSplitPercent + \"% - 1px)\";\r\n\t\t\tthis.rightWidth = \"100%\";\r\n\t\t\tthis.rightHeight = (100 - this.horizontalSplitPercent) + \"%\";\r\n\t\t\tthis.splitBarMiddleTop = \"calc(\" + this.horizontalSplitPercent + \"% - 3px)\";\r\n\t\t\tthis.splitBarMiddleLeft = \"0\";\r\n\t\t\tif (this.key)\r\n\t\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_HORIZONTAL_SPLIT_PERCENT_\" + this.key, this.horizontalSplitPercent.toString());\r\n\t\t}\r\n\r\n\t\tif (this.key) {\r\n\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_ORIENTATION_\" + this.key, this.currentOrientation)\r\n\t\t}\r\n\t}\r\n}\r\n","<div #slickSplitScreenContainer class=\"slick-split-screen\" [ngClass]=\"{'vertical': currentOrientation === 'vertical', 'horizontal': currentOrientation === 'horizontal'}\"><div #slickSplitScreenLeftContent [style.width]=\"leftWidth\" [style.maxWidth]=\"leftWidth\" [style.height]=\"leftHeight\" [style.maxHeight]=\"leftHeight\" class=\"slick-split-screen-left-content\" [ngClass]=\"{'resizing': resizing === true}\"><ng-content select=\"slick-split-screen-left-content\"></ng-content></div><div class=\"slick-split-screen-split-bar\"></div><div #splitSplitScreenRightContent [style.width]=\"rightWidth\" [style.maxWidth]=\"rightWidth\" [style.height]=\"rightHeight\" [style.maxHeight]=\"rightHeight\" class=\"slick-split-screen-right-content\" [ngClass]=\"{'resizing': resizing === true}\"><ng-content select=\"slick-split-screen-right-content\"></ng-content></div><div [style.left]=\"splitBarMiddleLeft\" [style.top]=\"splitBarMiddleTop\" class=\"slick-split-screen-split-bar-middle\" (mousedown)=\"onMouseDown($event)\" (dragstart)=\"onDragStart($event)\"></div><button type=\"button\" (click)=\"changeOrientation()\" class=\"btn btn-primary orientation-switch\" *ngIf=\"allowSwitch === true\"><div [ngClass]=\"{'slick-split-screen-horizontal-icon': currentOrientation === 'vertical', 'slick-split-screen-vertical-icon': currentOrientation === 'horizontal'}\"></div></button></div>","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-split-screen-left-content',\r\n\ttemplate: '<ng-content></ng-content>'\r\n})\r\nexport class SlickSplitScreenLeftContentComponent {\r\n\tconstructor() { }\r\n}","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-split-screen-right-content',\r\n\ttemplate: '<ng-content></ng-content>'\r\n})\r\nexport class SlickSplitScreenRightContentComponent {\r\n\tconstructor() { }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickSplitScreenComponent } from \"./slick-split-screen.component\";\r\nimport { SlickSplitScreenLeftContentComponent } from \"./slick-screen-split-left-content.component\";\r\nimport { SlickSplitScreenRightContentComponent } from \"./slick-screen-split-right-content.component\";\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent],\r\n\texports: [SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent]\r\n})\r\nexport class SlickSplitScreenModule { }\r\n\r\nexport { SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent }","import { Component, Input, Output, forwardRef, ViewChild, ElementRef, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SlickSleepService } from '../utils/slick-sleep.service';\r\n\r\nclass Star {\r\n constructor(selected: boolean) {\r\n this.selected = selected;\r\n }\r\n\r\n selected: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'slick-star-rating',\r\n templateUrl: 'slick-star-rating.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SlickStarRatingComponent),\r\n multi: true,\r\n }]\r\n})\r\n\r\nexport class SlickStarRatingComponent implements OnChanges {\r\n protected stars: Star[] = [];\r\n private ratingValue: number;\r\n\r\n @Input() checkedColor: string = \"gold\";\r\n @Input() uncheckedColor: string = \"gray\";\r\n @Input() size: string = \"24px\";\r\n @Input() readonly: boolean = false;\r\n @Input() totalStars: number = 5;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n this.readonly = ((this.readonly || 'false').toString() === 'true')\r\n \r\n if (changes.totalstars)\r\n this.generateStars();\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n // this is the initial value set to the component\r\n writeValue(obj: number) {\r\n if (obj) \r\n this.ratingValue = obj - 1;\r\n else \r\n this.ratingValue = -1;\r\n\r\n this.generateStars();\r\n }\r\n\r\n // registers 'fn' that will be fired when changes are made\r\n // this is how we emit the changes back to the form\r\n registerOnChange(fn: any) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n // not used, used for touch input\r\n registerOnTouched() { }\r\n\r\n reset() {\r\n this.stars.forEach((s, idx) => s.selected = (idx <= this.ratingValue)); \r\n }\r\n\r\n onMouseEnter(starIdx: number) {\r\n if (this.readonly === true)\r\n return;\r\n\r\n this.stars.forEach((s, idx) => s.selected = (idx <= starIdx)); \r\n }\r\n\r\n setRatingValue(starIdx: number) {\r\n if (this.readonly === true)\r\n return;\r\n\r\n this.ratingValue = starIdx;\r\n this.propagateChange(this.ratingValue + 1);\r\n\r\n this.stars.forEach((s, idx) => s.selected = (idx <= starIdx)); \r\n }\r\n\r\n private generateStars() {\r\n this.stars = [];\r\n\r\n for (let i = 0; i < this.totalStars; i++) {\r\n const selected = (i <= this.ratingValue);\r\n this.stars.push(new Star(selected))\r\n }\r\n }\r\n}\r\n","<div class=\"d-flex\" (mouseleave)=\"reset()\">\r\n\t<div *ngFor=\"let star of stars; let idx = index\" class=\"ps-1\" style=\"cursor: pointer\" (mouseenter)=\"onMouseEnter(idx)\" (click)=\"setRatingValue(idx)\">\r\n\t\t<div *ngIf=\"star.selected === true\" style=\"position: relative\">\r\n\t\t\t<div class=\"fas fa-star\" [style.color]=\"checkedColor\" [style.font-size]=\"size\"></div>\r\n\t\t\t<div class=\"fal fa-star\" [style.color]=\"uncheckedColor\" [style.font-size]=\"size\" style=\"position: absolute; left: 0;\"></div>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"star.selected === false\" class=\"fal fa-star\" [style.color]=\"uncheckedColor\" [style.font-size]=\"size\"></div>\r\n\t</div>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickStarRatingComponent } from \"./slick-star-rating.component\";\r\nimport { SlickCalendarModule } from \"../slick-calendar/slick-calendar.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickCalendarModule],\r\n\tdeclarations: [SlickStarRatingComponent],\r\n\texports: [SlickStarRatingComponent, SlickCalendarModule]\r\n})\r\nexport class SlickStarRatingModule { }\r\n\r\nexport { SlickStarRatingComponent }","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-tab-header',\r\n\ttemplate: `<i style='margin-right: 5px; font-size: .8em; position: relative; top: -.1em;' *ngIf='icon' class='far {{icon}}'></i><div class='slick-tab-header' #tabHeaderRef><ng-content></ng-content></div>`\r\n})\r\nexport class SlickTabHeaderComponent {\r\n\t@ViewChild(\"tabHeaderRef\") tabHeaderRef: ElementRef;\r\n\r\n\tuuid: string;\r\n\ticon: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tsetHeader(header: string) {\r\n\t\tthis.tabHeaderRef.nativeElement.innerHTML = header;\r\n\t}\r\n\r\n\tsetIcon(icon: string) {\r\n\t\tthis.icon = icon;\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, OnChanges, SimpleChanges, ElementRef, AfterViewInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickTabHeaderComponent } from \"./slick-tab-header.component\";\r\nimport { ISlickTabModel } from \"./slick-tab.model\";\r\nimport { SlickTabsComponent } from \"./slick-tabs.component\";\r\n\r\n@Component({\r\n\tselector: 'slick-tab',\r\n\ttemplateUrl: 'slick-tab.component.html'\r\n})\r\nexport class SlickTabComponent implements OnChanges, AfterViewInit {\r\n\t@Input() header: string;\r\n\t@Input() icon: string;\r\n\t@Input() key: string;\r\n\r\n\t@ViewChild(\"tabHeaderRef\") tabHeaderRef: SlickTabHeaderComponent;\r\n\t@ViewChild(\"tabBodyRef\") tabBodyRef: ElementRef;\r\n\r\n\tuuid: string;\r\n\tshowHeaderFromInput: boolean = false;\r\n\tselected: boolean = false;\r\n\tparentComponent: SlickTabsComponent;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Sleep 1 cycle to give this.parentComponent a chance to populate\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tlet displayBody = document.getElementById(\"slick-tab-display-body_\" + this.parentComponent.uuid);\r\n\t\tif (displayBody)\r\n\t\t\tdisplayBody.appendChild(this.tabBodyRef.nativeElement);\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.header) {\r\n\t\t\tthis.showHeaderFromInput = true;\r\n\t\t\tawait SlickSleepService.sleep()\r\n\r\n\t\t\tif (this.tabHeaderRef) \r\n\t\t\t\tthis.tabHeaderRef.setHeader(changes.header.currentValue);\t\t\t\r\n\t\t}\r\n\r\n\t\tif (changes.icon) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tif (this.tabHeaderRef)\r\n\t\t\t\tthis.tabHeaderRef.setIcon(changes.icon.currentValue);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onTabClicked() {\r\n\t\t// If this is already selected, don't run the onTabSelected again.\r\n\t\t// This is causing double calls to the event\r\n\t\tif (this.selected)\r\n\t\t\treturn;\r\n\r\n\t\tthis.parentComponent.onTabSelected(this.uuid);\r\n\t\tthis.selected = true;\r\n\t}\r\n}\r\n ","<div class='slick-tab btn' [ngClass]=\"{'btn-primary': selected === true, 'btn-secondary': selected === false }\" (click)='onTabClicked()'>\r\n\t<slick-tab-header *ngIf='showHeaderFromInput' #tabHeaderRef></slick-tab-header>\r\n\t<ng-content *ngIf='!showHeaderFromInput' select='slick-tab-header'></ng-content>\r\n\t<div id='tabBody_{{uuid}}' class='slick-tab-body' style='display: none; width: 100%;' #tabBodyRef>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, OnChanges, SimpleChanges, EventEmitter, QueryList, ContentChildren, AfterViewInit, OnDestroy, ElementRef, forwardRef } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickTabModel } from \"./slick-tab.model\";\r\nimport { SlickTabComponent } from \"./slick-tab.component\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n\tselector: 'slick-tabs',\r\n\ttemplateUrl: 'slick-tabs.component.html'\r\n})\r\nexport class SlickTabsComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n\t@Input(\"tabs\") tabModels: ISlickTabModel[];\r\n\t@Input() hideBorder: boolean = false;\r\n\t@Input() tabIndex: number = 0;\r\n\t@Output() tabIndexChange: EventEmitter<number> = new EventEmitter();\r\n\t@Output() tabChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@ContentChildren(forwardRef(() => SlickTabComponent)) slickTabs: QueryList<SlickTabComponent>;\r\n\r\n\tuuid: string;\r\n\tprivate savedTabChildren: SlickTabComponent[] = [];\r\n\tprivate slickTabs$: Subscription;\r\n\r\n\tconstructor() {\t\t\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.hideBorder && changes.hideBorder.currentValue)\r\n\t\t\tthis.hideBorder = (changes.hideBorder.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.tabIndex && changes.tabIndex.firstChange === false)\r\n\t\t\tthis.slickTabs.toArray()[changes.tabIndex.currentValue].onTabClicked();\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.slickTabs.forEach(tab => this.processTab(tab));\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.slickTabs.length > 0 && this.tabIndex < this.slickTabs.length)\r\n\t\t\tthis.slickTabs.toArray()[this.tabIndex].onTabClicked();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.slickTabs && this.slickTabs.changes) {\r\n\t\t\tthis.slickTabs$ = this.slickTabs.changes.subscribe(async (changes) => {\r\n\t\t\t\tlet tabsAdded = changes.filter(changedTab => !this.savedTabChildren.find(savedTabChild => savedTabChild.uuid === changedTab.uuid));\r\n\t\t\t\tlet tabsRemoved = this.savedTabChildren.filter(savedTabChild => !changes.find(changedTab => savedTabChild.uuid === changedTab.uuid));\r\n\r\n\t\t\t\ttabsRemoved.forEach(x => {\r\n\t\t\t\t\tdocument.getElementById(\"tabBody_\" + x.uuid).style.display = \"none\";\r\n\t\t\t\t\tx.selected = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttabsAdded.forEach(t => this.processTab(t));\r\n\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\t\tif (this.slickTabs.length > 0 && this.tabIndex < this.slickTabs.length)\r\n\t\t\t\t\tthis.slickTabs.toArray()[this.tabIndex].onTabClicked();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate processTab(tab: SlickTabComponent) {\r\n\t\tvar existingTab = this.savedTabChildren.find(x => x.uuid === tab.uuid);\r\n\t\tif (!existingTab) {\r\n\t\t\tthis.savedTabChildren.push(tab);\r\n\t\t\ttab.parentComponent = this;\r\n\t\t}\r\n\t}\r\n\r\n\tonTabSelected(uuid: string) {\r\n\t\tlet tabIndex = 0;\t\t\r\n\r\n\t\tthis.slickTabs.forEach(x => {\r\n\t\t\tlet tabBody = document.getElementById(\"tabBody_\" + x.uuid);\r\n\r\n\t\t\tif (tabBody) {\r\n\t\t\t\tif (x.uuid === uuid) {\r\n\t\t\t\t\tthis.tabIndex = tabIndex;\r\n\t\t\t\t\tif (this.tabIndexChange)\r\n\t\t\t\t\t\tthis.tabIndexChange.emit(tabIndex);\r\n\r\n\t\t\t\t\tif (this.tabChange) {\r\n\t\t\t\t\t\tconst tabKey = this.getTabKey(tabIndex);\r\n\t\t\t\t\t\tthis.tabChange.emit(tabKey);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttabIndex++;\r\n\r\n\t\t\t\ttabBody.style.display = (x.uuid === uuid) ? \"inline-block\" : \"none\";\r\n\t\t\t\tx.selected = false\r\n\t\t\t}\r\n\t\t});\t\t\r\n\t}\r\n\r\n\tgetTabHeader(index: number): string {\r\n\t\tconst tabs = this.slickTabs.toArray();\r\n\t\tif (index > tabs.length)\r\n\t\t\treturn null;\r\n\r\n\t\treturn tabs[index].header;\r\n\t}\r\n\r\n\tgetTabKey(index: number): string {\r\n\t\tconst tabs = this.slickTabs.toArray();\r\n\t\tif (index > tabs.length)\r\n\t\t\treturn null;\r\n\r\n\t\treturn tabs[index].key || tabs[index].header || index.toString();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.slickTabs$)\r\n\t\t\tthis.slickTabs$.unsubscribe();\r\n\t}\r\n}\r\n","<div id=\"slick-tabs_{{uuid}}\" class=\"slick-tabs\">\r\n\t<div class=\"slick-tab-headers\" [ngClass]=\"{'no-border': hideBorder === true}\">\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n\t<div id='slick-tab-display-body_{{uuid}}' class=\"slick-tab-display-body\"></div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickTabsComponent } from \"./slick-tabs.component\";\r\nimport { SlickTabComponent } from \"./slick-tab.component\";\r\nimport { SlickTabHeaderComponent } from \"./slick-tab-header.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickTabsComponent, SlickTabComponent, SlickTabHeaderComponent],\r\n\texports: [CommonModule, SlickTabsComponent, SlickTabComponent, SlickTabHeaderComponent]\r\n})\r\nexport class SlickTabsModule { }\r\nexport { SlickTabsComponent }\r\nexport { SlickTabComponent }\r\nexport { SlickTabHeaderComponent } \r\n","import { Injectable, Optional } from \"@angular/core\";\r\nimport { Router, NavigationStart } from \"@angular/router\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\ninterface ISlickToastInfo {\r\n\tuuid: string\r\n\tmessage: string;\r\n\tfadeTimeout: NodeJS.Timer;\r\n\tmessageDiv: HTMLDivElement;\r\n}\r\n\r\nclass SlickToastInfo {\r\n\tuuid: string;\r\n\tmessage: string;\r\n\tfadeTimeout: NodeJS.Timer;\r\n\tmessageDiv: HTMLDivElement;\r\n}\r\n\r\n@Injectable()\r\nexport class SlickToastService {\r\n\tprivate static messageInfos: ISlickToastInfo[] = [];\r\n\r\n\tconstructor(@Optional() private router: Router) {\r\n\t\tif (document.getElementById(\"slick-toasts\") === null) {\r\n\t\t\tlet container = document.createElement(\"div\");\r\n\t\t\tcontainer.id = \"slick-toasts\";\r\n\t\t\tdocument.body.appendChild(container);\r\n\t\t}\r\n\r\n\t\tif (this.router) {\r\n\t\t\t// Every time we change a page, reset the page auto-logout timeout\r\n\t\t\tthis.router.events.subscribe((event) => {\r\n\t\t\t\tif (event instanceof NavigationStart) {\r\n\t\t\t\t\tthis.resetAll();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tshowSuccess(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-check'></i> \" + message, delay, \"bg-success\");\r\n\t}\r\n\r\n\tshowInfo(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-info-circle'></i> \" + message, delay, \"bg-info\");\r\n\t}\r\n\r\n\tshowWarning(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-exclamation-triangle'></i> \" + message, delay, \"bg-warning\");\r\n\t}\r\n\r\n\tshowDanger(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-times-circle'></i> \" + message, delay, \"bg-danger\");\r\n\t}\r\n\r\n\tresetAll() {\r\n\t\tfor (let i = 0; i < SlickToastService.messageInfos.length; i++) {\r\n\t\t\tclearTimeout(SlickToastService.messageInfos[i].fadeTimeout);\r\n\t\t\tconst container = document.getElementById(\"slick-toasts\");\r\n\r\n\t\t\tif (container) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcontainer.removeChild(SlickToastService.messageInfos[i].messageDiv);\r\n\t\t\t\t}\r\n\t\t\t\tcatch { }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async fadeOut(messageInfo: ISlickToastInfo) {\r\n\t\tmessageInfo.messageDiv.style.opacity = \"0\";\r\n\t\tawait SlickSleepService.sleep(600);\r\n\t\tlet container = document.getElementById(\"slick-toasts\");\r\n\t\tif (container) {\r\n\t\t\ttry {\r\n\t\t\t\tcontainer.removeChild(messageInfo.messageDiv);\r\n\t\t\t}\r\n\t\t\tcatch { }\r\n\t\t}\r\n\r\n\t\tSlickToastService.messageInfos = SlickToastService.messageInfos.filter(x => x.uuid !== messageInfo.uuid);\r\n\t}\r\n\r\n\tprivate async showMessage(message: string, delay: number, bgClass: string) {\r\n\t\tlet container = document.getElementById(\"slick-toasts\");\r\n\r\n\t\tlet newMessage: ISlickToastInfo = new SlickToastInfo();\r\n\t\tnewMessage.uuid = SlickUtilsService.newGuid();\r\n\t\tnewMessage.message = message;\r\n\t\tnewMessage.fadeTimeout = setTimeout(() => this.fadeOut(newMessage), delay);\r\n\r\n\t\tnewMessage.messageDiv = document.createElement(\"div\");\r\n\t\tnewMessage.messageDiv.id = \"slick-toast_\" + newMessage.uuid;\r\n\t\tnewMessage.messageDiv.classList.add('slick-toast');\r\n\t\tnewMessage.messageDiv.classList.add('jumbotron');\r\n\t\tnewMessage.messageDiv.classList.add(bgClass);\r\n\t\tnewMessage.messageDiv.innerHTML = message;\r\n\r\n\t\tSlickToastService.messageInfos.push(newMessage);\r\n\r\n\t\tcontainer.insertAdjacentElement('afterbegin', newMessage.messageDiv);\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tdocument.getElementById(\"slick-toast_\" + newMessage.uuid).style.opacity = \"1\";\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { SlickToastService } from \"./slick-toast.service\";\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [SlickToastService]\r\n})\r\nexport class SlickToastModule { }\r\n\r\nexport { SlickToastService }","import { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\nexport interface ISlickTreeNodeModel {\r\n\tuuid: string;\r\n\tparentUuid: string;\r\n\ticonClass: string;\r\n\ticonColor: string;\r\n\ticonUrl: string;\r\n\ttext: string;\r\n\texpanded: boolean;\r\n\texpandOnClick: boolean;\r\n\tcanEditText: boolean;\r\n\tcanAddChildren: boolean;\r\n\tcanDelete: boolean;\r\n\thidden: boolean;\r\n}\r\n\r\nexport class SlickTreeNodeModel implements ISlickTreeNodeModel {\r\n\tconstructor(parentNode: ISlickTreeNodeModel, text: string) {\r\n\t\tthis.expanded = false;\r\n\t\tthis.canEditText = true;\r\n\t\tthis.canDelete = true;\r\n\t\tthis.canAddChildren = true;\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t\tthis.text = text;\r\n\t\tthis.hidden = false;\r\n\r\n\t\tif (parentNode) \r\n\t\t\tthis.parentUuid = parentNode.uuid;\r\n\t\t\r\n\t\telse {\r\n\t\t\tthis.parentUuid = null;\r\n\t\t}\r\n\t}\r\n\r\n\tuuid: string;\r\n\tparentUuid: string;\r\n\tsortOrder: number;\r\n\ticonClass: string;\r\n\ticonColor: string;\r\n\ticonUrl: string;\r\n\ttext: string;\r\n\texpanded: boolean;\r\n\texpandOnClick: boolean;\r\n\tcanEditText: boolean;\r\n\tcanAddChildren: boolean;\r\n\tcanDelete: boolean;\r\n\thidden: boolean;\r\n}","import { Component, Input, OnChanges, SimpleChanges, Output, EventEmitter, OnDestroy, OnInit, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { ISlickTreeNodeModel, SlickTreeNodeModel } from './slick-tree-node.model';\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\n\r\nclass SlickTreeViewDisplayModel {\r\n\tconstructor(node: ISlickTreeNodeModel, level: number) {\r\n\t\tthis.uuid = node.uuid;\r\n\t\tthis.parentUuid = node.parentUuid;\r\n\t\tthis.node = node;\r\n\t\tthis.text = node.text;\r\n\t\tthis.level = level;\r\n\t\tthis.expanded = node.expanded;\r\n\t\tthis.editingText = false;\r\n\r\n\t\tthis.indentArray = [];\r\n\t\tfor (let i = 0; i < this.level; i++)\r\n\t\t\tthis.indentArray.push(true);\r\n\t}\r\n\r\n\tnode: ISlickTreeNodeModel;\r\n\tuuid: string;\r\n\ttext: string;\r\n\tparentUuid: string;\r\n\tlevel: number;\r\n\tindentArray: boolean[];\r\n\texpanded: boolean;\r\n\thasChildNodes: boolean;\r\n\teditingText: boolean;\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-tree-view',\r\n\ttemplateUrl: 'slick-tree-view.component.html'\r\n})\r\nexport class SlickTreeViewComponent implements OnChanges, OnInit, OnDestroy {\r\n\t@Input() nodes: ISlickTreeNodeModel[];\r\n\t@Output() nodesChange: EventEmitter<ISlickTreeNodeModel[]> = new EventEmitter();\r\n\t@Input() showRootNode: boolean = true;\r\n\t@Input() rootNodeUuid: string;\r\n\t@Input() expandOnClick: boolean = true;\r\n\t@Output() onNodeSelected = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeChanged = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeAdded = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeDeleted = new EventEmitter<ISlickTreeNodeModel[]>();\r\n\r\n\t@ViewChild(\"slickTreeViewRef\", { static: true }) slickTreeViewRef: ElementRef;\r\n\t@ViewChild(\"contextMenuRef\") contextMenuRef: ElementRef;\r\n\t@ViewChild(\"deleteNodeConfirmRef\") deleteNodeConfirmRef: SlickConfirmDialogComponent;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnContextMenu = (e) => this.contextMenu(e);\r\n\r\n\tcontextNodeUuid: string;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tdisplayNodes: SlickTreeViewDisplayModel[];\r\n\tselectedUuid: string;\r\n\tnewUuid: string = null;\r\n\tdeleteNodeName: string;\r\n\r\n\tcontextMenuShowAdd: boolean;\r\n\tcontextMenuShowDelete: boolean;\r\n\tcontextMenuShowEditText: boolean;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.slickTreeViewRef.nativeElement.addEventListener(\"contextmenu\", this.fnContextMenu, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.slickTreeViewRef.nativeElement.removeEventListener(\"contextmenu\", this.fnContextMenu, true);\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.expandOnClick = (this.expandOnClick.toString().toLowerCase() === 'false') ? false : true;\r\n\t\tthis.showRootNode = (this.showRootNode.toString().toLowerCase() === 'false') ? false : true;\r\n\t\tthis.rootNodeUuid = this.rootNodeUuid || null;\r\n\r\n\t\tif (changes.nodes)\r\n\t\t\tthis.refreshDisplay();\r\n\r\n\t}\r\n\r\n\tprivate async documentClick(e: MouseEvent) {\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-tree-view_node-text-edit\"))\r\n\t\t\treturn;\r\n\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-tree-view_context-menu\"))\r\n\t\t\treturn;\r\n\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tthis.processNewNode();\r\n\r\n\t\tthis.displayNodes = this.displayNodes.map(displayNode => {\r\n\t\t\tif (displayNode.editingText) {\r\n\t\t\t\tdisplayNode.editingText = false;\r\n\t\t\t\tif (this.onNodeChanged && displayNode.text !== displayNode.node.text) {\r\n\t\t\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\t\t\tthis.onNodeChanged.emit(displayNode.node);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn displayNode;\r\n\t\t});\r\n\t}\r\n\r\n\tonTextKeydown(e: KeyboardEvent, displayNode: SlickTreeViewDisplayModel) {\r\n\t\t// Esc\r\n\t\tif (e.keyCode === 27) {\r\n\t\t\tdisplayNode.editingText = false;\r\n\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\tthis.processNewNode();\r\n\t\t}\r\n\r\n\t\t// Enter or tab\r\n\t\tif (e.keyCode === 13 || e.keyCode === 9) {\r\n\t\t\tdisplayNode.editingText = false;\r\n\t\t\tthis.processNewNode();\r\n\t\t\tif (this.onNodeChanged && displayNode.text !== displayNode.node.text) {\r\n\t\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\t\tthis.onNodeChanged.emit(displayNode.node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcontextMenu(e: MouseEvent) {\r\n\t\tif (!e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (!SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, `slick-tree-view_${this.uuid}`))\r\n\t\t\treturn;\r\n\r\n\t\tconst contextNodeElement = <HTMLDivElement>SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-tree-view-node\");\r\n\t\tif (!contextNodeElement)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tthis.contextNodeUuid = contextNodeElement.getAttribute(\"data-uuid\");\r\n\r\n\t\tconst node = this.nodes.find(x => x.uuid === this.contextNodeUuid);\r\n\t\tthis.contextMenuShowAdd = node.canAddChildren;\r\n\t\tthis.contextMenuShowDelete = node.canDelete;\r\n\t\tthis.contextMenuShowEditText = node.canEditText;\r\n\r\n\t\t// If there's nothing to do, don't even show the context menu\r\n\t\tif (this.contextMenuShowAdd === false && this.contextMenuShowDelete === false && this.contextMenuShowEditText === false)\r\n\t\t\treturn;\r\n\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tconst top = (contextNodeElement.offsetTop + contextNodeElement.offsetHeight - 5);\r\n\r\n\t\tconst indentationElement = <HTMLDivElement>contextNodeElement.querySelector(\".slick-tree-view_indentation\");\r\n\t\tconst iconElement = <HTMLDivElement>contextNodeElement.querySelector(\".slick-tree-view_icon\");\r\n\t\tconst indentationWidth = (indentationElement) ? indentationElement.offsetWidth : 0;\r\n\t\tconst iconWidth = (iconElement) ? iconElement.offsetWidth : 0;\r\n\t\tconst left = indentationWidth + iconWidth + 2;\r\n\r\n\t\tcontextMenuElement.style.top = top + \"px\";\r\n\t\tcontextMenuElement.style.left = left + \"px\";\r\n\t\tcontextMenuElement.classList.add(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.remove(\"menu-hidden\");\r\n\t}\r\n\r\n\tasync addNode() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst parentNodeIdx = this.nodes.findIndex(x => x.uuid === this.contextNodeUuid);\r\n\t\tconst parentNode = this.nodes[parentNodeIdx]\r\n\t\t// Since we want to add this one to the top, pass null as the parent\r\n\t\tvar newNode = new SlickTreeNodeModel(null, \"New Folder\");\r\n\t\tnewNode.parentUuid = parentNode.uuid;\r\n\t\tparentNode.expanded = true;\r\n\t\tthis.nodes.splice(parentNodeIdx, 0, newNode);\r\n\r\n\t\tthis.refreshDisplay();\r\n\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid === newNode.uuid);\r\n\t\tthis.editText(displayNode);\r\n\r\n\t\tthis.newUuid = newNode.uuid;\r\n\t}\r\n\r\n\tasync deleteNode() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst node = this.nodes.find(x => x.uuid === this.contextNodeUuid);\r\n\r\n\t\tthis.deleteNodeName = node.text;\r\n\r\n\t\tconst confirmResult = await this.deleteNodeConfirmRef.confirm();\r\n\r\n\t\tif (confirmResult === SlickConfirmDialogResults.Cancel)\r\n\t\t\treturn;\r\n\r\n\t\tconst removedNodes = this.deleteRecursive(node);\r\n\r\n\t\tthis.refreshDisplay();\r\n\r\n\t\tif (this.onNodeDeleted)\r\n\t\t\tthis.onNodeDeleted.emit(removedNodes);\r\n\r\n\t\tif (this.nodesChange) \r\n\t\t\tthis.nodesChange.emit(this.nodes);\t\t\r\n\t}\r\n\r\n\teditNodeText() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid === this.contextNodeUuid);\r\n\t\tthis.editText(displayNode);\r\n\r\n\t\tif (this.nodesChange) \r\n\t\t\tthis.nodesChange.emit(this.nodes);\t\t\r\n\t}\r\n\r\n\tselectNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tif (this.selectedUuid === displayNode.uuid)\r\n\t\t\treturn;\r\n\r\n\t\tthis.selectedUuid = displayNode.uuid;\r\n\t\tif (displayNode.node.expandOnClick === true)\r\n\t\t\tthis.expandNode(displayNode);\r\n\r\n\t\tif (this.onNodeSelected)\r\n\t\t\tthis.onNodeSelected.emit(displayNode.node);\r\n\t}\r\n\r\n\texpandNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tdisplayNode.node.expanded = true;\r\n\t\tthis.refreshDisplay();\r\n\t}\r\n\r\n\tcollapseNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tdisplayNode.node.expanded = false;\r\n\t\tthis.refreshDisplay();\r\n\t}\r\n\r\n\tasync editText(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tif (!displayNode.node.canEditText)\r\n\t\t\treturn;\r\n\r\n\t\tdisplayNode.editingText = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tconst textbox = <HTMLInputElement>document.querySelector(`.slick-tree-view_node-text-edit_${displayNode.uuid}`);\r\n\t\tif (textbox) {\r\n\t\t\ttextbox.focus();\r\n\t\t\ttextbox.select();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate refreshDisplay() {\r\n\t\tthis.displayNodes = [];\r\n\r\n\t\tif (!this.nodes || this.nodes.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\tlet rootNode: ISlickTreeNodeModel;\r\n\t\tif (this.rootNodeUuid)\r\n\t\t\trootNode = this.nodes.find(x => x.uuid === this.rootNodeUuid);\r\n\t\telse\r\n\t\t\trootNode = this.nodes.find(x => x.parentUuid === null);\r\n\t\t// Always expand the root node\r\n\t\trootNode.expanded = true;\r\n\r\n\t\t// If we aren't showing the root node, start at -1 for the indent level\r\n\t\tthis.populateDisplayNodes(rootNode, (this.showRootNode) ? 0 : -1);\r\n\r\n\t\tif (this.showRootNode === false) \r\n\t\t\tthis.displayNodes = this.displayNodes.filter(x => x.parentUuid !== null);\t\t\r\n\t}\r\n\r\n\tprivate populateDisplayNodes(node: ISlickTreeNodeModel, level: number) {\r\n\t\tif (level >= 100) {\r\n\t\t\tconsole.error(\"Exceeeded max of 100 levels deep. Possible infinite recursion.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst displayNode = new SlickTreeViewDisplayModel(node, level);\r\n\r\n\t\tif (node.expandOnClick === null || node.expandOnClick === undefined)\r\n\t\t\tnode.expandOnClick = this.expandOnClick;\r\n\r\n\t\tif (displayNode.parentUuid === null)\r\n\t\t\tdisplayNode.node.canDelete = false;\r\n\r\n\t\tif (displayNode.uuid === this.newUuid) \r\n\t\t\tdisplayNode.editingText = true;\r\n\t\t\r\n\t\tthis.displayNodes.push(displayNode);\r\n\r\n\t\tconst childNodes = this.nodes.filter(x => x.parentUuid === node.uuid) || [];\r\n\t\tdisplayNode.hasChildNodes = (childNodes.length > 0);\r\n\r\n\t\tif (node.expanded === true)\r\n\t\t\tchildNodes.forEach(childNode => {\r\n\t\t\t\tif (!childNode.hidden)\r\n\t\t\t\t\tthis.populateDisplayNodes(childNode, level + 1)\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate deleteRecursive(node: ISlickTreeNodeModel): ISlickTreeNodeModel[] {\r\n\t\tlet removedNodes: ISlickTreeNodeModel[] = [];\r\n\r\n\t\tconst childNodes = this.nodes.filter(x => x.parentUuid === node.uuid) || [];\r\n\r\n\t\tchildNodes.forEach(childNode => {\r\n\t\t\tremovedNodes = removedNodes.concat(this.deleteRecursive(childNode))\r\n\t\t});\r\n\r\n\t\tremovedNodes.push(node);\r\n\r\n\t\tthis.nodes = this.nodes.filter(x => x.uuid !== node.uuid);\r\n\r\n\t\treturn removedNodes;\r\n\t}\r\n\r\n\tprivate processNewNode() {\r\n\t\tif (!this.newUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst newNode = this.nodes.find(x => x.uuid === this.newUuid);\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid == this.newUuid);\r\n\t\t// Do this so that we don't trigger the node update\r\n\t\t newNode.text = displayNode.text;\r\n\r\n\t\tthis.newUuid = null;\r\n\r\n\t\tif (!newNode) \r\n\t\t\treturn;\t\t\r\n\r\n\t\tif (this.onNodeAdded)\r\n\t\t\tthis.onNodeAdded.emit(newNode);\r\n\r\n\t\tif (this.nodesChange)\r\n\t\t\tthis.nodesChange.emit(this.nodes);\r\n\t}\r\n}\r\n","<div #slickTreeViewRef id=\"slick-tree-view_{{uuid}}\" class=\"slick-tree-view position-relative pe-2\">\r\n\t<div class=\"d-flex slick-tree-view-node\" [attr.data-uuid]=\"displayNode.uuid\" *ngFor=\"let displayNode of displayNodes\">\r\n\t\t<div class=\"slick-tree-view_indentation\">\r\n\t\t\t<i *ngFor=\"let indent of displayNode.indentArray\" class=\"far fa-caret-right me-1\" style=\"opacity: 0\"></i>\r\n\t\t\t<i *ngIf=\"!displayNode.hasChildNodes\" class=\"far fa-caret-right me-1\" style=\"opacity: 0\"></i>\r\n\t\t\t<i *ngIf=\"displayNode.hasChildNodes && !displayNode.expanded\" class=\"far fa-caret-right me-1\" style=\"cursor: pointer\" (click)=\"expandNode(displayNode)\"></i>\r\n\t\t\t<i *ngIf=\"displayNode.hasChildNodes && displayNode.expanded\" class=\"far fa-caret-down me-1\" style=\"cursor: pointer\" (click)=\"collapseNode(displayNode)\"></i>\r\n\t\t</div>\r\n\t\t<div class=\"d-flex px-1\" [ngClass]=\"{'bg-success text-white' : displayNode.uuid === selectedUuid }\">\r\n\t\t\t<div *ngIf=\"displayNode.node.iconClass || displayNode.node.iconUrl\" class=\"me-1 slick-tree-view_icon\">\r\n\t\t\t\t<i *ngIf=\"displayNode.node.iconClass\" [style.color]=\"displayNode.node.iconColor\" [ngClass]=\"displayNode.node.iconClass\"></i>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"!displayNode.editingText\" style=\"cursor: pointer\" (click)=\"selectNode(displayNode)\" (dblclick)=\"editText(displayNode)\">{{displayNode.text}}</div>\r\n\t\t\t<div *ngIf=\"displayNode.editingText\" class=\"slick-tree-view_node-text-edit\"><input type=\"text\" class=\"form-control slick-tree-view_node-text-edit_{{displayNode.uuid}}\" [(ngModel)]=\"displayNode.text\" (keydown)=\"onTextKeydown($event, displayNode)\" /></div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div #contextMenuRef class='slick-tree-view_context-menu dropdown-menu p-0 show menu-hidden'>\r\n\t\t<div *ngIf=\"contextMenuShowAdd\" class=\"px-2 dropdown-item\" (click)=\"addNode()\">Add</div>\r\n\t\t<div *ngIf=\"contextMenuShowDelete\" class=\"px-2 dropdown-item\" (click)=\"deleteNode()\">Delete</div>\r\n\t\t<div *ngIf=\"contextMenuShowEditText\" class=\"px-2 dropdown-item\" (click)=\"editNodeText()\">Edit Name</div>\r\n\t</div>\r\n</div>\r\n\r\n<slick-confirm-dialog #deleteNodeConfirmRef>\r\n\tAre you sure you want to delete {{deleteNodeName}}?\r\n</slick-confirm-dialog>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickConfirmDialogModule } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport { SlickTreeViewComponent } from \"./slick-tree-view.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickConfirmDialogModule],\r\n\tdeclarations: [SlickTreeViewComponent],\r\n\texports: [CommonModule, FormsModule, SlickTreeViewComponent]\r\n})\r\nexport class SlickTreeViewModule { }\r\n\r\nexport { SlickTreeViewComponent }\r\nexport { ISlickTreeNodeModel, SlickTreeNodeModel } from \"./slick-tree-node.model\";\r\n","import { Directive, Input, Output, EventEmitter, OnChanges, OnInit, OnDestroy, ElementRef, forwardRef } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Directive({\r\n\tselector: '[slick-type-ahead]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickTypeAheadDirective),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickTypeAheadDirective implements OnChanges, ControlValueAccessor {\r\n\t@Input(\"slick-type-ahead\") slickTypeAhead: any[];\r\n\t@Input(\"slick-type-ahead-field-id\") slickTypeAheadField: string;\r\n\t@Input(\"slick-type-ahead-field-ids\") slickTypeAheadFields: string;\r\n\t@Output(\"slick-type-ahead-change\") slickTypeAheadChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\tprivate fnKeyDown = (e) => this.keyDown(e);\r\n\r\n\tprivate filteredItems: string[];\r\n\tprivate suggestedItem: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t}\r\n\r\n\tasync keyDown(e: KeyboardEvent) {\r\n\t\tif (e.altKey || e.ctrlKey)\r\n\t\t\treturn;\r\n\r\n\t\tvar valid =\r\n\t\t\t(e.keyCode > 47 && e.keyCode < 58) || // number keys\r\n\t\t\te.keyCode === 32 || e.keyCode === 13 ||\r\n\t\t\te.keyCode === 8 || e.keyCode === 9 || // spacebar, return & tab key(s) (if you want to allow carriage returns)\r\n\t\t\t(e.keyCode > 64 && e.keyCode < 91) || // letter keys\r\n\t\t\t(e.keyCode > 95 && e.keyCode < 112) || // numpad keys\r\n\t\t\t(e.keyCode > 185 && e.keyCode < 193) || // ;=,-./` (in order)\r\n\t\t\t(e.keyCode > 218 && e.keyCode < 223); // [\\]' (in order)\r\n\r\n\t\tif (!valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t// Tab/enter\r\n\t\tif (e.which === 9) {\r\n\t\t\tthis.propagateChange(this.suggestedItem);\r\n\t\t\tthis.createSelection(this.el.nativeElement, this.el.nativeElement.value, 0);\r\n\r\n\t\t\tif (this.slickTypeAheadChange) {\r\n\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\t\tthis.slickTypeAheadChange.emit(this.filteredItems[0])\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.slickTypeAheadChange.emit(this.el.nativeElement.value);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (e.which === 8) {\r\n\t\t\tif (this.el.nativeElement.value.length > 0) {\r\n\t\t\t\tvar cursorLoc = this.el.nativeElement.selectionStart;\r\n\t\t\t\tif (cursorLoc > 0) {\r\n\t\t\t\t\tvar valSubstr = this.el.nativeElement.value.substring(0, cursorLoc - 1);\r\n\t\t\t\t\tvalSubstr += this.el.nativeElement.value.substring(cursorLoc);\r\n\t\t\t\t\tthis.el.nativeElement.value = valSubstr;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.el.nativeElement.value)\r\n\t\t\treturn;\r\n\r\n\t\t// Esc\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.filteredItems = null;\r\n\t\t\tthis.suggestedItem = null;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.suggestedItem = null;\r\n\t\tlet val = this.el.nativeElement.value.toLowerCase();\r\n\t\t\r\n\t\tif (!this.slickTypeAheadField && !this.slickTypeAheadFields) {\r\n\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => x.toLowerCase().indexOf(val) === 0);\r\n\r\n\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\tthis.suggestedItem = this.filteredItems[0];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.slickTypeAheadField) {\r\n\t\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => ((SlickUtilsService.getDeepObject(x, this.slickTypeAheadField)) ? SlickUtilsService.getDeepObject(x, this.slickTypeAheadField).toLowerCase().indexOf(val) === 0 : false))\r\n\r\n\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\t\tthis.suggestedItem = SlickUtilsService.getDeepObject(this.filteredItems[0], this.slickTypeAheadField)\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet fields = this.slickTypeAheadFields.split(\"|\");\r\n\t\t\t\tthis.filteredItems = null;\r\n\t\t\t\tfields.forEach(field => {\r\n\t\t\t\t\tif (!this.filteredItems || this.filteredItems.length === 0) {\r\n\t\t\t\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => ((SlickUtilsService.getDeepObject(x, field)) ? SlickUtilsService.getDeepObject(x, field).toLowerCase().indexOf(val) === 0 : false))\r\n\t\t\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0) {\r\n\t\t\t\t\t\t\tthis.suggestedItem = SlickUtilsService.getDeepObject(this.filteredItems[0], field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.suggestedItem) {\r\n\t\t\tvar len = this.el.nativeElement.value.length;\r\n\t\t\tthis.el.nativeElement.value = this.suggestedItem;\r\n\t\t\tthis.createSelection(this.el.nativeElement, len, this.suggestedItem.length)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.suggestedItem = this.el.nativeElement.value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createSelection(field: any, start: number, end: number) {\r\n\t\tif (field.createTextRange) {\r\n\t\t\tvar selRange = field.createTextRange();\r\n\t\t\tselRange.collapse(true);\r\n\t\t\tselRange.moveStart('character', start);\r\n\t\t\tselRange.moveEnd('character', end);\r\n\t\t\tselRange.select();\r\n\t\t\tfield.focus();\r\n\t\t} else if (field.setSelectionRange) {\r\n\t\t\tfield.focus();\r\n\t\t\tfield.setSelectionRange(start, end);\r\n\t\t} else if (typeof field.selectionStart != 'undefined') {\r\n\t\t\tfield.selectionStart = start;\r\n\t\t\tfield.selectionEnd = end;\r\n\t\t\tfield.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { SlickTypeAheadDirective } from \"./slick-type-ahead.directive\";\r\n\r\n@NgModule({\r\n\timports: [],\r\n\tdeclarations: [SlickTypeAheadDirective],\r\n\texports: [SlickTypeAheadDirective]\r\n})\r\nexport class SlickTypeAheadModule { }\r\nexport { SlickTypeAheadDirective }\r\n","/*\r\n * Public API Surface of components\r\n */\r\nexport { SlickInitService, SlickInitParams } from \"./utils/slick-init.service\";\r\n\r\nexport { SlickAccordionModule, SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent } from \"./slick-accordion/slick-accordion.module\";\r\nexport { SlickAutoCompleteModule, SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete/slick-auto-complete.module\";\r\nexport { SlickButtonSpinnerModule, SlickButtonSpinnerComponent } from \"./slick-button-spinner/slick-button-spinner.module\";\r\nexport { SlickCalendarModule, SlickCalendarComponent } from \"./slick-calendar/slick-calendar.module\";\r\nexport { SlickCardModule, SlickCardComponent, SlickCardHeaderComponent } from \"./slick-card/slick-card.module\";\r\nexport { SlickConfirmDialogModule, SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog/slick-confirm-dialog.module\";\r\nexport { SlickContainerModule, SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent } from \"./slick-container/slick-container.module\";\r\nexport { SlickContextMenuModule, SlickContextMenuComponent, SlickContextMenuItemComponent } from \"./slick-context-menu/slick-context-menu.module\";\r\nexport { SlickCurrencyMaskModule, SlickCurrencyMaskDirective, SlickCurrencyMaskOptions } from \"./slick-currency-mask/slick-currency-mask.module\";\r\nexport { SlickDatePickerModule, SlickDatePickerComponent } from \"./slick-date-picker/slick-date-picker.module\";\r\nexport { SlickDialogModule, SlickDialogComponent, SlickDialogFooterComponent } from \"./slick-dialog/slick-dialog.module\";\r\nexport { SlickDragDropModule, SlickDragDropDirective, SlickDraggableDirective } from \"./slick-drag-drop/slick-drag-drop.module\";\r\nexport { SlickDropDownModule, SlickDropDownComponent, ISlickDropDownButtonModel, SlickDropDownButtonModel } from \"./slick-drop-down/slick-drop-down.module\";\r\nexport { SlickDropListModule, SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective } from \"./slick-drop-list/slick-drop-list.module\";\r\nexport { SlickEmailerModule, ISlickEmailerAddressModel, ISlickEmailerModel, SlickEmailerAddressModel, SlickEmailerComponent, SlickEmailerDialogComponent, SlickEmailerModel } from \"./slick-emailer/slick-emailer.module\";\r\nexport { SlickEmailViewerModule, SlickEmailViewerComponent, SlickEmailViewerDialogComponent } from \"./slick-email-viewer/slick-email-viewer.module\";\r\nexport { ISlickFileModel, SlickFileModel } from \"./slick-file-model/slick-file.model\";\r\nexport { SlickFileDropModule, SlickFileDropComponent } from \"./slick-file-drop/slick-file-drop.module\";\r\nexport { SlickFileListModule, SlickFileListComponent } from \"./slick-file-list/slick-file-list.module\";\r\nexport { SlickGoogleAddressSearchModule, SlickGoogleAddressSearchDirective } from \"./slick-google-address-search/slick-google-address-search.module\";\r\nexport { SlickGoogleMapModule, SlickGoogleMapComponent, SlickGoogleMapDialogComponent } from \"./slick-google-map/slick-google-map.module\";\r\nexport { SlickGridModule, SlickGridColumnFilterTypes, SlickGridColumnModel, SlickGridColumnSortDirection, SlickGridComponent, ISlickGridOptions, SlickGridOptions, ISlickGridFavoriteModel, SlickGridFavoriteModel, ISlickGridRequestModel, SlickGridRequestModel, ISlickGridResponseModel, SlickGridResponseModel, SlickGridColumnTemplateDirective } from \"./slick-grid/slick-grid.module\";\r\nexport { SlickMultiSelectModule, SlickMultiSelectComponent } from \"./slick-multi-select/slick-multi-select.module\";\r\nexport { SlickOrderedListModule, SlickOrderedListComponent } from \"./slick-ordered-list/slick-ordered-list.module\";\r\nexport { SlickPagingModule, SlickPagingComponent } from \"./slick-paging/slick-paging.module\";\r\nexport { SlickPhotoGalleryModule, SlickPhotoGalleryComponent, SlickPhotoGalleryModel } from \"./slick-photo-gallery/slick-photo-gallery.module\";\r\nexport { SlickPickListModule, SlickPickListComponent } from \"./slick-pick-list/slick-pick-list.module\";\r\nexport { SlickPopoverModule, SlickPopoverComponent } from \"./slick-popover/slick-popover.module\";\r\nexport { SlickProfilePictureModule, SlickProfilePictureComponent } from \"./slick-profile-picture/slick-profile-picture.module\";\r\nexport { SlickProgressBarModule, SlickProgressBarService } from \"./slick-progress-bar/slick-progress-bar.module\";\r\nexport { SlickSearchBarModule, SlickSearchBarComponent } from \"./slick-search-bar/slick-search-bar.module\";\r\nexport { SlickScreenBlockerModule, SlickScreenBlockerService } from \"./slick-screen-blocker/slick-screen-blocker.module\";\r\nexport { SlickSliderModule, SlickSliderComponent, ISlickSliderTickModel, SlickSliderTickModel } from \"./slick-slider/slick-slider.module\";\r\nexport { SlickSplitScreenModule, SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent } from \"./slick-split-screen/slick-split-screen.module\";\r\nexport { SlickStarRatingModule, SlickStarRatingComponent } from \"./slick-star-rating/slick-star-rating.module\";\r\nexport { SlickTabsModule, SlickTabComponent, SlickTabsComponent, SlickTabHeaderComponent } from \"./slick-tabs/slick-tabs.module\";\r\nexport { SlickToastModule, SlickToastService } from \"./slick-toast/slick-toast.module\";\r\nexport { SlickTreeViewModule, SlickTreeViewComponent, ISlickTreeNodeModel, SlickTreeNodeModel } from \"./slick-tree-view/slick-tree-view.module\";\r\nexport { SlickTypeAheadModule, SlickTypeAheadDirective } from \"./slick-type-ahead/slick-type-ahead.module\";\r\nexport { SlickValidationIndicatorModule, SlickValidationIndicatorDirective, SlickValidationTypes } from \"./slick-validation-indicator/slick-validation-indicator.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SlickFunctionLockService","i2","i1.SlickDialogService","i1.SlickDialogComponent","i3.SlickCalendarComponent","i1","i1.SlickDropDownService","i3","i4.SlickValidationIndicatorDirective","imgExtensions","i3.SlickConfirmDialogComponent","i2.SlickPhotoGalleryComponent","i3.SlickFileListItemComponent","i4.SlickAutoCompleteComponent","i5.SlickAutoCompleteListItemTemplateDirective","i6.SlickButtonSpinnerComponent","i7.SlickFileDropComponent","i8.SlickFileListComponent","i3.SlickDialogComponent","i4.SlickDialogFooterComponent","i5.SlickButtonSpinnerComponent","i6.SlickEmailerComponent","i2.SlickFileListComponent","i5.SlickEmailViewerComponent","i2.SlickDialogComponent","i3.SlickGoogleMapComponent","i1.SlickGridService","i2.SlickFunctionLockService","i4.SlickConfirmDialogComponent","i5","i6.SlickPopoverComponent","i7.SlickDialogComponent","i8.SlickDialogFooterComponent","i9.SlickDropDownComponent","i10.SlickDropListDirective","i11.SlickDropListItemDirective","i12.SlickDropListGrabDirective","i13.SlickPagingComponent","i14.SlickGridSanitizeHtmlPipe","i1.SlickOrderedListComponent","i1.SlickMultiSelectService","i2.SlickTabHeaderComponent"],"mappings":"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,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CA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"}
|
|
1
|
+
{"version":3,"file":"slick-components.mjs","sources":["../../../projects/components/src/utils/slick-init.service.ts","../../../projects/components/src/utils/slick-sleep.service.ts","../../../projects/components/src/utils/slick-utils.service.ts","../../../projects/components/src/slick-accordion/slick-accordion-item.component.ts","../../../projects/components/src/slick-accordion/slick-accordion-item.component.html","../../../projects/components/src/slick-accordion/slick-accordion.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.component.html","../../../projects/components/src/slick-accordion/slick-accordion-item-header.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.module.ts","../../../projects/components/src/slick-search-bar/slick-search-bar.component.ts","../../../projects/components/src/slick-search-bar/slick-search-bar.component.html","../../../projects/components/src/slick-search-bar/slick-search-bar.module.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete-list-item-template.directive.ts","../../../projects/components/src/utils/slick-function-lock.service.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete.component.ts","../../../projects/components/src/slick-auto-complete/slick-auto-complete.component.html","../../../projects/components/src/slick-auto-complete/slick-auto-complete.module.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.html","../../../projects/components/src/slick-button-spinner/slick-button-spinner.module.ts","../../../projects/components/src/slick-calendar/slick-calendar.component.ts","../../../projects/components/src/slick-calendar/slick-calendar.component.html","../../../projects/components/src/slick-calendar/slick-calendar.module.ts","../../../projects/components/src/slick-card/slick-card-header.component.ts","../../../projects/components/src/slick-card/slick-card.component.ts","../../../projects/components/src/slick-card/slick-card.component.html","../../../projects/components/src/slick-card/slick-card.module.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.html","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.html","../../../projects/components/src/slick-dialog/slick-dialog-footer.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.module.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.module.ts","../../../projects/components/src/slick-container/slick-container.component.ts","../../../projects/components/src/slick-container/slick-container.component.html","../../../projects/components/src/slick-container/slick-container-header.component.ts","../../../projects/components/src/slick-container/slick-container-body.component.ts","../../../projects/components/src/slick-container/slick-container-footer.component.ts","../../../projects/components/src/slick-container/slick-container.module.ts","../../../projects/components/src/slick-context-menu/slick-context-menu-item.component.ts","../../../projects/components/src/slick-context-menu/slick-context-menu.component.ts","../../../projects/components/src/slick-context-menu/slick-context-menu.component.html","../../../projects/components/src/slick-context-menu/slick-context-menu.module.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask-options.model.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask.directive.ts","../../../projects/components/src/slick-currency-mask/slick-currency-mask.module.ts","../../../projects/components/src/slick-date-picker/slick-date-picker.component.ts","../../../projects/components/src/slick-date-picker/slick-date-picker.component.html","../../../projects/components/src/slick-date-picker/slick-date-picker.module.ts","../../../projects/components/src/slick-drag-drop/slick-drag-drop.directive.ts","../../../projects/components/src/slick-drag-drop/slick-draggable.directive.ts","../../../projects/components/src/slick-drag-drop/slick-drag-drop.module.ts","../../../projects/components/src/slick-validation-indicator/slick-validation-indicator.directive.ts","../../../projects/components/src/slick-validation-indicator/slick-validation-indicator.module.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.service.ts","../../../projects/components/src/utils/slick-log.service.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.component.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.component.html","../../../projects/components/src/slick-drop-down/slick-drop-down-button.model.ts","../../../projects/components/src/slick-drop-down/slick-drop-down.module.ts","../../../projects/components/src/slick-drop-list/slick-drop-list.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list-item.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list-grab.directive.ts","../../../projects/components/src/slick-drop-list/slick-drop-list.module.ts","../../../projects/components/src/slick-file-model/slick-file.model.ts","../../../projects/components/src/slick-file-drop/slick-file-drop.component.ts","../../../projects/components/src/slick-file-drop/slick-file-drop.component.html","../../../projects/components/src/slick-file-drop/slick-file-drop.module.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.model.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.component.ts","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.component.html","../../../projects/components/src/slick-file-list/slick-file-list-item.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.html","../../../projects/components/src/slick-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list.component.html","../../../projects/components/src/slick-photo-gallery/slick-photo-gallery.module.ts","../../../projects/components/src/slick-file-list/slick-file-list.module.ts","../../../projects/components/src/slick-emailer/slick-emailer-address.model.ts","../../../projects/components/src/slick-emailer/slick-emailer.component.ts","../../../projects/components/src/slick-emailer/slick-emailer.component.html","../../../projects/components/src/slick-emailer/slick-emailer-dialog.component.ts","../../../projects/components/src/slick-emailer/slick-emailer.model.ts","../../../projects/components/src/slick-emailer/slick-emailer.module.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.component.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.component.html","../../../projects/components/src/slick-email-viewer/slick-email-viewer-dialog.component.ts","../../../projects/components/src/slick-email-viewer/slick-email-viewer.module.ts","../../../projects/components/src/slick-google-address-search/slick-google-address-search.directive.ts","../../../projects/components/src/slick-google-address-search/slick-google-address-search.module.ts","../../../projects/components/src/slick-google-map/slick-google-map.component.ts","../../../projects/components/src/slick-google-map/slick-google-map-dialog.component.ts","../../../projects/components/src/slick-google-map/slick-google-map.module.ts","../../../projects/components/src/slick-grid/slick-grid-column.model.ts","../../../projects/components/src/slick-grid/slick-grid-favorite.model.ts","../../../projects/components/src/slick-grid/slick-grid-request.model.ts","../../../projects/components/src/slick-grid/slick-grid-response.model.ts","../../../projects/components/src/slick-grid/slick-grid.service.ts","../../../projects/components/src/slick-grid/slick-grid-column-template.directive.ts","../../../projects/components/src/slick-popover/slick-popover.component.ts","../../../projects/components/src/slick-popover/slick-popover.component.html","../../../projects/components/src/slick-paging/slick-paging.component.ts","../../../projects/components/src/slick-paging/slick-paging.component.html","../../../projects/components/src/slick-grid/slick-grid-sanitize.pipe.ts","../../../projects/components/src/slick-grid/slick-grid.component.ts","../../../projects/components/src/slick-grid/slick-grid.component.html","../../../projects/components/src/slick-grid/slick-grid.options.ts","../../../projects/components/src/slick-paging/slick-paging.module.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.html","../../../projects/components/src/slick-pick-list/slick-pick-list.component.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.component.html","../../../projects/components/src/slick-ordered-list/slick-ordered-list.module.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.module.ts","../../../projects/components/src/slick-popover/slick-popover.module.ts","../../../projects/components/src/slick-grid/slick-grid.module.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.service.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.component.ts","../../../projects/components/src/slick-multi-select/slick-multi-select.component.html","../../../projects/components/src/slick-multi-select/slick-multi-select.module.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.html","../../../projects/components/src/slick-profile-picture/slick-profile-picture.module.ts","../../../projects/components/src/slick-progress-bar/slick-progress-bar.service.ts","../../../projects/components/src/slick-progress-bar/slick-progress-bar.module.ts","../../../projects/components/src/slick-screen-blocker/slick-screen-blocker.service.ts","../../../projects/components/src/slick-screen-blocker/slick-screen-blocker.module.ts","../../../projects/components/src/slick-slider/slick-slider.component.ts","../../../projects/components/src/slick-slider/slick-slider.component.html","../../../projects/components/src/slick-slider/slick-slider-tick.model.ts","../../../projects/components/src/slick-slider/slick-slider.module.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.component.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.component.html","../../../projects/components/src/slick-split-screen/slick-screen-split-left-content.component.ts","../../../projects/components/src/slick-split-screen/slick-screen-split-right-content.component.ts","../../../projects/components/src/slick-split-screen/slick-split-screen.module.ts","../../../projects/components/src/slick-star-rating/slick-star-rating.component.ts","../../../projects/components/src/slick-star-rating/slick-star-rating.component.html","../../../projects/components/src/slick-star-rating/slick-star-rating.module.ts","../../../projects/components/src/slick-tabs/slick-tab-header.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.html","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.html","../../../projects/components/src/slick-tabs/slick-tabs.module.ts","../../../projects/components/src/slick-toast/slick-toast.service.ts","../../../projects/components/src/slick-toast/slick-toast.module.ts","../../../projects/components/src/slick-tree-view/slick-tree-node.model.ts","../../../projects/components/src/slick-tree-view/slick-tree-view.component.ts","../../../projects/components/src/slick-tree-view/slick-tree-view.component.html","../../../projects/components/src/slick-tree-view/slick-tree-view.module.ts","../../../projects/components/src/slick-type-ahead/slick-type-ahead.directive.ts","../../../projects/components/src/slick-type-ahead/slick-type-ahead.module.ts","../../../projects/components/src/public-api.ts","../../../projects/components/src/slick-components.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\n\r\nexport class SlickInitParams {\r\n\tattachTo: string;\r\n\tplatform: string;\r\n\terrorLog: string = \"minimal\";\r\n\tversion: string;\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class SlickInitService {\t\r\n\tstatic version = \"5.0.8\";\r\n\r\n\tconstructor() { }\r\n\r\n\r\n\tstatic init(initParams: SlickInitParams): SlickInitParams {\r\n\t\tconsole.info(`Slick Components Version ${SlickInitService.version}`);\r\n\t\tinitParams.version = SlickInitService.version;\r\n\t\t(<any>window).slickComponentsParams = initParams;\r\n\r\n\t\treturn (<any>window).slickComponentsParams;\r\n\t}\r\n\r\n\tstatic getParams(): SlickInitParams {\r\n\t\tif (!(<any>window).slickComponentsParams) {\r\n\t\t\tconst defaultParams = new SlickInitParams();\r\n\t\t\tdefaultParams.attachTo = \"body\";\r\n\t\t\t(<any>window).slickComponentsParams = defaultParams;\r\n\t\t}\r\n\r\n\t\treturn <SlickInitParams>(<any>window).slickComponentsParams;\r\n\t}\r\n\r\n\tstatic getAttachTo(): string {\r\n\t\treturn SlickInitService.getParams().attachTo;\r\n\t}\r\n\r\n\tstatic setAttachTo(attachToElement: string) {\r\n\t\tSlickInitService.getParams().attachTo = attachToElement;\r\n\t}\r\n\r\n\tstatic getPlatform(): string {\r\n\t\treturn SlickInitService.getParams().platform;\r\n\t}\r\n\r\n\tstatic setPlatform(platform: string) {\r\n\t\tSlickInitService.getParams().platform = platform;\r\n\t}\r\n\r\n\tstatic getErrorLog(): string {\r\n\t\treturn SlickInitService.getParams().errorLog;\r\n\t}\r\n\r\n\tstatic setErrorLog(errorLog: string) {\r\n\t\tSlickInitService.getParams().errorLog = errorLog;\r\n\t}\r\n}\r\n\r\n","import { Injectable, NgModule } from \"@angular/core\";\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickSleepService {\r\n\tstatic async sleep(timeout: number = 0): Promise<void> {\r\n\t\treturn new Promise<void>((resolve) => setTimeout(() => resolve(), timeout));\r\n\t}\r\n}\r\n","import { Injectable, ElementRef } from \"@angular/core\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickUtilsService {\r\n\tstatic newGuid(): string {\r\n\t\tlet d = new Date().getTime();\r\n\t\tconst uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tconst r = (d + Math.random() * 16) % 16 | 0;\r\n\t\t\td = Math.floor(d / 16);\r\n\t\t\treturn (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n\t\t});\r\n\t\treturn uuid;\r\n\t}\r\n\r\n\tstatic waitForElement(elementSelector: string, iterationTimeout = 50): Promise<HTMLElement> {\r\n\t\tlet infiniteLoopCheck = 10;\r\n\t\tlet iterationId: NodeJS.Timer;\r\n\t\tconst p = new Promise<HTMLElement>((resolve, reject) => {\r\n\t\t\titerationId = setInterval(() => {\r\n\t\t\t\tconst el = <HTMLElement>document.querySelector(elementSelector);\r\n\t\t\t\tif (el) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tresolve(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (--infiniteLoopCheck <= 0) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\talert(\"Loop Check failed trying to find \" + elementSelector);\r\n\t\t\t\t\treject();\r\n\t\t\t\t}\r\n\r\n\t\t\t}, 100);\r\n\r\n\t\t});\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\tstatic waitForElementRef(elementRef: ElementRef, iterationTimeout = 50): Promise<ElementRef> {\r\n\t\tlet infiniteLoopCheck = 10;\r\n\t\tlet iterationId: NodeJS.Timer;\r\n\t\tconst p = new Promise<ElementRef>((resolve, reject) => {\r\n\t\t\titerationId = setInterval(() => {\r\n\t\t\t\tconst el = <HTMLElement>elementRef.nativeElement;\r\n\t\t\t\tif (el && el.clientHeight && el.clientWidth) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tresolve(elementRef);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (--infiniteLoopCheck <= 0) {\r\n\t\t\t\t\tclearInterval(iterationId);\r\n\t\t\t\t\tconsole.error(\"Loop Check failed trying to find element\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t}\r\n\t\t\t}, iterationTimeout);\r\n\r\n\t\t});\r\n\r\n\t\treturn p;\r\n\t}\r\n\r\n\tstatic getDeepObject(obj: any, objName: string): any {\r\n\t\tconst dotSplit = objName.split(\".\");\r\n\r\n\t\tlet currentObj = obj;\r\n\t\tdotSplit.forEach((o) => {\r\n\t\t\tif (currentObj === null || currentObj === undefined)\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tcurrentObj = currentObj[o];\r\n\t\t});\r\n\r\n\t\treturn currentObj;\r\n\t}\r\n\r\n\tstatic setDeepObject(obj: any, objName: string, val: any) {\r\n\t\tconst dotSplit = objName.split(\".\");\r\n\r\n\t\tlet prevObj = obj;\r\n\t\tlet currentObj = obj;\r\n\t\tdotSplit.forEach((o) => {\r\n\t\t\tif (currentObj === null || currentObj === undefined)\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tprevObj = currentObj;\r\n\t\t\tcurrentObj = currentObj[o];\r\n\t\t});\r\n\r\n\t\tprevObj[dotSplit[dotSplit.length - 1]] = val;\r\n\r\n\t\treturn currentObj;\r\n\t}\r\n\r\n\tstatic clone(obj: any): any {\r\n\t\tif (obj === null || obj === undefined)\r\n\t\t\treturn obj;\r\n\r\n\t\tlet returnObj = JSON.parse(JSON.stringify(obj));\r\n\t\t//returnObj = this.dateSanitize(returnObj);\r\n\r\n\t\treturn returnObj;\r\n\t}\r\n\r\n\tstatic dateSanitize(obj: any, infiniteLoopCheck: number = 0): any {\r\n\t\tinfiniteLoopCheck++;\r\n\r\n\t\tif (infiniteLoopCheck > 20) {\r\n\t\t\tconsole.error(\"infinte loop\");\r\n\t\t\treturn obj;\r\n\t\t}\r\n\r\n\t\tif (obj === null || obj === undefined)\r\n\t\t\treturn obj;\r\n\r\n\t\t// If the obj IS a date, return the processed date\r\n\t\tif (typeof obj === \"string\" && /^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj))\r\n\t\t\treturn new Date(obj);\r\n\r\n\t\t// If this is an atomic type (string, bool, number), just return the atomic object\r\n\t\tif (typeof obj !== \"object\")\r\n\t\t\treturn obj;\r\n\r\n\t\tlet returnObj;\r\n\t\tif (Array.isArray(obj)) {\r\n\t\t\treturnObj = [];\r\n\t\t\tobj.forEach(o => returnObj.push(this.dateSanitize(o, infiniteLoopCheck)));\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturnObj = {};\r\n\r\n\t\t\tfor (const key in obj) {\r\n\t\t\t\tif (obj[key] === null)\r\n\t\t\t\t\treturnObj[key] = null;\r\n\t\t\t\telse if (Array.isArray(obj[key])) {\r\n\t\t\t\t\treturnObj[key] = [];\r\n\t\t\t\t\tobj[key].forEach(o => returnObj[key].push(this.dateSanitize(o, infiniteLoopCheck)));\r\n\t\t\t\t}\r\n\t\t\t\telse if (typeof obj[key] === \"object\")\r\n\t\t\t\t\treturnObj[key] = this.dateSanitize(obj[key], ++infiniteLoopCheck);\r\n\t\t\t\telse if (/^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj[key]))\r\n\t\t\t\t\treturnObj[key] = new Date(obj[key]);\r\n\t\t\t\telse\r\n\t\t\t\t\treturnObj[key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn returnObj;\r\n\t}\r\n\r\n\tstatic round(num: number, decimals: number): number {\r\n\t\treturn Number(Math.round(parseFloat(num + 'e' + decimals)) + 'e-' + decimals);\r\n\t}\r\n\r\n\tstatic checkParentClassExists(el: HTMLElement, className: string): boolean {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\tlet hasSelector = false;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList.contains(className)) {\r\n\t\t\t\thasSelector = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcurrentEl = currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn hasSelector;\r\n\t}\r\n\r\n\tstatic checkParentIdExists(el: HTMLElement, idName: string): boolean {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\tlet hasSelector = false;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.getAttribute(\"id\") === idName) {\r\n\t\t\t\thasSelector = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcurrentEl = currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn hasSelector;\r\n\t}\r\n\r\n\tstatic findParentByAttr(el: HTMLElement, attrName: string, attrValue: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.hasAttribute(attrName) && currentEl.getAttribute(attrName) === attrValue) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic findParent(el: HTMLElement, className: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList && currentEl.classList.contains(className)) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.parentElement;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\tstatic getClosestSibling(el: HTMLElement, className: string): HTMLElement {\r\n\t\tlet currentEl: HTMLElement = el;\r\n\t\twhile (currentEl && currentEl !== document.body) {\r\n\t\t\tif (currentEl.classList && currentEl.classList.contains(className)) {\r\n\t\t\t\treturn currentEl;\r\n\t\t\t}\r\n\t\t\tcurrentEl = <HTMLElement>currentEl.previousSibling;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic getHashCode = function (str: string) {\r\n\t\tlet hash: number = 0;\r\n\t\tlet chr: number;\r\n\r\n\t\tif (str.length === 0) return hash;\r\n\t\tfor (let i = 0; i < str.length; i++) {\r\n\t\t\tchr = str.charCodeAt(i);\r\n\t\t\thash = ((hash << 5) - hash) + chr;\r\n\t\t\thash |= 0; // Convert to 32bit integer\r\n\t\t}\r\n\t\treturn Math.abs(hash);\r\n\t};\r\n\r\n\tstatic waitForTinyMCE(tinyMCEId: string): Promise<void> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tlet waitForTinyMCE: NodeJS.Timer;\r\n\r\n\t\t\tif (tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) {\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tclearInterval(waitForTinyMCE);\r\n\t\t\t\tlet infiniteLoopCheck = 100;\r\n\t\t\t\twaitForTinyMCE = setInterval(() => {\r\n\t\t\t\t\tif ((tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) || infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\tclearInterval(waitForTinyMCE);\r\n\r\n\t\t\t\t\t\tif (infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\t\tconsole.error(\"Timed out waiting for tinyMCE Id: \" + tinyMCEId);\r\n\t\t\t\t\t\t\treturn reject();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\treturn resolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinfiniteLoopCheck--;\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic attachElement(el: HTMLElement, attachTo: string) {\r\n\t\tif (attachTo === 'body')\r\n\t\t\tdocument.body.appendChild(el);\r\n\t\telse {\r\n\t\t\tconst parent = document.body.querySelector(attachTo);\r\n\t\t\tif (!parent) {\r\n\t\t\t\tconsole.error(\"Could not find element \" + attachTo + \" to attach to\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparent.appendChild(el);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic removeElement(el: HTMLElement) {\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\t// the default destroy won't get rid of this\r\n\t\t\tdocument.body.removeChild(el);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tstatic arrayInsert<T>(elementToInsert: T, arr: T[], index: number): T[] {\r\n\t\tconst pre = arr.slice(0, index);\r\n\t\tconst post = arr.slice(index, arr.length);\r\n\t\treturn [...pre, elementToInsert, ...post];\r\n\t}\r\n}\r\n\r\n","import { Component, Input, ViewChild, ElementRef, OnChanges } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion-item\",\r\n\ttemplateUrl: \"slick-accordion-item.component.html\"\r\n})\r\nexport class SlickAccordionItemComponent implements OnChanges {\r\n\t@Input(\"header\") header: string;\r\n\t@Input(\"headerIcon\") headerIcon: string;\r\n\t@Input(\"key\") key: string;\r\n\t@Input() noExpand: boolean = false;\r\n\r\n\t@ViewChild(\"slickAccordionItemRef\") slickAccordionItemRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBodyWrapperRef\") slickAccordionBodyWrapperRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBodyRef\") slickAccordionBodyRef: ElementRef;\r\n\t@ViewChild(\"slickAccordionBouncePaddingRef\") slickAccordionBouncePaddingRef: ElementRef;\r\n\r\n\treadonly PIXELS_PER_TICK = 15;\r\n\r\n\tisExpanded: boolean = false;\r\n\tindex: number;\r\n\t// This will be set in the slick-accordion.component as a callback\r\n\tonChangeCallback: any;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnChanges() {\r\n\t\tthis.noExpand = (this.noExpand.toString().toLowerCase() === 'true') ? true : false;\r\n\t}\r\n\r\n\tasync onHeaderClicked() {\r\n\t\tif (this.noExpand) {\r\n\t\t\tif (this.onChangeCallback)\r\n\t\t\t\tthis.onChangeCallback(this.index);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isExpanded === false)\r\n\t\t\t\tthis.expand();\r\n\t\t\telse\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync expand() {\r\n\t\tif (this.noExpand)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isExpanded === true)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.onChangeCallback)\r\n\t\t\tthis.onChangeCallback(this.index);\r\n\r\n\t\tthis.isExpanded = true;\r\n\r\n\t\tawait SlickUtilsService.waitForElementRef(this.slickAccordionItemRef);\r\n\r\n\t\t// Give the collapses a chance to collapse down before we expand\r\n\t\tawait SlickSleepService.sleep(100);\r\n\t\tconst maxHeight = (<HTMLDivElement>this.slickAccordionBodyRef.nativeElement).offsetHeight;\r\n\t\t(<HTMLDivElement>this.slickAccordionBouncePaddingRef.nativeElement).style.display = \"block\";\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = (maxHeight + 30) + \"px\";\r\n\t\tawait SlickSleepService.sleep(125);\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = maxHeight + \"px\";\r\n\t\tawait SlickSleepService.sleep(100);\r\n\t\t(<HTMLDivElement>this.slickAccordionBouncePaddingRef.nativeElement).style.display = \"none\";\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = \"none\";\r\n\t}\r\n\r\n\tasync collapse(ignoreOnChangeCallback: boolean = false) {\r\n\t\tif (this.isExpanded === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isExpanded = false;\r\n\r\n\t\t// The animations requires a number for maxHeight. Just set it to the current height, then to 0\r\n\t\tconst maxHeight = (<HTMLDivElement>this.slickAccordionBodyRef.nativeElement).offsetHeight;\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = maxHeight + \"px\";\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t(<HTMLDivElement>this.slickAccordionBodyWrapperRef.nativeElement).style.maxHeight = \"0\";\r\n\r\n\t\tif (this.onChangeCallback && ignoreOnChangeCallback === false)\r\n\t\t\tthis.onChangeCallback(this.index);\r\n\t}\r\n\r\n\tgetKey(): string {\r\n\t\treturn this.key || null;\r\n\t}\r\n}","<div #slickAccordionItemRef class=\"slick-accordion-item\">\r\n\t<div *ngIf=\"header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><i *ngIf=\"headerIcon\" class=\"far\" [ngClass]=\"headerIcon\"></i> {{header}}</div>\r\n\t<div *ngIf=\"!header\" class=\"slick-accordion-header card-header\" [ngClass]=\"{'badge-primary' : isExpanded }\" (click)=\"onHeaderClicked()\"><ng-content select=\"slick-accordion-item-header\"></ng-content></div>\r\n\t<div #slickAccordionBodyWrapperRef class=\"slick-accordion-body-wrapper\">\r\n\t\t<div #slickAccordionBodyRef class=\"card-body slick-accordion-body\"><ng-content></ng-content></div>\r\n\t\t<div #slickAccordionBouncePaddingRef style=\"display: none; min-height: 30px;\"></div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnChanges, OnDestroy, SimpleChanges, AfterContentInit, ContentChildren, forwardRef, QueryList } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickAccordionItemComponent } from \"./slick-accordion-item.component\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion\",\r\n\ttemplateUrl: \"slick-accordion.component.html\"\r\n})\r\nexport class SlickAccordionComponent implements OnChanges, AfterContentInit, OnDestroy {\r\n\t@Input() accordionIndex: number;\r\n\t@Output() accordionIndexChange: EventEmitter<number> = new EventEmitter<number>();\r\n\t@Input() keepExpanded: boolean = false;\r\n\t@Output() onChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n\t@ContentChildren(forwardRef(() => SlickAccordionItemComponent)) slickAccordionItems: QueryList<SlickAccordionItemComponent>;\r\n\r\n\tprivate slickAccordionItems$: Subscription;\r\n\r\n\tconstructor() { }\r\n\r\n\tasync ngAfterContentInit() {\r\n\t\tthis.slickAccordionItems$ = this.slickAccordionItems.changes.subscribe(async (slickAccordionItems: QueryList<SlickAccordionItemComponent>) => {\r\n\t\t\t// Go through each of the accordion items and set the callback to collapse\r\n\t\t\tslickAccordionItems.forEach((x, idx) => {\r\n\t\t\t\tx.index = idx;\r\n\t\t\t\tx.onChangeCallback = (index) => {\r\n\t\t\t\t\tif (this.keepExpanded === false && x.noExpand === false)\r\n\t\t\t\t\t\tthis.collapseAll();\r\n\r\n\t\t\t\t\tif (this.accordionIndexChange)\r\n\t\t\t\t\t\tthis.accordionIndexChange.emit(index)\r\n\r\n\t\t\t\t\tif (this.onChange) \r\n\t\t\t\t\t\tthis.onChange.emit(index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\tif (this.accordionIndex !== undefined && this.accordionIndex !== null) \r\n\t\t\t\tthis.expand(this.accordionIndex);\r\n\t\t});\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.slickAccordionItems.notifyOnChanges();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tif (this.slickAccordionItems$)\r\n\t\t\tthis.slickAccordionItems$.unsubscribe();\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.keepExpanded = (this.keepExpanded.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (this.keepExpanded === false && changes.accordionIndex) \r\n\t\t\tthis.expand(this.accordionIndex);\t\t\r\n\t}\r\n\r\n\texpand(index: number) {\r\n\t\tif (!this.slickAccordionItems || (this.slickAccordionItems.length - 1) < index)\r\n\t\t\treturn;\r\n\r\n\t\tthis.slickAccordionItems.toArray()[index].expand();\r\n\t}\r\n\r\n\tcollapse(index: number) {\r\n\t\tif (!this.slickAccordionItems || (this.slickAccordionItems.length - 1) < index)\r\n\t\t\treturn;\r\n\r\n\t\tthis.slickAccordionItems.toArray()[index].collapse();\r\n\t}\r\n\r\n\tgetKey(index: number): string {\r\n\t\treturn this.slickAccordionItems.toArray()[index].getKey();\r\n\t}\r\n\r\n\tcollapseAll() {\r\n\t\tthis.slickAccordionItems.forEach(x => x.collapse(true));\r\n\t}\r\n}","<div class=\"slick-accordion card\">\r\n\t<ng-content select=\"slick-accordion-item\"></ng-content>\r\n</div>\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-accordion-item-header\",\r\n\ttemplate: \"<ng-content></ng-content>\"\r\n})\r\nexport class SlickAccordionItemHeaderComponent {\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickAccordionComponent } from \"./slick-accordion.component\";\r\nimport { SlickAccordionItemComponent } from \"./slick-accordion-item.component\";\r\nimport { SlickAccordionItemHeaderComponent } from \"./slick-accordion-item-header.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [CommonModule, SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent],\r\n\tdeclarations: [SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent]\r\n})\r\nexport class SlickAccordionModule { }\r\n\r\nexport { SlickAccordionComponent }\r\nexport { SlickAccordionItemComponent }\r\nexport { SlickAccordionItemHeaderComponent }\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnChanges, Output, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-search-bar\",\r\n\ttemplateUrl: \"slick-search-bar.component.html\",\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickSearchBarComponent),\r\n\t\t\tmulti: true\r\n\t\t}]\r\n})\r\nexport class SlickSearchBarComponent implements OnChanges, AfterViewInit {\r\n\t@HostBinding('style.flex') flex = '1 1';\r\n\r\n\t@Input() showSearchIcon: boolean;\r\n\t@Input() showAddButton: boolean;\r\n\t@Input() disableAddButton: boolean;\r\n\t@Input() showEditButton: boolean;\r\n\t@Input() disableEditButton: boolean;\r\n\t@Input() autofocus: boolean;\r\n\t@Input() delay: number;\r\n\t@Input() placeholder: string;\r\n\t@Input() icon: string;\r\n\r\n\t@Output() onAddClick: EventEmitter<string> = new EventEmitter();\r\n\t@Output() onEditClick: EventEmitter<string> = new EventEmitter();\r\n\t@Output() onSearch: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@ViewChild(\"slickSearchTextBoxRef\") slickSearchTextBoxRef: ElementRef;\r\n\tpublic get slickSearchTextBox(): HTMLInputElement {\r\n\t\treturn <HTMLInputElement>this.slickSearchTextBoxRef?.nativeElement;\r\n\t}\r\n\r\n\tprotected searchTimer: NodeJS.Timer;\r\n\tprotected searchText: string;\r\n\tprotected lastSearchText: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.searchText = '';\r\n\t\tthis.lastSearchText = '';\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.setDefaults();\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t\tthis.setDefaults();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.autofocus === true) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\t(<HTMLInputElement>this.slickSearchTextBoxRef.nativeElement).focus();\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t}\r\n\r\n\t// Since it's possible to have this with no inputs, we need to set the inputs on both OnInit and OnChanges\r\n\tprivate setDefaults() {\r\n\t\tthis.showSearchIcon = (this.showSearchIcon ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.showAddButton = (this.showAddButton ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.disableAddButton = (this.disableAddButton ?? \"false\").toString().toLowerCase() === \"true\";\r\n\t\tthis.showEditButton = (this.showEditButton ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tthis.disableEditButton = (this.disableEditButton ?? \"false\").toString().toLowerCase() === \"true\";\r\n\t\tthis.autofocus = (this.autofocus ?? \"true\").toString().toLowerCase() === \"true\";\r\n\t\tif (isNaN(this.delay))\r\n\t\t\tthis.delay = 600;\r\n\t\telse\r\n\t\t\tthis.delay = parseInt((this.delay ?? '600').toString());\r\n\t\tthis.placeholder = this.placeholder || 'Search...';\r\n\t\tthis.icon = this.icon || 'far fa-search';\r\n\t}\r\n\r\n\tprotected async onKeyUp() {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (this.lastSearchText === this.searchText)\r\n\t\t\treturn;\r\n\r\n\t\tthis.lastSearchText = this.searchText;\r\n\r\n\t\tclearTimeout(this.searchTimer);\r\n\r\n\t\tthis.searchTimer = setTimeout(() => {\r\n\t\t\tthis.propagateChange(this.searchText);\r\n\t\t\tthis.onSearch.emit(this.searchText);\r\n\t\t}, this.delay);\r\n\t}\r\n\r\n\tprotected propagateChange = (_: any) => { };\r\n\r\n\tprotected async writeValue(obj: any) {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.searchText = obj;\r\n\t\tthis.lastSearchText = this.searchText;\r\n\t}\r\n\r\n\tprotected registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tprotected registerOnTouched() { }\r\n\r\n\tprotected async onAddClicked() {\r\n\t\tif (this.disableAddButton)\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.onAddClick.emit(this.searchText);\r\n\t}\r\n\r\n\tprotected async onEditClicked() {\r\n\t\tif (this.disableEditButton)\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.onEditClick.emit(this.searchText);\r\n\t}\r\n}","<div class=\"slick-search-bar border d-flex flex-fill align-items-center bg-white\">\r\n\t<div *ngIf=\"showSearchIcon\" class=\"slick-search-bar_icon ms-3 p-0\"><i [ngClass]=\"icon\"></i></div>\r\n\t<div *ngIf=\"!showSearchIcon\" class=\"ms-3\"></div>\r\n\t<input #slickSearchTextBoxRef type=\"text\" class=\"form-control ms-2\" [(ngModel)]=\"searchText\" (keydown)=\"onKeyUp()\" [placeholder]=\"placeholder\" />\r\n\t<div *ngIf=\"(showAddButton || showEditButton)\" class=\"d-flex\">\r\n\t\t<div *ngIf=\"showAddButton\" class=\"slick-search-bar_add-button me-2\">\r\n\t\t\t<div *ngIf=\"disableAddButton\"><i class=\"far fa-plus\"></i></div>\r\n\t\t\t<a href=\"#\" *ngIf=\"!disableAddButton\" (click)=\"onAddClicked(); false;\"><i class=\"far fa-plus\"></i></a>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"showEditButton\" class=\"slick-search-bar_edit-button me-2\">\r\n\t\t\t<div *ngIf=\"disableEditButton\"><i class=\"far fa-pencil\"></i></div>\r\n\t\t\t<a href=\"#\" *ngIf=\"!disableEditButton\" (click)=\"onEditClicked(); false;\"><i class=\"far fa-pencil\"></i></a>\r\n\t\t</div>\r\n\t</div>\r\n\t<div style=\"width: 10px\"></div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickSearchBarComponent } from \"./slick-search-bar.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\texports: [SlickSearchBarComponent],\r\n\tdeclarations: [SlickSearchBarComponent]\r\n})\r\nexport class SlickSearchBarModule { }\r\n\r\nexport { SlickSearchBarComponent } ","import { Directive, Input, TemplateRef, OnInit, OnDestroy, EmbeddedViewRef, ViewContainerRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[slickAutoCompleteListItemTemplate]',\r\n\thost: {\r\n\t}\r\n})\r\nexport class SlickAutoCompleteListItemTemplateDirective {\r\n\t@Input() type: string;\r\n\t@Input('slickAutoCompleteListItemTemplate') name: string;\r\n\r\n\tconstructor(public template: TemplateRef<any>) { }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nclass SlickFunctionLockModel {\r\n\tuuid: string;\r\n\tfunctionKey: string;\r\n\tinfiniteLoopCheck: number = 100;\r\n\tpromise: Promise<void>;\r\n\tlockCount: number;\r\n\tintervalId: NodeJS.Timer;\r\n}\r\n\r\n@Injectable()\r\nexport class SlickFunctionLockService {\r\n\tprivate functionLocks: any = {};\r\n\r\n\tconstructor() {}\r\n\r\n\tlock(functionKey: string, iterationTimeout: number = 200): Promise<void> {\r\n\t\tif (!this.functionLocks[functionKey])\r\n\t\t\tthis.functionLocks[functionKey] = [];\r\n\r\n\t\tconst functionLock = new SlickFunctionLockModel();\r\n\t\tfunctionLock.functionKey = functionKey;\r\n\t\tlet d = new Date().getTime();\r\n\t\tconst uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tvar r = (d + Math.random() * 16) % 16 | 0;\r\n\t\t\td = Math.floor(d / 16);\r\n\t\t\treturn (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n\t\t});\r\n\t\tfunctionLock.uuid = uuid;\r\n\t\tfunctionLock.lockCount = this.functionLocks[functionKey].length + 1;\r\n\t\tfunctionLock.promise = new Promise<any>((resolve, reject) => {\r\n\t\t\tfunctionLock.intervalId = setInterval(() => {\r\n\t\t\t\tif (functionLock.lockCount === 1 || functionLock.infiniteLoopCheck-- === 0) {\r\n\t\t\t\t\tclearInterval(functionLock.intervalId);\r\n\t\t\t\t\tif (functionLock.infiniteLoopCheck === 0) {\r\n\t\t\t\t\t\talert(\"Inifite loop detected for \" + functionLock.functionKey);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t}, iterationTimeout);\r\n\t\t});\r\n\r\n\t\t\r\n\t\tthis.functionLocks[functionKey].push(functionLock);\r\n\r\n\t\treturn functionLock.promise;\r\n\t}\r\n\r\n\trelease(functionKey: string): number {\r\n\t\tif (this.functionLocks && this.functionLocks[functionKey]) {\r\n\t\t\tthis.functionLocks[functionKey].splice(0, 1);\r\n\t\t\tthis.functionLocks[functionKey].forEach((fl: SlickFunctionLockModel) => fl.lockCount--);\r\n\r\n\t\t\treturn this.functionLocks[functionKey].length;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n\r\n","import { Component, OnInit, OnDestroy, ElementRef, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef, OnChanges, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete-list-item-template.directive\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickSearchBarComponent } from \"../slick-search-bar/slick-search-bar.module\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-auto-complete',\r\n\ttemplateUrl: 'slick-auto-complete.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickAutoCompleteComponent),\r\n\t\t\tmulti: true\r\n\t\t}]\r\n})\r\nexport class SlickAutoCompleteComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\r\n\t@Input(\"inputRef\") inputRef: HTMLInputElement;\r\n\t@Input(\"searchBarRef\") searchBarRef: SlickSearchBarComponent;\r\n\t@Input(\"items\") items: any[];\r\n\t@Input(\"delay\") delay: number = 300;\r\n\t@Input(\"selectFirst\") selectFirst: boolean = true;\r\n\t@Input(\"displayTextFieldName\") displayTextFieldName: string;\r\n\t@Input(\"offset\") offset: number = 0;\r\n\t@Input(\"listHeight\") listHeight = \"300px\";\r\n\t@Input(\"listWidth\") listWidth: string = '100%';\r\n\t@Input(\"allowFreeformText\") allowFreeformText = true;\r\n\t@Input(\"showNoItemsFoundDisplay\") showNoItemsFoundDisplay = true;\r\n\t@Output(\"onRefresh\") onRefresh: EventEmitter<string> = new EventEmitter<string>();\r\n\t@Output(\"onSelect\") onSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output(\"onFreeformTextSelect\") onFreeformTextSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t@ViewChild(\"autoCompleteRef\", { static: true }) autoCompleteRef: ElementRef;\r\n\t@ContentChild(SlickAutoCompleteListItemTemplateDirective, { static: true }) listItemTemplateRef: SlickAutoCompleteListItemTemplateDirective;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnKeyDown = (e) => this.keyDown(e);\r\n\r\n\tprivate selectedItem: any;\r\n\tprivate delayTimeout: NodeJS.Timer;\r\n\tprivate waitForItemsInterval: NodeJS.Timer;\r\n\tprivate lastInputValue: string = \"\";\r\n\tprivate forcedCollapse = false;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tprivate fnReposition = () => this.reposition();\r\n\r\n\tuuid: string;\r\n\tleft: string;\r\n\ttop: string;\r\n\twidth: string;\r\n\tselectedIndex: number = -1;\r\n\tshowAutoComplete: boolean = false;\r\n\tautoCompleteVisiblity: boolean = false;\r\n\texpanded: boolean = true;\r\n\tloading: boolean = false;\r\n\r\n\tconstructor(private slickFunctionLockService: SlickFunctionLockService) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.searchBarRef) \r\n\t\t\tthis.inputRef = (<ElementRef>this.searchBarRef.slickSearchTextBoxRef).nativeElement;\r\n\t\t\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.autoCompleteRef.nativeElement.remove(this.autoCompleteRef);\r\n\t\tdocument.body.appendChild(this.autoCompleteRef.nativeElement);\r\n\r\n\t\tthis.inputRef.addEventListener(\"keydown\", this.fnKeyDown);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.inputRef.removeEventListener(\"keydown\", this.fnKeyDown);\r\n\r\n\t\tclearTimeout(this.delayTimeout);\r\n\t\tthis.delayTimeout = null;\r\n\r\n\t\tthis.collapse();\r\n\r\n\t\t// Is okay if this fails. It just means it was already removed.\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.autoCompleteRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\t\t\r\n\t\tif (changes.allowFreeformText) \r\n\t\t\tthis.allowFreeformText = (this.allowFreeformText.toString().toLowerCase() === 'false') ? false : true;\t\t\r\n\r\n\t\tif (changes.showNoItemsFoundDisplay)\r\n\t\t\tthis.showNoItemsFoundDisplay = (this.showNoItemsFoundDisplay.toString().toLowerCase() === 'false') ? false : true;\t\t\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tif (this.items && this.items.length === 0 && this.showNoItemsFoundDisplay === false)\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\r\n\t\tif (isNaN(this.offset))\r\n\t\t\tthis.offset = parseInt(this.offset.toString());\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (e.target === this.inputRef)\r\n\t\t\treturn;\r\n\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-auto-complete_\" + this.uuid) === false) {\r\n\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect)\r\n\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t}\r\n\t}\r\n\r\n\tonItemClick(index) {\r\n\t\tthis.selectItem(index);\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\tprivate async keyDown(event: KeyboardEvent) {\r\n\t\t// alt\r\n\t\tif (event.keyCode === 18)\r\n\t\t\treturn;\r\n\r\n\t\tclearInterval(this.waitForItemsInterval);\r\n\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\r\n\t\t// If we're just tabbing through, don't even do anything\r\n\t\tif (!this.lastInputValue && (event.keyCode === 9 || event.keyCode === 13))\r\n\t\t\treturn;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (this.lastInputValue !== this.inputRef.value) {\r\n\t\t\tthis.lastInputValue = this.inputRef.value;\r\n\t\t\tthis.forcedCollapse = false;\r\n\r\n\t\t\tif (!this.lastInputValue) {\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\tthis.delayTimeout = null;\r\n\t\t\tif (this.inputRef.value === '') {\r\n\t\t\t\tthis.items = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.delayTimeout = setTimeout(async () => {\r\n\t\t\t\t\t(this.selectFirst === true) ? this.selectedIndex = 0 : this.selectedIndex = -1;\r\n\t\t\t\t\tthis.delayTimeout = null;\r\n\t\t\t\t\tthis.items = null;\r\n\t\t\t\t\tthis.expand();\r\n\t\t\t\t\tawait this.refreshItems(true);\r\n\t\t\t\t}, this.delay);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (event.keyCode === 9 || event.keyCode === 13) {\r\n\t\t\tif (this.delayTimeout && this.selectFirst) {\r\n\t\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\t\tthis.delayTimeout = null;\r\n\t\t\t\tthis.items = null;\r\n\t\t\t\tthis.collapse();\r\n\r\n\t\t\t\tif (this.selectFirst === true && !this.forcedCollapse) {\r\n\t\t\t\t\tawait this.refreshItems(false);\r\n\t\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\t\t\tif (!this.items && !this.inputRef.value && this.onSelect) {\r\n\t\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.items && this.items.length > 0) {\r\n\t\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\t\tthis.selectItem(this.selectedIndex);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) \r\n\t\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) \r\n\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tclearTimeout(this.delayTimeout);\r\n\t\t\t\tif (!this.items && !this.inputRef.value && this.onSelect) {\r\n\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.items && this.items.length > 0 && this.expanded && !this.forcedCollapse) {\r\n\t\t\t\t\tthis.selectItem(this.selectedIndex);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.allowFreeformText && this.onFreeformTextSelect) {\r\n\t\t\t\t\t\tthis.onFreeformTextSelect.emit(this.inputRef.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.collapse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (event.which === 27) {\r\n\t\t\tthis.forcedCollapse = true;\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (event.which === 38) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (event.which === 40) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded) {\r\n\t\t\t\tthis.expand();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.selectedIndex < this.items.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\twriteValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tregisterOnTouched() { }\r\n\r\n\tasync selectItem(index: number) {\r\n\t\tif (index < 0 || !this.items || this.items.length === 0) {\r\n\t\t\tthis.selectedItem = null;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedItem = this.items[index];\r\n\t\t\tif (this.displayTextFieldName) {\r\n\t\t\t\tconst text = SlickUtilsService.getDeepObject(this.selectedItem, this.displayTextFieldName);\r\n\t\t\t\tif (text) {\r\n\t\t\t\t\tthis.inputRef.value = text;\r\n\t\t\t\t\tthis.lastInputValue = this.inputRef.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.propagateChange(this.selectedItem);\r\n\t\tif (this.onSelect)\r\n\t\t\tthis.onSelect.emit(this.selectedItem);\r\n\t\t// Call to update the model for the textbox\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tlet evt = document.createEvent('Event');\r\n\t\tevt.initEvent('input', true, false);\r\n\t\tthis.inputRef.dispatchEvent(evt);\r\n\t}\r\n\r\n\tprivate async expand() {\r\n\t\tthis.reposition();\r\n\r\n\t\t// If the flag to show items is false, don't display \"Loading...\"\r\n\t\tif (this.showNoItemsFoundDisplay === false && (!this.items || this.items.length === 0)) {\r\n\t\t\tthis.showAutoComplete = false;\r\n\t\t\tthis.autoCompleteVisiblity = false;\r\n\t\t\tthis.expanded = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.showAutoComplete = true;\r\n\t\tthis.autoCompleteRef.nativeElement.style.display = \"inline-block\";\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.autoCompleteVisiblity = true;\r\n\t\tthis.expanded = true;\r\n\r\n\t\tthis.inputRef.classList.add(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\tthis.inputRef.classList.add(\"slick-auto-complete_remove-bottom-right-border-radius\");\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tprivate collapse() {\r\n\t\tlet inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, \"input-group-prepend\");\r\n\t\tif (inputGroupPrepend)\r\n\t\t\tinputGroupPrepend.classList.remove(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\r\n\t\tthis.inputRef.classList.remove(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\tthis.inputRef.classList.remove(\"slick-auto-complete_remove-bottom-right-border-radius\");\r\n\r\n\t\tthis.autoCompleteVisiblity = false;\r\n\t\tthis.expanded = false;\r\n\t\tthis.autoCompleteRef.nativeElement.style.display = \"none\";\r\n\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tlet rect = this.inputRef.getBoundingClientRect();\r\n\t\tlet inputLeft = rect.left;\r\n\t\tlet inputTop = rect.top;\r\n\t\tlet inputHeight = this.inputRef.offsetHeight;\r\n\t\tlet inputWidth = this.inputRef.offsetWidth;\r\n\r\n\t\tlet inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, \"input-group-prepend\");\r\n\t\tif (inputGroupPrepend) {\r\n\t\t\tinputLeft = inputGroupPrepend.getBoundingClientRect().left;\r\n\t\t\tinputWidth = inputWidth += inputGroupPrepend.offsetWidth;\r\n\t\t\tinputGroupPrepend.classList.add(\"slick-auto-complete_remove-bottom-left-border-radius\");\r\n\t\t}\r\n\r\n\t\tthis.left = (inputLeft + this.offset) + \"px\";\r\n\t\tthis.top = (inputTop + inputHeight + 1) + \"px\";\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.width = inputWidth + \"px\";\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.width = \"auto\";\r\n\t\telse\r\n\t\t\tthis.width = this.listWidth;\r\n\t}\r\n\r\n\tprivate async refreshItems(expand: boolean): Promise<void> {\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\tthis.items = null;\r\n\r\n\t\t\tif (!this.onRefresh || !this.inputRef.value) {\r\n\t\t\t\tthis.items = [];\r\n\t\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.loading = true;\r\n\t\t\t\tif (this.showNoItemsFoundDisplay === false)\r\n\t\t\t\t\tthis.collapse();\r\n\t\t\t\t// Call the users refresh method to get a fresh list of items\r\n\t\t\t\tthis.onRefresh.emit(this.inputRef.value);\r\n\r\n\t\t\t\t// Wait for the list to refresh\r\n\t\t\t\tlet timeoutCheck = 1000;\r\n\t\t\t\tthis.waitForItemsInterval = setInterval(() => {\r\n\t\t\t\t\t// If we've timedout, got a response or they started typing something else, stop the interval\r\n\t\t\t\t\tif (timeoutCheck <= 0 || this.items) {\r\n\t\t\t\t\t\tclearInterval(this.waitForItemsInterval);\r\n\t\t\t\t\t\tif (timeoutCheck <= 0) {\r\n\t\t\t\t\t\t\tconsole.error(\"Timed out waiting for list in auto complete\");\r\n\t\t\t\t\t\t\tthis.items = [];\r\n\t\t\t\t\t\t\tif (this.showNoItemsFoundDisplay === false)\r\n\t\t\t\t\t\t\t\tthis.collapse();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\tif (expand)\r\n\t\t\t\t\t\t\tthis.expand();\r\n\t\t\t\t\t\tthis.slickFunctionLockService.release(\"AUTO_COMPLETE_WAIT_FOR_ITEMS\");\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttimeoutCheck--;\r\n\t\t\t\t}, 100);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n}","<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickSearchBarModule } from \"../slick-search-bar/slick-search-bar.module\";\r\nimport { SlickAutoCompleteComponent } from \"./slick-auto-complete.component\";\r\nimport { SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete-list-item-template.directive\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickSearchBarModule],\r\n\tdeclarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],\r\n\texports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],\r\n\tproviders: [SlickFunctionLockService]\r\n})\r\nexport class SlickAutoCompleteModule { }\r\n\r\nexport { SlickAutoCompleteComponent }\r\nexport { SlickAutoCompleteListItemTemplateDirective }","import { Component, Input, ElementRef, OnChanges, OnInit, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: '[slick-button-spinner]',\r\n\ttemplateUrl: \"slick-button-spinner.component.html\"\r\n})\r\nexport class SlickButtonSpinnerComponent implements OnChanges, OnInit, AfterViewInit {\r\n\t@Input('slick-button-spinner') spinnerStatus: string;\r\n\r\n\tspinnerVisible: boolean = false;\r\n\tcheckVisible: boolean = false;\r\n\terrorVisible: boolean = false;\r\n\r\n\tprivate currentStatus: string = \"hidden\";\r\n\tprivate inProcess: boolean = false;\r\n\tprivate expanded: boolean = false;\r\n\tprivate showCheckInterval: NodeJS.Timer;\r\n\tprivate originalPadding: string;\r\n\r\n\tconstructor(private el: ElementRef) {\t\t\r\n\t\tel.nativeElement.classList.add(\"slick-button-spinner\");\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.originalPadding = this.el.nativeElement.style.paddingRight;\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (!changes.spinnerStatus || !changes.spinnerStatus.currentValue)\r\n\t\t\treturn;\r\n\r\n\t\tswitch (changes.spinnerStatus.currentValue.toLowerCase()) {\r\n\t\t\tcase 'spin':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(async () => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tawait this.expand();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.showSpinner();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tawait this.expand();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.showSpinner();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ok':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.showCheck();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.showCheck();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'error':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.showError();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'hide':\r\n\t\t\t\tif (this.inProcess === true) {\r\n\t\t\t\t\t// If it's expanding, wait for it to finish, then collapse it\r\n\t\t\t\t\tlet waitInterval = setInterval(() => {\r\n\t\t\t\t\t\tif (this.inProcess === false) {\r\n\t\t\t\t\t\t\tclearTimeout(waitInterval);\r\n\t\t\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\t\t\tthis.collapse()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 50);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideCheck();\r\n\t\t\t\t\tthis.hideError();\r\n\t\t\t\t\tthis.hideSpinner();\r\n\t\t\t\t\tthis.collapse();\r\n\t\t\t\t}\r\n\r\n\t\t\tcase 'reset':\r\n\t\t\t\tthis.expanded = false;\r\n\t\t\t\tthis.hideCheck();\r\n\t\t\t\tthis.hideError();\r\n\t\t\t\tthis.hideSpinner();\r\n\t\t\t\tthis.el.nativeElement.disabled = false;\r\n\t\t\t\tthis.el.nativeElement.style.paddingRight = this.originalPadding;\r\n\t\t\t\tthis.el.nativeElement.classList.remove(\"expand-button-spinner\");\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showSpinner() {\r\n\t\tthis.spinnerVisible = true;\r\n\t\tthis.el.nativeElement.disabled = true;\r\n\t}\r\n\r\n\tprivate hideSpinner() {\r\n\t\tthis.spinnerVisible = false;\r\n\t\tthis.el.nativeElement.disabled = false;\r\n\t}\r\n\r\n\tprivate showCheck() {\r\n\t\tthis.checkVisible = true;\r\n\t\tthis.showCheckInterval = setTimeout(() => {\r\n\t\t\tthis.hideCheck();\r\n\t\t\tthis.hideError();\r\n\t\t\tthis.collapse();\r\n\t\t}, 2500);\r\n\t}\r\n\r\n\tprivate hideCheck() {\r\n\t\tclearTimeout(this.showCheckInterval);\r\n\t\tthis.checkVisible = false;\r\n\t}\r\n\r\n\tprivate showError() {\r\n\t\tthis.el.nativeElement.disabled = false;\r\n\t\tthis.errorVisible = true;\r\n\t}\r\n\r\n\tprivate hideError() {\r\n\t\tthis.errorVisible = false;\r\n\t}\r\n\r\n\tprivate async expand(): Promise<void> {\r\n\r\n\t\tif (this.inProcess === true || this.expanded === true) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tthis.expanded = true;\r\n\t\tthis.inProcess = true;\r\n\t\tthis.el.nativeElement.classList.remove(\"collapse-button-spinner\");\r\n\t\tthis.el.nativeElement.classList.add(\"expand-button-spinner\");\r\n\r\n\t\tawait SlickSleepService.sleep(350);\r\n\t\tthis.originalPadding = this.el.nativeElement.style.paddingRight;\r\n\t\tthis.el.nativeElement.style.paddingRight = \"35px\";\r\n\t\tthis.inProcess = false;\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tprivate async collapse(): Promise<void> {\r\n\t\tif (this.inProcess === true || this.expanded === false) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tthis.expanded = false;\r\n\t\tthis.inProcess = true;\r\n\t\tthis.el.nativeElement.classList.remove(\"expand-button-spinner\");\r\n\t\tthis.el.nativeElement.classList.add(\"collapse-button-spinner\");\r\n\t\tawait SlickSleepService.sleep(500);\r\n\t\tthis.el.nativeElement.style.paddingRight = this.originalPadding;\r\n\t\tthis.inProcess = false;\r\n\t\tPromise.resolve();\r\n\t}\r\n}","<ng-content></ng-content><div *ngIf=\"spinnerVisible\" class=\"slick-button-spinner_spin-icon\"></div><div *ngIf=\"checkVisible\" class=\"slick-button-spinner_check\"><i class=\"far fa-check-circle\"></i></div><div *ngIf=\"errorVisible\" class=\"slick-button-spinner_error\"><i class=\"far fa-times-circle\"></i></div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickButtonSpinnerComponent } from \"./slick-button-spinner.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickButtonSpinnerComponent],\r\n\texports: [SlickButtonSpinnerComponent]\r\n})\r\nexport class SlickButtonSpinnerModule { }\r\n\r\nexport { SlickButtonSpinnerComponent }","import { Component, forwardRef, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport moment from \"moment\";\r\n\r\n\r\nclass DayModel {\r\n\tdate: Date;\r\n\tisSelected: boolean;\r\n\tisToday: boolean;\r\n\tisInCurrentMonth: boolean;\r\n\tisActive: boolean;\r\n}\r\n\r\nclass WeekModel {\r\n\tdays: DayModel[];\r\n}\r\n\r\nclass MonthModel {\r\n\tmonthDisplay: string;\r\n\tweeks: WeekModel[]\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-calendar',\r\n\ttemplateUrl: 'slick-calendar.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickCalendarComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickCalendarComponent implements ControlValueAccessor, OnInit, OnChanges {\r\n\t@Input() condensed: boolean = false;\r\n\t@Input() monthsToShow: number = 1;\r\n\t@Input() monthsToIncrement: number = 1;\r\n\t@Input() inactiveDates: Date[] = [];\r\n\t@Input() inactiveWeekends: boolean = false;\r\n\t@Input() showDaysNotInMonth: boolean = false;\r\n\t@Input() multiSelect: boolean = false;\r\n\t@Input() multiSelectDates: Date[];\r\n\t@Output() multiSelectDatesChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\r\n\t@Output() onDateSelect: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onDateChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onMonthChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\t@Output() onMultiDateChange: EventEmitter<Date[]> = new EventEmitter<Date[]>();\r\n\r\n\t@HostListener('click', ['$event', '$event.target'])\r\n\tonClick(event: MouseEvent, targetElement: HTMLElement): void {\r\n\t\tif (!targetElement || SlickUtilsService.checkParentClassExists(targetElement, \"slickCalendar_month\"))\r\n\t\t\treturn;\r\n\t}\r\n\r\n\tuuid: string;\r\n\tselectedDate: Date = new Date();\r\n\tvisibleDate: Date = new Date();\r\n\tmonths: MonthModel[];\r\n\tminWidth: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.condensed)\r\n\t\t\tthis.condensed = (this.condensed || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tif (changes.inactiveWeekends)\r\n\t\t\tthis.inactiveWeekends = (this.inactiveWeekends || 'true').toString().toLowerCase() === 'false' ? false : true;\r\n\r\n\t\tif (changes.showDaysNotInMonth)\r\n\t\t\tthis.showDaysNotInMonth = (this.showDaysNotInMonth || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tif (changes.multiSelect)\r\n\t\t\tthis.multiSelect = (this.multiSelect || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\tconst widthPerCalendar = (this.condensed) ? 180 : 250;\r\n\t\tthis.minWidth = this.monthsToShow * widthPerCalendar;\r\n\r\n\t\tthis.recalc();\r\n\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\twriteValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t\tif (moment(obj).isValid()) {\r\n\t\t\t\tthis.selectedDate = obj;\r\n\t\t\t\tthis.visibleDate = obj;\r\n\r\n\t\t\t\tif (this.months) {\r\n\r\n\t\t\t\t\t// Say we have 3 months showing and they select a date on the 3rd month\r\n\t\t\t\t\t// Recalc will re-draw the 3rd month as the first month instead of just \r\n\t\t\t\t\t// higlighting the date on the 3rd month. Highlight instead.\r\n\t\t\t\t\tlet dateFound = false;\r\n\t\t\t\t\tfor (let month of this.months) {\r\n\t\t\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\t\t\tif (day.isInCurrentMonth === true && moment(day.date).isSame(this.selectedDate, \"date\")) {\r\n\t\t\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t\t\t\tdateFound = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// But if they've \r\n\t\t\t\t\tif (dateFound === false)\r\n\t\t\t\t\t\tthis.recalc();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.recalc();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedDate = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!this.selectedDate && this.onDateChange)\r\n\t\t\t\tthis.onDateChange.emit(null);\r\n\t\t\tthis.selectedDate = null;\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tregisterOnTouched() { }\r\n\r\n\tprevMonth() {\r\n\t\tthis.visibleDate = moment(this.visibleDate).subtract(this.monthsToIncrement, \"months\").toDate();\r\n\t\tthis.recalc();\r\n\r\n\t\tif (this.onMonthChange) {\r\n\t\t\tlet monthStart = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tif (this.showDaysNotInMonth === true)\r\n\t\t\t\tmonthStart = monthStart.startOf(\"week\");\r\n\r\n\t\t\tthis.onMonthChange.emit(monthStart.toDate());\r\n\t\t}\r\n\t}\r\n\r\n\tnextMonth() {\r\n\t\tthis.visibleDate = moment(this.visibleDate).add(this.monthsToIncrement, \"months\").toDate();\r\n\t\tthis.recalc();\r\n\r\n\t\tif (this.onMonthChange) {\r\n\t\t\tlet monthStart = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tif (this.showDaysNotInMonth === true)\r\n\t\t\t\tmonthStart = monthStart.startOf(\"week\");\r\n\r\n\t\t\tthis.onMonthChange.emit(monthStart.toDate());\r\n\t\t}\r\n\t}\r\n\r\n\tselectMonth(monthIdx) {\r\n\t\tconst month = this.months[monthIdx];\r\n\t\tlet visibleDate = moment(this.visibleDate);\r\n\t\tlet dateString = month + visibleDate.format(\" 1, YYYY\");\r\n\r\n\t\tthis.visibleDate = moment(dateString, \"MMMM DD, YYYY\").toDate();\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tsetDate(dayModel: DayModel) {\r\n\t\tif (this.showDaysNotInMonth === false && dayModel.isInCurrentMonth === false)\r\n\t\t\treturn;\r\n\r\n\t\tif (dayModel.isActive === false)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.multiSelect === false) {\r\n\t\t\tthis.selectedDate = dayModel.date;\r\n\t\t\tthis.visibleDate = dayModel.date;\r\n\r\n\t\t\tthis.propagateChange(this.selectedDate);\r\n\r\n\t\t\tif (this.onDateChange)\r\n\t\t\t\tthis.onDateChange.emit(this.selectedDate);\r\n\r\n\t\t\tif (this.onDateSelect)\r\n\t\t\t\tthis.onDateSelect.emit(this.selectedDate);\r\n\r\n\t\t\t// Say we have 3 months showing and they select a date on the 3rd month\r\n\t\t\t// Recalc will re-draw the 3rd month as the first month instead of just \r\n\t\t\t// higlighting the date on the 3rd month. Highlight instead.\r\n\t\t\tlet dateFound = false;\r\n\t\t\tfor (let month of this.months) {\r\n\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\tif (day.isInCurrentMonth === true && moment(day.date).isSame(this.selectedDate, \"date\")) {\r\n\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t\tdateFound = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// But if they've \r\n\t\t\tif (dateFound === false)\r\n\t\t\t\tthis.recalc();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// This will be reversed since we haven't re-calced the dates yet.\r\n\t\t\tif (!dayModel.isSelected)\r\n\t\t\t\tthis.multiSelectDates.push(dayModel.date);\r\n\t\t\telse {\r\n\t\t\t\tlet dateIdx = this.multiSelectDates.findIndex(d => moment(d).startOf(\"date\").isSame(moment(dayModel.date).startOf(\"date\")));\r\n\t\t\t\tthis.multiSelectDates.splice(dateIdx, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.onMultiDateChange)\r\n\t\t\t\tthis.onMultiDateChange.emit(this.multiSelectDates)\r\n\r\n\t\t\tfor (let month of this.months) {\r\n\t\t\t\tfor (let week of month.weeks) {\r\n\t\t\t\t\tfor (let day of week.days) {\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\t\t\t\t\t\tif (day.isInCurrentMonth === true && (this.multiSelectDates.findIndex(x => moment(x).isSame(moment(day.date), \"date\")) >= 0)) {\r\n\t\t\t\t\t\t\tday.isSelected = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate recalc() {\r\n\t\tthis.months = [];\r\n\r\n\t\tfor (let monthCount = 0; monthCount < this.monthsToShow; monthCount++) {\r\n\t\t\tlet currentDate = moment(this.visibleDate).startOf(\"month\");\r\n\t\t\tcurrentDate = moment(currentDate).add(monthCount, \"months\")\r\n\t\t\tcurrentDate = moment(currentDate).startOf(\"week\").startOf(\"date\");\r\n\r\n\t\t\tconst month = new MonthModel();\r\n\t\t\tmonth.weeks = [];\r\n\r\n\t\t\t// CurrentDate is most likely going to be the month before, so add 15 days to get to the middle of the current month\r\n\t\t\tconst monthToDisplay = moment(currentDate).add(15, \"days\");\r\n\t\t\tmonth.monthDisplay = (this.condensed === true) ? monthToDisplay.format(\"MMMM, YYYY\") : monthToDisplay.format(\"MMMM, YYYY\");\r\n\r\n\t\t\tfor (let weekCount = 0; weekCount < 6; weekCount++) {\r\n\t\t\t\tconst week = new WeekModel();\r\n\t\t\t\tweek.days = [];\r\n\r\n\t\t\t\tfor (let dayCount = 0; dayCount < 7; dayCount++) {\r\n\t\t\t\t\tconst day = new DayModel();\r\n\t\t\t\t\tday.date = currentDate.toDate();\r\n\t\t\t\t\tday.isToday = moment().isSame(currentDate, \"date\");\r\n\t\t\t\t\tif (this.multiSelect && this.multiSelectDates)\r\n\t\t\t\t\t\tday.isSelected = (this.multiSelectDates.findIndex(x => moment(x).isSame(moment(day.date), \"date\")) >= 0);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tday.isSelected = moment(this.selectedDate).isSame(currentDate, \"date\");\r\n\r\n\t\t\t\t\tday.isInCurrentMonth = (currentDate.month() === monthToDisplay.month());\r\n\r\n\t\t\t\t\tday.isActive = true;\r\n\r\n\t\t\t\t\tif (this.inactiveWeekends && currentDate.day() === 6 || currentDate.day() === 7)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\tif (this.inactiveDates && this.inactiveDates.findIndex(x => moment(x).isSame(currentDate, \"date\")) >= 0)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\tif (this.showDaysNotInMonth === false && day.isInCurrentMonth === false)\r\n\t\t\t\t\t\tday.isActive = false;\r\n\r\n\t\t\t\t\t// It's possible for the day to be in the month display, but hidden, but active\r\n\t\t\t\t\tif (day.isActive === false)\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\r\n\t\t\t\t\tif (day.isInCurrentMonth === false)\r\n\t\t\t\t\t\tday.isSelected = false;\r\n\r\n\t\t\t\t\tweek.days.push(day);\r\n\r\n\t\t\t\t\tcurrentDate = moment(currentDate).add(1, \"days\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmonth.weeks.push(week);\r\n\t\t\t}\r\n\r\n\t\t\tthis.months.push(month);\r\n\t\t}\r\n\t}\r\n\r\n}","<div class=\"slick-calendar default-width card\" id=\"slick-calendar_{{uuid}}\" [style.minWidth.px]=\"minWidth\" [ngClass]=\"{'slick-calendar_condensed': condensed === true, 'slick-calendar_single': monthsToShow === 1 }\">\r\n\t<div class=\"slick-calendar_prev-month slick-calendar-arrow\" (click)=\"prevMonth()\" style=\"margin-left: 12px; margin-top: 3px;\"><i class=\"fas fa-long-arrow-left\" ></i></div>\r\n\t<div class=\"slick-calendar_next-month slick-calendar-arrow\" (click)=\"nextMonth()\" style=\"margin-right: 12px; margin-top: 3px;\"><i class=\"fas fa-long-arrow-right\" ></i></div>\r\n\r\n\t<div class=\"d-flex justify-content-around pt-2\" [ngClass]=\"{ 'mx-3': monthsToShow > 1, 'mx-1': monthsToShow === 1 }\">\r\n\t\t<div *ngFor=\"let month of months\" class=\"flex-fill mx-2\" style=\"text-align: center;max-width: 220px;\">\r\n\r\n\t\t\t<table class=\"table table-sm table-borderless\" style=\"table-layout: fixed; \">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr class=\"slick-calendar_month-display\">\r\n\t\t\t\t\t\t<td colspan=\"7\"><b>{{month.monthDisplay}}</b></td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr class=\"slick-calendar_days-of-week\">\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>S</span><span *ngIf='condensed === true'>S</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>M</span><span *ngIf='condensed === true'>M</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>T</span><span *ngIf='condensed === true'>T</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>W</span><span *ngIf='condensed === true'>W</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>T</span><span *ngIf='condensed === true'>Th</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>F</span><span *ngIf='condensed === true'>F</span></td>\r\n\t\t\t\t\t\t<td><span *ngIf='condensed === false'>S</span><span *ngIf='condensed === true'>S</span></td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngFor=\"let week of month.weeks\">\r\n\t\t\t\t\t\t<td *ngFor=\"let day of week.days\" (click)=\"setDate(day)\" class=\"slick-calendar_date\" [ngClass]=\"{ 'slick-calendar_is-today': day.isToday, 'bg-primary text-white': day.isSelected, 'slick-calendar_not_in_month': day.isInCurrentMonth === false, 'slick-calendar_inactive': day.isActive === false }\">\r\n\t\t\t\t\t\t\t<span *ngIf=\"showDaysNotInMonth === true || (showDaysNotInMonth === false && day.isInCurrentMonth === true)\">{{day.date | date:'d'}}</span>\r\n\t\t\t\t\t\t\t<span *ngIf=\"monthsToShow > 1 && (showDaysNotInMonth === false && day.isInCurrentMonth === false)\"> </span>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\r\n\r\n\t\t</div>\r\n\r\n\t</div>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickCalendarComponent } from \"./slick-calendar.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickCalendarComponent],\r\n\texports: [SlickCalendarComponent]\r\n})\r\nexport class SlickCalendarModule { }\r\n\r\nexport { SlickCalendarComponent }\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-card-header\",\r\n\ttemplate: \"<div class='card-header'><ng-content></ng-content></div>\"\r\n})\r\nexport class SlickCardHeaderComponent {}","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-card\",\r\n\ttemplateUrl: \"slick-card.component.html\"\r\n})\r\nexport class SlickCardComponent implements OnChanges {\r\n\t@Input() header;\r\n\t@Input() clickable: boolean = true;\r\n\t@Input() selected: boolean = false;\r\n\t@Input() cardKey: string = '';\r\n\t@Output() onSelect: EventEmitter<string> = new EventEmitter();\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.clickable) \r\n\t\t\tthis.clickable = (this.clickable === null || this.clickable === undefined) ? true : this.clickable.toString().toLowerCase() === \"true\";\r\n\r\n\t\tif (changes.selected) {\r\n\t\t\tif (this.clickable === true)\r\n\t\t\t\tthis.selected = (this.selected === null || this.selected === undefined) ? false : this.selected.toString().toLowerCase() === \"true\";\r\n\t\t\telse\r\n\t\t\t\tthis.selected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tonClick() {\r\n\t\tif (this.clickable === true && this.onSelect)\r\n\t\t\tthis.onSelect.emit(this.cardKey);\r\n\t}\r\n}","<div class=\"slick-card card\" [ngClass]=\"{'slick-card_clickable': clickable === true, 'bg-primary text-white': selected === true }\" (click)=\"onClick()\">\r\n\t<div *ngIf=\"header\" class=\"card-header\">{{header}}</div>\r\n\t<ng-content select=\"slick-card-header\"></ng-content>\r\n\t<div class=\"card-body\"><ng-content></ng-content></div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickCardHeaderComponent } from \"./slick-card-header.component\";\r\nimport { SlickCardComponent } from \"./slick-card.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickCardComponent, SlickCardHeaderComponent, CommonModule],\r\n\tdeclarations: [SlickCardComponent, SlickCardHeaderComponent]\r\n})\r\nexport class SlickCardModule { }\r\n\r\nexport { SlickCardComponent, SlickCardHeaderComponent }\r\n","import { Injectable, ElementRef } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickDialogService {\r\n\tstatic overlayCount: number = 1;\r\n\tconstructor() { }\r\n\r\n static minimizedDialogs = new Array<ElementRef>();\r\n\r\n\tpublic createOverlay(): HTMLDivElement {\r\n\t\tlet overlayEl = document.createElement(\"div\");\r\n\t\toverlayEl.classList.add(\"slick-dialog-overlay\");\r\n\r\n\t\tdocument.body.appendChild(overlayEl);\r\n\r\n\t\treturn overlayEl;\r\n\t}\r\n\r\n\tpublic showOverlay(overlayEl: HTMLDivElement) {\r\n\t\toverlayEl.classList.add(\"visible\");\r\n\t\toverlayEl.style.zIndex = (SlickDialogService.overlayCount * 100).toString();\r\n\t\tSlickDialogService.overlayCount++;\r\n\t}\r\n\r\n\tpublic hideOverlay(overlayEl: HTMLDivElement) {\r\n\t\toverlayEl.classList.remove(\"visible\");\r\n\t\t//SlickDialogService.overlayCount--;\r\n\t}\r\n\r\n public minimize(el: ElementRef) {\r\n SlickDialogService.minimizedDialogs.push(el);\r\n\r\n for (let i = 0; i < SlickDialogService.minimizedDialogs.length; i++)\r\n this.positionInBottomBar(i + 1);\r\n }\r\n\r\n public maximize(el: ElementRef, top: number, width: number, height: number, xOffset: number, yOffset: number) {\r\n\r\n this.positionAtCenter(el, top, width, height, xOffset, yOffset);\r\n this.removeDialogFromMinimized(el);\r\n\r\n }\r\n\r\n public removeDialogFromMinimized(el: ElementRef) {\r\n SlickDialogService.minimizedDialogs = SlickDialogService.minimizedDialogs.filter((x) => {\r\n return x.nativeElement !== el.nativeElement;\r\n });\r\n\r\n for (let i = 0; i < SlickDialogService.minimizedDialogs.length; i++)\r\n this.positionInBottomBar(i + 1);\r\n }\r\n\r\n public positionAtCenter(el: ElementRef, top: number, width: number, height: number, xOffset: number, yOffset: number) {\r\n el.nativeElement.style.top = top + \"px\";\r\n el.nativeElement.style.width = width + \"px\";\r\n el.nativeElement.style.height = height === 0 ? \"initial\" : height + \"px\";\r\n el.nativeElement.style.bottom = \"initial\";\r\n el.nativeElement.style.right = \"calc(50% - \" + ( width / 2 ) + \"px)\";\r\n el.nativeElement.style.transform = \"translate(\" + xOffset + \"px, \" + yOffset +\"px)\";\r\n }\r\n\r\n public positionInBottomBar(position: number) {\r\n const index = position - 1;\r\n const slotSize = 280;\r\n const slotHeight = 44;\r\n const padding = 10;\r\n const width = window.innerWidth;\r\n const availableSlots = parseInt((width / (slotSize + padding)).toString());\r\n\r\n const column = position % availableSlots;\r\n const row = parseInt((position / availableSlots).toString()) + 1;\r\n const el = SlickDialogService.minimizedDialogs[index];\r\n\r\n el.nativeElement.style.left = \"initial\";\r\n el.nativeElement.style.top = `calc(100% - ${row * (slotHeight + padding)}px)`;\r\n el.nativeElement.style.bottom = (row * (slotHeight + padding)) + \"px\";\r\n el.nativeElement.style.right = \"0\";\r\n el.nativeElement.style.transform = `translateX(-${((column - 1) * slotSize) + padding}px)`;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnDestroy, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { SlickDialogService } from \"./slick-dialog.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\n\r\n@Component({\r\n selector: 'slick-dialog',\r\n templateUrl: 'slick-dialog.component.html',\r\n styleUrls: [\"slick-dialog.component.css\"],\r\n providers: [SlickDialogService]\r\n})\r\nexport class SlickDialogComponent implements OnChanges, OnDestroy, OnInit {\r\n @Input() draggable: boolean = true;\r\n @Input() resizable: boolean = true;\r\n @Input() minimizable: boolean = true;\r\n @Input() header: string;\r\n @Input() showHeader: boolean = true;\r\n @Input() noPadding: boolean = false;\r\n @Input() top: number = 80;\r\n @Input() width: number = 600;\r\n @Input() height: number = 0;\r\n @Input() maxHeight: number = 0;\r\n @Input() cssClass: string;\r\n @Input() key: string;\r\n @Input() showOverlay: boolean = true;\r\n @Input() disableScrollbar: boolean = false;\r\n\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"dialogRef\") dialogRef: ElementRef;\r\n\t@ViewChild(\"headerRef\") headerRef: ElementRef;\r\n\t@ViewChild(\"footerRef\") footerRef: ElementRef;\r\n\t@ViewChild(\"dialogWrapper\") dialogWrapper: ElementRef;\r\n\r\n fnResize = () => this.resize();\r\n\r\n private overlayEl: HTMLDivElement;\r\n\r\n showDialog_internal: boolean = false;\r\n isDialogVisible: boolean = false;\r\n isBodyVisible: boolean = false;\r\n hasFooter: boolean = false;\r\n zIndex: number = 0;\r\n inBounds: boolean = true;\r\n isMaximized: boolean = false;\r\n isMinimized: boolean = false;\r\n\r\n positionXOffset: number = 0;\r\n positionYOffset: number = 0;\r\n\r\n position: any;\r\n\r\n constructor(private readonly dialogService: SlickDialogService) {}\r\n\r\n ngOnInit() {\r\n this.loadPositionAndSize();\r\n }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.draggable) \r\n\t\t\tthis.draggable = (this.draggable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.resizable)\r\n\t\t\tthis.resizable = (this.resizable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.minimizable)\r\n\t\t\tthis.minimizable = (this.minimizable.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.showHeader)\r\n\t\t\tthis.showHeader = (this.showHeader.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n if (changes.noPadding)\r\n this.noPadding = (this.noPadding.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.top)\r\n\t\t\tthis.top = parseInt(this.top.toString());\r\n\r\n\t\tif (changes.width)\r\n\t\t\tthis.width = parseInt(this.width.toString());\r\n\r\n\t\tif (changes.height)\r\n\t\t\tthis.height = parseInt(this.height.toString());\r\n\r\n\t\tif (changes.maxHeight)\r\n\t\t\tthis.maxHeight = parseInt(this.maxHeight.toString());\r\n\r\n\t\tif (changes.showOverlay)\r\n\t\t\tthis.showOverlay = (this.showOverlay.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.disableScrollbar)\r\n\t\t\tthis.disableScrollbar = (this.disableScrollbar.toString().toLowerCase() === 'true') ? true : false;\r\n\t}\r\n\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener(\"resize\", this.fnResize, true);\r\n\r\n // It's fine if this fails. It just means they were already removed\r\n try {\r\n document.body.removeChild(this.containerRef.nativeElement);\r\n document.body.removeChild(this.overlayEl);\r\n }\r\n catch { }\r\n\r\n this.overlayEl = null;\r\n }\r\n\r\n onMoveEnd(event) {\r\n this.positionXOffset = event.x;\r\n this.positionYOffset = event.y;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n onResizeStop(event) {\r\n this.width = event.size.width;\r\n this.height = event.size.height;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n updatePositionAndSize() {\r\n const state = {\r\n positionXOffset: this.positionXOffset,\r\n positionYOffset: this.positionYOffset,\r\n width: this.width,\r\n height: this.height\r\n };\r\n\r\n this.position = {\r\n x: this.positionXOffset,\r\n y: this.positionYOffset\r\n };\r\n\r\n if (this.key) {\r\n localStorage.setItem(`DIALOG_STATE_${this.key}`, JSON.stringify(state));\r\n }\r\n }\r\n\r\n loadPositionAndSize() {\r\n if (!this.key && SlickInitService.getParams().errorLog === \"verbose\") {\r\n console.error(\"Storage Key ([key] parameter) is not provided for Slick Dialog. Persisting state is disabled.\");\r\n return;\r\n }\r\n\r\n const state = JSON.parse(localStorage.getItem(`DIALOG_STATE_${this.key}`));\r\n \r\n if (state) {\r\n this.positionXOffset = state.positionXOffset;\r\n this.positionYOffset = state.positionYOffset;\r\n this.width = state.width;\r\n this.height = state.height;\r\n\r\n // Sometimes this goes above the top of the screen. If it does, reset it\r\n if (this.positionYOffset < 0 && this.positionYOffset < (this.top * -1)) {\r\n this.positionYOffset = this.top * -1;\r\n this.updatePositionAndSize();\r\n }\r\n\r\n this.position = {\r\n x: this.positionXOffset,\r\n y: this.positionYOffset\r\n };\r\n }\r\n }\r\n\r\n\tasync showDialog() {\r\n\t\tthis.showDialog_internal = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n document.body.appendChild(this.containerRef.nativeElement);\r\n this.overlayEl = this.dialogService.createOverlay();\r\n\r\n this.isMinimized = false;\r\n this.isMaximized = false;\r\n this.dialogService.removeDialogFromMinimized(this.dialogWrapper);\r\n\r\n this.dialogService.positionAtCenter(this.dialogWrapper, this.top, this.width, this.height, this.positionXOffset, this.positionYOffset);\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n\r\n this.zIndex = ((SlickDialogService.overlayCount * 100) + 1);\r\n if (this.showOverlay) {\r\n this.dialogService.showOverlay(this.overlayEl);\r\n }\r\n this.isDialogVisible = true;\r\n this.resize();\r\n\r\n this.dialogRef.nativeElement.classList.remove(\"collapse-dialog\");\r\n this.dialogRef.nativeElement.classList.add(\"expand-dialog\");\r\n\r\n window.addEventListener(\"resize\", this.fnResize, true);\r\n }\r\n\r\n async onDialogClose(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n await this.hideDialog();\r\n\r\n if (this.onClose)\r\n this.onClose.emit();\r\n }\r\n\r\n async hideDialog() {\r\n if (this.isDialogVisible === false)\r\n return;\r\n\r\n this.isMaximized = false;\r\n if (this.showOverlay) {\r\n this.dialogService.hideOverlay(this.overlayEl);\r\n }\r\n this.dialogRef.nativeElement.classList.remove(\"expand-dialog\");\r\n this.dialogRef.nativeElement.classList.add(\"collapse-dialog\");\r\n await SlickSleepService.sleep(350);\r\n this.isBodyVisible = false;\r\n this.isDialogVisible = false;\r\n\r\n if (this.isMinimized) {\r\n this.dialogService.removeDialogFromMinimized(this.dialogWrapper);\r\n this.isMinimized = false;\r\n }\r\n\r\n window.removeEventListener(\"resize\", this.fnResize, true);\r\n\r\n // It's fine if this fails. It just means they were already removed\r\n try {\r\n document.body.removeChild(this.containerRef.nativeElement);\r\n document.body.removeChild(this.overlayEl);\r\n }\r\n catch { }\r\n\r\n this.overlayEl = null;\r\n this.showDialog_internal = false;\r\n }\r\n\r\n onDialogMinimize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n \r\n this.isMaximized = false;\r\n this.isMinimized = true;\r\n this.dialogRef.nativeElement.style.height = \"initial\";\r\n\r\n if (this.showOverlay) {\r\n this.dialogService.hideOverlay(this.overlayEl);\r\n }\r\n this.dialogService.minimize(this.dialogWrapper);\r\n }\r\n\r\n onDialogMaximize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n this.dialogService.maximize(this.dialogWrapper, this.top, this.width, this.height, this.positionXOffset, this.positionYOffset);\r\n\r\n if (this.showOverlay) {\r\n this.dialogService.showOverlay(this.overlayEl);\r\n }\r\n\r\n this.zIndex = parseInt(this.overlayEl.style.zIndex) + 1;\r\n setTimeout(() => {\r\n this.isMinimized = false;\r\n this.dialogRef.nativeElement.style.height = \"100%\";\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n this.resize();\r\n }, 300);\r\n }\r\n\r\n toggleFullSize(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n \r\n if (!this.isMaximized) {\r\n this.dialogWrapper.nativeElement.style.top = \"0px\";\r\n this.dialogWrapper.nativeElement.style.right = \"0px\";\r\n this.dialogWrapper.nativeElement.style.left = \"0px\";\r\n this.dialogRef.nativeElement.style.height = window.innerHeight + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.width = window.innerWidth + \"px\";\r\n this.dialogWrapper.nativeElement.style.width = window.innerWidth + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.maxHeight = \"initial\";\r\n this.dialogWrapper.nativeElement.style.transform = \"translate(0%)\";\r\n this.isMaximized = true;\r\n this.resize(true);\r\n\r\n } else {\r\n this.dialogWrapper.nativeElement.style.top = this.top + \"px\";\r\n this.dialogWrapper.nativeElement.style.right = \"calc(50% - \" + (this.width / 2) + \"px)\";\r\n this.dialogWrapper.nativeElement.style.left = \"calc(50% - \" + (this.width / 2) + \"px)\";\r\n this.dialogWrapper.nativeElement.style.transform = \"translate(\" + this.positionXOffset + \"px, \" + this.positionYOffset + \"px)\";\r\n this.dialogRef.nativeElement.style.height = this.height === 0 ? \"initial\" : this.height + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.width = this.width + \"px\";\r\n this.dialogWrapper.nativeElement.style.width = this.width + \"px\";\r\n\r\n this.dialogRef.nativeElement.style.maxHeight = this.maxHeight + \"\";\r\n this.isMaximized = false;\r\n this.resize(false);\r\n }\r\n }\r\n\r\n private async resize(forFullSize: boolean = false) {\r\n\r\n if (this.isMaximized)\r\n forFullSize = true;\r\n\r\n await SlickSleepService.sleep(50);\r\n let headerHeight = (this.headerRef) ? this.headerRef.nativeElement.clientHeight : 0;\r\n let footerHeight = (this.footerRef) ? this.footerRef.nativeElement.clientHeight : 0;\r\n this.hasFooter = footerHeight > 0;\r\n\r\n let documentBodyHeight = !forFullSize ? (document.body.clientHeight || window.innerHeight) : window.innerHeight;\r\n this.maxHeight = !forFullSize ? documentBodyHeight - (this.top * 2) : documentBodyHeight;\r\n this.isBodyVisible = true;\r\n }\r\n}","<div #containerRef class=\"slick-dialog-container modal\" *ngIf=\"showDialog_internal === true\" [hidden]=\"!isDialogVisible\" [style.zIndex]=\"zIndex\" #bounds>\r\n <div #dialogWrapper class=\"position-absolute slick-dialog-z-index d-inline-block\" [ngClass]=\"{'isMinimized' : isMinimized }\" (endOffset)=\"onMoveEnd($event)\" [position]=\"position\" [ngDraggable]=\"draggable && !isMinimized\" [bounds]=\"bounds\" [handle]=\"draggingHandle\" [inBounds]=\"inBounds\" [style.top.px]=\"top\">\r\n <div #dialogRef (rzStop)=\"onResizeStop($event)\" [ngResizable]=\"resizable && !isMinimized\" class=\"slick-dialog modal-content d-flex flex-column drag-block-handle {{cssClass}}\" [style.height]=\"height === 0 ? '100%' : height + 'px'\" [style.width.px]=\"width\" [style.max-height.px]=\"maxHeight\">\r\n <div [class.slick-dialog-draggingHangle]=\"draggable && !isMinimized\" #draggingHandle>\r\n <div #headerRef class=\"slick-dialog_header modal-header py-0\" *ngIf=\"showHeader === true\">\r\n <div class=\"header-left\">{{header}}</div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && !isMinimized\" (mousedown)=\"onDialogMinimize($event)\" style=\"width: 28px;\"><i class=\"far fa-window-minimize\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && !isMinimized\" (mousedown)=\"toggleFullSize($event)\" style=\"width: 28px;\"><i *ngIf=\"!isMaximized\" class=\"far fa-window-maximize\"></i><i *ngIf=\"isMaximized\" class=\"far fa-window-restore\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"minimizable && isMinimized\" (mousedown)=\"onDialogMaximize($event)\" style=\"width: 28px;\"><i class=\"far fa-window-restore\"></i></div>\r\n <div class=\"header-right\" *ngIf=\"!isMinimized\" (mousedown)=\"onDialogClose($event)\" style=\"width: 28px;\"><i class=\"far fa-times\"></i></div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMinimized\" [style.visibility]=\"(isBodyVisible === true) ? 'visible' : 'hidden'\" style=\"overflow-y: auto\" class=\"slick-dialog_body modal-body flex-fill\" [ngClass]=\"{'disable_scrollbar' : disableScrollbar === true, 'p-0': noPadding === true }\"><ng-content></ng-content></div>\r\n <div #footerRef [ngClass]=\"{'slick-dialog_footer modal-footer': hasFooter === true }\" *ngIf=\"!isMinimized\"><ng-content select=\"slick-dialog-footer\"></ng-content></div>\r\n </div>\r\n </div>\r\n\r\n</div>","import { Component, Input, ViewChild, OnChanges, SimpleChanges, ChangeDetectorRef } from \"@angular/core\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\n\r\nexport enum SlickConfirmDialogResults { Ok, Cancel }\r\n\r\n@Component({\r\n\tselector: 'slick-confirm-dialog',\r\n\ttemplateUrl: 'slick-confirm-dialog.component.html'\r\n})\r\nexport class SlickConfirmDialogComponent implements OnChanges {\r\n\t@Input() width = 300;\r\n\t@Input() okButtonText = \"Ok\";\r\n\t@Input() cancelButtonText = \"Cancel\";\r\n\t@Input() showOkButton = true;\r\n\t@Input() showCancelButton = true;\r\n\r\n\t@ViewChild(\"dialogRef\") dialogRef: SlickDialogComponent;\r\n\r\n\tisVisible = false;\r\n\r\n\tprivate dialogResolve: any;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.showOkButton)\r\n\t\t\tthis.showOkButton = (this.showOkButton.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.showCancelButton)\r\n\t\t\tthis.showCancelButton = (this.showCancelButton.toString().toLowerCase() === 'false') ? false : true;\r\n\t}\r\n\r\n\tconfirm(): Promise<SlickConfirmDialogResults> {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\treturn new Promise<any>((resolve, reject) => {\r\n\t\t\tthis.dialogRef.showDialog()\r\n\t\t\tthis.dialogResolve = resolve;\r\n\t\t});\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.dialogRef.hideDialog()\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Ok);\r\n\t}\r\n\r\n\tonCancel() {\r\n\t\tthis.dialogRef.hideDialog()\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Cancel);\r\n\t}\r\n\r\n\tonClose() {\r\n\t\tthis.dialogResolve(SlickConfirmDialogResults.Cancel);\r\n\t}\r\n}","<slick-dialog *ngIf=\"isVisible === true\" #dialogRef [top]='200' [width]='width' [showHeader]='false' [resizable]=\"false\" [draggable]=\"false\" [minimizable]=\"false\" onClose='onClose()'>\r\n\t<div class=\"form-group text-center\">\r\n\t\t<h4 style='margin-top: 10px; margin-bottom: 20px'><ng-content></ng-content></h4>\r\n\t</div>\r\n\r\n\t<div class=\"text-center\" style='margin-top: 10px;'>\r\n\t\t<button *ngIf=\"showOkButton === true\" type=\"button\" style='width: 80px' class=\"btn btn-outline-primary\" (click)=\"onOk()\">{{okButtonText}}</button> \r\n\t\t<button *ngIf=\"showCancelButton === true\" type=\"button\" style='width: 80px' class=\"btn btn-outline-danger\" (click)=\"onCancel()\">Cancel</button>\r\n\t</div>\r\n</slick-dialog>\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-dialog-footer',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickDialogFooterComponent {\r\n\t@HostBinding('style.flex') flex = '1 1';\r\n\t@HostBinding('style.textAlign') textAlign = 'center';\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common'; \r\nimport { SlickDialogComponent } from \"./slick-dialog.component\";\r\nimport { SlickDialogFooterComponent } from \"./slick-dialog-footer.component\";\r\nimport { SlickDialogService } from \"./slick-dialog.service\";\r\nimport { AngularDraggableModule } from \"angular2-draggable\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, AngularDraggableModule],\r\n\tdeclarations: [SlickDialogComponent, SlickDialogFooterComponent],\r\n\texports: [SlickDialogComponent, SlickDialogFooterComponent],\r\n\tproviders: [SlickDialogService]\r\n})\r\nexport class SlickDialogModule { }\r\n\r\nexport { SlickDialogComponent, SlickDialogFooterComponent }","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common'; \r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog.component\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\n\r\n@NgModule({\r\n\timports: [SlickDialogModule, CommonModule],\r\n\tdeclarations: [SlickConfirmDialogComponent],\r\n\texports: [SlickConfirmDialogComponent]\r\n})\r\nexport class SlickConfirmDialogModule { }\r\nexport { SlickConfirmDialogComponent, SlickConfirmDialogResults }\r\n","import { Component, Input, AfterViewInit, ViewChild, ElementRef, OnDestroy, HostBinding, ContentChild, OnChanges } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Component({\r\n\tselector: 'slick-container',\r\n\ttemplateUrl: 'slick-container.component.html'\r\n})\r\nexport class SlickContainerComponent {\r\n\t@Input() maxHeight: string;\r\n\t@Input() padding: boolean = true;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n}\r\n","<div #slickContainerDivRef id=\"slick-container_{{uuid}}\" class=\"slick-container\" [ngClass]=\"{ 'slick-container-padding': padding === true }\" [style.minHeight]=\"maxHeight\" [style.maxHeight]=\"maxHeight\">\r\n\t<ng-content select=\"slick-container-header\"></ng-content>\r\n\t<ng-content select=\"slick-container-body\"></ng-content>\r\n\t<ng-content select=\"slick-container-footer\"></ng-content>\r\n</div>\r\n\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-header',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerHeaderComponent {\r\n\t@HostBinding(\"class\") slickContainerHeader = 'slick-container-header';\r\n}\r\n","import { Component, HostBinding, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-body',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerBodyComponent {\r\n\t@HostBinding('class') flex = 'slick-container-body flex-fill';\r\n\t@HostBinding('style.overflowY') overflowY = 'auto';\r\n}\r\n","import { Component, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-container-footer',\r\n\ttemplate: `<ng-content></ng-content>`\r\n})\r\nexport class SlickContainerFooterComponent {\r\n\t@HostBinding(\"class\") slickContainerFooter = 'slick-container-footer';\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickContainerComponent } from \"./slick-container.component\";\r\n\r\nimport { SlickContainerHeaderComponent } from \"./slick-container-header.component\";\r\nimport { SlickContainerBodyComponent } from \"./slick-container-body.component\";\r\nimport { SlickContainerFooterComponent } from \"./slick-container-footer.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent],\r\n\texports: [CommonModule, SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent]\r\n})\r\nexport class SlickContainerModule { }\r\n\r\nexport { SlickContainerComponent }\r\nexport { SlickContainerHeaderComponent }\r\nexport { SlickContainerBodyComponent }\r\nexport { SlickContainerFooterComponent }\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-context-menu-item\",\r\n\ttemplate: `<div class=\"dropdown-item\"><ng-content></ng-content></div>`\r\n})\r\nexport class SlickContextMenuItemComponent {}","import { Component, Input, AfterViewInit, ViewChild, ElementRef, HostListener } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-context-menu\",\r\n\ttemplateUrl: \"slick-context-menu.component.html\"\r\n})\r\nexport class SlickContextMenuComponent implements AfterViewInit {\r\n\t@ViewChild(\"slickContextMenuRef\") slickContextMenuRef: ElementRef;\r\n\t@ViewChild(\"slickContextMenuDropdownMenuRef\") slickContextMenuDropdownMenuRef: ElementRef;\r\n\t\r\n\t@HostListener('document:click', ['$event.target'])\r\n\tpublic onClick(targetElement) {\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.display = \"none\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuDropdownMenuRef.nativeElement).style.opacity = \"0\";\r\n\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n public onRightClick(event: MouseEvent) {\r\n if (event.button === 2) {\r\n this.onClick(event.target);\r\n }\r\n }\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.slickContextMenuRef.nativeElement.remove(this.slickContextMenuRef);\r\n\t\tdocument.body.appendChild(this.slickContextMenuRef.nativeElement);\r\n\t}\r\n\r\n\tshowContextMenu(e: MouseEvent) {\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.left = (e.pageX) + \"px\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.top = (e.pageY) + \"px\";\r\n\t\t(<HTMLDivElement>this.slickContextMenuRef.nativeElement).style.display = \"block\";\r\n\t\tsetTimeout(() => {\r\n\t\t\t(<HTMLDivElement>this.slickContextMenuDropdownMenuRef.nativeElement).style.opacity = \"1\";\r\n\t\t});\r\n\t}\r\n}","<div #slickContextMenuRef class=\"slick-context-menu\">\r\n\t<div #slickContextMenuDropdownMenuRef class=\"dropdown-menu show\">\r\n\t\t<ng-content select=\"slick-context-menu-item\"></ng-content>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickContextMenuItemComponent } from \"./slick-context-menu-item.component\";\r\nimport { SlickContextMenuComponent } from \"./slick-context-menu.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickContextMenuComponent, SlickContextMenuItemComponent, CommonModule],\r\n\tdeclarations: [SlickContextMenuComponent, SlickContextMenuItemComponent]\r\n})\r\nexport class SlickContextMenuModule {}\r\n\r\nexport { SlickContextMenuComponent, SlickContextMenuItemComponent }","export class SlickCurrencyMaskOptions {\r\n\tprefix: string;\r\n\tdecimal: string;\r\n\tthousands: string;\r\n\tprecision: number;\r\n\tallowNegative: boolean;\t\r\n\tupdateOnBlurOnly: boolean;\r\n\tdefaultToZero: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.prefix = \"$\";\r\n\t\tthis.decimal = \".\";\r\n\t\tthis.thousands = \",\";\r\n\t\tthis.precision = 2;\r\n\t\tthis.allowNegative = true;\r\n\t\tthis.updateOnBlurOnly = true;\r\n\t\tthis.defaultToZero = true;\r\n\t}\r\n}\r\n","import { Directive, Input, ElementRef, forwardRef, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from '../utils/slick-sleep.service';\r\nimport { SlickCurrencyMaskOptions } from \"./slick-currency-mask-options.model\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-currency-mask]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickCurrencyMaskDirective),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickCurrencyMaskDirective implements OnInit, ControlValueAccessor {\r\n\t@Input(\"slick-currency-mask\") slickCurrencyMask: SlickCurrencyMaskOptions;\r\n\thasFocus: boolean = false;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\r\n\toptions: SlickCurrencyMaskOptions = new SlickCurrencyMaskOptions();\r\n\r\n\tprivate fnKeyDown = (e) => this.keyDown(e);\r\n\tprivate fnFocus = () => this.focus();\r\n\tprivate fnBlur = () => this.blur();\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\t(<HTMLInputElement>this.el.nativeElement).style.textAlign = \"right\";\r\n\t\tthis.hasFocus = false;\r\n\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.addEventListener('focus', this.fnFocus);\r\n\t\tthis.el.nativeElement.addEventListener('blur', this.fnBlur);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\t// If the currency mask doesn't have any options, set default options\r\n\t\tif (!this.slickCurrencyMask) \r\n\t\t\tthis.slickCurrencyMask = new SlickCurrencyMaskOptions();\r\n\r\n\t\tthis.options = new SlickCurrencyMaskOptions();\r\n\t\tthis.options.prefix = this.slickCurrencyMask.prefix || \"$\";\r\n\t\tthis.options.decimal = this.slickCurrencyMask.decimal || \".\";\r\n\t\tthis.options.thousands = this.slickCurrencyMask.thousands || \",\";\r\n\t\tthis.options.precision = (this.slickCurrencyMask.precision === null || this.slickCurrencyMask.precision === undefined) ? 2 : parseInt(this.slickCurrencyMask.precision.toString());\r\n\t\tthis.options.allowNegative = (this.slickCurrencyMask.allowNegative === null || this.slickCurrencyMask.allowNegative === undefined) ? true : (this.slickCurrencyMask.allowNegative.toString() === 'true');\r\n\t\tthis.options.updateOnBlurOnly = (this.slickCurrencyMask.updateOnBlurOnly === null || this.slickCurrencyMask.updateOnBlurOnly === undefined) ? true : (this.slickCurrencyMask.updateOnBlurOnly.toString() === 'true');\r\n\t\tthis.options.defaultToZero = (this.slickCurrencyMask.defaultToZero === null || this.slickCurrencyMask.defaultToZero === undefined) ? true : (this.slickCurrencyMask.defaultToZero.toString() === 'true');\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.removeEventListener('focus', this.fnFocus);\r\n\t\tthis.el.nativeElement.removeEventListener('blur', this.fnBlur);\r\n\t}\r\n\r\n\tasync keyDown(e: KeyboardEvent) {\r\n\t\tif (e.altKey || e.ctrlKey)\r\n\t\t\treturn;\r\n\r\n\t\tlet isValid = false;\r\n\r\n\t\tif (e.key === this.options.decimal)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.code === 'ArrowLeft' || e.code === 'ArrowRight')\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Backspace\r\n\t\tif (e.keyCode === 8)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Tab\r\n\t\tif (e.keyCode === 9)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// Del\r\n\t\tif (e.keyCode === 46)\r\n\t\t\tisValid = true;\r\n\r\n\t\t// F1-F12\r\n\t\tif (e.keyCode >= 112 && e.keyCode <= 123)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.key >= '0' && e.key <= '9')\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.key === '-' && this.options.allowNegative === true)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (e.keyCode === 46)\r\n\t\t\tisValid = true;\r\n\r\n\t\tif (!isValid) {\r\n\t\t\te.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\r\n\t\tconst dollarValue = this.parseDollarValue(usLocaleText);\r\n\t\tif (this.options.updateOnBlurOnly === false)\r\n\t\t\tthis.propagateChange(dollarValue);\r\n\r\n\t}\r\n\r\n\tasync focus() {\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.addEventListener('blur', this.fnBlur);\r\n\r\n\t\tthis.hasFocus = true;\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\t\tthis.updateTextbox(usLocaleText);\r\n\t\t(<HTMLInputElement>this.el.nativeElement).select()\r\n\t}\r\n\r\n\tasync blur() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t\tthis.el.nativeElement.removeEventListener('blur', this.fnBlur);\r\n\r\n\t\tthis.hasFocus = false;\r\n\t\tconst usLocaleText = this.convertToUSLocale((<HTMLInputElement>this.el.nativeElement).value);\r\n\t\tthis.updateTextbox(usLocaleText);\r\n\t\tconst dollarValue = this.parseDollarValue(usLocaleText);\r\n\t\tthis.propagateChange(dollarValue);\r\n\t}\r\n\r\n\tpropagateChange = (_: number) => {};\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: number | string) {\r\n\t\tif (obj === null || obj === undefined) {\r\n\t\t\tif (this.options.defaultToZero === true) {\r\n\t\t\t\tobj = 0;\r\n\t\t\t\tthis.propagateChange(0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<HTMLInputElement>this.el.nativeElement).value = null;\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If this is a locale where , is the decimal separator, convert it back to . for our purposes\r\n\t\tconst objStr = obj.toString().replace(\",\", \".\");\r\n\t\tconst objNum = parseFloat(objStr);\r\n\t\t// toLocaleString will add in the ,'s so make sure to remove them\r\n\t\tconst objStrLocale = objNum.toLocaleString(\"en-US\").replace(\",\", \"\");\r\n\t\tthis.updateTextbox(objStrLocale);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tprivate convertToUSLocale(text: string): string {\r\n\t\twhile (text.indexOf(\" \") >= 0)\r\n\t\t\ttext = text.replace(\" \", \"\");\r\n\r\n\t\tif (!text) {\r\n\t\t\tif (this.options.defaultToZero === true) \r\n\t\t\t\ttext = \"0.0\";\t\t\t\r\n\t\t\telse \r\n\t\t\t\treturn null;\t\t\t\r\n\t\t}\r\n\r\n\t\tif (text.indexOf(this.options.decimal) === 0)\r\n\t\t\ttext = `0${text}`;\r\n\r\n\t\tconst textParts = text.split(this.options.decimal).filter(x => x !== \"\");\r\n\r\n\t\tif (textParts.length === 0)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\tif (textParts.length === 1)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\t// Only take the first 2. The rest are errors\r\n\t\tif (textParts.length > 2)\r\n\t\t\ttextParts.slice(0, 1);\r\n\r\n\t\ttextParts[0] = textParts[0]\r\n\t\t\t.replace(this.options.thousands, \"\")\r\n\t\t\t.replace(this.options.prefix, \"\")\r\n\t\t\t.replace(this.options.decimal, \"\");\r\n\r\n\t\treturn `${textParts[0]}.${textParts[1]}`;\r\n\t}\r\n\r\n\tprivate parseDollarValue(text: string): number {\r\n\t\tif (!text) \r\n\t\t\treturn null;\r\n\t\t\r\n\t\twhile (text.indexOf(\" \") >= 0)\r\n\t\t\ttext = text.replace(\" \", \"\");\r\n\r\n\t\t// Split the text into the dollar's part and the cents part\r\n\t\tconst textParts = text.split(\".\").filter(x => x !== \"\");\r\n\t\t// Make sure we have a dollars and cents\r\n\t\tif (textParts.length === 0)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\tif (textParts.length === 1)\r\n\t\t\ttextParts.push('0');\r\n\r\n\t\t// Only take the first 2. The rest are not allowed\r\n\t\tif (textParts.length > 2)\r\n\t\t\ttextParts.slice(0, 1);\r\n\r\n\t\ttextParts[0] = textParts[0]\r\n\t\t\t.replace(this.options.prefix, \"\")\r\n\t\t\t.replace(\",\", \"\");\r\n\r\n\t\ttry {\r\n\t\t\treturn parseFloat(`${textParts[0]}.${textParts[1]}`);\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateTextbox(strVal: string) {\r\n\t\tif (!strVal) {\r\n\t\t\t(<HTMLInputElement>this.el.nativeElement).value = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.options.allowNegative === false)\r\n\t\t\tstrVal = strVal.replace(\"-\", \"\");\r\n\r\n\t\t// If there is a - sign, remove it temporarily\r\n\t\tconst negativePart = (strVal.indexOf(\"-\") === 0) ? \"-\" : \"\";\r\n\t\tstrVal = strVal.replace(\"-\", \"\");\r\n\r\n\t\tconst currencyParts = strVal.split(\".\").filter(x => x !== \"\");\r\n\t\t// make sure there is a dollar amount\r\n\t\tif (currencyParts.length === 0) \r\n\t\t\tcurrencyParts.push(\"0\");\r\n\r\n\t\t// make sure there is a cents amount\r\n\t\tif (currencyParts.length === 1)\r\n\t\t\tcurrencyParts.push(\"0\");\r\n\r\n\t\t// Only take the first 2. The rest are errors\r\n\t\tif (currencyParts.length > 2)\r\n\t\t\tcurrencyParts.slice(0, 1);\r\n\r\n\t\tlet dollarPart = <string>currencyParts[0];\r\n\t\tdollarPart = dollarPart.replace(',', '').replace('.', '');\r\n\t\tlet centsPart = currencyParts[1];\r\n\t\tif (centsPart.length > this.options.precision)\r\n\t\t\tcentsPart = centsPart.substr(0, this.options.precision);\r\n\r\n\t\twhile (centsPart.length < this.options.precision)\r\n\t\t\tcentsPart = centsPart + \"0\";\r\n\r\n\t\t// reverse the dollar part so we can put commas every 3 chars\r\n\t\tif (!this.hasFocus && dollarPart.length > 3) {\r\n\t\t\tfor (let i = dollarPart.length - 3; i > 0; i -= 3)\r\n\t\t\t\tdollarPart = [dollarPart.slice(0, i), this.options.thousands, dollarPart.slice(i)].join('');\r\n\t\t}\r\n\r\n\t\tlet textboxVal = `${negativePart}${dollarPart}${this.options.decimal}${centsPart}`;\r\n\t\tif (!this.hasFocus)\r\n\t\t\ttextboxVal = `${this.options.prefix}${textboxVal}`;\r\n\r\n\t\t(<HTMLInputElement>this.el.nativeElement).value = textboxVal;\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { SlickCurrencyMaskDirective } from \"./slick-currency-mask.directive\";\r\n\r\n@NgModule({\r\n\timports: [],\r\n\tdeclarations: [SlickCurrencyMaskDirective],\r\n\texports: [SlickCurrencyMaskDirective]\r\n})\r\nexport class SlickCurrencyMaskModule { }\r\nexport { SlickCurrencyMaskDirective }\r\nexport { SlickCurrencyMaskOptions } from \"./slick-currency-mask-options.model\";\r\n","import { Component, ElementRef, ViewChild, Input, HostListener, forwardRef, OnInit, OnDestroy, EventEmitter, Output } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport moment from \"moment\";\r\n\r\n@Component({\r\n\tselector: '[slick-date-picker]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickDatePickerComponent),\r\n\t\t\tmulti: true\r\n\t\t}],\r\n\ttemplateUrl: 'slick-date-picker.component.html'\r\n})\r\nexport class SlickDatePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\t@Input(\"slick-date-picker\") slickDatePicker: SlickDatePickerComponent;\r\n\t@Input(\"slick-date-picker-format\") format: string = \"M/D/YYYY\";\r\n\t@Input(\"slick-date-picker-condensed\") condensed: boolean = false;\r\n\t@Input(\"slick-date-picker-mobile\") mobile: boolean = false;\r\n\t@Output(\"onDateChange\") onDateChange = new EventEmitter<Date>();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnDocumentMouseDown = (e) => this.documentMouseDown(e);\r\n\r\n\t// Make sure they only press valid keys\r\n\t@HostListener('keydown', ['$event'])\r\n\tasync onKeydown(event: KeyboardEvent) {\t\t\r\n\t\tif (event.altKey || event.ctrlKey || event.metaKey === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.hideCalendar();\r\n\r\n\t\t// Allow: backspace, delete, tab, escape, enter\r\n\t\tif ((event.keyCode === 46 || event.keyCode === 8) ||\r\n\t\t\t(event.keyCode === 9 || event.keyCode === 27 || event.keyCode === 13) ||\r\n\t\t\t// Allow F1-F12 keys\r\n\t\t\t((event.keyCode >= 112 && event.keyCode <= 123)) ||\r\n\t\t\t// Allow: home, end, left, right, down, up\r\n\t\t\t(event.keyCode >= 35 && event.keyCode <= 40)) {\r\n\t\t\t// let it happen, don't do anything\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ensure that it is a number and stop the keypress\r\n\t\tif ((event.shiftKey || event.altKey || event.key < '0' || event.key > '9') &&\r\n\t\t\tevent.key !== '/' && // Allow /\r\n\t\t\tevent.key !== '-') { // Allow -\t\t\r\n\t\t\tevent.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// When we first focus, show the date picker\r\n\t@HostListener('focus', ['$event'])\r\n\tonFocus(event: FocusEvent): void {\r\n\t\tthis.showCalendar();\r\n\t}\r\n\r\n\t// When we blur, update the model\r\n\t@HostListener('blur', ['$event', '$event.target'])\r\n\tasync onBlur(event: FocusEvent, targetElement: HTMLElement) {\r\n\t\t// If the user clicked on the calendar, it will trigger a mouse down event before the blur event. Don't blur\r\n\t\t// if they clicked on the calendar.\r\n\t\tif (this.ignoreBlur === true) {\r\n\t\t\tthis.ignoreBlur = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst textVal = this.el.nativeElement.value;\r\n\r\n\t\tif (!textVal) {\r\n\t\t\tthis.doPropagate(null);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (moment(textVal, this.format).isValid()) {\r\n\t\t\tvar newDate = moment(textVal, this.format);\r\n\t\t\tthis.doPropagate(newDate.toDate())\r\n\t\t\tthis.el.nativeElement.value = newDate.format(this.format);\r\n\t\t}\r\n\t}\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tignoreBlur: boolean = false;\r\n\tshowDatePicker: boolean = false;\r\n\tdatePickerVisiblity: string = \"hidden\";\r\n\tdatePickerOpacity: string = '0';\r\n\tleft: string;\r\n\ttop: string;\r\n\tselectedDate: Date = null;\r\n\tisInitial = true;\r\n\r\n\tprivate inputGroupPrepend: HTMLElement;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\r\n\t\tthis.mobile = (this.mobile || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\t\tthis.condensed = (this.condensed || 'false').toString().toLowerCase() === 'true' ? true : false;\r\n\r\n\t\t// Since this.mobile isn't necessarily defined yet, we need to sleep to allow the ngIf's to do their thing\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.containerRef.nativeElement.remove(this.containerRef);\r\n\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.inputGroupPrepend = SlickUtilsService.getClosestSibling(this.el.nativeElement, \"input-group-prepend\");\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t// Is okay if this fails. It just means it was already removed.\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n private doPropagate(date: Date) {\r\n // We don't always go through the emit on the first call, so make sure this isn't the first change\r\n this.isInitial = false;\r\n\r\n\t\tif (!date) {\r\n\t\t\tif (this.selectedDate) {\r\n\t\t\t\tthis.propagateChange(null);\r\n\t\t\t\tthis.emitDateChange(null);\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedDate = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst newDate = moment(date);\r\n\t\t\t// If the date is not valid, return\r\n\t\t\tif (newDate.isValid() === false)\r\n\t\t\t\treturn;\r\n\r\n\t\t\t// Don't propogate if the dates are the same\r\n\t\t\tif (moment(this.selectedDate).isSame(newDate))\r\n\t\t\t\treturn;\r\n\r\n\r\n\t\t\t// Setting this selectedDate will trigger the ngModelChange of the calendar. Ignore this.\r\n\t\t\tthis.selectedDate = moment(date).startOf(\"date\").toDate();\r\n\t\t\tthis.propagateChange(this.selectedDate);\r\n\t\t\tthis.emitDateChange(this.selectedDate);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate emitDateChange(date: Date) {\r\n\t\tif (this.onDateChange && !this.isInitial)\r\n\t\t\tthis.onDateChange.emit(date);\r\n\r\n\t\tthis.isInitial = false;\r\n\t}\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj) {\r\n\t\t\tif (moment(obj).isValid() === false) {\r\n\t\t\t\tthis.selectedDate = null;\r\n this.el.nativeElement.value = \"Invalid Date\";\r\n this.isInitial = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet updatedDate: moment.Moment;\r\n\t\t\tif (obj instanceof Date || obj.indexOf(\"Z\") >= 0)\r\n\t\t\t\tupdatedDate = moment(obj).startOf(\"date\");\r\n\t\t\telse\r\n\t\t\t\tupdatedDate = moment(obj, this.format).startOf(\"date\");\r\n\r\n if (moment(this.selectedDate || new Date()).isSame(updatedDate)) {\r\n this.isInitial = false;\r\n return;\r\n }\r\n\r\n\t\t\tthis.selectedDate = updatedDate.toDate();\r\n\t\t\tthis.el.nativeElement.value = moment(this.selectedDate).format(this.format);\r\n\t\t}\r\n\t\telse {\r\n if (!this.selectedDate && !obj) {\r\n this.isInitial = false;\r\n return;\r\n }\r\n\r\n\t\t\tthis.el.nativeElement.value = '';\r\n\t\t\tthis.selectedDate = null;\r\n\t\t}\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tprivate documentMouseDown(e: MouseEvent) {\r\n\t\t// This is the only way to capture that they clicked on the calendar before the blur event\r\n\t\t// fires. \r\n\t\tif (SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-calendar\") === true)\r\n\t\t\tthis.ignoreBlur = true;\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!e.target)\r\n\t\t\treturn;\r\n\r\n\t\tlet targetElement: HTMLElement = (<HTMLElement>e.target);\r\n\r\n\t\tif (SlickUtilsService.checkParentClassExists(targetElement, \"slick-calendar\") === true)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.inputGroupPrepend && ((targetElement === this.inputGroupPrepend)\r\n\t\t\t|| (targetElement.parentElement && targetElement.parentElement === this.inputGroupPrepend))\r\n\t\t\t|| (targetElement.parentElement && targetElement.parentElement.parentElement && targetElement.parentElement.parentElement === this.inputGroupPrepend)) {\r\n\t\t\tthis.toggleCalendar();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst clickedInside = this.el.nativeElement.contains(targetElement);\r\n\t\tif (!clickedInside) {\r\n\t\t\tthis.hideCalendar();\r\n\t\t}\r\n\t}\r\n\r\n\tonDateSelect(date) {\r\n\t\tthis.el.nativeElement.value = moment(date).format(this.format);\r\n\t\tthis.hideCalendar();\r\n\r\n\t\tconst newDate = moment(this.el.nativeElement.value, this.format).toDate();\r\n\r\n\t\tthis.doPropagate(newDate);\t\t\r\n\t}\r\n\r\n\tasync showCalendar() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tthis.showDatePicker = true;\r\n\r\n\t\tif (!this.mobile) {\r\n\t\t\tthis.reposition();\r\n\t\t}\r\n\r\n\t\tthis.datePickerOpacity = '1';\r\n\t\tthis.datePickerVisiblity = 'visible';\r\n\r\n\t\t// Not sure why, but the click event is called immediately, which hides the calendar\r\n\t\tsetTimeout(() => {\r\n\t\t\tdocument.addEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}, 350)\r\n\t}\r\n\r\n\thideCalendar() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnDocumentMouseDown, true);\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tthis.datePickerVisiblity = 'hidden';\r\n\t\tthis.datePickerOpacity = '0';\r\n\t\tthis.showDatePicker = false;\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tif (this.mobile === true)\r\n\t\t\treturn;\r\n\r\n\t\t// Reposition the element to be where the textbox is, either below or above if there isn't enough room\r\n\t\tconst inputEl: HTMLInputElement = this.el.nativeElement;\r\n\r\n\t\tconst rect = inputEl.getBoundingClientRect();\r\n\t\tconst textboxLeft = rect.left;\r\n\t\tconst textboxTop = rect.top;\r\n\t\tconst textboxHeight = inputEl.offsetHeight;\r\n\t\tconst containerHeight = (<HTMLDivElement>this.containerRef.nativeElement).offsetHeight;\r\n\r\n\t\tthis.left = textboxLeft + \"px\";\r\n\t\tthis.top = (textboxTop + textboxHeight) + \"px\";\r\n\r\n\t\tif (textboxTop + textboxHeight + containerHeight > window.innerHeight) {\r\n\t\t\tthis.top = (textboxTop - containerHeight - 2) + \"px\";\r\n\t\t}\r\n\r\n\t}\r\n\r\n\ttoggleCalendar() {\r\n\t\t(this.showDatePicker === true) ? this.hideCalendar() : this.showCalendar();\r\n\t}\r\n}","<ng-content></ng-content>\r\n<div *ngIf=\"mobile === false\" #containerRef class=\"slick-date-picker-container\" [style.left]=\"left\" [style.top]=\"top\" [style.visibility]=\"datePickerVisiblity\" [style.opacity]=\"datePickerOpacity\">\r\n\t<slick-calendar [ngModel]=\"selectedDate\" [condensed]=\"condensed\" (onDateSelect)=\"onDateSelect($event)\"></slick-calendar>\r\n</div>\r\n<div *ngIf=\"mobile === true\" #containerRef class=\"slick-date-picker-mobile-container\" [style.visibility]=\"datePickerVisiblity\" [style.opacity]=\"datePickerOpacity\">\r\n\t<div class=\"slick-date-picker-mobile-calendar\">\r\n\t\t<slick-calendar [ngModel]=\"selectedDate\" [condensed]=\"condensed\" (onDateSelect)=\"onDateSelect($event)\"></slick-calendar>\r\n\t</div>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickDatePickerComponent } from \"./slick-date-picker.component\";\r\nimport { SlickCalendarModule } from \"../slick-calendar/slick-calendar.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickCalendarModule],\r\n\tdeclarations: [SlickDatePickerComponent],\r\n\texports: [SlickDatePickerComponent, SlickCalendarModule]\r\n})\r\nexport class SlickDatePickerModule { }\r\n\r\nexport { SlickDatePickerComponent }","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-drag-drop]'\r\n})\r\nexport class SlickDragDropDirective {\r\n\r\n}","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-draggable]'\r\n})\r\nexport class SlickDraggableDirective {\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDragDropDirective } from \"./slick-drag-drop.directive\";\r\nimport { SlickDraggableDirective } from \"./slick-draggable.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickDragDropDirective, SlickDraggableDirective],\r\n\texports: [SlickDragDropDirective, SlickDraggableDirective]\r\n})\r\nexport class SlickDragDropModule { }\r\n\r\nexport { SlickDragDropDirective }\r\nexport { SlickDraggableDirective }","import { Directive, Input, OnInit, OnChanges, SimpleChanges, ElementRef } from \"@angular/core\";\r\n\r\nexport enum SlickValidationTypes { None, Error, Warning }\r\n\r\n@Directive({\r\n\tselector: '[slick-validation-indicator]'\r\n})\r\nexport class SlickValidationIndicatorDirective implements OnInit, OnChanges {\r\n\t@Input(\"slick-validation-indicator\") isValid: boolean;\r\n\t@Input(\"slickValidationType\") validationType: SlickValidationTypes = SlickValidationTypes.Warning;\r\n\r\n\tprivate bgWarningStyle: string = \"#ffc207\";\r\n\tprivate bgDangerStyle: string = \"#dc3545\";\r\n\tprivate bgSuccessStyle: string = \"#28a745\";\r\n\r\n\tprivate originalBorderStyle: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.originalBorderStyle = this.el.nativeElement.style.borderLeft;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.validationType) {\r\n\t\t\tif ((<any>this.validationType).toString().toLowerCase() === 'warning')\r\n\t\t\t\tthis.validationType = SlickValidationTypes.Warning;\r\n\t\t\telse if ((<any>this.validationType).toString().toLowerCase() === 'none')\r\n\t\t\t\tthis.validationType = SlickValidationTypes.None;\r\n\t\t\telse\r\n\t\t\t\tthis.validationType = SlickValidationTypes.Error;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.validationType = SlickValidationTypes.None;\r\n\t\t}\r\n\r\n\t\tthis.setIndicator();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.setIndicator();\r\n\t}\r\n\r\n\tprivate setIndicator() {\r\n\t\tif (this.validationType === SlickValidationTypes.None) {\r\n\t\t\tthis.el.nativeElement.style.borderLeft = this.originalBorderStyle;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isValid) {\r\n\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgSuccessStyle;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.validationType === SlickValidationTypes.Warning)\r\n\t\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgWarningStyle;\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.el.nativeElement.style.borderLeft = \"6px solid \" + this.bgDangerStyle;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickValidationIndicatorDirective, SlickValidationTypes } from \"./slick-validation-indicator.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickValidationIndicatorDirective],\r\n\texports: [CommonModule, SlickValidationIndicatorDirective]\r\n})\r\nexport class SlickValidationIndicatorModule { }\r\nexport { SlickValidationIndicatorDirective, SlickValidationTypes }\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Injectable()\r\nexport class SlickDropDownService {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tpublic getVisibleItems(items: any[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet visibleItems: any[] = items.map((item) => {\r\n\t\t\tlet id = SlickUtilsService.getDeepObject(item, idFieldName);\r\n\t\t\tif (id === null || id === undefined) {\r\n\t\t\t\tconsole.debug(\"%c slick-drop-down: Id not found for dropdown item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.debug(\"First Item: \", items[0]);\r\n\t\t\t}\r\n\r\n\t\t\tlet text = SlickUtilsService.getDeepObject(item, textFieldName);\r\n\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tid: id,\r\n\t\t\t\ttext: text ? text.toString() : null,\r\n\t\t\t\titem: item\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c slick-drop-down: Warning! No text was found for dropdown item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\r\n\t\treturn visibleItems;\r\n\t}\r\n\r\n\tpublic getSelectedItem(items: any[], selectedId: string | number): any {\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItem = items.find((item) => { return item.id == selectedId });\r\n\r\n\t\tif (selectedItem)\r\n\t\t\treturn selectedItem;\r\n\t\telse\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tpublic async getItemsFromServer(url: string): Promise<any> {\r\n\t\treturn Promise.resolve((await this.http.get(url).toPromise()));\r\n\t}\r\n\r\n\tpublic getItemIndex(items: any[], selectedId: string): number {\r\n\t\treturn items.findIndex((item) => { return item.id == selectedId });\r\n\t}\r\n}","import { Injectable, ElementRef } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class SlickLogService {\r\n\tconstructor(private httpClient: HttpClient) { }\r\n\r\n\tasync writeLog(text: string): Promise<any> {\r\n\t\tconst params = {\r\n\t\t\ttext: text,\r\n\t\t\tlogDate: new Date()\r\n\t\t}\r\n\r\n\t\tawait (this.httpClient.post(\"https://api.crflow.com/debuglogs/writelog\", params).toPromise()); \r\n\t};\r\n}\r\n\r\n","import { Component, Input, Output, EventEmitter, ElementRef, OnInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, forwardRef, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { SlickDropDownService } from \"./slick-drop-down.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\nimport { SlickLogService } from \"../utils/slick-log.service\";\r\nimport { ISlickDropDownButtonModel } from \"./slick-drop-down-button.model\";\r\n\r\nexport enum SlickDropDownSearchTypes { startsWith, eachWord, any }\r\n\r\n@Component({\r\n\tselector: 'slick-drop-down',\r\n\ttemplateUrl: 'slick-drop-down.component.html',\r\n\tproviders: [SlickDropDownService, SlickLogService,\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickDropDownComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickDropDownComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n\t@Input() placeholder: string = '';\r\n\t@Input() items: any[];\r\n\t@Input() idFieldName: string = \"id\";\r\n\t@Input() textFieldName: string = \"text\";\r\n\t@Input() compact: boolean = false;\r\n\t@Input() disabled: boolean = false;\r\n\t@Input() allowEmpty: boolean = true;\r\n\t@Input() getUrl: string;\r\n\t@Input() width: string = '100%';\r\n\t@Input() listWidth: string = '100%';\r\n\t@Input() height: string = '300px';\r\n\t@Input() showLoadingMessage: boolean = false;\r\n\t@Input() showDebug: boolean;\r\n\t@Input() tabindex: number;\r\n\t@Input() validationIndicator: boolean;\r\n\t@Input() validationIndicatorType: string;\r\n\t@Input() attachTo: string;\r\n\t@Input() searchType: SlickDropDownSearchTypes = SlickDropDownSearchTypes.startsWith;\r\n\t@Input() icon: string;\r\n\t@Input() isMobile: boolean = false;\r\n\t@Input() cssClass: string;\r\n\r\n\t@Output() onExpand: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t@ViewChild(\"containerDiv\") containerDiv: ElementRef;\r\n\t@ViewChild(\"dropdownList\") dropdownList: ElementRef;\r\n\t@ViewChild(\"selectedTextInputRef\") selectedTextInputRef: ElementRef;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tfnReposition = () => this.reposition();\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tuuid: string;\r\n\tselectedId: string;\r\n\tselectedText: string;\r\n\texpanded: boolean = false;\r\n\tselectedItem: any;\r\n\tselectedIndex: number;\r\n\tfilterText: string = '';\r\n\tvisibleItems: any[];\r\n\tleft: number;\r\n\ttop: number;\r\n\tlistGroupWidth: string;\r\n\tisVisible: boolean = false;\r\n\tisAndroid: boolean = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');\r\n\r\n\r\n\r\n\tconstructor(private slickDropDownService: SlickDropDownService,\r\n\t\tprivate changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tthis.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tif (this.cssClass)\r\n\t\t\t(<HTMLDivElement>this.containerDiv.nativeElement).classList.add(...this.cssClass.split(\" \"));\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj !== null && obj !== undefined)\r\n\t\t\tthis.selectedId = obj;\r\n\t\telse\r\n\t\t\tthis.selectedId = null;\r\n\r\n\t\tthis.selectItem(this.selectedId, false);\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectItem(this.selectedId, false);\r\n\t\t\tif (this.selectedTextInputRef && document.activeElement === this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tif (changes.showLoadingMessage) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\tif (this.showLoadingMessage === true)\r\n\t\t\t\tthis.selectedText = \"Loading...\";\r\n\t\t}\r\n\r\n\t\tif (changes.getUrl) {\r\n\t\t\tif (this.showLoadingMessage === true) {\r\n\t\t\t\tthis.selectedText = \"Loading...\";\r\n\t\t\t}\r\n\r\n\t\t\tlet items: any[] = await this.slickDropDownService.getItemsFromServer(this.getUrl)\r\n\t\t\tthis.selectedText = null;\r\n\t\t\tthis.items = items\r\n\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectItem(this.selectedId, false);\r\n\t\t\tif (document.activeElement === this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tif (changes.validationIndicator && changes.validationIndicator.firstChange) {\r\n\t\t\tif (!this.validationIndicatorType)\r\n\t\t\t\tthis.validationIndicatorType = \"error\";\r\n\t\t}\r\n\r\n\t\tif (changes.allowEmpty)\r\n\t\t\tthis.allowEmpty = (this.allowEmpty.toString().toLowerCase() === 'false') ? false : true;\r\n\r\n\t\tif (changes.isMobile)\r\n\t\t\tthis.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.disabled && changes.disabled.currentValue)\r\n\t\t\tthis.disabled = (changes.disabled.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.compact && changes.compact.currentValue)\r\n\t\t\tthis.compact = (changes.compact.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.searchType) {\r\n\t\t\tif (changes.searchType.currentValue.toString().toLowerCase() === 'eachword')\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.eachWord;\r\n\t\t\telse if (changes.searchType.currentValue.toString().toLowerCase() === 'any')\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.any;\r\n\t\t\telse\r\n\t\t\t\tthis.searchType = SlickDropDownSearchTypes.startsWith;\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.collapse();\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.dropdownList.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tasync setFocus(showDropdownList: boolean = false) {\r\n\t\tthis.filterText = '';\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\r\n\t\t// If this is true, just set expanded to false to force an expand\r\n\t\tif (showDropdownList === true)\r\n\t\t\tthis.expanded = false;\r\n\r\n\t\tawait SlickUtilsService.waitForElement(\"#slick-drop-down_\" + this.uuid);\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t}\r\n\r\n\tprivate async expand() {\r\n\t\tif (this.disabled)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tSlickUtilsService.attachElement(this.dropdownList.nativeElement, this.attachTo)\r\n\r\n\t\tthis.reposition();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.dropdownList.nativeElement.style.display = \"inline-block\";\r\n\r\n\t\tconst selectedItems = this.dropdownList.nativeElement.getElementsByClassName(\"active\");\r\n\t\tif (selectedItems && selectedItems.length > 0)\r\n\t\t\t(<HTMLElement>selectedItems[0]).scrollIntoView({ block: 'nearest' });\r\n\r\n\t\tthis.expanded = true;\r\n\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onExpand)\r\n\t\t\tthis.onExpand.emit();\r\n\t}\r\n\r\n\tprivate collapse() {\r\n\t\tif (this.expanded === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.expanded = false;\r\n\t\tthis.dropdownList.nativeElement.style.display = \"none\";\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tSlickUtilsService.removeElement(this.dropdownList.nativeElement);\r\n\r\n\t\tthis.isVisible = false;\r\n\t}\r\n\r\n\tprivate reposition() {\r\n\t\tconst dropDownRect = this.containerDiv.nativeElement.getBoundingClientRect();\r\n\t\tconst parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();\r\n\r\n\t\tconst containerLeft = (this.attachTo === 'body') ? dropDownRect.left : (dropDownRect.left - parentRect.left);\r\n\t\tconst containerTop = (this.attachTo === 'body') ? dropDownRect.top : (dropDownRect.top - parentRect.top);\r\n\r\n\t\tconst containerHeight = this.containerDiv.nativeElement.offsetHeight;\r\n\t\tconst containerWidth = dropDownRect.width;\r\n\r\n\t\tthis.width = containerWidth;\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.listGroupWidth = this.width;\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.listGroupWidth = \"auto\";\r\n\t\telse\r\n\t\t\tthis.listGroupWidth = this.listWidth;\r\n\t\tthis.top = (containerTop + containerHeight);\r\n\t\tthis.left = containerLeft;\r\n\t}\r\n\r\n\tprivate async documentClick(e: MouseEvent) {\r\n\t\t// Not entirely sure why, but iPhones call onFocus when clicking out of the dropdown\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-drop-down_\" + this.uuid) === true)\r\n\t\t\treturn;\r\n\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, 0);\r\n\t\tif (this.selectedIndex !== null && this.visibleItems.length > 0) {\r\n\t\t\tlet itemId = this.visibleItems[this.selectedIndex].id;\r\n\t\t\tthis.selectItem(itemId, true);\r\n\t\t}\r\n\r\n\t\tthis.collapse();\r\n\t}\r\n\r\n\tprivate selectItem(id: string | number, emitOnSelect: boolean) {\r\n\t\tlet item = this.slickDropDownService.getSelectedItem(this.visibleItems, id);\r\n\r\n\t\tif (item) {\r\n\t\t\tthis.selectedItem = item;\r\n\t\t\tthis.selectedId = item.id;\r\n\t\t\tthis.selectedText = item.text;\r\n\t\t\tthis.selectedIndex = this.slickDropDownService.getItemIndex(this.visibleItems, this.selectedId);\r\n\r\n\t\t\tif (this.onChange)\r\n\t\t\t\tthis.onChange.emit(this.selectedItem.item);\r\n\t\t\tif (emitOnSelect === true && this.onSelect)\r\n\t\t\t\tthis.onSelect.emit(this.selectedItem.item);\r\n\t\t\tthis.propagateChange(this.selectedId);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedItem = null;\r\n\t\t\tthis.selectedText = null;\r\n\t\t\tthis.selectedIndex = null;\r\n\t\t}\r\n\t}\r\n\r\n\tasync onKeyDown(e: KeyboardEvent) {\r\n\t\tif (this.isAndroid)\r\n\t\t\treturn;\r\n\r\n\t\t// Tab/enter\r\n\t\tif (e.which === 9 || e.which === 13) {\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\treturn;\r\n\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, 0);\r\n\t\t\tlet itemId = this.visibleItems[this.selectedIndex].id;\r\n\t\t\tthis.selectItem(itemId, true);\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (e.key && e.key.length > 1)\r\n\t\t\treturn true;\r\n\r\n\t\tif (e.which === 46 || e.which === 8) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\r\n\t\tif (e.which >= 32 && e.which <= 126) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\t}\r\n\r\n\tasync onKeyUp(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\t// If this is android, it won't pass us any key data so just read the entire input element\r\n\t\tif (this.isAndroid === true) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tthis.filterText = (<HTMLInputElement>this.selectedTextInputRef.nativeElement).value;\r\n\t\t\tthis.filterSearch();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// del or backspace\r\n\t\tif (e.which === 46 || e.which === 8 && !this.filterText) {\r\n\t\t\te.preventDefault();\r\n\t\t\te.stopPropagation();\r\n\r\n\t\t\tif (this.allowEmpty === true) {\r\n\t\t\t\tthis.selectItem(null, true);\r\n\t\t\t\tthis.selectedId = null;\r\n\t\t\t\tthis.propagateChange(null);\r\n\r\n\t\t\t\tif (this.onChange)\r\n\t\t\t\t\tthis.onChange.emit(null);\r\n\r\n\t\t\t\tif (this.onSelect)\r\n\t\t\t\t\tthis.onSelect.emit(null);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (e.which === 8 && this.filterText) {\r\n\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t\t\tif (this.filterText.length === 0) {\r\n\t\t\t\tthis.selectedText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tthis.filterSearch();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (e.which === 38) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (e.which === 40) {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded || !this.visibleItems) {\r\n\t\t\t\tthis.expand();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.selectedIndex < this.visibleItems.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If F1 is pressed, key length will be 2\r\n\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey)\r\n\t\t\treturn false;\r\n\r\n\t\tif (e.which >= 32 && e.which <= 126) {\r\n\t\t\tthis.filterText += e.key;\r\n\r\n\t\t\tthis.filterSearch();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async filterSearch() {\r\n\t\tif (!this.expanded)\r\n\t\t\tthis.expand();\r\n\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\tif (this.searchType === SlickDropDownSearchTypes.startsWith) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.searchType === SlickDropDownSearchTypes.eachWord) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => (\" \" + x.text.toLowerCase()).indexOf(\" \" + this.filterText.toLowerCase()) >= 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\t\tconst selectedTextStart = (\" \" + this.visibleItems[0].text).toLowerCase().indexOf(\" \" + this.filterText.toLowerCase());\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(selectedTextStart, selectedTextStart + this.filterText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tlastEvent: string = null;\r\n\tonDropdownClicked(e: MouseEvent) {\r\n\t\t// This is some hacky code that only allows 1 event every 100ms\r\n\t\t// This is because we don't know if they will tab into the focus or click into it. If they tab, we only get 1 focus event\r\n\t\t// if they click we get focus AND click.\r\n\t\tif (this.lastEvent !== null)\r\n\t\t\treturn;\r\n\r\n\t\tthis.lastEvent = e.type;\r\n\r\n\t\t// If this is the focus event, we may or may not get\r\n\t\t// a click event after. If it is, wait a bit longer for\r\n\t\t// slower computers to fire the click\r\n\t\tif (this.lastEvent === 'focus')\r\n\t\t\tsetTimeout(() => this.lastEvent = null, 500);\r\n\t\telse\r\n\t\t\tsetTimeout(() => this.lastEvent = null, 250);\r\n\r\n\t\tthis.filterText = '';\r\n\t\tthis.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectItem(this.selectedId, false);\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\tif (this.expanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\t}\r\n\r\n\tonItemClick(item: any) {\r\n\t\tthis.selectItem(item.id, true);\r\n\t\tthis.collapse();\r\n\t}\r\n}","<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center position-relative\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon p-0\" style=\"position: absolute;\"><i class=\"px-1\" [ngClass]=\"icon\"></i></div>\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" disabled=\"disabled\" [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div style=\"position: absolute; right: 0;\">\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"compact\" #containerDiv class=\"slick-drop-down slick-drop-down-compact form-control d-flex flex-fill align-items-center\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control me-2' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control me-2' [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div>\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n <li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n</ul>\r\n","export interface ISlickDropDownButtonModel {\r\n onClick: Function;\r\n faClass: string;\r\n tabIndex: number;\r\n disabled: boolean;\r\n}\r\n\r\nexport class SlickDropDownButtonModel implements ISlickDropDownButtonModel {\r\n\r\n constructor(faClass: string = null, onClick: Function = null) {\r\n this.onClick = onClick;\r\n this.faClass = faClass;\r\n this.tabIndex = -1;\r\n }\r\n\r\n onClick: Function;\r\n faClass: string;\r\n tabIndex: number;\r\n disabled: boolean;\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { SlickValidationIndicatorModule } from \"../slick-validation-indicator/slick-validation-indicator.module\";\r\nimport { SlickDropDownComponent } from \"./slick-drop-down.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, HttpClientModule, SlickValidationIndicatorModule],\r\n\tdeclarations: [SlickDropDownComponent],\r\n\texports: [SlickDropDownComponent],\r\n\tproviders: [HttpClientModule]\r\n})\r\nexport class SlickDropDownModule { }\r\n\r\nexport { SlickDropDownComponent }\r\nexport { SlickDropDownButtonModel, ISlickDropDownButtonModel } from \"./slick-drop-down-button.model\";","import { Directive, ElementRef, OnDestroy, OnInit, EventEmitter, Output } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list]'\r\n})\r\nexport class SlickDropListDirective implements OnInit, OnDestroy {\r\n\t@Output(\"onSlickDropListReorder\") onSlickDropListReorder = new EventEmitter<number[]>();\r\n\t@Output(\"onSlickDropListEnter\") onSlickDropListEnter = new EventEmitter<any>();\r\n\t@Output(\"onSlickDropListLeave\") onSlickDropListLeave = new EventEmitter<number>();\r\n\r\n\tel: HTMLElement;\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tfnMouseDown = (e) => this.mouseDown(e);\r\n\tfnMouseMove = (e) => this.mouseMove(e);\r\n\tfnMouseUp = () => this.mouseUp();\r\n\r\n\tisAdding: boolean;\r\n\tisAddingMouseEvent: MouseEvent;\r\n\tisMoving: boolean;\r\n\tplaceholderEl: HTMLElement;\r\n\tplaceholderHeight: number;\r\n\titemHeights: number[];\r\n\tcursorOffset: number;\r\n\toriginalIdx: number;\r\n\tcurrentIdx: number;\r\n\t\r\n\tconstructor(el: ElementRef) {\r\n\t\tthis.el = (<HTMLElement>el.nativeElement);\r\n\t\tthis.el.setAttribute(\"drop-list-uuid\", this.uuid);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.el.style.position = \"relative\";\r\n\t\tdocument.addEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t}\r\n\r\n\tasync mouseDown(e: MouseEvent, target: HTMLElement = null) {\r\n\t\tthis.isAdding = false;\r\n\t\tthis.isMoving = false;\r\n\r\n\t\tif (e.button !== 0 || !e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.addEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\r\n\t\tif (!target)\r\n\t\t\ttarget = <HTMLElement>e.target;\r\n\r\n\t\tconst parent = SlickUtilsService.findParentByAttr(target, 'drop-list-uuid', this.uuid);\r\n\t\tif (!parent)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isMoving = true;\r\n\r\n\t\tconst grabEls = this.el.querySelectorAll(\".slick-drop-list-grab\");\r\n\t\tif (grabEls.length > 0 && !SlickUtilsService.findParent(target, \"slick-drop-list-grab\"))\r\n\t\t\treturn true;\r\n\r\n\t\tconst dropListItem = SlickUtilsService.findParent(target, \"slick-drop-list-item\");\r\n\t\tif (!dropListItem) {\r\n\t\t\tconsole.error(\"Can't find item element\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Find which element the mouse is over\r\n\t\tthis.currentIdx = this.findElementIdx(e.y, false);\r\n\t\tthis.originalIdx = this.currentIdx;\r\n\r\n\t\tthis.startMove(dropListItem);\r\n\t}\r\n\r\n\tmouseMove(e: MouseEvent) {\r\n\t\tif (this.isAdding)\r\n\t\t\treturn;\r\n\r\n\t\tconst parent = SlickUtilsService.findParentByAttr(<HTMLElement>e.target, 'drop-list-uuid', this.uuid);\r\n\t\tif (!parent) {\r\n\t\t\t// If this isn't the parent, but we we're moving, that means we just left this parent\r\n\t\t\t// Send a message which element was dragged out and reset everything else\r\n\t\t\tif (this.isMoving && this.onSlickDropListLeave.observers.length > 0) {\r\n\t\t\t\tthis.isMoving = false;\r\n\t\t\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\t\tallItems.forEach(item => {\r\n\t\t\t\t\titem.classList.remove(\"slick-drop-list-item-animation\");\r\n\t\t\t\t\titem.style.transform = \"\";\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.onSlickDropListLeave.emit(this.originalIdx);\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.isMoving && this.onSlickDropListEnter.observers.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\t// If the mouse was clicked outside of this droplist, but it has now moved inside this droplist, tell the parent where\r\n\t\t// in the droplist it has moved.\r\n\t\t// Since there is no way for a directive to have functions called via ViewChild, just assume that the page \r\n\t\t// has added the appropriate element at the appropriate place\r\n\t\tif (!this.isMoving && this.onSlickDropListEnter) {\r\n\t\t\tthis.isAdding = true;\r\n\r\n\t\t\t// Find which element the mouse is over\r\n\t\t\tconst idx = this.findElementIdx(e.y, false);\r\n\t\t\tthis.isAddingMouseEvent = e;\r\n\t\t\t// The caller needs to call the ready function after adding the new record to the array\r\n\t\t\tthis.onSlickDropListEnter.emit({ idx: idx, ready: this.newItemReady.bind(this) });\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\t// Find which element the mouse is over\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst dropListItem = dropListItems[i];\r\n\t\t\tconst boundingRect = dropListItem.getBoundingClientRect();\r\n\r\n\t\t\tconst topHalfTop = boundingRect.top;\r\n\t\t\tconst topHalfBottom = topHalfTop + (boundingRect.height / 2);\r\n\t\t\tconst bottomHalfTop = topHalfBottom + 1;\r\n\t\t\tconst bottomHalfBottom = boundingRect.bottom;\r\n\r\n\t\t\tif (this.currentIdx !== i && e.y >= topHalfTop && e.y <= topHalfBottom) {\r\n\t\t\t\tthis.currentIdx = i;\r\n\t\t\t\tthis.redraw();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.currentIdx !== i + 1 && e.y >= bottomHalfTop && e.y <= bottomHalfBottom) {\r\n\t\t\t\tthis.currentIdx = i + 1;\r\n\t\t\t\tthis.redraw();\r\n\t\t\t\tbreak;\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tmouseUp() {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.fnMouseMove, true);\r\n\r\n\t\tif (!this.isMoving)\r\n\t\t\treturn;\r\n\r\n\t\tthis.isMoving = false;\r\n\r\n\t\t// Remove the placeholder\r\n\t\tthis.placeholderEl.classList.remove(\"slick-drop-list-placeholder\");\r\n\t\tthis.placeholderEl.classList.add(\"slick-drop-list-item\");\r\n\t\tthis.placeholderEl.style.boxShadow = \"\";\r\n\t\tthis.placeholderEl.style.transform = \"\";\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\r\n\t\t// Add the placeholder back\r\n\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tif (this.currentIdx === allItems.length)\r\n\t\t\tthis.el.appendChild(this.placeholderEl);\r\n\t\telse\r\n\t\t\tthis.el.insertBefore(this.placeholderEl, allItems[this.currentIdx]);\r\n\r\n\t\tthis.placeholderEl = null;\r\n\r\n\t\tallItems.forEach(item => {\r\n\t\t\titem.classList.remove(\"slick-drop-list-item-animation\");\r\n\t\t\titem.style.transform = \"\";\r\n\t\t});\r\n\r\n\t\tif (this.onSlickDropListReorder)\r\n\t\t\tthis.onSlickDropListReorder.emit([this.originalIdx, this.currentIdx]);\r\n\r\n\t\tthis.originalIdx = null;\r\n\t\tthis.currentIdx = null;\r\n\t}\r\n\r\n\tprivate redraw() {\r\n\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tlet placeholderOffset = 0;\r\n\r\n\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\tif (i < this.currentIdx) {\r\n\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.placeholderEl.style.transform = `translate3d(0px, -${placeholderOffset}px, 0px)`;\r\n\t}\r\n\r\n\tnewItemReady(idx: number) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.currentIdx = idx;\r\n\t\t\tthis.originalIdx = idx;\r\n\r\n\t\t\tconst dropListItem = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\").item(idx);\r\n\t\t\tthis.mouseDown(this.isAddingMouseEvent, dropListItem);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate findElementIdx(mouseY, useTopAndBottom: boolean): number {\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst dropListItem = dropListItems[i];\r\n\t\t\tconst boundingRect = dropListItem.getBoundingClientRect();\r\n\r\n\t\t\tif (useTopAndBottom) {\r\n\t\t\t\tconst topHalfTop = boundingRect.top;\r\n\t\t\t\tconst topHalfBottom = topHalfTop + (boundingRect.height / 2);\r\n\t\t\t\tconst bottomHalfTop = topHalfBottom + 1;\r\n\t\t\t\tconst bottomHalfBottom = boundingRect.bottom;\r\n\r\n\t\t\t\tif (mouseY >= topHalfTop && mouseY <= topHalfBottom)\r\n\t\t\t\t\treturn i;\r\n\r\n\t\t\t\tif (mouseY >= bottomHalfTop && mouseY <= bottomHalfBottom)\r\n\t\t\t\t\treturn i + 1;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (mouseY >= boundingRect.top && mouseY <= boundingRect.bottom)\r\n\t\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate startMove(dropListItem: HTMLElement) {\r\n\t\tthis.el.style.userSelect = \"none\";\r\n\r\n\t\tthis.placeholderEl = <HTMLElement>dropListItem;\r\n\t\tthis.placeholderEl.classList.add(\"slick-drop-list-placeholder\");\r\n\t\tthis.placeholderEl.classList.remove(\"slick-drop-list-item\");\r\n\t\tthis.placeholderEl.style.boxShadow = \"4px 12px 6px rgba(0,0,0,.24)\"\r\n\r\n\t\tthis.placeholderHeight = this.placeholderEl.getBoundingClientRect().height;\r\n\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\t\tthis.el.appendChild(this.placeholderEl);\r\n\r\n\t\tthis.itemHeights = [];\r\n\t\tthis.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\").forEach(item => this.itemHeights.push(item.getBoundingClientRect().height));\r\n\r\n\t\tthis.redraw();\r\n\r\n\t\t// Don't start the animation until after the first click because it looks weird\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\tallChildren.forEach(item => item.classList.add(\"slick-drop-list-item-animation\"));\r\n\t\t});\r\n\t}\r\n}","import { Directive, ElementRef, AfterViewInit, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list-item]'\r\n})\r\nexport class SlickDropListItemDirective {\r\n\r\n\tconstructor(el: ElementRef) {\r\n\t\tconst dropListEl = <HTMLElement>el.nativeElement;\r\n\t\tif (dropListEl.classList.contains(\"slick-drop-list-item\") === false)\r\n\t\t\tdropListEl.classList.add(\"slick-drop-list-item\");\r\n\r\n\t}\r\n}","import { Directive, ElementRef, AfterViewInit, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\n@Directive({\r\n\tselector: '[slick-drop-list-grab]'\r\n})\r\nexport class SlickDropListGrabDirective {\r\n\r\n\tconstructor(el: ElementRef) {\r\n\t\tconst dropListEl = <HTMLElement>el.nativeElement;\r\n\t\tif (dropListEl.classList.contains(\"slick-drop-list-grab\") === false)\r\n\t\t\tdropListEl.classList.add(\"slick-drop-list-grab\");\r\n\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDropListDirective } from \"./slick-drop-list.directive\";\r\nimport { SlickDropListItemDirective } from \"./slick-drop-list-item.directive\";\r\nimport { SlickDropListGrabDirective } from \"./slick-drop-list-grab.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective],\r\n\texports: [SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective]\r\n})\r\nexport class SlickDropListModule { }\r\n\r\nexport { SlickDropListDirective } \r\nexport { SlickDropListItemDirective } \r\nexport { SlickDropListGrabDirective }\r\n","export interface ISlickFileModel {\r\n\tuuid: string;\r\n\tfile: File;\r\n\ttitle: string;\r\n\tname: string;\r\n\tfileDate?: Date;\r\n\tfileDateFormat: string;\r\n\tthumbnailUrl: string;\r\n\turl: string;\r\n\tthumbnailBase64Image: string;\r\n\tbase64Image: string;\r\n isChecked: boolean;\r\n\tparentFolderId: number;\r\n}\r\n\r\nexport class SlickFileModel implements ISlickFileModel {\r\n\tuuid: string;\r\n\tfile: File;\r\n\ttitle: string;\r\n\tname: string;\r\n\tfileDate?: Date;\r\n\tfileDateFormat: string;\r\n\tthumbnailUrl: string;\r\n\turl: string;\r\n\tthumbnailBase64Image: string;\r\n\tbase64Image: string;\r\n isChecked: boolean;\r\n parentFolderId: number;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, HostListener, OnDestroy } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickFileModel, SlickFileModel } from \"../slick-file-model/slick-file.model\";\r\n\r\nconst imgExtensions: string[] = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tif', 'tiff']\r\n\r\n@Component({\r\n\tselector: 'slick-file-drop',\r\n\ttemplateUrl: 'slick-file-drop.component.html'\r\n})\r\nexport class SlickFileDropComponent implements OnDestroy {\r\n\t@Input(\"displayText\") displayText: string = \"Drop Files Here...\";\r\n\t@Output(\"filesChanged\") filesChangedEmitter: EventEmitter<ISlickFileModel[]> = new EventEmitter();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"fileInput\") fileInput: ElementRef;\r\n\r\n\tprivate fnOnFileInputChange = (e) => this.onFileInputChange(e);\r\n\tprivate processFileTimeout: NodeJS.Timer;\r\n\r\n\t@HostListener('click', ['$event'])\r\n\tonClick(e) {\r\n\t\tthis.fileInput.nativeElement.click();\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).removeEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).addEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).removeEventListener(\"change\", this.fnOnFileInputChange, true);\r\n\t}\r\n\r\n\tprivate onFileInputChange(e) {\r\n\t\ttry {\r\n\t\t\tthis.processFileTimeout = setTimeout(() => {\r\n\t\t\t\talert(\"Processing files timed out\");\r\n\t\t\t}, 10000);\r\n\r\n\t\t\tthis.processFiles((<HTMLInputElement>this.fileInput.nativeElement).files);\r\n\r\n\t\t\t// A validation to make sure the files all got processed\r\n\t\t\tclearTimeout(this.processFileTimeout);\r\n\t\t\t(<HTMLInputElement>this.fileInput.nativeElement).value = '';\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\talert(\"SlickFileDrop Error: \" + err);\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event'])\r\n\tonDrop(e) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\r\n\t\tthis.processFiles((<DataTransfer>e.dataTransfer).files);\r\n\t}\r\n\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(e) {\r\n\t\tthis.containerRef.nativeElement.classList.add(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(e) {\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(e) {\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\tuuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tprivate async processFiles(files: FileList) {\r\n\t\tlet slickFileModels: ISlickFileModel[] = [];\r\n\t\tlet imageLoadPromises = [];\r\n\r\n\t\tlet imgPromises: Promise<string>[] = [];\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\timageLoadPromises.push(new Promise(async (resolve) => {\r\n\t\t\t\tlet file: File = files.item(i);\r\n\t\t\t\tlet slickFileModel = new SlickFileModel();\r\n\t\t\t\tslickFileModel.uuid = SlickUtilsService.newGuid();\r\n\t\t\t\tslickFileModel.file = file;\r\n\t\t\t\tslickFileModel.name = file.name;\r\n\t\t\t\tslickFileModel.title = file.name;\r\n\r\n\t\t\t\tlet fileNameParts = slickFileModel.name.split('.');\r\n\t\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\r\n\t\t\t\tif (imgExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tlet img = new Image;\r\n\t\t\t\t\timg.onload = () => {\t\r\n\t\t\t\t\t\tslickFileModel.thumbnailBase64Image = this.resizeImageToBase64(img, 60, 60);\r\n\t\t\t\t\t\tslickFileModel.base64Image = this.resizeImageToBase64(img, 1600, 1600);\r\n\t\t\t\t\t\tslickFileModels.push(slickFileModel);\r\n\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t\timg.src = await this.getBase64(file);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tslickFileModels.push(slickFileModel);\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\tawait Promise.all(imageLoadPromises);\r\n\t\tthis.filesChangedEmitter.emit(slickFileModels);\r\n\t}\r\n\r\n\tprivate resizeImageToBase64(img: HTMLImageElement, width: number, height: number): string {\r\n\t\tlet scale: number = 1;\r\n\t\tif (img.width > img.height) {\r\n\t\t\tif (img.width > width)\r\n\t\t\t\tscale = width / img.width;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (img.height > height)\r\n\t\t\t\tscale = height / img.height;\r\n\t\t}\r\n\r\n\t\tlet newWidth = img.width * scale;\r\n\t\tlet newHeight = img.height * scale;\r\n\r\n\t\t// We create a canvas and get its context.\r\n\t\tvar canvas = document.createElement('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\t// We set the dimensions at the wanted size.\r\n\t\tcanvas.width = newWidth;\r\n\t\tcanvas.height = newHeight;\r\n\r\n\t\t// We resize the image with the canvas method drawImage();\r\n\t\tctx.drawImage(img, 0, 0, newWidth, newHeight);\r\n\r\n\t\treturn canvas.toDataURL(\"image/jpeg\");\r\n\t}\r\n\r\n\tprivate getBase64(file: File): Promise<string> {\r\n\t\treturn new Promise<string>((resolve, reject) => {\r\n\t\t\t// Capacitor fails on the FileReader, so we need to get _readReader\r\n\t\t\t// See: https://github.com/ionic-team/ionic-native/issues/505#issuecomment-503316333\r\n\t\t\tlet fileReader = new FileReader();\r\n\r\n\t\t\t// Get the original real FileReader. The polyfill saves a reference to it.\r\n\t\t\tconst realFileReader = (fileReader as any)._realReader;\r\n\r\n\t\t\t// Make sure we were able to get the original FileReader \r\n\t\t\tif (realFileReader) {\r\n\t\t\t\t// Swap out the polyfill instance for the original instance.\r\n\t\t\t\tfileReader = realFileReader;\r\n\t\t\t}\r\n\r\n\t\t\tfileReader.readAsDataURL(file);\r\n\t\t\tfileReader.onload = () => resolve(<string>fileReader.result);\r\n\t\t\tfileReader.onerror = (error) => reject('Error: ' + error);\r\n\t\t});\r\n\t}\r\n}\r\n","<p #containerRef id=\"slick-file-drop_{{uuid}}\" class=\"slick-file-drop card\">\r\n\t{{displayText}}\r\n</p>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickFileDropComponent } from \"./slick-file-drop.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickFileDropComponent],\r\n\texports: [CommonModule, FormsModule, SlickFileDropComponent]\r\n})\r\nexport class SlickFileDropModule { }\r\nexport { SlickFileDropComponent }\r\n","export interface ISlickPhotoGalleryModel {\r\n\tphotoUrl: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport class SlickPhotoGalleryModel implements ISlickPhotoGalleryModel {\r\n\tphotoUrl: string;\r\n\ttitle: string;\r\n}","import { Component, Input, ViewChild, ElementRef, OnChanges, SimpleChanges, OnDestroy, HostListener, ChangeDetectorRef } from \"@angular/core\";\r\nimport { ISlickPhotoGalleryModel, SlickPhotoGalleryModel } from \"./slick-photo-gallery.model\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-photo-gallery\",\r\n\ttemplateUrl: \"slick-photo-gallery.component.html\"\r\n})\r\nexport class SlickPhotoGalleryComponent implements OnChanges, OnDestroy {\r\n\t@Input() photos: ISlickPhotoGalleryModel[];\r\n\t@Input() files: ISlickFileModel[];\r\n\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\r\n\t@HostListener('window:keydown', ['$event'])\r\n\tasync onResize(e: KeyboardEvent) {\r\n\t\tif (e.which === 39)\r\n\t\t\tthis.nextPhoto();\r\n\t\telse if (e.which === 37)\r\n\t\t\tthis.previousPhoto();\r\n\t\telse if (e.which === 27)\r\n\t\t\tthis.closeWindow();\r\n\t}\r\n\r\n\tisVisible: boolean = false;\r\n\tisPhotoGalleryVisible: boolean = false;\r\n\tselectedPhoto: ISlickPhotoGalleryModel = null;\r\n\tvisibleIndex: number = 0;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tngOnDestroy() {\r\n\t\t// It's fine if this fails. It just means it was removed elsewhere\r\n\t\ttry {\r\n\t\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.files) {\r\n\t\t\tthis.photos = [];\r\n\t\t\tif (changes.files.currentValue) {\r\n\t\t\t\tthis.photos = changes.files.currentValue.map((f) => {\r\n\t\t\t\t\tlet photoModel = new SlickPhotoGalleryModel();\r\n\t\t\t\t\tphotoModel.photoUrl = f.base64Image || f.url;\r\n\t\t\t\t\tphotoModel.title = f.title;\r\n\t\t\t\t\treturn photoModel;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync showPhotoGallery(visibleIndex: number = 0) {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tdocument.body.appendChild(this.containerRef.nativeElement);\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.isPhotoGalleryVisible = true;\r\n\r\n\t\tthis.visibleIndex = visibleIndex;\r\n\t\tif (this.photos && this.photos.length > 0)\r\n\t\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\thidePhotoGallery() {\r\n\t\t// It's fine if this fails. It just means it was removed elsewhere\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.containerRef.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\r\n\t\tthis.isVisible = false;\r\n\t}\r\n\r\n\tpreviousPhoto() {\r\n\t\tif (this.visibleIndex === 0)\r\n\t\t\tthis.visibleIndex = this.photos.length - 1;\r\n\t\telse\r\n\t\t\tthis.visibleIndex--;\r\n\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tnextPhoto() {\r\n\t\tif (this.visibleIndex === this.photos.length - 1)\r\n\t\t\tthis.visibleIndex = 0;\r\n\t\telse\r\n\t\t\tthis.visibleIndex++;\r\n\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tsetPosition(idx: number) {\r\n\t\tthis.visibleIndex = idx;\r\n\t\tthis.selectedPhoto = this.photos[this.visibleIndex];\r\n\t}\r\n\r\n\tcloseWindow() {\r\n\t\tthis.hidePhotoGallery();\r\n\t}\r\n}","<div #containerRef *ngIf=\"isVisible === true\" class='slick-photo-gallery'>\r\n\t<div class=\"slick-photo-gallery_overlay\" (click)=\"closeWindow()\" [ngClass]=\"{'visible': isPhotoGalleryVisible === true}\"></div>\r\n\t<div class=\"modal-content slick-photo-gallery_content\" style=\"width: 90%; margin-left: 5%;\" *ngIf=\"isPhotoGalleryVisible === true\">\r\n\t\t<div class=\"modal-header slick-photo-gallery_header\"><div class=\"header-right\" (click)='closeWindow()'><i class=\"far fa-times\"></i></div></div>\r\n\t\t<div class=\"modal-body\">\r\n\t\t\t<div *ngIf=\"selectedPhoto\" class='slick-photo-gallery_photo-container'>\r\n\t\t\t\t<img class='slick-photo-gallery_photo' [src]='selectedPhoto.photoUrl' />\r\n\t\t\t</div>\r\n\t\t\t<div (click)='previousPhoto()' class='slick-photo-gallery_previous-photo'><i class='far fa-chevron-left'></i></div>\r\n\t\t\t<div (click)='nextPhoto()' class='slick-photo-gallery_next-photo'><i class='far fa-chevron-right'></i></div>\r\n\t\t\t<!--<div *ngIf=\"photos\" class='slick-photo-gallery_position-indicators'>\r\n\t\t\t\t<i (click)='setPosition(index)' *ngFor='let photo of photos; let index = index' [ngClass]='(index === visibleIndex) ? \"fas fa-circle\" : \"far fa-circle\"'></i>\r\n\t\t\t</div>-->\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, ViewChild, EventEmitter, OnChanges, SimpleChanges, OnDestroy, ElementRef, HostBinding } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport moment from \"moment\";\r\n\r\nconst excelExtensions: string[] = ['xls', 'xlt', 'xlm', 'xlsx', 'xlsm', 'xltx', 'xltm', 'xlsb', 'xla', 'xlam', 'xll', 'xlw'];\r\nconst wordExtensions: string[] = ['doc', 'dot', 'wbk', 'docx', 'docm', 'dotx', 'dotm', 'docb'];\r\nconst pdfExtensions: string[] = ['pdf'];\r\n\r\n@Component({\r\n\tselector: 'slick-file-list-item',\r\n\ttemplateUrl: 'slick-file-list-item.component.html'\r\n})\r\nexport class SlickFileListItemComponent implements OnChanges, OnDestroy {\r\n\t@Input(\"file\") file: ISlickFileModel;\t\r\n\t@Input(\"allowDelete\") allowDelete: boolean = true;\r\n\t@Input(\"showPhotoGallery\") showPhotoGallery: boolean = false;\r\n\t@Input(\"showCheckbox\") showCheckbox: boolean = false;\r\n\t@Input(\"thumbnailSize\") thumbnailSize: number;\r\n\t@Input(\"confirmDelete\") confirmDelete: boolean = true;\r\n\t@Output(\"fileChange\") fileChangeEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"fileDelete\") fileDeleteEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"fileClicked\") fileClicked: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"checkChanged\") checkChanged: EventEmitter<MouseEvent> = new EventEmitter();\r\n\r\n\t@ViewChild(\"titleDivRef\") titleDivRef: ElementRef;\r\n\t@ViewChild(\"editTitleDivRef\") editTitleDivRef: ElementRef;\r\n\t@ViewChild(\"editTitleInputRef\") editTitleInputRef: ElementRef;\r\n\t@ViewChild(\"deleteConfirmRef\") deleteConfirmRef: SlickConfirmDialogComponent;\r\n\r\n\tuuid: string;\r\n\tisEditing: boolean = false;\r\n\ttempTitle: string = '';\r\n\tfileDateFormatted: string;\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\titemSize: number = 120;\r\n\titemImgSize: number = 90;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.thumbnailSize) {\r\n\t\t\tthis.itemImgSize = parseInt(this.thumbnailSize.toString());\r\n\t\t\tthis.itemSize = this.itemImgSize + 20;\r\n\t\t}\r\n\r\n\t\tif (changes.allowDelete && changes.allowDelete.currentValue)\r\n\t\t\tthis.allowDelete = (changes.allowDelete.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tif (changes.showPhotoGallery && changes.showPhotoGallery.currentValue)\r\n\t\t\tthis.showPhotoGallery = (changes.showPhotoGallery.currentValue.toString().toLowerCase() !== 'false');\t\r\n\r\n\t\tif (changes.showCheckbox && changes.showCheckbox.currentValue)\r\n\t\t\tthis.showCheckbox = (changes.showCheckbox.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tthis.confirmDelete = (this.confirmDelete.toString() === 'true') ? true : false;\r\n\r\n\t\tif (this.file && this.file.name && !this.file.thumbnailBase64Image && !this.file.url) {\r\n\t\t\tif (this.file.isChecked === null)\r\n\t\t\t\tthis.file.isChecked = false;\r\n\r\n\t\t\tlet fileNameParts = this.file.name.split('.');\r\n\t\t\tif (fileNameParts.length > 1) {\r\n\t\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\r\n\t\t\t\tif (excelExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAAA5CAYAAACI7VO4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhFQjQ5NUJFODUwNzExRTdBRTM4ODhEODFBNTAzMTU3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhFQjQ5NUJGODUwNzExRTdBRTM4ODhEODFBNTAzMTU3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OEVCNDk1QkM4NTA3MTFFN0FFMzg4OEQ4MUE1MDMxNTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OEVCNDk1QkQ4NTA3MTFFN0FFMzg4OEQ4MUE1MDMxNTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7t+5xAAAAdSklEQVR42sxb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (wordExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA7CAYAAAAn+enKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzODkyMUVBODUwNzExRTc5MjkxQTlBRjg4QzFEQjY1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzODkyMUVCODUwNzExRTc5MjkxQTlBRjg4QzFEQjY1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjM4OTIxRTg4NTA3MTFFNzkyOTFBOUFGODhDMURCNjUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjM4OTIxRTk4NTA3MTFFNzkyOTFBOUFGODhDMURCNjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4T4+oBAAAaRklEQVR42sxb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (pdfExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYyRUQwREYxODUwODExRTdBN0NCQUZBNUY3NDBGRUMwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYyRUQwREYyODUwODExRTdBN0NCQUZBNUY3NDBGRUMwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjJFRDBERUY4NTA4MTFFN0E3Q0JBRkE1Rjc0MEZFQzAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjJFRDBERjA4NTA4MTFFN0E3Q0JBRkE1Rjc0MEZFQzAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6x4oA3AAATPklEQVR42tRb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\";\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.file.thumbnailBase64Image = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAA8CAYAAAAgwDn8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0OEFBMUY4ODUwQTExRTdCRTBEODA1RTkwQkYwRkEzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA0OEFBMUY5ODUwQTExRTdCRTBEODA1RTkwQkYwRkEzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ4QUExRjY4NTBBMTFFN0JFMEQ4MDVFOTBCRjBGQTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDQ4QUExRjc4NTBBMTFFN0JFMEQ4MDVFOTBCRjBGQTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4yP5ieAAAFD0lEQVR42uxayUsbURh/iaPGfQsKerGuuCAFL54KIip6sVIEe5MeRJHqX9NelCq1SCuFGoPiUpeDoh4UxZPe3SO4a+LW93v6hsmQmJkks0jzwTCTOGa+37f83vd9byxTU1NVa2trPx4fH6OsVuuNxWIh9NpKnoRePtrpOZ4ed/SaSEX+OVi5v7+30VN0RUXFp+zs7P7r62sSFRVFoqOjSVxcHLvGIQgCgX5SEdbX14f29vbeJCQkeP1BfqMvUXKPEsHvuN1usri4+K2qqiouLy/v69XVlaL/FS4uLuypqamiMrBquCyrRKjX2RkGvLm5IUtLS1+opT35+fl9SkAIcNPt7S0DgB87Pz9n1uA/rJXASHhGcnIyO+OzzWYjCJ+FhYVefFdUVNQHXV4E8Bzz5OHhgVmgrq6OFBQUEOoZTQHExsYyY01MTLBnxcTEMD3i4+PJ5eUlmZub66XfucvKygbPzs78A+AxCAA0mQh1HcnNzdUlfOD52dlZ9mxcw9rwCMIJIKanp79TEJ6SkpJfp6envkOQxzsHcXd3p1v8Q2k8D8rScCHl5eXk4OCA6cFJZWxs7OfW1taHjIwMn2FtJSYQJGtiYiJpa2tjIHZ2dlg4JSUlMcM6HI7fm5ubH9PT01mogVI5GFMA4OQB6ezs9AIBYFB4dHR0iFL+e1wj0eE90wCQS1dXF6FxT3Z3d0UQYEun0/lndXW1EbkKrzEm05PzlQqsDBCFhYUiCOQEwolS7JjL5apJS0t7AkBMKrB4d3c3o3RaKbDvkBOw/uTk5N/9/f13LLHNoCxf1HyB6OnpIcXFxeTo6EgEgfVqZGRkhubJW9N4wF9dBRAdHR2MZrGggWJR+ng8HoGy00/BDMqnpKQw1hkYGGAKSvMSIYN4h4cABoJ7sODRFTxbXImNSGY8E2UEQoLGNNne3hZDSeoRzkSolaA8khxnlCOC0WyTk5PDlEPdD2vLew1eHeMAKIDFfRygoQBg0fb2dvEzrOoPAJoZHP39/WRjY4OFleEAuBd8XfsTlBJSoKZdB/wJij9pfrw6AHK6fXUATFlO/9cAArIQuqXl5WVGZUpYIpxNDlpb2hOHBgD1x/DwMAOAlU8vQfGGAUPIAGB1u93OAICD9WQbVJ6BWCggACzbsIbeHjg8PCQvjVMUA0An1NDQoHilDJcg99CRhQwAZWtzc3OERg2l0ZWVFU1CiA+00PdqBkBLGkWz3traqgqAvPFSRKPo/rWgUVSWGOaqLb+lIBTRqMvl0sQDoEqEkaqkfR7FKwaAdq+xsVGTHMA4ERM4tX20dDELCACrYVNTU4RGDaNRuHlmZkZsrLUUTBwwQq+pqQkvgPHxcV1qoZOTE7ZDFFYAsHpmZqYu1SgMBMoOVKWqplHQnV4e8FVCh1yN1tbW6pID2HkJ5IGgqtGWlpYIjRpGo5gez8/PB70S8+a8srLSuHXA6XQGncRoR6urq8MKQFUpEWpT7685D0VU0+jx8XFAAPINCakHlL46o7QaVRVCsB56YnkVKFdUOs+Xjr9RLqutOFXnwEvbSyin6+vrIzQaAeAPQLjeezPcA3y3XM/pWzDit6mH8jiw4Yz6R8lcUldLU92wFQu9pHTuBQAjDjQvDodD85f+gl3AAAJbrJyqBemYAmds58NNZswNHuZeIUQR3WObH3z/GsTj8YgrP6oEobS09DONq0GbzXaLV49fCflY3G53YlZW1sI/AQYA/aOxmPzI7uUAAAAASUVORK5CYII=\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.file && this.file.fileDate) {\r\n\t\t\tconst fileDateFormat = (this.file.fileDateFormat ?? '') !== '' ? this.file.fileDateFormat : 'M/D/YYYY h:mm:ss a';\r\n\t\t\tthis.fileDateFormatted = moment(this.file.fileDate).format(fileDateFormat);\r\n\t\t}\r\n\t}\r\n\r\n\tonClick() {\r\n\t\tif (this.fileClicked)\r\n\t\t\tthis.fileClicked.emit(this.file);\r\n\t}\r\n\r\n\tasync deleteFile(e: Event) {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.confirmDelete === false) {\r\n\t\t\tthis.fileDeleteEmitter.emit(this.file);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst result: SlickConfirmDialogResults = await this.deleteConfirmRef.confirm();\r\n\r\n\t\t\tif (result === SlickConfirmDialogResults.Ok)\r\n\t\t\t\tthis.fileDeleteEmitter.emit(this.file);\r\n\t\t}\r\n\t}\r\n\r\n\tasync editTitle() {\r\n\t\tthis.isEditing = true;\r\n\t\tthis.tempTitle = this.file.title;\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.editTitleInputRef.nativeElement.setSelectionRange(0, this.editTitleInputRef.nativeElement.value.length)\r\n\t\tthis.editTitleInputRef.nativeElement.focus();\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n\r\n\tonKeyDown(e: KeyboardEvent) {\r\n\t\tif (e.which === 13) {\r\n\t\t\tthis.file.title = this.tempTitle;\r\n\t\t\tthis.fileChangeEmitter.emit(this.file);\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.tempTitle = null;\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\t}\r\n\r\n\tasync documentClick(e: MouseEvent) {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tconst clickedInside = SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, 'slick-file-list-item_title')\r\n\t\tif (clickedInside)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isEditing === true) {\r\n\t\t\tthis.file.title = this.tempTitle;\r\n\t\t\tthis.fileChangeEmitter.emit(this.file);\r\n\t\t\tthis.isEditing = false;\r\n\t\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onCheckboxClicked(e: MouseEvent) {\r\n\t\tthis.file.isChecked = !this.file.isChecked;\r\n\t\tif (this.checkChanged)\r\n\t\t\tthis.checkChanged.emit(e);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t}\r\n}\r\n","<div class=\"slick-file-list-item\" id=\"slick-file-list-item_{{uuid}}\">\r\n\t<div class=\"slick-file-list-item_img card\" (click)=\"onClick()\" [ngStyle]=\"{ 'cursor': (showPhotoGallery === true) ? 'pointer' : 'default' }\" [style.minHeight.px]=\"itemSize + 2\" [style.minWidth.px]=\"itemSize\">\r\n\t\t<img *ngIf=\"file.thumbnailBase64Image\" [src]=\"file.thumbnailBase64Image\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && file.base64Image\" [src]=\"file.base64Image\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && !file.base64Image && file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<img *ngIf=\"!file.thumbnailBase64Image && !file.base64Image && !file.thumbnailUrl && file.url\" [src]=\"file.url\" [style.maxWidth.px]=\"itemImgSize\" [style.maxHeight.px]=\"itemImgSize\" />\r\n\t\t<i *ngIf=\"allowDelete\" class=\"fas fa-times-circle bg-white text-danger\" (click)=\"deleteFile($event)\"></i>\r\n\t</div>\r\n\t<div class=\"slick-file-list-item_title\" *ngIf=\"fileDateFormatted\" [style.minWidth.px]=\"itemSize\" [style.maxWidth.px]=\"itemSize\">\r\n\t\t<div class=\"slick-file-list-item_date\" *ngIf=\"fileDateFormatted\" [style.minWidth.px]=\"itemSize\">{{fileDateFormatted}}</div>\r\n\t</div>\r\n\t<div class=\"slick-file-list-item_title\" [style.minWidth.px]=\"itemSize\" [style.maxWidth.px]=\"itemSize\">\r\n\t\t<div class=\"slick-file-list-item_display-title\" #titleDivRef style=\"cursor: pointer\" *ngIf=\"!isEditing\" (click)=\"editTitle()\">{{file.title}}</div>\r\n\t\t<div #editTitleDivRef class=\"slick-file-list-item_edit-title\" *ngIf=\"isEditing\"><input #editTitleInputRef type=\"text\" class=\"form-control\" [(ngModel)]=\"tempTitle\" (keydown)=\"onKeyDown($event)\" [style.width.px]=\"itemSize\" /></div>\r\n\t</div>\r\n\r\n\t<!-- We want the user to be able to click just a little outside of the checkbox and still have it check -->\r\n\t<div *ngIf=\"showCheckbox === true\" class=\"slick-file-checkbox\" (click)=\"onCheckboxClicked($event)\">\r\n\t\t<input type=\"checkbox\" [ngModel]=\"file.isChecked\" />\r\n\t</div>\r\n</div>\r\n\r\n<slick-confirm-dialog #deleteConfirmRef>\r\n\t<h4 class=\"p-0 m-0 text-danger\">Are you sure you want to delete?</h4>\r\n</slick-confirm-dialog>","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { SlickPhotoGalleryComponent, SlickPhotoGalleryModel } from \"../slick-photo-gallery/slick-photo-gallery.module\";\r\n\r\n@Component({\r\n\tselector: 'slick-file-list',\r\n\ttemplateUrl: 'slick-file-list.component.html'\r\n})\r\nexport class SlickFileListComponent implements OnChanges {\r\n\t@Input(\"files\") files: ISlickFileModel[];\r\n\t@Input(\"allowDelete\") allowDelete: boolean = true;\r\n\t@Input(\"showPhotoGallery\") showPhotoGallery: boolean = false;\r\n\t@Input(\"showCheckboxes\") showCheckboxes: boolean = false;\r\n\t@Input(\"thumbnailSize\") thumbnailSize: number = 90;\r\n\t@Input(\"confirmDelete\") confirmDelete: boolean = true;\r\n\t@Output(\"filesEmitter\") filesEmitter: EventEmitter<ISlickFileModel[]> = new EventEmitter();\r\n\t@Output(\"onFileDelete\") onFileDeleteEmitter: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"onFileCheckChanged\") onFileCheckChanged: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\t@Output(\"onFileClicked\") onFileClicked: EventEmitter<ISlickFileModel> = new EventEmitter();\r\n\r\n\t@ViewChild(\"photoGalleryRef\") photoGalleryRef: SlickPhotoGalleryComponent;\r\n\r\n\tphotos: SlickPhotoGalleryModel[] = [];\r\n\tuuid: string;\r\n\r\n\tprivate lastCheckedIdx: number = null;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.thumbnailSize)\r\n\t\t\tthis.thumbnailSize = parseInt(this.thumbnailSize.toString());\r\n\r\n\t\tif (changes.allowDelete && changes.allowDelete.currentValue)\r\n\t\t\tthis.allowDelete = (changes.allowDelete.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.showPhotoGallery && changes.showPhotoGallery.currentValue)\r\n\t\t\tthis.showPhotoGallery = (changes.showPhotoGallery.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.showCheckboxes && changes.showCheckboxes.currentValue)\r\n\t\t\tthis.showCheckboxes = (changes.showCheckboxes.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.deleteConfirmation && changes.deleteConfirmation.currentValue)\r\n\t\t\tthis.confirmDelete = (this.confirmDelete.toString() === 'true') ? true : false;\r\n\t}\r\n\r\n\tfileClicked(file: ISlickFileModel, idx: number) {\r\n\t\tif (this.showPhotoGallery === true) {\r\n\t\t\tthis.photoGalleryRef.showPhotoGallery(idx);\r\n\t\t}\r\n\r\n\t\tif (this.onFileClicked)\r\n\t\t\tthis.onFileClicked.emit(file);\r\n\t}\r\n\r\n\tonFileChange(file: ISlickFileModel, idx: number) {\r\n\t\tthis.files[idx] = file;\r\n\t\tthis.filesEmitter.emit(this.files);\r\n\t}\r\n\r\n\tasync onFileDelete(file: ISlickFileModel, idx) {\r\n\t\tthis.files.splice(idx, 1);\r\n\t\tthis.filesEmitter.emit(this.files);\r\n\t\tif (this.onFileDeleteEmitter)\r\n\t\t\tthis.onFileDeleteEmitter.emit(file);\r\n\t}\r\n\r\n\tasync onCheckChanged(e: MouseEvent, fileIdx: number) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (e.shiftKey === true && this.lastCheckedIdx !== null) {\r\n\t\t\tlet startIdx = (this.lastCheckedIdx < fileIdx) ? this.lastCheckedIdx : fileIdx;\r\n\t\t\tlet endIdx = (this.lastCheckedIdx < fileIdx) ? fileIdx : this.lastCheckedIdx;\r\n\r\n\t\t\tfor (let i = startIdx; i <= endIdx; i++) {\r\n\t\t\t\tthis.files[i].isChecked = true;\r\n\t\t\t\tif (this.onFileCheckChanged)\r\n\t\t\t\t\tthis.onFileCheckChanged.emit(this.files[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.lastCheckedIdx = fileIdx;\r\n\t\t\tif (this.onFileCheckChanged)\r\n\t\t\t\tthis.onFileCheckChanged.emit(this.files[fileIdx]);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tcheckAllFiles() {\r\n\t\tthis.files.forEach(x => {\r\n\t\t\tif (x.isChecked === false && this.onFileCheckChanged) {\r\n\t\t\t\tx.isChecked = true;\r\n\t\t\t\tthis.onFileCheckChanged.emit(x);\r\n\t\t\t}\r\n\r\n\t\t\tx.isChecked = true;\r\n\t\t});\r\n\t}\r\n\r\n\tuncheckAllFiles() {\r\n\t\tthis.files.forEach(x => {\r\n\t\t\tif (x.isChecked === true && this.onFileCheckChanged) {\r\n\t\t\t\tx.isChecked = false;\r\n\t\t\t\tthis.onFileCheckChanged.emit(x);\r\n\t\t\t}\r\n\r\n\t\t\tx.isChecked = false;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCheckedFiles(): ISlickFileModel[] {\r\n\t\treturn this.files.filter(x => x.isChecked === true);\r\n\t}\r\n}\r\n","<div #containerRef id=\"slick-file-list_{{uuid}}\" class=\"slick-file-list\">\r\n\t<slick-file-list-item *ngFor=\"let file of files; let idx = index\" \r\n\t\t\t\t\t\t [file]=\"file\" \r\n\t\t\t\t\t\t [allowDelete]=\"allowDelete\" \r\n\t\t\t\t\t\t [showPhotoGallery]=\"showPhotoGallery\" \r\n\t\t\t\t\t\t [showCheckbox]=\"showCheckboxes\" \r\n\t\t\t\t\t\t [thumbnailSize]=\"thumbnailSize\" \r\n\t\t\t\t\t\t [confirmDelete]=\"confirmDelete\"\r\n\t\t\t\t\t\t (checkChanged)=\"onCheckChanged($event, idx)\" \r\n\t\t\t\t\t\t (fileClicked)=\"fileClicked($event, idx)\" \r\n\t\t\t\t\t\t (fileChanged)=\"onFileChange($event, idx)\" \r\n\t\t\t\t\t\t (fileDelete)=\"onFileDelete($event, idx)\"></slick-file-list-item>\r\n</div>\r\n\r\n<slick-photo-gallery #photoGalleryRef *ngIf=\"showPhotoGallery === true\" [files]=\"files\"></slick-photo-gallery>\r\n\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPhotoGalleryComponent } from \"./slick-photo-gallery.component\";\r\nimport { SlickPhotoGalleryModel } from \"./slick-photo-gallery.model\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickPhotoGalleryComponent],\r\n\tdeclarations: [SlickPhotoGalleryComponent]\r\n})\r\nexport class SlickPhotoGalleryModule { }\r\n\r\nexport { SlickPhotoGalleryComponent }\r\nexport { SlickPhotoGalleryModel }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickFileListComponent } from \"./slick-file-list.component\";\r\nimport { SlickFileListItemComponent } from \"./slick-file-list-item.component\";\r\nimport { SlickPhotoGalleryModule } from \"../slick-photo-gallery/slick-photo-gallery.module\";\r\nimport { SlickConfirmDialogModule } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickConfirmDialogModule, SlickPhotoGalleryModule],\r\n\tdeclarations: [SlickFileListComponent, SlickFileListItemComponent],\r\n\texports: [CommonModule, FormsModule, SlickFileListComponent]\r\n})\r\nexport class SlickFileListModule { }\r\n\r\nexport { SlickFileListComponent }\r\n","export interface ISlickEmailerAddressModel {\r\n\tcontactId: number;\r\n\tdisplayName: string;\r\n\temailAddress: string;\r\n}\r\n\r\nexport class SlickEmailerAddressModel implements ISlickEmailerAddressModel {\r\n\tcontactId: number;\r\n\tdisplayName: string;\r\n\temailAddress: string;\r\n}\r\n","import { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, OnDestroy, ChangeDetectorRef, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerModel, } from \"./slick-emailer.model\";\r\nimport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n@Component({\r\n\tselector: 'slick-emailer',\r\n\ttemplateUrl: 'slick-emailer.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailerComponent),\r\n\t\t\tmulti: true,\r\n\t\t},\r\n\t\tSlickFunctionLockService\r\n\t]\r\n})\r\nexport class SlickEmailerComponent implements AfterViewInit, OnDestroy {\r\n\t@Input(\"toEmailAddressList\") toEmailAddressList: ISlickEmailerAddressModel[];\r\n\t@Input(\"showButtons\") showButtons: boolean = true;\r\n\t@Input(\"bodyHeight\") bodyHeight: string = \"180px\";\r\n\t@Output(\"toAddressSearch\") toAddressSearchEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@Output(\"sendEmailClick\") sendEmailClickEmitter: EventEmitter<ISlickEmailerModel> = new EventEmitter();\r\n\t@Output(\"cancelEmailClick\") cancelEmailClickEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"tinyMCEContainerRef\") tinyMCEContainerRef: ElementRef;\r\n\r\n\temailerModel: ISlickEmailerModel;\r\n\tisSubmitted: boolean = false;\r\n\r\n\tuuid: string;\r\n\ttinyMCEUuid: string;\r\n\ttinyMCEInitialized: boolean = false;\r\n\ttoEmailAddress: string;\r\n\teditor: any;\r\n\tspinnerStatus: string = null;\r\n\r\n\tconstructor(private slickFunctionLockService: SlickFunctionLockService, private changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.removeTinyMCE();\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic async writeValue(obj: ISlickEmailerModel) {\r\n\t\tif (obj) {\r\n\t\t\tthis.spinnerStatus = \"reset\";\r\n\t\t\tthis.emailerModel = obj;\r\n\r\n\t\t\tif (!this.emailerModel.attachments)\r\n\t\t\t\tthis.emailerModel.attachments = [];\r\n\r\n\t\t\tif (!this.emailerModel.toEmailAddresses)\r\n\t\t\t\tthis.emailerModel.toEmailAddresses = [];\t\t\t\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.emailerModel = null;\r\n\t\t}\r\n\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\ttoAddressSearch(searchText) {\r\n\t\tthis.toAddressSearchEmitter.emit(searchText);\r\n\t}\r\n\r\n\tonSelectEmailAddress(emailerAddressModel: ISlickEmailerAddressModel) {\r\n\t\tthis.emailerModel.toEmailAddresses.push(emailerAddressModel);\r\n\r\n\t\tthis.toEmailAddress = null;\r\n\t}\r\n\r\n\tonFreeformTextSelect(text: string) {\r\n\t\tconst freeformEmailAddress = new SlickEmailerAddressModel();\r\n\t\tfreeformEmailAddress.displayName = text;\r\n\t\tfreeformEmailAddress.emailAddress = text;\r\n\r\n\t\tthis.emailerModel.toEmailAddresses.push(freeformEmailAddress);\r\n\t\tthis.toEmailAddress = null;\r\n\t}\r\n\r\n\tdeleteEmailAddress(idx: number) {\r\n\t\tthis.emailerModel.toEmailAddresses.splice(idx, 1);\r\n\t}\r\n\r\n\tonAttachmentsChanged(attachments: ISlickFileModel[]) {\r\n\t\tthis.emailerModel.attachments = this.emailerModel.attachments.concat(attachments);\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.isSubmitted = true;\r\n\t\tif (this.emailerModel.toEmailAddresses.length === 0)\r\n\t\t\treturn false;\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetEmailAddresses(emailerModel: ISlickEmailerModel): ISlickEmailerAddressModel[] {\r\n\t\tlet slickEmailerAddresses = emailerModel.toEmailAddresses || [];\r\n\r\n\t\tif (this.toEmailAddress) {\r\n\t\t\tconst scrubbedToEmailAddress = this.toEmailAddress.replace(\",\", \";\").replace(/\\s/g, \";\");\r\n\t\t\tconst emailAddressesToAddStrings = scrubbedToEmailAddress.split(\";\").filter(x => x !== '');\r\n\t\t\tconst emailAddressesToAdd = emailAddressesToAddStrings.map(x => {\r\n\t\t\t\tconst slickEmailerAddressModel = new SlickEmailerAddressModel();\r\n\t\t\t\tslickEmailerAddressModel.contactId = 0;\r\n\t\t\t\tslickEmailerAddressModel.displayName = x;\r\n\t\t\t\tslickEmailerAddressModel.emailAddress = x;\r\n\t\t\t\treturn slickEmailerAddressModel;\r\n\t\t\t});\r\n\t\t\tslickEmailerAddresses = slickEmailerAddresses.concat(emailAddressesToAdd);\r\n\t\t}\r\n\r\n\t\tthis.toEmailAddress = null;\r\n\r\n\t\treturn slickEmailerAddresses;\r\n\t}\r\n\r\n\tasync setBody(body: string) {\r\n\t\ttry {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"SLICK_EMAILER_SET_BODY\");\r\n\r\n\t\t\tawait this.initTinyMCE();\r\n\t\t\tconst tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);\r\n\r\n\t\t\tif (!tinyMCE)\r\n\t\t\t\tconsole.error(\"tinyMCE not initialized\");\r\n\r\n\t\t\ttinyMCE.setContent(body);\r\n\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_SET_BODY\");\r\n\t\t}\r\n\t}\r\n\r\n\tgetBody() {\r\n\t\treturn tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).getContent();\r\n\t}\r\n\r\n\tonSendEmail() {\r\n\t\tthis.emailerModel.toEmailAddresses = this.getEmailAddresses(this.emailerModel);\r\n\r\n\t\tif (this.validate() === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.emailerModel.body = this.getBody();\r\n\t\tthis.spinnerStatus = \"spin\";\r\n\t\tif (this.sendEmailClickEmitter)\r\n\t\t\tthis.sendEmailClickEmitter.emit(this.emailerModel);\r\n\t}\r\n\r\n\temailSent() {\r\n\t\tthis.spinnerStatus = \"ok\";\r\n\t}\r\n\r\n\temailError() {\r\n\t\tthis.spinnerStatus = \"error\";\r\n\t}\r\n\r\n\tonCancelEmail() {\r\n\t\tif (this.cancelEmailClickEmitter)\r\n\t\t\tthis.cancelEmailClickEmitter.emit();\r\n\t}\r\n\r\n\tasync dialogInit() {\r\n\t\tthis.removeTinyMCE();\r\n\r\n\t\tawait this.initTinyMCE();\r\n\t\tconst body = (this.emailerModel) ? (this.emailerModel.body || '') : '';\r\n\t\ttinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);\r\n\t}\r\n\r\n\tasync initTinyMCE(): Promise<void> {\r\n\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tawait this.slickFunctionLockService.lock(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\r\n\t\t\tif (this.tinyMCEUuid) {\r\n\t\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.tinyMCEUuid = SlickUtilsService.newGuid();\r\n\r\n\t\t\t\tconst tinyMCEContainer = <HTMLDivElement>this.tinyMCEContainerRef.nativeElement;\r\n\t\t\t\tconst tinyMCETextarea = document.createElement(\"textarea\");\r\n\t\t\t\ttinyMCETextarea.id = `emailer_tinymce_${this.tinyMCEUuid}`;\r\n\t\t\t\ttinyMCETextarea.style.minHeight = \"300px\";\r\n\t\t\t\ttinyMCETextarea.style.maxHeight = \"300px\";\r\n\t\t\t\ttinyMCEContainer.appendChild(tinyMCETextarea);\r\n\r\n\t\t\t\ttinymce.init({\r\n\t\t\t\t\tselector: `#emailer_tinymce_${this.tinyMCEUuid}`,\r\n\t\t\t\t\tbranding: false,\r\n\t\t\t\t\tmenubar: 'edit insert format tools',\r\n\t\t\t\t\tplugins: 'link image imagetools code',\r\n\t\t\t\t\ttoolbar: 'fontselect | fontsizeselect | styleselect | bold italic underline | indent outdent | bullist | alignleft aligncenter alignright | code | image',\r\n\t\t\t\t\tfontsize_formats: \"8px 10px 12px 14px 18px 24px 36px\",\r\n\t\t\t\t\theight: this.bodyHeight,\r\n\t\t\t\t\tconvert_urls: false,\r\n\t\t\t\t\tsetup: (ed) => {\r\n\t\t\t\t\t\ted.on('init', (args) => {\r\n\r\n\t\t\t\t\t\t\ted.setContent((this.emailerModel) ? (this.emailerModel.body || '') : '');\r\n\t\t\t\t\t\t\tthis.tinyMCEInitialized = true;\r\n\t\t\t\t\t\t\tthis.slickFunctionLockService.release(\"SLICK_EMAILER_INIT_TINY_MCE\");\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync removeTinyMCE() {\r\n\t\tif (this.tinyMCEUuid) {\r\n\t\t\tconst tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);\r\n\r\n\t\t\tif (tinyMCE)\r\n\t\t\t\ttinyMCE.remove();\r\n\r\n\t\t\tconst tinyMCEContainer = <HTMLDivElement>this.tinyMCEContainerRef.nativeElement;\r\n\t\t\ttinyMCEContainer.innerHTML = \"\";\r\n\r\n\t\t\tthis.tinyMCEInitialized = false;\r\n\r\n\t\t\tthis.tinyMCEUuid = null;\r\n\t\t}\r\n\t}\r\n}\r\n","<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n <div class=\"input-group\">\r\n <span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n <input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n </div>\r\n <slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n <ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n <div style='line-height: 1.1em; font-size: 12px;'>\r\n {{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n </div>\r\n </ng-template>\r\n </slick-auto-complete>\r\n\r\n <label>To: </label>\r\n <div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ms-1\"></i></div>\r\n </div>\r\n </div>\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Subject:</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Body:</label>\r\n <div #tinyMCEContainerRef></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Attachments:</label>\r\n <slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n <slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showButtons\" class=\"row form-group\">\r\n <div class=\"col-12 text-center\">\r\n <button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n <button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ViewChild, forwardRef, ChangeDetectorRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { SlickEmailerComponent } from \"./slick-emailer.component\";\r\nimport { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerModel, } from \"./slick-emailer.model\";\r\nimport { ISlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\ndeclare const tinymce: any;\r\n\r\n@Component({\r\n\tselector: 'slick-emailer-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='Send Email' [width]='800' (onClose)='onCancelEmail()' #emailerDialogRef>\r\n\t\t<slick-emailer #emailerRef [(ngModel)]='dialogEmailerModel'\r\n\t\t\t\t\t[bodyHeight]='bodyHeight'\r\n\t\t\t\t\t[showButtons]='false'\r\n\t\t\t\t\t[toEmailAddressList]='toEmailAddressList' \r\n\t\t\t (toAddressSearch)='toAddressSearch($event)'>\r\n\t\t</slick-emailer>\r\n\r\n\t\t<slick-dialog-footer>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</slick-dialog-footer>\r\n\t</slick-dialog>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailerDialogComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailerDialogComponent {\r\n\t@Input(\"toEmailAddressList\") toEmailAddressList: ISlickEmailerAddressModel[];\r\n\t@Input(\"bodyHeight\") bodyHeight: string = \"180px\";\r\n\t@Output(\"toAddressSearch\") toAddressSearchEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@Output(\"sendEmailClick\") sendEmailClickEmitter: EventEmitter<ISlickEmailerModel> = new EventEmitter();\r\n\t@Output(\"cancelEmailClick\") cancelEmailClickEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t@ViewChild(\"emailerDialogRef\") emailerDialogRef: SlickDialogComponent;\r\n\t@ViewChild(\"emailerRef\") emailerRef: SlickEmailerComponent;\r\n\r\n\tdialogEmailerModel: ISlickEmailerModel;\r\n\temailerModel: ISlickEmailerModel;\r\n\tspinnerStatus: string = null;\r\n\tisVisible = false;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tpropagateChange = (_: ISlickEmailerModel) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tasync showDialog() {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tthis.dialogEmailerModel = this.emailerModel;\r\n\t\tthis.emailerRef.isSubmitted = false;\r\n\t\tthis.spinnerStatus = \"reset\";\r\n\t\tthis.emailerRef.dialogInit();\r\n\t\tthis.emailerDialogRef.showDialog();\r\n\t}\r\n\r\n\ttoAddressSearch(searchText) {\r\n\t\tthis.toAddressSearchEmitter.emit(searchText);\r\n\t}\r\n\r\n\tonSendEmail() {\r\n\t\tthis.dialogEmailerModel.toEmailAddresses = this.emailerRef.getEmailAddresses(this.dialogEmailerModel);\r\n\t\tif (this.emailerRef.validate() === false)\r\n\t\t\treturn;\r\n\r\n\t\tthis.dialogEmailerModel.body = this.emailerRef.getBody();\r\n\t\tthis.spinnerStatus = \"spin\";\r\n\r\n\t\tif (this.sendEmailClickEmitter)\r\n\t\t\tthis.sendEmailClickEmitter.emit(this.dialogEmailerModel);\r\n\t}\r\n\r\n\tasync emailSent() {\r\n\t\ttry {\r\n\t\t\tthis.spinnerStatus = \"ok\";\r\n\t\t\tthis.emailerRef.emailSent();\r\n\t\t\tthis.emailerDialogRef.hideDialog();\r\n\t\t\tawait SlickSleepService.sleep(500);\r\n\t\t\tthis.emailerRef.removeTinyMCE();\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\tthis.spinnerStatus = \"error\";\r\n\t\t}\r\n\r\n\t}\r\n\r\n\temailError() {\r\n\t\tthis.spinnerStatus = \"error\";\r\n\t}\r\n\r\n\tasync onCancelEmail() {\r\n\t\tthis.spinnerStatus = \"reset\";\r\n\t\tthis.emailerRef.removeTinyMCE();\r\n\t\tthis.emailerDialogRef.hideDialog();\r\n\t\tif (this.cancelEmailClickEmitter)\r\n\t\t\tthis.cancelEmailClickEmitter.emit();\r\n\t}\r\n}\r\n","import { ISlickFileModel } from \"../slick-file-model/slick-file.model\";\r\nimport { ISlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n\r\nexport interface ISlickEmailerModel {\r\n\tuuid: string;\r\n\ttoEmailAddresses: ISlickEmailerAddressModel[];\r\n\tsubject: string;\r\n\tbody: string;\r\n\tattachments: ISlickFileModel[];\r\n}\r\n\r\nexport class SlickEmailerModel implements ISlickEmailerModel {\r\n\tuuid: string;\r\n\ttoEmailAddresses: ISlickEmailerAddressModel[];\r\n\tsubject: string;\r\n\tbody: string;\r\n\tattachments: ISlickFileModel[];\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickAutoCompleteModule } from \"../slick-auto-complete/slick-auto-complete.module\";\r\nimport { SlickButtonSpinnerModule } from \"../slick-button-spinner/slick-button-spinner.module\";\r\nimport { SlickFileDropModule } from \"../slick-file-drop/slick-file-drop.module\";\r\nimport { SlickFileListModule } from \"../slick-file-list/slick-file-list.module\";\r\nimport { SlickEmailerComponent } from \"./slick-emailer.component\";\r\nimport { SlickEmailerDialogComponent } from \"./slick-emailer-dialog.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule],\r\n\tdeclarations: [SlickEmailerComponent, SlickEmailerDialogComponent],\r\n\texports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent]\r\n})\r\nexport class SlickEmailerModule { }\r\nexport { SlickEmailerComponent }\r\nexport { SlickEmailerDialogComponent }\r\nexport { ISlickEmailerModel, SlickEmailerModel } from \"./slick-emailer.model\";\r\nexport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"./slick-emailer-address.model\";\r\n","import { Component, forwardRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickEmailerModel, } from \"../slick-emailer/slick-emailer.model\";\r\n\r\n@Component({\r\n\tselector: 'slick-email-viewer',\r\n\ttemplateUrl: 'slick-email-viewer.component.html',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailViewerComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailViewerComponent {\r\n\tuuid: string;\r\n\temailerModel: ISlickEmailerModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic async writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\r\n}\r\n","<div *ngIf=\"emailerModel\" id=\"slick-email-viewer_{{uuid}}\" class=\"slick-email-viewer\">\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>To: </label><br />\r\n\t\t\t<div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-email-viewer_email-address card\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Subject:</label><br />\r\n\t\t\t<div class=\"slick-email-viewer_subject card\">{{emailerModel.subject}}</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Body:</label><br />\r\n\t\t\t<div class=\"slick-email-viewer_body card\" [innerHTML]=\"emailerModel.body\"></div>\r\n\t\t\t\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"emailerModel.attachments && emailerModel.attachments.length > 0\" class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Attachments:</label>\r\n\t\t\t<slick-file-list [(files)]=\"emailerModel.attachments\" [allowDelete]=\"false\"></slick-file-list>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, ViewChild, forwardRef, ChangeDetectorRef } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { ISlickEmailerModel } from \"../slick-emailer/slick-emailer.model\";\r\n\r\n@Component({\r\n\tselector: 'slick-email-viewer-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='View Email' [width]='800' #emailViewerDialogRef>\r\n\t\t<slick-email-viewer [(ngModel)]='emailerModel'></slick-email-viewer>\r\n\r\n\t\t<slick-dialog-footer>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-primary\" (click)=\"onOk()\">Ok</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</slick-dialog-footer>\r\n\t</slick-dialog>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickEmailViewerDialogComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickEmailViewerDialogComponent {\r\n\r\n\t@ViewChild(\"emailViewerDialogRef\") emailViewerDialogRef: SlickDialogComponent;\r\n\r\n\temailerModel: ISlickEmailerModel;\r\n\tisVisible = false;\r\n\r\n\tconstructor(private changeDetector: ChangeDetectorRef) { }\r\n\r\n\tpropagateChange = (_: ISlickEmailerModel) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: ISlickEmailerModel) {\r\n\t\tthis.emailerModel = obj;\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tshowDialog() {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.changeDetector.detectChanges();\r\n\r\n\t\tthis.emailViewerDialogRef.showDialog();\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.isVisible = false;\r\n\r\n\t\tthis.emailViewerDialogRef.hideDialog();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickEmailViewerComponent } from \"./slick-email-viewer.component\";\r\nimport { SlickEmailViewerDialogComponent } from \"./slick-email-viewer-dialog.component\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickFileListModule } from \"../slick-file-list/slick-file-list.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickDialogModule, SlickFileListModule],\r\n\tdeclarations: [SlickEmailViewerComponent, SlickEmailViewerDialogComponent],\r\n\texports: [CommonModule, FormsModule, SlickEmailViewerComponent, SlickEmailViewerDialogComponent]\r\n})\r\nexport class SlickEmailViewerModule { }\r\nexport { SlickEmailViewerComponent }\r\nexport { SlickEmailViewerDialogComponent }\r\nexport { ISlickEmailerModel, SlickEmailerModel } from \"../slick-emailer/slick-emailer.model\";\r\nexport { ISlickEmailerAddressModel, SlickEmailerAddressModel } from \"../slick-emailer/slick-emailer-address.model\";\r\n","import { Directive, NgZone, ElementRef, Input, Output, EventEmitter, OnInit, OnDestroy } from \"@angular/core\";\r\n\r\n@Directive({\r\n\tselector: '[slick-google-address-search]'\r\n})\r\nexport class SlickGoogleAddressSearchDirective implements OnInit, OnDestroy {\r\n\t@Input() googleAddressSearch;\r\n\t@Output() googleAddressSearchChange = new EventEmitter<google.maps.places.PlaceResult>();\r\n\t@Output() onGoogleAddressSelect = new EventEmitter<google.maps.places.PlaceResult>();\r\n\r\n\tautocomplete: google.maps.places.Autocomplete;\r\n\r\n\tconstructor(private el: ElementRef, private ngZone: NgZone) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (typeof google === 'undefined' || typeof google.maps === 'undefined') {\r\n\t\t\tconsole.error(\"%c Error: It appears you have not included the google maps scripts. Please see www.slickcomponents.com for instructions on how to add this.\", 'background: red; color: white');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnew google.maps.places.Autocomplete(this.el.nativeElement);\r\n\t\tthis.autocomplete = new google.maps.places.Autocomplete(this.el.nativeElement, {\r\n\t\t\ttypes: []\r\n\t\t});\r\n\t\tthis.autocomplete.addListener(\"place_changed\", () => {\r\n\t\t\t//get the place result\r\n\t\t\tlet place: google.maps.places.PlaceResult = this.autocomplete.getPlace();\r\n\r\n\t\t\t// Google maps kind of sucks. Often times it will strip the house number, but it's there\r\n\t\t\t// in the prediction.\r\n\t\t\t// So take the predictive text and use the house number from that instead\r\n\t\t\tconst sessionToken = new google.maps.places.AutocompleteSessionToken()\r\n\t\t\tconst autocompleteService = new google.maps.places.AutocompleteService();\r\n\t\t\tautocompleteService.getPlacePredictions({\r\n\t\t\t\tinput: this.el.nativeElement.value,\r\n\t\t\t\tsessionToken: sessionToken\r\n\t\t\t}, (predictionAddr) => {\r\n\t\t\t\t// Give control back to angular\r\n\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t// See if we got a prediction back\r\n\t\t\t\t\tif (predictionAddr && predictionAddr.length > 0) {\r\n\t\t\t\t\t\t// See if the original place already has a street #\r\n\t\t\t\t\t\tif (!(place.address_components.find(x => x.types.find(addrType => addrType === 'street_number')))) {\r\n\t\t\t\t\t\t\t// Parse out the prediction addr, by spaces\r\n\t\t\t\t\t\t\tconst preditionAddrParts = predictionAddr[0].structured_formatting.main_text.split(\" \");\r\n\t\t\t\t\t\t\t// If we couldn't parse it, ignore the street\r\n\t\t\t\t\t\t\tif (preditionAddrParts.length > 0) {\r\n\t\t\t\t\t\t\t\t// Add a new \"street_number\" field to the components\r\n\t\t\t\t\t\t\t\tconst streetNumber = preditionAddrParts[0];\r\n\t\t\t\t\t\t\t\tplace.address_components.unshift({\r\n\t\t\t\t\t\t\t\t\tlong_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\tshort_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\ttypes: ['street_number']\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.googleAddressSearchChange)\r\n\t\t\t\t\t\tthis.googleAddressSearchChange.emit(place);\r\n\r\n\t\t\t\t\tif (this.onGoogleAddressSelect)\r\n\t\t\t\t\t\tthis.onGoogleAddressSelect.emit(place);\r\n\r\n\t\t\t\t\tthis.el.nativeElement.value = \"\";\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.autocomplete.unbindAll();\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickGoogleAddressSearchDirective } from \"./slick-google-address-search.directive\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickGoogleAddressSearchDirective],\r\n\texports: [SlickGoogleAddressSearchDirective]\r\n})\r\nexport class SlickGoogleAddressSearchModule { }\r\n\r\nexport { SlickGoogleAddressSearchDirective }","import { Component, Input, OnChanges, OnDestroy, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-google-map\",\r\n\ttemplate:\r\n\t`<div #googleMapRef [style.width]='width' [style.height]='height'></div>`\r\n})\r\nexport class SlickGoogleMapComponent implements OnChanges, OnDestroy {\r\n\t@Input() options: google.maps.MapOptions;\r\n\t@Input() overlays: google.maps.Marker[];\r\n\t@Input() width: string;\r\n\t@Input() height: string;\r\n\t@ViewChild(\"googleMapRef\", { static: true }) googleMapRef: ElementRef;\r\n\r\n\tprivate map: google.maps.Map;\r\n\tprivate currentMarkers: google.maps.Marker[];\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.map = null;\r\n\t}\r\n\r\n\tasync ngOnChanges() {\r\n\t\tif (!this.map)\r\n\t\t\tthis.map = new google.maps.Map(this.googleMapRef.nativeElement, this.options);\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\r\n\t\tthis.map.setOptions(this.options);\r\n\r\n\t\tif (this.currentMarkers)\r\n\t\t\tthis.currentMarkers.forEach(currentMarker => currentMarker.setMap(null));\r\n\r\n\t\tthis.currentMarkers = [];\r\n\t\tif (this.overlays && this.overlays.length > 0) {\r\n\t\t\tthis.overlays.forEach(o => {\r\n\t\t\t\to.setMap(this.map);\r\n\r\n\t\t\t\tthis.currentMarkers.push(o);\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\tawait SlickSleepService.sleep();\t\t\r\n\t\tgoogle.maps.event.trigger(this.map, 'resize')\r\n\t}\r\n}\r\n\t\t","import { Component, Input, ViewChild } from \"@angular/core\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.component\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-google-map-dialog',\r\n\ttemplate:\r\n\t`<slick-dialog *ngIf='isVisible' header='Map' [width]='600' #googleMapDialogRef>\r\n\t\t<slick-google-map *ngIf='showMap' [options]=\"options\" [overlays]=\"overlays\" [width]=\"'580px'\" [height]=\"'500px'\"></slick-google-map>\r\n\t</slick-dialog>`\r\n})\r\nexport class SlickGoogleMapDialogComponent {\r\n\t@Input() options: google.maps.MapOptions;\r\n\t@Input() overlays: google.maps.Marker[];\r\n\r\n\t@ViewChild(\"googleMapDialogRef\") googleMapDialogRef: SlickDialogComponent;\r\n\r\n\tisVisible: boolean = false;\r\n\tshowMap: boolean = false;\r\n\r\n\tconstructor() { }\r\n\r\n\tasync showDialog(googleMapOptions: google.maps.MapOptions = null, googleMapOverlays: google.maps.Marker[] = null) {\r\n\t\tthis.isVisible = true;\r\n\r\n\t\tthis.showMap = true;\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (googleMapOptions) {\r\n\t\t\tthis.options = {};\r\n\t\t\tthis.options = googleMapOptions;\r\n\t\t}\r\n\r\n\t\tif (googleMapOverlays)\r\n\t\t\tthis.overlays = googleMapOverlays;\r\n\r\n\t\tthis.googleMapDialogRef.showDialog();\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tthis.options = null\r\n\t\tthis.overlays = null;\r\n\r\n\t\tthis.googleMapDialogRef.hideDialog();\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickGoogleMapComponent } from \"./slick-google-map.component\";\r\nimport { SlickGoogleMapDialogComponent } from \"./slick-google-map-dialog.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickDialogModule],\r\n\tdeclarations: [SlickGoogleMapComponent, SlickGoogleMapDialogComponent],\r\n\texports: [SlickGoogleMapComponent, SlickGoogleMapDialogComponent]\r\n})\r\nexport class SlickGoogleMapModule { }\r\n\r\nexport { SlickGoogleMapComponent }\r\nexport { SlickGoogleMapDialogComponent }\r\n","export enum SlickGridColumnFilterTypes { none, text, dropdown }\r\nexport enum SlickGridColumnSortDirection { none, asc, desc }\r\nexport enum SlickGridColumnTitleOrientation { Horizontal, Vertical }\r\n\r\nexport interface ISlickGridFilterDropdownValue {\r\n\tid: string,\r\n\ttext: string\r\n}\r\n\r\nexport interface ISlickGridColumnModel {\r\n\tcolumnKey: string;\r\n\ttitle: string;\r\n\ttitleOrientation: SlickGridColumnTitleOrientation;\r\n\ttitleHeight: string;\r\n\tdataFieldName: string;\r\n\tdisplayOrder: number;\r\n\tsortable: boolean;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tfilterType: SlickGridColumnFilterTypes;\r\n\tfilterText: string;\r\n\tlastSearchText: string;\r\n\tfilterDropdownValues: ISlickGridFilterDropdownValue[];\r\n\tfilterDropdownValue: string;\r\n\tisFiltering: boolean;\r\n\tisLocked: boolean;\r\n\tdefault: boolean;\r\n\tvisible: boolean;\r\n\twidth: string;\r\n\tflexible: boolean;\r\n\thtml: string;\r\n}\r\n\r\nexport class SlickGridColumnModel implements ISlickGridColumnModel {\r\n\tcolumnKey: string;\r\n\ttitle: string;\r\n\ttitleOrientation: SlickGridColumnTitleOrientation;\r\n\ttitleHeight: string;\r\n\tdataFieldName: string;\r\n\tdisplayOrder: number;\r\n\tsortable: boolean = true;\r\n\tsortDirection: SlickGridColumnSortDirection = SlickGridColumnSortDirection.none;\r\n\tfilterType: SlickGridColumnFilterTypes = SlickGridColumnFilterTypes.none;\r\n\tfilterText: string;\r\n\tlastSearchText: string;\r\n\tfilterDropdownValues: ISlickGridFilterDropdownValue[];\r\n\tfilterDropdownValue: string;\r\n\tisFiltering: boolean;\r\n\tisLocked: boolean;\r\n\tdefault: boolean = true;\r\n\tvisible: boolean = true;\r\n\twidth: string;\r\n\tflexible: boolean = false;\r\n\thtml: string = '';\r\n\t// Used to create custom HTML for the column\r\n\tcolumnFormatCallback: Function;\r\n\r\n\tstatic addGridColumn(params: any): ISlickGridColumnModel {\r\n\t\tlet gridColumn = new SlickGridColumnModel();\r\n\r\n\t\tif (params.columnKey)\r\n\t\t\tgridColumn.columnKey = params.columnKey;\r\n\t\tif (params.title)\r\n\t\t\tgridColumn.title = params.title;\r\n\t\tgridColumn.titleOrientation = params.titleOrientation || SlickGridColumnTitleOrientation.Horizontal;\r\n\t\tif (params.titleHeight)\r\n\t\t\tgridColumn.titleHeight = params.titleHeight;\r\n\t\tif (params.dataFieldName)\r\n\t\t\tgridColumn.dataFieldName = params.dataFieldName;\r\n\t\tif (params.displayOrder !== null && params.displayOrder !== undefined)\r\n\t\t\tgridColumn.displayOrder = params.displayOrder;\r\n\t\tif (params.sortable !== null && params.sortable !== undefined)\r\n\t\t\tgridColumn.sortable = params.sortable;\r\n\t\tif (params.sortDirection)\r\n\t\t\tgridColumn.sortDirection = <SlickGridColumnSortDirection>params.sortDirection;\r\n\t\tif (params.filterType)\r\n\t\t\tgridColumn.filterType = <SlickGridColumnFilterTypes>params.filterType;\r\n\t\tif (params.filterDropdownValues)\r\n\t\t\tgridColumn.filterDropdownValues = <ISlickGridFilterDropdownValue[]>params.filterDropdownValues;\r\n\t\tif (params.width !== null && params.width !== undefined) \r\n\t\t\tgridColumn.width = params.width;\r\n\t\tif (!!params.flexible)\r\n\t\t\tgridColumn.flexible = params.flexible;\r\n\t\tif (params.html)\r\n\t\t\tgridColumn.html = params.html;\r\n\t\tif (params.default === null || params.default === undefined)\r\n\t\t\tgridColumn.default = true\r\n\t\telse\r\n\t\t\tgridColumn.default = params.default;\r\n\t\tgridColumn.visible = gridColumn.default;\r\n\t\tif (params.columnFormatCallback) {\r\n\t\t\tconsole.error(\"columnFormatCallback is no longer used. Please use key and <slick-grid-column columnKey='key'> with <ng-template let-item [slickGridColumnTemplate]>\")\r\n\t\t}\r\n\r\n\t\treturn gridColumn;\r\n\t}\r\n}\r\n\r\n","import { ISlickGridColumnModel } from \"./slick-grid-column.model\";\r\n\r\nexport interface ISlickGridFavoriteModel {\r\n\tfavoriteName: string;\r\n\tcolumns: ISlickGridColumnModel[];\r\n}\r\n\r\nexport class SlickGridFavoriteModel implements ISlickGridFavoriteModel {\r\n\tfavoriteName: string;\r\n\tcolumns: ISlickGridColumnModel[];\r\n}\r\n\r\n","import { SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\n\r\nexport interface ISlickGridRequestSearchModel {\r\n\tcolumnName: string,\r\n\tsearchValueId: string,\r\n\tsearchValueText: string\r\n}\r\n\r\nexport interface ISlickGridRequestSortModel {\r\n\tcolumnName: string,\r\n\tsortDirection: string\r\n}\r\n\r\nexport interface ISlickGridRequestModel {\r\n\turl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\tadditionalParams: any;\r\n\tpage: number;\r\n\trecordsPerPage: number;\r\n\tsortColumn: string;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tsearchString: string;\r\n\tcolumnSearchValues: ISlickGridRequestSearchModel[];\r\n}\r\n\r\nexport class SlickGridRequestModel implements ISlickGridRequestModel {\r\n\turl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\tadditionalParams: any;\r\n\tpage: number;\r\n\trecordsPerPage: number;\r\n\tsortColumn: string;\r\n\tsortDirection: SlickGridColumnSortDirection;\r\n\tsearchString: string;\r\n\tcolumnSearchValues: ISlickGridRequestSearchModel[];\r\n}\r\n\r\n","export interface ISlickGridResponseModel {\r\n\ttotalRecords: number;\r\n\tdata: any[];\r\n}\r\n\r\nexport class SlickGridResponseModel implements ISlickGridResponseModel {\r\n\ttotalRecords: number;\r\n\tdata: any[];\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Injectable()\r\nexport class SlickGridService {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tasync getDataFromServer (requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tlet params = <any>{};\r\n\t\t\tif (requestModel.additionalParams)\r\n\t\t\t\tparams.additionalParams = requestModel.additionalParams;\r\n\r\n\t\t\t// If the user has a custom search string, add it to the params here\r\n\t\t\tif (requestModel.searchString)\r\n\t\t\t\tparams.searchString = requestModel.searchString;\r\n\r\n\t\t\tif (requestModel.recordsPerPage)\r\n\t\t\t\tparams.recordsPerPage = requestModel.recordsPerPage;\r\n\r\n\t\t\tparams.page = (requestModel.page === null || requestModel.page === undefined) ? 1: requestModel.page;\r\n\r\n\t\t\tif (requestModel.sortColumn) {\r\n\t\t\t\tparams.sortColumn = requestModel.sortColumn;\r\n\t\t\t\tparams.sortDirection = requestModel.sortDirection;\r\n\t\t\t}\r\n\r\n\t\t\tdelete params.columnSearchValues;\r\n\t\t\tif (requestModel.columnSearchValues)\r\n\t\t\t\tparams.columnSearchValues = requestModel.columnSearchValues;\r\n\r\n\t\t\tlet data: SlickGridResponseModel = (<SlickGridResponseModel>await this.http.post(requestModel.url, params, { headers: requestModel.httpHeaders }).toPromise());\r\n\t\t\tdata = SlickUtilsService.dateSanitize(data);\r\n\t\t\treturn Promise.resolve(data);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync getDataFromDataObj(requestModel: SlickGridRequestModel, data: any[]): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tlet responseModel: SlickGridResponseModel = new SlickGridResponseModel();\r\n\t\t\t\r\n\t\t\tif (!data || data.length === 0) {\r\n\t\t\t\tresponseModel.totalRecords = 0;\r\n\t\t\t\tresponseModel.data = [];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tresponseModel.totalRecords = data.length;\r\n\t\t\t\tlet page = (requestModel.page === null || requestModel.page === undefined) ? 1 : requestModel.page;\r\n\r\n\t\t\t\tlet startIndex = (page - 1) * requestModel.recordsPerPage;\r\n\t\t\t\tlet endIndex = startIndex + requestModel.recordsPerPage;\r\n\t\t\t\tif (endIndex > data.length)\r\n\t\t\t\t\tendIndex = data.length;\r\n\t\t\t\tresponseModel.data = data.slice(startIndex, endIndex);\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n}","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[slickGridColumnTemplate]'\r\n})\r\nexport class SlickGridColumnTemplateDirective {\r\n\t@Input('slickGridColumnTemplate') columnKey: string;\r\n\r\n\tconstructor(public template: TemplateRef<any>) {\r\n\t}\r\n}\r\n\r\n","import { Component, Input, AfterViewInit, OnDestroy, ElementRef, ViewChild, OnChanges, SimpleChanges, OnInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-popover',\r\n\ttemplateUrl: 'slick-popover.component.html'\r\n})\r\nexport class SlickPopoverComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n\t@Input() element: HTMLElement;\r\n\t@Input() position: string = 'right';\r\n\t@Input() hoverDelay: number = 250;\r\n\t@Input() outDelay: number = 250;\r\n\t@Input() alignment: string = \"left\";\r\n\t@Input() topOffsetPx: number = 0;\r\n\t@Input() leftOffsetPx: number = 0;\r\n\t@Input() whiteBackground: boolean = false;\r\n\t@Input() showByClick: boolean = false;\r\n\t@Input() showArrow: boolean = true;\r\n\r\n\t@ViewChild(\"containerDivRef\", { static: true }) containerDivRef: ElementRef;\r\n\t@ViewChild(\"popoverContentRef\", { static: true }) popoverContentRef: ElementRef;\r\n\t\r\n\tuuid: string;\r\n\ttop: number;\r\n\tleft: number;\r\n\r\n\tfnReposition = () => this.reposition();\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnMouseEnter = () => this.mouseEnter();\r\n\tfnMouseLeave = () => this.mouseLeave();\r\n\r\n\tdisplayTimeout: NodeJS.Timer;\r\n\tleaveTimeout: NodeJS.Timer;\r\n\tisVisible = false;\r\n\telementId: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.topOffsetPx)\r\n\t\t\tthis.topOffsetPx = parseFloat(changes.topOffsetPx.currentValue);\r\n\r\n\t\tif (changes.leftOffsetPx)\r\n\t\t\tthis.leftOffsetPx = parseFloat(changes.leftOffsetPx.currentValue);\r\n\r\n\t\tif (changes.position) {\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t}\r\n\r\n\t\tif (changes.showByClick) \r\n\t\t\tthis.showByClick = (this.showByClick.toString().toLowerCase() === 'true') ? true : false;\r\n\r\n\t\tif (changes.whiteBackground && changes.whiteBackground.currentValue)\r\n\t\t\tthis.whiteBackground = (changes.whiteBackground.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tif (changes.showArrow && changes.showArrow.currentValue)\r\n\t\t\tthis.showArrow = (changes.showArrow.currentValue.toString().toLowerCase() !== 'false');\t\t\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.reposition();\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\tthis.containerDivRef.nativeElement.classList.add(\"showArrow\");\r\n\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\t//this.el.nativeElement.remove(this.el);\r\n\t\tdocument.body.appendChild(this.el.nativeElement);\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tif (this.showByClick === true) {\r\n\t\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\t\tif (!this.element.getAttribute(\"id\"))\r\n\t\t\t\tthis.element.setAttribute('id', `slick-popover-element_${this.uuid}`);\r\n\r\n\t\t\tthis.elementId = this.element.getAttribute(\"id\");\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.el.nativeElement.addEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\t\tthis.element.addEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\t\tthis.el.nativeElement.addEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t\tthis.element.addEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\t\t\t\r\n\t\tthis.el.nativeElement.removeEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\tthis.element.removeEventListener(\"mouseenter\", this.fnMouseEnter);\r\n\t\tthis.el.nativeElement.removeEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\ttry {\r\n\t\t\tthis.element.removeEventListener(\"mouseleave\", this.fnMouseLeave);\r\n\t\t\tdocument.body.removeChild(this.el.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\t}\r\n\r\n\tprivate mouseEnter() {\r\n\t\tclearTimeout(this.displayTimeout);\r\n\t\tclearTimeout(this.leaveTimeout);\r\n\t\tthis.displayTimeout = setTimeout(() => {\r\n\t\t\tthis.reposition();\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"visible\");\r\n\t\t}, this.hoverDelay);\r\n\t}\r\n\r\n\tprivate mouseLeave() {\r\n\t\tclearTimeout(this.displayTimeout);\r\n\t\tclearTimeout(this.leaveTimeout);\r\n\r\n\t\tthis.leaveTimeout = setTimeout(() => {\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t}, this.outDelay);\r\n\t}\r\n\r\n\tprivate async reposition() {\r\n\t\tif (!this.topOffsetPx)\r\n\t\t\tthis.topOffsetPx = 0;\r\n\r\n\t\tif (!this.leftOffsetPx)\r\n\t\t\tthis.leftOffsetPx = 0;\r\n\r\n\t\tif (this.showArrow === true)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"showArrow\");\r\n\t\telse if (this.showArrow === false)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"showArrow\");\r\n\r\n\t\tif (this.whiteBackground === true)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.add(\"whiteBackground\");\r\n\t\telse if (this.whiteBackground === false)\r\n\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"whiteBackground\");\r\n\r\n\r\n\t\tlet targetRect = this.element.getBoundingClientRect();\r\n\t\tlet targetLeft = targetRect.left;\r\n\t\tlet targetTop = targetRect.top;\r\n\t\tlet targetHeight = this.element.offsetHeight;\r\n\t\tlet targetWidth = targetRect.width;\r\n\r\n\t\tlet popoverHeight = this.popoverContentRef.nativeElement.offsetHeight;\r\n\t\tlet popoverWidth = this.popoverContentRef.nativeElement.getBoundingClientRect().width;\r\n\r\n\t\tif (this.showArrow) {\r\n\t\t\tpopoverWidth += 5;\r\n\t\t}\r\n\r\n\t\tif (this.position === 'left') {\r\n\t\t\tthis.top = (targetTop + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft - popoverWidth - 3 + this.leftOffsetPx);\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.left -= 2;\r\n\t\t}\r\n\t\telse if (this.position === 'right') {\r\n\t\t\tthis.top = (targetTop + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft + targetWidth -7 + this.leftOffsetPx);\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.left += 7;\r\n\t\t}\r\n\t\telse if (this.position === 'top') {\r\n\t\t\tthis.top = (targetTop - popoverHeight - 3 + this.topOffsetPx);\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\t// default to left aligned\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\tif (this.alignment && this.alignment.toLowerCase() === 'right')\r\n\t\t\t\tthis.left = targetLeft + targetWidth - popoverWidth - 4 + this.leftOffsetPx;\r\n\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.top -= 7;\r\n\t\t}\r\n\t\telse if (this.position === 'bottom') {\t\t\t\r\n\t\t\tthis.top = (targetTop + targetHeight - 7 + this.topOffsetPx);\r\n\t\t\t// default to left aligned\r\n\t\t\tthis.left = (targetLeft + this.leftOffsetPx);\r\n\t\t\tif (this.alignment && this.alignment.toLowerCase() === 'right')\r\n\t\t\t\tthis.left = targetLeft + targetWidth - popoverWidth - 4 + this.leftOffsetPx;\r\n\t\t\t\r\n\t\t\tif (this.showArrow)\r\n\t\t\t\tthis.top += 7;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, this.elementId) === true) {\r\n\t\t\tif (this.isVisible === true) {\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.reposition();\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"hidden\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"visible\");\r\n\t\t\t\tthis.isVisible = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isVisible === true) {\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.remove(\"visible\");\r\n\t\t\t\tthis.containerDivRef.nativeElement.classList.add(\"hidden\");\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<div #containerDivRef id=\"slick-popover_{{uuid}}\" class=\"slick-popover slick-popover_{{position}}\" [style.top.px]=\"top\" [style.left.px]=\"left\">\r\n\t<div #popoverContentRef class=\"popover fade bs-popover-{{position}} show\">\r\n\t\t<div *ngIf=\"showArrow === true\" class=\"arrow\"></div>\r\n\t\t<div class=\"popover-body\"><ng-content></ng-content></div>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, HostBinding } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-paging',\r\n\ttemplateUrl: 'slick-paging.component.html'\r\n})\r\nexport class SlickPagingComponent implements OnChanges {\r\n\t@HostBinding('class') class = 'd-flex';\r\n\r\n\t@Input() pageNumber: number = 1;\r\n\t@Output() pageNumberChange: EventEmitter<number> = new EventEmitter();\r\n\t@Output() onPageChange: EventEmitter<number> = new EventEmitter();\r\n\t@Input() totalRecords: number;\r\n\t@Input() recordsPerPage: number;\r\n\r\n\tshowEllipses: boolean = false;\r\n\ttotalPages: number;\r\n\t// This will be 10 20 30, etc\r\n\tpreDisplayPageNumbers: number[] = [];\r\n\tpreDisplayEllipses: boolean = false;\r\n\t// This will be 41, 42, 43, 44, etc\r\n\tdisplayPageNumbers: number[] = [];\r\n\t// This will be 50 60 70, etc\r\n\tpostDisplayPageNumbers: number[] = [];\r\n\tpostDisplayEllipses: boolean = false;\r\n\tcurrentRecordNumber: number;\r\n\tendRecordNumber: number;\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.pageNumber) {\r\n\t\t\tthis.pageNumber = parseInt((changes.pageNumber.currentValue || '1').toString());\r\n\t\t}\r\n\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tselectPage(selectedPageNumber: number) {\r\n\t\tthis.pageNumber = selectedPageNumber;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tfirst() {\r\n\t\tthis.pageNumber = 1;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tpreviousPage() {\r\n\t\tthis.pageNumber--;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tpreviousSet() {\r\n\t\tthis.pageNumber -= 10;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tnextPage() {\r\n\t\tthis.pageNumber++;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tnextSet() {\r\n\t\tthis.pageNumber += 10;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\tlast() {\r\n\t\tthis.pageNumber = this.totalPages;\r\n\t\tthis.recalc();\r\n\t\tif (this.onPageChange)\r\n\t\t\tthis.onPageChange.emit(this.pageNumber);\r\n\t\tif (this.pageNumberChange)\r\n\t\t\tthis.pageNumberChange.emit(this.pageNumber);\r\n\t}\r\n\r\n\trecalc() {\r\n\t\tthis.preDisplayEllipses = false;\r\n\t\tthis.postDisplayEllipses = false;\r\n\r\n\t\tif (!this.recordsPerPage)\r\n\t\t\treturn;\r\n\r\n\t\tthis.totalRecords = this.totalRecords || 0;\r\n\t\tif (this.totalRecords < 0)\r\n\t\t\tthis.totalRecords = 0;\r\n\t\tthis.recordsPerPage = this.recordsPerPage || 1;\r\n\t\tif (this.recordsPerPage <= 0)\r\n\t\t\tthis.recordsPerPage = 1;\r\n\r\n\t\tthis.totalPages = Math.floor(this.totalRecords / this.recordsPerPage);\r\n\t\tif ((this.totalRecords % this.recordsPerPage) > 0)\r\n\t\t\tthis.totalPages++;\r\n\r\n\t\tif (this.pageNumber < 1)\r\n\t\t\tthis.pageNumber = 1;\r\n\r\n\t\tif (this.pageNumber > this.totalPages)\r\n\t\t\tthis.pageNumber = this.totalPages;\r\n\r\n\t\tthis.currentRecordNumber = ((this.recordsPerPage) * (this.pageNumber - 1)) + 1;\r\n\r\n\t\tthis.endRecordNumber = this.currentRecordNumber + this.recordsPerPage - 1;\r\n\t\tif (this.endRecordNumber > this.totalRecords)\r\n\t\t\tthis.endRecordNumber = this.totalRecords;\r\n\r\n\t\tthis.preDisplayPageNumbers = [];\r\n\t\tthis.displayPageNumbers = [];\r\n\t\tthis.postDisplayPageNumbers = [];\r\n\r\n\t\t// 10 is a special case where we want to just show all 10\r\n\t\tif (this.totalPages === 10) {\r\n\t\t\tfor (let i = 1; i <= 10; i++) {\r\n\t\t\t\tthis.displayPageNumbers.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst preDisplayPageTotal = Math.floor(this.pageNumber / 5);\r\n\t\t\tif (preDisplayPageTotal > 0) {\r\n\t\t\t\tfor (let i = 0; i < preDisplayPageTotal; i++) {\r\n\t\t\t\t\tif (i === 0)\r\n\t\t\t\t\t\tthis.preDisplayPageNumbers.push(1);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthis.preDisplayPageNumbers.push(i * 5);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet currentDisplayPageStart = preDisplayPageTotal * 5;\r\n\t\t\tlet currentDisplayPageEnd = currentDisplayPageStart + 4;\r\n\t\t\tif (currentDisplayPageEnd > this.totalPages)\r\n\t\t\t\tcurrentDisplayPageEnd = this.totalPages;\r\n\r\n\t\t\tfor (let i = currentDisplayPageStart; i <= currentDisplayPageEnd; i++) {\r\n\t\t\t\tif (i > 0)\r\n\t\t\t\t\tthis.displayPageNumbers.push(i);\r\n\t\t\t}\r\n\r\n\t\t\tconst postDisplayPageTotal = Math.floor((this.totalPages - preDisplayPageTotal + 5) / 5);\r\n\t\t\tif (postDisplayPageTotal > 0) {\r\n\t\t\t\tfor (let i = preDisplayPageTotal + 1; i < postDisplayPageTotal; i++)\r\n\t\t\t\t\tthis.postDisplayPageNumbers.push(i * 5);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.preDisplayPageNumbers.length > 1) {\r\n\t\t\t\tthis.preDisplayEllipses = true;\r\n\t\t\t\tthis.preDisplayPageNumbers = this.preDisplayPageNumbers.slice(this.preDisplayPageNumbers.length - 1, this.preDisplayPageNumbers.length);\r\n\t\t\t}\r\n\t\t\tif (this.postDisplayPageNumbers.length > 1) {\r\n\t\t\t\tthis.postDisplayEllipses = true;\r\n\t\t\t\tthis.postDisplayPageNumbers = this.postDisplayPageNumbers.slice(0, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//// If we can show ALL the pages without the ..., then do it\r\n\t\t//if (this.totalPages <= (this.adjacent * 2)) {\r\n\t\t//\tthis.allDisplayPageNumbers = [];\r\n\r\n\t\t//\tthis.showEllipses = false;\r\n\r\n\t\t//\tfor (let i = 1; i <= this.totalPages; i++) {\r\n\t\t//\t\tthis.allDisplayPageNumbers.push(i);\r\n\t\t//\t}\r\n\t\t//}\r\n\t\t//else {\r\n\t\t//\tthis.showEllipses = true;\r\n\r\n\t\t//\tif (this.allDisplayPageNumbers.indexOf(this.pageNumber) < 0) {\r\n\t\t//\t\tthis.allDisplayPageNumbers = [];\r\n\r\n\t\t//\t\tfor (let i = this.pageNumber; i < this.pageNumber + this.adjacent; i++)\r\n\t\t//\t\t\tthis.allDisplayPageNumbers.push(i);\r\n\r\n\t\t//\t\tthis.allDisplayPageNumbers.push(-1)\r\n\r\n\t\t//\t\tfor (let i = this.totalPages - this.adjacent; i < this.totalPages; i++)\r\n\t\t//\t\t\tthis.allDisplayPageNumbers.push(i);\r\n\t\t//\t}\r\n\t\t//}\r\n\t}\r\n\r\n}","<div class=\"slick-paging\">\r\n\t<div class=\"ms-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses px-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\"> </div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'slickGridSanitizeHtml'\r\n})\r\nexport class SlickGridSanitizeHtmlPipe implements PipeTransform {\r\n\r\n\tconstructor(private _sanitizer: DomSanitizer) {\r\n\t}\r\n\r\n\ttransform(v: string): SafeHtml {\r\n\t\treturn this._sanitizer.bypassSecurityTrustHtml(v);\r\n\t}\r\n}","import { Component, Input, Output, EventEmitter, ViewChild, HostListener, ElementRef, OnInit, AfterViewInit, OnChanges, SimpleChanges, OnDestroy, ContentChildren, QueryList, HostBinding, ChangeDetectorRef } from \"@angular/core\";\r\nimport { SlickGridService } from \"./slick-grid.service\";\r\nimport { ISlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { ISlickGridOptions } from \"./slick-grid.options\";\r\nimport { SlickGridRequestModel, ISlickGridRequestSearchModel } from \"./slick-grid-request.model\";\r\nimport { SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { SlickDialogComponent } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\nimport { SlickGridColumnTemplateDirective } from \"./slick-grid-column-template.directive\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\nimport { ISlickGridFavoriteModel, SlickGridFavoriteModel } from './slick-grid-favorite.model';\r\n\r\nclass DropDownModel {\r\n\tconstructor(text: string) {\r\n\t\tthis.id = text;\r\n\t\tthis.text = text;\r\n\t}\r\n\r\n\tid: string;\r\n\ttext: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-grid',\r\n\ttemplateUrl: 'slick-grid.component.html',\r\n\tproviders: [SlickGridService]\r\n})\r\nexport class SlickGridComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n\t@HostBinding('class') flexColumn = 'slick-flex-column';\r\n\t//@HostBinding('class') class = 'd-flex flex-column flex-fill';\r\n\r\n\t@Input() gridOptions: ISlickGridOptions;\r\n\t@Input() bordered: boolean = true;\r\n\t@Input() striped: boolean = true;\r\n\t@Input() hover: boolean = true;\r\n\t@Input() showingAllRecords = false;\r\n\t@Input() data: any[];\r\n\t@Output() onRowSelected: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onRowDoubleClick: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onRowContextMenu: EventEmitter<any> = new EventEmitter<any>();\r\n\t@Output() onFavoritesModified: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\t@ViewChild(\"slickGrid\", { static: true }) slickGridRef: ElementRef;\r\n\t@ViewChild(\"tableContainer\") tableContainerRef: ElementRef;\r\n\t@ViewChild(\"tableRef\") tableRef: ElementRef;\r\n\t@ViewChild(\"tableHeaderRow\") tableHeaderRowRef: ElementRef;\r\n\t@ViewChild(\"tableHeaderSearchRow\") tableHeaderSearchRowRef: ElementRef;\r\n\t// This is to test how high a standard row is\r\n\t@ViewChild(\"testRow\") testRowRef: ElementRef;\r\n\t@ViewChild(\"tableBodyRows\") tableBodyRowsRef: ElementRef;\r\n\t@ViewChild(\"columnSelectDialogRef\") columnSelectDialogRef: SlickDialogComponent;\r\n\t@ViewChild(\"addNewFavoriteDialogRef\") addNewFavoriteDialogRef: SlickConfirmDialogComponent;\r\n\r\n\t@ContentChildren(SlickGridColumnTemplateDirective) slickGridColumnTemplates: QueryList<SlickGridColumnTemplateDirective>;\r\n\ttemplateRefs: any;\r\n\r\n\tprivate fnOnMouseUp = (e) => this.onMouseUp(e);\r\n\r\n\tuuid: string;\r\n\tselectedIndex: number = null;\r\n\tgridOpacity = 0;\r\n\tvisibleColumns: ISlickGridColumnModel[];\r\n\tfavorites: DropDownModel[];\r\n\tselectedFavorite: string;\r\n\tnewFavoriteText: string;\r\n\tcolumnSelectDialogColumns: ISlickGridColumnModel[];\r\n\tloaded: boolean = false;\r\n\tisDoubleClick: boolean = false;\r\n\tdoubleClickWaitTimeout: NodeJS.Timer;\r\n\tcurrentPage: number = 1;\r\n\tsearchTimeout: NodeJS.Timer;\r\n\tkeypressTimeout: NodeJS.Timer;\r\n\tshowTestRow = false;\r\n\tshowSearchRow = false;\r\n\tisResizing: boolean = false;\r\n\tvisibleData: any[] = [];\r\n\trecordsPerPage: number;\r\n\ttotalRecords: number;\r\n\trecordsPerPageValue: string = \"Auto\";\r\n\r\n\tprivate slickGridHeight: number;\r\n\tprivate resizeTimeout: NodeJS.Timer = null;\r\n\tprivate requestModel: SlickGridRequestModel;\r\n\tprivate resizeInitialPos: number;\r\n\tprivate resizeInitialWidth: number;\r\n\tprivate resizeColIdx: number;\r\n\r\n\t@HostListener('window:resize', ['$event', '$event.target'])\r\n\tasync onResize(event: UIEvent, targetElement: HTMLElement) {\r\n\t\t// This is here because firefox shows/hides the menu if you press alt. Don't redraw the grid if we're\r\n\t\t// just showing the menu\r\n\t\tif (Math.abs(this.slickGridHeight - this.slickGridRef.nativeElement.offsetHeight) < 50)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.slickGridHeight !== this.slickGridRef.nativeElement.offsetHeight) {\r\n\t\t\tclearTimeout(this.resizeTimeout);\r\n\t\t\tthis.resizeTimeout = setTimeout(async () => {\r\n\t\t\t\tthis.currentPage = 1;\r\n\t\t\t\tthis.requestModel.page = 1;\r\n\t\t\t\tawait this.resizeGrid();\r\n\t\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\t\t\tthis.reload(this.requestModel);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(private gridService: SlickGridService,\r\n\t\tprivate functionLockService: SlickFunctionLockService,\r\n\t\tprivate changeDetector: ChangeDetectorRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t\tthis.requestModel = new SlickGridRequestModel();\r\n\t}\r\n\r\n\tasync ngOnInit() {\r\n\t\tthis.setGridOptions(this.gridOptions);\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Copy the templates to a variable that the html can access. It can't access a QueryList\r\n\t\tthis.templateRefs = {};\r\n\t\tthis.slickGridColumnTemplates.forEach(t => {\r\n\t\t\tthis.templateRefs[t.columnKey] = t.template;\r\n\t\t});\r\n\t\tif (this.tableRef)\r\n\t\t\t(<HTMLTableElement>this.tableRef.nativeElement).focus();\r\n\t}\r\n\r\n\tasync tableKeydown(e: KeyboardEvent) {\r\n\t\t// Key up\r\n\t\tif (e.which === 38 && !(this.selectedIndex === 0 && this.currentPage === 1)) {\r\n\t\t\tclearTimeout(this.keypressTimeout);\r\n\r\n\t\t\tthis.selectedIndex--;\r\n\t\t\tif (this.selectedIndex < 0) {\r\n\t\t\t\tif (this.currentPage > 1) {\r\n\t\t\t\t\tthis.currentPage--;\r\n\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\tawait this.onPageChange(this.currentPage, false);\r\n\t\t\t\t\tthis.selectedIndex = this.recordsPerPage - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.keypressTimeout = setTimeout(() => {\r\n\t\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\t// Key down\r\n\t\tif (e.which === 40) {\r\n\t\t\tif (((this.currentPage - 1) * this.recordsPerPage) + this.selectedIndex >= this.totalRecords)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tclearTimeout(this.keypressTimeout);\r\n\t\t\tthis.selectedIndex++;\r\n\t\t\tif (this.selectedIndex >= this.recordsPerPage) {\r\n\t\t\t\tif (((this.currentPage - 1) * this.recordsPerPage) + this.selectedIndex < this.totalRecords) {\r\n\t\t\t\t\tthis.currentPage++;\r\n\t\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\t\tawait this.onPageChange(this.currentPage, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.keypressTimeout = setTimeout(() => {\r\n\t\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.bordered) {\r\n\t\t\tif (this.gridOptions.bordered === null)\r\n\t\t\t\tthis.bordered = (this.bordered.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.striped) {\r\n\t\t\t// The grid options override the tag options\r\n\t\t\tif (this.gridOptions.striped === null)\r\n\t\t\t\tthis.striped = (this.striped.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.hover) {\r\n\t\t\t// The grid options override the tag options\r\n\t\t\tif (this.gridOptions.hover === null)\r\n\t\t\t\tthis.hover = (this.hover.toString().toLowerCase() !== 'false') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.gridOptions) {\r\n\t\t\tif (this.gridOptions.bordered !== null)\r\n\t\t\t\tthis.bordered = this.gridOptions.bordered;\r\n\r\n\t\t\tif (this.gridOptions.striped !== null)\r\n\t\t\t\tthis.striped = this.gridOptions.striped;\r\n\r\n\t\t\tif (this.gridOptions.hover !== null)\r\n\t\t\t\tthis.hover = this.gridOptions.hover;\r\n\r\n\t\t\tthis.setGridOptions(this.gridOptions);\r\n\t\t}\r\n\r\n\t\tif (changes.data) {\r\n\t\t\t// If we don't do this lock, the first change will have null data and crash. The second request will have the actual data\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_DATA_CHANGES\");\r\n\t\t\t// Only resize the grid on the first change, otherwise we get a flicker\r\n\t\t\tif (changes.data.firstChange === true)\r\n\t\t\t\tawait this.resizeGrid();\r\n\t\t\t// We need to wait for the resize in the OnInit to finish before we continue\r\n\t\t\tthis.loaded = true;\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\t\tawait this.reload(this.requestModel);\r\n\t\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\t\tthis.selectRow(0);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_DATA_CHANGES\");\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tasync onRecordsPerPageSelected(recordsPerPage: string) {\r\n\t\tif (!recordsPerPage)\r\n\t\t\treturn;\r\n\r\n\t\tthis.recordsPerPageValue = recordsPerPage;\r\n\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\", recordsPerPage);\r\n\r\n\t\tthis.visibleData = [];\r\n\t\tthis.gridOpacity = 0;\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tawait this.resizeGrid(true);\r\n\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tawait this.onPageChange(this.currentPage, true);\r\n\t}\r\n\r\n\tonColResizeMousedown(e: MouseEvent, columnIdx: number) {\r\n\t\tthis.isResizing = true;\r\n\t\tthis.resizeInitialPos = e.pageX;\r\n\t\tthis.resizeColIdx = columnIdx;\r\n\t\tlet col = (<HTMLTableRowElement>this.tableHeaderRowRef.nativeElement).querySelectorAll(\"td\").item(columnIdx);\r\n\t\tthis.resizeInitialWidth = col.offsetWidth - 9;\r\n\r\n\t\tthis.visibleColumns[columnIdx].flexible = false;\r\n\r\n\t\tdocument.addEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tonColResizeDoubleclick(e: MouseEvent, columnIdx: number) {\r\n\t\tthis.visibleColumns[columnIdx].flexible = true;\r\n\t\tthis.visibleColumns[columnIdx].width = null;\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tonColResizeMousemove(e: MouseEvent) {\r\n\t\tif (!this.isResizing)\r\n\t\t\treturn;\r\n\r\n\t\tlet newCursorPos = e.pageX;\r\n\t\tlet diff = newCursorPos - this.resizeInitialPos;\r\n\t\tthis.visibleColumns[this.resizeColIdx].width = (this.resizeInitialWidth + diff) + \"px\";\r\n\t\tif ((this.resizeInitialWidth + diff) < 10)\r\n\t\t\tthis.visibleColumns[this.resizeColIdx].width = \"10px\";\r\n\t\tthis.visibleColumns[this.resizeColIdx].flexible = false;\r\n\t}\r\n\r\n\tprivate onMouseUp(e) {\r\n\t\tthis.isResizing = false;\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tgetVisibleRecords() {\r\n\t\treturn this.visibleData;\r\n\t}\r\n\r\n\taddNewRecord(newRecord: any, selectNewRecord: boolean = false) {\r\n\t\tthis.visibleData.unshift(newRecord);\r\n\r\n\t\tif (selectNewRecord === true) {\r\n\t\t\tthis.selectedIndex = 0;\r\n\t\t\tthis.selectRow(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.selectedIndex)\r\n\t\t\t\tthis.selectedIndex++;\r\n\t\t}\r\n\t}\r\n\r\n\tupdateRecord(rowNum: number, record: any) {\r\n\t\tthis.visibleData[rowNum] = record;\r\n\t}\r\n\r\n\tonRowClicked(rowData: any, idx: number) {\r\n\t\tthis.selectedIndex = idx;\r\n\t\tclearTimeout(this.doubleClickWaitTimeout);\r\n\t\tthis.doubleClickWaitTimeout = setTimeout(() => {\r\n\t\t\tthis.onRowSelected.emit(rowData);\r\n\t\t}, 250);\r\n\t}\r\n\r\n\tonRowDoubleClicked(rowData: any, idx) {\r\n\t\tthis.selectedIndex = idx;\r\n\t\tclearTimeout(this.doubleClickWaitTimeout);\r\n\t\tthis.onRowDoubleClick.emit(rowData);\r\n\t}\r\n\r\n\tonRowContextMenuClicked(e: MouseEvent, rowData, idx) {\r\n\t\tif (this.onRowContextMenu) {\r\n\t\t\tlet rowContextMenuModel = {\r\n\t\t\t\tmouseEvent: e,\r\n\t\t\t\tdata: rowData,\r\n\t\t\t\trowIdx: idx\r\n\t\t\t}\r\n\r\n\t\t\tthis.onRowContextMenu.emit(rowContextMenuModel);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onPageChange(pageNumber, selectRow: boolean = true) {\r\n\t\tthis.currentPage = pageNumber;\r\n\t\tthis.requestModel.page = pageNumber;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tthis.selectedIndex = (this.gridOptions.autoSelectFirstRow === true) ? 0 : null;\r\n\r\n\t\tif (selectRow === true && this.gridOptions.autoSelectFirstRow === true) {\r\n\t\t\tconst rowData = this.visibleData[this.selectedIndex];\r\n\t\t\tthis.onRowClicked(rowData, this.selectedIndex);\r\n\t\t}\r\n\r\n\t\t(<HTMLTableElement>this.tableRef.nativeElement).focus();\r\n\t}\r\n\r\n\tasync reloadGrid(additionalParams: any): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.resizeGrid();\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOADGRID\");\r\n\t\t\tthis.requestModel.url = this.gridOptions.getUrl;\r\n\t\t\tthis.requestModel.httpHeaders = this.gridOptions.httpHeaders;\r\n\t\t\tthis.requestModel.additionalParams = additionalParams;\r\n\t\t\tthis.requestModel.page = this.currentPage;\r\n\t\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\r\n\t\t\tlet responseModel: SlickGridResponseModel = await this.reload(this.requestModel);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOADGRID\");\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync reloadGridWithRequestModel(requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.resizeGrid();\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOADGRIDWITHREQUESTMODEL\");\r\n\t\t\tthis.requestModel = requestModel;\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tlet responseModel: SlickGridResponseModel = await this.reload(this.requestModel);\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOADGRIDWITHREQUESTMODEL\");\r\n\t\t\treturn Promise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async reload(requestModel: SlickGridRequestModel): Promise<SlickGridResponseModel> {\r\n\t\ttry {\r\n\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RELOAD\");\r\n\r\n\t\t\trequestModel = this.getRequestModel(this.requestModel);\r\n\r\n\t\t\tlet responseModel: SlickGridResponseModel = null;\r\n\t\t\tif (requestModel.url)\r\n\t\t\t\tresponseModel = await this.gridService.getDataFromServer(requestModel);\r\n\t\t\telse\r\n\t\t\t\tresponseModel = await this.gridService.getDataFromDataObj(requestModel, this.data);\r\n\r\n\t\t\tthis.loaded = true;\r\n\t\t\tthis.totalRecords = responseModel.totalRecords;\r\n\t\t\tthis.visibleData = responseModel.data;\r\n\r\n\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RELOAD\");\r\n\t\t\tPromise.resolve(responseModel);\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t\treturn Promise.reject(error);\r\n\t\t}\r\n\t}\r\n\r\n\tunselectRow() {\r\n\t\tthis.selectedIndex = null;\r\n\t}\r\n\r\n\tselectRow(rowNumber: number) {\r\n\t\tlet rowData = this.visibleData[rowNumber];\r\n\t\tthis.onRowClicked(rowData, rowNumber);\r\n\t}\r\n\r\n\tgetColumnHTML(rowData, dataFieldName) {\r\n\t\tconst columnHTML = SlickUtilsService.getDeepObject(rowData, dataFieldName);\r\n\r\n\t\tif (columnHTML === null || columnHTML === undefined)\r\n\t\t\treturn '';\r\n\r\n\t\treturn columnHTML.toString();\r\n\t}\r\n\r\n\tasync sortBy(sortColumn: ISlickGridColumnModel) {\r\n\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\tif (sortColumn && c.columnKey !== sortColumn.columnKey) {\r\n\r\n\t\t\t\tc.sortDirection = SlickGridColumnSortDirection.none;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (sortColumn) {\r\n\t\t\tif (sortColumn.sortDirection === SlickGridColumnSortDirection.none) {\r\n\t\t\t\tthis.visibleColumns.forEach(c => c.sortDirection = SlickGridColumnSortDirection.none);\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.asc;\r\n\t\t\t}\r\n\t\t\telse if (sortColumn.sortDirection === SlickGridColumnSortDirection.asc)\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.desc;\r\n\t\t\telse {\r\n\t\t\t\tsortColumn.sortDirection = SlickGridColumnSortDirection.none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\tasync onSearchSelect(ddValue, column: ISlickGridColumnModel) {\r\n\t\tif (!this.requestModel.columnSearchValues)\r\n\t\t\tthis.requestModel.columnSearchValues = [];\r\n\r\n\t\tlet columnSearchValueIdx = this.requestModel.columnSearchValues.findIndex(x => x.columnName === column.dataFieldName);\r\n\t\tif (columnSearchValueIdx >= 0)\r\n\t\t\tthis.requestModel.columnSearchValues.splice(columnSearchValueIdx, 1);\r\n\r\n\t\tcolumn.isFiltering = false;\r\n\r\n\t\tif (ddValue) {\r\n\t\t\tthis.requestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\tcolumnName: column.dataFieldName,\r\n\t\t\t\tsearchValueId: ddValue.id,\r\n\t\t\t\tsearchValueText: ddValue.text\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.isFiltering = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcolumn.isLocked = false;\r\n\t\t}\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\tasync onSearch(column: ISlickGridColumnModel) {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tif (!this.requestModel.columnSearchValues)\r\n\t\t\tthis.requestModel.columnSearchValues = [];\r\n\r\n\t\tif (column.filterText === column.lastSearchText)\r\n\t\t\treturn;\r\n\r\n\t\tcolumn.lastSearchText = column.filterText;\r\n\t\tcolumn.isFiltering = !!column.filterText;\r\n\t\tif (!column.isFiltering)\r\n\t\t\tcolumn.isLocked = false;\r\n\r\n\t\tclearTimeout(this.searchTimeout);\r\n\t\tthis.searchTimeout = setTimeout(async () => {\r\n\t\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\t\tlet columnSearchValueIdx = this.requestModel.columnSearchValues.findIndex(x => x.columnName === column.dataFieldName);\r\n\t\t\tif (columnSearchValueIdx >= 0)\r\n\t\t\t\tthis.requestModel.columnSearchValues.splice(columnSearchValueIdx, 1);\r\n\r\n\t\t\tif (column.filterText) {\r\n\t\t\t\tthis.requestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\tcolumnName: column.dataFieldName,\r\n\t\t\t\t\tsearchValueText: column.filterText\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.currentPage = 1;\r\n\t\t\tthis.requestModel.page = 1;\r\n\t\t\tawait this.reload(this.requestModel);\r\n\t\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\t\tthis.selectRow(0);\r\n\t\t}, 250);\r\n\t}\r\n\r\n\ttoggleLock(column: ISlickGridColumnModel) {\r\n\t\tcolumn.isLocked = !column.isLocked;\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\t}\r\n\r\n\tasync resetFilter(column: ISlickGridColumnModel) {\r\n\t\tcolumn.isFiltering = false;\r\n\t\tcolumn.isLocked = false;\r\n\r\n\t\tcolumn.filterText = null;\r\n\t\tcolumn.lastSearchText = null;\r\n\t\tcolumn.filterDropdownValue = null;\r\n\t\tthis.requestModel.columnSearchValues = this.requestModel.columnSearchValues.filter(x => x.columnName !== column.dataFieldName);\r\n\r\n\t\tthis.saveColumnsToLocalStorage();\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tawait this.reload(this.requestModel);\r\n\t\tif (this.visibleData && this.visibleData.length > 0 && this.gridOptions.autoSelectFirstRow === true)\r\n\t\t\tthis.selectRow(0);\r\n\t}\r\n\r\n\topenColumnSelectDialog() {\r\n\t\tthis.columnSelectDialogColumns = [...this.gridOptions.columns];\r\n\t\tthis.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.columnSelectDialogRef.showDialog();\r\n\t}\r\n\r\n\tonColumnDrop(e: any) {\r\n\t\tconsole.info(e);\r\n\t}\r\n\r\n\tasync onColumnReorder(e: number[]) {\r\n\t\tconst oldOrder = e[0];\r\n\t\tconst newOrder = e[1];\r\n\r\n\t\tif (oldOrder === newOrder)\r\n\t\t\treturn;\r\n\r\n\t\tconst selectedCol = this.columnSelectDialogColumns.splice(oldOrder, 1)[0];\r\n\t\tselectedCol.displayOrder = newOrder;\r\n\r\n\t\tlet currentOrder = 0;\r\n\t\t// Everything up to the new order reordered from 0\r\n\t\tfor (let i = 0; i < this.columnSelectDialogColumns.length; i++) {\r\n\t\t\t// If we're at newOrder, leave a spot\r\n\t\t\tif (i === newOrder)\r\n\t\t\t\tcurrentOrder++;\r\n\t\t\tthis.columnSelectDialogColumns[i].displayOrder = currentOrder++;\r\n\t\t}\r\n\r\n\t\tthis.columnSelectDialogColumns = [...this.columnSelectDialogColumns, selectedCol];\r\n\t\tthis.columnSelectDialogColumns = this.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t}\r\n\r\n\tasync addNewFavorite() {\r\n\t\tthis.newFavoriteText = '';\r\n\r\n\t\tconst confirmResult = await this.addNewFavoriteDialogRef.confirm();\r\n\r\n\t\tif (confirmResult === SlickConfirmDialogResults.Ok && this.newFavoriteText) {\r\n\t\t\t// Save the previous selection to localstorage\r\n\t\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\t\tthis.favorites.push(new DropDownModel(this.newFavoriteText));\r\n\r\n\t\t\tthis.selectedFavorite = this.newFavoriteText;\r\n\t\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\", this.selectedFavorite);\r\n\r\n\t\t\tconst favoritesJson = JSON.stringify(this.favorites.map(x => x.text));\r\n\t\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_FAVORITES\", favoritesJson);\r\n\r\n\t\t\t// Save the new one to localstorage\r\n\t\t\tthis.saveDialogColumnsToLocalStorage();\r\n\t\t}\r\n\t}\r\n\r\n\tloadFavorite(favorite: DropDownModel) {\r\n\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\tthis.selectedFavorite = favorite.text;\r\n\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${this.selectedFavorite === 'Default' ? '' : '_' + this.selectedFavorite}`);\r\n\t\tif (gridColumnsJson) {\r\n\t\t\tthis.columnSelectDialogColumns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\t\t\tthis.columnSelectDialogColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\t}\r\n\t}\r\n\r\n\tasync setFavorite(favorite: string) {\r\n\t\tthis.selectedFavorite = favorite;\r\n\t\tlocalStorage.setItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\", this.selectedFavorite);\r\n\r\n\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${this.selectedFavorite === 'Default' ? '' : '_' + this.selectedFavorite}`);\r\n\t\tthis.gridOptions.columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\t\tthis.gridOptions.columns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\r\n\t\tthis.currentPage = 1;\r\n\t\tthis.requestModel.page = 1;\r\n\t\tthis.requestModel.recordsPerPage = this.recordsPerPage;\r\n\t\tawait this.reload(this.requestModel);\r\n\t}\r\n\r\n\tonSaveColumns() {\r\n\t\tthis.saveDialogColumnsToLocalStorage();\r\n\r\n\t\tthis.gridOptions.columns = [...this.columnSelectDialogColumns];\r\n\r\n\t\t// Make sure if they've hidden a column that we aren't trying to sort or filter by this column\r\n\t\tthis.gridOptions.columns.forEach(x => {\r\n\t\t\tif (x.visible === false) {\r\n\t\t\t\tx.filterDropdownValue = null;\r\n\t\t\t\tx.filterText = null;\r\n\t\t\t\tx.isFiltering = false;\r\n\t\t\t\tx.isLocked = false;\r\n\t\t\t\tx.lastSearchText = null;\r\n\t\t\t\tx.sortDirection = null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\r\n\t\tthis.columnSelectDialogRef.hideDialog();\r\n\t\tthis.resizeGrid();\r\n\r\n\t\tif (this.onFavoritesModified) {\r\n\t\t\tconst gridFavorites: ISlickGridFavoriteModel[] = this.favorites.map(favorite => {\r\n\t\t\t\tconst gridFavorite = new SlickGridFavoriteModel();\r\n\t\t\t\tgridFavorite.favoriteName = favorite.text;\r\n\t\t\t\tconst suffix = gridFavorite.favoriteName === 'Default' ? '' : ('_' + gridFavorite.favoriteName);\r\n\t\t\t\tconst dialogColumnsJSON = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\tgridFavorite.columns = JSON.parse(dialogColumnsJSON);\r\n\t\t\t\treturn gridFavorite;\r\n\t\t\t});\r\n\r\n\t\t\tthis.onFavoritesModified.emit(gridFavorites);\r\n\t\t}\r\n\t}\r\n\r\n\tonCancelColumns() {\r\n\t\tthis.columnSelectDialogRef.hideDialog();\r\n\t}\r\n\r\n\tsaveDialogColumnsToLocalStorage() {\r\n\t\tlet dialogColumnsJSON = JSON.stringify(this.columnSelectDialogColumns);\r\n\t\tif (this.gridOptions.gridKey) {\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, dialogColumnsJSON);\r\n\t\t}\r\n\t}\r\n\r\n\tsaveColumnsToLocalStorage() {\r\n\t\tlet gridColumnsJSON = JSON.stringify(this.gridOptions.columns);\r\n\t\tif (this.gridOptions.gridKey) {\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\r\n\t\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\r\n\t\t\tif (gridColumnsJson) {\r\n\t\t\t\tlet columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\r\n\t\t\t\tlet displayOrder = 0;\r\n\t\t\t\tcolumns.forEach(c => {\r\n\t\t\t\t\tlet column = this.gridOptions.columns.find(gridColumn => gridColumn.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\tif (column) {\r\n\t\t\t\t\t\tc.displayOrder = displayOrder;\r\n\t\t\t\t\t\tc.titleOrientation = column.titleOrientation;\r\n\t\t\t\t\t\tc.titleHeight = column.titleHeight;\r\n\t\t\t\t\t\tc.width = column.width;\r\n\t\t\t\t\t\tc.filterDropdownValue = column.filterDropdownValue;\r\n\t\t\t\t\t\tc.filterText = column.filterText;\r\n\t\t\t\t\t\tc.isLocked = column.isLocked;\r\n\t\t\t\t\t\tc.isFiltering = column.isFiltering;\r\n\t\t\t\t\t\tc.sortDirection = column.sortDirection;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdisplayOrder++;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tcolumns = columns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\t\t\t\tgridColumnsJSON = JSON.stringify(columns);\r\n\t\t\t}\r\n\r\n\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, gridColumnsJSON);\r\n\t\t}\r\n\r\n\t\tif (this.onFavoritesModified) {\r\n\t\t\tconst gridFavorites: ISlickGridFavoriteModel[] = this.favorites.map(favorite => {\r\n\t\t\t\tconst gridFavorite = new SlickGridFavoriteModel();\r\n\t\t\t\tgridFavorite.favoriteName = favorite.text;\r\n\t\t\t\tconst suffix = gridFavorite.favoriteName === 'Default' ? '' : ('_' + gridFavorite.favoriteName);\r\n\t\t\t\tconst dialogColumnsJSON = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\t\tgridFavorite.columns = JSON.parse(dialogColumnsJSON);\r\n\t\t\t\treturn gridFavorite;\r\n\t\t\t});\r\n\r\n\t\t\tthis.onFavoritesModified.emit(gridFavorites);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate async resizeGrid(forceRefresh: boolean = false): Promise<void> {\r\n\t\treturn new Promise<void>(async (resolve) => {\r\n\t\t\tif (!forceRefresh && this.slickGridRef.nativeElement.offsetHeight === this.slickGridHeight) {\r\n\t\t\t\tresolve();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.recordsPerPageValue === 'Auto') {\r\n\t\t\t\tawait this.functionLockService.lock(\"GRID_\" + this.uuid + \"_RESIZEGRID\");\r\n\r\n\t\t\t\tthis.slickGridHeight = this.tableContainerRef.nativeElement.offsetHeight;\r\n\r\n\t\t\t\tconst testRow = (<HTMLTableElement>this.tableRef.nativeElement).insertRow(0);\r\n\t\t\t\tconst testCell = testRow.insertCell(0);\r\n\t\t\t\ttestCell.style.visibility = \"hidden\";\r\n\t\t\t\ttestCell.innerHTML = \"&NBSP\";\r\n\t\t\t\tconst rowHeight = testCell.offsetHeight;\r\n\t\t\t\t(<HTMLTableElement>this.tableRef.nativeElement).deleteRow(0);\r\n\r\n\t\t\t\tlet headerHeight = this.tableHeaderRowRef.nativeElement.offsetHeight + 2;\r\n\t\t\t\tif (this.tableHeaderSearchRowRef)\r\n\t\t\t\t\theaderHeight += this.tableHeaderSearchRowRef.nativeElement.offsetHeight + 2;\r\n\t\t\t\tconst clientHeight = this.tableContainerRef.nativeElement.offsetHeight - headerHeight;\r\n\t\t\t\tthis.recordsPerPage = parseInt(((clientHeight / rowHeight) - 1).toFixed(0));\r\n\t\t\t\tlet actualRowHeight = parseInt((clientHeight / this.recordsPerPage).toFixed(0)) - 1;\r\n\t\t\t\tif (actualRowHeight < rowHeight)\r\n\t\t\t\t\tactualRowHeight = rowHeight;\r\n\r\n\t\t\t\tconst allRows = <HTMLElement[]>this.slickGridRef.nativeElement.querySelectorAll(\".table tbody tr\");\r\n\t\t\t\tallRows.forEach(row => {\r\n\t\t\t\t\trow.style.height = (actualRowHeight) + \"px\";\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.functionLockService.release(\"GRID_\" + this.uuid + \"_RESIZEGRID\");\r\n\r\n\t\t\t\tthis.gridOpacity = 1;\r\n\t\t\t\tthis.showTestRow = false;\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\t\tthis.recordsPerPage = parseInt(this.recordsPerPageValue);\r\n\t\t\t\tthis.gridOpacity = 1;\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddColumn(column: ISlickGridColumnModel, idx: number = null) {\r\n\r\n\t\tif (idx === null)\r\n\t\t\tthis.gridOptions.columns.push(column);\r\n\t\telse\r\n\t\t\tthis.gridOptions.columns.splice(idx, 0, column);\r\n\r\n\t\tthis.setGridOptions(this.gridOptions);\r\n\t}\r\n\r\n\tgetRequestModel(requestModel: SlickGridRequestModel = null): SlickGridRequestModel {\r\n\t\tif (!requestModel)\r\n\t\t\trequestModel = this.requestModel;\r\n\r\n\t\trequestModel.columnSearchValues = [];\r\n\r\n\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\tif (c.visible) {\r\n\t\t\t\tif (c.filterType === SlickGridColumnFilterTypes.text && c.filterText) {\r\n\t\t\t\t\tc.filterText = c.filterText;\r\n\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\tsearchValueId: null,\r\n\t\t\t\t\t\tsearchValueText: c.filterText\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse if (c.filterType === SlickGridColumnFilterTypes.dropdown && c.filterDropdownValue) {\r\n\t\t\t\t\tc.filterDropdownValue = c.filterDropdownValue;\r\n\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\tsearchValueId: c.filterDropdownValue,\r\n\t\t\t\t\t\tsearchValueText: null\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trequestModel.sortColumn = null;\r\n\t\tconst sortColumn = this.gridOptions.columns.find(x => x.sortDirection === SlickGridColumnSortDirection.asc || x.sortDirection === SlickGridColumnSortDirection.desc);\r\n\t\tif (sortColumn) {\r\n\t\t\trequestModel.sortColumn = (sortColumn.sortDirection === 0) ? null : sortColumn.dataFieldName;\r\n\t\t\trequestModel.sortDirection = sortColumn.sortDirection;\r\n\t\t}\r\n\r\n\t\tif (requestModel.recordsPerPage <= 0)\r\n\t\t\trequestModel.recordsPerPage = 20;\r\n\r\n\t\treturn this.requestModel;\r\n\t}\r\n\r\n\tsetGridOptions(gridOptions: ISlickGridOptions) {\r\n\t\tthis.gridOptions = gridOptions;\r\n\r\n\t\tif (this.gridOptions.gridKey) {\r\n\r\n\t\t\tif (this.gridOptions.favorites) {\r\n\t\t\t\tconst favoriteNames = this.gridOptions.favorites.map(f => f.favoriteName);\r\n\t\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_FAVORITES`, JSON.stringify(favoriteNames));\r\n\r\n\t\t\t\tthis.gridOptions.favorites.forEach(favorite => {\r\n\t\t\t\t\t// Make sure we haven't added a new column that needs to be saved\r\n\t\t\t\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\t\t\t\tconst columnExists = favorite.columns.findIndex(x => x.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\t\tif (columnExists < 0)\r\n\t\t\t\t\t\t\tfavorite.columns.push(c);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlet gridColumnsJSON = JSON.stringify(favorite.columns);\r\n\t\t\t\t\tif (this.gridOptions.gridKey) {\r\n\t\t\t\t\t\tconst suffix = favorite.favoriteName === 'Default' ? '' : ('_' + favorite.favoriteName);\r\n\t\t\t\t\t\tlocalStorage.setItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`, gridColumnsJSON);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (favoriteNames.indexOf(this.selectedFavorite) < 0)\r\n\t\t\t\t\tthis.selectedFavorite = \"Default\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedFavorite = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_SELECTED_FAVORITE\") || 'Default';\r\n\r\n\t\t\t// Check to make sure we don't have any duplicate column names\r\n\t\t\tthis.gridOptions.columns.forEach(c1 => {\r\n\t\t\t\tconst dataFieldCount = (this.gridOptions.columns.filter(x => x.dataFieldName === c1.dataFieldName) || []).length;\r\n\t\t\t\tif (dataFieldCount > 1)\r\n\t\t\t\t\tconsole.error(`Grid ${this.gridOptions.gridKey} column ${c1.dataFieldName} is defined ${dataFieldCount} times`);\r\n\t\t\t});\r\n\r\n\t\t\tconst suffix = this.selectedFavorite === 'Default' ? '' : ('_' + this.selectedFavorite);\r\n\t\t\tlet gridColumnsJson = localStorage.getItem(`GRID_${this.gridOptions.gridKey}_COLUMNS${suffix}`);\r\n\t\t\tif (gridColumnsJson) {\r\n\t\t\t\tlet columns = <ISlickGridColumnModel[]>JSON.parse(gridColumnsJson);\r\n\r\n\t\t\t\tlet displayOrder = 0;\r\n\t\t\t\tcolumns.forEach(c => {\r\n\t\t\t\t\tlet column = this.gridOptions.columns.find(gridColumn => gridColumn.dataFieldName === c.dataFieldName);\r\n\t\t\t\t\tif (column) {\r\n\t\t\t\t\t\tcolumn.visible = c.visible;\r\n\t\t\t\t\t\tcolumn.displayOrder = displayOrder;\r\n\t\t\t\t\t\tcolumn.titleOrientation = c.titleOrientation;\r\n\t\t\t\t\t\tcolumn.titleHeight = c.titleHeight;\r\n\t\t\t\t\t\tcolumn.width = c.width;\r\n\t\t\t\t\t\tcolumn.flexible = c.flexible;\r\n\t\t\t\t\t\tcolumn.sortDirection = c.sortDirection;\r\n\t\t\t\t\t\tcolumn.isLocked = c.isLocked;\r\n\t\t\t\t\t\t//column.filterType = c.filterType;\r\n\t\t\t\t\t\tif (column.isLocked && column.filterType !== SlickGridColumnFilterTypes.none) {\r\n\t\t\t\t\t\t\tcolumn.isFiltering = true;\r\n\r\n\t\t\t\t\t\t\tif (column.filterType === SlickGridColumnFilterTypes.text)\r\n\t\t\t\t\t\t\t\tcolumn.filterText = c.filterText;\r\n\t\t\t\t\t\t\telse if (column.filterType === SlickGridColumnFilterTypes.dropdown)\r\n\t\t\t\t\t\t\t\tcolumn.filterDropdownValue = c.filterDropdownValue;\r\n\r\n\t\t\t\t\t\t\tif (!column.filterText && !column.filterDropdownValue) {\r\n\t\t\t\t\t\t\t\tcolumn.isFiltering = false;\r\n\t\t\t\t\t\t\t\tcolumn.isLocked = false;\r\n\t\t\t\t\t\t\t\tcolumn.filterText = null;\r\n\t\t\t\t\t\t\t\tcolumn.filterDropdownValue = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdisplayOrder++;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.gridOptions.defaultRecordsPerPage && !localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\"))\r\n\t\t\t\tthis.recordsPerPageValue = this.gridOptions.defaultRecordsPerPage.toString();\r\n\t\t\telse\r\n\t\t\t\tthis.recordsPerPageValue = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_RECORDS_PER_PAGE\") || \"Auto\";\r\n\r\n\t\t\tconst favoritesJson = localStorage.getItem(\"GRID_\" + this.gridOptions.gridKey + \"_FAVORITES\") || `[\"Default\"]`;\r\n\t\t\tthis.favorites = (<string[]>JSON.parse(favoritesJson)).map(favorite => {\r\n\t\t\t\treturn new DropDownModel(favorite);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.visibleColumns = this.gridOptions.columns.filter(c => c.visible === true);\r\n\t\tthis.visibleColumns = this.visibleColumns.sort((a, b) => (a.displayOrder > b.displayOrder) ? 1 : (a.displayOrder < b.displayOrder) ? -1 : 0);\r\n\r\n\t\tthis.showSearchRow = this.visibleColumns.filter(c => c.filterType !== SlickGridColumnFilterTypes.none).length > 0;\r\n\t\tlet sortColumn = this.visibleColumns.find(c => c.sortable === true && c.sortDirection > 0);\r\n\t\tif (this.visibleColumns.length > 0 && sortColumn) {\r\n\t\t\tthis.requestModel.sortColumn = sortColumn.dataFieldName;\r\n\t\t\tthis.requestModel.sortDirection = sortColumn.sortDirection;\r\n\t\t}\r\n\t}\r\n}","<div id=\"slick-grid_{{uuid}}\" class=\"slick-grid d-flex flex-column flex-fill\" style=\"position: absolute; left: 0; top: 0; right: 0; bottom: 0;\" #slickGrid>\r\n\t<div #tableContainer class=\"d-flex flex-fill\" style=\"overflow: auto\">\r\n\r\n\t\t<div>\r\n\t\t\t<table #tableRef class=\"table table-sm\" [class.table-bordered]=\"bordered\" [class.table-borderless]=\"!bordered\" [class.table-striped]=\"striped\" [class.table-hover]=\"hover\" [style.opacity]=\"gridOpacity\" style=\"margin: 0; padding: 0;\" (keydown)=\"tableKeydown($event)\" tabindex=\"0\">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr #tableHeaderRow (mousemove)=\"onColResizeMousemove($event)\" [ngClass]=\"{ 'resizing': isResizing === true }\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns; let idx = index\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\" [style.height]=\"column.titleHeight\">\r\n\t\t\t\t\t\t\t<div [ngClass]=\"{ 'slick-grid_title-vertical' : column.titleOrientation === 1 }\">\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"idx > 0 && idx < visibleColumns.length\" class=\"resize_column_left\" [class.table-bordered]=\"bordered\" (mousedown)=\"onColResizeMousedown($event, idx - 1)\" (dblclick)=\"onColResizeDoubleclick($event, idx - 1)\"></div>\r\n\t\t\t\t\t\t\t\t<span class=\"sortIcon\" *ngIf=\"column.sortable === true && column.sortDirection > 0\"><i class=\"far\" [ngClass]=\"{'fa-caret-up': column.sortDirection === 1, 'fa-caret-down': column.sortDirection === 2}\"></i> </span>\r\n\t\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" *ngIf=\"column.sortable === true\" (click)=\"sortBy(column)\" draggable=\"false\" title=\"{{column.title}}\">{{column.title}}</a>\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.sortable === false\" title=\"{{column.title}}\">{{column.title}}</div>\r\n\t\t\t\t\t\t\t\t<div class=\"resize_column_right\" (mousedown)=\"onColResizeMousedown($event, idx)\" (dblclick)=\"onColResizeDoubleclick($event, idx)\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr #tableHeaderSearchRow *ngIf=\"showSearchRow === true\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns\">\r\n\t\t\t\t\t\t\t<div class=\"slick-grid_search-column\">\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering\" class=\"fas fa-times-circle bg-white text-danger me-1\" (click)=\"resetFilter(column)\"></i>\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering && column.isLocked\" class=\"far fa-lock me-1\" (click)=\"toggleLock(column)\"></i>\r\n\t\t\t\t\t\t\t\t<i *ngIf=\"column.isFiltering && !column.isLocked\" class=\"far fa-lock-open me-1\" (click)=\"toggleLock(column)\"></i>\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.filterType === 1\" class=\"slick-grid_text-search\">\r\n\t\t\t\t\t\t\t\t\t<input autocomplete=\"nope\" type=\"text\" class=\"form-control\" [(ngModel)]=\"column.filterText\" name=\"searchText\" placeholder=\"Search...\" (keydown)=\"onSearch(column)\" />\r\n\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"column.filterType === 2\" class=\"input-group slick-grid_drop-down-search\">\r\n\t\t\t\t\t\t\t\t\t<slick-drop-down [items]=\"column.filterDropdownValues\" [(ngModel)]=\"column.filterDropdownValue\" cssClass=\"slick-grid_filter-drop-down\" listWidth=\"auto\" placeholder=\"Search...\" (onSelect)=\"onSearchSelect($event, column)\"></slick-drop-down>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngIf=\"loaded && visibleData.length === 0\"><td [colSpan]=\"visibleColumns.length\">No Data</td></tr>\r\n\t\t\t\t\t<tr *ngFor=\"let rowData of visibleData; let idx = index\" #tableBodyRows (click)=\"onRowClicked(rowData, idx)\" (dblclick)=\"onRowDoubleClicked(rowData, idx)\" (contextmenu)=\"onRowContextMenuClicked($event, rowData, idx)\" [class.table-success]=\"selectedIndex === idx\">\r\n\t\t\t\t\t\t<td *ngFor=\"let column of visibleColumns\">\r\n\t\t\t\t\t\t\t<div *ngIf=\"!column.columnKey\" class=\"slick-grid_column-content\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\" [innerHTML]=\"getColumnHTML(rowData, column.dataFieldName) | slickGridSanitizeHtml\"></div>\r\n\t\t\t\t\t\t\t<div *ngIf=\"column.columnKey\" class=\"slick-grid_column-content\" [style.width]=\"column.width\" [style.maxWidth]=\"column.width\">\r\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRefs[column.columnKey], context: { $implicit: rowData }\">\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\r\n\t<div class=\"slick-grid-footer mt-2 d-flex\">\r\n\t\t<div>\r\n\t\t <button type=\"button\" (click)=\"openColumnSelectDialog()\" class=\"btn btn-outline-primary\" style=\"border-radius: 100%; height: 2.2rem; width: 2.2rem; padding: 0;\"><i class=\"fal fa-columns\"></i></button>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"favorites?.length > 1\">\r\n\t\t <button #favoriteSelectRef type=\"button\" class=\"btn btn-outline-primary ms-1\"><i class=\"far fa-star\"></i> {{this.selectedFavorite}}</button>\r\n\t\t <slick-popover [element]=\"favoriteSelectRef\" position=\"top\" showArrow=\"false\" [topOffsetPx]=\"0\" [leftOffsetPx]=\"0\" [showByClick]=\"true\">\r\n\t\t\t<table class=\"table-borderless table-sm table-hover\" style=\"min-width: 250px; cursor: default\">\r\n\t\t\t <tbody>\r\n\t\t\t\t<tr *ngFor=\"let favorite of favorites\" (click)=\"setFavorite(favorite.text)\">\r\n\t\t\t\t <td><i *ngIf=\"favorite.text === selectedFavorite\" class=\"far fa-star me-1\"></i>{{favorite.text}}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t </tbody>\r\n\t\t\t</table>\r\n\t\t </slick-popover>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"showingAllRecords == false\">\r\n\t\t <slick-paging [(pageNumber)]=\"currentPage\" [totalRecords]=\"totalRecords\" [recordsPerPage]=\"recordsPerPage\" (onPageChange)=\"onPageChange($event)\"></slick-paging>\r\n\t\t</div>\r\n\t\t<div class=\"ms-auto\">\r\n\t\t <button #recordsPerPageRef type=\"button\" class=\"btn btn-outline-primary\">{{recordsPerPageValue}} <i style=\"font-size: 12px;\" class=\"far fa-chevron-down\"></i></button>\r\n\t\t <slick-popover [element]=\"recordsPerPageRef\" position=\"top\" showArrow=\"false\" [topOffsetPx]=\"0\" [leftOffsetPx]=\"0\" [showByClick]=\"true\">\r\n\t\t\t<table class=\"table-borderless table-sm table-hover\" style=\"min-width: 150px;\">\r\n\t\t\t <tbody>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('Auto')\"><td>Auto</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('25')\"><td>25</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('50')\"><td>50</td></tr>\r\n\t\t\t\t<tr (click)=\"onRecordsPerPageSelected('100')\"><td>100</td></tr>\r\n\t\t\t </tbody>\r\n\t\t\t</table>\r\n\t\t </slick-popover>\r\n\t\t</div>\r\n\t </div>\r\n\t \r\n</div>\r\n\r\n<slick-dialog #columnSelectDialogRef header=\"Select Columns\">\r\n\t<div style=\"text-align: center; width: 475px;\" class=\"mx-5\">\r\n\t\t<div class=\"d-flex\">\r\n\t\t\t<div class=\"flex-fill\">\r\n\t\t\t\t<slick-drop-down [items]=\"favorites\"\r\n\t\t\t\t\t\t\t\t [ngModel]=\"selectedFavorite\"\r\n\t\t\t\t\t\t\t\t (onSelect)=\"loadFavorite($event)\"></slick-drop-down>\r\n\t\t\t</div>\r\n\t\t\t<div><button class=\"btn btn-outline-primary ms-1\" (click)=\"addNewFavorite()\"><i class=\"far fa-plus\"></i></button></div>\r\n\t\t</div>\r\n\t\t<div class=\"d-flex flex-column mt-1\" slick-drop-list (onSlickDropListReorder)=\"onColumnReorder($event)\">\r\n\t\t\t<div *ngFor=\"let column of columnSelectDialogColumns\" class=\"d-flex\" slick-drop-list-item>\r\n\t\t\t\t<div style=\"width: 20px\"><input type=\"checkbox\" style=\"position: relative; top: 2px;\" [(ngModel)]=\"column.visible\" /></div>\r\n\t\t\t\t<div class=\"py-0 flex-fill\" style=\"text-align: left; cursor: ns-resize\" slick-drop-list-grab>{{column.title}}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<slick-dialog-footer>\r\n\t\t<div style=\"margin-top: 10px;\" class=\"col-12 text-center mb-2 mt-1\">\r\n\t\t\t<button type=\"button\" (click)=\"onSaveColumns()\" class=\"btn btn-outline-primary me-1\"><i class=\"far fa-save\"></i> Save</button> \r\n\t\t\t<button type=\"button\" class=\"btn btn-outline-danger\" (click)=\"onCancelColumns()\">Cancel</button>\r\n\t\t</div>\r\n\t</slick-dialog-footer>\r\n</slick-dialog>\r\n\r\n\r\n<slick-confirm-dialog #addNewFavoriteDialogRef width=\"300\">\r\n\t<label>Enter new favorite name</label>\r\n\t<input type=\"text\" class=\"form-control mx-3\" style=\"width: 250px\" [(ngModel)]=\"newFavoriteText\" />\r\n</slick-confirm-dialog>","import { Injectable } from \"@angular/core\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\nimport { ISlickGridColumnModel } from \"./slick-grid-column.model\";\r\nimport { SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { ISlickGridFavoriteModel } from './slick-grid-favorite.model';\r\n\r\nexport interface ISlickGridOptions {\r\n\tgridKey: string;\r\n\trowHeight: number[];\r\n\r\n\tgetUrl: string;\r\n\thttpHeaders: HttpHeaders;\r\n\trequestModel: SlickGridRequestModel;\r\n\tcolumns: ISlickGridColumnModel[];\r\n\tfavorites: ISlickGridFavoriteModel[];\r\n\tonRowSelectCallback: Function;\r\n\tbordered: boolean;\r\n\tstriped: boolean;\r\n\thover: boolean;\r\n\tautoSelectFirstRow: boolean;\r\n\tdefaultRecordsPerPage: number;\r\n}\r\n\r\nexport class SlickGridOptions implements ISlickGridOptions{\r\n\tpublic gridKey: string;\r\n\tpublic rowHeight: number[];\r\n\r\n\tpublic getUrl: string;\r\n\tpublic httpHeaders: HttpHeaders;\r\n\tpublic requestModel: SlickGridRequestModel;\r\n\tpublic columns: ISlickGridColumnModel[];\r\n\tpublic favorites: ISlickGridFavoriteModel[];\r\n\tpublic onRowSelectCallback: Function;\r\n\tpublic bordered: boolean = null;\r\n\tpublic striped: boolean = null;\r\n\tpublic hover: boolean = null;\r\n\tpublic autoSelectFirstRow: boolean = true;\r\n\tpublic defaultRecordsPerPage: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.columns = [];\r\n\t\tthis.httpHeaders = new HttpHeaders();\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPagingComponent } from \"./slick-paging.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickPagingComponent],\r\n\texports: [SlickPagingComponent]\r\n})\r\nexport class SlickPagingModule { }\r\n\r\nexport { SlickPagingComponent }","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-ordered-list',\r\n\ttemplateUrl: 'slick-ordered-list.component.html'\r\n})\r\nexport class SlickOrderedListComponent implements OnInit, OnDestroy, OnChanges {\r\n\t@Input() items: any[];\r\n\t@Output() itemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() title: string;\r\n\t@Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() sortOrderFieldName: string;\r\n\t@Input() displayFieldName: string;\r\n\t@Input() buttonAlignment: string = \"left\";\r\n\r\n\tuuid: string;\r\n\tinternalItems: any[] = [];\r\n\tanySelected: boolean = false;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\t\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\t\r\n\t}\r\n\r\n\tdocumentClick(e: MouseEvent) {\r\n\t\tif (e.target && SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-ordered-list_\" + this.uuid))\r\n\t\t\treturn;\r\n\r\n\t\t// If we're using this in the picklist, don't do anything\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-pick-list_buttons\")) \r\n\t\t\treturn;\r\n\r\n\t\tthis.internalItems.forEach(item => item.selected = false);\t\t\r\n\t\tthis.anySelected = false;\r\n\t\tif (this.selectedItemsChange)\r\n\t\t\tthis.selectedItemsChange.emit(null);\r\n\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (!this.items || !this.sortOrderFieldName || !this.displayFieldName)\r\n\t\t\treturn;\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.internalItems = [];\r\n\t\t\t\r\n\t\t\tthis.sortList();\r\n\r\n\t\t\tlet sortOrder = 0;\r\n\t\t\tthis.items.forEach(item => {\r\n\t\t\t\tif (!item.uuid)\r\n\t\t\t\t\titem.uuid = SlickUtilsService.newGuid();\r\n\r\n\t\t\t\tif (item)\r\n\t\t\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, sortOrder);\r\n\r\n\t\t\t\tthis.internalItems.push({\r\n\t\t\t\t\tuuid: item.uuid,\r\n\t\t\t\t\tsortOrder: sortOrder,\r\n\t\t\t\t\tselected: false,\r\n\t\t\t\t\ttext: SlickUtilsService.getDeepObject(item, this.displayFieldName)\r\n\t\t\t\t});\r\n\r\n\t\t\t\tsortOrder++;\r\n\t\t\t});\r\n\r\n\t\t\tthis.anySelected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tselectItem(e: MouseEvent, item: any) {\r\n\t\tif (e.ctrlKey) {\r\n\t\t\titem.selected = !item.selected;\r\n\t\t}\r\n\t\telse if (e.shiftKey) {\r\n\t\t\tlet selectedItemIdx = this.internalItems.findIndex(internalItem => item.uuid === internalItem.uuid);\r\n\t\t\tthis.internalItems[selectedItemIdx].selected = !this.internalItems[selectedItemIdx].selected;\r\n\r\n\t\t\t// Check to see if there is a selected item previously in the list. This will be the default\r\n\t\t\t// For example, if the 2nd item has been selected, then they shift-select the 5th item, iterate backwards through\r\n\t\t\t// the list until we find the 2nd item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.\r\n\t\t\tlet prevSelectedIndex = selectedItemIdx;\r\n\t\t\tdo {\r\n\t\t\t\tprevSelectedIndex--;\r\n\t\t\t} while (prevSelectedIndex >= 0 && this.internalItems[prevSelectedIndex].selected === false);\r\n\t\t\t\r\n\t\t\tif (prevSelectedIndex >= 0) {\r\n\t\t\t\tfor (let i = prevSelectedIndex; i <= selectedItemIdx; i++) \r\n\t\t\t\t\tthis.internalItems[i].selected = true;\r\n\t\t\t} else {\r\n\t\t\t\t// Check to see if we're going bottom->top select\r\n\t\t\t\t// For example, if the 5th item has been selected, then they shift-select the 2nd item, iterate forwards through\r\n\t\t\t\t// the list until we find the 5th item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.\r\n\t\t\t\tlet nextSelectedIndex = selectedItemIdx;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tnextSelectedIndex++;\r\n\t\t\t\t} while (nextSelectedIndex <= this.internalItems.length && this.internalItems[nextSelectedIndex].selected === false);\r\n\r\n\t\t\t\tif (nextSelectedIndex <= this.internalItems.length) {\r\n\t\t\t\t\tfor (let i = selectedItemIdx; i <= nextSelectedIndex; i++) \r\n\t\t\t\t\t\tthis.internalItems[i].selected = true;\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.internalItems.forEach(item => item.selected = false);\r\n\t\t\titem.selected = true;\r\n\t\t}\r\n\r\n\t\tthis.anySelected = false;\r\n\t\tlet selectedItems = [];\r\n\t\tthis.internalItems.forEach(item => {\r\n\t\t\tif (item.selected === true)\r\n\t\t\t\tselectedItems.push(item);\r\n\t\t\tthis.anySelected = (this.anySelected === true || item.selected === true);\r\n\t\t});\r\n\r\n\t\tif (this.selectedItemsChange)\r\n\t\t\tthis.selectedItemsChange.emit((selectedItems.length > 0) ? selectedItems : null);\r\n\t}\r\n\r\n\tmoveTop() {\r\n\t\tlet uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);\r\n\t\tlet topArray: any[] = [];\r\n\t\tuuidsToMove.forEach((uuid, idx) => {\r\n\t\t\tlet itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);\r\n\t\t\tlet temp = this.internalItems.splice(itemIdx, 1);\r\n\t\t\ttopArray.push(temp[0]);\r\n\t\t});\r\n\r\n\t\tthis.internalItems = topArray.concat(this.internalItems);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveUp() {\r\n\t\tlet newArray = [];\r\n\t\tthis.internalItems.forEach(x => x.sortOrder *= 10);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tif (internalItem.selected === true)\r\n\t\t\t\tinternalItem.sortOrder -= 11;\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);\r\n\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\t\t\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveDown() {\r\n\t\tlet newArray = [];\r\n\t\tthis.internalItems.forEach(x => x.sortOrder *= 10);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tif (internalItem.selected === true)\r\n\t\t\t\tinternalItem.sortOrder += 11;\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);\r\n\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tmoveBottom() {\r\n\t\tlet uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);\r\n\t\tlet bottomArray: any[] = [];\r\n\t\tuuidsToMove.forEach((uuid, idx) => {\r\n\t\t\tlet itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);\r\n\t\t\tlet temp = this.internalItems.splice(itemIdx, 1);\r\n\t\t\tbottomArray.push(temp[0]);\r\n\t\t});\r\n\r\n\t\tthis.internalItems = this.internalItems.concat(bottomArray);\r\n\t\tthis.internalItems.forEach((internalItem, idx) => {\r\n\t\t\tinternalItem.sortOrder = idx;\r\n\t\t\tlet item = this.items.find(item => item.uuid === internalItem.uuid);\r\n\t\t\tSlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);\r\n\t\t})\r\n\r\n\t\tthis.sortList();\r\n\t}\r\n\r\n\tsortList() {\r\n\t\tif (this.items) {\r\n\t\t\tthis.items = this.items.sort((a: any, b: any) => {\r\n\t\t\t\tlet val1 = SlickUtilsService.getDeepObject(a, this.sortOrderFieldName);\r\n\t\t\t\tlet val2 = SlickUtilsService.getDeepObject(b, this.sortOrderFieldName);\r\n\r\n\t\t\t\tif (val1 < val2)\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\telse if (val1 > val2)\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\telse\r\n\t\t\t\t\treturn 0;\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.items.forEach((item, idx) => SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx));\r\n\t\tthis.itemsChange.emit(this.items);\r\n\t}\r\n}","<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-pick-list\",\r\n\ttemplateUrl: \"slick-pick-list.component.html\"\r\n})\r\nexport class SlickPickListComponent {\r\n\t@Input() leftItems: any[];\r\n\t@Output() leftItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() leftTitle: string;\r\n\t@Input() rightItems: any[];\r\n\t@Output() rightItemsChange: EventEmitter<any[]> = new EventEmitter();\r\n\t@Input() rightTitle: string;\r\n\t@Input() sortOrderFieldName: string;\r\n\t@Input() displayFieldName: string;\r\n\r\n\tuuid: string;\r\n\tleftAnySelected = false;\r\n\trightAnySelected = false;\r\n\tleftSelectedItems: any[] = [];\r\n\trightSelectedItems: any[] = [];\r\n\t\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tonLeftSelectedItemsChange(selectedItems: any[]) {\r\n\t\tthis.leftSelectedItems = selectedItems || [];\r\n\t\tthis.leftAnySelected = (this.leftSelectedItems.length > 0);\t\t\t\r\n\t\tthis.rightAnySelected = (this.rightSelectedItems.length > 0);\r\n\t}\r\n\r\n\tonRightSelectedItemsChange(selectedItems: any[]) {\r\n\t\tthis.rightSelectedItems = selectedItems || [];\r\n\t\tthis.leftAnySelected = (this.leftSelectedItems.length > 0);\r\n\t\tthis.rightAnySelected = (this.rightSelectedItems.length > 0);\r\n\t}\r\n\r\n\tmoveLeft() {\r\n\t\tlet rightSelectedUuids = this.rightSelectedItems.map(item => item.uuid);\r\n\t\trightSelectedUuids.forEach(uuid => {\r\n\t\t\tlet itemIndex = this.rightItems.findIndex(i => i.uuid === uuid);\r\n\t\t\tlet item = this.rightItems.splice(itemIndex, 1)[0];\t\t\t\r\n\r\n\t\t\tthis.leftItems.push(item);\r\n\t\t});\r\n\t\t// Angular ngOnChange only works on reference detection. This will create a new array with a new ref\r\n\t\tthis.leftItems = this.leftItems.slice();\r\n\t\tthis.rightItems = this.rightItems.slice();\r\n\r\n\t\tthis.rightSelectedItems = [];\r\n\r\n\t\tif (this.leftItemsChange)\r\n\t\t\tthis.leftItemsChange.emit(this.leftItems);\r\n\r\n\t\tif (this.rightItemsChange)\r\n\t\t\tthis.rightItemsChange.emit(this.rightItems);\r\n\r\n\t\tthis.leftAnySelected = false;\r\n\t\tthis.rightAnySelected = false;\r\n\t}\r\n\r\n\tmoveRight() {\r\n\t\tlet leftSelectedUuids = this.leftSelectedItems.map(item => item.uuid);\r\n\t\tleftSelectedUuids.forEach(uuid => {\r\n\t\t\tlet itemIndex = this.leftItems.findIndex(i => i.uuid === uuid);\r\n\t\t\tlet item = this.leftItems.splice(itemIndex, 1)[0];\r\n\r\n\t\t\tthis.rightItems.push(item);\r\n\t\t});\r\n\t\t// Angular ngOnChange only works on reference detection. This will create a new array with a new ref\r\n\t\tthis.rightItems = this.rightItems.slice();\r\n\t\tthis.leftItems = this.leftItems.slice();\r\n\r\n\t\tthis.leftSelectedItems = [];\r\n\r\n\t\tif (this.leftItemsChange)\r\n\t\t\tthis.leftItemsChange.emit(this.leftItems);\r\n\r\n\t\tif (this.rightItemsChange)\r\n\t\t\tthis.rightItemsChange.emit(this.rightItems);\r\n\r\n\t\tthis.leftAnySelected = false;\r\n\t\tthis.rightAnySelected = false;\r\n\t}\r\n}","<div class=\"slick-pick-list\" id=\"slick-pick-list_{{uuid}}\">\r\n\t<div class=\"slick-pick-list_left\">\r\n\t\t<slick-ordered-list [(items)]=\"leftItems\" [title]=\"leftTitle\" (selectedItemsChange)=\"onLeftSelectedItemsChange($event)\" [sortOrderFieldName]=\"sortOrderFieldName\" [displayFieldName]=\"displayFieldName\"></slick-ordered-list>\r\n\t</div>\r\n\t<div class=\"slick-pick-list_buttons\">\r\n\t\t<button type=\"button\" class=\"moveLeft btn btn-outline-primary\" (click)=\"moveLeft()\" [disabled]=\"rightAnySelected === false\"><i class=\"far fa-chevron-double-left\"></i></button>\r\n\t\t<button type=\"button\" class=\"moveRight btn btn-outline-primary\" (click)=\"moveRight()\" [disabled]=\"leftAnySelected === false\"><i class=\"far fa-chevron-double-right\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-pick-list_right\">\r\n\t\t<slick-ordered-list [(items)]=\"rightItems\" [title]=\"rightTitle\" (selectedItemsChange)=\"onRightSelectedItemsChange($event)\" [sortOrderFieldName]=\"sortOrderFieldName\" [displayFieldName]=\"displayFieldName\" buttonAlignment=\"right\"></slick-ordered-list>\r\n\t</div>\r\n\t<br />\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickOrderedListComponent } from \"./slick-ordered-list.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickOrderedListComponent],\r\n\texports: [CommonModule, FormsModule, SlickOrderedListComponent]\r\n})\r\nexport class SlickOrderedListModule { }\r\n\r\nexport { SlickOrderedListComponent };","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickPickListComponent } from \"./slick-pick-list.component\";\r\nimport { SlickOrderedListModule } from \"../slick-ordered-list/slick-ordered-list.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickOrderedListModule],\r\n\tdeclarations: [SlickPickListComponent],\r\n\texports: [CommonModule, SlickOrderedListModule, SlickPickListComponent]\r\n})\r\nexport class SlickPickListModule { }\r\n\r\nexport { SlickPickListComponent }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickPopoverComponent } from \"./slick-popover.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickPopoverComponent],\r\n\texports: [CommonModule, SlickPopoverComponent]\r\n})\r\nexport class SlickPopoverModule { }\r\nexport { SlickPopoverComponent }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { SlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection } from \"./slick-grid-column.model\";\r\nimport { ISlickGridFavoriteModel, SlickGridFavoriteModel } from \"./slick-grid-favorite.model\";\r\nimport { ISlickGridRequestModel, SlickGridRequestModel } from \"./slick-grid-request.model\";\r\nimport { ISlickGridResponseModel, SlickGridResponseModel } from \"./slick-grid-response.model\";\r\nimport { SlickGridComponent } from \"./slick-grid.component\";\r\nimport { SlickGridColumnTemplateDirective } from \"./slick-grid-column-template.directive\";\r\nimport { ISlickGridOptions, SlickGridOptions } from \"./slick-grid.options\";\r\nimport { SlickGridService } from \"./slick-grid.service\";\r\nimport { SlickConfirmDialogModule } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport { SlickDialogModule } from \"../slick-dialog/slick-dialog.module\";\r\nimport { SlickDropDownModule } from \"../slick-drop-down/slick-drop-down.module\";\r\nimport { SlickDropListModule } from \"../slick-drop-list/slick-drop-list.module\";\r\nimport { SlickPagingModule } from \"../slick-paging/slick-paging.module\";\r\nimport { SlickPickListModule } from \"../slick-pick-list/slick-pick-list.module\";\r\nimport { SlickPopoverModule } from \"../slick-popover/slick-popover.module\";\r\nimport { SlickGridSanitizeHtmlPipe } from \"./slick-grid-sanitize.pipe\";\r\nimport { SlickFunctionLockService } from \"../utils/slick-function-lock.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, SlickConfirmDialogModule, SlickPickListModule, SlickPopoverModule, SlickDialogModule, SlickDropDownModule, SlickDropListModule, SlickPagingModule, HttpClientModule],\r\n\tdeclarations: [SlickGridComponent, SlickGridColumnTemplateDirective, SlickGridSanitizeHtmlPipe],\r\n\texports: [SlickGridComponent, SlickGridColumnTemplateDirective, SlickPickListModule, SlickDialogModule, SlickDropDownModule],\r\n\tproviders: [SlickGridService, SlickFunctionLockService, SlickGridSanitizeHtmlPipe]\r\n})\r\nexport class SlickGridModule {\r\n}\r\nexport { SlickGridColumnModel, SlickGridColumnFilterTypes, SlickGridColumnSortDirection }\r\nexport { ISlickGridFavoriteModel, SlickGridFavoriteModel }\r\nexport { ISlickGridRequestModel, SlickGridRequestModel }\r\nexport { ISlickGridResponseModel, SlickGridResponseModel }\r\nexport { SlickGridComponent }\r\nexport { SlickGridColumnTemplateDirective }\r\nexport { ISlickGridOptions, SlickGridOptions }\r\n\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickMultiSelectService {\r\n\tpublic getVisibleItems(items: any[], selectedIds: string[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\t\t\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet visibleItems: any[] = items.map((item) => {\r\n\t\t\tlet id = item[idFieldName];\t\t\t\t\t\t\r\n\t\t\tif (id === null || id === undefined) {\r\n\t\t\t\tconsole.error(\"%c Id not found for multiSelect item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t\t}\r\n\r\n\t\t\tif (!selectedIds || (selectedIds.indexOf(id) === -1 && selectedIds.indexOf(id.toString()) === -1)) {\r\n\t\t\t\tlet text = item[textFieldName];\r\n\t\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttext: (text ?? \"\").toString(),\r\n\t\t\t\t\titem: item\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvisibleItems = visibleItems.filter(x => !!x);\r\n\r\n\t\tif (visibleItems.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c Warning! No text was found for multiSelect item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\r\n\t\treturn visibleItems;\r\n\t}\r\n\r\n\tpublic getSelectedItems(items: any[], selectedIds: string[], idFieldName: string, textFieldName: string): any[] {\r\n\t\tlet foundSomeText: boolean = false;\r\n\r\n\t\tif (!items || items.length === 0 || !selectedIds || selectedIds.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItems: any[] = selectedIds.map((id: string) => {\r\n\t\t\tlet item = items.find(x => x[idFieldName] == id);\r\n\t\t\t\r\n\t\t\tif (item === null || item === undefined) {\r\n\t\t\t\tconsole.error(\"%c Id not found for multiSelect item. The idFieldName is '\" + idFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tlet text = item[textFieldName];\r\n\t\t\tif (text !== null && text !== undefined)\r\n\t\t\t\tfoundSomeText = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tid: id,\r\n\t\t\t\ttext: text ? text.toString() : null\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (foundSomeText === false) {\r\n\t\t\tconsole.error(\"%c Warning! No text was found for multiSelect item. The textFieldName is '\" + textFieldName + \"'. Is this correct?\", 'background: red; color: white');\r\n\t\t\tconsole.error(\"First Item: \", items[0]);\r\n\t\t}\r\n\r\n\t\treturn selectedItems;\r\n\t}\r\n\r\n\tpublic getSelectedItem(items: any[], selectedId: string): any {\r\n\t\tif (!items || items.length === 0)\r\n\t\t\treturn null;\r\n\r\n\t\tlet selectedItem = items.find((item) => { return item.id === selectedId });\r\n\r\n\t\tif (selectedItem)\r\n\t\t\treturn selectedItem;\r\n\t\telse\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tpublic getItemIndex(items: any[], selectedId: string): number {\r\n\t\treturn items.findIndex((item) => { return item.id === selectedId });\r\n\t}\r\n}","import { Component, NgZone, Input, Output, EventEmitter, ElementRef, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, forwardRef } from \"@angular/core\";\r\nimport { SlickMultiSelectService } from \"./slick-multi-select.service\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickInitService } from \"../utils/slick-init.service\";\r\n\r\nexport enum SlickMultiSelectSearchTypes { startsWith, eachWord, any }\r\n\r\n@Component({\r\n\tselector: 'slick-multi-select',\r\n\ttemplateUrl: 'slick-multi-select.component.html',\r\n\tproviders: [SlickMultiSelectService,\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickMultiSelectComponent),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickMultiSelectComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n\t@Input() placeholder: string = '';\r\n\t@Input() items: any[];\r\n\t@Input() idFieldName: string = \"id\";\r\n\t@Input() textFieldName: string = \"text\";\r\n\t@Input() disabled: boolean = false;\r\n\t@Input() allowEmpty: string = 'true';\r\n\t@Input() singleSelect: boolean = false;\r\n\t@Input() width: string = '100%';\r\n\t@Input() listWidth: string = '100%';\r\n\t@Input() height: string = '300px';\r\n\t@Input() showLoadingMessage: boolean = false;\r\n\t@Input() showDebug: boolean;\r\n\t@Input() tabindex: number;\r\n\t@Input() isMobile: boolean;\r\n\t@Input() searchType: SlickMultiSelectSearchTypes = SlickMultiSelectSearchTypes.eachWord;\r\n\r\n\t@Output() onExpand: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onCollapse: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t@ViewChild(\"containerDiv\") containerDiv: ElementRef;\r\n\t@ViewChild(\"multiSelectList\") multiSelectList: ElementRef;\r\n\t@ViewChild(\"selectedTextInputRef\") selectedTextInputRef: ElementRef;\r\n\r\n\t// This is necessary so that the scroll and resize events can add and remove the event properly,\r\n\t// as well as getting the correct ES6 function\r\n\tprivate fnDocumentClick = (e) => this.documentClick(e);\r\n\r\n\tuuid: string;\r\n\tselectedIds: string[];\r\n\tselectedText: string;\r\n\tkeyboardActive: boolean = false;\r\n\texpanded: boolean = false;\r\n\tfilterText: string = '';\r\n\tselectedIndex: number;\r\n\tselectedItems: any[];\r\n\tvisibleItems: any[];\r\n\tleft: string;\r\n\ttop: string;\r\n\tlistGroupWidth: string;\r\n\tisAndroid: boolean = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');\r\n\r\n\tprivate skipClickExpand: boolean = false;\r\n\r\n\tconstructor(private ngZone: NgZone,\r\n\t\tprivate slickMultiSelectService: SlickMultiSelectService,\r\n\t\tprivate el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tthis.multiSelectList.nativeElement.remove(this.multiSelectList);\r\n\t\tdocument.body.appendChild(this.multiSelectList.nativeElement);\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t\tif (obj)\r\n\t\t\tthis.selectedIds = obj;\r\n\t\telse\r\n\t\t\tthis.selectedIds = null;\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.isMobile) {\r\n\t\t\tthis.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.singleSelect) {\r\n\t\t\tthis.singleSelect = (this.singleSelect.toString().toLowerCase() === 'true') ? true : false;\r\n\t\t}\r\n\r\n\t\tif (changes.searchType) {\r\n\t\t\tif (changes.searchType.currentValue.toString().toLowerCase() === 'startswith')\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.startsWith;\r\n\t\t\telse if (changes.searchType.currentValue.toString().toLowerCase() === 'any')\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.any;\r\n\t\t\telse\r\n\t\t\t\tthis.searchType = SlickMultiSelectSearchTypes.eachWord;\r\n\t\t}\r\n\r\n\t\tif (changes.items) {\r\n\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tif (this.selectedTextInputRef && document.activeElement == this.selectedTextInputRef.nativeElement)\r\n\t\t\t\tthis.expand();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.collapse();\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\t// it's okay if this fails. It was already removed\r\n\t\ttry {\r\n\t\t\tdocument.body.removeChild(this.multiSelectList.nativeElement);\r\n\t\t}\r\n\t\tcatch { }\r\n\r\n\t}\r\n\r\n\tasync onKeyboardIconClicked() {\r\n\t\tif (this.keyboardActive === true) {\r\n\t\t\tthis.collapse();\r\n\t\t\tthis.keyboardActive = false;\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.keyboardActive = true;\r\n\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t(<HTMLElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t\t}\r\n\t}\r\n\r\n\tasync expand() {\r\n\t\tif (this.disabled)\r\n\t\t\treturn;\r\n\r\n\t\tthis.reposition();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tthis.multiSelectList.nativeElement.style.display = \"inline-block\";\r\n\r\n\t\tlet selectedItems = this.multiSelectList.nativeElement.getElementsByClassName(\"selected\");\r\n\t\tif (selectedItems && selectedItems.length > 0)\r\n\t\t\t(<HTMLElement>selectedItems[0]).scrollIntoView({ block: 'nearest' });\r\n\r\n\t\tthis.expanded = true;\r\n\r\n\t\t// This is necessary, otherwise `this` in the reposition function will be window\r\n\t\t// and not the component.\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onExpand)\r\n\t\t\tthis.onExpand.emit();\r\n\t}\r\n\r\n\tcollapse() {\r\n\t\tthis.expanded = false;\r\n\t\tthis.multiSelectList.nativeElement.style.display = \"none\";\r\n\t\t// Since angular has no way to use the third parameter, I'm doing this in raw js\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\r\n\t\tif (this.onCollapse)\r\n\t\t\tthis.onCollapse.emit();\r\n\t}\r\n\r\n\tasync reposition() {\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tlet rect = this.containerDiv.nativeElement.getBoundingClientRect();\r\n\t\tlet containerLeft = rect.left;\r\n\t\tlet containerTop = rect.top;\r\n\t\tlet containerHeight = this.containerDiv.nativeElement.offsetHeight;\r\n\t\tlet containerWidth = rect.width;\r\n\r\n\t\tthis.width = containerWidth;\r\n\t\tif (this.listWidth === '100%')\r\n\t\t\tthis.listGroupWidth = this.width;\r\n\t\telse if (this.listWidth === 'auto')\r\n\t\t\tthis.listGroupWidth = \"auto\";\r\n\t\telse\r\n\t\t\tthis.listGroupWidth = this.listWidth;\r\n\t\tthis.top = (containerTop + containerHeight);\r\n\t\tthis.left = containerLeft;\r\n\t}\r\n\r\n\tprivate documentClick(e: MouseEvent) {\r\n\t\tif (!this.expanded || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\t// If they clicked on the keyboard icon, don't do anything\r\n\t\tif (SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-multi-select_mobile-container\") &&\r\n\t\t\tSlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-multi-select_\" + this.uuid))\r\n\t\t\treturn;\r\n\r\n\t\tconst clickedInside = SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-multi-select_list-item\");\r\n\t\tif (!clickedInside) {\r\n\t\t\tthis.keyboardActive = false;\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.collapse();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate selectItem(id: string) {\r\n\t\tlet item = this.slickMultiSelectService.getSelectedItem(this.visibleItems, id);\r\n\r\n\t\tif (item) {\r\n\r\n\t\t\tif (this.onSelect)\r\n\t\t\t\tthis.onSelect.emit(item);\r\n\r\n\t\t\tif (!this.selectedIds)\r\n\t\t\t\tthis.selectedIds = [];\r\n\r\n\t\t\tthis.selectedIds.push(id);\r\n\t\t\tthis.propagateChange(this.selectedIds);\r\n\r\n\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\t\tthis.reposition();\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\r\n\t\t\tif (this.singleSelect === true)\r\n\t\t\t\tthis.collapse();\r\n\t\t}\r\n\t}\r\n\r\n\tsetFocus(showMobileKeyboard: boolean = false) {\r\n\t\t(<HTMLElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t\tif (showMobileKeyboard === true)\r\n\t\t\tthis.keyboardActive = true;\r\n\t}\r\n\r\n\tasync onFocus() {\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tthis.filterText = '';\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\t// This is kind of hacky, but if onFocus is called by clicking the multiSelect, the onMultiSelectClick event is called as well\r\n\t\t// That function will expand or collapse, depending on the state. Since this expands, it thinks it needs to collapse.\r\n\t\t// So fake it out and tell it NOT to collapse. BUT, if we came in from tabbing into the field, then it would mess up\r\n\t\t// the click event. So only wait for 1/2 second.\r\n\t\tthis.skipClickExpand = true;\r\n\t\tthis.expand();\r\n\t\tawait SlickSleepService.sleep(500);\r\n\t\tthis.skipClickExpand = false;\r\n\t}\r\n\r\n\tasync onKeyDown(e: KeyboardEvent) {\r\n\t\tif (e.key !== 'Tab' &&\r\n\t\t\te.key !== 'Enter' &&\r\n\t\t\te.key !== 'Escape' &&\r\n\t\t\te.key !== 'Backspace' &&\r\n\t\t\te.key !== 'ArrowUp' &&\r\n\t\t\te.key !== 'ArrowDown'\r\n\t\t) {\r\n\t\t\t// If F1 is pressed, key length will be 2\r\n\t\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\t// If this is android, it won't pass us any key data so just read the entire input element\r\n\t\tif (this.isAndroid === true) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tthis.filterText = (<HTMLInputElement>this.selectedTextInputRef.nativeElement).value;\r\n\t\t\tthis.filterSearch();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Tab/enter\r\n\t\tif (e.key === 'Tab') {\r\n\t\t\tif (this.filterText && this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectItem(this.visibleItems[0].id);\r\n\t\t\t\tthis.filterText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.selectedIndex = null;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tif (this.filterText && this.selectedIndex !== null && this.selectedIndex !== undefined) {\r\n\t\t\t\tthis.selectItem(this.visibleItems[this.selectedIndex].id);\r\n\t\t\t\tthis.filterText = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.collapse();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.selectedIndex = null;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Esc\r\n\t\tif (e.key === 'Escape') {\r\n\t\t\tthis.filterText = '';\r\n\t\t\tthis.selectedText = '';\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\tthis.collapse();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Backspace\r\n\t\tif (e.key === 'Backspace' && this.filterText) {\r\n\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t\t\tif (this.filterText.length === 0) {\r\n\t\t\t\tthis.selectedText = '';\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = '';\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tthis.filterSearch();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowup\r\n\t\tif (e.key === 'ArrowUp') {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\r\n\t\t\tif (this.selectedIndex > 0)\r\n\t\t\t\tthis.selectedIndex--;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Arrowdown\r\n\t\tif (e.key === 'ArrowDown') {\r\n\t\t\tif (this.selectedIndex === null || this.selectedIndex === undefined)\r\n\t\t\t\tthis.selectedIndex = -1;\r\n\r\n\t\t\tif (!this.expanded || !this.visibleItems)\r\n\t\t\t\tthis.expand();\r\n\r\n\t\t\tif (this.selectedIndex < this.visibleItems.length - 1)\r\n\t\t\t\tthis.selectedIndex++;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If F1 is pressed, key length will be 2\r\n\t\tif (e.key.length > 1 || e.ctrlKey || e.altKey)\r\n\t\t\treturn false;\r\n\r\n\t\tif (e.key >= ' ' && e.key <= '~') {\r\n\t\t\tthis.filterText += e.key;\r\n\r\n\t\t\tthis.filterSearch();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async filterSearch() {\r\n\t\tif (!this.expanded)\r\n\t\t\tthis.expand();\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tif (this.searchType === SlickMultiSelectSearchTypes.startsWith) {\r\n\t\t\tthis.visibleItems = this.visibleItems.filter(x => (x.text ?? \"\").toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (this.searchType === SlickMultiSelectSearchTypes.eachWord) {\r\n\r\n\t\t\t// Get the words where the beginning matches the search first\r\n\t\t\tconst startsWithItems = this.visibleItems.filter(x => (x.text ?? \"\").toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\t\tconst eachWordItems = this.visibleItems.filter(x => (\" \" + (x.text ?? \"\").toLowerCase()).indexOf(\" \" + this.filterText.toLowerCase()) > 0);\r\n\r\n\t\t\tthis.visibleItems = [...startsWithItems, ...eachWordItems];\r\n\r\n\t\t\tif (this.visibleItems.length > 0) {\r\n\t\t\t\tthis.selectedIndex = 0;\r\n\t\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\tthis.selectedIndex = null;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.reposition();\r\n\t}\r\n\r\n\tonMultiSelectClicked() {\r\n\t\tif (this.skipClickExpand === true) {\r\n\t\t\tthis.skipClickExpand = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\r\n\t\tif (this.expanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\t}\r\n\r\n\tonItemClick(item: any) {\r\n\t\tthis.selectItem(item.id);\r\n\r\n\t\tif (this.keyboardActive === true)\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).focus();\r\n\t}\r\n\r\n\tonRemoveItem(item: any) {\r\n\t\tthis.selectedIds = this.selectedIds.filter(id => id !== item.id);\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.selectedItems = this.slickMultiSelectService.getSelectedItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\r\n\t\tthis.propagateChange(this.selectedIds);\r\n\t}\r\n}","<div #containerDiv id=\"slick-multi-select_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" class=\"slick-multi-select\" [class.mobile]=\"isMobile === true\" [class.open]=\"expanded\">\r\n\t<div class=\"slick-multi-select_input-container\">\r\n\t\t<div *ngIf=\"disabled === false\" style=\"cursor: pointer !important; flex-grow: 1;\" [ngClass]=\"{ 'slick-multi-select_mobile': isMobile === true }\" (click)=\"onMultiSelectClicked()\">\r\n\t\t\t<div *ngFor=\"let selectedItem of selectedItems\" class=\"slick-multi-select_selected-item card\"><div class=\"slick-multi-select_remove\" (click)=\"onRemoveItem(selectedItem)\"><i class=\"fas fa-times-circle bg-white text-danger\"></i></div>{{selectedItem.text}}</div>\r\n\t\t\t<input #selectedTextInputRef *ngIf=\"!isMobile\" [attr.tabindex]=\"tabindex\" [ngClass]=\"{'slick-multi-select_show-selected-text': (keyboardActive || (selectedText && selectedText.length > 0)) }\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" ng-disabled='disabled' readonly [placeholder]='placeholder' />\r\n\t\t\t<input #selectedTextInputRef *ngIf=\"isMobile === true\" [ngClass]=\"{'slick-multi-select_show-selected-text': (keyboardActive || (selectedText && selectedText.length > 0)) }\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" />\r\n\t\t</div>\r\n\t\t<div *ngIf=\"disabled === false && isMobile === true\" class=\"slick-multi-select_mobile-container\">\r\n\t\t\t<i class=\"far fa-keyboard\" style=\"cursor: pointer\" (click)=\"onKeyboardIconClicked()\"></i>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"disabled === true\" class='input-group'>\r\n\t\t<div *ngFor=\"let selectedItem of selectedItems\" class=\"slick-multi-select_selected-item card\">{{selectedItem.text}}</div>\r\n\t</div>\r\n\r\n\t<ul #multiSelectList id=\"slick-multi-select-list_{{uuid}}\" class='slick-multi-select-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n\t\t<li *ngFor=\"let item of visibleItems; let index = index;\" (mouseover)=\"selectedIndex = index\" (click)=\"onItemClick(item)\" class=\"dropdown-item slick-multi-select_list-item\">{{item?.text}}</li>\r\n\t</ul>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickMultiSelectComponent } from \"./slick-multi-select.component\";\r\nimport { SlickMultiSelectService } from \"./slick-multi-select.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickMultiSelectComponent],\r\n\texports: [SlickMultiSelectComponent]\r\n})\r\nexport class SlickMultiSelectModule { }\r\n\r\nexport { SlickMultiSelectComponent }","import { Component, Input, Output, OnChanges, SimpleChanges, EventEmitter, ElementRef, ViewChild, HostListener } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\nconst imgExtensions: string[] = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tif', 'tiff']\r\n\r\n@Component({\r\n\tselector: 'slick-profile-picture',\r\n\ttemplateUrl: 'slick-profile-picture.component.html'\r\n})\r\nexport class SlickProfilePictureComponent implements OnChanges {\r\n\t@Input(\"imageSrc\") imageSrc: string;\r\n\t@Input(\"gravatarEmailAddress\") gravatarEmailAddress: string;\r\n\t@Input(\"viewOnly\") viewOnly: boolean = false;\r\n\t@Input(\"width\") width: string = \"80px\";\r\n\t@Input(\"height\") height: string = \"80px\";\r\n\t@Input(\"resizeWidth\") resizeWidth: number = 600;\r\n\t@Input(\"resizeHeight\") resizeHeight: number = 600;\r\n\t@Output(\"profilePictureChanged\") filesChangedEmitter: EventEmitter<string> = new EventEmitter();\r\n\t@ViewChild(\"containerRef\") containerRef: ElementRef;\r\n\t@ViewChild(\"fileInput\") fileInput: ElementRef;\r\n\r\n\tprivate fnOnFileInputChange = (e) => this.onFileInputChange(e);\r\n\r\n\t@HostListener('click', ['$event'])\r\n\tonClick(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.fileInput.nativeElement.click();\r\n\t\t(<HTMLInputElement>this.fileInput.nativeElement).addEventListener(\"change\", this.fnOnFileInputChange);\r\n\t}\r\n\r\n\tprivate onFileInputChange(e) {\r\n\t\tthis.processFile((<HTMLInputElement>this.fileInput.nativeElement).files);\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event'])\r\n\tonDrop(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\r\n\t\tthis.processFile((<DataTransfer>e.dataTransfer).files);\r\n\t}\r\n\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.containerRef.nativeElement.classList.add(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(e) {\r\n\t\tif (this.viewOnly === true)\r\n\t\t\treturn;\r\n\r\n\t\tthis.containerRef.nativeElement.classList.remove(\"slick-file-drop_drag-enter\");\r\n\t}\r\n\r\n\tuuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.gravatarEmailAddress) {\r\n\t\t\tvar MD5 = function (s) { function L(k, d) { return (k << d) | (k >>> (32 - d)) } function K(G, k) { var I, d, F, H, x; F = (G & 2147483648); H = (k & 2147483648); I = (G & 1073741824); d = (k & 1073741824); x = (G & 1073741823) + (k & 1073741823); if (I & d) { return (x ^ 2147483648 ^ F ^ H) } if (I | d) { if (x & 1073741824) { return (x ^ 3221225472 ^ F ^ H) } else { return (x ^ 1073741824 ^ F ^ H) } } else { return (x ^ F ^ H) } } function r(d, F, k) { return (d & F) | ((~d) & k) } function q(d, F, k) { return (d & k) | (F & (~k)) } function p(d, F, k) { return (d ^ F ^ k) } function n(d, F, k) { return (F ^ (d | (~k))) } function u(G, F, aa, Z, k, H, I) { G = K(G, K(K(r(F, aa, Z), k), I)); return K(L(G, H), F) } function f(G, F, aa, Z, k, H, I) { G = K(G, K(K(q(F, aa, Z), k), I)); return K(L(G, H), F) } function D(G, F, aa, Z, k, H, I) { G = K(G, K(K(p(F, aa, Z), k), I)); return K(L(G, H), F) } function t(G, F, aa, Z, k, H, I) { G = K(G, K(K(n(F, aa, Z), k), I)); return K(L(G, H), F) } function e(G) { var Z; var F = G.length; var x = F + 8; var k = (x - (x % 64)) / 64; var I = (k + 1) * 16; var aa = Array(I - 1); var d = 0; var H = 0; while (H < F) { Z = (H - (H % 4)) / 4; d = (H % 4) * 8; aa[Z] = (aa[Z] | (G.charCodeAt(H) << d)); H++ } Z = (H - (H % 4)) / 4; d = (H % 4) * 8; aa[Z] = aa[Z] | (128 << d); aa[I - 2] = F << 3; aa[I - 1] = F >>> 29; return aa } function B(x) { var k = \"\", F = \"\", G, d; for (d = 0; d <= 3; d++) { G = (x >>> (d * 8)) & 255; F = \"0\" + G.toString(16); k = k + F.substr(F.length - 2, 2) } return k } function J(k) { k = k.replace(/rn/g, \"n\"); var d = \"\"; for (var F = 0; F < k.length; F++) { var x = k.charCodeAt(F); if (x < 128) { d += String.fromCharCode(x) } else { if ((x > 127) && (x < 2048)) { d += String.fromCharCode((x >> 6) | 192); d += String.fromCharCode((x & 63) | 128) } else { d += String.fromCharCode((x >> 12) | 224); d += String.fromCharCode(((x >> 6) & 63) | 128); d += String.fromCharCode((x & 63) | 128) } } } return d } var C = Array(); var P, h, E, v, g, Y, X, W, V; var S = 7, Q = 12, N = 17, M = 22; var A = 5, z = 9, y = 14, w = 20; var o = 4, m = 11, l = 16, j = 23; var U = 6, T = 10, R = 15, O = 21; s = J(s); C = e(s); Y = 1732584193; X = 4023233417; W = 2562383102; V = 271733878; for (P = 0; P < C.length; P += 16) { h = Y; E = X; v = W; g = V; Y = u(Y, X, W, V, C[P + 0], S, 3614090360); V = u(V, Y, X, W, C[P + 1], Q, 3905402710); W = u(W, V, Y, X, C[P + 2], N, 606105819); X = u(X, W, V, Y, C[P + 3], M, 3250441966); Y = u(Y, X, W, V, C[P + 4], S, 4118548399); V = u(V, Y, X, W, C[P + 5], Q, 1200080426); W = u(W, V, Y, X, C[P + 6], N, 2821735955); X = u(X, W, V, Y, C[P + 7], M, 4249261313); Y = u(Y, X, W, V, C[P + 8], S, 1770035416); V = u(V, Y, X, W, C[P + 9], Q, 2336552879); W = u(W, V, Y, X, C[P + 10], N, 4294925233); X = u(X, W, V, Y, C[P + 11], M, 2304563134); Y = u(Y, X, W, V, C[P + 12], S, 1804603682); V = u(V, Y, X, W, C[P + 13], Q, 4254626195); W = u(W, V, Y, X, C[P + 14], N, 2792965006); X = u(X, W, V, Y, C[P + 15], M, 1236535329); Y = f(Y, X, W, V, C[P + 1], A, 4129170786); V = f(V, Y, X, W, C[P + 6], z, 3225465664); W = f(W, V, Y, X, C[P + 11], y, 643717713); X = f(X, W, V, Y, C[P + 0], w, 3921069994); Y = f(Y, X, W, V, C[P + 5], A, 3593408605); V = f(V, Y, X, W, C[P + 10], z, 38016083); W = f(W, V, Y, X, C[P + 15], y, 3634488961); X = f(X, W, V, Y, C[P + 4], w, 3889429448); Y = f(Y, X, W, V, C[P + 9], A, 568446438); V = f(V, Y, X, W, C[P + 14], z, 3275163606); W = f(W, V, Y, X, C[P + 3], y, 4107603335); X = f(X, W, V, Y, C[P + 8], w, 1163531501); Y = f(Y, X, W, V, C[P + 13], A, 2850285829); V = f(V, Y, X, W, C[P + 2], z, 4243563512); W = f(W, V, Y, X, C[P + 7], y, 1735328473); X = f(X, W, V, Y, C[P + 12], w, 2368359562); Y = D(Y, X, W, V, C[P + 5], o, 4294588738); V = D(V, Y, X, W, C[P + 8], m, 2272392833); W = D(W, V, Y, X, C[P + 11], l, 1839030562); X = D(X, W, V, Y, C[P + 14], j, 4259657740); Y = D(Y, X, W, V, C[P + 1], o, 2763975236); V = D(V, Y, X, W, C[P + 4], m, 1272893353); W = D(W, V, Y, X, C[P + 7], l, 4139469664); X = D(X, W, V, Y, C[P + 10], j, 3200236656); Y = D(Y, X, W, V, C[P + 13], o, 681279174); V = D(V, Y, X, W, C[P + 0], m, 3936430074); W = D(W, V, Y, X, C[P + 3], l, 3572445317); X = D(X, W, V, Y, C[P + 6], j, 76029189); Y = D(Y, X, W, V, C[P + 9], o, 3654602809); V = D(V, Y, X, W, C[P + 12], m, 3873151461); W = D(W, V, Y, X, C[P + 15], l, 530742520); X = D(X, W, V, Y, C[P + 2], j, 3299628645); Y = t(Y, X, W, V, C[P + 0], U, 4096336452); V = t(V, Y, X, W, C[P + 7], T, 1126891415); W = t(W, V, Y, X, C[P + 14], R, 2878612391); X = t(X, W, V, Y, C[P + 5], O, 4237533241); Y = t(Y, X, W, V, C[P + 12], U, 1700485571); V = t(V, Y, X, W, C[P + 3], T, 2399980690); W = t(W, V, Y, X, C[P + 10], R, 4293915773); X = t(X, W, V, Y, C[P + 1], O, 2240044497); Y = t(Y, X, W, V, C[P + 8], U, 1873313359); V = t(V, Y, X, W, C[P + 15], T, 4264355552); W = t(W, V, Y, X, C[P + 6], R, 2734768916); X = t(X, W, V, Y, C[P + 13], O, 1309151649); Y = t(Y, X, W, V, C[P + 4], U, 4149444226); V = t(V, Y, X, W, C[P + 11], T, 3174756917); W = t(W, V, Y, X, C[P + 2], R, 718787259); X = t(X, W, V, Y, C[P + 9], O, 3951481745); Y = K(Y, h); X = K(X, E); W = K(W, v); V = K(V, g) } var i = B(Y) + B(X) + B(W) + B(V); return i.toLowerCase() };\r\n\t\t\tthis.gravatarEmailAddress = this.gravatarEmailAddress.trim().toLowerCase();\r\n\t\t\tthis.imageSrc = 'http://www.gravatar.com/avatar/' + MD5(this.gravatarEmailAddress) + '.jpg?s=' + 80;\r\n\t\t}\r\n\r\n\t\tif (changes.viewOnly && changes.viewOnly.currentValue)\r\n\t\t\tthis.viewOnly = (changes.viewOnly.currentValue.toString().toLowerCase() !== 'false');\r\n\t}\r\n\r\n\tprivate async processFile(files: FileList) {\r\n\t\tif (files && files.length > 0) {\r\n\t\t\tlet file: File = files.item(0);\r\n\r\n\t\t\tlet fileNameParts = file.name.split('.');\r\n\t\t\tlet ext = fileNameParts[fileNameParts.length - 1].toLowerCase();\r\n\t\t\tlet fileType = file.type;\r\n\r\n\t\t\tif (imgExtensions.indexOf(ext) >= 0) {\r\n\t\t\t\tlet img = new Image;\r\n\t\t\t\timg.onload = () => {\r\n\t\t\t\t\tthis.imageSrc = this.resizeImageToBase64(img, fileType, this.resizeWidth, this.resizeHeight);\r\n\t\t\t\t\tif (this.filesChangedEmitter)\r\n\t\t\t\t\t\tthis.filesChangedEmitter.emit(this.imageSrc);\r\n\t\t\t\t}\r\n\t\t\t\timg.src = await this.getBase64(file);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate resizeImageToBase64(img: HTMLImageElement, fileType: string, width: number, height: number): string {\r\n\t\tlet scale: number = 1;\r\n\t\tif (img.width > img.height) {\r\n\t\t\tif (img.width > width)\r\n\t\t\t\tscale = width / img.width;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (img.height > height)\r\n\t\t\t\tscale = height / img.height;\r\n\t\t}\r\n\r\n\t\tlet newWidth = img.width * scale;\r\n\t\tlet newHeight = img.height * scale;\r\n\r\n\t\t// We create a canvas and get its context.\r\n\t\tvar canvas = document.createElement('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\t// We set the dimensions at the wanted size.\r\n\t\tcanvas.width = newWidth;\r\n\t\tcanvas.height = newHeight;\r\n\r\n\t\t// We resize the image with the canvas method drawImage();\r\n\t\tctx.drawImage(img, 0, 0, newWidth, newHeight);\r\n\r\n\t\treturn canvas.toDataURL(fileType);\r\n\t}\r\n\r\n\tprivate getBase64(file: File): Promise<string> {\r\n\t\treturn new Promise<string>((resolve, reject) => {\r\n\t\t\tlet reader = new FileReader();\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t\treader.onload = () => resolve(<string>reader.result);\r\n\t\t\treader.onerror = (error) => reject('Error: ' + error);\r\n\t\t});\r\n\t}\r\n}\r\n","<div #containerRef id=\"slick-profile-picture_{{uuid}}\" class=\"slick-profile-picture card\" [ngClass]=\"{ 'slick-profile-picture_view-only': viewOnly === true, 'slick-profile-picture_editable': viewOnly === false }\" [ngStyle]=\"{ 'width': width, 'min-width': width, 'height': height, 'min-height': height }\">\r\n\t<div class=\"slick-profile-picture_text\" *ngIf='viewOnly === false'>Click to change...</div>\r\n\t<img class=\"slick-profile-picture_img\" *ngIf=\"imageSrc\" [src]=\"imageSrc\" [ngStyle]=\"{ 'max-width': width, 'max-height': height }\" />\r\n</div>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickProfilePictureComponent } from \"./slick-profile-picture.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule],\r\n\tdeclarations: [SlickProfilePictureComponent],\r\n\texports: [CommonModule, FormsModule, SlickProfilePictureComponent]\r\n})\r\nexport class SlickProfilePictureModule { }\r\nexport { SlickProfilePictureComponent }\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickProgressBarService {\r\n\tprivate isVisible: boolean = false;\r\n\tprivate progressPercent: number = 0;\r\n\tprivate progressBarTextDiv: HTMLDivElement;\r\n\tprivate progressBarDiv: HTMLDivElement;\r\n\r\n\tsetProgress(progressPercent: number, message: string) {\r\n\t\tif (progressPercent < 1)\r\n\t\t\tprogressPercent *= 100;\r\n\t\tthis.progressPercent = progressPercent;\r\n\r\n\t\tthis.progressBarDiv.style.width = (progressPercent + \"%\");\r\n\t\tthis.progressBarTextDiv.innerHTML = message;\r\n\t}\r\n\r\n\tshow(initialPercent: number = 0) {\r\n\t\tthis.progressPercent = initialPercent;\r\n\r\n\t\tthis.isVisible = false;\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-progress-bar-screen-blocker\"));\r\n\t\tif (!screenBlockerDiv) {\r\n\t\t\tscreenBlockerDiv = document.createElement(\"div\");\r\n\t\t\tscreenBlockerDiv.id = \"slick-progress-bar-screen-blocker\";\r\n\t\t\tscreenBlockerDiv.classList.add('slick-progress-bar-screen-blocker');\r\n\r\n\t\t\tdocument.body.appendChild(screenBlockerDiv);\r\n\t\t}\r\n\r\n\t\tconst progressDiv = document.createElement(\"div\");\r\n\t\tprogressDiv.classList.add('progress');\r\n\t\tprogressDiv.classList.add('slick-progress-bar');\r\n\t\tprogressDiv.classList.add('bg-dark');\r\n\t\t\r\n\t\tthis.progressBarDiv = document.createElement(\"div\");\r\n\t\tthis.progressBarDiv.classList.add('progress-bar');\r\n\t\tthis.progressBarDiv.classList.add('bg-primary');\r\n\t\tthis.progressBarDiv.style.width = \"0\";\r\n\t\tprogressDiv.append(this.progressBarDiv);\r\n\r\n\t\tthis.progressBarTextDiv = document.createElement(\"div\");\r\n\t\tthis.progressBarTextDiv.classList.add('progress-bar-text');\r\n\t\tthis.progressBarTextDiv.classList.add('text-white');\r\n\t\tprogressDiv.append(this.progressBarTextDiv);\r\n\r\n\t\tscreenBlockerDiv.append(progressDiv);\r\n\r\n\t\tscreenBlockerDiv.classList.add('visible');\r\n\t}\r\n\r\n\thide() {\r\n\t\tthis.isVisible = false;\r\n\r\n\t\tconst screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-progress-bar-screen-blocker\"));\r\n\t\tif (screenBlockerDiv)\r\n\t\t\tscreenBlockerDiv.remove();\r\n\t}\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { SlickProgressBarService } from \"./slick-progress-bar.service\";\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [SlickProgressBarService]\r\n})\r\nexport class SlickProgressBarModule { }\r\n\r\nexport { SlickProgressBarService }","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SlickScreenBlockerService {\r\n\tisVisible: boolean = false;\r\n\tforceBlockActive: boolean = false;\r\n\r\n\tprivate static blockCount: number = 0;\r\n\tprivate static preShowTimeout: NodeJS.Timer = null;\r\n\tprivate static blockTimeout: NodeJS.Timer = null;\r\n\r\n\tblock(delay: number = 350) {\r\n\t\tif (this.forceBlockActive === true)\r\n\t\t\treturn;\r\n\r\n\t\tSlickScreenBlockerService.blockCount++;\r\n\r\n\t\tif (!SlickScreenBlockerService.preShowTimeout) {\r\n\t\t\tSlickScreenBlockerService.preShowTimeout = setTimeout(() => {\r\n\t\t\t\tthis.show();\r\n\r\n\t\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\t\tSlickScreenBlockerService.blockTimeout = setTimeout(() => {\r\n\t\t\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\t\t\tthis.isVisible = false;\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}, 20000);\r\n\t\t\t}, delay);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\tSlickScreenBlockerService.blockTimeout = setTimeout(() => {\r\n\t\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\t\tthis.isVisible = false;\r\n\t\t\t\tthis.hide();\r\n\t\t\t}, 20000);\r\n\t\t}\r\n\t}\r\n\r\n\tunblock() {\r\n\t\tif (this.forceBlockActive === true)\r\n\t\t\treturn;\r\n\r\n\t\tSlickScreenBlockerService.blockCount--;\r\n\r\n\t\tif (SlickScreenBlockerService.blockCount <= 0) {\r\n\t\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\t\tclearTimeout(SlickScreenBlockerService.preShowTimeout);\r\n\t\t\tSlickScreenBlockerService.preShowTimeout = null;\r\n\t\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\t\tthis.isVisible = false;\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tforceBlock() {\r\n\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\tthis.forceBlockActive = true;\r\n\t\tthis.isVisible = true;\r\n\t\tthis.show();\r\n\t}\r\n\r\n\tforceUnblock() {\r\n\t\tclearTimeout(SlickScreenBlockerService.blockTimeout);\r\n\t\tSlickScreenBlockerService.blockCount = 0;\r\n\t\tthis.forceBlockActive = false;\r\n\t\tthis.isVisible = false;\r\n\t\tthis.hide();\r\n\t}\r\n\r\n\tprivate show() {\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-screen-blocker\"));\r\n\t\tif (!screenBlockerDiv) {\r\n\t\t\tscreenBlockerDiv = document.createElement(\"div\");\r\n\t\t\tscreenBlockerDiv.id = \"slick-screen-blocker\";\r\n\t\t\tscreenBlockerDiv.classList.add('slick-screen-blocker');\r\n\t\t\tscreenBlockerDiv.innerHTML = `<div class='slick-screen-blocker_spinner'></div>`;\r\n\r\n\t\t\tdocument.body.appendChild(screenBlockerDiv);\r\n\t\t}\r\n\r\n\t\tscreenBlockerDiv.classList.add('visible');\r\n\t}\r\n\r\n\tprivate hide() {\r\n\t\tlet screenBlockerDiv: HTMLDivElement = (<HTMLDivElement>document.getElementById(\"slick-screen-blocker\"));\r\n\t\tif (screenBlockerDiv)\r\n\t\t\tscreenBlockerDiv.classList.remove('visible');\r\n\t}\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickScreenBlockerService } from \"./slick-screen-blocker.service\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tproviders: [SlickScreenBlockerService]\r\n})\r\nexport class SlickScreenBlockerModule { }\r\n\r\nexport { SlickScreenBlockerService }\r\n","import { Component, Input, Output, EventEmitter, AfterViewInit, OnDestroy, OnChanges, SimpleChanges, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { ISlickSliderTickModel } from \"./slick-slider-tick.model\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\n\r\n@Component({\r\n\tselector: \"slick-slider\",\r\n\ttemplateUrl: \"slick-slider.component.html\"\r\n})\r\nexport class SlickSliderComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n\t@Input() ticks: ISlickSliderTickModel[] = [];\r\n\t@Input() startTick: number;\r\n\t@Input() endTick: number;\r\n\t@Output() startTickChange = new EventEmitter<number>();\r\n\t@Output() endTickChange = new EventEmitter<number>();\r\n\r\n\t@ViewChild(\"sliderTicksRef\") sliderTicksRef: ElementRef;\r\n\r\n\tfnDocumentMouseUp = (e) => this.documentMouseUp(e);\r\n\r\n\tstartMoving = false;\r\n\tendMoving = false;\r\n\tstartLeftPx: string;\r\n\tendLeftPx: string;\r\n\tselectionLeftPx: string;\r\n\tselectionWidthPx: string;\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.recalc();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.startTick) \r\n\t\t\tthis.startTick = parseInt(this.startTick.toString());\r\n\t\t\r\n\t\tif (changes.endTick)\r\n\t\t\tthis.endTick = parseInt(this.endTick.toString());\r\n\t}\r\n\r\n\tonStartMouseDown(e: MouseEvent) {\r\n\t\tthis.startMoving = true;\r\n\t\tthis.endMoving = false;\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tonEndMouseDown(e: MouseEvent) {\r\n\t\tthis.startMoving = false;\r\n\t\tthis.endMoving = true;\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\t}\r\n\r\n\tdocumentMouseUp(e: MouseEvent) {\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnDocumentMouseUp, true);\r\n\r\n\t\tif (this.startMoving && this.startTickChange)\r\n\t\t\tthis.startTickChange.emit(this.startTick);\r\n\r\n\t\tif (this.endMoving && this.endTickChange)\r\n\t\t\tthis.endTickChange.emit(this.endTick);\r\n\r\n\t\tthis.startMoving = false;\r\n\t\tthis.endMoving = false;\r\n\t}\r\n\r\n\tonTickMouseOver(idx) {\r\n\t\t\r\n\t\tif (this.startMoving === true && idx < this.endTick) {\r\n\t\t\tthis.startTick = idx;\r\n\t\t\tthis.recalc();\r\n\t\t}\r\n\r\n\t\tif (this.endMoving === true && idx > this.startTick) {\r\n\t\t\tthis.endTick = idx;\r\n\t\t\tthis.recalc();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async recalc() {\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\tconst startLeft = this.findTickLeft(this.startTick) + 3;\r\n\t\tthis.startLeftPx = startLeft + \"px\";\r\n\r\n\t\tconst endLeft = this.findTickLeft(this.endTick) + 3;\r\n\t\tthis.endLeftPx = endLeft + \"px\";\r\n\r\n\t\tthis.selectionLeftPx = (startLeft + 7) + \"px\";\r\n\t\tthis.selectionWidthPx = (endLeft - startLeft + 1) + \"px\";\r\n\t}\r\n\r\n\tprivate findTickLeft(tickNumber) {\r\n\t\tconst tickEl = <HTMLTableCellElement>(<HTMLTableElement>this.sliderTicksRef.nativeElement).querySelector(\"tr td[data-tick='\" + tickNumber + \"']\");\r\n\t\treturn tickEl.offsetLeft;\r\n\r\n\t}\r\n}","<div class=\"slick-slider\" [ngClass]=\"{'slick-slider-moving': startMoving === true || endMoving === true }\">\r\n\t<div class=\"slick-slider-selection bg-primary\" [style.left]=\"selectionLeftPx\" [style.width]=\"selectionWidthPx\" style=\"opacity:15%; margin-bottom:7px\"></div>\r\n\t<table #sliderTicksRef class='slick-slider-ticks'>\r\n\t\t<tr>\r\n\t\t\t<td *ngFor='let tick of ticks; let idx = index' [attr.data-tick]='idx' (mouseover)=\"onTickMouseOver(idx)\">\r\n\t\t\t\t<div class='slick-slider-tick border-bottom text-dark dark-border'>\r\n\t\t\t\t\t<div class=\"slick-slider-tick-text text-dark \">{{tick.text}}</div>\r\n\t\t\t\t\t<div *ngIf=\"tick.majorTick === true\" class=\"slick-slider-major-tick border-left\"></div>\r\n\t\t\t\t\t<div *ngIf=\"tick.minorTick === true\" class=\"slick-slider-minor-tick border-left\"></div>\r\n\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t\t<td [attr.data-tick]='ticks.length' (mouseover)=\"onTickMouseOver(ticks.length)\">\r\n\t\t\t\t<div class=\"slick-slider-tick border-0\">\r\n\t\t\t\t\t<div class=\"slick-slider-major-tick border-left\" style=\"height: 6px;\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<div *ngIf=\"startLeftPx\" class='slick-slider-start' (mousedown)=\"onStartMouseDown($event)\" [style.left]=\"startLeftPx\">\r\n\t\t<div class='bg-primary'></div>\r\n\t\t <span class=\"rounded-square-icon\">\r\n\t\t\t<i class=\"far fa-grip-lines-vertical grip-icon\"></i>\r\n\t\t </span>\r\n\t\t<div class='bg-primary'></div>\r\n\t</div>\r\n\t<div *ngIf=\"endLeftPx\" class='slick-slider-end' (mousedown)=\"onEndMouseDown($event)\" [style.left]=\"endLeftPx\">\r\n\t\t<div class='bg-primary'></div>\r\n\t\t<span class=\"rounded-square-icon\">\r\n\t\t\t<i class=\"far fa-grip-lines-vertical grip-icon\"></i>\r\n\t\t </span>\r\n\t\t<div class='bg-primary'></div>\r\n\t</div>\r\n\r\n</div>\r\n","export interface ISlickSliderTickModel {\r\n\tmajorTick: boolean;\r\n\tminorTick: boolean;\r\n\ttext: string;\r\n}\r\n\r\nexport class SlickSliderTickModel implements ISlickSliderTickModel {\r\n\tmajorTick: boolean;\r\n\tminorTick: boolean;\r\n\ttext: string;\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickSliderComponent } from \"./slick-slider.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\texports: [SlickSliderComponent, CommonModule],\r\n\tdeclarations: [SlickSliderComponent]\r\n})\r\nexport class SlickSliderModule { }\r\n\r\nexport { SlickSliderComponent }\r\nexport * from \"./slick-slider-tick.model\";","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnChanges, SimpleChanges, OnDestroy } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: \"slick-split-screen\",\r\n\ttemplateUrl: 'slick-split-screen.component.html'\r\n})\r\nexport class SlickSplitScreenComponent implements OnChanges, OnDestroy {\r\n\t@Input() orientation: string = 'vertical';\r\n\t@Input() allowSwitch: boolean = true;\r\n\t@Input() key: string;\r\n\t@Input() verticalSplitPercent: number = 75;\r\n\t@Input() horizontalSplitPercent: number = 60;\r\n\t@Output() onResizeStart: EventEmitter<void> = new EventEmitter<void>();\r\n\t@Output() onResizeEnd: EventEmitter<void> = new EventEmitter<void>();\r\n\t@ViewChild(\"slickSplitScreenContainer\") slickSplitScreenContainer: ElementRef;\r\n\t@ViewChild(\"slickSplitScreenLeftContent\") slickSplitScreenLeft: ElementRef;\r\n\t@ViewChild(\"slickSplitScreenRightContent\") slickSplitScreenRight: ElementRef;\r\n\r\n\tcurrentOrientation: string = 'vertical';\r\n\tleftWidth: string;\r\n\tleftHeight: string;\r\n\trightWidth: string;\r\n\trightHeight: string;\r\n\tclientRectTop: number;\r\n\tclientRectLeft: number;\r\n\tfullWidthPx: number;\r\n\tfullHeightPx: number;\r\n\tsplitBarMiddleTop: string;\r\n\tsplitBarMiddleLeft: string;\r\n\tresizing: boolean = false;\r\n\tprivate fnOnMouseMove = (e) => this.onMouseMove(e);\r\n\tprivate fnOnMouseUp = (e) => this.onMouseUp(e);\r\n\tprivate throttleTimeout: NodeJS.Timer = null;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.orientation) {\r\n\t\t\tif (changes.orientation.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.currentOrientation = localStorage.getItem(\"SLICK_SPLIT_SCREEN_ORIENTATION_\" + this.key) || changes.orientation.currentValue;\r\n\r\n\t\t\telse\r\n\t\t\t\tthis.currentOrientation = changes.orientation.currentValue;\r\n\t\t}\r\n\r\n\t\tif (changes.verticalSplitPercent) {\r\n\t\t\tif (changes.verticalSplitPercent.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.verticalSplitPercent = parseInt(localStorage.getItem(\"SLICK_SPLIT_SCREEN_VERTICAL_SPLIT_PERCENT_\" + this.key) || this.verticalSplitPercent.toString());\r\n\t\t\telse\r\n\t\t\t\tthis.verticalSplitPercent = changes.verticalSplitPercent.currentValue;\r\n\t\t}\r\n\t\t\r\n\t\tif (changes.horizontalSplitPercent) {\r\n\t\t\tif (changes.horizontalSplitPercent.isFirstChange() === true && this.key)\r\n\t\t\t\tthis.horizontalSplitPercent = parseInt(localStorage.getItem(\"SLICK_SPLIT_SCREEN_HORIZONTAL_SPLIT_PERCENT_\" + this.key) || this.horizontalSplitPercent.toString());\r\n\t\t\telse\r\n\t\t\t\tthis.horizontalSplitPercent = changes.horizontalSplitPercent.currentValue;\r\n\t\t}\r\n\r\n\t\tthis.resize();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tchangeOrientation() {\r\n\t\tif (this.currentOrientation === 'vertical')\r\n\t\t\tthis.currentOrientation = 'horizontal';\r\n\t\telse\r\n\t\t\tthis.currentOrientation = 'vertical';\r\n\r\n\t\tthis.resize();\r\n\t}\r\n\r\n\tonDragStart(e) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tonMouseDown(e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.onResizeStart)\r\n\t\t\tthis.onResizeStart.emit();\r\n\r\n\t\tif (this.currentOrientation === \"vertical\")\r\n\t\t\tdocument.body.style.cursor = \"col-resize\";\r\n\t\telse\r\n\t\t\tdocument.body.style.cursor = \"row-resize\";\r\n\t\tthis.resizing = true;\r\n\t\tthis.fullWidthPx = this.slickSplitScreenContainer.nativeElement.offsetWidth;\r\n\t\tthis.fullHeightPx = this.slickSplitScreenContainer.nativeElement.offsetHeight;\r\n\r\n\t\tlet rect = this.slickSplitScreenLeft.nativeElement.getBoundingClientRect();\r\n\t\tthis.clientRectLeft = rect.left;\r\n\t\tthis.clientRectTop = rect.top;\r\n\t\tthis.resize();\r\n\r\n\t\tdocument.addEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.addEventListener('mouseup', this.fnOnMouseUp);\r\n\t}\r\n\r\n\tprivate onMouseUp(e) {\r\n\t\tthis.resizing = false;\r\n\t\tdocument.body.style.cursor = \"default\";\r\n\t\tdocument.removeEventListener('mousemove', this.fnOnMouseMove);\r\n\t\tdocument.removeEventListener('mouseup', this.fnOnMouseUp);\r\n\r\n\t\tif (this.onResizeEnd)\r\n\t\t\tthis.onResizeEnd.emit();\r\n\t}\r\n\r\n\tprivate onMouseMove(e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tif (this.throttleTimeout)\r\n\t\t\treturn;\r\n\r\n\t\tthis.throttleTimeout = setTimeout(() => {\r\n\t\t\tif (this.currentOrientation === 'vertical') {\r\n\t\t\t\tlet adjustedLeft: number = e.pageX - this.clientRectLeft;\r\n\t\t\t\tthis.verticalSplitPercent = (adjustedLeft / this.fullWidthPx) * 100;\r\n\t\t\t\tif (this.verticalSplitPercent > 80)\r\n\t\t\t\t\tthis.verticalSplitPercent = 80;\r\n\r\n\t\t\t\tif (this.verticalSplitPercent < 20)\r\n\t\t\t\t\tthis.verticalSplitPercent = 20;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet adjustedTop: number = e.pageY - this.clientRectTop;\r\n\t\t\t\tthis.horizontalSplitPercent = (adjustedTop / this.fullHeightPx) * 100;\r\n\t\t\t\tif (this.horizontalSplitPercent > 80)\r\n\t\t\t\t\tthis.horizontalSplitPercent = 80;\r\n\r\n\t\t\t\tif (this.horizontalSplitPercent < 20)\r\n\t\t\t\t\tthis.horizontalSplitPercent = 20;\r\n\t\t\t}\r\n\r\n\t\t\tthis.resize();\r\n\t\t\tthis.throttleTimeout = null;\r\n\t\t}, 25);\r\n\r\n\t}\r\n\r\n\tprivate resize() {\r\n\t\tif (this.currentOrientation === \"vertical\") {\r\n\t\t\tthis.leftWidth = \"calc(\" + this.verticalSplitPercent + \"% - 1px)\";\r\n\t\t\tthis.leftHeight = \"100%\";\r\n\t\t\tthis.rightWidth = (100 - this.verticalSplitPercent) + \"%\";\r\n\t\t\tthis.rightHeight = \"100%\";\r\n\t\t\tthis.splitBarMiddleTop = \"0\";\r\n\t\t\tthis.splitBarMiddleLeft = \"calc(\" + this.verticalSplitPercent + \"% - 4px)\";\r\n\t\t\tif (this.key)\r\n\t\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_VERTICAL_SPLIT_PERCENT_\" + this.key, this.verticalSplitPercent.toString());\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.leftWidth = \"100%\";\r\n\t\t\tthis.leftHeight = \"calc(\" + this.horizontalSplitPercent + \"% - 1px)\";\r\n\t\t\tthis.rightWidth = \"100%\";\r\n\t\t\tthis.rightHeight = (100 - this.horizontalSplitPercent) + \"%\";\r\n\t\t\tthis.splitBarMiddleTop = \"calc(\" + this.horizontalSplitPercent + \"% - 3px)\";\r\n\t\t\tthis.splitBarMiddleLeft = \"0\";\r\n\t\t\tif (this.key)\r\n\t\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_HORIZONTAL_SPLIT_PERCENT_\" + this.key, this.horizontalSplitPercent.toString());\r\n\t\t}\r\n\r\n\t\tif (this.key) {\r\n\t\t\tlocalStorage.setItem(\"SLICK_SPLIT_SCREEN_ORIENTATION_\" + this.key, this.currentOrientation)\r\n\t\t}\r\n\t}\r\n}\r\n","<div #slickSplitScreenContainer class=\"slick-split-screen\" [ngClass]=\"{'vertical': currentOrientation === 'vertical', 'horizontal': currentOrientation === 'horizontal'}\"><div #slickSplitScreenLeftContent [style.width]=\"leftWidth\" [style.maxWidth]=\"leftWidth\" [style.height]=\"leftHeight\" [style.maxHeight]=\"leftHeight\" class=\"slick-split-screen-left-content\" [ngClass]=\"{'resizing': resizing === true}\"><ng-content select=\"slick-split-screen-left-content\"></ng-content></div><div class=\"slick-split-screen-split-bar\"></div><div #splitSplitScreenRightContent [style.width]=\"rightWidth\" [style.maxWidth]=\"rightWidth\" [style.height]=\"rightHeight\" [style.maxHeight]=\"rightHeight\" class=\"slick-split-screen-right-content\" [ngClass]=\"{'resizing': resizing === true}\"><ng-content select=\"slick-split-screen-right-content\"></ng-content></div><div [style.left]=\"splitBarMiddleLeft\" [style.top]=\"splitBarMiddleTop\" class=\"slick-split-screen-split-bar-middle\" (mousedown)=\"onMouseDown($event)\" (dragstart)=\"onDragStart($event)\"></div><button type=\"button\" (click)=\"changeOrientation()\" class=\"btn btn-primary orientation-switch\" *ngIf=\"allowSwitch === true\"><div [ngClass]=\"{'slick-split-screen-horizontal-icon': currentOrientation === 'vertical', 'slick-split-screen-vertical-icon': currentOrientation === 'horizontal'}\"></div></button></div>","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-split-screen-left-content',\r\n\ttemplate: '<ng-content></ng-content>'\r\n})\r\nexport class SlickSplitScreenLeftContentComponent {\r\n\tconstructor() { }\r\n}","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n\tselector: 'slick-split-screen-right-content',\r\n\ttemplate: '<ng-content></ng-content>'\r\n})\r\nexport class SlickSplitScreenRightContentComponent {\r\n\tconstructor() { }\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { SlickSplitScreenComponent } from \"./slick-split-screen.component\";\r\nimport { SlickSplitScreenLeftContentComponent } from \"./slick-screen-split-left-content.component\";\r\nimport { SlickSplitScreenRightContentComponent } from \"./slick-screen-split-right-content.component\";\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent],\r\n\texports: [SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent]\r\n})\r\nexport class SlickSplitScreenModule { }\r\n\r\nexport { SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent }","import { Component, Input, Output, forwardRef, ViewChild, ElementRef, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SlickSleepService } from '../utils/slick-sleep.service';\r\n\r\nclass Star {\r\n constructor(selected: boolean) {\r\n this.selected = selected;\r\n }\r\n\r\n selected: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'slick-star-rating',\r\n templateUrl: 'slick-star-rating.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SlickStarRatingComponent),\r\n multi: true,\r\n }]\r\n})\r\n\r\nexport class SlickStarRatingComponent implements OnChanges {\r\n protected stars: Star[] = [];\r\n private ratingValue: number;\r\n\r\n @Input() checkedColor: string = \"gold\";\r\n @Input() uncheckedColor: string = \"gray\";\r\n @Input() size: string = \"24px\";\r\n @Input() readonly: boolean = false;\r\n @Input() totalStars: number = 5;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n this.readonly = ((this.readonly || 'false').toString() === 'true')\r\n \r\n if (changes.totalstars)\r\n this.generateStars();\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n // this is the initial value set to the component\r\n writeValue(obj: number) {\r\n if (obj) \r\n this.ratingValue = obj - 1;\r\n else \r\n this.ratingValue = -1;\r\n\r\n this.generateStars();\r\n }\r\n\r\n // registers 'fn' that will be fired when changes are made\r\n // this is how we emit the changes back to the form\r\n registerOnChange(fn: any) {\r\n this.propagateChange = fn;\r\n }\r\n\r\n // not used, used for touch input\r\n registerOnTouched() { }\r\n\r\n reset() {\r\n this.stars.forEach((s, idx) => s.selected = (idx <= this.ratingValue)); \r\n }\r\n\r\n onMouseEnter(starIdx: number) {\r\n if (this.readonly === true)\r\n return;\r\n\r\n this.stars.forEach((s, idx) => s.selected = (idx <= starIdx)); \r\n }\r\n\r\n setRatingValue(starIdx: number) {\r\n if (this.readonly === true)\r\n return;\r\n\r\n this.ratingValue = starIdx;\r\n this.propagateChange(this.ratingValue + 1);\r\n\r\n this.stars.forEach((s, idx) => s.selected = (idx <= starIdx)); \r\n }\r\n\r\n private generateStars() {\r\n this.stars = [];\r\n\r\n for (let i = 0; i < this.totalStars; i++) {\r\n const selected = (i <= this.ratingValue);\r\n this.stars.push(new Star(selected))\r\n }\r\n }\r\n}\r\n","<div class=\"d-flex\" (mouseleave)=\"reset()\">\r\n\t<div *ngFor=\"let star of stars; let idx = index\" class=\"ps-1\" style=\"cursor: pointer\" (mouseenter)=\"onMouseEnter(idx)\" (click)=\"setRatingValue(idx)\">\r\n\t\t<div *ngIf=\"star.selected === true\" style=\"position: relative\">\r\n\t\t\t<div class=\"fas fa-star\" [style.color]=\"checkedColor\" [style.font-size]=\"size\"></div>\r\n\t\t\t<div class=\"fal fa-star\" [style.color]=\"uncheckedColor\" [style.font-size]=\"size\" style=\"position: absolute; left: 0;\"></div>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"star.selected === false\" class=\"fal fa-star\" [style.color]=\"uncheckedColor\" [style.font-size]=\"size\"></div>\r\n\t</div>\r\n</div>","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SlickStarRatingComponent } from \"./slick-star-rating.component\";\r\nimport { SlickCalendarModule } from \"../slick-calendar/slick-calendar.module\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickCalendarModule],\r\n\tdeclarations: [SlickStarRatingComponent],\r\n\texports: [SlickStarRatingComponent, SlickCalendarModule]\r\n})\r\nexport class SlickStarRatingModule { }\r\n\r\nexport { SlickStarRatingComponent }","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Component({\r\n\tselector: 'slick-tab-header',\r\n\ttemplate: `<i style='margin-right: 5px; font-size: .8em; position: relative; top: -.1em;' *ngIf='icon' class='far {{icon}}'></i><div class='slick-tab-header' #tabHeaderRef><ng-content></ng-content></div>`\r\n})\r\nexport class SlickTabHeaderComponent {\r\n\t@ViewChild(\"tabHeaderRef\") tabHeaderRef: ElementRef;\r\n\r\n\tuuid: string;\r\n\ticon: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t}\r\n\r\n\tsetHeader(header: string) {\r\n\t\tthis.tabHeaderRef.nativeElement.innerHTML = header;\r\n\t}\r\n\r\n\tsetIcon(icon: string) {\r\n\t\tthis.icon = icon;\r\n\t}\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, OnChanges, SimpleChanges, ElementRef, AfterViewInit } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickTabHeaderComponent } from \"./slick-tab-header.component\";\r\nimport { ISlickTabModel } from \"./slick-tab.model\";\r\nimport { SlickTabsComponent } from \"./slick-tabs.component\";\r\n\r\n@Component({\r\n\tselector: 'slick-tab',\r\n\ttemplateUrl: 'slick-tab.component.html'\r\n})\r\nexport class SlickTabComponent implements OnChanges, AfterViewInit {\r\n\t@Input() header: string;\r\n\t@Input() icon: string;\r\n\t@Input() key: string;\r\n\r\n\t@ViewChild(\"tabHeaderRef\") tabHeaderRef: SlickTabHeaderComponent;\r\n\t@ViewChild(\"tabBodyRef\") tabBodyRef: ElementRef;\r\n\r\n\tuuid: string;\r\n\tshowHeaderFromInput: boolean = false;\r\n\tselected: boolean = false;\r\n\tparentComponent: SlickTabsComponent;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\t// Sleep 1 cycle to give this.parentComponent a chance to populate\r\n\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t// Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom\r\n\t\t// of a div when it expands beyond the bottom.\r\n\t\tlet displayBody = document.getElementById(\"slick-tab-display-body_\" + this.parentComponent.uuid);\r\n\t\tif (displayBody)\r\n\t\t\tdisplayBody.appendChild(this.tabBodyRef.nativeElement);\r\n\t}\r\n\r\n\tasync ngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.header) {\r\n\t\t\tthis.showHeaderFromInput = true;\r\n\t\t\tawait SlickSleepService.sleep()\r\n\r\n\t\t\tif (this.tabHeaderRef) \r\n\t\t\t\tthis.tabHeaderRef.setHeader(changes.header.currentValue);\t\t\t\r\n\t\t}\r\n\r\n\t\tif (changes.icon) {\r\n\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\tif (this.tabHeaderRef)\r\n\t\t\t\tthis.tabHeaderRef.setIcon(changes.icon.currentValue);\r\n\t\t}\r\n\t}\r\n\r\n\tasync onTabClicked() {\r\n\t\t// If this is already selected, don't run the onTabSelected again.\r\n\t\t// This is causing double calls to the event\r\n\t\tif (this.selected)\r\n\t\t\treturn;\r\n\r\n\t\tthis.parentComponent.onTabSelected(this.uuid);\r\n\t\tthis.selected = true;\r\n\t}\r\n}\r\n ","<div class='slick-tab btn' [ngClass]=\"{'btn-primary': selected === true, 'btn-secondary': selected === false }\" (click)='onTabClicked()'>\r\n\t<slick-tab-header *ngIf='showHeaderFromInput' #tabHeaderRef></slick-tab-header>\r\n\t<ng-content *ngIf='!showHeaderFromInput' select='slick-tab-header'></ng-content>\r\n\t<div id='tabBody_{{uuid}}' class='slick-tab-body' style='display: none; width: 100%;' #tabBodyRef>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</div>\r\n","import { Component, Input, Output, OnChanges, SimpleChanges, EventEmitter, QueryList, ContentChildren, AfterViewInit, OnDestroy, ElementRef, forwardRef } from \"@angular/core\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { ISlickTabModel } from \"./slick-tab.model\";\r\nimport { SlickTabComponent } from \"./slick-tab.component\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n\tselector: 'slick-tabs',\r\n\ttemplateUrl: 'slick-tabs.component.html'\r\n})\r\nexport class SlickTabsComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n\t@Input(\"tabs\") tabModels: ISlickTabModel[];\r\n\t@Input() hideBorder: boolean = false;\r\n\t@Input() tabIndex: number = 0;\r\n\t@Output() tabIndexChange: EventEmitter<number> = new EventEmitter();\r\n\t@Output() tabChange: EventEmitter<string> = new EventEmitter();\r\n\r\n\t@ContentChildren(forwardRef(() => SlickTabComponent)) slickTabs: QueryList<SlickTabComponent>;\r\n\r\n\tuuid: string;\r\n\tprivate savedTabChildren: SlickTabComponent[] = [];\r\n\tprivate slickTabs$: Subscription;\r\n\r\n\tconstructor() {\t\t\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\t\t\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tif (changes.hideBorder && changes.hideBorder.currentValue)\r\n\t\t\tthis.hideBorder = (changes.hideBorder.currentValue.toString().toLowerCase() !== 'false');\r\n\r\n\t\tif (changes.tabIndex && changes.tabIndex.firstChange === false)\r\n\t\t\tthis.slickTabs.toArray()[changes.tabIndex.currentValue].onTabClicked();\r\n\t}\r\n\r\n\tasync ngAfterViewInit() {\r\n\t\tthis.slickTabs.forEach(tab => this.processTab(tab));\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.slickTabs.length > 0 && this.tabIndex < this.slickTabs.length)\r\n\t\t\tthis.slickTabs.toArray()[this.tabIndex].onTabClicked();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tif (this.slickTabs && this.slickTabs.changes) {\r\n\t\t\tthis.slickTabs$ = this.slickTabs.changes.subscribe(async (changes) => {\r\n\t\t\t\tlet tabsAdded = changes.filter(changedTab => !this.savedTabChildren.find(savedTabChild => savedTabChild.uuid === changedTab.uuid));\r\n\t\t\t\tlet tabsRemoved = this.savedTabChildren.filter(savedTabChild => !changes.find(changedTab => savedTabChild.uuid === changedTab.uuid));\r\n\r\n\t\t\t\ttabsRemoved.forEach(x => {\r\n\t\t\t\t\tdocument.getElementById(\"tabBody_\" + x.uuid).style.display = \"none\";\r\n\t\t\t\t\tx.selected = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttabsAdded.forEach(t => this.processTab(t));\r\n\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\r\n\t\t\t\tif (this.slickTabs.length > 0 && this.tabIndex < this.slickTabs.length)\r\n\t\t\t\t\tthis.slickTabs.toArray()[this.tabIndex].onTabClicked();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate processTab(tab: SlickTabComponent) {\r\n\t\tvar existingTab = this.savedTabChildren.find(x => x.uuid === tab.uuid);\r\n\t\tif (!existingTab) {\r\n\t\t\tthis.savedTabChildren.push(tab);\r\n\t\t\ttab.parentComponent = this;\r\n\t\t}\r\n\t}\r\n\r\n\tonTabSelected(uuid: string) {\r\n\t\tlet tabIndex = 0;\t\t\r\n\r\n\t\tthis.slickTabs.forEach(x => {\r\n\t\t\tlet tabBody = document.getElementById(\"tabBody_\" + x.uuid);\r\n\r\n\t\t\tif (tabBody) {\r\n\t\t\t\tif (x.uuid === uuid) {\r\n\t\t\t\t\tthis.tabIndex = tabIndex;\r\n\t\t\t\t\tif (this.tabIndexChange)\r\n\t\t\t\t\t\tthis.tabIndexChange.emit(tabIndex);\r\n\r\n\t\t\t\t\tif (this.tabChange) {\r\n\t\t\t\t\t\tconst tabKey = this.getTabKey(tabIndex);\r\n\t\t\t\t\t\tthis.tabChange.emit(tabKey);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttabIndex++;\r\n\r\n\t\t\t\ttabBody.style.display = (x.uuid === uuid) ? \"inline-block\" : \"none\";\r\n\t\t\t\tx.selected = false\r\n\t\t\t}\r\n\t\t});\t\t\r\n\t}\r\n\r\n\tgetTabHeader(index: number): string {\r\n\t\tconst tabs = this.slickTabs.toArray();\r\n\t\tif (index > tabs.length)\r\n\t\t\treturn null;\r\n\r\n\t\treturn tabs[index].header;\r\n\t}\r\n\r\n\tgetTabKey(index: number): string {\r\n\t\tconst tabs = this.slickTabs.toArray();\r\n\t\tif (index > tabs.length)\r\n\t\t\treturn null;\r\n\r\n\t\treturn tabs[index].key || tabs[index].header || index.toString();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.slickTabs$)\r\n\t\t\tthis.slickTabs$.unsubscribe();\r\n\t}\r\n}\r\n","<div id=\"slick-tabs_{{uuid}}\" class=\"slick-tabs\">\r\n\t<div class=\"slick-tab-headers\" [ngClass]=\"{'no-border': hideBorder === true}\">\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n\t<div id='slick-tab-display-body_{{uuid}}' class=\"slick-tab-display-body\"></div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { SlickTabsComponent } from \"./slick-tabs.component\";\r\nimport { SlickTabComponent } from \"./slick-tab.component\";\r\nimport { SlickTabHeaderComponent } from \"./slick-tab-header.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [SlickTabsComponent, SlickTabComponent, SlickTabHeaderComponent],\r\n\texports: [CommonModule, SlickTabsComponent, SlickTabComponent, SlickTabHeaderComponent]\r\n})\r\nexport class SlickTabsModule { }\r\nexport { SlickTabsComponent }\r\nexport { SlickTabComponent }\r\nexport { SlickTabHeaderComponent } \r\n","import { Injectable, Optional } from \"@angular/core\";\r\nimport { Router, NavigationStart } from \"@angular/router\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\ninterface ISlickToastInfo {\r\n\tuuid: string\r\n\tmessage: string;\r\n\tfadeTimeout: NodeJS.Timer;\r\n\tmessageDiv: HTMLDivElement;\r\n}\r\n\r\nclass SlickToastInfo {\r\n\tuuid: string;\r\n\tmessage: string;\r\n\tfadeTimeout: NodeJS.Timer;\r\n\tmessageDiv: HTMLDivElement;\r\n}\r\n\r\n@Injectable()\r\nexport class SlickToastService {\r\n\tprivate static messageInfos: ISlickToastInfo[] = [];\r\n\r\n\tconstructor(@Optional() private router: Router) {\r\n\t\tif (document.getElementById(\"slick-toasts\") === null) {\r\n\t\t\tlet container = document.createElement(\"div\");\r\n\t\t\tcontainer.id = \"slick-toasts\";\r\n\t\t\tdocument.body.appendChild(container);\r\n\t\t}\r\n\r\n\t\tif (this.router) {\r\n\t\t\t// Every time we change a page, reset the page auto-logout timeout\r\n\t\t\tthis.router.events.subscribe((event) => {\r\n\t\t\t\tif (event instanceof NavigationStart) {\r\n\t\t\t\t\tthis.resetAll();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tshowSuccess(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-check'></i> \" + message, delay, \"bg-success\");\r\n\t}\r\n\r\n\tshowInfo(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-info-circle'></i> \" + message, delay, \"bg-info\");\r\n\t}\r\n\r\n\tshowWarning(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-exclamation-triangle'></i> \" + message, delay, \"bg-warning\");\r\n\t}\r\n\r\n\tshowDanger(message: string, delay: number = 6000) {\r\n\t\tthis.showMessage(\"<i style='font-size: 1.2em' class='far fa-times-circle'></i> \" + message, delay, \"bg-danger\");\r\n\t}\r\n\r\n\tresetAll() {\r\n\t\tfor (let i = 0; i < SlickToastService.messageInfos.length; i++) {\r\n\t\t\tclearTimeout(SlickToastService.messageInfos[i].fadeTimeout);\r\n\t\t\tconst container = document.getElementById(\"slick-toasts\");\r\n\r\n\t\t\tif (container) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcontainer.removeChild(SlickToastService.messageInfos[i].messageDiv);\r\n\t\t\t\t}\r\n\t\t\t\tcatch { }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async fadeOut(messageInfo: ISlickToastInfo) {\r\n\t\tmessageInfo.messageDiv.style.opacity = \"0\";\r\n\t\tawait SlickSleepService.sleep(600);\r\n\t\tlet container = document.getElementById(\"slick-toasts\");\r\n\t\tif (container) {\r\n\t\t\ttry {\r\n\t\t\t\tcontainer.removeChild(messageInfo.messageDiv);\r\n\t\t\t}\r\n\t\t\tcatch { }\r\n\t\t}\r\n\r\n\t\tSlickToastService.messageInfos = SlickToastService.messageInfos.filter(x => x.uuid !== messageInfo.uuid);\r\n\t}\r\n\r\n\tprivate async showMessage(message: string, delay: number, bgClass: string) {\r\n\t\tlet container = document.getElementById(\"slick-toasts\");\r\n\r\n\t\tlet newMessage: ISlickToastInfo = new SlickToastInfo();\r\n\t\tnewMessage.uuid = SlickUtilsService.newGuid();\r\n\t\tnewMessage.message = message;\r\n\t\tnewMessage.fadeTimeout = setTimeout(() => this.fadeOut(newMessage), delay);\r\n\r\n\t\tnewMessage.messageDiv = document.createElement(\"div\");\r\n\t\tnewMessage.messageDiv.id = \"slick-toast_\" + newMessage.uuid;\r\n\t\tnewMessage.messageDiv.classList.add('slick-toast');\r\n\t\tnewMessage.messageDiv.classList.add('jumbotron');\r\n\t\tnewMessage.messageDiv.classList.add(bgClass);\r\n\t\tnewMessage.messageDiv.innerHTML = message;\r\n\r\n\t\tSlickToastService.messageInfos.push(newMessage);\r\n\r\n\t\tcontainer.insertAdjacentElement('afterbegin', newMessage.messageDiv);\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tdocument.getElementById(\"slick-toast_\" + newMessage.uuid).style.opacity = \"1\";\r\n\t}\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { SlickToastService } from \"./slick-toast.service\";\r\n\r\n@NgModule({\r\n\timports: [RouterModule],\r\n\tproviders: [SlickToastService]\r\n})\r\nexport class SlickToastModule { }\r\n\r\nexport { SlickToastService }","import { SlickUtilsService } from '../utils/slick-utils.service';\r\n\r\nexport interface ISlickTreeNodeModel {\r\n\tuuid: string;\r\n\tparentUuid: string;\r\n\ticonClass: string;\r\n\ticonColor: string;\r\n\ticonUrl: string;\r\n\ttext: string;\r\n\texpanded: boolean;\r\n\texpandOnClick: boolean;\r\n\tcanEditText: boolean;\r\n\tcanAddChildren: boolean;\r\n\tcanDelete: boolean;\r\n\thidden: boolean;\r\n}\r\n\r\nexport class SlickTreeNodeModel implements ISlickTreeNodeModel {\r\n\tconstructor(parentNode: ISlickTreeNodeModel, text: string) {\r\n\t\tthis.expanded = false;\r\n\t\tthis.canEditText = true;\r\n\t\tthis.canDelete = true;\r\n\t\tthis.canAddChildren = true;\r\n\t\tthis.uuid = SlickUtilsService.newGuid();\r\n\t\tthis.text = text;\r\n\t\tthis.hidden = false;\r\n\r\n\t\tif (parentNode) \r\n\t\t\tthis.parentUuid = parentNode.uuid;\r\n\t\t\r\n\t\telse {\r\n\t\t\tthis.parentUuid = null;\r\n\t\t}\r\n\t}\r\n\r\n\tuuid: string;\r\n\tparentUuid: string;\r\n\tsortOrder: number;\r\n\ticonClass: string;\r\n\ticonColor: string;\r\n\ticonUrl: string;\r\n\ttext: string;\r\n\texpanded: boolean;\r\n\texpandOnClick: boolean;\r\n\tcanEditText: boolean;\r\n\tcanAddChildren: boolean;\r\n\tcanDelete: boolean;\r\n\thidden: boolean;\r\n}","import { Component, Input, OnChanges, SimpleChanges, Output, EventEmitter, OnDestroy, OnInit, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { ISlickTreeNodeModel, SlickTreeNodeModel } from './slick-tree-node.model';\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\nimport { SlickConfirmDialogComponent, SlickConfirmDialogResults } from '../slick-confirm-dialog/slick-confirm-dialog.module';\r\n\r\nclass SlickTreeViewDisplayModel {\r\n\tconstructor(node: ISlickTreeNodeModel, level: number) {\r\n\t\tthis.uuid = node.uuid;\r\n\t\tthis.parentUuid = node.parentUuid;\r\n\t\tthis.node = node;\r\n\t\tthis.text = node.text;\r\n\t\tthis.level = level;\r\n\t\tthis.expanded = node.expanded;\r\n\t\tthis.editingText = false;\r\n\r\n\t\tthis.indentArray = [];\r\n\t\tfor (let i = 0; i < this.level; i++)\r\n\t\t\tthis.indentArray.push(true);\r\n\t}\r\n\r\n\tnode: ISlickTreeNodeModel;\r\n\tuuid: string;\r\n\ttext: string;\r\n\tparentUuid: string;\r\n\tlevel: number;\r\n\tindentArray: boolean[];\r\n\texpanded: boolean;\r\n\thasChildNodes: boolean;\r\n\teditingText: boolean;\r\n}\r\n\r\n@Component({\r\n\tselector: 'slick-tree-view',\r\n\ttemplateUrl: 'slick-tree-view.component.html'\r\n})\r\nexport class SlickTreeViewComponent implements OnChanges, OnInit, OnDestroy {\r\n\t@Input() nodes: ISlickTreeNodeModel[];\r\n\t@Output() nodesChange: EventEmitter<ISlickTreeNodeModel[]> = new EventEmitter();\r\n\t@Input() showRootNode: boolean = true;\r\n\t@Input() rootNodeUuid: string;\r\n\t@Input() expandOnClick: boolean = true;\r\n\t@Output() onNodeSelected = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeChanged = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeAdded = new EventEmitter<ISlickTreeNodeModel>();\r\n\t@Output() onNodeDeleted = new EventEmitter<ISlickTreeNodeModel[]>();\r\n\r\n\t@ViewChild(\"slickTreeViewRef\", { static: true }) slickTreeViewRef: ElementRef;\r\n\t@ViewChild(\"contextMenuRef\") contextMenuRef: ElementRef;\r\n\t@ViewChild(\"deleteNodeConfirmRef\") deleteNodeConfirmRef: SlickConfirmDialogComponent;\r\n\r\n\tfnDocumentClick = (e) => this.documentClick(e);\r\n\tfnContextMenu = (e) => this.contextMenu(e);\r\n\r\n\tcontextNodeUuid: string;\r\n\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tdisplayNodes: SlickTreeViewDisplayModel[];\r\n\tselectedUuid: string;\r\n\tnewUuid: string = null;\r\n\tdeleteNodeName: string;\r\n\r\n\tcontextMenuShowAdd: boolean;\r\n\tcontextMenuShowDelete: boolean;\r\n\tcontextMenuShowEditText: boolean;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t\tdocument.addEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.slickTreeViewRef.nativeElement.addEventListener(\"contextmenu\", this.fnContextMenu, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tdocument.removeEventListener(\"click\", this.fnDocumentClick, true);\r\n\t\tthis.slickTreeViewRef.nativeElement.removeEventListener(\"contextmenu\", this.fnContextMenu, true);\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges) {\r\n\t\tthis.expandOnClick = (this.expandOnClick.toString().toLowerCase() === 'false') ? false : true;\r\n\t\tthis.showRootNode = (this.showRootNode.toString().toLowerCase() === 'false') ? false : true;\r\n\t\tthis.rootNodeUuid = this.rootNodeUuid || null;\r\n\r\n\t\tif (changes.nodes)\r\n\t\t\tthis.refreshDisplay();\r\n\r\n\t}\r\n\r\n\tprivate async documentClick(e: MouseEvent) {\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-tree-view_node-text-edit\"))\r\n\t\t\treturn;\r\n\r\n\t\tif (e.target && SlickUtilsService.checkParentClassExists(<HTMLElement>e.target, \"slick-tree-view_context-menu\"))\r\n\t\t\treturn;\r\n\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tthis.processNewNode();\r\n\r\n\t\tthis.displayNodes = this.displayNodes.map(displayNode => {\r\n\t\t\tif (displayNode.editingText) {\r\n\t\t\t\tdisplayNode.editingText = false;\r\n\t\t\t\tif (this.onNodeChanged && displayNode.text !== displayNode.node.text) {\r\n\t\t\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\t\t\tthis.onNodeChanged.emit(displayNode.node);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn displayNode;\r\n\t\t});\r\n\t}\r\n\r\n\tonTextKeydown(e: KeyboardEvent, displayNode: SlickTreeViewDisplayModel) {\r\n\t\t// Esc\r\n\t\tif (e.keyCode === 27) {\r\n\t\t\tdisplayNode.editingText = false;\r\n\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\tthis.processNewNode();\r\n\t\t}\r\n\r\n\t\t// Enter or tab\r\n\t\tif (e.keyCode === 13 || e.keyCode === 9) {\r\n\t\t\tdisplayNode.editingText = false;\r\n\t\t\tthis.processNewNode();\r\n\t\t\tif (this.onNodeChanged && displayNode.text !== displayNode.node.text) {\r\n\t\t\t\tdisplayNode.node.text = displayNode.text;\r\n\t\t\t\tthis.onNodeChanged.emit(displayNode.node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcontextMenu(e: MouseEvent) {\r\n\t\tif (!e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tif (!SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, `slick-tree-view_${this.uuid}`))\r\n\t\t\treturn;\r\n\r\n\t\tconst contextNodeElement = <HTMLDivElement>SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-tree-view-node\");\r\n\t\tif (!contextNodeElement)\r\n\t\t\treturn;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tthis.contextNodeUuid = contextNodeElement.getAttribute(\"data-uuid\");\r\n\r\n\t\tconst node = this.nodes.find(x => x.uuid === this.contextNodeUuid);\r\n\t\tthis.contextMenuShowAdd = node.canAddChildren;\r\n\t\tthis.contextMenuShowDelete = node.canDelete;\r\n\t\tthis.contextMenuShowEditText = node.canEditText;\r\n\r\n\t\t// If there's nothing to do, don't even show the context menu\r\n\t\tif (this.contextMenuShowAdd === false && this.contextMenuShowDelete === false && this.contextMenuShowEditText === false)\r\n\t\t\treturn;\r\n\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tconst top = (contextNodeElement.offsetTop + contextNodeElement.offsetHeight - 5);\r\n\r\n\t\tconst indentationElement = <HTMLDivElement>contextNodeElement.querySelector(\".slick-tree-view_indentation\");\r\n\t\tconst iconElement = <HTMLDivElement>contextNodeElement.querySelector(\".slick-tree-view_icon\");\r\n\t\tconst indentationWidth = (indentationElement) ? indentationElement.offsetWidth : 0;\r\n\t\tconst iconWidth = (iconElement) ? iconElement.offsetWidth : 0;\r\n\t\tconst left = indentationWidth + iconWidth + 2;\r\n\r\n\t\tcontextMenuElement.style.top = top + \"px\";\r\n\t\tcontextMenuElement.style.left = left + \"px\";\r\n\t\tcontextMenuElement.classList.add(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.remove(\"menu-hidden\");\r\n\t}\r\n\r\n\tasync addNode() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst parentNodeIdx = this.nodes.findIndex(x => x.uuid === this.contextNodeUuid);\r\n\t\tconst parentNode = this.nodes[parentNodeIdx]\r\n\t\t// Since we want to add this one to the top, pass null as the parent\r\n\t\tvar newNode = new SlickTreeNodeModel(null, \"New Folder\");\r\n\t\tnewNode.parentUuid = parentNode.uuid;\r\n\t\tparentNode.expanded = true;\r\n\t\tthis.nodes.splice(parentNodeIdx, 0, newNode);\r\n\r\n\t\tthis.refreshDisplay();\r\n\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid === newNode.uuid);\r\n\t\tthis.editText(displayNode);\r\n\r\n\t\tthis.newUuid = newNode.uuid;\r\n\t}\r\n\r\n\tasync deleteNode() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst node = this.nodes.find(x => x.uuid === this.contextNodeUuid);\r\n\r\n\t\tthis.deleteNodeName = node.text;\r\n\r\n\t\tconst confirmResult = await this.deleteNodeConfirmRef.confirm();\r\n\r\n\t\tif (confirmResult === SlickConfirmDialogResults.Cancel)\r\n\t\t\treturn;\r\n\r\n\t\tconst removedNodes = this.deleteRecursive(node);\r\n\r\n\t\tthis.refreshDisplay();\r\n\r\n\t\tif (this.onNodeDeleted)\r\n\t\t\tthis.onNodeDeleted.emit(removedNodes);\r\n\r\n\t\tif (this.nodesChange) \r\n\t\t\tthis.nodesChange.emit(this.nodes);\t\t\r\n\t}\r\n\r\n\teditNodeText() {\r\n\t\t// Hide the context menu\r\n\t\tconst contextMenuElement = <HTMLElement>this.contextMenuRef.nativeElement;\r\n\t\tcontextMenuElement.classList.remove(\"menu-visible\");\r\n\t\tcontextMenuElement.classList.add(\"menu-hidden\");\r\n\r\n\t\tif (!this.contextNodeUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid === this.contextNodeUuid);\r\n\t\tthis.editText(displayNode);\r\n\r\n\t\tif (this.nodesChange) \r\n\t\t\tthis.nodesChange.emit(this.nodes);\t\t\r\n\t}\r\n\r\n\tselectNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tif (this.selectedUuid === displayNode.uuid)\r\n\t\t\treturn;\r\n\r\n\t\tthis.selectedUuid = displayNode.uuid;\r\n\t\tif (displayNode.node.expandOnClick === true)\r\n\t\t\tthis.expandNode(displayNode);\r\n\r\n\t\tif (this.onNodeSelected)\r\n\t\t\tthis.onNodeSelected.emit(displayNode.node);\r\n\t}\r\n\r\n\texpandNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tdisplayNode.node.expanded = true;\r\n\t\tthis.refreshDisplay();\r\n\t}\r\n\r\n\tcollapseNode(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tdisplayNode.node.expanded = false;\r\n\t\tthis.refreshDisplay();\r\n\t}\r\n\r\n\tasync editText(displayNode: SlickTreeViewDisplayModel) {\r\n\t\tif (!displayNode.node.canEditText)\r\n\t\t\treturn;\r\n\r\n\t\tdisplayNode.editingText = true;\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\tconst textbox = <HTMLInputElement>document.querySelector(`.slick-tree-view_node-text-edit_${displayNode.uuid}`);\r\n\t\tif (textbox) {\r\n\t\t\ttextbox.focus();\r\n\t\t\ttextbox.select();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate refreshDisplay() {\r\n\t\tthis.displayNodes = [];\r\n\r\n\t\tif (!this.nodes || this.nodes.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\tlet rootNode: ISlickTreeNodeModel;\r\n\t\tif (this.rootNodeUuid)\r\n\t\t\trootNode = this.nodes.find(x => x.uuid === this.rootNodeUuid);\r\n\t\telse\r\n\t\t\trootNode = this.nodes.find(x => x.parentUuid === null);\r\n\t\t// Always expand the root node\r\n\t\trootNode.expanded = true;\r\n\r\n\t\t// If we aren't showing the root node, start at -1 for the indent level\r\n\t\tthis.populateDisplayNodes(rootNode, (this.showRootNode) ? 0 : -1);\r\n\r\n\t\tif (this.showRootNode === false) \r\n\t\t\tthis.displayNodes = this.displayNodes.filter(x => x.parentUuid !== null);\t\t\r\n\t}\r\n\r\n\tprivate populateDisplayNodes(node: ISlickTreeNodeModel, level: number) {\r\n\t\tif (level >= 100) {\r\n\t\t\tconsole.error(\"Exceeeded max of 100 levels deep. Possible infinite recursion.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst displayNode = new SlickTreeViewDisplayModel(node, level);\r\n\r\n\t\tif (node.expandOnClick === null || node.expandOnClick === undefined)\r\n\t\t\tnode.expandOnClick = this.expandOnClick;\r\n\r\n\t\tif (displayNode.parentUuid === null)\r\n\t\t\tdisplayNode.node.canDelete = false;\r\n\r\n\t\tif (displayNode.uuid === this.newUuid) \r\n\t\t\tdisplayNode.editingText = true;\r\n\t\t\r\n\t\tthis.displayNodes.push(displayNode);\r\n\r\n\t\tconst childNodes = this.nodes.filter(x => x.parentUuid === node.uuid) || [];\r\n\t\tdisplayNode.hasChildNodes = (childNodes.length > 0);\r\n\r\n\t\tif (node.expanded === true)\r\n\t\t\tchildNodes.forEach(childNode => {\r\n\t\t\t\tif (!childNode.hidden)\r\n\t\t\t\t\tthis.populateDisplayNodes(childNode, level + 1)\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate deleteRecursive(node: ISlickTreeNodeModel): ISlickTreeNodeModel[] {\r\n\t\tlet removedNodes: ISlickTreeNodeModel[] = [];\r\n\r\n\t\tconst childNodes = this.nodes.filter(x => x.parentUuid === node.uuid) || [];\r\n\r\n\t\tchildNodes.forEach(childNode => {\r\n\t\t\tremovedNodes = removedNodes.concat(this.deleteRecursive(childNode))\r\n\t\t});\r\n\r\n\t\tremovedNodes.push(node);\r\n\r\n\t\tthis.nodes = this.nodes.filter(x => x.uuid !== node.uuid);\r\n\r\n\t\treturn removedNodes;\r\n\t}\r\n\r\n\tprivate processNewNode() {\r\n\t\tif (!this.newUuid)\r\n\t\t\treturn;\r\n\r\n\t\tconst newNode = this.nodes.find(x => x.uuid === this.newUuid);\r\n\t\tconst displayNode = this.displayNodes.find(x => x.uuid == this.newUuid);\r\n\t\t// Do this so that we don't trigger the node update\r\n\t\t newNode.text = displayNode.text;\r\n\r\n\t\tthis.newUuid = null;\r\n\r\n\t\tif (!newNode) \r\n\t\t\treturn;\t\t\r\n\r\n\t\tif (this.onNodeAdded)\r\n\t\t\tthis.onNodeAdded.emit(newNode);\r\n\r\n\t\tif (this.nodesChange)\r\n\t\t\tthis.nodesChange.emit(this.nodes);\r\n\t}\r\n}\r\n","<div #slickTreeViewRef id=\"slick-tree-view_{{uuid}}\" class=\"slick-tree-view position-relative pe-2\">\r\n\t<div class=\"d-flex slick-tree-view-node\" [attr.data-uuid]=\"displayNode.uuid\" *ngFor=\"let displayNode of displayNodes\">\r\n\t\t<div class=\"slick-tree-view_indentation\">\r\n\t\t\t<i *ngFor=\"let indent of displayNode.indentArray\" class=\"far fa-caret-right me-1\" style=\"opacity: 0\"></i>\r\n\t\t\t<i *ngIf=\"!displayNode.hasChildNodes\" class=\"far fa-caret-right me-1\" style=\"opacity: 0\"></i>\r\n\t\t\t<i *ngIf=\"displayNode.hasChildNodes && !displayNode.expanded\" class=\"far fa-caret-right me-1\" style=\"cursor: pointer\" (click)=\"expandNode(displayNode)\"></i>\r\n\t\t\t<i *ngIf=\"displayNode.hasChildNodes && displayNode.expanded\" class=\"far fa-caret-down me-1\" style=\"cursor: pointer\" (click)=\"collapseNode(displayNode)\"></i>\r\n\t\t</div>\r\n\t\t<div class=\"d-flex px-1\" [ngClass]=\"{'bg-success text-white' : displayNode.uuid === selectedUuid }\">\r\n\t\t\t<div *ngIf=\"displayNode.node.iconClass || displayNode.node.iconUrl\" class=\"me-1 slick-tree-view_icon\">\r\n\t\t\t\t<i *ngIf=\"displayNode.node.iconClass\" [style.color]=\"displayNode.node.iconColor\" [ngClass]=\"displayNode.node.iconClass\"></i>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"!displayNode.editingText\" style=\"cursor: pointer\" (click)=\"selectNode(displayNode)\" (dblclick)=\"editText(displayNode)\">{{displayNode.text}}</div>\r\n\t\t\t<div *ngIf=\"displayNode.editingText\" class=\"slick-tree-view_node-text-edit\"><input type=\"text\" class=\"form-control slick-tree-view_node-text-edit_{{displayNode.uuid}}\" [(ngModel)]=\"displayNode.text\" (keydown)=\"onTextKeydown($event, displayNode)\" /></div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div #contextMenuRef class='slick-tree-view_context-menu dropdown-menu p-0 show menu-hidden'>\r\n\t\t<div *ngIf=\"contextMenuShowAdd\" class=\"px-2 dropdown-item\" (click)=\"addNode()\">Add</div>\r\n\t\t<div *ngIf=\"contextMenuShowDelete\" class=\"px-2 dropdown-item\" (click)=\"deleteNode()\">Delete</div>\r\n\t\t<div *ngIf=\"contextMenuShowEditText\" class=\"px-2 dropdown-item\" (click)=\"editNodeText()\">Edit Name</div>\r\n\t</div>\r\n</div>\r\n\r\n<slick-confirm-dialog #deleteNodeConfirmRef>\r\n\tAre you sure you want to delete {{deleteNodeName}}?\r\n</slick-confirm-dialog>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SlickConfirmDialogModule } from \"../slick-confirm-dialog/slick-confirm-dialog.module\";\r\nimport { SlickTreeViewComponent } from \"./slick-tree-view.component\";\r\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, SlickConfirmDialogModule],\r\n\tdeclarations: [SlickTreeViewComponent],\r\n\texports: [CommonModule, FormsModule, SlickTreeViewComponent]\r\n})\r\nexport class SlickTreeViewModule { }\r\n\r\nexport { SlickTreeViewComponent }\r\nexport { ISlickTreeNodeModel, SlickTreeNodeModel } from \"./slick-tree-node.model\";\r\n","import { Directive, Input, Output, EventEmitter, OnChanges, OnInit, OnDestroy, ElementRef, forwardRef } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { SlickSleepService } from \"../utils/slick-sleep.service\";\r\nimport { SlickUtilsService } from \"../utils/slick-utils.service\";\r\n\r\n@Directive({\r\n\tselector: '[slick-type-ahead]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => SlickTypeAheadDirective),\r\n\t\t\tmulti: true,\r\n\t\t}]\r\n})\r\nexport class SlickTypeAheadDirective implements OnChanges, ControlValueAccessor {\r\n\t@Input(\"slick-type-ahead\") slickTypeAhead: any[];\r\n\t@Input(\"slick-type-ahead-field-id\") slickTypeAheadField: string;\r\n\t@Input(\"slick-type-ahead-field-ids\") slickTypeAheadFields: string;\r\n\t@Output(\"slick-type-ahead-change\") slickTypeAheadChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\tprivate fnKeyDown = (e) => this.keyDown(e);\r\n\r\n\tprivate filteredItems: string[];\r\n\tprivate suggestedItem: string;\r\n\r\n\tconstructor(private el: ElementRef) {\r\n\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.el.nativeElement.addEventListener('keydown', this.fnKeyDown);\r\n\t}\r\n\r\n\tngOnChanges() {\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.nativeElement.removeEventListener('keydown', this.fnKeyDown);\r\n\t}\r\n\r\n\tasync keyDown(e: KeyboardEvent) {\r\n\t\tif (e.altKey || e.ctrlKey)\r\n\t\t\treturn;\r\n\r\n\t\tvar valid =\r\n\t\t\t(e.keyCode > 47 && e.keyCode < 58) || // number keys\r\n\t\t\te.keyCode === 32 || e.keyCode === 13 ||\r\n\t\t\te.keyCode === 8 || e.keyCode === 9 || // spacebar, return & tab key(s) (if you want to allow carriage returns)\r\n\t\t\t(e.keyCode > 64 && e.keyCode < 91) || // letter keys\r\n\t\t\t(e.keyCode > 95 && e.keyCode < 112) || // numpad keys\r\n\t\t\t(e.keyCode > 185 && e.keyCode < 193) || // ;=,-./` (in order)\r\n\t\t\t(e.keyCode > 218 && e.keyCode < 223); // [\\]' (in order)\r\n\r\n\t\tif (!valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\r\n\t\tawait SlickSleepService.sleep();\r\n\t\t// Tab/enter\r\n\t\tif (e.which === 9) {\r\n\t\t\tthis.propagateChange(this.suggestedItem);\r\n\t\t\tthis.createSelection(this.el.nativeElement, this.el.nativeElement.value, 0);\r\n\r\n\t\t\tif (this.slickTypeAheadChange) {\r\n\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\t\tthis.slickTypeAheadChange.emit(this.filteredItems[0])\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.slickTypeAheadChange.emit(this.el.nativeElement.value);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (e.which === 8) {\r\n\t\t\tif (this.el.nativeElement.value.length > 0) {\r\n\t\t\t\tvar cursorLoc = this.el.nativeElement.selectionStart;\r\n\t\t\t\tif (cursorLoc > 0) {\r\n\t\t\t\t\tvar valSubstr = this.el.nativeElement.value.substring(0, cursorLoc - 1);\r\n\t\t\t\t\tvalSubstr += this.el.nativeElement.value.substring(cursorLoc);\r\n\t\t\t\t\tthis.el.nativeElement.value = valSubstr;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.el.nativeElement.value)\r\n\t\t\treturn;\r\n\r\n\t\t// Esc\r\n\t\tif (e.which === 27) {\r\n\t\t\tthis.filteredItems = null;\r\n\t\t\tthis.suggestedItem = null;\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.suggestedItem = null;\r\n\t\tlet val = this.el.nativeElement.value.toLowerCase();\r\n\t\t\r\n\t\tif (!this.slickTypeAheadField && !this.slickTypeAheadFields) {\r\n\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => x.toLowerCase().indexOf(val) === 0);\r\n\r\n\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\tthis.suggestedItem = this.filteredItems[0];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.slickTypeAheadField) {\r\n\t\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => ((SlickUtilsService.getDeepObject(x, this.slickTypeAheadField)) ? SlickUtilsService.getDeepObject(x, this.slickTypeAheadField).toLowerCase().indexOf(val) === 0 : false))\r\n\r\n\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0)\r\n\t\t\t\t\tthis.suggestedItem = SlickUtilsService.getDeepObject(this.filteredItems[0], this.slickTypeAheadField)\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet fields = this.slickTypeAheadFields.split(\"|\");\r\n\t\t\t\tthis.filteredItems = null;\r\n\t\t\t\tfields.forEach(field => {\r\n\t\t\t\t\tif (!this.filteredItems || this.filteredItems.length === 0) {\r\n\t\t\t\t\t\tthis.filteredItems = this.slickTypeAhead.filter(x => ((SlickUtilsService.getDeepObject(x, field)) ? SlickUtilsService.getDeepObject(x, field).toLowerCase().indexOf(val) === 0 : false))\r\n\t\t\t\t\t\tif (this.filteredItems && this.filteredItems.length > 0) {\r\n\t\t\t\t\t\t\tthis.suggestedItem = SlickUtilsService.getDeepObject(this.filteredItems[0], field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.suggestedItem) {\r\n\t\t\tvar len = this.el.nativeElement.value.length;\r\n\t\t\tthis.el.nativeElement.value = this.suggestedItem;\r\n\t\t\tthis.createSelection(this.el.nativeElement, len, this.suggestedItem.length)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.suggestedItem = this.el.nativeElement.value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createSelection(field: any, start: number, end: number) {\r\n\t\tif (field.createTextRange) {\r\n\t\t\tvar selRange = field.createTextRange();\r\n\t\t\tselRange.collapse(true);\r\n\t\t\tselRange.moveStart('character', start);\r\n\t\t\tselRange.moveEnd('character', end);\r\n\t\t\tselRange.select();\r\n\t\t\tfield.focus();\r\n\t\t} else if (field.setSelectionRange) {\r\n\t\t\tfield.focus();\r\n\t\t\tfield.setSelectionRange(start, end);\r\n\t\t} else if (typeof field.selectionStart != 'undefined') {\r\n\t\t\tfield.selectionStart = start;\r\n\t\t\tfield.selectionEnd = end;\r\n\t\t\tfield.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpropagateChange = (_: any) => { };\r\n\r\n\t// this is the initial value set to the component\r\n\tpublic writeValue(obj: any) {\r\n\t}\r\n\r\n\t// registers 'fn' that will be fired when changes are made\r\n\t// this is how we emit the changes back to the form\r\n\tpublic registerOnChange(fn: any) {\r\n\t\tthis.propagateChange = fn;\r\n\t}\r\n\r\n\t// not used, used for touch input\r\n\tpublic registerOnTouched() { }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { SlickTypeAheadDirective } from \"./slick-type-ahead.directive\";\r\n\r\n@NgModule({\r\n\timports: [],\r\n\tdeclarations: [SlickTypeAheadDirective],\r\n\texports: [SlickTypeAheadDirective]\r\n})\r\nexport class SlickTypeAheadModule { }\r\nexport { SlickTypeAheadDirective }\r\n","/*\r\n * Public API Surface of components\r\n */\r\nexport { SlickInitService, SlickInitParams } from \"./utils/slick-init.service\";\r\n\r\nexport { SlickAccordionModule, SlickAccordionComponent, SlickAccordionItemComponent, SlickAccordionItemHeaderComponent } from \"./slick-accordion/slick-accordion.module\";\r\nexport { SlickAutoCompleteModule, SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective } from \"./slick-auto-complete/slick-auto-complete.module\";\r\nexport { SlickButtonSpinnerModule, SlickButtonSpinnerComponent } from \"./slick-button-spinner/slick-button-spinner.module\";\r\nexport { SlickCalendarModule, SlickCalendarComponent } from \"./slick-calendar/slick-calendar.module\";\r\nexport { SlickCardModule, SlickCardComponent, SlickCardHeaderComponent } from \"./slick-card/slick-card.module\";\r\nexport { SlickConfirmDialogModule, SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog/slick-confirm-dialog.module\";\r\nexport { SlickContainerModule, SlickContainerComponent, SlickContainerHeaderComponent, SlickContainerBodyComponent, SlickContainerFooterComponent } from \"./slick-container/slick-container.module\";\r\nexport { SlickContextMenuModule, SlickContextMenuComponent, SlickContextMenuItemComponent } from \"./slick-context-menu/slick-context-menu.module\";\r\nexport { SlickCurrencyMaskModule, SlickCurrencyMaskDirective, SlickCurrencyMaskOptions } from \"./slick-currency-mask/slick-currency-mask.module\";\r\nexport { SlickDatePickerModule, SlickDatePickerComponent } from \"./slick-date-picker/slick-date-picker.module\";\r\nexport { SlickDialogModule, SlickDialogComponent, SlickDialogFooterComponent } from \"./slick-dialog/slick-dialog.module\";\r\nexport { SlickDragDropModule, SlickDragDropDirective, SlickDraggableDirective } from \"./slick-drag-drop/slick-drag-drop.module\";\r\nexport { SlickDropDownModule, SlickDropDownComponent, ISlickDropDownButtonModel, SlickDropDownButtonModel } from \"./slick-drop-down/slick-drop-down.module\";\r\nexport { SlickDropListModule, SlickDropListDirective, SlickDropListItemDirective, SlickDropListGrabDirective } from \"./slick-drop-list/slick-drop-list.module\";\r\nexport { SlickEmailerModule, ISlickEmailerAddressModel, ISlickEmailerModel, SlickEmailerAddressModel, SlickEmailerComponent, SlickEmailerDialogComponent, SlickEmailerModel } from \"./slick-emailer/slick-emailer.module\";\r\nexport { SlickEmailViewerModule, SlickEmailViewerComponent, SlickEmailViewerDialogComponent } from \"./slick-email-viewer/slick-email-viewer.module\";\r\nexport { ISlickFileModel, SlickFileModel } from \"./slick-file-model/slick-file.model\";\r\nexport { SlickFileDropModule, SlickFileDropComponent } from \"./slick-file-drop/slick-file-drop.module\";\r\nexport { SlickFileListModule, SlickFileListComponent } from \"./slick-file-list/slick-file-list.module\";\r\nexport { SlickGoogleAddressSearchModule, SlickGoogleAddressSearchDirective } from \"./slick-google-address-search/slick-google-address-search.module\";\r\nexport { SlickGoogleMapModule, SlickGoogleMapComponent, SlickGoogleMapDialogComponent } from \"./slick-google-map/slick-google-map.module\";\r\nexport { SlickGridModule, SlickGridColumnFilterTypes, SlickGridColumnModel, SlickGridColumnSortDirection, SlickGridComponent, ISlickGridOptions, SlickGridOptions, ISlickGridFavoriteModel, SlickGridFavoriteModel, ISlickGridRequestModel, SlickGridRequestModel, ISlickGridResponseModel, SlickGridResponseModel, SlickGridColumnTemplateDirective } from \"./slick-grid/slick-grid.module\";\r\nexport { SlickMultiSelectModule, SlickMultiSelectComponent } from \"./slick-multi-select/slick-multi-select.module\";\r\nexport { SlickOrderedListModule, SlickOrderedListComponent } from \"./slick-ordered-list/slick-ordered-list.module\";\r\nexport { SlickPagingModule, SlickPagingComponent } from \"./slick-paging/slick-paging.module\";\r\nexport { SlickPhotoGalleryModule, SlickPhotoGalleryComponent, SlickPhotoGalleryModel } from \"./slick-photo-gallery/slick-photo-gallery.module\";\r\nexport { SlickPickListModule, SlickPickListComponent } from \"./slick-pick-list/slick-pick-list.module\";\r\nexport { SlickPopoverModule, SlickPopoverComponent } from \"./slick-popover/slick-popover.module\";\r\nexport { SlickProfilePictureModule, SlickProfilePictureComponent } from \"./slick-profile-picture/slick-profile-picture.module\";\r\nexport { SlickProgressBarModule, SlickProgressBarService } from \"./slick-progress-bar/slick-progress-bar.module\";\r\nexport { SlickSearchBarModule, SlickSearchBarComponent } from \"./slick-search-bar/slick-search-bar.module\";\r\nexport { SlickScreenBlockerModule, SlickScreenBlockerService } from \"./slick-screen-blocker/slick-screen-blocker.module\";\r\nexport { SlickSliderModule, SlickSliderComponent, ISlickSliderTickModel, SlickSliderTickModel } from \"./slick-slider/slick-slider.module\";\r\nexport { SlickSplitScreenModule, SlickSplitScreenComponent, SlickSplitScreenLeftContentComponent, SlickSplitScreenRightContentComponent } from \"./slick-split-screen/slick-split-screen.module\";\r\nexport { SlickStarRatingModule, SlickStarRatingComponent } from \"./slick-star-rating/slick-star-rating.module\";\r\nexport { SlickTabsModule, SlickTabComponent, SlickTabsComponent, SlickTabHeaderComponent } from \"./slick-tabs/slick-tabs.module\";\r\nexport { SlickToastModule, SlickToastService } from \"./slick-toast/slick-toast.module\";\r\nexport { SlickTreeViewModule, SlickTreeViewComponent, ISlickTreeNodeModel, SlickTreeNodeModel } from \"./slick-tree-view/slick-tree-view.module\";\r\nexport { SlickTypeAheadModule, SlickTypeAheadDirective } from \"./slick-type-ahead/slick-type-ahead.module\";\r\nexport { SlickValidationIndicatorModule, SlickValidationIndicatorDirective, SlickValidationTypes } from \"./slick-validation-indicator/slick-validation-indicator.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SlickFunctionLockService","i2","i1.SlickDialogService","i1.SlickDialogComponent","i3.SlickCalendarComponent","i1","i1.SlickDropDownService","i3","i4.SlickValidationIndicatorDirective","imgExtensions","i3.SlickConfirmDialogComponent","i2.SlickPhotoGalleryComponent","i3.SlickFileListItemComponent","i4.SlickAutoCompleteComponent","i5.SlickAutoCompleteListItemTemplateDirective","i6.SlickButtonSpinnerComponent","i7.SlickFileDropComponent","i8.SlickFileListComponent","i3.SlickDialogComponent","i4.SlickDialogFooterComponent","i5.SlickButtonSpinnerComponent","i6.SlickEmailerComponent","i2.SlickFileListComponent","i5.SlickEmailViewerComponent","i2.SlickDialogComponent","i3.SlickGoogleMapComponent","i1.SlickGridService","i2.SlickFunctionLockService","i4.SlickConfirmDialogComponent","i5","i6.SlickPopoverComponent","i7.SlickDialogComponent","i8.SlickDialogFooterComponent","i9.SlickDropDownComponent","i10.SlickDropListDirective","i11.SlickDropListItemDirective","i12.SlickDropListGrabDirective","i13.SlickPagingComponent","i14.SlickGridSanitizeHtmlPipe","i1.SlickOrderedListComponent","i1.SlickMultiSelectService","i2.SlickTabHeaderComponent"],"mappings":"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,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CA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"}
|