slick-components 4.4.9 → 4.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"slick-components.js","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.component.ts","../../../projects/components/src/slick-accordion/slick-accordion-item-header.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.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.module.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.ts","../../../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.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.module.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.ts","../../../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-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.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.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-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.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.module.ts","../../../projects/components/src/slick-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.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-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-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-grid/slick-grid.component.ts","../../../projects/components/src/slick-grid/slick-grid.options.ts","../../../projects/components/src/slick-paging/slick-paging.component.ts","../../../projects/components/src/slick-paging/slick-paging.module.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.component.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.ts","../../../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.component.ts","../../../projects/components/src/slick-popover/slick-popover.module.ts","../../../projects/components/src/slick-grid/slick-grid-sanitize.pipe.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.module.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.ts","../../../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-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-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-tabs/slick-tab-header.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../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.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 = \"4.4.9\";\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 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\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.isExpanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\r\n\t}\r\n\r\n\tasync expand() {\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\tif (this.noExpand === true)\r\n\t\t\treturn;\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\r\n\t\tthis.isExpanded = true;\r\n\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\t// Teh 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\r\n\t\tthis.isExpanded = false;\r\n\t}\r\n\r\n\tgetKey(): string {\r\n\t\treturn this.key || null;\r\n\t}\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)\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 (changes.accordionIndex)\r\n\t\t\tthis.expand(this.accordionIndex);\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}","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 { 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, ChangeDetectorRef, OnInit, OnDestroy, ElementRef, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef, OnChanges, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { Form, FormsModule, 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 { 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(\"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(\"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\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\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 (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-auto-complete_\" + this.uuid) === false)\r\n\t\t\tthis.collapse();\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 + \"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}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\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],\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}","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 * as _moment from 'moment'; const moment = _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() 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\t\t\t\tthis.recalc();\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.monthsToShow, \"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.monthsToShow, \"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(\"MMM YYYY\") : monthToDisplay.format(\"MMM 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}","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}","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","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}","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}","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 }","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","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}","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 * as _moment from 'moment'; const moment = _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}","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","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\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): 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() appendButtons: ISlickDropDownButtonModel[];\r\n\t@Input() prependButtons: ISlickDropDownButtonModel[];\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\tprivate skipOnFocusEvent: boolean = false;\r\n\tprivate skipClickExpand: boolean = false;\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}\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\t\tthis.skipOnFocusEvent = (showDropdownList === 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\tthis.skipOnFocusEvent = 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.isMobile)\r\n\t\t\tthis.skipOnFocusEvent = true;\r\n\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, 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 onFocus() {\r\n\t\tif (this.skipOnFocusEvent === true) {\r\n\t\t\tthis.skipOnFocusEvent = false;\r\n\t\t\treturn;\r\n\t\t}\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\tif (this.selectedIndex && this.selectedIndex >= 0) {\r\n\t\t\tthis.selectedItem = this.visibleItems[this.selectedIndex];\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, this.selectedItem.text.length);\r\n\t\t}\r\n\r\n\t\t// This is kind of hacky, but if onFocus is called by clicking the dropdown, the onDropdownClick 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 (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\t//async onKeyPress(e: KeyboardEvent) {\r\n\t//\tawait SlickSleepService.sleep();\r\n\r\n\t//\tif (((e.which >= 32 && e.which <= 126) || e.which === 8) && !e.ctrlKey && !e.altKey) {\r\n\t//\t\tif (e.which === 8)\r\n\t//\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t//\t\telse\r\n\t//\t\t\tthis.filterText += e.key;\r\n\t//\t\tthis.filterSearch();\r\n\t//\t}\r\n\r\n\t//\treturn true;\r\n\t//}\r\n\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\tonDropdownClicked() {\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.skipClickExpand === true) {\r\n\t\t\tthis.skipClickExpand = false;\r\n\t\t\treturn;\r\n\t\t}\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\r\n\thandleCustomButtonClick(callback: Function, event: Event) {\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback(event);\r\n\t\t}\r\n\t}\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\r\n\tel: HTMLElement;\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tfnMouseDown = (e) => this.mouseDown(e);\r\n\tfnMouseEnter = (e) => this.mouseEnter(e);\r\n\tfnMouseUp = () => this.mouseUp();\r\n\r\n\r\n\tisMoving: boolean;\r\n\tdropListItemToMove: HTMLElement;\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\tlastIdx: number;\r\n\tdir: string;\r\n\tfirst: boolean = true;\r\n\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\tthis.el.addEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.removeEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tthis.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.removeEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\t}\r\n\r\n\tasync mouseDown(e: MouseEvent) {\r\n\t\tif (e.button !== 0 || !e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tconst grabEls = this.el.querySelectorAll(\".slick-drop-list-grab\");\r\n\t\tif (grabEls.length > 0 && !SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-drop-list-grab\"))\r\n\t\t\treturn true;\r\n\r\n\t\tthis.first = true;\r\n\t\tthis.isMoving = true;\r\n\r\n\t\tlet sortOrder = 0;\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst item = dropListItems[i];\r\n\r\n\t\t\titem.setAttribute(\"data-sortorder\", sortOrder.toString());\r\n\t\t\t//item.style.cursor = \"move\";\r\n\r\n\t\t\tsortOrder++;\r\n\t\t}\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tthis.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.removeEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\r\n\t\tconst dropListItem = SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-drop-list-item\");\r\n\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\tthis.el.style.userSelect = \"none\";\r\n\r\n\t\tthis.cursorOffset = e.pageY - dropListItem.getBoundingClientRect().top;\r\n\r\n\t\tthis.originalIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\r\n\t\tthis.currentIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\r\n\t\tthis.lastIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\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.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.addEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\r\n\t}\r\n\r\n\tmouseEnter(e: MouseEvent) {\r\n\t\t// Now see if we need to swap the orders\r\n\t\tconst parent = SlickUtilsService.findParent((<HTMLElement>e.target), \"slick-drop-list-item\");\r\n\t\tif (parent && !parent.classList.contains(\"slick-drop-list-placeholder\")) {\r\n\t\t\tthis.currentIdx = 0;\r\n\t\t\tconst allDropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\tfor (let i = 0; i < allDropListItems.length; i++) {\r\n\t\t\t\tconst item = allDropListItems[i];\r\n\t\t\t\tif (item !== parent)\r\n\t\t\t\t\tthis.currentIdx++;\r\n\t\t\t\telse\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\tmouseUp() {\r\n\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tconst sortOrderEl = allItems[this.currentIdx];\r\n\t\tconst sortOrder = parseInt(sortOrderEl.getAttribute(\"data-sortorder\"));\r\n\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.placeholderEl.removeAttribute(\"data-sortorder\");\r\n\t\tthis.placeholderEl.removeEventListener(\"mouseenter\", this.fnMouseEnter, false);\r\n\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\r\n\t\tif (sortOrder === allItems.length) \r\n\t\t\tthis.el.appendChild(this.placeholderEl);\t\t\r\n\t\telse \r\n\t\t\tthis.el.insertBefore(this.placeholderEl, sortOrderEl);\r\n\t\t\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.removeAttribute(\"data-sortorder\");\r\n\t\t\titem.style.transform = \"\";\r\n\t\t\titem.removeEventListener(\"mouseenter\", this.fnMouseEnter, false);\r\n\t\t});\r\n\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\r\n\t\tif (this.onSlickDropListReorder)\r\n\t\t\tthis.onSlickDropListReorder.emit([this.originalIdx, sortOrder]);\r\n\r\n\t\tthis.currentIdx = null;\r\n\t\tthis.lastIdx = null;\r\n\t\tthis.dir = null;\r\n\t}\r\n\r\n\tprivate redraw() {\r\n\t\tif (this.dir && this.currentIdx === this.lastIdx)\r\n\t\t\tthis.dir = (this.dir === 'UP') ? 'DOWN' : 'UP';\r\n\t\telse\r\n\t\t\tthis.dir = (this.currentIdx <= this.lastIdx) ? \"UP\" : \"DOWN\";\r\n\r\n\t\tthis.lastIdx = this.currentIdx;\r\n\r\n\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tlet placeholderOffset = 0;\r\n\r\n\t\tif (this.dir === \"UP\") {\r\n\t\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\t\tif (i < this.currentIdx) {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\t\tif (i <= this.currentIdx) {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t\t}\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\r\n\t\tif (this.first) {\r\n\t\t\tsetTimeout(() => allChildren.forEach(item => item.classList.add(\"slick-drop-list-item-animation\")));\r\n\t\t\tthis.first = false;\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","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","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}","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 { 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@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');\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\t\r\n\r\n\t\tif (changes.showCheckboxes && changes.showCheckboxes.currentValue)\r\n\t\t\tthis.showCheckboxes = (changes.showCheckboxes.currentValue.toString().toLowerCase() !== 'false');\t\t\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\tonFileDelete(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\t\t\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","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 * as _moment from 'moment'; const moment = _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@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\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\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\tdeleteFile() {\r\n\t\tthis.fileDeleteEmitter.emit(this.file);\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","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\n\r\n@NgModule({\r\n\timports: [CommonModule, FormsModule, 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","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>&nbsp;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>&nbsp;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","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\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\t\tplace.address_components.unshift({\r\n\t\t\t\t\t\t\t\t\t\tlong_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\t\tshort_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\t\ttypes: ['street_number']\r\n\t\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});\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\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\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\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\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, 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() 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.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\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\t\t\t\t\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.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\t\t\t\t\t\t\t\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\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\t\t\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\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\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.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\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.columnSearchValues = [];\r\n\r\n\t\t\tthis.gridOptions.columns.forEach(c => {\r\n\t\t\t\tif (c.visible) {\r\n\t\t\t\t\tif (c.filterType === SlickGridColumnFilterTypes.text && c.filterText) {\r\n\t\t\t\t\t\tc.filterText = c.filterText;\r\n\t\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\t\tsearchValueId: null,\r\n\t\t\t\t\t\t\tsearchValueText: c.filterText\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (c.filterType === SlickGridColumnFilterTypes.dropdown && c.filterDropdownValue) {\r\n\t\t\t\t\t\tc.filterDropdownValue = c.filterDropdownValue;\r\n\t\t\t\t\t\trequestModel.columnSearchValues.push(<ISlickGridRequestSearchModel>{\r\n\t\t\t\t\t\t\tcolumnName: c.dataFieldName,\r\n\t\t\t\t\t\t\tsearchValueId: c.filterDropdownValue,\r\n\t\t\t\t\t\t\tsearchValueText: null\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\trequestModel.sortColumn = null;\r\n\t\t\tconst sortColumn = this.gridOptions.columns.find(x => x.sortDirection === SlickGridColumnSortDirection.asc || x.sortDirection === SlickGridColumnSortDirection.desc);\r\n\t\t\tif (sortColumn) {\r\n\t\t\t\trequestModel.sortColumn = (sortColumn.sortDirection === 0) ? null : sortColumn.dataFieldName;\r\n\t\t\t\trequestModel.sortDirection = sortColumn.sortDirection;\r\n\t\t\t}\r\n\r\n\t\t\tif (requestModel.recordsPerPage <= 0)\r\n\t\t\t\trequestModel.recordsPerPage = 20;\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.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.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.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.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.log(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.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}","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}\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\r\n\tconstructor() {\r\n\t\tthis.columns = [];\r\n\t\tthis.httpHeaders = new HttpHeaders();\r\n\t}\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 -= 20;\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 += 20;\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 / 10);\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 * 10);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet currentDisplayPageStart = preDisplayPageTotal * 10;\r\n\t\t\tlet currentDisplayPageEnd = currentDisplayPageStart + 9;\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 + 10) / 10);\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 * 10);\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}","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 } 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}","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}","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 { 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","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 { 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 { 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 ? text.toString() : null,\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\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() 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\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\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();\t\t\t\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);\t\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' });\t\t\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);\t\t\t\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 this.expanded = false;\r\n this.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);\t\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\t\t\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\t\t\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\t\t\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\t\t}\r\n\t}\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 onKeyUp(e: KeyboardEvent) {\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.which === 9 || e.which === 13) {\r\n\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\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.which === 27) {\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.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\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);\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\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();\t\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\tif (this.visibleItems.length > 0) {\r\n\t\t\tthis.selectedIndex = 0;\r\n\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedIndex = null;\r\n\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\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}","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","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}","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","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, 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 ","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","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\n\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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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","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 } from \"./slick-card/slick-card.module\";\r\nexport { SlickConfirmDialogModule, SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog/slick-confirm-dialog.module\";\r\nexport { SlickContainerModule, SlickContainerComponent } 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 } from \"./slick-dialog/slick-dialog.module\";\r\nexport { SlickDragDropModule } 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 } 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 } 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 } 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 { 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 { SlickTabsModule, SlickTabComponent, SlickTabsComponent } 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\nexport {SlickCardHeaderComponent as ɵh} from './slick-card/slick-card-header.component';\nexport {SlickCardComponent as ɵg} from './slick-card/slick-card.component';\nexport {SlickContainerBodyComponent as ɵb} from './slick-container/slick-container-body.component';\nexport {SlickContainerFooterComponent as ɵc} from './slick-container/slick-container-footer.component';\nexport {SlickContainerHeaderComponent as ɵa} from './slick-container/slick-container-header.component';\nexport {SlickDialogFooterComponent as ɵj} from './slick-dialog/slick-dialog-footer.component';\nexport {SlickDialogService as ɵi} from './slick-dialog/slick-dialog.service';\nexport {SlickDragDropDirective as ɵk} from './slick-drag-drop/slick-drag-drop.directive';\nexport {SlickDraggableDirective as ɵl} from './slick-drag-drop/slick-draggable.directive';\nexport {SlickDropDownService as ɵm} from './slick-drop-down/slick-drop-down.service';\nexport {SlickDropListGrabDirective as ɵq} from './slick-drop-list/slick-drop-list-grab.directive';\nexport {SlickDropListItemDirective as ɵp} from './slick-drop-list/slick-drop-list-item.directive';\nexport {SlickDropListDirective as ɵo} from './slick-drop-list/slick-drop-list.directive';\nexport {SlickFileListItemComponent as ɵr} from './slick-file-list/slick-file-list-item.component';\nexport {SlickGridColumnTemplateDirective as ɵd} from './slick-grid/slick-grid-column-template.directive';\nexport {SlickGridSanitizeHtmlPipe as ɵt} from './slick-grid/slick-grid-sanitize.pipe';\nexport {SlickGridService as ɵs} from './slick-grid/slick-grid.service';\nexport {SlickMultiSelectService as ɵu} from './slick-multi-select/slick-multi-select.service';\nexport {SlickPagingComponent as ɵe} from './slick-paging/slick-paging.component';\nexport {SlickTabHeaderComponent as ɵv} from './slick-tabs/slick-tab-header.component';\nexport {SlickFunctionLockService as ɵf} from './utils/slick-function-lock.service';\nexport {SlickLogService as ɵn} from './utils/slick-log.service';"],"names":["moment","imgExtensions"],"mappings":"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,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CA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"}
1
+ {"version":3,"file":"slick-components.js","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.component.ts","../../../projects/components/src/slick-accordion/slick-accordion-item-header.component.ts","../../../projects/components/src/slick-accordion/slick-accordion.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.module.ts","../../../projects/components/src/slick-button-spinner/slick-button-spinner.component.ts","../../../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.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.module.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-confirm-dialog/slick-confirm-dialog.component.ts","../../../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-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.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.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-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.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.module.ts","../../../projects/components/src/slick-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.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-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-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-grid/slick-grid.component.ts","../../../projects/components/src/slick-grid/slick-grid.options.ts","../../../projects/components/src/slick-paging/slick-paging.component.ts","../../../projects/components/src/slick-paging/slick-paging.module.ts","../../../projects/components/src/slick-pick-list/slick-pick-list.component.ts","../../../projects/components/src/slick-ordered-list/slick-ordered-list.component.ts","../../../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.component.ts","../../../projects/components/src/slick-popover/slick-popover.module.ts","../../../projects/components/src/slick-grid/slick-grid-sanitize.pipe.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.module.ts","../../../projects/components/src/slick-profile-picture/slick-profile-picture.component.ts","../../../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-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-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-tabs/slick-tab-header.component.ts","../../../projects/components/src/slick-tabs/slick-tab.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../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.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 = \"4.4.13\";\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 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\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.isExpanded === false)\r\n\t\t\tthis.expand();\r\n\t\telse\r\n\t\t\tthis.collapse();\r\n\r\n\t}\r\n\r\n\tasync expand() {\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\tif (this.noExpand === true)\r\n\t\t\treturn;\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\r\n\t\tthis.isExpanded = true;\r\n\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\t// Teh 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\r\n\t\tthis.isExpanded = false;\r\n\t}\r\n\r\n\tgetKey(): string {\r\n\t\treturn this.key || null;\r\n\t}\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)\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 (changes.accordionIndex)\r\n\t\t\tthis.expand(this.accordionIndex);\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}","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 { 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, ChangeDetectorRef, OnInit, OnDestroy, ElementRef, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef, OnChanges, SimpleChanges, AfterViewInit } from \"@angular/core\";\r\nimport { Form, FormsModule, 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 { 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(\"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(\"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\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\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 (SlickUtilsService.checkParentIdExists(<HTMLElement>e.target, \"slick-auto-complete_\" + this.uuid) === false)\r\n\t\t\tthis.collapse();\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 + \"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}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from '@angular/forms';\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],\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}","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 * as _moment from 'moment'; const moment = _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() 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\t\t\t\tthis.recalc();\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.monthsToShow, \"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.monthsToShow, \"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(\"MMM YYYY\") : monthToDisplay.format(\"MMM 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}","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}","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","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}","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}","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 }","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","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}","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 * as _moment from 'moment'; const moment = _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}","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","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\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): 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() appendButtons: ISlickDropDownButtonModel[];\r\n\t@Input() prependButtons: ISlickDropDownButtonModel[];\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\tprivate skipOnFocusEvent: boolean = false;\r\n\tprivate skipClickExpand: boolean = false;\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}\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\t\tthis.skipOnFocusEvent = (showDropdownList === 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\tthis.skipOnFocusEvent = 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.isMobile)\r\n\t\t\tthis.skipOnFocusEvent = true;\r\n\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, 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 onFocus() {\r\n\t\tif (this.skipOnFocusEvent === true) {\r\n\t\t\tthis.skipOnFocusEvent = false;\r\n\t\t\treturn;\r\n\t\t}\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\tif (this.selectedIndex && this.selectedIndex >= 0) {\r\n\t\t\tthis.selectedItem = this.visibleItems[this.selectedIndex];\r\n\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(0, this.selectedItem.text.length);\r\n\t\t}\r\n\r\n\t\t// This is kind of hacky, but if onFocus is called by clicking the dropdown, the onDropdownClick 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 (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\t//async onKeyPress(e: KeyboardEvent) {\r\n\t//\tawait SlickSleepService.sleep();\r\n\r\n\t//\tif (((e.which >= 32 && e.which <= 126) || e.which === 8) && !e.ctrlKey && !e.altKey) {\r\n\t//\t\tif (e.which === 8)\r\n\t//\t\t\tthis.filterText = this.filterText.substring(0, this.filterText.length - 1);\r\n\t//\t\telse\r\n\t//\t\t\tthis.filterText += e.key;\r\n\t//\t\tthis.filterSearch();\r\n\t//\t}\r\n\r\n\t//\treturn true;\r\n\t//}\r\n\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\tonDropdownClicked() {\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.skipClickExpand === true) {\r\n\t\t\tthis.skipClickExpand = false;\r\n\t\t\treturn;\r\n\t\t}\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\r\n\thandleCustomButtonClick(callback: Function, event: Event) {\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback(event);\r\n\t\t}\r\n\t}\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\r\n\tel: HTMLElement;\r\n\tuuid: string = SlickUtilsService.newGuid();\r\n\tfnMouseDown = (e) => this.mouseDown(e);\r\n\tfnMouseEnter = (e) => this.mouseEnter(e);\r\n\tfnMouseUp = () => this.mouseUp();\r\n\r\n\r\n\tisMoving: boolean;\r\n\tdropListItemToMove: HTMLElement;\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\tlastIdx: number;\r\n\tdir: string;\r\n\tfirst: boolean = true;\r\n\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\tthis.el.addEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.el.removeEventListener(\"mousedown\", this.fnMouseDown, true);\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tthis.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.removeEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\t}\r\n\r\n\tasync mouseDown(e: MouseEvent) {\r\n\t\tif (e.button !== 0 || !e || !e.target)\r\n\t\t\treturn;\r\n\r\n\t\tconst grabEls = this.el.querySelectorAll(\".slick-drop-list-grab\");\r\n\t\tif (grabEls.length > 0 && !SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-drop-list-grab\"))\r\n\t\t\treturn true;\r\n\r\n\t\tthis.first = true;\r\n\t\tthis.isMoving = true;\r\n\r\n\t\tlet sortOrder = 0;\r\n\t\tconst dropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\")\r\n\t\tfor (let i = 0; i < dropListItems.length; i++) {\r\n\t\t\tconst item = dropListItems[i];\r\n\r\n\t\t\titem.setAttribute(\"data-sortorder\", sortOrder.toString());\r\n\t\t\t//item.style.cursor = \"move\";\r\n\r\n\t\t\tsortOrder++;\r\n\t\t}\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\t\tthis.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.removeEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\r\n\t\tconst dropListItem = SlickUtilsService.findParent(<HTMLElement>e.target, \"slick-drop-list-item\");\r\n\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\tthis.el.style.userSelect = \"none\";\r\n\r\n\t\tthis.cursorOffset = e.pageY - dropListItem.getBoundingClientRect().top;\r\n\r\n\t\tthis.originalIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\r\n\t\tthis.currentIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\r\n\t\tthis.lastIdx = parseInt(dropListItem.getAttribute(\"data-sortorder\"));\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.el.querySelectorAll(\".slick-drop-list-item\").forEach(e => e.addEventListener(\"mouseenter\", this.fnMouseEnter, false));\r\n\t\tdocument.addEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\r\n\t}\r\n\r\n\tmouseEnter(e: MouseEvent) {\r\n\t\t// Now see if we need to swap the orders\r\n\t\tconst parent = SlickUtilsService.findParent((<HTMLElement>e.target), \"slick-drop-list-item\");\r\n\t\tif (parent && !parent.classList.contains(\"slick-drop-list-placeholder\")) {\r\n\t\t\tthis.currentIdx = 0;\r\n\t\t\tconst allDropListItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\t\tfor (let i = 0; i < allDropListItems.length; i++) {\r\n\t\t\t\tconst item = allDropListItems[i];\r\n\t\t\t\tif (item !== parent)\r\n\t\t\t\t\tthis.currentIdx++;\r\n\t\t\t\telse\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\tmouseUp() {\r\n\t\tconst allItems = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tconst sortOrderEl = allItems[this.currentIdx];\r\n\t\tconst sortOrder = parseInt(sortOrderEl.getAttribute(\"data-sortorder\"));\r\n\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.placeholderEl.removeAttribute(\"data-sortorder\");\r\n\t\tthis.placeholderEl.removeEventListener(\"mouseenter\", this.fnMouseEnter, false);\r\n\r\n\t\tthis.el.removeChild(this.placeholderEl);\r\n\r\n\t\tif (sortOrder === allItems.length) \r\n\t\t\tthis.el.appendChild(this.placeholderEl);\t\t\r\n\t\telse \r\n\t\t\tthis.el.insertBefore(this.placeholderEl, sortOrderEl);\r\n\t\t\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.removeAttribute(\"data-sortorder\");\r\n\t\t\titem.style.transform = \"\";\r\n\t\t\titem.removeEventListener(\"mouseenter\", this.fnMouseEnter, false);\r\n\t\t});\r\n\r\n\r\n\t\tdocument.removeEventListener(\"mouseup\", this.fnMouseUp, true);\r\n\r\n\t\tif (this.onSlickDropListReorder)\r\n\t\t\tthis.onSlickDropListReorder.emit([this.originalIdx, sortOrder]);\r\n\r\n\t\tthis.currentIdx = null;\r\n\t\tthis.lastIdx = null;\r\n\t\tthis.dir = null;\r\n\t}\r\n\r\n\tprivate redraw() {\r\n\t\tif (this.dir && this.currentIdx === this.lastIdx)\r\n\t\t\tthis.dir = (this.dir === 'UP') ? 'DOWN' : 'UP';\r\n\t\telse\r\n\t\t\tthis.dir = (this.currentIdx <= this.lastIdx) ? \"UP\" : \"DOWN\";\r\n\r\n\t\tthis.lastIdx = this.currentIdx;\r\n\r\n\t\tconst allChildren = this.el.querySelectorAll<HTMLElement>(\".slick-drop-list-item\");\r\n\t\tlet placeholderOffset = 0;\r\n\r\n\t\tif (this.dir === \"UP\") {\r\n\t\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\t\tif (i < this.currentIdx) {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let i = 0; i < allChildren.length; i++) {\r\n\t\t\t\tconst item = allChildren[i];\r\n\r\n\t\t\t\tif (i <= this.currentIdx) {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, 0px, 0px)`;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.style.transform = `translate3d(0px, ${this.placeholderHeight}px, 0px)`;\r\n\t\t\t\t\tplaceholderOffset += this.itemHeights[i];\r\n\t\t\t\t}\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\r\n\t\tif (this.first) {\r\n\t\t\tsetTimeout(() => allChildren.forEach(item => item.classList.add(\"slick-drop-list-item-animation\")));\r\n\t\t\tthis.first = false;\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","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","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}","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 { 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","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\n\r\nimport * as _moment from 'moment'; const moment = _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","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","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>&nbsp;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>&nbsp;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","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\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\t\tplace.address_components.unshift({\r\n\t\t\t\t\t\t\t\t\t\tlong_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\t\tshort_name: streetNumber,\r\n\t\t\t\t\t\t\t\t\t\ttypes: ['street_number']\r\n\t\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});\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, 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.log(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}","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 { 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 -= 20;\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 += 20;\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 / 10);\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 * 10);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet currentDisplayPageStart = preDisplayPageTotal * 10;\r\n\t\t\tlet currentDisplayPageEnd = currentDisplayPageStart + 9;\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 + 10) / 10);\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 * 10);\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}","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 } 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}","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}","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 { 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","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 { 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 { 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 ? text.toString() : null,\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\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() 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\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\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();\t\t\t\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);\t\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' });\t\t\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);\t\t\t\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 this.expanded = false;\r\n this.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);\t\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\t\t\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\t\t\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\t\t\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\t\t}\r\n\t}\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 onKeyUp(e: KeyboardEvent) {\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.which === 9 || e.which === 13) {\r\n\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\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.which === 27) {\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.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\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);\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\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();\t\r\n\r\n\t\tthis.visibleItems = this.slickMultiSelectService.getVisibleItems(this.items, this.selectedIds, this.idFieldName, this.textFieldName);\r\n\t\tthis.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);\r\n\t\tif (this.visibleItems.length > 0) {\r\n\t\t\tthis.selectedIndex = 0;\r\n\t\t\tthis.selectedText = this.visibleItems[0].text;\r\n\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\tawait SlickSleepService.sleep();\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).setSelectionRange(this.filterText.length, this.selectedText.length);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedIndex = null;\r\n\t\t\tif (this.isAndroid === false) {\r\n\t\t\t\tthis.selectedText = this.filterText;\r\n\t\t\t\t(<HTMLInputElement>this.selectedTextInputRef.nativeElement).value = this.selectedText;\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}","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","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}","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","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, 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 ","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","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\n\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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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>&nbsp;&nbsp;\" + 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","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 } from \"./slick-card/slick-card.module\";\r\nexport { SlickConfirmDialogModule, SlickConfirmDialogComponent, SlickConfirmDialogResults } from \"./slick-confirm-dialog/slick-confirm-dialog.module\";\r\nexport { SlickContainerModule, SlickContainerComponent } 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 } from \"./slick-dialog/slick-dialog.module\";\r\nexport { SlickDragDropModule } 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 } 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 } 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 } 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 { 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 { SlickTabsModule, SlickTabComponent, SlickTabsComponent } 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\nexport {SlickCardHeaderComponent as ɵh} from './slick-card/slick-card-header.component';\nexport {SlickCardComponent as ɵg} from './slick-card/slick-card.component';\nexport {SlickContainerBodyComponent as ɵb} from './slick-container/slick-container-body.component';\nexport {SlickContainerFooterComponent as ɵc} from './slick-container/slick-container-footer.component';\nexport {SlickContainerHeaderComponent as ɵa} from './slick-container/slick-container-header.component';\nexport {SlickDialogFooterComponent as ɵj} from './slick-dialog/slick-dialog-footer.component';\nexport {SlickDialogService as ɵi} from './slick-dialog/slick-dialog.service';\nexport {SlickDragDropDirective as ɵk} from './slick-drag-drop/slick-drag-drop.directive';\nexport {SlickDraggableDirective as ɵl} from './slick-drag-drop/slick-draggable.directive';\nexport {SlickDropDownService as ɵm} from './slick-drop-down/slick-drop-down.service';\nexport {SlickDropListGrabDirective as ɵq} from './slick-drop-list/slick-drop-list-grab.directive';\nexport {SlickDropListItemDirective as ɵp} from './slick-drop-list/slick-drop-list-item.directive';\nexport {SlickDropListDirective as ɵo} from './slick-drop-list/slick-drop-list.directive';\nexport {SlickFileListItemComponent as ɵr} from './slick-file-list/slick-file-list-item.component';\nexport {SlickGridColumnTemplateDirective as ɵd} from './slick-grid/slick-grid-column-template.directive';\nexport {SlickGridSanitizeHtmlPipe as ɵt} from './slick-grid/slick-grid-sanitize.pipe';\nexport {SlickGridService as ɵs} from './slick-grid/slick-grid.service';\nexport {SlickMultiSelectService as ɵu} from './slick-multi-select/slick-multi-select.service';\nexport {SlickPagingComponent as ɵe} from './slick-paging/slick-paging.component';\nexport {SlickTabHeaderComponent as ɵv} from './slick-tabs/slick-tab-header.component';\nexport {SlickFunctionLockService as ɵf} from './utils/slick-function-lock.service';\nexport {SlickLogService as ɵn} from './utils/slick-log.service';"],"names":["moment","imgExtensions"],"mappings":"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GAAG,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;aAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CA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"}