ng-inail-common 2.0.21 → 2.0.25

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":"ng-inail-common.umd.js","sources":["../../../projects/ng-inail-common/src/lib/utils/common.operators.ts","../../../projects/ng-inail-common/src/lib/components/core/base.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ng-inail-common/src/lib/components/core/basic-ux-element.component.ts","../../../projects/ng-inail-common/src/lib/components/core/responsive-element.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/pre/pre.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/state-propertie/state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/layout-common-config.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/footer/footer.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-interna/navigazione-interna.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-principale/navigazione-principale.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu-intranet/menu-intranet.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-utente/navigazione-utente.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/header/header.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/loader/loader.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/webkit-resources.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu/menu.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/button/button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/inail-layout.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/breadcrumb/breadcrumb.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/form-element.component.ts","../../../projects/ng-inail-common/src/lib/utils/date.operators.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-text/input-text.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/select/select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/form-grey/form-grey.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/page-title/page-title.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/feedback/feedback.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/accordion/accordion.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-pane/tab-pane.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-group/tab-group.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/popover/popover.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/textarea/textarea.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-date/input-date.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/radio-select/radio-select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/checkbox/checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/modal/modal.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/alert/alert.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/confirm/confirm.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table-page-length-selector/table-page-length-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/th-label/th-label.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/tr-checkbox/tr-checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table/table.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-file/input-file.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-number/input-number.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/container/container.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/selector/selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/wizard/wizard.component.ts","../../../projects/ng-inail-common/src/lib/ng-inail-common.module.ts","../../../projects/ng-inail-common/src/public-api.ts","../../../projects/ng-inail-common/src/ng-inail-common.ts"],"sourcesContent":["import {isFunction} from \"rxjs/internal-compatibility\";\n\nexport const isBlankOrNull = (s: string): boolean => s == undefined || String(s).trim().length == 0;\nexport const isNotBlankOrNull = (s: string): boolean => !isBlankOrNull(s);\nexport const isNumber = (o: any): boolean => typeof o === 'number';\nexport const isString = (o: any): boolean => typeof o === 'string';\nexport const isAbsolute = (url: string): boolean => startWith(url, 'http');\nexport const startWithSlash = (url: string): boolean => startWith(url, '/');\nexport const startWith = (url: string, s: string): boolean => url != undefined && String(url).startsWith(s);\nexport const isListEmptyOrNull = (s: any[]): boolean => !s || !(s.length > 0);\nexport const isListNotEmptyOrNull = (s: any[]): boolean => !isListEmptyOrNull(s);\nexport const clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\n\nexport const scrollTo = (top: number) => {\n setTimeout(() => {\n window.scroll({top, left: 0, behavior: 'smooth'});\n });\n};\n\nexport const scrollToElement = (id: string) => {\n\n setTimeout(() => {\n const elem = document.getElementById(id);\n if (elem) {\n scrollTo(elem.getBoundingClientRect().top + window.pageYOffset - 50);\n }\n });\n};\n\nexport const scrollTop = () => {\n scrollTo(130);\n};\n\nexport const setFocus = (nativeElement: HTMLElement, scroll: boolean) => {\n\n if (nativeElement) {\n\n if (scroll === true) {\n scrollToElement(nativeElement.getAttribute('id'));\n }\n\n setTimeout(() => nativeElement.focus(), scroll === true ? 500 : 0);\n }\n}\n\nexport const call = (e: any, f: string, a?: any) => {\n\n let el = e && e[f] != undefined && isFunction(e[f]) ? e[f](a) : undefined;\n\n return {\n data: el,\n call: (fname: string, arg?: any) => call(el, fname, arg)\n }\n}\n\nexport const uuidv4 = (): string => {\n return 'axxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\nexport const isHidden = (element: Element) => {\n\n let ishidden: boolean = false;\n\n if (element) {\n\n let cs = window.getComputedStyle(element);\n ishidden = cs.display == 'none' || cs.visibility != 'visible' || isHidden(element.parentElement);\n }\n\n return ishidden;\n}\n\nexport const setPageScroll = (scroll: boolean) => document.getElementsByTagName('html')[0].style['overflow-y'] = scroll ? 'scroll' : 'hidden';\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {isNotBlankOrNull, isString} from \"../../utils/common.operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nexport enum LogLevel {\n\n LOG = 'log',\n TRACE = 'trace',\n DEBUG = 'debug',\n INFO = 'info',\n WARN = 'warn',\n ERROR = 'error'\n}\n\nexport interface LogEvent {\n\n message: any;\n level: LogLevel;\n}\n\nexport const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.OnPush;\n\n// export const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.Default;\n\n@Component({\n selector: 'inail-base',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BaseComponent implements OnChanges, OnInit {\n\n /**\n * Log del componente\n */\n @Output()\n log: EventEmitter<LogEvent>;\n\n /**\n * Se true effettua il log direttamente nella console.\n * Altrimenti emette l'evento log\n */\n @Input()\n logOnConsole: boolean = false;\n\n /**\n *\n */\n @Input()\n showState: boolean = false;\n\n @Input()\n detectChange: Observable<void>;\n\n logPrefix: string;\n\n subcriptions: Subscription[] = [];\n push = (subcription: Subscription) => this.subcriptions.push(subcription);\n\n // Detach centralizzato\n detach = () => {\n this.baseComponentCdr.detach();\n };\n\n detectChanges = () => this.baseComponentCdr.detectChanges();\n\n constructor(private baseComponentCdr: ChangeDetectorRef) {\n this.log = new EventEmitter<LogEvent>();\n saveEE();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.emitDebug('ngOnChanges');\n this.emitDebug(changes);\n }\n\n ngOnInit() {\n\n this.emitDebug(`ngOnInit`);\n this.emitDebug(`this`);\n this.emitDebug(this);\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.baseComponentCdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n this.emitDebug('ngOnDestroy');\n this.subcriptions.forEach(s => s?.unsubscribe());\n }\n\n emitLog(message: any) {\n this.emit({message: message, level: LogLevel.LOG});\n }\n\n emitTrace(message: any) {\n this.emit({message: message, level: LogLevel.TRACE});\n }\n\n emitDebug(message: any) {\n this.emit({message: message, level: LogLevel.DEBUG});\n }\n\n emitInfo(message: any) {\n this.emit({message: message, level: LogLevel.INFO});\n }\n\n emitWarn(message: any) {\n this.emit({message: message, level: LogLevel.WARN});\n }\n\n emitError(message: any) {\n\n this.emit({message: message, level: LogLevel.ERROR});\n }\n\n emit(event: LogEvent) {\n\n if (event) {\n\n if (this.logOnConsole === true) {\n\n console[event.level].apply(this, [this.getMessage(event)]);\n } else {\n\n this.log.emit(event);\n }\n }\n }\n\n getMessage = (event: LogEvent) => this.logPrefix && isString(event.message) ? `${this.logPrefix} ${event.message}` : event.message;\n getNotBlankValue = (v) => isNotBlankOrNull(`${v}`) ? v : undefined;\n}\n\nexport interface BooleanChange extends SimpleChange {\n\n currentValue: boolean;\n previousValue: boolean;\n}\n\nexport interface StringChange extends SimpleChange {\n\n currentValue: string;\n previousValue: string;\n}\n\nexport interface NumberChange extends SimpleChange {\n\n currentValue: number;\n previousValue: number;\n}\n\nexport interface ObservableChange extends SimpleChange {\n\n currentValue: Observable<any>;\n previousValue: Observable<any>;\n}\n\nexport interface BaseComponentChanges extends SimpleChanges {\n\n logOnConsole: BooleanChange,\n showState: BooleanChange\n}\n\nfunction saveEE() {\n\n if (!window['asd']) {\n\n window['asd'] = JSON.parse(atob('ewogICJhdXRvcmUiOiAiU2ltb25lIEFudG9uaW5pIiwKICAiZXRhIjogImRpcGVuZGUgZGFsbCdhbm5vIGNvcnJlbnRlIiwKICAiaG9iYnkiOiBbIlBlc2NhIiwgIlNub3dib2FyZCIsICJHYW1pbmciLCAiQ3Jvc3NmaXQiXSwKICAicHJlZmVyaXRpIjogewogICAgInBlc2NpIjogWyJDYXJwYSIsICJCbGFjayBCYXNzIl0sCiAgICAidmlkZW9naW9jaGkiOiBbIkZGVklJIiwgIkZGVklJUiIsICJEZWF0aCBTdHJhbmRpbmciLCAiU2VraXJvIiwgIlJlZCBEZWFkIFJlZGVtcHRpb24gMiIsICJUTE9VIiwgIlRMT1UyIl0sCiAgICAibGlicmkiOiBbCiAgICAgIHsiYXV0b3JlIjogIkdhYnJpZWwgR2FyY2lhIE1hcnF1ZXoiLCAidGl0b2xvIjogIkNlbnQnYW5uaSBkaSBzb2xpdHVkaW5lIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiQ2FzdGVsbGkgZGkgcmFiYmlhIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiU2V0YSJ9LAogICAgICB7ImF1dG9yZSI6ICJZYXN1bmFyaSBLYXdhYmF0YSIsICJ0aXRvbG8iOiAiTGEgY2FzYSBkZWxsZSBiZWxsZSBhZGRvcm1lbnRhdGUifQogICAgXQogIH0sCiAgImltcHJlc2VDZWxlYnJpIjogWyJTb3Bwb3J0byBtaWEgbWFkcmUgZGEgcXVhc2kgNDAgYW5uaSJdLAogICJwcm92b0Ftb3JlUGVyIjogWyJJbCBtaW8gY2FuZSIsICJJbCBtaW8gZ2F0dG8iLCAiSWwgdGlyYW1pc3UiXQp9'));\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY, StringChange} from \"./base.component\";\nimport {uuidv4} from \"../../utils/common.operators\";\n\nexport interface BasicUxElementComponentChanges extends BaseComponentChanges {\n\n id: StringChange,\n class: StringChange\n}\n\n@Component({\n selector: 'inail-basic-ux-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BasicUxElementComponent extends BaseComponent implements OnChanges, OnInit {\n\n @Input()\n id: string = uuidv4();\n\n @Input()\n class: string;\n\n constructor(private uxElementCdr: ChangeDetectorRef) {\n\n super(uxElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.id == undefined) {\n\n this.id = uuidv4();\n }\n\n this.logPrefix = `${this.logPrefix}[${this.id}]`;\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"./basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, NumberChange} from \"./base.component\";\n\nexport type ColumnDimension = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ResponsiveElementComponentChanges extends BasicUxElementComponentChanges {\n\n xs: NumberChange,\n sm: NumberChange,\n md: NumberChange,\n lg: NumberChange\n}\n\n@Component({\n selector: 'inail-responsive-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ResponsiveElementComponent extends BasicUxElementComponent implements OnChanges, OnInit {\n\n @Input()\n lg: ColumnDimension;\n @Input()\n md: ColumnDimension;\n @Input()\n sm: ColumnDimension;\n @Input()\n xs: ColumnDimension = 12;\n\n constructor(private responsiveElementCdr: ChangeDetectorRef) {\n super(responsiveElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit()\n }\n\n private xsClass = (): string => this.xs != undefined ? `col-xs-${this.xs} ` : '';\n private smClass = (): string => this.sm != undefined ? `col-sm-${this.sm} ` : '';\n private mdClass = (): string => this.md != undefined ? `col-md-${this.md} ` : '';\n private lgClass = (): string => this.lg != undefined ? `col-lg-${this.lg} ` : '';\n\n getResponsiveClass = (): string => `${this.xsClass()}${this.smClass()}${this.mdClass()}${this.lgClass()}`.trim();\n}\n","import {Component, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'debug-pre',\n templateUrl: './pre.component.html',\n styleUrls: ['./pre.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PreComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'state-propertie',\n templateUrl: './state-propertie.component.html',\n styleUrls: ['./state-propertie.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StatePropertieComponent implements OnInit {\n\n @Input()\n label: string;\n\n @Input()\n propertie: any;\n\n @Input()\n hideIfNull: boolean;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {FormElementComponent} from \"../../core/form/form-element.component\";\n\n@Component({\n selector: 'inail-form-element-state-properties',\n templateUrl: './form-element-state-propertie.component.html',\n styleUrls: ['./form-element-state-propertie.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormElementStatePropertieComponent implements OnInit {\n\n @Input()\n formElement: FormElementComponent;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n}\n","export const DEFAULT_ASSETS_URL = '/static';\nexport const DEFAULT_ASSETS_INTRA_URL = '/static_intra';\nexport const DEFAULT_ASSETS_CDN_URL = '/assets/inail/static';\nexport const API_DEFAULT_URL = '/api';\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {DEFAULT_ASSETS_CDN_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {isAbsolute, isBlankOrNull, isNotBlankOrNull} from \"../../../../utils/common.operators\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/footer.html';\n\n/**\n * Il componente renderizza il footer.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-footer',\n templateUrl: './cs.internet.footer.html',\n styleUrls: ['./footer.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html del footer.\n * Se non specificato il footer viene recuperato dall'indirizzo relativo /cs/internet/footer.html\n * al dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per il recupero dell'html\n * e per customizzare gli href nell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene utilizzato se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n @Input()\n cdnEndpoint?: string = '';\n\n /**\n * Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto.\n * Se non specificato le risorse statiche vengono cercate sotto il path relativo /static\n * del dominio (se passato) specificato tramite l'input cdnEndpoint.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n @Input()\n assetsUrl: string = DEFAULT_ASSETS_URL;\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n\n super(cdr);\n this.logPrefix = '[inail-footer]';\n this.detach();\n }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug(`ngOnChanges:`);\n this.emitDebug(changes);\n\n // Il footer viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug(`Inizializzazione Footer`);\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (isBlankOrNull(this.domainUrl)) {\n\n this.domainUrl = '';\n }\n\n if (isBlankOrNull(this.cdnEndpoint) || isAbsolute(this.assetsUrl)) {\n\n this.cdnEndpoint = '';\n }\n\n if (isBlankOrNull(this.assetsUrl)) {\n\n if(isNotBlankOrNull(this.cdnEndpoint)) {\n\n this.assetsUrl = DEFAULT_ASSETS_CDN_URL;\n }\n else {\n\n this.assetsUrl = DEFAULT_ASSETS_URL;\n }\n }\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug(`Inizializzazione Footer, Url footer non specificato`);\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n recupera() {\n this.emitDebug(`Recupero Footer da: ${this.url}`);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Footer inizializzato!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (footer: string) => {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(footer);\n this.emitDebug(`Footer recuperato!`);\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero del Footer\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Footer di default\");\n }\n );\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-navigazione-interna',\n templateUrl: './navigazione-interna.component.html',\n styleUrls: ['./navigazione-interna.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneInternaComponent extends BaseComponent implements OnInit {\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.detach();\n }\n\n ngOnInit() {\n }\n\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/header.html';\nconst DEFAULT_LOGOUT_URL = '/cs/LogoutUser?excludedCookies=SMSESSION';\n\n/**\n * Il componente renderizza la navigazione principale.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-navigazione-principale',\n templateUrl: './cs.internet.header.html',\n styleUrls: ['./navigazione-principale.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazionePrincipaleComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti di default e\n * gli href dell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n * Non influisce sull'input logoutUrl se esplicitamente specificato.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n @Input()\n logoutUrl: string;\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n super(cdr);\n this.logPrefix = '[inail-navigazione-principale]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // La navigazione principale viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug('Inizializzazione Navigazione principale');\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (!this.logoutUrl) {\n\n this.logoutUrl = this.domainUrl + DEFAULT_LOGOUT_URL;\n }\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug('Inizializzazione Navigazione principale, Url Navigazione principale non specificato');\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n\n if(this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n recupera() {\n this.emitDebug(\"Recupero Navigazione principale da: \" + this.url);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Navigazione principale inizializzata!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (menu: string) => {\n\n menu = menu.replace('#logout', this.logoutUrl);\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(menu);\n this.emitDebug('Navigazione principale recuperata!');\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero della Navigazione principale\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Navigazione principale di default\");\n }\n );\n }\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/headersecondariointranet.html';\n\n/**\n * Il componente renderizza il menu intranet.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-menu-intranet',\n templateUrl: './cs.internet.headersecondariointranet.html',\n styleUrls: ['./menu-intranet.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuIntranetComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n MAX_SM: number = 755;\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per il recupero automatico dell'html dell'header secondario\n * e per la customizzazione degli href nell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n menuSecondarioElencoAperto: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n super(cdr);\n this.logPrefix = '[inail-menu-intranet]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // Il menu intranet viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug('Inizializzazione Menu intranet');\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug('Inizializzazione Menu intranet, Url Menu intranet non specificato');\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n apriOnClick() {\n\n this.menuSecondarioElencoAperto = !this.menuSecondarioElencoAperto;\n this.cdr.detectChanges();\n }\n\n recupera() {\n this.emitDebug(\"Recupero menu intranet da: \" + this.url);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Menu intranet inizializzato!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (menu: string) => {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(menu);\n this.emitDebug('Menu intranet recuperato!');\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero del Menu intranet\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Menu intranet di default\");\n }\n );\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {finalize, first, tap} from \"rxjs/operators\";\nimport {API_DEFAULT_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isBlankOrNull, startWithSlash} from \"../../../../utils/common.operators\";\n\nexport class NavigazioneUtenteConfigurations {\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti automatici\n * (recupero dei frammento html menu intranet e recupero info dipendente da API Gateway)\n * e per customizzare gli href nell'html di default del menu intranet nel caso non venga passato\n * uno specifico html per esso o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string = '';\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene utilizzato se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n cdnEndpoint?: string = '';\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet)\n * del dominio (se passato) specificato tramite l'input cdnEndpoint.\n * Se invece viene specificato il dominio della CDN tramite la proprieta' cdnEndpoint,\n * l'indirizzo di default utilizzato sara' /assets/inail/static, relativo alla CDN INAIL.\n * Nel caso di questo componente serve esclusivamente per il recupero dell'immagine utilizzata per l'utente anonimo.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n assetsUrl?: string;\n\n /**\n * Se true visualizza il menu intranet.\n */\n intranet?: boolean;\n\n /**\n * Se true visualizza il menu cerca utente.\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true visulizza le notifiche utente.\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gataway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati del'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n\nconst DATI_DIPENDENTE_URL = '/au/dipendente/estrai-dati-dipendente?matricola=';\nconst FOTO_DIPENDENTE_URL = '/au/dipendente/estrai-foto-dipendente?matricola=';\nconst CHECKSESSION_URL = '/checksession';\nconst PROFILO_UTENTE_DEFAULT_URL = '/cs/intranet/home/consultazione/gestione-profilo.html';\nconst CERCA_PERSONE_DEFAULT_URL = '/csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html';\nconst PATH_FOTO_ANONIMO = '/img/anonimo.jpg ';\n\n/**\n * Il componente renderizza la navigazione utente,\n * cioe' l'elemento html con id='menusecondario' secondo la struttura definita da INAIL.\n * L'elemento visualizza le informazioni inerenti l'utente loggato ed opzionalmente il menu intranet,\n * il form per la ricerca degli utenti, e le notifiche utente.\n */\n@Component({\n selector: 'inail-navigazione-utente',\n templateUrl: './navigazione-utente.component.html',\n styleUrls: ['./navigazione-utente.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneUtenteComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n _immagineProfilo: SafeScript;\n testoRicercaUtente: string;\n\n @Input()\n config: NavigazioneUtenteConfigurations = {};\n\n @Input()\n infoDipendente: UserInfo;\n\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n menuCercaUtenteAperto: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n\n super(cdr);\n this.logPrefix = '[inail-navigazione-utente]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.config?.currentValue && changes?.config?.isFirstChange() === false) {\n\n this.init();\n }\n\n // if(changes?.infoDipendente?.currentValue && changes?.infoDipendente?.isFirstChange() === false) {\n //\n // this.cdr.detectChanges();\n // }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.init();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n async init() {\n\n if (this.config.assetsUrl == undefined) {\n\n this.config.assetsUrl = this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL;\n }\n\n if (!isAbsolute(this.config.assetsUrl) && startWithSlash(this.config.assetsUrl) && this.config.cdnEndpoint != undefined) {\n\n this.config.assetsUrl = this.config.cdnEndpoint + this.config.assetsUrl;\n }\n\n if (!this.config.apiGatewayUrl) {\n\n this.config.apiGatewayUrl = this.config.domainUrl + API_DEFAULT_URL;\n }\n\n if (!this.config.profiloUtenteUrl) {\n\n this.config.profiloUtenteUrl = PROFILO_UTENTE_DEFAULT_URL;\n }\n\n if (!this.infoDipendente) {\n\n this.infoDipendente = {};\n\n // Se le informazioni dell'utente connesso\n // non sono state date in input\n // allora vengono recuperate automaticamente in remoto\n if (this.config.recuperoAutomaticoDatiUtente) {\n\n let datiDipendente: DatiDipendente = await this.recuperaDatiDipendente();\n\n if (datiDipendente) {\n\n this.datiDipendente.emit(datiDipendente);\n this.infoDipendente.nome = datiDipendente.nome;\n this.infoDipendente.cognome = datiDipendente.cognome;\n }\n\n this.infoDipendente.foto = await this.recuperaFotoDipendente();\n }\n }\n\n this._immagineProfilo =\n\n this.infoDipendente.foto\n\n ? this.sanitizer.bypassSecurityTrustUrl(`data:image/png;base64,${this.infoDipendente.foto}`)\n : this.urlFotoUtenteAnonimo;\n\n this.cdr.detectChanges();\n }\n\n get immagineProfilo() {\n\n return this._immagineProfilo || this.urlFotoUtenteAnonimo;\n }\n\n get urlFotoUtenteAnonimo(): string {\n\n return this.config ? `${this.config?.assetsUrl}${PATH_FOTO_ANONIMO}` : undefined\n }\n\n async getMatricolaDipendente(): Promise<string> {\n\n if (isBlankOrNull(this.infoDipendente.matricola)) {\n\n this.infoDipendente.matricola = await this.recuperaMatricolaDipendente();\n }\n\n return this.infoDipendente.matricola;\n }\n\n async recuperaMatricolaDipendente(): Promise<string> {\n\n let matricola: string;\n\n try {\n\n let url: string = this.config.apiGatewayUrl + CHECKSESSION_URL;\n\n this.emitDebug(`Recupero matricola dipendente per Navigazione utente da ${url}`);\n\n let response: ChecksessionResponse = await this.get(url).toPromise();\n\n this.checksession.emit(response);\n\n if (response?.result === true) {\n\n matricola = response.User;\n } else if (response?.[\"http-status\"] === 403) {\n\n this.emitWarn('Utente non autenticato!')\n } else {\n this.emitError(\"Errore nel recupero della matricola dipendente\");\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero della matricola dipendente\");\n this.emitError(e);\n }\n\n return matricola;\n }\n\n async recuperaDatiDipendente(): Promise<DatiDipendente> {\n\n let matricola = await this.getMatricolaDipendente();\n\n let datiDipendente: DatiDipendente;\n\n if (matricola != undefined) {\n\n let url = this.config.apiGatewayUrl + DATI_DIPENDENTE_URL + matricola;\n\n try {\n this.emitDebug(`Recupero dati dipendente per Navigazione utente da ${url}`);\n\n let response: DatiDipendenteResponse = await this.get(url).toPromise();\n\n if (!response || !response.dipendente || response.dipendente.length == 0 || !response.dipendente[0]) {\n\n this.emitError(\"Dipendente non trovato\");\n\n } else {\n\n datiDipendente = response.dipendente[0];\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero dei dati dipendente\");\n this.emitError(e);\n }\n }\n\n return datiDipendente;\n }\n\n async recuperaFotoDipendente(): Promise<string> {\n\n let matricola = await this.getMatricolaDipendente();\n\n let fotoDipendente: string;\n\n if (matricola != undefined) {\n\n let url = this.config.apiGatewayUrl + FOTO_DIPENDENTE_URL + matricola;\n\n try {\n this.emitDebug(\"Recupero foto dipendente per Navigazione utente da \" + url);\n\n let response: FotoDipendenteResponse = await this.get(url).toPromise();\n\n if (!response || !response.fotoDipendente || response.fotoDipendente.length == 0 || !response.fotoDipendente[0]) {\n\n this.emitError(\"Foto dipendente non trovata\");\n\n } else {\n\n fotoDipendente = response.fotoDipendente[0].foto;\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero della foto dipendente\");\n this.emitError(e);\n }\n }\n\n return fotoDipendente;\n }\n\n get(url: string) {\n\n let headers = new HttpHeaders().set('client_id', this.config.clientId);\n\n return this.http.get<any>(url, {headers: headers, withCredentials: true})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.cdr.detectChanges();\n }),\n tap(response => {\n this.emitDebug(\"Risposta richiesta get:\");\n this.emitDebug(response);\n })\n )\n }\n\n onCercaUtenteSubmit() {\n\n let url = this.config.cercaPersonePageUrl || this.config.domainUrl + CERCA_PERSONE_DEFAULT_URL;\n location.href = `${url}?campo_unico_menu=${this.testoRicercaUtente}&_authkey_=null&cerca=cercaHeader`;\n }\n\n apriOnClick() {\n\n this.menuCercaUtenteAperto = !this.menuCercaUtenteAperto\n this.cdr.detectChanges();\n }\n}\n\ninterface FotoDipendenteResponse {\n\n fotoDipendente: FotoDipendente[];\n}\n\ninterface FotoDipendente {\n\n foto: string;\n}\n\nexport interface ChecksessionResponse {\n result: boolean,\n 'http-status': number,\n message: string,\n sid?: string,\n 'XSRF-TOKEN'?: string,\n redirect?: string,\n User?: string\n}\n\ninterface DatiDipendenteResponse {\n\n dipendente: DatiDipendente[];\n}\n\nexport interface DatiDipendente {\n\n \"contratto\": string,\n \"mail\": string,\n \"cognome\": string,\n \"flagVisibilitaCellulare\": string,\n \"qualifica\": string,\n \"codiceUnita\": string,\n \"nome\": string,\n \"codiceFiscale\": string,\n \"pec\": string,\n \"numeroCellularePrivato\": string,\n \"descrizioneUnita\": string,\n \"utenteHr\": string,\n \"netFax\": string,\n \"numeroCellulare\": string,\n \"matricola\": string,\n \"livello\": string,\n \"numeroBreve\": string,\n \"numeroTelefono\": string\n}\n\nexport interface UserInfo {\n\n matricola?: string,\n nome?: string,\n cognome?: string,\n\n /**\n * Immagine della foto del dipendente codificata in base64\n */\n foto?: string\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {DEFAULT_ASSETS_CDN_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {ChecksessionResponse, DatiDipendente, NavigazioneUtenteConfigurations, UserInfo} from \"../navigazione-utente/navigazione-utente.component\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isBlankOrNull, isNotBlankOrNull, startWithSlash} from \"../../../../utils/common.operators\";\n\n/**\n * Il componente renderizza tutto l'header della pagina.\n *\n * L'header di pagina e' composto da:\n * Logo INAIL\n * Navigazione interna\n * Navigazione principale (Barra blu con pulsante esci)\n * Menu' di navigazione utente loggato (barra verde con foto utente e menu intranet).\n *\n * E' possibile passare al componente degli specifici frammenti html da visualizzare\n * per la navigazione principale e per il menu intranet\n * oppure indicare al componente i rispettivi url da cui recuperare i frammenti html.\n *\n * Il componente visualizzera' gli html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n // E' stato scelto di utilizzare come selettore il nome del tag\n // per consentire alle regole css definite dall'INAIL di\n // matchare con gli elementi html,\n // cosa che non avverrebbe se venisse utilizzato un tag custom\n // frapposto tra il tag header e quello contenitore.\n selector: 'header[id=\"inail-header\"]',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n configurazioniNavigazioneUtente: NavigazioneUtenteConfigurations;\n\n @Input()\n config: HeaderConfigurations;\n\n @Input()\n infoDipendente: UserInfo;\n\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n @ViewChild('logoInail') logoInail;\n\n inizializzazioneCompletata: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-header]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug('ngOnChanges');\n this.emitDebug(changes);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n this.logoInail.nativeElement.focus();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.emitDebug('config');\n this.emitDebug(this.config);\n\n if (!this.config) {\n\n this.config = {clientId: ''};\n }\n\n if (isBlankOrNull(this.config.domainUrl)) {\n\n this.config.domainUrl = '';\n }\n\n if (isBlankOrNull(this.config.cdnEndpoint)) {\n\n this.config.cdnEndpoint = '';\n }\n\n if (isBlankOrNull(this.config.assetsUrl)) {\n\n if(isNotBlankOrNull(this.config.cdnEndpoint)) {\n\n this.config.assetsUrl = DEFAULT_ASSETS_CDN_URL;\n }\n else {\n\n this.config.assetsUrl = this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL;\n }\n }\n\n if (!isAbsolute(this.config.assetsUrl) && startWithSlash(this.config.assetsUrl) && this.config.cdnEndpoint != undefined) {\n\n this.config.assetsUrl = this.config.cdnEndpoint + this.config.assetsUrl;\n }\n\n this.configurazioniNavigazioneUtente = {\n apiGatewayUrl: this.config.apiGatewayUrl,\n clientId: this.config.clientId,\n domainUrl: this.config.domainUrl,\n assetsUrl: this.config.assetsUrl,\n cdnEndpoint: this.config.cdnEndpoint,\n intranet: this.config.intranet,\n menuIntranetUrl: this.config.menuIntranetUrl,\n menuIntranetHtml: this.config.menuIntranetHtml,\n profiloUtenteUrl: this.config.profiloUtenteUrl,\n visualizzaNotificheUtente: this.config.visualizzaNotificheUtente,\n visualizzaMenuCercaUtente: this.config.visualizzaMenuCercaUtente,\n cercaPersonePageUrl: this.config.cercaPersonePageUrl,\n recuperoAutomaticoDatiUtente: this.config.recuperoAutomaticoDatiUtente\n }\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n\n this.inizializzazioneCompletata = true;\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\nexport class HeaderConfigurations {\n\n /**\n * Se true visualizza il menu intranet\n */\n intranet?: boolean;\n\n /**\n * Se true visulizza il menu cerca utente\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true visualizza le notifiche utente\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n navigazionePrincipaleUrl?: string;\n\n /**\n * Html della navigazione principale da visualizzare\n */\n navigazionePrincipaleHtml?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n logoutUrl?: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti di default e gli href\n * dgli html di default nel caso non vengano passati\n * degli specifici html o non sia stato possibile recuperare quelli in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string;\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n */\n cdnEndpoint?: string;\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet)\n * del dominio (se passato) specificato tramite la proprieta' cdnEndpoint.\n * Se invece viene specificato il dominio della CDN tramite la proprieta' cdnEndpoint,\n * l'indirizzo di default utilizzato sara' /assets/inail/static, relativo alla CDN INAIL.\n */\n assetsUrl?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gateway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: any;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati del'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class LoaderComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n show: boolean;\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.logPrefix = '[inail-loader]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {ChangeDetectorRef, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent} from \"../../base.component\";\n\n// Set the effect type\nconst effect = 'slide';\n\n// Set the options for the effect type chosen\nconst options = 'direction: left';\n\n// Set the duration (default: 400 milliseconds)\nconst duration = 500;\n\n/**\n * @deprecated\n * Modo utilizzato nella versione 1 della libreria\n */\nconst toggleMenuNavigazioneSecondaria = () => {\n\n // Questo trick serve per verificare che non sia gia in corso\n // un effetto di sliding sul menu\n setTimeout(() => {\n\n // TODO\n // @ts-ignore\n if ($('.ui-effects-wrapper').length == 0) {\n\n // @ts-ignore\n jQuery('.slider-menu').toggle(effect, options, duration);\n }\n })\n};\n\n@Component({\n selector: 'inail-trigger-slider-menu-button',\n templateUrl: './trigger-slider-menu-button.component.html',\n styleUrls: ['./trigger-slider-menu-button.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TriggerSliderMenuButtonComponent extends BaseComponent implements OnInit {\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.detach();\n }\n\n ngOnInit() {\n }\n\n open() {\n // toggleMenuNavigazioneSecondaria();\n }\n}\n","import {ExternalResource, ExternalScript} from \"./static-resources\";\n\nconst REL_STYLESHEET = 'stylesheet';\nconst REL_ICON = 'icon';\nconst MEDIA_SCREEN = 'screen';\nconst MEDIA_PRINT = 'print';\nconst TYPE_CSS = 'text/css';\nconst TYPE_IMAGE_ICON = 'image/x-icon';\nconst TYPE_JAVASCRIPT = 'text/javascript';\n\nconst INAIL_STATIC_PATH = '/assets/inail/static';\nconst INAIL_STATIC_INTRA_PATH = '/assets/inail/static_intra';\nconst INAIL_STATIC_WEBKIT_PATH = '/assets/inail/static-webkit';\n\nexport const webkitExternalResources: ExternalResource[] = [\n\n // Favicon\n // {href: `/img/favicon.ico`, rel: REL_ICON, type: TYPE_IMAGE_ICON, assetUrl: INAIL_STATIC_PATH},\n\n // CSS Media screen\n {href: `/css/bootstrap.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/foglia.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/custom.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/form.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/font-awesome.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: `${INAIL_STATIC_PATH}/font-awesome-4.3.0`},\n {href: `/js/datepicker/bootstrap-datepicker3.standalone.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/home_sezione.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/servizi.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/jquery-ui.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n\n // CSS Media print\n {href: `/css/print.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/print_intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_INTRA_PATH},\n\n // Questo CSS e' del webkit. Da specifiche non andrebbe importato,\n // risulta pero' necessario per la corretta visualizzazione.\n {href: `/css/custom-webkit.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH},\n\n // CSS Webkit v3.1.0\n {href: `/css/slick/slick.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH}\n]\n\n// Deprecato !!!\n// export const webkitExternalScripts: ExternalScript[] = [\n//\n// // JS Head Intranet\n// {src: `/js/modernizr.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/jquery-1.11.1.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// // {src: `/js/jquery-ui.min.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n// {src: `/js/jquery-ui.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/bootstrap.min.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n//\n// // Inizializzazione date picker\n// // {src: `/js/datepicker/bootstrap-datepicker.min.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n// {src: `/js/datepicker/bootstrap-datepicker.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/datepicker/bootstrap-datepicker.it.min.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n//\n// // SCRIPT per SLIDER MENU\n// // {src: `/vendor/jquery-ui-1.11.4.custom/jquery-ui.min.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/main.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n//\n// // Altro // TODO inserire in cdn\n// {src: `/js/print.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/spid-sp-access-button.min.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/jquery.rwdImageMaps.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/custom-webkit.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/combobox.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/slick.js`, type: TYPE_JAVASCRIPT}\n// ];\n\n","import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {isFunction} from 'rxjs/internal-compatibility';\nimport {filter} from \"rxjs/operators\";\nimport {clone, uuidv4} from \"../../../../utils/common.operators\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\nconst COLLAPSING_DURATION = 350;\nconst AUTO_SHOW = 'auto'\n\nconst FOCUSABLE_ITEMS_SELECTOR = 'ul.inail-menu > li > a:not([tabindex=\"-1\"])';\n\nexport declare type CheckFn = () => boolean;\nexport declare type GetStringFn = () => string;\nexport declare type MenuItemShowMode = 'auto';\n\ntype CollapseMode = 'show' | 'hide' | 'toggle';\n\nexport class MenuItem {\n\n id?: string;\n label: string | GetStringFn;\n link?: string | GetStringFn;\n linkRegex?: string | GetStringFn;\n queryParams?: {\n [k: string]: any;\n }\n callback?: Function;\n activeLinks?: string[];\n show?: boolean | CheckFn | MenuItemShowMode;\n collapsible?: boolean;\n collapsed?: boolean;\n subItems?: MenuItem[];\n parent?: MenuItem;\n}\n\n/**\n * Deep copy dell'oggetto MenuItem\n *\n * @param item\n */\nconst cloneItem = (item: MenuItem): MenuItem => {\n\n let itemClone: MenuItem;\n\n if(item) {\n\n itemClone = clone(item);\n\n itemClone.label = item.label;\n itemClone.link = item.link;\n itemClone.linkRegex = item.linkRegex;\n itemClone.callback = item.callback;\n itemClone.show = item.show;\n itemClone.parent = cloneItem(item.parent);\n itemClone.subItems = cloneItems(item.subItems);\n }\n\n return itemClone;\n}\n\n/**\n * Deep copy dell'oggetto MenuItem[]\n *\n * @param items\n */\nconst cloneItems = (items: MenuItem[]): MenuItem[] => {\n\n let itemsClone: MenuItem[];\n\n if(items) {\n\n itemsClone = items.map(item => cloneItem(item));\n }\n\n return itemsClone;\n}\n\n@Component({\n selector: 'inail-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n /**\n * Elemento parent del menu.\n * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n */\n @Input()\n parent: MenuItem;\n\n /**\n * Elemento parent del menu.\n * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n */\n @Input()\n innerMenu: boolean = false;\n\n /**\n * id dell'elemento che si vuole attivare.\n * Se specificato fa diventare bold la voce di menu associata\n */\n @Input()\n activeItem: string;\n\n /**\n * Emette l'elemento del menu\n * che corrisponde all'url corrente.\n */\n @Input()\n emitCurrent: Observable<void>;\n\n /**\n * Collassa il menu\n * Se passato in input un id collassa lo specifico elemento.\n */\n @Input()\n collapse: Observable<string | void>;\n\n /**\n * Espande le voci di menu di primo livello.\n * Se specificato un id espande il ramo del menu\n * che porta all'elemento con l'id specificato.\n */\n @Input()\n show: Observable<string | void>;\n\n /**\n * Espande tutte le voci del menu\n * comprese quelle dei livelli annidati\n */\n @Input()\n showAll: Observable<void>; // todo testare\n\n /**\n * Effettua il toggle dell'elemento specificato tramite id\n */\n @Input()\n toggle: Observable<string>; // todo testare\n\n /**\n * Elementi del menu\n */\n @Input()\n items: MenuItem[];\n originalItems: MenuItem[];\n\n /**\n *\n */\n @Input()\n reinit: Observable<void | MenuItem[]>;\n\n /**\n * Se true disabilita la sovrascrittura della proprieta\n * link negli elementi del menu\n * quando la proprieta linkRegex matcha\n * con l'url corrente\n */\n disableLinkOverwriting: boolean = false;\n\n /**\n * Se true indica che le voci del menu sono collassabili.\n * Questa impostazione viene sovrascritta se specificato diversamente\n * negli elementi del menu\n */\n @Input()\n collapsible: boolean = false;\n\n /**\n * Indica lo stato iniziale del menu, se colassato o espanso.\n * Questa impostazione viene sovrascritta se specificato diversamente\n * negli elementi del menu\n */\n @Input()\n collapsed: boolean;\n\n /**\n * Se true abilita l'effetto fisarmonica\n * sulle voci di menu espandibili.\n */\n @Input()\n collapseOther: boolean = false;\n\n /**\n * Se true espande automaticamente il percorso\n * verso un elemento\n * quando questo si riferisce all'url corrente\n */\n @Input()\n expandAutomatically: boolean = true;\n\n /**\n * Emette la voce di menu selezionata.\n */\n @Output()\n select: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n /**\n * Emette la voce di menu che corrisponde\n * con l'url corrente\n * dopo un evento di routing\n */\n @Output()\n currentItem: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n @ViewChild('menu')\n menu: ElementRef<HTMLElement>;\n\n // @ViewChildren(MenuComponent)\n // sottoMenu: QueryList<MenuComponent>;\n\n inizializzazioneCompletata: boolean = false;\n mostraItem: EventEmitter<string> = new EventEmitter<string>();\n\n // Servono per l'animazione di apertura/chiusura fluida\n menuHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n emitMenuHeight = () => {\n\n if (this.isCollapsible()) {\n\n let scrollHeight = this.menu?.nativeElement?.scrollHeight;\n let nextHeight = this.isCollapsed() ? 0 : scrollHeight;\n\n if (nextHeight > 0) {\n\n this.menuHeight$.next(nextHeight);\n\n } else {\n\n // Imposto l'height effettivo\n // per poi impostarlo subito dopo a 0\n // in modo da far funzionare l'animazione.\n // Se non viene impostato un valore iniziale\n // l'animazione CSS non funziona.\n this.menuHeight$.next(scrollHeight);\n setTimeout(() => this.menuHeight$.next(0), 15);\n }\n\n // Rimuovo height.\n // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n setTimeout(() => this.menuHeight$.next(undefined), COLLAPSING_DURATION);\n }\n };\n\n constructor(public router: Router, private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-menu]';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // Items\n if (changes?.items?.currentValue) {\n\n if(!this.innerMenu) {\n\n this.items = cloneItems(changes?.items?.currentValue);\n this.originalItems = cloneItems(changes?.items?.currentValue);\n }\n\n this.inizializzaItems(this.items);\n this.emitCurrentItem();\n }\n\n // Emit Current\n if (changes?.emitCurrent?.currentValue) {\n\n this.push(changes.emitCurrent.currentValue.subscribe(() => this.emitCurrentItem()));\n }\n\n // Collapsed\n if (changes?.collapsed && !changes?.collapsed.isFirstChange()) {\n\n this.emitMenuHeight();\n }\n\n // Collassa Elemento o Livello\n if (changes.collapse && changes.collapse.currentValue) {\n\n this.push(\n changes.collapse.currentValue.subscribe((id: string) => {\n\n id == undefined ? this.collassaMenu() : this.collassaItem(this.findItem(id, this.items));\n })\n );\n }\n\n // Espandi Elemento o Livello\n if (changes?.show?.currentValue) {\n\n this.push(\n changes.show.currentValue.subscribe((id: string) => {\n\n id == undefined ? this.espandiMenu() : this.espandiPercorso(id);\n })\n );\n }\n\n // Toggla Elemento\n if (changes?.toggle?.currentValue) {\n\n this.push(changes.toggle.currentValue.subscribe((id: string) => this.toggleItem(this.findItem(id, this.items))));\n }\n\n // // todo\n // // Espande tutti i livelli\n // if (changes.showAll && changes.showAll.currentValue) {\n //\n // this.push(changes.showAll.currentValue.subscribe(() => this.espandiTutti()));\n // }\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n // Impostazioni di default\n\n if (this.collapsible === false) {\n\n this.collapsed = false;\n }\n\n if (this.collapsed == undefined) {\n\n this.collapsed = (this.collapsible === true);\n }\n\n // this.inizializzaItems(this.items);\n this.inizializzazioneCompletata = true;\n this.emitCurrentItem();\n\n // Ricerca ed emissione della voce di menu\n // corrispondente all'url corrente\n // al NavigationEnd\n this.push(\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.impostaUrlEffettivi(this.items);\n this.emitCurrentItem();\n })\n );\n\n if (this.reinit) {\n\n this.push(\n this.reinit.subscribe((items: MenuItem[]) => {\n\n this.emitDebug(`Reinit!`);\n\n this.items = cloneItems(items || this.originalItems);\n\n if(items) {\n\n this.originalItems = cloneItems(items);\n }\n\n this.inizializzaItems(this.items)\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n // -------------------------- Operatori controllo stato menu --------------------------\n\n isCollapsible = (): boolean => this.innerMenu && this.collapsible;\n isCollapsed = (): boolean => this.isCollapsible() && this.collapsed;\n\n // -------------------------- Operatori controllo stato item --------------------------\n\n isItemCollapsible = (item: MenuItem) => item.collapsible && this.hasSubItems(item);\n isItemCollapsed = (item: MenuItem) => item?.collapsible && item?.collapsed;\n hasSubItems = (item: MenuItem): boolean => item?.subItems?.length > 0;\n isActive = (item: MenuItem) => this.activeItem ? (item.id == this.activeItem) : this.isCurrentPageItem(item);\n\n /**\n * Verifica che l'elemento in input\n * sia associato all'url corrente\n *\n * @param item\n */\n isCurrentPageItem = (item: MenuItem): boolean =>\n this.isCurrentUrl(this.getItemLink(item))\n || this.isCurrentUrl(this.getItemLinkRegex(item))\n || (item.activeLinks != undefined\n && item.activeLinks.some(this.isCurrentUrl));\n\n /**\n * Restituisce true se l'elemento\n * deve essere visualizzato\n *\n * @param item\n */\n showItem = (item: MenuItem): boolean => {\n\n return item.show === true\n || item.show == undefined\n || (isFunction(item.show) && (item.show as CheckFn)() === true)\n || this.isAutoShowItem(item);\n }\n\n /**\n * Restituisce true se l'elemento\n * deve essere visualizzato in automatico\n * quando corrisponde all'url corrente\n * o se uno dei suoi nodi figli\n * e' un elemento che deve essere visualizzato in automatico.\n *\n * @param item\n */\n isAutoShowItem = (item: MenuItem): boolean =>\n\n item.show === AUTO_SHOW\n && (this.isCurrentPageItem(item)\n || (item.subItems && item.subItems.some(this.isAutoShowItem)));\n\n // -------------------------- Operatori recupero info item --------------------------\n\n getItemLink = (item: MenuItem): string => isFunction(item.link) ? (item.link as GetStringFn)() : item.link;\n getItemLinkRegex = (item: MenuItem): string => isFunction(item.linkRegex) ? (item.linkRegex as GetStringFn)() : item.linkRegex;\n getItemLabel = (item: MenuItem): string => isFunction(item.label) ? (item.label as GetStringFn)() : item.label;\n\n // -------------------------- Operatori di utilita --------------------------\n\n /**\n * Verifica che l'url dato in input\n * sia quello corrente\n *\n * @param url\n */\n isCurrentUrl = (url: string): boolean =>\n\n url != undefined\n && this.router.url\n .split('?')[0]\n .match(new RegExp('^'.concat(url).concat('$'), 'i')) != null;\n\n // -------------------------- Metodi --------------------------\n\n /**\n * Inizializza gli elementi del menu\n *\n * @private\n */\n private inizializzaItems(items: MenuItem[]) {\n\n if (items?.length) {\n\n // Impostazioni di default per gli elementi\n items.forEach((item: MenuItem) => {\n\n if (item.id == undefined) {\n\n item.id = uuidv4();\n }\n\n if (item.show == undefined) {\n\n item.show = true;\n }\n\n if (item.collapsible == undefined) {\n\n item.collapsible = this.collapsible;\n }\n\n if (item.collapsible == false) {\n\n item.collapsed = false;\n }\n\n if (item.collapsed == undefined) {\n\n // item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsible;\n item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsed;\n }\n });\n\n this.setParent(items, this.parent);\n this.impostaUrlEffettivi(items);\n }\n }\n\n /**\n * Sovrascrive la proprieta link degli elementi del menu\n * se la proprieta linkRegex matcha con l'url corrente.\n */\n private impostaUrlEffettivi(items: MenuItem[]) {\n\n if (items?.length) {\n\n items.forEach(this.impostaUrlEffettivo);\n }\n }\n\n /**\n * Sovrascrive la proprieta link dell'elemento del menu\n * se la proprieta linkRegex matcha con l'url corrente.\n */\n private impostaUrlEffettivo = (item: MenuItem) => {\n\n if (!this.disableLinkOverwriting && item && this.isCurrentUrl(this.getItemLinkRegex(item))) {\n\n item.link = this.router.url;\n }\n }\n\n /**\n * Emette l'elemento\n * associato all'url corrente\n */\n private emitCurrentItem() {\n\n let item: MenuItem = this.findCurrentItem(this.items);\n\n if (item != undefined) {\n\n this.impostaUrlEffettivo(item);\n\n this.emitDebug(\"Emissione item menu url corrente:\");\n this.emitDebug(item);\n\n this.currentItem.emit(item);\n\n // todo ???\n // if (this.collapseOther) {\n //\n // this.collapseOther(item);\n // }\n }\n }\n\n /**\n * Ricerca l'elemento di menu inerente\n * l'url corrente\n *\n * @param items\n */\n private findCurrentItem(items: MenuItem[]): MenuItem {\n\n let resultItem: MenuItem = undefined;\n\n if (items?.length) {\n\n items.forEach((item: MenuItem) => {\n\n if (resultItem == undefined && item != undefined && this.isCurrentPageItem(item)) {\n\n resultItem = item;\n }\n })\n }\n\n return resultItem;\n }\n\n /**\n *\n * @param id\n * @param items\n */\n private findItem(id: string, items: MenuItem[]) {\n\n let resultItem: MenuItem = undefined;\n\n if (items?.length) {\n\n items.forEach((item: MenuItem) => {\n\n if (resultItem == undefined && item != undefined) {\n\n resultItem = item.id == id ? item : this.findItem(id, item.subItems);\n }\n })\n }\n\n return resultItem;\n }\n\n /**\n *\n * @param id\n */\n private espandiPercorso(id: string) {\n\n if (this.items) {\n\n this.items.forEach((item: MenuItem) => {\n\n let innerItem: MenuItem = this.findItem(id, item.subItems);\n\n if ((item?.id == id) || innerItem != undefined) {\n\n this.espandiItem(item);\n\n if (this.collapseOther) {\n\n this.doCollapseOther(item);\n }\n\n if (innerItem) {\n\n setTimeout(() => this.mostraItem.emit(id), COLLAPSING_DURATION);\n }\n }\n })\n }\n }\n\n private espandiMenu = () => this.setCollapsedMenu('show');\n private collassaMenu = () => this.setCollapsedMenu('hide');\n\n private setCollapsedMenu(mode: CollapseMode) {\n\n if (this.items) {\n\n this.items.forEach(item => this.setCollapsed(item, mode));\n }\n }\n\n espandiItem = (item: MenuItem) => this.setCollapsed(item, 'show');\n collassaItem = (item: MenuItem) => this.setCollapsed(item, 'hide');\n toggleItem = (item: MenuItem) => this.setCollapsed(item, 'toggle');\n\n setCollapsed(item: MenuItem, mode: CollapseMode) {\n\n if (item && item.collapsible) {\n\n switch (mode) {\n\n case \"hide\":\n item.collapsed = true;\n break;\n\n case \"show\":\n item.collapsed = false;\n break;\n\n default:\n case \"toggle\":\n item.collapsed = !item.collapsed;\n break;\n }\n }\n }\n\n private setParent(items: MenuItem[], parent: MenuItem) {\n\n if (items?.length && parent) {\n\n items.forEach((item: MenuItem) => {\n\n if (item != undefined) {\n\n item.parent = this.toLightItem(parent);\n this.setParent(item.subItems, item);\n }\n })\n }\n }\n\n private toLightItem(e: MenuItem): MenuItem {\n\n return e != undefined\n ? {\n id: e.id,\n label: e.label,\n link: e.link,\n parent: this.toLightItem(e.parent)\n }\n : undefined\n }\n\n itemOnClick(item: MenuItem) {\n\n if (item) {\n\n if (item.callback && isFunction(item.callback)) {\n\n item.callback();\n }\n\n if (item.collapsible) {\n\n item.collapsed = !item.collapsed;\n\n if (item.collapsed === false && this.collapseOther === true) {\n\n this.doCollapseOther(item);\n }\n }\n }\n\n this.select.emit(item)\n }\n\n /**\n * Effetto fisarmonica\n *\n * @param item\n */\n private doCollapseOther(item: MenuItem) {\n\n if (item) {\n\n this.items.forEach((itm: MenuItem) => {\n\n if (itm && itm.id != item.id) {\n\n itm.collapsed = true\n\n }\n });\n }\n }\n\n /**\n *\n * @param currentItem\n * @param item\n */\n currentItemHandler(currentItem: MenuItem, item: MenuItem) {\n\n if (currentItem) {\n\n this.currentItem.emit(currentItem);\n\n if (this.expandAutomatically === true && !this.innerMenu) {\n\n this.espandiPercorso(currentItem.id);\n }\n }\n }\n\n collapsedOnChange() {\n\n // setTimeout(() => {\n // this.emitMaxHeight()\n // this.collapsedChange.emit(this.collapsed)\n // }, 50)\n }\n\n itemOnArrowDown() {\n\n let focusableItems = this.focusableItems;\n focusableItems.filter((index) => index > focusableItems.index(document.activeElement)).first()?.focus();\n }\n\n itemOnArrowUp() {\n let focusableItems = this.focusableItems;\n focusableItems.filter((index) => index < focusableItems.index(document.activeElement)).last()?.focus();\n }\n\n get focusableItems() {\n\n return window['$']('body').find(FOCUSABLE_ITEMS_SELECTOR);\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport const ERROR_BTN_CLASS: string = 'on-error-btn'\n\n@Component({\n selector: 'inail-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n label: string;\n @Input()\n title: string;\n @Input()\n name: string;\n @Input()\n disabled: boolean;\n @Input()\n labelClass: string;\n @Input()\n btnSuccess: boolean;\n @Input()\n btnLink: boolean;\n @Input()\n submit: boolean;\n @Input()\n angleRight: boolean;\n @Input()\n angleLeft: boolean;\n @Input()\n iconLeft: string;\n @Input()\n iconRight: string;\n @Input()\n focus: Observable<boolean | void>;\n @Output()\n onclick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>()\n\n @Input()\n setFocusOnError: boolean = false;\n\n @ViewChild('buttonElement')\n buttonElement: ElementRef<HTMLElement>\n\n @ViewChild('buttonContent')\n buttonContent: ElementRef<HTMLElement>;\n\n visualizzaContent: boolean;\n\n // inizializzazioneTerminata: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-button]`;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.visualizzaContent = isBlankOrNull(this.label);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit()\n this.logPrefix = `${this.logPrefix}[${this.label}]`\n\n if (this.focus) {\n\n this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll)));\n }\n\n this.visualizzaContent = isBlankOrNull(this.label);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n // setTimeout(() => {\n // // this.visualizzaContent = this.buttonContent?.nativeElement?.childNodes?.length > 0;\n // // this.inizializzazioneTerminata = true;\n // this.visualizzaContent = isBlankOrNull(this.label);\n // this.cdr.detectChanges();\n // });\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n onClick($event: MouseEvent) {\n\n this.onclick.emit($event)\n }\n\n private setFocus(scroll: boolean) {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.buttonElement.nativeElement, scroll);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {HeaderConfigurations} from \"../header/header.component\";\nimport {ChecksessionResponse, DatiDipendente, UserInfo} from \"../navigazione-utente/navigazione-utente.component\";\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {API_DEFAULT_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isHidden, isNotBlankOrNull, scrollToElement, scrollTop, startWithSlash} from \"../../../../utils/common.operators\";\nimport {webkitExternalResources} from \"./webkit-resources\";\nimport {ExternalResource, ExternalScript} from \"./static-resources\";\nimport {AppPage} from \"../breadcrumb/breadcrumb.component\";\nimport {GetStringFn, MenuComponent, MenuItem} from \"../menu/menu.component\";\nimport {isFunction} from \"rxjs/internal-compatibility\";\nimport {filter} from \"rxjs/operators\";\nimport {ERROR_BTN_CLASS} from \"../../ux/button/button.component\";\n\ntype ResourceType = 'script' | 'link';\n\ninterface LoadedResource {\n\n loaded: boolean,\n resource: ExternalResource | ExternalScript\n}\n\ninterface LoadedResourceResponse {\n\n resource: string\n loaded: boolean,\n status: string\n}\n\ninterface InailConfigurationResponse {\n\n cdn_endpoint: string;\n}\n\nexport enum SetFocusStrategy {\n\n /**\n * Indica che il focus dovra' essere impostato sul feedback globale\n */\n OnGlobalFeedback = 0,\n\n /**\n * Indica che il focus dovra' essere impostato sul primo elemento in pagina andato in errore\n */\n OnFirstPageError = 1\n}\n\nexport class InailLayoutConfigurations {\n\n /**\n * Indica il nome dell'applicazione\n */\n appName?: string\n\n /**\n * Se true visualizza il menu intranet\n */\n intranet?: boolean;\n\n /**\n * Se true imposta automaticamente il focus sul primo elemento\n * di input andato in errore\n */\n focusOnError?: boolean;\n\n /**\n * Se true effettua uno scrolling all'elemento\n * andato in errore prima di impostare il focus\n */\n scrollToError?: boolean;\n\n /**\n * Determina su quale elemento impostare il focus al verificarsi\n * di un errore\n */\n setFocusStrategy?: SetFocusStrategy = SetFocusStrategy.OnGlobalFeedback;\n\n /**\n * Se true alla fine di un evento di routing effettua uno scroll in cima alla pagina.\n */\n scrollTopAtNavigationEnd?: boolean;\n\n /**\n * Se true visualizza le notifiche utente\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Se true visulizza il menu cerca utente\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true permette al layout di occupare l'intera larghezza dello schermo\n */\n containerWide?: boolean;\n\n /**\n * Se true abilita il caricamento automatico delle risorse esterne dalla cdn INAIL.\n * Vengono creati ed inettati nel tag <head> i tag <link>\n * inerenti le risorse esterne necessarie alla\n * corretta visualizzazione dell'applicazione.\n * Se non passate in input al componente tramite la proprieta externalResources\n * vengono caricate le risorse di default.\n * Le risorse di default vengono recuperate dal dominio\n * specificato tramite la proprieta cdnEndpoint e cercate\n * nel sottopath specificato tramite proprieta assetsUrl\n */\n caricamentoDinamicoRisorseEsterne?: boolean;\n\n /**\n * todo rivedere\n * Se true abilita il caricamento automatico degli script esterni.\n * Vengono creati ed inettati nel tag <head> i tag <script>\n * inerenti gli script necessari al\n * corretto funzionamento dell'applicazione.\n * Se non passati in input al componente\n * vengono caricati gli script di default.\n * todo: inserire lista scripts (vedere file webkit-resources.ts)\n * Gli scripts di default vengono recuperati dal dominio\n * specificato tramite la proprieta cdnEndpoint e cercati\n * nel sottopath specificato tramite proprieta assetsUrl\n */\n // caricamentoDinamicoScriptEsterni?: boolean;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per customizzare i comportamenti automatici\n * (come il recupero dei frammenti html che costituiscono l'header ed il recupero\n * delle info inerenti l'utente loggato)\n * e per customizzare gli href negli html di default (header e footer) nel caso in cui non vengano passati\n * degli specifici html o non sia stato possibile recuperare quelli in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string;\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene preso in considerazione se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n cdnEndpoint?: string;\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet), oppure /assets/inail/static\n * nel caso sia stata valorizzata anche la proprieta' cdnEndpoint.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n assetsUrl?: string;\n\n /**\n * Recupera automaticamente l'endpoint della cdn.\n * L'endpoint viene recuperato contattando l'api gateway all'indirizzo\n * '/.well-known/inail-configuration'\n * l'endpoint utilizzato sara' quello specificato\n * nella proprieta cdn_endpoint dell'oggetto restituito.\n * Il recupero dell'endpoint non viene effettutato se e' stata\n * impostata la proprieta di configurazione cdnEndpoint.\n * L'api gateway viene contattato prendendo in considerazione\n * quanto specificato tramite la proprieta' di configurazione\n * apiGatewayUrl\n * */\n recuperoAutomaticoCdnEnpoint?: boolean;\n\n /**\n * Tempo di attesa in millisecondi\n * del caricamento tra gli script.\n * Il valore di default e' 300.\n */\n // scriptLoadingDeelay?: number;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n navigazionePrincipaleUrl?: string;\n\n /**\n * Html della navigazione principale da visualizzare\n */\n navigazionePrincipaleHtml?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Url da cui recuperare l'html del footer.\n * Se non specificato il footer viene recuperato dall'indirizzo relativo /cs/internet/footer.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n footerUrl?: string;\n\n /**\n * Html del footer da visualizzare\n */\n footerHtml?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n logoutUrl?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway.\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gateway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: string;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati dell'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n\n/**\n * Il componente renderizza l'intero layout dell'applicazione.\n *\n * Comprende gli elementi comuni a tutte le applicazioni INAIL:\n * Header, footer, spazio per breadcrumb e menu laterale.\n *\n * Il componente implementa autonomamente il meccanismo per rendere responsive l'applicazione,\n * secondo quanto richiesto nelle linee guida INAIL.\n *\n * E' possibile iniettare nel layout renderizzato il contenuto principale delle pagine,\n * il breadcrumb, il menu applicativo ed il sottomenu.\n *\n * Inoltre e' possibile permettere al componente di recuperare in automatico le informazioni inerenti\n * l'utente loggato e gli html visulizzati nell'header e nel footer\n * oppure passare esplicitamente queste informazioni dall'esterno.\n *\n * Infine e' possibile far iniettare al componente le risorse statiche necessarie,\n * passandole in input e facendole recuperare in automatico\n * senza doverle specificare nell'index.html\n */\n@Component({\n selector: 'inail-layout',\n templateUrl: './inail-layout.component.html',\n styleUrls: ['./inail-layout.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class InailLayoutComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n headerConfig: HeaderConfigurations;\n\n /**\n * Se true visualizza il loader\n */\n @Input()\n showLoader: boolean;\n\n @Input()\n config: InailLayoutConfigurations;\n\n @Input()\n infoDipendente: UserInfo;\n\n /**\n * Lista delle risorse esterne da utilizzare per la corretta visualizzazione del layout.\n * Vengono caricate automaticamente solo se il comportamento viene abilitato\n * tramite la proprieta di configrazione caricamentoDinamicoRisorseEsterne.\n * Se per le risorse non vengono specificati degli url assoluti\n * vegono recuperate in base a quanto specificato nelle proprita di configurazione\n * cdnEndpoint ed assetsUrl.\n */\n @Input()\n externalResources: ExternalResource[];\n\n /**\n * Lista degli scripts esterni da utilizzare per il corretto funzionamento del layout.\n * Vengono caricati automaticamente solo se il comportamento viene abilitato\n * tramite la proprieta di configrazione caricamentoDinamicoScriptEsterni.\n * Se per gli script non vengono specificati degli url assoluti\n * vegono recuperati in base a quanto specificato nelle proprita di configurazione\n * cdnEndpoint ed assetsUrl.\n */\n // @Input()\n // externalScripts: ExternalScript[];\n\n /**\n *\n */\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n /**\n *\n */\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n @ViewChild('breadcrumbContainer')\n breadcrumbContainer: ElementRef;\n\n @ContentChildren(MenuComponent)\n menuList: QueryList<MenuComponent>;\n\n paginaCorrente: AppPage;\n\n breadcrumbEsterno: boolean = true;\n\n // Gestione risorse e script esterni\n risorseEsterneCounter: number = 0;\n risorseEsterneTot: number;\n scriptEsterniCounter: number = 0;\n scriptEsterniTot: number;\n\n caricamentoRisorseEsterneTerminato: boolean = false;\n caricamentoScriptEsterniTerminato: boolean = false;\n\n inizializzazioneTerminata: boolean = false;\n\n toggleNavSecondaria: EventEmitter<void> = new EventEmitter<void>();\n\n itsReady = (): boolean => this.inizializzazioneTerminata === true && this.caricamentoRisorseEsterneTerminato === true;\n\n constructor(private renderer: Renderer2,\n private http: HttpClient,\n private _elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private router: Router) {\n\n super(cdr);\n this.logPrefix = '[inail-layout]'\n this.detach();\n }\n\n /**\n * Gestione automatica per l'impostazione del focus\n * sugli errori\n *\n * @param elem\n */\n @HostListener('click', ['$event.target'])\n onClick(elem: HTMLElement) {\n\n // Controllo che il click sia stato fatto\n // su un pulsante che implica l'impostazione\n // del focus sull'errore\n if (this.config.focusOnError && isSetFocusOnErrorButton(elem)) {\n\n this.emitDebug('Error button clicked');\n setFocusOnError(this.config.setFocusStrategy, this.config.scrollToError);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug('changes');\n this.emitDebug(changes);\n\n if (changes?.infoDipendente?.currentValue) {\n\n this.cdr.detectChanges();\n }\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.init();\n }\n\n private async init() {\n\n this.emitDebug('init...');\n\n this.removeNgVersion(this._elementRef.nativeElement);\n\n if (this.config) {\n\n this.emitDebug(\"Configurazioni InailLayoutComponent\");\n this.emitDebug(this.config);\n\n if (!this.config.cdnEndpoint && this.config.recuperoAutomaticoCdnEnpoint === true) {\n\n await this.recuperaCdnEnpoint();\n }\n\n this.headerConfig = {\n\n clientId: this.config.clientId,\n domainUrl: this.config.domainUrl,\n apiGatewayUrl: this.config.apiGatewayUrl,\n assetsUrl: this.config.assetsUrl,\n intranet: this.config.intranet,\n logoutUrl: this.config.logoutUrl,\n cdnEndpoint: this.config.cdnEndpoint,\n menuIntranetUrl: this.config.menuIntranetUrl,\n menuIntranetHtml: this.config.menuIntranetHtml,\n navigazionePrincipaleUrl: this.config.navigazionePrincipaleUrl,\n navigazionePrincipaleHtml: this.config.navigazionePrincipaleHtml,\n profiloUtenteUrl: this.config.profiloUtenteUrl,\n visualizzaNotificheUtente: this.config.visualizzaNotificheUtente,\n visualizzaMenuCercaUtente: this.config.visualizzaMenuCercaUtente,\n cercaPersonePageUrl: this.config.cercaPersonePageUrl,\n recuperoAutomaticoDatiUtente: this.config.recuperoAutomaticoDatiUtente\n }\n }\n\n // Inizializzazione risorse esterne\n if (this.config?.caricamentoDinamicoRisorseEsterne === true) {\n\n this.loadRisorseEsterne(this.externalResources || webkitExternalResources, 'link');\n } else {\n\n this.caricamentoRisorseEsterneTerminato = true;\n }\n\n // Inizializzazione script esterni\n // if (this.config?.caricamentoDinamicoScriptEsterni === true\n // && this.externalScripts?.length) {\n //\n // await this.loadRisorseEsterne(this.externalScripts, 'script');\n // } else {\n //\n // this.caricamentoScriptEsterniTerminato = true;\n // }\n\n if (this.config?.scrollTopAtNavigationEnd) {\n\n this.push(\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => scrollTop())\n );\n }\n\n this.emitDebug('...inizializzazione terminata!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n }\n\n private removeNgVersion(nativeElement: HTMLElement) {\n\n if (nativeElement) {\n\n if (nativeElement?.hasAttribute('ng-version')) {\n\n this.renderer.removeAttribute(nativeElement, \"ng-version\");\n\n } else {\n this.removeNgVersion(nativeElement.parentElement);\n }\n }\n }\n\n ngAfterViewInit(): void {\n\n this.breadcrumbEsterno = this.breadcrumbContainer ? this.breadcrumbContainer.nativeElement.childElementCount > 0 : false;\n\n if (this.menuList?.length > 0) {\n\n this.menuList.forEach((menu: MenuComponent) => {\n\n this.push(\n menu.currentItem.subscribe((currentElement: MenuItem) => {\n\n this.emitDebug('Voce menu corrente');\n this.emitDebug(currentElement);\n\n if (currentElement != undefined) {\n\n this.paginaCorrente = this.toPaginaApplicativa(currentElement);\n this.cdr.detectChanges();\n }\n })\n );\n });\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n private toPaginaApplicativa(element: MenuItem): AppPage {\n\n return element != undefined\n ? {\n title: this.getElementLabel(element),\n url: this.getElementLink(element),\n parent: this.toPaginaApplicativa(element.parent)\n }\n : undefined\n }\n\n getElementLink(element: MenuItem): string {\n\n return isFunction(element.link) ? (element.link as GetStringFn)() : element.link\n }\n\n getElementLabel(element: MenuItem): string {\n\n return isFunction(element.label) ? (element.label as GetStringFn)() : element.label\n }\n\n // --- Logica caricamento risorse esterne ------------------------------------------------------------------------------\n\n /**\n * Recupera da Api Gateway l'endpoint della cdn\n * e lo imposta nella configurazione del componente.\n */\n private async recuperaCdnEnpoint() {\n\n try {\n\n let url = (!isAbsolute(this.config.apiGatewayUrl) ? (this.config.domainUrl || '') : '')\n + (this.config.apiGatewayUrl || API_DEFAULT_URL)\n + '/.well-known/inail-configuration';\n\n this.emitDebug(`Recupero cdn endpoint da: ${url}`);\n let response: InailConfigurationResponse = await this.http.get<InailConfigurationResponse>(url, {withCredentials: true}).toPromise();\n this.config.cdnEndpoint = response.cdn_endpoint;\n\n } catch (e) {\n\n this.emitError(\"Errore nel recupero del cdnEnpoint da api gateway\");\n this.emitError(e);\n }\n }\n\n /**\n *\n * @param risorseEsterne\n * @param type\n */\n private async loadRisorseEsterne(risorseEsterne: (ExternalResource | ExternalScript)[], type: ResourceType) {\n\n this.emitDebug('Load risorse esterne');\n this.emitDebug(risorseEsterne);\n\n // if (isNotBlankOrNull(this.config.cdnEndpoint)) {\n //\n // risorseEsterne.forEach((resource: ExternalResource | ExternalScript) => this.impostaPathRisorsa(resource, type));\n // }\n\n risorseEsterne.forEach((resource: ExternalResource | ExternalScript) => this.impostaPathRisorsa(resource, type));\n\n let loadedResources: LoadedResource[] = [];\n risorseEsterne.forEach((risorsa: ExternalResource | ExternalScript) => loadedResources.push({loaded: false, resource: risorsa}));\n\n switch (type) {\n\n case \"link\":\n this.risorseEsterneCounter = 0;\n this.risorseEsterneTot = risorseEsterne.length;\n this.caricaRisorseEsterne(loadedResources);\n break;\n // case \"script\":\n // this.scriptEsterniCounter = 0;\n // this.scriptEsterniTot = risorseEsterne.length;\n // await this.caricaScriptEsterni(loadedResources);\n // break;\n }\n }\n\n /**\n *\n * @param risorsaEsterna\n * @param type\n */\n private impostaPathRisorsa(risorsaEsterna: ExternalResource | ExternalScript, type: ResourceType) {\n\n let urlProperty: string;\n\n switch (type) {\n\n case \"link\":\n urlProperty = 'href'\n break;\n\n case \"script\":\n urlProperty = 'src'\n break;\n }\n\n risorsaEsterna.assetUrl = !isAbsolute(risorsaEsterna[urlProperty])\n ? risorsaEsterna.assetUrl || this.config.assetsUrl || (this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL)\n : '';\n\n risorsaEsterna.cdnEndpoint = !isAbsolute(risorsaEsterna.assetUrl)\n ? risorsaEsterna.cdnEndpoint || this.config.cdnEndpoint || ''\n : '';\n }\n\n /**\n *\n * @param resources\n * @param index\n */\n private async caricaRisorseEsterne(resources: LoadedResource[], index: number = 0) {\n\n if (resources && resources.length > 0) {\n\n resources.forEach(resource => {\n\n this.emitDebug('Caricamento risorsa esterna:');\n this.emitDebug(resource);\n\n this.creaElementoRisorsaEsterna(resource, 'link')\n .then((response: LoadedResourceResponse) => {\n\n this.emitDebug('...caricamento risorsa esterna completato');\n this.emitDebug(response);\n }, e => {\n this.emitError('Errore caricamento risorsa esterna!');\n this.emitError(e);\n })\n })\n }\n\n // Vecchio modo\n // if (index < resources.length) {\n //\n // try {\n //\n // this.emitDebug('Caricamento risorsa esterna:');\n // this.emitDebug(resources[index]);\n //\n // let response: LoadedResourceResponse = await this.creaElementoRisorsaEsterna(resources[index], 'link');\n //\n // this.emitDebug('...caricamento risorsa esterna completato');\n // this.emitDebug(response);\n //\n // } catch (e) {\n // this.emitError('Errore caricamento risorsa esterna!');\n // this.emitError(e);\n // }\n //\n // await this.caricaRisorseEsterne(resources, index + 1);\n // }\n }\n\n /**\n *\n * @param scripts\n * @param index\n */\n // private async caricaScriptEsterni(scripts: LoadedResource[], index: number = 0) {\n //\n // if (index < scripts.length) {\n //\n // setTimeout(() => {\n // this.emitDebug('Caricamento script esterno:');\n // this.emitDebug(scripts[index]);\n //\n // this.creaElementoRisorsaEsterna(scripts[index], 'script')\n // .then((response: LoadedResourceResponse) => {\n //\n // this.emitDebug('...caricamento script esterno completato');\n // this.emitDebug(response);\n // })\n // .catch((e) => {\n // this.emitError('Errore caricamento script esterno!');\n // this.emitError(e);\n // })\n // .finally(() => this.caricaScriptEsterni(scripts, index + 1));\n //\n // }, this.config.scriptLoadingDeelay || 300);\n // } else {\n //\n // this.emitDebug('Inizio azioniFineCaricamentoScript');\n // }\n // }\n\n /**\n *\n *\n * @param resource\n * @param type\n */\n private async creaElementoRisorsaEsterna(resource: LoadedResource, type: ResourceType): Promise<LoadedResourceResponse> {\n\n return new Promise((resolve, reject) => {\n\n let resourceUrl: string = resource.resource['src'] || resource.resource['href']\n\n //resolve if already loaded\n if (resource.loaded) {\n\n resolve({resource: resourceUrl, loaded: true, status: 'Already Loaded'});\n } else {\n\n let resourceElement: any;\n\n switch (type) {\n\n case 'script':\n resourceElement = createScriptElement((resource.resource as ExternalScript));\n break;\n case 'link':\n resourceElement = createLinkElement((resource.resource as ExternalResource));\n break;\n }\n\n if (resourceElement.readyState) { // IE\n\n resourceElement.onreadystatechange = () => {\n\n if (resourceElement.readyState === \"loaded\" || resourceElement.readyState === \"complete\") {\n\n this.risorsaOnLoad(type);\n resourceElement.onreadystatechange = null;\n resource.loaded = true;\n resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n }\n };\n\n } else { // Others\n\n resourceElement.onload = () => {\n\n this.risorsaOnLoad(type);\n resource.loaded = true;\n resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n };\n }\n\n resourceElement.onerror = (error: any) => {\n\n this.risorsaOnLoad(type);\n reject({resource: resource.resource, loaded: false, status: 'Loaded'})\n };\n\n document.head.appendChild(resourceElement);\n }\n });\n }\n\n risorsaOnLoad(type: ResourceType) {\n\n switch (type) {\n\n case 'script':\n this.scriptEsterniCounter++;\n this.caricamentoScriptEsterniTerminato = this.scriptEsterniCounter === this.scriptEsterniTot;\n break;\n\n case 'link':\n this.risorseEsterneCounter++;\n this.caricamentoRisorseEsterneTerminato = this.risorseEsterneCounter === this.risorseEsterneTot;\n break;\n }\n\n if (this.caricamentoRisorseEsterneTerminato) {\n\n this.cdr.detectChanges();\n }\n }\n}\n\n// --- Operatori per la gestione delle risorse esterne ------------------------------------------------------\n\nconst createLinkElement = (resource: ExternalResource) => {\n\n let element = document.createElement('link');\n\n let url = `${resource.cdnEndpoint}${(isNotBlankOrNull(resource.cdnEndpoint) && !startWithSlash(resource.assetUrl)) ? '/' : ''}${resource.assetUrl}${resource.href}`;\n\n addProperty(element, 'rel', resource.rel);\n addProperty(element, 'type', resource.type);\n addProperty(element, 'href', url);\n addProperty(element, 'media', resource.media);\n addProperty(element, 'hreflang', resource.hreflang);\n\n return element;\n}\n\nconst createScriptElement = (script: ExternalScript) => {\n\n let element = document.createElement('script');\n\n let url = `${script.cdnEndpoint}${(isNotBlankOrNull(script.cdnEndpoint) && !startWithSlash(script.assetUrl)) ? '/' : ''}${script.assetUrl}${script.src}`;\n\n addProperty(element, 'src', url);\n addProperty(element, 'type', script.type);\n addProperty(element, 'charset', script.charset);\n\n if (script.async === true) {\n\n element.async = true;\n }\n\n if (script.defer === true) {\n\n element.defer = true;\n }\n\n return element;\n}\n\nconst addProperty = (elem: any, name: string, value: string) => {\n\n if (elem != undefined && value != undefined) {\n\n elem[name] = value;\n }\n}\n\n// --- Operatori per la gestione del focus ------------------------------------------------------\n\nconst isSetFocusOnErrorButton = (elem: HTMLElement): boolean => elem && ((elem.nodeName == \"BUTTON\" && hasClassValidationBtn(elem)) || isSetFocusOnErrorButton(elem.parentElement));\nconst hasClassValidationBtn = (elem: HTMLElement): boolean => elem && elem.classList && elem.classList.contains(ERROR_BTN_CLASS);\n\nconst focusable = ':not([disabled]):not([readonly]):not([tabindex=\\'-1\\'])';\nconst focusableElement = `input${focusable},select${focusable},textarea${focusable},.feedback-focusable`\n\n/**\n * Trova e restituisce l'elemento focusable\n * all'interno dell'elemento dato\n *\n * @param outer\n */\nconst findInnerFocusableElement = (outer: HTMLElement): HTMLElement => outer ? outer.querySelectorAll<HTMLElement>(focusableElement)[0] : undefined;\n\n/**\n * Imposta il focus sull'errore\n */\nexport const setFocusOnError = (setFocusStrategy: SetFocusStrategy, scrollToError: boolean) => {\n\n // @ts-ignore\n // let modaleInPagina: boolean = $('.modal.fade.in').not(`.${MODAL_CONFIRM_CLASS}`).length > 0 TODO\n\n let modaleInPagina: boolean = document.querySelectorAll('.modal.fade.in').length;\n\n // Se esiste una modale in pagina che non e' una modale di conferma\n if (modaleInPagina) {\n\n setFocusOnFirstModalError();\n\n } else {\n\n switch (setFocusStrategy) {\n\n default:\n case SetFocusStrategy.OnGlobalFeedback:\n setFocusOnGlobalErrorFeedback(scrollToError);\n break;\n\n case SetFocusStrategy.OnFirstPageError:\n setFocusOnFirstPageError(scrollToError);\n break\n }\n }\n}\n\n/**\n * Imposta il focus sul primo elemento nella modale andato in errore se esiste.\n */\nexport const setFocusOnFirstModalError = () => {\n\n setTimeout(() => {\n\n let firstModalErrorElement: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .has-error')[0]);\n let firstModalErrorFeedback: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .feedback-box-error')[0]);\n\n if (firstModalErrorElement) {\n\n firstModalErrorElement.focus();\n\n } else if (firstModalErrorFeedback) {\n\n firstModalErrorFeedback.focus();\n }\n\n }, 100);\n}\n\n/**\n * Imposta il focus sul primo elemento in pagina andato in errore se esiste.\n */\nexport const setFocusOnFirstPageError = (scrollToError?: boolean) => {\n\n setTimeout(() => {\n\n let outer = document.querySelectorAll<HTMLElement>('.has-error,.feedback-box-error:not(.global-feedback)')[0];\n\n let firstErrorElement: HTMLElement = findInnerFocusableElement(outer);\n\n if (firstErrorElement && !isHidden(firstErrorElement)) {\n\n if (scrollToError === true) {\n\n scrollToElement(firstErrorElement.id);\n }\n\n // Il delay serve ad aspettare che termini lo scroll\n setTimeout(() => firstErrorElement.focus(), 500);\n } else {\n setFocusOnGlobalErrorFeedback(scrollToError);\n }\n }, 100);\n}\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback', scrollToFeedback);\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback di errore\n */\nexport const setFocusOnFirstErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback in pagina\n *\n * @param selector\n * @param scrollToFeedback\n */\nexport const setFocusOnFirstFeedback = (selector?: string, scrollToFeedback?: boolean) => {\n\n setTimeout(() => {\n\n let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(selector || '.feedback-box')[0];\n\n if (feedback) {\n\n if (scrollToFeedback) {\n\n scrollToElement(feedback.getAttribute('id'));\n }\n\n let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n if (feedbackFocusable != undefined) {\n\n // Il delay serva ad aspettare che termini lo scroll\n setTimeout(() => feedbackFocusable.focus(), 500);\n }\n }\n }, 100);\n}\n\n// todo\n/**\n *\n * @param id\n * @param scrollToFeedback\n * @param ms\n */\nexport const setFocusOnFeedback = (id?: string, scrollToFeedback?: boolean, ms?: number) => {\n\n setTimeout(() => {\n\n let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(`#${id}`)[0];\n\n if (feedback) {\n\n if (scrollToFeedback) {\n\n scrollToElement(feedback.getAttribute('id'));\n }\n\n let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n if (feedbackFocusable != undefined) {\n\n // Il delay serva ad aspettare che termini lo scroll\n setTimeout(() => feedbackFocusable.focus(), 500);\n }\n }\n }, ms || 100);\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\n@Component({\n selector: 'inail-navigazione-secondaria',\n templateUrl: './navigazione-secondaria.component.html',\n styleUrls: ['./navigazione-secondaria.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneSecondariaComponent extends BaseComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('navigazionesecondaria')\n navigazionesecondaria: ElementRef<HTMLElement>;\n\n @ViewChild('sidebarInferiore')\n sidebarInferiore: ElementRef<HTMLElement>;\n\n visualizzaSidebarInferiore: boolean = true;\n\n @Input()\n toggle: Observable<void> = new Observable<void>()\n\n constructor(private cdr: ChangeDetectorRef,\n private renderer: Renderer2) {\n super(cdr)\n this.logPrefix = '[inail-navigazione-secondaria]';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.push(\n this.toggle.subscribe(() => {\n this.renderer.addClass(this.navigazionesecondaria.nativeElement, 'opened');\n })\n );\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n close() {\n\n this.renderer.removeClass(this.navigazionesecondaria.nativeElement, 'opened');\n }\n\n ngAfterViewInit(): void {\n\n this.emitDebug(`ngAfterViewInit`);\n this.emitDebug(`sidebar inferiore:`);\n this.emitDebug(this.sidebarInferiore);\n\n setTimeout(() => {\n this.visualizzaSidebarInferiore = this.sidebarInferiore.nativeElement.childElementCount > 0;\n this.detach();\n });\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChange, ViewEncapsulation} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport interface BreadcrumbStep {\n label: string;\n url: string;\n}\n\nexport interface AppPage {\n\n title: string;\n url: string;\n parent?: AppPage;\n}\n\ninterface AppPageChange extends SimpleChange {\n\n currentValue: AppPage;\n}\n\ninterface StepsChange extends SimpleChange {\n\n currentValue: BreadcrumbStep[];\n}\n\ninterface BreadcrumbChanges extends BasicUxElementComponentChanges {\n\n currentPage: AppPageChange;\n steps: StepsChange;\n}\n\n@Component({\n selector: 'inail-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n currentPage: AppPage;\n\n @Input()\n steps: BreadcrumbStep[];\n\n constructor(public router: Router,\n private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.logPrefix = '[inail-breadcrumb]'\n this.detach();\n }\n\n ngOnChanges(changes: BreadcrumbChanges) {\n\n super.ngOnChanges(changes);\n\n if (changes.currentPage) {\n\n this.buildBreadCrumb(changes.currentPage.currentValue);\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n buildBreadCrumb(pagina: AppPage) {\n\n if (pagina != undefined) {\n\n const genealogicalTree: AppPage[] = this.getGenealogicalTree(pagina);\n\n if (genealogicalTree) {\n\n this.steps = genealogicalTree.map((pagina: AppPage): BreadcrumbStep => ({label: pagina.title, url: pagina.url}));\n }\n }\n }\n\n private getParentsList(pagina: AppPage): AppPage[] {\n\n let parents: AppPage[];\n\n if (pagina) {\n\n parents = this.getGenealogicalTree(pagina.parent);\n }\n\n return parents;\n }\n\n private getGenealogicalTree(pagina: AppPage): AppPage[] {\n\n let genealogicalTree: AppPage[];\n\n if (pagina) {\n\n genealogicalTree = this.getGenealogicalTree(pagina.parent);\n genealogicalTree.push(pagina);\n\n } else {\n genealogicalTree = [];\n }\n\n return genealogicalTree;\n }\n\n onClick(url: string) {\n\n this.router.navigateByUrl(url);\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../responsive-element.component\";\nimport {isNotBlankOrNull} from \"../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, ObservableChange, StringChange} from \"../base.component\";\n\n@Component({\n selector: 'inail-form-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormElementComponent extends ResponsiveElementComponent implements OnChanges, OnInit {\n\n onChange: (val: any) => void\n onTouched: () => void;\n\n @Input()\n label: NonNullable<string>;\n @Input()\n title: string;\n @Input()\n name: string;\n @Input()\n labelTitle: string;\n @Input()\n labelClass: string;\n @Input()\n inputClass: string;\n @Input()\n required: boolean = false;\n @Input()\n requiredSimbol: string = '*';\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n @Input()\n disabled: boolean = false;\n @Input()\n readonly: boolean = false;\n @Input()\n hasError: boolean = false;\n @Output()\n hasErrorChange = new EventEmitter<boolean>();\n @Input()\n hiddenLabel: boolean = false;\n @Input()\n error: string;\n @Input()\n description: string;\n @Output()\n errorChange = new EventEmitter<string>();\n @Output()\n enterUp = new EventEmitter();\n @Input()\n focus: Observable<boolean | void>;\n @Input()\n popover: boolean = false;\n @Input()\n popoverButtonIcon: string;\n @Input()\n popoverButtonTitle: string;\n @Input()\n popoverHeader: string;\n @Input()\n popoverContent: string;\n\n getLabel = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.label}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n isThereError = (): boolean => this.hasError || isNotBlankOrNull(this.error);\n\n showError = (): boolean => this.isThereError() && isNotBlankOrNull(this.error);\n\n getAriaDescribedBy = (): string => this.showError() || isNotBlankOrNull(this.description) ? `${this.id}-description` : undefined;\n\n // showPopover = (): boolean => isNotBlankOrNull(this.popoverHeader) || isNotBlankOrNull(this.popoverContent);\n showPopover = (): boolean => this.popover === true;\n\n constructor(private formElementCdr: ChangeDetectorRef) {\n super(formElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.title = this.getNotBlankValue(this.title);\n this.name = this.getNotBlankValue(this.name);\n this.labelTitle = this.getNotBlankValue(this.labelTitle);\n this.popoverButtonTitle = this.getNotBlankValue(this.popoverButtonTitle);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.logPrefix = `${this.logPrefix}[${this.label}]`;\n }\n\n setDescError(s: string) {\n\n this.error = s;\n this.formElementCdr.detectChanges();\n }\n\n setHasError(b: boolean) {\n\n this.hasError = b;\n this.formElementCdr.detectChanges();\n }\n\n cleanError() {\n\n setTimeout(() => {\n\n if (this.hasError) {\n\n this.hasError = false;\n this.hasErrorChange.emit(false);\n }\n\n if (this.error) {\n\n this.error = undefined;\n this.errorChange.emit(undefined);\n }\n })\n }\n\n registerOnChange(fn: (_: any) => void): void {\n\n this.emitDebug(`registerOnChange`);\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n\n this.emitDebug(`registerOnTouched`);\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n\n this.emitDebug(`setDisabledState: ${isDisabled}`);\n this.disabled = isDisabled;\n this.formElementCdr.detectChanges();\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n\nexport interface FormElementComponentChanges extends ResponsiveElementComponentChanges {\n\n label: StringChange,\n title: StringChange,\n name: StringChange,\n labelTitle: StringChange,\n labelClass: StringChange,\n inputClass: StringChange,\n required: BooleanChange,\n requiredSimbol: StringChange,\n requiredSimbolPosition: StringChange,\n disabled: BooleanChange,\n readonly: BooleanChange,\n hasError: BooleanChange,\n hiddenLabel: BooleanChange,\n error: StringChange,\n focus: ObservableChange\n}\n","import {isNotBlankOrNull} from \"./common.operators\";\nimport {DateFormat} from \"./types\";\n\n/**\n * Verifica che la stringa sia nel formato dd/mm/aaaa\n *\n * @param s\n */\nexport const isInItalianFormat = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[0-3][0-9][\\/][0-1][0-9][\\/][1-9][0-9]{3}$/).test(s);\n\n/**\n * Verifica che la stringa sia formatta secondo lo standard ISO 8601\n *\n * E.g.\n * 2016-04-06\n * 2016-04-06T10:10:09Z\n * 2003-05-11T15:30:00.45Z\n * 1997-07-16T19:20+01:00\n * 1997-07-16T19:20:30+01:00\n * 1997-07-16T19:20:30.45+01:00\n * 1997-07-16T19:20-01:00\n * 1997-07-16T19:20:30-01:00\n * 1997-07-16T19:20:30.45-01:00\n *\n * https://rgxdb.com/r/526K7G5W\n *\n * @param s\n */\nexport const isInISO8601Format = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9](T[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\.[0-9]{2})?)?(([+-][0-9]{2}:[0-9]{2})|(Z)))?$/).test(s);\n\n/**\n * Verifica che la stringa rappresenti una data\n *\n * @param s\n */\nexport const isDate = (s: string): boolean => isInItalianFormat(s) || isInISO8601Format(s);\n\n/**\n *\n * @param s\n */\nexport const toItalianFormat = (s: string): string => reformatDate(s, 'IT');\n\n/**\n *\n * @param s\n */\nexport const toISO8601Format = (s: string): string => reformatDate(s, 'ISO8061');\n\n/**\n *\n * @param s\n * @param format\n */\nexport const reformatDate = (s: string, format: DateFormat): string => dateToString(toDateObject(s), format);\n\n/**\n *\n * @param d\n * @param format\n */\nexport const dateToString = (d: Date, format: DateFormat): string => {\n\n let s: string = undefined\n\n if (d && !isInvalidDateObject(d)) {\n\n switch (format) {\n\n default:\n case \"IT\":\n s = `${addZero(d.getDate())}/${addZero(d.getMonth() + 1)}/${d.getFullYear()}`;\n break\n\n case \"ISO8061\":\n s = `${d.getFullYear()}-${addZero(d.getMonth() + 1)}-${addZero(d.getDate())}`;\n }\n }\n\n return s;\n}\n\n/**\n * Converte una stringa in un oggetto Date.\n *\n * @returns Oggetto Date se la stringa e' definita, null altrimenti.\n */\nexport const toDateObject = (s: string): Date => {\n\n let dateObj: Date = null;\n\n if (s) {\n // Se la data e' in formato italiano\n // riformatto la stringa in un formato\n // compatibile con Date\n if (isInItalianFormat(s)) {\n\n let a = s.split('/');\n s = `${a[1]}/${a[0]}/${a[2]}`\n }\n\n dateObj = new Date(s);\n }\n\n return dateObj;\n}\n\nexport const isValidDateObject = (s: Date): boolean => s && !!s.getFullYear();\n\nexport const isInvalidDateObject = (d: Date): boolean => d && d.toString() === 'Invalid Date';\n\nexport const addZero = (n: number): string => n < 10 ? `0${n}` : `${n}`;\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {DatePipe} from \"@angular/common\";\nimport {isDate} from '../../../../utils/date.operators';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, NumberChange, StringChange} from \"../../base.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\ninterface InputTextChanges extends FormElementComponentChanges {\n\n value: StringChange;\n placeholder: StringChange;\n maxlength: NumberChange;\n isDate: BooleanChange;\n}\n\n@Component({\n selector: 'inail-input-text',\n templateUrl: './input-text.component.html',\n styleUrls: ['./input-text.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputTextComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputTextComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n inputValue: string;\n\n // @Input()\n // formControl: FormControl = new FormControl();\n\n // Serve per evitare i conflitti\n // con il form control interno\n // externalformControl: boolean = false;\n\n @Input()\n placeholder: string;\n\n @Input()\n maxlength: number;\n\n @Input()\n isDate: boolean = false;\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Input()\n preventPasting: boolean;\n\n constructor(private cdr: ChangeDetectorRef,\n private datePipe: DatePipe) {\n super(cdr);\n this.logPrefix = `[inail-input-text]`;\n this.detach();\n }\n\n ngOnChanges(changes: InputTextChanges): void {\n\n super.ngOnChanges(changes);\n\n // Con Form Control\n // if (changes?.formControl?.isFirstChange()) {\n //\n // this.externalformControl = true;\n // }\n\n this.maxlength = this.getNotBlankValue(this.maxlength);\n this.placeholder = this.getNotBlankValue(this.placeholder);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n\n // this.inputValue = value; // Con Form Control\n this.setValue(value);\n }\n\n get value() {\n\n return (this.isDate && isDate(this.inputValue)) ? this.datePipe.transform(this.inputValue, 'dd/MM/yyyy') : this.inputValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n\n // Con Form Control\n // if (value != this.formControl.value && !this.externalformControl) {\n //\n // this.emitDebug(`update value: ${this.formControl.value} -> ${value}`);\n //\n // // Serve per evitare l'errore ExpressionChangedAfterItHasBeenCheckedError\n // setTimeout(() => {\n // this.formControl.setValue((this.isDate && isDate(value)) ? this.datePipe.transform(value, 'dd/MM/yyyy') : value);\n // })\n // }\n }\n\n onPaste($event: ClipboardEvent) {\n\n if (this.preventPasting === true) {\n\n $event.preventDefault();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, StringChange} from \"../../base.component\";\nimport {isListNotEmptyOrNull, setFocus} from \"../../../../utils/common.operators\";\n\nexport interface SelectOption {\n\n /**\n * Label dell'opzione nella select\n */\n label: string;\n\n /**\n * Valore dell'opzione nella select\n */\n value: string;\n\n /**\n * Se true l'opzione e' disabilitata\n */\n disabled?: boolean;\n}\n\ninterface SelectOptionsChange extends SimpleChange {\n\n currentValue: SelectOption[];\n previousValue: SelectOption[];\n}\n\ninterface SelectChanges extends FormElementComponentChanges {\n\n value: StringChange;\n blankOption: BooleanChange;\n blankOptionText: StringChange;\n blankOptionDisabled: BooleanChange;\n sort: StringChange;\n options: SelectOptionsChange;\n}\n\n@Component({\n selector: 'inail-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ]\n})\nexport class SelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl')\n formControlElement: ElementRef<HTMLSelectElement>;\n\n selectedValue: string = '';\n\n @Input()\n options: SelectOption[] = [];\n @Input()\n blankOption: boolean = true;\n @Input()\n blankOptionText: string = '- seleziona opzione -';\n @Input()\n blankOptionDisabled: boolean = false;\n @Input()\n sort: 'asc' | 'desc';\n @Output()\n select: EventEmitter<SelectOption> = new EventEmitter<SelectOption>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-select]`;\n this.detach();\n }\n\n ngOnChanges(changes: SelectChanges): void {\n\n super.ngOnChanges(changes);\n\n if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n if (direction != 0 && this.options != undefined) {\n\n this.options.sort((a: SelectOption, b: SelectOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`)\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n )\n }\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n this.setValue(value);\n }\n\n get value() {\n\n return this.selectedValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.selectedValue != value) {\n\n setTimeout(() => {\n\n this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n this.selectedValue = value || '';\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${this.selectedValue})`);\n this.valueChange.emit(this.selectedValue);\n this.select.emit(this.options.find(opt => opt?.value === this.selectedValue));\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(this.selectedValue);\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @param blankOption\n */\nexport const isValidSelectValue = (opzioniValide: SelectOption[], opzioneScelta: string, blankOption?: boolean): boolean =>\n (blankOption && (!opzioneScelta || opzioneScelta.length == 0))\n || (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-form-grey',\n templateUrl: './form-grey.component.html',\n styleUrls: ['./form-grey.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormGreyComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n title: string;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-form-grey]'\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-page-title',\n templateUrl: './page-title.component.html',\n styleUrls: ['./page-title.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class PageTitleComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n\n @Input()\n titleClass: string;\n\n @Input()\n spanTitle: string;\n\n @Input()\n spanTitleClass: string;\n\n @Input()\n autoCatchFocus: boolean = true;\n\n @Input()\n focus: Observable<boolean | void>;\n\n @ViewChild('divTitolo')\n divTitolo: ElementRef<HTMLElement>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-page-title]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.titolo?.currentValue != undefined\n && !changes.titolo.isFirstChange()) {\n\n this.setFocus();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.logPrefix = `[inail-page-title][${this.title}]`\n this.cdr.detectChanges();\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`)\n setFocus(this.divTitolo.nativeElement, scroll);\n this.emitDebug(\"Focus impostato su elemento titolo: \");\n this.emitDebug(this.divTitolo.nativeElement);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n this.setFocus();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n setFocus() {\n\n // todo rivedere\n // Il secondo controllo serve ad evitare che al primo accesso\n // all'applicazione il focus vada sul titolo invece che\n // sul primo elemento del documento\n if (this.autoCatchFocus\n && (document.activeElement == undefined\n || document.activeElement.id != 'logo-inail-header')) {\n\n setTimeout(() => {\n\n this.divTitolo.nativeElement.focus();\n this.emitDebug(\"Focus impostato su elemento titolo: \");\n this.emitDebug(this.divTitolo.nativeElement);\n }, 500);\n\n // let checkLoading = setInterval(() => {\n //\n // // Aspetto che il loader\n // // sia stato rimosso dal DOM prima\n // // di impostare il focus\n // // @ts-ignore\n // if ($('.loader-overlay').length == 0) {\n //\n // // console.warn('loader-overlay = 0') // todo togliere\n //\n // this.divTitolo.nativeElement.focus();\n // this.emitDebug(\"Focus impostato su elemento titolo: \");\n // this.emitDebug(this.divTitolo.nativeElement);\n // clearInterval(checkLoading);\n // }\n // }, 500);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport type FeedbackTypes = 'ERROR' | 'SUCCESS';\n\n@Component({\n selector: 'inail-feedback',\n templateUrl: './feedback.component.html',\n styleUrls: ['./feedback.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FeedbackComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n // Queste inizializzazioni servono per essere usate nel template\n errorType: FeedbackTypes = 'ERROR';\n successType: FeedbackTypes = 'SUCCESS';\n\n @ViewChild('mainMessage')\n mainMessage: ElementRef<HTMLElement>\n\n @Input()\n message: string;\n @Input()\n type: FeedbackTypes = 'SUCCESS';\n @Input()\n globalFeedback: boolean;\n @Input()\n showIcon: boolean = true;\n @Input()\n contentTitle: string;\n @Input()\n contentClass: string;\n @Input()\n details: string[];\n @Input()\n detailsAsList: boolean;\n @Input()\n detailsAsOrderedList: boolean;\n @Input()\n focus: Observable<boolean | void>;\n @Input()\n autoCatchFocus: boolean = false;\n @Input()\n scrollToFocus: boolean = true;\n\n @ViewChild('feedbackContent')\n feedbackContent: ElementRef;\n\n // hasContent = () => this.feedbackContent?.nativeElement?.childElementCount > 0;\n hasContent = () => isNotBlankOrNull(this.feedbackContent?.nativeElement?.textContent);\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-feedback]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.details?.currentValue) {\n\n this.details = (changes.details.currentValue as string[]).filter(value => value != undefined);\n }\n\n if (changes?.message?.currentValue && this.autoCatchFocus && !changes?.message?.isFirstChange()) {\n\n this.setFocus(this.scrollToFocus);\n }\n\n this.cdr.detectChanges();\n // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.focus) {\n\n this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll != undefined ? scroll : this.scrollToFocus)));\n }\n }\n\n ngAfterViewInit(): void {\n\n if (this.autoCatchFocus) {\n\n this.setFocus(this.scrollToFocus);\n }\n\n this.cdr.detectChanges();\n // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n private setFocus(scroll: boolean) {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.mainMessage.nativeElement, scroll);\n }\n}\n\nexport class Feedback {\n\n type: FeedbackTypes;\n message: string;\n contentTitle: string;\n details?: string[];\n\n constructor(type: FeedbackTypes, msg: string, details?: string[], contentTitle?: string) {\n\n this.message = msg;\n this.type = type;\n\n if (details) {\n\n this.details = [].concat(details);\n this.contentTitle = contentTitle;\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n @Input()\n ariaLabel: string;\n @Input()\n ariaLabelOpened: string = \"Riduce l'accordion\";\n @Input()\n ariaLabelClosed: string = \"Espande l'accordion\";\n @Input()\n collapsed: boolean;\n @Input()\n hasError: boolean;\n @Input()\n required: boolean;\n @Input()\n requiredSimbol: string = '*';\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n @Input()\n toggle: Observable<boolean | void>;\n @Input()\n focus: Observable<boolean | void>;\n @Output()\n ontoggle: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n open: boolean;\n\n @ViewChild('accordionTitle')\n accordionTitle: ElementRef<HTMLElement>\n\n getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n @ViewChild('panelBody')\n panelBody: ElementRef<HTMLElement>// Servono per l'animazione di apertura/chiusura fluida\n panelBodyHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n emitMenuHeight = () => {\n\n // todo non funziona bene\n // let scrollHeight = this.panelBody?.nativeElement?.scrollHeight;\n // let nextHeight = this.open ? scrollHeight : 0;\n //\n // if (nextHeight > 0) {\n //\n // console.warn('A', scrollHeight, this.panelBody?.nativeElement)\n //\n // this.panelBodyHeight$.next(nextHeight);\n //\n // // Rimuovo height.\n // // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n // // setTimeout(() => {\n // // this.panelBodyHeight$.next(undefined);\n // // }, 350);\n //\n // } else {\n //\n // console.warn('C', scrollHeight, this.panelBody?.nativeElement)\n //\n // // Imposto l'height effettivo\n // // per poi impostarlo subito dopo a 0\n // // in modo da far funzionare l'animazione.\n // // Se non viene impostato un valore iniziale\n // // l'animazione CSS non funziona.\n //\n // this.panelBodyHeight$.next(scrollHeight);\n // setTimeout(() => this.panelBodyHeight$.next(0), 15);\n // }\n };\n\n constructor(private cdr: ChangeDetectorRef, private renderer: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-accordion]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // if(changes?.collapsed?.currentValue != undefined) {\n //\n // this.open = !changes.collapsed.currentValue;\n // }\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus! scroll: ${scroll}`)\n setFocus(this.accordionTitle.nativeElement, scroll);\n })\n );\n }\n\n if (this.toggle) {\n\n this.push(this.toggle.subscribe((open: boolean) => this.onToggle(open)));\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n this.open = !this.collapsed;\n }\n\n onToggle(open?: boolean) {\n\n this.emitDebug(`${this.id} toggle: ${open}`);\n this.open = open != undefined ? open : !this.open;\n this.emitMenuHeight();\n\n this.cdr.detectChanges();\n this.ontoggle.emit(this.open);\n }\n\n get ariaLabelText() {\n\n return this.ariaLabel || (this.open == true ? this.ariaLabelOpened : this.ariaLabelClosed);\n }\n\n ngAfterViewInit(): void {\n\n this.cdr.detectChanges();\n }\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-tab-pane',\n templateUrl: './tab-pane.component.html',\n styleUrls: ['./tab-pane.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TabPaneComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit {\n\n @Input()\n title: string;\n\n @Input()\n active: boolean;\n\n @Input()\n required: boolean;\n\n @Input()\n requiredSimbol: string = '*';\n\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n\n @Output()\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n // @Output()\n // selected: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n onChange: EventEmitter<void> = new EventEmitter<void>();\n\n public doDetechChange = () => this.cdr.detectChanges();\n\n getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr)\n this.logPrefix = '[inail-tab-pane]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.active) {\n\n // this.selected.emit(changes.active.currentValue);\n this.activeChange.emit(changes.active.currentValue)\n }\n\n this.cdr.detectChanges();\n this.onChange.emit();\n }\n\n ngOnInit() {\n super.ngOnInit()\n }\n\n ngAfterViewInit(): void {\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, OnInit, Output, QueryList, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {TabPaneComponent} from \"../tab-pane/tab-pane.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\n@Component({\n selector: 'inail-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TabGroupComponent extends BasicUxElementComponent implements OnInit, AfterViewInit {\n\n @ContentChildren(TabPaneComponent)\n panes: QueryList<TabPaneComponent>;\n\n @Input()\n selectTab: Observable<string>;\n\n @Output()\n selected: EventEmitter<string> = new EventEmitter<string>();\n\n isActive = (id: string): boolean => this.panes.some((pane: TabPaneComponent) => pane.id == id && pane.active);\n // getPaneTitle = (pane: TabPaneComponent) => `${pane.title}${pane.required ? ' *' : ''}`;\n getPaneTitle = (pane: TabPaneComponent) => pane.getTitle();\n detectPanesChange = () => this.panes?.forEach((pane: TabPaneComponent) => pane?.doDetechChange());\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-tab-group]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.selectTab) {\n\n this.push(this.selectTab.subscribe((id: string) => this.tabOnClick(id)));\n }\n }\n\n ngAfterViewInit(): void {\n\n if (this.panes) {\n\n this.panes.forEach((pane: TabPaneComponent) => this.push(pane.onChange.subscribe(() => this.cdr.detectChanges())));\n\n if (!this.panes.some((pane: TabPaneComponent) => pane.active)) {\n\n setTimeout(() => {\n let firstPane = this.panes.toArray()[0];\n firstPane.active = true;\n firstPane.doDetechChange();\n this.cdr.detectChanges();\n });\n }\n\n this.cdr.detectChanges();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n tabOnClick(id: string) {\n\n this.selected.emit(id);\n\n this.panes.forEach((pane: TabPaneComponent) => {\n\n let active: boolean = pane.id == id;\n\n if(pane.active == undefined || active != pane.active) {\n\n pane.active = active;\n pane.doDetechChange();\n pane.activeChange.emit(pane.active);\n }\n });\n\n this.cdr.detectChanges();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n// export interface Popover {\n//\n// title?: string;\n// content?: string;\n// buttonTitle?: string;\n// iconClass?: string;\n// }\n\n@Component({\n selector: 'inail-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class PopoverComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit {\n\n @ViewChild('openButton')\n openButton: ElementRef<HTMLElement>;\n\n @ViewChild('popover')\n popover: ElementRef<HTMLElement>;\n\n show: boolean;\n\n // @Input()\n // data: Popover;\n @Input()\n iconClass: string;\n @Input()\n buttonTitle: string;\n @Input()\n header: string;\n @Input()\n content: string;\n\n popoverLeft: number;\n popoverTop: number;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-popover]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.iconClass == undefined) {\n\n this.iconClass = 'fa-question-circle';\n }\n\n this.cdr.detectChanges();\n }\n\n onClick(b?: boolean) {\n\n this.show = b != undefined ? b : !this.show;\n this.cdr.detectChanges();\n\n if (this.show) {\n\n let yButton = this.openButton.nativeElement.getBoundingClientRect().bottom;\n let yPo = this.popover.nativeElement.getBoundingClientRect().bottom;\n let hPo = this.popover.nativeElement.getBoundingClientRect().height / 2\n\n this.popoverLeft = this.openButton.nativeElement.getBoundingClientRect().left - this.popover.nativeElement.getBoundingClientRect().left + 26;\n this.popoverTop = (yButton - yPo + hPo - 9);\n } else {\n this.popoverLeft = undefined;\n this.popoverTop = undefined\n }\n\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n setTimeout(() => this.cdr.detectChanges());\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, NumberChange, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\n\ninterface TextareaChanges extends FormElementComponentChanges {\n\n value: StringChange;\n placeholder: StringChange;\n maxlength: NumberChange;\n}\n\n@Component({\n selector: 'inail-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class TextareaComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n inputValue: string;\n\n @Input()\n placeholder: string;\n @Output()\n valueChange = new EventEmitter();\n @Input()\n maxlength: number = 300;\n @Input()\n rows: number = 10;\n @Input()\n cols: number;\n @Input()\n preventPasting: boolean;\n\n getCaratteriDisponibili = (): number => this.maxlength - (this.inputValue ? this.inputValue.length : 0);\n isTextTooLong = (): boolean => this.inputValue && this.inputValue.length > this.maxlength;\n isThereTextareaError = (): boolean => this.isThereError() || this.isTextTooLong();\n showTextareaError = (): boolean => this.isThereTextareaError() && isNotBlankOrNull(this.getDescError());\n getDescError = (): string => (isBlankOrNull(this.error) && this.isTextTooLong())\n ? \"Il testo non pu&ograve; essere lungo di \" + this.maxlength + \" caratteri\"\n : this.error;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-textarea]`;\n this.detach();\n }\n\n ngOnChanges(changes: TextareaChanges): void {\n\n super.ngOnChanges(changes);\n this.emitDebug(`ngOnChanges:`);\n this.emitDebug(changes);\n\n this.maxlength = this.getNotBlankValue(this.maxlength);\n this.placeholder = this.getNotBlankValue(this.placeholder);\n this.rows = this.getNotBlankValue(this.rows);\n this.cols = this.getNotBlankValue(this.cols);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n\n // this.inputValue = value; // Con Form Control\n this.setValue(value);\n }\n\n get value() {\n\n return this.inputValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n onPaste($event: ClipboardEvent) {\n\n if (this.preventPasting === true) {\n\n $event.preventDefault();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent} from \"../form-element.component\";\nimport {dateToString, isDate, isInISO8601Format, isInItalianFormat, toISO8601Format, toItalianFormat} from \"../../../../utils/date.operators\";\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\ninterface DatePickerChanges extends SimpleChanges {\n\n value: SimpleChange;\n options: SimpleChange;\n enabledDates: SimpleChange;\n disabledDates: SimpleChange;\n}\n\nconst isValidInputModel = (s: string) => isInItalianFormat(s) || isInISO8601Format(s) || isLongTime(s);\nconst isLongTime = (o: any) => o && (typeof o === 'number');\n\n@Component({\n selector: 'inail-input-date',\n templateUrl: './input-date.component.html',\n styleUrls: ['./input-date.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputDateComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputDateComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n visibleData: string;\n\n @Output()\n valueChange = new EventEmitter<string>();\n\n // @Input()\n // modelFormat: DateFormat;\n\n // https://bootstrap-datepicker.readthedocs.io/en/latest/options.html\n @Input()\n options: { [key: string]: any };\n\n @Input()\n enabledDates: string[];\n\n @Input()\n disabledDates: string[];\n\n @Input()\n reinit: Observable<void>;\n\n isValidInputValue = (): boolean => isBlankOrNull(this.visibleData) || isInItalianFormat(this.visibleData);\n isThereDataError = (): boolean => this.isThereError() || !this.isValidInputValue();\n showDataError = (): boolean => this.isThereDataError() && isNotBlankOrNull(this.getDescError());\n getDescError = (): string => (isBlankOrNull(this.error) && !this.isValidInputValue()) ? \"La data inserita non &egrave; valida\" : this.error;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-date]`;\n this.detach();\n }\n\n ngOnChanges(changes: DatePickerChanges) {\n\n super.ngOnChanges(changes);\n\n if (changes.value && !changes.value.firstChange) {\n\n this.hasError = false;\n this.error = undefined;\n }\n\n // Se cambiano le options o gli array delle date abilitate/disabilitate\n // reinizializzo il componente\n if ((changes.options && !changes.options.firstChange)\n || (changes.enabledDates && !changes.enabledDates.firstChange)\n || (changes.disabledDates && !changes.disabledDates.firstChange)) {\n\n this.datepickerReinit();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (!this.options) {\n\n this.options = {\n autoclose: true,\n format: 'dd/mm/yyyy',\n weekStart: 1,\n todayBtn: 'linked',\n language: 'it',\n todayHighlight: true,\n orientation: 'auto top',\n enableOnReadonly: false\n };\n }\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n\n if (this.reinit) {\n\n this.push(\n this.reinit.subscribe(() => {\n\n this.emitDebug(`Reinit!`);\n this.datepickerReinit();\n })\n );\n }\n\n this.cdr.detectChanges();\n }\n\n private isEnabledDate = (date: Date) => {\n\n var dateString = dateToString(date, 'ISO8061');\n return this.isDataAbilitata(dateString) && !this.isDataDisabilitata(dateString);\n };\n\n private isDataAbilitata = (data: string) => this.enabledDates == undefined || !this.enabledDates.length || this.enabledDates.some(regex => this.match(data, regex) != undefined);\n private isDataDisabilitata = (data: string) => this.disabledDates != undefined && this.disabledDates.some(regex => this.match(data, regex) != undefined);\n private match = (date: string, regex: string) => date != undefined && date.match(new RegExp('^'.concat(regex).concat('$'), 'i'));\n\n ngAfterViewInit(): void {\n\n this.emitDebug('ngAfterViewInit');\n this.emitDebug('nativeElement');\n this.emitDebug(this.formControlElement?.nativeElement);\n\n // Inizializzazione della libreria datepicker\n this.datepickerInit();\n\n if (this.visibleData && isDate(this.visibleData)) {\n\n this.setDatepickerDate(this.visibleData)\n }\n\n setTimeout(() => {\n\n window['$'](this.formControlElement.nativeElement).on(\"change\", () => {\n\n this.emitDebug('onChange');\n this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n let elem = window['$'](this.formControlElement.nativeElement)[0]\n\n this.emitDebug(`nativeElement value: ${elem?.value}`);\n\n if (elem != undefined && elem.value != this.visibleData) {\n\n this.emitDebug(`update value: ${this.visibleData} -> ${elem.value}`);\n this.value = elem.value;\n }\n\n this.cdr.detectChanges();\n });\n });\n\n this.cdr.detectChanges();\n }\n\n datepickerInit(): void {\n\n if (this.disabledDates?.length || this.enabledDates?.length) {\n\n this.options.beforeShowDay = this.isEnabledDate;\n }\n\n window['$'](this.formControlElement.nativeElement).datepicker(this.options);\n }\n\n datepickerDestroy(): void {\n\n window['$'](this.formControlElement.nativeElement).datepicker('remove');\n }\n\n datepickerReinit(): void {\n\n this.datepickerDestroy();\n this.datepickerInit();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.visibleData} -> ${value}`)\n this.setValue(value);\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n this.emitDebug(`update visibleData: ${this.visibleData} -> ${value}`);\n\n let validFormat = isValidInputModel(value);\n\n if (isNotBlankOrNull(value)) {\n\n this.visibleData = validFormat ? toItalianFormat(value) : value;\n } else {\n\n this.visibleData = undefined\n }\n\n this.cdr.detectChanges();\n\n setTimeout(() => {\n\n let emittedValue: string = validFormat ? toISO8601Format(this.visibleData) : this.visibleData;\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(emittedValue);\n\n if (validFormat) {\n this.setDatepickerDate(this.visibleData);\n }\n });\n\n this.cleanError();\n this.cdr.detectChanges();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n this.cdr.detectChanges();\n }\n\n onChangeHandler($event: any) {\n\n this.value = $event.target.value;\n }\n\n private setDatepickerDate(date: string) {\n\n window['$'](this.formControlElement.nativeElement).datepicker('setDate', date);\n }\n}\n\n// export class InputDateComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n//\n// @ViewChild('formControl', {static: true})\n// formControlElement: ElementRef<HTMLElement>;\n//\n// visibleData: string;\n//\n// changed: boolean;\n//\n// @Output()\n// valueChange = new EventEmitter<string>();\n//\n// // @Input()\n// // modelFormat: DateFormat;\n//\n// @Input()\n// datepickerOptions: any;\n//\n// @Input()\n// enabledDates: string[];\n//\n// @Input()\n// disabledDates: string[];\n//\n// constructor(private cdr: ChangeDetectorRef) {\n// super(cdr);\n// this.detach();\n// }\n//\n// ngOnChanges(changes: DatePickerChanges) {\n//\n// super.ngOnChanges(changes);\n// this.emitDebug(`ngOnChanges:`);\n// this.emitDebug(changes);\n//\n// if (changes.value && !changes.value.firstChange) {\n//\n// this.hasError = false;\n// this.error = undefined;\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// ngOnInit() {\n//\n// this.logPrefix = `[inail-input-date][${this.label}]`;\n// super.ngOnInit();\n//\n// if (!this.datepickerOptions) {\n//\n// this.datepickerOptions = {\n// autoclose: true,\n// format: 'dd/mm/yyyy',\n// weekStart: 1,\n// todayBtn: 'linked',\n// language: 'it',\n// todayHighlight: true,\n// orientation: 'auto top',\n// enableOnReadonly: false\n// };\n// }\n//\n// if (this.disabledDates != undefined || this.enabledDates != undefined) {\n//\n// this.datepickerOptions.beforeShowDay = this.isEnabledDate\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// private isEnabledDate = (date) => {\n//\n// // @ts-ignore\n// var dateString = $.datepicker.formatDate('yy-mm-dd', date);\n// return this.isDataAbilitata(dateString) && !this.isDataDisabilitata(dateString);\n// };\n//\n// private isDataAbilitata = (data: string) => this.enabledDates == undefined || this.enabledDates.some(regex => this.match(data, regex) != undefined);\n// private isDataDisabilitata = (data: string) => this.disabledDates != undefined && this.disabledDates.some(regex => this.match(data, regex) != undefined);\n//\n// match = (date: string, regex: string) => date != undefined && date.match(new RegExp('^'.concat(regex).concat('$'), 'i'));\n//\n// ngAfterViewInit(): void {\n//\n// this.emitDebug('ngAfterViewInit');\n// this.emitDebug('nativeElement');\n// this.emitDebug(this.formControlElement?.nativeElement);\n//\n// // Inizializzazione della libreria datepicker\n// window['$'](this.formControlElement.nativeElement).datepicker(this.datepickerOptions);\n//\n// if (this.visibleData && isDate(this.visibleData)) {\n//\n// this.setDatepickerDate(this.visibleData)\n// }\n//\n// setTimeout(() => {\n//\n// // @ts-ignore\n// $('#' + this.id).on(\"change\", () => {\n//\n// this.emitDebug('onChange');\n// this.emitDebug(`visibleData: ${this.visibleData}`);\n//\n// // @ts-ignore\n// let elem = $('#' + this.id)[0]\n//\n// this.emitDebug(`nativeElement value: ${elem?.value}`);\n//\n// if (elem != undefined && elem.value != this.visibleData) {\n//\n// this.emitDebug(`update value: ${this.value} -> ${elem.value}`);\n// this.value = elem.value;\n// }\n//\n// this.cdr.detectChanges();\n// });\n// });\n//\n// if (this.showPopover()) {\n//\n// // @ts-ignore\n// $(`#${this.id}-popover`).popover();\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// ngOnDestroy(): void {\n//\n// super.ngOnDestroy();\n// }\n//\n// @Input()\n// set value(val) {\n//\n// // console.warn('val', val, this.visibleData)\n//\n// let validFormat = isValidInputFormat(val);\n//\n// // console.warn('validFormat', validFormat)\n//\n// if (isNotBlankOrNull(val)) {\n//\n// this.visibleData = validFormat ? toItalianFormat(val) : val;\n// } else {\n//\n// this.visibleData = undefined\n// }\n//\n// // console.warn('visibleData', this.visibleData)\n//\n// setTimeout(() => {\n//\n// let vChange = validFormat ? toISO8601Format(this.visibleData) : this.visibleData\n//\n// // console.warn('vChange', vChange)\n//\n// this.valueChange.emit(validFormat ? toISO8601Format(this.visibleData) : this.visibleData);\n//\n// if (validFormat) {\n//\n// // console.warn(this.visibleData)\n// this.setDatepickerDate(this.visibleData);\n// }\n// });\n// }\n//\n// get isValid(): boolean {\n//\n// return isBlankOrNull(this.visibleData) || isInItalianFormat(this.visibleData);\n// }\n//\n// checkDescError(): boolean {\n//\n// let descError: string = this.getDescError();\n// return this.checkError() && isNotBlankOrNull(descError);\n// }\n//\n// checkError(): boolean {\n//\n// return !this.isValid || this.hasError || isNotBlankOrNull(this.error);\n// }\n//\n// getDescError(): string {\n//\n// return (isNotBlankOrNull(this.error) && !this.isValid)\n// ? 'La data inserita non &egrave; valida'\n// : this.error;\n// }\n//\n// onChangeHandler($event: any) {\n//\n// // console.info('onChange', $event.target.value)\n// this.value = $event.target.value;\n// }\n//\n// private setDatepickerDate(date: string) {\n//\n// window['$'](this.formControlElement.nativeElement).datepicker('setDate', date);\n// }\n// }\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component, ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChange, ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isListNotEmptyOrNull, setFocus, uuidv4} from \"../../../../utils/common.operators\";\n\nconst clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\n\nexport interface RadioOption {\n\n /**\n *\n */\n id?: string;\n\n /**\n * Label dell'opzione nella select\n */\n label: string;\n\n /**\n * Valore dell'opzione nella select\n */\n value: string;\n\n /**\n *\n */\n title?: string;\n\n /**\n *\n */\n class?: string;\n\n popover?: boolean;\n popoverButtonIcon?: string;\n popoverButtonTitle?: string;\n popoverHeader?: string;\n popoverContent?: string;\n}\n\ninterface RadioSelectOptionsChange extends SimpleChange {\n\n currentValue: RadioOption[];\n previousValue: RadioOption[];\n}\n\ninterface RadioSelectChanges extends FormElementComponentChanges {\n\n value: StringChange;\n sort: StringChange;\n options: RadioSelectOptionsChange;\n inline: BooleanChange;\n}\n\n@Component({\n selector: 'inail-radio-select',\n templateUrl: './radio-select.component.html',\n styleUrls: ['./radio-select.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioSelectComponent),\n multi: true\n }\n ]\n})\nexport class RadioSelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl')\n formControlElement: ElementRef<HTMLElement>;\n\n @ViewChildren('inputRadio')\n inputRadio: QueryList<ElementRef<HTMLInputElement>>;\n\n selectedValue: string = '';\n\n @Input()\n options: RadioOption[];\n @Input()\n name: string;\n @Input()\n sort: 'asc' | 'desc';\n @Input()\n inline: boolean;\n @Output()\n select: EventEmitter<RadioOption> = new EventEmitter<RadioOption>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n getName = () => this.name || `${this.id}-name`;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-radio-select]`;\n this.detach();\n }\n\n ngOnChanges(changes: RadioSelectChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.options?.currentValue) {\n\n this.options = clone(changes?.options?.currentValue);\n\n this.options.forEach(opt => {\n\n if (isBlankOrNull(opt.id)) {\n\n opt.id = uuidv4();\n }\n });\n }\n\n if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n if (direction != 0 && this.options != undefined) {\n\n this.options.sort((a: RadioOption, b: RadioOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n let checked: ElementRef<HTMLInputElement> = this.inputRadio.find(item => item.nativeElement.checked);\n setFocus(checked?.nativeElement || this.inputRadio.first.nativeElement, scroll);\n })\n );\n }\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n this.setValue(value);\n }\n\n get value() {\n\n return this.selectedValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.selectedValue != value) {\n\n setTimeout(() => {\n\n this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n this.selectedValue = value || '';\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${this.selectedValue})`);\n this.valueChange.emit(this.selectedValue);\n this.select.emit(this.options.find(opt => opt?.value === this.selectedValue));\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(this.selectedValue);\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n this.emitDebug(`@ViewChildren('inputRadio')`);\n this.emitDebug(this.inputRadio);\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @return true se il valore di opzioneScelta e' uguale ad uno dei valori delle opzioniValide, false altrimenti.\n */\nexport const isValidRadioValue = (opzioniValide: RadioOption[], opzioneScelta: string): boolean =>\n (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n\n\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\ninterface CheckboxChanges extends FormElementComponentChanges {\n\n checked: BooleanChange;\n}\n\nexport interface CheckboxState {\n\n /**\n * Valore dell'attributo name impostato nel checkbox.\n */\n name: string;\n\n /**\n * Valore dell'attributo value impostato nel checkbox.\n */\n value: string;\n\n /**\n * true se il checkbox e' selezionato, false altrimenti.\n */\n checked: boolean;\n\n /**\n * true se si tratta dello stato all'inizializzazione del componente, false altrimenti.\n */\n firstChange: boolean;\n}\n\n@Component({\n selector: 'inail-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class CheckboxComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n checkedValue: boolean;\n\n @Input()\n value: string;\n\n @Output()\n checkedChange = new EventEmitter();\n\n @Output()\n checkboxClick = new EventEmitter<Event>();\n\n @Output()\n click = new EventEmitter<Event>();\n\n @Output()\n stateChange = new EventEmitter<CheckboxState>();\n\n state: CheckboxState = {name: undefined, value: undefined, checked: undefined, firstChange: true};\n\n emitState = () => {\n\n this.state.name = this.name;\n this.state.value = this.value;\n this.state.checked = this.checked;\n this.stateChange.emit(this.state);\n this.state.firstChange = false;\n };\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-checkbox]`;\n this.detach();\n }\n\n ngOnChanges(changes: CheckboxChanges): void {\n\n super.ngOnChanges(changes);\n // Impostazione a false se undefined\n this.checked = !!this.checked;\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n\n // this.state = {name: this.name, value: this.value, checked: this.checked, firstChange: true};\n }\n\n ngAfterViewInit(): void {\n\n }\n\n labelOnClick($event: Event) {\n\n $event.stopPropagation();\n this.click.emit($event);\n }\n\n cbOnEnter() {\n this.checked = !this.checked;\n this.enterUp.emit()\n }\n\n @Input()\n get checked() {\n return this.checkedValue;\n }\n\n writeValue(value: boolean): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.checked = value;\n }\n\n set checked(value: boolean) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.checkedValue != value) {\n\n this.emitDebug(`update value: ${this.checkedValue} -> ${value}`);\n this.checkedValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.checkedChange.emit(${value})`);\n this.checkedChange.emit(value);\n this.emitState();\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\nimport {setPageScroll} from \"../../../../utils/common.operators\";\n\nconst KEYCODE_TAB = 9;\nconst FOCUSABLE_SELECTOR = 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n@Component({\n selector: 'inail-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ModalComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n @Input()\n closeButtonTitle: string = 'Chiudi modale';\n @Output()\n close: EventEmitter<any> = new EventEmitter();\n @Input()\n show: Observable<boolean>;\n @Input()\n width: 'S' | 'M' | 'L' = 'M';\n @Input()\n setFocusOnError: boolean;\n\n pageActiveElement: any;\n previusFocusableElements: any;\n\n closeOnClick = () => this.showModal(false);\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-modal]'\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n\n if (changes.show?.currentValue) {\n\n this.push(\n changes.show.currentValue.subscribe((show: boolean) => {\n\n if (show == undefined) {\n\n show = true;\n }\n\n if (show === true) {\n\n this.pageActiveElement = document.activeElement;\n let focusbleElements = window['$']('body').find(FOCUSABLE_SELECTOR);\n this.previusFocusableElements = focusbleElements.filter((index) => index < focusbleElements.index(this.pageActiveElement));\n }\n\n this.showModal(show);\n })\n );\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n showModal(show: boolean) {\n\n window['$'](`#${this.id}`).modal(show ? 'show' : 'hide');\n\n if (show) {\n\n setTimeout(() => this.trapFocus(), 500);\n setPageScroll(false);\n\n } else {\n this.close.emit();\n setPageScroll(true);\n setTimeout(() => this.setFocusOnLastPageActiveElement(), 500);\n }\n }\n\n trapFocus() {\n\n let thisModal = window['$'](`#${this.id}`);\n let focusableEls = thisModal.find(\".modal-content\").find(FOCUSABLE_SELECTOR);\n let firstFocusableEl = focusableEls[0];\n let lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n firstFocusableEl.focus();\n\n thisModal[0].addEventListener('keydown', (e) => {\n if (e.key === 'Tab' || e.keyCode === KEYCODE_TAB) {\n\n if (e.shiftKey) /* shift + tab */ {\n if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } else /* tab */ {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n }\n });\n }\n\n setFocusOnLastPageActiveElement = () => {\n\n if (this.pageActiveElement != undefined) {\n\n if (window['$'](this.pageActiveElement).length > 0) {\n\n this.pageActiveElement.focus();\n } else {\n\n this.setFocusOnPreviusFocusableElement(this.previusFocusableElements.length - 1)\n }\n }\n }\n\n setFocusOnPreviusFocusableElement(index: number) {\n\n if (index >= 0) {\n\n if (window['$'](this.previusFocusableElements[index]).length > 0) {\n\n this.previusFocusableElements[index].focus();\n\n } else {\n\n this.setFocusOnPreviusFocusableElement(index - 1);\n }\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\n\n@Component({\n selector: 'inail-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class AlertComponent extends ModalComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n message: string;\n\n okOnClick = () => this.showModal(false);\n\n constructor(private _cdr: ChangeDetectorRef) {\n super(_cdr);\n this.logPrefix = '[inail-alert]'\n this.title = 'Messaggio informativo';\n this.width = 'S';\n this.closeButtonTitle = 'Chiudi messaggio informativo';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\n\n@Component({\n selector: 'inail-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmComponent extends ModalComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n message: string;\n @Input()\n confirmButtonLabel: string = 'Si';\n @Input()\n rejectButtonLabel: string = 'No';\n @Output()\n confirm: EventEmitter<void> = new EventEmitter();\n @Output()\n reject: EventEmitter<void> = new EventEmitter();\n @Output()\n cancel: EventEmitter<void> = new EventEmitter();\n\n constructor(private _cdr: ChangeDetectorRef) {\n super(_cdr);\n this.logPrefix = '[inail-confirm]'\n this.title = 'Conferma operazione';\n this.message = 'Confermare l\\'operazione richiesta?'\n this.width = 'S';\n this.closeButtonTitle = 'Chiudi modale di conferma';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n confirmOnClick() {\n\n this.showModal(false);\n this.confirm.emit();\n }\n\n rejectOnClick() {\n\n this.showModal(false);\n this.reject.emit();\n }\n\n cancelOnClick() {\n\n this.showModal(false);\n this.cancel.emit();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\ninterface PaginateChanges extends SimpleChanges {\n\n listSize?: ElementsChange,\n pageSize?: PageSizeChange,\n currentPage?: CurrentPageChange\n}\n\ninterface ElementsChange extends SimpleChange {\n\n currentValue: number\n}\n\ninterface PageSizeChange extends SimpleChange {\n\n currentValue: number\n}\n\ninterface CurrentPageChange extends SimpleChange {\n\n currentValue: number\n}\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\n@Component({\n selector: 'inail-table-page-selector',\n templateUrl: './inail-table-page-selector.component.html',\n styleUrls: ['./inail-table-page-selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class InailTablePageSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n tableId: string;\n\n // Obbligatorio\n @Input()\n listSize: number = 0;\n\n // Obbligatorio\n @Input()\n pageSize: number = DEFAULT_TABLE_LENGTH;\n\n // Obbligatorio se paginazione esterna\n @Input()\n currentPage: number = 1;\n\n @Output()\n select: EventEmitter<number> = new EventEmitter<number>();\n\n length: number;\n externalPagination: boolean;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-table-page-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: PaginateChanges) {\n\n super.ngOnChanges(changes);\n\n // Se si sta impostando il numero di pagina dall'esterno\n // vuol dire che si sta effettuando la paginazione dall'esterno.\n if (!this.externalPagination\n && changes.currentPage\n && changes.currentPage.firstChange\n && changes.currentPage.currentValue != undefined) {\n\n this.externalPagination = true;\n }\n\n if (changes?.pageSize && changes?.pageSize.currentValue == undefined) {\n\n this.pageSize = DEFAULT_TABLE_LENGTH;\n }\n\n if (changes?.listSize && changes?.listSize.currentValue == undefined) {\n\n this.listSize = 0;\n }\n\n if (changes?.currentPage && changes?.currentPage.currentValue == undefined) {\n\n this.currentPage = 1;\n }\n\n if (changes && (changes.pageSize || changes.listSize)) {\n\n this.calcolaNumeroPagine();\n\n if (!this.externalPagination) {\n\n this.currentPage = 1;\n }\n }\n\n if (changes?.currentPage?.currentValue != undefined) {\n\n if (changes.currentPage.currentValue > this.length) {\n\n this.currentPage = this.length;\n this.emitCurrentPage(this.currentPage);\n\n } else if (changes.currentPage.currentValue < 1) {\n\n this.currentPage = 1;\n this.emitCurrentPage(this.currentPage);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n }\n\n calcolaNumeroPagine() {\n\n this.length = Math.floor(this.listSize / this.pageSize);\n\n if ((this.listSize % this.pageSize) > 0) {\n\n this.length++;\n }\n\n if (this.length == 0 || this.length == undefined) {\n\n this.length = 1;\n }\n }\n\n get pages(): any[] {\n\n return new Array(this.length);\n }\n\n set(n: number) {\n\n if (n > 0 && n <= this.length) {\n\n if (!this.externalPagination) {\n\n this.currentPage = n;\n }\n\n this.emitCurrentPage(n);\n }\n\n this.cdr.detectChanges();\n }\n\n prev() {\n\n this.set(this.currentPage - 1);\n }\n\n next() {\n\n this.set(this.currentPage + 1);\n }\n\n emitCurrentPage(page: number) {\n this.select.emit(page);\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-table-page-length-selector',\n templateUrl: './table-page-length-selector.component.html',\n styleUrls: ['./table-page-length-selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TablePageLengthSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n selectedValue: number;\n\n @Input()\n tableId: string;\n\n @Input()\n label: string = 'Elementi per pagina';\n\n @Input()\n options: number[] = [10, 25, 50, 100];\n\n @Output()\n valueChange: EventEmitter<number> = new EventEmitter();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-table-page-length-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n @Input()\n get value(): number {\n return this.selectedValue;\n }\n\n set value(val: number) {\n\n // console.warn('set value', val, this.valueValue)\n\n if (val != this.selectedValue) {\n\n this.selectedValue = val;\n this.valueChange.emit(this.selectedValue);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\nexport class SortingInfo {\n\n property: string;\n direction: number;\n}\n\n@Component({\n selector: 'inail-th-label',\n templateUrl: './th-label.component.html',\n styleUrls: ['./th-label.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ThLabelComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n public static readonly ASC: number = 1;\n public static readonly DESC: number = -1;\n public static readonly UNSORTED: number = 0;\n\n ASC = ThLabelComponent.ASC;\n DESC = ThLabelComponent.DESC;\n UNSORTED = ThLabelComponent.UNSORTED;\n\n direction: number;\n elementRef: ElementRef;\n\n // Obbligatorio\n @Input()\n label: string;\n\n // Obbligatorio\n @Input()\n property: string;\n\n @Input()\n title: string;\n\n @Input()\n sortable: boolean;\n\n @Output()\n click: EventEmitter<SortingInfo> = new EventEmitter<SortingInfo>();\n\n constructor(private cdr: ChangeDetectorRef, element: ElementRef) {\n\n super(cdr);\n this.logPrefix = '[inail-th-label]';\n\n this.direction = ThLabelComponent.UNSORTED;\n this.elementRef = element;\n\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n getAriaSortValue(direction: number): string {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'ascending';\n break\n case ThLabelComponent.DESC:\n value = 'descending';\n break\n case ThLabelComponent.UNSORTED:\n value = 'none';\n break\n }\n\n return value;\n }\n\n onClick(event) {\n\n event.stopPropagation();\n this.emettiEventoOrdinamento();\n this.cdr.detectChanges();\n }\n\n private emettiEventoOrdinamento() {\n\n if (this.sortable && this.property) {\n\n this.direction = this.direction * -1;\n\n if (this.direction == ThLabelComponent.UNSORTED) {\n\n this.direction = ThLabelComponent.ASC;\n }\n\n let info: SortingInfo = {\n direction: this.direction,\n property: this.property\n };\n\n this.click.emit(info);\n }\n }\n\n public setAsUnsorted() {\n\n this.direction = ThLabelComponent.UNSORTED;\n }\n\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {ReplaySubject} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\n@Component({\n selector: 'inail-tr-checkbox',\n templateUrl: './tr-checkbox.component.html',\n styleUrls: ['./tr-checkbox.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TrCheckboxComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n label: string;\n @Input()\n title: string;\n @Input()\n value: string;\n // @Input()\n // checkAll: boolean = false;\n @Input()\n hiddenLabel: boolean = true;\n @Input()\n disabled: boolean = false;\n @Output()\n initComplete: ReplaySubject<void> = new ReplaySubject<void>();\n @Output()\n onclick: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n onDestroy: EventEmitter<void> = new EventEmitter<void>();\n\n public checked: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-tr-checkbox]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this.cdr.detectChanges()\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.label == undefined) {\n\n this.label = this.value\n }\n }\n\n ngAfterViewInit(): void {\n\n this.initComplete.next();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.onDestroy.emit();\n }\n\n clickHandler() {\n\n if (!this.disabled) {\n\n this.onclick.emit();\n }\n }\n\n setChecked(b: boolean) {\n\n this.checked = b;\n this.cdr.detectChanges();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent} from \"../../responsive-element.component\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {InailTablePageSelectorComponent} from \"../inail-table-page-selector/inail-table-page-selector.component\";\nimport {SortingInfo, ThLabelComponent} from \"../th-label/th-label.component\";\nimport {TrCheckboxComponent} from \"../tr-checkbox/tr-checkbox.component\";\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\ntype SortDirection = 'asc' | 'desc';\n\nconst ASC: SortDirection = 'asc';\nconst DESC: SortDirection = 'desc';\n\nexport class PaginationState {\n\n fullListSize?: number;\n pageNumber?: number;\n pageSize?: number;\n sortProperty?: string;\n sortDirection?: 'asc' | 'desc';\n}\n\ninterface TableChanges extends SimpleChanges {\n\n dataSource?: SimpleChange,\n paginationState?: SimpleChange,\n doPagination?: SimpleChange,\n noDataFound?: SimpleChange\n elementsPerPage?: SimpleChange\n}\n\n@Component({\n selector: 'inail-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TableComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n\n tableLength: number;\n currentPage: number;\n externalPaginationSorting: boolean = false;\n\n // --- Paginazione INTERNA -----------------------------------------------\n\n // Obbligatorio\n @Input()\n dataSource: any[];\n\n // Obbligatorio\n @Input()\n displayedData: any[];\n\n @Output()\n displayedDataChange = new EventEmitter<any[]>();\n\n @Input()\n doPagination: Observable<PaginationState>;\n\n @Input()\n elementsPerPage: number = DEFAULT_TABLE_LENGTH;\n\n // --- Paginazione INTERNA -----------------------------------------------\n\n // Obbligatorio\n @Input()\n paginationState: PaginationState;\n\n // -----------------------------------------------------------------------\n\n @Input()\n elementsPerPageOptions: number[] = [10, 25, 50, 100];\n\n // @Input()\n // waiting: boolean = false;\n\n // @Input()\n // waitingText: string = 'Recupero in corso...';\n\n @Input()\n noDataFound: boolean = false;\n\n @Input()\n noDataFoundText: string = 'Nessun elemento trovato';\n\n @Input()\n disablePagination: boolean = false;\n\n @Output()\n pagination = new EventEmitter<PaginationState>();\n\n @Input()\n tallRows: boolean = false;\n\n // @Input()\n // alternativeTable: boolean = false;\n\n @Input()\n caption: string;\n\n @Input()\n captionHidden: boolean = false;\n\n @Input()\n bgWhite: boolean = true;\n\n @Input()\n description: string;\n\n @Input()\n tableClass: string;\n\n @Input()\n title: string;\n\n @Input()\n titleClass: string;\n\n @Input()\n detailsLink: string;\n\n @Input()\n selectableRowValues: string[];\n\n @Output()\n detailsClick: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n checkedRowsChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n @ContentChildren(ThLabelComponent, {descendants: true})\n thLabelComponents: QueryList<ThLabelComponent>;\n\n @ContentChildren(TrCheckboxComponent, {descendants: true})\n trCheckboxComponents: QueryList<TrCheckboxComponent>;\n\n @ViewChild(InailTablePageSelectorComponent)\n tablePageSelectorComponent: InailTablePageSelectorComponent;\n\n @ViewChild('baseFooter')\n baseFooter: ElementRef;\n\n visualizzaBaseFooter: boolean = true;\n\n numeroColonne: number;\n\n // Insiemi delle Subscription agli eventi dei TrCheckboxComponent\n trcbInitSubscriptions: { [id: string]: Subscription } = {};\n trcbClickSubscriptions: { [id: string]: Subscription } = {};\n trcbDestroySubscriptions: { [id: string]: Subscription } = {};\n\n righeSelezionate: string[] = [];\n righeSelezionabili: string[] = [];\n\n getPageSize = (): number => this.externalPaginationSorting ? this.paginationState.pageSize : this.tableLength;\n getListSize = (): number => this.externalPaginationSorting ? this.paginationState.fullListSize : this.dataSource.length;\n getCurrentPage = (): number => this.externalPaginationSorting && this.paginationState ? this.paginationState.pageNumber : this.currentPage;\n\n // Operatori per gestione selezione righe\n isChecked = (trcbValue: string): boolean => this.righeSelezionate.some(value => value == trcbValue);\n isAllChecked = (): boolean => this.righeSelezionabili.length > 0 && this.righeSelezionabili.every(this.isChecked);\n isThCheckbox = (trcb: TrCheckboxComponent): boolean => document.querySelectorAll(`th #${trcb.id}`).length > 0;\n isSelezionabile = (value: string) => this.righeSelezionabili.some(valoreSelezionabile => valoreSelezionabile == value);\n\n constructor(private cdr: ChangeDetectorRef, private renderer: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-table]';\n this.detach();\n }\n\n ngOnChanges(changes: TableChanges): void {\n\n super.ngOnChanges(changes);\n\n // Controllo se la paginazione richiesta e' interna o esterna\n if (!this.externalPaginationSorting\n && changes.paginationState?.firstChange === true\n && changes.paginationState?.currentValue != undefined) {\n\n this.externalPaginationSorting = true;\n }\n\n // Verifico se e' cambiata la lista degli elementi in input.\n // Nel caso in cui si stia effettuando una paginazione interna\n // emetto il sottoinsieme inerente la prima pagina\n if (changes.dataSource != undefined\n && !changes.dataSource.firstChange\n && !this.externalPaginationSorting) {\n\n if (this.tablePageSelectorComponent) {\n\n this.tablePageSelectorComponent.currentPage = 1;\n }\n\n this.emitSubset(1);\n }\n\n // Richiesta di paginazione\n if (!this.externalPaginationSorting\n && changes.doPagination?.currentValue) {\n\n this.push(\n changes.doPagination.currentValue.subscribe((info: PaginationState) => {\n\n this.lengthOnChange(info.pageSize);\n setTimeout(() => this.doSorting(info.sortProperty, info.sortDirection), 100);\n setTimeout(() => this.pageOnChange(info.pageNumber), 200);\n })\n );\n }\n\n // Elementi per pagina\n if (changes.elementsPerPage != undefined\n && !changes.elementsPerPage.firstChange\n && !this.externalPaginationSorting) {\n\n this.lengthOnChange(this.elementsPerPage);\n }\n\n // Calcolo il numero di colonne visibili\n if (changes.noDataFound?.currentValue === true) {\n\n // setTimeout(() => this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length);\n this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;\n }\n\n if(changes.selectableRowValues?.currentValue) {\n\n this.righeSelezionabili = [...changes.selectableRowValues?.currentValue];\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.tableLength = this.externalPaginationSorting ? this.paginationState.pageSize : this.elementsPerPage;\n\n if (!this.externalPaginationSorting) {\n\n setTimeout(() => {\n // console.info('ngOnInit---', this.currentPage)\n this.emitSubset(this.currentPage || 1);\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n this.inizializzaTabella(this.thLabelComponents);\n this.lookAtThLabel(this.thLabelComponents);\n\n setTimeout(() => this.visualizzaBaseFooter = this.baseFooter?.nativeElement.childElementCount > 0);\n\n this.cdr.detectChanges();\n }\n\n ngAfterViewChecked(): void {\n\n this.gestisciTrCheckbox();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n /**\n * Gestione dei checkbox per la selezione delle righe\n */\n public gestisciTrCheckbox() {\n\n if (this.trCheckboxComponents?.length > 0) {\n\n this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n // Gestione evento initComplete\n // Effettuo la subscribe se non ne e' gia presente\n // una Subscription per quel trcb\n if (this.trcbInitSubscriptions[trcb.id] == undefined) {\n\n this.trcbInitSubscriptions[trcb.id] = trcb.initComplete.subscribe(() => {\n\n // Se l'insieme di tutti i valori selezionabili\n // non e' stato passato dall'esterno\n if (this.selectableRowValues == undefined) {\n\n // Ricalcolo i valori selezionabili\n this.righeSelezionabili = this.trCheckboxComponents.filter(trcb => !this.isThCheckbox(trcb)).map(trcb => trcb.value);\n }\n });\n }\n\n // Gestione evento click\n if (this.trcbClickSubscriptions[trcb.id] == undefined) {\n\n this.trcbClickSubscriptions[trcb.id] = trcb.onclick.subscribe(() => {\n\n if(this.isThCheckbox(trcb)) {\n\n this.checkAllOnClick();\n }\n else {\n this.checkOnClick(trcb.value);\n }\n\n this.checkedRowsChange.emit(this.righeSelezionate);\n });\n }\n\n // Gestione evento onDestroy\n // Quando un tcrb emette l'evento onDestroy\n // effettuo l'unsubscribe a tutti gli eventi ad esso collegato\n if (this.trcbDestroySubscriptions[trcb.id] == undefined) {\n\n this.trcbDestroySubscriptions[trcb.id] = trcb.onDestroy.subscribe(() => {\n\n this.trcbInitSubscriptions[trcb.id]?.unsubscribe();\n this.trcbClickSubscriptions[trcb.id]?.unsubscribe();\n this.trcbDestroySubscriptions[trcb.id]?.unsubscribe();\n\n // In questo modo evito che gli oggetti crescano in maniera incontrollata\n delete this.trcbInitSubscriptions[trcb.id];\n delete this.trcbClickSubscriptions[trcb.id];\n delete this.trcbDestroySubscriptions[trcb.id];\n });\n }\n });\n\n // Indico ad un trcb se e' selezionato.\n this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n if (trcb) {\n\n if(this.isThCheckbox(trcb)) {\n\n trcb.setChecked(this.isAllChecked());\n }\n else {\n trcb.setChecked(this.isChecked(trcb.value));\n }\n }\n });\n }\n }\n\n /**\n * Click di un trcb\n *\n * @param valueCb\n * @private\n */\n private checkOnClick(valueCb: string) {\n\n if (this.isChecked(valueCb)) {\n\n this.righeSelezionate = this.righeSelezionate.filter(value => value != valueCb);\n } else {\n\n this.righeSelezionate.push(valueCb);\n }\n }\n\n checkAllOnClick() {\n\n if (this.isAllChecked()) {\n\n this.righeSelezionate = this.righeSelezionate.filter(value => !this.isSelezionabile(value));\n\n } else {\n\n this.righeSelezionate = this.righeSelezionate.concat(this.righeSelezionabili.filter(value => !this.isChecked(value)));\n }\n }\n\n /**\n * Effettua varie operazioni di inizializzazione della tabella\n */\n public inizializzaTabella(thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n // Inizializzo tutti i th della tabella\n thLabelComponents.forEach(\n (thLabel: ThLabelComponent) => {\n\n this.modificaTh(thLabel);\n })\n }\n }\n\n /**\n * Si mette in ascolto sugli eventi emessi dai thLabelComponents dati in input\n * per poter eseguire le opportune azioni\n *\n * @param thLabelComponents\n */\n public lookAtThLabel(thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n this.thLabelComponents = thLabelComponents;\n\n thLabelComponents.forEach(\n (thLabel: ThLabelComponent) => {\n\n if (thLabel) {\n\n // Subscribe al click del th label\n this.push(\n thLabel.click.subscribe(\n (info: SortingInfo) => {\n\n this.performSorting(info, thLabel);\n }\n )\n );\n }\n }\n )\n }\n }\n\n /**\n *\n * @param sortProperty\n * @param sortDirection\n */\n public doSorting(sortProperty: string, sortDirection: string) {\n\n let info: SortingInfo = {\n property: sortProperty,\n direction: sortDirection == ASC ? ThLabelComponent.ASC : sortDirection == DESC ? ThLabelComponent.DESC : undefined\n }\n\n let thLabel: ThLabelComponent = this.thLabelComponents.find(item => item.property == sortProperty);\n\n this.performSorting(info, thLabel)\n }\n\n /**\n *\n * @param info\n * @param thLabel\n */\n performSorting(info: SortingInfo, thLabel: ThLabelComponent) {\n\n if (thLabel != undefined && info != undefined && info.property != undefined) {\n\n let eventoPaginazione: PaginationState = {};\n\n eventoPaginazione.sortProperty = info.property;\n eventoPaginazione.sortDirection = info.direction == ThLabelComponent.ASC ? ASC : info.direction == ThLabelComponent.DESC ? DESC : undefined;\n eventoPaginazione.pageNumber = 1;\n\n this.resetDirectionSorting(thLabel, this.thLabelComponents);\n this.modificaTh(thLabel);\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione.fullListSize = this.paginationState.fullListSize;\n eventoPaginazione.pageSize = this.paginationState.pageSize;\n } else {\n\n this.ordina(info);\n this.emitSubset(1);\n }\n\n this.pagination.emit(eventoPaginazione);\n }\n }\n\n /**\n * Reimposta ad unsorted tutti i th label ad eccezione\n * di quelli dato in input\n *\n * @param thLabel\n * @param thLabelComponents\n */\n private resetDirectionSorting(thLabel: ThLabelComponent, thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n thLabelComponents.forEach((item: ThLabelComponent) => {\n\n if (item && item.property != thLabel.property) {\n\n item.setAsUnsorted();\n this.modificaTh(item);\n }\n })\n }\n }\n\n /**\n * Modifica l'elemento th che contiene il ThLabelComponent\n */\n private modificaTh(thLabelComponent: ThLabelComponent) {\n\n if (thLabelComponent && thLabelComponent.sortable === true) {\n\n let th: HTMLElement = thLabelComponent.elementRef.nativeElement.parentNode;\n\n if (th) {\n\n this.removeSortClass(th);\n this.renderer.addClass(th, this.getThSortClass(thLabelComponent.direction));\n\n th.setAttribute('aria-sort', this.getAriaSortValue(thLabelComponent.direction));\n\n if (thLabelComponent.direction == ThLabelComponent.UNSORTED) {\n\n th.removeAttribute('aria-sort');\n }\n }\n }\n }\n\n /**\n *\n * @param element\n */\n private removeSortClass(element: HTMLElement) {\n\n this.renderer.removeClass(element, 'sorting_asc');\n this.renderer.removeClass(element, 'sorting_desc');\n this.renderer.removeClass(element, 'sorting');\n }\n\n /**\n *\n * @param direction\n */\n private getThSortClass(direction: number) {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'sorting_asc';\n break\n case ThLabelComponent.DESC:\n value = 'sorting_desc';\n break\n case ThLabelComponent.UNSORTED:\n value = 'sorting';\n break\n }\n\n return value;\n }\n\n /**\n *\n * @param direction\n */\n private getAriaSortValue(direction: number): string {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'ascending';\n break\n case ThLabelComponent.DESC:\n value = 'descending';\n break\n case ThLabelComponent.UNSORTED:\n value = 'none';\n break\n }\n\n return value;\n }\n\n private ordina(info: SortingInfo) {\n\n if (info && this.dataSource && info.property) {\n\n info.direction = info.direction * -1;\n\n if (info.direction == ThLabelComponent.UNSORTED) {\n\n info.direction = ThLabelComponent.ASC;\n }\n\n this.dataSource.sort(this.propertyComparator(info.property, info.direction));\n this.dataSource = [].concat(this.dataSource);\n\n this.cdr.detectChanges();\n }\n }\n\n private propertyComparator(property: string, direction: number) {\n\n let pList = property ? property.split('.') : undefined;\n\n function estraiValore(e: any, pList: string[]): any {\n\n if (e && pList) {\n\n if (pList.length > 1) {\n\n return estraiValore(e[pList[0]], pList.slice(1, pList.length));\n } else {\n\n return e[pList[0]];\n }\n }\n }\n\n return function (e1, e2) {\n\n return (estraiValore(e1, pList) > estraiValore(e2, pList) ? ThLabelComponent.DESC : ThLabelComponent.ASC) * direction;\n }\n }\n\n lengthOnChange(value: number) {\n\n if (value != undefined && (!this.paginationState || value != this.paginationState.pageSize)) {\n\n let eventoPaginazione: PaginationState = {};\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione = {...this.paginationState};\n\n } else if (this.tableLength != value) {\n\n this.tableLength = value;\n eventoPaginazione = {};\n\n this.emitSubset(1);\n }\n\n eventoPaginazione.pageSize = value;\n eventoPaginazione.pageNumber = 1;\n\n this.pagination.emit(eventoPaginazione);\n }\n }\n\n pageOnChange(page: number) {\n\n if (page != undefined) {\n\n let eventoPaginazione: PaginationState;\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione = {...this.paginationState};\n\n } else {\n\n eventoPaginazione = {};\n this.emitSubset(page);\n }\n\n eventoPaginazione.pageNumber = page;\n this.pagination.emit(eventoPaginazione);\n }\n\n this.cdr.detectChanges();\n }\n\n emitSubset(page: number) {\n\n if (page && !this.externalPaginationSorting && this.dataSource != undefined) {\n\n let firstElementIndex = this.tableLength * (page - 1);\n\n let lastIndex: number = Number(firstElementIndex) + Number(this.tableLength);\n\n let a: any[] = this.dataSource.slice(firstElementIndex, lastIndex);\n\n this.currentPage = page;\n this.displayedDataChange.emit(a);\n }\n }\n\n visualizzaPaginazione(): boolean {\n\n return !this.disablePagination\n && (this.dataSource != undefined || (this.externalPaginationSorting != undefined && this.paginationState != undefined));\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\n@Component({\n selector: 'inail-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.css']\n})\nexport class InputFileComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n placeholder: string;\n @Input()\n chooseButtonText: string = 'Scegli il file';\n @Input()\n addButtonText: string = 'Aggiungi';\n @Input()\n chooseButton: boolean = true;\n @Input()\n addButton: boolean = true;\n /** Estensioni accettate separate da virgola (esempio: \".pdf, .txt, .doc\") */\n @Input()\n accept: string;\n @Output()\n fileChange = new EventEmitter<File>();\n fileModel: File;\n\n @ViewChild('inputText', {static: true})\n inputText: ElementRef<HTMLElement>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-file]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n this.placeholder = this.getNotBlankValue(this.placeholder);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.inputText);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.inputText.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n promptUpload() {\n document.getElementById(this.id).click();\n }\n\n changeModel($event: Event) {\n\n // @ts-ignore\n this.fileModel = $event.target.files && $event.target.files[0];\n\n if(!this.addButton) {\n this.fileChange.emit(this.fileModel);\n }\n\n this.cdr.detectChanges();\n }\n\n reset() {\n\n this.fileModel = undefined;\n this.fileChange.emit(undefined);\n this.cdr.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {FormElementComponent} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\n@Component({\n selector: 'inail-input-number',\n templateUrl: './input-number.component.html',\n styleUrls: ['./input-number.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumberComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputNumberComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLInputElement>;\n\n inputValue: number;\n previousValue: number;\n\n // @Input()\n // defaultValue: number;\n @Input()\n max: number;\n @Input()\n min: number;\n @Input()\n step: number;\n @Input()\n numberOfDecimals: number;\n @Input()\n hideArrows: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<number>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-number]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes.value) {\n\n this.previousValue = changes.value.previousValue;\n\n this.normalizzaValore();\n\n if (!changes.value.firstChange) {\n\n this.hasError = false;\n this.error = undefined;\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit()\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`);\n this.setValue(value);\n }\n\n get value() {\n\n return this.inputValue;\n }\n\n writeValue(value: number): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: number) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n private normalizzaValore() {\n\n setTimeout(() => {\n\n if (!this.disabled) {\n\n if (this.min != undefined && this.inputValue < this.min) {\n\n this.value = this.previousValue != undefined ? this.previousValue : this.min;\n\n } else if (this.max != undefined && this.inputValue > this.max) {\n\n this.value = this.previousValue != undefined ? this.previousValue : this.max;\n }\n }\n\n this.cdr.detectChanges();\n })\n }\n\n onKeyUp() {\n\n if (this.inputValue != undefined && !this.checkDecimal()) {\n\n this.inputValue = this.previousValue;\n this.valueChange.emit(this.inputValue);\n }\n\n // Serve per fare in modo che non rimanga visualizzato\n // qualcosa di diverso da un numero.\n // Nativamente l'elemento html restituisce undefined\n // se si prova a scrivere qualcosa diverso da un numero\n // ma mantiene il valore non numerico visualizzato nell'input\n if (this.inputValue == undefined) {\n\n // Commentata funzionalita perche' non permetteva l'inserimento\n // di numeri negativi\n // this.formControlElement.nativeElement.value = undefined;\n }\n\n this.cdr.detectChanges();\n }\n\n checkDecimal() {\n\n if (this.numberOfDecimals != undefined) {\n\n let a = (String(this.inputValue)).split('.');\n\n return (this.numberOfDecimals > 0 && (a.length == 1 || a[1].length <= this.numberOfDecimals)) || (this.numberOfDecimals == 0 && a.length == 1);\n }\n\n return true;\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent} from \"../../responsive-element.component\";\n\n@Component({\n selector: 'inail-container',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ContainerComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n hidden: boolean = false;\n\n @Input()\n rendered: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-container]';\n this.xs = undefined;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit()\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isNotBlankOrNull, isNumber, isString} from \"../../../../utils/common.operators\";\n\nexport interface SelectorItem {\n\n label: string;\n code?: string;\n index?: number;\n title?: string;\n required?: boolean;\n error?: boolean;\n}\n\n@Component({\n selector: 'inail-selector',\n templateUrl: './selector.component.html',\n styleUrls: ['./selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectorComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n items: SelectorItem[];\n\n @Input()\n showNumber: boolean = false;\n\n // @Input()\n // showSeparator: boolean = false;\n\n @Input()\n separator: string;\n\n @Input()\n fullNavigation: boolean = true;\n\n @Input()\n contentsHidden: boolean = true;\n\n @Input()\n currentItem: number = 0;\n\n @Output()\n currentItemChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n itemChange: EventEmitter<SelectorItem> = new EventEmitter<SelectorItem>();\n\n @Input()\n switchToFirstError: Observable<void>;\n\n @Input()\n switchTo: Observable<number | string | SelectorItem>;\n\n @Input()\n prevButtonTitle: string = 'scorri selettore a destra';\n\n @Input()\n nextButtonTitle: string = 'scorri selettore a sinistra';\n\n @ViewChild(\"prevButton\")\n prevButton: ElementRef<HTMLButtonElement>;\n\n @ViewChild(\"nextButton\")\n nextButton: ElementRef<HTMLButtonElement>;\n\n @ViewChild(\"slickTrack\")\n slickTrack: ElementRef<HTMLElement>\n\n @ViewChildren(\"slickSlide\")\n slickSlide: QueryList<ElementRef<HTMLElement>>\n\n @ContentChildren(ContainerComponent, {descendants: true})\n contenuti: QueryList<ContainerComponent>;\n\n inizializzazioneContenutiCompletata: boolean = false;\n\n totalTranslate: number = 0;\n\n getItemLabel = (item: SelectorItem, isLast) => `${item.label}${item.required ? ' *' : ''}${isNotBlankOrNull(this.separator) ? ' ' : ''}${!isLast && isNotBlankOrNull(this.separator) ? this.separator : ''}`;\n isActive = (stepIndex: number): boolean => (this.fullNavigation) || stepIndex <= this.currentItem;\n\n constructor(private cdr: ChangeDetectorRef, private re2: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.switchToFirstError?.currentValue) {\n\n this.push(\n changes.switchToFirstError.currentValue.subscribe(\n () => {\n\n let firstErrorItem: SelectorItem = this.items.find((step: SelectorItem) => step.error);\n\n if (firstErrorItem) {\n this.itemOnClick(firstErrorItem);\n }\n }\n )\n );\n }\n\n if (changes?.switchTo?.currentValue) {\n\n this.push(\n changes.switchTo.currentValue.subscribe((ref: number | string | SelectorItem) => this.itemOnClick(ref))\n );\n }\n\n if (changes.items) {\n\n this.inizializzaItems();\n }\n\n // if (changes.currentItem && !changes.currentItem.firstChange) {\n //\n // this.inizializzaContenuti(this.contenuti);\n // }\n\n if (changes.contentsHidden && this.contenuti?.length) {\n\n this.inizializzaContenuti(this.contenuti);\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.currentItem == undefined) {\n\n this.setCurrentItem(0);\n }\n\n this.inizializzaItems();\n }\n\n ngAfterViewInit() {\n\n this.emitDebug('Contenitori interni');\n this.emitDebug(this.contenuti);\n this.inizializzaContenuti(this.contenuti);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n private setCurrentItem(index: number) {\n\n this.currentItem = index;\n this.currentItemChange.emit(this.currentItem);\n }\n\n private inizializzaItems() {\n\n if (this.items) {\n\n this.items.forEach((item: SelectorItem, index) => {\n\n if (item) {\n\n item.index = index\n }\n });\n }\n }\n\n public inizializzaContenuti(contenuti: QueryList<ContainerComponent>) {\n\n this.contenuti = contenuti;\n\n if (this.contenuti?.length > 0) {\n\n let item = this.items.find(step => step.index == this.currentItem);\n this.showContent(item);\n setTimeout(() => {\n this.inizializzazioneContenutiCompletata = true;\n this.cdr.detectChanges();\n });\n }\n }\n\n isContainerItem = (item: SelectorItem, container: ContainerComponent, index: number): boolean => item.code ? container.id == item.code : index == item.index;\n\n showContent(item: SelectorItem) {\n\n if (item) {\n\n // Prima nascondo\n this.contenuti.forEach((container: ContainerComponent) => this.modificaVisibilita(container, false));\n\n // Poi visualizzo\n let daVisualizzare: ContainerComponent = this.contenuti.find((container: ContainerComponent, index: number) => this.isContainerItem(item, container, index));\n this.modificaVisibilita(daVisualizzare, true);\n }\n }\n\n modificaVisibilita(container: ContainerComponent, show: boolean) {\n\n if (container) {\n\n if (this.contentsHidden) {\n\n container.rendered = true;\n container.hidden = !show;\n\n } else {\n\n container.rendered = show;\n container.hidden = false;\n }\n\n container.detectChanges();\n }\n }\n\n itemOnClick(ref: number | string | SelectorItem) {\n\n let item: SelectorItem;\n\n if (isNumber(ref)) {\n\n item = this.items.find((i: SelectorItem) => i.index == ref);\n } else if (isString(ref)) {\n\n item = this.items.find((i: SelectorItem) => i.code == ref);\n } else {\n item = ref as SelectorItem;\n }\n\n if (item) {\n\n if (item.index < this.currentItem || (item.index > this.currentItem)) {\n\n this.setCurrentItem(item.index)\n this.itemChange.emit(item);\n }\n\n if (this.contenuti?.length > 0) {\n\n this.showContent(item);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n prevButtonOnClick() {\n\n this.translate(120);\n this.cdr.detectChanges();\n }\n\n nextButtonOnClick() {\n\n this.translate(-120);\n this.cdr.detectChanges();\n }\n\n translate = (px: number) => {\n\n this.totalTranslate += px;\n this.re2.setStyle(this.slickTrack.nativeElement, 'transform', `translate(${this.totalTranslate}px)`);\n };\n\n getAriaLabelValue(item: SelectorItem) {\n\n if (item.index == this.currentItem) {\n\n return 'Step corrente';\n } else if (item.index < this.currentItem) {\n\n return 'Step precedente';\n } else {\n return 'Step successivo';\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges, ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {SelectorComponent, SelectorItem} from \"../selector/selector.component\";\nimport {CHANGE_DETECTION_STRATEGY, LogEvent} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isString} from \"../../../../utils/common.operators\";\n\nexport interface WizardStep extends SelectorItem {\n}\n\n@Component({\n selector: 'inail-wizard',\n templateUrl: './wizard.component.html',\n styleUrls: ['./wizard.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class WizardComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n steps: WizardStep[];\n\n showNumber: boolean = true;\n separator: string = '>';\n\n @Input()\n contentsHidden: boolean = true;\n\n @Input()\n currentStep: number = 0;\n\n @Output()\n currentStepChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n stepChange: EventEmitter<WizardStep> = new EventEmitter<WizardStep>();\n\n @Input()\n switchToFirstError: Observable<void>;\n\n @Input()\n switchTo: EventEmitter<number | string | WizardStep> = new EventEmitter<number | string | WizardStep>();\n\n @Input()\n prevButtonTitle: string = 'scorri wizard a destra';\n\n @Input()\n nextButtonTitle: string = 'scorri wizard a sinistra';\n\n @Input()\n next: Observable<void>;\n\n @Input()\n prev: Observable<void>;\n\n @ContentChildren(ContainerComponent, {descendants: true})\n contenuti: QueryList<ContainerComponent>;\n\n @ViewChild(SelectorComponent)\n selectorComponent: SelectorComponent\n\n constructor(private cdr: ChangeDetectorRef, private re2: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-wizard]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.next?.currentValue) {\n\n this.push(\n changes?.next?.currentValue.subscribe(\n () => {\n\n if (this.currentStep < this.steps.length - 1) {\n\n this.currentStep = this.currentStep + 1;\n this.switchTo?.emit(this.currentStep);\n // this.currentStepChange.emit(this.currentStep);\n }\n }\n )\n );\n }\n\n if (changes?.prev?.currentValue) {\n\n this.push(\n changes.prev.currentValue.subscribe(\n () => {\n\n if (this.currentStep > 0) {\n\n this.currentStep = this.currentStep - 1;\n this.switchTo?.emit(this.currentStep);\n // this.currentStepChange.emit(this.currentStep);\n }\n }\n )\n );\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n }\n\n ngAfterViewInit() {\n\n this.emitDebug('Contenitori interni');\n this.emitDebug(this.contenuti);\n this.selectorComponent.inizializzaContenuti(this.contenuti);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n emitWizardLog(log: LogEvent) {\n\n if (isString(log.message)) {\n\n log.message = (log.message as string).replace('[inail-selector]', this.logPrefix);\n }\n\n this.log.emit(log);\n }\n\n currentStepChangeHandler(index: number) {\n\n this.currentStep = index;\n this.currentStepChange.emit(index);\n }\n\n stepChangeHandler($event: SelectorItem) {\n\n this.stepChange.emit($event);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {BaseComponent} from './components/core/base.component';\nimport {BasicUxElementComponent} from \"./components/core/basic-ux-element.component\";\nimport {ResponsiveElementComponent} from \"./components/core/responsive-element.component\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {CommonModule, DatePipe} from \"@angular/common\";\nimport {PreComponent} from './components/utilities/pre/pre.component';\nimport {StatePropertieComponent} from './components/utilities/state-propertie/state-propertie.component';\nimport {FormElementStatePropertieComponent} from './components/utilities/form-element-state-propertie/form-element-state-propertie.component';\nimport {FooterComponent} from \"./components/core/layout/footer/footer.component\";\nimport {HttpClientModule} from \"@angular/common/http\";\nimport {NavigazioneInternaComponent} from \"./components/core/layout/navigazione-interna/navigazione-interna.component\";\nimport {NavigazionePrincipaleComponent} from \"./components/core/layout/navigazione-principale/navigazione-principale.component\";\nimport {MenuIntranetComponent} from \"./components/core/layout/menu-intranet/menu-intranet.component\";\nimport {NavigazioneUtenteComponent} from \"./components/core/layout/navigazione-utente/navigazione-utente.component\";\nimport {HeaderComponent} from \"./components/core/layout/header/header.component\";\nimport {LoaderComponent} from \"./components/core/layout/loader/loader.component\";\nimport {TriggerSliderMenuButtonComponent} from \"./components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component\";\nimport {InailLayoutComponent} from \"./components/core/layout/inail-layout/inail-layout.component\";\nimport {NavigazioneSecondariaComponent} from \"./components/core/layout/navigazione-secondaria/navigazione-secondaria.component\";\nimport {BreadcrumbComponent} from \"./components/core/layout/breadcrumb/breadcrumb.component\";\nimport {RouterModule} from \"@angular/router\";\nimport {InputTextComponent} from \"./components/core/form/input-text/input-text.component\";\nimport {FormElementComponent} from \"./components/core/form/form-element.component\";\nimport {SelectComponent} from \"./components/core/form/select/select.component\";\nimport {FormGreyComponent} from \"./components/core/ux/form-grey/form-grey.component\";\nimport {PageTitleComponent} from \"./components/core/ux/page-title/page-title.component\";\nimport {FeedbackComponent} from \"./components/core/ux/feedback/feedback.component\";\nimport {MenuComponent} from \"./components/core/layout/menu/menu.component\";\nimport {AccordionComponent} from \"./components/core/ux/accordion/accordion.component\";\nimport {TabGroupComponent} from \"./components/core/ux/tab-group/tab-group.component\";\nimport {TabPaneComponent} from \"./components/core/ux/tab-pane/tab-pane.component\";\nimport {ButtonComponent} from \"./components/core/ux/button/button.component\";\nimport {PopoverComponent} from './components/core/ux/popover/popover.component';\nimport {TextareaComponent} from './components/core/form/textarea/textarea.component';\nimport {InputDateComponent} from './components/core/form/input-date/input-date.component';\nimport {RadioSelectComponent} from './components/core/form/radio-select/radio-select.component';\nimport {CheckboxComponent} from './components/core/form/checkbox/checkbox.component';\nimport {ModalComponent} from './components/core/ux/modal/modal.component';\nimport {AlertComponent} from './components/core/ux/alert/alert.component';\nimport {ConfirmComponent} from './components/core/ux/confirm/confirm.component';\nimport {InailTablePageSelectorComponent} from './components/core/table/inail-table-page-selector/inail-table-page-selector.component';\nimport {TablePageLengthSelectorComponent} from './components/core/table/table-page-length-selector/table-page-length-selector.component';\nimport {TableComponent} from './components/core/table/table/table.component';\nimport {ThLabelComponent} from './components/core/table/th-label/th-label.component';\nimport {InputFileComponent} from './components/core/form/input-file/input-file.component';\nimport {InputNumberComponent} from './components/core/form/input-number/input-number.component';\nimport {SelectorComponent} from './components/core/ux/selector/selector.component';\nimport {WizardComponent} from './components/core/ux/wizard/wizard.component';\nimport {ContainerComponent} from './components/core/ux/container/container.component';\nimport {TrCheckboxComponent} from './components/core/table/tr-checkbox/tr-checkbox.component';\n\n@NgModule({\n declarations: [\n BaseComponent,\n BasicUxElementComponent,\n ResponsiveElementComponent,\n FormElementComponent,\n InputTextComponent,\n PreComponent,\n StatePropertieComponent,\n FormElementStatePropertieComponent,\n FooterComponent,\n SelectComponent,\n NavigazioneInternaComponent,\n NavigazionePrincipaleComponent,\n MenuIntranetComponent,\n NavigazioneUtenteComponent,\n HeaderComponent,\n LoaderComponent,\n TriggerSliderMenuButtonComponent,\n NavigazioneSecondariaComponent,\n InailLayoutComponent,\n BreadcrumbComponent,\n FormGreyComponent,\n PageTitleComponent,\n FeedbackComponent,\n MenuComponent,\n AccordionComponent,\n TabGroupComponent,\n TabPaneComponent,\n ButtonComponent,\n PopoverComponent,\n TextareaComponent,\n InputDateComponent,\n RadioSelectComponent,\n CheckboxComponent,\n ModalComponent,\n AlertComponent,\n ConfirmComponent,\n InailTablePageSelectorComponent,\n TablePageLengthSelectorComponent,\n TableComponent,\n ThLabelComponent,\n InputFileComponent,\n InputNumberComponent,\n SelectorComponent,\n WizardComponent,\n ContainerComponent,\n TrCheckboxComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n RouterModule\n ],\n exports: [\n InputTextComponent,\n FooterComponent,\n SelectComponent,\n NavigazioneInternaComponent,\n NavigazionePrincipaleComponent,\n MenuIntranetComponent,\n NavigazioneUtenteComponent,\n HeaderComponent,\n LoaderComponent,\n TriggerSliderMenuButtonComponent,\n NavigazioneSecondariaComponent,\n InailLayoutComponent,\n BreadcrumbComponent,\n FormGreyComponent,\n PageTitleComponent,\n FeedbackComponent,\n MenuComponent,\n AccordionComponent,\n TabGroupComponent,\n TabPaneComponent,\n ButtonComponent,\n PopoverComponent,\n TextareaComponent,\n InputDateComponent,\n RadioSelectComponent,\n CheckboxComponent,\n ModalComponent,\n AlertComponent,\n ConfirmComponent,\n InailTablePageSelectorComponent,\n TablePageLengthSelectorComponent,\n TableComponent,\n ThLabelComponent,\n InputFileComponent,\n InputNumberComponent,\n SelectorComponent,\n WizardComponent,\n ContainerComponent,\n TrCheckboxComponent\n ],\n providers: [DatePipe]\n})\nexport class NgInailCommonModule {\n}\n","/*\n * Public API Surface of ng-inail-common\n */\n\n// ----- Componenti ----------------------------------------------------------------------------------\nexport * from './lib/ng-inail-common.module';\nexport * from './lib/components/core/base.component';\nexport * from './lib/components/core/responsive-element.component';\n\n// Form controls\nexport * from './lib/components/core/form/input-text/input-text.component';\nexport * from './lib/components/core/form/select/select.component';\nexport * from './lib/components/core/form/textarea/textarea.component';\nexport * from './lib/components/core/form/input-date/input-date.component';\nexport * from './lib/components/core/form/radio-select/radio-select.component';\nexport * from './lib/components/core/form/checkbox/checkbox.component';\nexport * from './lib/components/core/form/input-file/input-file.component';\nexport * from './lib/components/core/form/input-number/input-number.component';\n\n// Layout\nexport * from './lib/components/core/layout/footer/footer.component';\nexport * from './lib/components/core/layout/navigazione-interna/navigazione-interna.component';\nexport * from './lib/components/core/layout/navigazione-principale/navigazione-principale.component';\nexport * from './lib/components/core/layout/menu-intranet/menu-intranet.component';\nexport * from './lib/components/core/layout/navigazione-utente/navigazione-utente.component';\nexport * from './lib/components/core/layout/header/header.component';\nexport * from './lib/components/core/layout/loader/loader.component';\nexport * from './lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component';\nexport * from './lib/components/core/layout/breadcrumb/breadcrumb.component';\nexport * from './lib/components/core/layout/menu/menu.component';\nexport * from './lib/components/core/layout/inail-layout/inail-layout.component';\nexport * from './lib/components/core/layout/inail-layout/static-resources';\n\n// Ux\nexport * from './lib/components/core/ux/form-grey/form-grey.component';\nexport * from './lib/components/core/ux/page-title/page-title.component';\nexport * from './lib/components/core/ux/feedback/feedback.component';\nexport * from './lib/components/core/ux/accordion/accordion.component';\nexport * from './lib/components/core/ux/tab-group/tab-group.component';\nexport * from './lib/components/core/ux/tab-pane/tab-pane.component';\nexport * from './lib/components/core/ux/button/button.component';\nexport * from './lib/components/core/ux/popover/popover.component';\nexport * from './lib/components/core/ux/modal/modal.component';\nexport * from './lib/components/core/ux/alert/alert.component';\nexport * from './lib/components/core/ux/confirm/confirm.component';\nexport * from './lib/components/core/ux/wizard/wizard.component';\nexport * from './lib/components/core/ux/selector/selector.component';\nexport * from './lib/components/core/ux/container/container.component';\n\n// Table\nexport * from './lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component';\nexport * from './lib/components/core/table/table-page-length-selector/table-page-length-selector.component';\nexport * from './lib/components/core/table/table/table.component';\nexport * from './lib/components/core/table/th-label/th-label.component';\nexport * from './lib/components/core/table/tr-checkbox/tr-checkbox.component';\n\n// ----- Operatori e Types-----------------------------------------------------------------------------------\nexport * from './lib/utils/common.operators'\nexport * from './lib/utils/date.operators'\nexport * from './lib/utils/types'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {BasicUxElementComponent as ɵa} from './lib/components/core/basic-ux-element.component';\nexport {FormElementComponent as ɵb} from './lib/components/core/form/form-element.component';\nexport {TriggerSliderMenuButtonComponent as ɵf} from './lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component';\nexport {FormElementStatePropertieComponent as ɵe} from './lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component';\nexport {PreComponent as ɵc} from './lib/components/utilities/pre/pre.component';\nexport {StatePropertieComponent as ɵd} from './lib/components/utilities/state-propertie/state-propertie.component';"],"names":["isFunction","LogLevel","ChangeDetectionStrategy","EventEmitter","Component","ViewEncapsulation","ChangeDetectorRef","Output","Input","first","finalize","DomSanitizer","HttpClient","DEFAULT_URL","HttpHeaders","tap","ViewChild","BehaviorSubject","filter","NavigationEnd","Router","SetFocusStrategy","Renderer2","ElementRef","ContentChildren","HostListener","Observable","NG_VALUE_ACCESSOR","forwardRef","DatePipe","clone","ViewChildren","ReplaySubject","DEFAULT_TABLE_LENGTH","NgModule","CommonModule","FormsModule","ReactiveFormsModule","HttpClientModule","RouterModule"],"mappings":"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C;8BAKvCT,WAAM;0BAONC,UAAK;+BAGLA,UAAK;gCAGLA,UAAK;yBAGLA,UAAK;wBA4JLA,UAAK;;IAgER;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;ICzdA,IAAMsB,OAAK,GAAG,UAAI,GAAM,IAAQ,OAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAA,CAAC;;;QAgElC,wCAAoB;QAyB5D,8BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAjB1C,mBAAa,GAAW,EAAE,CAAC;YAW3B,YAAM,GAA8B,IAAI3B,iBAAY,EAAe,CAAC;YAEpE,iBAAW,GAAyB,IAAIA,iBAAY,EAAU,CAAC;YAE/D,aAAO,GAAG,cAAM,OAAA,KAAI,CAAC,IAAI,IAAO,KAAI,CAAC,EAAE,UAAO,GAAA,CAAC;YAI7C,KAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACxC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,0CAAW,GAAX,UAAY,OAA2B;;YAErC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,YAAY,EAAE;gBAElC,IAAI,CAAC,OAAO,GAAG2B,OAAK,OAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,YAAY,CAAC,CAAC;gBAErD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;oBAEtB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;wBAEzB,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;qBACnB;iBACF,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,OAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,YAAY,YAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,YAAY,CAAA,KAAK,IAAI,CAAC,IAAI,EAAE;gBAEhF,IAAI,WAAS,GAAW,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAE1G,IAAI,WAAS,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;oBAE/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAc,EAAE,CAAc,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,WAAS,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,WAAS,GAAG,CAAC,GAAA,CAAC,CAAC;iBAC3H;aACF;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,uCAAQ,GAAR;YAAA,iBAeC;YAbC,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEd,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,MAAe;oBAEnC,KAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC/B,IAAI,OAAO,GAAiC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAA,CAAC,CAAC;oBACrG,QAAQ,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,KAAI,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;iBACjF,CAAC,CACH,CAAC;aACH;SACF;QAED,sBACI,uCAAK;iBAMT;gBAEE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;iBAVD,UACU,KAAK;gBAEb,IAAI,CAAC,SAAS,CAAC,uBAAqB,IAAI,CAAC,aAAa,YAAO,KAAO,CAAC,CAAA;gBACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;;;WAAA;QAOD,yCAAU,GAAV,UAAW,KAAa;YAEtB,IAAI,CAAC,SAAS,CAAC,iBAAe,KAAO,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,uCAAQ,GAAR,UAAS,KAAa;YAAtB,iBAuBC;YArBC,IAAI,CAAC,SAAS,CAAC,eAAa,KAAO,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,EAAE;gBAE/B,UAAU,CAAC;oBAET,KAAI,CAAC,SAAS,CAAC,mBAAiB,KAAI,CAAC,aAAa,YAAO,KAAO,CAAC,CAAC;oBAClE,KAAI,CAAC,aAAa,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjC,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBAEzB,KAAI,CAAC,SAAS,CAAC,2BAAyB,KAAI,CAAC,aAAa,MAAG,CAAC,CAAC;oBAC/D,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;oBAC1C,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,MAAK,KAAI,CAAC,aAAa,GAAA,CAAC,CAAC,CAAC;oBAC9E,KAAI,CAAC,UAAU,EAAE,CAAC;oBAElB,IAAI,KAAI,CAAC,QAAQ,EAAE;wBAEjB,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;qBACnC;iBACF,CAAC,CAAC;aACJ;SACF;QAED,8CAAe,GAAf;YAEE,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAExC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACjC;QAED,0CAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KArIH,CAA0C,oBAAoB;;gBAd7D1B,cAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,g/EAA4C;oBAE5C,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE;wBACT;4BACE,OAAO,EAAEsB,uBAAiB;4BAC1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ;qBACF;;iBACF;;;gBAlFCtB,sBAAiB;;;qCAqFhBU,cAAS,SAAC,aAAa;6BAGvBe,iBAAY,SAAC,YAAY;0BAKzBvB,UAAK;uBAELA,UAAK;uBAELA,UAAK;yBAELA,UAAK;yBAELD,WAAM;8BAENA,WAAM;wBA0DNC,UAAK;;IA0DR;;;;;;QAMa,iBAAiB,GAAG,UAAC,aAA4B,EAAE,aAAqB,IACnF,QAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,KAAK,IAAI,aAAa,GAAA,CAAC,IAAI,CAAC;;;QCpL1E,qCAAoB;QAiCzD,2BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAtB1C,mBAAa,GAAG,IAAIL,iBAAY,EAAE,CAAC;YAGnC,mBAAa,GAAG,IAAIA,iBAAY,EAAS,CAAC;YAG1C,WAAK,GAAG,IAAIA,iBAAY,EAAS,CAAC;YAGlC,iBAAW,GAAG,IAAIA,iBAAY,EAAiB,CAAC;YAEhD,WAAK,GAAkB,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;YAElG,eAAS,GAAG;gBAEV,KAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAI,CAAC,IAAI,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC;gBAC9B,KAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC;gBAClC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;aAChC,CAAC;YAIA,KAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;YACpC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,uCAAW,GAAX,UAAY,OAAwB;YAElC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;;YAE3B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAE9B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,oCAAQ,GAAR;YAAA,iBAkBC;YAhBC,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEd,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,MAAe;oBACnC,KAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC/B,QAAQ,CAAC,KAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;iBACzD,CAAC,CACH,CAAC;aACH;;SAGF;QAED,2CAAe,GAAf;SAEC;QAED,wCAAY,GAAZ,UAAa,MAAa;YAExB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzB;QAED,qCAAS,GAAT;YACE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;SACpB;QAED,sBACI,sCAAO;iBADX;gBAEE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;iBAQD,UAAY,KAAc;gBAExB,IAAI,CAAC,SAAS,CAAC,eAAa,KAAO,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;oBAE9B,IAAI,CAAC,SAAS,CAAC,mBAAiB,IAAI,CAAC,YAAY,YAAO,KAAO,CAAC,CAAC;oBACjE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBAEzB,IAAI,CAAC,SAAS,CAAC,6BAA2B,KAAK,MAAG,CAAC,CAAC;oBACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAElB,IAAI,IAAI,CAAC,QAAQ,EAAE;wBAEjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACF;aACF;;;WA5BA;QAED,sCAAU,GAAV,UAAW,KAAc;YAEvB,IAAI,CAAC,SAAS,CAAC,iBAAe,KAAO,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;QAwBD,uCAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KAvHH,CAAuC,oBAAoB;;gBAd1DC,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,22DAAwC;oBAExC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE;wBACT;4BACE,OAAO,EAAEsB,uBAAiB;4BAC1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;4BAChD,KAAK,EAAE,IAAI;yBACZ;qBACF;;iBACF;;;gBA/CsBtB,sBAAiB;;;qCAkDrCU,cAAS,SAAC,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;wBAKvCR,UAAK;gCAGLD,WAAM;gCAGNA,WAAM;wBAGNA,WAAM;8BAGNA,WAAM;0BAgENC,UAAK;;;IC7HR,IAAM,WAAW,GAAG,CAAC,CAAC;IACtB,IAAM,kBAAkB,GAAG,8EAA8E,CAAC;;QAStE,kCAAuB;QAoBzD,wBAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAf1C,sBAAgB,GAAW,eAAe,CAAC;YAE3C,WAAK,GAAsB,IAAIL,iBAAY,EAAE,CAAC;YAI9C,WAAK,GAAoB,GAAG,CAAC;YAO7B,kBAAY,GAAG,cAAM,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAA,CAAC;YAuF3C,qCAA+B,GAAG;gBAEhC,IAAI,KAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;oBAEvC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;wBAElD,KAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;qBAChC;yBAAM;wBAEL,KAAI,CAAC,iCAAiC,CAAC,KAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;qBACjF;iBACF;aACF,CAAA;YA/FC,KAAI,CAAC,SAAS,GAAG,eAAe,CAAA;YAChC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,oCAAW,GAAX,UAAY,OAAsB;YAAlC,iBA0BC;;YAzBC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,UAAI,OAAO,CAAC,IAAI,0CAAE,YAAY,EAAE;gBAE9B,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,IAAa;oBAEhD,IAAI,IAAI,IAAI,SAAS,EAAE;wBAErB,IAAI,GAAG,IAAI,CAAC;qBACb;oBAED,IAAI,IAAI,KAAK,IAAI,EAAE;wBAEjB,KAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC;wBAChD,IAAI,kBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBACpE,KAAI,CAAC,wBAAwB,GAAG,kBAAgB,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,GAAG,kBAAgB,CAAC,KAAK,CAAC,KAAI,CAAC,iBAAiB,CAAC,GAAA,CAAC,CAAC;qBAC5H;oBAED,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACtB,CAAC,CACH,CAAC;aACH;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,iCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,wCAAe,GAAf;SACC;QAED,kCAAS,GAAT,UAAU,IAAa;YAAvB,iBAcC;YAZC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAI,IAAI,CAAC,EAAI,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;YAEzD,IAAI,IAAI,EAAE;gBAER,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,GAAA,EAAE,GAAG,CAAC,CAAC;gBACxC,aAAa,CAAC,KAAK,CAAC,CAAC;aAEtB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAClB,aAAa,CAAC,IAAI,CAAC,CAAC;gBACpB,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,+BAA+B,EAAE,GAAA,EAAE,GAAG,CAAC,CAAC;aAC/D;SACF;QAED,kCAAS,GAAT;YAEE,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAI,IAAI,CAAC,EAAI,CAAC,CAAC;YAC3C,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7E,IAAI,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE5D,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAEzB,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAC;gBACzC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE;oBAEhD,IAAI,CAAC,CAAC,QAAQ,oBAAoB;wBAChC,IAAI,QAAQ,CAAC,aAAa,KAAK,gBAAgB,EAAE;4BAC/C,eAAe,CAAC,KAAK,EAAE,CAAC;4BACxB,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB;qBACF;mCAAgB;wBACf,IAAI,QAAQ,CAAC,aAAa,KAAK,eAAe,EAAE;4BAC9C,gBAAgB,CAAC,KAAK,EAAE,CAAC;4BACzB,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB;qBACF;iBACF;aACF,CAAC,CAAC;SACJ;QAgBD,0DAAiC,GAAjC,UAAkC,KAAa;YAE7C,IAAI,KAAK,IAAI,CAAC,EAAE;gBAEd,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBAEhE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;iBAE9C;qBAAM;oBAEL,IAAI,CAAC,iCAAiC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBACnD;aACF;SACF;QAED,oCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KAxIH,CAAoC,uBAAuB;;gBAP1DC,cAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,ytCAAqC;oBAErC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAfsBC,sBAAiB;;;wBAkBrCE,UAAK;mCAELA,UAAK;wBAELD,WAAM;uBAENC,UAAK;wBAELA,UAAK;kCAELA,UAAK;;;;QCjB4B,kCAAc;QAOhD,wBAAoB,IAAuB;YAA3C,YACE,kBAAM,IAAI,CAAC,SAMZ;YAPmB,UAAI,GAAJ,IAAI,CAAmB;YAF3C,eAAS,GAAG,cAAM,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAA,CAAC;YAItC,KAAI,CAAC,SAAS,GAAG,eAAe,CAAA;YAChC,KAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC;YACrC,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,KAAI,CAAC,gBAAgB,GAAG,8BAA8B,CAAC;YACvD,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,oCAAW,GAAX,UAAY,OAAsB;YAChC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;QAED,iCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;QAED,wCAAe,GAAf;SACC;QAED,oCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KA/BH,CAAoC,cAAc;;gBAPjDJ,cAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,usBAAqC;oBAErC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAVsBC,sBAAiB;;;0BAarCE,UAAK;;;;QCF8B,oCAAc;QAelD,0BAAoB,IAAuB;YAA3C,YACE,kBAAM,IAAI,CAAC,SAOZ;YARmB,UAAI,GAAJ,IAAI,CAAmB;YAV3C,wBAAkB,GAAW,IAAI,CAAC;YAElC,uBAAiB,GAAW,IAAI,CAAC;YAEjC,aAAO,GAAuB,IAAIL,iBAAY,EAAE,CAAC;YAEjD,YAAM,GAAuB,IAAIA,iBAAY,EAAE,CAAC;YAEhD,YAAM,GAAuB,IAAIA,iBAAY,EAAE,CAAC;YAI9C,KAAI,CAAC,SAAS,GAAG,iBAAiB,CAAA;YAClC,KAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC;YACnC,KAAI,CAAC,OAAO,GAAG,qCAAqC,CAAA;YACpD,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,KAAI,CAAC,gBAAgB,GAAG,2BAA2B,CAAC;YACpD,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,sCAAW,GAAX,UAAY,OAAsB;YAChC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;QAED,mCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;QAED,0CAAe,GAAf;SACC;QAED,sCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,yCAAc,GAAd;YAEE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;QAED,wCAAa,GAAb;YAEE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;QAED,wCAAa,GAAb;YAEE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;;KA1DH,CAAsC,cAAc;;gBAPnDC,cAAS,SAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,k5BAAuC;oBAEvC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAVsBC,sBAAiB;;;0BAarCE,UAAK;qCAELA,UAAK;oCAELA,UAAK;0BAELD,WAAM;yBAENA,WAAM;yBAENA,WAAM;;;ICGT,IAAM,oBAAoB,GAAW,EAAE,CAAC;;QASa,mDAAuB;QAuB1E,yCAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;;YAhB1C,cAAQ,GAAW,CAAC,CAAC;;YAIrB,cAAQ,GAAW,oBAAoB,CAAC;;YAIxC,iBAAW,GAAW,CAAC,CAAC;YAGxB,YAAM,GAAyB,IAAIJ,iBAAY,EAAU,CAAC;YAOxD,KAAI,CAAC,SAAS,GAAG,6BAA6B,CAAC;YAC/C,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,qDAAW,GAAX,UAAY,OAAwB;;YAElC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;;;YAI3B,IAAI,CAAC,IAAI,CAAC,kBAAkB;mBACvB,OAAO,CAAC,WAAW;mBACnB,OAAO,CAAC,WAAW,CAAC,WAAW;mBAC/B,OAAO,CAAC,WAAW,CAAC,YAAY,IAAI,SAAS,EAAE;gBAElD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAChC;YAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,YAAY,KAAI,SAAS,EAAE;gBAEpE,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC;aACtC;YAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,YAAY,KAAI,SAAS,EAAE;gBAEpE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB;YAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC,YAAY,KAAI,SAAS,EAAE;gBAE1E,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;YAED,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAErD,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAE3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAE5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACtB;aACF;YAED,IAAI,OAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,YAAY,KAAI,SAAS,EAAE;gBAEnD,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;oBAElD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAExC;qBAAM,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,EAAE;oBAE/C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACxC;aACF;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,kDAAQ,GAAR;YAEE,iBAAM,QAAQ,WAAE,CAAC;SAClB;QAED,6DAAmB,GAAnB;YAEE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAExD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;YAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;gBAEhD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjB;SACF;QAED,sBAAI,kDAAK;iBAAT;gBAEE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/B;;;WAAA;QAED,6CAAG,GAAH,UAAI,CAAS;YAEX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;gBAE7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAE5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;iBACtB;gBAED,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,8CAAI,GAAJ;YAEE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SAChC;QAED,8CAAI,GAAJ;YAEE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SAChC;QAED,yDAAe,GAAf,UAAgB,IAAY;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;QAED,yDAAe,GAAf;YACE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,qDAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KAlJH,CAAqD,uBAAuB;;gBAP3EC,cAAS,SAAC;oBACT,QAAQ,EAAE,2BAA2B;oBACrC,6tKAAyD;oBAEzD,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAlCsBC,sBAAiB;;;0BAqCrCE,UAAK;2BAILA,UAAK;2BAILA,UAAK;8BAILA,UAAK;yBAGLD,WAAM;;;;QCzC6C,oDAAuB;QAgB3E,0CAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAR1C,WAAK,GAAW,qBAAqB,CAAC;YAGtC,aAAO,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAGtC,iBAAW,GAAyB,IAAIJ,iBAAY,EAAE,CAAC;YAIrD,KAAI,CAAC,SAAS,GAAG,oCAAoC,CAAC;YACtD,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,sDAAW,GAAX,UAAY,OAAsB;YAEhC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,mDAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;SAClB;QAED,0DAAe,GAAf;YACE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,sDAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,sBACI,mDAAK;iBADT;gBAEE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;iBAED,UAAU,GAAW;;gBAInB,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;oBAE7B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;oBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC3C;aACF;;;WAXA;;KA5CH,CAAsD,uBAAuB;;gBAP5EC,cAAS,SAAC;oBACT,QAAQ,EAAE,kCAAkC;oBAC5C,0mBAA0D;oBAE1D,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAVsBC,sBAAiB;;;0BAerCE,UAAK;wBAGLA,UAAK;0BAGLA,UAAK;8BAGLD,WAAM;wBA4BNC,UAAK;;;;QChDR;SAIC;0BAAA;KAAA,IAAA;;QASqC,oCAAuB;QA8B3D,0BAAoB,GAAsB,EAAE,OAAmB;YAA/D,YAEE,kBAAM,GAAG,CAAC,SAOX;YATmB,SAAG,GAAH,GAAG,CAAmB;YAxB1C,SAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC3B,UAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;YAC7B,cAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YAoBrC,WAAK,GAA8B,IAAIL,iBAAY,EAAe,CAAC;YAKjE,KAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;YAEpC,KAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YAC3C,KAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAE1B,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,sCAAW,GAAX,UAAY,OAAsB;YAChC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;SAC5B;QAED,mCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;SAClB;QAED,0CAAe,GAAf;YACE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,sCAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,2CAAgB,GAAhB,UAAiB,SAAiB;YAEhC,IAAI,KAAa,CAAA;YAEjB,QAAQ,SAAS;gBAEf,KAAK,gBAAgB,CAAC,GAAG;oBACvB,KAAK,GAAG,WAAW,CAAC;oBACpB,MAAK;gBACP,KAAK,gBAAgB,CAAC,IAAI;oBACxB,KAAK,GAAG,YAAY,CAAC;oBACrB,MAAK;gBACP,KAAK,gBAAgB,CAAC,QAAQ;oBAC5B,KAAK,GAAG,MAAM,CAAC;oBACf,MAAK;aACR;YAED,OAAO,KAAK,CAAC;SACd;QAED,kCAAO,GAAP,UAAQ,KAAK;YAEX,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAEO,kDAAuB,GAAvB;YAEN,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAElC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,QAAQ,EAAE;oBAE/C,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC;iBACvC;gBAED,IAAI,IAAI,GAAgB;oBACtB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QAEM,wCAAa,GAAb;YAEL,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC;SAC5C;;KA5GH,CAAsC,uBAAuB;IAEpC,oBAAG,GAAW,CAAC,CAAC;IAChB,qBAAI,GAAW,CAAC,CAAC,CAAC;IAClB,yBAAQ,GAAW,CAAC,CAAC;;gBAX7CC,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,ghBAAwC;oBAExC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAhBsBC,sBAAiB;gBAAaiB,eAAU;;;wBA+B5Df,UAAK;2BAILA,UAAK;wBAGLA,UAAK;2BAGLA,UAAK;wBAGLD,WAAM;;;;QChCgC,uCAAuB;QAuB9D,6BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;;;YAZ1C,iBAAW,GAAY,IAAI,CAAC;YAE5B,cAAQ,GAAY,KAAK,CAAC;YAE1B,kBAAY,GAAwB,IAAIyB,kBAAa,EAAQ,CAAC;YAE9D,aAAO,GAAuB,IAAI7B,iBAAY,EAAQ,CAAC;YAEvD,eAAS,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;YAElD,aAAO,GAAY,KAAK,CAAC;YAI9B,KAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC;YACvC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,yCAAW,GAAX,UAAY,OAAsB;YAChC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;SACzB;QAED,sCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;gBAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;aACxB;SACF;QAED,6CAAe,GAAf;YAEE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;QAED,yCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB;QAED,0CAAY,GAAZ;YAEE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAElB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aACrB;SACF;QAED,wCAAU,GAAV,UAAW,CAAU;YAEnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;;KAjEH,CAAyC,uBAAuB;;gBAP/DC,cAAS,SAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,mXAA2C;oBAE3C,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAXsBC,sBAAiB;;;wBAcrCE,UAAK;wBAELA,UAAK;wBAELA,UAAK;8BAILA,UAAK;2BAELA,UAAK;+BAELD,WAAM;0BAENA,WAAM;4BAENA,WAAM;;;ICHT,IAAM0B,sBAAoB,GAAW,EAAE,CAAC;IAIxC,IAAM,GAAG,GAAkB,KAAK,CAAC;IACjC,IAAM,IAAI,GAAkB,MAAM,CAAC;;QAEnC;SAOC;8BAAA;KAAA,IAAA;;QAkBmC,kCAA0B;QA+H5D,wBAAoB,GAAsB,EAAU,QAAmB;YAAvE,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAAU,cAAQ,GAAR,QAAQ,CAAW;YA3HvE,+BAAyB,GAAY,KAAK,CAAC;YAa3C,yBAAmB,GAAG,IAAI9B,iBAAY,EAAS,CAAC;YAMhD,qBAAe,GAAW8B,sBAAoB,CAAC;;YAW/C,4BAAsB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;;;;YASrD,iBAAW,GAAY,KAAK,CAAC;YAG7B,qBAAe,GAAW,yBAAyB,CAAC;YAGpD,uBAAiB,GAAY,KAAK,CAAC;YAGnC,gBAAU,GAAG,IAAI9B,iBAAY,EAAmB,CAAC;YAGjD,cAAQ,GAAY,KAAK,CAAC;YAS1B,mBAAa,GAAY,KAAK,CAAC;YAG/B,aAAO,GAAY,IAAI,CAAC;YAqBxB,kBAAY,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;YAG5D,uBAAiB,GAA2B,IAAIA,iBAAY,EAAY,CAAC;YAczE,0BAAoB,GAAY,IAAI,CAAC;;YAKrC,2BAAqB,GAAmC,EAAE,CAAC;YAC3D,4BAAsB,GAAmC,EAAE,CAAC;YAC5D,8BAAwB,GAAmC,EAAE,CAAC;YAE9D,sBAAgB,GAAa,EAAE,CAAC;YAChC,wBAAkB,GAAa,EAAE,CAAC;YAElC,iBAAW,GAAG,cAAc,OAAA,KAAI,CAAC,yBAAyB,GAAG,KAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAI,CAAC,WAAW,GAAA,CAAC;YAC9G,iBAAW,GAAG,cAAc,OAAA,KAAI,CAAC,yBAAyB,GAAG,KAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,GAAA,CAAC;YACxH,oBAAc,GAAG,cAAc,OAAA,KAAI,CAAC,yBAAyB,IAAI,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,eAAe,CAAC,UAAU,GAAG,KAAI,CAAC,WAAW,GAAA,CAAC;;YAG3I,eAAS,GAAG,UAAC,SAAiB,IAAc,OAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,IAAI,SAAS,GAAA,CAAC,GAAA,CAAC;YACpG,kBAAY,GAAG,cAAe,OAAA,KAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAI,CAAC,SAAS,CAAC,GAAA,CAAC;YAClH,kBAAY,GAAG,UAAC,IAAyB,IAAc,OAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAO,IAAI,CAAC,EAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAA,CAAC;YAC9G,qBAAe,GAAG,UAAC,KAAa,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,mBAAmB,IAAI,OAAA,mBAAmB,IAAI,KAAK,GAAA,CAAC,GAAA,CAAC;YAIrH,KAAI,CAAC,SAAS,GAAG,eAAe,CAAC;YACjC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,oCAAW,GAAX,UAAY,OAAqB;YAAjC,iBA8DC;;YA5DC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;;YAG3B,IAAI,CAAC,IAAI,CAAC,yBAAyB;mBAC9B,OAAA,OAAO,CAAC,eAAe,0CAAE,WAAW,MAAK,IAAI;mBAC7C,OAAA,OAAO,CAAC,eAAe,0CAAE,YAAY,KAAI,SAAS,EAAE;gBAEvD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;aACvC;;;;YAKD,IAAI,OAAO,CAAC,UAAU,IAAI,SAAS;mBAC9B,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW;mBAC/B,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAEpC,IAAI,IAAI,CAAC,0BAA0B,EAAE;oBAEnC,IAAI,CAAC,0BAA0B,CAAC,WAAW,GAAG,CAAC,CAAC;iBACjD;gBAED,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACpB;;YAGD,IAAI,CAAC,IAAI,CAAC,yBAAyB;0BAC9B,OAAO,CAAC,YAAY,0CAAE,YAAY,CAAA,EAAE;gBAEvC,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,IAAqB;oBAEhE,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACnC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,GAAA,EAAE,GAAG,CAAC,CAAC;oBAC7E,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAA,EAAE,GAAG,CAAC,CAAC;iBAC3D,CAAC,CACH,CAAC;aACH;;YAGD,IAAI,OAAO,CAAC,eAAe,IAAI,SAAS;mBACnC,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW;mBACpC,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAEpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3C;;YAGD,IAAI,OAAA,OAAO,CAAC,WAAW,0CAAE,YAAY,MAAK,IAAI,EAAE;;gBAG9C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAI,IAAI,CAAC,EAAE,QAAK,CAAC,CAAC,MAAM,CAAC;aACzE;YAED,UAAG,OAAO,CAAC,mBAAmB,0CAAE,YAAY,EAAE;gBAE5C,IAAI,CAAC,kBAAkB,kBAAO,OAAO,CAAC,mBAAmB,0CAAE,YAAY,CAAC,CAAC;aAC1E;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,iCAAQ,GAAR;YAAA,iBAaC;YAXC,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YAEzG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBAEnC,UAAU,CAAC;;oBAET,KAAI,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;iBACxC,CAAC,CAAC;aACJ;SACF;QAED,wCAAe,GAAf;YAAA,iBAQC;YANC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE3C,UAAU,CAAC,sBAAM,OAAA,KAAI,CAAC,oBAAoB,GAAG,OAAA,KAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,iBAAiB,IAAG,CAAC,CAAA,EAAA,CAAC,CAAC;YAEnG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,2CAAkB,GAAlB;YAEE,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,oCAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;;;;QAKM,2CAAkB,GAAlB;YAAA,iBA0EN;;YAxEC,IAAI,OAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAEzC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAC,IAAyB;;;;oBAK1D,IAAI,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE;wBAEpD,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;;;4BAIhE,IAAI,KAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;;gCAGzC,KAAI,CAAC,kBAAkB,GAAG,KAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,GAAA,CAAC,CAAC;6BACtH;yBACF,CAAC,CAAC;qBACJ;;oBAGD,IAAI,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE;wBAErD,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;4BAE5D,IAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gCAE1B,KAAI,CAAC,eAAe,EAAE,CAAC;6BACxB;iCACI;gCACH,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC/B;4BAED,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC;yBACpD,CAAC,CAAC;qBACJ;;;;oBAKD,IAAI,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE;wBAEvD,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;4BAEhE,MAAA,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,WAAW,GAAG;4BACnD,MAAA,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,WAAW,GAAG;4BACpD,MAAA,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,WAAW,GAAG;;4BAGtD,OAAO,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC3C,OAAO,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC5C,OAAO,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBAC/C,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;;gBAGH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAC,IAAyB;oBAE1D,IAAI,IAAI,EAAE;wBAER,IAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;4BAE1B,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,YAAY,EAAE,CAAC,CAAC;yBACtC;6BACI;4BACH,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;yBAC7C;qBACF;iBACF,CAAC,CAAC;aACJ;SACF;;;;;;;QAQO,qCAAY,GAAZ,UAAa,OAAe;YAElC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAE3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,IAAI,OAAO,GAAA,CAAC,CAAC;aACjF;iBAAM;gBAEL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;SACF;QAED,wCAAe,GAAf;YAAA,iBAUC;YARC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBAEvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;aAE7F;iBAAM;gBAEL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC,CAAC;aACvH;SACF;;;;QAKM,2CAAkB,GAAlB,UAAmB,iBAA8C;YAAjE,iBAWN;YATC,IAAI,iBAAiB,EAAE;;gBAGrB,iBAAiB,CAAC,OAAO,CACvB,UAAC,OAAyB;oBAExB,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBAC1B,CAAC,CAAA;aACL;SACF;;;;;;;QAQM,sCAAa,GAAb,UAAc,iBAA8C;YAA5D,iBAwBN;YAtBC,IAAI,iBAAiB,EAAE;gBAErB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBAE3C,iBAAiB,CAAC,OAAO,CACvB,UAAC,OAAyB;oBAExB,IAAI,OAAO,EAAE;;wBAGX,KAAI,CAAC,IAAI,CACP,OAAO,CAAC,KAAK,CAAC,SAAS,CACrB,UAAC,IAAiB;4BAEhB,KAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;yBACpC,CACF,CACF,CAAC;qBACH;iBACF,CACF,CAAA;aACF;SACF;;;;;;QAOM,kCAAS,GAAT,UAAU,YAAoB,EAAE,aAAqB;YAE1D,IAAI,IAAI,GAAgB;gBACtB,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,aAAa,IAAI,GAAG,GAAG,gBAAgB,CAAC,GAAG,GAAG,aAAa,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,GAAG,SAAS;aACnH,CAAA;YAED,IAAI,OAAO,GAAqB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,IAAI,YAAY,GAAA,CAAC,CAAC;YAEnG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;SACnC;;;;;;QAOD,uCAAc,GAAd,UAAe,IAAiB,EAAE,OAAyB;YAEzD,IAAI,OAAO,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;gBAE3E,IAAI,iBAAiB,GAAoB,EAAE,CAAC;gBAE5C,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC/C,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;gBAC5I,iBAAiB,CAAC,UAAU,GAAG,CAAC,CAAC;gBAEjC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAEzB,IAAI,IAAI,CAAC,yBAAyB,EAAE;oBAElC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;oBACnE,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;iBAC5D;qBAAM;oBAEL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBACpB;gBAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzC;SACF;;;;;;;;QASO,8CAAqB,GAArB,UAAsB,OAAyB,EAAE,iBAA8C;YAA/F,iBAaP;YAXC,IAAI,iBAAiB,EAAE;gBAErB,iBAAiB,CAAC,OAAO,CAAC,UAAC,IAAsB;oBAE/C,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;wBAE7C,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBACvB;iBACF,CAAC,CAAA;aACH;SACF;;;;QAKO,mCAAU,GAAV,UAAW,gBAAkC;YAEnD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,KAAK,IAAI,EAAE;gBAE1D,IAAI,EAAE,GAAgB,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;gBAE3E,IAAI,EAAE,EAAE;oBAEN,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;oBAE5E,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEhF,IAAI,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,CAAC,QAAQ,EAAE;wBAE3D,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;qBACjC;iBACF;aACF;SACF;;;;;QAMO,wCAAe,GAAf,UAAgB,OAAoB;YAE1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAC/C;;;;;QAMO,uCAAc,GAAd,UAAe,SAAiB;YAEtC,IAAI,KAAa,CAAA;YAEjB,QAAQ,SAAS;gBAEf,KAAK,gBAAgB,CAAC,GAAG;oBACvB,KAAK,GAAG,aAAa,CAAC;oBACtB,MAAK;gBACP,KAAK,gBAAgB,CAAC,IAAI;oBACxB,KAAK,GAAG,cAAc,CAAC;oBACvB,MAAK;gBACP,KAAK,gBAAgB,CAAC,QAAQ;oBAC5B,KAAK,GAAG,SAAS,CAAC;oBAClB,MAAK;aACR;YAED,OAAO,KAAK,CAAC;SACd;;;;;QAMO,yCAAgB,GAAhB,UAAiB,SAAiB;YAExC,IAAI,KAAa,CAAA;YAEjB,QAAQ,SAAS;gBAEf,KAAK,gBAAgB,CAAC,GAAG;oBACvB,KAAK,GAAG,WAAW,CAAC;oBACpB,MAAK;gBACP,KAAK,gBAAgB,CAAC,IAAI;oBACxB,KAAK,GAAG,YAAY,CAAC;oBACrB,MAAK;gBACP,KAAK,gBAAgB,CAAC,QAAQ;oBAC5B,KAAK,GAAG,MAAM,CAAC;oBACf,MAAK;aACR;YAED,OAAO,KAAK,CAAC;SACd;QAEO,+BAAM,GAAN,UAAO,IAAiB;YAE9B,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAE5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,QAAQ,EAAE;oBAE/C,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC;iBACvC;gBAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE7C,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC1B;SACF;QAEO,2CAAkB,GAAlB,UAAmB,QAAgB,EAAE,SAAiB;YAE5D,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAEvD,SAAS,YAAY,CAAC,CAAM,EAAE,KAAe;gBAE3C,IAAI,CAAC,IAAI,KAAK,EAAE;oBAEd,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAEpB,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;qBAChE;yBAAM;wBAEL,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpB;iBACF;aACF;YAED,OAAO,UAAU,EAAE,EAAE,EAAE;gBAErB,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,IAAI,SAAS,CAAC;aACvH,CAAA;SACF;QAED,uCAAc,GAAd,UAAe,KAAa;YAE1B,IAAI,KAAK,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;gBAE3F,IAAI,iBAAiB,GAAoB,EAAE,CAAC;gBAE5C,IAAI,IAAI,CAAC,yBAAyB,EAAE;oBAElC,iBAAiB,qBAAO,IAAI,CAAC,eAAe,CAAC,CAAC;iBAE/C;qBAAM,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;oBAEpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,iBAAiB,GAAG,EAAE,CAAC;oBAEvB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBACpB;gBAED,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACnC,iBAAiB,CAAC,UAAU,GAAG,CAAC,CAAC;gBAEjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzC;SACF;QAED,qCAAY,GAAZ,UAAa,IAAY;YAEvB,IAAI,IAAI,IAAI,SAAS,EAAE;gBAErB,IAAI,iBAAkC,SAAA,CAAC;gBAEvC,IAAI,IAAI,CAAC,yBAAyB,EAAE;oBAElC,iBAAiB,qBAAO,IAAI,CAAC,eAAe,CAAC,CAAC;iBAE/C;qBAAM;oBAEL,iBAAiB,GAAG,EAAE,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACvB;gBAED,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,mCAAU,GAAV,UAAW,IAAY;YAErB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;gBAE3E,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;gBAEtD,IAAI,SAAS,GAAW,MAAM,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE7E,IAAI,CAAC,GAAU,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;gBAEnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClC;SACF;QAED,8CAAqB,GAArB;YAEE,OAAO,CAAC,IAAI,CAAC,iBAAiB;oBACxB,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,yBAAyB,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC,CAAC,CAAC;SAC3H;;KA3oBH,CAAoC,0BAA0B;;gBAP7DC,cAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,sqFAAqC;oBAErC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAvDCC,sBAAiB;gBAWjBgB,cAAS;;;6BAsDRd,UAAK;gCAILA,UAAK;sCAGLD,WAAM;+BAGNC,UAAK;kCAGLA,UAAK;kCAMLA,UAAK;yCAKLA,UAAK;8BASLA,UAAK;kCAGLA,UAAK;oCAGLA,UAAK;6BAGLD,WAAM;2BAGNC,UAAK;0BAMLA,UAAK;gCAGLA,UAAK;0BAGLA,UAAK;8BAGLA,UAAK;6BAGLA,UAAK;wBAGLA,UAAK;6BAGLA,UAAK;8BAGLA,UAAK;sCAGLA,UAAK;+BAGLD,WAAM;oCAGNA,WAAM;oCAGNiB,oBAAe,SAAC,gBAAgB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;uCAGrDA,oBAAe,SAAC,mBAAmB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;6CAGxDR,cAAS,SAAC,+BAA+B;6BAGzCA,cAAS,SAAC,YAAY;;;;QCxJe,sCAAoB;QAsB1D,4BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAjB1C,sBAAgB,GAAW,gBAAgB,CAAC;YAE5C,mBAAa,GAAW,UAAU,CAAC;YAEnC,kBAAY,GAAY,IAAI,CAAC;YAE7B,eAAS,GAAY,IAAI,CAAC;YAK1B,gBAAU,GAAG,IAAIb,iBAAY,EAAQ,CAAC;YAQpC,KAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;YACtC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,wCAAW,GAAX,UAAY,OAAsB;YAEhC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,qCAAQ,GAAR;YAAA,iBAiBC;YAfC,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEd,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,MAAe;oBAEnC,KAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC/B,QAAQ,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;iBAChD,CAAC,CACH,CAAC;aACH;SACF;QAED,4CAAe,GAAf;SAEC;QAED,wCAAW,GAAX;YAEE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,yCAAY,GAAZ;YACE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1C;QAED,wCAAW,GAAX,UAAY,MAAa;;YAGvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/D,IAAG,CAAC,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,kCAAK,GAAL;YAEE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;;KAtFH,CAAwC,oBAAoB;;gBAL3DC,cAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,2/GAA0C;;iBAE3C;;;gBARsBE,sBAAiB;;;8BAWrCE,UAAK;mCAELA,UAAK;gCAELA,UAAK;+BAELA,UAAK;4BAELA,UAAK;yBAGLA,UAAK;6BAELD,WAAM;4BAINS,cAAS,SAAC,WAAW,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;;;;QCOE,wCAAoB;QAwB5D,8BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAL1C,gBAAU,GAAY,KAAK,CAAC;YAG5B,iBAAW,GAAG,IAAIb,iBAAY,EAAU,CAAC;YAIvC,KAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACxC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,0CAAW,GAAX,UAAY,OAAsB;YAEhC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,IAAI,OAAO,CAAC,KAAK,EAAE;gBAEjB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;gBAEjD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAExB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;oBAE9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;iBACxB;aACF;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,uCAAQ,GAAR;YAAA,iBAiBC;YAfC,iBAAM,QAAQ,WAAE,CAAA;YAEhB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEd,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,MAAe;oBAEnC,KAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC/B,QAAQ,CAAC,KAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;iBACzD,CAAC,CACH,CAAC;aACH;SACF;QAED,8CAAe,GAAf;SAEC;QAED,0CAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,sBACI,uCAAK;iBAMT;gBAEE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;iBAVD,UACU,KAAK;gBAEb,IAAI,CAAC,SAAS,CAAC,uBAAqB,IAAI,CAAC,UAAU,YAAO,KAAO,CAAC,CAAC;gBACnE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;;;WAAA;QAOD,yCAAU,GAAV,UAAW,KAAa;YAEtB,IAAI,CAAC,SAAS,CAAC,iBAAe,KAAO,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,uCAAQ,GAAR,UAAS,KAAa;YAEpB,IAAI,CAAC,SAAS,CAAC,eAAa,KAAO,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE;gBAE5B,IAAI,CAAC,SAAS,CAAC,mBAAiB,IAAI,CAAC,UAAU,YAAO,KAAO,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAEzB,IAAI,CAAC,SAAS,CAAC,2BAAyB,KAAK,MAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAElB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAEjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACtB;aACF;SACF;QAEO,+CAAgB,GAAhB;YAAA,iBAkBP;YAhBC,UAAU,CAAC;gBAET,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE;oBAElB,IAAI,KAAI,CAAC,GAAG,IAAI,SAAS,IAAI,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,GAAG,EAAE;wBAEvD,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,aAAa,IAAI,SAAS,GAAG,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,GAAG,CAAC;qBAE9E;yBAAM,IAAI,KAAI,CAAC,GAAG,IAAI,SAAS,IAAI,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,GAAG,EAAE;wBAE9D,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,aAAa,IAAI,SAAS,GAAG,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,GAAG,CAAC;qBAC9E;iBACF;gBAED,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC1B,CAAC,CAAA;SACH;QAED,sCAAO,GAAP;YAEE,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;gBAExD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACxC;;;;;;YAOD,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;;;;aAKjC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,2CAAY,GAAZ;YAEE,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE;gBAEtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE7C,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;aAChJ;YAED,OAAO,IAAI,CAAC;SACb;;KAzKH,CAA0C,oBAAoB;;gBAd7DC,cAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,iqEAA4C;oBAE5C,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE;wBACT;4BACE,OAAO,EAAEsB,uBAAiB;4BAC1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ;qBACF;;iBACF;;;gBAhCCtB,sBAAiB;;;qCAmChBU,cAAS,SAAC,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;sBAQvCR,UAAK;sBAELA,UAAK;uBAELA,UAAK;mCAELA,UAAK;6BAELA,UAAK;8BAGLD,WAAM;wBAwDNC,UAAK;;;;QCrGgC,sCAA0B;QAQhE,4BAAoB,GAAsB;YAA1C,YACE,kBAAM,GAAG,CAAC,SAIX;YALmB,SAAG,GAAH,GAAG,CAAmB;YAL1C,YAAM,GAAY,KAAK,CAAC;YAGxB,cAAQ,GAAY,IAAI,CAAC;YAIvB,KAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;YACrC,KAAI,CAAC,EAAE,GAAG,SAAS,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,wCAAW,GAAX,UAAY,OAAsB;YAChC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,qCAAQ,GAAR;YACE,iBAAM,QAAQ,WAAE,CAAA;SACjB;QAED,4CAAe,GAAf;SACC;QAED,wCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;;KA7BH,CAAwC,0BAA0B;;gBAPjEJ,cAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,0LAAyC;oBAEzC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAVsBC,sBAAiB;;;yBAarCE,UAAK;2BAGLA,UAAK;;;;QC0B+B,qCAAuB;QA+D5D,2BAAoB,GAAsB,EAAU,GAAc;YAAlE,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAAU,SAAG,GAAH,GAAG,CAAW;YAzDlE,gBAAU,GAAY,KAAK,CAAC;YAS5B,oBAAc,GAAY,IAAI,CAAC;YAG/B,oBAAc,GAAY,IAAI,CAAC;YAG/B,iBAAW,GAAW,CAAC,CAAC;YAGxB,uBAAiB,GAAyB,IAAIL,iBAAY,EAAU,CAAC;YAGrE,gBAAU,GAA+B,IAAIA,iBAAY,EAAgB,CAAC;YAS1E,qBAAe,GAAW,2BAA2B,CAAC;YAGtD,qBAAe,GAAW,6BAA6B,CAAC;YAiBxD,yCAAmC,GAAY,KAAK,CAAC;YAErD,oBAAc,GAAW,CAAC,CAAC;YAE3B,kBAAY,GAAG,UAAC,IAAkB,EAAE,MAAM,IAAK,OAAA,KAAG,IAAI,CAAC,KAAK,IAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,KAAG,gBAAgB,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,KAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,KAAI,CAAC,SAAS,GAAG,EAAE,CAAE,GAAA,CAAC;YAC7M,cAAQ,GAAG,UAAC,SAAiB,IAAc,OAAA,CAAC,KAAI,CAAC,cAAc,KAAK,SAAS,IAAI,KAAI,CAAC,WAAW,GAAA,CAAC;YAgHlG,qBAAe,GAAG,UAAC,IAAkB,EAAE,SAA6B,EAAE,KAAa,IAAc,OAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,GAAA,CAAC;YA6E7J,eAAS,GAAG,UAAC,EAAU;gBAErB,KAAI,CAAC,cAAc,IAAI,EAAE,CAAC;gBAC1B,KAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,eAAa,KAAI,CAAC,cAAc,QAAK,CAAC,CAAC;aACtG,CAAC;YA7LA,KAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;YACpC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,uCAAW,GAAX,UAAY,OAAsB;YAAlC,iBA2CC;;YAzCC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,0CAAE,YAAY,EAAE;gBAE7C,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,CAC/C;oBAEE,IAAI,cAAc,GAAiB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAkB,IAAK,OAAA,IAAI,CAAC,KAAK,GAAA,CAAC,CAAC;oBAEvF,IAAI,cAAc,EAAE;wBAClB,KAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;qBAClC;iBACF,CACF,CACF,CAAC;aACH;YAED,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,0CAAE,YAAY,EAAE;gBAEnC,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,GAAmC,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAA,CAAC,CACxG,CAAC;aACH;YAED,IAAI,OAAO,CAAC,KAAK,EAAE;gBAEjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;;;;;YAOD,IAAI,OAAO,CAAC,cAAc,WAAI,IAAI,CAAC,SAAS,0CAAE,MAAM,CAAA,EAAE;gBAEpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,oCAAQ,GAAR;YAEE,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE;gBAEjC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aACxB;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QAED,2CAAe,GAAf;YAEE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,uCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAEO,0CAAc,GAAd,UAAe,KAAa;YAElC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC/C;QAEO,4CAAgB,GAAhB;YAEN,IAAI,IAAI,CAAC,KAAK,EAAE;gBAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAkB,EAAE,KAAK;oBAE3C,IAAI,IAAI,EAAE;wBAER,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;qBACnB;iBACF,CAAC,CAAC;aACJ;SACF;QAEM,gDAAoB,GAApB,UAAqB,SAAwC;YAA7D,iBAaN;;YAXC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,IAAI,OAAA,IAAI,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAE9B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,IAAI,KAAI,CAAC,WAAW,GAAA,CAAC,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,UAAU,CAAC;oBACT,KAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;oBAChD,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;iBAC1B,CAAC,CAAC;aACJ;SACF;QAID,uCAAW,GAAX,UAAY,IAAkB;YAA9B,iBAWC;YATC,IAAI,IAAI,EAAE;;gBAGR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,SAA6B,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;;gBAGrG,IAAI,cAAc,GAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,SAA6B,EAAE,KAAa,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;gBAC7J,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;aAC/C;SACF;QAED,8CAAkB,GAAlB,UAAmB,SAA6B,EAAE,IAAa;YAE7D,IAAI,SAAS,EAAE;gBAEb,IAAI,IAAI,CAAC,cAAc,EAAE;oBAEvB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC1B,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;iBAE1B;qBAAM;oBAEL,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC1B,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;iBAC1B;gBAED,SAAS,CAAC,aAAa,EAAE,CAAC;aAC3B;SACF;QAED,uCAAW,GAAX,UAAY,GAAmC;;YAE7C,IAAI,IAAkB,CAAC;YAEvB,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAEjB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAe,IAAK,OAAA,CAAC,CAAC,KAAK,IAAI,GAAG,GAAA,CAAC,CAAC;aAC7D;iBAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAExB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAe,IAAK,OAAA,CAAC,CAAC,IAAI,IAAI,GAAG,GAAA,CAAC,CAAC;aAC5D;iBAAM;gBACL,IAAI,GAAG,GAAmB,CAAC;aAC5B;YAED,IAAI,IAAI,EAAE;gBAER,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;oBAEpE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,IAAI,OAAA,IAAI,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,EAAE;oBAE9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACxB;aACF;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,6CAAiB,GAAjB;YAEE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,6CAAiB,GAAjB;YAEE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAQD,6CAAiB,GAAjB,UAAkB,IAAkB;YAElC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;gBAElC,OAAO,eAAe,CAAC;aACxB;iBAAM,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gBAExC,OAAO,iBAAiB,CAAC;aAC1B;iBAAM;gBACL,OAAO,iBAAiB,CAAC;aAC1B;SACF;;KA3QH,CAAuC,uBAAuB;;gBAP7DC,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,4xEAAwC;oBAExC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBAvCCC,sBAAiB;gBAWjBgB,cAAS;;;wBA+BRd,UAAK;6BAGLA,UAAK;4BAMLA,UAAK;iCAGLA,UAAK;iCAGLA,UAAK;8BAGLA,UAAK;oCAGLD,WAAM;6BAGNA,WAAM;qCAGNC,UAAK;2BAGLA,UAAK;kCAGLA,UAAK;kCAGLA,UAAK;6BAGLQ,cAAS,SAAC,YAAY;6BAGtBA,cAAS,SAAC,YAAY;6BAGtBA,cAAS,SAAC,YAAY;6BAGtBe,iBAAY,SAAC,YAAY;4BAGzBP,oBAAe,SAAC,kBAAkB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;;;QC9DrB,mCAAuB;QA4C1D,yBAAoB,GAAsB,EAAU,GAAc;YAAlE,YACE,kBAAM,GAAG,CAAC,SAGX;YAJmB,SAAG,GAAH,GAAG,CAAmB;YAAU,SAAG,GAAH,GAAG,CAAW;YAvClE,gBAAU,GAAY,IAAI,CAAC;YAC3B,eAAS,GAAW,GAAG,CAAC;YAGxB,oBAAc,GAAY,IAAI,CAAC;YAG/B,iBAAW,GAAW,CAAC,CAAC;YAGxB,uBAAiB,GAAyB,IAAIrB,iBAAY,EAAU,CAAC;YAGrE,gBAAU,GAA6B,IAAIA,iBAAY,EAAc,CAAC;YAMtE,cAAQ,GAA+C,IAAIA,iBAAY,EAAgC,CAAC;YAGxG,qBAAe,GAAW,wBAAwB,CAAC;YAGnD,qBAAe,GAAW,0BAA0B,CAAC;YAgBnD,KAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAClC,KAAI,CAAC,MAAM,EAAE,CAAC;;SACf;QAED,qCAAW,GAAX,UAAY,OAAsB;YAAlC,iBAuCC;;YArCC,iBAAM,WAAW,YAAC,OAAO,CAAC,CAAC;YAE3B,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,YAAY,EAAE;gBAE/B,IAAI,CAAC,IAAI,OACP,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,YAAY,CAAC,SAAS,CACnC;;oBAEE,IAAI,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAE5C,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACxC,MAAA,KAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,KAAI,CAAC,WAAW,EAAE;;qBAEvC;iBACF,EAEJ,CAAC;aACH;YAED,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,YAAY,EAAE;gBAE/B,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CACjC;;oBAEE,IAAI,KAAI,CAAC,WAAW,GAAG,CAAC,EAAE;wBAExB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,GAAG,CAAC,CAAC;wBACxC,MAAA,KAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,KAAI,CAAC,WAAW,EAAE;;qBAEvC;iBACF,CACF,CACF,CAAC;aACH;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,kCAAQ,GAAR;YAEE,iBAAM,QAAQ,WAAE,CAAC;SAClB;QAED,yCAAe,GAAf;YAEE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;QAED,qCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;SACrB;QAED,uCAAa,GAAb,UAAc,GAAa;YAEzB,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAEzB,GAAG,CAAC,OAAO,GAAI,GAAG,CAAC,OAAkB,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACnF;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;QAED,kDAAwB,GAAxB,UAAyB,KAAa;YAEpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,2CAAiB,GAAjB,UAAkB,MAAoB;YAEpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;;KA/HH,CAAqC,uBAAuB;;gBAP3DC,cAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,o8BAAsC;oBAEtC,eAAe,EAAE,yBAAyB;oBAC1C,aAAa,EAAEC,sBAAiB,CAAC,IAAI;;iBACtC;;;gBA9BCC,sBAAiB;gBAUjBgB,cAAS;;;wBAuBRd,UAAK;iCAMLA,UAAK;8BAGLA,UAAK;oCAGLD,WAAM;6BAGNA,WAAM;qCAGNC,UAAK;2BAGLA,UAAK;kCAGLA,UAAK;kCAGLA,UAAK;uBAGLA,UAAK;uBAGLA,UAAK;4BAGLgB,oBAAe,SAAC,kBAAkB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;oCAGvDR,cAAS,SAAC,iBAAiB;;;;QC6E9B;;;;;gBAnGCkB,aAAQ,SAAC;oBACR,YAAY,EAAE;wBACZ,aAAa;wBACb,uBAAuB;wBACvB,0BAA0B;wBAC1B,oBAAoB;wBACpB,kBAAkB;wBAClB,YAAY;wBACZ,uBAAuB;wBACvB,kCAAkC;wBAClC,eAAe;wBACf,eAAe;wBACf,2BAA2B;wBAC3B,8BAA8B;wBAC9B,qBAAqB;wBACrB,0BAA0B;wBAC1B,eAAe;wBACf,eAAe;wBACf,gCAAgC;wBAChC,8BAA8B;wBAC9B,oBAAoB;wBACpB,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;wBACjB,cAAc;wBACd,cAAc;wBACd,gBAAgB;wBAChB,+BAA+B;wBAC/B,gCAAgC;wBAChC,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,mBAAmB;qBACpB;oBACD,OAAO,EAAE;wBACPC,mBAAY;wBACZC,iBAAW;wBACXC,yBAAmB;wBACnBC,qBAAgB;wBAChBC,mBAAY;qBACb;oBACD,OAAO,EAAE;wBACP,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,2BAA2B;wBAC3B,8BAA8B;wBAC9B,qBAAqB;wBACrB,0BAA0B;wBAC1B,eAAe;wBACf,eAAe;wBACf,gCAAgC;wBAChC,8BAA8B;wBAC9B,oBAAoB;wBACpB,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;wBACjB,cAAc;wBACd,cAAc;wBACd,gBAAgB;wBAChB,+BAA+B;wBAC/B,gCAAgC;wBAChC,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,mBAAmB;qBACpB;oBACD,SAAS,EAAE,CAACV,eAAQ,CAAC;iBACtB;;;ICtJD;;;;ICAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ng-inail-common.umd.js","sources":["../../../projects/ng-inail-common/src/lib/utils/common.operators.ts","../../../projects/ng-inail-common/src/lib/components/core/base.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ng-inail-common/src/lib/components/core/basic-ux-element.component.ts","../../../projects/ng-inail-common/src/lib/components/core/responsive-element.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/pre/pre.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/state-propertie/state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/layout-common-config.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/footer/footer.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-interna/navigazione-interna.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-principale/navigazione-principale.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu-intranet/menu-intranet.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-utente/navigazione-utente.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/header/header.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/loader/loader.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/webkit-resources.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu/menu.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/button/button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/inail-layout.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/breadcrumb/breadcrumb.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/form-element.component.ts","../../../projects/ng-inail-common/src/lib/utils/date.operators.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-text/input-text.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/select/select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/form-grey/form-grey.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/page-title/page-title.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/feedback/feedback.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/accordion/accordion.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-pane/tab-pane.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-group/tab-group.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/popover/popover.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/textarea/textarea.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-date/input-date.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/radio-select/radio-select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/checkbox/checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/modal/modal.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/alert/alert.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/confirm/confirm.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table-page-length-selector/table-page-length-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/th-label/th-label.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/tr-checkbox/tr-checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table/table.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-file/input-file.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-number/input-number.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/container/container.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/selector/selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/wizard/wizard.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/progress-bar/progress-bar.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/multi-select/multi-select.component.ts","../../../projects/ng-inail-common/src/lib/ng-inail-common.module.ts","../../../projects/ng-inail-common/src/public-api.ts","../../../projects/ng-inail-common/src/ng-inail-common.ts"],"sourcesContent":["import {isFunction} from \"rxjs/internal-compatibility\";\n\nexport const isBlankOrNull = (s: string): boolean => s == undefined || String(s).trim().length == 0;\nexport const isNotBlankOrNull = (s: string): boolean => !isBlankOrNull(s);\nexport const isNumber = (o: any): boolean => typeof o === 'number';\nexport const isString = (o: any): boolean => typeof o === 'string';\nexport const isAbsolute = (url: string): boolean => startWith(url, 'http');\nexport const startWithSlash = (url: string): boolean => startWith(url, '/');\nexport const startWith = (url: string, s: string): boolean => url != undefined && String(url).startsWith(s);\nexport const isListEmptyOrNull = (s: any[]): boolean => !s || !(s.length > 0);\nexport const isListNotEmptyOrNull = (s: any[]): boolean => !isListEmptyOrNull(s);\nexport const clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\n\nexport const scrollTo = (top: number) => {\n setTimeout(() => {\n window.scroll({top, left: 0, behavior: 'smooth'});\n });\n};\n\nexport const scrollToElement = (id: string) => {\n\n setTimeout(() => {\n const elem = document.getElementById(id);\n if (elem) {\n scrollTo(elem.getBoundingClientRect().top + window.pageYOffset - 50);\n }\n });\n};\n\nexport const scrollTop = () => {\n scrollTo(130);\n};\n\nexport const setFocus = (nativeElement: HTMLElement, scroll: boolean) => {\n\n if (nativeElement) {\n\n if (scroll === true) {\n scrollToElement(nativeElement.getAttribute('id'));\n }\n\n setTimeout(() => nativeElement.focus(), scroll === true ? 500 : 0);\n }\n}\n\nexport const call = (e: any, f: string, a?: any) => {\n\n let el = e && e[f] != undefined && isFunction(e[f]) ? e[f](a) : undefined;\n\n return {\n data: el,\n call: (fname: string, arg?: any) => call(el, fname, arg)\n }\n}\n\nexport const uuidv4 = (): string => {\n return 'axxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\nexport const isHidden = (element: Element) => {\n\n let ishidden: boolean = false;\n\n if (element) {\n\n let cs = window.getComputedStyle(element);\n ishidden = cs.display == 'none' || cs.visibility != 'visible' || isHidden(element.parentElement);\n }\n\n return ishidden;\n}\n\nexport const setPageScroll = (scroll: boolean) => document.getElementsByTagName('html')[0].style['overflow-y'] = scroll ? 'scroll' : 'hidden';\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {isNotBlankOrNull, isString} from \"../../utils/common.operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nexport enum LogLevel {\n\n LOG = 'log',\n TRACE = 'trace',\n DEBUG = 'debug',\n INFO = 'info',\n WARN = 'warn',\n ERROR = 'error'\n}\n\nexport interface LogEvent {\n\n message: any;\n level: LogLevel;\n}\n\nexport const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.OnPush;\n\n// export const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.Default;\n\n@Component({\n selector: 'inail-base',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BaseComponent implements OnChanges, OnInit {\n\n /**\n * Log del componente\n */\n @Output()\n log: EventEmitter<LogEvent>;\n\n /**\n * Se true effettua il log direttamente nella console.\n * Altrimenti emette l'evento log\n */\n @Input()\n logOnConsole: boolean = false;\n\n /**\n *\n */\n @Input()\n showState: boolean = false;\n\n @Input()\n detectChange: Observable<void>;\n\n logPrefix: string;\n\n subcriptions: Subscription[] = [];\n push = (subcription: Subscription) => this.subcriptions.push(subcription);\n\n // Detach centralizzato\n detach = () => {\n this.baseComponentCdr.detach();\n };\n\n detectChanges = () => this.baseComponentCdr.detectChanges();\n\n constructor(private baseComponentCdr: ChangeDetectorRef) {\n this.log = new EventEmitter<LogEvent>();\n saveEE();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.emitDebug('ngOnChanges');\n this.emitDebug(changes);\n }\n\n ngOnInit() {\n\n this.emitDebug(`ngOnInit`);\n this.emitDebug(`this`);\n this.emitDebug(this);\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.baseComponentCdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n this.emitDebug('ngOnDestroy');\n this.subcriptions.forEach(s => s?.unsubscribe());\n }\n\n emitLog(message: any) {\n this.emit({message: message, level: LogLevel.LOG});\n }\n\n emitTrace(message: any) {\n this.emit({message: message, level: LogLevel.TRACE});\n }\n\n emitDebug(message: any) {\n this.emit({message: message, level: LogLevel.DEBUG});\n }\n\n emitInfo(message: any) {\n this.emit({message: message, level: LogLevel.INFO});\n }\n\n emitWarn(message: any) {\n this.emit({message: message, level: LogLevel.WARN});\n }\n\n emitError(message: any) {\n\n this.emit({message: message, level: LogLevel.ERROR});\n }\n\n emit(event: LogEvent) {\n\n if (event) {\n\n if (this.logOnConsole === true) {\n\n console[event.level].apply(this, [this.getMessage(event)]);\n } else {\n\n this.log.emit(event);\n }\n }\n }\n\n getMessage = (event: LogEvent) => this.logPrefix && isString(event.message) ? `${this.logPrefix} ${event.message}` : event.message;\n getNotBlankValue = (v) => isNotBlankOrNull(`${v}`) ? v : undefined;\n}\n\nexport interface BooleanChange extends SimpleChange {\n\n currentValue: boolean;\n previousValue: boolean;\n}\n\nexport interface StringChange extends SimpleChange {\n\n currentValue: string;\n previousValue: string;\n}\n\nexport interface NumberChange extends SimpleChange {\n\n currentValue: number;\n previousValue: number;\n}\n\nexport interface ObservableChange extends SimpleChange {\n\n currentValue: Observable<any>;\n previousValue: Observable<any>;\n}\n\nexport interface BaseComponentChanges extends SimpleChanges {\n\n logOnConsole: BooleanChange,\n showState: BooleanChange\n}\n\nfunction saveEE() {\n\n if (!window['asd']) {\n\n window['asd'] = JSON.parse(atob('ewogICJhdXRvcmUiOiAiU2ltb25lIEFudG9uaW5pIiwKICAiZXRhIjogImRpcGVuZGUgZGFsbCdhbm5vIGNvcnJlbnRlIiwKICAiaG9iYnkiOiBbIlBlc2NhIiwgIlNub3dib2FyZCIsICJHYW1pbmciLCAiQ3Jvc3NmaXQiXSwKICAicHJlZmVyaXRpIjogewogICAgInBlc2NpIjogWyJDYXJwYSIsICJCbGFjayBCYXNzIl0sCiAgICAidmlkZW9naW9jaGkiOiBbIkZGVklJIiwgIkZGVklJUiIsICJEZWF0aCBTdHJhbmRpbmciLCAiU2VraXJvIiwgIlJlZCBEZWFkIFJlZGVtcHRpb24gMiIsICJUTE9VIiwgIlRMT1UyIl0sCiAgICAibGlicmkiOiBbCiAgICAgIHsiYXV0b3JlIjogIkdhYnJpZWwgR2FyY2lhIE1hcnF1ZXoiLCAidGl0b2xvIjogIkNlbnQnYW5uaSBkaSBzb2xpdHVkaW5lIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiQ2FzdGVsbGkgZGkgcmFiYmlhIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiU2V0YSJ9LAogICAgICB7ImF1dG9yZSI6ICJZYXN1bmFyaSBLYXdhYmF0YSIsICJ0aXRvbG8iOiAiTGEgY2FzYSBkZWxsZSBiZWxsZSBhZGRvcm1lbnRhdGUifQogICAgXQogIH0sCiAgImltcHJlc2VDZWxlYnJpIjogWyJTb3Bwb3J0byBtaWEgbWFkcmUgZGEgcXVhc2kgNDAgYW5uaSJdLAogICJwcm92b0Ftb3JlUGVyIjogWyJJbCBtaW8gY2FuZSIsICJJbCBtaW8gZ2F0dG8iLCAiSWwgdGlyYW1pc3UiXQp9'));\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY, StringChange} from \"./base.component\";\nimport {uuidv4} from \"../../utils/common.operators\";\n\nexport interface BasicUxElementComponentChanges extends BaseComponentChanges {\n\n id: StringChange,\n class: StringChange\n}\n\n@Component({\n selector: 'inail-basic-ux-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BasicUxElementComponent extends BaseComponent implements OnChanges, OnInit {\n\n @Input()\n id: string = uuidv4();\n\n @Input()\n class: string;\n\n constructor(private uxElementCdr: ChangeDetectorRef) {\n\n super(uxElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.id == undefined) {\n\n this.id = uuidv4();\n }\n\n this.logPrefix = `${this.logPrefix}[${this.id}]`;\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"./basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, NumberChange} from \"./base.component\";\n\nexport type ColumnDimension = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ResponsiveElementComponentChanges extends BasicUxElementComponentChanges {\n\n xs: NumberChange,\n sm: NumberChange,\n md: NumberChange,\n lg: NumberChange\n}\n\n@Component({\n selector: 'inail-responsive-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ResponsiveElementComponent extends BasicUxElementComponent implements OnChanges, OnInit {\n\n @Input()\n lg: ColumnDimension;\n @Input()\n md: ColumnDimension;\n @Input()\n sm: ColumnDimension;\n @Input()\n xs: ColumnDimension = 12;\n\n constructor(private responsiveElementCdr: ChangeDetectorRef) {\n super(responsiveElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit()\n }\n\n private xsClass = (): string => this.xs != undefined ? `col-xs-${this.xs} ` : '';\n private smClass = (): string => this.sm != undefined ? `col-sm-${this.sm} ` : '';\n private mdClass = (): string => this.md != undefined ? `col-md-${this.md} ` : '';\n private lgClass = (): string => this.lg != undefined ? `col-lg-${this.lg} ` : '';\n\n getResponsiveClass = (): string => `${this.xsClass()}${this.smClass()}${this.mdClass()}${this.lgClass()}`.trim();\n}\n","import {Component, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'debug-pre',\n templateUrl: './pre.component.html',\n styleUrls: ['./pre.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PreComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'state-propertie',\n templateUrl: './state-propertie.component.html',\n styleUrls: ['./state-propertie.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StatePropertieComponent implements OnInit {\n\n @Input()\n label: string;\n\n @Input()\n propertie: any;\n\n @Input()\n hideIfNull: boolean;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {FormElementComponent} from \"../../core/form/form-element.component\";\n\n@Component({\n selector: 'inail-form-element-state-properties',\n templateUrl: './form-element-state-propertie.component.html',\n styleUrls: ['./form-element-state-propertie.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FormElementStatePropertieComponent implements OnInit {\n\n @Input()\n formElement: FormElementComponent;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n}\n","export const DEFAULT_ASSETS_URL = '/static';\nexport const DEFAULT_ASSETS_INTRA_URL = '/static_intra';\nexport const DEFAULT_ASSETS_CDN_URL = '/assets/inail/static';\nexport const API_DEFAULT_URL = '/api';\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {DEFAULT_ASSETS_CDN_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {isAbsolute, isBlankOrNull, isNotBlankOrNull} from \"../../../../utils/common.operators\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/footer.html';\n\n/**\n * Il componente renderizza il footer.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-footer',\n templateUrl: './cs.internet.footer.html',\n styleUrls: ['./footer.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html del footer.\n * Se non specificato il footer viene recuperato dall'indirizzo relativo /cs/internet/footer.html\n * al dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per il recupero dell'html\n * e per customizzare gli href nell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene utilizzato se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n @Input()\n cdnEndpoint?: string = '';\n\n /**\n * Utilizzato esclusivamente per customizzare l'html di default nel caso non sia stato possibile recuperare quello in remoto.\n * Se non specificato le risorse statiche vengono cercate sotto il path relativo /static\n * del dominio (se passato) specificato tramite l'input cdnEndpoint.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n @Input()\n assetsUrl: string = DEFAULT_ASSETS_URL;\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n\n super(cdr);\n this.logPrefix = '[inail-footer]';\n this.detach();\n }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug(`ngOnChanges:`);\n this.emitDebug(changes);\n\n // Il footer viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug(`Inizializzazione Footer`);\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (isBlankOrNull(this.domainUrl)) {\n\n this.domainUrl = '';\n }\n\n if (isBlankOrNull(this.cdnEndpoint) || isAbsolute(this.assetsUrl)) {\n\n this.cdnEndpoint = '';\n }\n\n if (isBlankOrNull(this.assetsUrl)) {\n\n if(isNotBlankOrNull(this.cdnEndpoint)) {\n\n this.assetsUrl = DEFAULT_ASSETS_CDN_URL;\n }\n else {\n\n this.assetsUrl = DEFAULT_ASSETS_URL;\n }\n }\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug(`Inizializzazione Footer, Url footer non specificato`);\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n recupera() {\n this.emitDebug(`Recupero Footer da: ${this.url}`);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Footer inizializzato!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (footer: string) => {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(footer);\n this.emitDebug(`Footer recuperato!`);\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero del Footer\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Footer di default\");\n }\n );\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-navigazione-interna',\n templateUrl: './navigazione-interna.component.html',\n styleUrls: ['./navigazione-interna.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneInternaComponent extends BaseComponent implements OnInit {\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.detach();\n }\n\n ngOnInit() {\n }\n\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/header.html';\nconst DEFAULT_LOGOUT_URL = '/cs/LogoutUser?excludedCookies=SMSESSION';\n\n/**\n * Il componente renderizza la navigazione principale.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-navigazione-principale',\n templateUrl: './cs.internet.header.html',\n styleUrls: ['./navigazione-principale.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazionePrincipaleComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti di default e\n * gli href dell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n * Non influisce sull'input logoutUrl se esplicitamente specificato.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n @Input()\n logoutUrl: string;\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n super(cdr);\n this.logPrefix = '[inail-navigazione-principale]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // La navigazione principale viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug('Inizializzazione Navigazione principale');\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (!this.logoutUrl) {\n\n this.logoutUrl = this.domainUrl + DEFAULT_LOGOUT_URL;\n }\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug('Inizializzazione Navigazione principale, Url Navigazione principale non specificato');\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n\n if(this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n recupera() {\n this.emitDebug(\"Recupero Navigazione principale da: \" + this.url);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Navigazione principale inizializzata!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (menu: string) => {\n\n menu = menu.replace('#logout', this.logoutUrl);\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(menu);\n this.emitDebug('Navigazione principale recuperata!');\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero della Navigazione principale\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Navigazione principale di default\");\n }\n );\n }\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\n\nconst DEFAULT_URL = '/cs/internet/headersecondariointranet.html';\n\n/**\n * Il componente renderizza il menu intranet.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n selector: 'inail-menu-intranet',\n templateUrl: './cs.internet.headersecondariointranet.html',\n styleUrls: ['./menu-intranet.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuIntranetComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n MAX_SM: number = 755;\n\n innerHtml: SafeScript;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n @Input()\n url: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per il recupero automatico dell'html dell'header secondario\n * e per la customizzazione degli href nell'html di default nel caso non venga passato\n * uno specifico html o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n @Input()\n domainUrl: string = '';\n\n /**\n * Html da visualizzare\n */\n @Input()\n html: string;\n\n inizializzazioneTerminata: boolean = false;\n menuSecondarioElencoAperto: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n super(cdr);\n this.logPrefix = '[inail-menu-intranet]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // Il menu intranet viene recuperato da remoto solo se non viene\n // passato esplicitamente dall'esterno l'html da visualizzare\n if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n if (changes.url.firstChange) {\n\n this.emitDebug('Inizializzazione Menu intranet');\n }\n\n this.recupera();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.html) {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n\n } else if (!this.url) {\n\n this.emitDebug('Inizializzazione Menu intranet, Url Menu intranet non specificato');\n\n this.url = this.domainUrl + DEFAULT_URL;\n\n this.recupera();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n apriOnClick() {\n\n this.menuSecondarioElencoAperto = !this.menuSecondarioElencoAperto;\n this.cdr.detectChanges();\n }\n\n recupera() {\n this.emitDebug(\"Recupero menu intranet da: \" + this.url);\n\n this.http.get(this.url, {responseType: 'text'})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.emitDebug('Menu intranet inizializzato!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n })\n )\n .subscribe(\n (menu: string) => {\n\n this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(menu);\n this.emitDebug('Menu intranet recuperato!');\n },\n err => {\n this.innerHtml = undefined;\n this.emitError(\"Errore nel recupero del Menu intranet\");\n this.emitError(err);\n this.emitWarn(\"Visualizzazione Menu intranet di default\");\n }\n );\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport {finalize, first, tap} from \"rxjs/operators\";\nimport {API_DEFAULT_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isBlankOrNull, startWithSlash} from \"../../../../utils/common.operators\";\n\nexport class NavigazioneUtenteConfigurations {\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti automatici\n * (recupero dei frammento html menu intranet e recupero info dipendente da API Gateway)\n * e per customizzare gli href nell'html di default del menu intranet nel caso non venga passato\n * uno specifico html per esso o non sia stato possibile recuperare quello in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string = '';\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene utilizzato se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n cdnEndpoint?: string = '';\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet)\n * del dominio (se passato) specificato tramite l'input cdnEndpoint.\n * Se invece viene specificato il dominio della CDN tramite la proprieta' cdnEndpoint,\n * l'indirizzo di default utilizzato sara' /assets/inail/static, relativo alla CDN INAIL.\n * Nel caso di questo componente serve esclusivamente per il recupero dell'immagine utilizzata per l'utente anonimo.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n assetsUrl?: string;\n\n /**\n * Se true visualizza il menu intranet.\n */\n intranet?: boolean;\n\n /**\n * Se true visualizza il menu cerca utente.\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true visulizza le notifiche utente.\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gataway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati del'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n\nconst DATI_DIPENDENTE_URL = '/au/dipendente/estrai-dati-dipendente?matricola=';\nconst FOTO_DIPENDENTE_URL = '/au/dipendente/estrai-foto-dipendente?matricola=';\nconst CHECKSESSION_URL = '/checksession';\nconst PROFILO_UTENTE_DEFAULT_URL = '/cs/intranet/home/consultazione/gestione-profilo.html';\nconst CERCA_PERSONE_DEFAULT_URL = '/csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html';\nconst PATH_FOTO_ANONIMO = '/img/anonimo.jpg ';\n\n/**\n * Il componente renderizza la navigazione utente,\n * cioe' l'elemento html con id='menusecondario' secondo la struttura definita da INAIL.\n * L'elemento visualizza le informazioni inerenti l'utente loggato ed opzionalmente il menu intranet,\n * il form per la ricerca degli utenti, e le notifiche utente.\n */\n@Component({\n selector: 'inail-navigazione-utente',\n templateUrl: './navigazione-utente.component.html',\n styleUrls: ['./navigazione-utente.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneUtenteComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n _immagineProfilo: SafeScript;\n testoRicercaUtente: string;\n\n @Input()\n config: NavigazioneUtenteConfigurations = {};\n\n @Input()\n infoDipendente: UserInfo;\n\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n menuCercaUtenteAperto: boolean = false;\n\n constructor(private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private http: HttpClient) {\n\n super(cdr);\n this.logPrefix = '[inail-navigazione-utente]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.config?.currentValue && changes?.config?.isFirstChange() === false) {\n\n this.init();\n }\n\n // if(changes?.infoDipendente?.currentValue && changes?.infoDipendente?.isFirstChange() === false) {\n //\n // this.cdr.detectChanges();\n // }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.init();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n async init() {\n\n if (this.config.assetsUrl == undefined) {\n\n this.config.assetsUrl = this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL;\n }\n\n if (!isAbsolute(this.config.assetsUrl) && startWithSlash(this.config.assetsUrl) && this.config.cdnEndpoint != undefined) {\n\n this.config.assetsUrl = this.config.cdnEndpoint + this.config.assetsUrl;\n }\n\n if (!this.config.apiGatewayUrl) {\n\n this.config.apiGatewayUrl = this.config.domainUrl + API_DEFAULT_URL;\n }\n\n if (!this.config.profiloUtenteUrl) {\n\n this.config.profiloUtenteUrl = PROFILO_UTENTE_DEFAULT_URL;\n }\n\n if (!this.infoDipendente) {\n\n this.infoDipendente = {};\n\n // Se le informazioni dell'utente connesso\n // non sono state date in input\n // allora vengono recuperate automaticamente in remoto\n if (this.config.recuperoAutomaticoDatiUtente) {\n\n let datiDipendente: DatiDipendente = await this.recuperaDatiDipendente();\n\n if (datiDipendente) {\n\n this.datiDipendente.emit(datiDipendente);\n this.infoDipendente.nome = datiDipendente.nome;\n this.infoDipendente.cognome = datiDipendente.cognome;\n }\n\n this.infoDipendente.foto = await this.recuperaFotoDipendente();\n }\n }\n\n this._immagineProfilo =\n\n this.infoDipendente.foto\n\n ? this.sanitizer.bypassSecurityTrustUrl(`data:image/png;base64,${this.infoDipendente.foto}`)\n : this.urlFotoUtenteAnonimo;\n\n this.cdr.detectChanges();\n }\n\n get immagineProfilo() {\n\n return this._immagineProfilo || this.urlFotoUtenteAnonimo;\n }\n\n get urlFotoUtenteAnonimo(): string {\n\n return this.config ? `${this.config?.assetsUrl}${PATH_FOTO_ANONIMO}` : undefined\n }\n\n async getMatricolaDipendente(): Promise<string> {\n\n if (isBlankOrNull(this.infoDipendente.matricola)) {\n\n this.infoDipendente.matricola = await this.recuperaMatricolaDipendente();\n }\n\n return this.infoDipendente.matricola;\n }\n\n async recuperaMatricolaDipendente(): Promise<string> {\n\n let matricola: string;\n\n try {\n\n let url: string = this.config.apiGatewayUrl + CHECKSESSION_URL;\n\n this.emitDebug(`Recupero matricola dipendente per Navigazione utente da ${url}`);\n\n let response: ChecksessionResponse = await this.get(url).toPromise();\n\n this.checksession.emit(response);\n\n if (response?.result === true) {\n\n matricola = response.User;\n } else if (response?.[\"http-status\"] === 403) {\n\n this.emitWarn('Utente non autenticato!')\n } else {\n this.emitError(\"Errore nel recupero della matricola dipendente\");\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero della matricola dipendente\");\n this.emitError(e);\n }\n\n return matricola;\n }\n\n async recuperaDatiDipendente(): Promise<DatiDipendente> {\n\n let matricola = await this.getMatricolaDipendente();\n\n let datiDipendente: DatiDipendente;\n\n if (matricola != undefined) {\n\n let url = this.config.apiGatewayUrl + DATI_DIPENDENTE_URL + matricola;\n\n try {\n this.emitDebug(`Recupero dati dipendente per Navigazione utente da ${url}`);\n\n let response: DatiDipendenteResponse = await this.get(url).toPromise();\n\n if (!response || !response.dipendente || response.dipendente.length == 0 || !response.dipendente[0]) {\n\n this.emitError(\"Dipendente non trovato\");\n\n } else {\n\n datiDipendente = response.dipendente[0];\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero dei dati dipendente\");\n this.emitError(e);\n }\n }\n\n return datiDipendente;\n }\n\n async recuperaFotoDipendente(): Promise<string> {\n\n let matricola = await this.getMatricolaDipendente();\n\n let fotoDipendente: string;\n\n if (matricola != undefined) {\n\n let url = this.config.apiGatewayUrl + FOTO_DIPENDENTE_URL + matricola;\n\n try {\n this.emitDebug(\"Recupero foto dipendente per Navigazione utente da \" + url);\n\n let response: FotoDipendenteResponse = await this.get(url).toPromise();\n\n if (!response || !response.fotoDipendente || response.fotoDipendente.length == 0 || !response.fotoDipendente[0]) {\n\n this.emitError(\"Foto dipendente non trovata\");\n\n } else {\n\n fotoDipendente = response.fotoDipendente[0].foto;\n }\n\n } catch (e) {\n this.emitError(\"Errore nel recupero della foto dipendente\");\n this.emitError(e);\n }\n }\n\n return fotoDipendente;\n }\n\n get(url: string) {\n\n let headers = new HttpHeaders().set('client_id', this.config.clientId);\n\n return this.http.get<any>(url, {headers: headers, withCredentials: true})\n .pipe(\n first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n finalize(() => {\n this.cdr.detectChanges();\n }),\n tap(response => {\n this.emitDebug(\"Risposta richiesta get:\");\n this.emitDebug(response);\n })\n )\n }\n\n onCercaUtenteSubmit() {\n\n let url = this.config.cercaPersonePageUrl || this.config.domainUrl + CERCA_PERSONE_DEFAULT_URL;\n location.href = `${url}?campo_unico_menu=${this.testoRicercaUtente}&_authkey_=null&cerca=cercaHeader`;\n }\n\n apriOnClick() {\n\n this.menuCercaUtenteAperto = !this.menuCercaUtenteAperto\n this.cdr.detectChanges();\n }\n}\n\ninterface FotoDipendenteResponse {\n\n fotoDipendente: FotoDipendente[];\n}\n\ninterface FotoDipendente {\n\n foto: string;\n}\n\nexport interface ChecksessionResponse {\n result: boolean,\n 'http-status': number,\n message: string,\n sid?: string,\n 'XSRF-TOKEN'?: string,\n redirect?: string,\n User?: string\n}\n\ninterface DatiDipendenteResponse {\n\n dipendente: DatiDipendente[];\n}\n\nexport interface DatiDipendente {\n\n \"contratto\": string,\n \"mail\": string,\n \"cognome\": string,\n \"flagVisibilitaCellulare\": string,\n \"qualifica\": string,\n \"codiceUnita\": string,\n \"nome\": string,\n \"codiceFiscale\": string,\n \"pec\": string,\n \"numeroCellularePrivato\": string,\n \"descrizioneUnita\": string,\n \"utenteHr\": string,\n \"netFax\": string,\n \"numeroCellulare\": string,\n \"matricola\": string,\n \"livello\": string,\n \"numeroBreve\": string,\n \"numeroTelefono\": string\n}\n\nexport interface UserInfo {\n\n matricola?: string,\n nome?: string,\n cognome?: string,\n\n /**\n * Immagine della foto del dipendente codificata in base64\n */\n foto?: string\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {DEFAULT_ASSETS_CDN_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {ChecksessionResponse, DatiDipendente, NavigazioneUtenteConfigurations, UserInfo} from \"../navigazione-utente/navigazione-utente.component\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isBlankOrNull, isNotBlankOrNull, startWithSlash} from \"../../../../utils/common.operators\";\n\n/**\n * Il componente renderizza tutto l'header della pagina.\n *\n * L'header di pagina e' composto da:\n * Logo INAIL\n * Navigazione interna\n * Navigazione principale (Barra blu con pulsante esci)\n * Menu' di navigazione utente loggato (barra verde con foto utente e menu intranet).\n *\n * E' possibile passare al componente degli specifici frammenti html da visualizzare\n * per la navigazione principale e per il menu intranet\n * oppure indicare al componente i rispettivi url da cui recuperare i frammenti html.\n *\n * Il componente visualizzera' gli html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n // E' stato scelto di utilizzare come selettore il nome del tag\n // per consentire alle regole css definite dall'INAIL di\n // matchare con gli elementi html,\n // cosa che non avverrebbe se venisse utilizzato un tag custom\n // frapposto tra il tag header e quello contenitore.\n selector: 'header[id=\"inail-header\"]',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n configurazioniNavigazioneUtente: NavigazioneUtenteConfigurations;\n\n @Input()\n config: HeaderConfigurations;\n\n @Input()\n infoDipendente: UserInfo;\n\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n @ViewChild('logoInail') logoInail;\n\n inizializzazioneCompletata: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-header]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug('ngOnChanges');\n this.emitDebug(changes);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n this.logoInail.nativeElement.focus();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.emitDebug('config');\n this.emitDebug(this.config);\n\n if (!this.config) {\n\n this.config = {clientId: ''};\n }\n\n if (isBlankOrNull(this.config.domainUrl)) {\n\n this.config.domainUrl = '';\n }\n\n if (isBlankOrNull(this.config.cdnEndpoint)) {\n\n this.config.cdnEndpoint = '';\n }\n\n if (isBlankOrNull(this.config.assetsUrl)) {\n\n if(isNotBlankOrNull(this.config.cdnEndpoint)) {\n\n this.config.assetsUrl = DEFAULT_ASSETS_CDN_URL;\n }\n else {\n\n this.config.assetsUrl = this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL;\n }\n }\n\n if (!isAbsolute(this.config.assetsUrl) && startWithSlash(this.config.assetsUrl) && this.config.cdnEndpoint != undefined) {\n\n this.config.assetsUrl = this.config.cdnEndpoint + this.config.assetsUrl;\n }\n\n this.configurazioniNavigazioneUtente = {\n apiGatewayUrl: this.config.apiGatewayUrl,\n clientId: this.config.clientId,\n domainUrl: this.config.domainUrl,\n assetsUrl: this.config.assetsUrl,\n cdnEndpoint: this.config.cdnEndpoint,\n intranet: this.config.intranet,\n menuIntranetUrl: this.config.menuIntranetUrl,\n menuIntranetHtml: this.config.menuIntranetHtml,\n profiloUtenteUrl: this.config.profiloUtenteUrl,\n visualizzaNotificheUtente: this.config.visualizzaNotificheUtente,\n visualizzaMenuCercaUtente: this.config.visualizzaMenuCercaUtente,\n cercaPersonePageUrl: this.config.cercaPersonePageUrl,\n recuperoAutomaticoDatiUtente: this.config.recuperoAutomaticoDatiUtente\n }\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n\n this.inizializzazioneCompletata = true;\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\nexport class HeaderConfigurations {\n\n /**\n * Se true visualizza il menu intranet\n */\n intranet?: boolean;\n\n /**\n * Se true visulizza il menu cerca utente\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true visualizza le notifiche utente\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n navigazionePrincipaleUrl?: string;\n\n /**\n * Html della navigazione principale da visualizzare\n */\n navigazionePrincipaleHtml?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n logoutUrl?: string;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente esclusivamente per customizzare i comportamenti di default e gli href\n * dgli html di default nel caso non vengano passati\n * degli specifici html o non sia stato possibile recuperare quelli in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string;\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n */\n cdnEndpoint?: string;\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet)\n * del dominio (se passato) specificato tramite la proprieta' cdnEndpoint.\n * Se invece viene specificato il dominio della CDN tramite la proprieta' cdnEndpoint,\n * l'indirizzo di default utilizzato sara' /assets/inail/static, relativo alla CDN INAIL.\n */\n assetsUrl?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gateway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: any;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati del'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class LoaderComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n show: boolean;\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.logPrefix = '[inail-loader]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {ChangeDetectorRef, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent} from \"../../base.component\";\n\n// Set the effect type\nconst effect = 'slide';\n\n// Set the options for the effect type chosen\nconst options = 'direction: left';\n\n// Set the duration (default: 400 milliseconds)\nconst duration = 500;\n\n/**\n * @deprecated\n * Modo utilizzato nella versione 1 della libreria\n */\nconst toggleMenuNavigazioneSecondaria = () => {\n\n // Questo trick serve per verificare che non sia gia in corso\n // un effetto di sliding sul menu\n setTimeout(() => {\n\n // TODO\n // @ts-ignore\n if ($('.ui-effects-wrapper').length == 0) {\n\n // @ts-ignore\n jQuery('.slider-menu').toggle(effect, options, duration);\n }\n })\n};\n\n@Component({\n selector: 'inail-trigger-slider-menu-button',\n templateUrl: './trigger-slider-menu-button.component.html',\n styleUrls: ['./trigger-slider-menu-button.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TriggerSliderMenuButtonComponent extends BaseComponent implements OnInit {\n\n constructor(private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.detach();\n }\n\n ngOnInit() {\n }\n\n open() {\n // toggleMenuNavigazioneSecondaria();\n }\n}\n","import {ExternalResource, ExternalScript} from \"./static-resources\";\n\nconst REL_STYLESHEET = 'stylesheet';\nconst REL_ICON = 'icon';\nconst MEDIA_SCREEN = 'screen';\nconst MEDIA_PRINT = 'print';\nconst TYPE_CSS = 'text/css';\nconst TYPE_IMAGE_ICON = 'image/x-icon';\nconst TYPE_JAVASCRIPT = 'text/javascript';\n\nconst INAIL_STATIC_PATH = '/assets/inail/static';\nconst INAIL_STATIC_INTRA_PATH = '/assets/inail/static_intra';\nconst INAIL_STATIC_WEBKIT_PATH = '/assets/inail/static-webkit';\n\nexport const webkitExternalResources: ExternalResource[] = [\n\n // Favicon\n // {href: `/img/favicon.ico`, rel: REL_ICON, type: TYPE_IMAGE_ICON, assetUrl: INAIL_STATIC_PATH},\n\n // CSS Media screen\n {href: `/css/bootstrap.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/foglia.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/custom.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/form.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/font-awesome.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: `${INAIL_STATIC_PATH}/font-awesome-4.3.0`},\n {href: `/js/datepicker/bootstrap-datepicker3.standalone.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/home_sezione.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/servizi.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/jquery-ui.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n\n // CSS Media print\n {href: `/css/print.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_PATH},\n {href: `/css/print_intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_INTRA_PATH},\n\n // Questo CSS e' del webkit. Da specifiche non andrebbe importato,\n // risulta pero' necessario per la corretta visualizzazione.\n {href: `/css/custom-webkit.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH},\n\n // CSS Webkit v3.1.0\n {href: `/css/slick/slick.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH}\n]\n\n// Deprecato !!!\n// export const webkitExternalScripts: ExternalScript[] = [\n//\n// // JS Head Intranet\n// {src: `/js/modernizr.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/jquery-1.11.1.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// // {src: `/js/jquery-ui.min.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n// {src: `/js/jquery-ui.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/bootstrap.min.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n//\n// // Inizializzazione date picker\n// // {src: `/js/datepicker/bootstrap-datepicker.min.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n// {src: `/js/datepicker/bootstrap-datepicker.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n// {src: `/js/datepicker/bootstrap-datepicker.it.min.js`, type: TYPE_JAVASCRIPT, assetUrl: INAIL_STATIC_PATH},\n//\n// // SCRIPT per SLIDER MENU\n// // {src: `/vendor/jquery-ui-1.11.4.custom/jquery-ui.min.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/main.js`, type: TYPE_JAVASCRIPT}, // TODO inserire in cdn\n//\n// // Altro // TODO inserire in cdn\n// {src: `/js/print.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/spid-sp-access-button.min.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/jquery.rwdImageMaps.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/custom-webkit.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/combobox.js`, type: TYPE_JAVASCRIPT},\n// {src: `/js/slick.js`, type: TYPE_JAVASCRIPT}\n// ];\n\n","import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {isFunction} from 'rxjs/internal-compatibility';\nimport {filter} from \"rxjs/operators\";\nimport {clone, uuidv4} from \"../../../../utils/common.operators\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\nconst COLLAPSING_DURATION = 350;\nconst AUTO_SHOW = 'auto'\n\nconst FOCUSABLE_ITEMS_SELECTOR = 'ul.inail-menu > li > a:not([tabindex=\"-1\"])';\n\nexport declare type CheckFn = () => boolean;\nexport declare type GetStringFn = () => string;\nexport declare type MenuItemShowMode = 'auto';\n\ntype CollapseMode = 'show' | 'hide' | 'toggle';\n\nexport class MenuItem {\n\n id?: string;\n label: string | GetStringFn;\n link?: string | GetStringFn;\n linkRegex?: string | GetStringFn;\n queryParams?: {\n [k: string]: any;\n }\n callback?: Function;\n activeLinks?: string[];\n show?: boolean | CheckFn | MenuItemShowMode;\n collapsible?: boolean;\n collapsed?: boolean;\n subItems?: MenuItem[];\n parent?: MenuItem;\n}\n\n/**\n * Deep copy dell'oggetto MenuItem\n *\n * @param item\n */\nconst cloneItem = (item: MenuItem): MenuItem => {\n\n let itemClone: MenuItem;\n\n if(item) {\n\n itemClone = clone(item);\n\n itemClone.label = item.label;\n itemClone.link = item.link;\n itemClone.linkRegex = item.linkRegex;\n itemClone.callback = item.callback;\n itemClone.show = item.show;\n itemClone.parent = cloneItem(item.parent);\n itemClone.subItems = cloneItems(item.subItems);\n }\n\n return itemClone;\n}\n\n/**\n * Deep copy dell'oggetto MenuItem[]\n *\n * @param items\n */\nconst cloneItems = (items: MenuItem[]): MenuItem[] => {\n\n let itemsClone: MenuItem[];\n\n if(items) {\n\n itemsClone = items.map(item => cloneItem(item));\n }\n\n return itemsClone;\n}\n\n@Component({\n selector: 'inail-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n /**\n * Elemento parent del menu.\n * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n */\n @Input()\n parent: MenuItem;\n\n /**\n * Elemento parent del menu.\n * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n */\n @Input()\n innerMenu: boolean = false;\n\n /**\n * id dell'elemento che si vuole attivare.\n * Se specificato fa diventare bold la voce di menu associata\n */\n @Input()\n activeItem: string;\n\n /**\n * Emette l'elemento del menu\n * che corrisponde all'url corrente.\n */\n @Input()\n emitCurrent: Observable<void>;\n\n /**\n * Collassa il menu\n * Se passato in input un id collassa lo specifico elemento.\n */\n @Input()\n collapse: Observable<string | void>;\n\n /**\n * Espande le voci di menu di primo livello.\n * Se specificato un id espande il ramo del menu\n * che porta all'elemento con l'id specificato.\n */\n @Input()\n show: Observable<string | void>;\n\n /**\n * Espande tutte le voci del menu\n * comprese quelle dei livelli annidati\n */\n @Input()\n showAll: Observable<void>; // todo testare\n\n /**\n * Effettua il toggle dell'elemento specificato tramite id\n */\n @Input()\n toggle: Observable<string>; // todo testare\n\n /**\n * Elementi del menu\n */\n @Input()\n items: MenuItem[];\n originalItems: MenuItem[];\n\n /**\n *\n */\n @Input()\n reinit: Observable<void | MenuItem[]>;\n\n /**\n * Se true disabilita la sovrascrittura della proprieta\n * link negli elementi del menu\n * quando la proprieta linkRegex matcha\n * con l'url corrente\n */\n disableLinkOverwriting: boolean = false;\n\n /**\n * Se true indica che le voci del menu sono collassabili.\n * Questa impostazione viene sovrascritta se specificato diversamente\n * negli elementi del menu\n */\n @Input()\n collapsible: boolean = false;\n\n /**\n * Indica lo stato iniziale del menu, se colassato o espanso.\n * Questa impostazione viene sovrascritta se specificato diversamente\n * negli elementi del menu\n */\n @Input()\n collapsed: boolean;\n\n /**\n * Se true abilita l'effetto fisarmonica\n * sulle voci di menu espandibili.\n */\n @Input()\n collapseOther: boolean = false;\n\n /**\n * Se true espande automaticamente il percorso\n * verso un elemento\n * quando questo si riferisce all'url corrente\n */\n @Input()\n expandAutomatically: boolean = true;\n\n /**\n * Emette la voce di menu selezionata.\n */\n @Output()\n select: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n /**\n * Emette la voce di menu che corrisponde\n * con l'url corrente\n * dopo un evento di routing\n */\n @Output()\n currentItem: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n @ViewChild('menu')\n menu: ElementRef<HTMLElement>;\n\n // @ViewChildren(MenuComponent)\n // sottoMenu: QueryList<MenuComponent>;\n\n inizializzazioneCompletata: boolean = false;\n mostraItem: EventEmitter<string> = new EventEmitter<string>();\n\n // Servono per l'animazione di apertura/chiusura fluida\n menuHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n emitMenuHeight = () => {\n\n if (this.isCollapsible()) {\n\n let scrollHeight = this.menu?.nativeElement?.scrollHeight;\n let nextHeight = this.isCollapsed() ? 0 : scrollHeight;\n\n if (nextHeight > 0) {\n\n this.menuHeight$.next(nextHeight);\n\n } else {\n\n // Imposto l'height effettivo\n // per poi impostarlo subito dopo a 0\n // in modo da far funzionare l'animazione.\n // Se non viene impostato un valore iniziale\n // l'animazione CSS non funziona.\n this.menuHeight$.next(scrollHeight);\n setTimeout(() => this.menuHeight$.next(0), 15);\n }\n\n // Rimuovo height.\n // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n setTimeout(() => this.menuHeight$.next(undefined), COLLAPSING_DURATION);\n }\n };\n\n constructor(public router: Router, private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-menu]';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // Items\n if (changes?.items?.currentValue) {\n\n if(!this.innerMenu) {\n\n this.items = cloneItems(changes?.items?.currentValue);\n this.originalItems = cloneItems(changes?.items?.currentValue);\n }\n\n this.inizializzaItems(this.items);\n this.emitCurrentItem();\n }\n\n // Emit Current\n if (changes?.emitCurrent?.currentValue) {\n\n this.push(changes.emitCurrent.currentValue.subscribe(() => this.emitCurrentItem()));\n }\n\n // Collapsed\n if (changes?.collapsed && !changes?.collapsed.isFirstChange()) {\n\n this.emitMenuHeight();\n }\n\n // Collassa Elemento o Livello\n if (changes.collapse && changes.collapse.currentValue) {\n\n this.push(\n changes.collapse.currentValue.subscribe((id: string) => {\n\n id == undefined ? this.collassaMenu() : this.collassaItem(this.findItem(id, this.items));\n })\n );\n }\n\n // Espandi Elemento o Livello\n if (changes?.show?.currentValue) {\n\n this.push(\n changes.show.currentValue.subscribe((id: string) => {\n\n id == undefined ? this.espandiMenu() : this.espandiPercorso(id);\n })\n );\n }\n\n // Toggla Elemento\n if (changes?.toggle?.currentValue) {\n\n this.push(changes.toggle.currentValue.subscribe((id: string) => this.toggleItem(this.findItem(id, this.items))));\n }\n\n // // todo\n // // Espande tutti i livelli\n // if (changes.showAll && changes.showAll.currentValue) {\n //\n // this.push(changes.showAll.currentValue.subscribe(() => this.espandiTutti()));\n // }\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n // Impostazioni di default\n\n if (this.collapsible === false) {\n\n this.collapsed = false;\n }\n\n if (this.collapsed == undefined) {\n\n this.collapsed = (this.collapsible === true);\n }\n\n // this.inizializzaItems(this.items);\n this.inizializzazioneCompletata = true;\n this.emitCurrentItem();\n\n // Ricerca ed emissione della voce di menu\n // corrispondente all'url corrente\n // al NavigationEnd\n this.push(\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.impostaUrlEffettivi(this.items);\n this.emitCurrentItem();\n })\n );\n\n if (this.reinit) {\n\n this.push(\n this.reinit.subscribe((items: MenuItem[]) => {\n\n this.emitDebug(`Reinit!`);\n\n this.items = cloneItems(items || this.originalItems);\n\n if(items) {\n\n this.originalItems = cloneItems(items);\n }\n\n this.inizializzaItems(this.items)\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n // -------------------------- Operatori controllo stato menu --------------------------\n\n isCollapsible = (): boolean => this.innerMenu && this.collapsible;\n isCollapsed = (): boolean => this.isCollapsible() && this.collapsed;\n\n // -------------------------- Operatori controllo stato item --------------------------\n\n isItemCollapsible = (item: MenuItem) => item.collapsible && this.hasSubItems(item);\n isItemCollapsed = (item: MenuItem) => item?.collapsible && item?.collapsed;\n hasSubItems = (item: MenuItem): boolean => item?.subItems?.length > 0;\n isActive = (item: MenuItem) => this.activeItem ? (item.id == this.activeItem) : this.isCurrentPageItem(item);\n\n /**\n * Verifica che l'elemento in input\n * sia associato all'url corrente\n *\n * @param item\n */\n isCurrentPageItem = (item: MenuItem): boolean =>\n this.isCurrentUrl(this.getItemLink(item))\n || this.isCurrentUrl(this.getItemLinkRegex(item))\n || (item.activeLinks != undefined\n && item.activeLinks.some(this.isCurrentUrl));\n\n /**\n * Restituisce true se l'elemento\n * deve essere visualizzato\n *\n * @param item\n */\n showItem = (item: MenuItem): boolean => {\n\n return item.show === true\n || item.show == undefined\n || (isFunction(item.show) && (item.show as CheckFn)() === true)\n || this.isAutoShowItem(item);\n }\n\n /**\n * Restituisce true se l'elemento\n * deve essere visualizzato in automatico\n * quando corrisponde all'url corrente\n * o se uno dei suoi nodi figli\n * e' un elemento che deve essere visualizzato in automatico.\n *\n * @param item\n */\n isAutoShowItem = (item: MenuItem): boolean =>\n\n item.show === AUTO_SHOW\n && (this.isCurrentPageItem(item)\n || (item.subItems && item.subItems.some(this.isAutoShowItem)));\n\n // -------------------------- Operatori recupero info item --------------------------\n\n getItemLink = (item: MenuItem): string => isFunction(item.link) ? (item.link as GetStringFn)() : item.link;\n getItemLinkRegex = (item: MenuItem): string => isFunction(item.linkRegex) ? (item.linkRegex as GetStringFn)() : item.linkRegex;\n getItemLabel = (item: MenuItem): string => isFunction(item.label) ? (item.label as GetStringFn)() : item.label;\n\n // -------------------------- Operatori di utilita --------------------------\n\n /**\n * Verifica che l'url dato in input\n * sia quello corrente\n *\n * @param url\n */\n isCurrentUrl = (url: string): boolean =>\n\n url != undefined\n && this.router.url\n .split('?')[0]\n .match(new RegExp('^'.concat(url).concat('$'), 'i')) != null;\n\n // -------------------------- Metodi --------------------------\n\n /**\n * Inizializza gli elementi del menu\n *\n * @private\n */\n private inizializzaItems(items: MenuItem[]) {\n\n if (items?.length) {\n\n // Impostazioni di default per gli elementi\n items.forEach((item: MenuItem) => {\n\n if (item.id == undefined) {\n\n item.id = uuidv4();\n }\n\n if (item.show == undefined) {\n\n item.show = true;\n }\n\n if (item.collapsible == undefined) {\n\n item.collapsible = this.collapsible;\n }\n\n if (item.collapsible == false) {\n\n item.collapsed = false;\n }\n\n if (item.collapsed == undefined) {\n\n // item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsible;\n item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsed;\n }\n });\n\n this.setParent(items, this.parent);\n this.impostaUrlEffettivi(items);\n }\n }\n\n /**\n * Sovrascrive la proprieta link degli elementi del menu\n * se la proprieta linkRegex matcha con l'url corrente.\n */\n private impostaUrlEffettivi(items: MenuItem[]) {\n\n if (items?.length) {\n\n items.forEach(this.impostaUrlEffettivo);\n }\n }\n\n /**\n * Sovrascrive la proprieta link dell'elemento del menu\n * se la proprieta linkRegex matcha con l'url corrente.\n */\n private impostaUrlEffettivo = (item: MenuItem) => {\n\n if (!this.disableLinkOverwriting && item && this.isCurrentUrl(this.getItemLinkRegex(item))) {\n\n item.link = this.router.url;\n }\n }\n\n /**\n * Emette l'elemento\n * associato all'url corrente\n */\n private emitCurrentItem() {\n\n let item: MenuItem = this.findCurrentItem(this.items);\n\n if (item != undefined) {\n\n this.impostaUrlEffettivo(item);\n\n this.emitDebug(\"Emissione item menu url corrente:\");\n this.emitDebug(item);\n\n this.currentItem.emit(item);\n\n // todo ???\n // if (this.collapseOther) {\n //\n // this.collapseOther(item);\n // }\n }\n }\n\n /**\n * Ricerca l'elemento di menu inerente\n * l'url corrente\n *\n * @param items\n */\n private findCurrentItem(items: MenuItem[]): MenuItem {\n\n let resultItem: MenuItem = undefined;\n\n if (items?.length) {\n\n items.forEach((item: MenuItem) => {\n\n if (resultItem == undefined && item != undefined && this.isCurrentPageItem(item)) {\n\n resultItem = item;\n }\n })\n }\n\n return resultItem;\n }\n\n /**\n *\n * @param id\n * @param items\n */\n private findItem(id: string, items: MenuItem[]) {\n\n let resultItem: MenuItem = undefined;\n\n if (items?.length) {\n\n items.forEach((item: MenuItem) => {\n\n if (resultItem == undefined && item != undefined) {\n\n resultItem = item.id == id ? item : this.findItem(id, item.subItems);\n }\n })\n }\n\n return resultItem;\n }\n\n /**\n *\n * @param id\n */\n private espandiPercorso(id: string) {\n\n if (this.items) {\n\n this.items.forEach((item: MenuItem) => {\n\n let innerItem: MenuItem = this.findItem(id, item.subItems);\n\n if ((item?.id == id) || innerItem != undefined) {\n\n this.espandiItem(item);\n\n if (this.collapseOther) {\n\n this.doCollapseOther(item);\n }\n\n if (innerItem) {\n\n setTimeout(() => this.mostraItem.emit(id), COLLAPSING_DURATION);\n }\n }\n })\n }\n }\n\n private espandiMenu = () => this.setCollapsedMenu('show');\n private collassaMenu = () => this.setCollapsedMenu('hide');\n\n private setCollapsedMenu(mode: CollapseMode) {\n\n if (this.items) {\n\n this.items.forEach(item => this.setCollapsed(item, mode));\n }\n }\n\n espandiItem = (item: MenuItem) => this.setCollapsed(item, 'show');\n collassaItem = (item: MenuItem) => this.setCollapsed(item, 'hide');\n toggleItem = (item: MenuItem) => this.setCollapsed(item, 'toggle');\n\n setCollapsed(item: MenuItem, mode: CollapseMode) {\n\n if (item && item.collapsible) {\n\n switch (mode) {\n\n case \"hide\":\n item.collapsed = true;\n break;\n\n case \"show\":\n item.collapsed = false;\n break;\n\n default:\n case \"toggle\":\n item.collapsed = !item.collapsed;\n break;\n }\n }\n }\n\n private setParent(items: MenuItem[], parent: MenuItem) {\n\n if (items?.length && parent) {\n\n items.forEach((item: MenuItem) => {\n\n if (item != undefined) {\n\n item.parent = this.toLightItem(parent);\n this.setParent(item.subItems, item);\n }\n })\n }\n }\n\n private toLightItem(e: MenuItem): MenuItem {\n\n return e != undefined\n ? {\n id: e.id,\n label: e.label,\n link: e.link,\n parent: this.toLightItem(e.parent)\n }\n : undefined\n }\n\n itemOnClick(item: MenuItem) {\n\n if (item) {\n\n if (item.callback && isFunction(item.callback)) {\n\n item.callback();\n }\n\n if (item.collapsible) {\n\n item.collapsed = !item.collapsed;\n\n if (item.collapsed === false && this.collapseOther === true) {\n\n this.doCollapseOther(item);\n }\n }\n }\n\n this.select.emit(item)\n }\n\n /**\n * Effetto fisarmonica\n *\n * @param item\n */\n private doCollapseOther(item: MenuItem) {\n\n if (item) {\n\n this.items.forEach((itm: MenuItem) => {\n\n if (itm && itm.id != item.id) {\n\n itm.collapsed = true\n\n }\n });\n }\n }\n\n /**\n *\n * @param currentItem\n * @param item\n */\n currentItemHandler(currentItem: MenuItem, item: MenuItem) {\n\n if (currentItem) {\n\n this.currentItem.emit(currentItem);\n\n if (this.expandAutomatically === true && !this.innerMenu) {\n\n this.espandiPercorso(currentItem.id);\n }\n }\n }\n\n collapsedOnChange() {\n\n // setTimeout(() => {\n // this.emitMaxHeight()\n // this.collapsedChange.emit(this.collapsed)\n // }, 50)\n }\n\n itemOnArrowDown() {\n\n let focusableItems = this.focusableItems;\n focusableItems.filter((index) => index > focusableItems.index(document.activeElement)).first()?.focus();\n }\n\n itemOnArrowUp() {\n let focusableItems = this.focusableItems;\n focusableItems.filter((index) => index < focusableItems.index(document.activeElement)).last()?.focus();\n }\n\n get focusableItems() {\n\n return window['$']('body').find(FOCUSABLE_ITEMS_SELECTOR);\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport const ERROR_BTN_CLASS: string = 'on-error-btn'\n\n@Component({\n selector: 'inail-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n label: string;\n @Input()\n title: string;\n @Input()\n name: string;\n @Input()\n disabled: boolean;\n @Input()\n labelClass: string;\n @Input()\n btnSuccess: boolean;\n @Input()\n btnLink: boolean;\n @Input()\n submit: boolean;\n @Input()\n angleRight: boolean;\n @Input()\n angleLeft: boolean;\n @Input()\n iconLeft: string;\n @Input()\n iconRight: string;\n @Input()\n focus: Observable<boolean | void>;\n @Output()\n onclick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>()\n\n @Input()\n setFocusOnError: boolean = false;\n\n @ViewChild('buttonElement')\n buttonElement: ElementRef<HTMLElement>\n\n @ViewChild('buttonContent')\n buttonContent: ElementRef<HTMLElement>;\n\n visualizzaContent: boolean;\n\n // inizializzazioneTerminata: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-button]`;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.visualizzaContent = isBlankOrNull(this.label);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit()\n this.logPrefix = `${this.logPrefix}[${this.label}]`\n\n if (this.focus) {\n\n this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll)));\n }\n\n this.visualizzaContent = isBlankOrNull(this.label);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n // setTimeout(() => {\n // // this.visualizzaContent = this.buttonContent?.nativeElement?.childNodes?.length > 0;\n // // this.inizializzazioneTerminata = true;\n // this.visualizzaContent = isBlankOrNull(this.label);\n // this.cdr.detectChanges();\n // });\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n onClick($event: MouseEvent) {\n\n this.onclick.emit($event)\n }\n\n private setFocus(scroll: boolean) {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.buttonElement.nativeElement, scroll);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {HeaderConfigurations} from \"../header/header.component\";\nimport {ChecksessionResponse, DatiDipendente, UserInfo} from \"../navigazione-utente/navigazione-utente.component\";\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {API_DEFAULT_URL, DEFAULT_ASSETS_INTRA_URL, DEFAULT_ASSETS_URL} from \"../layout-common-config\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isAbsolute, isHidden, isNotBlankOrNull, scrollToElement, scrollTop, startWithSlash} from \"../../../../utils/common.operators\";\nimport {webkitExternalResources} from \"./webkit-resources\";\nimport {ExternalResource, ExternalScript} from \"./static-resources\";\nimport {AppPage} from \"../breadcrumb/breadcrumb.component\";\nimport {GetStringFn, MenuComponent, MenuItem} from \"../menu/menu.component\";\nimport {isFunction} from \"rxjs/internal-compatibility\";\nimport {filter} from \"rxjs/operators\";\nimport {ERROR_BTN_CLASS} from \"../../ux/button/button.component\";\n\ntype ResourceType = 'script' | 'link';\n\ninterface LoadedResource {\n\n loaded: boolean,\n resource: ExternalResource | ExternalScript\n}\n\ninterface LoadedResourceResponse {\n\n resource: string\n loaded: boolean,\n status: string\n}\n\ninterface InailConfigurationResponse {\n\n cdn_endpoint: string;\n}\n\nexport enum SetFocusStrategy {\n\n /**\n * Indica che il focus dovra' essere impostato sul feedback globale\n */\n OnGlobalFeedback = 0,\n\n /**\n * Indica che il focus dovra' essere impostato sul primo elemento in pagina andato in errore\n */\n OnFirstPageError = 1\n}\n\nexport class InailLayoutConfigurations {\n\n /**\n * Indica il nome dell'applicazione\n */\n appName?: string\n\n /**\n * Se true visualizza il menu intranet\n */\n intranet?: boolean;\n\n /**\n * Se true imposta automaticamente il focus sul primo elemento\n * di input andato in errore\n */\n focusOnError?: boolean;\n\n /**\n * Se true effettua uno scrolling all'elemento\n * andato in errore prima di impostare il focus\n */\n scrollToError?: boolean;\n\n /**\n * Determina su quale elemento impostare il focus al verificarsi\n * di un errore\n */\n setFocusStrategy?: SetFocusStrategy = SetFocusStrategy.OnGlobalFeedback;\n\n /**\n * Se true alla fine di un evento di routing effettua uno scroll in cima alla pagina.\n */\n scrollTopAtNavigationEnd?: boolean;\n\n /**\n * Se true visualizza le notifiche utente\n */\n visualizzaNotificheUtente?: boolean;\n\n /**\n * Se true visulizza il menu cerca utente\n */\n visualizzaMenuCercaUtente?: boolean;\n\n /**\n * Se true permette al layout di occupare l'intera larghezza dello schermo\n */\n containerWide?: boolean;\n\n /**\n * Se true abilita il caricamento automatico delle risorse esterne dalla cdn INAIL.\n * Vengono creati ed inettati nel tag <head> i tag <link>\n * inerenti le risorse esterne necessarie alla\n * corretta visualizzazione dell'applicazione.\n * Se non passate in input al componente tramite la proprieta externalResources\n * vengono caricate le risorse di default.\n * Le risorse di default vengono recuperate dal dominio\n * specificato tramite la proprieta cdnEndpoint e cercate\n * nel sottopath specificato tramite proprieta assetsUrl\n */\n caricamentoDinamicoRisorseEsterne?: boolean;\n\n /**\n * todo rivedere\n * Se true abilita il caricamento automatico degli script esterni.\n * Vengono creati ed inettati nel tag <head> i tag <script>\n * inerenti gli script necessari al\n * corretto funzionamento dell'applicazione.\n * Se non passati in input al componente\n * vengono caricati gli script di default.\n * todo: inserire lista scripts (vedere file webkit-resources.ts)\n * Gli scripts di default vengono recuperati dal dominio\n * specificato tramite la proprieta cdnEndpoint e cercati\n * nel sottopath specificato tramite proprieta assetsUrl\n */\n // caricamentoDinamicoScriptEsterni?: boolean;\n\n /**\n * Indica il dominio applicativo.\n * (e.g. https://collportale.inail.it)\n * Viene utilizzato dal componente per customizzare i comportamenti automatici\n * (come il recupero dei frammenti html che costituiscono l'header ed il recupero\n * delle info inerenti l'utente loggato)\n * e per customizzare gli href negli html di default (header e footer) nel caso in cui non vengano passati\n * degli specifici html o non sia stato possibile recuperare quelli in remoto.\n * Se non specificato viene utilizzato il dominio corrente.\n */\n domainUrl?: string;\n\n /**\n * Endpoint della cdn.\n * (e.g. https://cdncoll.inailcloud.it)\n * Se non specificato viene utilizzato il dominio corrente.\n * Non viene preso in considerazione se e' stato specificato un url assoluto nell'input assetsUrl.\n */\n cdnEndpoint?: string;\n\n /**\n * Url per il recupero degli assets.\n * Se non specificato viene utilizzato l'indirizzo relativo /static (in caso di applicazione non intranet)\n * oppure /static_intra (in caso di applicazione intranet), oppure /assets/inail/static\n * nel caso sia stata valorizzata anche la proprieta' cdnEndpoint.\n * Se viene specificato un path assoluto l'input cdnEndpoint non viene preso in considerazione.\n */\n assetsUrl?: string;\n\n /**\n * Recupera automaticamente l'endpoint della cdn.\n * L'endpoint viene recuperato contattando l'api gateway all'indirizzo\n * '/.well-known/inail-configuration'\n * l'endpoint utilizzato sara' quello specificato\n * nella proprieta cdn_endpoint dell'oggetto restituito.\n * Il recupero dell'endpoint non viene effettutato se e' stata\n * impostata la proprieta di configurazione cdnEndpoint.\n * L'api gateway viene contattato prendendo in considerazione\n * quanto specificato tramite la proprieta' di configurazione\n * apiGatewayUrl\n * */\n recuperoAutomaticoCdnEnpoint?: boolean;\n\n /**\n * Tempo di attesa in millisecondi\n * del caricamento tra gli script.\n * Il valore di default e' 300.\n */\n // scriptLoadingDeelay?: number;\n\n /**\n * Url da cui recuperare l'html della navigazione principale.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/header.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n navigazionePrincipaleUrl?: string;\n\n /**\n * Html della navigazione principale da visualizzare\n */\n navigazionePrincipaleHtml?: string;\n\n /**\n * Url da cui recuperare l'html del menu intranet.\n * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n menuIntranetUrl?: string;\n\n /**\n * Html del menu intranet da visualizzare\n */\n menuIntranetHtml?: string;\n\n /**\n * Url da cui recuperare l'html del footer.\n * Se non specificato il footer viene recuperato dall'indirizzo relativo /cs/internet/footer.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n */\n footerUrl?: string;\n\n /**\n * Html del footer da visualizzare\n */\n footerHtml?: string;\n\n /**\n * Url della pagina di gestione del profilo utente.\n * Se non specificato viene usato l'indirizzo relativo /cs/intranet/home/consultazione/gestione-profilo.html\n * del dominio (se passato) specificato tramite l'input domainUrl.\n */\n profiloUtenteUrl?: string;\n\n /**\n * Url della pagina per la ricerca delle persone.\n * Se non specificato viene usato l'indirizzo relativo /csintra/intranet/home/consultazione/cerca-persone-e-strutture/cerca-persone-fp.html\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n cercaPersonePageUrl?: string;\n\n /**\n * Url del pulsante di logout.\n * Se non specificato viene usato l'url relativo /cs/LogoutUser?excludedCookies=SMSESSION\n * del dominio (se passato) specificato tramite l'input domainUrl\n */\n logoutUrl?: string;\n\n /**\n * Identificativo dell'applicazione corrente in accordo\n * con l'API Gateway.\n */\n clientId?: string;\n\n /**\n * Url a cui contattare l'Api Gateway.\n * Se non specificato viene contattato all'indirizzo relativo /api\n * nel dominio (se passato) specificato tramite l'input domainUrl.\n */\n apiGatewayUrl?: string;\n\n /**\n * Abilita esplicitamente il recupero automatico delle informazioni utente.\n * Le informazioni dell'utente vengono recuperate contattando i servizi:\n * /au/dipendente/estrai-dati-dipendente\n * /au/dipendente/estrai-foto-dipendente\n * esposti dall'api gateway.\n * Il recupero automatico non viene effettuato se i dati dell'utente\n * vengono esplicitamente passati in input.\n */\n recuperoAutomaticoDatiUtente?: boolean;\n}\n\n/**\n * Il componente renderizza l'intero layout dell'applicazione.\n *\n * Comprende gli elementi comuni a tutte le applicazioni INAIL:\n * Header, footer, spazio per breadcrumb e menu laterale.\n *\n * Il componente implementa autonomamente il meccanismo per rendere responsive l'applicazione,\n * secondo quanto richiesto nelle linee guida INAIL.\n *\n * E' possibile iniettare nel layout renderizzato il contenuto principale delle pagine,\n * il breadcrumb, il menu applicativo ed il sottomenu.\n *\n * Inoltre e' possibile permettere al componente di recuperare in automatico le informazioni inerenti\n * l'utente loggato e gli html visulizzati nell'header e nel footer\n * oppure passare esplicitamente queste informazioni dall'esterno.\n *\n * Infine e' possibile far iniettare al componente le risorse statiche necessarie,\n * passandole in input e facendole recuperare in automatico\n * senza doverle specificare nell'index.html\n */\n@Component({\n selector: 'inail-layout',\n templateUrl: './inail-layout.component.html',\n styleUrls: ['./inail-layout.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class InailLayoutComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n headerConfig: HeaderConfigurations;\n\n /**\n * Se true visualizza il loader\n */\n @Input()\n showLoader: boolean;\n\n @Input()\n config: InailLayoutConfigurations;\n\n @Input()\n infoDipendente: UserInfo;\n\n /**\n * Lista delle risorse esterne da utilizzare per la corretta visualizzazione del layout.\n * Vengono caricate automaticamente solo se il comportamento viene abilitato\n * tramite la proprieta di configrazione caricamentoDinamicoRisorseEsterne.\n * Se per le risorse non vengono specificati degli url assoluti\n * vegono recuperate in base a quanto specificato nelle proprita di configurazione\n * cdnEndpoint ed assetsUrl.\n */\n @Input()\n externalResources: ExternalResource[];\n\n /**\n * Lista degli scripts esterni da utilizzare per il corretto funzionamento del layout.\n * Vengono caricati automaticamente solo se il comportamento viene abilitato\n * tramite la proprieta di configrazione caricamentoDinamicoScriptEsterni.\n * Se per gli script non vengono specificati degli url assoluti\n * vegono recuperati in base a quanto specificato nelle proprita di configurazione\n * cdnEndpoint ed assetsUrl.\n */\n // @Input()\n // externalScripts: ExternalScript[];\n\n /**\n *\n */\n @Output()\n checksession: EventEmitter<ChecksessionResponse> = new EventEmitter<ChecksessionResponse>();\n\n /**\n *\n */\n @Output()\n datiDipendente: EventEmitter<DatiDipendente> = new EventEmitter<DatiDipendente>();\n\n @ViewChild('breadcrumbContainer')\n breadcrumbContainer: ElementRef;\n\n @ContentChildren(MenuComponent)\n menuList: QueryList<MenuComponent>;\n\n paginaCorrente: AppPage;\n\n breadcrumbEsterno: boolean = true;\n\n // Gestione risorse e script esterni\n risorseEsterneCounter: number = 0;\n risorseEsterneTot: number;\n scriptEsterniCounter: number = 0;\n scriptEsterniTot: number;\n\n caricamentoRisorseEsterneTerminato: boolean = false;\n caricamentoScriptEsterniTerminato: boolean = false;\n\n inizializzazioneTerminata: boolean = false;\n\n toggleNavSecondaria: EventEmitter<void> = new EventEmitter<void>();\n\n itsReady = (): boolean => this.inizializzazioneTerminata === true && this.caricamentoRisorseEsterneTerminato === true;\n\n constructor(private renderer: Renderer2,\n private http: HttpClient,\n private _elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n private router: Router) {\n\n super(cdr);\n this.logPrefix = '[inail-layout]'\n this.detach();\n }\n\n /**\n * Gestione automatica per l'impostazione del focus\n * sugli errori\n *\n * @param elem\n */\n @HostListener('click', ['$event.target'])\n onClick(elem: HTMLElement) {\n\n // Controllo che il click sia stato fatto\n // su un pulsante che implica l'impostazione\n // del focus sull'errore\n if (this.config.focusOnError && isSetFocusOnErrorButton(elem)) {\n\n this.emitDebug('Error button clicked');\n setFocusOnError(this.config.setFocusStrategy, this.config.scrollToError);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n this.emitDebug('changes');\n this.emitDebug(changes);\n\n if (changes?.infoDipendente?.currentValue) {\n\n this.cdr.detectChanges();\n }\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.init();\n }\n\n private async init() {\n\n this.emitDebug('init...');\n\n this.removeNgVersion(this._elementRef.nativeElement);\n\n if (this.config) {\n\n this.emitDebug(\"Configurazioni InailLayoutComponent\");\n this.emitDebug(this.config);\n\n if (!this.config.cdnEndpoint && this.config.recuperoAutomaticoCdnEnpoint === true) {\n\n await this.recuperaCdnEnpoint();\n }\n\n this.headerConfig = {\n\n clientId: this.config.clientId,\n domainUrl: this.config.domainUrl,\n apiGatewayUrl: this.config.apiGatewayUrl,\n assetsUrl: this.config.assetsUrl,\n intranet: this.config.intranet,\n logoutUrl: this.config.logoutUrl,\n cdnEndpoint: this.config.cdnEndpoint,\n menuIntranetUrl: this.config.menuIntranetUrl,\n menuIntranetHtml: this.config.menuIntranetHtml,\n navigazionePrincipaleUrl: this.config.navigazionePrincipaleUrl,\n navigazionePrincipaleHtml: this.config.navigazionePrincipaleHtml,\n profiloUtenteUrl: this.config.profiloUtenteUrl,\n visualizzaNotificheUtente: this.config.visualizzaNotificheUtente,\n visualizzaMenuCercaUtente: this.config.visualizzaMenuCercaUtente,\n cercaPersonePageUrl: this.config.cercaPersonePageUrl,\n recuperoAutomaticoDatiUtente: this.config.recuperoAutomaticoDatiUtente\n }\n }\n\n // Inizializzazione risorse esterne\n if (this.config?.caricamentoDinamicoRisorseEsterne === true) {\n\n this.loadRisorseEsterne(this.externalResources || webkitExternalResources, 'link');\n } else {\n\n this.caricamentoRisorseEsterneTerminato = true;\n }\n\n // Inizializzazione script esterni\n // if (this.config?.caricamentoDinamicoScriptEsterni === true\n // && this.externalScripts?.length) {\n //\n // await this.loadRisorseEsterne(this.externalScripts, 'script');\n // } else {\n //\n // this.caricamentoScriptEsterniTerminato = true;\n // }\n\n if (this.config?.scrollTopAtNavigationEnd) {\n\n this.push(\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => scrollTop())\n );\n }\n\n this.emitDebug('...inizializzazione terminata!');\n this.inizializzazioneTerminata = true;\n this.cdr.detectChanges();\n }\n\n private removeNgVersion(nativeElement: HTMLElement) {\n\n if (nativeElement) {\n\n if (nativeElement?.hasAttribute('ng-version')) {\n\n this.renderer.removeAttribute(nativeElement, \"ng-version\");\n\n } else {\n this.removeNgVersion(nativeElement.parentElement);\n }\n }\n }\n\n ngAfterViewInit(): void {\n\n this.breadcrumbEsterno = this.breadcrumbContainer ? this.breadcrumbContainer.nativeElement.childElementCount > 0 : false;\n\n if (this.menuList?.length > 0) {\n\n this.menuList.forEach((menu: MenuComponent) => {\n\n this.push(\n menu.currentItem.subscribe((currentElement: MenuItem) => {\n\n this.emitDebug('Voce menu corrente');\n this.emitDebug(currentElement);\n\n if (currentElement != undefined) {\n\n this.paginaCorrente = this.toPaginaApplicativa(currentElement);\n this.cdr.detectChanges();\n }\n })\n );\n });\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n private toPaginaApplicativa(element: MenuItem): AppPage {\n\n return element != undefined\n ? {\n title: this.getElementLabel(element),\n url: this.getElementLink(element),\n parent: this.toPaginaApplicativa(element.parent)\n }\n : undefined\n }\n\n getElementLink(element: MenuItem): string {\n\n return isFunction(element.link) ? (element.link as GetStringFn)() : element.link\n }\n\n getElementLabel(element: MenuItem): string {\n\n return isFunction(element.label) ? (element.label as GetStringFn)() : element.label\n }\n\n // --- Logica caricamento risorse esterne ------------------------------------------------------------------------------\n\n /**\n * Recupera da Api Gateway l'endpoint della cdn\n * e lo imposta nella configurazione del componente.\n */\n private async recuperaCdnEnpoint() {\n\n try {\n\n let url = (!isAbsolute(this.config.apiGatewayUrl) ? (this.config.domainUrl || '') : '')\n + (this.config.apiGatewayUrl || API_DEFAULT_URL)\n + '/.well-known/inail-configuration';\n\n this.emitDebug(`Recupero cdn endpoint da: ${url}`);\n let response: InailConfigurationResponse = await this.http.get<InailConfigurationResponse>(url, {withCredentials: true}).toPromise();\n this.config.cdnEndpoint = response.cdn_endpoint;\n\n } catch (e) {\n\n this.emitError(\"Errore nel recupero del cdnEnpoint da api gateway\");\n this.emitError(e);\n }\n }\n\n /**\n *\n * @param risorseEsterne\n * @param type\n */\n private async loadRisorseEsterne(risorseEsterne: (ExternalResource | ExternalScript)[], type: ResourceType) {\n\n this.emitDebug('Load risorse esterne');\n this.emitDebug(risorseEsterne);\n\n // if (isNotBlankOrNull(this.config.cdnEndpoint)) {\n //\n // risorseEsterne.forEach((resource: ExternalResource | ExternalScript) => this.impostaPathRisorsa(resource, type));\n // }\n\n risorseEsterne.forEach((resource: ExternalResource | ExternalScript) => this.impostaPathRisorsa(resource, type));\n\n let loadedResources: LoadedResource[] = [];\n risorseEsterne.forEach((risorsa: ExternalResource | ExternalScript) => loadedResources.push({loaded: false, resource: risorsa}));\n\n switch (type) {\n\n case \"link\":\n this.risorseEsterneCounter = 0;\n this.risorseEsterneTot = risorseEsterne.length;\n this.caricaRisorseEsterne(loadedResources);\n break;\n // case \"script\":\n // this.scriptEsterniCounter = 0;\n // this.scriptEsterniTot = risorseEsterne.length;\n // await this.caricaScriptEsterni(loadedResources);\n // break;\n }\n }\n\n /**\n *\n * @param risorsaEsterna\n * @param type\n */\n private impostaPathRisorsa(risorsaEsterna: ExternalResource | ExternalScript, type: ResourceType) {\n\n let urlProperty: string;\n\n switch (type) {\n\n case \"link\":\n urlProperty = 'href'\n break;\n\n case \"script\":\n urlProperty = 'src'\n break;\n }\n\n risorsaEsterna.assetUrl = !isAbsolute(risorsaEsterna[urlProperty])\n ? risorsaEsterna.assetUrl || this.config.assetsUrl || (this.config.intranet ? DEFAULT_ASSETS_INTRA_URL : DEFAULT_ASSETS_URL)\n : '';\n\n risorsaEsterna.cdnEndpoint = !isAbsolute(risorsaEsterna.assetUrl)\n ? risorsaEsterna.cdnEndpoint || this.config.cdnEndpoint || ''\n : '';\n }\n\n /**\n *\n * @param resources\n * @param index\n */\n private async caricaRisorseEsterne(resources: LoadedResource[], index: number = 0) {\n\n if (resources && resources.length > 0) {\n\n resources.forEach(resource => {\n\n this.emitDebug('Caricamento risorsa esterna:');\n this.emitDebug(resource);\n\n this.creaElementoRisorsaEsterna(resource, 'link')\n .then((response: LoadedResourceResponse) => {\n\n this.emitDebug('...caricamento risorsa esterna completato');\n this.emitDebug(response);\n }, e => {\n this.emitError('Errore caricamento risorsa esterna!');\n this.emitError(e);\n })\n })\n }\n\n // Vecchio modo\n // if (index < resources.length) {\n //\n // try {\n //\n // this.emitDebug('Caricamento risorsa esterna:');\n // this.emitDebug(resources[index]);\n //\n // let response: LoadedResourceResponse = await this.creaElementoRisorsaEsterna(resources[index], 'link');\n //\n // this.emitDebug('...caricamento risorsa esterna completato');\n // this.emitDebug(response);\n //\n // } catch (e) {\n // this.emitError('Errore caricamento risorsa esterna!');\n // this.emitError(e);\n // }\n //\n // await this.caricaRisorseEsterne(resources, index + 1);\n // }\n }\n\n /**\n *\n * @param scripts\n * @param index\n */\n // private async caricaScriptEsterni(scripts: LoadedResource[], index: number = 0) {\n //\n // if (index < scripts.length) {\n //\n // setTimeout(() => {\n // this.emitDebug('Caricamento script esterno:');\n // this.emitDebug(scripts[index]);\n //\n // this.creaElementoRisorsaEsterna(scripts[index], 'script')\n // .then((response: LoadedResourceResponse) => {\n //\n // this.emitDebug('...caricamento script esterno completato');\n // this.emitDebug(response);\n // })\n // .catch((e) => {\n // this.emitError('Errore caricamento script esterno!');\n // this.emitError(e);\n // })\n // .finally(() => this.caricaScriptEsterni(scripts, index + 1));\n //\n // }, this.config.scriptLoadingDeelay || 300);\n // } else {\n //\n // this.emitDebug('Inizio azioniFineCaricamentoScript');\n // }\n // }\n\n /**\n *\n *\n * @param resource\n * @param type\n */\n private async creaElementoRisorsaEsterna(resource: LoadedResource, type: ResourceType): Promise<LoadedResourceResponse> {\n\n return new Promise((resolve, reject) => {\n\n let resourceUrl: string = resource.resource['src'] || resource.resource['href']\n\n //resolve if already loaded\n if (resource.loaded) {\n\n resolve({resource: resourceUrl, loaded: true, status: 'Already Loaded'});\n } else {\n\n let resourceElement: any;\n\n switch (type) {\n\n case 'script':\n resourceElement = createScriptElement((resource.resource as ExternalScript));\n break;\n case 'link':\n resourceElement = createLinkElement((resource.resource as ExternalResource));\n break;\n }\n\n if (resourceElement.readyState) { // IE\n\n resourceElement.onreadystatechange = () => {\n\n if (resourceElement.readyState === \"loaded\" || resourceElement.readyState === \"complete\") {\n\n this.risorsaOnLoad(type);\n resourceElement.onreadystatechange = null;\n resource.loaded = true;\n resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n }\n };\n\n } else { // Others\n\n resourceElement.onload = () => {\n\n this.risorsaOnLoad(type);\n resource.loaded = true;\n resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n };\n }\n\n resourceElement.onerror = (error: any) => {\n\n this.risorsaOnLoad(type);\n reject({resource: resource.resource, loaded: false, status: 'Loaded'})\n };\n\n document.head.appendChild(resourceElement);\n }\n });\n }\n\n risorsaOnLoad(type: ResourceType) {\n\n switch (type) {\n\n case 'script':\n this.scriptEsterniCounter++;\n this.caricamentoScriptEsterniTerminato = this.scriptEsterniCounter === this.scriptEsterniTot;\n break;\n\n case 'link':\n this.risorseEsterneCounter++;\n this.caricamentoRisorseEsterneTerminato = this.risorseEsterneCounter === this.risorseEsterneTot;\n break;\n }\n\n if (this.caricamentoRisorseEsterneTerminato) {\n\n this.cdr.detectChanges();\n }\n }\n}\n\n// --- Operatori per la gestione delle risorse esterne ------------------------------------------------------\n\nconst createLinkElement = (resource: ExternalResource) => {\n\n let element = document.createElement('link');\n\n let url = `${resource.cdnEndpoint}${(isNotBlankOrNull(resource.cdnEndpoint) && !startWithSlash(resource.assetUrl)) ? '/' : ''}${resource.assetUrl}${resource.href}`;\n\n addProperty(element, 'rel', resource.rel);\n addProperty(element, 'type', resource.type);\n addProperty(element, 'href', url);\n addProperty(element, 'media', resource.media);\n addProperty(element, 'hreflang', resource.hreflang);\n\n return element;\n}\n\nconst createScriptElement = (script: ExternalScript) => {\n\n let element = document.createElement('script');\n\n let url = `${script.cdnEndpoint}${(isNotBlankOrNull(script.cdnEndpoint) && !startWithSlash(script.assetUrl)) ? '/' : ''}${script.assetUrl}${script.src}`;\n\n addProperty(element, 'src', url);\n addProperty(element, 'type', script.type);\n addProperty(element, 'charset', script.charset);\n\n if (script.async === true) {\n\n element.async = true;\n }\n\n if (script.defer === true) {\n\n element.defer = true;\n }\n\n return element;\n}\n\nconst addProperty = (elem: any, name: string, value: string) => {\n\n if (elem != undefined && value != undefined) {\n\n elem[name] = value;\n }\n}\n\n// --- Operatori per la gestione del focus ------------------------------------------------------\n\nconst isSetFocusOnErrorButton = (elem: HTMLElement): boolean => elem && ((elem.nodeName == \"BUTTON\" && hasClassValidationBtn(elem)) || isSetFocusOnErrorButton(elem.parentElement));\nconst hasClassValidationBtn = (elem: HTMLElement): boolean => elem && elem.classList && elem.classList.contains(ERROR_BTN_CLASS);\n\nconst focusable = ':not([disabled]):not([readonly]):not([tabindex=\\'-1\\'])';\nconst focusableElement = `input${focusable},select${focusable},textarea${focusable},.feedback-focusable`\n\n/**\n * Trova e restituisce l'elemento focusable\n * all'interno dell'elemento dato\n *\n * @param outer\n */\nconst findInnerFocusableElement = (outer: HTMLElement): HTMLElement => outer ? outer.querySelectorAll<HTMLElement>(focusableElement)[0] : undefined;\n\n/**\n * Imposta il focus sull'errore\n */\nexport const setFocusOnError = (setFocusStrategy: SetFocusStrategy, scrollToError: boolean) => {\n\n // @ts-ignore\n // let modaleInPagina: boolean = $('.modal.fade.in').not(`.${MODAL_CONFIRM_CLASS}`).length > 0 TODO\n\n let modaleInPagina: boolean = document.querySelectorAll('.modal.fade.in').length;\n\n // Se esiste una modale in pagina che non e' una modale di conferma\n if (modaleInPagina) {\n\n setFocusOnFirstModalError();\n\n } else {\n\n switch (setFocusStrategy) {\n\n default:\n case SetFocusStrategy.OnGlobalFeedback:\n setFocusOnGlobalErrorFeedback(scrollToError);\n break;\n\n case SetFocusStrategy.OnFirstPageError:\n setFocusOnFirstPageError(scrollToError);\n break\n }\n }\n}\n\n/**\n * Imposta il focus sul primo elemento nella modale andato in errore se esiste.\n */\nexport const setFocusOnFirstModalError = () => {\n\n setTimeout(() => {\n\n let firstModalErrorElement: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .has-error')[0]);\n let firstModalErrorFeedback: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .feedback-box-error')[0]);\n\n if (firstModalErrorElement) {\n\n firstModalErrorElement.focus();\n\n } else if (firstModalErrorFeedback) {\n\n firstModalErrorFeedback.focus();\n }\n\n }, 100);\n}\n\n/**\n * Imposta il focus sul primo elemento in pagina andato in errore se esiste.\n */\nexport const setFocusOnFirstPageError = (scrollToError?: boolean) => {\n\n setTimeout(() => {\n\n let outer = document.querySelectorAll<HTMLElement>('.has-error,.feedback-box-error:not(.global-feedback)')[0];\n\n let firstErrorElement: HTMLElement = findInnerFocusableElement(outer);\n\n if (firstErrorElement && !isHidden(firstErrorElement)) {\n\n if (scrollToError === true) {\n\n scrollToElement(firstErrorElement.id);\n }\n\n // Il delay serve ad aspettare che termini lo scroll\n setTimeout(() => firstErrorElement.focus(), 500);\n } else {\n setFocusOnGlobalErrorFeedback(scrollToError);\n }\n }, 100);\n}\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback', scrollToFeedback);\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback di errore\n */\nexport const setFocusOnFirstErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback in pagina\n *\n * @param selector\n * @param scrollToFeedback\n */\nexport const setFocusOnFirstFeedback = (selector?: string, scrollToFeedback?: boolean) => {\n\n setTimeout(() => {\n\n let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(selector || '.feedback-box')[0];\n\n if (feedback) {\n\n if (scrollToFeedback) {\n\n scrollToElement(feedback.getAttribute('id'));\n }\n\n let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n if (feedbackFocusable != undefined) {\n\n // Il delay serva ad aspettare che termini lo scroll\n setTimeout(() => feedbackFocusable.focus(), 500);\n }\n }\n }, 100);\n}\n\n// todo\n/**\n *\n * @param id\n * @param scrollToFeedback\n * @param ms\n */\nexport const setFocusOnFeedback = (id?: string, scrollToFeedback?: boolean, ms?: number) => {\n\n setTimeout(() => {\n\n let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(`#${id}`)[0];\n\n if (feedback) {\n\n if (scrollToFeedback) {\n\n scrollToElement(feedback.getAttribute('id'));\n }\n\n let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n if (feedbackFocusable != undefined) {\n\n // Il delay serva ad aspettare che termini lo scroll\n setTimeout(() => feedbackFocusable.focus(), 500);\n }\n }\n }, ms || 100);\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\n@Component({\n selector: 'inail-navigazione-secondaria',\n templateUrl: './navigazione-secondaria.component.html',\n styleUrls: ['./navigazione-secondaria.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneSecondariaComponent extends BaseComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('navigazionesecondaria')\n navigazionesecondaria: ElementRef<HTMLElement>;\n\n @ViewChild('sidebarInferiore')\n sidebarInferiore: ElementRef<HTMLElement>;\n\n visualizzaSidebarInferiore: boolean = true;\n\n @Input()\n toggle: Observable<void> = new Observable<void>()\n\n constructor(private cdr: ChangeDetectorRef,\n private renderer: Renderer2) {\n super(cdr)\n this.logPrefix = '[inail-navigazione-secondaria]';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.push(\n this.toggle.subscribe(() => {\n this.renderer.addClass(this.navigazionesecondaria.nativeElement, 'opened');\n })\n );\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n close() {\n\n this.renderer.removeClass(this.navigazionesecondaria.nativeElement, 'opened');\n }\n\n ngAfterViewInit(): void {\n\n this.emitDebug(`ngAfterViewInit`);\n this.emitDebug(`sidebar inferiore:`);\n this.emitDebug(this.sidebarInferiore);\n\n setTimeout(() => {\n this.visualizzaSidebarInferiore = this.sidebarInferiore.nativeElement.childElementCount > 0;\n this.detach();\n });\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChange, ViewEncapsulation} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport interface BreadcrumbStep {\n label: string;\n url: string;\n}\n\nexport interface AppPage {\n\n title: string;\n url: string;\n parent?: AppPage;\n}\n\ninterface AppPageChange extends SimpleChange {\n\n currentValue: AppPage;\n}\n\ninterface StepsChange extends SimpleChange {\n\n currentValue: BreadcrumbStep[];\n}\n\ninterface BreadcrumbChanges extends BasicUxElementComponentChanges {\n\n currentPage: AppPageChange;\n steps: StepsChange;\n}\n\n@Component({\n selector: 'inail-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n currentPage: AppPage;\n\n @Input()\n steps: BreadcrumbStep[];\n\n constructor(public router: Router,\n private cdr: ChangeDetectorRef) {\n\n super(cdr);\n this.logPrefix = '[inail-breadcrumb]'\n this.detach();\n }\n\n ngOnChanges(changes: BreadcrumbChanges) {\n\n super.ngOnChanges(changes);\n\n if (changes.currentPage) {\n\n this.buildBreadCrumb(changes.currentPage.currentValue);\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.detectChange) {\n\n this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n buildBreadCrumb(pagina: AppPage) {\n\n if (pagina != undefined) {\n\n const genealogicalTree: AppPage[] = this.getGenealogicalTree(pagina);\n\n if (genealogicalTree) {\n\n this.steps = genealogicalTree.map((pagina: AppPage): BreadcrumbStep => ({label: pagina.title, url: pagina.url}));\n }\n }\n }\n\n private getParentsList(pagina: AppPage): AppPage[] {\n\n let parents: AppPage[];\n\n if (pagina) {\n\n parents = this.getGenealogicalTree(pagina.parent);\n }\n\n return parents;\n }\n\n private getGenealogicalTree(pagina: AppPage): AppPage[] {\n\n let genealogicalTree: AppPage[];\n\n if (pagina) {\n\n genealogicalTree = this.getGenealogicalTree(pagina.parent);\n genealogicalTree.push(pagina);\n\n } else {\n genealogicalTree = [];\n }\n\n return genealogicalTree;\n }\n\n onClick(url: string) {\n\n this.router.navigateByUrl(url);\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../responsive-element.component\";\nimport {isNotBlankOrNull} from \"../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, ObservableChange, StringChange} from \"../base.component\";\n\n@Component({\n selector: 'inail-form-element',\n template: '',\n styles: [],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormElementComponent extends ResponsiveElementComponent implements OnChanges, OnInit {\n\n onChange: (val: any) => void\n onTouched: () => void;\n\n @Input()\n label: NonNullable<string>;\n @Input()\n title: string;\n @Input()\n name: string;\n @Input()\n labelTitle: string;\n @Input()\n labelClass: string;\n @Input()\n inputClass: string;\n @Input()\n required: boolean = false;\n @Input()\n requiredSimbol: string = '*';\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n @Input()\n disabled: boolean = false;\n @Input()\n readonly: boolean = false;\n @Input()\n hasError: boolean = false;\n @Output()\n hasErrorChange = new EventEmitter<boolean>();\n @Input()\n hiddenLabel: boolean = false;\n @Input()\n error: string;\n @Input()\n description: string;\n @Output()\n errorChange = new EventEmitter<string>();\n @Output()\n enterUp = new EventEmitter();\n @Input()\n focus: Observable<boolean | void>;\n @Input()\n popover: boolean = false;\n @Input()\n popoverButtonIcon: string;\n @Input()\n popoverButtonTitle: string;\n @Input()\n popoverHeader: string;\n @Input()\n popoverContent: string;\n\n getLabel = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.label}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n isThereError = (): boolean => this.hasError || isNotBlankOrNull(this.error);\n\n showError = (): boolean => this.isThereError() && isNotBlankOrNull(this.error);\n\n getAriaDescribedBy = (): string => this.showError() || isNotBlankOrNull(this.description) ? `${this.id}-description` : undefined;\n\n // showPopover = (): boolean => isNotBlankOrNull(this.popoverHeader) || isNotBlankOrNull(this.popoverContent);\n showPopover = (): boolean => this.popover === true;\n\n constructor(private formElementCdr: ChangeDetectorRef) {\n super(formElementCdr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.title = this.getNotBlankValue(this.title);\n this.name = this.getNotBlankValue(this.name);\n this.labelTitle = this.getNotBlankValue(this.labelTitle);\n this.popoverButtonTitle = this.getNotBlankValue(this.popoverButtonTitle);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.logPrefix = `${this.logPrefix}[${this.label}]`;\n }\n\n setDescError(s: string) {\n\n this.error = s;\n this.formElementCdr.detectChanges();\n }\n\n setHasError(b: boolean) {\n\n this.hasError = b;\n this.formElementCdr.detectChanges();\n }\n\n cleanError() {\n\n setTimeout(() => {\n\n if (this.hasError) {\n\n this.hasError = false;\n this.hasErrorChange.emit(false);\n }\n\n if (this.error) {\n\n this.error = undefined;\n this.errorChange.emit(undefined);\n }\n\n this.formElementCdr.detectChanges();\n })\n }\n\n registerOnChange(fn: (_: any) => void): void {\n\n this.emitDebug(`registerOnChange`);\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n\n this.emitDebug(`registerOnTouched`);\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n\n this.emitDebug(`setDisabledState: ${isDisabled}`);\n this.disabled = isDisabled;\n this.formElementCdr.detectChanges();\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n\nexport interface FormElementComponentChanges extends ResponsiveElementComponentChanges {\n\n label: StringChange,\n title: StringChange,\n name: StringChange,\n labelTitle: StringChange,\n labelClass: StringChange,\n inputClass: StringChange,\n required: BooleanChange,\n requiredSimbol: StringChange,\n requiredSimbolPosition: StringChange,\n disabled: BooleanChange,\n readonly: BooleanChange,\n hasError: BooleanChange,\n hiddenLabel: BooleanChange,\n error: StringChange,\n focus: ObservableChange\n}\n","import {isNotBlankOrNull} from \"./common.operators\";\nimport {DateFormat} from \"./types\";\n\n/**\n * Verifica che la stringa sia nel formato dd/mm/aaaa\n *\n * @param s\n */\nexport const isInItalianFormat = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[0-3][0-9][\\/][0-1][0-9][\\/][1-9][0-9]{3}$/).test(s);\n\n/**\n * Verifica che la stringa sia formatta secondo lo standard ISO 8601\n *\n * E.g.\n * 2016-04-06\n * 2016-04-06T10:10:09Z\n * 2003-05-11T15:30:00.45Z\n * 1997-07-16T19:20+01:00\n * 1997-07-16T19:20:30+01:00\n * 1997-07-16T19:20:30.45+01:00\n * 1997-07-16T19:20-01:00\n * 1997-07-16T19:20:30-01:00\n * 1997-07-16T19:20:30.45-01:00\n *\n * https://rgxdb.com/r/526K7G5W\n *\n * @param s\n */\nexport const isInISO8601Format = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9](T[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\.[0-9]{2})?)?(([+-][0-9]{2}:[0-9]{2})|(Z)))?$/).test(s);\n\n/**\n * Verifica che la stringa rappresenti una data\n *\n * @param s\n */\nexport const isDate = (s: string): boolean => isInItalianFormat(s) || isInISO8601Format(s);\n\n/**\n *\n * @param s\n */\nexport const toItalianFormat = (s: string): string => reformatDate(s, 'IT');\n\n/**\n *\n * @param s\n */\nexport const toISO8601Format = (s: string): string => reformatDate(s, 'ISO8061');\n\n/**\n *\n * @param s\n * @param format\n */\nexport const reformatDate = (s: string, format: DateFormat): string => dateToString(toDateObject(s), format);\n\n/**\n *\n * @param d\n * @param format\n */\nexport const dateToString = (d: Date, format: DateFormat): string => {\n\n let s: string = undefined\n\n if (d && !isInvalidDateObject(d)) {\n\n switch (format) {\n\n default:\n case \"IT\":\n s = `${addZero(d.getDate())}/${addZero(d.getMonth() + 1)}/${d.getFullYear()}`;\n break\n\n case \"ISO8061\":\n s = `${d.getFullYear()}-${addZero(d.getMonth() + 1)}-${addZero(d.getDate())}`;\n }\n }\n\n return s;\n}\n\n/**\n * Converte una stringa in un oggetto Date.\n *\n * @returns Oggetto Date se la stringa e' definita, null altrimenti.\n */\nexport const toDateObject = (s: string): Date => {\n\n let dateObj: Date = null;\n\n if (s) {\n // Se la data e' in formato italiano\n // riformatto la stringa in un formato\n // compatibile con Date\n if (isInItalianFormat(s)) {\n\n let a = s.split('/');\n s = `${a[1]}/${a[0]}/${a[2]}`\n }\n\n dateObj = new Date(s);\n }\n\n return dateObj;\n}\n\nexport const isValidDateObject = (s: Date): boolean => s && !!s.getFullYear();\n\nexport const isInvalidDateObject = (d: Date): boolean => d && d.toString() === 'Invalid Date';\n\nexport const addZero = (n: number): string => n < 10 ? `0${n}` : `${n}`;\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {DatePipe} from \"@angular/common\";\nimport {isDate} from '../../../../utils/date.operators';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, NumberChange, StringChange} from \"../../base.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\ninterface InputTextChanges extends FormElementComponentChanges {\n\n value: StringChange;\n placeholder: StringChange;\n maxlength: NumberChange;\n isDate: BooleanChange;\n}\n\n@Component({\n selector: 'inail-input-text',\n templateUrl: './input-text.component.html',\n styleUrls: ['./input-text.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputTextComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputTextComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n inputValue: string;\n\n // @Input()\n // formControl: FormControl = new FormControl();\n\n // Serve per evitare i conflitti\n // con il form control interno\n // externalformControl: boolean = false;\n\n @Input()\n placeholder: string;\n\n @Input()\n maxlength: number;\n\n @Input()\n isDate: boolean = false;\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Input()\n preventPasting: boolean;\n\n constructor(private cdr: ChangeDetectorRef,\n private datePipe: DatePipe) {\n super(cdr);\n this.logPrefix = `[inail-input-text]`;\n this.detach();\n }\n\n ngOnChanges(changes: InputTextChanges): void {\n\n super.ngOnChanges(changes);\n\n // Con Form Control\n // if (changes?.formControl?.isFirstChange()) {\n //\n // this.externalformControl = true;\n // }\n\n this.maxlength = this.getNotBlankValue(this.maxlength);\n this.placeholder = this.getNotBlankValue(this.placeholder);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n\n // this.inputValue = value; // Con Form Control\n this.setValue(value);\n }\n\n get value() {\n\n return (this.isDate && isDate(this.inputValue)) ? this.datePipe.transform(this.inputValue, 'dd/MM/yyyy') : this.inputValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n\n // Con Form Control\n // if (value != this.formControl.value && !this.externalformControl) {\n //\n // this.emitDebug(`update value: ${this.formControl.value} -> ${value}`);\n //\n // // Serve per evitare l'errore ExpressionChangedAfterItHasBeenCheckedError\n // setTimeout(() => {\n // this.formControl.setValue((this.isDate && isDate(value)) ? this.datePipe.transform(value, 'dd/MM/yyyy') : value);\n // })\n // }\n }\n\n onPaste($event: ClipboardEvent) {\n\n if (this.preventPasting === true) {\n\n $event.preventDefault();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, StringChange} from \"../../base.component\";\nimport {isListNotEmptyOrNull, setFocus} from \"../../../../utils/common.operators\";\n\nexport interface SelectOption {\n\n /**\n * Label dell'opzione nella select\n */\n label: string;\n\n /**\n * Valore dell'opzione nella select\n */\n value: string;\n\n /**\n * Se true l'opzione e' disabilitata\n */\n disabled?: boolean;\n}\n\ninterface SelectOptionsChange extends SimpleChange {\n\n currentValue: SelectOption[];\n previousValue: SelectOption[];\n}\n\ninterface SelectChanges extends FormElementComponentChanges {\n\n value: StringChange;\n blankOption: BooleanChange;\n blankOptionText: StringChange;\n blankOptionDisabled: BooleanChange;\n sort: StringChange;\n options: SelectOptionsChange;\n}\n\n@Component({\n selector: 'inail-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ]\n})\nexport class SelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl')\n formControlElement: ElementRef<HTMLSelectElement>;\n\n selectedValue: string = '';\n\n @Input()\n options: SelectOption[] = [];\n @Input()\n blankOption: boolean = true;\n @Input()\n blankOptionText: string = '- seleziona opzione -';\n @Input()\n blankOptionDisabled: boolean = false;\n @Input()\n sort: 'asc' | 'desc';\n @Output()\n select: EventEmitter<SelectOption> = new EventEmitter<SelectOption>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-select]`;\n this.detach();\n }\n\n ngOnChanges(changes: SelectChanges): void {\n\n super.ngOnChanges(changes);\n\n if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n if (direction != 0 && this.options != undefined) {\n\n this.options.sort((a: SelectOption, b: SelectOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`)\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n )\n }\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n this.setValue(value);\n }\n\n get value() {\n\n return this.selectedValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.selectedValue != value) {\n\n setTimeout(() => {\n\n this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n this.selectedValue = value || '';\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${this.selectedValue})`);\n this.valueChange.emit(this.selectedValue);\n this.select.emit(this.options.find(opt => opt?.value === this.selectedValue));\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(this.selectedValue);\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @param blankOption\n */\nexport const isValidSelectValue = (opzioniValide: SelectOption[], opzioneScelta: string, blankOption?: boolean): boolean =>\n (blankOption && (!opzioneScelta || opzioneScelta.length == 0))\n || (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-form-grey',\n templateUrl: './form-grey.component.html',\n styleUrls: ['./form-grey.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FormGreyComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input()\n title: string;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-form-grey]'\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-page-title',\n templateUrl: './page-title.component.html',\n styleUrls: ['./page-title.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class PageTitleComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n\n @Input()\n titleClass: string;\n\n @Input()\n spanTitle: string;\n\n @Input()\n spanTitleClass: string;\n\n @Input()\n autoCatchFocus: boolean = true;\n\n @Input()\n focus: Observable<boolean | void>;\n\n @ViewChild('divTitolo')\n divTitolo: ElementRef<HTMLElement>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-page-title]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.titolo?.currentValue != undefined\n && !changes.titolo.isFirstChange()) {\n\n this.setFocus();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n this.logPrefix = `[inail-page-title][${this.title}]`\n this.cdr.detectChanges();\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`)\n setFocus(this.divTitolo.nativeElement, scroll);\n this.emitDebug(\"Focus impostato su elemento titolo: \");\n this.emitDebug(this.divTitolo.nativeElement);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n this.setFocus();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n setFocus() {\n\n // todo rivedere\n // Il secondo controllo serve ad evitare che al primo accesso\n // all'applicazione il focus vada sul titolo invece che\n // sul primo elemento del documento\n if (this.autoCatchFocus\n && (document.activeElement == undefined\n || document.activeElement.id != 'logo-inail-header')) {\n\n setTimeout(() => {\n\n this.divTitolo.nativeElement.focus();\n this.emitDebug(\"Focus impostato su elemento titolo: \");\n this.emitDebug(this.divTitolo.nativeElement);\n }, 500);\n\n // let checkLoading = setInterval(() => {\n //\n // // Aspetto che il loader\n // // sia stato rimosso dal DOM prima\n // // di impostare il focus\n // // @ts-ignore\n // if ($('.loader-overlay').length == 0) {\n //\n // // console.warn('loader-overlay = 0') // todo togliere\n //\n // this.divTitolo.nativeElement.focus();\n // this.emitDebug(\"Focus impostato su elemento titolo: \");\n // this.emitDebug(this.divTitolo.nativeElement);\n // clearInterval(checkLoading);\n // }\n // }, 500);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport type FeedbackTypes = 'ERROR' | 'SUCCESS';\n\n@Component({\n selector: 'inail-feedback',\n templateUrl: './feedback.component.html',\n styleUrls: ['./feedback.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class FeedbackComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n // Queste inizializzazioni servono per essere usate nel template\n errorType: FeedbackTypes = 'ERROR';\n successType: FeedbackTypes = 'SUCCESS';\n\n @ViewChild('mainMessage')\n mainMessage: ElementRef<HTMLElement>\n\n @Input()\n message: string;\n @Input()\n type: FeedbackTypes = 'SUCCESS';\n @Input()\n globalFeedback: boolean;\n @Input()\n showIcon: boolean = true;\n @Input()\n contentTitle: string;\n @Input()\n contentClass: string;\n @Input()\n details: string[];\n @Input()\n detailsAsList: boolean;\n @Input()\n detailsAsOrderedList: boolean;\n @Input()\n focus: Observable<boolean | void>;\n @Input()\n autoCatchFocus: boolean = false;\n @Input()\n scrollToFocus: boolean = true;\n @Input()\n labelFeedback: boolean = false;\n\n @ViewChild('feedbackContent')\n feedbackContent: ElementRef;\n\n // hasContent = () => this.feedbackContent?.nativeElement?.childElementCount > 0;\n hasContent = () => isNotBlankOrNull(this.feedbackContent?.nativeElement?.textContent);\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-feedback]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.details?.currentValue) {\n\n this.details = (changes.details.currentValue as string[]).filter(value => value != undefined);\n }\n\n if (changes?.message?.currentValue && this.autoCatchFocus && !changes?.message?.isFirstChange()) {\n\n this.setFocus(this.scrollToFocus);\n }\n\n this.cdr.detectChanges();\n // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n if (this.focus) {\n\n this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll != undefined ? scroll : this.scrollToFocus)));\n }\n }\n\n ngAfterViewInit(): void {\n\n if (this.autoCatchFocus) {\n\n this.setFocus(this.scrollToFocus);\n }\n\n this.cdr.detectChanges();\n // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n private setFocus(scroll: boolean) {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.mainMessage.nativeElement, scroll);\n }\n}\n\nexport class Feedback {\n\n type: FeedbackTypes;\n message: string;\n contentTitle: string;\n details?: string[];\n\n constructor(type: FeedbackTypes, msg: string, details?: string[], contentTitle?: string) {\n\n this.message = msg;\n this.type = type;\n\n if (details) {\n\n this.details = [].concat(details);\n this.contentTitle = contentTitle;\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n @Input()\n ariaLabel: string;\n @Input()\n ariaLabelOpened: string = \"Riduce l'accordion\";\n @Input()\n ariaLabelClosed: string = \"Espande l'accordion\";\n @Input()\n collapsed: boolean;\n @Input()\n hasError: boolean;\n @Input()\n required: boolean;\n @Input()\n requiredSimbol: string = '*';\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n @Input()\n toggle: Observable<boolean | void>;\n @Input()\n focus: Observable<boolean | void>;\n @Output()\n ontoggle: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n open: boolean;\n\n @ViewChild('accordionTitle')\n accordionTitle: ElementRef<HTMLElement>\n\n getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n @ViewChild('panelBody')\n panelBody: ElementRef<HTMLElement>// Servono per l'animazione di apertura/chiusura fluida\n panelBodyHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n emitMenuHeight = () => {\n\n // todo non funziona bene\n // let scrollHeight = this.panelBody?.nativeElement?.scrollHeight;\n // let nextHeight = this.open ? scrollHeight : 0;\n //\n // if (nextHeight > 0) {\n //\n // console.warn('A', scrollHeight, this.panelBody?.nativeElement)\n //\n // this.panelBodyHeight$.next(nextHeight);\n //\n // // Rimuovo height.\n // // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n // // setTimeout(() => {\n // // this.panelBodyHeight$.next(undefined);\n // // }, 350);\n //\n // } else {\n //\n // console.warn('C', scrollHeight, this.panelBody?.nativeElement)\n //\n // // Imposto l'height effettivo\n // // per poi impostarlo subito dopo a 0\n // // in modo da far funzionare l'animazione.\n // // Se non viene impostato un valore iniziale\n // // l'animazione CSS non funziona.\n //\n // this.panelBodyHeight$.next(scrollHeight);\n // setTimeout(() => this.panelBodyHeight$.next(0), 15);\n // }\n };\n\n constructor(private cdr: ChangeDetectorRef, private renderer: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-accordion]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n // if(changes?.collapsed?.currentValue != undefined) {\n //\n // this.open = !changes.collapsed.currentValue;\n // }\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus! scroll: ${scroll}`)\n setFocus(this.accordionTitle.nativeElement, scroll);\n })\n );\n }\n\n if (this.toggle) {\n\n this.push(this.toggle.subscribe((open: boolean) => this.onToggle(open)));\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n this.open = !this.collapsed;\n }\n\n onToggle(open?: boolean) {\n\n this.emitDebug(`${this.id} toggle: ${open}`);\n this.open = open != undefined ? open : !this.open;\n this.emitMenuHeight();\n\n this.cdr.detectChanges();\n this.ontoggle.emit(this.open);\n }\n\n get ariaLabelText() {\n\n return this.ariaLabel || (this.open == true ? this.ariaLabelOpened : this.ariaLabelClosed);\n }\n\n ngAfterViewInit(): void {\n\n this.cdr.detectChanges();\n }\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-tab-pane',\n templateUrl: './tab-pane.component.html',\n styleUrls: ['./tab-pane.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TabPaneComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit {\n\n @Input()\n title: string;\n\n @Input()\n active: boolean;\n\n @Input()\n required: boolean;\n\n @Input()\n requiredSimbol: string = '*';\n\n @Input()\n requiredSimbolPosition: 'left' | 'right' = 'left';\n\n @Output()\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n // @Output()\n // selected: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n onChange: EventEmitter<void> = new EventEmitter<void>();\n\n public doDetechChange = () => this.cdr.detectChanges();\n\n getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr)\n this.logPrefix = '[inail-tab-pane]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.active) {\n\n // this.selected.emit(changes.active.currentValue);\n this.activeChange.emit(changes.active.currentValue)\n }\n\n this.cdr.detectChanges();\n this.onChange.emit();\n }\n\n ngOnInit() {\n super.ngOnInit()\n }\n\n ngAfterViewInit(): void {\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, OnInit, Output, QueryList, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {TabPaneComponent} from \"../tab-pane/tab-pane.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\n@Component({\n selector: 'inail-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TabGroupComponent extends BasicUxElementComponent implements OnInit, AfterViewInit {\n\n @ContentChildren(TabPaneComponent)\n panes: QueryList<TabPaneComponent>;\n\n @Input()\n selectTab: Observable<string>;\n\n @Output()\n selected: EventEmitter<string> = new EventEmitter<string>();\n\n isActive = (id: string): boolean => this.panes.some((pane: TabPaneComponent) => pane.id == id && pane.active);\n // getPaneTitle = (pane: TabPaneComponent) => `${pane.title}${pane.required ? ' *' : ''}`;\n getPaneTitle = (pane: TabPaneComponent) => pane.getTitle();\n detectPanesChange = () => this.panes?.forEach((pane: TabPaneComponent) => pane?.doDetechChange());\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-tab-group]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.selectTab) {\n\n this.push(this.selectTab.subscribe((id: string) => this.tabOnClick(id)));\n }\n }\n\n ngAfterViewInit(): void {\n\n if (this.panes) {\n\n this.panes.forEach((pane: TabPaneComponent) => this.push(pane.onChange.subscribe(() => this.cdr.detectChanges())));\n\n if (!this.panes.some((pane: TabPaneComponent) => pane.active)) {\n\n setTimeout(() => {\n let firstPane = this.panes.toArray()[0];\n firstPane.active = true;\n firstPane.doDetechChange();\n this.cdr.detectChanges();\n });\n }\n\n this.cdr.detectChanges();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n tabOnClick(id: string) {\n\n this.selected.emit(id);\n\n this.panes.forEach((pane: TabPaneComponent) => {\n\n let active: boolean = pane.id == id;\n\n if(pane.active == undefined || active != pane.active) {\n\n pane.active = active;\n pane.doDetechChange();\n pane.activeChange.emit(pane.active);\n }\n });\n\n this.cdr.detectChanges();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n// export interface Popover {\n//\n// title?: string;\n// content?: string;\n// buttonTitle?: string;\n// iconClass?: string;\n// }\n\n@Component({\n selector: 'inail-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class PopoverComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit {\n\n @ViewChild('openButton')\n openButton: ElementRef<HTMLElement>;\n\n @ViewChild('popover')\n popover: ElementRef<HTMLElement>;\n\n show: boolean;\n\n // @Input()\n // data: Popover;\n @Input()\n iconClass: string;\n @Input()\n buttonTitle: string;\n @Input()\n header: string;\n @Input()\n content: string;\n\n popoverLeft: number;\n popoverTop: number;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-popover]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.iconClass == undefined) {\n\n this.iconClass = 'fa-question-circle';\n }\n\n this.cdr.detectChanges();\n }\n\n onClick(b?: boolean) {\n\n this.show = b != undefined ? b : !this.show;\n this.cdr.detectChanges();\n\n if (this.show) {\n\n let yButton = this.openButton.nativeElement.getBoundingClientRect().bottom;\n let yPo = this.popover.nativeElement.getBoundingClientRect().bottom;\n let hPo = this.popover.nativeElement.getBoundingClientRect().height / 2\n\n this.popoverLeft = this.openButton.nativeElement.getBoundingClientRect().left - this.popover.nativeElement.getBoundingClientRect().left + 26;\n this.popoverTop = (yButton - yPo + hPo - 9);\n } else {\n this.popoverLeft = undefined;\n this.popoverTop = undefined\n }\n\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n\n setTimeout(() => this.cdr.detectChanges());\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, NumberChange, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\n\ninterface TextareaChanges extends FormElementComponentChanges {\n\n value: StringChange;\n placeholder: StringChange;\n maxlength: NumberChange;\n}\n\n@Component({\n selector: 'inail-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class TextareaComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n inputValue: string;\n\n @Input()\n placeholder: string;\n @Output()\n valueChange = new EventEmitter();\n @Input()\n maxlength: number = 300;\n @Input()\n rows: number = 10;\n @Input()\n cols: number;\n @Input()\n preventPasting: boolean;\n\n getCaratteriDisponibili = (): number => this.maxlength - (this.inputValue ? this.inputValue.length : 0);\n isTextTooLong = (): boolean => this.inputValue && this.inputValue.length > this.maxlength;\n isThereTextareaError = (): boolean => this.isThereError() || this.isTextTooLong();\n showTextareaError = (): boolean => this.isThereTextareaError() && isNotBlankOrNull(this.getDescError());\n getDescError = (): string => (isBlankOrNull(this.error) && this.isTextTooLong())\n ? \"Il testo non pu&ograve; essere lungo di \" + this.maxlength + \" caratteri\"\n : this.error;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-textarea]`;\n this.detach();\n }\n\n ngOnChanges(changes: TextareaChanges): void {\n\n super.ngOnChanges(changes);\n this.emitDebug(`ngOnChanges:`);\n this.emitDebug(changes);\n\n this.maxlength = this.getNotBlankValue(this.maxlength);\n this.placeholder = this.getNotBlankValue(this.placeholder);\n this.rows = this.getNotBlankValue(this.rows);\n this.cols = this.getNotBlankValue(this.cols);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n\n // this.inputValue = value; // Con Form Control\n this.setValue(value);\n }\n\n get value() {\n\n return this.inputValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n onPaste($event: ClipboardEvent) {\n\n if (this.preventPasting === true) {\n\n $event.preventDefault();\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent} from \"../form-element.component\";\nimport {dateToString, isDate, isInISO8601Format, isInItalianFormat, toISO8601Format, toItalianFormat} from \"../../../../utils/date.operators\";\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\n\ninterface DatePickerChanges extends SimpleChanges {\n\n value: SimpleChange;\n options: SimpleChange;\n enabledDates: SimpleChange;\n disabledDates: SimpleChange;\n}\n\nconst isValidInputModel = (s: string) => isInItalianFormat(s) || isInISO8601Format(s) || isLongTime(s);\nconst isLongTime = (o: any) => o && (typeof o === 'number');\n\n@Component({\n selector: 'inail-input-date',\n templateUrl: './input-date.component.html',\n styleUrls: ['./input-date.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputDateComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputDateComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n visibleData: string;\n\n @Output()\n valueChange = new EventEmitter<string>();\n\n // @Input()\n // modelFormat: DateFormat;\n\n // https://bootstrap-datepicker.readthedocs.io/en/latest/options.html\n @Input()\n options: { [key: string]: any };\n\n @Input()\n enabledDates: string[];\n\n @Input()\n disabledDates: string[];\n\n @Input()\n reinit: Observable<void>;\n\n isValidInputValue = (): boolean => isBlankOrNull(this.visibleData) || isInItalianFormat(this.visibleData);\n isThereDataError = (): boolean => this.isThereError() || !this.isValidInputValue();\n showDataError = (): boolean => this.isThereDataError() && isNotBlankOrNull(this.getDescError());\n getDescError = (): string => (isBlankOrNull(this.error) && !this.isValidInputValue()) ? \"La data inserita non &egrave; valida\" : this.error;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-date]`;\n this.detach();\n }\n\n ngOnChanges(changes: DatePickerChanges) {\n\n super.ngOnChanges(changes);\n\n if (changes.value && !changes.value.firstChange) {\n\n this.hasError = false;\n this.error = undefined;\n }\n\n // Se cambiano le options o gli array delle date abilitate/disabilitate\n // reinizializzo il componente\n if ((changes.options && !changes.options.firstChange)\n || (changes.enabledDates && !changes.enabledDates.firstChange)\n || (changes.disabledDates && !changes.disabledDates.firstChange)) {\n\n this.datepickerReinit();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (!this.options) {\n\n this.options = {\n autoclose: true,\n format: 'dd/mm/yyyy',\n weekStart: 1,\n todayBtn: 'linked',\n language: 'it',\n todayHighlight: true,\n orientation: 'auto top',\n enableOnReadonly: false\n };\n }\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n\n if (this.reinit) {\n\n this.push(\n this.reinit.subscribe(() => {\n\n this.emitDebug(`Reinit!`);\n this.datepickerReinit();\n })\n );\n }\n\n this.cdr.detectChanges();\n }\n\n private isEnabledDate = (date: Date) => {\n\n var dateString = dateToString(date, 'ISO8061');\n return this.isDataAbilitata(dateString) && !this.isDataDisabilitata(dateString);\n };\n\n private isDataAbilitata = (data: string) => this.enabledDates == undefined || !this.enabledDates.length || this.enabledDates.some(regex => this.match(data, regex) != undefined);\n private isDataDisabilitata = (data: string) => this.disabledDates != undefined && this.disabledDates.some(regex => this.match(data, regex) != undefined);\n private match = (date: string, regex: string) => date != undefined && date.match(new RegExp('^'.concat(regex).concat('$'), 'i'));\n\n ngAfterViewInit(): void {\n\n this.emitDebug('ngAfterViewInit');\n this.emitDebug('nativeElement');\n this.emitDebug(this.formControlElement?.nativeElement);\n\n // Inizializzazione della libreria datepicker\n this.datepickerInit();\n\n if (this.visibleData && isDate(this.visibleData)) {\n\n this.setDatepickerDate(this.visibleData)\n }\n\n setTimeout(() => {\n\n window['$'](this.formControlElement.nativeElement).on(\"change\", () => {\n\n this.emitDebug('onChange');\n this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n let elem = window['$'](this.formControlElement.nativeElement)[0]\n\n this.emitDebug(`nativeElement value: ${elem?.value}`);\n\n if (elem != undefined && elem.value != this.visibleData) {\n\n this.emitDebug(`update value: ${this.visibleData} -> ${elem.value}`);\n this.value = elem.value;\n }\n\n this.cdr.detectChanges();\n });\n });\n\n this.cdr.detectChanges();\n }\n\n datepickerInit(): void {\n\n if (this.disabledDates?.length || this.enabledDates?.length) {\n\n this.options.beforeShowDay = this.isEnabledDate;\n }\n\n window['$'](this.formControlElement.nativeElement).datepicker(this.options);\n }\n\n datepickerDestroy(): void {\n\n window['$'](this.formControlElement.nativeElement).datepicker('remove');\n }\n\n datepickerReinit(): void {\n\n this.datepickerDestroy();\n this.datepickerInit();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.visibleData} -> ${value}`)\n this.setValue(value);\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n this.emitDebug(`update visibleData: ${this.visibleData} -> ${value}`);\n\n let validFormat = isValidInputModel(value);\n\n if (isNotBlankOrNull(value)) {\n\n this.visibleData = validFormat ? toItalianFormat(value) : value;\n } else {\n\n this.visibleData = undefined\n }\n\n this.cdr.detectChanges();\n\n setTimeout(() => {\n\n let emittedValue: string = validFormat ? toISO8601Format(this.visibleData) : this.visibleData;\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(emittedValue);\n\n if (validFormat) {\n this.setDatepickerDate(this.visibleData);\n }\n });\n\n this.cleanError();\n this.cdr.detectChanges();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n this.cdr.detectChanges();\n }\n\n onChangeHandler($event: any) {\n\n this.value = $event.target.value;\n }\n\n private setDatepickerDate(date: string) {\n\n window['$'](this.formControlElement.nativeElement).datepicker('setDate', date);\n }\n}\n\n// export class InputDateComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n//\n// @ViewChild('formControl', {static: true})\n// formControlElement: ElementRef<HTMLElement>;\n//\n// visibleData: string;\n//\n// changed: boolean;\n//\n// @Output()\n// valueChange = new EventEmitter<string>();\n//\n// // @Input()\n// // modelFormat: DateFormat;\n//\n// @Input()\n// datepickerOptions: any;\n//\n// @Input()\n// enabledDates: string[];\n//\n// @Input()\n// disabledDates: string[];\n//\n// constructor(private cdr: ChangeDetectorRef) {\n// super(cdr);\n// this.detach();\n// }\n//\n// ngOnChanges(changes: DatePickerChanges) {\n//\n// super.ngOnChanges(changes);\n// this.emitDebug(`ngOnChanges:`);\n// this.emitDebug(changes);\n//\n// if (changes.value && !changes.value.firstChange) {\n//\n// this.hasError = false;\n// this.error = undefined;\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// ngOnInit() {\n//\n// this.logPrefix = `[inail-input-date][${this.label}]`;\n// super.ngOnInit();\n//\n// if (!this.datepickerOptions) {\n//\n// this.datepickerOptions = {\n// autoclose: true,\n// format: 'dd/mm/yyyy',\n// weekStart: 1,\n// todayBtn: 'linked',\n// language: 'it',\n// todayHighlight: true,\n// orientation: 'auto top',\n// enableOnReadonly: false\n// };\n// }\n//\n// if (this.disabledDates != undefined || this.enabledDates != undefined) {\n//\n// this.datepickerOptions.beforeShowDay = this.isEnabledDate\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// private isEnabledDate = (date) => {\n//\n// // @ts-ignore\n// var dateString = $.datepicker.formatDate('yy-mm-dd', date);\n// return this.isDataAbilitata(dateString) && !this.isDataDisabilitata(dateString);\n// };\n//\n// private isDataAbilitata = (data: string) => this.enabledDates == undefined || this.enabledDates.some(regex => this.match(data, regex) != undefined);\n// private isDataDisabilitata = (data: string) => this.disabledDates != undefined && this.disabledDates.some(regex => this.match(data, regex) != undefined);\n//\n// match = (date: string, regex: string) => date != undefined && date.match(new RegExp('^'.concat(regex).concat('$'), 'i'));\n//\n// ngAfterViewInit(): void {\n//\n// this.emitDebug('ngAfterViewInit');\n// this.emitDebug('nativeElement');\n// this.emitDebug(this.formControlElement?.nativeElement);\n//\n// // Inizializzazione della libreria datepicker\n// window['$'](this.formControlElement.nativeElement).datepicker(this.datepickerOptions);\n//\n// if (this.visibleData && isDate(this.visibleData)) {\n//\n// this.setDatepickerDate(this.visibleData)\n// }\n//\n// setTimeout(() => {\n//\n// // @ts-ignore\n// $('#' + this.id).on(\"change\", () => {\n//\n// this.emitDebug('onChange');\n// this.emitDebug(`visibleData: ${this.visibleData}`);\n//\n// // @ts-ignore\n// let elem = $('#' + this.id)[0]\n//\n// this.emitDebug(`nativeElement value: ${elem?.value}`);\n//\n// if (elem != undefined && elem.value != this.visibleData) {\n//\n// this.emitDebug(`update value: ${this.value} -> ${elem.value}`);\n// this.value = elem.value;\n// }\n//\n// this.cdr.detectChanges();\n// });\n// });\n//\n// if (this.showPopover()) {\n//\n// // @ts-ignore\n// $(`#${this.id}-popover`).popover();\n// }\n//\n// this.cdr.detectChanges();\n// }\n//\n// ngOnDestroy(): void {\n//\n// super.ngOnDestroy();\n// }\n//\n// @Input()\n// set value(val) {\n//\n// // console.warn('val', val, this.visibleData)\n//\n// let validFormat = isValidInputFormat(val);\n//\n// // console.warn('validFormat', validFormat)\n//\n// if (isNotBlankOrNull(val)) {\n//\n// this.visibleData = validFormat ? toItalianFormat(val) : val;\n// } else {\n//\n// this.visibleData = undefined\n// }\n//\n// // console.warn('visibleData', this.visibleData)\n//\n// setTimeout(() => {\n//\n// let vChange = validFormat ? toISO8601Format(this.visibleData) : this.visibleData\n//\n// // console.warn('vChange', vChange)\n//\n// this.valueChange.emit(validFormat ? toISO8601Format(this.visibleData) : this.visibleData);\n//\n// if (validFormat) {\n//\n// // console.warn(this.visibleData)\n// this.setDatepickerDate(this.visibleData);\n// }\n// });\n// }\n//\n// get isValid(): boolean {\n//\n// return isBlankOrNull(this.visibleData) || isInItalianFormat(this.visibleData);\n// }\n//\n// checkDescError(): boolean {\n//\n// let descError: string = this.getDescError();\n// return this.checkError() && isNotBlankOrNull(descError);\n// }\n//\n// checkError(): boolean {\n//\n// return !this.isValid || this.hasError || isNotBlankOrNull(this.error);\n// }\n//\n// getDescError(): string {\n//\n// return (isNotBlankOrNull(this.error) && !this.isValid)\n// ? 'La data inserita non &egrave; valida'\n// : this.error;\n// }\n//\n// onChangeHandler($event: any) {\n//\n// // console.info('onChange', $event.target.value)\n// this.value = $event.target.value;\n// }\n//\n// private setDatepickerDate(date: string) {\n//\n// window['$'](this.formControlElement.nativeElement).datepicker('setDate', date);\n// }\n// }\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component, ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChange, ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isListNotEmptyOrNull, setFocus, uuidv4} from \"../../../../utils/common.operators\";\n\nconst clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\n\nexport interface RadioOption {\n\n /**\n *\n */\n id?: string;\n\n /**\n * Label dell'opzione nella select\n */\n label: string;\n\n /**\n * Valore dell'opzione nella select\n */\n value: string;\n\n /**\n *\n */\n title?: string;\n\n /**\n *\n */\n class?: string;\n\n popover?: boolean;\n popoverButtonIcon?: string;\n popoverButtonTitle?: string;\n popoverHeader?: string;\n popoverContent?: string;\n}\n\ninterface RadioSelectOptionsChange extends SimpleChange {\n\n currentValue: RadioOption[];\n previousValue: RadioOption[];\n}\n\ninterface RadioSelectChanges extends FormElementComponentChanges {\n\n value: StringChange;\n sort: StringChange;\n options: RadioSelectOptionsChange;\n inline: BooleanChange;\n}\n\n@Component({\n selector: 'inail-radio-select',\n templateUrl: './radio-select.component.html',\n styleUrls: ['./radio-select.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioSelectComponent),\n multi: true\n }\n ]\n})\nexport class RadioSelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl')\n formControlElement: ElementRef<HTMLElement>;\n\n @ViewChildren('inputRadio')\n inputRadio: QueryList<ElementRef<HTMLInputElement>>;\n\n selectedValue: string = '';\n\n @Input()\n options: RadioOption[];\n @Input()\n name: string;\n @Input()\n sort: 'asc' | 'desc';\n @Input()\n inline: boolean;\n @Output()\n select: EventEmitter<RadioOption> = new EventEmitter<RadioOption>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n getName = () => this.name || `${this.id}-name`;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-radio-select]`;\n this.detach();\n }\n\n ngOnChanges(changes: RadioSelectChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.options?.currentValue) {\n\n this.options = clone(changes?.options?.currentValue);\n\n this.options.forEach(opt => {\n\n if (isBlankOrNull(opt.id)) {\n\n opt.id = uuidv4();\n }\n });\n }\n\n if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n if (direction != 0 && this.options != undefined) {\n\n this.options.sort((a: RadioOption, b: RadioOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n let checked: ElementRef<HTMLInputElement> = this.inputRadio.find(item => item.nativeElement.checked);\n setFocus(checked?.nativeElement || this.inputRadio.first.nativeElement, scroll);\n })\n );\n }\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n this.setValue(value);\n }\n\n get value() {\n\n return this.selectedValue;\n }\n\n writeValue(value: string): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: string) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.selectedValue != value) {\n\n setTimeout(() => {\n\n this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n this.selectedValue = value || '';\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${this.selectedValue})`);\n this.valueChange.emit(this.selectedValue);\n this.select.emit(this.options.find(opt => opt?.value === this.selectedValue));\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(this.selectedValue);\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n this.emitDebug(`@ViewChildren('inputRadio')`);\n this.emitDebug(this.inputRadio);\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @return true se il valore di opzioneScelta e' uguale ad uno dei valori delle opzioniValide, false altrimenti.\n */\nexport const isValidRadioValue = (opzioniValide: RadioOption[], opzioneScelta: string): boolean =>\n (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n\n\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\ninterface CheckboxChanges extends FormElementComponentChanges {\n\n checked: BooleanChange;\n}\n\nexport interface CheckboxState {\n\n /**\n * Valore dell'attributo name impostato nel checkbox.\n */\n name: string;\n\n /**\n * Valore dell'attributo value impostato nel checkbox.\n */\n value: string;\n\n /**\n * true se il checkbox e' selezionato, false altrimenti.\n */\n checked: boolean;\n\n /**\n * true se si tratta dello stato all'inizializzazione del componente, false altrimenti.\n */\n firstChange: boolean;\n}\n\n@Component({\n selector: 'inail-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class CheckboxComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n checkedValue: boolean;\n\n @Input()\n value: string;\n\n @Output()\n checkedChange = new EventEmitter();\n\n @Output()\n checkboxClick = new EventEmitter<Event>();\n\n @Output()\n click = new EventEmitter<Event>();\n\n @Output()\n stateChange = new EventEmitter<CheckboxState>();\n\n state: CheckboxState = {name: undefined, value: undefined, checked: undefined, firstChange: true};\n\n emitState = () => {\n\n this.state.name = this.name;\n this.state.value = this.value;\n this.state.checked = this.checked;\n this.stateChange.emit(this.state);\n this.state.firstChange = false;\n };\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-checkbox]`;\n this.detach();\n }\n\n ngOnChanges(changes: CheckboxChanges): void {\n\n super.ngOnChanges(changes);\n // Impostazione a false se undefined\n this.checked = !!this.checked;\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n\n // this.state = {name: this.name, value: this.value, checked: this.checked, firstChange: true};\n }\n\n ngAfterViewInit(): void {\n\n }\n\n labelOnClick($event: Event) {\n\n $event.stopPropagation();\n this.click.emit($event);\n }\n\n cbOnEnter() {\n this.checked = !this.checked;\n this.enterUp.emit()\n }\n\n @Input()\n get checked() {\n return this.checkedValue;\n }\n\n writeValue(value: boolean): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.checked = value;\n }\n\n set checked(value: boolean) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.checkedValue != value) {\n\n this.emitDebug(`update value: ${this.checkedValue} -> ${value}`);\n this.checkedValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.checkedChange.emit(${value})`);\n this.checkedChange.emit(value);\n this.emitState();\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\nimport {setPageScroll} from \"../../../../utils/common.operators\";\n\nconst KEYCODE_TAB = 9;\nconst FOCUSABLE_SELECTOR = 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n@Component({\n selector: 'inail-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ModalComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n title: string;\n @Input()\n closeButtonTitle: string = 'Chiudi modale';\n @Output()\n close: EventEmitter<any> = new EventEmitter();\n @Input()\n show: Observable<boolean>;\n @Input()\n width: 'S' | 'M' | 'L' = 'M';\n @Input()\n setFocusOnError: boolean;\n\n pageActiveElement: any;\n previusFocusableElements: any;\n\n closeOnClick = () => this.showModal(false);\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-modal]'\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n\n if (changes.show?.currentValue) {\n\n this.push(\n changes.show.currentValue.subscribe((show: boolean) => {\n\n if (show == undefined) {\n\n show = true;\n }\n\n if (show === true) {\n\n this.pageActiveElement = document.activeElement;\n let focusbleElements = window['$']('body').find(FOCUSABLE_SELECTOR);\n this.previusFocusableElements = focusbleElements.filter((index) => index < focusbleElements.index(this.pageActiveElement));\n }\n\n this.showModal(show);\n })\n );\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n showModal(show: boolean) {\n\n window['$'](`#${this.id}`).modal(show ? 'show' : 'hide');\n\n if (show) {\n\n setTimeout(() => this.trapFocus(), 500);\n setPageScroll(false);\n\n } else {\n this.close.emit();\n setPageScroll(true);\n setTimeout(() => this.setFocusOnLastPageActiveElement(), 500);\n }\n }\n\n trapFocus() {\n\n let thisModal = window['$'](`#${this.id}`);\n let focusableEls = thisModal.find(\".modal-content\").find(FOCUSABLE_SELECTOR);\n let firstFocusableEl = focusableEls[0];\n let lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n firstFocusableEl.focus();\n\n thisModal[0].addEventListener('keydown', (e) => {\n if (e.key === 'Tab' || e.keyCode === KEYCODE_TAB) {\n\n if (e.shiftKey) /* shift + tab */ {\n if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } else /* tab */ {\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n }\n });\n }\n\n setFocusOnLastPageActiveElement = () => {\n\n if (this.pageActiveElement != undefined) {\n\n if (window['$'](this.pageActiveElement).length > 0) {\n\n this.pageActiveElement.focus();\n } else {\n\n this.setFocusOnPreviusFocusableElement(this.previusFocusableElements.length - 1)\n }\n }\n }\n\n setFocusOnPreviusFocusableElement(index: number) {\n\n if (index >= 0) {\n\n if (window['$'](this.previusFocusableElements[index]).length > 0) {\n\n this.previusFocusableElements[index].focus();\n\n } else {\n\n this.setFocusOnPreviusFocusableElement(index - 1);\n }\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\n\n@Component({\n selector: 'inail-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class AlertComponent extends ModalComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n message: string;\n\n okOnClick = () => this.showModal(false);\n\n constructor(private _cdr: ChangeDetectorRef) {\n super(_cdr);\n this.logPrefix = '[inail-alert]'\n this.title = 'Messaggio informativo';\n this.width = 'S';\n this.closeButtonTitle = 'Chiudi messaggio informativo';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\n\n@Component({\n selector: 'inail-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmComponent extends ModalComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n message: string;\n @Input()\n confirmButtonLabel: string = 'Si';\n @Input()\n rejectButtonLabel: string = 'No';\n @Output()\n confirm: EventEmitter<void> = new EventEmitter();\n @Output()\n reject: EventEmitter<void> = new EventEmitter();\n @Output()\n cancel: EventEmitter<void> = new EventEmitter();\n\n constructor(private _cdr: ChangeDetectorRef) {\n super(_cdr);\n this.logPrefix = '[inail-confirm]'\n this.title = 'Conferma operazione';\n this.message = 'Confermare l\\'operazione richiesta?'\n this.width = 'S';\n this.closeButtonTitle = 'Chiudi modale di conferma';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n confirmOnClick() {\n\n this.showModal(false);\n this.confirm.emit();\n }\n\n rejectOnClick() {\n\n this.showModal(false);\n this.reject.emit();\n }\n\n cancelOnClick() {\n\n this.showModal(false);\n this.cancel.emit();\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\ninterface PaginateChanges extends SimpleChanges {\n\n listSize?: ElementsChange,\n pageSize?: PageSizeChange,\n currentPage?: CurrentPageChange\n}\n\ninterface ElementsChange extends SimpleChange {\n\n currentValue: number\n}\n\ninterface PageSizeChange extends SimpleChange {\n\n currentValue: number\n}\n\ninterface CurrentPageChange extends SimpleChange {\n\n currentValue: number\n}\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\n@Component({\n selector: 'inail-table-page-selector',\n templateUrl: './inail-table-page-selector.component.html',\n styleUrls: ['./inail-table-page-selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class InailTablePageSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n tableId: string;\n\n // Obbligatorio\n @Input()\n listSize: number = 0;\n\n // Obbligatorio\n @Input()\n pageSize: number = DEFAULT_TABLE_LENGTH;\n\n // Obbligatorio se paginazione esterna\n @Input()\n currentPage: number = 1;\n\n @Output()\n select: EventEmitter<number> = new EventEmitter<number>();\n\n length: number;\n externalPagination: boolean;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-table-page-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: PaginateChanges) {\n\n super.ngOnChanges(changes);\n\n // Se si sta impostando il numero di pagina dall'esterno\n // vuol dire che si sta effettuando la paginazione dall'esterno.\n if (!this.externalPagination\n && changes.currentPage\n && changes.currentPage.firstChange\n && changes.currentPage.currentValue != undefined) {\n\n this.externalPagination = true;\n }\n\n if (changes?.pageSize && changes?.pageSize.currentValue == undefined) {\n\n this.pageSize = DEFAULT_TABLE_LENGTH;\n }\n\n if (changes?.listSize && changes?.listSize.currentValue == undefined) {\n\n this.listSize = 0;\n }\n\n if (changes?.currentPage && changes?.currentPage.currentValue == undefined) {\n\n this.currentPage = 1;\n }\n\n if (changes && (changes.pageSize || changes.listSize)) {\n\n this.calcolaNumeroPagine();\n\n if (!this.externalPagination) {\n\n this.currentPage = 1;\n }\n }\n\n if (changes?.currentPage?.currentValue != undefined) {\n\n if (changes.currentPage.currentValue > this.length) {\n\n this.currentPage = this.length;\n this.emitCurrentPage(this.currentPage);\n\n } else if (changes.currentPage.currentValue < 1) {\n\n this.currentPage = 1;\n this.emitCurrentPage(this.currentPage);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n }\n\n calcolaNumeroPagine() {\n\n this.length = Math.floor(this.listSize / this.pageSize);\n\n if ((this.listSize % this.pageSize) > 0) {\n\n this.length++;\n }\n\n if (this.length == 0 || this.length == undefined) {\n\n this.length = 1;\n }\n }\n\n get pages(): any[] {\n\n return new Array(this.length);\n }\n\n set(n: number) {\n\n if (n > 0 && n <= this.length) {\n\n if (!this.externalPagination) {\n\n this.currentPage = n;\n }\n\n this.emitCurrentPage(n);\n }\n\n this.cdr.detectChanges();\n }\n\n prev() {\n\n this.set(this.currentPage - 1);\n }\n\n next() {\n\n this.set(this.currentPage + 1);\n }\n\n emitCurrentPage(page: number) {\n this.select.emit(page);\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\n@Component({\n selector: 'inail-table-page-length-selector',\n templateUrl: './table-page-length-selector.component.html',\n styleUrls: ['./table-page-length-selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TablePageLengthSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n selectedValue: number;\n\n @Input()\n tableId: string;\n\n @Input()\n label: string = 'Elementi per pagina';\n\n @Input()\n options: number[] = [10, 25, 50, 100];\n\n @Output()\n valueChange: EventEmitter<number> = new EventEmitter();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-table-page-length-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n @Input()\n get value(): number {\n return this.selectedValue;\n }\n\n set value(val: number) {\n\n // console.warn('set value', val, this.valueValue)\n\n if (val != this.selectedValue) {\n\n this.selectedValue = val;\n this.valueChange.emit(this.selectedValue);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\nexport class SortingInfo {\n\n property: string;\n direction: number;\n}\n\n@Component({\n selector: 'inail-th-label',\n templateUrl: './th-label.component.html',\n styleUrls: ['./th-label.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ThLabelComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n public static readonly ASC: number = 1;\n public static readonly DESC: number = -1;\n public static readonly UNSORTED: number = 0;\n\n ASC = ThLabelComponent.ASC;\n DESC = ThLabelComponent.DESC;\n UNSORTED = ThLabelComponent.UNSORTED;\n\n direction: number;\n elementRef: ElementRef;\n\n // Obbligatorio\n @Input()\n label: string;\n\n // Obbligatorio\n @Input()\n property: string;\n\n @Input()\n title: string;\n\n @Input()\n sortable: boolean;\n\n @Output()\n click: EventEmitter<SortingInfo> = new EventEmitter<SortingInfo>();\n\n constructor(private cdr: ChangeDetectorRef, element: ElementRef) {\n\n super(cdr);\n this.logPrefix = '[inail-th-label]';\n\n this.direction = ThLabelComponent.UNSORTED;\n this.elementRef = element;\n\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngAfterViewInit(): void {\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n getAriaSortValue(direction: number): string {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'ascending';\n break\n case ThLabelComponent.DESC:\n value = 'descending';\n break\n case ThLabelComponent.UNSORTED:\n value = 'none';\n break\n }\n\n return value;\n }\n\n onClick(event) {\n\n event.stopPropagation();\n this.emettiEventoOrdinamento();\n this.cdr.detectChanges();\n }\n\n private emettiEventoOrdinamento() {\n\n if (this.sortable && this.property) {\n\n this.direction = this.direction * -1;\n\n if (this.direction == ThLabelComponent.UNSORTED) {\n\n this.direction = ThLabelComponent.ASC;\n }\n\n let info: SortingInfo = {\n direction: this.direction,\n property: this.property\n };\n\n this.click.emit(info);\n }\n }\n\n public setAsUnsorted() {\n\n this.direction = ThLabelComponent.UNSORTED;\n }\n\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {ReplaySubject} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\n\n@Component({\n selector: 'inail-tr-checkbox',\n templateUrl: './tr-checkbox.component.html',\n styleUrls: ['./tr-checkbox.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n})\nexport class TrCheckboxComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n label: string;\n @Input()\n title: string;\n @Input()\n value: string;\n // @Input()\n // checkAll: boolean = false;\n @Input()\n hiddenLabel: boolean = true;\n @Input()\n disabled: boolean = false;\n @Output()\n initComplete: ReplaySubject<void> = new ReplaySubject<void>();\n @Output()\n onclick: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n onDestroy: EventEmitter<void> = new EventEmitter<void>();\n\n public checked: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-tr-checkbox]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this.cdr.detectChanges()\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (this.label == undefined) {\n\n this.label = this.value\n }\n }\n\n ngAfterViewInit(): void {\n\n this.initComplete.next();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.onDestroy.emit();\n }\n\n clickHandler() {\n\n if (!this.disabled) {\n\n this.onclick.emit();\n }\n }\n\n setChecked(b: boolean) {\n\n this.checked = b;\n this.cdr.detectChanges();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChange,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent} from \"../../responsive-element.component\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {InailTablePageSelectorComponent} from \"../inail-table-page-selector/inail-table-page-selector.component\";\nimport {SortingInfo, ThLabelComponent} from \"../th-label/th-label.component\";\nimport {TrCheckboxComponent} from \"../tr-checkbox/tr-checkbox.component\";\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\ntype SortDirection = 'asc' | 'desc';\n\nconst ASC: SortDirection = 'asc';\nconst DESC: SortDirection = 'desc';\n\nexport interface SortState {\n\n sortProperty?: string;\n sortDirection?: 'asc' | 'desc';\n}\n\nexport interface PaginationState extends SortState {\n\n fullListSize?: number;\n pageNumber?: number;\n pageSize?: number;\n}\n\ninterface TableChanges extends SimpleChanges {\n\n dataSource?: SimpleChange,\n paginationState?: SimpleChange,\n initialSort?: SimpleChange,\n doPagination?: SimpleChange,\n noDataFound?: SimpleChange\n elementsPerPage?: SimpleChange\n}\n\n@Component({\n selector: 'inail-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class TableComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n\n tableLength: number;\n currentPage: number;\n externalPaginationSorting: boolean = false;\n\n // --- Paginazione INTERNA -----------------------------------------------\n\n // Obbligatorio\n @Input()\n dataSource: any[];\n\n // Obbligatorio\n @Input()\n displayedData: any[];\n\n @Output()\n displayedDataChange = new EventEmitter<any[]>();\n\n @Input()\n doPagination: Observable<PaginationState>;\n\n @Input()\n elementsPerPage: number = DEFAULT_TABLE_LENGTH;\n\n @Input()\n initialSort: SortState;\n\n // --- Paginazione ESTERNA -----------------------------------------------\n\n // Obbligatorio\n @Input()\n paginationState: PaginationState;\n\n // -----------------------------------------------------------------------\n\n @Input()\n elementsPerPageOptions: number[] = [10, 25, 50, 100];\n\n // @Input()\n // waiting: boolean = false;\n\n // @Input()\n // waitingText: string = 'Recupero in corso...';\n\n @Input()\n noDataFound: boolean = false;\n\n @Input()\n noDataFoundText: string = 'Nessun elemento trovato';\n\n @Input()\n disablePagination: boolean = false;\n\n @Output()\n pagination = new EventEmitter<PaginationState>();\n\n @Input()\n tallRows: boolean = false;\n\n // @Input()\n // alternativeTable: boolean = false;\n\n @Input()\n caption: string;\n\n @Input()\n captionHidden: boolean = false;\n\n @Input()\n bgWhite: boolean = true;\n\n @Input()\n description: string;\n\n @Input()\n tableClass: string;\n\n @Input()\n title: string;\n\n @Input()\n titleClass: string;\n\n @Input()\n detailsLink: string;\n\n @Input()\n selectableRowValues: string[];\n\n @Output()\n detailsClick: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n checkedRowsChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n @ContentChildren(ThLabelComponent, {descendants: true})\n thLabelComponents: QueryList<ThLabelComponent>;\n\n @ContentChildren(TrCheckboxComponent, {descendants: true})\n trCheckboxComponents: QueryList<TrCheckboxComponent>;\n\n @ViewChild(InailTablePageSelectorComponent)\n tablePageSelectorComponent: InailTablePageSelectorComponent;\n\n @ViewChild('baseFooter')\n baseFooter: ElementRef;\n\n visualizzaBaseFooter: boolean = true;\n\n numeroColonne: number;\n\n // Insiemi delle Subscription agli eventi dei TrCheckboxComponent\n trcbInitSubscriptions: { [id: string]: Subscription } = {};\n trcbClickSubscriptions: { [id: string]: Subscription } = {};\n trcbDestroySubscriptions: { [id: string]: Subscription } = {};\n\n righeSelezionate: string[] = [];\n righeSelezionabili: string[] = [];\n\n getPageSize = (): number => this.externalPaginationSorting ? this.paginationState.pageSize : this.tableLength;\n getListSize = (): number => this.externalPaginationSorting ? this.paginationState.fullListSize : this.dataSource.length;\n getCurrentPage = (): number => this.externalPaginationSorting && this.paginationState ? this.paginationState.pageNumber : this.currentPage;\n\n // Operatori per gestione selezione righe\n isChecked = (trcbValue: string): boolean => this.righeSelezionate.some(value => value == trcbValue);\n isAllChecked = (): boolean => this.righeSelezionabili.length > 0 && this.righeSelezionabili.every(this.isChecked);\n isThCheckbox = (trcb: TrCheckboxComponent): boolean => document.querySelectorAll(`th #${trcb.id}`).length > 0;\n isSelezionabile = (value: string) => this.righeSelezionabili.some(valoreSelezionabile => valoreSelezionabile == value);\n\n constructor(private cdr: ChangeDetectorRef, private renderer: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-table]';\n this.detach();\n }\n\n ngOnChanges(changes: TableChanges): void {\n\n super.ngOnChanges(changes);\n\n // Controllo se la paginazione richiesta e' interna o esterna\n if (!this.externalPaginationSorting\n && changes.paginationState?.firstChange === true\n && changes.paginationState?.currentValue != undefined) {\n\n this.externalPaginationSorting = true;\n }\n\n // Se per la paginazione esterna viene specificata una proprieta di sorting\n // attivo il componente thLabel associato\n if (changes.paginationState?.currentValue?.sortProperty) {\n\n this.attivaThLabelOrdinamentoSpecificato();\n }\n\n // Se per la paginazione interna viene specificato un ordinamento iniziale\n // attivo il componente thLabel associato\n if (changes.initialSort?.currentValue?.sortProperty) {\n\n this.attivaThLabelOrdinamentoSpecificato();\n }\n\n // Verifico se e' cambiata la lista degli elementi in input.\n // Nel caso in cui si stia effettuando una paginazione interna\n // emetto il sottoinsieme inerente la prima pagina\n if (changes.dataSource != undefined\n && !changes.dataSource.firstChange\n && !this.externalPaginationSorting) {\n\n if (this.tablePageSelectorComponent) {\n\n this.tablePageSelectorComponent.currentPage = 1;\n }\n\n this.emitSubset(1);\n }\n\n // Richiesta di paginazione\n if (!this.externalPaginationSorting\n && changes.doPagination?.currentValue) {\n\n this.push(\n changes.doPagination.currentValue.subscribe((info: PaginationState) => {\n\n this.lengthOnChange(info.pageSize);\n setTimeout(() => this.doSorting(info.sortProperty, info.sortDirection), 100);\n setTimeout(() => this.pageOnChange(info.pageNumber), 200);\n })\n );\n }\n\n // Elementi per pagina\n if (changes.elementsPerPage != undefined\n && !changes.elementsPerPage.firstChange\n && !this.externalPaginationSorting) {\n\n this.lengthOnChange(this.elementsPerPage);\n }\n\n // Calcolo il numero di colonne visibili\n if (changes.noDataFound?.currentValue === true) {\n\n // setTimeout(() => this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length);\n this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;\n }\n\n if (changes.selectableRowValues?.currentValue) {\n\n this.righeSelezionabili = [...changes.selectableRowValues?.currentValue];\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.tableLength = this.externalPaginationSorting ? this.paginationState.pageSize : this.elementsPerPage;\n\n if (!this.externalPaginationSorting) {\n\n setTimeout(() => {\n // console.info('ngOnInit---', this.currentPage)\n this.emitSubset(this.currentPage || 1);\n });\n }\n }\n\n ngAfterViewInit(): void {\n\n this.inizializzaTabella(this.thLabelComponents);\n this.lookAtThLabel(this.thLabelComponents);\n this.attivaThLabelOrdinamentoSpecificato();\n\n setTimeout(() => this.visualizzaBaseFooter = this.baseFooter?.nativeElement.childElementCount > 0);\n\n this.cdr.detectChanges();\n }\n\n ngAfterViewChecked(): void {\n\n this.gestisciTrCheckbox();\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n /**\n * Gestione dei checkbox per la selezione delle righe\n */\n public gestisciTrCheckbox() {\n\n if (this.trCheckboxComponents?.length > 0) {\n\n this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n // Gestione evento initComplete\n // Effettuo la subscribe se non ne e' gia presente\n // una Subscription per quel trcb\n if (this.trcbInitSubscriptions[trcb.id] == undefined) {\n\n this.trcbInitSubscriptions[trcb.id] = trcb.initComplete.subscribe(() => {\n\n // Se l'insieme di tutti i valori selezionabili\n // non e' stato passato dall'esterno\n if (this.selectableRowValues == undefined) {\n\n // Ricalcolo i valori selezionabili\n this.righeSelezionabili = this.trCheckboxComponents.filter(trcb => !this.isThCheckbox(trcb)).map(trcb => trcb.value);\n }\n });\n }\n\n // Gestione evento click\n if (this.trcbClickSubscriptions[trcb.id] == undefined) {\n\n this.trcbClickSubscriptions[trcb.id] = trcb.onclick.subscribe(() => {\n\n if (this.isThCheckbox(trcb)) {\n\n this.checkAllOnClick();\n } else {\n this.checkOnClick(trcb.value);\n }\n\n this.checkedRowsChange.emit(this.righeSelezionate);\n });\n }\n\n // Gestione evento onDestroy\n // Quando un tcrb emette l'evento onDestroy\n // effettuo l'unsubscribe a tutti gli eventi ad esso collegato\n if (this.trcbDestroySubscriptions[trcb.id] == undefined) {\n\n this.trcbDestroySubscriptions[trcb.id] = trcb.onDestroy.subscribe(() => {\n\n this.trcbInitSubscriptions[trcb.id]?.unsubscribe();\n this.trcbClickSubscriptions[trcb.id]?.unsubscribe();\n this.trcbDestroySubscriptions[trcb.id]?.unsubscribe();\n\n // In questo modo evito che gli oggetti crescano in maniera incontrollata\n delete this.trcbInitSubscriptions[trcb.id];\n delete this.trcbClickSubscriptions[trcb.id];\n delete this.trcbDestroySubscriptions[trcb.id];\n });\n }\n });\n\n // Indico ad un trcb se e' selezionato.\n this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n if (trcb) {\n\n if (this.isThCheckbox(trcb)) {\n\n trcb.setChecked(this.isAllChecked());\n } else {\n trcb.setChecked(this.isChecked(trcb.value));\n }\n }\n });\n }\n }\n\n /**\n * Click di un trcb\n *\n * @param valueCb\n * @private\n */\n private checkOnClick(valueCb: string) {\n\n if (this.isChecked(valueCb)) {\n\n this.righeSelezionate = this.righeSelezionate.filter(value => value != valueCb);\n } else {\n\n this.righeSelezionate.push(valueCb);\n }\n }\n\n checkAllOnClick() {\n\n if (this.isAllChecked()) {\n\n this.righeSelezionate = this.righeSelezionate.filter(value => !this.isSelezionabile(value));\n\n } else {\n\n this.righeSelezionate = this.righeSelezionate.concat(this.righeSelezionabili.filter(value => !this.isChecked(value)));\n }\n }\n\n /**\n * Effettua varie operazioni di inizializzazione della tabella\n */\n public inizializzaTabella(thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n // Inizializzo tutti i th della tabella\n thLabelComponents.forEach(\n (thLabel: ThLabelComponent) => {\n\n this.modificaTh(thLabel);\n })\n }\n }\n\n /**\n * Si mette in ascolto sugli eventi emessi dai thLabelComponents dati in input\n * per poter eseguire le opportune azioni\n *\n * @param thLabelComponents\n */\n public lookAtThLabel(thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n this.thLabelComponents = thLabelComponents;\n\n thLabelComponents.forEach(\n (thLabel: ThLabelComponent) => {\n\n if (thLabel) {\n\n // Subscribe al click del th label\n this.push(\n thLabel.click.subscribe(\n (info: SortingInfo) => {\n\n this.performSorting(info, thLabel);\n }\n )\n );\n }\n }\n )\n }\n }\n\n /**\n *\n * @param sortProperty\n * @param sortDirection\n */\n public doSorting(sortProperty: string, sortDirection: string) {\n\n let info: SortingInfo = {\n property: sortProperty,\n direction: sortDirection == ASC ? ThLabelComponent.ASC : sortDirection == DESC ? ThLabelComponent.DESC : undefined\n }\n\n let thLabel: ThLabelComponent = this.thLabelComponents.find(item => item.property == sortProperty);\n\n this.performSorting(info, thLabel)\n }\n\n /**\n *\n * @param info\n * @param thLabel\n */\n performSorting(info: SortingInfo, thLabel: ThLabelComponent) {\n\n if (thLabel != undefined && info != undefined && info.property != undefined) {\n\n let eventoPaginazione: PaginationState = {};\n\n eventoPaginazione.sortProperty = info.property;\n eventoPaginazione.sortDirection = info.direction == ThLabelComponent.ASC ? ASC : info.direction == ThLabelComponent.DESC ? DESC : undefined;\n eventoPaginazione.pageNumber = 1;\n\n this.resetDirectionSorting(thLabel, this.thLabelComponents);\n this.modificaTh(thLabel);\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione.fullListSize = this.paginationState.fullListSize;\n eventoPaginazione.pageSize = this.paginationState.pageSize;\n } else {\n\n this.ordina(info);\n this.emitSubset(1);\n }\n\n this.pagination.emit(eventoPaginazione);\n }\n }\n\n /**\n * Reimposta ad unsorted tutti i th label ad eccezione\n * di quelli dato in input\n *\n * @param thLabel\n * @param thLabelComponents\n */\n private resetDirectionSorting(thLabel: ThLabelComponent, thLabelComponents: QueryList<ThLabelComponent>) {\n\n if (thLabelComponents) {\n\n thLabelComponents.forEach((item: ThLabelComponent) => {\n\n if (item && item.property != thLabel.property) {\n\n item.setAsUnsorted();\n this.modificaTh(item);\n }\n })\n }\n }\n\n /**\n * Modifica l'elemento th che contiene il ThLabelComponent\n */\n private modificaTh(thLabelComponent: ThLabelComponent) {\n\n if (thLabelComponent && thLabelComponent.sortable === true) {\n\n let th: HTMLElement = thLabelComponent.elementRef.nativeElement.parentNode;\n\n if (th) {\n\n this.removeSortClass(th);\n this.renderer.addClass(th, this.getThSortClass(thLabelComponent.direction));\n\n th.setAttribute('aria-sort', this.getAriaSortValue(thLabelComponent.direction));\n\n if (thLabelComponent.direction == ThLabelComponent.UNSORTED) {\n\n th.removeAttribute('aria-sort');\n }\n }\n }\n }\n\n /**\n *\n * @param element\n */\n private removeSortClass(element: HTMLElement) {\n\n this.renderer.removeClass(element, 'sorting_asc');\n this.renderer.removeClass(element, 'sorting_desc');\n this.renderer.removeClass(element, 'sorting');\n }\n\n /**\n *\n * @param direction\n */\n private getThSortClass(direction: number) {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'sorting_asc';\n break\n case ThLabelComponent.DESC:\n value = 'sorting_desc';\n break\n case ThLabelComponent.UNSORTED:\n value = 'sorting';\n break\n }\n\n return value;\n }\n\n /**\n *\n * @param direction\n */\n private getAriaSortValue(direction: number): string {\n\n let value: string\n\n switch (direction) {\n\n case ThLabelComponent.ASC:\n value = 'ascending';\n break\n case ThLabelComponent.DESC:\n value = 'descending';\n break\n case ThLabelComponent.UNSORTED:\n value = 'none';\n break\n }\n\n return value;\n }\n\n private ordina(info: SortingInfo) {\n\n if (info && this.dataSource && info.property) {\n\n info.direction = info.direction * -1;\n\n if (info.direction == ThLabelComponent.UNSORTED) {\n\n info.direction = ThLabelComponent.ASC;\n }\n\n this.dataSource.sort(this.propertyComparator(info.property, info.direction));\n this.dataSource = [].concat(this.dataSource);\n\n this.cdr.detectChanges();\n }\n }\n\n private propertyComparator(property: string, direction: number) {\n\n let pList = property ? property.split('.') : undefined;\n\n function estraiValore(e: any, pList: string[]): any {\n\n if (e && pList) {\n\n if (pList.length > 1) {\n\n return estraiValore(e[pList[0]], pList.slice(1, pList.length));\n } else {\n\n return e[pList[0]];\n }\n }\n }\n\n return function (e1, e2) {\n\n return (estraiValore(e1, pList) > estraiValore(e2, pList) ? ThLabelComponent.DESC : ThLabelComponent.ASC) * direction;\n }\n }\n\n lengthOnChange(value: number) {\n\n if (value != undefined && (!this.paginationState || value != this.paginationState.pageSize)) {\n\n let eventoPaginazione: PaginationState = {};\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione = {...this.paginationState};\n\n } else if (this.tableLength != value) {\n\n this.tableLength = value;\n eventoPaginazione = {};\n\n this.emitSubset(1);\n }\n\n eventoPaginazione.pageSize = value;\n eventoPaginazione.pageNumber = 1;\n\n this.pagination.emit(eventoPaginazione);\n }\n }\n\n pageOnChange(page: number) {\n\n if (page != undefined) {\n\n let eventoPaginazione: PaginationState;\n\n if (this.externalPaginationSorting) {\n\n eventoPaginazione = {...this.paginationState};\n\n } else {\n\n eventoPaginazione = {};\n this.emitSubset(page);\n }\n\n eventoPaginazione.pageNumber = page;\n this.pagination.emit(eventoPaginazione);\n }\n\n this.cdr.detectChanges();\n }\n\n emitSubset(page: number) {\n\n if (page && !this.externalPaginationSorting && this.dataSource != undefined) {\n\n let firstElementIndex = this.tableLength * (page - 1);\n\n let lastIndex: number = Number(firstElementIndex) + Number(this.tableLength);\n\n let a: any[] = this.dataSource.slice(firstElementIndex, lastIndex);\n\n this.currentPage = page;\n this.displayedDataChange.emit(a);\n }\n }\n\n visualizzaPaginazione(): boolean {\n\n return !this.disablePagination\n && (this.dataSource != undefined || (this.externalPaginationSorting != undefined && this.paginationState != undefined));\n }\n\n /**\n * Attiva il th label inerente l'ordinamento specificato\n */\n attivaThLabelOrdinamentoSpecificato() {\n\n if (this.thLabelComponents) {\n\n // Paginazione esterna\n if (this.externalPaginationSorting && this.paginationState) {\n\n let thLabel: ThLabelComponent = this.thLabelComponents.find(item => item.property == this.paginationState.sortProperty);\n this.setSortDirection(thLabel, this.paginationState.sortDirection);\n }\n // Ordinamento iniziale paginazione interna\n else if (this.initialSort) {\n\n this.thLabelComponents.forEach(thLabel => {\n\n thLabel.property == this.initialSort.sortProperty\n ? this.setSortDirection(thLabel, this.initialSort.sortDirection)\n : this.setSortDirection(thLabel, undefined);\n });\n }\n }\n }\n\n setSortDirection(thLabel: ThLabelComponent, direction: SortDirection) {\n\n if (thLabel) {\n\n switch (direction) {\n\n case \"asc\":\n thLabel.direction = ThLabelComponent.ASC;\n break;\n\n case \"desc\":\n thLabel.direction = ThLabelComponent.DESC;\n break;\n\n default:\n thLabel.direction = ThLabelComponent.UNSORTED;\n break\n }\n\n this.modificaTh(thLabel);\n }\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\n@Component({\n selector: 'inail-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.css']\n})\nexport class InputFileComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n placeholder: string;\n @Input()\n chooseButtonText: string = 'Scegli il file';\n @Input()\n addButtonText: string = 'Aggiungi';\n @Input()\n chooseButton: boolean = true;\n @Input()\n addButton: boolean = true;\n /** Estensioni accettate separate da virgola (esempio: \".pdf, .txt, .doc\") */\n @Input()\n accept: string;\n @Output()\n fileChange = new EventEmitter<File>();\n fileModel: File;\n\n @ViewChild('inputText', {static: true})\n inputText: ElementRef<HTMLElement>;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-file]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n this.placeholder = this.getNotBlankValue(this.placeholder);\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.inputText);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.inputText.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n promptUpload() {\n document.getElementById(this.id).click();\n }\n\n changeModel($event: Event) {\n\n // @ts-ignore\n this.fileModel = $event.target.files && $event.target.files[0];\n\n if(!this.addButton) {\n this.fileChange.emit(this.fileModel);\n }\n\n this.cleanError();\n this.cdr.detectChanges();\n }\n\n reset() {\n\n this.fileModel = undefined;\n this.fileChange.emit(undefined);\n this.cleanError();\n this.cdr.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {FormElementComponent} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\n@Component({\n selector: 'inail-input-number',\n templateUrl: './input-number.component.html',\n styleUrls: ['./input-number.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { // Questo metadato indica che questo componente fara' parte dei form di angular\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumberComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n multi: true\n }\n ]\n})\nexport class InputNumberComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLInputElement>;\n\n inputValue: number;\n previousValue: number;\n\n // @Input()\n // defaultValue: number;\n @Input()\n max: number;\n @Input()\n min: number;\n @Input()\n step: number;\n @Input()\n numberOfDecimals: number;\n @Input()\n hideArrows: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<number>();\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-input-number]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes.value) {\n\n this.previousValue = changes.value.previousValue;\n\n this.normalizzaValore();\n\n if (!changes.value.firstChange) {\n\n this.hasError = false;\n this.error = undefined;\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit()\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n @Input()\n set value(value) {\n\n this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`);\n this.setValue(value);\n }\n\n get value() {\n\n return this.inputValue;\n }\n\n writeValue(value: number): void {\n\n this.emitDebug(`writeValue: ${value}`);\n this.setValue(value);\n }\n\n setValue(value: number) {\n\n this.emitDebug(`setValue: ${value}`);\n\n if (this.inputValue != value) {\n\n this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n this.inputValue = value;\n this.cdr.detectChanges();\n\n this.emitDebug(`this.valueChange.emit(${value})`);\n this.valueChange.emit(value);\n this.cleanError();\n\n if (this.onChange) {\n\n this.onChange(value);\n }\n }\n }\n\n private normalizzaValore() {\n\n setTimeout(() => {\n\n if (!this.disabled) {\n\n if (this.min != undefined && this.inputValue < this.min) {\n\n this.value = this.previousValue != undefined ? this.previousValue : this.min;\n\n } else if (this.max != undefined && this.inputValue > this.max) {\n\n this.value = this.previousValue != undefined ? this.previousValue : this.max;\n }\n }\n\n this.cdr.detectChanges();\n })\n }\n\n onKeyUp() {\n\n if (this.inputValue != undefined && !this.checkDecimal()) {\n\n this.inputValue = this.previousValue;\n this.valueChange.emit(this.inputValue);\n }\n\n // Serve per fare in modo che non rimanga visualizzato\n // qualcosa di diverso da un numero.\n // Nativamente l'elemento html restituisce undefined\n // se si prova a scrivere qualcosa diverso da un numero\n // ma mantiene il valore non numerico visualizzato nell'input\n if (this.inputValue == undefined) {\n\n // Commentata funzionalita perche' non permetteva l'inserimento\n // di numeri negativi\n // this.formControlElement.nativeElement.value = undefined;\n }\n\n this.cdr.detectChanges();\n }\n\n checkDecimal() {\n\n if (this.numberOfDecimals != undefined) {\n\n let a = (String(this.inputValue)).split('.');\n\n return (this.numberOfDecimals > 0 && (a.length == 1 || a[1].length <= this.numberOfDecimals)) || (this.numberOfDecimals == 0 && a.length == 1);\n }\n\n return true;\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent} from \"../../responsive-element.component\";\n\n@Component({\n selector: 'inail-container',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class ContainerComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n hidden: boolean = false;\n\n @Input()\n rendered: boolean = true;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = '[inail-container]';\n this.xs = undefined;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit()\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isNotBlankOrNull, isNumber, isString} from \"../../../../utils/common.operators\";\n\nexport interface SelectorItem {\n\n label: string;\n code?: string;\n index?: number;\n title?: string;\n required?: boolean;\n error?: boolean;\n}\n\n@Component({\n selector: 'inail-selector',\n templateUrl: './selector.component.html',\n styleUrls: ['./selector.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectorComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n items: SelectorItem[];\n\n @Input()\n showNumber: boolean = false;\n\n // @Input()\n // showSeparator: boolean = false;\n\n @Input()\n separator: string;\n\n @Input()\n fullNavigation: boolean = true;\n\n @Input()\n contentsHidden: boolean = true;\n\n @Input()\n currentItem: number = 0;\n\n @Output()\n currentItemChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n itemChange: EventEmitter<SelectorItem> = new EventEmitter<SelectorItem>();\n\n @Input()\n switchToFirstError: Observable<void>;\n\n @Input()\n switchTo: Observable<number | string | SelectorItem>;\n\n @Input()\n prevButtonTitle: string = 'scorri selettore a destra';\n\n @Input()\n nextButtonTitle: string = 'scorri selettore a sinistra';\n\n @ViewChild(\"prevButton\")\n prevButton: ElementRef<HTMLButtonElement>;\n\n @ViewChild(\"nextButton\")\n nextButton: ElementRef<HTMLButtonElement>;\n\n @ViewChild(\"slickTrack\")\n slickTrack: ElementRef<HTMLElement>\n\n @ViewChildren(\"slickSlide\")\n slickSlide: QueryList<ElementRef<HTMLElement>>\n\n @ContentChildren(ContainerComponent, {descendants: true})\n contenuti: QueryList<ContainerComponent>;\n\n inizializzazioneContenutiCompletata: boolean = false;\n\n totalTranslate: number = 0;\n\n getItemLabel = (item: SelectorItem, isLast) => `${item.label}${item.required ? ' *' : ''}${isNotBlankOrNull(this.separator) ? ' ' : ''}${!isLast && isNotBlankOrNull(this.separator) ? this.separator : ''}`;\n isActive = (stepIndex: number): boolean => (this.fullNavigation) || stepIndex <= this.currentItem;\n\n constructor(private cdr: ChangeDetectorRef, private re2: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-selector]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.switchToFirstError?.currentValue) {\n\n this.push(\n changes.switchToFirstError.currentValue.subscribe(\n () => {\n\n let firstErrorItem: SelectorItem = this.items.find((step: SelectorItem) => step.error);\n\n if (firstErrorItem) {\n this.itemOnClick(firstErrorItem);\n }\n }\n )\n );\n }\n\n if (changes?.switchTo?.currentValue) {\n\n this.push(\n changes.switchTo.currentValue.subscribe((ref: number | string | SelectorItem) => this.itemOnClick(ref))\n );\n }\n\n if (changes.items) {\n\n this.inizializzaItems();\n }\n\n // if (changes.currentItem && !changes.currentItem.firstChange) {\n //\n // this.inizializzaContenuti(this.contenuti);\n // }\n\n if (changes.contentsHidden && this.contenuti?.length) {\n\n this.inizializzaContenuti(this.contenuti);\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n if (this.currentItem == undefined) {\n\n this.setCurrentItem(0);\n }\n\n this.inizializzaItems();\n }\n\n ngAfterViewInit() {\n\n this.emitDebug('Contenitori interni');\n this.emitDebug(this.contenuti);\n this.inizializzaContenuti(this.contenuti);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n private setCurrentItem(index: number) {\n\n this.currentItem = index;\n this.currentItemChange.emit(this.currentItem);\n }\n\n private inizializzaItems() {\n\n if (this.items) {\n\n this.items.forEach((item: SelectorItem, index) => {\n\n if (item) {\n\n item.index = index\n }\n });\n }\n }\n\n public inizializzaContenuti(contenuti: QueryList<ContainerComponent>) {\n\n this.contenuti = contenuti;\n\n if (this.contenuti?.length > 0) {\n\n let item = this.items.find(step => step.index == this.currentItem);\n this.showContent(item);\n setTimeout(() => {\n this.inizializzazioneContenutiCompletata = true;\n this.cdr.detectChanges();\n });\n }\n }\n\n isContainerItem = (item: SelectorItem, container: ContainerComponent, index: number): boolean => item.code ? container.id == item.code : index == item.index;\n\n showContent(item: SelectorItem) {\n\n if (item) {\n\n // Prima nascondo\n this.contenuti.forEach((container: ContainerComponent) => this.modificaVisibilita(container, false));\n\n // Poi visualizzo\n let daVisualizzare: ContainerComponent = this.contenuti.find((container: ContainerComponent, index: number) => this.isContainerItem(item, container, index));\n this.modificaVisibilita(daVisualizzare, true);\n }\n }\n\n modificaVisibilita(container: ContainerComponent, show: boolean) {\n\n if (container) {\n\n if (this.contentsHidden) {\n\n container.rendered = true;\n container.hidden = !show;\n\n } else {\n\n container.rendered = show;\n container.hidden = false;\n }\n\n container.detectChanges();\n }\n }\n\n itemOnClick(ref: number | string | SelectorItem) {\n\n let item: SelectorItem;\n\n if (isNumber(ref)) {\n\n item = this.items.find((i: SelectorItem) => i.index == ref);\n } else if (isString(ref)) {\n\n item = this.items.find((i: SelectorItem) => i.code == ref);\n } else {\n item = ref as SelectorItem;\n }\n\n if (item) {\n\n if (item.index < this.currentItem || (item.index > this.currentItem)) {\n\n this.setCurrentItem(item.index)\n this.itemChange.emit(item);\n }\n\n if (this.contenuti?.length > 0) {\n\n this.showContent(item);\n }\n }\n\n this.cdr.detectChanges();\n }\n\n prevButtonOnClick() {\n\n this.translate(120);\n this.cdr.detectChanges();\n }\n\n nextButtonOnClick() {\n\n this.translate(-120);\n this.cdr.detectChanges();\n }\n\n translate = (px: number) => {\n\n this.totalTranslate += px;\n this.re2.setStyle(this.slickTrack.nativeElement, 'transform', `translate(${this.totalTranslate}px)`);\n };\n\n getAriaLabelValue(item: SelectorItem) {\n\n if (item.index == this.currentItem) {\n\n return 'Step corrente';\n } else if (item.index < this.currentItem) {\n\n return 'Step precedente';\n } else {\n return 'Step successivo';\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges, ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {SelectorComponent, SelectorItem} from \"../selector/selector.component\";\nimport {CHANGE_DETECTION_STRATEGY, LogEvent} from \"../../base.component\";\nimport {BasicUxElementComponent} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isString} from \"../../../../utils/common.operators\";\n\nexport interface WizardStep extends SelectorItem {\n}\n\n@Component({\n selector: 'inail-wizard',\n templateUrl: './wizard.component.html',\n styleUrls: ['./wizard.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class WizardComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input()\n steps: WizardStep[];\n\n showNumber: boolean = true;\n separator: string = '>';\n\n @Input()\n contentsHidden: boolean = true;\n\n @Input()\n currentStep: number = 0;\n\n @Output()\n currentStepChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n stepChange: EventEmitter<WizardStep> = new EventEmitter<WizardStep>();\n\n @Input()\n switchToFirstError: Observable<void>;\n\n @Input()\n switchTo: EventEmitter<number | string | WizardStep> = new EventEmitter<number | string | WizardStep>();\n\n @Input()\n prevButtonTitle: string = 'scorri wizard a destra';\n\n @Input()\n nextButtonTitle: string = 'scorri wizard a sinistra';\n\n @Input()\n next: Observable<void>;\n\n @Input()\n prev: Observable<void>;\n\n @ContentChildren(ContainerComponent, {descendants: true})\n contenuti: QueryList<ContainerComponent>;\n\n @ViewChild(SelectorComponent)\n selectorComponent: SelectorComponent\n\n constructor(private cdr: ChangeDetectorRef, private re2: Renderer2) {\n super(cdr);\n this.logPrefix = '[inail-wizard]';\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if (changes?.next?.currentValue) {\n\n this.push(\n changes?.next?.currentValue.subscribe(\n () => {\n\n if (this.currentStep < this.steps.length - 1) {\n\n this.currentStep = this.currentStep + 1;\n this.switchTo?.emit(this.currentStep);\n // this.currentStepChange.emit(this.currentStep);\n }\n }\n )\n );\n }\n\n if (changes?.prev?.currentValue) {\n\n this.push(\n changes.prev.currentValue.subscribe(\n () => {\n\n if (this.currentStep > 0) {\n\n this.currentStep = this.currentStep - 1;\n this.switchTo?.emit(this.currentStep);\n // this.currentStepChange.emit(this.currentStep);\n }\n }\n )\n );\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n }\n\n ngAfterViewInit() {\n\n this.emitDebug('Contenitori interni');\n this.emitDebug(this.contenuti);\n this.selectorComponent.inizializzaContenuti(this.contenuti);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n emitWizardLog(log: LogEvent) {\n\n if (isString(log.message)) {\n\n log.message = (log.message as string).replace('[inail-selector]', this.logPrefix);\n }\n\n this.log.emit(log);\n }\n\n currentStepChangeHandler(index: number) {\n\n this.currentStep = index;\n this.currentStepChange.emit(index);\n }\n\n stepChangeHandler($event: SelectorItem) {\n\n this.stepChange.emit($event);\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent} from \"../../responsive-element.component\";\n\n@Component({\n selector: 'inail-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProgressBarComponent extends ResponsiveElementComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n\n @Input()\n label: string;\n\n @Input()\n valuenow: number = 0;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-progress-bar]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n super.ngOnChanges(changes);\n\n if (changes?.valuenow?.currentValue) {\n\n if (this.valuenow < 0) {\n\n this.valuenow = 0;\n } else if (this.valuenow > 100) {\n\n this.valuenow = 100;\n }\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n super.ngOnInit()\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent} from \"../form-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {SelectOption} from \"../select/select.component\";\nimport {CheckboxState} from \"../checkbox/checkbox.component\";\n\nexport interface MultiSelectOption extends SelectOption {\n\n title?: string;\n beforeDivider?: boolean;\n afterDivider?: boolean;\n}\n\n@Component({\n selector: 'inail-multi-select',\n templateUrl: './multi-select.component.html',\n styleUrls: ['./multi-select.component.css'],\n changeDetection: CHANGE_DETECTION_STRATEGY,\n encapsulation: ViewEncapsulation.None\n})\nexport class MultiSelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @ViewChild('multiSelect', {static: true})\n multiSelect: ElementRef<HTMLElement>;\n\n @ViewChild('formControl', {static: true})\n formControlElement: ElementRef<HTMLElement>;\n\n @ViewChild('dropdownMenu', {static: true})\n dropdownMenu: ElementRef<HTMLElement>;\n\n @Input()\n options: MultiSelectOption[] = [];\n\n @Input()\n values: string[] = [];\n\n @Output()\n valuesChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n @Input()\n placeholder: string = '- seleziona opzioni -';\n\n @Input()\n sort: 'asc' | 'desc';\n\n inputTextValue: string;\n\n toggle = () => window['$'](this.formControlElement.nativeElement).dropdown('toggle');\n isExpanded = (): boolean => this.formControlElement.nativeElement.getAttribute('aria-expanded') === 'true';\n hasFormControlFocus = (): boolean => this.formControlElement.nativeElement.matches(':focus');\n hasDropdownMenuFocus = (): boolean => this.dropdownMenu.nativeElement.matches(':focus-within');\n isChecked = (value: string): boolean => this.values.some(v => v === value);\n getInputTextValue = (): string => this.options.filter(opt => this.isChecked(opt.value)).map(opt => opt.label).join(', ');\n pushValue = (value: string) => this.values = this.options.filter(opt => opt.value === value || this.isChecked(opt.value)).map(opt => opt.value);\n isFocusOut = () => window['$'](this.multiSelect.nativeElement).find(document.activeElement).length == 0;\n\n constructor(private cdr: ChangeDetectorRef) {\n super(cdr);\n this.logPrefix = `[inail-multi-select]`;\n this.detach();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n super.ngOnChanges(changes);\n\n if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n if (direction != 0 && this.options != undefined) {\n\n this.options.sort((a: MultiSelectOption, b: MultiSelectOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n }\n }\n\n if(changes?.options?.currentValue) {\n\n this.inputTextValue = this.getInputTextValue();\n }\n\n this.cdr.detectChanges();\n }\n\n ngOnInit(): void {\n\n super.ngOnInit();\n\n this.emitDebug(`@ViewChild('formControl')`);\n this.emitDebug(this.formControlElement);\n\n if (this.focus) {\n\n this.push(\n this.focus.subscribe((scroll: boolean) => {\n\n this.emitDebug(`Catch focus!`);\n setFocus(this.formControlElement.nativeElement, scroll);\n })\n );\n }\n }\n\n ngAfterViewInit(): void {\n }\n\n ngOnDestroy(): void {\n\n super.ngOnDestroy();\n }\n\n onKeypress($event: KeyboardEvent) {\n\n $event.preventDefault();\n }\n\n onFocusIn() {\n\n setTimeout(() => {\n\n this.showDropdownMenu();\n\n }, 250)\n }\n\n onFocusOut() {\n\n setTimeout(() => {\n\n if (this.isFocusOut()) {\n\n this.closeDropdownMenu();\n }\n }, 150);\n }\n\n showDropdownMenu() {\n\n setTimeout(() => {\n\n if(!this.isExpanded()) {\n\n this.toggle();\n }\n });\n }\n\n closeDropdownMenu() {\n\n setTimeout(() => {\n\n if(this.isExpanded()) {\n\n this.toggle();\n }\n });\n }\n\n onCheck(cb: CheckboxState) {\n\n if (!cb.firstChange) {\n\n if (cb.checked && !this.isChecked(cb.value)) {\n\n this.pushValue(cb.value);\n this.cleanError();\n\n } else if (!cb.checked && this.isChecked(cb.value)) {\n\n this.values = this.values.filter(value => value != cb.value);\n this.cleanError();\n }\n\n this.valuesChange.emit(this.values);\n this.inputTextValue = this.getInputTextValue();\n this.cdr.detectChanges();\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {BaseComponent} from './components/core/base.component';\nimport {BasicUxElementComponent} from \"./components/core/basic-ux-element.component\";\nimport {ResponsiveElementComponent} from \"./components/core/responsive-element.component\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {CommonModule, DatePipe} from \"@angular/common\";\nimport {PreComponent} from './components/utilities/pre/pre.component';\nimport {StatePropertieComponent} from './components/utilities/state-propertie/state-propertie.component';\nimport {FormElementStatePropertieComponent} from './components/utilities/form-element-state-propertie/form-element-state-propertie.component';\nimport {FooterComponent} from \"./components/core/layout/footer/footer.component\";\nimport {HttpClientModule} from \"@angular/common/http\";\nimport {NavigazioneInternaComponent} from \"./components/core/layout/navigazione-interna/navigazione-interna.component\";\nimport {NavigazionePrincipaleComponent} from \"./components/core/layout/navigazione-principale/navigazione-principale.component\";\nimport {MenuIntranetComponent} from \"./components/core/layout/menu-intranet/menu-intranet.component\";\nimport {NavigazioneUtenteComponent} from \"./components/core/layout/navigazione-utente/navigazione-utente.component\";\nimport {HeaderComponent} from \"./components/core/layout/header/header.component\";\nimport {LoaderComponent} from \"./components/core/layout/loader/loader.component\";\nimport {TriggerSliderMenuButtonComponent} from \"./components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component\";\nimport {InailLayoutComponent} from \"./components/core/layout/inail-layout/inail-layout.component\";\nimport {NavigazioneSecondariaComponent} from \"./components/core/layout/navigazione-secondaria/navigazione-secondaria.component\";\nimport {BreadcrumbComponent} from \"./components/core/layout/breadcrumb/breadcrumb.component\";\nimport {RouterModule} from \"@angular/router\";\nimport {InputTextComponent} from \"./components/core/form/input-text/input-text.component\";\nimport {FormElementComponent} from \"./components/core/form/form-element.component\";\nimport {SelectComponent} from \"./components/core/form/select/select.component\";\nimport {FormGreyComponent} from \"./components/core/ux/form-grey/form-grey.component\";\nimport {PageTitleComponent} from \"./components/core/ux/page-title/page-title.component\";\nimport {FeedbackComponent} from \"./components/core/ux/feedback/feedback.component\";\nimport {MenuComponent} from \"./components/core/layout/menu/menu.component\";\nimport {AccordionComponent} from \"./components/core/ux/accordion/accordion.component\";\nimport {TabGroupComponent} from \"./components/core/ux/tab-group/tab-group.component\";\nimport {TabPaneComponent} from \"./components/core/ux/tab-pane/tab-pane.component\";\nimport {ButtonComponent} from \"./components/core/ux/button/button.component\";\nimport {PopoverComponent} from './components/core/ux/popover/popover.component';\nimport {TextareaComponent} from './components/core/form/textarea/textarea.component';\nimport {InputDateComponent} from './components/core/form/input-date/input-date.component';\nimport {RadioSelectComponent} from './components/core/form/radio-select/radio-select.component';\nimport {CheckboxComponent} from './components/core/form/checkbox/checkbox.component';\nimport {ModalComponent} from './components/core/ux/modal/modal.component';\nimport {AlertComponent} from './components/core/ux/alert/alert.component';\nimport {ConfirmComponent} from './components/core/ux/confirm/confirm.component';\nimport {InailTablePageSelectorComponent} from './components/core/table/inail-table-page-selector/inail-table-page-selector.component';\nimport {TablePageLengthSelectorComponent} from './components/core/table/table-page-length-selector/table-page-length-selector.component';\nimport {TableComponent} from './components/core/table/table/table.component';\nimport {ThLabelComponent} from './components/core/table/th-label/th-label.component';\nimport {InputFileComponent} from './components/core/form/input-file/input-file.component';\nimport {InputNumberComponent} from './components/core/form/input-number/input-number.component';\nimport {SelectorComponent} from './components/core/ux/selector/selector.component';\nimport {WizardComponent} from './components/core/ux/wizard/wizard.component';\nimport {ContainerComponent} from './components/core/ux/container/container.component';\nimport {TrCheckboxComponent} from './components/core/table/tr-checkbox/tr-checkbox.component';\nimport { ProgressBarComponent } from './components/core/ux/progress-bar/progress-bar.component';\nimport { MultiSelectComponent } from './components/core/form/multi-select/multi-select.component';\n\n@NgModule({\n declarations: [\n BaseComponent,\n BasicUxElementComponent,\n ResponsiveElementComponent,\n FormElementComponent,\n InputTextComponent,\n PreComponent,\n StatePropertieComponent,\n FormElementStatePropertieComponent,\n FooterComponent,\n SelectComponent,\n NavigazioneInternaComponent,\n NavigazionePrincipaleComponent,\n MenuIntranetComponent,\n NavigazioneUtenteComponent,\n HeaderComponent,\n LoaderComponent,\n TriggerSliderMenuButtonComponent,\n NavigazioneSecondariaComponent,\n InailLayoutComponent,\n BreadcrumbComponent,\n FormGreyComponent,\n PageTitleComponent,\n FeedbackComponent,\n MenuComponent,\n AccordionComponent,\n TabGroupComponent,\n TabPaneComponent,\n ButtonComponent,\n PopoverComponent,\n TextareaComponent,\n InputDateComponent,\n RadioSelectComponent,\n CheckboxComponent,\n ModalComponent,\n AlertComponent,\n ConfirmComponent,\n InailTablePageSelectorComponent,\n TablePageLengthSelectorComponent,\n TableComponent,\n ThLabelComponent,\n InputFileComponent,\n InputNumberComponent,\n SelectorComponent,\n WizardComponent,\n ContainerComponent,\n TrCheckboxComponent,\n ProgressBarComponent,\n MultiSelectComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n RouterModule\n ],\n exports: [\n InputTextComponent,\n FooterComponent,\n SelectComponent,\n NavigazioneInternaComponent,\n NavigazionePrincipaleComponent,\n MenuIntranetComponent,\n NavigazioneUtenteComponent,\n HeaderComponent,\n LoaderComponent,\n TriggerSliderMenuButtonComponent,\n NavigazioneSecondariaComponent,\n InailLayoutComponent,\n BreadcrumbComponent,\n FormGreyComponent,\n PageTitleComponent,\n FeedbackComponent,\n MenuComponent,\n AccordionComponent,\n TabGroupComponent,\n TabPaneComponent,\n ButtonComponent,\n PopoverComponent,\n TextareaComponent,\n InputDateComponent,\n RadioSelectComponent,\n CheckboxComponent,\n ModalComponent,\n AlertComponent,\n ConfirmComponent,\n InailTablePageSelectorComponent,\n TablePageLengthSelectorComponent,\n TableComponent,\n ThLabelComponent,\n InputFileComponent,\n InputNumberComponent,\n SelectorComponent,\n WizardComponent,\n ContainerComponent,\n TrCheckboxComponent,\n ProgressBarComponent,\n MultiSelectComponent\n ],\n providers: [DatePipe]\n})\nexport class NgInailCommonModule {\n}\n","/*\n * Public API Surface of ng-inail-common\n */\n\n// ----- Componenti ----------------------------------------------------------------------------------\nexport * from './lib/ng-inail-common.module';\nexport * from './lib/components/core/base.component';\nexport * from './lib/components/core/responsive-element.component';\n\n// Form controls\nexport * from './lib/components/core/form/input-text/input-text.component';\nexport * from './lib/components/core/form/select/select.component';\nexport * from './lib/components/core/form/textarea/textarea.component';\nexport * from './lib/components/core/form/input-date/input-date.component';\nexport * from './lib/components/core/form/radio-select/radio-select.component';\nexport * from './lib/components/core/form/checkbox/checkbox.component';\nexport * from './lib/components/core/form/input-file/input-file.component';\nexport * from './lib/components/core/form/input-number/input-number.component';\nexport * from './lib/components/core/form/multi-select/multi-select.component';\n\n// Layout\nexport * from './lib/components/core/layout/footer/footer.component';\nexport * from './lib/components/core/layout/navigazione-interna/navigazione-interna.component';\nexport * from './lib/components/core/layout/navigazione-principale/navigazione-principale.component';\nexport * from './lib/components/core/layout/menu-intranet/menu-intranet.component';\nexport * from './lib/components/core/layout/navigazione-utente/navigazione-utente.component';\nexport * from './lib/components/core/layout/header/header.component';\nexport * from './lib/components/core/layout/loader/loader.component';\nexport * from './lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component';\nexport * from './lib/components/core/layout/breadcrumb/breadcrumb.component';\nexport * from './lib/components/core/layout/menu/menu.component';\nexport * from './lib/components/core/layout/inail-layout/inail-layout.component';\nexport * from './lib/components/core/layout/inail-layout/static-resources';\n\n// Ux\nexport * from './lib/components/core/ux/form-grey/form-grey.component';\nexport * from './lib/components/core/ux/page-title/page-title.component';\nexport * from './lib/components/core/ux/feedback/feedback.component';\nexport * from './lib/components/core/ux/accordion/accordion.component';\nexport * from './lib/components/core/ux/tab-group/tab-group.component';\nexport * from './lib/components/core/ux/tab-pane/tab-pane.component';\nexport * from './lib/components/core/ux/button/button.component';\nexport * from './lib/components/core/ux/popover/popover.component';\nexport * from './lib/components/core/ux/modal/modal.component';\nexport * from './lib/components/core/ux/alert/alert.component';\nexport * from './lib/components/core/ux/confirm/confirm.component';\nexport * from './lib/components/core/ux/wizard/wizard.component';\nexport * from './lib/components/core/ux/selector/selector.component';\nexport * from './lib/components/core/ux/container/container.component';\nexport * from './lib/components/core/ux/progress-bar/progress-bar.component';\n\n// Table\nexport * from './lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component';\nexport * from './lib/components/core/table/table-page-length-selector/table-page-length-selector.component';\nexport * from './lib/components/core/table/table/table.component';\nexport * from './lib/components/core/table/th-label/th-label.component';\nexport * from './lib/components/core/table/tr-checkbox/tr-checkbox.component';\n\n// ----- Operatori e Types-----------------------------------------------------------------------------------\nexport * from './lib/utils/common.operators'\nexport * from './lib/utils/date.operators'\nexport * from './lib/utils/types'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {BasicUxElementComponent as ɵa} from './lib/components/core/basic-ux-element.component';\nexport {FormElementComponent as ɵb} from './lib/components/core/form/form-element.component';\nexport {TriggerSliderMenuButtonComponent as ɵf} from './lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component';\nexport {FormElementStatePropertieComponent as ɵe} from './lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component';\nexport {PreComponent as ɵc} from './lib/components/utilities/pre/pre.component';\nexport {StatePropertieComponent as ɵd} from './lib/components/utilities/state-propertie/state-propertie.component';"],"names":["isFunction","LogLevel","ChangeDetectionStrategy","EventEmitter","Component","ViewEncapsulation","ChangeDetectorRef","Output","Input","first","finalize","DomSanitizer","HttpClient","DEFAULT_URL","HttpHeaders","tap","ViewChild","BehaviorSubject","filter","NavigationEnd","Router","SetFocusStrategy","Renderer2","ElementRef","ContentChildren","HostListener","Observable","NG_VALUE_ACCESSOR","forwardRef","DatePipe","clone","ViewChildren","ReplaySubject","DEFAULT_TABLE_LENGTH","NgModule","CommonModule","FormsModule","ReactiveFormsModule","HttpClientModule","RouterModule"],"mappings":"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CF;;iBACF;;;gBA9CCtB,sBAAiB;;;qCAiDhBU,cAAS,SAAC,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;8BAKvCT,WAAM;0BAONC,UAAK;+BAGLA,UAAK;gCAGLA,UAAK;yBAGLA,UAAK;wBA4JLA,UAAK;;IAgER;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;ICzdA,IAAMsB,OAAK,GAAG,U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"}