@pepperi-addons/ngx-lib 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-list.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-lib/list/virtual-scroller.ts","../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChild,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tNgModule,\r\n\tNgZone,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOptional,\r\n\tOutput,\r\n\tRenderer2,\r\n\tViewChild,\r\n} from '@angular/core';\r\n\r\nimport { PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport * as tween from '@tweenjs/tween.js'\r\n\r\nexport interface VirtualScrollerDefaultOptions {\r\n\tcheckResizeInterval: number\r\n\tmodifyOverflowStyleOfParentScroll: boolean,\r\n\tresizeBypassRefreshThreshold: number,\r\n\tscrollAnimationTime: number;\r\n\tscrollDebounceTime: number;\r\n\tscrollThrottlingTime: number;\r\n\tscrollbarHeight?: number;\r\n\tscrollbarWidth?: number;\r\n\tstripedTable: boolean\r\n}\r\n\r\nexport function VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY(): VirtualScrollerDefaultOptions {\r\n\treturn {\r\n\t\tcheckResizeInterval: 1000,\r\n\t\tmodifyOverflowStyleOfParentScroll: true,\r\n\t\tresizeBypassRefreshThreshold: 5,\r\n\t\tscrollAnimationTime: 750,\r\n\t\tscrollDebounceTime: 0,\r\n\t\tscrollThrottlingTime: 0,\r\n\t\tstripedTable: false\r\n\t};\r\n}\r\n\r\nexport interface WrapGroupDimensions {\r\n\tmaxChildSizePerWrapGroup: WrapGroupDimension[];\r\n\tnumberOfKnownWrapGroupChildSizes: number;\r\n\tsumOfKnownWrapGroupChildHeights: number;\r\n\tsumOfKnownWrapGroupChildWidths: number;\r\n}\r\n\r\nexport interface WrapGroupDimension {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titems: any[];\r\n}\r\n\r\nexport interface IDimensions {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titemCount: number;\r\n\titemsPerPage: number;\r\n\titemsPerWrapGroup: number;\r\n\tmaxScrollPosition: number;\r\n\tpageCount_fractional: number;\r\n\tscrollLength: number;\r\n\tviewportLength: number;\r\n\twrapGroupsPerPage: number;\r\n}\r\n\r\nexport type ScrollDirectionType = 'backward' | 'forward';\r\n\r\nexport interface IPageInfo {\r\n\tendIndex: number;\r\n\tendIndexWithBuffer: number;\r\n\tmaxScrollPosition: number;\r\n\tscrollEndPosition: number;\r\n\tscrollStartPosition: number;\r\n\tscrollDirection?: ScrollDirectionType;\r\n\tstartIndex: number;\r\n\tstartIndexWithBuffer: number;\r\n}\r\n\r\nexport interface IViewport extends IPageInfo {\r\n\tpadding: number;\r\n\tscrollLength: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'virtual-scroller,[virtualScroller]',\r\n\texportAs: 'virtualScroller',\r\n\ttemplate: `\r\n <div class=\"total-padding\" #invisiblePadding></div>\r\n <div class=\"scrollable-content\" #content>\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n\thost: {\r\n\t\t'[class.horizontal]': \"horizontal\",\r\n\t\t'[class.vertical]': \"!horizontal\",\r\n\t\t'[class.selfScroll]': \"!parentScroll\",\r\n\t\t'[class.rtl]': \"RTL\"\r\n\t},\r\n\tstyles: [`\r\n :host {\r\n position: relative;\r\n\t \tdisplay: block;\r\n -webkit-overflow-scrolling: touch;\r\n }\r\n\t\t:host.horizontal.selfScroll {\r\n overflow-y: visible;\r\n overflow-x: auto;\r\n\t\t}\r\n\t\t:host.horizontal.selfScroll.rtl {\r\n\t\t\ttransform: scaleX(-1);\r\n\t\t}\r\n\t\t:host.vertical.selfScroll {\r\n overflow-y: auto;\r\n overflow-x: visible;\r\n\t\t}\r\n .scrollable-content {\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n max-width: 100vw;\r\n max-height: 100vh;\r\n position: absolute;\r\n }\r\n\t\t.scrollable-content ::ng-deep > * {\r\n\t\t\tbox-sizing: border-box;\r\n\t\t}\r\n\t\t:host.horizontal {\r\n\t\t\twhite-space: nowrap;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content {\r\n\t\t\tdisplay: flex;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content ::ng-deep > * {\r\n\t\t\tflex-shrink: 0;\r\n\t\t\tflex-grow: 0;\r\n\t\t\twhite-space: initial;\r\n\t\t}\r\n\t\t:host.horizontal.rtl .scrollable-content ::ng-deep > * {\r\n\t\t\ttransform:scaleX(-1);\r\n\t\t}\r\n .total-padding {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 1px;\r\n width: 1px;\r\n transform-origin: 0 0;\r\n opacity: 0;\r\n }\r\n :host.horizontal .total-padding {\r\n height: 100%;\r\n }\r\n `]\r\n})\r\nexport class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\tpublic viewPortItems: any[];\r\n\tpublic window = window;\r\n\r\n\tpublic get viewPortInfo(): IPageInfo {\r\n\t\tconst pageInfo: IViewport = this.previousViewPort || <any>{};\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex || 0,\r\n\t\t\tendIndex: pageInfo.endIndex || 0,\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition || 0,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition || 0,\r\n\t\t\tscrollDirection: pageInfo.scrollDirection || 'forward',\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition || 0,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer || 0,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _disable = false;\r\n\t@Input()\r\n\tpublic get disable(): boolean {\r\n\t\treturn this._disable;\r\n\t}\r\n\tpublic set disable(value: boolean) {\r\n\t\tif (this._disable === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._disable = value;\r\n\t\tif (this._disable) {\r\n\t\t\tthis.removeScrollEventHandlers();\r\n\t\t} else {\r\n\t\t\tthis.addScrollEventHandlers();\r\n\t\t}\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic executeRefreshOutsideAngularZone = false;\r\n\r\n\tprotected _enableUnequalChildrenSizes = false;\r\n\t@Input()\r\n\tpublic get enableUnequalChildrenSizes(): boolean {\r\n\t\treturn this._enableUnequalChildrenSizes;\r\n\t}\r\n\tpublic set enableUnequalChildrenSizes(value: boolean) {\r\n\t\tif (this._enableUnequalChildrenSizes === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._enableUnequalChildrenSizes = value;\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic RTL = false;\r\n\r\n\t@Input()\r\n\tpublic useMarginInsteadOfTranslate = false;\r\n\r\n\t@Input()\r\n\tpublic modifyOverflowStyleOfParentScroll: boolean;\r\n\r\n\t@Input()\r\n\tpublic stripedTable: boolean;\r\n\r\n\t@Input()\r\n\tpublic scrollbarWidth: number;\r\n\r\n\t@Input()\r\n\tpublic scrollbarHeight: number;\r\n\r\n\t@Input()\r\n\tpublic childWidth: number;\r\n\r\n\t@Input()\r\n\tpublic childHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildWidth: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportWidth = 1920;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportHeight = 1080;\r\n\r\n\tprotected _bufferAmount: number;\r\n\t@Input()\r\n\tpublic get bufferAmount(): number {\r\n\t\tif (typeof (this._bufferAmount) === 'number' && this._bufferAmount >= 0) {\r\n\t\t\treturn this._bufferAmount;\r\n\t\t} else {\r\n\t\t\treturn this.enableUnequalChildrenSizes ? 5 : 0;\r\n\t\t}\r\n\t}\r\n\tpublic set bufferAmount(value: number) {\r\n\t\tthis._bufferAmount = value;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic scrollAnimationTime: number;\r\n\r\n\t@Input()\r\n\tpublic resizeBypassRefreshThreshold: number;\r\n\r\n\tprotected _scrollThrottlingTime: number;\r\n\t@Input()\r\n\tpublic get scrollThrottlingTime(): number {\r\n\t\treturn this._scrollThrottlingTime;\r\n\t}\r\n\tpublic set scrollThrottlingTime(value: number) {\r\n\t\tthis._scrollThrottlingTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected _scrollDebounceTime: number;\r\n\t@Input()\r\n\tpublic get scrollDebounceTime(): number {\r\n\t\treturn this._scrollDebounceTime;\r\n\t}\r\n\tpublic set scrollDebounceTime(value: number) {\r\n\t\tthis._scrollDebounceTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected onScroll: () => void;\r\n\tprotected updateOnScrollFunction(): void {\r\n\t\tif (this.scrollDebounceTime) {\r\n\t\t\tthis.onScroll = <any>this.debounce(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollDebounceTime);\r\n\t\t}\r\n\t\telse if (this.scrollThrottlingTime) {\r\n\t\t\tthis.onScroll = <any>this.throttleTrailing(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollThrottlingTime);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.onScroll = () => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkScrollElementResizedTimer: number;\r\n\tprotected _checkResizeInterval: number;\r\n\t@Input()\r\n\tpublic get checkResizeInterval(): number {\r\n\t\treturn this._checkResizeInterval;\r\n\t}\r\n\tpublic set checkResizeInterval(value: number) {\r\n\t\tif (this._checkResizeInterval === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._checkResizeInterval = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tprotected _items: any[] = [];\r\n\t@Input()\r\n\tpublic get items(): any[] {\r\n\t\treturn this._items;\r\n\t}\r\n\tpublic set items(value: any[]) {\r\n\t\tif (value === this._items) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._items = value || [];\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic compareItems: (item1: any, item2: any) => boolean = (item1: any, item2: any) => item1 === item2;\r\n\r\n\tprotected _horizontal: boolean;\r\n\t@Input()\r\n\tpublic get horizontal(): boolean {\r\n\t\treturn this._horizontal;\r\n\t}\r\n\tpublic set horizontal(value: boolean) {\r\n\t\tthis._horizontal = value;\r\n\t\tthis.updateDirection();\r\n\t}\r\n\r\n\tprotected revertParentOverscroll(): void {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (scrollElement && this.oldParentScrollOverflow) {\r\n\t\t\tscrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\r\n\t\t\tscrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\r\n\t\t}\r\n\r\n\t\tthis.oldParentScrollOverflow = undefined;\r\n\t}\r\n\r\n\tprotected oldParentScrollOverflow: { x: string, y: string };\r\n\tprotected _parentScroll: Element | Window;\r\n\t@Input()\r\n\tpublic get parentScroll(): Element | Window {\r\n\t\treturn this._parentScroll;\r\n\t}\r\n\tpublic set parentScroll(value: Element | Window) {\r\n\t\tif (this._parentScroll === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.revertParentOverscroll();\r\n\t\tthis._parentScroll = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (this.modifyOverflowStyleOfParentScroll && scrollElement !== this.element.nativeElement) {\r\n\t\t\tthis.oldParentScrollOverflow = { x: scrollElement.style['overflow-x'], y: scrollElement.style['overflow-y'] };\r\n\t\t\tscrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\r\n\t\t\tscrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _lastChildRect: ClientRect;\r\n\r\n\t@Output()\r\n\tpublic vsChildRectChange: EventEmitter<ClientRect> = new EventEmitter<ClientRect>();\r\n\r\n\t@Output()\r\n\tpublic vsUpdate: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n\t@Output()\r\n\tpublic vsChange: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsStart: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsEnd: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@ViewChild('content', { read: ElementRef, static: true })\r\n\tpublic contentElementRef: ElementRef;\r\n\r\n\t@ViewChild('invisiblePadding', { read: ElementRef, static: true })\r\n\tprotected invisiblePaddingElementRef: ElementRef;\r\n\r\n\t@ContentChild('header', { read: ElementRef, static: false })\r\n\tprotected headerElementRef: ElementRef;\r\n\r\n\t@ContentChild('container', { read: ElementRef, static: false })\r\n\tprotected containerElementRef: ElementRef;\r\n\r\n\tpublic ngOnInit(): void {\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.removeScrollEventHandlers();\r\n\t\tthis.revertParentOverscroll();\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: any): void {\r\n\t\tconst indexLengthChanged = this.cachedItemsLength !== this.items.length;\r\n\t\tthis.cachedItemsLength = this.items.length;\r\n\r\n\t\tconst firstRun: boolean = !changes.items || !changes.items.previousValue || changes.items.previousValue.length === 0;\r\n\t\tthis.refresh_internal(indexLengthChanged || firstRun);\r\n\t}\r\n\r\n\tpublic ngDoCheck(): void {\r\n\t\tif (this.cachedItemsLength !== this.items.length) {\r\n\t\t\tthis.cachedItemsLength = this.items.length;\r\n\t\t\tthis.refresh_internal(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.previousViewPort && this.viewPortItems && this.viewPortItems.length > 0) {\r\n\t\t\tlet itemsArrayChanged = false;\r\n\t\t\tfor (let i = 0; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\tif (!this.compareItems(this.items[this.previousViewPort.startIndexWithBuffer + i], this.viewPortItems[i])) {\r\n\t\t\t\t\titemsArrayChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (itemsArrayChanged) {\r\n\t\t\t\tthis.refresh_internal(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic refresh(): void {\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\tpublic invalidateAllCachedMeasurements(): void {\r\n\t\tthis.wrapGroupDimensions = {\r\n\t\t\tmaxChildSizePerWrapGroup: [],\r\n\t\t\tnumberOfKnownWrapGroupChildSizes: 0,\r\n\t\t\tsumOfKnownWrapGroupChildWidths: 0,\r\n\t\t\tsumOfKnownWrapGroupChildHeights: 0\r\n\t\t};\r\n\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementForItem(item: any): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst index = this.items && this.items.indexOf(item);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tthis.invalidateCachedMeasurementAtIndex(index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementAtIndex(index: number): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst cachedMeasurement = this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\r\n\t\t\tif (cachedMeasurement) {\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\r\n\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= cachedMeasurement.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= cachedMeasurement.childHeight || 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic scrollInto(item: any, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tconst index: number = this.items.indexOf(item);\r\n\t\tif (index === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tlet maxRetries = 5;\r\n\r\n\t\tconst retryIfNeeded = () => {\r\n\t\t\t--maxRetries;\r\n\t\t\tif (maxRetries <= 0) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dimensions = this.calculateDimensions();\r\n\t\t\tconst desiredStartIndex = Math.min(Math.max(index, 0), dimensions.itemCount - 1);\r\n\t\t\tif (this.previousViewPort.startIndex === desiredStartIndex) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, 0, retryIfNeeded);\r\n\t\t};\r\n\r\n\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, animationMilliseconds, retryIfNeeded);\r\n\t}\r\n\r\n\tprotected scrollToIndex_internal(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tlet scroll = this.calculatePadding(index, dimensions) + additionalOffset;\r\n\t\tif (!alignToBeginning) {\r\n\t\t\tscroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\r\n\t\t}\r\n\r\n\t\tthis.scrollToPosition(scroll, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToPosition(scrollPosition: number, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tscrollPosition += this.getElementsOffset();\r\n\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tlet animationRequest: number;\r\n\r\n\t\tif (this.currentTween) {\r\n\t\t\tthis.currentTween.stop();\r\n\t\t\tthis.currentTween = undefined;\r\n\t\t}\r\n\r\n\t\tif (!animationMilliseconds) {\r\n\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, scrollPosition);\r\n\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tweenConfigObj = { scrollPosition: scrollElement[this._scrollType] };\r\n\r\n\t\tconst newTween = new tween.Tween(tweenConfigObj)\r\n\t\t\t.to({ scrollPosition }, animationMilliseconds)\r\n\t\t\t.easing(tween.Easing.Quadratic.Out)\r\n\t\t\t.onUpdate((data) => {\r\n\t\t\t\tif (isNaN(data.scrollPosition)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, data.scrollPosition);\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t})\r\n\t\t\t.onStop(() => {\r\n\t\t\t\tcancelAnimationFrame(animationRequest);\r\n\t\t\t})\r\n\t\t\t.start();\r\n\r\n\t\tconst animate = (time?: number) => {\r\n\t\t\tif (!newTween[\"isPlaying\"]()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnewTween.update(time);\r\n\t\t\tif (tweenConfigObj.scrollPosition === scrollPosition) {\r\n\t\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\t\tanimationRequest = requestAnimationFrame(animate);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tanimate();\r\n\t\tthis.currentTween = newTween;\r\n\t}\r\n\r\n\tprotected isAngularUniversalSSR: boolean;\r\n\r\n\tconstructor(\r\n\t\tprotected readonly element: ElementRef,\r\n\t\tprotected readonly renderer: Renderer2,\r\n\t\tprotected readonly zone: NgZone,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\t@Inject(PLATFORM_ID) platformId: any,\r\n\t\t@Optional() @Inject('virtual-scroller-default-options')\r\n\t\toptions: VirtualScrollerDefaultOptions\r\n\t) {\r\n\r\n\t\tthis.isAngularUniversalSSR = isPlatformServer(platformId);\r\n\r\n\t\tthis.checkResizeInterval = options.checkResizeInterval;\r\n\t\tthis.modifyOverflowStyleOfParentScroll = options.modifyOverflowStyleOfParentScroll;\r\n\t\tthis.resizeBypassRefreshThreshold = options.resizeBypassRefreshThreshold;\r\n\t\tthis.scrollAnimationTime = options.scrollAnimationTime;\r\n\t\tthis.scrollDebounceTime = options.scrollDebounceTime;\r\n\t\tthis.scrollThrottlingTime = options.scrollThrottlingTime;\r\n\t\tthis.scrollbarHeight = options.scrollbarHeight;\r\n\t\tthis.scrollbarWidth = options.scrollbarWidth;\r\n\t\tthis.stripedTable = options.stripedTable;\r\n\r\n\t\tthis.horizontal = false;\r\n\t\tthis.resetWrapGroupDimensions();\r\n\t}\r\n\r\n\tprotected getElementSize(element: HTMLElement): ClientRect {\r\n\t\tconst result = element.getBoundingClientRect();\r\n\t\tconst styles = getComputedStyle(element);\r\n\t\tconst marginTop = parseInt(styles['margin-top'], 10) || 0;\r\n\t\tconst marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\r\n\t\tconst marginLeft = parseInt(styles['margin-left'], 10) || 0;\r\n\t\tconst marginRight = parseInt(styles['margin-right'], 10) || 0;\r\n\r\n\t\treturn {\r\n\t\t\ttop: result.top + marginTop,\r\n\t\t\tbottom: result.bottom + marginBottom,\r\n\t\t\tleft: result.left + marginLeft,\r\n\t\t\tright: result.right + marginRight,\r\n\t\t\twidth: result.width + marginLeft + marginRight,\r\n\t\t\theight: result.height + marginTop + marginBottom\r\n\t\t};\r\n\t}\r\n\r\n\tprotected previousScrollBoundingRect: ClientRect;\r\n\tprotected checkScrollElementResized(): void {\r\n\t\tconst boundingRect = this.getElementSize(this.getScrollElement());\r\n\r\n\t\tlet sizeChanged: boolean;\r\n\t\tif (!this.previousScrollBoundingRect) {\r\n\t\t\tsizeChanged = true;\r\n\t\t} else {\r\n\t\t\tconst widthChange = Math.abs(boundingRect.width - this.previousScrollBoundingRect.width);\r\n\t\t\tconst heightChange = Math.abs(boundingRect.height - this.previousScrollBoundingRect.height);\r\n\t\t\tsizeChanged = widthChange > this.resizeBypassRefreshThreshold || heightChange > this.resizeBypassRefreshThreshold;\r\n\t\t}\r\n\r\n\t\tif (sizeChanged) {\r\n\t\t\tthis.previousScrollBoundingRect = boundingRect;\r\n\t\t\tif (boundingRect.width > 0 && boundingRect.height > 0) {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _invisiblePaddingProperty;\r\n\tprotected _offsetType;\r\n\tprotected _scrollType;\r\n\tprotected _pageOffsetType;\r\n\tprotected _childScrollDim;\r\n\tprotected _translateDir;\r\n\tprotected _marginDir;\r\n\tprotected updateDirection(): void {\r\n\t\tif (this.horizontal) {\r\n\t\t\tthis._childScrollDim = 'childWidth';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleX';\r\n\t\t\tthis._marginDir = 'margin-left';\r\n\t\t\tthis._offsetType = 'offsetLeft';\r\n\t\t\tthis._pageOffsetType = 'pageXOffset';\r\n\t\t\tthis._scrollType = 'scrollLeft';\r\n\t\t\tthis._translateDir = 'translateX';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._childScrollDim = 'childHeight';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleY';\r\n\t\t\tthis._marginDir = 'margin-top';\r\n\t\t\tthis._offsetType = 'offsetTop';\r\n\t\t\tthis._pageOffsetType = 'pageYOffset';\r\n\t\t\tthis._scrollType = 'scrollTop';\r\n\t\t\tthis._translateDir = 'translateY';\r\n\t\t}\r\n\t}\r\n\r\n\tprotected debounce(func: () => void, wait: number, ...args): () => void {\r\n\t\tconst throttled = this.throttleTrailing(func, wait);\r\n\t\tconst result = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t\tthrottled.apply(this, args);\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected throttleTrailing(func: () => void, wait: number, ...args): () => void {\r\n\t\tlet timeout = undefined;\r\n\t\tlet _arguments = args;\r\n\t\tconst result = function () {\r\n\t\t\tconst _this = this;\r\n\t\t\t_arguments = args\r\n\r\n\t\t\tif (timeout) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (wait <= 0) {\r\n\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t} else {\r\n\t\t\t\ttimeout = setTimeout(function () {\r\n\t\t\t\t\ttimeout = undefined;\r\n\t\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t\t}, wait);\r\n\t\t\t}\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\ttimeout = undefined;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatedScrollbarWidth = 0;\r\n\tprotected calculatedScrollbarHeight = 0;\r\n\r\n\tprotected padding = 0;\r\n\tprotected previousViewPort: IViewport = <any>{};\r\n\tprotected currentTween: tween.Tween;\r\n\tprotected cachedItemsLength: number;\r\n\r\n\tprotected disposeScrollHandler: () => void | undefined;\r\n\tprotected disposeResizeHandler: () => void | undefined;\r\n\r\n\tprotected refresh_internal(itemsArrayModified: boolean, refreshCompletedCallback: () => void = undefined, maxRunTimes = 2): void {\r\n\t\t//note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\r\n\t\t//The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\r\n\t\t//The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\r\n\t\t//Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\r\n\r\n\t\tif (itemsArrayModified && this.previousViewPort && this.previousViewPort.scrollStartPosition > 0) {\r\n\t\t\t//if items were prepended, scroll forward to keep same items visible\r\n\t\t\tconst oldViewPort = this.previousViewPort;\r\n\t\t\tconst oldViewPortItems = this.viewPortItems;\r\n\r\n\t\t\tconst oldRefreshCompletedCallback = refreshCompletedCallback;\r\n\t\t\trefreshCompletedCallback = () => {\r\n\t\t\t\tconst scrollLengthDelta = this.previousViewPort.scrollLength - oldViewPort.scrollLength;\r\n\t\t\t\tif (scrollLengthDelta > 0 && this.viewPortItems) {\r\n\t\t\t\t\tconst oldStartItem = oldViewPortItems[0];\r\n\t\t\t\t\tconst oldStartItemIndex = this.items.findIndex(x => this.compareItems(oldStartItem, x));\r\n\t\t\t\t\tif (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\r\n\t\t\t\t\t\tlet itemOrderChanged = false;\r\n\t\t\t\t\t\tfor (let i = 1; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\t\t\t\tif (!this.compareItems(this.items[oldStartItemIndex + i], oldViewPortItems[i])) {\r\n\t\t\t\t\t\t\t\titemOrderChanged = true;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!itemOrderChanged) {\r\n\t\t\t\t\t\t\tthis.scrollToPosition(this.previousViewPort.scrollStartPosition + scrollLengthDelta, 0, oldRefreshCompletedCallback);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oldRefreshCompletedCallback) {\r\n\t\t\t\t\toldRefreshCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\r\n\t\t\t\tif (itemsArrayModified) {\r\n\t\t\t\t\tthis.resetWrapGroupDimensions();\r\n\t\t\t\t}\r\n\t\t\t\tconst viewport = this.calculateViewport();\r\n\r\n\t\t\t\tconst startChanged = itemsArrayModified || viewport.startIndex !== this.previousViewPort.startIndex;\r\n\t\t\t\tconst endChanged = itemsArrayModified || viewport.endIndex !== this.previousViewPort.endIndex;\r\n\t\t\t\tconst scrollLengthChanged = viewport.scrollLength !== this.previousViewPort.scrollLength;\r\n\t\t\t\tconst paddingChanged = viewport.padding !== this.previousViewPort.padding;\r\n\t\t\t\tconst scrollPositionChanged = viewport.scrollStartPosition !== this.previousViewPort.scrollStartPosition || viewport.scrollEndPosition !== this.previousViewPort.scrollEndPosition || viewport.maxScrollPosition !== this.previousViewPort.maxScrollPosition;\r\n\r\n\t\t\t\tconst scrollDirection: ScrollDirectionType = this.previousViewPort.endIndex <= viewport.endIndex ? 'forward' : 'backward';\r\n\t\t\t\tthis.previousViewPort = viewport;\r\n\r\n\t\t\t\tif (scrollLengthChanged) {\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'transform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'webkitTransform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (paddingChanged) {\r\n\t\t\t\t\tif (this.useMarginInsteadOfTranslate) {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'transform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.headerElementRef) {\r\n\t\t\t\t\tconst scrollPosition = this.getScrollElement()[this._scrollType];\r\n\t\t\t\t\tconst containerOffset = this.getElementsOffset();\r\n\t\t\t\t\tconst offset = Math.max(scrollPosition - viewport.padding - containerOffset + this.headerElementRef.nativeElement.clientHeight, 0);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'transform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst changeEventArg: IPageInfo = (startChanged || endChanged) ? {\r\n\t\t\t\t\tstartIndex: viewport.startIndex,\r\n\t\t\t\t\tendIndex: viewport.endIndex,\r\n\t\t\t\t\tscrollStartPosition: viewport.scrollStartPosition,\r\n\t\t\t\t\tscrollEndPosition: viewport.scrollEndPosition,\r\n\t\t\t\t\tscrollDirection: scrollDirection,\r\n\t\t\t\t\tstartIndexWithBuffer: viewport.startIndexWithBuffer,\r\n\t\t\t\t\tendIndexWithBuffer: viewport.endIndexWithBuffer,\r\n\t\t\t\t\tmaxScrollPosition: viewport.maxScrollPosition,\r\n\t\t\t\t} : undefined;\r\n\r\n\r\n\t\t\t\tif (startChanged || endChanged || scrollPositionChanged) {\r\n\t\t\t\t\tconst handleChanged = () => {\r\n\t\t\t\t\t\t// update the scroll list to trigger re-render of components in viewport\r\n\t\t\t\t\t\tthis.viewPortItems = viewport.startIndexWithBuffer >= 0 && viewport.endIndexWithBuffer >= 0 ? this.items.slice(viewport.startIndexWithBuffer, viewport.endIndexWithBuffer + 1) : [];\r\n\t\t\t\t\t\tthis.vsUpdate.emit(this.viewPortItems);\r\n\r\n\t\t\t\t\t\tif (startChanged) {\r\n\t\t\t\t\t\t\tthis.vsStart.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (endChanged) {\r\n\t\t\t\t\t\t\tthis.vsEnd.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (startChanged || endChanged) {\r\n\t\t\t\t\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t\t\t\t\t\tthis.vsChange.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maxRunTimes > 0) {\r\n\t\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\r\n\t\t\t\t\tif (this.executeRefreshOutsideAngularZone) {\r\n\t\t\t\t\t\thandleChanged();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.zone.run(handleChanged);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (maxRunTimes > 0 && (scrollLengthChanged || paddingChanged)) {\r\n\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected getScrollElement(): HTMLElement {\r\n\t\treturn this.parentScroll instanceof Window ? document.scrollingElement || document.documentElement || document.body : this.parentScroll || this.element.nativeElement;\r\n\t}\r\n\r\n\tprotected addScrollEventHandlers(): void {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tthis.removeScrollEventHandlers();\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen('window', 'scroll', this.onScroll);\r\n\t\t\t\tthis.disposeResizeHandler = this.renderer.listen('window', 'resize', this.onScroll);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen(scrollElement, 'scroll', this.onScroll);\r\n\t\t\t\tif (this._checkResizeInterval > 0) {\r\n\t\t\t\t\tthis.checkScrollElementResizedTimer = <any>setInterval(() => { this.checkScrollElementResized(); }, this._checkResizeInterval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected removeScrollEventHandlers(): void {\r\n\t\tif (this.checkScrollElementResizedTimer) {\r\n\t\t\tclearInterval(this.checkScrollElementResizedTimer);\r\n\t\t}\r\n\r\n\t\tif (this.disposeScrollHandler) {\r\n\t\t\tthis.disposeScrollHandler();\r\n\t\t\tthis.disposeScrollHandler = undefined;\r\n\t\t}\r\n\r\n\t\tif (this.disposeResizeHandler) {\r\n\t\t\tthis.disposeResizeHandler();\r\n\t\t\tthis.disposeResizeHandler = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getElementsOffset(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet offset = 0;\r\n\r\n\t\tif (this.containerElementRef && this.containerElementRef.nativeElement) {\r\n\t\t\toffset += this.containerElementRef.nativeElement[this._offsetType];\r\n\t\t}\r\n\r\n\t\tif (this.parentScroll) {\r\n\t\t\tconst scrollElement = this.getScrollElement();\r\n\t\t\tconst elementClientRect = this.getElementSize(this.element.nativeElement);\r\n\t\t\tconst scrollClientRect = this.getElementSize(scrollElement);\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\toffset += elementClientRect.left - scrollClientRect.left;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\toffset += elementClientRect.top - scrollClientRect.top;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(this.parentScroll instanceof Window)) {\r\n\t\t\t\toffset += scrollElement[this._scrollType];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn offset;\r\n\t}\r\n\r\n\tprotected countItemsPerWrapGroup(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn Math.round(this.horizontal ? this.ssrViewportHeight / this.ssrChildHeight : this.ssrViewportWidth / this.ssrChildWidth);\r\n\t\t}\r\n\r\n\t\tconst propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\r\n\t\tconst children = ((this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement).children;\r\n\r\n\t\tconst childrenLength = children ? children.length : 0;\r\n\t\tif (childrenLength === 0) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\tconst firstOffset = children[0][propertyName];\r\n\t\tlet result = 1;\r\n\t\twhile (result < childrenLength && firstOffset === children[result][propertyName]) {\r\n\t\t\t++result;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getScrollStartPosition(): number {\r\n\t\tlet windowScrollValue = undefined;\r\n\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\twindowScrollValue = window[this._pageOffsetType];\r\n\t\t}\r\n\r\n\t\treturn windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\r\n\t}\r\n\r\n\tprotected minMeasuredChildWidth: number;\r\n\tprotected minMeasuredChildHeight: number;\r\n\r\n\tprotected wrapGroupDimensions: WrapGroupDimensions;\r\n\r\n\tprotected resetWrapGroupDimensions(): void {\r\n\t\tconst oldWrapGroupDimensions = this.wrapGroupDimensions;\r\n\t\tthis.invalidateAllCachedMeasurements();\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes || !oldWrapGroupDimensions || oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst itemsPerWrapGroup: number = this.countItemsPerWrapGroup();\r\n\t\tfor (let wrapGroupIndex = 0; wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length; ++wrapGroupIndex) {\r\n\t\t\tconst oldWrapGroupDimension: WrapGroupDimension = oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\tif (!oldWrapGroupDimension || !oldWrapGroupDimension.items || !oldWrapGroupDimension.items.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemsChanged = false;\r\n\t\t\tconst arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\r\n\t\t\tfor (let i = 0; i < itemsPerWrapGroup; ++i) {\r\n\t\t\t\tif (!this.compareItems(oldWrapGroupDimension.items[i], this.items[arrayStartIndex + i])) {\r\n\t\t\t\t\titemsChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!itemsChanged) {\r\n\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += oldWrapGroupDimension.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += oldWrapGroupDimension.childHeight || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = oldWrapGroupDimension;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected calculateDimensions(): IDimensions {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tconst maxCalculatedScrollBarSize = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\r\n\t\tthis.calculatedScrollbarHeight = Math.max(Math.min(scrollElement.offsetHeight - scrollElement.clientHeight, maxCalculatedScrollBarSize), this.calculatedScrollbarHeight);\r\n\t\tthis.calculatedScrollbarWidth = Math.max(Math.min(scrollElement.offsetWidth - scrollElement.clientWidth, maxCalculatedScrollBarSize), this.calculatedScrollbarWidth);\r\n\r\n\t\tlet viewportWidth = scrollElement.offsetWidth - (this.scrollbarWidth || this.calculatedScrollbarWidth || (this.horizontal ? 0 : maxCalculatedScrollBarSize));\r\n\t\tlet viewportHeight = scrollElement.offsetHeight - (this.scrollbarHeight || this.calculatedScrollbarHeight || (this.horizontal ? maxCalculatedScrollBarSize : 0));\r\n\r\n\t\tconst content = (this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement;\r\n\r\n\t\tconst itemsPerWrapGroup = this.countItemsPerWrapGroup();\r\n\t\tlet wrapGroupsPerPage;\r\n\r\n\t\tlet defaultChildWidth;\r\n\t\tlet defaultChildHeight;\r\n\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\tviewportWidth = this.ssrViewportWidth;\r\n\t\t\tviewportHeight = this.ssrViewportHeight;\r\n\t\t\tdefaultChildWidth = this.ssrChildWidth;\r\n\t\t\tdefaultChildHeight = this.ssrChildHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t}\r\n\t\telse if (!this.enableUnequalChildrenSizes) {\r\n\t\t\tif (content.children.length > 0) {\r\n\t\t\t\tif (!this.childWidth || !this.childHeight) {\r\n\t\t\t\t\tif (!this.minMeasuredChildWidth && viewportWidth > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildWidth = viewportWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.minMeasuredChildHeight && viewportHeight > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildHeight = viewportHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst child = content.children[0];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\t\t\t\tthis.minMeasuredChildWidth = Math.min(this.minMeasuredChildWidth, clientRect.width);\r\n\t\t\t\tthis.minMeasuredChildHeight = Math.min(this.minMeasuredChildHeight, clientRect.height);\r\n\r\n\t\t\t\t// Added for getting the child height (for card view, return all the clientRect object).\r\n\t\t\t\tif (this._lastChildRect?.height !== clientRect?.height ||\r\n\t\t\t\t\tthis._lastChildRect?.width !== clientRect?.width) {\r\n\t\t\t\t\tthis._lastChildRect = clientRect;\r\n\t\t\t\t\tthis.vsChildRectChange.emit(clientRect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdefaultChildWidth = this.childWidth || this.minMeasuredChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || this.minMeasuredChildHeight || viewportHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t} else {\r\n\t\t\tlet scrollOffset = scrollElement[this._scrollType] - (this.previousViewPort ? this.previousViewPort.padding : 0);\r\n\r\n\t\t\tlet arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\r\n\t\t\tlet wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\r\n\r\n\t\t\tlet maxWidthForWrapGroup = 0;\r\n\t\t\tlet maxHeightForWrapGroup = 0;\r\n\t\t\tlet sumOfVisibleMaxWidths = 0;\r\n\t\t\tlet sumOfVisibleMaxHeights = 0;\r\n\t\t\twrapGroupsPerPage = 0;\r\n\r\n\t\t\tfor (let i = 0; i < content.children.length; ++i) {\r\n\t\t\t\t++arrayStartIndex;\r\n\t\t\t\tconst child = content.children[i];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\r\n\t\t\t\tmaxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\r\n\t\t\t\tmaxHeightForWrapGroup = Math.max(maxHeightForWrapGroup, clientRect.height);\r\n\r\n\t\t\t\tif (arrayStartIndex % itemsPerWrapGroup === 0) {\r\n\t\t\t\t\tconst oldValue = this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\t\t\tif (oldValue) {\r\n\t\t\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= oldValue.childWidth || 0;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= oldValue.childHeight || 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\tconst items = this.items.slice(arrayStartIndex - itemsPerWrapGroup, arrayStartIndex);\r\n\t\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\r\n\t\t\t\t\t\tchildWidth: maxWidthForWrapGroup,\r\n\t\t\t\t\t\tchildHeight: maxHeightForWrapGroup,\r\n\t\t\t\t\t\titems: items\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += maxWidthForWrapGroup;\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += maxHeightForWrapGroup;\r\n\r\n\t\t\t\t\tif (this.horizontal) {\r\n\t\t\t\t\t\tlet maxVisibleWidthForWrapGroup = Math.min(maxWidthForWrapGroup, Math.max(viewportWidth - sumOfVisibleMaxWidths, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleWidthForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleWidthForWrapGroup > 0 && viewportWidth >= sumOfVisibleMaxWidths) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet maxVisibleHeightForWrapGroup = Math.min(maxHeightForWrapGroup, Math.max(viewportHeight - sumOfVisibleMaxHeights, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleHeightForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleHeightForWrapGroup > 0 && viewportHeight >= sumOfVisibleMaxHeights) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++wrapGroupIndex;\r\n\r\n\t\t\t\t\tmaxWidthForWrapGroup = 0;\r\n\t\t\t\t\tmaxHeightForWrapGroup = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst averageChildWidth = this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tconst averageChildHeight = this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tdefaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || averageChildHeight || viewportHeight;\r\n\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\tif (viewportWidth > sumOfVisibleMaxWidths) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (viewportHeight > sumOfVisibleMaxHeights) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst itemCount = this.items.length;\r\n\t\tconst itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\r\n\t\tconst pageCount_fractional = itemCount / itemsPerPage;\r\n\t\tconst numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\r\n\r\n\t\tlet scrollLength = 0;\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = this.horizontal ? defaultChildWidth : defaultChildHeight;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tlet numUnknownChildSizes = 0;\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\tscrollLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tscrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\t\t} else {\r\n\t\t\tscrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\r\n\t\t}\r\n\r\n\t\tif (this.headerElementRef) {\r\n\t\t\tscrollLength += this.headerElementRef.nativeElement.clientHeight;\r\n\t\t}\r\n\r\n\t\tconst viewportLength = this.horizontal ? viewportWidth : viewportHeight;\r\n\t\tconst maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\r\n\r\n\t\treturn {\r\n\t\t\tchildHeight: defaultChildHeight,\r\n\t\t\tchildWidth: defaultChildWidth,\r\n\t\t\titemCount: itemCount,\r\n\t\t\titemsPerPage: itemsPerPage,\r\n\t\t\titemsPerWrapGroup: itemsPerWrapGroup,\r\n\t\t\tmaxScrollPosition: maxScrollPosition,\r\n\t\t\tpageCount_fractional: pageCount_fractional,\r\n\t\t\tscrollLength: scrollLength,\r\n\t\t\tviewportLength: viewportLength,\r\n\t\t\twrapGroupsPerPage: wrapGroupsPerPage,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected cachedPageSize = 0;\r\n\tprotected previousScrollNumberElements = 0;\r\n\r\n\tprotected calculatePadding(arrayStartIndexWithBuffer: number, dimensions: IDimensions): number {\r\n\t\tif (dimensions.itemCount === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\tconst startingWrapGroupIndex = Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes) {\r\n\t\t\treturn defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\r\n\t\t}\r\n\r\n\t\tlet numUnknownChildSizes = 0;\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < startingWrapGroupIndex; ++i) {\r\n\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\tif (childSize) {\r\n\t\t\t\tresult += childSize;\r\n\t\t\t} else {\r\n\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatePageInfo(scrollPosition: number, dimensions: IDimensions): IPageInfo {\r\n\t\tlet scrollPercentage = 0;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\r\n\t\t\tlet totalScrolledLength = 0;\r\n\t\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\ttotalScrolledLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttotalScrolledLength += defaultScrollLengthPerWrapGroup;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scrollPosition < totalScrolledLength) {\r\n\t\t\t\t\tscrollPercentage = i / numberOfWrapGroups;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tscrollPercentage = scrollPosition / dimensions.scrollLength;\r\n\t\t}\r\n\r\n\t\tconst startingArrayIndex_fractional = Math.min(Math.max(scrollPercentage * dimensions.pageCount_fractional, 0), dimensions.pageCount_fractional) * dimensions.itemsPerPage;\r\n\r\n\t\tconst maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\r\n\t\tlet arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\r\n\t\tarrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\r\n\r\n\t\tif (this.stripedTable) {\r\n\t\t\tconst bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\r\n\t\t\tif (arrayStartIndex % bufferBoundary !== 0) {\r\n\t\t\t\tarrayStartIndex = Math.max(arrayStartIndex - arrayStartIndex % bufferBoundary, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\r\n\t\tconst endIndexWithinWrapGroup = (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\r\n\t\tif (endIndexWithinWrapGroup > 0) {\r\n\t\t\tarrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\r\n\t\t}\r\n\r\n\t\tif (isNaN(arrayStartIndex)) {\r\n\t\t\tarrayStartIndex = 0;\r\n\t\t}\r\n\t\tif (isNaN(arrayEndIndex)) {\r\n\t\t\tarrayEndIndex = 0;\r\n\t\t}\r\n\r\n\t\tarrayStartIndex = Math.min(Math.max(arrayStartIndex, 0), dimensions.itemCount - 1);\r\n\t\tarrayEndIndex = Math.min(Math.max(arrayEndIndex, 0), dimensions.itemCount - 1);\r\n\r\n\t\tconst bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\r\n\t\tconst startIndexWithBuffer = Math.min(Math.max(arrayStartIndex - bufferSize, 0), dimensions.itemCount - 1);\r\n\t\tconst endIndexWithBuffer = Math.min(Math.max(arrayEndIndex + bufferSize, 0), dimensions.itemCount - 1);\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: arrayStartIndex,\r\n\t\t\tendIndex: arrayEndIndex,\r\n\t\t\tstartIndexWithBuffer: startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: endIndexWithBuffer,\r\n\t\t\tscrollStartPosition: scrollPosition,\r\n\t\t\tscrollEndPosition: scrollPosition + dimensions.viewportLength,\r\n\t\t\tmaxScrollPosition: dimensions.maxScrollPosition\r\n\t\t};\r\n\t}\r\n\r\n\tprotected calculateViewport(): IViewport {\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tconst offset = this.getElementsOffset();\r\n\r\n\t\tlet scrollStartPosition = this.getScrollStartPosition();\r\n\t\tif (scrollStartPosition > (dimensions.scrollLength + offset) && !(this.parentScroll instanceof Window)) {\r\n\t\t\tscrollStartPosition = dimensions.scrollLength;\r\n\t\t} else {\r\n\t\t\tscrollStartPosition -= offset;\r\n\t\t}\r\n\t\tscrollStartPosition = Math.max(0, scrollStartPosition);\r\n\r\n\t\tconst pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\r\n\t\tconst newPadding = this.calculatePadding(pageInfo.startIndexWithBuffer, dimensions);\r\n\t\tconst newScrollLength = dimensions.scrollLength;\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex,\r\n\t\t\tendIndex: pageInfo.endIndex,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer,\r\n\t\t\tpadding: Math.round(newPadding),\r\n\t\t\tscrollLength: Math.round(newScrollLength),\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition,\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@NgModule({\r\n\texports: [VirtualScrollerComponent],\r\n\tdeclarations: [VirtualScrollerComponent],\r\n\timports: [CommonModule],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: 'virtual-scroller-default-options',\r\n\t\t\tuseFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\r\n\t\t}\r\n\t]\r\n})\r\nexport class VirtualScrollerModule { }","import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingChangeEvent {\n sortBy: string;\n isAsc: boolean;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\n\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\nimport * as tween from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 48;\n\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n SEPARATOR = ',';\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n\n // For sorting\n isAsc = true;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight: string;\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private setContainerWidth(): void {\n const selectionCheckBoxWidth =\n this.selectionTypeForActions === 'multi' ? 44 : 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = window.getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + selectionCheckBoxWidth + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n // private disableScroll(disable: boolean) {\n // if (disable) {\n // this.renderer.addClass(this.getParentContainer(), 'lock-events');\n // } else {\n // this.renderer.removeClass(this.getParentContainer(), 'lock-events');\n // }\n // }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the columns width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n this.calcColumnsWidth();\n this.checkForChanges = new Date().getTime();\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n const selectionCheckBoxWidth =\n this.selectionTypeForActions === 'multi' ? 44 : 0;\n\n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n 'inherit'\n );\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = currentFixedWidth + 'px';\n uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n totalCalcColsWidth + selectionCheckBoxWidth + 'px'\n );\n }\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = '';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // getIsDisabled(item: ObjectsDataRow): boolean {\n // return (\n // this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n // );\n // }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n\n if (this.isTable) {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[]\n ): void {\n this.initVariablesFromSession(items);\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = '';\n this.totalRows = totalRows;\n\n this.scrollToTop(false);\n this.cleanItems();\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n\n this.refresh();\n }\n }\n\n this.setLayout();\n this.onListLoad();\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n if (this.selectionTypeForActions === 'single') {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n\n res.selectionType = 1;\n res.rows = [tmp[0]];\n res.rowTypes = [tmp[1]];\n } else if (this.selectionTypeForActions === 'multi') {\n const items = [];\n const itemTypes = [];\n let selectionType = 1;\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n }\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh() {\n this.virtualScroller?.refresh();\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey): void {\n this.pressedColumn = columnKey;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n this.tableStartWidth = this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n }\n\n onListResize(event): void {\n if (this.pressedColumn.length > 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n } else if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n this.tableStartWidth + widthToAdd + 'px'\n );\n }\n\n this.checkForChanges = new Date().getTime();\n }\n }\n\n onListResizeEnd(event): void {\n if (this.pressedColumn.length > 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n this.pressedColumn.length > 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n });\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n onChildRectChange(event: ClientRect) {\n setTimeout(() => {\n this.calculatedObjectHeight = event?.height + 'px';\n }, 0);\n }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({\n selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss'],\n})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({\n selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss'],\n})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({\n selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss'],\n})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({\n selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss'],\n})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({\n selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss'],\n})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss'],\n})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n}\n","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({\n selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss'],\n})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\nimport { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {IsItemDisabledPipe as ɵe,IsItemSelectedPipe as ɵd} from './list.pipes';\nexport {VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY as ɵa,VirtualScrollerComponent as ɵb,VirtualScrollerModule as ɵc} from './virtual-scroller';"],"names":["EventEmitter","isPlatformServer","tween","Component","ElementRef","Renderer2","NgZone","ChangeDetectorRef","Inject","PLATFORM_ID","Optional","Input","Output","ViewChild","ContentChild","NgModule","CommonModule","FIELD_TYPE","PepScreenSizeType","PepLayoutService","PepSessionService","Injectable","PepCarouselComponent","PepBreadCrumbItem","coerceNumberProperty","Pipe","pepIconArrowDown","pepIconArrowEither","pepIconArrowUp","pepIconSystemMust","pepIconArrowRight","pepIconArrowRightAlt","pepIconArrowLeft","pepIconArrowLeftAlt","MatCommonModule","MatButtonModule","MatCheckboxModule","MatRadioModule","MatIconModule","MatMenuModule","PepNgxLibModule","PepBreadCrumbsModule","PepButtonModule","PepCarouselModule","PepIconModule","PepFormModule","PepMenuModule","PepTextboxModule","PepIconRegistry"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-list.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-lib/list/virtual-scroller.ts","../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChild,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tNgModule,\r\n\tNgZone,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOptional,\r\n\tOutput,\r\n\tRenderer2,\r\n\tViewChild,\r\n} from '@angular/core';\r\n\r\nimport { PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport * as tween from '@tweenjs/tween.js'\r\n\r\nexport interface VirtualScrollerDefaultOptions {\r\n\tcheckResizeInterval: number\r\n\tmodifyOverflowStyleOfParentScroll: boolean,\r\n\tresizeBypassRefreshThreshold: number,\r\n\tscrollAnimationTime: number;\r\n\tscrollDebounceTime: number;\r\n\tscrollThrottlingTime: number;\r\n\tscrollbarHeight?: number;\r\n\tscrollbarWidth?: number;\r\n\tstripedTable: boolean\r\n}\r\n\r\nexport function VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY(): VirtualScrollerDefaultOptions {\r\n\treturn {\r\n\t\tcheckResizeInterval: 1000,\r\n\t\tmodifyOverflowStyleOfParentScroll: true,\r\n\t\tresizeBypassRefreshThreshold: 5,\r\n\t\tscrollAnimationTime: 750,\r\n\t\tscrollDebounceTime: 0,\r\n\t\tscrollThrottlingTime: 0,\r\n\t\tstripedTable: false\r\n\t};\r\n}\r\n\r\nexport interface WrapGroupDimensions {\r\n\tmaxChildSizePerWrapGroup: WrapGroupDimension[];\r\n\tnumberOfKnownWrapGroupChildSizes: number;\r\n\tsumOfKnownWrapGroupChildHeights: number;\r\n\tsumOfKnownWrapGroupChildWidths: number;\r\n}\r\n\r\nexport interface WrapGroupDimension {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titems: any[];\r\n}\r\n\r\nexport interface IDimensions {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titemCount: number;\r\n\titemsPerPage: number;\r\n\titemsPerWrapGroup: number;\r\n\tmaxScrollPosition: number;\r\n\tpageCount_fractional: number;\r\n\tscrollLength: number;\r\n\tviewportLength: number;\r\n\twrapGroupsPerPage: number;\r\n}\r\n\r\nexport type ScrollDirectionType = 'backward' | 'forward';\r\n\r\nexport interface IPageInfo {\r\n\tendIndex: number;\r\n\tendIndexWithBuffer: number;\r\n\tmaxScrollPosition: number;\r\n\tscrollEndPosition: number;\r\n\tscrollStartPosition: number;\r\n\tscrollDirection?: ScrollDirectionType;\r\n\tstartIndex: number;\r\n\tstartIndexWithBuffer: number;\r\n}\r\n\r\nexport interface IViewport extends IPageInfo {\r\n\tpadding: number;\r\n\tscrollLength: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'virtual-scroller,[virtualScroller]',\r\n\texportAs: 'virtualScroller',\r\n\ttemplate: `\r\n <div class=\"total-padding\" #invisiblePadding></div>\r\n <div class=\"scrollable-content\" #content>\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n\thost: {\r\n\t\t'[class.horizontal]': \"horizontal\",\r\n\t\t'[class.vertical]': \"!horizontal\",\r\n\t\t'[class.selfScroll]': \"!parentScroll\",\r\n\t\t'[class.rtl]': \"RTL\"\r\n\t},\r\n\tstyles: [`\r\n :host {\r\n position: relative;\r\n\t \tdisplay: block;\r\n -webkit-overflow-scrolling: touch;\r\n }\r\n\t\t:host.horizontal.selfScroll {\r\n overflow-y: visible;\r\n overflow-x: auto;\r\n\t\t}\r\n\t\t:host.horizontal.selfScroll.rtl {\r\n\t\t\ttransform: scaleX(-1);\r\n\t\t}\r\n\t\t:host.vertical.selfScroll {\r\n overflow-y: auto;\r\n overflow-x: visible;\r\n\t\t}\r\n .scrollable-content {\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n max-width: 100vw;\r\n max-height: 100vh;\r\n position: absolute;\r\n }\r\n\t\t.scrollable-content ::ng-deep > * {\r\n\t\t\tbox-sizing: border-box;\r\n\t\t}\r\n\t\t:host.horizontal {\r\n\t\t\twhite-space: nowrap;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content {\r\n\t\t\tdisplay: flex;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content ::ng-deep > * {\r\n\t\t\tflex-shrink: 0;\r\n\t\t\tflex-grow: 0;\r\n\t\t\twhite-space: initial;\r\n\t\t}\r\n\t\t:host.horizontal.rtl .scrollable-content ::ng-deep > * {\r\n\t\t\ttransform:scaleX(-1);\r\n\t\t}\r\n .total-padding {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 1px;\r\n width: 1px;\r\n transform-origin: 0 0;\r\n opacity: 0;\r\n }\r\n :host.horizontal .total-padding {\r\n height: 100%;\r\n }\r\n `]\r\n})\r\nexport class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\tpublic viewPortItems: any[];\r\n\tpublic window = window;\r\n\r\n\tpublic get viewPortInfo(): IPageInfo {\r\n\t\tconst pageInfo: IViewport = this.previousViewPort || <any>{};\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex || 0,\r\n\t\t\tendIndex: pageInfo.endIndex || 0,\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition || 0,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition || 0,\r\n\t\t\tscrollDirection: pageInfo.scrollDirection || 'forward',\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition || 0,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer || 0,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _disable = false;\r\n\t@Input()\r\n\tpublic get disable(): boolean {\r\n\t\treturn this._disable;\r\n\t}\r\n\tpublic set disable(value: boolean) {\r\n\t\tif (this._disable === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._disable = value;\r\n\t\tif (this._disable) {\r\n\t\t\tthis.removeScrollEventHandlers();\r\n\t\t} else {\r\n\t\t\tthis.addScrollEventHandlers();\r\n\t\t}\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic executeRefreshOutsideAngularZone = false;\r\n\r\n\tprotected _enableUnequalChildrenSizes = false;\r\n\t@Input()\r\n\tpublic get enableUnequalChildrenSizes(): boolean {\r\n\t\treturn this._enableUnequalChildrenSizes;\r\n\t}\r\n\tpublic set enableUnequalChildrenSizes(value: boolean) {\r\n\t\tif (this._enableUnequalChildrenSizes === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._enableUnequalChildrenSizes = value;\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic RTL = false;\r\n\r\n\t@Input()\r\n\tpublic useMarginInsteadOfTranslate = false;\r\n\r\n\t@Input()\r\n\tpublic modifyOverflowStyleOfParentScroll: boolean;\r\n\r\n\t@Input()\r\n\tpublic stripedTable: boolean;\r\n\r\n\t@Input()\r\n\tpublic scrollbarWidth: number;\r\n\r\n\t@Input()\r\n\tpublic scrollbarHeight: number;\r\n\r\n\t@Input()\r\n\tpublic childWidth: number;\r\n\r\n\t@Input()\r\n\tpublic childHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildWidth: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportWidth = 1920;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportHeight = 1080;\r\n\r\n\tprotected _bufferAmount: number;\r\n\t@Input()\r\n\tpublic get bufferAmount(): number {\r\n\t\tif (typeof (this._bufferAmount) === 'number' && this._bufferAmount > 0) {\r\n\t\t\treturn this._bufferAmount;\r\n\t\t} else {\r\n\t\t\treturn this.enableUnequalChildrenSizes ? 5 : 1;\r\n\t\t}\r\n\t}\r\n\tpublic set bufferAmount(value: number) {\r\n\t\tthis._bufferAmount = value;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic scrollAnimationTime: number;\r\n\r\n\t@Input()\r\n\tpublic resizeBypassRefreshThreshold: number;\r\n\r\n\tprotected _scrollThrottlingTime: number;\r\n\t@Input()\r\n\tpublic get scrollThrottlingTime(): number {\r\n\t\treturn this._scrollThrottlingTime;\r\n\t}\r\n\tpublic set scrollThrottlingTime(value: number) {\r\n\t\tthis._scrollThrottlingTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected _scrollDebounceTime: number;\r\n\t@Input()\r\n\tpublic get scrollDebounceTime(): number {\r\n\t\treturn this._scrollDebounceTime;\r\n\t}\r\n\tpublic set scrollDebounceTime(value: number) {\r\n\t\tthis._scrollDebounceTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected onScroll: () => void;\r\n\tprotected updateOnScrollFunction(): void {\r\n\t\tif (this.scrollDebounceTime) {\r\n\t\t\tthis.onScroll = <any>this.debounce(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollDebounceTime);\r\n\t\t}\r\n\t\telse if (this.scrollThrottlingTime) {\r\n\t\t\tthis.onScroll = <any>this.throttleTrailing(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollThrottlingTime);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.onScroll = () => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkScrollElementResizedTimer: number;\r\n\tprotected _checkResizeInterval: number;\r\n\t@Input()\r\n\tpublic get checkResizeInterval(): number {\r\n\t\treturn this._checkResizeInterval;\r\n\t}\r\n\tpublic set checkResizeInterval(value: number) {\r\n\t\tif (this._checkResizeInterval === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._checkResizeInterval = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tprotected _items: any[] = [];\r\n\t@Input()\r\n\tpublic get items(): any[] {\r\n\t\treturn this._items;\r\n\t}\r\n\tpublic set items(value: any[]) {\r\n\t\tif (value === this._items) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._items = value || [];\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic compareItems: (item1: any, item2: any) => boolean = (item1: any, item2: any) => item1 === item2;\r\n\r\n\tprotected _horizontal: boolean;\r\n\t@Input()\r\n\tpublic get horizontal(): boolean {\r\n\t\treturn this._horizontal;\r\n\t}\r\n\tpublic set horizontal(value: boolean) {\r\n\t\tthis._horizontal = value;\r\n\t\tthis.updateDirection();\r\n\t}\r\n\r\n\tprotected revertParentOverscroll(): void {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (scrollElement && this.oldParentScrollOverflow) {\r\n\t\t\tscrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\r\n\t\t\tscrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\r\n\t\t}\r\n\r\n\t\tthis.oldParentScrollOverflow = undefined;\r\n\t}\r\n\r\n\tprotected oldParentScrollOverflow: { x: string, y: string };\r\n\tprotected _parentScroll: Element | Window;\r\n\t@Input()\r\n\tpublic get parentScroll(): Element | Window {\r\n\t\treturn this._parentScroll;\r\n\t}\r\n\tpublic set parentScroll(value: Element | Window) {\r\n\t\tif (this._parentScroll === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.revertParentOverscroll();\r\n\t\tthis._parentScroll = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (this.modifyOverflowStyleOfParentScroll && scrollElement !== this.element.nativeElement) {\r\n\t\t\tthis.oldParentScrollOverflow = { x: scrollElement.style['overflow-x'], y: scrollElement.style['overflow-y'] };\r\n\t\t\tscrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\r\n\t\t\tscrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _lastChildRect: ClientRect;\r\n\r\n\t@Output()\r\n\tpublic vsChildRectChange: EventEmitter<ClientRect> = new EventEmitter<ClientRect>();\r\n\r\n\t@Output()\r\n\tpublic vsUpdate: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n\t@Output()\r\n\tpublic vsChange: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsStart: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsEnd: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@ViewChild('content', { read: ElementRef, static: true })\r\n\tpublic contentElementRef: ElementRef;\r\n\r\n\t@ViewChild('invisiblePadding', { read: ElementRef, static: true })\r\n\tprotected invisiblePaddingElementRef: ElementRef;\r\n\r\n\t@ContentChild('header', { read: ElementRef, static: false })\r\n\tprotected headerElementRef: ElementRef;\r\n\r\n\t@ContentChild('container', { read: ElementRef, static: false })\r\n\tprotected containerElementRef: ElementRef;\r\n\r\n\tpublic ngOnInit(): void {\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.removeScrollEventHandlers();\r\n\t\tthis.revertParentOverscroll();\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: any): void {\r\n\t\tconst indexLengthChanged = this.cachedItemsLength !== this.items.length;\r\n\t\tthis.cachedItemsLength = this.items.length;\r\n\r\n\t\tconst firstRun: boolean = !changes.items || !changes.items.previousValue || changes.items.previousValue.length === 0;\r\n\t\tthis.refresh_internal(indexLengthChanged || firstRun);\r\n\t}\r\n\r\n\tpublic ngDoCheck(): void {\r\n\t\tif (this.cachedItemsLength !== this.items.length) {\r\n\t\t\tthis.cachedItemsLength = this.items.length;\r\n\t\t\tthis.refresh_internal(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.previousViewPort && this.viewPortItems && this.viewPortItems.length > 0) {\r\n\t\t\tlet itemsArrayChanged = false;\r\n\t\t\tfor (let i = 0; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\tif (!this.compareItems(this.items[this.previousViewPort.startIndexWithBuffer + i], this.viewPortItems[i])) {\r\n\t\t\t\t\titemsArrayChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (itemsArrayChanged) {\r\n\t\t\t\tthis.refresh_internal(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic refresh(): void {\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\tpublic invalidateAllCachedMeasurements(): void {\r\n\t\tthis.wrapGroupDimensions = {\r\n\t\t\tmaxChildSizePerWrapGroup: [],\r\n\t\t\tnumberOfKnownWrapGroupChildSizes: 0,\r\n\t\t\tsumOfKnownWrapGroupChildWidths: 0,\r\n\t\t\tsumOfKnownWrapGroupChildHeights: 0\r\n\t\t};\r\n\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementForItem(item: any): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst index = this.items && this.items.indexOf(item);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tthis.invalidateCachedMeasurementAtIndex(index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementAtIndex(index: number): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst cachedMeasurement = this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\r\n\t\t\tif (cachedMeasurement) {\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\r\n\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= cachedMeasurement.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= cachedMeasurement.childHeight || 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic scrollInto(item: any, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tconst index: number = this.items.indexOf(item);\r\n\t\tif (index === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tlet maxRetries = 5;\r\n\r\n\t\tconst retryIfNeeded = () => {\r\n\t\t\t--maxRetries;\r\n\t\t\tif (maxRetries <= 0) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dimensions = this.calculateDimensions();\r\n\t\t\tconst desiredStartIndex = Math.min(Math.max(index, 0), dimensions.itemCount - 1);\r\n\t\t\tif (this.previousViewPort.startIndex === desiredStartIndex) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, 0, retryIfNeeded);\r\n\t\t};\r\n\r\n\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, animationMilliseconds, retryIfNeeded);\r\n\t}\r\n\r\n\tprotected scrollToIndex_internal(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tlet scroll = this.calculatePadding(index, dimensions) + additionalOffset;\r\n\t\tif (!alignToBeginning) {\r\n\t\t\tscroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\r\n\t\t}\r\n\r\n\t\tthis.scrollToPosition(scroll, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToPosition(scrollPosition: number, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tscrollPosition += this.getElementsOffset();\r\n\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tlet animationRequest: number;\r\n\r\n\t\tif (this.currentTween) {\r\n\t\t\tthis.currentTween.stop();\r\n\t\t\tthis.currentTween = undefined;\r\n\t\t}\r\n\r\n\t\tif (!animationMilliseconds) {\r\n\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, scrollPosition);\r\n\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tweenConfigObj = { scrollPosition: scrollElement[this._scrollType] };\r\n\r\n\t\tconst newTween = new tween.Tween(tweenConfigObj)\r\n\t\t\t.to({ scrollPosition }, animationMilliseconds)\r\n\t\t\t.easing(tween.Easing.Quadratic.Out)\r\n\t\t\t.onUpdate((data) => {\r\n\t\t\t\tif (isNaN(data.scrollPosition)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, data.scrollPosition);\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t})\r\n\t\t\t.onStop(() => {\r\n\t\t\t\tcancelAnimationFrame(animationRequest);\r\n\t\t\t})\r\n\t\t\t.start();\r\n\r\n\t\tconst animate = (time?: number) => {\r\n\t\t\tif (!newTween[\"isPlaying\"]()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnewTween.update(time);\r\n\t\t\tif (tweenConfigObj.scrollPosition === scrollPosition) {\r\n\t\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\t\tanimationRequest = requestAnimationFrame(animate);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tanimate();\r\n\t\tthis.currentTween = newTween;\r\n\t}\r\n\r\n\tprotected isAngularUniversalSSR: boolean;\r\n\r\n\tconstructor(\r\n\t\tprotected readonly element: ElementRef,\r\n\t\tprotected readonly renderer: Renderer2,\r\n\t\tprotected readonly zone: NgZone,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\t@Inject(PLATFORM_ID) platformId: any,\r\n\t\t@Optional() @Inject('virtual-scroller-default-options')\r\n\t\toptions: VirtualScrollerDefaultOptions\r\n\t) {\r\n\r\n\t\tthis.isAngularUniversalSSR = isPlatformServer(platformId);\r\n\r\n\t\tthis.checkResizeInterval = options.checkResizeInterval;\r\n\t\tthis.modifyOverflowStyleOfParentScroll = options.modifyOverflowStyleOfParentScroll;\r\n\t\tthis.resizeBypassRefreshThreshold = options.resizeBypassRefreshThreshold;\r\n\t\tthis.scrollAnimationTime = options.scrollAnimationTime;\r\n\t\tthis.scrollDebounceTime = options.scrollDebounceTime;\r\n\t\tthis.scrollThrottlingTime = options.scrollThrottlingTime;\r\n\t\tthis.scrollbarHeight = options.scrollbarHeight;\r\n\t\tthis.scrollbarWidth = options.scrollbarWidth;\r\n\t\tthis.stripedTable = options.stripedTable;\r\n\r\n\t\tthis.horizontal = false;\r\n\t\tthis.resetWrapGroupDimensions();\r\n\t}\r\n\r\n\tprotected getElementSize(element: HTMLElement): ClientRect {\r\n\t\tconst result = element.getBoundingClientRect();\r\n\t\tconst styles = getComputedStyle(element);\r\n\t\tconst marginTop = parseInt(styles['margin-top'], 10) || 0;\r\n\t\tconst marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\r\n\t\tconst marginLeft = parseInt(styles['margin-left'], 10) || 0;\r\n\t\tconst marginRight = parseInt(styles['margin-right'], 10) || 0;\r\n\r\n\t\treturn {\r\n\t\t\ttop: result.top + marginTop,\r\n\t\t\tbottom: result.bottom + marginBottom,\r\n\t\t\tleft: result.left + marginLeft,\r\n\t\t\tright: result.right + marginRight,\r\n\t\t\twidth: result.width + marginLeft + marginRight,\r\n\t\t\theight: result.height + marginTop + marginBottom\r\n\t\t};\r\n\t}\r\n\r\n\tprotected previousScrollBoundingRect: ClientRect;\r\n\tprotected checkScrollElementResized(): void {\r\n\t\tconst boundingRect = this.getElementSize(this.getScrollElement());\r\n\r\n\t\tlet sizeChanged: boolean;\r\n\t\tif (!this.previousScrollBoundingRect) {\r\n\t\t\tsizeChanged = true;\r\n\t\t} else {\r\n\t\t\tconst widthChange = Math.abs(boundingRect.width - this.previousScrollBoundingRect.width);\r\n\t\t\tconst heightChange = Math.abs(boundingRect.height - this.previousScrollBoundingRect.height);\r\n\t\t\tsizeChanged = widthChange > this.resizeBypassRefreshThreshold || heightChange > this.resizeBypassRefreshThreshold;\r\n\t\t}\r\n\r\n\t\tif (sizeChanged) {\r\n\t\t\tthis.previousScrollBoundingRect = boundingRect;\r\n\t\t\tif (boundingRect.width > 0 && boundingRect.height > 0) {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _invisiblePaddingProperty;\r\n\tprotected _offsetType;\r\n\tprotected _scrollType;\r\n\tprotected _pageOffsetType;\r\n\tprotected _childScrollDim;\r\n\tprotected _translateDir;\r\n\tprotected _marginDir;\r\n\tprotected updateDirection(): void {\r\n\t\tif (this.horizontal) {\r\n\t\t\tthis._childScrollDim = 'childWidth';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleX';\r\n\t\t\tthis._marginDir = 'margin-left';\r\n\t\t\tthis._offsetType = 'offsetLeft';\r\n\t\t\tthis._pageOffsetType = 'pageXOffset';\r\n\t\t\tthis._scrollType = 'scrollLeft';\r\n\t\t\tthis._translateDir = 'translateX';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._childScrollDim = 'childHeight';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleY';\r\n\t\t\tthis._marginDir = 'margin-top';\r\n\t\t\tthis._offsetType = 'offsetTop';\r\n\t\t\tthis._pageOffsetType = 'pageYOffset';\r\n\t\t\tthis._scrollType = 'scrollTop';\r\n\t\t\tthis._translateDir = 'translateY';\r\n\t\t}\r\n\t}\r\n\r\n\tprotected debounce(func: () => void, wait: number, ...args): () => void {\r\n\t\tconst throttled = this.throttleTrailing(func, wait);\r\n\t\tconst result = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t\tthrottled.apply(this, args);\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected throttleTrailing(func: () => void, wait: number, ...args): () => void {\r\n\t\tlet timeout = undefined;\r\n\t\tlet _arguments = args;\r\n\t\tconst result = function () {\r\n\t\t\tconst _this = this;\r\n\t\t\t_arguments = args\r\n\r\n\t\t\tif (timeout) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (wait <= 0) {\r\n\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t} else {\r\n\t\t\t\ttimeout = setTimeout(function () {\r\n\t\t\t\t\ttimeout = undefined;\r\n\t\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t\t}, wait);\r\n\t\t\t}\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\ttimeout = undefined;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatedScrollbarWidth = 0;\r\n\tprotected calculatedScrollbarHeight = 0;\r\n\r\n\tprotected padding = 0;\r\n\tprotected previousViewPort: IViewport = <any>{};\r\n\tprotected currentTween: tween.Tween;\r\n\tprotected cachedItemsLength: number;\r\n\r\n\tprotected disposeScrollHandler: () => void | undefined;\r\n\tprotected disposeResizeHandler: () => void | undefined;\r\n\r\n\tprotected refresh_internal(itemsArrayModified: boolean, refreshCompletedCallback: () => void = undefined, maxRunTimes = 2): void {\r\n\t\t//note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\r\n\t\t//The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\r\n\t\t//The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\r\n\t\t//Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\r\n\r\n\t\tif (itemsArrayModified && this.previousViewPort && this.previousViewPort.scrollStartPosition > 0) {\r\n\t\t\t//if items were prepended, scroll forward to keep same items visible\r\n\t\t\tconst oldViewPort = this.previousViewPort;\r\n\t\t\tconst oldViewPortItems = this.viewPortItems;\r\n\r\n\t\t\tconst oldRefreshCompletedCallback = refreshCompletedCallback;\r\n\t\t\trefreshCompletedCallback = () => {\r\n\t\t\t\tconst scrollLengthDelta = this.previousViewPort.scrollLength - oldViewPort.scrollLength;\r\n\t\t\t\tif (scrollLengthDelta > 0 && this.viewPortItems) {\r\n\t\t\t\t\tconst oldStartItem = oldViewPortItems[0];\r\n\t\t\t\t\tconst oldStartItemIndex = this.items.findIndex(x => this.compareItems(oldStartItem, x));\r\n\t\t\t\t\tif (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\r\n\t\t\t\t\t\tlet itemOrderChanged = false;\r\n\t\t\t\t\t\tfor (let i = 1; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\t\t\t\tif (!this.compareItems(this.items[oldStartItemIndex + i], oldViewPortItems[i])) {\r\n\t\t\t\t\t\t\t\titemOrderChanged = true;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!itemOrderChanged) {\r\n\t\t\t\t\t\t\tthis.scrollToPosition(this.previousViewPort.scrollStartPosition + scrollLengthDelta, 0, oldRefreshCompletedCallback);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oldRefreshCompletedCallback) {\r\n\t\t\t\t\toldRefreshCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\r\n\t\t\t\tif (itemsArrayModified) {\r\n\t\t\t\t\tthis.resetWrapGroupDimensions();\r\n\t\t\t\t}\r\n\t\t\t\tconst viewport = this.calculateViewport();\r\n\r\n\t\t\t\tconst startChanged = itemsArrayModified || viewport.startIndex !== this.previousViewPort.startIndex;\r\n\t\t\t\tconst endChanged = itemsArrayModified || viewport.endIndex !== this.previousViewPort.endIndex;\r\n\t\t\t\tconst scrollLengthChanged = viewport.scrollLength !== this.previousViewPort.scrollLength;\r\n\t\t\t\tconst paddingChanged = viewport.padding !== this.previousViewPort.padding;\r\n\t\t\t\tconst scrollPositionChanged = viewport.scrollStartPosition !== this.previousViewPort.scrollStartPosition || viewport.scrollEndPosition !== this.previousViewPort.scrollEndPosition || viewport.maxScrollPosition !== this.previousViewPort.maxScrollPosition;\r\n\r\n\t\t\t\tconst scrollDirection: ScrollDirectionType = this.previousViewPort.endIndex <= viewport.endIndex ? 'forward' : 'backward';\r\n\t\t\t\tthis.previousViewPort = viewport;\r\n\r\n\t\t\t\tif (scrollLengthChanged) {\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'transform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'webkitTransform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (paddingChanged) {\r\n\t\t\t\t\tif (this.useMarginInsteadOfTranslate) {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'transform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.headerElementRef) {\r\n\t\t\t\t\tconst scrollPosition = this.getScrollElement()[this._scrollType];\r\n\t\t\t\t\tconst containerOffset = this.getElementsOffset();\r\n\t\t\t\t\tconst offset = Math.max(scrollPosition - viewport.padding - containerOffset + this.headerElementRef.nativeElement.clientHeight, 0);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'transform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst changeEventArg: IPageInfo = (startChanged || endChanged) ? {\r\n\t\t\t\t\tstartIndex: viewport.startIndex,\r\n\t\t\t\t\tendIndex: viewport.endIndex,\r\n\t\t\t\t\tscrollStartPosition: viewport.scrollStartPosition,\r\n\t\t\t\t\tscrollEndPosition: viewport.scrollEndPosition,\r\n\t\t\t\t\tscrollDirection: scrollDirection,\r\n\t\t\t\t\tstartIndexWithBuffer: viewport.startIndexWithBuffer,\r\n\t\t\t\t\tendIndexWithBuffer: viewport.endIndexWithBuffer,\r\n\t\t\t\t\tmaxScrollPosition: viewport.maxScrollPosition,\r\n\t\t\t\t} : undefined;\r\n\r\n\r\n\t\t\t\tif (startChanged || endChanged || scrollPositionChanged) {\r\n\t\t\t\t\tconst handleChanged = () => {\r\n\t\t\t\t\t\t// update the scroll list to trigger re-render of components in viewport\r\n\t\t\t\t\t\tthis.viewPortItems = viewport.startIndexWithBuffer >= 0 && viewport.endIndexWithBuffer >= 0 ? this.items.slice(viewport.startIndexWithBuffer, viewport.endIndexWithBuffer + 1) : [];\r\n\t\t\t\t\t\tthis.vsUpdate.emit(this.viewPortItems);\r\n\r\n\t\t\t\t\t\tif (startChanged) {\r\n\t\t\t\t\t\t\tthis.vsStart.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (endChanged) {\r\n\t\t\t\t\t\t\tthis.vsEnd.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (startChanged || endChanged) {\r\n\t\t\t\t\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t\t\t\t\t\tthis.vsChange.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maxRunTimes > 0) {\r\n\t\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\r\n\t\t\t\t\tif (this.executeRefreshOutsideAngularZone) {\r\n\t\t\t\t\t\thandleChanged();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.zone.run(handleChanged);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (maxRunTimes > 0 && (scrollLengthChanged || paddingChanged)) {\r\n\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected getScrollElement(): HTMLElement {\r\n\t\treturn this.parentScroll instanceof Window ? document.scrollingElement || document.documentElement || document.body : this.parentScroll || this.element.nativeElement;\r\n\t}\r\n\r\n\tprotected addScrollEventHandlers(): void {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tthis.removeScrollEventHandlers();\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen('window', 'scroll', this.onScroll);\r\n\t\t\t\tthis.disposeResizeHandler = this.renderer.listen('window', 'resize', this.onScroll);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen(scrollElement, 'scroll', this.onScroll);\r\n\t\t\t\tif (this._checkResizeInterval > 0) {\r\n\t\t\t\t\tthis.checkScrollElementResizedTimer = <any>setInterval(() => { this.checkScrollElementResized(); }, this._checkResizeInterval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected removeScrollEventHandlers(): void {\r\n\t\tif (this.checkScrollElementResizedTimer) {\r\n\t\t\tclearInterval(this.checkScrollElementResizedTimer);\r\n\t\t}\r\n\r\n\t\tif (this.disposeScrollHandler) {\r\n\t\t\tthis.disposeScrollHandler();\r\n\t\t\tthis.disposeScrollHandler = undefined;\r\n\t\t}\r\n\r\n\t\tif (this.disposeResizeHandler) {\r\n\t\t\tthis.disposeResizeHandler();\r\n\t\t\tthis.disposeResizeHandler = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getElementsOffset(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet offset = 0;\r\n\r\n\t\tif (this.containerElementRef && this.containerElementRef.nativeElement) {\r\n\t\t\toffset += this.containerElementRef.nativeElement[this._offsetType];\r\n\t\t}\r\n\r\n\t\tif (this.parentScroll) {\r\n\t\t\tconst scrollElement = this.getScrollElement();\r\n\t\t\tconst elementClientRect = this.getElementSize(this.element.nativeElement);\r\n\t\t\tconst scrollClientRect = this.getElementSize(scrollElement);\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\toffset += elementClientRect.left - scrollClientRect.left;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\toffset += elementClientRect.top - scrollClientRect.top;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(this.parentScroll instanceof Window)) {\r\n\t\t\t\toffset += scrollElement[this._scrollType];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn offset;\r\n\t}\r\n\r\n\tprotected countItemsPerWrapGroup(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn Math.round(this.horizontal ? this.ssrViewportHeight / this.ssrChildHeight : this.ssrViewportWidth / this.ssrChildWidth);\r\n\t\t}\r\n\r\n\t\tconst propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\r\n\t\tconst children = ((this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement).children;\r\n\r\n\t\tconst childrenLength = children ? children.length : 0;\r\n\t\tif (childrenLength === 0) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\tconst firstOffset = children[0][propertyName];\r\n\t\tlet result = 1;\r\n\t\twhile (result < childrenLength && firstOffset === children[result][propertyName]) {\r\n\t\t\t++result;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getScrollStartPosition(): number {\r\n\t\tlet windowScrollValue = undefined;\r\n\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\twindowScrollValue = window[this._pageOffsetType];\r\n\t\t}\r\n\r\n\t\treturn windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\r\n\t}\r\n\r\n\tprotected minMeasuredChildWidth: number;\r\n\tprotected minMeasuredChildHeight: number;\r\n\r\n\tprotected wrapGroupDimensions: WrapGroupDimensions;\r\n\r\n\tprotected resetWrapGroupDimensions(): void {\r\n\t\tconst oldWrapGroupDimensions = this.wrapGroupDimensions;\r\n\t\tthis.invalidateAllCachedMeasurements();\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes || !oldWrapGroupDimensions || oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst itemsPerWrapGroup: number = this.countItemsPerWrapGroup();\r\n\t\tfor (let wrapGroupIndex = 0; wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length; ++wrapGroupIndex) {\r\n\t\t\tconst oldWrapGroupDimension: WrapGroupDimension = oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\tif (!oldWrapGroupDimension || !oldWrapGroupDimension.items || !oldWrapGroupDimension.items.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemsChanged = false;\r\n\t\t\tconst arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\r\n\t\t\tfor (let i = 0; i < itemsPerWrapGroup; ++i) {\r\n\t\t\t\tif (!this.compareItems(oldWrapGroupDimension.items[i], this.items[arrayStartIndex + i])) {\r\n\t\t\t\t\titemsChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!itemsChanged) {\r\n\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += oldWrapGroupDimension.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += oldWrapGroupDimension.childHeight || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = oldWrapGroupDimension;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected calculateDimensions(): IDimensions {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tconst maxCalculatedScrollBarSize = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\r\n\t\tthis.calculatedScrollbarHeight = Math.max(Math.min(scrollElement.offsetHeight - scrollElement.clientHeight, maxCalculatedScrollBarSize), this.calculatedScrollbarHeight);\r\n\t\tthis.calculatedScrollbarWidth = Math.max(Math.min(scrollElement.offsetWidth - scrollElement.clientWidth, maxCalculatedScrollBarSize), this.calculatedScrollbarWidth);\r\n\r\n\t\tlet viewportWidth = scrollElement.offsetWidth - (this.scrollbarWidth || this.calculatedScrollbarWidth || (this.horizontal ? 0 : maxCalculatedScrollBarSize));\r\n\t\tlet viewportHeight = scrollElement.offsetHeight - (this.scrollbarHeight || this.calculatedScrollbarHeight || (this.horizontal ? maxCalculatedScrollBarSize : 0));\r\n\r\n\t\tconst content = (this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement;\r\n\r\n\t\tconst itemsPerWrapGroup = this.countItemsPerWrapGroup();\r\n\t\tlet wrapGroupsPerPage;\r\n\r\n\t\tlet defaultChildWidth;\r\n\t\tlet defaultChildHeight;\r\n\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\tviewportWidth = this.ssrViewportWidth;\r\n\t\t\tviewportHeight = this.ssrViewportHeight;\r\n\t\t\tdefaultChildWidth = this.ssrChildWidth;\r\n\t\t\tdefaultChildHeight = this.ssrChildHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t}\r\n\t\telse if (!this.enableUnequalChildrenSizes) {\r\n\t\t\tif (content.children.length > 0) {\r\n\t\t\t\tif (!this.childWidth || !this.childHeight) {\r\n\t\t\t\t\tif (!this.minMeasuredChildWidth && viewportWidth > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildWidth = viewportWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.minMeasuredChildHeight && viewportHeight > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildHeight = viewportHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst child = content.children[0];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\t\t\t\tthis.minMeasuredChildWidth = Math.min(this.minMeasuredChildWidth, clientRect.width);\r\n\t\t\t\tthis.minMeasuredChildHeight = Math.min(this.minMeasuredChildHeight, clientRect.height);\r\n\r\n\t\t\t\t// Added for getting the child height (for card view, return all the clientRect object).\r\n\t\t\t\tif (this._lastChildRect?.height !== clientRect?.height ||\r\n\t\t\t\t\tthis._lastChildRect?.width !== clientRect?.width) {\r\n\t\t\t\t\tthis._lastChildRect = clientRect;\r\n\t\t\t\t\tthis.vsChildRectChange.emit(clientRect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdefaultChildWidth = this.childWidth || this.minMeasuredChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || this.minMeasuredChildHeight || viewportHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t} else {\r\n\t\t\tlet scrollOffset = scrollElement[this._scrollType] - (this.previousViewPort ? this.previousViewPort.padding : 0);\r\n\r\n\t\t\tlet arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\r\n\t\t\tlet wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\r\n\r\n\t\t\tlet maxWidthForWrapGroup = 0;\r\n\t\t\tlet maxHeightForWrapGroup = 0;\r\n\t\t\tlet sumOfVisibleMaxWidths = 0;\r\n\t\t\tlet sumOfVisibleMaxHeights = 0;\r\n\t\t\twrapGroupsPerPage = 0;\r\n\r\n\t\t\tfor (let i = 0; i < content.children.length; ++i) {\r\n\t\t\t\t++arrayStartIndex;\r\n\t\t\t\tconst child = content.children[i];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\r\n\t\t\t\tmaxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\r\n\t\t\t\tmaxHeightForWrapGroup = Math.max(maxHeightForWrapGroup, clientRect.height);\r\n\r\n\t\t\t\tif (arrayStartIndex % itemsPerWrapGroup === 0) {\r\n\t\t\t\t\tconst oldValue = this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\t\t\tif (oldValue) {\r\n\t\t\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= oldValue.childWidth || 0;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= oldValue.childHeight || 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\tconst items = this.items.slice(arrayStartIndex - itemsPerWrapGroup, arrayStartIndex);\r\n\t\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\r\n\t\t\t\t\t\tchildWidth: maxWidthForWrapGroup,\r\n\t\t\t\t\t\tchildHeight: maxHeightForWrapGroup,\r\n\t\t\t\t\t\titems: items\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += maxWidthForWrapGroup;\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += maxHeightForWrapGroup;\r\n\r\n\t\t\t\t\tif (this.horizontal) {\r\n\t\t\t\t\t\tlet maxVisibleWidthForWrapGroup = Math.min(maxWidthForWrapGroup, Math.max(viewportWidth - sumOfVisibleMaxWidths, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleWidthForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleWidthForWrapGroup > 0 && viewportWidth >= sumOfVisibleMaxWidths) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet maxVisibleHeightForWrapGroup = Math.min(maxHeightForWrapGroup, Math.max(viewportHeight - sumOfVisibleMaxHeights, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleHeightForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleHeightForWrapGroup > 0 && viewportHeight >= sumOfVisibleMaxHeights) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++wrapGroupIndex;\r\n\r\n\t\t\t\t\tmaxWidthForWrapGroup = 0;\r\n\t\t\t\t\tmaxHeightForWrapGroup = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst averageChildWidth = this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tconst averageChildHeight = this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tdefaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || averageChildHeight || viewportHeight;\r\n\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\tif (viewportWidth > sumOfVisibleMaxWidths) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (viewportHeight > sumOfVisibleMaxHeights) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst itemCount = this.items.length;\r\n\t\tconst itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\r\n\t\tconst pageCount_fractional = itemCount / itemsPerPage;\r\n\t\tconst numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\r\n\r\n\t\tlet scrollLength = 0;\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = this.horizontal ? defaultChildWidth : defaultChildHeight;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tlet numUnknownChildSizes = 0;\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\tscrollLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tscrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\t\t} else {\r\n\t\t\tscrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\r\n\t\t}\r\n\r\n\t\tif (this.headerElementRef) {\r\n\t\t\tscrollLength += this.headerElementRef.nativeElement.clientHeight;\r\n\t\t}\r\n\r\n\t\tconst viewportLength = this.horizontal ? viewportWidth : viewportHeight;\r\n\t\tconst maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\r\n\r\n\t\treturn {\r\n\t\t\tchildHeight: defaultChildHeight,\r\n\t\t\tchildWidth: defaultChildWidth,\r\n\t\t\titemCount: itemCount,\r\n\t\t\titemsPerPage: itemsPerPage,\r\n\t\t\titemsPerWrapGroup: itemsPerWrapGroup,\r\n\t\t\tmaxScrollPosition: maxScrollPosition,\r\n\t\t\tpageCount_fractional: pageCount_fractional,\r\n\t\t\tscrollLength: scrollLength,\r\n\t\t\tviewportLength: viewportLength,\r\n\t\t\twrapGroupsPerPage: wrapGroupsPerPage,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected cachedPageSize = 0;\r\n\tprotected previousScrollNumberElements = 0;\r\n\r\n\tprotected calculatePadding(arrayStartIndexWithBuffer: number, dimensions: IDimensions): number {\r\n\t\tif (dimensions.itemCount === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\tconst startingWrapGroupIndex = Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes) {\r\n\t\t\treturn defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\r\n\t\t}\r\n\r\n\t\tlet numUnknownChildSizes = 0;\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < startingWrapGroupIndex; ++i) {\r\n\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\tif (childSize) {\r\n\t\t\t\tresult += childSize;\r\n\t\t\t} else {\r\n\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatePageInfo(scrollPosition: number, dimensions: IDimensions): IPageInfo {\r\n\t\tlet scrollPercentage = 0;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\r\n\t\t\tlet totalScrolledLength = 0;\r\n\t\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\ttotalScrolledLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttotalScrolledLength += defaultScrollLengthPerWrapGroup;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scrollPosition < totalScrolledLength) {\r\n\t\t\t\t\tscrollPercentage = i / numberOfWrapGroups;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tscrollPercentage = scrollPosition / dimensions.scrollLength;\r\n\t\t}\r\n\r\n\t\tconst startingArrayIndex_fractional = Math.min(Math.max(scrollPercentage * dimensions.pageCount_fractional, 0), dimensions.pageCount_fractional) * dimensions.itemsPerPage;\r\n\r\n\t\tconst maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\r\n\t\tlet arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\r\n\t\tarrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\r\n\r\n\t\tif (this.stripedTable) {\r\n\t\t\tconst bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\r\n\t\t\tif (arrayStartIndex % bufferBoundary !== 0) {\r\n\t\t\t\tarrayStartIndex = Math.max(arrayStartIndex - arrayStartIndex % bufferBoundary, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\r\n\t\tconst endIndexWithinWrapGroup = (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\r\n\t\tif (endIndexWithinWrapGroup > 0) {\r\n\t\t\tarrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\r\n\t\t}\r\n\r\n\t\tif (isNaN(arrayStartIndex)) {\r\n\t\t\tarrayStartIndex = 0;\r\n\t\t}\r\n\t\tif (isNaN(arrayEndIndex)) {\r\n\t\t\tarrayEndIndex = 0;\r\n\t\t}\r\n\r\n\t\tarrayStartIndex = Math.min(Math.max(arrayStartIndex, 0), dimensions.itemCount - 1);\r\n\t\tarrayEndIndex = Math.min(Math.max(arrayEndIndex, 0), dimensions.itemCount - 1);\r\n\r\n\t\tconst bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\r\n\t\tconst startIndexWithBuffer = Math.min(Math.max(arrayStartIndex - bufferSize, 0), dimensions.itemCount - 1);\r\n\t\tconst endIndexWithBuffer = Math.min(Math.max(arrayEndIndex + bufferSize, 0), dimensions.itemCount - 1);\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: arrayStartIndex,\r\n\t\t\tendIndex: arrayEndIndex,\r\n\t\t\tstartIndexWithBuffer: startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: endIndexWithBuffer,\r\n\t\t\tscrollStartPosition: scrollPosition,\r\n\t\t\tscrollEndPosition: scrollPosition + dimensions.viewportLength,\r\n\t\t\tmaxScrollPosition: dimensions.maxScrollPosition\r\n\t\t};\r\n\t}\r\n\r\n\tprotected calculateViewport(): IViewport {\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tconst offset = this.getElementsOffset();\r\n\r\n\t\tlet scrollStartPosition = this.getScrollStartPosition();\r\n\t\tif (scrollStartPosition > (dimensions.scrollLength + offset) && !(this.parentScroll instanceof Window)) {\r\n\t\t\tscrollStartPosition = dimensions.scrollLength;\r\n\t\t} else {\r\n\t\t\tscrollStartPosition -= offset;\r\n\t\t}\r\n\t\tscrollStartPosition = Math.max(0, scrollStartPosition);\r\n\r\n\t\tconst pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\r\n\t\tconst newPadding = this.calculatePadding(pageInfo.startIndexWithBuffer, dimensions);\r\n\t\tconst newScrollLength = dimensions.scrollLength;\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex,\r\n\t\t\tendIndex: pageInfo.endIndex,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer,\r\n\t\t\tpadding: Math.round(newPadding),\r\n\t\t\tscrollLength: Math.round(newScrollLength),\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition,\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@NgModule({\r\n\texports: [VirtualScrollerComponent],\r\n\tdeclarations: [VirtualScrollerComponent],\r\n\timports: [CommonModule],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: 'virtual-scroller-default-options',\r\n\t\t\tuseFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\r\n\t\t}\r\n\t]\r\n})\r\nexport class VirtualScrollerModule { }","import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingChangeEvent {\n sortBy: string;\n isAsc: boolean;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\n\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\nimport * as tween from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 48;\n\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n SEPARATOR = ',';\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n\n // For sorting\n isAsc = true;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight: string;\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private setContainerWidth(): void {\n const selectionCheckBoxWidth =\n this.selectionTypeForActions === 'multi' ? 44 : 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = window.getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + selectionCheckBoxWidth + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n // private disableScroll(disable: boolean) {\n // if (disable) {\n // this.renderer.addClass(this.getParentContainer(), 'lock-events');\n // } else {\n // this.renderer.removeClass(this.getParentContainer(), 'lock-events');\n // }\n // }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the columns width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n this.calcColumnsWidth();\n this.checkForChanges = new Date().getTime();\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n const selectionCheckBoxWidth =\n this.selectionTypeForActions === 'multi' ? 44 : 0;\n\n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n 'inherit'\n );\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = currentFixedWidth + 'px';\n uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n totalCalcColsWidth + selectionCheckBoxWidth + 'px'\n );\n }\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = '';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // getIsDisabled(item: ObjectsDataRow): boolean {\n // return (\n // this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n // );\n // }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n\n if (this.isTable) {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[]\n ): void {\n this.initVariablesFromSession(items);\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = '';\n this.totalRows = totalRows;\n\n this.scrollToTop(false);\n this.cleanItems();\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n\n this.refresh();\n }\n }\n\n this.setLayout();\n this.onListLoad();\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n if (this.selectionTypeForActions === 'single') {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n\n res.selectionType = 1;\n res.rows = [tmp[0]];\n res.rowTypes = [tmp[1]];\n } else if (this.selectionTypeForActions === 'multi') {\n const items = [];\n const itemTypes = [];\n let selectionType = 1;\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n }\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh() {\n this.virtualScroller?.refresh();\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey): void {\n this.pressedColumn = columnKey;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n this.tableStartWidth = this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n }\n\n onListResize(event): void {\n if (this.pressedColumn.length > 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n } else if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n this.tableStartWidth + widthToAdd + 'px'\n );\n }\n\n this.checkForChanges = new Date().getTime();\n }\n }\n\n onListResizeEnd(event): void {\n if (this.pressedColumn.length > 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n this.pressedColumn.length > 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n });\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n onChildRectChange(event: ClientRect) {\n setTimeout(() => {\n this.calculatedObjectHeight = event?.height + 'px';\n }, 0);\n }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({\n selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss'],\n})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({\n selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss'],\n})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({\n selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss'],\n})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({\n selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss'],\n})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({\n selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss'],\n})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss'],\n})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n}\n","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({\n selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss'],\n})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\nimport { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {IsItemDisabledPipe as ɵe,IsItemSelectedPipe as ɵd} from './list.pipes';\nexport {VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY as ɵa,VirtualScrollerComponent as ɵb,VirtualScrollerModule as ɵc} from './virtual-scroller';"],"names":["EventEmitter","isPlatformServer","tween","Component","ElementRef","Renderer2","NgZone","ChangeDetectorRef","Inject","PLATFORM_ID","Optional","Input","Output","ViewChild","ContentChild","NgModule","CommonModule","FIELD_TYPE","PepScreenSizeType","PepLayoutService","PepSessionService","Injectable","PepCarouselComponent","PepBreadCrumbItem","coerceNumberProperty","Pipe","pepIconArrowDown","pepIconArrowEither","pepIconArrowUp","pepIconSystemMust","pepIconArrowRight","pepIconArrowRightAlt","pepIconArrowLeft","pepIconArrowLeftAlt","MatCommonModule","MatButtonModule","MatCheckboxModule","MatRadioModule","MatIconModule","MatMenuModule","PepNgxLibModule","PepBreadCrumbsModule","PepButtonModule","PepCarouselModule","PepIconModule","PepFormModule","PepMenuModule","PepTextboxModule","PepIconRegistry"],"mappings":"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"}