ngx-dropdown-list 1.1.2 → 21.0.1

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.
Files changed (57) hide show
  1. package/README.md +2 -2
  2. package/fesm2022/ngx-dropdown-list.mjs +916 -0
  3. package/fesm2022/ngx-dropdown-list.mjs.map +1 -0
  4. package/ngx-dropdown-list-21.0.1.tgz +0 -0
  5. package/package.json +19 -49
  6. package/{src/ngx-dropdown-list/dropdown-list.component.d.ts → types/ngx-dropdown-list.d.ts} +109 -103
  7. package/bundles/ngx-dropdown-list.umd.js +0 -1212
  8. package/bundles/ngx-dropdown-list.umd.js.map +0 -1
  9. package/bundles/ngx-dropdown-list.umd.min.js +0 -2
  10. package/bundles/ngx-dropdown-list.umd.min.js.map +0 -1
  11. package/esm2015/ngx-dropdown-list.js +0 -14
  12. package/esm2015/public_api.js +0 -6
  13. package/esm2015/src/ngx-dropdown-list/anchor/anchor.component.js +0 -226
  14. package/esm2015/src/ngx-dropdown-list/dropdown/dropdown.component.js +0 -351
  15. package/esm2015/src/ngx-dropdown-list/dropdown-list.component.js +0 -290
  16. package/esm2015/src/ngx-dropdown-list/dropdown-list.module.js +0 -32
  17. package/esm2015/src/ngx-dropdown-list/filter/input-filter.component.js +0 -64
  18. package/esm2015/src/ngx-dropdown-list/group-item/group-item.component.js +0 -37
  19. package/esm2015/src/ngx-dropdown-list/index.js +0 -7
  20. package/esm2015/src/ngx-dropdown-list/item/item.component.js +0 -104
  21. package/esm2015/src/ngx-dropdown-list/types/index.js +0 -7
  22. package/esm2015/src/ngx-dropdown-list/types/selection-group-items.types.js +0 -16
  23. package/esm2015/src/ngx-dropdown-list/types/selection-item.types.js +0 -20
  24. package/esm2015/src/ngx-dropdown-list/utils/util.js +0 -101
  25. package/esm5/ngx-dropdown-list.js +0 -14
  26. package/esm5/public_api.js +0 -6
  27. package/esm5/src/ngx-dropdown-list/anchor/anchor.component.js +0 -272
  28. package/esm5/src/ngx-dropdown-list/dropdown/dropdown.component.js +0 -420
  29. package/esm5/src/ngx-dropdown-list/dropdown-list.component.js +0 -361
  30. package/esm5/src/ngx-dropdown-list/dropdown-list.module.js +0 -36
  31. package/esm5/src/ngx-dropdown-list/filter/input-filter.component.js +0 -79
  32. package/esm5/src/ngx-dropdown-list/group-item/group-item.component.js +0 -47
  33. package/esm5/src/ngx-dropdown-list/index.js +0 -7
  34. package/esm5/src/ngx-dropdown-list/item/item.component.js +0 -120
  35. package/esm5/src/ngx-dropdown-list/types/index.js +0 -7
  36. package/esm5/src/ngx-dropdown-list/types/selection-group-items.types.js +0 -16
  37. package/esm5/src/ngx-dropdown-list/types/selection-item.types.js +0 -20
  38. package/esm5/src/ngx-dropdown-list/utils/util.js +0 -124
  39. package/fesm2015/ngx-dropdown-list.js +0 -930
  40. package/fesm2015/ngx-dropdown-list.js.map +0 -1
  41. package/fesm5/ngx-dropdown-list.js +0 -1177
  42. package/fesm5/ngx-dropdown-list.js.map +0 -1
  43. package/ngx-dropdown-list-1.1.2.tgz +0 -0
  44. package/ngx-dropdown-list.d.ts +0 -9
  45. package/ngx-dropdown-list.metadata.json +0 -1
  46. package/public_api.d.ts +0 -1
  47. package/src/ngx-dropdown-list/anchor/anchor.component.d.ts +0 -82
  48. package/src/ngx-dropdown-list/dropdown/dropdown.component.d.ts +0 -117
  49. package/src/ngx-dropdown-list/dropdown-list.module.d.ts +0 -2
  50. package/src/ngx-dropdown-list/filter/input-filter.component.d.ts +0 -23
  51. package/src/ngx-dropdown-list/group-item/group-item.component.d.ts +0 -11
  52. package/src/ngx-dropdown-list/index.d.ts +0 -2
  53. package/src/ngx-dropdown-list/item/item.component.d.ts +0 -40
  54. package/src/ngx-dropdown-list/types/index.d.ts +0 -2
  55. package/src/ngx-dropdown-list/types/selection-group-items.types.d.ts +0 -8
  56. package/src/ngx-dropdown-list/types/selection-item.types.d.ts +0 -9
  57. package/src/ngx-dropdown-list/utils/util.d.ts +0 -21
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-dropdown-list.umd.js.map","sources":["node_modules/tslib/tslib.es6.js","ng://ngx-dropdown-list/src/ngx-dropdown-list/utils/util.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown-list.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/item/item.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/group-item/group-item.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/filter/input-filter.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/anchor/anchor.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown/dropdown.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown-list.module.ts"],"sourcesContent":["/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\r\n * check whether the provided items contains group\r\n */\r\nexport function hasGroup(items): boolean {\r\n return items ? (items.find(item => item.group) != null) : false;\r\n}\r\n\r\n/**\r\n * clear all selections from the provide items.\r\n * @param items the dropdown items, can be group or item\r\n */\r\nexport function clearAllSelection(items: any): void {\r\n if (hasGroup(items)) {\r\n for (const groupItem of items) {\r\n if (groupItem.items) {\r\n groupItem.items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n }\r\n } else {\r\n // clear the selection of previous selected item\r\n items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n}\r\n\r\n/**\r\n * stop all propagation and default actions\r\n */\r\nexport function stopPropagationAndDefault(event: Event): void {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n}\r\n\r\n/**\r\n * check whether the provided value is number of not\r\n */\r\nexport function isNumber(value: any): boolean {\r\n return !(value == null || isNaN(value) || value.length === 0);\r\n}\r\n\r\n/**\r\n * get the selected item from the items list (including item and group)\r\n */\r\nexport function getFirstSelectedItem(items: any): any {\r\n if (!items) {\r\n return undefined;\r\n }\r\n let selectedItem;\r\n if (hasGroup(items)) {\r\n for (const item of items) {\r\n selectedItem = item.items ? item.items.find(subItem => subItem.selected) : undefined;\r\n if (selectedItem) {\r\n break;\r\n }\r\n }\r\n } else {\r\n selectedItem = items ? items.find(item => item.selected) : undefined;\r\n }\r\n return selectedItem;\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, stopPropagationAndDefault} from './utils/util';\r\n\r\n@Component({\r\n selector: 'ngx-dropdown-list',\r\n template: `\r\n <span class=\"ngx-select\">\r\n <anchor (anchorClick)=\"onAnchorClick($event)\" (clearanceClick)=\"onClearanceClick($event)\"\r\n [checkbox]=\"multiSelection\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [placeHolder]=\"placeHolder\"\r\n [allowClear]=\"allowClear\"\r\n [openStatus]=\"dropdownVisibility\"\r\n [selectedText]=\"selectedText\"\r\n [disabled]=\"disabled\">\r\n </anchor>\r\n <dropdown #dropdown (dropdownBlur) = \"onItemsBlur()\" (selectionChange)=\"onSelectionChange($event)\"\r\n [items]=\"items\"\r\n [checkbox]=\"multiSelection\"\r\n [filterBox]=\"filterBox\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [(selectedValue)]=\"selectedValue\"\r\n (itemClick) = \"onItemClick()\"\r\n [disabled]=\"disabled\">\r\n </dropdown>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown-list.component.scss'],\r\n})\r\n\r\nexport class DropdownListComponent {\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [multiSelection], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() multiSelection = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue], using async event to\r\n * prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection.\r\n * Using async event to prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n\r\n /**\r\n * visibility flag of drop down\r\n */\r\n dropdownVisibility = false;\r\n\r\n /**\r\n * current selected text\r\n */\r\n get selectedText(): any {\r\n if (!this.multiSelection) {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? selectedItem.text : undefined;\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)\r\n */\r\n onSelectionChange(event) {\r\n this.selectedValueChange.emit(event);\r\n this.selectionChange.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (anchorClick) event, controlling the \"open\" and \"close\" of the dropdown\r\n */\r\n onAnchorClick(event: Event): void {\r\n if (this.disabled) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n } else {\r\n this._showItemsList();\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (itemClick) event, closes the dropdown in non-checkbox mode\r\n */\r\n onItemClick(): void {\r\n if (!this.multiSelection) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (clearanceClick) event, clearing all selections\r\n * and emits (selectedValueChange) and (selectionChange) event for empty value\r\n */\r\n onClearanceClick(event: Event): void {\r\n if (!this.multiSelection) {\r\n this.selectedValue = void 0;\r\n this.selectedValueChange.emit(undefined);\r\n this.selectionChange.emit(undefined);\r\n clearAllSelection(this.items);\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (dropdownBlur) event, closes the dropdown\r\n */\r\n onItemsBlur(): void {\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * close the dropdown\r\n */\r\n private _hideItemList(): void {\r\n // hide the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.remove('visible');\r\n this._dropdownElement.style.display = 'none';\r\n this.dropdownVisibility = false;\r\n }\r\n\r\n /**\r\n * open the dropdown\r\n */\r\n private _showItemsList(): void {\r\n // display the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.add('visible');\r\n this._dropdownElement.style.display = 'block';\r\n\r\n this.dropdownVisibility = true;\r\n\r\n // scrolling to the selected item\r\n if (this._selectedElement) {\r\n this._selectedElement.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n\r\n // setting the focus\r\n if (this.filterBox && !this.multiSelection) {\r\n this._filterInputElement.focus();\r\n } else {\r\n this._dropdownElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * visibility status of dropdown\r\n */\r\n private _isSelectionOpen(): boolean {\r\n return this.dropdownVisibility;\r\n }\r\n\r\n /**\r\n * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>\r\n */\r\n private get _dropdownElement(): any {\r\n return this.dropdownRef ? this.dropdownRef.nativeElement ? this.dropdownRef.nativeElement.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the real filter element (for focusing), the <input> not the <input-filter>\r\n */\r\n private get _filterInputElement(): any {\r\n return this._dropdownElement ?\r\n this._dropdownElement.firstElementChild ? this._dropdownElement.firstElementChild.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item\r\n */\r\n private get _selectedElement(): HTMLElement {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? document.getElementById(selectedItem.id) as HTMLElement : undefined;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {SelectionItem} from '../types';\r\nimport {isNumber} from '../utils/util';\r\n\r\n@Component({\r\n selector: 'item',\r\n template: `\r\n <label [class.container-checkbox]=\"checkbox\"\r\n [class.container-selection]=\"!checkbox && !item.selected\"\r\n [class.container-selection-selected]=\"!checkbox && item.selected\"\r\n [id]=\"item.id\" (mousedown)=\"onItemClick(item)\">\r\n {{needFormatNumber(item.text)? (item.text | number:'1.0-2') : item.text}}{{suffixText? suffixText : ''}}\r\n <ng-container *ngIf=\"checkbox\">\r\n <input type='checkbox' [id]=\"'checkbox-'+item.text\" (change)=\"onCheckStatusChange(item)\" [checked]=\"item.selected\">\r\n <span class=\"checkmark\" [id]=\"'checkmark-'+item.text\"></span>\r\n </ng-container>\r\n </label>`,\r\n styleUrls: ['./item.component.scss']\r\n})\r\n\r\nexport class ItemComponent {\r\n /**\r\n * bind to [checkbox], the flag of checkbox mode\r\n */\r\n @Input() checkbox: boolean;\r\n /**\r\n * bind to [item], the dropdown option item\r\n */\r\n @Input() item: SelectionItem;\r\n /**\r\n * bind to [formatNumber], the flag for formatting the number\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * bind to [suffixText], the suffixText that will be displayed in the dropdown\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [itemClick] event, triggers when clicking the item of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<string>();\r\n /**\r\n * bind to [checkStatusChange] event, triggers when check status is changed in checkbox mode.\r\n */\r\n @Output() checkStatusChange = new EventEmitter<string>();\r\n\r\n /**\r\n * check whether needs to format number for the provided text\r\n */\r\n needFormatNumber(value: any): boolean {\r\n return isNumber(value) && this.formatNumber;\r\n }\r\n\r\n /**\r\n * triggered when clicking the item, emits the [itemClick] event\r\n */\r\n onItemClick(item) {\r\n this.itemClick.emit(item);\r\n }\r\n\r\n /**\r\n * triggered when checking status changed in checkbox mode, emits the [checkStatusChange] event\r\n */\r\n onCheckStatusChange(item) {\r\n this.checkStatusChange.emit(item);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {SelectionGroupItems} from '../types';\r\n\r\n@Component({\r\n selector: 'group-item',\r\n template: `\r\n <label class=\"dropdown-item dropdown-item-group\" (mousedown)=\"onItemGroupClick($event)\">{{item.group}}</label>\r\n `,\r\n styleUrls: ['./group-item.component.scss']\r\n})\r\n\r\nexport class GroupItemComponent {\r\n /**\r\n * bind to [item], the group item of dropdown\r\n */\r\n @Input() item: SelectionGroupItems;\r\n\r\n /**\r\n * prevent all clicking event from happening\r\n */\r\n onItemGroupClick(event) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input-filter',\r\n template: `\r\n <input type=\"text\" class=\"filter-box\" [(ngModel)]=\"filterValue\" (input)=\"onChange()\" (blur)=\"onFilterTextBlur($event)\">\r\n `,\r\n styleUrls: ['./input-filter.component.scss']\r\n})\r\n\r\nexport class InputFilterComponent {\r\n /**\r\n * bind to [filterValue], the value of the filter\r\n */\r\n @Input() filterValue: string;\r\n /**\r\n * bind to [inputFilterBlur], emits with (blur) of filter input box\r\n */\r\n @Output() inputFilterBlur = new EventEmitter<string>();\r\n /**\r\n * bind to [filterValueChange], for 2-way binding of filterValue\r\n */\r\n @Output() filterValueChange = new EventEmitter<string>();\r\n\r\n /**\r\n * triggers with (blur) event, emits the (inputFilterBlur) event\r\n */\r\n onFilterTextBlur(event) {\r\n this.inputFilterBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (input) event, emits the (filterValueChange) event for 2-way binding of filterValue\r\n */\r\n onChange() {\r\n this.filterValueChange.emit(this.filterValue);\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {stopPropagationAndDefault, isNumber} from '../utils/util';\r\nimport {DecimalPipe} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anchor',\r\n template: `\r\n <span #anchor tabindex=\"2\" [ngClass]=\"anchorClass\" (window:resize)=\"onResize()\"\r\n (mousedown)=\"onAnchorClick($event)\" (blur)=\"onAnchorBlur($event)\"> {{anchorDisplayText}}\r\n <span #selectionClearance class=\"selection-clearance\" (mousedown)=\"onClearanceClick($event)\" *ngIf=\"showClearanceFlag\">&times;</span>\r\n </span>\r\n `,\r\n styleUrls: ['./anchor.component.scss'],\r\n providers: [DecimalPipe]\r\n})\r\n\r\nexport class AnchorComponent {\r\n /**\r\n * Child element reference of anchor\r\n */\r\n @ViewChild('anchor', { read: ElementRef }) anchorRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [checkbox] for checking whether the clearance flag should be shown or not.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber: boolean;\r\n /**\r\n * bind to [selectedText] for displaying the selected text on anchor\r\n */\r\n @Input() selectedText: any;\r\n /**\r\n * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor\r\n */\r\n @Input() openStatus = false;\r\n /**\r\n * bind to [disabled] for disabling the anchor\r\n */\r\n @Input() disabled = false;\r\n /**\r\n * will be triggered when clicking the anchor\r\n */\r\n @Output() anchorClick = new EventEmitter<any>();\r\n /**\r\n * will be triggered when clicking the clearance\r\n */\r\n @Output() clearanceClick = new EventEmitter<any>();\r\n\r\n /**\r\n * length of anchor element, used for calculate the string length of the anchor displayed text.\r\n */\r\n anchorLength: number;\r\n\r\n constructor(private _decimalPipe: DecimalPipe) {}\r\n\r\n /**\r\n * flag for showing the clearance flag\r\n */\r\n get showClearanceFlag(): boolean {\r\n return !this.checkbox && this.selectedText && this.allowClear;\r\n }\r\n\r\n /**\r\n * the text displays on anchor\r\n */\r\n get anchorDisplayText(): string {\r\n let anchorDisplayText = this.selectedText ? (this.formatNumber ? (isNumber(this.selectedText) ?\r\n this._decimalPipe.transform(this.selectedText, '1.0-2') : this.selectedText) :\r\n this.selectedText) + (this.suffixText ? this.suffixText : '') : this.placeHolder;\r\n\r\n let charLength = 1;\r\n if (this.showClearanceFlag && this.anchorLength > 0) {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n } else {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n }\r\n\r\n if (anchorDisplayText.length > charLength) {\r\n anchorDisplayText = anchorDisplayText.slice(0, charLength - 2) + '...';\r\n }\r\n return anchorDisplayText;\r\n }\r\n\r\n /**\r\n * anchor CSS class\r\n */\r\n get anchorClass(): string {\r\n let anchorClassStatusPart;\r\n let anchorClassFontColor;\r\n if (this.disabled) {\r\n anchorClassStatusPart = 'selection-anchor-disabled';\r\n anchorClassFontColor = 'place-holder';\r\n } else {\r\n if (this.openStatus) {\r\n anchorClassStatusPart = 'selection-anchor-open';\r\n } else {\r\n anchorClassStatusPart = 'selection-anchor-close';\r\n }\r\n if (this.selectedText != null) {\r\n anchorClassFontColor = 'selected-item';\r\n } else {\r\n anchorClassFontColor = 'place-holder';\r\n }\r\n }\r\n return `${anchorClassStatusPart} ${anchorClassFontColor}`;\r\n }\r\n\r\n /**\r\n * triggered when clicking the anchor\r\n */\r\n onAnchorClick(event: Event): void {\r\n this.anchorClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (blur) of anchor\r\n */\r\n onAnchorBlur(event: Event): void {\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered when clicking the clearance\r\n */\r\n onClearanceClick(event: Event): void {\r\n this.clearanceClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered when resizing, get the clientWidth of anchor\r\n */\r\n onResize() {\r\n this.anchorLength = this.anchorRef ? this.anchorRef.nativeElement ? this.anchorRef.nativeElement.clientWidth : 0 : 0;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, hasGroup, stopPropagationAndDefault} from '../utils/util';\r\n\r\n@Component({\r\n selector: 'dropdown',\r\n template: `\r\n <span #dropdown class=\"dropdown\" tabindex=\"3\" (mousedown)=\"onItemsClick($event)\" (blur)=\"onItemsBlur($event)\" *ngIf=\"!disabled\" >\r\n <input-filter #filterInput tabindex=\"4\" *ngIf=\"filterBox && !checkbox\" [(filterValue)]=\"filterValue\" (inputFilterBlur)=\"onFilterTextBlur($event)\"></input-filter>\r\n <span #selectionOptions [ngClass]=\"optionsClass\">\r\n <ng-container *ngFor=\"let item of itemsValues\" >\r\n <ng-container *ngIf=\"item && item.group\">\r\n <group-item [item]=\"item\"></group-item>\r\n <item *ngFor=\"let subItem of item.items\" (itemClick)=\"onItemClick(subItem)\" (checkStatusChange)=\"toggleSelection(subItem)\"\r\n [item]=\"subItem\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n <ng-container *ngIf=\"item && !item.group\">\r\n <item (itemClick)=\"onItemClick(item)\" (checkStatusChange)=\"toggleSelection(item)\"\r\n [item]=\"item\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\n\r\nexport class DropdownComponent implements OnChanges {\r\n /**\r\n * Child element reference of dropdown\r\n */\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n /**\r\n * Child element reference of filter input text\r\n */\r\n @ViewChild('filterInput', { read: ElementRef }) filterInputRef: ElementRef;\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [checkbox], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue]\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n /**\r\n * [dropdownBlur] event that will be triggered with (blur) of dropdown\r\n */\r\n @Output() dropdownBlur = new EventEmitter<any>();\r\n /**\r\n * [itemClick] event that will be triggered when clicking the option of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<any>();\r\n /**\r\n * filter value\r\n */\r\n filterValue: string;\r\n /**\r\n * flag of clicking dropdown. It's to prevent (blur) of dropdown from happening in checkbox mode.\r\n */\r\n private _clickedItems = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.items) {\r\n this._checkSelectionChange(changes.items.previousValue, changes.items.currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the dropdown\r\n */\r\n onItemsClick(event: any): void {\r\n if (event.offsetX > (event.target.clientWidth + event.target.clientLeft)) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n // should ignore clicking on filter\r\n if (this.checkbox && event.target.type !== 'text') {\r\n this._clickedItems = true;\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the item\r\n */\r\n onItemClick(currentItem): void {\r\n if (!this.checkbox) {\r\n this.selectedValue = this._getItemValue(currentItem); // currentItem.value != null ? currentItem.value : currentItem.text;\r\n clearAllSelection(this.items);\r\n // set the selection of current one\r\n currentItem.selected = true;\r\n this.itemClick.emit(currentItem);\r\n this._onSelectionChange(this.selectedValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of filter input box\r\n */\r\n onFilterTextBlur(event): void {\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of dropdown\r\n */\r\n onItemsBlur(event): void {\r\n if (this.checkbox) {\r\n if (this._clickedItems) {\r\n // in checkbox mode, this blur event will be ignored when clicking the dropdown (check the checkbox)\r\n event.target.focus();\r\n this._clickedItems = false;\r\n return;\r\n }\r\n }\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * toggle the selection when checking status changed (in checkbox mode)\r\n */\r\n toggleSelection(item: {id: string, value?: any, text: any, selected?: boolean}): void {\r\n item.selected = !item.selected;\r\n this.selectionChange.emit(this._getItemValue(item)); // item.value != null ? item.value : item.text);\r\n }\r\n\r\n /**\r\n * items values list after applying the filter\r\n */\r\n get itemsValues(): any[] {\r\n let filter;\r\n if (this.filterValue) {\r\n filter = this.filterValue.toUpperCase();\r\n }\r\n\r\n if (filter == null) {\r\n return this.items;\r\n }\r\n if (!this.items || this.items.length === 0) {\r\n return [];\r\n }\r\n if (hasGroup(this.items)) {\r\n const items = [];\r\n this.items.forEach(groupItem => {\r\n if (groupItem.group != null && groupItem.group.toString().toUpperCase().includes(filter)) {\r\n // if groupItem contains the filters, the groupItem needs to be displayed as well\r\n items.push(groupItem);\r\n } else {\r\n const filteredItems = groupItem.items.filter(item => item.text != null && item.text.toString().toUpperCase().includes(filter));\r\n if (filteredItems && filteredItems.length > 0) {\r\n items.push({group: groupItem.group, items: filteredItems});\r\n }\r\n }\r\n });\r\n return items;\r\n } else {\r\n return this.items.filter(item => (item.text != null && item.text.toString().toUpperCase().includes(filter)));\r\n }\r\n }\r\n /**\r\n * options CSS class\r\n */\r\n get optionsClass(): string {\r\n if (this.filterBox && !this.checkbox) {\r\n return 'options with-filter';\r\n } else {\r\n return 'options no-filter';\r\n }\r\n }\r\n\r\n /**\r\n * get item value. Return text if value is not available\r\n */\r\n private _getItemValue(item): any {\r\n return item ? item.value != null ? item.value : item.text : undefined;\r\n }\r\n\r\n /**\r\n * selection changed, emits events: (selectedValueChange) and (selectionChange);\r\n */\r\n private _onSelectionChange(value) {\r\n this.selectedValueChange.emit(value);\r\n this.selectionChange.emit(value);\r\n }\r\n\r\n /**\r\n * check whether the selection is changed. Emits relative events when if changed.\r\n */\r\n private _checkSelectionChange(previousValue, currentValue) {\r\n const curSelectedItem = getFirstSelectedItem(currentValue);\r\n const lastSelectedItem = getFirstSelectedItem(previousValue);\r\n const curSelectedItemId = curSelectedItem ? curSelectedItem.id : undefined;\r\n const lastSelectedItemId = lastSelectedItem ? lastSelectedItem.id : undefined;\r\n if (curSelectedItemId !== lastSelectedItemId && !this.checkbox) {\r\n this._onSelectionChange(this._getItemValue(curSelectedItem));\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ItemComponent } from './item/item.component';\r\nimport { GroupItemComponent } from './group-item/group-item.component';\r\nimport { InputFilterComponent } from './filter/input-filter.component';\r\nimport { AnchorComponent } from './anchor/anchor.component';\r\nimport { DropdownComponent } from './dropdown/dropdown.component';\r\nimport { DropdownListComponent } from './dropdown-list.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownListComponent,\r\n ItemComponent,\r\n GroupItemComponent,\r\n InputFilterComponent,\r\n AnchorComponent,\r\n DropdownComponent\r\n ],\r\n exports: [ DropdownListComponent],\r\n imports: [ CommonModule, FormsModule ],\r\n providers: [],\r\n bootstrap: [],\r\n})\r\nexport class DropdownListModule {}\r\n"],"names":["tslib_1.__values","EventEmitter","Component","ViewChild","ElementRef","Input","Output","DecimalPipe","NgModule","CommonModule","FormsModule"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/forms"),require("@angular/common"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-dropdown-list",["exports","@angular/forms","@angular/common","@angular/core"],t):t(e["ngx-dropdown-list"]={},e.ng.forms,e.ng.common,e.ng.core)}(this,function(e,t,n,o){"use strict";function s(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],o=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&o>=e.length?void 0:e)&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function a(e){return e&&null!=e.find(function(e){return e.group})}function i(e){var t,n;if(a(e))try{for(var o=s(e),i=o.next();!i.done;i=o.next()){var r=i.value;r.items&&r.items.filter(function(e){return e.selected}).forEach(function(e){return e.selected=!1})}}catch(c){t={error:c}}finally{try{i&&!i.done&&(n=o["return"])&&n.call(o)}finally{if(t)throw t.error}}else e.filter(function(e){return e.selected}).forEach(function(e){return e.selected=!1})}function r(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}function c(e){return!(null==e||isNaN(e)||0===e.length)}function l(e){var t,n;if(!e)return undefined;if(a(e))try{for(var o=s(e),i=o.next();!i.done;i=o.next()){var r,c=i.value;if(r=c.items?c.items.find(function(e){return e.selected}):undefined)break}}catch(l){t={error:l}}finally{try{i&&!i.done&&(n=o["return"])&&n.call(o)}finally{if(t)throw t.error}}else r=e?e.find(function(e){return e.selected}):undefined;return r}var p=(Object.defineProperty(d.prototype,"selectedText",{get:function(){if(!this.multiSelection){var e=l(this.items);return e?e.text:undefined}},enumerable:!0,configurable:!0}),d.prototype.onSelectionChange=function(e){this.selectedValueChange.emit(e),this.selectionChange.emit(e)},d.prototype.onAnchorClick=function(e){this.disabled||(this._isSelectionOpen()?this._hideItemList():this._showItemsList()),r(e)},d.prototype.onItemClick=function(){this.multiSelection||this._hideItemList()},d.prototype.onClearanceClick=function(e){this.multiSelection||(this.selectedValue=void 0,this.selectedValueChange.emit(undefined),this.selectionChange.emit(undefined),i(this.items)),r(e)},d.prototype.onItemsBlur=function(){this._isSelectionOpen()&&this._hideItemList()},d.prototype._hideItemList=function(){this._dropdownElement.classList.remove("visible"),this._dropdownElement.style.display="none",this.dropdownVisibility=!1},d.prototype._showItemsList=function(){this._dropdownElement.classList.add("visible"),this._dropdownElement.style.display="block",this.dropdownVisibility=!0,this._selectedElement&&this._selectedElement.scrollIntoView({behavior:"instant",block:"center"}),(this.filterBox&&!this.multiSelection?this._filterInputElement:this._dropdownElement).focus()},d.prototype._isSelectionOpen=function(){return this.dropdownVisibility},Object.defineProperty(d.prototype,"_dropdownElement",{get:function(){return this.dropdownRef&&this.dropdownRef.nativeElement?this.dropdownRef.nativeElement.firstElementChild:null},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"_filterInputElement",{get:function(){return this._dropdownElement&&this._dropdownElement.firstElementChild?this._dropdownElement.firstElementChild.firstElementChild:null},enumerable:!0,configurable:!0}),Object.defineProperty(d.prototype,"_selectedElement",{get:function(){var e=l(this.items);return e?document.getElementById(e.id):undefined},enumerable:!0,configurable:!0}),d.decorators=[{type:o.Component,args:[{selector:"ngx-dropdown-list",template:'\n <span class="ngx-select">\n <anchor (anchorClick)="onAnchorClick($event)" (clearanceClick)="onClearanceClick($event)"\n [checkbox]="multiSelection"\n [formatNumber]="formatNumber"\n [suffixText]="suffixText"\n [placeHolder]="placeHolder"\n [allowClear]="allowClear"\n [openStatus]="dropdownVisibility"\n [selectedText]="selectedText"\n [disabled]="disabled">\n </anchor>\n <dropdown #dropdown (dropdownBlur) = "onItemsBlur()" (selectionChange)="onSelectionChange($event)"\n [items]="items"\n [checkbox]="multiSelection"\n [filterBox]="filterBox"\n [formatNumber]="formatNumber"\n [suffixText]="suffixText"\n [(selectedValue)]="selectedValue"\n (itemClick) = "onItemClick()"\n [disabled]="disabled">\n </dropdown>\n </span>\n ',styles:[":host *,:host :after,:host :before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}:host .ngx-select{border-radius:4px;font-size:14px;position:relative;display:inline-block;width:100%;height:34px;background:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}"]}]}],d.propDecorators={dropdownRef:[{type:o.ViewChild,args:["dropdown",{read:o.ElementRef}]}],placeHolder:[{type:o.Input}],items:[{type:o.Input}],multiSelection:[{type:o.Input}],selectedValue:[{type:o.Input}],filterBox:[{type:o.Input}],suffixText:[{type:o.Input}],disabled:[{type:o.Input}],allowClear:[{type:o.Input}],formatNumber:[{type:o.Input}],selectedValueChange:[{type:o.Output}],selectionChange:[{type:o.Output}]},d);function d(){this.multiSelection=!1,this.filterBox=!1,this.allowClear=!0,this.formatNumber=!1,this.selectedValueChange=new o.EventEmitter(!0),this.selectionChange=new o.EventEmitter(!0),this.dropdownVisibility=!1}var u=(h.prototype.needFormatNumber=function(e){return c(e)&&this.formatNumber},h.prototype.onItemClick=function(e){this.itemClick.emit(e)},h.prototype.onCheckStatusChange=function(e){this.checkStatusChange.emit(e)},h.decorators=[{type:o.Component,args:[{selector:"item",template:'\n <label [class.container-checkbox]="checkbox"\n [class.container-selection]="!checkbox && !item.selected"\n [class.container-selection-selected]="!checkbox && item.selected"\n [id]="item.id" (mousedown)="onItemClick(item)">\n {{needFormatNumber(item.text)? (item.text | number:\'1.0-2\') : item.text}}{{suffixText? suffixText : \'\'}}\n <ng-container *ngIf="checkbox">\n <input type=\'checkbox\' [id]="\'checkbox-\'+item.text" (change)="onCheckStatusChange(item)" [checked]="item.selected">\n <span class="checkmark" [id]="\'checkmark-\'+item.text"></span>\n </ng-container>\n </label>',styles:['*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.container-checkbox,.container-selection,.container-selection-selected,.dropdown-item{background:0 0;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:"";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196f3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection-selected:hover,.container-selection:hover{color:#495057;background:#e0ffff}.container-selection-selected{color:#fff;background:#6495ed}']}]}],h.propDecorators={checkbox:[{type:o.Input}],item:[{type:o.Input}],formatNumber:[{type:o.Input}],suffixText:[{type:o.Input}],itemClick:[{type:o.Output}],checkStatusChange:[{type:o.Output}]},h);function h(){this.formatNumber=!1,this.itemClick=new o.EventEmitter,this.checkStatusChange=new o.EventEmitter}var f=(m.prototype.onItemGroupClick=function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},m.decorators=[{type:o.Component,args:[{selector:"group-item",template:'\n <label class="dropdown-item dropdown-item-group" (mousedown)="onItemGroupClick($event)">{{item.group}}</label>\n ',styles:['*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.container-checkbox,.container-selection,.container-selection-selected,.dropdown-item{background:0 0;display:list-item;list-style:none;position:relative;width:100%;height:auto;cursor:pointer;color:#495057;padding-bottom:5px;padding-top:5px;padding-left:12px}.container-checkbox{padding-left:35px}.container-checkbox input{position:absolute;opacity:0;cursor:pointer}.container-checkbox .checkmark{position:absolute;top:5px;left:10px;height:15px;width:15px;border:1px solid rgba(0,0,0,.3);background-color:#fff;border-radius:4px}.container-checkbox .checkmark:after{content:"";position:absolute;display:none;left:5px;top:2px;width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.container-checkbox:hover input~.checkmark{background-color:#ccc}.container-checkbox input:checked~.checkmark{background-color:#2196f3;border:1px solid #2196f3}.container-checkbox input:checked~.checkmark:after{display:block}.container-checkbox:hover{color:#66afe9}.container-selection,.container-selection-selected{padding-left:12px}.container-selection-selected:hover,.container-selection:hover{color:#495057;background:#e0ffff}.container-selection-selected{color:#fff;background:#6495ed}.dropdown-item-group{font-weight:700}.dropdown-item-group:hover{cursor:default}']}]}],m.propDecorators={item:[{type:o.Input}]},m);function m(){}var b=(g.prototype.onFilterTextBlur=function(e){this.inputFilterBlur.emit(e)},g.prototype.onChange=function(){this.filterValueChange.emit(this.filterValue)},g.decorators=[{type:o.Component,args:[{selector:"input-filter",template:'\n <input type="text" class="filter-box" [(ngModel)]="filterValue" (input)="onChange()" (blur)="onFilterTextBlur($event)">\n ',styles:["*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.filter-box{width:calc(100% - 10px);height:28px;border-radius:4px;border:1px solid #ccc;margin:1px 5px 5px;padding-left:5px;font-size:12px;box-sizing:border-box;color:#495057}.filter-box:focus{outline:0;border-color:#ccc}"]}]}],g.propDecorators={filterValue:[{type:o.Input}],inputFilterBlur:[{type:o.Output}],filterValueChange:[{type:o.Output}]},g);function g(){this.inputFilterBlur=new o.EventEmitter,this.filterValueChange=new o.EventEmitter}var x=(Object.defineProperty(y.prototype,"showClearanceFlag",{get:function(){return!this.checkbox&&this.selectedText&&this.allowClear},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"anchorDisplayText",{get:function(){var e=this.selectedText?(this.formatNumber&&c(this.selectedText)?this._decimalPipe.transform(this.selectedText,"1.0-2"):this.selectedText)+(this.suffixText||""):this.placeHolder,t=1,t=(this.showClearanceFlag&&this.anchorLength,Math.floor((this.anchorLength-50)/7));return e=e.length>t?e.slice(0,t-2)+"...":e},enumerable:!0,configurable:!0}),Object.defineProperty(y.prototype,"anchorClass",{get:function(){var e,t=this.disabled?(e="selection-anchor-disabled","place-holder"):(e=this.openStatus?"selection-anchor-open":"selection-anchor-close",null!=this.selectedText?"selected-item":"place-holder");return e+" "+t},enumerable:!0,configurable:!0}),y.prototype.onAnchorClick=function(e){this.anchorClick.emit(e)},y.prototype.onAnchorBlur=function(e){r(e)},y.prototype.onClearanceClick=function(e){this.clearanceClick.emit(e)},y.prototype.onResize=function(){this.anchorLength=this.anchorRef&&this.anchorRef.nativeElement?this.anchorRef.nativeElement.clientWidth:0},y.decorators=[{type:o.Component,args:[{selector:"anchor",template:'\n <span #anchor tabindex="2" [ngClass]="anchorClass" (window:resize)="onResize()"\n (mousedown)="onAnchorClick($event)" (blur)="onAnchorBlur($event)"> {{anchorDisplayText}}\n <span #selectionClearance class="selection-clearance" (mousedown)="onClearanceClick($event)" *ngIf="showClearanceFlag">&times;</span>\n </span>\n ',providers:[n.DecimalPipe],styles:["*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.selection-anchor-close:after,.selection-anchor-disabled:after,.selection-anchor-open:after,.vertical-center{position:absolute;top:50%;transform:translateY(-50%)}.hover-box,.selection-anchor-close:hover{outline:0;box-shadow:0 0 6px #23adff;border-radius:4px}.anchor-box,.selection-anchor,.selection-anchor-close,.selection-anchor-disabled,.selection-anchor-open{height:100%;border-radius:4px;width:100%;position:relative;display:inline-block;padding:8px 12px 5px;border:1px solid;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-sizing:border-box;white-space:nowrap}.selection-anchor,.selection-anchor-close,.selection-anchor-open{cursor:pointer}.selection-anchor .selection-clearance,.selection-anchor-close .selection-clearance,.selection-anchor-open .selection-clearance{position:absolute;right:35px;font-weight:700}.selection-anchor .selection-clearance:hover,.selection-anchor-close .selection-clearance:hover,.selection-anchor-open .selection-clearance:hover{color:#000}.selection-anchor-close:focus,.selection-anchor-open:focus,.selection-anchor:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border-color:#66afe9}.selection-anchor-disabled{border-color:#ccc;cursor:default;pointer-events:none;background:#f8f8f8;filter:opacity(50%)}.selection-anchor-disabled:after{font-size:9px;content:'\\0025BC';right:10px;padding-bottom:3px}.selection-anchor-open{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0;border-color:#66afe9}.selection-anchor-open:after{font-size:9px;content:'\\0025B2';right:10px;padding-bottom:3px}.selection-anchor-close{border-color:#ccc}.selection-anchor-close:after{font-size:9px;content:'\\0025BC';right:10px;padding-bottom:3px}.place-holder{color:#999}.selected-item{color:#495057}"]}]}],y.ctorParameters=function(){return[{type:n.DecimalPipe}]},y.propDecorators={anchorRef:[{type:o.ViewChild,args:["anchor",{read:o.ElementRef}]}],placeHolder:[{type:o.Input}],checkbox:[{type:o.Input}],suffixText:[{type:o.Input}],allowClear:[{type:o.Input}],formatNumber:[{type:o.Input}],selectedText:[{type:o.Input}],openStatus:[{type:o.Input}],disabled:[{type:o.Input}],anchorClick:[{type:o.Output}],clearanceClick:[{type:o.Output}]},y);function y(e){this._decimalPipe=e,this.checkbox=!1,this.allowClear=!0,this.openStatus=!1,this.disabled=!1,this.anchorClick=new o.EventEmitter,this.clearanceClick=new o.EventEmitter}var k=(w.prototype.ngOnChanges=function(e){e.items&&this._checkSelectionChange(e.items.previousValue,e.items.currentValue)},w.prototype.onItemsClick=function(e){e.offsetX>e.target.clientWidth+e.target.clientLeft?r(e):this.checkbox&&"text"!==e.target.type&&(this._clickedItems=!0)},w.prototype.onItemClick=function(e){this.checkbox||(this.selectedValue=this._getItemValue(e),i(this.items),e.selected=!0,this.itemClick.emit(e),this._onSelectionChange(this.selectedValue))},w.prototype.onFilterTextBlur=function(e){this.dropdownBlur.emit(e)},w.prototype.onItemsBlur=function(e){if(this.checkbox&&this._clickedItems)return e.target.focus(),void(this._clickedItems=!1);this.dropdownBlur.emit(e)},w.prototype.toggleSelection=function(e){e.selected=!e.selected,this.selectionChange.emit(this._getItemValue(e))},Object.defineProperty(w.prototype,"itemsValues",{get:function(){var n;if(null==(n=this.filterValue?this.filterValue.toUpperCase():n))return this.items;if(!this.items||0===this.items.length)return[];if(a(this.items)){var o=[];return this.items.forEach(function(e){var t;null!=e.group&&e.group.toString().toUpperCase().includes(n)?o.push(e):(t=e.items.filter(function(e){return null!=e.text&&e.text.toString().toUpperCase().includes(n)}))&&0<t.length&&o.push({group:e.group,items:t})}),o}return this.items.filter(function(e){return null!=e.text&&e.text.toString().toUpperCase().includes(n)})},enumerable:!0,configurable:!0}),Object.defineProperty(w.prototype,"optionsClass",{get:function(){return this.filterBox&&!this.checkbox?"options with-filter":"options no-filter"},enumerable:!0,configurable:!0}),w.prototype._getItemValue=function(e){return e?null!=e.value?e.value:e.text:undefined},w.prototype._onSelectionChange=function(e){this.selectedValueChange.emit(e),this.selectionChange.emit(e)},w.prototype._checkSelectionChange=function(e,t){t=l(t),e=l(e);(t?t.id:undefined)===(e?e.id:undefined)||this.checkbox||this._onSelectionChange(this._getItemValue(t))},w.decorators=[{type:o.Component,args:[{selector:"dropdown",template:'\n <span #dropdown class="dropdown" tabindex="3" (mousedown)="onItemsClick($event)" (blur)="onItemsBlur($event)" *ngIf="!disabled" >\n <input-filter #filterInput tabindex="4" *ngIf="filterBox && !checkbox" [(filterValue)]="filterValue" (inputFilterBlur)="onFilterTextBlur($event)"></input-filter>\n <span #selectionOptions [ngClass]="optionsClass">\n <ng-container *ngFor="let item of itemsValues" >\n <ng-container *ngIf="item && item.group">\n <group-item [item]="item"></group-item>\n <item *ngFor="let subItem of item.items" (itemClick)="onItemClick(subItem)" (checkStatusChange)="toggleSelection(subItem)"\n [item]="subItem" [checkbox]="checkbox" [formatNumber]="formatNumber" [suffixText]="suffixText">\n </item>\n </ng-container>\n <ng-container *ngIf="item && !item.group">\n <item (itemClick)="onItemClick(item)" (checkStatusChange)="toggleSelection(item)"\n [item]="item" [checkbox]="checkbox" [formatNumber]="formatNumber" [suffixText]="suffixText">\n </item>\n </ng-container>\n </ng-container>\n </span>\n </span>\n ',styles:["*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.dropdown{width:100%;padding:0;display:none;margin:0;border:1px solid #66afe9;border-top:none;border-bottom:none;border-top-right-radius:0;border-top-left-radius:0;box-sizing:border-box;position:relative;z-index:999}.dropdown:focus{outline:0}.dropdown .options{width:calc(100% + 2px);left:0;box-sizing:border-box;background:#fff;position:absolute;max-height:228px;overflow-y:auto;overflow-x:hidden;border:1px solid #66afe9;border-top:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px;margin-left:-1px;margin-right:-1px}.dropdown .with-filter{top:32px}.dropdown .no-filter{top:0}"]}]}],w.propDecorators={dropdownRef:[{type:o.ViewChild,args:["dropdown",{read:o.ElementRef}]}],filterInputRef:[{type:o.ViewChild,args:["filterInput",{read:o.ElementRef}]}],placeHolder:[{type:o.Input}],items:[{type:o.Input}],checkbox:[{type:o.Input}],selectedValue:[{type:o.Input}],filterBox:[{type:o.Input}],suffixText:[{type:o.Input}],disabled:[{type:o.Input}],allowClear:[{type:o.Input}],formatNumber:[{type:o.Input}],selectedValueChange:[{type:o.Output}],selectionChange:[{type:o.Output}],dropdownBlur:[{type:o.Output}],itemClick:[{type:o.Output}]},w);function w(){this.checkbox=!1,this.filterBox=!1,this.allowClear=!0,this.formatNumber=!1,this.selectedValueChange=new o.EventEmitter(!0),this.selectionChange=new o.EventEmitter(!0),this.dropdownBlur=new o.EventEmitter,this.itemClick=new o.EventEmitter,this._clickedItems=!1}C.decorators=[{type:o.NgModule,args:[{declarations:[p,u,f,b,x,k],exports:[p],imports:[n.CommonModule,t.FormsModule],providers:[],bootstrap:[]}]}],t=C;function C(){}e.DropdownListComponent=p,e.DropdownListModule=t,e.ɵd=x,e.ɵe=k,e.ɵc=b,e.ɵb=f,e.ɵa=u,Object.defineProperty(e,"__esModule",{value:!0})});
2
- //# sourceMappingURL=ngx-dropdown-list.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://ngx-dropdown-list/src/ngx-dropdown-list/utils/util.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown-list.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/item/item.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/group-item/group-item.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/filter/input-filter.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/anchor/anchor.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown/dropdown.component.ts","ng://ngx-dropdown-list/src/ngx-dropdown-list/dropdown-list.module.ts"],"sourcesContent":["/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\r\n * check whether the provided items contains group\r\n */\r\nexport function hasGroup(items): boolean {\r\n return items ? (items.find(item => item.group) != null) : false;\r\n}\r\n\r\n/**\r\n * clear all selections from the provide items.\r\n * @param items the dropdown items, can be group or item\r\n */\r\nexport function clearAllSelection(items: any): void {\r\n if (hasGroup(items)) {\r\n for (const groupItem of items) {\r\n if (groupItem.items) {\r\n groupItem.items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n }\r\n } else {\r\n // clear the selection of previous selected item\r\n items.filter(item => item.selected).forEach(item => item.selected = false);\r\n }\r\n}\r\n\r\n/**\r\n * stop all propagation and default actions\r\n */\r\nexport function stopPropagationAndDefault(event: Event): void {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n}\r\n\r\n/**\r\n * check whether the provided value is number of not\r\n */\r\nexport function isNumber(value: any): boolean {\r\n return !(value == null || isNaN(value) || value.length === 0);\r\n}\r\n\r\n/**\r\n * get the selected item from the items list (including item and group)\r\n */\r\nexport function getFirstSelectedItem(items: any): any {\r\n if (!items) {\r\n return undefined;\r\n }\r\n let selectedItem;\r\n if (hasGroup(items)) {\r\n for (const item of items) {\r\n selectedItem = item.items ? item.items.find(subItem => subItem.selected) : undefined;\r\n if (selectedItem) {\r\n break;\r\n }\r\n }\r\n } else {\r\n selectedItem = items ? items.find(item => item.selected) : undefined;\r\n }\r\n return selectedItem;\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, stopPropagationAndDefault} from './utils/util';\r\n\r\n@Component({\r\n selector: 'ngx-dropdown-list',\r\n template: `\r\n <span class=\"ngx-select\">\r\n <anchor (anchorClick)=\"onAnchorClick($event)\" (clearanceClick)=\"onClearanceClick($event)\"\r\n [checkbox]=\"multiSelection\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [placeHolder]=\"placeHolder\"\r\n [allowClear]=\"allowClear\"\r\n [openStatus]=\"dropdownVisibility\"\r\n [selectedText]=\"selectedText\"\r\n [disabled]=\"disabled\">\r\n </anchor>\r\n <dropdown #dropdown (dropdownBlur) = \"onItemsBlur()\" (selectionChange)=\"onSelectionChange($event)\"\r\n [items]=\"items\"\r\n [checkbox]=\"multiSelection\"\r\n [filterBox]=\"filterBox\"\r\n [formatNumber]=\"formatNumber\"\r\n [suffixText]=\"suffixText\"\r\n [(selectedValue)]=\"selectedValue\"\r\n (itemClick) = \"onItemClick()\"\r\n [disabled]=\"disabled\">\r\n </dropdown>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown-list.component.scss'],\r\n})\r\n\r\nexport class DropdownListComponent {\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [multiSelection], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() multiSelection = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue], using async event to\r\n * prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection.\r\n * Using async event to prevent \"ExpressionChangedAfterItHasBeenCheckedError\".\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n\r\n /**\r\n * visibility flag of drop down\r\n */\r\n dropdownVisibility = false;\r\n\r\n /**\r\n * current selected text\r\n */\r\n get selectedText(): any {\r\n if (!this.multiSelection) {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? selectedItem.text : undefined;\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (selectionChange) event, emits (selectedValueChange) and (selectionChange)\r\n */\r\n onSelectionChange(event) {\r\n this.selectedValueChange.emit(event);\r\n this.selectionChange.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (anchorClick) event, controlling the \"open\" and \"close\" of the dropdown\r\n */\r\n onAnchorClick(event: Event): void {\r\n if (this.disabled) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n } else {\r\n this._showItemsList();\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (itemClick) event, closes the dropdown in non-checkbox mode\r\n */\r\n onItemClick(): void {\r\n if (!this.multiSelection) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * triggered with (clearanceClick) event, clearing all selections\r\n * and emits (selectedValueChange) and (selectionChange) event for empty value\r\n */\r\n onClearanceClick(event: Event): void {\r\n if (!this.multiSelection) {\r\n this.selectedValue = void 0;\r\n this.selectedValueChange.emit(undefined);\r\n this.selectionChange.emit(undefined);\r\n clearAllSelection(this.items);\r\n }\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered with (dropdownBlur) event, closes the dropdown\r\n */\r\n onItemsBlur(): void {\r\n if (this._isSelectionOpen()) {\r\n this._hideItemList();\r\n }\r\n }\r\n\r\n /**\r\n * close the dropdown\r\n */\r\n private _hideItemList(): void {\r\n // hide the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.remove('visible');\r\n this._dropdownElement.style.display = 'none';\r\n this.dropdownVisibility = false;\r\n }\r\n\r\n /**\r\n * open the dropdown\r\n */\r\n private _showItemsList(): void {\r\n // display the dropdown element (has some problem for using CSS directly, using this as a workaround)\r\n this._dropdownElement.classList.add('visible');\r\n this._dropdownElement.style.display = 'block';\r\n\r\n this.dropdownVisibility = true;\r\n\r\n // scrolling to the selected item\r\n if (this._selectedElement) {\r\n this._selectedElement.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n\r\n // setting the focus\r\n if (this.filterBox && !this.multiSelection) {\r\n this._filterInputElement.focus();\r\n } else {\r\n this._dropdownElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * visibility status of dropdown\r\n */\r\n private _isSelectionOpen(): boolean {\r\n return this.dropdownVisibility;\r\n }\r\n\r\n /**\r\n * get the real dropdown element (for focusing and visibility controlling), the <span> not the <dropdown>\r\n */\r\n private get _dropdownElement(): any {\r\n return this.dropdownRef ? this.dropdownRef.nativeElement ? this.dropdownRef.nativeElement.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the real filter element (for focusing), the <input> not the <input-filter>\r\n */\r\n private get _filterInputElement(): any {\r\n return this._dropdownElement ?\r\n this._dropdownElement.firstElementChild ? this._dropdownElement.firstElementChild.firstElementChild : null : null;\r\n }\r\n\r\n /**\r\n * get the HTMLElement of selected item, for doing (scrollIntoView) scrolling to the selected item\r\n */\r\n private get _selectedElement(): HTMLElement {\r\n const selectedItem = getFirstSelectedItem(this.items);\r\n return selectedItem ? document.getElementById(selectedItem.id) as HTMLElement : undefined;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {SelectionItem} from '../types';\r\nimport {isNumber} from '../utils/util';\r\n\r\n@Component({\r\n selector: 'item',\r\n template: `\r\n <label [class.container-checkbox]=\"checkbox\"\r\n [class.container-selection]=\"!checkbox && !item.selected\"\r\n [class.container-selection-selected]=\"!checkbox && item.selected\"\r\n [id]=\"item.id\" (mousedown)=\"onItemClick(item)\">\r\n {{needFormatNumber(item.text)? (item.text | number:'1.0-2') : item.text}}{{suffixText? suffixText : ''}}\r\n <ng-container *ngIf=\"checkbox\">\r\n <input type='checkbox' [id]=\"'checkbox-'+item.text\" (change)=\"onCheckStatusChange(item)\" [checked]=\"item.selected\">\r\n <span class=\"checkmark\" [id]=\"'checkmark-'+item.text\"></span>\r\n </ng-container>\r\n </label>`,\r\n styleUrls: ['./item.component.scss']\r\n})\r\n\r\nexport class ItemComponent {\r\n /**\r\n * bind to [checkbox], the flag of checkbox mode\r\n */\r\n @Input() checkbox: boolean;\r\n /**\r\n * bind to [item], the dropdown option item\r\n */\r\n @Input() item: SelectionItem;\r\n /**\r\n * bind to [formatNumber], the flag for formatting the number\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * bind to [suffixText], the suffixText that will be displayed in the dropdown\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [itemClick] event, triggers when clicking the item of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<string>();\r\n /**\r\n * bind to [checkStatusChange] event, triggers when check status is changed in checkbox mode.\r\n */\r\n @Output() checkStatusChange = new EventEmitter<string>();\r\n\r\n /**\r\n * check whether needs to format number for the provided text\r\n */\r\n needFormatNumber(value: any): boolean {\r\n return isNumber(value) && this.formatNumber;\r\n }\r\n\r\n /**\r\n * triggered when clicking the item, emits the [itemClick] event\r\n */\r\n onItemClick(item) {\r\n this.itemClick.emit(item);\r\n }\r\n\r\n /**\r\n * triggered when checking status changed in checkbox mode, emits the [checkStatusChange] event\r\n */\r\n onCheckStatusChange(item) {\r\n this.checkStatusChange.emit(item);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {SelectionGroupItems} from '../types';\r\n\r\n@Component({\r\n selector: 'group-item',\r\n template: `\r\n <label class=\"dropdown-item dropdown-item-group\" (mousedown)=\"onItemGroupClick($event)\">{{item.group}}</label>\r\n `,\r\n styleUrls: ['./group-item.component.scss']\r\n})\r\n\r\nexport class GroupItemComponent {\r\n /**\r\n * bind to [item], the group item of dropdown\r\n */\r\n @Input() item: SelectionGroupItems;\r\n\r\n /**\r\n * prevent all clicking event from happening\r\n */\r\n onItemGroupClick(event) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input-filter',\r\n template: `\r\n <input type=\"text\" class=\"filter-box\" [(ngModel)]=\"filterValue\" (input)=\"onChange()\" (blur)=\"onFilterTextBlur($event)\">\r\n `,\r\n styleUrls: ['./input-filter.component.scss']\r\n})\r\n\r\nexport class InputFilterComponent {\r\n /**\r\n * bind to [filterValue], the value of the filter\r\n */\r\n @Input() filterValue: string;\r\n /**\r\n * bind to [inputFilterBlur], emits with (blur) of filter input box\r\n */\r\n @Output() inputFilterBlur = new EventEmitter<string>();\r\n /**\r\n * bind to [filterValueChange], for 2-way binding of filterValue\r\n */\r\n @Output() filterValueChange = new EventEmitter<string>();\r\n\r\n /**\r\n * triggers with (blur) event, emits the (inputFilterBlur) event\r\n */\r\n onFilterTextBlur(event) {\r\n this.inputFilterBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (input) event, emits the (filterValueChange) event for 2-way binding of filterValue\r\n */\r\n onChange() {\r\n this.filterValueChange.emit(this.filterValue);\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport {stopPropagationAndDefault, isNumber} from '../utils/util';\r\nimport {DecimalPipe} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'anchor',\r\n template: `\r\n <span #anchor tabindex=\"2\" [ngClass]=\"anchorClass\" (window:resize)=\"onResize()\"\r\n (mousedown)=\"onAnchorClick($event)\" (blur)=\"onAnchorBlur($event)\"> {{anchorDisplayText}}\r\n <span #selectionClearance class=\"selection-clearance\" (mousedown)=\"onClearanceClick($event)\" *ngIf=\"showClearanceFlag\">&times;</span>\r\n </span>\r\n `,\r\n styleUrls: ['./anchor.component.scss'],\r\n providers: [DecimalPipe]\r\n})\r\n\r\nexport class AnchorComponent {\r\n /**\r\n * Child element reference of anchor\r\n */\r\n @ViewChild('anchor', { read: ElementRef }) anchorRef: ElementRef;\r\n\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [checkbox] for checking whether the clearance flag should be shown or not.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber: boolean;\r\n /**\r\n * bind to [selectedText] for displaying the selected text on anchor\r\n */\r\n @Input() selectedText: any;\r\n /**\r\n * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor\r\n */\r\n @Input() openStatus = false;\r\n /**\r\n * bind to [disabled] for disabling the anchor\r\n */\r\n @Input() disabled = false;\r\n /**\r\n * will be triggered when clicking the anchor\r\n */\r\n @Output() anchorClick = new EventEmitter<any>();\r\n /**\r\n * will be triggered when clicking the clearance\r\n */\r\n @Output() clearanceClick = new EventEmitter<any>();\r\n\r\n /**\r\n * length of anchor element, used for calculate the string length of the anchor displayed text.\r\n */\r\n anchorLength: number;\r\n\r\n constructor(private _decimalPipe: DecimalPipe) {}\r\n\r\n /**\r\n * flag for showing the clearance flag\r\n */\r\n get showClearanceFlag(): boolean {\r\n return !this.checkbox && this.selectedText && this.allowClear;\r\n }\r\n\r\n /**\r\n * the text displays on anchor\r\n */\r\n get anchorDisplayText(): string {\r\n let anchorDisplayText = this.selectedText ? (this.formatNumber ? (isNumber(this.selectedText) ?\r\n this._decimalPipe.transform(this.selectedText, '1.0-2') : this.selectedText) :\r\n this.selectedText) + (this.suffixText ? this.suffixText : '') : this.placeHolder;\r\n\r\n let charLength = 1;\r\n if (this.showClearanceFlag && this.anchorLength > 0) {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n } else {\r\n charLength = Math.floor((this.anchorLength - 50) / 7);\r\n }\r\n\r\n if (anchorDisplayText.length > charLength) {\r\n anchorDisplayText = anchorDisplayText.slice(0, charLength - 2) + '...';\r\n }\r\n return anchorDisplayText;\r\n }\r\n\r\n /**\r\n * anchor CSS class\r\n */\r\n get anchorClass(): string {\r\n let anchorClassStatusPart;\r\n let anchorClassFontColor;\r\n if (this.disabled) {\r\n anchorClassStatusPart = 'selection-anchor-disabled';\r\n anchorClassFontColor = 'place-holder';\r\n } else {\r\n if (this.openStatus) {\r\n anchorClassStatusPart = 'selection-anchor-open';\r\n } else {\r\n anchorClassStatusPart = 'selection-anchor-close';\r\n }\r\n if (this.selectedText != null) {\r\n anchorClassFontColor = 'selected-item';\r\n } else {\r\n anchorClassFontColor = 'place-holder';\r\n }\r\n }\r\n return `${anchorClassStatusPart} ${anchorClassFontColor}`;\r\n }\r\n\r\n /**\r\n * triggered when clicking the anchor\r\n */\r\n onAnchorClick(event: Event): void {\r\n this.anchorClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered with (blur) of anchor\r\n */\r\n onAnchorBlur(event: Event): void {\r\n stopPropagationAndDefault(event);\r\n }\r\n\r\n /**\r\n * triggered when clicking the clearance\r\n */\r\n onClearanceClick(event: Event): void {\r\n this.clearanceClick.emit(event);\r\n }\r\n\r\n /**\r\n * triggered when resizing, get the clientWidth of anchor\r\n */\r\n onResize() {\r\n this.anchorLength = this.anchorRef ? this.anchorRef.nativeElement ? this.anchorRef.nativeElement.clientWidth : 0 : 0;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {clearAllSelection, getFirstSelectedItem, hasGroup, stopPropagationAndDefault} from '../utils/util';\r\n\r\n@Component({\r\n selector: 'dropdown',\r\n template: `\r\n <span #dropdown class=\"dropdown\" tabindex=\"3\" (mousedown)=\"onItemsClick($event)\" (blur)=\"onItemsBlur($event)\" *ngIf=\"!disabled\" >\r\n <input-filter #filterInput tabindex=\"4\" *ngIf=\"filterBox && !checkbox\" [(filterValue)]=\"filterValue\" (inputFilterBlur)=\"onFilterTextBlur($event)\"></input-filter>\r\n <span #selectionOptions [ngClass]=\"optionsClass\">\r\n <ng-container *ngFor=\"let item of itemsValues\" >\r\n <ng-container *ngIf=\"item && item.group\">\r\n <group-item [item]=\"item\"></group-item>\r\n <item *ngFor=\"let subItem of item.items\" (itemClick)=\"onItemClick(subItem)\" (checkStatusChange)=\"toggleSelection(subItem)\"\r\n [item]=\"subItem\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n <ng-container *ngIf=\"item && !item.group\">\r\n <item (itemClick)=\"onItemClick(item)\" (checkStatusChange)=\"toggleSelection(item)\"\r\n [item]=\"item\" [checkbox]=\"checkbox\" [formatNumber]=\"formatNumber\" [suffixText]=\"suffixText\">\r\n </item>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </span>\r\n `,\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\n\r\nexport class DropdownComponent implements OnChanges {\r\n /**\r\n * Child element reference of dropdown\r\n */\r\n @ViewChild('dropdown', { read: ElementRef }) dropdownRef: ElementRef;\r\n /**\r\n * Child element reference of filter input text\r\n */\r\n @ViewChild('filterInput', { read: ElementRef }) filterInputRef: ElementRef;\r\n /**\r\n * bind to [placeHolder] for displaying the place holder string of the anchor.\r\n */\r\n @Input() placeHolder: string;\r\n /**\r\n * bind to [items] for the options/groups in the dropdown\r\n */\r\n @Input() items: any[];\r\n /**\r\n * bind to [checkbox], the flag for multi-select (checkbox) mode.\r\n */\r\n @Input() checkbox = false;\r\n /**\r\n * bind to [selectedValue] for the value of the selected option from dropdown\r\n */\r\n @Input() selectedValue: any;\r\n /**\r\n * bind to [filterBox] for displaying the filter input text box\r\n */\r\n @Input() filterBox = false;\r\n /**\r\n * bind to [suffixText] for displaying the suffix of the selected text of anchor\r\n */\r\n @Input() suffixText: string;\r\n /**\r\n * bind to [disabled] for disabling the dropdown\r\n */\r\n @Input() disabled: boolean;\r\n /**\r\n * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)\r\n */\r\n @Input() allowClear = true;\r\n /**\r\n * bind to [formatNumber] for show formatted number text\r\n */\r\n @Input() formatNumber = false;\r\n /**\r\n * for 2-way binding of [selectedValue]\r\n */\r\n @Output() selectedValueChange = new EventEmitter<string>(true);\r\n /**\r\n * [selectionChange] event that will be triggered when changing of the selection\r\n */\r\n @Output() selectionChange = new EventEmitter<any>(true);\r\n /**\r\n * [dropdownBlur] event that will be triggered with (blur) of dropdown\r\n */\r\n @Output() dropdownBlur = new EventEmitter<any>();\r\n /**\r\n * [itemClick] event that will be triggered when clicking the option of dropdown\r\n */\r\n @Output() itemClick = new EventEmitter<any>();\r\n /**\r\n * filter value\r\n */\r\n filterValue: string;\r\n /**\r\n * flag of clicking dropdown. It's to prevent (blur) of dropdown from happening in checkbox mode.\r\n */\r\n private _clickedItems = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.items) {\r\n this._checkSelectionChange(changes.items.previousValue, changes.items.currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the dropdown\r\n */\r\n onItemsClick(event: any): void {\r\n if (event.offsetX > (event.target.clientWidth + event.target.clientLeft)) {\r\n stopPropagationAndDefault(event);\r\n return;\r\n }\r\n // should ignore clicking on filter\r\n if (this.checkbox && event.target.type !== 'text') {\r\n this._clickedItems = true;\r\n }\r\n }\r\n\r\n /**\r\n * triggered when clicking the item\r\n */\r\n onItemClick(currentItem): void {\r\n if (!this.checkbox) {\r\n this.selectedValue = this._getItemValue(currentItem); // currentItem.value != null ? currentItem.value : currentItem.text;\r\n clearAllSelection(this.items);\r\n // set the selection of current one\r\n currentItem.selected = true;\r\n this.itemClick.emit(currentItem);\r\n this._onSelectionChange(this.selectedValue);\r\n }\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of filter input box\r\n */\r\n onFilterTextBlur(event): void {\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * triggers with (blur) event of dropdown\r\n */\r\n onItemsBlur(event): void {\r\n if (this.checkbox) {\r\n if (this._clickedItems) {\r\n // in checkbox mode, this blur event will be ignored when clicking the dropdown (check the checkbox)\r\n event.target.focus();\r\n this._clickedItems = false;\r\n return;\r\n }\r\n }\r\n this.dropdownBlur.emit(event);\r\n }\r\n\r\n /**\r\n * toggle the selection when checking status changed (in checkbox mode)\r\n */\r\n toggleSelection(item: {id: string, value?: any, text: any, selected?: boolean}): void {\r\n item.selected = !item.selected;\r\n this.selectionChange.emit(this._getItemValue(item)); // item.value != null ? item.value : item.text);\r\n }\r\n\r\n /**\r\n * items values list after applying the filter\r\n */\r\n get itemsValues(): any[] {\r\n let filter;\r\n if (this.filterValue) {\r\n filter = this.filterValue.toUpperCase();\r\n }\r\n\r\n if (filter == null) {\r\n return this.items;\r\n }\r\n if (!this.items || this.items.length === 0) {\r\n return [];\r\n }\r\n if (hasGroup(this.items)) {\r\n const items = [];\r\n this.items.forEach(groupItem => {\r\n if (groupItem.group != null && groupItem.group.toString().toUpperCase().includes(filter)) {\r\n // if groupItem contains the filters, the groupItem needs to be displayed as well\r\n items.push(groupItem);\r\n } else {\r\n const filteredItems = groupItem.items.filter(item => item.text != null && item.text.toString().toUpperCase().includes(filter));\r\n if (filteredItems && filteredItems.length > 0) {\r\n items.push({group: groupItem.group, items: filteredItems});\r\n }\r\n }\r\n });\r\n return items;\r\n } else {\r\n return this.items.filter(item => (item.text != null && item.text.toString().toUpperCase().includes(filter)));\r\n }\r\n }\r\n /**\r\n * options CSS class\r\n */\r\n get optionsClass(): string {\r\n if (this.filterBox && !this.checkbox) {\r\n return 'options with-filter';\r\n } else {\r\n return 'options no-filter';\r\n }\r\n }\r\n\r\n /**\r\n * get item value. Return text if value is not available\r\n */\r\n private _getItemValue(item): any {\r\n return item ? item.value != null ? item.value : item.text : undefined;\r\n }\r\n\r\n /**\r\n * selection changed, emits events: (selectedValueChange) and (selectionChange);\r\n */\r\n private _onSelectionChange(value) {\r\n this.selectedValueChange.emit(value);\r\n this.selectionChange.emit(value);\r\n }\r\n\r\n /**\r\n * check whether the selection is changed. Emits relative events when if changed.\r\n */\r\n private _checkSelectionChange(previousValue, currentValue) {\r\n const curSelectedItem = getFirstSelectedItem(currentValue);\r\n const lastSelectedItem = getFirstSelectedItem(previousValue);\r\n const curSelectedItemId = curSelectedItem ? curSelectedItem.id : undefined;\r\n const lastSelectedItemId = lastSelectedItem ? lastSelectedItem.id : undefined;\r\n if (curSelectedItemId !== lastSelectedItemId && !this.checkbox) {\r\n this._onSelectionChange(this._getItemValue(curSelectedItem));\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ItemComponent } from './item/item.component';\r\nimport { GroupItemComponent } from './group-item/group-item.component';\r\nimport { InputFilterComponent } from './filter/input-filter.component';\r\nimport { AnchorComponent } from './anchor/anchor.component';\r\nimport { DropdownComponent } from './dropdown/dropdown.component';\r\nimport { DropdownListComponent } from './dropdown-list.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownListComponent,\r\n ItemComponent,\r\n GroupItemComponent,\r\n InputFilterComponent,\r\n AnchorComponent,\r\n DropdownComponent\r\n ],\r\n exports: [ DropdownListComponent],\r\n imports: [ CommonModule, FormsModule ],\r\n providers: [],\r\n bootstrap: [],\r\n})\r\nexport class DropdownListModule {}\r\n"],"names":["__values","o","s","Symbol","iterator","m","i","call","length","next","value","done","TypeError","hasGroup","items","find","item","group","clearAllSelection","items_1","tslib_1.__values","items_1_1","groupItem","filter","selected","forEach","stopPropagationAndDefault","event","stopImmediatePropagation","stopPropagation","preventDefault","isNumber","isNaN","getFirstSelectedItem","undefined","items_2","items_2_1","selectedItem","subItem","DropdownListComponent","Object","defineProperty","prototype","this","multiSelection","text","onSelectionChange","selectedValueChange","emit","selectionChange","onAnchorClick","disabled","_isSelectionOpen","_hideItemList","_showItemsList","onItemClick","onClearanceClick","selectedValue","onItemsBlur","_dropdownElement","classList","remove","style","display","dropdownVisibility","add","_selectedElement","scrollIntoView","behavior","block","filterBox","_filterInputElement","focus","dropdownRef","nativeElement","firstElementChild","document","getElementById","id","Component","args","selector","template","ViewChild","read","ElementRef","Input","Output","allowClear","formatNumber","EventEmitter","ItemComponent","needFormatNumber","itemClick","onCheckStatusChange","checkStatusChange","GroupItemComponent","onItemGroupClick","InputFilterComponent","onFilterTextBlur","inputFilterBlur","onChange","filterValueChange","filterValue","AnchorComponent","checkbox","selectedText","anchorDisplayText","_decimalPipe","transform","suffixText","placeHolder","charLength","showClearanceFlag","anchorLength","Math","floor","slice","anchorClassStatusPart","anchorClassFontColor","openStatus","anchorClick","onAnchorBlur","clearanceClick","onResize","anchorRef","clientWidth","providers","DecimalPipe","DropdownComponent","ngOnChanges","changes","_checkSelectionChange","previousValue","currentValue","onItemsClick","offsetX","target","clientLeft","type","_clickedItems","currentItem","_getItemValue","_onSelectionChange","dropdownBlur","toggleSelection","toUpperCase","filteredItems","toString","includes","push","curSelectedItem","lastSelectedItem","NgModule","declarations","exports","imports","CommonModule","FormsModule","bootstrap","DropdownListModule"],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * Generated bundle index. Do not edit.
7
- */
8
- export { DropdownListComponent, DropdownListModule } from './public_api';
9
- export { AnchorComponent as ɵd } from './src/ngx-dropdown-list/anchor/anchor.component';
10
- export { DropdownComponent as ɵe } from './src/ngx-dropdown-list/dropdown/dropdown.component';
11
- export { InputFilterComponent as ɵc } from './src/ngx-dropdown-list/filter/input-filter.component';
12
- export { GroupItemComponent as ɵb } from './src/ngx-dropdown-list/group-item/group-item.component';
13
- export { ItemComponent as ɵa } from './src/ngx-dropdown-list/item/item.component';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3Bkb3duLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZHJvcGRvd24tbGlzdC8iLCJzb3VyY2VzIjpbIm5neC1kcm9wZG93bi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwwREFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0FuY2hvckNvbXBvbmVudCBhcyDJtWR9IGZyb20gJy4vc3JjL25neC1kcm9wZG93bi1saXN0L2FuY2hvci9hbmNob3IuY29tcG9uZW50JztcbmV4cG9ydCB7RHJvcGRvd25Db21wb25lbnQgYXMgybVlfSBmcm9tICcuL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xuZXhwb3J0IHtJbnB1dEZpbHRlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vc3JjL25neC1kcm9wZG93bi1saXN0L2ZpbHRlci9pbnB1dC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7R3JvdXBJdGVtQ29tcG9uZW50IGFzIMm1Yn0gZnJvbSAnLi9zcmMvbmd4LWRyb3Bkb3duLWxpc3QvZ3JvdXAtaXRlbS9ncm91cC1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQge0l0ZW1Db21wb25lbnQgYXMgybVhfSBmcm9tICcuL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC9pdGVtL2l0ZW0uY29tcG9uZW50JzsiXX0=
@@ -1,6 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- export { DropdownListComponent, DropdownListModule } from './src/ngx-dropdown-list/index';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wZG93bi1saXN0LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMERBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9uZ3gtZHJvcGRvd24tbGlzdC9pbmRleCc7XHJcbiJdfQ==
@@ -1,226 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
6
- import { stopPropagationAndDefault, isNumber } from '../utils/util';
7
- import { DecimalPipe } from '@angular/common';
8
- export class AnchorComponent {
9
- /**
10
- * @param {?} _decimalPipe
11
- */
12
- constructor(_decimalPipe) {
13
- this._decimalPipe = _decimalPipe;
14
- /**
15
- * bind to [checkbox] for checking whether the clearance flag should be shown or not.
16
- */
17
- this.checkbox = false;
18
- /**
19
- * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
20
- */
21
- this.allowClear = true;
22
- /**
23
- * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor
24
- */
25
- this.openStatus = false;
26
- /**
27
- * bind to [disabled] for disabling the anchor
28
- */
29
- this.disabled = false;
30
- /**
31
- * will be triggered when clicking the anchor
32
- */
33
- this.anchorClick = new EventEmitter();
34
- /**
35
- * will be triggered when clicking the clearance
36
- */
37
- this.clearanceClick = new EventEmitter();
38
- }
39
- /**
40
- * flag for showing the clearance flag
41
- * @return {?}
42
- */
43
- get showClearanceFlag() {
44
- return !this.checkbox && this.selectedText && this.allowClear;
45
- }
46
- /**
47
- * the text displays on anchor
48
- * @return {?}
49
- */
50
- get anchorDisplayText() {
51
- /** @type {?} */
52
- let anchorDisplayText = this.selectedText ? (this.formatNumber ? (isNumber(this.selectedText) ?
53
- this._decimalPipe.transform(this.selectedText, '1.0-2') : this.selectedText) :
54
- this.selectedText) + (this.suffixText ? this.suffixText : '') : this.placeHolder;
55
- /** @type {?} */
56
- let charLength = 1;
57
- if (this.showClearanceFlag && this.anchorLength > 0) {
58
- charLength = Math.floor((this.anchorLength - 50) / 7);
59
- }
60
- else {
61
- charLength = Math.floor((this.anchorLength - 50) / 7);
62
- }
63
- if (anchorDisplayText.length > charLength) {
64
- anchorDisplayText = anchorDisplayText.slice(0, charLength - 2) + '...';
65
- }
66
- return anchorDisplayText;
67
- }
68
- /**
69
- * anchor CSS class
70
- * @return {?}
71
- */
72
- get anchorClass() {
73
- /** @type {?} */
74
- let anchorClassStatusPart;
75
- /** @type {?} */
76
- let anchorClassFontColor;
77
- if (this.disabled) {
78
- anchorClassStatusPart = 'selection-anchor-disabled';
79
- anchorClassFontColor = 'place-holder';
80
- }
81
- else {
82
- if (this.openStatus) {
83
- anchorClassStatusPart = 'selection-anchor-open';
84
- }
85
- else {
86
- anchorClassStatusPart = 'selection-anchor-close';
87
- }
88
- if (this.selectedText != null) {
89
- anchorClassFontColor = 'selected-item';
90
- }
91
- else {
92
- anchorClassFontColor = 'place-holder';
93
- }
94
- }
95
- return `${anchorClassStatusPart} ${anchorClassFontColor}`;
96
- }
97
- /**
98
- * triggered when clicking the anchor
99
- * @param {?} event
100
- * @return {?}
101
- */
102
- onAnchorClick(event) {
103
- this.anchorClick.emit(event);
104
- }
105
- /**
106
- * triggered with (blur) of anchor
107
- * @param {?} event
108
- * @return {?}
109
- */
110
- onAnchorBlur(event) {
111
- stopPropagationAndDefault(event);
112
- }
113
- /**
114
- * triggered when clicking the clearance
115
- * @param {?} event
116
- * @return {?}
117
- */
118
- onClearanceClick(event) {
119
- this.clearanceClick.emit(event);
120
- }
121
- /**
122
- * triggered when resizing, get the clientWidth of anchor
123
- * @return {?}
124
- */
125
- onResize() {
126
- this.anchorLength = this.anchorRef ? this.anchorRef.nativeElement ? this.anchorRef.nativeElement.clientWidth : 0 : 0;
127
- }
128
- }
129
- AnchorComponent.decorators = [
130
- { type: Component, args: [{
131
- selector: 'anchor',
132
- template: `
133
- <span #anchor tabindex="2" [ngClass]="anchorClass" (window:resize)="onResize()"
134
- (mousedown)="onAnchorClick($event)" (blur)="onAnchorBlur($event)"> {{anchorDisplayText}}
135
- <span #selectionClearance class="selection-clearance" (mousedown)="onClearanceClick($event)" *ngIf="showClearanceFlag">&times;</span>
136
- </span>
137
- `,
138
- providers: [DecimalPipe],
139
- styles: ["*,:after,:before{font-size:inherit;font-weight:inherit;font-family:inherit;box-sizing:inherit;background:inherit}.selection-anchor-close:after,.selection-anchor-disabled:after,.selection-anchor-open:after,.vertical-center{position:absolute;top:50%;transform:translateY(-50%)}.hover-box,.selection-anchor-close:hover{outline:0;box-shadow:0 0 6px #23adff;border-radius:4px}.anchor-box,.selection-anchor,.selection-anchor-close,.selection-anchor-disabled,.selection-anchor-open{height:100%;border-radius:4px;width:100%;position:relative;display:inline-block;padding:8px 12px 5px;border:1px solid;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-sizing:border-box;white-space:nowrap}.selection-anchor,.selection-anchor-close,.selection-anchor-open{cursor:pointer}.selection-anchor .selection-clearance,.selection-anchor-close .selection-clearance,.selection-anchor-open .selection-clearance{position:absolute;right:35px;font-weight:700}.selection-anchor .selection-clearance:hover,.selection-anchor-close .selection-clearance:hover,.selection-anchor-open .selection-clearance:hover{color:#000}.selection-anchor-close:focus,.selection-anchor-open:focus,.selection-anchor:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border-color:#66afe9}.selection-anchor-disabled{border-color:#ccc;cursor:default;pointer-events:none;background:#f8f8f8;filter:opacity(50%)}.selection-anchor-disabled:after{font-size:9px;content:'\\0025BC';right:10px;padding-bottom:3px}.selection-anchor-open{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0;border-color:#66afe9}.selection-anchor-open:after{font-size:9px;content:'\\0025B2';right:10px;padding-bottom:3px}.selection-anchor-close{border-color:#ccc}.selection-anchor-close:after{font-size:9px;content:'\\0025BC';right:10px;padding-bottom:3px}.place-holder{color:#999}.selected-item{color:#495057}"]
140
- }] }
141
- ];
142
- /** @nocollapse */
143
- AnchorComponent.ctorParameters = () => [
144
- { type: DecimalPipe }
145
- ];
146
- AnchorComponent.propDecorators = {
147
- anchorRef: [{ type: ViewChild, args: ['anchor', { read: ElementRef },] }],
148
- placeHolder: [{ type: Input }],
149
- checkbox: [{ type: Input }],
150
- suffixText: [{ type: Input }],
151
- allowClear: [{ type: Input }],
152
- formatNumber: [{ type: Input }],
153
- selectedText: [{ type: Input }],
154
- openStatus: [{ type: Input }],
155
- disabled: [{ type: Input }],
156
- anchorClick: [{ type: Output }],
157
- clearanceClick: [{ type: Output }]
158
- };
159
- if (false) {
160
- /**
161
- * Child element reference of anchor
162
- * @type {?}
163
- */
164
- AnchorComponent.prototype.anchorRef;
165
- /**
166
- * bind to [placeHolder] for displaying the place holder string of the anchor.
167
- * @type {?}
168
- */
169
- AnchorComponent.prototype.placeHolder;
170
- /**
171
- * bind to [checkbox] for checking whether the clearance flag should be shown or not.
172
- * @type {?}
173
- */
174
- AnchorComponent.prototype.checkbox;
175
- /**
176
- * bind to [suffixText] for displaying the suffix of the selected text of anchor
177
- * @type {?}
178
- */
179
- AnchorComponent.prototype.suffixText;
180
- /**
181
- * bind to [allowClear] for enabling the clearance (clearance is not avaiable when checkbox is enabled)
182
- * @type {?}
183
- */
184
- AnchorComponent.prototype.allowClear;
185
- /**
186
- * bind to [formatNumber] for show formatted number text
187
- * @type {?}
188
- */
189
- AnchorComponent.prototype.formatNumber;
190
- /**
191
- * bind to [selectedText] for displaying the selected text on anchor
192
- * @type {?}
193
- */
194
- AnchorComponent.prototype.selectedText;
195
- /**
196
- * bind to [openStatus], it's the visibility status of dropdown, for showing the arrow on anchor
197
- * @type {?}
198
- */
199
- AnchorComponent.prototype.openStatus;
200
- /**
201
- * bind to [disabled] for disabling the anchor
202
- * @type {?}
203
- */
204
- AnchorComponent.prototype.disabled;
205
- /**
206
- * will be triggered when clicking the anchor
207
- * @type {?}
208
- */
209
- AnchorComponent.prototype.anchorClick;
210
- /**
211
- * will be triggered when clicking the clearance
212
- * @type {?}
213
- */
214
- AnchorComponent.prototype.clearanceClick;
215
- /**
216
- * length of anchor element, used for calculate the string length of the anchor displayed text.
217
- * @type {?}
218
- */
219
- AnchorComponent.prototype.anchorLength;
220
- /**
221
- * @type {?}
222
- * @private
223
- */
224
- AnchorComponent.prototype._decimalPipe;
225
- }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wZG93bi1saXN0LyIsInNvdXJjZXMiOlsic3JjL25neC1kcm9wZG93bi1saXN0L2FuY2hvci9hbmNob3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFDLHlCQUF5QixFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFjNUMsTUFBTSxPQUFPLGVBQWU7Ozs7SUFvRDFCLFlBQW9CLFlBQXlCO1FBQXpCLGlCQUFZLEdBQVosWUFBWSxDQUFhOzs7O1FBdkNwQyxhQUFRLEdBQUcsS0FBSyxDQUFDOzs7O1FBUWpCLGVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7UUFZbEIsZUFBVSxHQUFHLEtBQUssQ0FBQzs7OztRQUluQixhQUFRLEdBQUcsS0FBSyxDQUFDOzs7O1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQzs7OztRQUl0QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFPSCxDQUFDOzs7OztJQUtqRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEUsQ0FBQzs7Ozs7SUFLRCxJQUFJLGlCQUFpQjs7WUFDZixpQkFBaUIsR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzlGLElB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O3lCQUlMLEtBQUs7dUJBSUwsS0FBSzswQkFJTCxNQUFNOzZCQUlOLE1BQU07Ozs7Ozs7SUF6Q1Asb0NBQWlFOzs7OztJQUtqRSxzQ0FBNkI7Ozs7O0lBSTdCLG1DQUEwQjs7Ozs7SUFJMUIscUNBQTRCOzs7OztJQUk1QixxQ0FBMkI7Ozs7O0lBSTNCLHVDQUErQjs7Ozs7SUFJL0IsdUNBQTJCOzs7OztJQUkzQixxQ0FBNEI7Ozs7O0lBSTVCLG1DQUEwQjs7Ozs7SUFJMUIsc0NBQWdEOzs7OztJQUloRCx5Q0FBbUQ7Ozs7O0lBS25ELHVDQUFxQjs7Ozs7SUFFVCx1Q0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge3N0b3BQcm9wYWdhdGlvbkFuZERlZmF1bHQsIGlzTnVtYmVyfSBmcm9tICcuLi91dGlscy91dGlsJztcclxuaW1wb3J0IHtEZWNpbWFsUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5jaG9yJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNwYW4gI2FuY2hvciB0YWJpbmRleD1cIjJcIiBbbmdDbGFzc109XCJhbmNob3JDbGFzc1wiICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKClcIlxyXG4gICAgICAgICAgKG1vdXNlZG93bik9XCJvbkFuY2hvckNsaWNrKCRldmVudClcIiAoYmx1cik9XCJvbkFuY2hvckJsdXIoJGV2ZW50KVwiPiB7e2FuY2hvckRpc3BsYXlUZXh0fX1cclxuICAgICAgPHNwYW4gI3NlbGVjdGlvbkNsZWFyYW5jZSBjbGFzcz1cInNlbGVjdGlvbi1jbGVhcmFuY2VcIiAobW91c2Vkb3duKT1cIm9uQ2xlYXJhbmNlQ2xpY2soJGV2ZW50KVwiICpuZ0lmPVwic2hvd0NsZWFyYW5jZUZsYWdcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYW5jaG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbRGVjaW1hbFBpcGVdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQW5jaG9yQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgKiBDaGlsZCBlbGVtZW50IHJlZmVyZW5jZSBvZiBhbmNob3JcclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdhbmNob3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYW5jaG9yUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtwbGFjZUhvbGRlcl0gZm9yIGRpc3BsYXlpbmcgdGhlIHBsYWNlIGhvbGRlciBzdHJpbmcgb2YgdGhlIGFuY2hvci5cclxuICAgKi9cclxuICBASW5wdXQoKSBwbGFjZUhvbGRlcjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2NoZWNrYm94XSBmb3IgY2hlY2tpbmcgd2hldGhlciB0aGUgY2xlYXJhbmNlIGZsYWcgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cclxuICAgKi9cclxuICBASW5wdXQoKSBjaGVja2JveCA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW3N1ZmZpeFRleHRdIGZvciBkaXNwbGF5aW5nIHRoZSBzdWZmaXggb2YgdGhlIHNlbGVjdGVkIHRleHQgb2YgYW5jaG9yXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3VmZml4VGV4dDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW2FsbG93Q2xlYXJdIGZvciBlbmFibGluZyB0aGUgY2xlYXJhbmNlIChjbGVhcmFuY2UgaXMgbm90IGF2YWlhYmxlIHdoZW4gY2hlY2tib3ggaXMgZW5hYmxlZClcclxuICAgKi9cclxuICBASW5wdXQoKSBhbGxvd0NsZWFyID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtmb3JtYXROdW1iZXJdIGZvciBzaG93IGZvcm1hdHRlZCBudW1iZXIgdGV4dFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdE51bWJlcjogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtzZWxlY3RlZFRleHRdIGZvciBkaXNwbGF5aW5nIHRoZSBzZWxlY3RlZCB0ZXh0IG9uIGFuY2hvclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGV4dDogYW55O1xyXG4gIC8qKlxyXG4gICAqIGJpbmQgdG8gW29wZW5TdGF0dXNdLCBpdCdzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiBkcm9wZG93biwgZm9yIHNob3dpbmcgdGhlIGFycm93IG9uIGFuY2hvclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wZW5TdGF0dXMgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBiaW5kIHRvIFtkaXNhYmxlZF0gZm9yIGRpc2FibGluZyB0aGUgYW5jaG9yXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGNsaWNraW5nIHRoZSBhbmNob3JcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYW5jaG9yQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvKipcclxuICAgKiB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIGNsaWNraW5nIHRoZSBjbGVhcmFuY2VcclxuICAgKi9cclxuICBAT3V0cHV0KCkgY2xlYXJhbmNlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogbGVuZ3RoIG9mIGFuY2hvciBlbGVtZW50LCB1c2VkIGZvciBjYWxjdWxhdGUgdGhlIHN0cmluZyBsZW5ndGggb2YgdGhlIGFuY2hvciBkaXNwbGF5ZWQgdGV4dC5cclxuICAgKi9cclxuICBhbmNob3JMZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBmbGFnIGZvciBzaG93aW5nIHRoZSBjbGVhcmFuY2UgZmxhZ1xyXG4gICAqL1xyXG4gIGdldCBzaG93Q2xlYXJhbmNlRmxhZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5jaGVja2JveCAmJiB0aGlzLnNlbGVjdGVkVGV4dCAmJiB0aGlzLmFsbG93Q2xlYXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0aGUgdGV4dCBkaXNwbGF5cyBvbiBhbmNob3JcclxuICAgKi9cclxuICBnZXQgYW5jaG9yRGlzcGxheVRleHQoKTogc3RyaW5nIHtcclxuICAgIGxldCBhbmNob3JEaXNwbGF5VGV4dCA9ICB0aGlzLnNlbGVjdGVkVGV4dCA/ICh0aGlzLmZvcm1hdE51bWJlciA/IChpc051bWJlcih0aGlzLnNlbGVjdGVkVGV4dCkgP1xyXG4gICAgICB0aGlzLl9kZWNpbWFsUGlwZS50cmFuc2Zvcm0odGhpcy5zZWxlY3RlZFRleHQsICcxLjAtMicpIDogdGhpcy5zZWxlY3RlZFRleHQpIDpcclxuICAgICAgdGhpcy5zZWxlY3RlZFRleHQpICsgKHRoaXMuc3VmZml4VGV4dCA/IHRoaXMuc3VmZml4VGV4dCA6ICcnKSA6IHRoaXMucGxhY2VIb2xkZXI7XHJcblxyXG4gICAgbGV0IGNoYXJMZW5ndGggPSAxO1xyXG4gICAgaWYgKHRoaXMuc2hvd0NsZWFyYW5jZUZsYWcgJiYgdGhpcy5hbmNob3JMZW5ndGggPiAwKSB7XHJcbiAgICAgIGNoYXJMZW5ndGggPSBNYXRoLmZsb29yKCh0aGlzLmFuY2hvckxlbmd0aCAtIDUwKSAvIDcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hhckxlbmd0aCA9IE1hdGguZmxvb3IoKHRoaXMuYW5jaG9yTGVuZ3RoIC0gNTApIC8gNyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFuY2hvckRpc3BsYXlUZXh0Lmxlbmd0aCA+IGNoYXJMZW5ndGgpIHtcclxuICAgICAgYW5jaG9yRGlzcGxheVRleHQgPSBhbmNob3JEaXNwbGF5VGV4dC5zbGljZSgwLCBjaGFyTGVuZ3RoIC0gMikgKyAnLi4uJztcclxuICAgIH1cclxuICAgIHJldHVybiBhbmNob3JEaXNwbGF5VGV4dDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGFuY2hvciBDU1MgY2xhc3NcclxuICAgKi9cclxuICBnZXQgYW5jaG9yQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGxldCBhbmNob3JDbGFzc1N0YXR1c1BhcnQ7XHJcbiAgICBsZXQgYW5jaG9yQ2xhc3NGb250Q29sb3I7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBhbmNob3JDbGFzc1N0YXR1c1BhcnQgPSAnc2VsZWN0aW9uLWFuY2hvci1kaXNhYmxlZCc7XHJcbiAgICAgIGFuY2hvckNsYXNzRm9udENvbG9yID0gJ3BsYWNlLWhvbGRlcic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5vcGVuU3RhdHVzKSB7XHJcbiAgICAgICAgYW5jaG9yQ2xhc3NTdGF0dXNQYXJ0ID0gJ3NlbGVjdGlvbi1hbmNob3Itb3Blbic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYW5jaG9yQ2xhc3NTdGF0dXNQYXJ0ID0gJ3NlbGVjdGlvbi1hbmNob3ItY2xvc2UnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGV4dCAhPSBudWxsKSB7XHJcbiAgICAgICAgYW5jaG9yQ2xhc3NGb250Q29sb3IgPSAnc2VsZWN0ZWQtaXRlbSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYW5jaG9yQ2xhc3NGb250Q29sb3IgPSAncGxhY2UtaG9sZGVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke2FuY2hvckNsYXNzU3RhdHVzUGFydH0gJHthbmNob3JDbGFzc0ZvbnRDb2xvcn1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhlIGFuY2hvclxyXG4gICAqL1xyXG4gIG9uQW5jaG9yQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmFuY2hvckNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdpdGggKGJsdXIpIG9mIGFuY2hvclxyXG4gICAqL1xyXG4gIG9uQW5jaG9yQmx1cihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHN0b3BQcm9wYWdhdGlvbkFuZERlZmF1bHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdoZW4gY2xpY2tpbmcgdGhlIGNsZWFyYW5jZVxyXG4gICAqL1xyXG4gIG9uQ2xlYXJhbmNlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyYW5jZUNsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogdHJpZ2dlcmVkIHdoZW4gcmVzaXppbmcsIGdldCB0aGUgY2xpZW50V2lkdGggb2YgYW5jaG9yXHJcbiAgICovXHJcbiAgb25SZXNpemUoKSB7XHJcbiAgICB0aGlzLmFuY2hvckxlbmd0aCA9IHRoaXMuYW5jaG9yUmVmID8gdGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudCA/IHRoaXMuYW5jaG9yUmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggOiAwIDogMDtcclxuICB9XHJcbn1cclxuIl19