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.umd.js","sources":["../../../projects/components/src/utils/slick-init.service.ts","../../../node_modules/tslib/tslib.es6.js","../../../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-confirm-dialog/slick-confirm-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog-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-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.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.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.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../projects/components/src/slick-tabs/slick-tab-header.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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\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 { 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 { 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, 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","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+5xAAAAdSklEQVR42sxbeZwU1bX+qrp67+me6Z6dYTaYQRg2AQFFFBIBNZqgccElJuDPGLP44m7Up/Gpz+S9ZzQmeeozJu57XAJGQDZZZN9hZoBhhtn3tXt6q66qd+6tql5ATfL+eo2XYbqrq+6555zvfN+5V0HTNPyzr6Mte3OP9O3vbRluxkC4H3ElAgEaBEGAnEggoSSgifQOuzX9pRkD+n/0EqAa/1JVlV1En1v4+5qqGb/TZxr/OhTjWnOqmqZfR0/kfxSN3Y3+qAJ9KPCr43IMkihhbvlc/GLxPYCEYeEfNfZkzzHHewde/sGa4x9c0TfaVeh3ZE/1uwvgtLthFx2QBCs3UNX0GQqCxZhcpqGaKvJFSfDp8TeShgjGRDU2eU3kE2f3U/iCkCGwGNdqfJGY0YIg0mKo7FKoCXpfocUREpAsTmxt2IJCawA779oGf4F/WPpHDL3zLzc99mHd6zeW5VSUX1FzHeZVXYzKnEnw2r2QJAn/X1//8vF9eH/Dh1Ao0tjra2f63t4/fePeT29+qSirtOX5K98vX1y9FIIk8s+icRlD8gjkWFwPRcGMMVph6EOjZdY0epAgmPEHM440Rc14lhGBadeYd9FDVTMjxHjnq17sGmba5NyJECk6NIowURS/3th7P1r+6P/sfPmmhxbfX373wifL2XujsTC6h3toYgqFCbuBqBvHQlEwJ2iEmTE5PTdTC8He0cPT/I7xkaobya8XjJDXk57WUU29l568X/oi3NDixgqKPE3My7/U2OWvf/t3a06uvOyjm1eVLxj/LUQo2dtDbbCQh2w2iW5n4amm8dxkOWJMUhVMi2BhBgmCbr4JUnyqgg5ElGsZxnKjaPkygIw8wzNS4fksGgugmbcxVzDNUIFuImkWM16QtkRnGnvXhzc+sbZx5WWrVmwvnzF2LnqCfRhJjBAI6Z5kRqomqJyGkgwV9ZCGgaz0O1RkWCWkPGaiNZ8WR1Q1PQgyvJsySjvTxvQlowhRNMW4J0N7Lfn0DGNf3/GHy/68+43r3/3+h9zQtoFOxIQInJI16cnUw5l39H8zxGSGsRKhikZG8YeqEHR3cKeLzNN0H4VyWTSmoBo5yjwIhtH8F4HnLx9nWJVuvJi5kByVVSTURPJK7hhNyDS2sfeE7eH1P/3d/RfdV37RhKXoHumBZpXhkxz0BUlPT03RH84mTn9FlRgihHQSAYFqxJ5gPCbpUQ5YKg9Pi2iBxSJQ/bPoOQ0d11gpYngVi9N17EGCvoBmCpzpRTXt52nGnrY8mpb6PGnsMxsffGKsbzyB0ROUo3EE1SCtkAqrZoNg1acuGpcrhLAyrViW3QctMoiwGievWXQvKfrq6tjFvEs5RMa4XE6EEzEIsqp7OEkr9MUZCodoMQgTKIqYgTxKNKTleiYIGYmCM5eB0NgIYyr8dB+L6Vh99ofb9vs/OfHBlb9d+hqfdOdoC8qzC/H0hjfx2Mr/xsTiEgpHHocc9kUypos8f8XZl+G/Ln8IjUMNGKUFsrCcFlKMiQeboqCwsBgvf7YK765ehYDXZ9xHdxiDkuPtp3DDwqvx0LW3YGfnbiIGCX6N8pXIm4kVp2UtT6n0UpTh2Y+PvHF9qa+ickn1FQhFR3kmjMaiuHr2Eryw8UXs2rMKYmEphaBKiEyhKFJ+Ul489dmv8M1x5+CSSUtwsPswRKuYZEvMnAQZWlJQiL0n6vDsG68gEomg1z2YjDzGfjoGuxHw+HHr4mvQE+9DKB6BzSolLfk6hqeq6hke5ymhyfpvqp4O5vN4tV1/cuXll0+8ClarA72RXjJIJM47gnJPKV5a/jQ31Gt3ocybj7HZARp5qMovQVFOHu5bdR9CkWGMC4xDVI6QJ3Uqx4bHakc4GsVTb/4J8VgMZUVjkJPlhT/LB7/Hi2ynixiYHS/87Ank5+Rgf+d++t3CEdW8x9cNLY1364O9r6QtkJCRAuKB5h2F/aHuwvOIAvJ85PxD4ADUOHQKF1bOwyOX/hRDo200EcpaWnQr/RTJy6XZRWgdbsIjax+GR3LBJTl5vvDam4gi4Pfh5VV/wa6jR1FMHmYrzFaeTUYkUlLX1YLlC6/ApbPmYUvHNlpkychXVR+a8RMy/Z3gc1PYH+K+bDByo4rGEPTB3jdzltmgKkIyx8X6/sOdOQ7v1PH+SYjE9bzj4SPoecU8feeiH+MbNQvQGmyBzSERiIhwSAIZrWJycTXeO/wq1tevxsTAWYiSkTKFeCCPCHjdAbyy5mPymp8/2FxxiSKnfaAXVUVj8e/fux2t4VMYoOiwUlYx0s+Vj2oAsWoYrZnqSOFlUFB14cBqmqgJfN6UYHQHiaudzBQwjG0dbkSOuxA+Rw5GlSBXK3rOcRmC4fAgrEQo/m3pw/A7syFHRuGk3LTZLLCTwR6rFYXeHDy9+VGMRkMYl11J2BLnUu/Zd96iPJXhdbmT4cSWME6LMURp8uub7oHb7cSBjjq47A7uNZWMYZ5hxICFpYVCySLaaV4Sn5somhVB4xWBjbASR0iJIqiEMKwMYygWNJ5lVAijVEmDkX44bS7ykkSkXtalligk10Okmtjc34o5xTNw+wW3Uol6EoU5XgpD8iwtr0QhVOovQdNAHX675QE8sOhZ2NzAk2//EdvralFdPDYDNi0WC462nsBtS67HklnzsbFtM6ys9hqykKWArgfIaFUmwRFFnABHIbCLqTGeqwk1ynMzoZmhzkJYz1sWGQw7GEGxiraU45ixjG3YSfulyDhTDYmUZmR/6Oldg51Yfv7N2Ne5BUfad6Aiv4ozV4lC2UIGT8gdj7Un38G3p18NmzIBr/xtJcbk5GYwO7aIzf0dqBlbjSe+dydOhU5R7Q3BYbNz/p2QySAyLExekomwxMm4GJU0qup8PrKgz0c0+ITJn3gd5W/qnD2mxZJqiS2KidmSwDmLmAptg6LxsDOpIeXYkDICp+DDTxfcjQc/uBVxOYQcl4cknwU2KkVswTRLEd6q/RVObqdQjjngCTh4uJkcRqaJj1D5+c+f/wKSU8WGI5voexJioQRGyVsJCkdWrpIiTzMEgKCbxSSbqa404TS2bJAp5mfdulQ3xLxO1AwtiaSiUDivZQSaAZlidA4YwLQPNmNSwQwsO/dmys8uCnGFJqtR7jKUJvLgCSAY6UQwaxv82bmEyJak4mGasr6jGXddejMunD4Tzx3+E9XVbnRF+jAQGyTqGUHcCEfByFdTICg8hxMclRN0VYKFNQ32Mw79Jx+qzHkxC3vVlJIGgHFjZVk2kE5fA0FQk6uhGMpBR0eBl4veYCcurb4OMyvmExB0EEAJcFhYOWL5KHPvz53lRvm4EIaGWVAwTiyipb8L08sm4tHrf4x13evIwCB8lmyOoqLukiQ9TGg65ZMFPXTZ1GVeihKczDAhYQ5VUTJ+Z4MZrJp00yik3Fj2AQ8Pg1cSJ+D9IYZigoFkqqAPNqHRxCiPkp/M+VcUuPMp54LkWYk8LPByZGOGxy2YfW4YvrwYRoMOxKkcRSMxPLviQRwY3Yy39/4ZbpUJiTilgZXuLdEEGa+WOdgkREXvKyk6OjMxLhP/Zp5TVNODMuV1/IxheldnaILR4jLqLvMwQ1z9U2aazklTFUqXchpXIoSECRnBaB/G503Gsmm3E9x3w0LetdGw0rDbiSaqFuRkqzhvXoTf6EhLG25ZfC3OmTwVm+o3IEYaeW/Dehxp3U50sZHAaYjun4Bg4eqdI6puDE2chkqAk2CgxUAsIRvepUHGKWyB0gctCvOuhjS1ZLSMJE1LE+OqXskFpECKqxMzlOkDVj/9dh1lF1XfgMbwDpzo3UgglU95q1E5oigh4RIbtWLaWRrq6zso/Kfhwetv4d/5+ZxfomNSM3a1bce+jt2obTuAcCyOgK8Qed5CuB1eWJ0OepaF19AEU1Fqwug+IqmfTzcklXuq3spN9qpSbY0M8W4KafOmZlvD/ApbE8lqQw6RC/P1zaLb0Ny7BzZ7nG7mgGQhYS5a+QJG4glMmdGP2y++Fz6XL/ncYm8Zlk6iMXEZGnrqsaN9O/a27UJt0wEEExGUUN3OJeMddi/sThs0yQY5LnNmBiMXTzfErCaqqHIYY1hsMdozQtJYTUfeVEdM78dqGa0R+gIlc5y4p5PIfbbTnbz/Ux9vwuq2ETx8wxiMDNF36f6SRS9b8bgVWT5aLP9WuvKy5IIy4sCiiMnJ8QVn8XH99JtQ11ePbc1bsPPE5zh4fA9NWUR+dj5yA8XweDyULhaulDQjZAUIp7egeGXhwJUWleY1kqkWUvpQ5SFkSmadUxOiUi72DfegzFLGaRhXS/W78fzqp+h6UiwnFMyr1tAzbCFGpBd4ENB4hSKsrX8dbmECFpYtJ04r6CzJwAmzr89woya/ho8VM1bgQNs+bGzcTMbvxO7a3aTDRZTkFhN7y4fT7SCP27m/YqSmFL5wYjL55ETc6JSYPXjDs9pprQs1yYv1bryVWA9jJB3BHoxERxDIz+PXxQkpf/TS4wAtAqw+vLU+jomlLnidDLHVZN+JdQu89kKsrvsdJvnPR0FWFQcXrnAEPcR0bxvBprHIsGFW2Vw+bicP7mrehfXH1uOLxl3Y3LKNQNCBsbkl8Af88Hrd3HCZlSAjX2VNSbYD0zsdkp6WQpo2MHOV6h+xozDVw0ESA73hHhS5i5Dv9utA88aTaDi2AyiroS8m0Ncm4p1NCdz2HSuG+/RwZXjHSopXykNT8BjePPo47pj7CtVdCZGYzm9dDhdv05zWcUm+7BYr5pPMZCMYDmJL8w5sPLYZm05sxd4T9chye1A6phgFgTxkUahbnUwsmJRSyODlkvYlbSwWUqy+jYSHMUjGKnyjSkKJt5R/vvbIF3hu9UvAmHHG/CiP8kR8vieB6rFRzBovYSTElE6c77+w1fZnlZGH1mCN/yUsqb4Z7aEuuv8g7DYHchw+5LpzSTrazmi9cEcYC5DlysKlExfxMRgJkdEb8UntOmxr3IPdR+vg9bhRXVIKV7adz8nB+llpL0kV0np1vPVp4XV2gNRQKB7iiR4nzzmJ+07wV/PrbnuPwtcpkgEOQk8yhoWtVS9NH36mosgXg9PB5JedEwOZwitOl3htxXj94NOYVvxNopbF6BvpIGoXQ+/oAI4NNdLnHuQ5/CQZC4ic2DP6SIKQ6fIcpwdXTr+cj/6RfjJ6I1bVfY7Nx3egu/8kfuX4M3afOgaPLZs391MAZcY0kfIISapBenhYjXDDJfLKABk9LquCX3PHe0+isesgSkvHE9rKcBFzkgk8ZI3KQ/Aovjv/X7Hs7Go8t30FPPYyjgeKwssfXFY/OoMn8PttD+LxJW+gKLsMbSOtHD2jpHAGQ71oSNQRQXEj35mP0mwqQV4CJIstvTeq96s1XdWw/wLeAG6aexUfTf1t+ODQGkRHEzh8ZDfUrlYjh43SY77ixEh6w32ctVgsjMKxlofGN6dmlkzF7qaDeG7Xi6gaU0oLIereJM/aCAl7u1tQPG4Snv7+rVSeBIzPXoy9XatR6K7i6JhQRO7hXFcp1jV+iikHX8C1027lDYHO0XZ0EdKHSXxHaWKjkUG0DrZgw6mNuLBiIS4on4tQlElBB+9CCEbXg/M9wWjyGWBXESjBXQtv5vYsqZ6Dz/Zv5YuZJBU6bEPfWKYVtpHo1dsjrAtARd5XBDWm4oG/PYQctwXZbisi5C5WJyVCa9aRBMJ44aaHuKHsde2kB3Ckaw+FaD9ckpd4MBH5uMBZUY69GH/Y8hRmFi3E+PxqZDmqaXHGoSvchVODbSQaWjGg9nMvnpVTye/33M4Xub6eUzYL0wunIduVneofC5nIphm8YVb1dD4GB4fQ0dlJYayK+o411/YKVymcd7I2NWtekQatCZyNF3f8EfVdOzG5oAYR4q2MZsX5RpmAwaEB/Prah3DZlAuT4FKQXY7LJ92B32+/G4WU26Aw56WBJpwl5aI1Vo/H1t2PV67/IAmKxVlj+JhZOBOHug/xrmW+Lx9bmrbS7/tht2bhYM9BZFu9qMqtxozSszGn5BwCIkdGfpuYxioCQ/qBwT7uGMuM7075JSPcV519HVqGW/XtPr4nQ7pQiaGEJt3SVYvnt/4ahYEiqrsS7/ALRsM8RuQ8l8rRjbOvoBIVo1p4AF2DPagMjMWEvGk41ncEB7v2w2sNIEZAJtOqhykq3DY/djTvptLiwuyyOVyfsgnp2CFiDEVTRUDHicHgAIajQYzGRxCMhzEih1HfdxSrj6/G6oZNaBpqJexwoshTyOfFyh2TlXyHn7h8T3cPiouKYsLy15dprJa+vWIVtrZ9gRBrurG9G7aHI1GxVqN4f9vT6Am1w+3KJVBiRwRUxCgNYrKIaFzj2dAaHEHnYAjoH0Rp8Tgcf3wdecKF3pFu/OD9RRiVo+SRfMpJYq4JkXIYGBoNkREhfHrrpyjLKUNd7zFMLZxEqWFL7vHwdLTo9bKx7wS2te/Dzpa9qOupRTg+CiYK+6MDnAgVUlQ8s+Q/MJs8br6ON59EdDiCqVMnD4vJrUOzn2NII77KBP87j79LOXkKRYymUYg77ZreneAdChoMpBBDnt2OqkABLLn58HhzWELwe+ZRGVk+41509vYhREAVkylvKXiiZK2dULc/FMQ9H1GuS06cHGjEy/texZrj69A90qdvk1iS2weozKvG96Yvw28ueQyPXPQALqm+BD5bFtfLXaFuHOncS/fJ3IVdtXNdstuo7/0aDIrVVKbR2fEAm8uPRlIznf27UZSbS4aBG+ok4xxWkf/OOhROi4V+kt4hpmOjiTlZP9mitzBNKXHV9BtxSc01ON7ZSCRDpPSgcCbPRuUESnMqsOrgJ/jDphdw9eQr0R+JYH3D5xiODfI5bSBR0NR3KsMAm9VBCD0PD190H96/7jX8ZvGTmEGgtWLGLZhSPCXpvA5Kp3X7N8HvyzZLj5CqPtxwmYzxE7vpRmPHB3C5BJJadigyyzdBP/Jj7IczdFRUKyx885WRcUb/BZ3+0aqF4kEySiMC4MM9Cx/ApoYtaB/uRjbpYdY7ZuWIHW/x+4rxs48ewaIJxI6qL8Smk1+gmlD6aHcdXjnwKmncLJT7SlBD4HheyRyqCP4UuXAHcO30a3Dl5KUc/PjpGnom27X45OAmfH7iEJW/XINBpR3M4ChG+ZKgunro5AsIhvbB7QkgIgfJIxbyhIVIh4wweSdCSTtKORuOiZz4j0ZFhGLA8PAABigkGS+2008XPTQiR4gVFeFH8+/AT965A1m2MPMPFCbQ4wrisgytoxvfemYptj78OX583g/5fHY070FYDpFWtmBvxyFsbfwCb9vfRVVBFc4vnYd5pXM43WQvK1FNK+tdqSoHJ/b6ZPd6hEeDxPGNAyRKclvYNBY06UFa7alYMuEGBAg1RyknGNdUVIuuKtjZI0VHPbaKbM8soUpcF4dpMTxWD4WMlZ95Eknv9Q/3o5vo54KK8/H8d59BvzzCWzc2KjcFtOo5jhxKDzfqOk/QtX0o8OTw+Vw6YTEqckqwq30vDkYO0+Io6Ip0o6H+FN4/+hGhbz4ZfS7ml1+A2cWz4HI6CcktSa+zbqbV5YJo7s+yGpuUeFxwM4kk45zSazG7cMr/+QwSC3GTz3rtHk4Hw7EwLpx4vtHnksmjcQ5j/qwAKaoxWDRxnt6oZ5Ka6ngh1dgiXwG+UbUQjQReW5q2YVPrFzjadYzqv4z6wQaugn6/64/YfssGVDorks9v7+tGO5Ust8OdLt713qop3tnCJAg4vJL97xqkJLcPE0nqxvg1O05gnj3ixhLb8bp8FM5RAiBiM8NtJAK6SUSEqRTFEW6JIUYlzirY8J0Jl1NtL6TwTsBqS6mWSn8lH8umLqPSsxNrG9ZhfdMmtLQfw9LJl6MytyJjbkda67ly500C4UsOkDBHsK6ek8KwOKv477tP0L/DQIuVErZNyeGcFs9D3rTb0haMFtVpdaKEDcrfYdKmrSNtaBo+RR7vJEk4jBwqWczQpt5TeO3AW5hcMhEz8qehPJAyxG614oJx5/Nxd2gALx18BbPGzEo2DBlnbxlsJ9m3m/e9QpQyyDgHlTw5BmIpcZR6xvLQ+/u2CkYDWuFNOialImR0jASFz+Xh/dvOkR5CdycRfh/f5DZR30fa1OeaiEn5E9BGnt7RvAsVuVX8488a1qNusBaNwUZ8XLsGlaR+ZhZNxeyxc5GflZd8frbHj7vm3ZGKNE036NOj63C45wRK/IWoHxlME+9a5tkEtldS7CnK6A991Yt3fdihD03iW5ixBAtHGT6rj8LZTmqG8ibUyfdr2kUrEX4Xch25ZKQ3tWdKnijNKeUDxhmMLHsWqaMCDJCISGhh7Gvbg40nN8LneAlT82aQGJiDhZXzKB89GQ1G/dQdKCr+irMD0xEQothbt+d0Y/WrWauSCegCoy6d3qlM3+BN7x2ZTXYH/bRSrkuCxDE+GovBwtE6hqASJkTuwHHlBHnajTyqj2XeMcgij6c/i+XYdTOuIXm2GDvbdmFr604c7TxEAKcgQtKvsWElXj78Foq8ubi48iL8YsH9cKaly8nuJmw7vBZ3/nAF9h0/TvgTSzv0leZZtrlUQCvqIoPN+P9SpNVPgOm8lYzldU3QD2+wM06aQc1KCU19dhdJxwH0MC8lGNInECQ+3EJIul+zkzjPpRwuJtEwgRiYNbm4fk82LjlrMR/Heo9ja9NmrG/cShr5AMVeFLubt8FDIiLdUPb6qHYdiCBgenUN9pKxqbNZvM6yHexUzha5ipEmEs/MU0Hf12RyTWdR9HcswXWtaLWT4Va2D8qD3CI64HezkYtiH/HX0U7K4Q50DnXSM0XEhBCa2ptIOmZjSuFk9IX60TzYjGljpvFFM18TiBOz8YMZN2HLqW346PhneHPv2/jJnFuTqSca7d2VB9YQIBBAZhGxSSiZPaj0c4FZpBPzqVCnjPp6JGaGykQyGIKPJohaRKO8RcJqJT8wZk2BvYuYTqWtApXEhXvzBnCKQKmp7xg65XZMHzuZX7Pu5Hr89ejfUF1YhRoCq5lFs4j8V6Z27YklLRi/kI+7zvsZ5bAn1Smk4DrYXkv0cAfE4jx2OoMTnoztD40fUxW5Ls13+EnN2L7WRn3nm21fSvyQCesvkY7h+W4lgGDnL/pHB6igd8JNucm2StgOgiikamYeiQw2ZhTWYHLBNIzLGQuZCMfO5n2wUG1t7T+JQx378JfalbyjOaf0HFxQOh8FtJDma2x2kd70VVNnE1ce3gCEO5GXX2ZuxSe1XFIIMA/ZKQT/kdpqNrm4+iAhz07PqCqFb9RK93Dw+7ITNsPxEIbCw6RBGxhMUinLIgNzCZgKKYIc/B7sANmkfL1jGaGouHralaglnbqv5QAtXwhBAqRDXbV4bd/rvG5PLa7BgvL5uKhqEWryzuIsK4krlIqvfvEa4BZA7BwR+iMxDEhDWIn1h2PGiTB2FvGfeZmRzg6FZLu9yffHeAoQcPg4V46x+1NJYhMfiPZzfmvPKoHtNIbmdDhwXtlsPsJnh7GpZTMauk/w85Ksbo/Eh3knZW3jRgIlB2ryz8ow5EhHHVSPhHmTLoHVJyMbefygCdTTmuRaGpGK8x2wzEa1mH6AwYS3tLIkpAl/xnuzHNnIgvalLf6EGuFNdyYc+PeE1P34P8lTLsmFSysvJo548VflElHVGI9efiKEfq8IjEXtXWsJ0W2UUoQXsKMt2K4rmyRAUc5tObgaFY9O4a0SzTwvqumNOFU1T3YbUlBNNetVY9daEYzD8ex6hREFXSNnnChVRGOPVeMGKqq+Garz67QkYT1e1haiwXSxzrmNLg3rFXNppumHOY3/LYbNyUJg6BJdegOC1XjW/mk5hrLcCVRSiT8wY5ef+30UWPIJppn4lqCZko8dPVBF44yRcfrE8AATDuln9RVNXyL9EKDIa7R5pD5Vx4XUosFocgspA9TTDmSaW+EmKeWtIiW9JAoGw0s7QC2YhygEHj1i1QLUjKmAZNe/878CDAC2EOjgNfdWkwAAAABJRU5ErkJggg==\";\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+oBAAAaRklEQVR42sxbaWxc13X+3jL7cBYON5GiNkqiVsuSvFSxHdtJnLhI0rRNkCaAu6AFArRFgiJG0RX90Q1ogC5IiwYpiqRNgLZpUjiF46y249i1LVubZUmWrIWkaJIiKYrkcDj7W/rdc99sJJ26sVH0AU+ct9+zfec7514ZxYUxxGwHE4UsxlbTuDAzDTsSxtYuYGK2iDM3ynjXFhMPHd6M752eTn7zuRsPrfjh99ZKK5+4PldKGoZfhefAAOB4HuD5CPkGfKjfgOEAvs8jv847fPiO+uPD8PVf33W5q3s99QJ1S3Dsyzs8z4XlmzBh8wGXp9ULuJm8ru7ht2AYvC6vl3GoY09+u4hEw3jPPVvxz5/7hRSvTNvYcOOnPAOxiI2+dBjjt1ZHP/3FU3/07RM3Pm76vj24KYldfXF8ZPsgPNPmXYYWgs9ZfDrCQ9v05ZwtkvHjvqfHCV8GpeXVg5aNfw0K7ymlyKOeFkgE57ESwqXIVIZ+DnLNcxvvD97jK+EpKg+rpoN/fOwcfnhiEpXVPKLJdJe9XlR5HP3ZGKbmVyIvnp/7/DPPj30qnovht352P37p3mHs25KAaUZk+P/ft7HJJZx+dRLT0zMYGU2jQ2ClJIOazKWiuPTG8t2f/cqpb1XKfs8f/9rtePTDo4hH4nLfcs3DcoHWcOpUqAfXM7Sign/EzZS9xZV9Oe/6jctapZ6nFdv6tq93dZd4dsM/fXm/R7eGWL31mNwtHuJ3vMfluTDd7J7RrLi2T28zDC2q3W5Zk8IO9STw1LnxR77wb69+dcv2Xvzgd+/B7k1ZVBg6V285qNZ97Z4csWEqQU3+9KC92pLReL6rAlG7JrSk6r6GexoisBawKWzTzb3WPa4+Z3jivwwf5bHa5T0eGworRBGm/k6gT4EAR3ufBe3iRuCMduODPIWhnI1nnp1+5AtfPvHVhx7YhW//wYO8wcTEzTqKDuPT9PgCX4OCvMBDYMsmWChrGL62stg9eHegIypVq1ddU4NXg3V9BMcIlKQFNgItyH3Bc17wvYaZGr/9tr9KHrsZbYYalniuCBwP8YdlYXOPjb9+cvzYn3zxla9+8MFd+NbvPygxenG2woESI00NFvADaOLoPQPBOW0xGIFb+tAC+nroRtNyysWN5qD8hm/7jXtbbqmOvUAIZWmBO+3tMPxWCAItL2nfXKdx7HWct1+fK2NzNoypciH5O//07L/s2p/B44Gwlyiscg/bUnHasCb/VTHrGzKoDrdUSGtopJQMFRzrOPZFy35w7Acu7Xv6nX7gDQiUqMJEvmhClKTjugnofM4LnkOnwEbwXa/T8k2BJ0opLDKgH/3y6c/BsLb94A8fFK8/N12WAVrqBa4XxKYRxI/THFwTgPyWO4o1m1Yw2s5rEzWArDEgt5GeVDyKVk2tUOZR9XKFDfq7ruRifZMpHuAFKawdeAW0mvJ3ZhL7A4eG8J1zs0defO76r3/u0fuwNZfC2HwNNbrEUMpEbxSoS8Dyo54lHzEsH2O3alit+YiHAyW4fhBTBur8HeP5zZmIKMltuj8xgMKMzVdQIgomoxZqvGYyQoa6o7wWEnHaEdtTpEYQluSDYVWquhibKiIaYpzahr5fuVEgtLKuy9+2p63RiN2mwOdvFfEXXzv9mb5tWTz6kb1Y5QsLVQ4gaePpyQpO3XSQDWsXVgp2+U+dpOnj+6IYTBqYKzh0ebOZhpT3xSMmlosu/v3ktNxrBcI6ri/x+MljOWzqjmBuuUahQ1gqVvAPz09KJgiZ2l3F4oE3NFhZuVLn/TYe+eAwVko6NZqh9pQY/FVprOnSnenPPnlmqu9HJ6d+/i9/4x6lQ0wuVhGy6khFQnh1wcNffbcAdBkNFJJ0g9k69uV68cidOcwsFSmQGiA/bGq8ziVCeOpSAX/2tWkgbAV+T8kdvmd2FffvjuJnjg0S/R30pCwU5138zdcnUCvVKLGhv6PCyA1iRVFO5UFTy3j/w8O4/TO34clXFuCapiCasqLrtqyoQqx53BnCsJ84PvuhdDrc9ci7t8mNVbpymCotkFzc0cvBdpuwbB9R+p0p3zZRTrp4fUlUyTRjBaRCmd8MUNQhupeBZAzJdJCnXUvyd7EcwvHxKgWuS5or1jXH7uqL0isMxK0AlWT3tKUEyV0UCzF8+APDMvDZpToScVMuGUaQ8xssVeLeDly6U2DzwvTCu+/Y1Y++TIKxVaIAzIsI0609bKNlN8cpSk2jniCjko6xc36hIgM1WXi4AbFQwloUaonufHaO1y1qXwoLX6BD4orufup6XjAhGdEOo9OUo2kCAcoiVigAM7hbvqXTWp03JmzccWAA84WaxgtPC6etaTQ910DAzBCw37aUZa6Uaz93eEdaDgo1YprQNw9lMpUBVky703wL41rnUE8/zKC8MutgpWKgi4OuO65OM/xyLGTh+mIdl2/WRDj5fKB++WzUxIWJMhZXHfSnbFZPhijZpEWMBiU1tGkatIJio1SsY+f2OEa3JTA+U0HEtvT7JNUZQQbQqc+kqxuNosUw0E4+zcXlMo6M9MhB3dH5T92sGFPCCmNvOgRUXFqH5x2dJmgCXF2qYr64ihTpteMami9z4HGi+titOpaWHYRtVcU1cpJiW1QIlTBNhB+/UUR/TwROnRaiFUvLVThzy1gplBkZjWTSqJz4D8Hx2IF+ZLtiWMzX+B2LQoMKDrG8DYmiVXUXIQZEaBDb0iI6rs4QDevbnlsnxFut5C2kM6B+vHOkW19zql6TQsbI28piRQ/v2xGhUHWtUQqlhDw7twLmNcTidps36ZRlWryhXMLZyVUc3dWNMgqwmAXec0cvyvWMjOHk5Tw5uyeIrSDaUvhQ9nHvbTl50xyVHQ1r5uW6FfEuR9FdaISvE+SiAVga5hriAb+Nr/hGEPSMR7pnoVbHnkxIrFahAFFb00SVLcvVOsZvMtr32ASyMj8WQoIAVql4eG2mLICmSYfmmWbATqyAfJweL+FXocE/TWv9+S+PYjAXxvdOzODpU/P8VghGwKMrdUpONnhsfxZnJ5ZxeTaPTCwSsLKAmTWYMwVXVo2GbDlnKwW3AZdtdLARo1V0+wqpgc0M7+1pHxfmPElbHLkepePg6pwSLIupfAE2EXYwG8eNBRfX5zmKqFKEq8FOKpsA9JRu6XpnxovCmpIJC1M3K7RaCfPLCTxxaklCKELSosLHpNIqdPc92xPYMZzAY8cXRAij4TVBlWF2cHFPZJJIcv2O1GS3l2kKlPSxvlhlbA6lQhihlS+Ms4igvyqUFhCiv52dLsugtw7EcGkqz9gs4cKsiakVF/GQGoQpA1G3m016yX/o6tfeKOIWSQ8dkABYQhehok7Cc3W6JCWVLx7h6vpotYQHbtuCBPP79VnFE+jkRH8JPy/Ah1YWFoJjB50QrHVp13PXVRp+QPSlRWOGsJusCG6ez7pN/qEQ+PKNCm4STB7Y3YPDg0kavY6nr5JsrJZh0gWlZvZa9N3wdRqJEFDmbpYEyUd6Y3i6toJozEah5GJ+sYJGbSf1kulKDn/gSA6LZFeLKzVk07bQxwYYNihlw3NdGkplNqNBLY22tGS23djoLzX5J19acx2M9lD9pI+e4zUJAbMCppfrmFioSiikSTJymZQyhri7L30lRf91mvOI8JIBpM/F95c9nLlcwgC9RzG1EFPJDYLRjcUiIgr5FH7yc7UKf2RtHB5N4fxkke+kMMwm1K2UgCpe1a74uiO7Ogfh81qczvJQ8fFmBDcsrQTW+ctHnui8g7VyLgGQ8tKlNfkIqxGtVnBxutJ8WalawclrROgIkZugZ6kOJlOEW3ZQr3m6qgniUmn9xNgCS3EL6YjF+0KYXCijWqojbOo6WnUva4tlHB5JYHgogwtX8vQOXR/TDpJGHRrBCZTZ2h3BD12iK281pZsjAis09nx/XWXR6IKUahaGGcd7U7zG5K8GoQiGoG7Vx8X5lsDnKPw4YyxGbzYdV1ozRVYi3aRUqQi/I/laCcLRRg2cvUKeXidtjVlkZ2VM3lzlMT1a2kOuJiJ04fcc6UeUIXRlukBlIBBGU1vlyp5Yde3eiKPO8tBUvGxtDDc4txJYuUoyFsK2PjKMSlXzVDfguBz3+FRL4FOXOeBCne7pBpzRRC3v4ZN3xnF4c5JsqUKru9pDmFauTJYxR4DrTtXx7MUJTC+swmA60cUD7yVHJnfFfbf3Y4axXSBeKAdVoSVCOggaDYYIWBNX1rtT94OS3WrPSgpE24rxNsGNoGOlmLVCuj19MbnP5MdMV/eQETMIPJVmnJy4UmyWdD6tWVcjovAfu7sb2wYTogxHVK9i1sMqLfrKWAEfu3cIt+/oxdQ8z4f8ZoekQEobzYZwdDSD8+OFoHHv6Hjl9/WufvOcNPRd4Q9u4OJN4Ou0sNdEOsNsqyAVJxWYY5FOXj3Sa3Mw1HBdu6qpnqN/XSfJWFzWOfXExJLkX9YMEuuVsnJnA3cfHMTuPr687IjFxFWluAZJxqzibnjo4ADKyyvqQYk7FecOQezIaBf6BsI4/to8wkyFqhmhqKzjBn8dZU3115fdbeyNBn0ToRsx7LXqqjWVlNyswrpI4NqSi6I/HUaJNauyrhIoxouL+QoWGctLK8ynb5QVXmlUVqYmn94/FJE371GVCK2t8qdqwQguEZnPXMtr77i4ACyVEbJNsaBkjJUq3n9sC4v9Mr757BVMzKzg1vIqqrUahdJNQZVWHdbaYlllcTl2dBu3gUttJjatYA5HC2i2NBE00FTqXyDlIohSaKLRak3iRQklMbbK1ETicH5yhYhaRVyhqyPdKFq0ikPbuuR9e/k30Z1Ajc9byjscMSyukVOrEV1RLsvB2a7O3VLe2XUcJMPq6crisx/di239FkFxEccvTePK1CzyK0Vy7rrCPSlABXNULLMCq9Xbsaklse23EQPdwNV5WvWtKo7Fgr1OT3QxmAhjK3PmC67Qs4DHelIknCX4KI2rzoQuIZW7GtKluGunFnj7QBQH+m28dIFkP2eKV4UIXDMsQl46O4erMwVVlUi+VgMqVon2uS7s36FnO37x4X145OEazo0t47kz8zh+bhZnr81SQJaxuTh6WLZFojHyg6B+DkiJ0SChgfC26kj6XmdytuhvRWqpRFetuX5A12ilARJrY05cRtWwoilywudOz6PGPIuEKZ1FJXO5QtfPRHFQam2FdmHsH+nCSy8vwejWLCxOD8mzKvqPZyaxSOZlqXzWqJ2XKzhwaBNGd/a25YwwbtvRJ/unPrwbJxkGT52ZwXH+PUGUt/0Q+vq7kOlKoN/oEnKkqmYFbI2Ma/uN+QyZavE1etYtFCpuoAhd5RQYu/fuSZAZ2ZgvOUjoOUN0qf7Va3mJu66EDdvRjVS/6GL/cBT7huJBa9XGT41m8SX/ujiAIXmWJSTLl399coYp3pVOpDTtZAKrirv2dkkXZF1jSlVsYVZPhwZlLzJdvnB+Ck+/PIsXzi3h5bPTiMVMfOPpLOWwkIzbzVC1DbfV4bYoMEOMud5rMn0FamWeU+3Y+/elsZm8epYxi6zuCyskr0lBYUp3UoGGNHvyVey7f4D5NtZMW4dGMjBSrKVduqvhSw4NkT8uEtzMwBoqJFzVFibaP3iot8mTTdNYx/f9oFpKRCN46I4R2fME0SdPTuH7Zybx1EtTOH55BZlQUvpnuh52vCbdJKuDahyaZtATDtoyqoe8qzcEMxTCvsEoTr5EUTO6caZsF1EDNIPmmRvMADo1HAniT5NXFwdGkoxlG2NvUGGpsJ70Vi8J60lwqa5oibLqWffEcPS2voD/rp+WFfq7Lq+wtk5H8dH37pS9VKpgz0gcp89cw62FPAYG67o8tILnlsqetEd0t1+nbBWPIap/EwmA2g7zBV9h8jP8iG6RSpPeg+60e+KqEvcs6u/cmW2jbSwZae39w1mMnV8GkrakJ8PzW22gxoTcqotDd/Ri29ZMZ/X2FjY9c+mLkuLxKD77iSPAJw6iWCxh/Pqk9hT1j+oDqjhUcaxhShYcoEL3zsYt9DAHq+32bSn6NwkArWA6uqnXAD5P9Z4ZlxXy4k19YdwxmmnL+fr5O3cxLqs13Udwdb85RMuGjMY0CyQc7tqf67DmW91U29g07bbJel96NLFYF4qrhUavTLdRO4sHvReqdQyp3nTgVvu2ZdCbNYRFGSr1KKoT0DqTDMdUbWaWjfuGE0gTpddudx3qkea8S0UqDmAGJW3DwHVhcAbefWjgHVkB0JiBmJ2dbQZXB39utEgklZJSqj6WmhZp3NrXE8f+zQkpDZm06JJ1Pasgu3YnMHcf3ZXacPbu8PYscv0xPl4jYlrr4rNIIOke7sJdR3PviMBGUC0tLS4ik8l0Cqwb4l7QufcIVnUMpCz0pkMIuJNsB5Vb5+u6D6y8QxakaDoonQgi7p2j2aDL0emOfQNJHFDPs/Jpv9QsYhZrOLSnC4N98XdIYA51ZYWyVLBpYGCDVSmSjvQSAkXZNnVHBcwNv3XrkT0pvaSBpKHBYb1gyVKZeS2eiRCRc9iQoHO7bU+3pIS1l0QBVPKx0d7m5Nw7sb3wygSWyR0i0egagf3G2gsScCdMImBgKGutXeKD2+iWoVQUVYIPXG1dQ4RnYUCGNMrad8+uzJsO4C51zTSlXWO07TXVtyFAvvvoAFoLHN7ephLGY09eQtQ02mI4mI4QYQ09L636zr3JEFKJaEvSwCQHmW629kZQY/lWYyqrKQrK6luVaVgu4+CudGNSBx1GCn4fPkjgSsexki9jterIhNoqOXl5yUHv1izuPpzriL+fCKyCDz93ehLPk30N5NKdoGU0pzZ80bzvV7EtZwW3GG0IzjRCFnRoVxKYq8ClCzp0T4e1bpVABpZyd+1NBd1Df0NaOLojiYMjfHehgrBaaacalSz5cItkhWkrk4k3u5w/6dYIh28+8zpu3sqzlt5g2ZIsJPFUaeUjHiE6ZyMbaE6vxPnb37sbv/0rh1j/hjTIydIFR5YLHdyZCRjSmig1dO/btkN44u/ez9rW4UBUV87UU6lUXn9/tJVO1LesDnCR8bWvynmzTadRFz86MY9UPK4nENoFbrkccyzdbCdTRywWkhl/y7DaErv+0CZWTmr/8QhpbEAMTPGa4cEs9ze3jOo85ot1Kt+TOYQsKWOY1Nb8X3j51TcWcXOxhP6uqF76tNbCjZU0CpEHuyMbQ+zb3PwNOqQbKckM2sSLrJoWl2qsyW8hlQxjIBvDUH8KoVDLCM1++hqPOj+2Ip1SvSDVWG9hpYQaU0yK1HFAzRyonp9hvKPC+v76ymdDimjZ6Oki8WEZGE+UMDFZx6uX8vjewiTLUAtbNqfIyzMY2cKMwfiUygktJdxYWMGpi/NIJyKEldUmlqxxaZ9Fv4c9m+k+tvmmgzZ+AiV4QUEiOZseZPP9ejEMGsvt9EIc029VQfyOahEnY2lsHUhhdGQVr4/H8OqFZfzndyfwBWaJvduT+NNPH2XRn25NpDFsvvP8jPTYEgzfpQW1vMJeL7DHD0So/c2p9e7cXDVn4G24ui8zEAWCU52xGQmZBD1TivWwTXJjWZ0LTtsKQOXigz1dst93ew2XJnrx+DM3yBdq9MjYmpBw8fjz00jFwgTCoqzVtu3IeoHLROfBpIn+rInWiseW9b2AmKjZ9XYre8EKyI0rVDRrWhW+0UhY0DzvVrCwxDzMUtBmKakWqPR0RZiSorSG1UyVfjDHBDNgYmpeiy58YNcQ9u0ckAXkMEJtTQJDemTPnZ7Bb350FGfP+Si6bU289jzs1ChwOkZN27I6rjN+fZmsqqh867ii8QgLi0QiHBQAxnolbUDkVfczFQojRsV2EYQKKw7mKfi1yRW8yoIiGYtIU26gJ4r+HKmgGQq6PLrbYLTBtJSClrUuzB7/r3Hcms1jz9ZunB3owuT0XGvJQ0MYVRrESCU35bR1zbUDV8sQ+TGbblghq1LrLFRnUaFlMhxCJm2xHIx32Nhv8w5jTSiEeCJDZal9gKxtaSWG6bkixmcreO7sDZmO6aG1t2yKYevmDAZ7kxTOXFPqoEWKAl2X6g6eeHEW4WQMO7d2EfRsyd2dFuaAmHrRTa13p3QpuBaYlCC2WizCuIjRLZOxCm4VDdyYL2Nypogq83UXraN6Xn0UoDuT6FjnqBefd1CDpkpCJCJ93WpPYv+Ig6nZJMZmVnDhWh4nX7sJ054iaCWxl7X43u0Unr9lrSW5u2nqiWBHpnAtPPX8OF65uERh09g2lJZyXS2zsFppSS9VUXX3QMYKBvI/pAwiaYJwnyDP7mNevEmXnJmr4fp0HpeuLki3Z6A3jhEObMdwGlmxfOfKe72sar37h2mRHVtyst99sIQrU8u4dG0Zpy8s4YcvT9ObTIzsSOPOfT14+F1bZB2mYogNRvYY0Vn16WyZLDBlxX7HemnhvGr1KR/YiEpunJp0elJxHGU8DvepHTiwPYWJOQ7weh4XL+dx/MQcUnT14U1J7NzSRaDJIZdO6KJgvcnbwsAPWsBxHBlV+yAePlbEuWvzOHHhJr7xgzdY0Bfx0/ftbCsILEzNL5NKvoF0LoF82ZOqD0YAdmabwFWaN0mBQ8nQWyyqjQ1zcSIZwf5kP/bv6MHM/jJeG1vExbEFXJxYwpnXb+H7L05h51AKRw9048DuTbLgbN27NyiilXK7swncf8d22T/wrmFEo3YbL9D3fenrr2HshVmgN6WmsoU+KwCWCrBhYdV4iwQfjtj2O0OpiJ6D/UnZ33dsy4b5+H+Ty9cq9+CuTRte+9BDu3H00FZ6HQULRdHbG2MJuhosQg9AK5FI4NmXLyKZMpkXK3q+6K2UZQbeknXCjBXLNJo0Qhbe8BOVip7n/bGsrW3t5MYfD3rgMGTWf3NfApsyESlLTauKx5+expXpZaRSsWZtbee6I4XPf+Vk6vN/f3wF9v/B/0N6q7T07bZ3giURiBADbu9X7WdVpBf+W4ABAJ2SzNRqphUQAAAAAElFTkSuQmCC\";\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/eHBhY2tldCBlbmQ9InIiPz6x4oA3AAATPklEQVR42tRbeZQcxXn/VXXPsdrVrrRatEIg67Ck5X6SMDEQkKVgG9kRJEAwYPPwc2KHK4AinH8SbIgUHgZMwM8P2xwGDDjG4QjmsNDjYQkwso0twDGEQwLtogPd0t47091V+b6q6pme3p7VConwMk+9M9NT3V3f9ft+31clsWbNGmzevBlTpkxZMn78+Es9z2sXQoBfSilIKcHftdbmXPpz8t2c5/F8zg6Bhvuwn6/4GSOdS86F3+N5pF7bN23atKyrq+vBjo4O+GEY5lpbW5+YPXv2oubmZpDA+P/+YkPFr3K53EKGfIDkPC+KojNZ4KtnzJixiLXT399f0VIsOA2qXBxbu+adx/BDcjnIF1cBN90K1TQW+oblKEybAe8gWJYF4PPpI3mePye/x9fx/Hmu06ZNW0yW/kcW+Kp8Pm8mz0LGwmS5NL8n3Zg/SukjlALRT+8HLvwq5MQJiLbvgnrk58h3dgGHHWYcGxCjEjjtlrEANWGTGpu8Jmnd2HB8je/7GBoa+idZKpUm8kk+Yqslj1jI7PhgiekareCTsN6ChfC27URDGCIXRhg8+ywEBxDHSc9KCp6llKoRqr/H84/lY1klDe5NBn/6wlqLiswbCxLOfFq8yGqZPeW7N8F7+fcIN3Xxoz+0sOnnZs2v3tyTynDC98r4gnQsxPGQ1GLsAcMswPHb1AhJiM/xzFaVX74IDTyBp59CeBCAKOu59cIg67dYPlkv+DnYk+fraVe4CA3PPhv6yV+a7zm28qHtCHxSxOrncaC4P+yZKbfOCr2k+9eMzUK5NCqOpEnB4xmplyxBGJBtn11ZgSfdcQT0uxugDoKFswBqJGRPj6vEdTKBp60aI16deHBPs+P9ufOASYdBX365sTjf2Js6FYJIjThI+TXt1vXANMuyNQInfbxeDNdXvYRPY9lt5R0/QLTuXeB3vzdCR4Uc9I5dB8XC+xu7WWNNmo01Fx9pgErm4BrLxg90sM9xK888E2rSJITnnWvAy5s4EVLpj0TQNMXdF3BVLDwqK46GIbkj958/B7q6oF7/E/TJJ0NEAWvwY6WaSSySSRSup7F62qs5r9mtKQxOnQ9x8qkoLFwAUA6Oxo4FSgMfiZWTXjlawWW6yshyj6zvWeeiyCnssUcR7twNdcON8Ca1wz9osHXg8S4P4i2REx7yTCTbD0F4y83Qff3QpRJUccz/mVDpjJI2jBytK4zqgdLeUOoIcuk3IY46CmrLVgNg2t4o/vSxWNe4dJKcj1bgNCFJW9qnv0U6CldfjSAMEF6/3NDLcqQOKhDF6TNrXmlKOaKFDxS5Jbk231jt3mWiV17zbehfrYb2PVcmfjxWNgQpyaaS2hihZVJTe2YBmFIRIkl16CuvQRx9pKGYpdOodOzcgGDqNAjKzZ5k0cWHtu6HNYr8KLSpKZhNyf/KWvizZsN79DHI9nZI+hx0d0O5TsnHkY9lum2StnYyR6eLi7oEhMfzl3XroCdMNMJ5b7yOSIfwPzkDoqcPZTpbDsqUvvV+xWxWMZO2eFbhUykP00G/L7DaZ6xoK7Tqep99G+K0BYZL5ya0QXZ2Itq7l0rHQxG8+y7CXN50TA6k37W/Xc+a4iFG63pVUjq2szQZ+6pc/YJ164XzbeVEX3KHfYLY12aETXnImTNpzEtGGaqSsvYtQFYTrx5Kp73UAuo+iPdoACIzuT9wN3RrGxUTh8M4uGChI2Jek4DNW4FT/xxq4Sko//utKHFltQ+AFC5MdCp8agyTobi0QmRSc/U0ltU5HBb79I+ZpXIPVs89D1x8qSPs1mMiTfy3HCDn5yBe+DX8pVdBXr0U+Nxnobr3VKwdJYTRCVyQvm/aSZoOFAqU7ItQDQ10FCkrWCDUki3LR7aX+iN1EZLn0y4Vtz8rdaZHnhJROvJyUHf+0EzcX7rElI0Qtsnj8aTy0pAQw8huuQ2KlfIXCxAdeQSC738P3jnnkVKGEAwOwgsj+HREKoQm0iK1cIqj50YhPVMiINqqJ0yAYMFNH52suHeXyRRZMvlZLpvFVtLnk+ht31kCzwgT/fM18OcdD7S1mknIOE75tx07oQmx8YeXEa57D1GZ7EkW8zo3An9zATD27yBb26HCkK4JEe2kyZfKlTTG7wV3P88dKt8IPedYRF++APqKy6AIIMWOHcbqzs9riUc9slGPgFd/Z+LhVXzPuNWTv4DYtRty4yZLJ7ftQO7ZZ6Affwr6hV8BJHDklCAKOfhTpyPqOAbinPPhEWpHP/0Jgq4NxvWieXNQJnpa/NSnEZDnYPd2oLeHPCCiXE7VWU8/sG0bVOd6RC++gNySq9D0Hw+i+/HHEY5vhUfFi0rJ5GflqyxKlnyHi1lDMFhomr5mF2dtf+UiyDlzABJcXrsMubfetNZtoopp/mfgf+50yJP+DGJWB0Rrq7nGTwLeDf+G4OGHIe67B/r51RA33QJ9/tmI6L5q8RkmREJ36ARR5dbw0Pq30TzrCBS/fS367roLur/PpskE1vijyWfp1idrDRRDIucjIKvwTYwL/ss1xgLitdegz7sA8jhysxtvhPzrs+DNnmV5dQbKVhdiOE9SmXnuuSjToV9bC3nHHYh+cDe82263XnHkkRAnnAicfBLyR8xGOGMKRLGJYp08dcVzGOIxc+aZORm7GC+stq78dM7Kdt/YosLwZFFoILNYi4o3/gf6zjshn3gc6OxC9JkFEBddCG/RF6AmT7bc2llRDF+oqXk3n3gexL58AiQ953gEP7wTig785gXIFSsRPrMS/gP3oXj/veY6H9XMwGKVrrgSA5dfCr+319wnVuawGE63eWrICDutCgjyKcYam6wbPvM05LeuI/D5A3TRQzBEipg3F/7qVZZoxNZUGrbXJ0bFikx65JQSsuCEzOSTkrxInTQfgg697HqErPQ33wQ2bADeeQ+yfzfCtokon3gi9Nzj4fUPQg8MGM6Oei6dBVCVc/TgoFiA3zAGhRUEQFdeAaxfD00UUa16DvreuyDufwj6sf8yseUHQwiFz6zGHPxQtZ/1tul3C+uXenDIzcuFFOXg8OhjoOjw4rzv8rdH1BUUXhEvDhrl6eErD1lEI6aX5vc85VYSFsv+Fd4XvwBRLkM98RSiLVtMLsyRsPKeewhxpyJXKtEkPAsm7oEqg6iMdFRZUzXAtWv4G6zoIzAil/XoiLqJm+/tgd69Bx5lB0VcQDtgzSqA/JFooxlELsluXPzZQ8C112GIyIH6hyuNNv2XXoI3fyHKFLPqa19DgaufWKsfciE8yeOzuhmmBoeo0kp+Erm9Egm4yQjPYWtLWYTcPFA4l9myzaQE/Qnixru2o3Djrcifcgqiz58G/OQBh9SRNUpWUXEAq/7DKC9qV0jM76nv6bWy+LM/YjqKtdg/gPJlF8N7/VXk/uoc23BnUnHZZYhuv90CVH+/YVppAdIr8vvb1ciyVFbllC500t5R49I1vo7EA2KyQcLocS0YvPc+5E5bBG/9WxhcdDqiE08ygOb3USxxQaDVsLbNSDtv9lUGxhOvwZNR3COZ4NM8wtfaxkFMKLRL/tKVYwZdeVtDdzd0gaqSC8+vYklPD8eEQURpbiSMa7mlvkzUH80CmNa6lo4ktogYwyQAUSfivVJZuU0WOrHZIr6n748bS39cFStpQiyc8CqbVmoWwgn8GR3dGqshH8LkOiusFF7Ckg5SjOCVTVvm/lXj6GH7XWzLR1fGmDJPVgFKO2LCKcuLDaLdvCulqr2e8zmP5Vzue0Wity3wN726Fp1nnIkmzl1UlkmRMx11u3bjmgNsZE9WOiL8YP7NiymbAzbu1oi63eo0jRy5WRsnJ6VdWOnqdQyNRmjnkVYJqiJkBT8iB1RkmL58ATvffgv+4TffArVxC8rTZqJMtSovb/oO9oXpN4kU/bPaZX5aaUex4G7p1Jq2VnLrLbIqbkViO1FkkB1ULK0dKVYV344bDrF3aacAOIvHvNyITkAa0ETV+nWY/NAjEM8De+cDLRWppCOGImEy8y5501PVXEZIz05Wxur37Vjp2/M8MU9WOHL1e9K8utbUSlWXZFhIopH2XbkA1fazpW/V8XH304yN6VdU40ergG6/r5DHUClAwSRviYhLPp4zAxETeI45lo2FIC5tDGSE4nE2hpWRg+NI2UjjsODr3L1Y1wYYE/Wzuaebp/ldW68xJ6Ighlj6WzBuzZDEPTHufPAY4xncCeHuC1VuOqEQ5gPsziYkVbVTWSLG6DNlYqMqSWlFetZwjF/ms+96MdbCiok8I2LswSbGtekxlYluhpu2VIzHohfpnoVDJ0K1NCEYLGHo/U0mZPg5IU0+Rw9vbB4HTGizzXmKtf6du1Deud0+1t1HEao2Hn44cWRWfmjAkycg6P5wqVBIF8csYI7vxQUIHawgo9koJh5umyFdKImfGYqmhCu3lKmUWNA4kk0UKefCxkUJvHr3oNzWjjeWLUNApaOYTEIOhghfeRntT6/ArPc6MXTsMXj9G1+nyYyBGNeMsBxgsHMDGn6zBh1rfotD2tuoSChjx4JTsWHhZ81uPt3UgKExBbS8/S6Ou/1HRiHCkJvIWtl4PedpV2xo5aJBuTrYWbeC+PTnyVxhb5l+CX1fBzlfl3I5XSrmdbmhQZfGNOqgqUmHzc06HDfOHq2tunzIITqYOFEH7e06nDxJl8ifh044QfeRCvkY2L1LD9L7djp+/eor+h26j547Tw+43/t5DB276HiLjpW33Ko3FhrM/Ae+e5P5nccNuXF7176m+wtFenaLeW40kZ7f1qaj8a06oDkFzS263DRWlxvH0JyLOijSkSMZSBaWiWWLSMan8/7euMtVybkxzJukHlXhH46vWm4an4+4TWgpZRAYnsoVjJ45A6J5LNp++zscP2cumi+5hNz9favm3bvgdRwFSS7aeOkl6KBTn1q6BLsv/YbpT3tU+RjYvPfHKIxtQcPUGWg8azHEhBbbETWu6RC+AmbWojbvKhffDrkdn4gt7AiSZUhRXKlwnHGRLSxCMlDouJA3IBGR+0cOJbWJE0lHZPZdBhgTlIig9GHbo4+YGGyZOZ2ut/sxBbdRqfjwNm+G/6M7MLT0m6AoxqSvXgTeCSKplmZ5Sls+wPa+Hux8fwMGKPZ9Ag4vnjC5uzniAsMhuccchWPS1NIaNZ1axxV8W2U78HG00uzXiOFfuCY4tEuxLm8q26HSDhC4Cc8WHiKx35x0GLZOyWH631+MQ3jyT61AzrMtXMOIxjRSTR1C9nbDe/El9HOPb/YRFqR6+819PvjLxVjXWAAOnYLpK5/FrJ89SGVqs7Ua17xx/na5nNHGAGLkeEJqzcqWlNzigaoEds3mlkqUV4m7ioS9EacbA+0qUWdSYc4F+bg2eO+8g9l01ylcUV2/HLlfPg01d06FZQVga9jn7g0HjCLGuEqL8qLxlMlHH4XJxx2DiDKF2PEBgnvLEMWwUthXXNqsCCZcXKAu3TMWVg57zbVedayMN4nHQmvbQpHkWkZop2HhuInZkFosokjaP3bZdUDnZvT/96sI//hHu7mUqJ1ZNqUb5fsGgf5e9PKK6vyFpBx6rX3FoklTwYwv3fdj5C+5AmJ8M0UM/dLSYjqlVY5t8odt+Clr3SzLJg3I1/qx1iM5wp51596SHV5qmxZETCyqu+fNmg9VVeXl1xu3NCDGyyDcegmV8ZVB0uwGIjRlSjcDX/oSPvm928B7fPTy5VZxbvVC8H42jvs9e+DlGwAiSNpZUjhSIhyGKFcXjVSIxXzLF7Y+tLGYIXJsaZPQK4tmkWFYZoK825wFo3HMj0KyRCNvKu3qgj9uHE0msB0KRymjtokIt2xEPlfATPreRiA38LdfR8PKZ8zvAV1v2keTD7cuyL00YmemlxVp18hTFlhDRyU9mLUtjFi4mD4z969D4ls5QkDluvm6rpEjnorhitJ6OQWPAXKmoHt6kb/pZvK6IYT9g8YixisYzIt5yO1bIa//DsYXfHx6wiSSrITyn9ai/IunkN+4EYrSGAYGoVetRp7KOPXSGmhiWLYYsBlBxuVi3PpxpFlosY9GgGV3ASlNPDp5cumLW7bkeYEqEL4rBPTw+i1R00mORBOQ8eq3sGkiiMykooYiVC5vUhf3L3kZRgyVoEpDwzaVmDuQVU2Dn/l5dw/i/0fjcQ+cz3O+V3ZqKrm8yxy83qYgEXfoBXJ0fZnm+HBTU+DvPOrouzd2d182ZaAfxGVguMQIu12s49vuQry333BqFkzYgl+S4KB8Gqc04f6rB6/tmorLLEwnOpNkWemIjyBX912a0aQkLjhkpfyrFgLaNftH2uga8/GA7vsOga2/+Aztb5ww/lurOjouXjxY9tp6eogD95pJB3FNWm/lsLLUH9e6wtXKwrWMrPcniuYqWrqORnWTeZxNtOPFqKmZEXcvGDu4+aBH3tcb/9eEgEkS5e6tBJArtm7DSedfcLrf3Dp295tHzjq9r3vwzukDpQnNec8sZehU2Z/18uLdOtpWJKbEEKIaZyJu8dTLE0gJnOhYuEmLeKUykWD1iHvbdNytNuVhD3lbpxSq+4LzvjI0ferq/xVgAPYw1Z3/MOknAAAAAElFTkSuQmCC\";\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","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 { 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, 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 { 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 { 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":["Injectable","Component","Input","ViewChild","EventEmitter","Output","ContentChildren","forwardRef","NgModule","CommonModule","Directive","TemplateRef","NG_VALUE_ACCESSOR","ContentChild","FormsModule","ElementRef","moment","_moment","HostListener","SlickConfirmDialogResults","ChangeDetectorRef","HostBinding","AngularDraggableModule","SlickValidationTypes","HttpClient","HttpClientModule","imgExtensions","NgZone","SlickGridColumnFilterTypes","SlickGridColumnSortDirection","HttpHeaders","Pipe","DomSanitizer","RouterModule","router","NavigationStart","Router","Optional"],"mappings":"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,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CA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"}
1
+ {"version":3,"file":"slick-components.umd.js","sources":["../../../projects/components/src/utils/slick-init.service.ts","../../../node_modules/tslib/tslib.es6.js","../../../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-confirm-dialog/slick-confirm-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog.service.ts","../../../projects/components/src/slick-dialog/slick-dialog.component.ts","../../../projects/components/src/slick-dialog/slick-dialog-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-file-list/slick-file-list.component.ts","../../../projects/components/src/slick-file-list/slick-file-list-item.component.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.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.component.ts","../../../projects/components/src/slick-tabs/slick-tabs.component.ts","../../../projects/components/src/slick-tabs/slick-tab-header.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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\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 { 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 { 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, 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","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","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 { 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, 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 { 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 { 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":["Injectable","Component","Input","ViewChild","EventEmitter","Output","ContentChildren","forwardRef","NgModule","CommonModule","Directive","TemplateRef","NG_VALUE_ACCESSOR","ContentChild","FormsModule","ElementRef","moment","_moment","HostListener","SlickConfirmDialogResults","ChangeDetectorRef","HostBinding","AngularDraggableModule","SlickValidationTypes","HttpClient","HttpClientModule","imgExtensions","NgZone","SlickGridColumnFilterTypes","SlickGridColumnSortDirection","HttpHeaders","Pipe","DomSanitizer","RouterModule","router","NavigationStart","Router","Optional"],"mappings":"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,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;wBAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EA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"}