@wemake4u/form-player-se 1.0.20 → 1.0.21

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":"wemake4u-form-player-se.mjs","sources":["../../../projects/ngx-sirio/src/lib/utils/functions.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/services/toast.service.ts","../../../projects/ngx-sirio/src/lib/directives/dialog.directive.ts","../../../projects/ngx-sirio/src/lib/locale/locale-it.ts","../../../projects/ngx-sirio/src/lib/locale/locale-en.ts","../../../projects/ngx-sirio/src/lib/locale/locale-de.ts","../../../projects/ngx-sirio/src/lib/locale/locale-fr.ts","../../../projects/ngx-sirio/src/lib/locale/locale-es.ts","../../../projects/ngx-sirio/src/lib/locale/locale-pt.ts","../../../projects/ngx-sirio/src/lib/locale/locale.ts","../../../projects/ngx-sirio/src/lib/locale/localize.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.html","../../../projects/ngx-sirio/src/lib/services/dialog.service.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/controls/control.ts","../../../projects/ngx-sirio/src/lib/services/register.service.ts","../../../projects/ngx-sirio/src/lib/services/scope.service.ts","../../../projects/ngx-sirio/src/lib/services/programmability.service.ts","../../../projects/ngx-sirio/src/lib/utils/patchForm.ts","../../../projects/ngx-sirio/src/lib/utils/groupByRow.ts","../../../projects/ngx-sirio/src/lib/services/event.service.ts","../../../projects/ngx-sirio/src/lib/utils/gridCells.ts","../../../projects/ngx-sirio/src/lib/utils/cell-templates/objectUrl.component.html","../../../projects/ngx-sirio/src/lib/utils/cell-templates/delete.component.html","../../../projects/ngx-sirio/src/lib/utils/cell-templates/actions.component.html","../../../projects/ngx-sirio/src/lib/common/symbols.ts","../../../projects/ngx-sirio/src/lib/common/record.ts","../../../projects/ngx-sirio/src/lib/utils/setFilter.ts","../../../projects/ngx-sirio/src/lib/utils/cell-templates/setfilter.component.html","../../../projects/ngx-sirio/src/lib/utils/focusable.ts","../../../projects/ngx-sirio/src/lib/services/formatter.service.ts","../../../projects/ngx-sirio/src/lib/services/grid.service.ts","../../../projects/ngx-sirio/src/lib/services/chart.service.ts","../../../projects/ngx-sirio/src/lib/directives/adorner.directive.ts","../../../projects/ngx-sirio/src/lib/directives/disable.directive.ts","../../../projects/ngx-sirio/src/lib/directives/display.directive.ts","../../../projects/ngx-sirio/src/lib/directives/repeat.directive.ts","../../../projects/ngx-sirio/src/lib/directives/framesecurity.directive.ts","../../../projects/ngx-sirio/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tab.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordion.directive.ts","../../../projects/ngx-sirio/src/lib/directives/grid.directive.ts","../../../projects/ngx-sirio/src/lib/controls/form.ts","../../../projects/ngx-sirio/src/lib/controls/textfield.ts","../../../projects/ngx-sirio/src/lib/controls/select.ts","../../../projects/ngx-sirio/src/lib/controls/taglist.ts","../../../projects/ngx-sirio/src/lib/controls/number.ts","../../../projects/ngx-sirio/src/lib/controls/date.ts","../../../projects/ngx-sirio/src/lib/controls/time.ts","../../../projects/ngx-sirio/src/lib/controls/toggle.ts","../../../projects/ngx-sirio/src/lib/controls/checkbox.ts","../../../projects/ngx-sirio/src/lib/controls/chipradio.ts","../../../projects/ngx-sirio/src/lib/controls/radio.ts","../../../projects/ngx-sirio/src/lib/controls/chipchecklist.ts","../../../projects/ngx-sirio/src/lib/controls/checklist.ts","../../../projects/ngx-sirio/src/lib/controls/textarea.ts","../../../projects/ngx-sirio/src/lib/controls/filepicker.ts","../../../projects/ngx-sirio/src/lib/controls/text.ts","../../../projects/ngx-sirio/src/lib/controls/html.ts","../../../projects/ngx-sirio/src/lib/controls/image.ts","../../../projects/ngx-sirio/src/lib/controls/tab.ts","../../../projects/ngx-sirio/src/lib/controls/chart.ts","../../../projects/ngx-sirio/src/lib/controls/accordion.ts","../../../projects/ngx-sirio/src/lib/controls/dynamiclist.ts","../../../projects/ngx-sirio/src/lib/controls/group.ts","../../../projects/ngx-sirio/src/lib/controls/table.ts","../../../projects/ngx-sirio/src/lib/controls/button.ts","../../../projects/ngx-sirio/src/lib/controls/separator.ts","../../../projects/ngx-sirio/src/lib/controls/spacer.ts","../../../projects/ngx-sirio/src/lib/controls/iframe.ts","../../../projects/ngx-sirio/src/lib/controls/tooltip.ts","../../../projects/ngx-sirio/src/lib/controls/factory.ts","../../../projects/ngx-sirio/src/lib/directives/register.directive.ts","../../../projects/ngx-sirio/src/lib/directives/refresh.directive.ts","../../../projects/ngx-sirio/src/lib/directives/updateblur.directive.ts","../../../projects/ngx-sirio/src/lib/directives/date.directive.ts","../../../projects/ngx-sirio/src/lib/directives/number.directive.ts","../../../projects/ngx-sirio/src/lib/directives/text.directive.ts","../../../projects/ngx-sirio/src/lib/directives/disableform.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapse.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordionpanel.directive.ts","../../../projects/ngx-sirio/src/lib/shared/template-wrapper/template-wrapper.component.ts","../../../projects/ngx-sirio/src/lib/services/sanitize.service.ts","../../../projects/ngx-sirio/src/lib/services/markdown.service.ts","../../../projects/ngx-sirio/src/lib/services/mime.service.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.html","../../../projects/ngx-sirio/src/lib/dynamic-form/dynamic-form.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-form/dynamic-form.component.html","../../../projects/ngx-sirio/src/lib/utils/extractFiles.ts","../../../projects/ngx-sirio/src/lib/utils/toFormData.ts","../../../projects/ngx-sirio/src/lib/dataSources/odata.ts","../../../projects/ngx-sirio/src/lib/dataSources/rest.ts","../../../projects/ngx-sirio/src/lib/services/data.service.ts","../../../projects/ngx-sirio/src/wemake4u-form-player-se.ts"],"sourcesContent":["export function ToBoundArrows<T extends object>(\r\n instance: T,\r\n methodNames: (keyof T)[]) : Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const name of methodNames) {\r\n const original = instance[name];\r\n if (typeof original === 'function') {\r\n result[name as string] = (...args: any[]) => original.apply(instance, args);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function ToProxy(instance: any) {\r\n\r\n if (!instance) {\r\n return instance;\r\n }\r\n\r\n return new Proxy(instance, {\r\n get: (target: any, property) => {\r\n\r\n let value = undefined;\r\n\r\n if (property in target) {\r\n value = Reflect.get(target, property, target);\r\n }\r\n\r\n if (typeof value === 'function') {\r\n return (...args: any[]) => value.apply(instance, args);\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n return ToProxy(value);\r\n }\r\n\r\n return value;\r\n }\r\n });\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { evaluate as evaluateTemplate } from 'feelers';\r\nimport { unaryTest, evaluate, parseExpression } from 'feelin';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeelService {\r\n\r\n constructor() { }\r\n\r\n evalTemplate(template: string, context: any = {}): string {\r\n return evaluateTemplate(template, context);\r\n };\r\n\r\n evalExpression(expression: string, context: Record<string, any> = {}): any {\r\n return evaluate(expression, context);\r\n };\r\n\r\n evalUnaryTest(expression: string, context: Record<string, any> = {}, input: any = null): boolean {\r\n try {\r\n context['?'] = input;\r\n return unaryTest(expression, context);\r\n } \r\n finally {\r\n delete context['?'];\r\n }\r\n };\r\n\r\n getDependencies(expression: string, context: Record<string, any> = {}): (string | string[])[] {\r\n const dependencies: (string | string[])[] = [];\r\n const uniqueSet = new Set<string>();\r\n const addSet = (text: string) => {\r\n if (uniqueSet.has(text)) {\r\n return false;\r\n }\r\n else {\r\n uniqueSet.add(text);\r\n return true;\r\n } \r\n };\r\n parseExpression(expression, context).iterate({\r\n enter: (node: any) => {\r\n if (node.name === 'VariableName') {\r\n const text = expression.substring(node.from, node.to);\r\n if (addSet(text)) {\r\n dependencies.push(text);\r\n } \r\n }\r\n else if (node.name === 'PathExpression') {\r\n const text = expression.substring(node.from, node.to);\r\n if (addSet(text)) {\r\n const path: string[] = [];\r\n node.iterate((subnode: any) => {\r\n if (subnode.name === 'VariableName') {\r\n const part = expression.substring(subnode.from, subnode.to);\r\n path.push(part);\r\n }\r\n });\r\n dependencies.push(path);\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n });\r\n return dependencies;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isObservable, of, take, tap } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WeakService {\r\n\r\n constructor() { }\r\n\r\n private cache = new WeakMap<object, Record<string, any>>();\r\n\r\n exists(source: object, key: string) {\r\n if (this.cache.has(source)) {\r\n const cachedObject = this.cache.get(source)!;\r\n return (key in cachedObject);\r\n }\r\n return false;\r\n }\r\n\r\n call<T>(source: object, key: string, func: () => T\r\n , reusable: ((value: T) => boolean) | null = null\r\n , store: ((value: T) => any) | null = null\r\n ): T {\r\n if (!this.cache.has(source)) {\r\n this.cache.set(source, {});\r\n }\r\n\r\n const cachedObject = this.cache.get(source)!;\r\n\r\n if (key in cachedObject\r\n && (reusable == null\r\n || reusable(cachedObject[key])))\r\n {\r\n return cachedObject[key];\r\n }\r\n\r\n let result: any = func();\r\n\r\n if (store != null) {\r\n result = store(result);\r\n }\r\n\r\n const observable = isObservable(result);\r\n\r\n if (observable) {\r\n result = result.pipe(shareReplay(1));\r\n\r\n result = result.pipe(\r\n take(1),\r\n tap((res: any) => {\r\n cachedObject[key] = of(res);\r\n }),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n cachedObject[key] = result;\r\n\r\n return result;\r\n }\r\n\r\n invalidate(source: object, key: string) {\r\n if (this.cache.has(source)) {\r\n const cachedObject = this.cache.get(source)!;\r\n delete cachedObject[key];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { SirioToastService, ToastTypes } from \"ngx-sirio-lib\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private sirioToast: SirioToastService\r\n ) { }\r\n\r\n notifyInfo(message: string, delay: number = 2000) {\r\n this.notify(message, \"info\", delay);\r\n }\r\n\r\n notifySuccess(message: string, delay: number = 2000) {\r\n this.notify(message, \"success\", delay);\r\n }\r\n\r\n notifyWarning(message: string, delay: number = 2000) {\r\n this.notify(message, \"warning\", delay);\r\n }\r\n\r\n notifyError(message: string, delay: number = 2000) {\r\n this.notify(message, \"danger\", delay);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"notifyInfo\",\r\n \"notifySuccess\",\r\n \"notifyWarning\",\r\n \"notifyError\"\r\n ]);\r\n }\r\n\r\n private notify(message: string, type: ToastTypes, delay: number = 2000) {\r\n this.sirioToast.openToast({\r\n delay: delay,\r\n text: message,\r\n type: type\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { SirioDialogComponent } from 'ngx-sirio-lib';\r\n@Directive({\r\n selector: '[dialog]',\r\n standalone: true\r\n})\r\nexport class DialogDirective {\r\n\r\n constructor(private host: SirioDialogComponent) {\r\n\r\n const focusEvents = host.handleFocusEvents;\r\n\r\n host.handleFocusEvents = () => {\r\n if (this.host.withCloseButton) {\r\n focusEvents.apply(this.host);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","export const Texts = {\r\n TypeToSearch: \"Digita per cercare...\",\r\n Upload: \"Upload\",\r\n ScrollLeft: \"Scorri a sinistra\",\r\n ScrollRight: \"Scorri a destra\",\r\n AddItem: \"Aggiungi\",\r\n RemoveItem: \"Rimuovi\",\r\n PreviousSection: \"Sezione precedente\",\r\n NextSection: \"Sezione successiva\",\r\n Show: \"Visualizza\",\r\n Remove: \"Rimuovi\",\r\n Close: \"Chiudi\",\r\n Confirm: \"Conferma\",\r\n OK: \"OK\",\r\n Cancel: \"Annulla\",\r\n Abort: \"Interrompi\",\r\n Retry: \"Riprova\",\r\n Ignore: \"Ignora\",\r\n Yes: \"Sì\",\r\n No: \"No\",\r\n Try: \"Prova\",\r\n Continue: \"Continua\",\r\n Name: \"Nome\",\r\n Size: \"Dimensione\",\r\n Type: \"Tipo\",\r\n Actions: \"Azioni\",\r\n ReadMore: \"Leggi di più\",\r\n ReadLess: \"Leggi di meno\",\r\n SelectAll: \"Seleziona tutto\",\r\n ChooseOne: \"Scegli uno\",\r\n True: \"Vero\",\r\n False: \"Falso\",\r\n Blank: \"Vuoto\",\r\n NotBlank: \"Non vuoto\",\r\n Information: \"Informazioni\",\r\n OpenMenu: \"Apri Menu\",\r\n CloseMenu: \"Chiudi Menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Type to search...\",\r\n Upload: \"Upload\",\r\n ScrollLeft: \"Scroll left\",\r\n ScrollRight: \"Scroll right\",\r\n AddItem: \"Add\",\r\n RemoveItem: \"Remove\",\r\n PreviousSection: \"Previous section\",\r\n NextSection: \"Next section\",\r\n Show: \"Show\",\r\n Remove: \"Remove\",\r\n Close: \"Close\",\r\n Confirm: \"Confirm\",\r\n OK: \"OK\",\r\n Cancel: \"Cancel\",\r\n Abort: \"Abort\",\r\n Retry: \"Retry\",\r\n Ignore: \"Ignore\",\r\n Yes: \"Yes\",\r\n No: \"No\",\r\n Try: \"Try\",\r\n Continue: \"Continue\",\r\n Name: \"Name\",\r\n Size: \"Size\",\r\n Type: \"Type\",\r\n Actions: \"Actions\",\r\n ReadMore: \"Read more\",\r\n ReadLess: \"Read less\",\r\n SelectAll: \"Select all\",\r\n ChooseOne: \"Choose one\",\r\n True: \"True\",\r\n False: \"False\",\r\n Blank: \"Blank\",\r\n NotBlank: \"Not blank\",\r\n Information: \"Information\",\r\n OpenMenu: \"Open menu\",\r\n CloseMenu: \"Close menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Zum Suchen tippen...\",\r\n Upload: \"Hochladen\",\r\n ScrollLeft: \"Nach links scrollen\",\r\n ScrollRight: \"Nach rechts scrollen\",\r\n AddItem: \"Hinzufügen\",\r\n RemoveItem: \"Entfernen\",\r\n PreviousSection: \"Vorheriger Abschnitt\",\r\n NextSection: \"Nächster Abschnitt\",\r\n Show: \"Anzeigen\",\r\n Remove: \"Entfernen\",\r\n Close: \"Schließen\",\r\n Confirm: \"Bestätigen\",\r\n OK: \"OK\",\r\n Cancel: \"Abbrechen\",\r\n Abort: \"Abbrechen\",\r\n Retry: \"Wiederholen\",\r\n Ignore: \"Ignorieren\",\r\n Yes: \"Ja\",\r\n No: \"Nein\",\r\n Try: \"Versuchen\",\r\n Continue: \"Fortsetzen\",\r\n Name: \"Name\",\r\n Size: \"Größe\",\r\n Type: \"Typ\",\r\n Actions: \"Aktionen\",\r\n ReadMore: \"Mehr lesen\",\r\n ReadLess: \"Weniger lesen\",\r\n SelectAll: \"Alles auswählen\",\r\n ChooseOne: \"Wähle eine Option\",\r\n True: \"Wahr\",\r\n False: \"Falsch\",\r\n Blank: \"Leer\",\r\n NotBlank: \"Nicht leer\",\r\n Information: \"Informationen\",\r\n OpenMenu: \"Menü öffnen\",\r\n CloseMenu: \"Menü schließen\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Tapez pour rechercher...\",\r\n Upload: \"Téléverser\",\r\n ScrollLeft: \"Faire défiler vers la gauche\",\r\n ScrollRight: \"Faire défiler vers la droite\",\r\n AddItem: \"Ajouter\",\r\n RemoveItem: \"Supprimer\",\r\n PreviousSection: \"Section précédente\",\r\n NextSection: \"Section suivante\",\r\n Show: \"Afficher\",\r\n Remove: \"Supprimer\",\r\n Close: \"Fermer\",\r\n Confirm: \"Confirmer\",\r\n OK: \"OK\",\r\n Cancel: \"Annuler\",\r\n Abort: \"Abandonner\",\r\n Retry: \"Réessayer\",\r\n Ignore: \"Ignorer\",\r\n Yes: \"Oui\",\r\n No: \"Non\",\r\n Try: \"Essayer\",\r\n Continue: \"Continuer\",\r\n Name: \"Nom\",\r\n Size: \"Taille\",\r\n Type: \"Type\",\r\n Actions: \"Actions\",\r\n ReadMore: \"Lire la suite\",\r\n ReadLess: \"Lire moins\",\r\n SelectAll: \"Tout sélectionner\",\r\n ChooseOne: \"Choisir un\",\r\n True: \"Vrai\",\r\n False: \"Faux\",\r\n Blank: \"Vide\",\r\n NotBlank: \"Non vide\",\r\n Information: \"Informations\",\r\n OpenMenu: \"Ouvrir le menu\",\r\n CloseMenu: \"Fermer le menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Escribe para buscar...\",\r\n Upload: \"Subir\",\r\n ScrollLeft: \"Desplazar a la izquierda\",\r\n ScrollRight: \"Desplazar a la derecha\",\r\n AddItem: \"Agregar\",\r\n RemoveItem: \"Eliminar\",\r\n PreviousSection: \"Sección anterior\",\r\n NextSection: \"Sección siguiente\",\r\n Show: \"Mostrar\",\r\n Remove: \"Eliminar\",\r\n Close: \"Cerrar\",\r\n Confirm: \"Confirmar\",\r\n OK: \"OK\",\r\n Cancel: \"Cancelar\",\r\n Abort: \"Abortar\",\r\n Retry: \"Reintentar\",\r\n Ignore: \"Ignorar\",\r\n Yes: \"Sí\",\r\n No: \"No\",\r\n Try: \"Intentar\",\r\n Continue: \"Continuar\",\r\n Name: \"Nombre\",\r\n Size: \"Tamaño\",\r\n Type: \"Tipo\",\r\n Actions: \"Acciones\",\r\n ReadMore: \"Leer más\",\r\n ReadLess: \"Leer menos\",\r\n SelectAll: \"Seleccionar todo\",\r\n ChooseOne: \"Elige uno\",\r\n True: \"Verdadero\",\r\n False: \"Falso\",\r\n Blank: \"Vacío\",\r\n NotBlank: \"No vacío\",\r\n Information: \"Información\",\r\n OpenMenu: \"Abrir menú\",\r\n CloseMenu: \"Cerrar menú\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Digite para pesquisar...\",\r\n Upload: \"Enviar\",\r\n ScrollLeft: \"Rolar para a esquerda\",\r\n ScrollRight: \"Rolar para a direita\",\r\n AddItem: \"Adicionar\",\r\n RemoveItem: \"Remover\",\r\n PreviousSection: \"Seção anterior\",\r\n NextSection: \"Próxima seção\",\r\n Show: \"Mostrar\",\r\n Remove: \"Remover\",\r\n Close: \"Fechar\",\r\n Confirm: \"Confirmar\",\r\n OK: \"OK\",\r\n Cancel: \"Cancelar\",\r\n Abort: \"Abortar\",\r\n Retry: \"Tentar novamente\",\r\n Ignore: \"Ignorar\",\r\n Yes: \"Sim\",\r\n No: \"Não\",\r\n Try: \"Tentar\",\r\n Continue: \"Continuar\",\r\n Name: \"Nome\",\r\n Size: \"Tamanho\",\r\n Type: \"Tipo\",\r\n Actions: \"Ações\",\r\n ReadMore: \"Leia mais\",\r\n ReadLess: \"Leia menos\",\r\n SelectAll: \"Selecionar tudo\",\r\n ChooseOne: \"Escolha um\",\r\n True: \"Verdadeiro\",\r\n False: \"Falso\",\r\n Blank: \"Vazio\",\r\n NotBlank: \"Não vazio\",\r\n Information: \"Informações\",\r\n OpenMenu: \"Abrir menu\",\r\n CloseMenu: \"Fechar menu\"\r\n};\r\n","import { Texts as it } from '../locale/locale-it';\r\nimport { Texts as en } from '../locale/locale-en';\r\nimport { Texts as de } from '../locale/locale-de';\r\nimport { Texts as fr } from '../locale/locale-fr';\r\nimport { Texts as es } from '../locale/locale-es';\r\nimport { Texts as pt } from '../locale/locale-pt';\r\n\r\nexport const Texts = {\r\n ...it, // neutral\r\n i18n: {\r\n it: it,\r\n en: en,\r\n de: de,\r\n fr: fr,\r\n es: es,\r\n pt: pt\r\n } \r\n};\r\n","const i18n = \"i18n\";\r\n\r\nexport function localize(language: string, component: any, key: string): string {\r\n const lng = language?.toLowerCase();\r\n if (lng) {\r\n return component[i18n]?.[lng]?.[key]\r\n || component[key]\r\n || \"\";\r\n }\r\n else {\r\n return component[key]\r\n || \"\";\r\n }\r\n}\r\n","import {\r\n Component, ChangeDetectionStrategy, ViewContainerRef, ViewChild, ComponentRef, Type\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FormDialogOptions, DialogAction, DialogResult } from '../services/dialog.service';\r\nimport { DialogDirective } from '../directives/dialog.directive';\r\nimport {\r\n SirioDialogComponent, SirioDialogBodyComponent, SirioDialogHeaderComponent\r\n , SirioDialogFooterComponent, SirioButtonComponent, SirioDialogActionDirective\r\n , SirioDialogTitleComponent, SirioDialogElement\r\n} from 'ngx-sirio-lib';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'dynamic-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DialogDirective,\r\n SirioDialogComponent,\r\n SirioDialogBodyComponent,\r\n SirioDialogHeaderComponent,\r\n SirioDialogFooterComponent,\r\n SirioButtonComponent,\r\n SirioDialogActionDirective,\r\n SirioDialogTitleComponent \r\n ],\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends SirioDialogElement {\r\n @ViewChild('formHost', { read: ViewContainerRef, static: true })\r\n private formHost!: ViewContainerRef;\r\n private formRef!: ComponentRef<any>\r\n private dynamicFormType!: Type<any>;\r\n Texts = Texts;\r\n\r\n ngOnInit() {\r\n this.options = this.data.options ?? {};\r\n this.currentValue = this.options.value;\r\n this.dynamicFormType = this.data.dynamicFormType;\r\n }\r\n\r\n options: FormDialogOptions = { };\r\n \r\n ngAfterViewInit() {\r\n\r\n let injector = this.options.injector\r\n ?? this.formHost.injector;\r\n\r\n const componentRef = this.formHost.createComponent(this.dynamicFormType, { injector });\r\n const instance = componentRef.instance as any;\r\n\r\n componentRef.setInput('schema', this.data.formSchema);\r\n componentRef.setInput('language', this.data.language);\r\n componentRef.setInput('value', this.options.value ?? { });\r\n componentRef.setInput('showNav', this.options.showNav ?? false);\r\n componentRef.setInput('showNavButton', this.options.showNavButton ?? false);\r\n componentRef.setInput('showProgress', this.options.showProgress ?? false);\r\n componentRef.setInput('showFormTitle', this.options.showFormTitle ?? false);\r\n\r\n instance.valueChange\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((value: any) => this.setCurrentValue(value));\r\n\r\n this.formRef = componentRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n doClose() {\r\n this.doAction('Close');\r\n }\r\n\r\n doAction(action: DialogAction) {\r\n this.sirioDialogService.closeDialog();\r\n this.SendResult(action); \r\n }\r\n\r\n showHeader(): boolean {\r\n return this.showTitle() || this.showCloseButton(); \r\n }\r\n\r\n showTitle(): boolean {\r\n return this.options.title ? true: false;\r\n }\r\n\r\n showCloseButton(): boolean {\r\n const result = this.options.closeButton === true;\r\n return result;\r\n }\r\n\r\n showFooter(): boolean {\r\n return this.options.buttons !== undefined;\r\n }\r\n\r\n isInvalid(): boolean {\r\n return (this.formRef?.instance?.formGroup?.valid ?? true) !== true;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.options.language ?? '', component, key);\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private currentValue: any;\r\n\r\n private setCurrentValue(value: any): void {\r\n this.currentValue = value;\r\n }\r\n\r\n private SendResult(action: DialogAction) {\r\n if (typeof this.options.onResult === 'function') {\r\n const result: DialogResult = {\r\n action: action,\r\n value: this.currentValue\r\n };\r\n this.options.onResult(result);\r\n }\r\n }\r\n}\r\n","<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { SirioDialogService, DialogTypes, DialogSizes } from 'ngx-sirio-lib';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private dialogService: SirioDialogService\r\n )\r\n { }\r\n\r\n openDialog(formSchema: any, options?: FormDialogOptions) {\r\n this.showDialog(formSchema, options);\r\n }\r\n\r\n alert(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions : FormDialogOptions = {\r\n ...options,\r\n type: \"warning\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n info(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n confirm(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'YesNo',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n }; \r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'openDialog',\r\n 'alert',\r\n 'info',\r\n 'confirm'\r\n ]);\r\n }\r\n\r\n private showDialog(formSchema: any, options?: FormDialogOptions) {\r\n \r\n const data = {\r\n formSchema,\r\n options,\r\n dynamicFormType: DynamicFormComponent\r\n };\r\n\r\n this.dialogService\r\n .openDialog(DialogComponent, data);\r\n }\r\n\r\n private createTextSchema(text: string) {\r\n return {\r\n \"forms\": [\r\n {\r\n \"components\": [\r\n {\r\n \"text\": text,\r\n \"type\": \"text\",\r\n \"layout\": {\r\n \"row\": \"Row_14z9myo\",\r\n \"columns\": null\r\n },\r\n \"id\": \"Field_1xibp2r\"\r\n }\r\n ],\r\n \"type\": \"default\",\r\n \"id\": \"Form_0lotm2h\",\r\n \"schemaVersion\": 18\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n\r\nexport interface DialogOptions {\r\n type?: DialogTypes;\r\n size?: DialogSizes;\r\n title?: string;\r\n isDrawer?: boolean; \r\n closeButton?: boolean;\r\n language?: string;\r\n buttons?: DialogButtons; \r\n onResult?: (result: DialogResult) => void;\r\n}\r\n\r\nexport interface FormDialogOptions extends DialogOptions {\r\n value?: any;\r\n injector?: Injector;\r\n showNav?: boolean;\r\n showNavButton?: boolean;\r\n showProgress?: boolean;\r\n showFormTitle?: boolean;\r\n}\r\n\r\nexport interface DialogResult {\r\n action: DialogAction;\r\n value?: any;\r\n}\r\n\r\nexport type DialogAction = 'OK'\r\n | 'Cancel'\r\n | 'Yes'\r\n | 'No'\r\n | 'Confirm'\r\n | 'Close'\r\n | 'Abort'\r\n | 'Retry'\r\n | 'Ignore'\r\n | 'Try'\r\n | 'Continue';\r\n\r\nexport type DialogButtons = 'OK'\r\n | 'OKCancel'\r\n | 'ConfirmCancel'\r\n | 'AbortRetryIgnore'\r\n | 'YesNoCancel'\r\n | 'YesNo'\r\n | 'RetryCancel'\r\n | 'CancelTryContinue';\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class MetadataService {\r\n\r\n constructor() {\r\n \r\n }\r\n\r\n setSchema(schema: any) {\r\n this.schema = schema ?? { forms: [] };\r\n } \r\n\r\n getSchema(): any {\r\n return this.schema;\r\n }\r\n\r\n setForms(forms: any[]) {\r\n this.forms = forms ?? []; \r\n }\r\n\r\n getTemplateByName(name: string): any {\r\n\r\n if (!this.schema || !Array.isArray(this.schema.forms)) {\r\n return undefined;\r\n }\r\n\r\n const templates = this.schema.forms.filter((form: any) => form.isTemplate === true);\r\n\r\n const templateToExpand = templates.find((form: any) => form.name === name);\r\n\r\n if (!templateToExpand) {\r\n return undefined;\r\n }\r\n\r\n const clonedForm = {\r\n ...templateToExpand,\r\n isTemplate: false\r\n };\r\n\r\n const newForms = templates\r\n .filter((form: any) => form.name !== name)\r\n .concat(clonedForm);\r\n\r\n return {\r\n forms: newForms\r\n };\r\n }\r\n\r\n getForms(): any[] {\r\n return this.forms;\r\n }\r\n\r\n getFormByName(name: string): any {\r\n return this.forms.find(form => form.name === name);\r\n }\r\n\r\n setLanguage(language: string) {\r\n this.language = language ?? '';\r\n }\r\n\r\n getLanguage(): string {\r\n return this.language;\r\n }\r\n\r\n private schema: any = { forms: [] };\r\n\r\n private forms: any[] = [];\r\n\r\n private language: string = '';\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { DialogService, DialogOptions, FormDialogOptions } from '../services/dialog.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class FunctionService implements IEvaluatorProvider {\r\n\r\n constructor(private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector) { }\r\n\r\n invokable(func: any): Function {\r\n const className = Object.getPrototypeOf(func)?.constructor?.name;\r\n if (className === 'FunctionWrapper') {\r\n return (...args: any) => func.invoke(args);\r\n }\r\n else {\r\n return () => { };\r\n }\r\n }\r\n\r\n openForm(template: string, options: DialogOptions)\r\n {\r\n const formSchema = this.metadata.getTemplateByName(template);\r\n\r\n if (formSchema) {\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n language: this.metadata.getLanguage(),\r\n injector: this.injector\r\n }\r\n\r\n this.dialog.openDialog(formSchema, formOptions);\r\n }\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\"\r\n ]);\r\n }\r\n}\r\n","import { ElementRef } from \"@angular/core\";\r\nimport { RegisterService } from \"../services/register.service\";\r\n\r\nexport class Control {\r\n constructor(\r\n public readonly name: string,\r\n private readonly metadata: any,\r\n private readonly componentRef: any,\r\n private readonly elementRef: ElementRef) {\r\n }\r\n\r\n getMetadata(): any {\r\n return this.metadata;\r\n }\r\n\r\n getComponentRef(): any {\r\n return this.componentRef;\r\n }\r\n\r\n getElementRef(): ElementRef {\r\n return this.elementRef;\r\n }\r\n}\r\n\r\nexport class ContainerControl extends Control {\r\n constructor(\r\n name: string,\r\n metadata: any,\r\n componentRef: any,\r\n elementRef: ElementRef,\r\n private register: RegisterService | undefined) {\r\n super(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n findControl(predicate: (control: Control) => boolean, firstOnly: boolean): Control[] {\r\n if (this.register) {\r\n return this.register.findControl(predicate, firstOnly, false);\r\n }\r\n else {\r\n return [];\r\n }\r\n } \r\n}\r\n\r\nexport class ItemControl extends ContainerControl {\r\n\r\n constructor(\r\n name: string,\r\n public readonly index: number,\r\n metadata: any,\r\n componentRef: any,\r\n elementRef: ElementRef,\r\n register: RegisterService | undefined) {\r\n super(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { Control, ContainerControl } from '../controls/control';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class RegisterService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: RegisterService | null)\r\n {\r\n }\r\n\r\n private controls: Record<string, Control> = {};\r\n\r\n register(name: string, control: Control) {\r\n this.controls[name] = control;\r\n }\r\n\r\n unregister(name: string) {\r\n delete this.controls[name];\r\n }\r\n\r\n unregisterAll() {\r\n this.controls = { };\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return {\r\n control: (name: string) => this.getControl(name)\r\n };\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n name = this.castString(name);\r\n\r\n if (!name)\r\n return null;\r\n\r\n if (name.startsWith(\"../\"))\r\n return this.resolveParent(name.substring(3));\r\n \r\n const controls = this.findControl(control => control.name === name, true, true);\r\n return (controls.length === 0)\r\n ? null\r\n : controls[0];\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n const ctrl = this.getControl(name);\r\n return ctrl instanceof type ? ctrl : null;\r\n }\r\n\r\n findControl(predicate: (control: Control) => boolean, firstOnly: boolean = false, parent: boolean = false): Control[] {\r\n const controls: Control[] = [];\r\n\r\n for (const control of Object.values(this.controls)) {\r\n if (predicate(control)) {\r\n controls.push(control);\r\n if (firstOnly) {\r\n return controls;\r\n }\r\n }\r\n\r\n if (control instanceof ContainerControl) {\r\n controls.push(...control.findControl(predicate, firstOnly));\r\n if (controls.length > 0 && firstOnly) {\r\n return controls;\r\n }\r\n }\r\n }\r\n\r\n if (parent) {\r\n let currentParent = this.parent;\r\n\r\n while (currentParent) {\r\n for (const control of Object.values(currentParent.controls)) {\r\n if (predicate(control)) {\r\n controls.push(control);\r\n if (firstOnly) {\r\n return controls;\r\n }\r\n }\r\n }\r\n currentParent = currentParent.parent;\r\n }\r\n }\r\n \r\n return controls;\r\n }\r\n\r\n private castString(value: any): string {\r\n return typeof value === 'string' ? value.trim() : \"\";\r\n }\r\n\r\n private resolveParent(name: string) : Control | null {\r\n if (!this.parent) {\r\n return null;\r\n }\r\n else {\r\n return this.parent.getControl(name);\r\n }\r\n }\r\n}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class ScopeService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: ScopeService | null) {\r\n }\r\n\r\n private scope: Record<string, any> | null = null;\r\n\r\n set(scope: Record<string, any> | null) {\r\n this.scope = scope;\r\n }\r\n\r\n get(): Record<string, any> | null {\r\n return this.scope; \r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...this.scope,\r\n parent: () => {\r\n this.parent?.getContext();\r\n }\r\n };\r\n } \r\n}\r\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport { FeelService } from '../services/feel.service';\r\nimport { ScopeService } from '../services/scope.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { ToastService } from '../services/toast.service';\r\nimport { FunctionService } from '../services/function.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { ToProxy } from '../utils/functions';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class ProgrammabilityService implements OnDestroy {\r\n\r\n constructor(private feelService: FeelService\r\n , private weakService: WeakService\r\n , private toastService: ToastService\r\n , private dialogService: DialogService\r\n , private functionService: FunctionService\r\n , @Optional() private register: RegisterService\r\n , @Optional() private scope: ScopeService\r\n ) {\r\n\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n\r\n private readonly predefinedFunctions: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return text != null && text.startsWith(\"=\");\r\n };\r\n\r\n getExpression(text: string | null): string {\r\n if (this.isExpression(text))\r\n return text!.substring(1);\r\n return \"\";\r\n };\r\n\r\n evaluateString(formGroup: FormGroup, value: string | null): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n return value ?? \"\";\r\n }\r\n\r\n evaluateBoolean(formGroup: FormGroup, value: boolean | string | null, options: EvaluateOptions = {}): boolean | null {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue), options) as boolean;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue)) as number;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = { }): any {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options);\r\n }\r\n return null;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null): any {\r\n\r\n let template: string | null = null;\r\n\r\n if (this.isExpression(value)) {\r\n template = this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n return this.evalTemplate(formGroup, template ?? \"\");\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input);\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(value: string | null): void {\r\n if (this.isExpression(value)) {\r\n this.weakService.invalidate(this, this.getExpression(value));\r\n }\r\n }\r\n\r\n private cacheable: boolean = true;\r\n\r\n private evalUnaryTest(formGroup: FormGroup, expression: string, input: any) {\r\n try {\r\n return this.feelService.evalUnaryTest(expression\r\n , this.getContext(formGroup)\r\n , input);\r\n } catch (e) {\r\n console.log(expression, e);\r\n return null;\r\n }\r\n }\r\n\r\n private evalExpression(formGroup: FormGroup, expression: string, options: EvaluateOptions = {}): any {\r\n const evaluate = () => {\r\n try {\r\n return this.feelService.evalExpression(expression\r\n , this.getContext(formGroup, options))\r\n }\r\n catch (e) {\r\n console.log(expression, e);\r\n return null;\r\n }\r\n };\r\n\r\n const cacheable = options.cacheable ?? this.cacheable;\r\n\r\n if (cacheable) {\r\n const watchKey = `:watch(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchExpression(formGroup, expression\r\n , () => this.weakService.invalidate(this, expression));\r\n return true;\r\n });\r\n\r\n return this.weakService.call(this, expression, evaluate);\r\n }\r\n else {\r\n return evaluate();\r\n }\r\n }\r\n\r\n private evalTemplate(formGroup: FormGroup, expression: string): any {\r\n try {\r\n return this.feelService.evalTemplate(expression\r\n , this.getContext(formGroup));\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n private getPredefinedFunctions(): Record<string, any> {\r\n\r\n const providers: IEvaluatorProvider[] = [\r\n this.dialogService,\r\n this.toastService,\r\n this.functionService,\r\n this.register \r\n ];\r\n\r\n return providers.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private getParentContext(formGroup: FormGroup | null): Record<string, any> | null {\r\n if (formGroup === null) { \r\n return null;\r\n }\r\n\r\n const parent = this.getParent(formGroup);\r\n\r\n if (!parent) {\r\n return null;\r\n }\r\n\r\n return {\r\n ...parent.value,\r\n formGroup: () => parent,\r\n parent: () => this.getParentContext(parent)\r\n }; \r\n }\r\n\r\n private getParent(formGroup: FormGroup) : FormGroup | null {\r\n let parent = formGroup.parent;\r\n\r\n while (parent instanceof FormArray) {\r\n parent = parent?.parent;\r\n }\r\n\r\n return parent as FormGroup | null;\r\n }\r\n\r\n private getContext(control: AbstractControl, options: EvaluateOptions = {}): Record<string, any> {\r\n\r\n const formGroup = control as FormGroup | null;\r\n\r\n const baseContext = formGroup?.value ?? { };\r\n\r\n let context = {\r\n ...baseContext,\r\n parent: () => this.getParentContext(formGroup),\r\n formGroup: () => ToProxy(formGroup),\r\n _: this.scope?.getContext(),\r\n fn: this.predefinedFunctions\r\n }\r\n\r\n if (options.extendContext) {\r\n const extended = options.extendContext();\r\n if (extended) {\r\n context = {\r\n ...context,\r\n ...extended\r\n }\r\n }\r\n }\r\n\r\n return context;\r\n }\r\n\r\n private watchExpression(formGroup: FormGroup, expression: string, callback: () => void): void {\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getDependencies(expression, context);\r\n this.watchDependencies(formGroup, dependencies, callback);\r\n };\r\n\r\n private watchDependencies(formGroup: FormGroup, dependencies: (string | string[])[], callback: () => void): void {\r\n const parentName: string = \"parent\";\r\n\r\n const subscribe = (control: AbstractControl) => {\r\n control.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n });\r\n });\r\n }\r\n\r\n for (const dependence of dependencies) {\r\n if (Array.isArray(dependence)) {\r\n let targetForm: AbstractControl | null = formGroup;\r\n let controlPath = dependence;\r\n\r\n while (controlPath.length > 0 && controlPath[0] === parentName) {\r\n if (!targetForm.parent)\r\n break;\r\n targetForm = targetForm.parent;\r\n controlPath = controlPath.slice(1);\r\n }\r\n\r\n if (controlPath.length > 0 && targetForm) {\r\n const control = targetForm.get(controlPath);\r\n if (control) {\r\n subscribe(control);\r\n }\r\n }\r\n } else {\r\n const control = formGroup.get(dependence);\r\n if (control) {\r\n subscribe(control);\r\n }\r\n }\r\n } \r\n }\r\n}\r\n\r\nexport interface IEvaluatorProvider {\r\n getContext(): Record<string, any>;\r\n}\r\n\r\nexport interface EvaluateOptions {\r\n cacheable?: boolean;\r\n extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n","import { AbstractControl, FormGroup, FormArray, FormControl } from '@angular/forms';\r\n\r\nfunction createControlFromValue(value: any): AbstractControl {\r\n if (value === null || typeof value !== 'object') {\r\n return new FormControl(value);\r\n }\r\n if (Array.isArray(value)) {\r\n return new FormArray(createControlFromArray(value));\r\n }\r\n return new FormGroup({});\r\n}\r\n\r\nfunction createControlFromArray(array: any[]): AbstractControl[] {\r\n return array.map(item => createControlFromValue(item));\r\n}\r\n\r\nexport function patchForm(\r\n control: AbstractControl,\r\n value: any,\r\n options?: {\r\n emitEvent?: boolean;\r\n emitError?: boolean;\r\n emitWarn?: boolean;\r\n validateType?: boolean;\r\n fallbackValue?: any;\r\n strict: boolean;\r\n }\r\n): void {\r\n\r\n const defaultOptions = {\r\n emitEvent: true,\r\n validateType: false,\r\n fallbackValue: null,\r\n strict: true\r\n };\r\n\r\n const warn = (message: string) => {\r\n if (options?.emitWarn)\r\n console.warn(`[patchForm] ${message}`)\r\n };\r\n\r\n const error = (message: string) => {\r\n if (options?.emitError)\r\n throw new Error(message);\r\n };\r\n\r\n const { emitEvent, validateType, fallbackValue, strict }\r\n = { ...defaultOptions, ...options };\r\n\r\n if (control instanceof FormControl) {\r\n if (validateType && typeof value !== typeof control.value) {\r\n warn(`Value type mismatch: expected ${typeof control.value}, but received ${typeof value}`);\r\n\r\n if (fallbackValue !== null) {\r\n control.patchValue(fallbackValue, { emitEvent });\r\n return;\r\n }\r\n error('Invalid value type and no fallback value provided.');\r\n return;\r\n }\r\n control.patchValue(value, { emitEvent });\r\n }\r\n else if (control instanceof FormGroup) {\r\n Object.keys(value || {}).forEach((key) => {\r\n if (control.controls[key]) {\r\n patchForm(control.controls[key], value[key], options);\r\n }\r\n else if (!strict) {\r\n const newControl = createControlFromValue(value[key]);\r\n control.addControl(key, newControl);\r\n patchForm(newControl, value[key], options);\r\n }\r\n else {\r\n warn(`Key \"${key}\" not found in the FormGroup.`);\r\n }\r\n });\r\n }\r\n else if (control instanceof FormArray) {\r\n const valueArray = Array.isArray(value) ? value : [];\r\n while (control.length < valueArray.length) {\r\n const newItemValue = valueArray[control.length];\r\n const newControl = createControlFromValue(newItemValue);\r\n control.push(newControl);\r\n }\r\n while (control.length > valueArray.length) {\r\n control.removeAt(control.length - 1);\r\n }\r\n valueArray.forEach((item: any, index: number) => {\r\n patchForm(control.at(index), item, options);\r\n });\r\n }\r\n else {\r\n error('Unsupported AbstractControl type.');\r\n }\r\n}\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n disabled: string | boolean | null;\r\n path: string | null;\r\n isTemplate: boolean | null;\r\n i18n: any,\r\n components: Component[];\r\n}\r\n\r\ninterface Component {\r\n id: string;\r\n layout: { columns: number | null, row: string };\r\n components?: Component[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface RowComponent {\r\n id: string;\r\n layout: { columns: number | null, row: string };\r\n rows?: RowGroup[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface RowGroup {\r\n row: string;\r\n components: RowComponent[];\r\n}\r\n\r\ninterface GroupedForm {\r\n id: string;\r\n title: string;\r\n isTemplate: boolean | null;\r\n rows: RowGroup[];\r\n [key: string]: any;\r\n}\r\n\r\nexport function groupByRow(forms: Form[]): GroupedForm[] {\r\n return forms.map(form => ({\r\n id: form.id,\r\n type: form.type,\r\n name: form.name,\r\n title: form.title,\r\n disabled: form.disabled,\r\n path: form.path,\r\n isTemplate: form.isTemplate,\r\n i18n: form.i18n,\r\n rows: groupRowsRecursively(form.components)\r\n })); \r\n}\r\n\r\nfunction groupRowsRecursively(components: Component[]): RowGroup[] {\r\n const groupedMap = new Map<string, RowComponent[]>();\r\n\r\n function processComponent(component: Component) {\r\n const row = component.layout.row;\r\n\r\n if (!groupedMap.has(row)) {\r\n groupedMap.set(row, []);\r\n }\r\n\r\n const { components, ...props } = component;\r\n\r\n groupedMap.get(row)!.push({\r\n ...props,\r\n rows: components ? groupRowsRecursively(components) : undefined\r\n });\r\n }\r\n\r\n components.forEach(component => processComponent(component));\r\n\r\n return Array.from(groupedMap.entries()).map(([row, components]) => ({\r\n row,\r\n components\r\n }));\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface CommandEvent {\r\n name: string;\r\n component: any,\r\n formGroup: FormGroup,\r\n event: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventService {\r\n\r\n private commandSubject = new Subject<CommandEvent>();\r\n\r\n onCommand = this.commandSubject.asObservable();\r\n\r\n emitCommand(data: CommandEvent) {\r\n this.commandSubject.next(data);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../services/programmability.service';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nimport { Texts } from '../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './cell-templates/objectUrl.component.html',\r\n standalone: true\r\n})\r\nexport class ObjectURLRendererComponent implements ICellRendererAngularComp {\r\n params!: ICellRendererParams;\r\n\r\n Texts = Texts;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n onClick(event: Event) {\r\n const fileURL = URL.createObjectURL(this.params.data);\r\n window.open(fileURL, '_blank');\r\n setTimeout(() => {\r\n URL.revokeObjectURL(fileURL);\r\n }, 1000);\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n@Component({\r\n templateUrl: './cell-templates/delete.component.html',\r\n standalone: true\r\n})\r\nexport class DeleteRowCellRenderer implements ICellRendererAngularComp {\r\n params: any;\r\n\r\n Texts = Texts;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n }\r\n\r\n onClick(event: Event) {\r\n\r\n if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {\r\n this.params.data.remove();\r\n }\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n@Component({\r\n templateUrl: './cell-templates/actions.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, SirioButtonComponent\r\n ]\r\n})\r\nexport class ActionsCellRenderer implements ICellRendererAngularComp {\r\n\r\n constructor(private programmability: ProgrammabilityService) { }\r\n\r\n params: any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n\r\n const options: EvaluateOptions = {\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n data: this.getData()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.getFormGroup(), value);\r\n }\r\n\r\n clickButton(action: any, event: any) {\r\n if (action.click) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n action: action,\r\n data: this.getData()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluate(this.getFormGroup(), action.click, options);\r\n } \r\n }\r\n\r\n private getData(): any {\r\n return this.params.data;\r\n\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup as FormGroup;\r\n }\r\n}\r\n\r\n","<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n","<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n","<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n","export const getLabelSymbol = Symbol('getLabel');\r\n","import { getLabelSymbol } from './symbols';\r\n\r\nexport type LabeledMap<TKey extends string | number, TValue> =\r\n Record<TKey, TValue> & {\r\n [getLabelSymbol]?: (value: TKey) => TValue;\r\n };\r\n\r\nexport function isLabeledRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue,\r\n getLabelSymbol: symbol\r\n): obj is Record<TKey, TValue> & { [key: symbol]: (key: TKey) => TValue } {\r\n if (!isRecord(obj, isKey, isValue)) {\r\n return false;\r\n }\r\n const getLabel = (obj as { [key: symbol]: unknown })[getLabelSymbol];\r\n return (getLabel !== undefined && typeof getLabel === 'function');\r\n}\r\n\r\nexport function isRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue\r\n): obj is Record<TKey, TValue> {\r\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n return false;\r\n }\r\n return Object.entries(obj).every(([key, val]) => {\r\n return isKey(key) && isValue(val);\r\n });\r\n}\r\n\r\nexport function isStringKey(key: any): key is string | number {\r\n return typeof key === 'string';\r\n}\r\n\r\nexport function isNumericKey(key: any): key is string | number {\r\n return typeof key === 'string' && !isNaN(Number(key));\r\n}\r\n\r\nexport function isBooleanKey(key: any): key is string | number {\r\n return key === 'true' || key === 'false';\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { SirioInputComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { isRecord } from '../common/record';\r\nimport { Texts } from '../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './cell-templates/setfilter.component.html',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SirioInputComponent\r\n , SirioCheckboxComponent, SirioCheckboxGroupComponent\r\n , SirioButtonComponent], \r\n})\r\nexport class SetFilterComponent implements IFilterAngularComp {\r\n private params!: IFilterParams;\r\n private fieldName!: string;\r\n\r\n Texts = Texts;\r\n\r\n selectAll: boolean = true;\r\n searchText: string = '';\r\n\r\n options: { value: any; label: string; selected: boolean }[] = [];\r\n filteredOptions: typeof this.options = [];\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.fieldName = params.colDef.field!;\r\n\r\n const map = params.colDef.filterParams?.map;\r\n\r\n const result = isRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string'\r\n );\r\n\r\n if (result) {\r\n this.options = Object.entries(map).map(([key, label]) => ({\r\n value: this.parseKey(key),\r\n label: label,\r\n selected: true\r\n }));\r\n }\r\n else {\r\n this.options = [];\r\n }\r\n \r\n this.filteredOptions = [...this.options];\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.options.some(o => !o.selected);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const value = this.resolvePath(params.data, this.fieldName);\r\n return this.options.some(o => o.selected && o.value === value);\r\n }\r\n\r\n getModel() {\r\n const selectedValues = this.options\r\n .filter(o => o.selected)\r\n .map(o => o.value);\r\n\r\n if (selectedValues.length === this.options.length) { \r\n return null;\r\n }\r\n\r\n if (selectedValues.length === 0) {\r\n return {\r\n filterType: 'text',\r\n type: 'excludeAll'\r\n }\r\n }\r\n\r\n const filters = selectedValues.map(value => ({\r\n filterType: 'number',\r\n type: 'equals',\r\n filter: value\r\n }));\r\n\r\n if (filters.length === 1)\r\n return filters[0];\r\n\r\n return {\r\n filterType: 'number',\r\n operator: 'OR',\r\n conditions: filters\r\n }\r\n }\r\n\r\n setModel(model: any): void {\r\n const selected = model?.values ?? this.options.map(o => o.value);\r\n this.options.forEach(o => o.selected = selected.includes(o.value));\r\n this.updateFilteredOptions();\r\n }\r\n\r\n onSelectionChange(): void {\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onSearchChange(): void {\r\n this.updateFilteredOptions();\r\n }\r\n\r\n onSelectAllChange(): void { \r\n this.setAll(this.selectAll);\r\n }\r\n\r\n private parseKey(key: string): boolean | number | string {\r\n if (key === 'true') return true;\r\n if (key === 'false') return false;\r\n const num = Number(key);\r\n return isNaN(num) ? key : num;\r\n }\r\n\r\n private setAll(select: boolean): void {\r\n this.options.forEach(o => o.selected = select);\r\n this.updateFilteredOptions();\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n private updateFilteredOptions(): void {\r\n const search = this.searchText.toLowerCase();\r\n this.filteredOptions = this.options.filter(o =>\r\n o.label.toLowerCase().includes(search)\r\n );\r\n }\r\n\r\n private resolvePath(obj: any, path: string): any {\r\n return path.split('.').reduce((acc, part) => acc?.[part], obj);\r\n }\r\n}\r\n","<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n","function getCandidate(element: HTMLElement): HTMLElement[] {\r\n return Array.from(element.querySelectorAll<HTMLElement>(\r\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), ' +\r\n 'textarea:not([disabled]), button:not([disabled]), iframe, object, embed, ' +\r\n '[tabindex]:not([tabindex=\"-1\"]), [contenteditable]'\r\n ));\r\n}\r\n\r\nfunction isVisible(element: HTMLElement): boolean {\r\n let el: HTMLElement | null = element;\r\n while (el) {\r\n const style = window.getComputedStyle(el);\r\n if (style.display === 'none' || style.visibility === 'hidden') return false;\r\n el = el.parentElement;\r\n }\r\n return true;\r\n}\r\n\r\nfunction isFocusable(element: HTMLElement): boolean {\r\n const style = window.getComputedStyle(element);\r\n return element.tabIndex >= 0 &&\r\n style.visibility !== 'hidden' &&\r\n style.display !== 'none' &&\r\n !element.hasAttribute('disabled') &&\r\n isVisible(element);\r\n}\r\n\r\nexport function getFocusables(el: HTMLElement, firstOnly = false): HTMLElement[] {\r\n const candidates = getCandidate(el);\r\n const result: HTMLElement[] = [];\r\n for (const focusableEl of candidates) { \r\n if (isFocusable(focusableEl)) {\r\n result.push(focusableEl);\r\n if (firstOnly) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function setFocus(el: HTMLElement) {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return false;\r\n }\r\n focusables[0].focus();\r\n return true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n//import { FeelService } from '../services/feel.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatterService {\r\n\r\n //constructor(private feelService: FeelService) { }\r\n\r\n constructor() { }\r\n\r\n formatCurrency(value: any, symbol: string | null = null): string {\r\n if (isNaN(value) || value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n const numberValue = parseFloat(value);\r\n if (isNaN(numberValue)) {\r\n return value;\r\n }\r\n\r\n const result = numberValue.toFixed(2).replace(\".\", \",\").replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\r\n\r\n if (symbol) {\r\n return symbol + ' ' + result;\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n\r\n formatDate(value: any): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n formatDateTime(value: any): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const hasTime = typeof value === 'string' && value.includes('T');\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n if (!hasTime) {\r\n return `${day}/${month}/${year} 00:00:00`;\r\n }\r\n else {\r\n const hours = String(date.getHours()).padStart(2, '0');\r\n const minutes = String(date.getMinutes()).padStart(2, '0');\r\n const seconds = String(date.getSeconds()).padStart(2, '0');\r\n return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;\r\n }\r\n }\r\n\r\n formatInteger(value: any): string {\r\n if (isNaN(value) || value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n const numberValue = parseInt(value, 10);\r\n if (isNaN(numberValue)) {\r\n return value;\r\n }\r\n\r\n return numberValue.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\r\n }\r\n\r\n formatExpression(value: any, expression: string): string {\r\n return value as string;\r\n //const result = this.feelService.evalExpression(expression, { value: value }) as string;\r\n //return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n Module, PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule\r\n , LocaleModule, CellStyleModule, ValidationModule\r\n , RowSelectionModule, RowSelectionOptions \r\n , TextFilterModule, NumberFilterModule, DateFilterModule\r\n , ColDef, themeQuartz, iconSetAlpine, GridOptions, DataTypeDefinition\r\n , ClientSideRowModelApiModule\r\n , GridSizeChangedEvent, ColumnAutoSizeModule, ColumnApiModule\r\n , SuppressKeyboardEventParams\r\n} from 'ag-grid-community';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ObjectURLRendererComponent, DeleteRowCellRenderer, ActionsCellRenderer } from '../utils/gridCells';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { SetFilterComponent } from '../utils/setFilter';\r\nimport { getFocusables } from '../utils/focusable';\r\nimport { isRecord, isLabeledRecord, isNumericKey } from '../common/record';\r\nimport { getLabelSymbol } from '../common/symbols';\r\nimport {\r\n AG_GRID_LOCALE_IT,\r\n AG_GRID_LOCALE_EN,\r\n AG_GRID_LOCALE_DE,\r\n AG_GRID_LOCALE_FR,\r\n AG_GRID_LOCALE_ES,\r\n AG_GRID_LOCALE_PT \r\n} from '@ag-grid-community/locale';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\ntype MapType = Record<string | number, string> | null;\r\n\r\n@Injectable()\r\nexport class GridService {\r\n\r\n constructor(private formatter: FormatterService,\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n getModules(): Module[] {\r\n return [\r\n ClientSideRowModelModule\r\n , InfiniteRowModelModule\r\n , PaginationModule\r\n , LocaleModule\r\n , CellStyleModule\r\n , ClientSideRowModelApiModule\r\n , TextFilterModule\r\n , NumberFilterModule\r\n , DateFilterModule\r\n , ColumnAutoSizeModule\r\n , ColumnApiModule\r\n , RowSelectionModule\r\n , ValidationModule\r\n ];\r\n };\r\n\r\n getOptions(component: any, formGroup: FormGroup, language: string): GridOptions {\r\n const columnDefs = this.getColumns(component, formGroup, language);\r\n const selection = this.getRowSelection(component, formGroup);\r\n const pagination = this.getPaginable(component);\r\n const pageSize = this.getPageSize(component);\r\n const texts = this.getTexts(language);\r\n const theme = this.getTheme();\r\n return {\r\n defaultColDef: {\r\n floatingFilter: (component.floatingFilter === true),\r\n headerClass: (component.floatingFilter === true)\r\n ? 'show-filter' : 'hide-filter'\r\n },\r\n selectionColumnDef: {\r\n pinned: 'left'\r\n },\r\n dataTypeDefinitions: this.getDataTypeDefinitions(),\r\n columnDefs: columnDefs,\r\n rowSelection: selection,\r\n pagination: pagination,\r\n paginationPageSize: pageSize,\r\n cacheBlockSize: pageSize,\r\n paginationPageSizeSelector: [5, 10, 20, 50],\r\n localeText: texts,\r\n enableCellTextSelection: true,\r\n theme: theme, \r\n onGridSizeChanged: (params: GridSizeChangedEvent) => {\r\n params.api.autoSizeColumns([\"actions\"]);\r\n },\r\n };\r\n }\r\n\r\n onSelectionChanged(component: any, formGroup: FormGroup, event: any) {\r\n if (component.selectionChanged) {\r\n return this.programmability.evaluate(formGroup, component.selectionChanged, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n selectedRows: event.api.getSelectedRows()\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n private locale(component: any, key: string, language: string): string {\r\n return localize(language, component, key);\r\n }\r\n\r\n private getColumns(component: any, formGroup: FormGroup, language: string): ColDef[] {\r\n if (Array.isArray(component.columns)) {\r\n const columns = component.columns.map((column: any) => {\r\n const colDef: ColDef = {\r\n field: column.key,\r\n headerName: this.locale(column, 'label', language),\r\n }\r\n\r\n this.setCellDataType(column, colDef);\r\n\r\n const map = this.getMap(column, colDef, formGroup);\r\n\r\n this.setCellRenderer(column, colDef, map);\r\n this.setResizable(column, colDef);\r\n this.setSortable(column, colDef);\r\n this.setFilter(column, colDef, map);\r\n this.setFilterParams(column, colDef, map);\r\n this.setSuppressMovable(column, colDef);\r\n this.setFlex(column, colDef);\r\n this.setAlign(column, colDef);\r\n this.setPinned(column, colDef);\r\n this.setWidth(column, colDef);\r\n this.setValueFormatter(column, colDef, map); \r\n return colDef;\r\n });\r\n\r\n\r\n if (Array.isArray(component.actions) && component.actions.length > 0) {\r\n columns.push({\r\n colId: 'actions',\r\n headerName: this.locale(Texts, 'Actions', language),\r\n resizable: false,\r\n sortable: false,\r\n filter: false,\r\n cellDataType: false,\r\n pinned: \"right\",\r\n cellRendererParams: {\r\n component: component,\r\n formGroup: formGroup\r\n },\r\n cellRenderer: ActionsCellRenderer,\r\n suppressKeyboardEvent: this.navigateInsideCell.bind(this)\r\n });\r\n }\r\n\r\n return columns;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private setCellDataType(column: any, colDef: ColDef) {\r\n if (typeof column.dataType === \"string\"\r\n && column.dataType.trim() !== \"\"\r\n && column.dataType !== \"auto\") {\r\n colDef.cellDataType = column.dataType;\r\n }\r\n }\r\n\r\n private setCellRenderer(column: any, colDef: ColDef, map: MapType) {\r\n if (column.format === \"objectURL\") {\r\n colDef.cellRenderer = ObjectURLRendererComponent;\r\n }\r\n\r\n if (column.format === \"deleteRow\") {\r\n colDef.cellRenderer = DeleteRowCellRenderer;\r\n }\r\n\r\n if (colDef.cellDataType === \"boolean\" && map) {\r\n colDef.cellRenderer = (params: any) => {\r\n return this.formatMap(params.value, map); \r\n }\r\n }\r\n }\r\n\r\n private setResizable(column: any, colDef: ColDef ) {\r\n colDef.resizable = (column.resize === true);\r\n }\r\n\r\n private setSortable(column: any, colDef: ColDef) {\r\n colDef.sortable = (column.sort === true);\r\n }\r\n\r\n private setFilter(column: any, colDef: ColDef, map: MapType) {\r\n if (column.filter === true) {\r\n colDef.filter = true;\r\n if (map) {\r\n colDef.filter = SetFilterComponent;\r\n }\r\n }\r\n }\r\n\r\n private setFilterParams(column: any, colDef: ColDef, map: MapType) {\r\n\r\n const filterParams: any = {};\r\n\r\n if (column.dataType === 'uuid') {\r\n this.setUuidFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'integer') {\r\n this.setIntegerFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'date') {\r\n this.setDateFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'boolean') {\r\n this.setBooleanFilterParams(filterParams);\r\n }\r\n \r\n if (map) {\r\n filterParams.map = map;\r\n }\r\n\r\n colDef.filterParams = filterParams;\r\n }\r\n\r\n private setUuidFilterParams(filterParams: any) {\r\n filterParams.filterOptions = ['equals', 'notEqual'];\r\n }\r\n\r\n private setIntegerFilterParams(filterParams: any) {\r\n filterParams.allowedCharPattern = '\\\\d';\r\n }\r\n\r\n private setDateFilterParams(filterParams: any) {\r\n filterParams.comparator = (filterLocalDateAtMidnight: Date, cellValue: string) => {\r\n if (!cellValue) return -1;\r\n const cellDate = new Date(cellValue);\r\n if (isNaN(cellDate.getTime())) return -1;\r\n\r\n const cellDateNoTime = new Date(cellDate.getFullYear(), cellDate.getMonth(), cellDate.getDate());\r\n\r\n if (cellDateNoTime < filterLocalDateAtMidnight) return -1;\r\n if (cellDateNoTime > filterLocalDateAtMidnight) return 1;\r\n return 0;\r\n }\r\n }\r\n\r\n private setBooleanFilterParams(filterParams: any) {\r\n filterParams.filterOptions = [\r\n {\r\n displayKey: 'includeAll',\r\n displayName: Texts.ChooseOne,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => true\r\n },\r\n {\r\n displayKey: 'true',\r\n displayName: Texts.True,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === true\r\n },\r\n {\r\n displayKey: 'false',\r\n displayName: Texts.False,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === false\r\n },\r\n {\r\n displayKey: 'blank',\r\n displayName: Texts.Blank,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === null\r\n },\r\n {\r\n displayKey: 'notBlank',\r\n displayName: Texts.NotBlank,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value !== null\r\n },\r\n ];\r\n filterParams.suppressAndOrCondition = true;\r\n }\r\n\r\n private setSuppressMovable(column: any, colDef: ColDef) {\r\n if (!(column.move === true)) { \r\n colDef.suppressMovable = true;\r\n }\r\n }\r\n\r\n private setFlex(column: any, colDef: ColDef) {\r\n if (column.flex === true) { \r\n colDef.flex = 1;\r\n }\r\n }\r\n\r\n private setAlign(column: any, colDef: ColDef) {\r\n if (column.align === \"left\") {\r\n colDef.cellStyle = { textAlign: 'left' };\r\n }\r\n else if (column.align === \"center\") {\r\n colDef.cellStyle = { textAlign: 'center' };\r\n }\r\n else if (column.align === \"right\") { \r\n colDef.cellStyle = { textAlign: 'right' };\r\n }\r\n }\r\n\r\n private setPinned(column: any, colDef: ColDef) {\r\n if (typeof column.pinned === \"string\") { \r\n colDef.pinned = column.pinned;\r\n }\r\n }\r\n\r\n private setWidth(column: any, colDef: ColDef) {\r\n if (typeof column.width === \"number\") { \r\n colDef.width = column.width;\r\n }\r\n\r\n if (typeof column.minWidth === \"number\") { \r\n colDef.minWidth = column.minWidth;\r\n }\r\n\r\n if (typeof column.maxWidth === \"number\") { \r\n colDef.maxWidth = column.maxWidth;\r\n }\r\n }\r\n\r\n private setValueFormatter(column: any, colDef: ColDef, map: MapType) {\r\n if (map) {\r\n colDef.valueFormatter = (params) => this.formatMap(params.value, map); \r\n }\r\n }\r\n\r\n private getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n if (component.selection === \"singleRow\") {\r\n return { mode: \"singleRow\" };\r\n }\r\n else if (component.selection === \"multiRow\") {\r\n const options: RowSelectionOptions = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n\r\n if (component.isSelectable) {\r\n return {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n else {\r\n return options;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private onRowSelectable(component: any, formGroup: FormGroup, data: any) : boolean {\r\n if (!data)\r\n return false;\r\n\r\n const result = this.programmability.evaluate(formGroup, component.isSelectable, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n data: data\r\n }\r\n })\r\n });\r\n\r\n return result === true; \r\n }\r\n\r\n private getPaginable(component: any): boolean {\r\n return (typeof component.rowCount === 'number' && component.rowCount > 0);\r\n }\r\n\r\n private getPageSize(component: any) {\r\n if (typeof component.rowCount === 'number') {\r\n return component.rowCount;\r\n }\r\n }\r\n\r\n private getTexts(language: string): any {\r\n if (language === 'it') {\r\n return AG_GRID_LOCALE_IT;\r\n }\r\n else if (language === 'en') {\r\n return AG_GRID_LOCALE_EN;\r\n }\r\n else if (language === 'de') {\r\n return AG_GRID_LOCALE_DE;\r\n }\r\n else if (language === 'fr') {\r\n return AG_GRID_LOCALE_FR;\r\n }\r\n else if (language === 'es') {\r\n return AG_GRID_LOCALE_ES;\r\n }\r\n else if (language === 'pt') {\r\n return AG_GRID_LOCALE_PT;\r\n }\r\n else if (language === '') {\r\n return AG_GRID_LOCALE_IT; // neutral\r\n }\r\n else {\r\n return AG_GRID_LOCALE_EN; // fallback\r\n }\r\n }\r\n\r\n private getTheme() {\r\n return themeQuartz\r\n .withPart(iconSetAlpine)\r\n .withParams({\r\n backgroundColor: \"#FAFAFA\",\r\n borderColor: \"#D9E4F7\",\r\n browserColorScheme: \"light\",\r\n cellTextColor: \"#00121A\",\r\n columnBorder: true,\r\n fontFamily: \"inherit\",\r\n fontSize: 16,\r\n headerBackgroundColor: \"#002460\",\r\n headerColumnBorder: true,\r\n headerColumnResizeHandleColor: \"#F2F6FC\",\r\n headerColumnResizeHandleWidth: 2,\r\n headerFontSize: 16,\r\n headerFontWeight: 600,\r\n headerRowBorder: false,\r\n headerTextColor: \"#F2F6FC\",\r\n rowBorder: true\r\n });\r\n }\r\n\r\n private getDataTypeDefinitions(): { [cellDataType: string]: DataTypeDefinition<any>; } {\r\n return {\r\n uuid: {\r\n baseDataType: 'text',\r\n extendsDataType: 'text'\r\n },\r\n date: {\r\n baseDataType: 'dateString',\r\n extendsDataType: 'dateString',\r\n dateParser: (value: string | undefined) => {\r\n return value ? new Date(value) : undefined;\r\n },\r\n valueFormatter: params => {\r\n return this.formatter.formatDate(params.value);\r\n }\r\n },\r\n dateTime: {\r\n baseDataType: 'dateString',\r\n extendsDataType: 'dateString',\r\n dateParser: (value: string | undefined) => {\r\n return value ? new Date(value) : undefined;\r\n },\r\n valueFormatter: params => {\r\n return this.formatter.formatDateTime(params.value);\r\n }\r\n },\r\n currency: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatCurrency(params.value)\r\n },\r\n integer: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatInteger(params.value)\r\n },\r\n percentage: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : `${Math.round(params.value * 100)}%`,\r\n },\r\n flags: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number'\r\n } \r\n };\r\n }\r\n\r\n private getMap(column: any, colDef: ColDef, formGroup: FormGroup): MapType {\r\n\r\n const allowed = (colDef.cellDataType === \"boolean\"\r\n || colDef.cellDataType === \"text\"\r\n || colDef.cellDataType === \"number\"\r\n || colDef.cellDataType === \"flags\");\r\n\r\n if (allowed && column.map) {\r\n const map = this.programmability.evaluate(formGroup, column.mapValues);\r\n\r\n const valid = isRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string'\r\n );\r\n\r\n if (!valid)\r\n return null;\r\n\r\n if (colDef.cellDataType === \"flags\") {\r\n (map as any)[getLabelSymbol] = (key: any) => this.formatFlags(key, map);\r\n }\r\n\r\n return map;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private formatMap(value: any, map: MapType)\r\n {\r\n if (value == null) {\r\n return '';\r\n }\r\n\r\n if (map) {\r\n var result = map[value];\r\n\r\n if (result === undefined) {\r\n const labeled = isLabeledRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string',\r\n getLabelSymbol\r\n );\r\n\r\n if (labeled) {\r\n result = map[getLabelSymbol](value);\r\n }\r\n }\r\n \r\n return result ?? value.toString();\r\n }\r\n else {\r\n return value.toString();\r\n }\r\n }\r\n\r\n private formatFlags(value: any, map: MapType) {\r\n if (typeof value === 'number' &&\r\n isRecord(map, isNumericKey, val => typeof val === 'string')\r\n ) {\r\n if (value == 0) {\r\n return map[0] ?? \"0\";\r\n }\r\n\r\n const availableFlags = Object.keys(map)\r\n .map(Number)\r\n .filter(flag => flag !== 0);\r\n\r\n const flags = availableFlags.filter(flag => (value & flag) === flag);\r\n\r\n const sumFlags = flags.reduce((sum, f) => sum | f, 0);\r\n\r\n if ((value & sumFlags) !== value) {\r\n return null;\r\n }\r\n\r\n return flags\r\n .map(flag => map[flag])\r\n .filter((label): label is string => !!label)\r\n .join(', ');\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private navigateInsideCell({ event }: SuppressKeyboardEventParams<any>) {\r\n const GRID_CELL_CLASSNAME = \"ag-cell\";\r\n const { key, shiftKey } = event;\r\n const path = this.getEventPath(event);\r\n const isTabForward = key === \"Tab\" && shiftKey === false;\r\n const isTabBackward = key === \"Tab\" && shiftKey === true;\r\n let suppressEvent = false;\r\n // Handle cell children tabbing\r\n if (isTabForward || isTabBackward) {\r\n const eGridCell = path.find((el) => {\r\n if (el.classList === undefined) return false;\r\n return el.classList.contains(GRID_CELL_CLASSNAME);\r\n });\r\n if (!eGridCell) {\r\n return suppressEvent;\r\n }\r\n const focusableChildrenElements = getFocusables(eGridCell);\r\n const lastCellChildEl =\r\n focusableChildrenElements[focusableChildrenElements.length - 1];\r\n const firstCellChildEl = focusableChildrenElements[0];\r\n // Suppress keyboard event if tabbing forward within the cell and the current focused element is not the last child\r\n if (focusableChildrenElements.length === 0) {\r\n return false;\r\n }\r\n const currentIndex = focusableChildrenElements.indexOf(\r\n document.activeElement as HTMLElement,\r\n );\r\n if (isTabForward) {\r\n const isLastChildFocused =\r\n lastCellChildEl && document.activeElement === lastCellChildEl;\r\n if (!isLastChildFocused) {\r\n suppressEvent = true;\r\n if (currentIndex !== -1 || document.activeElement === eGridCell) {\r\n event.preventDefault();\r\n focusableChildrenElements[currentIndex + 1].focus();\r\n }\r\n }\r\n }\r\n // Suppress keyboard event if tabbing backwards within the cell, and the current focused element is not the first child\r\n else {\r\n const cellHasFocusedChildren =\r\n eGridCell.contains(document.activeElement) &&\r\n eGridCell !== document.activeElement;\r\n // Manually set focus to the last child element if cell doesn't have focused children\r\n if (!cellHasFocusedChildren) {\r\n lastCellChildEl.focus();\r\n // Cancel keyboard press, so that it doesn't focus on the last child and then pass through the keyboard press to\r\n // move to the 2nd last child element\r\n event.preventDefault();\r\n }\r\n const isFirstChildFocused =\r\n firstCellChildEl && document.activeElement === firstCellChildEl;\r\n if (!isFirstChildFocused) {\r\n suppressEvent = true;\r\n if (currentIndex !== -1 || document.activeElement === eGridCell) {\r\n event.preventDefault();\r\n focusableChildrenElements[currentIndex - 1].focus();\r\n }\r\n }\r\n }\r\n }\r\n return suppressEvent;\r\n }\r\n\r\n private getEventPath(event: Event): HTMLElement[] {\r\n const path: HTMLElement[] = [];\r\n let currentTarget: any = event.target;\r\n while (currentTarget) {\r\n path.push(currentTarget);\r\n currentTarget = currentTarget.parentElement;\r\n }\r\n return path;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport {\r\n AgChartOptions, AgBaseSeriesOptions,\r\n AgBarSeriesOptions, AgBarSeriesOptionsNames, \r\n AgLineSeriesOptions, AgLineSeriesOptionsNames,\r\n AgAreaSeriesOptions, AgAreaSeriesOptionsNames,\r\n AgScatterSeriesOptions, AgScatterSeriesOptionsNames,\r\n AgBubbleSeriesOptions, AgBubbleSeriesOptionsNames,\r\n AgPieSeriesOptions, AgPieSeriesOptionsNames,\r\n AgDonutSeriesOptions, AgDonutSeriesOptionsNames\r\n} from 'ag-charts-community';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Injectable()\r\nexport class ChartService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n getOptions(component: any, formGroup: FormGroup, language: string): AgChartOptions {\r\n const series = this.getSeries(component, formGroup, language);\r\n return {\r\n series: series,\r\n ...this.getDataProps(component, formGroup),\r\n ...this.getProps(component)\r\n };\r\n }\r\n\r\n private locale(component: any, key: string, language: string): string {\r\n return localize(language, component, key);\r\n }\r\n\r\n private getSeries(component: any, formGroup: FormGroup, language: string): any[] {\r\n if (Array.isArray(component.series)) {\r\n const series = component.series.map((serie: any) => {\r\n switch (serie.type) {\r\n case \"bar\":\r\n return this.getBarSeriesOptions(serie, formGroup, language);\r\n case \"line\":\r\n return this.getLineSeriesOptions(serie, formGroup, language);\r\n case \"area\":\r\n return this.getAreaSeriesOptions(serie, formGroup, language);\r\n case \"scatter\":\r\n return this.getScatterSeriesOptions(serie, formGroup, language);\r\n case \"bubble\":\r\n return this.getBubbleSeriesOptions(serie, formGroup, language);\r\n case \"pie\":\r\n return this.getPieSeriesOptions(serie, formGroup, language);\r\n case \"donut\":\r\n return this.getDonutSeriesOptions(serie, formGroup, language);\r\n default:\r\n return {};\r\n } \r\n });\r\n return series;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private getSeriesOptionsNames(serie: any, language: string)\r\n : AgBarSeriesOptionsNames | AgLineSeriesOptionsNames {\r\n const options: AgBarSeriesOptionsNames | AgLineSeriesOptionsNames = {};\r\n\r\n if (this.isString(serie.xName))\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (this.isString(serie.yName))\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (this.isString(serie.legendItemName))\r\n options.legendItemName = this.locale(serie, \"legendItemName\", language);\r\n\r\n return options;\r\n }\r\n \r\n private getBaseSeriesOptions(serie: any, formGroup: FormGroup): AgBaseSeriesOptions<any>\r\n {\r\n const options: AgBaseSeriesOptions<any> = {\r\n ...this.getDataProps(serie, formGroup)\r\n };\r\n\r\n if (this.isBoolean(serie.visible))\r\n options.visible = serie.visible;\r\n\r\n return options;\r\n }\r\n\r\n private getBarSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgBarSeriesOptions {\r\n const options: AgBarSeriesOptions = {\r\n type: \"bar\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isDirection(serie.direction))\r\n options.direction = serie.direction;\r\n\r\n if (this.isBoolean(serie.stacked))\r\n options.stacked = serie.stacked;\r\n\r\n if (this.isNumber(serie.normalizedTo))\r\n options.normalizedTo = serie.normalizedTo;\r\n\r\n if (this.isString(serie.stackGroup))\r\n options.stackGroup = serie.stackGroup;\r\n\r\n return options;\r\n }\r\n\r\n private getLineSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgLineSeriesOptions {\r\n const options: AgLineSeriesOptions = {\r\n type: \"line\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isInterpolation(serie.interpolation)) { \r\n options.interpolation = {\r\n type: serie.interpolation\r\n };\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private getAreaSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgAreaSeriesOptions {\r\n const options: AgAreaSeriesOptions = {\r\n type: \"area\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getAreaSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isBoolean(serie.stacked))\r\n options.stacked = serie.stacked;\r\n\r\n if (this.isNumber(serie.normalizedTo))\r\n options.normalizedTo = serie.normalizedTo;\r\n\r\n return options;\r\n }\r\n\r\n private getAreaSeriesOptionsNames(serie: any, language: string)\r\n : AgAreaSeriesOptionsNames {\r\n const options: AgAreaSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getScatterSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgScatterSeriesOptions {\r\n return {\r\n type: \"scatter\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n labelKey: serie.labelKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getScatterSeriesOptionsNames(serie, language)\r\n };\r\n }\r\n\r\n private getScatterSeriesOptionsNames(serie: any, language: string)\r\n : AgScatterSeriesOptionsNames {\r\n const options: AgScatterSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getBubbleSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgBubbleSeriesOptions {\r\n return {\r\n type: \"bubble\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n sizeKey: serie.sizeKey,\r\n labelKey: serie.labelKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getBubbleSeriesOptionsNames(serie, language)\r\n };\r\n }\r\n\r\n private getBubbleSeriesOptionsNames(serie: any, language: string)\r\n : AgBubbleSeriesOptionsNames {\r\n const options: AgBubbleSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (serie.sizeName)\r\n options.sizeName = this.locale(serie, \"sizeName\", language);\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgPieSeriesOptions {\r\n const options: AgPieSeriesOptions = {\r\n type: \"pie\",\r\n angleKey: serie.angleKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getPieSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isString(serie.radiusKey))\r\n options.radiusKey = serie.radiusKey;\r\n\r\n if (this.isString(serie.calloutLabelKey))\r\n options.calloutLabelKey = serie.calloutLabelKey;\r\n\r\n if (this.isString(serie.sectorLabelKey))\r\n options.sectorLabelKey = serie.sectorLabelKey;\r\n\r\n if (this.isString(serie.legendItemKey))\r\n options.legendItemKey = serie.legendItemKey;\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptionsNames(serie: any, language: string)\r\n : AgPieSeriesOptionsNames {\r\n const options: AgPieSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\", language);\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\", language);\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\", language);\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgDonutSeriesOptions {\r\n const options: AgDonutSeriesOptions = {\r\n type: \"donut\",\r\n angleKey: serie.angleKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getDonutSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isString(serie.radiusKey))\r\n options.radiusKey = serie.radiusKey;\r\n\r\n if (this.isString(serie.calloutLabelKey))\r\n options.calloutLabelKey = serie.calloutLabelKey;\r\n\r\n if (this.isString(serie.sectorLabelKey))\r\n options.sectorLabelKey = serie.sectorLabelKey;\r\n\r\n if (this.isString(serie.legendItemKey))\r\n options.legendItemKey = serie.legendItemKey;\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptionsNames(serie: any, language: string)\r\n : AgDonutSeriesOptionsNames {\r\n const options: AgDonutSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\", language);\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\", language);\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\", language);\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getProps(component: any): any {\r\n const props: any = {};\r\n\r\n if (component && component.title) {\r\n props.title = { text: component.title };\r\n }\r\n\r\n if (component && component.subtitle) {\r\n props.subtitle = { text: component.subtitle };\r\n }\r\n\r\n return props;\r\n }\r\n\r\n private getDataProps(component: any, formGroup: FormGroup) {\r\n if (component && component.data) {\r\n return {\r\n data: this.programmability.evaluate(formGroup, component.data)\r\n }\r\n }\r\n else {\r\n return { };\r\n }\r\n }\r\n\r\n private isBoolean(value: any): boolean {\r\n return typeof value === 'boolean' || value instanceof Boolean;\r\n }\r\n\r\n private isString(value: any): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n\r\n private isNumber(value: any): boolean {\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n private isDirection(value: any): boolean {\r\n return value === 'horizontal' || value === 'vertical';\r\n }\r\n\r\n private isInterpolation(value: any): boolean {\r\n return value === 'linear' || value === 'smooth' || value === 'step';\r\n }\r\n}\r\n","import { Input, Directive, ElementRef, Renderer2, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[prefixAdorner], [suffixAdorner]',\r\n standalone: true\r\n})\r\nexport class AdornerDirective implements OnChanges, AfterViewInit {\r\n @Input() prefixAdorner: string | null = null;\r\n @Input() suffixAdorner: string | null = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.updatePrefix(this.prefixAdorner);\r\n this.updateSuffix(this.suffixAdorner); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"prefixAdorner\"]) {\r\n this.updatePrefix(changes[\"prefixAdorner\"].currentValue);\r\n }\r\n\r\n if (changes[\"suffixAdorner\"]) {\r\n this.updateSuffix(changes[\"suffixAdorner\"].currentValue);\r\n }\r\n }\r\n\r\n private getWrapper() {\r\n return this.el.nativeElement.querySelector('div.sirio-input-group');\r\n };\r\n\r\n private isPrepared(): boolean {\r\n return this.getWrapper() !== null;\r\n }\r\n\r\n private prepare(): any {\r\n if (this.isPrepared())\r\n return this.getWrapper();\r\n\r\n const inputElement = this.el.nativeElement.querySelector('input');\r\n\r\n if (!inputElement)\r\n return null;\r\n\r\n const wrapper = this.renderer.createElement('div');\r\n this.renderer.addClass(wrapper, 'sirio-input-group');\r\n\r\n const parent = inputElement.parentNode;\r\n this.renderer.insertBefore(parent, wrapper, inputElement);\r\n\r\n this.renderer.appendChild(wrapper, inputElement);\r\n\r\n return wrapper;\r\n }\r\n\r\n private updatePrefix(prefixAdorner: string | null)\r\n {\r\n const prefixText = this.normalizeText(prefixAdorner);\r\n\r\n this.remove(\"span.prefix\");\r\n \r\n if (prefixText !== null) {\r\n const wrapper = this.prepare();\r\n if (wrapper) {\r\n const inputElement = wrapper.querySelector('input');\r\n const prefixSpan = this.createSpanElement(prefixText);\r\n this.renderer.addClass(prefixSpan, \"prefix\")\r\n this.renderer.insertBefore(wrapper, prefixSpan, inputElement);\r\n } \r\n }\r\n }\r\n\r\n private updateSuffix(suffixAdorner: string | null) {\r\n const suffixText = this.normalizeText(suffixAdorner);\r\n\r\n this.remove(\"span.suffix\");\r\n\r\n if (suffixText !== null) {\r\n const wrapper = this.prepare();\r\n if (wrapper) {\r\n const suffixSpan = this.createSpanElement(suffixText);\r\n this.renderer.addClass(suffixSpan, \"suffix\")\r\n this.renderer.appendChild(wrapper, suffixSpan);\r\n }\r\n }\r\n }\r\n\r\n private remove(selector: string) {\r\n const wrapper = this.getWrapper();\r\n if (!wrapper)\r\n return;\r\n const span = wrapper.querySelector(selector);\r\n if (span)\r\n this.renderer.removeChild(wrapper, span);\r\n }\r\n\r\n private createSpanElement(adorner: string) {\r\n const outerSpan = this.renderer.createElement('span');\r\n this.renderer.addClass(outerSpan, 'sirio-input-group-text');\r\n \r\n const innerSpan = this.renderer.createElement('span');\r\n this.renderer.setAttribute(innerSpan, 'aria-hidden', 'true');\r\n\r\n const iconClass = this.getIconClassName(adorner);\r\n\r\n if (iconClass) {\r\n this.renderer.addClass(innerSpan, 'fas');\r\n this.renderer.addClass(innerSpan, iconClass);\r\n }\r\n else {\r\n const strongElement = this.renderer.createElement('strong');\r\n this.renderer.appendChild(innerSpan, strongElement);\r\n\r\n const text = this.renderer.createText(adorner);\r\n this.renderer.appendChild(strongElement, text);\r\n }\r\n\r\n this.renderer.appendChild(outerSpan, innerSpan);\r\n\r\n return outerSpan;\r\n };\r\n\r\n private getIconClassName(text: string) {\r\n\r\n switch (text) {\r\n case \"%\":\r\n return \"fa-percent\";\r\n\r\n case \"@\":\r\n return \"fa-envelope\";\r\n\r\n case \"€\":\r\n return \"fa-euro-sign\";\r\n }\r\n\r\n return null;\r\n };\r\n\r\n private normalizeText(text: string | null): string | null {\r\n\r\n if (text) {\r\n const trimmedValue = text.trim();\r\n return trimmedValue.length > 0 ? trimmedValue : null;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[disableControl], [readonly]',\r\n standalone: true\r\n})\r\nexport class DisableDirective implements OnChanges {\r\n @Input() disableControl: boolean | null = null;\r\n @Input() readonly: boolean | null = null;\r\n @Input() placeholder: string | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor(private ngControl: NgControl\r\n , private el: ElementRef\r\n , private renderer: Renderer2) {\r\n }\r\n\r\n private disableClass: string = \"fp-disabled\";\r\n private readonlyClass: string = \"fp-readonly\";\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes[\"disableControl\"] || changes[\"readonly\"]) {\r\n if (this.ngControl.control) {\r\n if (this.disableControl) {\r\n this.ngControl.control.disable();\r\n this.toggleClass(true, this.disableClass);\r\n this.overridePlaceholder(false);\r\n } else {\r\n this.ngControl.control.enable();\r\n this.toggleClass(false, this.disableClass);\r\n const disabled = this.readonly === true;\r\n (this.ngControl.valueAccessor as any)?.setDisabledState(disabled);\r\n this.toggleClass(disabled, this.readonlyClass);\r\n this.overridePlaceholder(disabled);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private toggleClass(value: boolean, className: string) {\r\n if (value) {\r\n this.renderer.addClass(this.el.nativeElement, className);\r\n } else {\r\n this.renderer.removeClass(this.el.nativeElement, className);\r\n }\r\n }\r\n\r\n private overridePlaceholder(value: boolean) {\r\n if ('placeholder' in this.componentRef) {\r\n this.componentRef.placeholder = value\r\n ? \"-\"\r\n : this.placeholder;\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[hide], [show]',\r\n standalone: true\r\n})\r\nexport class DisplayDirective implements OnChanges {\r\n @Input() hide: boolean | null = null;\r\n @Input() show: boolean | null = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"hide\"]) {\r\n const value = changes[\"hide\"].currentValue;\r\n if (value === true) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n } else if (value === false) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'block');\r\n }\r\n }\r\n\r\n if (changes[\"show\"]) {\r\n const value = changes[\"show\"].currentValue;\r\n if (value === true) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'block'); \r\n } else if (value === false) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormArray, ControlContainer } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[repeat], [allowAddRemove]',\r\n standalone: true\r\n})\r\nexport class RepeatDirective implements OnChanges {\r\n @Input() repeat: any = null;\r\n @Input() allowAddRemove: boolean | null = null;\r\n\r\n constructor(private controlContainer: ControlContainer) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"repeat\"] || changes[\"allowAddRemove\"]) {\r\n const formArray = this.controlContainer.control as FormArray;\r\n if (Number.isInteger(this.repeat) && this.repeat >= 0) {\r\n (formArray as any).resize(this.repeat);\r\n }\r\n else if (this.allowAddRemove !== true) {\r\n (formArray as any).resize(0);\r\n } \r\n }\r\n }\r\n}\r\n","import { Directive, Input, AfterViewInit, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[frameSecurity]',\r\n standalone: true\r\n})\r\nexport class FrameSecurityDirective implements AfterViewInit {\r\n @Input() frameSecurity: any = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n const frame = this.el.nativeElement;\r\n\r\n const sandbox = this.getSandBox(this.frameSecurity);\r\n\r\n if (sandbox)\r\n this.renderer.setAttribute(frame, 'sandbox', sandbox);\r\n\r\n const allow = this.getAllow(this.frameSecurity);\r\n\r\n if (allow)\r\n this.renderer.setAttribute(frame, 'allow', allow);\r\n }\r\n\r\n private getSandBox(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"allowScripts\",\r\n \"allowSameOrigin\",\r\n \"allowForms\",\r\n \"allowModals\",\r\n \"allowPopups\",\r\n \"allowTopNavigation\",\r\n \"allowStorageAccessByUserActivation\"\r\n ];\r\n let sandBox = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => this.camelToKebabCase(key))\r\n .join(' ');\r\n\r\n return sandBox;\r\n };\r\n\r\n private getAllow(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"fullscreen\",\r\n \"geolocation\",\r\n \"camera\",\r\n \"microphone\"\r\n ];\r\n let allow = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => key)\r\n .join(' ');\r\n\r\n return allow;\r\n };\r\n\r\n private camelToKebabCase(str: string): string {\r\n return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());\r\n }\r\n}\r\n","import { Directive, AfterViewInit, ElementRef, Host, Renderer2 } from '@angular/core';\r\nimport { SirioSelectComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[dropdown]',\r\n standalone: true\r\n})\r\nexport class DropdownDirective implements AfterViewInit {\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n \r\n @Host() private sirioSelect: SirioSelectComponent\r\n ) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n }\r\n\r\n private handleValue(): void {\r\n const falsyValues = [null, false, 0, \"\"];\r\n\r\n if (this.sirioSelect\r\n && Array.isArray(this.sirioSelect.options)\r\n && falsyValues.includes(this.sirioSelect.value))\r\n {\r\n const valueOption = this.sirioSelect.options.find(\r\n option => option.value === this.sirioSelect.value\r\n );\r\n\r\n if (valueOption) {\r\n valueOption.isSelected = true;\r\n }\r\n }\r\n }\r\n\r\n private handleSearchable(): void {\r\n\r\n const searchable = this.el.nativeElement.querySelector('.searchable');\r\n if (searchable) {\r\n const dropDown = this.el.nativeElement.querySelector('.sirio-dropdown');\r\n const dropMenu = dropDown.querySelector('.sirio-dropdown-menu');\r\n const input = searchable.querySelector('input');\r\n this.renderer.insertBefore(dropDown, searchable, dropMenu);\r\n\r\n this.renderer.listen(input, 'blur', (event: KeyboardEvent) => {\r\n this.sirioSelect.panel.close();\r\n });\r\n\r\n this.renderer.listen(input, 'keyup', (event: KeyboardEvent) => {\r\n this.onKeyUp(event, input); \r\n });\r\n\r\n this.renderer.listen(input, 'keydown', (event: KeyboardEvent) => {\r\n this.onKeyDown(event);\r\n });\r\n\r\n this.sirioSelect.panel.panelOpened.subscribe(() => {\r\n this.activate(searchable);\r\n });\r\n\r\n this.sirioSelect.panel.panelClosed.subscribe(() => {\r\n this.deactivate(searchable);\r\n });\r\n\r\n } \r\n }\r\n\r\n private deactivate(element: HTMLElement): void {\r\n this.renderer.setStyle(element, 'display', 'none');\r\n }\r\n\r\n private activate(element: HTMLElement): void {\r\n let currentValue = \"\";\r\n\r\n if (this.sirioSelect.optionsSelected.length > 0) {\r\n currentValue = this.sirioSelect.optionsSelected[0].text\r\n }\r\n\r\n const input = element.querySelector(\"input\");\r\n\r\n if (!input)\r\n return;\r\n\r\n input.value = currentValue;\r\n\r\n const dropMenu = this.el.nativeElement.querySelector('.sirio-dropdown-menu');\r\n\r\n this.sirioSelect.options.forEach((option) => {\r\n this.show(option, true);\r\n if (currentValue == option.text) {\r\n dropMenu.scrollTop = this.native(option).offsetTop;\r\n } \r\n });\r\n\r\n this.renderer.setStyle(element, 'display', 'inline-block');\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(input.value.length, input.value.length);\r\n input.focus();\r\n });\r\n }\r\n\r\n private onKeyUp(event: KeyboardEvent, input: any) {\r\n const { code } = event;\r\n\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n case 'ArrowDown':\r\n case 'ArrowUp':\r\n case 'Escape':\r\n return;\r\n }\r\n\r\n const value = this.comparable(input.value);\r\n let firstMatch = true;\r\n\r\n this.sirioSelect.options.forEach((option, index) => {\r\n const match = this.comparable(option.text).includes(value);\r\n this.show(option, match);\r\n if (match && firstMatch) {\r\n option.setFocus();\r\n firstMatch = false;\r\n }\r\n else {\r\n option.removeFocus();\r\n }\r\n });\r\n }\r\n\r\n private onKeyDown(event: KeyboardEvent) {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel) {\r\n return;\r\n }\r\n const panelIsOpen = panel.panelIsOpen;\r\n const { code } = event;\r\n if (panelIsOpen) {\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n if (panel.optionFocused) {\r\n panel.optionFocused?.onOptionSelected(event);\r\n }\r\n else {\r\n panel.close(event);\r\n event?.preventDefault();\r\n }\r\n break;\r\n case 'ArrowDown':\r\n this.scrollDown();\r\n event?.preventDefault();\r\n break;\r\n case 'ArrowUp':\r\n this.scrollUp();\r\n event?.preventDefault();\r\n break;\r\n case 'Escape':\r\n panel.close(event);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (!panelIsOpen) {\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n panel.open(event);\r\n event?.preventDefault();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private native(option: any) {\r\n return option.viewContainerRef.element.nativeElement;\r\n }\r\n\r\n private isHidden(option: any) {\r\n return this.native(option).style.display === 'none';\r\n }\r\n\r\n private show(option: any, value: boolean) {\r\n this.native(option).style.display = value ? '' : 'none';\r\n }\r\n\r\n private comparable(text: string) {\r\n return text.toLowerCase().trim();\r\n }\r\n\r\n private scrollDown() {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel.optionFocused) {\r\n panel.scrollBarTop();\r\n panel.options.first.setFocus();\r\n return;\r\n }\r\n const nextOptionFocused = this.findNextVisibleOption(panel.optionFocusedIndex + 1, panel.options);\r\n panel.scrollBarDown();\r\n panel.optionFocused?.removeFocus();\r\n if (nextOptionFocused) {\r\n nextOptionFocused?.setFocus();\r\n return;\r\n }\r\n panel.scrollBarTop();\r\n const firstVisible = this.findNextVisibleOption(0, panel.options);\r\n if (firstVisible) {\r\n firstVisible.setFocus();\r\n }\r\n }\r\n\r\n private scrollUp() {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel.optionFocused) {\r\n panel.scrollBarTop();\r\n panel.options.last.setFocus();\r\n return;\r\n } \r\n const nextOptionFocused = this.findPreviousVisibleOption(panel.optionFocusedIndex - 1, panel.options);\r\n if (nextOptionFocused) {\r\n panel.scrollBarUp();\r\n panel.optionFocused?.removeFocus();\r\n nextOptionFocused?.setFocus();\r\n return;\r\n }\r\n panel.optionFocused?.removeFocus();\r\n panel.scrollBarBottom();\r\n const lastVisible = this.findPreviousVisibleOption(panel.options.length - 1, panel.options);\r\n if (lastVisible) {\r\n lastVisible.setFocus();\r\n }\r\n }\r\n\r\n private findPreviousVisibleOption(startIndex: number, options: any): any | null {\r\n let i = startIndex;\r\n while (i >= 0) {\r\n const option = options.get(i);\r\n if (!this.isHidden(option)) {\r\n return option;\r\n }\r\n i--;\r\n }\r\n return null;\r\n }\r\n\r\n private findNextVisibleOption(startIndex: number, options: any): any | null {\r\n let i = startIndex;\r\n while (i < options.length) {\r\n const option = options.get(i);\r\n if (!this.isHidden(option)) {\r\n return option;\r\n }\r\n i++;\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Input, OnChanges, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { SirioTabComponent } from 'ngx-sirio-lib';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\n\r\n@Directive({\r\n selector: '[tabCount]',\r\n standalone: true\r\n})\r\nexport class TabDirective implements OnChanges {\r\n @Input() tabCount: number = 0;\r\n\r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"tabCount\"]) {\r\n const previous = changes[\"tabCount\"].previousValue;\r\n\r\n const current = changes[\"tabCount\"].currentValue;\r\n\r\n const showPanel = (index: number) => {\r\n this.sirioTab.setActiveIndex(index);\r\n setTimeout(() => {\r\n const containerRef = (this.sirioTab.tabItems[index] as any).viewContainerRef as ViewContainerRef;\r\n if (containerRef)\r\n setFocus(containerRef.element.nativeElement as HTMLElement);\r\n }, 100);\r\n }\r\n\r\n setTimeout(() => {\r\n this.sirioTab.setContentItemIndex();\r\n this.sirioTab.showArrowIfNeeded();\r\n\r\n if (previous === undefined) {\r\n showPanel(0);\r\n }\r\n else if (previous < current) {\r\n showPanel(current - 1);\r\n } \r\n else {\r\n if (this.sirioTab.oldIndex == current) {\r\n // remove last\r\n showPanel(current - 1);\r\n }\r\n else if (this.sirioTab.oldIndex < current) {\r\n // remove middle\r\n showPanel(this.sirioTab.oldIndex);\r\n }\r\n else {\r\n // remove many\r\n showPanel(current - 1);\r\n }\r\n } \r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Host, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SirioAccordionComponent } from 'ngx-sirio-lib';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\n@Directive({\r\n selector: '[accordionCount]',\r\n standalone: true\r\n})\r\nexport class AccordionDirective implements OnChanges {\r\n @Input() accordionCount: number = 0;\r\n\r\n constructor(\r\n @Host() private sirioAccordion: SirioAccordionComponent\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"accordionCount\"]) {\r\n const previous = changes[\"accordionCount\"].previousValue;\r\n\r\n const current = changes[\"accordionCount\"].currentValue;\r\n\r\n if (current == 0)\r\n return;\r\n\r\n setTimeout(() => {\r\n\r\n const event = new Event(\"\");\r\n\r\n this.sirioAccordion.closePanels(event);\r\n\r\n const panels = this.sirioAccordion.panels.toArray();\r\n\r\n const showPanel = (index: number) => {\r\n panels[index].onPanelHeaderClicked(event);\r\n setTimeout(() => {\r\n setFocus((panels[index].body as any).el.nativeElement);\r\n }, 100); \r\n }\r\n\r\n if (previous === undefined) {\r\n showPanel(0);\r\n }\r\n else {\r\n showPanel(current - 1);\r\n }\r\n }, 100); \r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, Host } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\n\r\n@Directive({\r\n selector: '[rowSource]',\r\n standalone: true\r\n})\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource: any = null;\r\n \r\n constructor(\r\n @Host() private grid: AgGridAngular\r\n ) {\r\n\r\n grid.gridReady.subscribe(() => {\r\n this.isGridReady = true; \r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"rowSource\"]) {\r\n this.onRowChanges(this.rowSource);\r\n } \r\n }\r\n\r\n private isGridReady: boolean = false;\r\n\r\n private onRowChanges(rowSource: any): void {\r\n if (this.isArray(rowSource)) {\r\n this.setRowData(rowSource);\r\n }\r\n else if (this.isDataSource(rowSource)) {\r\n this.setDataSource(rowSource);\r\n }\r\n else {\r\n this.setRowData([]);\r\n }\r\n }\r\n\r\n private setRowData(rowSource: any) {\r\n this.grid.rowModelType = 'clientSide';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('rowData', rowSource);\r\n }\r\n else {\r\n this.grid.rowData = rowSource;\r\n }\r\n }\r\n\r\n private setDataSource(rowSource: any) {\r\n this.grid.rowModelType = 'infinite';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('datasource', rowSource);\r\n }\r\n else {\r\n this.grid.datasource = rowSource;\r\n }\r\n }\r\n\r\n private isArray(rowSource: any): boolean {\r\n return Array.isArray(rowSource);\r\n }\r\n\r\n private isDataSource(obj: any): obj is IRowsSource {\r\n return typeof obj.getRows === \"function\";\r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class FormControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextFieldControl extends Control {\r\n\r\n readonly setRandomColor = (): void => {\r\n this.getInput().sirioInput.nativeElement.style.backgroundColor = this.getRandomColor(); \r\n }\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n private getRandomColor(): string {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n\r\n return color;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class SelectControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TagListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class NumberControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioDatepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class DateControl extends Control {\r\n\r\n private getDatePicker(): SirioDatepickerComponent {\r\n return this.getComponentRef() as SirioDatepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioTimepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TimeControl extends Control {\r\n\r\n private getTimePicker(): SirioTimepickerComponent {\r\n return this.getComponentRef() as SirioTimepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioToggleComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ToggleControl extends Control {\r\n\r\n private getToggle(): SirioToggleComponent {\r\n return this.getComponentRef() as SirioToggleComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckBoxControl extends Control {\r\n\r\n private getCheckBox(): SirioCheckboxComponent {\r\n return this.getComponentRef() as SirioCheckboxComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipRadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipRadio() as any)._refresh();\r\n }\r\n\r\n private getChipRadio(): SirioChipRadioGroupComponent {\r\n return this.getComponentRef() as SirioChipRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class RadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getRadio() as any)._refresh();\r\n }\r\n\r\n private getRadio(): SirioRadioGroupComponent {\r\n return this.getComponentRef() as SirioRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipCheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipCheckBoxGroup() as any)._refresh();\r\n }\r\n\r\n private getChipCheckBoxGroup(): SirioChipCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioChipCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getCheckboxGroup() as any)._refresh();\r\n }\r\n\r\n private getCheckboxGroup(): SirioCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextAreaControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioFileUploadComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class FilePickerControl extends Control {\r\n\r\n private getFileUpload(): SirioFileUploadComponent {\r\n return this.getComponentRef() as SirioFileUploadComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TextControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class HtmlControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class ImageControl extends Control {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioTabComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TabControl extends ContainerControl {\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgCharts } from 'ag-charts-angular';\r\n\r\nexport class ChartControl extends Control {\r\n\r\n //readonly refresh = (): void => {\r\n // (this.getGrid() as any)._refresh();\r\n //}\r\n\r\n private getChart(): AgCharts {\r\n return this.getComponentRef() as AgCharts;\r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioAccordionComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class AccordionControl extends ContainerControl {\r\n\r\n private getAccordion(): SirioAccordionComponent {\r\n return this.getComponentRef() as SirioAccordionComponent;\r\n }\r\n\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class DynamicListControl extends ContainerControl {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class GroupControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\n\r\n\r\nexport class TableControl extends Control {\r\n\r\n readonly setFilter = (filter: any): void => {\r\n this.getGrid().api.setFilterModel(filter);\r\n }\r\n\r\n readonly clearFilter = (): void => {\r\n this.getGrid().api.setFilterModel(null);\r\n }\r\n\r\n readonly refresh = (): void => {\r\n (this.getGrid() as any)._refresh();\r\n }\r\n\r\n private getGrid(): AgGridAngular {\r\n return this.getComponentRef() as AgGridAngular;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioButtonComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ButtonControl extends Control {\r\n\r\n private getButton(): SirioButtonComponent {\r\n return this.getComponentRef() as SirioButtonComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SeparatorControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SpacerControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class IFrameControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TooltipControl extends Control {\r\n\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Control } from '../controls/control';\r\nimport { FormControl } from '../controls/form';\r\nimport { TextFieldControl } from '../controls/textfield';\r\nimport { SelectControl } from '../controls/select';\r\nimport { TagListControl } from '../controls/taglist';\r\nimport { NumberControl } from '../controls/number';\r\nimport { DateControl } from '../controls/date';\r\nimport { TimeControl } from '../controls/time';\r\nimport { ToggleControl } from '../controls/toggle';\r\nimport { CheckBoxControl } from '../controls/checkbox';\r\nimport { ChipRadioControl } from '../controls/chipradio';\r\nimport { RadioControl } from '../controls/radio';\r\nimport { ChipCheckListControl } from '../controls/chipchecklist';\r\nimport { CheckListControl } from '../controls/checklist';\r\nimport { TextAreaControl } from '../controls/textarea';\r\nimport { FilePickerControl } from '../controls/filepicker';\r\nimport { TextControl } from '../controls/text';\r\nimport { HtmlControl } from '../controls/html';\r\nimport { ImageControl } from '../controls/image';\r\nimport { TabControl } from '../controls/tab';\r\nimport { ChartControl } from '../controls/chart';\r\nimport { AccordionControl } from '../controls/accordion';\r\nimport { DynamicListControl } from '../controls/dynamiclist';\r\nimport { GroupControl } from '../controls/group';\r\nimport { TableControl } from '../controls/table';\r\nimport { ButtonControl } from '../controls/button';\r\nimport { SeparatorControl } from '../controls/separator';\r\nimport { SpacerControl } from '../controls/spacer';\r\nimport { IFrameControl } from '../controls/iframe';\r\nimport { TooltipControl } from '../controls/tooltip';\r\nimport { RegisterService } from '../services/register.service';\r\n\r\nexport function createControl(name: string\r\n , metadata: any\r\n , componentRef: any\r\n , elementRef: ElementRef\r\n , register: RegisterService | undefined) : Control {\r\n\r\n switch (metadata.type) {\r\n\r\n case \"default\":\r\n return new FormControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"textfield\":\r\n return new TextFieldControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"select\":\r\n return new SelectControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"taglist\":\r\n return new TagListControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"number\":\r\n return new NumberControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"datetime\":\r\n switch (metadata.subtype) {\r\n case \"date\":\r\n return new DateControl(name, metadata, componentRef, elementRef);\r\n case \"time\":\r\n return new TimeControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checkbox\":\r\n switch (metadata.subtype) {\r\n case \"toggle\":\r\n return new ToggleControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckBoxControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"radio\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipRadioControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new RadioControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checklist\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipCheckListControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckListControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"textarea\":\r\n return new TextAreaControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"filepicker\":\r\n return new FilePickerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"text\":\r\n return new TextControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"html\":\r\n return new HtmlControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"image\":\r\n return new ImageControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"dynamiclist\":\r\n switch (metadata.subtype) {\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n default:\r\n return new DynamicListControl(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n case \"group\":\r\n return new GroupControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"table\":\r\n return new TableControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"chart\":\r\n return new ChartControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"button\":\r\n return new ButtonControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"separator\":\r\n return new SeparatorControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"spacer\":\r\n return new SpacerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"iframe\":\r\n return new IFrameControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tooltip\":\r\n return new TooltipControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n}\r\n","import {\r\n Directive, Input, ElementRef, AfterContentInit, OnDestroy\r\n , ContentChild, ContentChildren, QueryList, forwardRef\r\n} from '@angular/core';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { createControl } from '../controls/factory';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport { IDynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.interface';\r\nimport { ItemControl } from '../controls/control';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[register]',\r\n standalone: true\r\n})\r\nexport class RegisterDirective implements AfterContentInit, OnDestroy {\r\n @Input() register: any = null;\r\n @Input() componentRef: any;\r\n @ContentChild(forwardRef(() => DynamicFieldsComponent)) dynamicField?: IDynamicFieldsComponent;\r\n @ContentChildren(forwardRef(() => DynamicFieldsComponent), { descendants: true }) itemFields!: QueryList<IDynamicFieldsComponent>;\r\n \r\n constructor(\r\n private el: ElementRef,\r\n private registerService: RegisterService\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n this.registerControl();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unregisterControl();\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private registerControl(): void {\r\n const name = this.getName();\r\n\r\n const register = (this.register.type === 'dynamiclist')\r\n ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)\r\n : this.dynamicField?.getRegister();\r\n\r\n const control = createControl(name, this.register, this.componentRef, this.el, register);\r\n this.registerService.register(name, control);\r\n\r\n }\r\n\r\n private unregisterControl(): void {\r\n this.registerService.unregister(this.getName());\r\n }\r\n\r\n private getName(): string {\r\n return this.register.name ?? this.register.id;\r\n }\r\n\r\n private createDynamicRegister(name: string, metadata: any, componentRef: any, el: ElementRef\r\n , itemFields: QueryList<IDynamicFieldsComponent>): RegisterService {\r\n\r\n const newRegister = new RegisterService(null);\r\n\r\n const registerAll = (itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n newRegister.unregisterAll();\r\n itemFields.forEach((itemField, index) => {\r\n const register = itemField.getRegister();\r\n const newName = `${name}-${index}`;\r\n const control = new ItemControl(newName, index, metadata, componentRef, el, register);\r\n newRegister.register(newName, control);\r\n });\r\n }\r\n\r\n registerAll(itemFields);\r\n\r\n itemFields.changes\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n registerAll(itemFields);\r\n });\r\n\r\n return newRegister;\r\n }\r\n}\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[refresh]',\r\n standalone: true\r\n})\r\nexport class RefreshDirective implements AfterContentInit {\r\n @Input() refresh: (() => void) | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef._refresh = this.refresh;\r\n }\r\n\r\n}\r\n","import { Directive, AfterViewInit, Host } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[updateBlur]',\r\n standalone: true\r\n})\r\nexport class UpdateBlurDirective implements AfterViewInit {\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) { }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (this.sirioInput?.control?.updateOn === 'blur') {\r\n\r\n const writeValue = this.sirioInput.writeValue;\r\n\r\n this.sirioInput.writeValue = function (value: any, event = false) {\r\n writeValue.bind(this)(value, false);\r\n };\r\n\r\n this.sirioInput.onBlur = function (event: any) {\r\n writeValue.bind(this)(this.value, true);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioDatepickerComponent } from 'ngx-sirio-lib';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\n\r\n@Directive({\r\n selector: '[isoDate]',\r\n standalone: true\r\n})\r\nexport class DateDirective {\r\n\r\n constructor(@Host() private sirioDatepicker: SirioDatepickerComponent) {\r\n\r\n const registerOnChange = this.sirioDatepicker.registerOnChange.bind(this.sirioDatepicker);\r\n\r\n this.sirioDatepicker.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(dateToStore(value));\r\n });\r\n };\r\n\r\n const writeValue = this.sirioDatepicker.writeValue.bind(this.sirioDatepicker);\r\n\r\n this.sirioDatepicker.writeValue = function (value: any, event?: boolean, updateCalendar?: boolean) {\r\n writeValue(dateToDisplay(value), event, updateCalendar);\r\n };\r\n } \r\n}\r\n\r\nconst dislayFormat = 'dd/mm/yyyy';\r\nconst storeFormat = 'yyyy-mm-dd';\r\n\r\nfunction dateToDisplay(value: string): string | null {\r\n if (typeof value === \"string\") {\r\n const date = parseStore(value) ?? parseDisplay(value);\r\n return (date == null)\r\n ? value\r\n : Datepicker.formatDate(date, dislayFormat, 'it');\r\n }\r\n else {\r\n return null;\r\n } \r\n}\r\n\r\nfunction dateToStore(value: string): string | null {\r\n if (typeof value === \"string\") {\r\n const date = parseStore(value) ?? parseDisplay(value);\r\n return (date == null)\r\n ? null\r\n : Datepicker.formatDate(date, storeFormat, 'it');\r\n }\r\n else {\r\n return null;\r\n } \r\n}\r\n\r\nfunction parseDisplay(value: string): Date | null {\r\n const regex = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\r\n const match = value.match(regex);\r\n if (!match) return null;\r\n\r\n const day = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const year = parseInt(match[3], 10);\r\n\r\n const date = new Date(year, month - 1, day);\r\n\r\n if (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n ) {\r\n return date;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\nfunction parseStore(value: string): Date | null {\r\n const regex = /^(\\d{4})-(\\d{2})-(\\d{2})(T\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$/;\r\n const match = value.match(regex);\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const year = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const day = parseInt(match[3], 10);\r\n\r\n const date = new Date(year, month - 1, day);\r\n\r\n if (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n ) {\r\n return date;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\n\r\n","import { Directive, Host, AfterViewInit, Input } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[number]',\r\n standalone: true\r\n})\r\nexport class NumberDirective implements AfterViewInit {\r\n @Input() defaultValue: number | null = null;\r\n @Input() minimum: number | null = null;\r\n @Input() maximum: number | null = null;\r\n @Input() decimalDigits: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = (value: number | null): number | null => {\r\n const originalValue = value;\r\n\r\n if (value === null && this.defaultValue !== null) {\r\n value = this.defaultValue;\r\n }\r\n\r\n if (value != null) {\r\n if (this.minimum !== null && value < this.minimum) {\r\n value = this.minimum;\r\n }\r\n\r\n if (this.maximum !== null && value > this.maximum) {\r\n value = this.maximum;\r\n }\r\n\r\n if (this.decimalDigits != null && this.decimalDigits >= 0) {\r\n const factor = Math.pow(10, this.decimalDigits);\r\n value = Math.round(value * factor) / factor;\r\n }\r\n }\r\n \r\n if (originalValue !== value) { \r\n this.sirioInput.writeValue(value, false); \r\n }\r\n\r\n return value;\r\n };\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(valueToStore(value))); \r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n const input = this.sirioInput.sirioInput.nativeElement;\r\n\r\n input.addEventListener('keydown', (event: Event) => {\r\n const e = event as KeyboardEvent;\r\n if (e.key === '.'\r\n || (e.key === ',' && !this.acceptDecimal())\r\n || (e.key === '-' && !this.acceptSign())) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n input.addEventListener('paste', (event: Event) => {\r\n const e = event as ClipboardEvent;\r\n const text = e.clipboardData?.getData('text') || '';\r\n if (text.includes('.')\r\n || (text.includes(',') && !this.acceptDecimal())\r\n || (text.includes('-') && !this.acceptSign())) {\r\n event.preventDefault();\r\n }\r\n });\r\n \r\n }\r\n\r\n private acceptSign(): boolean {\r\n if (this.minimum !== null && this.minimum >= 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private acceptDecimal(): boolean {\r\n if (this.decimalDigits !== null && this.decimalDigits === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nfunction valueToStore(value: string): number | null {\r\n if (typeof value === \"string\") {\r\n if (value.trim() === '') { \r\n return null;\r\n }\r\n const numericValue = parseFloat(value);\r\n if (isNaN(numericValue)) {\r\n return null;\r\n }\r\n return numericValue;\r\n }\r\n else if (typeof value === 'number') {\r\n return value as number;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Renderer2, Input, OnChanges, AfterViewInit, SimpleChanges } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[textcase], [maxlength]',\r\n standalone: true\r\n})\r\nexport class TextDirective implements OnChanges, AfterViewInit {\r\n @Input() textcase: '' | 'uppercase' | 'lowercase' = '';\r\n @Input() maxlength: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent\r\n , private renderer: Renderer2) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = this.coerceValue.bind(this);\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(value));\r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.configureTextCase();\r\n this.configureMaxLength(); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"maxlength\"]) {\r\n this.configureMaxLength();\r\n }\r\n }\r\n\r\n private coerceValue(value: string): string\r\n {\r\n return this.applyMaxLength(\r\n this.applyCase(value));\r\n }\r\n\r\n private applyCase(value: string): string {\r\n if (this.textcase === \"uppercase\") {\r\n return value.toUpperCase();\r\n }\r\n else if (this.textcase === \"lowercase\") {\r\n return value.toLowerCase();\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n\r\n private applyMaxLength(value: string): string {\r\n if (this.maxlength != null && value.length > this.maxlength) {\r\n return value.slice(0, Math.max(0, this.maxlength));\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n\r\n private configureTextCase() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n\r\n inputElement.oninput = (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const value = input.value;\r\n\r\n var newValue = this.coerceValue(value);\r\n\r\n if (newValue != value) {\r\n this.replaceInputValue(input, newValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private configureMaxLength() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n\r\n if (inputElement) {\r\n if (this.maxlength == null) {\r\n inputElement.removeAttribute('maxlength');\r\n } else {\r\n inputElement.maxLength = this.maxlength;\r\n }\r\n } \r\n }\r\n\r\n private replaceInputValue(input: HTMLInputElement, value: string): void {\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n\r\n input.value = value;\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(start, end);\r\n }, 0);\r\n }\r\n\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[disableForm]',\r\n standalone: true\r\n})\r\nexport class DisableFormDirective implements OnChanges {\r\n @Input('disableForm') config!: {\r\n disabled: boolean | null;\r\n formGroup: FormGroup;\r\n path: string;\r\n };\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (this.hasValue(this.config.path) && this.config.formGroup) {\r\n var formGroup = this.config.formGroup.get(this.config.path);\r\n if (formGroup instanceof FormGroup) {\r\n if (this.config.disabled) {\r\n formGroup.disable({ emitEvent: false });\r\n } else {\r\n formGroup.enable({ emitEvent: false });\r\n }\r\n }\r\n }\r\n \r\n this.viewContainer.clear();\r\n }\r\n\r\n private hasValue(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n}\r\n","import { Directive, Host, OnInit, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[tabControl]',\r\n standalone: true\r\n})\r\nexport class TabControlDirective implements OnInit, OnDestroy {\r\n \r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.tabChangeSub = this.sirioTab.tabChange.subscribe(this.HandleIndexChange.bind(this));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabChangeSub?.unsubscribe();\r\n }\r\n\r\n private tabChangeSub!: Subscription;\r\n\r\n private HandleIndexChange(event: NgxSirioEvent<SirioTabComponent>) {\r\n const tab = event.component as any;\r\n if (event.data.newIndex === undefined) {\r\n tab.setActiveIndex(this.validateIndex(tab._savedIndex), true);\r\n }\r\n else {\r\n tab._savedIndex = event.data.newIndex;\r\n }\r\n }\r\n\r\n private validateIndex(index: number): number {\r\n if (index >= this.sirioTab.tabItems.length) {\r\n var firstTab = this.sirioTab.firstTabEnabled;\r\n if (firstTab) {\r\n index = firstTab.index;\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Directive({\r\n selector: '[collapse]',\r\n standalone: true\r\n})\r\nexport class CollapseDirective implements OnChanges, OnDestroy {\r\n @Input('collapse') maxHeight: number | null = null;\r\n @Input() language!: string;\r\n\r\n private currentHeight: number | null = null;\r\n private button: HTMLButtonElement | null = null;\r\n private iconSpan: HTMLElement | null = null;\r\n private expanded = false;\r\n private viewInitialized = false;\r\n private timeoutFocusOut: any;\r\n private unlistenFocusOut!: () => void;\r\n\r\n constructor(private el: ElementRef\r\n , private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewInitialized = true;\r\n this.currentHeight = this.maxHeight;\r\n this.applyCollapseLogic();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['language'] || changes['maxHeight']) {\r\n this.currentHeight = this.maxHeight;\r\n if (this.viewInitialized) {\r\n this.applyCollapseLogic();\r\n }\r\n }\r\n }\r\n\r\n private applyCollapseLogic(): void {\r\n \r\n this.resetStyles();\r\n \r\n this.resetButton();\r\n \r\n this.resetFocusHandler();\r\n\r\n if (this.maxHeight == null || this.maxHeight <= 0) {\r\n this.expanded = true;\r\n return;\r\n }\r\n\r\n this.expanded = false;\r\n\r\n this.applyStyle();\r\n\r\n const element = this.el.nativeElement as HTMLElement;\r\n\r\n if (element.scrollHeight > this.maxHeight) {\r\n this.applyButton();\r\n this.applyFocusHandler();\r\n }\r\n }\r\n\r\n private applyStyle() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'overflow', 'hidden');\r\n this.renderer.setStyle(element, 'max-height', `${this.maxHeight}px`);\r\n }\r\n\r\n private resetStyles() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'overflow', null);\r\n this.renderer.setStyle(element, 'max-height', null);\r\n }\r\n\r\n private applyButton(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.button = this.renderer.createElement('button');\r\n this.renderer.addClass(this.button, 'sirio-btn');\r\n this.renderer.setStyle(this.button, 'padding', '0px');\r\n\r\n const text = this.renderer.createText(this.locale(Texts, 'ReadMore'));\r\n\r\n this.iconSpan = this.renderer.createElement('span');\r\n this.renderer.addClass(this.iconSpan, 'fa');\r\n this.renderer.addClass(this.iconSpan, 'fa-chevron-down');\r\n \r\n this.renderer.appendChild(this.button, text);\r\n this.renderer.appendChild(this.button, this.iconSpan);\r\n\r\n this.renderer.listen(this.button, 'click', () => this.toggleExpand());\r\n this.renderer.setStyle(this.button, 'margin-top', '8px');\r\n\r\n this.renderer.appendChild(element.parentNode, this.button);\r\n }\r\n\r\n private resetButton() {\r\n if (this.button && this.button.parentNode) {\r\n this.renderer.removeChild(this.button.parentNode, this.button);\r\n this.button = null;\r\n }\r\n }\r\n\r\n private applyFocusHandler() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.unlistenFocusOut = this.renderer.listen(element, 'focusout', () => {\r\n clearTimeout(this.timeoutFocusOut);\r\n this.timeoutFocusOut = setTimeout(() => {\r\n if (!element.contains(document.activeElement)) {\r\n element.scrollTop = 0;\r\n console.log('NESSUN elemento interno ha più il focus');\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n private resetFocusHandler() {\r\n if (this.unlistenFocusOut) {\r\n this.unlistenFocusOut();\r\n }\r\n clearTimeout(this.timeoutFocusOut);\r\n }\r\n\r\n private toggleExpand(): void {\r\n this.expanded = !this.expanded;\r\n if (this.expanded) {\r\n this.expand();\r\n } else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n private expand(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'max-height', 'none');\r\n this.renderer.setStyle(element, 'overflow', 'visible');\r\n this.button!.childNodes[0].textContent = this.locale(Texts, 'ReadLess');\r\n this.updateIcon('fa-chevron-up', 'fa-chevron-down');\r\n }\r\n\r\n private collapse(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'max-height', `${this.currentHeight}px`);\r\n this.renderer.setStyle(element, 'overflow', 'hidden');\r\n this.button!.childNodes[0].textContent = this.locale(Texts, 'ReadMore');\r\n this.updateIcon('fa-chevron-down', 'fa-chevron-up');\r\n }\r\n\r\n private updateIcon(add: string, remove: string) {\r\n if (this.iconSpan) {\r\n this.renderer.removeClass(this.iconSpan, remove);\r\n this.renderer.addClass(this.iconSpan, add);\r\n }\r\n }\r\n\r\n private locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resetButton();\r\n this.resetFocusHandler();\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioAccordionPanelComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[accordionPanel]',\r\n standalone: true\r\n})\r\nexport class AccordionPanelDirective {\r\n\r\n constructor(\r\n @Host() panel: SirioAccordionPanelComponent\r\n ) {\r\n panel.opened.subscribe((event: NgxSirioEvent<SirioAccordionPanelComponent>) => {\r\n const element = (event.component.body as any).el.nativeElement;\r\n // delay height calculation to allow for DOM updates\r\n setTimeout(() => {\r\n //const scrollHeight = element.scrollHeight;\r\n //element.style.height = `${scrollHeight}px`;\r\n element.style.height = '';\r\n }, 0);\r\n }); \r\n }\r\n}\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-template-wrapper',\r\n template: '',\r\n standalone: true\r\n})\r\nexport class TemplateWrapperComponent {\r\n @Input() template!: TemplateRef<any>;\r\n @Input() context: any = {};\r\n\r\n constructor() { }\r\n\r\n getTemplateRef(): TemplateRef<any> {\r\n const result = {\r\n createEmbeddedView: (context: any) => {\r\n return this.template.createEmbeddedView(this.context);\r\n }\r\n } as TemplateRef<any>;\r\n\r\n (result as any).createEmbeddedViewImpl = () => {\r\n return this.template.createEmbeddedView(this.context);\r\n }\r\n\r\n return result;\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SanitizeService {\r\n\r\n constructor(private sanitizer: DomSanitizer)\r\n {\r\n this.sanitizeOption = {\r\n allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),\r\n allowedAttributes: {\r\n ...sanitizeHtml.defaults.allowedAttributes,\r\n '*': ['style']\r\n }\r\n };\r\n }\r\n\r\n sanitizeHtml(html: string): string {\r\n return sanitizeHtml(html, this.sanitizeOption);\r\n };\r\n\r\n sanitizeSafeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html));\r\n };\r\n\r\n sanitizeSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n toString(safeHtml: SafeHtml): string {\r\n return this.sanitizer.sanitize(1, safeHtml) || '';\r\n }\r\n\r\n private sanitizeOption!: sanitizeHtml.IOptions;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { marked } from 'marked';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkdownService {\r\n\r\n constructor() {\r\n\r\n marked.use({\r\n async: false,\r\n gfm: true,\r\n breaks: true\r\n });\r\n\r\n const renderer = new marked.Renderer();\r\n\r\n renderer.link = function (args) {\r\n return `<a href=\"${args.href}\" target=\"_blank\">${args.text}</a>`; \r\n };\r\n\r\n marked.setOptions({ renderer });\r\n }\r\n\r\n toHtml(text: string): string {\r\n return marked.parse(text ?? \"\") as string;\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport mimeDb from 'mime-db';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MimeService {\r\n\r\n constructor() { }\r\n\r\n getMimeTypes(extensions: string): string {\r\n return (extensions ?? \"\")\r\n .split(',')\r\n .map(ext => this.getMimeType(ext.trim()))\r\n .filter(mime => mime !== null)\r\n .join(', ');\r\n };\r\n\r\n private getMimeType(extension: string): string | null {\r\n const ext = extension.startsWith('.') ? extension.slice(1) : extension;\r\n for (const [mimeType, info] of Object.entries(mimeDb)) {\r\n if (info.extensions && info.extensions.includes(ext)) {\r\n return mimeType;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, FormControl, FormArray, AbstractControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\nimport { SanitizeService } from '../services/sanitize.service';\r\nimport { MarkdownService } from '../services/markdown.service';\r\nimport { MimeService } from '../services/mime.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { EventService, CommandEvent } from '../services/event.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { GridService } from '../services/grid.service';\r\nimport { ChartService } from '../services/chart.service';\r\nimport { ButtonColors } from 'ngx-sirio-lib';\r\nimport { AdornerDirective } from '../directives/adorner.directive';\r\nimport { DisableDirective } from '../directives/disable.directive';\r\nimport { DisplayDirective } from '../directives/display.directive';\r\nimport { RepeatDirective } from '../directives/repeat.directive';\r\nimport { FrameSecurityDirective } from '../directives/framesecurity.directive';\r\nimport { DropdownDirective } from '../directives/dropdown.directive';\r\nimport { TabDirective } from '../directives/tab.directive';\r\nimport { AccordionDirective } from '../directives/accordion.directive';\r\nimport { GridDirective } from '../directives/grid.directive';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { RefreshDirective } from '../directives/refresh.directive';\r\nimport { UpdateBlurDirective } from '../directives/updateblur.directive';\r\nimport { DateDirective } from '../directives/date.directive';\r\nimport { NumberDirective } from '../directives/number.directive';\r\nimport { TextDirective } from '../directives/text.directive';\r\nimport { DisableFormDirective } from '../directives/disableform.directive';\r\nimport { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { CollapseDirective } from '../directives/collapse.directive';\r\nimport { AccordionPanelDirective } from '../directives/accordionpanel.directive';\r\nimport { TemplateWrapperComponent } from '../shared/template-wrapper/template-wrapper.component';\r\nimport { isObservable, Observable, of } from 'rxjs';\r\n\r\nimport {\r\n SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , NgxSirioEvent\r\n} from 'ngx-sirio-lib';\r\n\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { Module, GridOptions } from 'ag-grid-community';\r\nimport { AgCharts } from \"ag-charts-angular\";\r\nimport { AgChartOptions } from 'ag-charts-community';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'app-dynamic-fields',\r\n templateUrl: './dynamic-fields.component.html',\r\n styleUrls: [\r\n './dynamic-fields.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, DisableDirective, DisplayDirective, FrameSecurityDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, TabDirective, GridDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective\r\n , DisableFormDirective, TabControlDirective, CollapseDirective, AccordionPanelDirective\r\n , SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , TemplateWrapperComponent\r\n , AgGridAngular, AgCharts],\r\n providers: [\r\n RegisterService,\r\n ProgrammabilityService,\r\n GridService,\r\n ChartService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFieldsComponent implements OnInit, AfterViewInit, IDynamicFieldsComponent {\r\n @Input() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() language!: string;\r\n\r\n Texts = Texts;\r\n\r\n constructor(private sanitizer: SanitizeService\r\n , private markdown: MarkdownService\r\n , private mime: MimeService\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private grid: GridService\r\n , private chart: ChartService\r\n , private el: ElementRef\r\n , private cdr: ChangeDetectorRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void { \r\n this.configureDatepicker();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.focusFirst();\r\n });\r\n }\r\n\r\n getRegister(): RegisterService {\r\n return this.register;\r\n }\r\n\r\n getClass(component: any): string {\r\n const colHost = \"col-host \";\r\n if (component.layout?.columns) {\r\n return colHost + \"col-md-\" + component.layout?.columns;\r\n }\r\n else {\r\n return colHost + \"col\";\r\n }\r\n }\r\n\r\n getTextFeedback(component: any): string {\r\n const control = this.formGroup.get(component.key) as FormControl;\r\n return !control || control.valid || !control.errors\r\n ? ''\r\n : control.errors['message'];\r\n }\r\n\r\n isWarning(component: any): boolean {\r\n const control = this.formGroup.get(component.key) as FormControl;\r\n return (control && control.errors && control.errors['warning']) || false\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.formGroup, value); \r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n return this.programmability.evaluateBoolean(this.formGroup, value);\r\n }\r\n\r\n evaluateNumber(value: number | string | null): number | null {\r\n return this.programmability.evaluateNumber(this.formGroup, value);\r\n }\r\n\r\n evaluateUrl(value: string | null): SafeResourceUrl {\r\n const url = this.programmability.evaluateString(this.formGroup, value);\r\n const watchKey = `:safeUrl(${url})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n return this.sanitizer.sanitizeSafeUrl(url);\r\n });\r\n }\r\n\r\n evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n evaluate(text: string | null, cacheable: boolean = true): any {\r\n return this.programmability.evaluate(this.formGroup, text, {\r\n cacheable: cacheable\r\n });\r\n }\r\n\r\n evaluateColor(value: string | null): ButtonColors | null {\r\n const color = this.evaluateString(value);\r\n const watchKey = `:buttonColor(${color})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n if (color === \"ghost\")\r\n return null;\r\n const validColors: ButtonColors[] = ['primary', 'secondary', 'tertiary', 'tertiary-light', 'danger'];\r\n return validColors.includes(color as ButtonColors) ? (color as ButtonColors) : 'primary';\r\n });\r\n }\r\n\r\n evaluateConditional(conditional: any): boolean {\r\n const hide = this.evaluateBoolean(conditional?.hide);\r\n const show = this.evaluateBoolean(conditional?.show);\r\n \r\n return !(hide === true || show === false);\r\n }\r\n\r\n getTemplate(value: string): any {\r\n return this.metadata.getFormByName(value);\r\n }\r\n\r\n getFormGroup(control: AbstractControl | null): FormGroup {\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormArray(control: AbstractControl | null): FormArray {\r\n if (!(control instanceof FormArray)) {\r\n throw new Error('Control is not a FormArray');\r\n }\r\n return control;\r\n }\r\n\r\n resolvePath(path: string | null): FormGroup {\r\n return this.getFormGroup(this.getControlFromPath(path))\r\n }\r\n\r\n toHTML(text: string): SafeHtml {\r\n const watchKey = `:safeHtml(${text})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n const html = this.markdown.toHtml(text);\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n });\r\n };\r\n\r\n sanitize(html: string): SafeHtml {\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n };\r\n\r\n getMimeTypes(extensions: string): string {\r\n return this.mime.getMimeTypes(extensions);\r\n };\r\n\r\n clickButton(component: any, event: any) {\r\n if (component.click) {\r\n this.evaluate(component.click, false);\r\n }\r\n if (component.command) {\r\n const command: CommandEvent = {\r\n name: this.evaluateString(component.command),\r\n component: component,\r\n formGroup: this.formGroup,\r\n event: event\r\n };\r\n this.events.emitCommand(command);\r\n } \r\n }\r\n\r\n getValues(component: any): Observable<any> {\r\n if (component.values) {\r\n // Static\r\n return of(component.values);\r\n }\r\n else if (component.valuesKey) {\r\n // Field value\r\n const result = this.evaluate(component.valuesKey);\r\n return this.getAsObservable(result);\r\n }\r\n else if (component.valuesExpression) {\r\n // Expression\r\n const result = this.evaluate(component.valuesExpression);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return of([]);\r\n } \r\n }\r\n\r\n refreshValues(component: any): () => void {\r\n return () => {\r\n if (component.valuesKey) {\r\n this.invalidate(component.valuesKey);\r\n }\r\n else if (component.valuesExpression) {\r\n this.invalidate(component.valuesExpression);\r\n } \r\n }; \r\n }\r\n\r\n getChartOptions(component: any): AgChartOptions {\r\n return this.weak.call(component, `getChartOptions_${this.language}`\r\n , () => this.chart.getOptions(component, this.formGroup, this.language));\r\n }\r\n\r\n getGridOptions(component: any): GridOptions {\r\n return this.weak.call(component, `getGridOptions_${this.language}`\r\n , () => this.grid.getOptions(component, this.formGroup, this.language));\r\n }\r\n\r\n getGridModules(component: any): Module[] {\r\n return this.weak.call(component, 'getGridModules', () => this.grid.getModules());\r\n }\r\n\r\n onGridSelectionChanged(component: any, event: any) {\r\n this.grid.onSelectionChanged(component, this.formGroup, event);\r\n }\r\n\r\n getRowSource(component: any): Observable<any> {\r\n if (component.dataSource) {\r\n // Expression\r\n const result = this.evaluate(component.dataSource, true);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return of([]);\r\n }\r\n }\r\n\r\n refreshRowSource(component: any): () => void {\r\n return () => {\r\n if (component.dataSource) {\r\n this.invalidate(component.dataSource);\r\n } \r\n };\r\n }\r\n\r\n addItem(formArray: FormArray) {\r\n (formArray as any).addItem();\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number) {\r\n formArray.removeAt(index);\r\n }\r\n\r\n createUploadTables(component: any): any {\r\n return this.weak.call(component, 'createUploadTables', () => {\r\n return [\r\n {\r\n components: [\r\n {\r\n \"type\": \"table\",\r\n \"layout\": {\r\n \"columns\": null\r\n },\r\n \"columns\": [\r\n {\r\n \"label\": this.locale(Texts, 'Name'),\r\n \"key\": \"name\",\r\n \"flex\": 1\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Size'),\r\n \"key\": \"size\",\r\n \"format\": \"integer\",\r\n \"align\": \"right\"\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Type'),\r\n \"key\": \"type\" \r\n },\r\n {\r\n \"key\": \"url\",\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"objectURL\"\r\n },\r\n {\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"deleteRow\"\r\n }\r\n ],\r\n \"dataSource\": \"=\" + component.key,\r\n \"height\": 200,\r\n \"conditional\": component.conditional,\r\n \"disabled\": component.disabled\r\n }\r\n ]\r\n }\r\n ];\r\n });\r\n }\r\n\r\n fileUploaded($event: NgxSirioEvent<SirioFileUploadComponent>) {\r\n const removeFile = (file: File) => {\r\n if ($event.component.control) {\r\n const newFiles = $event.component.fileList.filter(f => f !== file);\r\n $event.component.control.setValue(newFiles);\r\n addRemove(newFiles);\r\n return newFiles;\r\n }\r\n return [];\r\n }\r\n\r\n const addRemove = (files: File[]) => {\r\n files.forEach(file => {\r\n if (!('remove' in file)) {\r\n Object.defineProperty(file, 'remove', {\r\n value: function () {\r\n removeFile(this);\r\n },\r\n writable: false,\r\n enumerable: false\r\n });\r\n } \r\n }); \r\n };\r\n\r\n addRemove($event.component.fileList);\r\n }\r\n\r\n private invalidate(text: string | null): void {\r\n return this.programmability.invalidate(text);\r\n }\r\n\r\n private getControlFromPath(path: string | null): AbstractControl | null {\r\n const control = path\r\n ? this.formGroup.get(path)\r\n : this.formGroup;\r\n\r\n if (!control) {\r\n throw new Error(`FormGroup does not contain a control with path '${path}'`, { cause: this.formGroup });\r\n }\r\n return control;\r\n }\r\n\r\n private focusFirst() {\r\n const focusableElements = this.el.nativeElement.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n for (let el of focusableElements) {\r\n if (!(el as HTMLElement).hasAttribute('disabled')) {\r\n (el as HTMLElement).focus();\r\n break;\r\n } \r\n }\r\n }\r\n\r\n private getAsObservable(value: any): Observable<any> {\r\n if (isObservable(value))\r\n return value;\r\n return of(value);\r\n }\r\n\r\n private configureDatepicker() {\r\n (Datepicker.locales as any)['it'] = {\r\n days: [\r\n 'Domenica',\r\n 'Lunedì',\r\n 'Martedì',\r\n 'Mercoledì',\r\n 'Giovedì',\r\n 'Venerdì',\r\n 'Sabato',\r\n ],\r\n daysMin: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],\r\n months: [\r\n 'Gennaio',\r\n 'Febbraio',\r\n 'Marzo',\r\n 'Aprile',\r\n 'Maggio',\r\n 'Giugno',\r\n 'Luglio',\r\n 'Agosto',\r\n 'Settembre',\r\n 'Ottobre',\r\n 'Novembre',\r\n 'Dicembre',\r\n ],\r\n monthsShort: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'Mag',\r\n 'Giu',\r\n 'Lug',\r\n 'Ago',\r\n 'Set',\r\n 'Ott',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n today: 'Oggi',\r\n clear: 'Pulisci',\r\n format: 'dd/mm/yyyy',\r\n weekStart: 1\r\n };\r\n };\r\n}\r\n","<ng-container *ngFor=\"let row of rows\" [formGroup]=\"formGroup\">\r\n <div class=\"row field-set\">\r\n <ng-container *ngFor=\"let component of row.components\">\r\n <ng-container [ngSwitch]=\"component.type\">\r\n <div [class]=\"getClass(component)\">\r\n <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <!-- #region textfield -->\r\n <ng-container *ngSwitchCase=\"'textfield'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"text\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n dropdown\r\n #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"locale(Texts, 'TypeToSearch')\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [isMultiple]=\"true\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"number\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n number\r\n [defaultValue]=\"evaluateNumber(component.defaultValue)\"\r\n [minimum]=\"evaluateNumber(component.minimum)\"\r\n [maximum]=\"evaluateNumber(component.maximum)\"\r\n [decimalDigits]=\"evaluateNumber(component.decimalDigits)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaDateLabel') || locale(component, 'dateLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'dateLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n isoDate\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaTimeLabel') || locale(component, 'timeLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'timeLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"textarea\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-file-upload [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ locale(Texts, 'Upload') }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-slider [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [min]=\"evaluateNumber(component.range?.min) ?? 0\"\r\n [max]=\"evaluateNumber(component.range?.max) ?? 0\"\r\n #range\r\n [register]=\"component\"\r\n [componentRef]=\"range\">\r\n </ngx-sirio-slider>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\"\r\n [repeat]=\"evaluateNumber(component.repetitions)\"\r\n [allowAddRemove]=\"evaluateBoolean(component.allowAddRemove)\">\r\n <p *ngIf=\"component.description\">{{ evaluateString(locale(component, 'description')) }}</p>\r\n <ng-container *ngIf=\"getFormArray(resolvePath(component.path).get(component.key)) as formArray\">\r\n <ng-container *ngIf=\"formArray.controls.length > 0\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [tabCount]=\"formArray.controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\">\r\n <ng-container *ngIf=\"i === dynamiclisttab.activeIndex\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"formArray.controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel #panel accordionPanel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <ng-container *ngIf=\"panel.panelIsOpen\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true, 'group-outline-repeat': true }\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <label>{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"{\r\n 'group-outline': component.showOutline === true,\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <div #group\r\n [register]=\"component\"\r\n [componentRef]=\"group\">\r\n <app-dynamic-fields [formGroup]=\"resolvePath(component.path)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <ngx-sirio-tab #tab\r\n [register]=\"component\"\r\n [componentRef]=\"tab\"\r\n [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [isNavLine]=\"component.navigation\"\r\n [isVertical]=\"component.vertical\"\r\n tabControl>\r\n <ng-container *ngFor=\"let panel of component.panels; let i = index;\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(panel, 'label'))\"\r\n [icon]=\"evaluateString(panel.icon)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <div *ngIf=\"i === tab.activeIndex\" [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <ngx-sirio-accordion #accordion\r\n [register]=\"component\"\r\n [componentRef]=\"accordion\">\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-accordion-panel *ngIf=\"evaluateConditional(panel.conditional)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled)\">\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(panel, 'label'))\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div [collapse]=\"component.collapseTo\"\r\n [language]=\"language\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n <!--Reset View Context-->\r\n <div tabindex=\"0\" style=\"display:none\"></div>\r\n <div class=\"flex\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n <ng-container *ngIf=\"component.tooltip\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [attr.aria-label]=\"locale(Texts, 'Information')\"\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'tooltip')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region html -->\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <div class=\"html-paragraph\"\r\n [innerHTML]=\"sanitize(evaluateTemplate(locale(component, 'content')))\"\r\n #html\r\n [register]=\"component\"\r\n [componentRef]=\"html\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img [src]=\"evaluateString(component.source)\"\r\n [alt]=\"evaluateString(locale(component, 'alt'))\"\r\n style=\"width: 100%;height: 100%;\"\r\n #image\r\n [register]=\"component\"\r\n [componentRef]=\"image\">\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\r\n [gridOptions]=\"getGridOptions(component)\"\r\n (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [rowSource]=\"(getRowSource(component) | async) || []\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height.px]=\"component.height\"\r\n #table\r\n [register]=\"component\"\r\n [componentRef]=\"table\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region button -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <label [for]=\"component.id\">{{ evaluateString(locale(component, 'label')) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(locale(component, 'label'))\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"locale(Texts, 'Close')\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(locale(component, 'title'))\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(locale(component, 'title')) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region chart -->\r\n <ng-container *ngSwitchCase=\"'chart'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-charts [options]=\"getChartOptions(component)\"\r\n [style.height.px]=\"component.height\"\r\n #chart\r\n [register]=\"component\"\r\n [componentRef]=\"chart\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","/// <reference path=\"../types/typings.d.ts\" />\r\n\r\nimport {\r\n Component, Input, Output, OnChanges, OnDestroy \r\n , SimpleChanges, ViewEncapsulation, EventEmitter\r\n , ViewChild, ElementRef, Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormBuilder, FormGroup, FormControlOptions, AbstractControl\r\n , ValidatorFn, Validators, ValidationErrors,\r\n FormArray\r\n} from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { patchForm } from '../utils/patchForm';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { CommandEvent, EventService } from '../services/event.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { FunctionService } from '../services/function.service';\r\nimport { DialogService, FormDialogOptions } from '../services/dialog.service';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport {\r\n SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , SirioStepperProgressStatus\r\n} from 'ngx-sirio-lib';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { DisableFormDirective } from '../directives/disableform.directive';\r\nimport { Control } from '../controls/control'; \r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'app-dynamic-form',\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: [\r\n '../shared/bootstrap-grid.scss',\r\n './dynamic-form.component.css'\r\n ],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , RegisterDirective, DisableFormDirective\r\n , SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , DynamicFieldsComponent],\r\n providers: [\r\n EventService\r\n , ProgrammabilityService\r\n , RegisterService\r\n , MetadataService\r\n , FunctionService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormComponent implements OnChanges, OnDestroy {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() value: any = {};\r\n @Input() strict: boolean = false;\r\n @Input() showNav: boolean = true;\r\n @Input() showNavButton: boolean = true;\r\n @Input() showProgress: boolean = false;\r\n @Input() showFormTitle: boolean = false;\r\n @Input() progressStatus: boolean = true;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() initialized = new EventEmitter<FormGroup>();\r\n @Output() onCommand = new EventEmitter<CommandEvent>();\r\n @Output() activeNavChange = new EventEmitter<any>();\r\n @ViewChild('default') formDiv!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private fb: FormBuilder\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private registerService: RegisterService\r\n , private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector\r\n ) { }\r\n\r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n private internalChange = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.onChangeSchema(); \r\n }\r\n\r\n if (changes['value']) {\r\n this.onChangeValue();\r\n }\r\n }\r\n\r\n get forms(): Array<any> {\r\n return this._forms;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n canPrevious(): boolean {\r\n return this.getPrevious() != -1; \r\n }\r\n\r\n goPrevious() {\r\n if (this.canPrevious()) {\r\n this.activeNav = this.getPrevious();\r\n }\r\n }\r\n\r\n canNext(): boolean {\r\n return this.getNext() != -1; \r\n }\r\n\r\n goNext() {\r\n if (this.canNext()) { \r\n this.activeNav = this.getNext();\r\n }\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n return this.registerService.getControl(name);\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n return this.registerService.getControlAs(name, type);\r\n }\r\n\r\n get activeNav(): number {\r\n return this._activeNav;\r\n }\r\n\r\n @Input()\r\n set activeNav(value: number) {\r\n if (value >= 0 && value < this.getMaxNav()) {\r\n this._activeNav = value;\r\n } \r\n setTimeout(() => {\r\n if (this.formDiv?.nativeElement) {\r\n setFocus(this.formDiv.nativeElement);\r\n }\r\n this.activeNavChange.emit(this._activeNav);\r\n });\r\n }\r\n\r\n get language(): string {\r\n return this._language;\r\n }\r\n\r\n @Input()\r\n set language(value: string) {\r\n this._language = value ?? '';\r\n this.metadata.setLanguage(this._language);\r\n }\r\n\r\n getFormGroup(path: string | null): FormGroup {\r\n const control = path ? this.formGroup.get(path) : this.formGroup;\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormStatus(form: any, index: number): SirioStepperProgressStatus {\r\n\r\n const current = index == this.activeNav;\r\n\r\n if (this.progressStatus && !current && this.hasValue(form.path)) {\r\n const formGroup = this.getFormGroup(form.path);\r\n return formGroup.valid ? \"success\" : \"error\";\r\n }\r\n else {\r\n return \"active\";\r\n } \r\n }\r\n\r\n activateForm(title: string) {\r\n const index = this.forms.findIndex(form => form.title === title);\r\n if (index != -1)\r\n this.activeNav = index;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n return this.programmability.evaluateBoolean(this.formGroup, value);\r\n }\r\n\r\n evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n openForm(template: string, options: FormDialogOptions) {\r\n const formSchema = this.metadata.getTemplateByName(template);\r\n if (formSchema) {\r\n options = {\r\n ...options,\r\n injector: this.injector,\r\n language: this.language,\r\n };\r\n this.dialog.openDialog(formSchema, options);\r\n } \r\n }\r\n\r\n refresh() {\r\n patchForm(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n }\r\n\r\n private valueChangesSubscription: Subscription | null = null;\r\n private onCommandSubscription: Subscription | null = null;\r\n\r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private _language: string = \"\";\r\n\r\n private defaultValue: any = { };\r\n\r\n private onChangeSchema() {\r\n if (!this.formGroup) {\r\n this.formGroup = this.fb.group({});\r\n }\r\n\r\n this.clearControls();\r\n\r\n this.clearHandlers();\r\n\r\n const schema = this.schema;\r\n\r\n const allForms = groupByRow(schema.forms ?? []);\r\n\r\n this.metadata.setSchema(schema);\r\n\r\n this.metadata.setForms(allForms);\r\n\r\n this._forms = allForms.filter(item => item.isTemplate !== true);;\r\n\r\n this.buildForm();\r\n\r\n this.defaultValue = this.formGroup.value;\r\n\r\n if (this.value) {\r\n patchForm(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n }\r\n\r\n if (this.initialized)\r\n this.initialized.emit(this.formGroup);\r\n\r\n this.registerHandlers(); \r\n }\r\n\r\n private onChangeValue() {\r\n if (this.internalChange) {\r\n this.internalChange = false;\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n this.clearFormArrays(this.formGroup);\r\n patchForm(this.formGroup, this.value, {\r\n emitEvent: false,\r\n strict: this.strict\r\n });\r\n }\r\n }\r\n\r\n private getNext(): number {\r\n let index = this.activeNav + 1;\r\n const max = this.getMaxNav();\r\n\r\n while (index < max) {\r\n if (!this.isDisabled(index)) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n private getPrevious(): number {\r\n let index = this.activeNav - 1;\r\n\r\n while (index >= 0) {\r\n if (!this.isDisabled(index)) {\r\n return index;\r\n }\r\n index--;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n private getMaxNav(): number {\r\n return this._forms.length ?? 0; \r\n };\r\n\r\n private isDisabled(index: number): boolean {\r\n var form = this._forms[index];\r\n\r\n if (!form)\r\n return false;\r\n\r\n return this.evaluateBoolean(form.disabled) ?? false;\r\n }\r\n \r\n private clearControls(): void {\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n this.formGroup.removeControl(key);\r\n });\r\n }\r\n\r\n private clearFormArrays(control: AbstractControl): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear();\r\n control.markAsPristine();\r\n control.markAsUntouched();\r\n } else if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach(childControl => {\r\n this.clearFormArrays(childControl);\r\n });\r\n }\r\n }\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n this.internalChange = true;\r\n this.valueChange.emit(value);\r\n });\r\n\r\n this.onCommandSubscription = this.events.onCommand.subscribe((data) => {\r\n if (this.onCommand)\r\n this.onCommand.emit(data);\r\n });\r\n };\r\n\r\n private clearHandlers(): void {\r\n if (this.valueChangesSubscription) {\r\n this.valueChangesSubscription.unsubscribe();\r\n }\r\n\r\n if (this.onCommandSubscription) {\r\n this.onCommandSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private buildForm() {\r\n this.forms.forEach((form: any) => {\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components);\r\n });\r\n });\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder, formGroup: FormGroup, components: Array<any>) {\r\n let formComponent = this;\r\n\r\n components?.forEach((component: any) => {\r\n if (this.isFormComponent(component)) {\r\n const currentGroup = this.applyPath(this.fb, formGroup, component.path);\r\n let defaultValue = this.getDefaultValue(component);\r\n const validators = this.getValidators(currentGroup, component);\r\n const options: FormControlOptions = {\r\n validators: validators || [],\r\n updateOn: this.getUpdateOn(component) || \"change\"\r\n };\r\n const control = formBuilder.control(defaultValue, options);\r\n currentGroup.addControl(component.key, control);\r\n }\r\n else if (this.isContainerComponent(component)) {\r\n const containers = this.getContainers(component);\r\n containers?.forEach((container: { path: any; rows: any }) => {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, container.path);\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components);\r\n });\r\n });\r\n }\r\n else if (this.isArrayComponent(component)) {\r\n const itemComponent = this.getArrayItem(component);\r\n if (itemComponent.key) {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, itemComponent.path);\r\n this.createFormArray(formBuilder, currentGroup, itemComponent);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder, formGroup: FormGroup, itemComponent: any): FormArray {\r\n const formComponent = this;\r\n\r\n const formArray = formBuilder.array<FormGroup>([]);\r\n\r\n formGroup.addControl(itemComponent.key, formArray);\r\n\r\n const createItem = function (): FormGroup {\r\n let newGroup = formBuilder.group({});\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components);\r\n });\r\n return newGroup;\r\n };\r\n\r\n const resizeFormArray = this.resizeFormArray;\r\n\r\n const addItem = function (this: FormArray) {\r\n let newGroup = createItem();\r\n this.push(newGroup);\r\n return newGroup;\r\n };\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.resize = resize;\r\n }\r\n\r\n const resize = function (this: FormArray, size: number) {\r\n const newArray = resizeFormArray(this, size, createItem);\r\n prepareArray(newArray);\r\n formGroup.setControl(itemComponent.key, newArray);\r\n };\r\n\r\n prepareArray(formArray);\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: () => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n newArray.push(createItem());\r\n }\r\n return newArray;\r\n }\r\n else if (formArray.length > size) {\r\n return new FormArray(formArray.controls.slice(0, size));\r\n }\r\n else {\r\n return formArray;\r\n }\r\n }\r\n\r\n private applyPath(formBuilder: FormBuilder, formGroup: FormGroup, path: string) {\r\n if (!path) {\r\n return formGroup;\r\n }\r\n let currentGroup: FormGroup = formGroup;\r\n this.splitPath(path).forEach((segment) => {\r\n const existGroup = currentGroup.get(segment);\r\n if (existGroup instanceof FormGroup) {\r\n currentGroup = existGroup;\r\n return;\r\n }\r\n else if (existGroup) {\r\n throw new Error(`Cannot create form group because an element with path ${segment} already exists`);\r\n }\r\n else {\r\n const segmentGroup = formBuilder.group({});\r\n currentGroup.addControl(segment, segmentGroup);\r\n currentGroup = segmentGroup;\r\n } \r\n });\r\n return currentGroup;\r\n }\r\n\r\n private getValidators(formGroup: FormGroup, component: any): ValidatorFn[] | null {\r\n\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (component?.validate?.required === true) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n if (!Array.isArray(component.validations)) {\r\n if (validators.length == 0)\r\n return null;\r\n return validators;\r\n }\r\n\r\n component.validations?.forEach((item: any) => {\r\n if (!this.programmability.isExpression(item.expression))\r\n return;\r\n\r\n if (item.type === \"validate\") {\r\n validators.push(this.validateFn(formGroup, item));\r\n }\r\n else if (item.type === \"invalidate\") {\r\n validators.push(this.invalidateFn(formGroup, item));\r\n } \r\n });\r\n\r\n if (validators.length == 0)\r\n return null;\r\n\r\n return validators;\r\n }\r\n\r\n private validateFn(formGroup: FormGroup, item: any): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n //if (!control.touched)\r\n // return null;\r\n\r\n var valid = this.programmability.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n if (!valid) {\r\n return { error: true, message: this.locale(item, 'message') };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n private invalidateFn(formGroup: FormGroup, item: any): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n //if (!control.touched)\r\n // return null;\r\n\r\n var invalid = this.programmability.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n if (invalid) {\r\n return { error: true, message: this.locale(item, 'message') };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n private isFormComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"checkbox\":\r\n case \"checklist\":\r\n case \"datetime\":\r\n case \"filepicker\":\r\n case \"number\":\r\n case \"radio\":\r\n case \"select\":\r\n case \"taglist\":\r\n case \"textarea\":\r\n case \"textfield\":\r\n case \"range\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isContainerComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"group\":\r\n case \"tab\":\r\n case \"accordion\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isArrayComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"dynamiclist\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n \r\n private getArrayItem(component: any): { key: any; path: any; rows: any } {\r\n if (component.type === 'dynamiclist') {\r\n return { key: component.key, path: component.path, rows: component.rows };\r\n }\r\n else {\r\n return { key: null, path: null, rows: [] };\r\n }\r\n }\r\n\r\n private getContainers(component: any): { path: any; rows: any }[] {\r\n if (component.type === 'group') {\r\n return [{ path: component.path, rows: component.rows }];\r\n }\r\n else if (component.type === 'tab'\r\n || component.type === 'accordion') {\r\n return component.panels.map((panel: any) => ({\r\n path: panel.path,\r\n rows: this.metadata.getFormByName(panel.template)?.rows ?? []\r\n }));\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private getUpdateOn(component: any): any {\r\n switch (component.type) {\r\n case \"number\":\r\n case \"textarea\":\r\n case \"textfield\":\r\n return \"blur\";\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private getDefaultValue(component: any): any {\r\n switch (component.type) {\r\n case \"textarea\":\r\n case \"textfield\":\r\n case \"radio\":\r\n case \"select\":\r\n return component.defaultValue as string;\r\n case \"number\":\r\n return component.defaultValue as number;\r\n case \"checkbox\":\r\n return component.defaultValue as boolean;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private splitPath(path: string): string[] {\r\n if (!path) {\r\n return [];\r\n }\r\n return path\r\n .split('.')\r\n .map(segment => segment.trim())\r\n .filter(segment => segment.length > 0);\r\n }\r\n\r\n private hasValue(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngs\">\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n\r\n <!-- #region progress -->\r\n <ngx-sirio-stepper-progress-bar *ngIf=\"showProgress\"\r\n (eventClick)=\"activateForm($event.data.label)\"\r\n [hasDropdown]=\"true\"\r\n [dropDownLabel]=\"locale(Texts, 'Show')\">\r\n <ng-container *ngFor=\"let form of forms, let formIndex = index\">\r\n <ngx-sirio-stepper-progress-item *ngIf=\"!evaluateBoolean(form.disabled)\"\r\n [hasNavigation]=\"true\"\r\n [status]=\"getFormStatus(form,formIndex)\"\r\n [label]=\"evaluateTemplate(locale(form, 'title'))\" />\r\n </ng-container>\r\n </ngx-sirio-stepper-progress-bar>\r\n <!-- #endregion -->\r\n\r\n <!-- #region form disable -->\r\n <ng-container *ngFor=\"let form of forms\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(form.disabled),\r\n formGroup: formGroup,\r\n path: form.path\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <ng-container *ngIf=\"showNav\">\r\n\r\n <div class=\"col-md-4\">\r\n\r\n <!-- #region sidenav -->\r\n <ng-template #sidenavTemplate>\r\n <ngx-sirio-sidenav>\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == sectionIndex\"\r\n (click)=\"activeNav = sectionIndex\"\r\n (keydown.enter)=\"activeNav = sectionIndex\"\r\n tabindex=\"0\">\r\n {{ evaluateTemplate(locale(form, 'title')) }}\r\n </ngx-sirio-sidenav-item>\r\n </ng-container>\r\n </ng-container>\r\n </ngx-sirio-sidenav>\r\n </ng-template>\r\n\r\n <ngx-sirio-sidenav-mobile class=\"d-block d-lg-none\"\r\n [openMenuLabel]=\"locale(Texts, 'OpenMenu')\"\r\n [openMenuAriaLabel]=\"locale(Texts, 'OpenMenu')\"\r\n [closeMenuLabel]=\"locale(Texts, 'CloseMenu')\"\r\n closeMenuAriaLabel=\"locale(Texts, 'CloseMenu')\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </ngx-sirio-sidenav-mobile>\r\n <div class=\"d-none d-lg-block\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n </div>\r\n\r\n <div class=\"col-md-1\">\r\n <div class=\"separator-horizontal\"></div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div class=\"content-element-form\" [ngClass]=\"showNav ? 'col-md-11' : 'col-md-16'\">\r\n\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <div *ngIf=\"activeNav == sectionIndex && !evaluateBoolean(form.disabled)\"\r\n #default\r\n [register]=\"form\"\r\n [componentRef]=\"default\">\r\n <h1 *ngIf=\"showFormTitle && form.title\" class=\"h3 form-title\">{{ evaluateTemplate(locale(form, 'title')) }}</h1>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(form.path)\"\r\n [rows]=\"form.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showNavButton && (canNext() || canPrevious())\">\r\n\r\n <div class=\"row section-navs\">\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" *ngIf=\"canNext()\" (click)=\"goNext()\" class=\"nextSection\">\r\n {{ locale(Texts, 'NextSection') }}\r\n <span class=\"fa-solid fa-chevron-right\" style=\"margin-left: 10px\"></span>\r\n </ngx-sirio-button>\r\n </div>\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" *ngIf=\"canPrevious()\" (click)=\"goPrevious()\" class=\"prevSection\">\r\n <span class=\"fa-solid fa-chevron-left\" style=\"margin-right: 10px\"></span>\r\n {{ locale(Texts, 'PreviousSection') }}\r\n </ngx-sirio-button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n</form>\r\n\r\n\r\n\r\n","export function extractFiles(data: any)\r\n : { data: any; files: File[] }\r\n{\r\n let files: File[] = [];\r\n\r\n const rewrite = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => rewrite(item));\r\n }\r\n else if (obj instanceof File) {\r\n files.push(obj);\r\n return {\r\n name: obj.name,\r\n size: obj.size,\r\n type: obj.type,\r\n lastModified: obj.lastModified,\r\n _fileIndex: files.length - 1\r\n };\r\n }\r\n else if (typeof obj === 'object' && obj !== null) {\r\n const rewritten: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n rewritten[key] = rewrite(obj[key]);\r\n }\r\n }\r\n return rewritten;\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n return { data: rewrite(data), files: files };\r\n}\r\n","import { extractFiles } from \"./extractFiles\";\r\n\r\nexport function toFormData(data: any): FormData\r\n{\r\n const formData = new FormData();\r\n\r\n var result = extractFiles(data);\r\n\r\n formData.append(\"data\", JSON.stringify(result.data));\r\n \r\n result.files.forEach((file) => {\r\n formData.append(\"files\", file);\r\n });\r\n\r\n return formData;\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { IGetRowsParams } from 'ag-grid-community';\r\nimport { IRowsSource } from './interfaces';\r\n\r\nexport class ODataSource implements IRowsSource {\r\n constructor(private url: string\r\n , private http: HttpClient) {\r\n }\r\n\r\n getRows(params: IGetRowsParams) {\r\n const queryString = this.getQueryString(params);\r\n\r\n let queryUrl = `${this.url}${queryString}`\r\n\r\n this.http.get<any>(queryUrl, { observe: 'response' }).subscribe({\r\n next: response => {\r\n const data = response.body ?? [];\r\n const count = response.headers.get('X-Total-Count');\r\n params.successCallback(data, this.toNumber(count));\r\n },\r\n error: error => {\r\n console.log(error);\r\n params.failCallback();\r\n }\r\n });\r\n }\r\n\r\n private getQueryString(params: IGetRowsParams): string {\r\n let queryParams = new HttpParams();\r\n queryParams = this.addCount(queryParams);\r\n queryParams = this.addSkipAndTake(params, queryParams);\r\n queryParams = this.addOrderBy(params, queryParams);\r\n queryParams = this.addFilterBy(params, queryParams);\r\n\r\n const queryString = queryParams.toString();\r\n return queryString ? \"?\" + queryString : queryString;\r\n }\r\n\r\n private addCount(queryParams: HttpParams): HttpParams {\r\n return queryParams.set(\"$count\", \"true\");\r\n }\r\n\r\n private addSkipAndTake(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n return queryParams\r\n .set(\"$top\", `${params.endRow - params.startRow}`)\r\n .set(\"$skip\", `${params.startRow}`);\r\n }\r\n\r\n private addOrderBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n if (!params.sortModel || params.sortModel.length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const orderByParams = params.sortModel\r\n .map(sort => `${sort.colId} ${sort.sort}`)\r\n .join(\",\");\r\n\r\n return queryParams.set(\"$orderby\", orderByParams);\r\n }\r\n\r\n private addFilterBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n\r\n const filterModel = params.filterModel;\r\n\r\n if (!filterModel || Object.keys(filterModel).length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const filters: string[] = [];\r\n\r\n for (const column in filterModel) {\r\n const filter = filterModel[column];\r\n\r\n const condition = this.getCondition(column, filter);\r\n\r\n if (condition) {\r\n filters.push(condition);\r\n }\r\n }\r\n\r\n return queryParams.set(\"$filter\", filters.join(\" and \"));\r\n }\r\n\r\n private getCondition(column: string, filter: any): string | null {\r\n\r\n if (filter.operator === \"AND\" || filter.operator === \"OR\") {\r\n if (Array.isArray(filter.conditions)) {\r\n return \"(\" + filter.conditions.map((subfilter: any) => this.getCondition(column, subfilter))\r\n .join(` ${filter.operator.toLowerCase()} `) + \")\";\r\n }\r\n return null;\r\n }\r\n\r\n const value = filter.filter;\r\n\r\n switch (filter.filterType) {\r\n case \"text\":\r\n const text = (value ?? \"\").replace(/'/g, \"''\");\r\n if (filter.type === \"contains\") {\r\n return `contains(${column}, '${text}')`;\r\n } else if (filter.type === \"notContains\") {\r\n return `not contains(${column}, '${text}')`;\r\n } else if (filter.type === \"equals\") {\r\n return `${column} eq '${text}'`;\r\n } else if (filter.type === \"notEqual\") {\r\n return `${column} ne '${text}'`;\r\n } else if (filter.type === \"startsWith\") {\r\n return `startswith(${column}, '${text}')`;\r\n } else if (filter.type === \"endsWith\") {\r\n return `endswith(${column}, '${text}')`;\r\n } else if (filter.type === \"blank\") {\r\n return `${column} eq null`;\r\n } else if (filter.type === \"notBlank\") {\r\n return `${column} ne null`;\r\n } else if (filter.type === \"true\") {\r\n return `${column} eq true`;\r\n } else if (filter.type === \"false\") {\r\n return `${column} eq false`;\r\n }\r\n break;\r\n\r\n case \"number\":\r\n if (filter.type === \"equals\") {\r\n return `${column} eq ${value}`;\r\n } else if (filter.type === \"greaterThan\") {\r\n return `${column} gt ${value}`;\r\n } else if (filter.type === \"lessThan\") {\r\n return `${column} lt ${value}`;\r\n } else if (filter.type === \"greaterThanOrEqual\") {\r\n return `${column} ge ${value}`;\r\n } else if (filter.type === \"lessThanOrEqual\") {\r\n return `${column} le ${value}`;\r\n }\r\n break;\r\n\r\n case \"date\":\r\n return `${column} eq ${value}`; // Modifica se OData usa formati ISO\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private toNumber(value: string | null): number | undefined {\r\n if (!value)\r\n return undefined;\r\n const num = parseFloat(value);\r\n return isNaN(num) ? undefined : num;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport class RestDataSource<T, T2 = T> {\r\n private params: Record<string, any> = {};\r\n private mapFn?: (data: T) => T2;\r\n\r\n constructor(private http: HttpClient\r\n , private baseUrl: string) { }\r\n\r\n setParam(key: string, value: any): RestDataSource<T, T2> {\r\n if (value !== undefined && value !== null) {\r\n this.params[key] = value;\r\n } else {\r\n delete this.params[key];\r\n }\r\n return this;\r\n }\r\n\r\n setParams(params: Record<string, any>): RestDataSource<T, T2> {\r\n this.params = { ...params };\r\n return this;\r\n }\r\n\r\n setMapFunction(mapFn: (data: T) => T2): RestDataSource<T, T2> {\r\n this.mapFn = mapFn;\r\n return this;\r\n }\r\n\r\n getMapFunction(): ((data: T) => T2) | undefined {\r\n return this.mapFn;\r\n }\r\n\r\n getParam(key: string): any {\r\n return this.params[key];\r\n }\r\n\r\n getParams(): Record<string, any> {\r\n return this.params;\r\n }\r\n\r\n getData(): Observable<T2[]> {\r\n let httpParams = new HttpParams();\r\n\r\n Object.keys(this.params).forEach(key => {\r\n if (this.params[key] !== undefined && this.params[key] !== null) {\r\n httpParams = httpParams.set(key, this.params[key].toString());\r\n }\r\n });\r\n\r\n return this.http.get<T[]>(this.baseUrl, { params: httpParams }).pipe(\r\n map(responseArray =>\r\n this.mapFn ? responseArray.map(item => this.mapFn!(item)) : responseArray as unknown as T2[]\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ODataSource } from '../dataSources/odata';\r\nimport { RestDataSource } from '../dataSources/rest';\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataService {\r\n\r\n constructor(\r\n private http: HttpClient)\r\n { }\r\n\r\n queryOData(url: string): IRowsSource {\r\n return this.createOData(url);\r\n }\r\n\r\n createRest(url: string): RestDataSource<any, any>;\r\n createRest<T>(url: string): RestDataSource<T, T>;\r\n createRest<T, T2>(url: string): RestDataSource<T, T2>;\r\n createRest<T = any, T2 = T>(url: string): RestDataSource<T, T2> {\r\n return new RestDataSource<T, T2>(this.http, url);\r\n }\r\n\r\n private createOData(url: string): IRowsSource {\r\n return new ODataSource(url, this.http);\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["evaluateTemplate","evaluate","Texts","it","en","de","fr","es","pt","i1.MetadataService","i2.DialogService","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FunctionService","i6.RegisterService","i7.ScopeService","FormControl","i1.ProgrammabilityService","i1","i2","i1.FormatterService","i2.ProgrammabilityService","takeUntil","i1.RegisterService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.EventService","i6.WeakService","i7.RegisterService","i8.MetadataService","i9.GridService","i10.ChartService","i12","i3.EventService","i4.RegisterService","i5.MetadataService","i6.DialogService","i7"],"mappings":"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"}
1
+ {"version":3,"file":"wemake4u-form-player-se.mjs","sources":["../../../projects/ngx-sirio/src/lib/utils/functions.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/services/toast.service.ts","../../../projects/ngx-sirio/src/lib/directives/dialog.directive.ts","../../../projects/ngx-sirio/src/lib/locale/locale-it.ts","../../../projects/ngx-sirio/src/lib/locale/locale-en.ts","../../../projects/ngx-sirio/src/lib/locale/locale-de.ts","../../../projects/ngx-sirio/src/lib/locale/locale-fr.ts","../../../projects/ngx-sirio/src/lib/locale/locale-es.ts","../../../projects/ngx-sirio/src/lib/locale/locale-pt.ts","../../../projects/ngx-sirio/src/lib/locale/locale.ts","../../../projects/ngx-sirio/src/lib/locale/localize.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.html","../../../projects/ngx-sirio/src/lib/services/dialog.service.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/controls/control.ts","../../../projects/ngx-sirio/src/lib/services/register.service.ts","../../../projects/ngx-sirio/src/lib/services/scope.service.ts","../../../projects/ngx-sirio/src/lib/services/programmability.service.ts","../../../projects/ngx-sirio/src/lib/utils/patchForm.ts","../../../projects/ngx-sirio/src/lib/utils/groupByRow.ts","../../../projects/ngx-sirio/src/lib/services/event.service.ts","../../../projects/ngx-sirio/src/lib/utils/gridCells.ts","../../../projects/ngx-sirio/src/lib/utils/cell-templates/objectUrl.component.html","../../../projects/ngx-sirio/src/lib/utils/cell-templates/delete.component.html","../../../projects/ngx-sirio/src/lib/utils/cell-templates/actions.component.html","../../../projects/ngx-sirio/src/lib/common/symbols.ts","../../../projects/ngx-sirio/src/lib/common/record.ts","../../../projects/ngx-sirio/src/lib/utils/setFilter.ts","../../../projects/ngx-sirio/src/lib/utils/cell-templates/setfilter.component.html","../../../projects/ngx-sirio/src/lib/utils/focusable.ts","../../../projects/ngx-sirio/src/lib/services/formatter.service.ts","../../../projects/ngx-sirio/src/lib/services/grid.service.ts","../../../projects/ngx-sirio/src/lib/utils/observableAll.ts","../../../projects/ngx-sirio/src/lib/services/chart.service.ts","../../../projects/ngx-sirio/src/lib/directives/adorner.directive.ts","../../../projects/ngx-sirio/src/lib/directives/disable.directive.ts","../../../projects/ngx-sirio/src/lib/directives/display.directive.ts","../../../projects/ngx-sirio/src/lib/directives/repeat.directive.ts","../../../projects/ngx-sirio/src/lib/directives/framesecurity.directive.ts","../../../projects/ngx-sirio/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tab.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordion.directive.ts","../../../projects/ngx-sirio/src/lib/directives/grid.directive.ts","../../../projects/ngx-sirio/src/lib/directives/change.directive.ts","../../../projects/ngx-sirio/src/lib/controls/form.ts","../../../projects/ngx-sirio/src/lib/controls/textfield.ts","../../../projects/ngx-sirio/src/lib/controls/select.ts","../../../projects/ngx-sirio/src/lib/controls/taglist.ts","../../../projects/ngx-sirio/src/lib/controls/number.ts","../../../projects/ngx-sirio/src/lib/controls/date.ts","../../../projects/ngx-sirio/src/lib/controls/time.ts","../../../projects/ngx-sirio/src/lib/controls/toggle.ts","../../../projects/ngx-sirio/src/lib/controls/checkbox.ts","../../../projects/ngx-sirio/src/lib/controls/chipradio.ts","../../../projects/ngx-sirio/src/lib/controls/radio.ts","../../../projects/ngx-sirio/src/lib/controls/chipchecklist.ts","../../../projects/ngx-sirio/src/lib/controls/checklist.ts","../../../projects/ngx-sirio/src/lib/controls/textarea.ts","../../../projects/ngx-sirio/src/lib/controls/filepicker.ts","../../../projects/ngx-sirio/src/lib/controls/text.ts","../../../projects/ngx-sirio/src/lib/controls/html.ts","../../../projects/ngx-sirio/src/lib/controls/image.ts","../../../projects/ngx-sirio/src/lib/controls/tab.ts","../../../projects/ngx-sirio/src/lib/controls/chart.ts","../../../projects/ngx-sirio/src/lib/controls/accordion.ts","../../../projects/ngx-sirio/src/lib/controls/dynamiclist.ts","../../../projects/ngx-sirio/src/lib/controls/group.ts","../../../projects/ngx-sirio/src/lib/controls/table.ts","../../../projects/ngx-sirio/src/lib/controls/button.ts","../../../projects/ngx-sirio/src/lib/controls/separator.ts","../../../projects/ngx-sirio/src/lib/controls/spacer.ts","../../../projects/ngx-sirio/src/lib/controls/iframe.ts","../../../projects/ngx-sirio/src/lib/controls/tooltip.ts","../../../projects/ngx-sirio/src/lib/controls/factory.ts","../../../projects/ngx-sirio/src/lib/directives/register.directive.ts","../../../projects/ngx-sirio/src/lib/directives/refresh.directive.ts","../../../projects/ngx-sirio/src/lib/directives/updateblur.directive.ts","../../../projects/ngx-sirio/src/lib/directives/date.directive.ts","../../../projects/ngx-sirio/src/lib/directives/number.directive.ts","../../../projects/ngx-sirio/src/lib/directives/text.directive.ts","../../../projects/ngx-sirio/src/lib/directives/disableform.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapse.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordionpanel.directive.ts","../../../projects/ngx-sirio/src/lib/shared/template-wrapper/template-wrapper.component.ts","../../../projects/ngx-sirio/src/lib/services/sanitize.service.ts","../../../projects/ngx-sirio/src/lib/services/markdown.service.ts","../../../projects/ngx-sirio/src/lib/services/mime.service.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.html","../../../projects/ngx-sirio/src/lib/dynamic-form/dynamic-form.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-form/dynamic-form.component.html","../../../projects/ngx-sirio/src/lib/utils/extractFiles.ts","../../../projects/ngx-sirio/src/lib/utils/toFormData.ts","../../../projects/ngx-sirio/src/lib/dataSources/odata.ts","../../../projects/ngx-sirio/src/lib/dataSources/rest.ts","../../../projects/ngx-sirio/src/lib/services/data.service.ts","../../../projects/ngx-sirio/src/wemake4u-form-player-se.ts"],"sourcesContent":["export function ToBoundArrows<T extends object>(\r\n instance: T,\r\n methodNames: (keyof T)[]) : Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const name of methodNames) {\r\n const original = instance[name];\r\n if (typeof original === 'function') {\r\n result[name as string] = (...args: any[]) => original.apply(instance, args);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function ToProxy(instance: any) {\r\n\r\n if (!instance) {\r\n return instance;\r\n }\r\n\r\n return new Proxy(instance, {\r\n get: (target: any, property) => {\r\n\r\n let value = undefined;\r\n\r\n if (property in target) {\r\n value = Reflect.get(target, property, target);\r\n }\r\n\r\n if (typeof value === 'function') {\r\n return (...args: any[]) => value.apply(instance, args);\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n return ToProxy(value);\r\n }\r\n\r\n return value;\r\n }\r\n });\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { evaluate as evaluateTemplate } from 'feelers';\r\nimport { unaryTest, evaluate, parseExpression } from 'feelin';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeelService {\r\n\r\n constructor() { }\r\n\r\n evalTemplate(template: string, context: any = {}): string {\r\n return evaluateTemplate(template, context);\r\n };\r\n\r\n evalExpression(expression: string, context: Record<string, any> = {}): any {\r\n return evaluate(expression, context);\r\n };\r\n\r\n evalUnaryTest(expression: string, context: Record<string, any> = {}, input: any = null): boolean {\r\n try {\r\n context['?'] = input;\r\n return unaryTest(expression, context);\r\n } \r\n finally {\r\n delete context['?'];\r\n }\r\n };\r\n\r\n getDependencies(expression: string, context: Record<string, any> = {}): (string | string[])[] {\r\n const dependencies: (string | string[])[] = [];\r\n const uniqueSet = new Set<string>();\r\n const addSet = (text: string) => {\r\n if (uniqueSet.has(text)) {\r\n return false;\r\n }\r\n else {\r\n uniqueSet.add(text);\r\n return true;\r\n } \r\n };\r\n parseExpression(expression, context).iterate({\r\n enter: (node: any) => {\r\n if (node.name === 'VariableName') {\r\n const text = expression.substring(node.from, node.to);\r\n if (addSet(text)) {\r\n dependencies.push(text);\r\n } \r\n }\r\n else if (node.name === 'PathExpression') {\r\n const text = expression.substring(node.from, node.to);\r\n if (addSet(text)) {\r\n const path: string[] = [];\r\n node.iterate((subnode: any) => {\r\n if (subnode.name === 'VariableName') {\r\n const part = expression.substring(subnode.from, subnode.to);\r\n path.push(part);\r\n }\r\n });\r\n dependencies.push(path);\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n });\r\n return dependencies;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isObservable, of, take, tap } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WeakService {\r\n\r\n constructor() { }\r\n\r\n private cache = new WeakMap<object, Record<string, any>>();\r\n\r\n exists(source: object, key: string) {\r\n if (this.cache.has(source)) {\r\n const cachedObject = this.cache.get(source)!;\r\n return (key in cachedObject);\r\n }\r\n return false;\r\n }\r\n\r\n call<T>(source: object, key: string, func: () => T\r\n , reusable: ((value: T) => boolean) | null = null\r\n , store: ((value: T) => any) | null = null\r\n ): T {\r\n if (!this.cache.has(source)) {\r\n this.cache.set(source, {});\r\n }\r\n\r\n const cachedObject = this.cache.get(source)!;\r\n\r\n if (key in cachedObject\r\n && (reusable == null\r\n || reusable(cachedObject[key])))\r\n {\r\n return cachedObject[key];\r\n }\r\n\r\n let result: any = func();\r\n\r\n if (store != null) {\r\n result = store(result);\r\n }\r\n\r\n const observable = isObservable(result);\r\n\r\n if (observable) {\r\n result = result.pipe(\r\n take(1),\r\n tap((res: any) => {\r\n cachedObject[key] = of(res);\r\n }),\r\n shareReplay(1)\r\n );\r\n }\r\n\r\n cachedObject[key] = result;\r\n\r\n return result;\r\n }\r\n\r\n invalidate(source: object, key: string) {\r\n if (this.cache.has(source)) {\r\n const cachedObject = this.cache.get(source)!;\r\n delete cachedObject[key];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { SirioToastService, ToastTypes } from \"ngx-sirio-lib\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private sirioToast: SirioToastService\r\n ) { }\r\n\r\n notifyInfo(message: string, delay: number = 2000) {\r\n this.notify(message, \"info\", delay);\r\n }\r\n\r\n notifySuccess(message: string, delay: number = 2000) {\r\n this.notify(message, \"success\", delay);\r\n }\r\n\r\n notifyWarning(message: string, delay: number = 2000) {\r\n this.notify(message, \"warning\", delay);\r\n }\r\n\r\n notifyError(message: string, delay: number = 2000) {\r\n this.notify(message, \"danger\", delay);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"notifyInfo\",\r\n \"notifySuccess\",\r\n \"notifyWarning\",\r\n \"notifyError\"\r\n ]);\r\n }\r\n\r\n private notify(message: string, type: ToastTypes, delay: number = 2000) {\r\n this.sirioToast.openToast({\r\n delay: delay,\r\n text: message,\r\n type: type\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { SirioDialogComponent } from 'ngx-sirio-lib';\r\n@Directive({\r\n selector: '[dialog]',\r\n standalone: true\r\n})\r\nexport class DialogDirective {\r\n\r\n constructor(private host: SirioDialogComponent) {\r\n\r\n const focusEvents = host.handleFocusEvents;\r\n\r\n host.handleFocusEvents = () => {\r\n if (this.host.withCloseButton) {\r\n focusEvents.apply(this.host);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","export const Texts = {\r\n TypeToSearch: \"Digita per cercare...\",\r\n Upload: \"Upload\",\r\n ScrollLeft: \"Scorri a sinistra\",\r\n ScrollRight: \"Scorri a destra\",\r\n AddItem: \"Aggiungi\",\r\n RemoveItem: \"Rimuovi\",\r\n PreviousSection: \"Sezione precedente\",\r\n NextSection: \"Sezione successiva\",\r\n Show: \"Visualizza\",\r\n Remove: \"Rimuovi\",\r\n Close: \"Chiudi\",\r\n Confirm: \"Conferma\",\r\n OK: \"OK\",\r\n Cancel: \"Annulla\",\r\n Abort: \"Interrompi\",\r\n Retry: \"Riprova\",\r\n Ignore: \"Ignora\",\r\n Yes: \"Sì\",\r\n No: \"No\",\r\n Try: \"Prova\",\r\n Continue: \"Continua\",\r\n Name: \"Nome\",\r\n Size: \"Dimensione\",\r\n Type: \"Tipo\",\r\n Actions: \"Azioni\",\r\n ReadMore: \"Leggi di più\",\r\n ReadLess: \"Leggi di meno\",\r\n SelectAll: \"Seleziona tutto\",\r\n ChooseOne: \"Scegli uno\",\r\n True: \"Vero\",\r\n False: \"Falso\",\r\n Blank: \"Vuoto\",\r\n NotBlank: \"Non vuoto\",\r\n Information: \"Informazioni\",\r\n OpenMenu: \"Apri Menu\",\r\n CloseMenu: \"Chiudi Menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Type to search...\",\r\n Upload: \"Upload\",\r\n ScrollLeft: \"Scroll left\",\r\n ScrollRight: \"Scroll right\",\r\n AddItem: \"Add\",\r\n RemoveItem: \"Remove\",\r\n PreviousSection: \"Previous section\",\r\n NextSection: \"Next section\",\r\n Show: \"Show\",\r\n Remove: \"Remove\",\r\n Close: \"Close\",\r\n Confirm: \"Confirm\",\r\n OK: \"OK\",\r\n Cancel: \"Cancel\",\r\n Abort: \"Abort\",\r\n Retry: \"Retry\",\r\n Ignore: \"Ignore\",\r\n Yes: \"Yes\",\r\n No: \"No\",\r\n Try: \"Try\",\r\n Continue: \"Continue\",\r\n Name: \"Name\",\r\n Size: \"Size\",\r\n Type: \"Type\",\r\n Actions: \"Actions\",\r\n ReadMore: \"Read more\",\r\n ReadLess: \"Read less\",\r\n SelectAll: \"Select all\",\r\n ChooseOne: \"Choose one\",\r\n True: \"True\",\r\n False: \"False\",\r\n Blank: \"Blank\",\r\n NotBlank: \"Not blank\",\r\n Information: \"Information\",\r\n OpenMenu: \"Open menu\",\r\n CloseMenu: \"Close menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Zum Suchen tippen...\",\r\n Upload: \"Hochladen\",\r\n ScrollLeft: \"Nach links scrollen\",\r\n ScrollRight: \"Nach rechts scrollen\",\r\n AddItem: \"Hinzufügen\",\r\n RemoveItem: \"Entfernen\",\r\n PreviousSection: \"Vorheriger Abschnitt\",\r\n NextSection: \"Nächster Abschnitt\",\r\n Show: \"Anzeigen\",\r\n Remove: \"Entfernen\",\r\n Close: \"Schließen\",\r\n Confirm: \"Bestätigen\",\r\n OK: \"OK\",\r\n Cancel: \"Abbrechen\",\r\n Abort: \"Abbrechen\",\r\n Retry: \"Wiederholen\",\r\n Ignore: \"Ignorieren\",\r\n Yes: \"Ja\",\r\n No: \"Nein\",\r\n Try: \"Versuchen\",\r\n Continue: \"Fortsetzen\",\r\n Name: \"Name\",\r\n Size: \"Größe\",\r\n Type: \"Typ\",\r\n Actions: \"Aktionen\",\r\n ReadMore: \"Mehr lesen\",\r\n ReadLess: \"Weniger lesen\",\r\n SelectAll: \"Alles auswählen\",\r\n ChooseOne: \"Wähle eine Option\",\r\n True: \"Wahr\",\r\n False: \"Falsch\",\r\n Blank: \"Leer\",\r\n NotBlank: \"Nicht leer\",\r\n Information: \"Informationen\",\r\n OpenMenu: \"Menü öffnen\",\r\n CloseMenu: \"Menü schließen\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Tapez pour rechercher...\",\r\n Upload: \"Téléverser\",\r\n ScrollLeft: \"Faire défiler vers la gauche\",\r\n ScrollRight: \"Faire défiler vers la droite\",\r\n AddItem: \"Ajouter\",\r\n RemoveItem: \"Supprimer\",\r\n PreviousSection: \"Section précédente\",\r\n NextSection: \"Section suivante\",\r\n Show: \"Afficher\",\r\n Remove: \"Supprimer\",\r\n Close: \"Fermer\",\r\n Confirm: \"Confirmer\",\r\n OK: \"OK\",\r\n Cancel: \"Annuler\",\r\n Abort: \"Abandonner\",\r\n Retry: \"Réessayer\",\r\n Ignore: \"Ignorer\",\r\n Yes: \"Oui\",\r\n No: \"Non\",\r\n Try: \"Essayer\",\r\n Continue: \"Continuer\",\r\n Name: \"Nom\",\r\n Size: \"Taille\",\r\n Type: \"Type\",\r\n Actions: \"Actions\",\r\n ReadMore: \"Lire la suite\",\r\n ReadLess: \"Lire moins\",\r\n SelectAll: \"Tout sélectionner\",\r\n ChooseOne: \"Choisir un\",\r\n True: \"Vrai\",\r\n False: \"Faux\",\r\n Blank: \"Vide\",\r\n NotBlank: \"Non vide\",\r\n Information: \"Informations\",\r\n OpenMenu: \"Ouvrir le menu\",\r\n CloseMenu: \"Fermer le menu\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Escribe para buscar...\",\r\n Upload: \"Subir\",\r\n ScrollLeft: \"Desplazar a la izquierda\",\r\n ScrollRight: \"Desplazar a la derecha\",\r\n AddItem: \"Agregar\",\r\n RemoveItem: \"Eliminar\",\r\n PreviousSection: \"Sección anterior\",\r\n NextSection: \"Sección siguiente\",\r\n Show: \"Mostrar\",\r\n Remove: \"Eliminar\",\r\n Close: \"Cerrar\",\r\n Confirm: \"Confirmar\",\r\n OK: \"OK\",\r\n Cancel: \"Cancelar\",\r\n Abort: \"Abortar\",\r\n Retry: \"Reintentar\",\r\n Ignore: \"Ignorar\",\r\n Yes: \"Sí\",\r\n No: \"No\",\r\n Try: \"Intentar\",\r\n Continue: \"Continuar\",\r\n Name: \"Nombre\",\r\n Size: \"Tamaño\",\r\n Type: \"Tipo\",\r\n Actions: \"Acciones\",\r\n ReadMore: \"Leer más\",\r\n ReadLess: \"Leer menos\",\r\n SelectAll: \"Seleccionar todo\",\r\n ChooseOne: \"Elige uno\",\r\n True: \"Verdadero\",\r\n False: \"Falso\",\r\n Blank: \"Vacío\",\r\n NotBlank: \"No vacío\",\r\n Information: \"Información\",\r\n OpenMenu: \"Abrir menú\",\r\n CloseMenu: \"Cerrar menú\"\r\n};\r\n","export const Texts = {\r\n TypeToSearch: \"Digite para pesquisar...\",\r\n Upload: \"Enviar\",\r\n ScrollLeft: \"Rolar para a esquerda\",\r\n ScrollRight: \"Rolar para a direita\",\r\n AddItem: \"Adicionar\",\r\n RemoveItem: \"Remover\",\r\n PreviousSection: \"Seção anterior\",\r\n NextSection: \"Próxima seção\",\r\n Show: \"Mostrar\",\r\n Remove: \"Remover\",\r\n Close: \"Fechar\",\r\n Confirm: \"Confirmar\",\r\n OK: \"OK\",\r\n Cancel: \"Cancelar\",\r\n Abort: \"Abortar\",\r\n Retry: \"Tentar novamente\",\r\n Ignore: \"Ignorar\",\r\n Yes: \"Sim\",\r\n No: \"Não\",\r\n Try: \"Tentar\",\r\n Continue: \"Continuar\",\r\n Name: \"Nome\",\r\n Size: \"Tamanho\",\r\n Type: \"Tipo\",\r\n Actions: \"Ações\",\r\n ReadMore: \"Leia mais\",\r\n ReadLess: \"Leia menos\",\r\n SelectAll: \"Selecionar tudo\",\r\n ChooseOne: \"Escolha um\",\r\n True: \"Verdadeiro\",\r\n False: \"Falso\",\r\n Blank: \"Vazio\",\r\n NotBlank: \"Não vazio\",\r\n Information: \"Informações\",\r\n OpenMenu: \"Abrir menu\",\r\n CloseMenu: \"Fechar menu\"\r\n};\r\n","import { Texts as it } from '../locale/locale-it';\r\nimport { Texts as en } from '../locale/locale-en';\r\nimport { Texts as de } from '../locale/locale-de';\r\nimport { Texts as fr } from '../locale/locale-fr';\r\nimport { Texts as es } from '../locale/locale-es';\r\nimport { Texts as pt } from '../locale/locale-pt';\r\n\r\nexport const Texts = {\r\n ...it, // neutral\r\n i18n: {\r\n it: it,\r\n en: en,\r\n de: de,\r\n fr: fr,\r\n es: es,\r\n pt: pt\r\n } \r\n};\r\n","const i18n = \"i18n\";\r\n\r\nexport function localize(language: string, component: any, key: string): string {\r\n const lng = language?.toLowerCase();\r\n if (lng) {\r\n return component[i18n]?.[lng]?.[key]\r\n || component[key]\r\n || \"\";\r\n }\r\n else {\r\n return component[key]\r\n || \"\";\r\n }\r\n}\r\n","import {\r\n Component, ChangeDetectionStrategy, ViewContainerRef, ViewChild, ComponentRef, Type\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FormDialogOptions, DialogAction, DialogResult } from '../services/dialog.service';\r\nimport { DialogDirective } from '../directives/dialog.directive';\r\nimport {\r\n SirioDialogComponent, SirioDialogBodyComponent, SirioDialogHeaderComponent\r\n , SirioDialogFooterComponent, SirioButtonComponent, SirioDialogActionDirective\r\n , SirioDialogTitleComponent, SirioDialogElement\r\n} from 'ngx-sirio-lib';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'dynamic-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DialogDirective,\r\n SirioDialogComponent,\r\n SirioDialogBodyComponent,\r\n SirioDialogHeaderComponent,\r\n SirioDialogFooterComponent,\r\n SirioButtonComponent,\r\n SirioDialogActionDirective,\r\n SirioDialogTitleComponent \r\n ],\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends SirioDialogElement {\r\n @ViewChild('formHost', { read: ViewContainerRef, static: true })\r\n private formHost!: ViewContainerRef;\r\n private formRef!: ComponentRef<any>\r\n private dynamicFormType!: Type<any>;\r\n Texts = Texts;\r\n\r\n ngOnInit() {\r\n this.options = this.data.options ?? {};\r\n this.currentValue = this.options.value;\r\n this.dynamicFormType = this.data.dynamicFormType;\r\n }\r\n\r\n options: FormDialogOptions = { };\r\n \r\n ngAfterViewInit() {\r\n\r\n let injector = this.options.injector\r\n ?? this.formHost.injector;\r\n\r\n const componentRef = this.formHost.createComponent(this.dynamicFormType, { injector });\r\n const instance = componentRef.instance as any;\r\n\r\n componentRef.setInput('schema', this.data.formSchema);\r\n componentRef.setInput('language', this.data.language);\r\n componentRef.setInput('value', this.options.value ?? { });\r\n componentRef.setInput('showNav', this.options.showNav ?? false);\r\n componentRef.setInput('showNavButton', this.options.showNavButton ?? false);\r\n componentRef.setInput('showProgress', this.options.showProgress ?? false);\r\n componentRef.setInput('showFormTitle', this.options.showFormTitle ?? false);\r\n\r\n instance.valueChange\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((value: any) => this.setCurrentValue(value));\r\n\r\n this.formRef = componentRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n doClose() {\r\n this.doAction('Close');\r\n }\r\n\r\n doAction(action: DialogAction) {\r\n this.sirioDialogService.closeDialog();\r\n this.SendResult(action); \r\n }\r\n\r\n showHeader(): boolean {\r\n return this.showTitle() || this.showCloseButton(); \r\n }\r\n\r\n showTitle(): boolean {\r\n return this.options.title ? true: false;\r\n }\r\n\r\n showCloseButton(): boolean {\r\n const result = this.options.closeButton === true;\r\n return result;\r\n }\r\n\r\n showFooter(): boolean {\r\n return this.options.buttons !== undefined;\r\n }\r\n\r\n isInvalid(): boolean {\r\n return (this.formRef?.instance?.formGroup?.valid ?? true) !== true;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.options.language ?? '', component, key);\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private currentValue: any;\r\n\r\n private setCurrentValue(value: any): void {\r\n this.currentValue = value;\r\n }\r\n\r\n private SendResult(action: DialogAction) {\r\n if (typeof this.options.onResult === 'function') {\r\n const result: DialogResult = {\r\n action: action,\r\n value: this.currentValue\r\n };\r\n this.options.onResult(result);\r\n }\r\n }\r\n}\r\n","<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { SirioDialogService, DialogTypes, DialogSizes } from 'ngx-sirio-lib';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private dialogService: SirioDialogService\r\n )\r\n { }\r\n\r\n openDialog(formSchema: any, options?: FormDialogOptions) {\r\n this.showDialog(formSchema, options);\r\n }\r\n\r\n alert(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions : FormDialogOptions = {\r\n ...options,\r\n type: \"warning\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n info(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n confirm(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'YesNo',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n }; \r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'openDialog',\r\n 'alert',\r\n 'info',\r\n 'confirm'\r\n ]);\r\n }\r\n\r\n private showDialog(formSchema: any, options?: FormDialogOptions) {\r\n \r\n const data = {\r\n formSchema,\r\n options,\r\n dynamicFormType: DynamicFormComponent\r\n };\r\n\r\n this.dialogService\r\n .openDialog(DialogComponent, data);\r\n }\r\n\r\n private createTextSchema(text: string) {\r\n return {\r\n \"forms\": [\r\n {\r\n \"components\": [\r\n {\r\n \"text\": text,\r\n \"type\": \"text\",\r\n \"layout\": {\r\n \"row\": \"Row_14z9myo\",\r\n \"columns\": null\r\n },\r\n \"id\": \"Field_1xibp2r\"\r\n }\r\n ],\r\n \"type\": \"default\",\r\n \"id\": \"Form_0lotm2h\",\r\n \"schemaVersion\": 18\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n\r\nexport interface DialogOptions {\r\n type?: DialogTypes;\r\n size?: DialogSizes;\r\n title?: string;\r\n isDrawer?: boolean; \r\n closeButton?: boolean;\r\n language?: string;\r\n buttons?: DialogButtons; \r\n onResult?: (result: DialogResult) => void;\r\n}\r\n\r\nexport interface FormDialogOptions extends DialogOptions {\r\n value?: any;\r\n injector?: Injector;\r\n showNav?: boolean;\r\n showNavButton?: boolean;\r\n showProgress?: boolean;\r\n showFormTitle?: boolean;\r\n}\r\n\r\nexport interface DialogResult {\r\n action: DialogAction;\r\n value?: any;\r\n}\r\n\r\nexport type DialogAction = 'OK'\r\n | 'Cancel'\r\n | 'Yes'\r\n | 'No'\r\n | 'Confirm'\r\n | 'Close'\r\n | 'Abort'\r\n | 'Retry'\r\n | 'Ignore'\r\n | 'Try'\r\n | 'Continue';\r\n\r\nexport type DialogButtons = 'OK'\r\n | 'OKCancel'\r\n | 'ConfirmCancel'\r\n | 'AbortRetryIgnore'\r\n | 'YesNoCancel'\r\n | 'YesNo'\r\n | 'RetryCancel'\r\n | 'CancelTryContinue';\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class MetadataService {\r\n\r\n constructor() {\r\n \r\n }\r\n\r\n setSchema(schema: any) {\r\n this.schema = schema ?? { forms: [] };\r\n } \r\n\r\n getSchema(): any {\r\n return this.schema;\r\n }\r\n\r\n setForms(forms: any[]) {\r\n this.forms = forms ?? []; \r\n }\r\n\r\n getTemplateByName(name: string): any {\r\n\r\n if (!this.schema || !Array.isArray(this.schema.forms)) {\r\n return undefined;\r\n }\r\n\r\n const templates = this.schema.forms.filter((form: any) => form.isTemplate === true);\r\n\r\n const templateToExpand = templates.find((form: any) => form.name === name);\r\n\r\n if (!templateToExpand) {\r\n return undefined;\r\n }\r\n\r\n const clonedForm = {\r\n ...templateToExpand,\r\n isTemplate: false\r\n };\r\n\r\n const newForms = templates\r\n .filter((form: any) => form.name !== name)\r\n .concat(clonedForm);\r\n\r\n return {\r\n forms: newForms\r\n };\r\n }\r\n\r\n getForms(): any[] {\r\n return this.forms;\r\n }\r\n\r\n getFormByName(name: string): any {\r\n return this.forms.find(form => form.name === name);\r\n }\r\n\r\n setLanguage(language: string) {\r\n this.language = language ?? '';\r\n }\r\n\r\n getLanguage(): string {\r\n return this.language;\r\n }\r\n\r\n private schema: any = { forms: [] };\r\n\r\n private forms: any[] = [];\r\n\r\n private language: string = '';\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { DialogService, DialogOptions, FormDialogOptions } from '../services/dialog.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class FunctionService implements IEvaluatorProvider {\r\n\r\n constructor(private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector) { }\r\n\r\n invokable(func: any): Function {\r\n const className = Object.getPrototypeOf(func)?.constructor?.name;\r\n if (className === 'FunctionWrapper') {\r\n return (...args: any) => func.invoke(args);\r\n }\r\n else {\r\n return () => { };\r\n }\r\n }\r\n\r\n openForm(template: string, options: DialogOptions)\r\n {\r\n const formSchema = this.metadata.getTemplateByName(template);\r\n\r\n if (formSchema) {\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n language: this.metadata.getLanguage(),\r\n injector: this.injector\r\n }\r\n\r\n this.dialog.openDialog(formSchema, formOptions);\r\n }\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\"\r\n ]);\r\n }\r\n}\r\n","import { ElementRef } from \"@angular/core\";\r\nimport { RegisterService } from \"../services/register.service\";\r\n\r\nexport class Control {\r\n constructor(\r\n public readonly name: string,\r\n private readonly metadata: any,\r\n private readonly componentRef: any,\r\n private readonly elementRef: ElementRef) {\r\n }\r\n\r\n getMetadata(): any {\r\n return this.metadata;\r\n }\r\n\r\n getComponentRef(): any {\r\n return this.componentRef;\r\n }\r\n\r\n getElementRef(): ElementRef {\r\n return this.elementRef;\r\n }\r\n}\r\n\r\nexport class ContainerControl extends Control {\r\n constructor(\r\n name: string,\r\n metadata: any,\r\n componentRef: any,\r\n elementRef: ElementRef,\r\n private register: RegisterService | undefined) {\r\n super(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n findControl(predicate: (control: Control) => boolean, firstOnly: boolean): Control[] {\r\n if (this.register) {\r\n return this.register.findControl(predicate, firstOnly, false);\r\n }\r\n else {\r\n return [];\r\n }\r\n } \r\n}\r\n\r\nexport class ItemControl extends ContainerControl {\r\n\r\n constructor(\r\n name: string,\r\n public readonly index: number,\r\n metadata: any,\r\n componentRef: any,\r\n elementRef: ElementRef,\r\n register: RegisterService | undefined) {\r\n super(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { Control, ContainerControl } from '../controls/control';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class RegisterService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: RegisterService | null)\r\n {\r\n }\r\n\r\n private controls: Record<string, Control> = {};\r\n\r\n register(name: string, control: Control) {\r\n this.controls[name] = control;\r\n }\r\n\r\n unregister(name: string) {\r\n delete this.controls[name];\r\n }\r\n\r\n unregisterAll() {\r\n this.controls = { };\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return {\r\n control: (name: string) => this.getControl(name)\r\n };\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n name = this.castString(name);\r\n\r\n if (!name)\r\n return null;\r\n\r\n if (name.startsWith(\"../\"))\r\n return this.resolveParent(name.substring(3));\r\n \r\n const controls = this.findControl(control => control.name === name, true, true);\r\n return (controls.length === 0)\r\n ? null\r\n : controls[0];\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n const ctrl = this.getControl(name);\r\n return ctrl instanceof type ? ctrl : null;\r\n }\r\n\r\n findControl(predicate: (control: Control) => boolean, firstOnly: boolean = false, parent: boolean = false): Control[] {\r\n const controls: Control[] = [];\r\n\r\n for (const control of Object.values(this.controls)) {\r\n if (predicate(control)) {\r\n controls.push(control);\r\n if (firstOnly) {\r\n return controls;\r\n }\r\n }\r\n\r\n if (control instanceof ContainerControl) {\r\n controls.push(...control.findControl(predicate, firstOnly));\r\n if (controls.length > 0 && firstOnly) {\r\n return controls;\r\n }\r\n }\r\n }\r\n\r\n if (parent) {\r\n let currentParent = this.parent;\r\n\r\n while (currentParent) {\r\n for (const control of Object.values(currentParent.controls)) {\r\n if (predicate(control)) {\r\n controls.push(control);\r\n if (firstOnly) {\r\n return controls;\r\n }\r\n }\r\n }\r\n currentParent = currentParent.parent;\r\n }\r\n }\r\n \r\n return controls;\r\n }\r\n\r\n private castString(value: any): string {\r\n return typeof value === 'string' ? value.trim() : \"\";\r\n }\r\n\r\n private resolveParent(name: string) : Control | null {\r\n if (!this.parent) {\r\n return null;\r\n }\r\n else {\r\n return this.parent.getControl(name);\r\n }\r\n }\r\n}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class ScopeService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: ScopeService | null) {\r\n }\r\n\r\n private scope: Record<string, any> | null = null;\r\n\r\n set(scope: Record<string, any> | null) {\r\n this.scope = scope;\r\n }\r\n\r\n get(): Record<string, any> | null {\r\n return this.scope; \r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...this.scope,\r\n parent: () => {\r\n this.parent?.getContext();\r\n }\r\n };\r\n } \r\n}\r\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport { FeelService } from '../services/feel.service';\r\nimport { ScopeService } from '../services/scope.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { ToastService } from '../services/toast.service';\r\nimport { FunctionService } from '../services/function.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { ToProxy } from '../utils/functions';\r\nimport { Subject, takeUntil, isObservable, take } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class ProgrammabilityService implements OnDestroy {\r\n\r\n constructor(private feelService: FeelService\r\n , private weakService: WeakService\r\n , private toastService: ToastService\r\n , private dialogService: DialogService\r\n , private functionService: FunctionService\r\n , @Optional() private register: RegisterService\r\n , @Optional() private scope: ScopeService\r\n ) {\r\n\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n\r\n private readonly predefinedFunctions: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return text != null && text.startsWith(\"=\");\r\n };\r\n\r\n getExpression(text: string | null): string {\r\n if (this.isExpression(text))\r\n return text!.substring(1);\r\n return \"\";\r\n };\r\n\r\n watchExpression(formGroup: FormGroup, value: string | null, callback: (value: any) => void): void {\r\n if (this.isExpression(value) && callback) {\r\n const expression = this.getExpression(value);\r\n\r\n const evaluateAndCall = () => { \r\n const result = this.evalExpression(formGroup, expression, { cacheable: false });\r\n if (isObservable(result)) {\r\n result.pipe(\r\n take(1)\r\n ).subscribe((data: any) => {\r\n callback(data);\r\n });\r\n }\r\n else {\r\n callback(result);\r\n }\r\n }\r\n\r\n this.watchingExpression(formGroup, expression, () => {\r\n evaluateAndCall();\r\n });\r\n\r\n evaluateAndCall();\r\n }\r\n }\r\n\r\n evaluateString(formGroup: FormGroup, value: string | null): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n return value ?? \"\";\r\n }\r\n\r\n evaluateBoolean(formGroup: FormGroup, value: boolean | string | null, options: EvaluateOptions = {}): boolean | null {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue), options) as boolean;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue)) as number;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = { }): any {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options);\r\n }\r\n return null;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null): any {\r\n\r\n let template: string | null = null;\r\n\r\n if (this.isExpression(value)) {\r\n template = this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n return this.evalTemplate(formGroup, template ?? \"\");\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input);\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(value: string | null): void {\r\n if (this.isExpression(value)) {\r\n this.weakService.invalidate(this, this.getExpression(value));\r\n }\r\n }\r\n\r\n private cacheable: boolean = true;\r\n\r\n private evalUnaryTest(formGroup: FormGroup, expression: string, input: any) {\r\n try {\r\n return this.feelService.evalUnaryTest(expression\r\n , this.getContext(formGroup)\r\n , input);\r\n } catch (e) {\r\n console.log(expression, e);\r\n return null;\r\n }\r\n }\r\n\r\n private evalExpression(formGroup: FormGroup, expression: string, options: EvaluateOptions = {}): any {\r\n const evaluate = () => {\r\n try {\r\n return this.feelService.evalExpression(expression\r\n , this.getContext(formGroup, options))\r\n }\r\n catch (e) {\r\n console.log(expression, e);\r\n return null;\r\n }\r\n };\r\n\r\n const cacheable = options.cacheable ?? this.cacheable;\r\n\r\n if (cacheable) {\r\n const watchKey = `:watch(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchingExpression(formGroup, expression\r\n , () => this.weakService.invalidate(this, expression));\r\n return true;\r\n });\r\n\r\n return this.weakService.call(this, expression, evaluate);\r\n }\r\n else {\r\n return evaluate();\r\n }\r\n }\r\n\r\n private evalTemplate(formGroup: FormGroup, expression: string): any {\r\n try {\r\n return this.feelService.evalTemplate(expression\r\n , this.getContext(formGroup));\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n private getPredefinedFunctions(): Record<string, any> {\r\n\r\n const providers: IEvaluatorProvider[] = [\r\n this.dialogService,\r\n this.toastService,\r\n this.functionService,\r\n this.register \r\n ];\r\n\r\n return providers.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private getParentContext(formGroup: FormGroup | null): Record<string, any> | null {\r\n if (formGroup === null) { \r\n return null;\r\n }\r\n\r\n const parent = this.getParent(formGroup);\r\n\r\n if (!parent) {\r\n return null;\r\n }\r\n\r\n return {\r\n ...parent.value,\r\n formGroup: () => parent,\r\n parent: () => this.getParentContext(parent)\r\n }; \r\n }\r\n\r\n private getParent(formGroup: FormGroup) : FormGroup | null {\r\n let parent = formGroup.parent;\r\n\r\n while (parent instanceof FormArray) {\r\n parent = parent?.parent;\r\n }\r\n\r\n return parent as FormGroup | null;\r\n }\r\n\r\n private getContext(control: AbstractControl, options: EvaluateOptions = {}): Record<string, any> {\r\n\r\n const formGroup = control as FormGroup | null;\r\n\r\n const baseContext = formGroup?.value ?? { };\r\n\r\n let context = {\r\n ...baseContext,\r\n parent: () => this.getParentContext(formGroup),\r\n formGroup: () => ToProxy(formGroup),\r\n _: this.scope?.getContext(),\r\n fn: this.predefinedFunctions\r\n }\r\n\r\n if (options.extendContext) {\r\n const extended = options.extendContext();\r\n if (extended) {\r\n context = {\r\n ...context,\r\n ...extended\r\n }\r\n }\r\n }\r\n\r\n return context;\r\n }\r\n\r\n private watchingExpression(formGroup: FormGroup, expression: string, callback: () => void): void {\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getDependencies(expression, context);\r\n this.watchingDependencies(formGroup, dependencies, callback);\r\n };\r\n\r\n private watchingDependencies(formGroup: FormGroup, dependencies: (string | string[])[], callback: () => void): void {\r\n const parentName: string = \"parent\";\r\n\r\n const subscribe = (control: AbstractControl) => {\r\n control.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n });\r\n });\r\n }\r\n\r\n for (const dependence of dependencies) {\r\n if (Array.isArray(dependence)) {\r\n let targetForm: AbstractControl | null = formGroup;\r\n let controlPath = dependence;\r\n\r\n while (controlPath.length > 0 && controlPath[0] === parentName) {\r\n if (!targetForm.parent)\r\n break;\r\n targetForm = targetForm.parent;\r\n controlPath = controlPath.slice(1);\r\n }\r\n\r\n if (controlPath.length > 0 && targetForm) {\r\n const control = targetForm.get(controlPath);\r\n if (control) {\r\n subscribe(control);\r\n }\r\n }\r\n } else {\r\n const control = formGroup.get(dependence);\r\n if (control) {\r\n subscribe(control);\r\n }\r\n }\r\n } \r\n }\r\n}\r\n\r\nexport interface IEvaluatorProvider {\r\n getContext(): Record<string, any>;\r\n}\r\n\r\nexport interface EvaluateOptions {\r\n cacheable?: boolean;\r\n extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n","import { AbstractControl, FormGroup, FormArray, FormControl } from '@angular/forms';\r\n\r\nfunction createControlFromValue(value: any): AbstractControl {\r\n if (value === null || typeof value !== 'object') {\r\n return new FormControl(value);\r\n }\r\n if (Array.isArray(value)) {\r\n return new FormArray(createControlFromArray(value));\r\n }\r\n return new FormGroup({});\r\n}\r\n\r\nfunction createControlFromArray(array: any[]): AbstractControl[] {\r\n return array.map(item => createControlFromValue(item));\r\n}\r\n\r\nexport function patchForm(\r\n control: AbstractControl,\r\n value: any,\r\n options?: {\r\n emitEvent?: boolean;\r\n emitError?: boolean;\r\n emitWarn?: boolean;\r\n validateType?: boolean;\r\n fallbackValue?: any;\r\n strict: boolean;\r\n }\r\n): void {\r\n\r\n const defaultOptions = {\r\n emitEvent: true,\r\n validateType: false,\r\n fallbackValue: null,\r\n strict: true\r\n };\r\n\r\n const warn = (message: string) => {\r\n if (options?.emitWarn)\r\n console.warn(`[patchForm] ${message}`)\r\n };\r\n\r\n const error = (message: string) => {\r\n if (options?.emitError)\r\n throw new Error(message);\r\n };\r\n\r\n const { emitEvent, validateType, fallbackValue, strict }\r\n = { ...defaultOptions, ...options };\r\n\r\n if (control instanceof FormControl) {\r\n if (validateType && typeof value !== typeof control.value) {\r\n warn(`Value type mismatch: expected ${typeof control.value}, but received ${typeof value}`);\r\n\r\n if (fallbackValue !== null) {\r\n control.patchValue(fallbackValue, { emitEvent });\r\n return;\r\n }\r\n error('Invalid value type and no fallback value provided.');\r\n return;\r\n }\r\n control.patchValue(value, { emitEvent });\r\n }\r\n else if (control instanceof FormGroup) {\r\n Object.keys(value || {}).forEach((key) => {\r\n if (control.controls[key]) {\r\n patchForm(control.controls[key], value[key], options);\r\n }\r\n else if (!strict) {\r\n const newControl = createControlFromValue(value[key]);\r\n control.addControl(key, newControl);\r\n patchForm(newControl, value[key], options);\r\n }\r\n else {\r\n warn(`Key \"${key}\" not found in the FormGroup.`);\r\n }\r\n });\r\n }\r\n else if (control instanceof FormArray) {\r\n const valueArray = Array.isArray(value) ? value : [];\r\n while (control.length < valueArray.length) {\r\n const newItemValue = valueArray[control.length];\r\n const newControl = createControlFromValue(newItemValue);\r\n control.push(newControl);\r\n }\r\n while (control.length > valueArray.length) {\r\n control.removeAt(control.length - 1);\r\n }\r\n valueArray.forEach((item: any, index: number) => {\r\n patchForm(control.at(index), item, options);\r\n });\r\n }\r\n else {\r\n error('Unsupported AbstractControl type.');\r\n }\r\n}\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n disabled: string | boolean | null;\r\n path: string | null;\r\n isTemplate: boolean | null;\r\n i18n: any,\r\n components: Component[];\r\n}\r\n\r\ninterface Component {\r\n id: string;\r\n layout: { columns: number | null, row: string };\r\n components?: Component[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface RowComponent {\r\n id: string;\r\n layout: { columns: number | null, row: string };\r\n rows?: RowGroup[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface RowGroup {\r\n row: string;\r\n components: RowComponent[];\r\n}\r\n\r\ninterface GroupedForm {\r\n id: string;\r\n title: string;\r\n isTemplate: boolean | null;\r\n rows: RowGroup[];\r\n [key: string]: any;\r\n}\r\n\r\nexport function groupByRow(forms: Form[]): GroupedForm[] {\r\n return forms.map(form => ({\r\n id: form.id,\r\n type: form.type,\r\n name: form.name,\r\n title: form.title,\r\n disabled: form.disabled,\r\n path: form.path,\r\n isTemplate: form.isTemplate,\r\n i18n: form.i18n,\r\n rows: groupRowsRecursively(form.components)\r\n })); \r\n}\r\n\r\nfunction groupRowsRecursively(components: Component[]): RowGroup[] {\r\n const groupedMap = new Map<string, RowComponent[]>();\r\n\r\n function processComponent(component: Component) {\r\n const row = component.layout.row;\r\n\r\n if (!groupedMap.has(row)) {\r\n groupedMap.set(row, []);\r\n }\r\n\r\n const { components, ...props } = component;\r\n\r\n groupedMap.get(row)!.push({\r\n ...props,\r\n rows: components ? groupRowsRecursively(components) : undefined\r\n });\r\n }\r\n\r\n components.forEach(component => processComponent(component));\r\n\r\n return Array.from(groupedMap.entries()).map(([row, components]) => ({\r\n row,\r\n components\r\n }));\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface CommandEvent {\r\n name: string;\r\n component: any,\r\n formGroup: FormGroup,\r\n event: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventService {\r\n\r\n private commandSubject = new Subject<CommandEvent>();\r\n\r\n onCommand = this.commandSubject.asObservable();\r\n\r\n emitCommand(data: CommandEvent) {\r\n this.commandSubject.next(data);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../services/programmability.service';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nimport { Texts } from '../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './cell-templates/objectUrl.component.html',\r\n standalone: true\r\n})\r\nexport class ObjectURLRendererComponent implements ICellRendererAngularComp {\r\n params!: ICellRendererParams;\r\n\r\n Texts = Texts;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n onClick(event: Event) {\r\n const fileURL = URL.createObjectURL(this.params.data);\r\n window.open(fileURL, '_blank');\r\n setTimeout(() => {\r\n URL.revokeObjectURL(fileURL);\r\n }, 1000);\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n@Component({\r\n templateUrl: './cell-templates/delete.component.html',\r\n standalone: true\r\n})\r\nexport class DeleteRowCellRenderer implements ICellRendererAngularComp {\r\n params: any;\r\n\r\n Texts = Texts;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n }\r\n\r\n onClick(event: Event) {\r\n\r\n if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {\r\n this.params.data.remove();\r\n }\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n@Component({\r\n templateUrl: './cell-templates/actions.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, SirioButtonComponent\r\n ]\r\n})\r\nexport class ActionsCellRenderer implements ICellRendererAngularComp {\r\n\r\n constructor(private programmability: ProgrammabilityService) { }\r\n\r\n params: any;\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n\r\n const options: EvaluateOptions = {\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n data: this.getData()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.getFormGroup(), value);\r\n }\r\n\r\n clickButton(action: any, event: any) {\r\n if (action.click) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n action: action,\r\n data: this.getData()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluate(this.getFormGroup(), action.click, options);\r\n } \r\n }\r\n\r\n private getData(): any {\r\n return this.params.data;\r\n\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup as FormGroup;\r\n }\r\n}\r\n\r\n","<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n","<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n","<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n","export const getLabelSymbol = Symbol('getLabel');\r\n","import { getLabelSymbol } from './symbols';\r\n\r\nexport type LabeledMap<TKey extends string | number, TValue> =\r\n Record<TKey, TValue> & {\r\n [getLabelSymbol]?: (value: TKey) => TValue;\r\n };\r\n\r\nexport function isLabeledRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue,\r\n getLabelSymbol: symbol\r\n): obj is Record<TKey, TValue> & { [key: symbol]: (key: TKey) => TValue } {\r\n if (!isRecord(obj, isKey, isValue)) {\r\n return false;\r\n }\r\n const getLabel = (obj as { [key: symbol]: unknown })[getLabelSymbol];\r\n return (getLabel !== undefined && typeof getLabel === 'function');\r\n}\r\n\r\nexport function isRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue\r\n): obj is Record<TKey, TValue> {\r\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n return false;\r\n }\r\n return Object.entries(obj).every(([key, val]) => {\r\n return isKey(key) && isValue(val);\r\n });\r\n}\r\n\r\nexport function isStringKey(key: any): key is string | number {\r\n return typeof key === 'string';\r\n}\r\n\r\nexport function isNumericKey(key: any): key is string | number {\r\n return typeof key === 'string' && !isNaN(Number(key));\r\n}\r\n\r\nexport function isBooleanKey(key: any): key is string | number {\r\n return key === 'true' || key === 'false';\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { SirioInputComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { isRecord } from '../common/record';\r\nimport { Texts } from '../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './cell-templates/setfilter.component.html',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SirioInputComponent\r\n , SirioCheckboxComponent, SirioCheckboxGroupComponent\r\n , SirioButtonComponent], \r\n})\r\nexport class SetFilterComponent implements IFilterAngularComp {\r\n private params!: IFilterParams;\r\n private fieldName!: string;\r\n\r\n Texts = Texts;\r\n\r\n selectAll: boolean = true;\r\n searchText: string = '';\r\n\r\n options: { value: any; label: string; selected: boolean }[] = [];\r\n filteredOptions: typeof this.options = [];\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.fieldName = params.colDef.field!;\r\n\r\n const map = params.colDef.filterParams?.map;\r\n\r\n const result = isRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string'\r\n );\r\n\r\n if (result) {\r\n this.options = Object.entries(map).map(([key, label]) => ({\r\n value: this.parseKey(key),\r\n label: label,\r\n selected: true\r\n }));\r\n }\r\n else {\r\n this.options = [];\r\n }\r\n \r\n this.filteredOptions = [...this.options];\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.options.some(o => !o.selected);\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const value = this.resolvePath(params.data, this.fieldName);\r\n return this.options.some(o => o.selected && o.value === value);\r\n }\r\n\r\n getModel() {\r\n const selectedValues = this.options\r\n .filter(o => o.selected)\r\n .map(o => o.value);\r\n\r\n if (selectedValues.length === this.options.length) { \r\n return null;\r\n }\r\n\r\n if (selectedValues.length === 0) {\r\n return {\r\n filterType: 'text',\r\n type: 'excludeAll'\r\n }\r\n }\r\n\r\n const filters = selectedValues.map(value => ({\r\n filterType: 'number',\r\n type: 'equals',\r\n filter: value\r\n }));\r\n\r\n if (filters.length === 1)\r\n return filters[0];\r\n\r\n return {\r\n filterType: 'number',\r\n operator: 'OR',\r\n conditions: filters\r\n }\r\n }\r\n\r\n setModel(model: any): void {\r\n const selected = model?.values ?? this.options.map(o => o.value);\r\n this.options.forEach(o => o.selected = selected.includes(o.value));\r\n this.updateFilteredOptions();\r\n }\r\n\r\n onSelectionChange(): void {\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onSearchChange(): void {\r\n this.updateFilteredOptions();\r\n }\r\n\r\n onSelectAllChange(): void { \r\n this.setAll(this.selectAll);\r\n }\r\n\r\n private parseKey(key: string): boolean | number | string {\r\n if (key === 'true') return true;\r\n if (key === 'false') return false;\r\n const num = Number(key);\r\n return isNaN(num) ? key : num;\r\n }\r\n\r\n private setAll(select: boolean): void {\r\n this.options.forEach(o => o.selected = select);\r\n this.updateFilteredOptions();\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n private updateFilteredOptions(): void {\r\n const search = this.searchText.toLowerCase();\r\n this.filteredOptions = this.options.filter(o =>\r\n o.label.toLowerCase().includes(search)\r\n );\r\n }\r\n\r\n private resolvePath(obj: any, path: string): any {\r\n return path.split('.').reduce((acc, part) => acc?.[part], obj);\r\n }\r\n}\r\n","<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n","function getCandidate(element: HTMLElement): HTMLElement[] {\r\n return Array.from(element.querySelectorAll<HTMLElement>(\r\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), ' +\r\n 'textarea:not([disabled]), button:not([disabled]), iframe, object, embed, ' +\r\n '[tabindex]:not([tabindex=\"-1\"]), [contenteditable]'\r\n ));\r\n}\r\n\r\nfunction isVisible(element: HTMLElement): boolean {\r\n let el: HTMLElement | null = element;\r\n while (el) {\r\n const style = window.getComputedStyle(el);\r\n if (style.display === 'none' || style.visibility === 'hidden') return false;\r\n el = el.parentElement;\r\n }\r\n return true;\r\n}\r\n\r\nfunction isFocusable(element: HTMLElement): boolean {\r\n const style = window.getComputedStyle(element);\r\n return element.tabIndex >= 0 &&\r\n style.visibility !== 'hidden' &&\r\n style.display !== 'none' &&\r\n !element.hasAttribute('disabled') &&\r\n isVisible(element);\r\n}\r\n\r\nexport function getFocusables(el: HTMLElement, firstOnly = false): HTMLElement[] {\r\n const candidates = getCandidate(el);\r\n const result: HTMLElement[] = [];\r\n for (const focusableEl of candidates) { \r\n if (isFocusable(focusableEl)) {\r\n result.push(focusableEl);\r\n if (firstOnly) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function setFocus(el: HTMLElement) {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return false;\r\n }\r\n focusables[0].focus();\r\n return true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n//import { FeelService } from '../services/feel.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatterService {\r\n\r\n //constructor(private feelService: FeelService) { }\r\n\r\n constructor() { }\r\n\r\n formatCurrency(value: any, symbol: string | null = null): string {\r\n if (isNaN(value) || value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n const numberValue = parseFloat(value);\r\n if (isNaN(numberValue)) {\r\n return value;\r\n }\r\n\r\n const result = numberValue.toFixed(2).replace(\".\", \",\").replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\r\n\r\n if (symbol) {\r\n return symbol + ' ' + result;\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n\r\n formatDate(value: any): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n formatDateTime(value: any): string {\r\n if (!value) return '';\r\n\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const hasTime = typeof value === 'string' && value.includes('T');\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n if (!hasTime) {\r\n return `${day}/${month}/${year} 00:00:00`;\r\n }\r\n else {\r\n const hours = String(date.getHours()).padStart(2, '0');\r\n const minutes = String(date.getMinutes()).padStart(2, '0');\r\n const seconds = String(date.getSeconds()).padStart(2, '0');\r\n return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;\r\n }\r\n }\r\n\r\n formatInteger(value: any): string {\r\n if (isNaN(value) || value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n const numberValue = parseInt(value, 10);\r\n if (isNaN(numberValue)) {\r\n return value;\r\n }\r\n\r\n return numberValue.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\");\r\n }\r\n\r\n formatExpression(value: any, expression: string): string {\r\n return value as string;\r\n //const result = this.feelService.evalExpression(expression, { value: value }) as string;\r\n //return result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n Module, PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule\r\n , LocaleModule, CellStyleModule, ValidationModule\r\n , RowSelectionModule, RowSelectionOptions \r\n , TextFilterModule, NumberFilterModule, DateFilterModule\r\n , ColDef, themeQuartz, iconSetAlpine, GridOptions, DataTypeDefinition\r\n , ClientSideRowModelApiModule\r\n , GridSizeChangedEvent, ColumnAutoSizeModule, ColumnApiModule\r\n , SuppressKeyboardEventParams\r\n} from 'ag-grid-community';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ObjectURLRendererComponent, DeleteRowCellRenderer, ActionsCellRenderer } from '../utils/gridCells';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { SetFilterComponent } from '../utils/setFilter';\r\nimport { getFocusables } from '../utils/focusable';\r\nimport { isRecord, isLabeledRecord, isNumericKey } from '../common/record';\r\nimport { getLabelSymbol } from '../common/symbols';\r\nimport {\r\n AG_GRID_LOCALE_IT,\r\n AG_GRID_LOCALE_EN,\r\n AG_GRID_LOCALE_DE,\r\n AG_GRID_LOCALE_FR,\r\n AG_GRID_LOCALE_ES,\r\n AG_GRID_LOCALE_PT \r\n} from '@ag-grid-community/locale';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\ntype MapType = Record<string | number, string> | null;\r\n\r\n@Injectable()\r\nexport class GridService {\r\n\r\n constructor(private formatter: FormatterService,\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n getModules(): Module[] {\r\n return [\r\n ClientSideRowModelModule\r\n , InfiniteRowModelModule\r\n , PaginationModule\r\n , LocaleModule\r\n , CellStyleModule\r\n , ClientSideRowModelApiModule\r\n , TextFilterModule\r\n , NumberFilterModule\r\n , DateFilterModule\r\n , ColumnAutoSizeModule\r\n , ColumnApiModule\r\n , RowSelectionModule\r\n , ValidationModule\r\n ];\r\n };\r\n\r\n getOptions(component: any, formGroup: FormGroup, language: string): GridOptions {\r\n const columnDefs = this.getColumns(component, formGroup, language);\r\n const selection = this.getRowSelection(component, formGroup);\r\n const pagination = this.getPaginable(component);\r\n const pageSize = this.getPageSize(component);\r\n const texts = this.getTexts(language);\r\n const theme = this.getTheme();\r\n return {\r\n defaultColDef: {\r\n floatingFilter: (component.floatingFilter === true),\r\n headerClass: (component.floatingFilter === true)\r\n ? 'show-filter' : 'hide-filter'\r\n },\r\n selectionColumnDef: {\r\n pinned: 'left'\r\n },\r\n dataTypeDefinitions: this.getDataTypeDefinitions(),\r\n columnDefs: columnDefs,\r\n rowSelection: selection,\r\n pagination: pagination,\r\n paginationPageSize: pageSize,\r\n cacheBlockSize: pageSize,\r\n paginationPageSizeSelector: [5, 10, 20, 50],\r\n localeText: texts,\r\n enableCellTextSelection: true,\r\n theme: theme, \r\n onGridSizeChanged: (params: GridSizeChangedEvent) => {\r\n params.api.autoSizeColumns([\"actions\"]);\r\n },\r\n };\r\n }\r\n\r\n onSelectionChanged(component: any, formGroup: FormGroup, event: any) {\r\n if (component.selectionChanged) {\r\n return this.programmability.evaluate(formGroup, component.selectionChanged, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n selectedRows: event.api.getSelectedRows()\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n private locale(component: any, key: string, language: string): string {\r\n return localize(language, component, key);\r\n }\r\n\r\n private getColumns(component: any, formGroup: FormGroup, language: string): ColDef[] {\r\n if (Array.isArray(component.columns)) {\r\n const columns = component.columns.map((column: any) => {\r\n const colDef: ColDef = {\r\n field: column.key,\r\n headerName: this.locale(column, 'label', language),\r\n }\r\n\r\n this.setCellDataType(column, colDef);\r\n\r\n const map = this.getMap(column, colDef, formGroup);\r\n\r\n this.setCellRenderer(column, colDef, map);\r\n this.setResizable(column, colDef);\r\n this.setSortable(column, colDef);\r\n this.setFilter(column, colDef, map);\r\n this.setFilterParams(column, colDef, map);\r\n this.setSuppressMovable(column, colDef);\r\n this.setFlex(column, colDef);\r\n this.setAlign(column, colDef);\r\n this.setPinned(column, colDef);\r\n this.setWidth(column, colDef);\r\n this.setValueFormatter(column, colDef, map); \r\n return colDef;\r\n });\r\n\r\n\r\n if (Array.isArray(component.actions) && component.actions.length > 0) {\r\n columns.push({\r\n colId: 'actions',\r\n headerName: this.locale(Texts, 'Actions', language),\r\n resizable: false,\r\n sortable: false,\r\n filter: false,\r\n cellDataType: false,\r\n pinned: \"right\",\r\n cellRendererParams: {\r\n component: component,\r\n formGroup: formGroup\r\n },\r\n cellRenderer: ActionsCellRenderer,\r\n suppressKeyboardEvent: this.navigateInsideCell.bind(this)\r\n });\r\n }\r\n\r\n return columns;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private setCellDataType(column: any, colDef: ColDef) {\r\n if (typeof column.dataType === \"string\"\r\n && column.dataType.trim() !== \"\"\r\n && column.dataType !== \"auto\") {\r\n colDef.cellDataType = column.dataType;\r\n }\r\n }\r\n\r\n private setCellRenderer(column: any, colDef: ColDef, map: MapType) {\r\n if (column.format === \"objectURL\") {\r\n colDef.cellRenderer = ObjectURLRendererComponent;\r\n }\r\n\r\n if (column.format === \"deleteRow\") {\r\n colDef.cellRenderer = DeleteRowCellRenderer;\r\n }\r\n\r\n if (colDef.cellDataType === \"boolean\" && map) {\r\n colDef.cellRenderer = (params: any) => {\r\n return this.formatMap(params.value, map); \r\n }\r\n }\r\n }\r\n\r\n private setResizable(column: any, colDef: ColDef ) {\r\n colDef.resizable = (column.resize === true);\r\n }\r\n\r\n private setSortable(column: any, colDef: ColDef) {\r\n colDef.sortable = (column.sort === true);\r\n }\r\n\r\n private setFilter(column: any, colDef: ColDef, map: MapType) {\r\n if (column.filter === true) {\r\n colDef.filter = true;\r\n if (map) {\r\n colDef.filter = SetFilterComponent;\r\n }\r\n }\r\n }\r\n\r\n private setFilterParams(column: any, colDef: ColDef, map: MapType) {\r\n\r\n const filterParams: any = {};\r\n\r\n if (column.dataType === 'uuid') {\r\n this.setUuidFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'integer') {\r\n this.setIntegerFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'date') {\r\n this.setDateFilterParams(filterParams);\r\n }\r\n else if (column.dataType === 'boolean') {\r\n this.setBooleanFilterParams(filterParams);\r\n }\r\n \r\n if (map) {\r\n filterParams.map = map;\r\n }\r\n\r\n colDef.filterParams = filterParams;\r\n }\r\n\r\n private setUuidFilterParams(filterParams: any) {\r\n filterParams.filterOptions = ['equals', 'notEqual'];\r\n }\r\n\r\n private setIntegerFilterParams(filterParams: any) {\r\n filterParams.allowedCharPattern = '\\\\d';\r\n }\r\n\r\n private setDateFilterParams(filterParams: any) {\r\n filterParams.comparator = (filterLocalDateAtMidnight: Date, cellValue: string) => {\r\n if (!cellValue) return -1;\r\n const cellDate = new Date(cellValue);\r\n if (isNaN(cellDate.getTime())) return -1;\r\n\r\n const cellDateNoTime = new Date(cellDate.getFullYear(), cellDate.getMonth(), cellDate.getDate());\r\n\r\n if (cellDateNoTime < filterLocalDateAtMidnight) return -1;\r\n if (cellDateNoTime > filterLocalDateAtMidnight) return 1;\r\n return 0;\r\n }\r\n }\r\n\r\n private setBooleanFilterParams(filterParams: any) {\r\n filterParams.filterOptions = [\r\n {\r\n displayKey: 'includeAll',\r\n displayName: Texts.ChooseOne,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => true\r\n },\r\n {\r\n displayKey: 'true',\r\n displayName: Texts.True,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === true\r\n },\r\n {\r\n displayKey: 'false',\r\n displayName: Texts.False,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === false\r\n },\r\n {\r\n displayKey: 'blank',\r\n displayName: Texts.Blank,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value === null\r\n },\r\n {\r\n displayKey: 'notBlank',\r\n displayName: Texts.NotBlank,\r\n numberOfInputs: 0,\r\n predicate: ([filter]: [any], value: any) => value !== null\r\n },\r\n ];\r\n filterParams.suppressAndOrCondition = true;\r\n }\r\n\r\n private setSuppressMovable(column: any, colDef: ColDef) {\r\n if (!(column.move === true)) { \r\n colDef.suppressMovable = true;\r\n }\r\n }\r\n\r\n private setFlex(column: any, colDef: ColDef) {\r\n if (column.flex === true) { \r\n colDef.flex = 1;\r\n }\r\n }\r\n\r\n private setAlign(column: any, colDef: ColDef) {\r\n if (column.align === \"left\") {\r\n colDef.cellStyle = { textAlign: 'left' };\r\n }\r\n else if (column.align === \"center\") {\r\n colDef.cellStyle = { textAlign: 'center' };\r\n }\r\n else if (column.align === \"right\") { \r\n colDef.cellStyle = { textAlign: 'right' };\r\n }\r\n }\r\n\r\n private setPinned(column: any, colDef: ColDef) {\r\n if (typeof column.pinned === \"string\") { \r\n colDef.pinned = column.pinned;\r\n }\r\n }\r\n\r\n private setWidth(column: any, colDef: ColDef) {\r\n if (typeof column.width === \"number\") { \r\n colDef.width = column.width;\r\n }\r\n\r\n if (typeof column.minWidth === \"number\") { \r\n colDef.minWidth = column.minWidth;\r\n }\r\n\r\n if (typeof column.maxWidth === \"number\") { \r\n colDef.maxWidth = column.maxWidth;\r\n }\r\n }\r\n\r\n private setValueFormatter(column: any, colDef: ColDef, map: MapType) {\r\n if (map) {\r\n colDef.valueFormatter = (params) => this.formatMap(params.value, map); \r\n }\r\n }\r\n\r\n private getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n if (component.selection === \"singleRow\") {\r\n return { mode: \"singleRow\" };\r\n }\r\n else if (component.selection === \"multiRow\") {\r\n const options: RowSelectionOptions = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n\r\n if (component.isSelectable) {\r\n return {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n else {\r\n return options;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private onRowSelectable(component: any, formGroup: FormGroup, data: any) : boolean {\r\n if (!data)\r\n return false;\r\n\r\n const result = this.programmability.evaluate(formGroup, component.isSelectable, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n data: data\r\n }\r\n })\r\n });\r\n\r\n return result === true; \r\n }\r\n\r\n private getPaginable(component: any): boolean {\r\n return (typeof component.rowCount === 'number' && component.rowCount > 0);\r\n }\r\n\r\n private getPageSize(component: any) {\r\n if (typeof component.rowCount === 'number') {\r\n return component.rowCount;\r\n }\r\n }\r\n\r\n private getTexts(language: string): any {\r\n if (language === 'it') {\r\n return AG_GRID_LOCALE_IT;\r\n }\r\n else if (language === 'en') {\r\n return AG_GRID_LOCALE_EN;\r\n }\r\n else if (language === 'de') {\r\n return AG_GRID_LOCALE_DE;\r\n }\r\n else if (language === 'fr') {\r\n return AG_GRID_LOCALE_FR;\r\n }\r\n else if (language === 'es') {\r\n return AG_GRID_LOCALE_ES;\r\n }\r\n else if (language === 'pt') {\r\n return AG_GRID_LOCALE_PT;\r\n }\r\n else if (language === '') {\r\n return AG_GRID_LOCALE_IT; // neutral\r\n }\r\n else {\r\n return AG_GRID_LOCALE_EN; // fallback\r\n }\r\n }\r\n\r\n private getTheme() {\r\n return themeQuartz\r\n .withPart(iconSetAlpine)\r\n .withParams({\r\n backgroundColor: \"#FAFAFA\",\r\n borderColor: \"#D9E4F7\",\r\n browserColorScheme: \"light\",\r\n cellTextColor: \"#00121A\",\r\n columnBorder: true,\r\n fontFamily: \"inherit\",\r\n fontSize: 16,\r\n headerBackgroundColor: \"#002460\",\r\n headerColumnBorder: true,\r\n headerColumnResizeHandleColor: \"#F2F6FC\",\r\n headerColumnResizeHandleWidth: 2,\r\n headerFontSize: 16,\r\n headerFontWeight: 600,\r\n headerRowBorder: false,\r\n headerTextColor: \"#F2F6FC\",\r\n rowBorder: true\r\n });\r\n }\r\n\r\n private getDataTypeDefinitions(): { [cellDataType: string]: DataTypeDefinition<any>; } {\r\n return {\r\n uuid: {\r\n baseDataType: 'text',\r\n extendsDataType: 'text'\r\n },\r\n date: {\r\n baseDataType: 'dateString',\r\n extendsDataType: 'dateString',\r\n dateParser: (value: string | undefined) => {\r\n return value ? new Date(value) : undefined;\r\n },\r\n valueFormatter: params => {\r\n return this.formatter.formatDate(params.value);\r\n }\r\n },\r\n dateTime: {\r\n baseDataType: 'dateString',\r\n extendsDataType: 'dateString',\r\n dateParser: (value: string | undefined) => {\r\n return value ? new Date(value) : undefined;\r\n },\r\n valueFormatter: params => {\r\n return this.formatter.formatDateTime(params.value);\r\n }\r\n },\r\n currency: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatCurrency(params.value)\r\n },\r\n integer: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatInteger(params.value)\r\n },\r\n percentage: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : `${Math.round(params.value * 100)}%`,\r\n },\r\n flags: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number'\r\n } \r\n };\r\n }\r\n\r\n private getMap(column: any, colDef: ColDef, formGroup: FormGroup): MapType {\r\n\r\n const allowed = (colDef.cellDataType === \"boolean\"\r\n || colDef.cellDataType === \"text\"\r\n || colDef.cellDataType === \"number\"\r\n || colDef.cellDataType === \"flags\");\r\n\r\n if (allowed && column.map) {\r\n const map = this.programmability.evaluate(formGroup, column.mapValues);\r\n\r\n const valid = isRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string'\r\n );\r\n\r\n if (!valid)\r\n return null;\r\n\r\n if (colDef.cellDataType === \"flags\") {\r\n (map as any)[getLabelSymbol] = (key: any) => this.formatFlags(key, map);\r\n }\r\n\r\n return map;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private formatMap(value: any, map: MapType)\r\n {\r\n if (value == null) {\r\n return '';\r\n }\r\n\r\n if (map) {\r\n var result = map[value];\r\n\r\n if (result === undefined) {\r\n const labeled = isLabeledRecord(\r\n map,\r\n key => typeof key === 'string' || typeof key === 'number',\r\n val => typeof val === 'string',\r\n getLabelSymbol\r\n );\r\n\r\n if (labeled) {\r\n result = map[getLabelSymbol](value);\r\n }\r\n }\r\n \r\n return result ?? value.toString();\r\n }\r\n else {\r\n return value.toString();\r\n }\r\n }\r\n\r\n private formatFlags(value: any, map: MapType) {\r\n if (typeof value === 'number' &&\r\n isRecord(map, isNumericKey, val => typeof val === 'string')\r\n ) {\r\n if (value == 0) {\r\n return map[0] ?? \"0\";\r\n }\r\n\r\n const availableFlags = Object.keys(map)\r\n .map(Number)\r\n .filter(flag => flag !== 0);\r\n\r\n const flags = availableFlags.filter(flag => (value & flag) === flag);\r\n\r\n const sumFlags = flags.reduce((sum, f) => sum | f, 0);\r\n\r\n if ((value & sumFlags) !== value) {\r\n return null;\r\n }\r\n\r\n return flags\r\n .map(flag => map[flag])\r\n .filter((label): label is string => !!label)\r\n .join(', ');\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private navigateInsideCell({ event }: SuppressKeyboardEventParams<any>) {\r\n const GRID_CELL_CLASSNAME = \"ag-cell\";\r\n const { key, shiftKey } = event;\r\n const path = this.getEventPath(event);\r\n const isTabForward = key === \"Tab\" && shiftKey === false;\r\n const isTabBackward = key === \"Tab\" && shiftKey === true;\r\n let suppressEvent = false;\r\n // Handle cell children tabbing\r\n if (isTabForward || isTabBackward) {\r\n const eGridCell = path.find((el) => {\r\n if (el.classList === undefined) return false;\r\n return el.classList.contains(GRID_CELL_CLASSNAME);\r\n });\r\n if (!eGridCell) {\r\n return suppressEvent;\r\n }\r\n const focusableChildrenElements = getFocusables(eGridCell);\r\n const lastCellChildEl =\r\n focusableChildrenElements[focusableChildrenElements.length - 1];\r\n const firstCellChildEl = focusableChildrenElements[0];\r\n // Suppress keyboard event if tabbing forward within the cell and the current focused element is not the last child\r\n if (focusableChildrenElements.length === 0) {\r\n return false;\r\n }\r\n const currentIndex = focusableChildrenElements.indexOf(\r\n document.activeElement as HTMLElement,\r\n );\r\n if (isTabForward) {\r\n const isLastChildFocused =\r\n lastCellChildEl && document.activeElement === lastCellChildEl;\r\n if (!isLastChildFocused) {\r\n suppressEvent = true;\r\n if (currentIndex !== -1 || document.activeElement === eGridCell) {\r\n event.preventDefault();\r\n focusableChildrenElements[currentIndex + 1].focus();\r\n }\r\n }\r\n }\r\n // Suppress keyboard event if tabbing backwards within the cell, and the current focused element is not the first child\r\n else {\r\n const cellHasFocusedChildren =\r\n eGridCell.contains(document.activeElement) &&\r\n eGridCell !== document.activeElement;\r\n // Manually set focus to the last child element if cell doesn't have focused children\r\n if (!cellHasFocusedChildren) {\r\n lastCellChildEl.focus();\r\n // Cancel keyboard press, so that it doesn't focus on the last child and then pass through the keyboard press to\r\n // move to the 2nd last child element\r\n event.preventDefault();\r\n }\r\n const isFirstChildFocused =\r\n firstCellChildEl && document.activeElement === firstCellChildEl;\r\n if (!isFirstChildFocused) {\r\n suppressEvent = true;\r\n if (currentIndex !== -1 || document.activeElement === eGridCell) {\r\n event.preventDefault();\r\n focusableChildrenElements[currentIndex - 1].focus();\r\n }\r\n }\r\n }\r\n }\r\n return suppressEvent;\r\n }\r\n\r\n private getEventPath(event: Event): HTMLElement[] {\r\n const path: HTMLElement[] = [];\r\n let currentTarget: any = event.target;\r\n while (currentTarget) {\r\n path.push(currentTarget);\r\n currentTarget = currentTarget.parentElement;\r\n }\r\n return path;\r\n }\r\n}\r\n","import { isObservable, combineLatest, of, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport function observableAll<T extends object>(obj: T): Observable<T> {\r\n function collect(value: any): Observable<any> {\r\n if (isObservable(value)) {\r\n return value;\r\n }\r\n if (Array.isArray(value)) {\r\n return combineLatest(value.map(collect));\r\n }\r\n if (typeof value === 'object' && value !== null) {\r\n const keys = Object.keys(value);\r\n const observables = keys.map(k => collect(value[k]));\r\n return combineLatest(observables).pipe(\r\n map(resolvedValues => {\r\n const resolvedObject: any = {};\r\n resolvedValues.forEach((v, i) => {\r\n resolvedObject[keys[i]] = v;\r\n });\r\n return resolvedObject;\r\n })\r\n );\r\n }\r\n return of(value);\r\n }\r\n\r\n return collect(obj);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { observableAll } from '../utils/observableAll';\r\nimport {\r\n AgChartOptions, AgChartTheme, AgBaseSeriesOptions,\r\n AgBarSeriesOptions, AgBarSeriesOptionsNames, \r\n AgLineSeriesOptions, AgLineSeriesOptionsNames,\r\n AgAreaSeriesOptions, AgAreaSeriesOptionsNames,\r\n AgScatterSeriesOptions, AgScatterSeriesOptionsNames,\r\n AgBubbleSeriesOptions, AgBubbleSeriesOptionsNames,\r\n AgPieSeriesOptions, AgPieSeriesOptionsNames,\r\n AgDonutSeriesOptions, AgDonutSeriesOptionsNames\r\n} from 'ag-charts-community';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Injectable()\r\nexport class ChartService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n getOptions(component: any, formGroup: FormGroup, language: string): Observable<AgChartOptions> {\r\n const expression = this.getDataExpression(component);\r\n const data = this.programmability.evaluate(formGroup, expression);\r\n return observableAll(data).pipe(\r\n map((chartData: any) => {\r\n const series = this.getSeries(component, formGroup, language);\r\n const options: AgChartOptions = {\r\n theme: this.getTheme(),\r\n series: series,\r\n ...this.getProps(component)\r\n };\r\n this.bindData(options, chartData);\r\n return options;\r\n })\r\n ); \r\n }\r\n\r\n getDataExpression(component: any) {\r\n const getExpression = (expression: any) => {\r\n return this.programmability.isExpression(expression)\r\n ? this.programmability.getExpression(expression)\r\n : \"null\"\r\n }\r\n const dataExpr = getExpression(component.data);\r\n const seriesExprs = (component.series ?? [])\r\n .map((serie: any) => getExpression(serie.data))\r\n .map((expr: string) => `(${expr})`)\r\n .join(\", \");\r\n\r\n return `={ data: (${dataExpr}), series: [${seriesExprs}] }`;\r\n }\r\n\r\n private bindData(options: AgChartOptions, chartData: any) {\r\n if (chartData.data) {\r\n options.data = chartData.data;\r\n }\r\n if (Array.isArray(options.series)) {\r\n options.series.forEach((serie: any, index: number) => {\r\n if (chartData.series[index]) {\r\n serie.data = chartData.series[index];\r\n }\r\n });\r\n }\r\n }\r\n\r\n private locale(component: any, key: string, language: string): string {\r\n return localize(language, component, key);\r\n }\r\n\r\n private getTheme(): AgChartTheme {\r\n return {\r\n baseTheme: \"ag-default\",\r\n params: {\r\n fontFamily: \"inherit\",\r\n textColor: \"#00121A\",\r\n chromeFontFamily: \"inherit\",\r\n chromeTextColor: \"#00121A\"\r\n },\r\n overrides: {\r\n common: {\r\n background: {\r\n visible: true,\r\n fill: \"transparent\",\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n private getSeries(component: any, formGroup: FormGroup, language: string): any[] {\r\n if (Array.isArray(component.series)) {\r\n const series = component.series.map((serie: any) => {\r\n switch (serie.type) {\r\n case \"bar\":\r\n return this.getBarSeriesOptions(serie, formGroup, language);\r\n case \"line\":\r\n return this.getLineSeriesOptions(serie, formGroup, language);\r\n case \"area\":\r\n return this.getAreaSeriesOptions(serie, formGroup, language);\r\n case \"scatter\":\r\n return this.getScatterSeriesOptions(serie, formGroup, language);\r\n case \"bubble\":\r\n return this.getBubbleSeriesOptions(serie, formGroup, language);\r\n case \"pie\":\r\n return this.getPieSeriesOptions(serie, formGroup, language);\r\n case \"donut\":\r\n return this.getDonutSeriesOptions(serie, formGroup, language);\r\n default:\r\n return {};\r\n }\r\n });\r\n return series;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private getSeriesOptionsNames(serie: any, language: string)\r\n : AgBarSeriesOptionsNames | AgLineSeriesOptionsNames {\r\n const options: AgBarSeriesOptionsNames | AgLineSeriesOptionsNames = {};\r\n\r\n if (this.isString(serie.xName))\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (this.isString(serie.yName))\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (this.isString(serie.legendItemName))\r\n options.legendItemName = this.locale(serie, \"legendItemName\", language);\r\n\r\n return options;\r\n }\r\n \r\n private getBaseSeriesOptions(serie: any, formGroup: FormGroup): AgBaseSeriesOptions<any>\r\n {\r\n const options: AgBaseSeriesOptions<any> = { };\r\n\r\n if (this.isBoolean(serie.visible))\r\n options.visible = serie.visible;\r\n\r\n return options;\r\n }\r\n\r\n private getBarSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgBarSeriesOptions {\r\n const options: AgBarSeriesOptions = {\r\n type: \"bar\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isDirection(serie.direction))\r\n options.direction = serie.direction;\r\n\r\n if (this.isBoolean(serie.stacked))\r\n options.stacked = serie.stacked;\r\n\r\n if (this.isNumber(serie.normalizedTo))\r\n options.normalizedTo = serie.normalizedTo;\r\n\r\n if (this.isString(serie.stackGroup))\r\n options.stackGroup = serie.stackGroup;\r\n\r\n return options;\r\n }\r\n\r\n private getLineSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgLineSeriesOptions {\r\n const options: AgLineSeriesOptions = {\r\n type: \"line\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isInterpolation(serie.interpolation)) { \r\n options.interpolation = {\r\n type: serie.interpolation\r\n };\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private getAreaSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgAreaSeriesOptions {\r\n const options: AgAreaSeriesOptions = {\r\n type: \"area\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getAreaSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isBoolean(serie.stacked))\r\n options.stacked = serie.stacked;\r\n\r\n if (this.isNumber(serie.normalizedTo))\r\n options.normalizedTo = serie.normalizedTo;\r\n\r\n return options;\r\n }\r\n\r\n private getAreaSeriesOptionsNames(serie: any, language: string)\r\n : AgAreaSeriesOptionsNames {\r\n const options: AgAreaSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getScatterSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgScatterSeriesOptions {\r\n return {\r\n type: \"scatter\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n labelKey: serie.labelKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getScatterSeriesOptionsNames(serie, language)\r\n };\r\n }\r\n\r\n private getScatterSeriesOptionsNames(serie: any, language: string)\r\n : AgScatterSeriesOptionsNames {\r\n const options: AgScatterSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getBubbleSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgBubbleSeriesOptions {\r\n return {\r\n type: \"bubble\",\r\n xKey: serie.xKey,\r\n yKey: serie.yKey,\r\n sizeKey: serie.sizeKey,\r\n labelKey: serie.labelKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getBubbleSeriesOptionsNames(serie, language)\r\n };\r\n }\r\n\r\n private getBubbleSeriesOptionsNames(serie: any, language: string)\r\n : AgBubbleSeriesOptionsNames {\r\n const options: AgBubbleSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\", language);\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\", language);\r\n\r\n if (serie.sizeName)\r\n options.sizeName = this.locale(serie, \"sizeName\", language);\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgPieSeriesOptions {\r\n const options: AgPieSeriesOptions = {\r\n type: \"pie\",\r\n angleKey: serie.angleKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getPieSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isString(serie.radiusKey))\r\n options.radiusKey = serie.radiusKey;\r\n\r\n if (this.isString(serie.calloutLabelKey))\r\n options.calloutLabelKey = serie.calloutLabelKey;\r\n\r\n if (this.isString(serie.sectorLabelKey))\r\n options.sectorLabelKey = serie.sectorLabelKey;\r\n\r\n if (this.isString(serie.legendItemKey))\r\n options.legendItemKey = serie.legendItemKey;\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptionsNames(serie: any, language: string)\r\n : AgPieSeriesOptionsNames {\r\n const options: AgPieSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\", language);\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\", language);\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\", language);\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptions(serie: any, formGroup: FormGroup, language: string): AgDonutSeriesOptions {\r\n const options: AgDonutSeriesOptions = {\r\n type: \"donut\",\r\n angleKey: serie.angleKey,\r\n ...this.getBaseSeriesOptions(serie, formGroup),\r\n ...this.getDonutSeriesOptionsNames(serie, language)\r\n };\r\n\r\n if (this.isString(serie.radiusKey))\r\n options.radiusKey = serie.radiusKey;\r\n\r\n if (this.isString(serie.calloutLabelKey))\r\n options.calloutLabelKey = serie.calloutLabelKey;\r\n\r\n if (this.isString(serie.sectorLabelKey))\r\n options.sectorLabelKey = serie.sectorLabelKey;\r\n\r\n if (this.isString(serie.legendItemKey))\r\n options.legendItemKey = serie.legendItemKey;\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptionsNames(serie: any, language: string)\r\n : AgDonutSeriesOptionsNames {\r\n const options: AgDonutSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\", language);\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\", language);\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\", language);\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\", language);\r\n\r\n return options;\r\n }\r\n\r\n private getProps(component: any): any {\r\n const props: any = {};\r\n\r\n if (component && component.title) {\r\n props.title = { text: component.title };\r\n }\r\n\r\n if (component && component.subtitle) {\r\n props.subtitle = { text: component.subtitle };\r\n }\r\n\r\n return props;\r\n }\r\n\r\n private isBoolean(value: any): boolean {\r\n return typeof value === 'boolean' || value instanceof Boolean;\r\n }\r\n\r\n private isString(value: any): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n\r\n private isNumber(value: any): boolean {\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n private isDirection(value: any): boolean {\r\n return value === 'horizontal' || value === 'vertical';\r\n }\r\n\r\n private isInterpolation(value: any): boolean {\r\n return value === 'linear' || value === 'smooth' || value === 'step';\r\n }\r\n}\r\n","import { Input, Directive, ElementRef, Renderer2, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[prefixAdorner], [suffixAdorner]',\r\n standalone: true\r\n})\r\nexport class AdornerDirective implements OnChanges, AfterViewInit {\r\n @Input() prefixAdorner: string | null = null;\r\n @Input() suffixAdorner: string | null = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.updatePrefix(this.prefixAdorner);\r\n this.updateSuffix(this.suffixAdorner); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"prefixAdorner\"]) {\r\n this.updatePrefix(changes[\"prefixAdorner\"].currentValue);\r\n }\r\n\r\n if (changes[\"suffixAdorner\"]) {\r\n this.updateSuffix(changes[\"suffixAdorner\"].currentValue);\r\n }\r\n }\r\n\r\n private getWrapper() {\r\n return this.el.nativeElement.querySelector('div.sirio-input-group');\r\n };\r\n\r\n private isPrepared(): boolean {\r\n return this.getWrapper() !== null;\r\n }\r\n\r\n private prepare(): any {\r\n if (this.isPrepared())\r\n return this.getWrapper();\r\n\r\n const inputElement = this.el.nativeElement.querySelector('input');\r\n\r\n if (!inputElement)\r\n return null;\r\n\r\n const wrapper = this.renderer.createElement('div');\r\n this.renderer.addClass(wrapper, 'sirio-input-group');\r\n\r\n const parent = inputElement.parentNode;\r\n this.renderer.insertBefore(parent, wrapper, inputElement);\r\n\r\n this.renderer.appendChild(wrapper, inputElement);\r\n\r\n return wrapper;\r\n }\r\n\r\n private updatePrefix(prefixAdorner: string | null)\r\n {\r\n const prefixText = this.normalizeText(prefixAdorner);\r\n\r\n this.remove(\"span.prefix\");\r\n \r\n if (prefixText !== null) {\r\n const wrapper = this.prepare();\r\n if (wrapper) {\r\n const inputElement = wrapper.querySelector('input');\r\n const prefixSpan = this.createSpanElement(prefixText);\r\n this.renderer.addClass(prefixSpan, \"prefix\")\r\n this.renderer.insertBefore(wrapper, prefixSpan, inputElement);\r\n } \r\n }\r\n }\r\n\r\n private updateSuffix(suffixAdorner: string | null) {\r\n const suffixText = this.normalizeText(suffixAdorner);\r\n\r\n this.remove(\"span.suffix\");\r\n\r\n if (suffixText !== null) {\r\n const wrapper = this.prepare();\r\n if (wrapper) {\r\n const suffixSpan = this.createSpanElement(suffixText);\r\n this.renderer.addClass(suffixSpan, \"suffix\")\r\n this.renderer.appendChild(wrapper, suffixSpan);\r\n }\r\n }\r\n }\r\n\r\n private remove(selector: string) {\r\n const wrapper = this.getWrapper();\r\n if (!wrapper)\r\n return;\r\n const span = wrapper.querySelector(selector);\r\n if (span)\r\n this.renderer.removeChild(wrapper, span);\r\n }\r\n\r\n private createSpanElement(adorner: string) {\r\n const outerSpan = this.renderer.createElement('span');\r\n this.renderer.addClass(outerSpan, 'sirio-input-group-text');\r\n \r\n const innerSpan = this.renderer.createElement('span');\r\n this.renderer.setAttribute(innerSpan, 'aria-hidden', 'true');\r\n\r\n const iconClass = this.getIconClassName(adorner);\r\n\r\n if (iconClass) {\r\n this.renderer.addClass(innerSpan, 'fas');\r\n this.renderer.addClass(innerSpan, iconClass);\r\n }\r\n else {\r\n const strongElement = this.renderer.createElement('strong');\r\n this.renderer.appendChild(innerSpan, strongElement);\r\n\r\n const text = this.renderer.createText(adorner);\r\n this.renderer.appendChild(strongElement, text);\r\n }\r\n\r\n this.renderer.appendChild(outerSpan, innerSpan);\r\n\r\n return outerSpan;\r\n };\r\n\r\n private getIconClassName(text: string) {\r\n\r\n switch (text) {\r\n case \"%\":\r\n return \"fa-percent\";\r\n\r\n case \"@\":\r\n return \"fa-envelope\";\r\n\r\n case \"€\":\r\n return \"fa-euro-sign\";\r\n }\r\n\r\n return null;\r\n };\r\n\r\n private normalizeText(text: string | null): string | null {\r\n\r\n if (text) {\r\n const trimmedValue = text.trim();\r\n return trimmedValue.length > 0 ? trimmedValue : null;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[disableControl], [readonly]',\r\n standalone: true\r\n})\r\nexport class DisableDirective implements OnChanges {\r\n @Input() disableControl: boolean | null = null;\r\n @Input() readonly: boolean | null = null;\r\n @Input() placeholder: string | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor(private ngControl: NgControl\r\n , private el: ElementRef\r\n , private renderer: Renderer2) {\r\n }\r\n\r\n private disableClass: string = \"fp-disabled\";\r\n private readonlyClass: string = \"fp-readonly\";\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes[\"disableControl\"] || changes[\"readonly\"]) {\r\n if (this.ngControl.control) {\r\n if (this.disableControl) {\r\n this.ngControl.control.disable();\r\n this.toggleClass(true, this.disableClass);\r\n this.overridePlaceholder(false);\r\n } else {\r\n this.ngControl.control.enable();\r\n this.toggleClass(false, this.disableClass);\r\n const disabled = this.readonly === true;\r\n (this.ngControl.valueAccessor as any)?.setDisabledState(disabled);\r\n this.toggleClass(disabled, this.readonlyClass);\r\n this.overridePlaceholder(disabled);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private toggleClass(value: boolean, className: string) {\r\n if (value) {\r\n this.renderer.addClass(this.el.nativeElement, className);\r\n } else {\r\n this.renderer.removeClass(this.el.nativeElement, className);\r\n }\r\n }\r\n\r\n private overridePlaceholder(value: boolean) {\r\n if ('placeholder' in this.componentRef) {\r\n this.componentRef.placeholder = value\r\n ? \"-\"\r\n : this.placeholder;\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[hide], [show]',\r\n standalone: true\r\n})\r\nexport class DisplayDirective implements OnChanges {\r\n @Input() hide: boolean | null = null;\r\n @Input() show: boolean | null = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"hide\"]) {\r\n const value = changes[\"hide\"].currentValue;\r\n if (value === true) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n } else if (value === false) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'block');\r\n }\r\n }\r\n\r\n if (changes[\"show\"]) {\r\n const value = changes[\"show\"].currentValue;\r\n if (value === true) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'block'); \r\n } else if (value === false) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormArray, ControlContainer } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[repeat], [allowAddRemove]',\r\n standalone: true\r\n})\r\nexport class RepeatDirective implements OnChanges {\r\n @Input() repeat: any = null;\r\n @Input() allowAddRemove: boolean | null = null;\r\n\r\n constructor(private controlContainer: ControlContainer) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"repeat\"] || changes[\"allowAddRemove\"]) {\r\n const formArray = this.controlContainer.control as FormArray;\r\n if (Number.isInteger(this.repeat) && this.repeat >= 0) {\r\n (formArray as any).resize(this.repeat);\r\n }\r\n else if (this.allowAddRemove !== true) {\r\n (formArray as any).resize(0);\r\n } \r\n }\r\n }\r\n}\r\n","import { Directive, Input, AfterViewInit, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[frameSecurity]',\r\n standalone: true\r\n})\r\nexport class FrameSecurityDirective implements AfterViewInit {\r\n @Input() frameSecurity: any = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n const frame = this.el.nativeElement;\r\n\r\n const sandbox = this.getSandBox(this.frameSecurity);\r\n\r\n if (sandbox)\r\n this.renderer.setAttribute(frame, 'sandbox', sandbox);\r\n\r\n const allow = this.getAllow(this.frameSecurity);\r\n\r\n if (allow)\r\n this.renderer.setAttribute(frame, 'allow', allow);\r\n }\r\n\r\n private getSandBox(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"allowScripts\",\r\n \"allowSameOrigin\",\r\n \"allowForms\",\r\n \"allowModals\",\r\n \"allowPopups\",\r\n \"allowTopNavigation\",\r\n \"allowStorageAccessByUserActivation\"\r\n ];\r\n let sandBox = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => this.camelToKebabCase(key))\r\n .join(' ');\r\n\r\n return sandBox;\r\n };\r\n\r\n private getAllow(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"fullscreen\",\r\n \"geolocation\",\r\n \"camera\",\r\n \"microphone\"\r\n ];\r\n let allow = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => key)\r\n .join(' ');\r\n\r\n return allow;\r\n };\r\n\r\n private camelToKebabCase(str: string): string {\r\n return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());\r\n }\r\n}\r\n","import { Directive, AfterViewInit, OnDestroy, ElementRef, Host, Renderer2 } from '@angular/core';\r\nimport { SirioSelectComponent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[dropdown]',\r\n standalone: true\r\n})\r\nexport class DropdownDirective implements AfterViewInit, OnDestroy {\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n \r\n @Host() private sirioSelect: SirioSelectComponent\r\n ) {\r\n }\r\n\r\n private optionsSubscription?: Subscription;\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n this.handleOptionsChanges(); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.optionsSubscription?.unsubscribe();\r\n }\r\n\r\n private handleValue(): void {\r\n const falsyValues = [null, false, 0, \"\"];\r\n\r\n if (this.sirioSelect\r\n && Array.isArray(this.sirioSelect.options)\r\n && falsyValues.includes(this.sirioSelect.value))\r\n {\r\n const valueOption = this.sirioSelect.options.find(\r\n option => option.value === this.sirioSelect.value\r\n );\r\n\r\n if (valueOption) {\r\n valueOption.isSelected = true;\r\n }\r\n }\r\n }\r\n\r\n private handleSearchable(): void {\r\n\r\n const searchable = this.el.nativeElement.querySelector('.searchable');\r\n if (searchable) {\r\n const dropDown = this.el.nativeElement.querySelector('.sirio-dropdown');\r\n const dropMenu = dropDown.querySelector('.sirio-dropdown-menu');\r\n const input = searchable.querySelector('input');\r\n this.renderer.insertBefore(dropDown, searchable, dropMenu);\r\n\r\n this.renderer.listen(input, 'blur', (event: KeyboardEvent) => {\r\n this.sirioSelect.panel.close();\r\n });\r\n\r\n this.renderer.listen(input, 'keyup', (event: KeyboardEvent) => {\r\n this.onKeyUp(event, input); \r\n });\r\n\r\n this.renderer.listen(input, 'keydown', (event: KeyboardEvent) => {\r\n this.onKeyDown(event);\r\n });\r\n\r\n this.sirioSelect.panel.panelOpened.subscribe(() => {\r\n this.activate(searchable);\r\n });\r\n\r\n this.sirioSelect.panel.panelClosed.subscribe(() => {\r\n this.deactivate(searchable);\r\n });\r\n\r\n } \r\n }\r\n\r\n private handleOptionsChanges(): void {\r\n this.optionsSubscription = this.sirioSelect.panel.options.changes.subscribe(() => {\r\n const valueOption = this.sirioSelect.options.find(\r\n option => option.value === this.sirioSelect.value\r\n );\r\n if (!valueOption && this.sirioSelect.value) {\r\n this.sirioSelect.control?.reset();\r\n } \r\n });\r\n }\r\n\r\n private deactivate(element: HTMLElement): void {\r\n this.renderer.setStyle(element, 'display', 'none');\r\n }\r\n\r\n private activate(element: HTMLElement): void {\r\n let currentValue = \"\";\r\n\r\n if (this.sirioSelect.optionsSelected.length > 0) {\r\n currentValue = this.sirioSelect.optionsSelected[0].text\r\n }\r\n\r\n const input = element.querySelector(\"input\");\r\n\r\n if (!input)\r\n return;\r\n\r\n input.value = currentValue;\r\n\r\n const dropMenu = this.el.nativeElement.querySelector('.sirio-dropdown-menu');\r\n\r\n this.sirioSelect.options.forEach((option) => {\r\n this.show(option, true);\r\n if (currentValue == option.text) {\r\n dropMenu.scrollTop = this.native(option).offsetTop;\r\n } \r\n });\r\n\r\n this.renderer.setStyle(element, 'display', 'inline-block');\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(input.value.length, input.value.length);\r\n input.focus();\r\n });\r\n }\r\n\r\n private onKeyUp(event: KeyboardEvent, input: any) {\r\n const { code } = event;\r\n\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n case 'ArrowDown':\r\n case 'ArrowUp':\r\n case 'Escape':\r\n return;\r\n }\r\n\r\n const value = this.comparable(input.value);\r\n let firstMatch = true;\r\n\r\n this.sirioSelect.options.forEach((option, index) => {\r\n const match = this.comparable(option.text).includes(value);\r\n this.show(option, match);\r\n if (match && firstMatch) {\r\n option.setFocus();\r\n firstMatch = false;\r\n }\r\n else {\r\n option.removeFocus();\r\n }\r\n });\r\n }\r\n\r\n private onKeyDown(event: KeyboardEvent) {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel) {\r\n return;\r\n }\r\n const panelIsOpen = panel.panelIsOpen;\r\n const { code } = event;\r\n if (panelIsOpen) {\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n if (panel.optionFocused) {\r\n panel.optionFocused?.onOptionSelected(event);\r\n }\r\n else {\r\n panel.close(event);\r\n event?.preventDefault();\r\n }\r\n break;\r\n case 'ArrowDown':\r\n this.scrollDown();\r\n event?.preventDefault();\r\n break;\r\n case 'ArrowUp':\r\n this.scrollUp();\r\n event?.preventDefault();\r\n break;\r\n case 'Escape':\r\n panel.close(event);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (!panelIsOpen) {\r\n switch (code) {\r\n case 'Enter':\r\n case 'Space':\r\n panel.open(event);\r\n event?.preventDefault();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private native(option: any) {\r\n return option.viewContainerRef.element.nativeElement;\r\n }\r\n\r\n private isHidden(option: any) {\r\n return this.native(option).style.display === 'none';\r\n }\r\n\r\n private show(option: any, value: boolean) {\r\n this.native(option).style.display = value ? '' : 'none';\r\n }\r\n\r\n private comparable(text: string) {\r\n return text.toLowerCase().trim();\r\n }\r\n\r\n private scrollDown() {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel.optionFocused) {\r\n panel.scrollBarTop();\r\n panel.options.first.setFocus();\r\n return;\r\n }\r\n const nextOptionFocused = this.findNextVisibleOption(panel.optionFocusedIndex + 1, panel.options);\r\n panel.scrollBarDown();\r\n panel.optionFocused?.removeFocus();\r\n if (nextOptionFocused) {\r\n nextOptionFocused?.setFocus();\r\n return;\r\n }\r\n panel.scrollBarTop();\r\n const firstVisible = this.findNextVisibleOption(0, panel.options);\r\n if (firstVisible) {\r\n firstVisible.setFocus();\r\n }\r\n }\r\n\r\n private scrollUp() {\r\n const panel = this.sirioSelect.panel;\r\n if (!panel.optionFocused) {\r\n panel.scrollBarTop();\r\n panel.options.last.setFocus();\r\n return;\r\n } \r\n const nextOptionFocused = this.findPreviousVisibleOption(panel.optionFocusedIndex - 1, panel.options);\r\n if (nextOptionFocused) {\r\n panel.scrollBarUp();\r\n panel.optionFocused?.removeFocus();\r\n nextOptionFocused?.setFocus();\r\n return;\r\n }\r\n panel.optionFocused?.removeFocus();\r\n panel.scrollBarBottom();\r\n const lastVisible = this.findPreviousVisibleOption(panel.options.length - 1, panel.options);\r\n if (lastVisible) {\r\n lastVisible.setFocus();\r\n }\r\n }\r\n\r\n private findPreviousVisibleOption(startIndex: number, options: any): any | null {\r\n let i = startIndex;\r\n while (i >= 0) {\r\n const option = options.get(i);\r\n if (!this.isHidden(option)) {\r\n return option;\r\n }\r\n i--;\r\n }\r\n return null;\r\n }\r\n\r\n private findNextVisibleOption(startIndex: number, options: any): any | null {\r\n let i = startIndex;\r\n while (i < options.length) {\r\n const option = options.get(i);\r\n if (!this.isHidden(option)) {\r\n return option;\r\n }\r\n i++;\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Input, OnChanges, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { SirioTabComponent } from 'ngx-sirio-lib';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\n\r\n@Directive({\r\n selector: '[tabCount]',\r\n standalone: true\r\n})\r\nexport class TabDirective implements OnChanges {\r\n @Input() tabCount: number = 0;\r\n\r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"tabCount\"]) {\r\n const previous = changes[\"tabCount\"].previousValue;\r\n\r\n const current = changes[\"tabCount\"].currentValue;\r\n\r\n const showPanel = (index: number) => {\r\n this.sirioTab.setActiveIndex(index);\r\n setTimeout(() => {\r\n const containerRef = (this.sirioTab.tabItems[index] as any).viewContainerRef as ViewContainerRef;\r\n if (containerRef)\r\n setFocus(containerRef.element.nativeElement as HTMLElement);\r\n }, 100);\r\n }\r\n\r\n setTimeout(() => {\r\n this.sirioTab.setContentItemIndex();\r\n this.sirioTab.showArrowIfNeeded();\r\n\r\n if (previous === undefined) {\r\n showPanel(0);\r\n }\r\n else if (previous < current) {\r\n showPanel(current - 1);\r\n } \r\n else {\r\n if (this.sirioTab.oldIndex == current) {\r\n // remove last\r\n showPanel(current - 1);\r\n }\r\n else if (this.sirioTab.oldIndex < current) {\r\n // remove middle\r\n showPanel(this.sirioTab.oldIndex);\r\n }\r\n else {\r\n // remove many\r\n showPanel(current - 1);\r\n }\r\n } \r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Host, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SirioAccordionComponent } from 'ngx-sirio-lib';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\n@Directive({\r\n selector: '[accordionCount]',\r\n standalone: true\r\n})\r\nexport class AccordionDirective implements OnChanges {\r\n @Input() accordionCount: number = 0;\r\n\r\n constructor(\r\n @Host() private sirioAccordion: SirioAccordionComponent\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"accordionCount\"]) {\r\n const previous = changes[\"accordionCount\"].previousValue;\r\n\r\n const current = changes[\"accordionCount\"].currentValue;\r\n\r\n if (current == 0)\r\n return;\r\n\r\n setTimeout(() => {\r\n\r\n const event = new Event(\"\");\r\n\r\n this.sirioAccordion.closePanels(event);\r\n\r\n const panels = this.sirioAccordion.panels.toArray();\r\n\r\n const showPanel = (index: number) => {\r\n panels[index].onPanelHeaderClicked(event);\r\n setTimeout(() => {\r\n setFocus((panels[index].body as any).el.nativeElement);\r\n }, 100); \r\n }\r\n\r\n if (previous === undefined) {\r\n showPanel(0);\r\n }\r\n else {\r\n showPanel(current - 1);\r\n }\r\n }, 100); \r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, Host } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\n\r\n@Directive({\r\n selector: '[rowSource]',\r\n standalone: true\r\n})\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource: any = null;\r\n \r\n constructor(\r\n @Host() private grid: AgGridAngular\r\n ) {\r\n\r\n grid.gridReady.subscribe(() => {\r\n this.isGridReady = true; \r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"rowSource\"]) {\r\n this.onRowChanges(this.rowSource);\r\n } \r\n }\r\n\r\n private isGridReady: boolean = false;\r\n\r\n private onRowChanges(rowSource: any): void {\r\n if (this.isArray(rowSource)) {\r\n this.setRowData(rowSource);\r\n }\r\n else if (this.isDataSource(rowSource)) {\r\n this.setDataSource(rowSource);\r\n }\r\n else {\r\n this.setRowData([]);\r\n }\r\n }\r\n\r\n private setRowData(rowSource: any) {\r\n this.grid.rowModelType = 'clientSide';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('rowData', rowSource);\r\n }\r\n else {\r\n this.grid.rowData = rowSource;\r\n }\r\n }\r\n\r\n private setDataSource(rowSource: any) {\r\n this.grid.rowModelType = 'infinite';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('datasource', rowSource);\r\n }\r\n else {\r\n this.grid.datasource = rowSource;\r\n }\r\n }\r\n\r\n private isArray(rowSource: any): boolean {\r\n return Array.isArray(rowSource);\r\n }\r\n\r\n private isDataSource(obj: any): obj is IRowsSource {\r\n return typeof obj.getRows === \"function\";\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[observe]',\r\n standalone: true\r\n})\r\nexport class ChangeDirective implements OnChanges {\r\n @Input() observe: any;\r\n @Input() callback?: () => void;\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"observe\"]) {\r\n if (this.callback) {\r\n this.callback();\r\n } \r\n } \r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class FormControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextFieldControl extends Control {\r\n\r\n readonly setRandomColor = (): void => {\r\n this.getInput().sirioInput.nativeElement.style.backgroundColor = this.getRandomColor(); \r\n }\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n private getRandomColor(): string {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n\r\n return color;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class SelectControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TagListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class NumberControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioDatepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class DateControl extends Control {\r\n\r\n private getDatePicker(): SirioDatepickerComponent {\r\n return this.getComponentRef() as SirioDatepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioTimepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TimeControl extends Control {\r\n\r\n private getTimePicker(): SirioTimepickerComponent {\r\n return this.getComponentRef() as SirioTimepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioToggleComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ToggleControl extends Control {\r\n\r\n private getToggle(): SirioToggleComponent {\r\n return this.getComponentRef() as SirioToggleComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckBoxControl extends Control {\r\n\r\n private getCheckBox(): SirioCheckboxComponent {\r\n return this.getComponentRef() as SirioCheckboxComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipRadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipRadio() as any)._refresh();\r\n }\r\n\r\n private getChipRadio(): SirioChipRadioGroupComponent {\r\n return this.getComponentRef() as SirioChipRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class RadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getRadio() as any)._refresh();\r\n }\r\n\r\n private getRadio(): SirioRadioGroupComponent {\r\n return this.getComponentRef() as SirioRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipCheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipCheckBoxGroup() as any)._refresh();\r\n }\r\n\r\n private getChipCheckBoxGroup(): SirioChipCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioChipCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getCheckboxGroup() as any)._refresh();\r\n }\r\n\r\n private getCheckboxGroup(): SirioCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextAreaControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioFileUploadComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class FilePickerControl extends Control {\r\n\r\n private getFileUpload(): SirioFileUploadComponent {\r\n return this.getComponentRef() as SirioFileUploadComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TextControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class HtmlControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class ImageControl extends Control {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioTabComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TabControl extends ContainerControl {\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgCharts } from 'ag-charts-angular';\r\n\r\nexport class ChartControl extends Control {\r\n\r\n //readonly refresh = (): void => {\r\n // (this.getGrid() as any)._refresh();\r\n //}\r\n\r\n private getChart(): AgCharts {\r\n return this.getComponentRef() as AgCharts;\r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioAccordionComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class AccordionControl extends ContainerControl {\r\n\r\n private getAccordion(): SirioAccordionComponent {\r\n return this.getComponentRef() as SirioAccordionComponent;\r\n }\r\n\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class DynamicListControl extends ContainerControl {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class GroupControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\n\r\n\r\nexport class TableControl extends Control {\r\n\r\n readonly setFilter = (filter: any): void => {\r\n this.getGrid().api.setFilterModel(filter);\r\n }\r\n\r\n readonly clearFilter = (): void => {\r\n this.getGrid().api.setFilterModel(null);\r\n }\r\n\r\n readonly refresh = (): void => {\r\n (this.getGrid() as any)._refresh();\r\n }\r\n\r\n private getGrid(): AgGridAngular {\r\n return this.getComponentRef() as AgGridAngular;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioButtonComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ButtonControl extends Control {\r\n\r\n private getButton(): SirioButtonComponent {\r\n return this.getComponentRef() as SirioButtonComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SeparatorControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SpacerControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class IFrameControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TooltipControl extends Control {\r\n\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Control } from '../controls/control';\r\nimport { FormControl } from '../controls/form';\r\nimport { TextFieldControl } from '../controls/textfield';\r\nimport { SelectControl } from '../controls/select';\r\nimport { TagListControl } from '../controls/taglist';\r\nimport { NumberControl } from '../controls/number';\r\nimport { DateControl } from '../controls/date';\r\nimport { TimeControl } from '../controls/time';\r\nimport { ToggleControl } from '../controls/toggle';\r\nimport { CheckBoxControl } from '../controls/checkbox';\r\nimport { ChipRadioControl } from '../controls/chipradio';\r\nimport { RadioControl } from '../controls/radio';\r\nimport { ChipCheckListControl } from '../controls/chipchecklist';\r\nimport { CheckListControl } from '../controls/checklist';\r\nimport { TextAreaControl } from '../controls/textarea';\r\nimport { FilePickerControl } from '../controls/filepicker';\r\nimport { TextControl } from '../controls/text';\r\nimport { HtmlControl } from '../controls/html';\r\nimport { ImageControl } from '../controls/image';\r\nimport { TabControl } from '../controls/tab';\r\nimport { ChartControl } from '../controls/chart';\r\nimport { AccordionControl } from '../controls/accordion';\r\nimport { DynamicListControl } from '../controls/dynamiclist';\r\nimport { GroupControl } from '../controls/group';\r\nimport { TableControl } from '../controls/table';\r\nimport { ButtonControl } from '../controls/button';\r\nimport { SeparatorControl } from '../controls/separator';\r\nimport { SpacerControl } from '../controls/spacer';\r\nimport { IFrameControl } from '../controls/iframe';\r\nimport { TooltipControl } from '../controls/tooltip';\r\nimport { RegisterService } from '../services/register.service';\r\n\r\nexport function createControl(name: string\r\n , metadata: any\r\n , componentRef: any\r\n , elementRef: ElementRef\r\n , register: RegisterService | undefined) : Control {\r\n\r\n switch (metadata.type) {\r\n\r\n case \"default\":\r\n return new FormControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"textfield\":\r\n return new TextFieldControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"select\":\r\n return new SelectControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"taglist\":\r\n return new TagListControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"number\":\r\n return new NumberControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"datetime\":\r\n switch (metadata.subtype) {\r\n case \"date\":\r\n return new DateControl(name, metadata, componentRef, elementRef);\r\n case \"time\":\r\n return new TimeControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checkbox\":\r\n switch (metadata.subtype) {\r\n case \"toggle\":\r\n return new ToggleControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckBoxControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"radio\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipRadioControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new RadioControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checklist\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipCheckListControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckListControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"textarea\":\r\n return new TextAreaControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"filepicker\":\r\n return new FilePickerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"text\":\r\n return new TextControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"html\":\r\n return new HtmlControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"image\":\r\n return new ImageControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"dynamiclist\":\r\n switch (metadata.subtype) {\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n default:\r\n return new DynamicListControl(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n case \"group\":\r\n return new GroupControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"table\":\r\n return new TableControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"chart\":\r\n return new ChartControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"button\":\r\n return new ButtonControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"separator\":\r\n return new SeparatorControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"spacer\":\r\n return new SpacerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"iframe\":\r\n return new IFrameControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tooltip\":\r\n return new TooltipControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n}\r\n","import {\r\n Directive, Input, ElementRef, AfterContentInit, OnDestroy\r\n , ContentChild, ContentChildren, QueryList, forwardRef\r\n} from '@angular/core';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { createControl } from '../controls/factory';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport { IDynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.interface';\r\nimport { ItemControl } from '../controls/control';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[register]',\r\n standalone: true\r\n})\r\nexport class RegisterDirective implements AfterContentInit, OnDestroy {\r\n @Input() register: any = null;\r\n @Input() componentRef: any;\r\n @ContentChild(forwardRef(() => DynamicFieldsComponent)) dynamicField?: IDynamicFieldsComponent;\r\n @ContentChildren(forwardRef(() => DynamicFieldsComponent), { descendants: true }) itemFields!: QueryList<IDynamicFieldsComponent>;\r\n \r\n constructor(\r\n private el: ElementRef,\r\n private registerService: RegisterService\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n this.registerControl();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unregisterControl();\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private registerControl(): void {\r\n const name = this.getName();\r\n\r\n const register = (this.register.type === 'dynamiclist')\r\n ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)\r\n : this.dynamicField?.getRegister();\r\n\r\n const control = createControl(name, this.register, this.componentRef, this.el, register);\r\n this.registerService.register(name, control);\r\n\r\n }\r\n\r\n private unregisterControl(): void {\r\n this.registerService.unregister(this.getName());\r\n }\r\n\r\n private getName(): string {\r\n return this.register.name ?? this.register.id;\r\n }\r\n\r\n private createDynamicRegister(name: string, metadata: any, componentRef: any, el: ElementRef\r\n , itemFields: QueryList<IDynamicFieldsComponent>): RegisterService {\r\n\r\n const newRegister = new RegisterService(null);\r\n\r\n const registerAll = (itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n newRegister.unregisterAll();\r\n itemFields.forEach((itemField, index) => {\r\n const register = itemField.getRegister();\r\n const newName = `${name}-${index}`;\r\n const control = new ItemControl(newName, index, metadata, componentRef, el, register);\r\n newRegister.register(newName, control);\r\n });\r\n }\r\n\r\n registerAll(itemFields);\r\n\r\n itemFields.changes\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n registerAll(itemFields);\r\n });\r\n\r\n return newRegister;\r\n }\r\n}\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[refresh]',\r\n standalone: true\r\n})\r\nexport class RefreshDirective implements AfterContentInit {\r\n @Input() refresh: (() => void) | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef._refresh = this.refresh;\r\n }\r\n\r\n}\r\n","import { Directive, AfterViewInit, Host } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[updateBlur]',\r\n standalone: true\r\n})\r\nexport class UpdateBlurDirective implements AfterViewInit {\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) { }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (this.sirioInput?.control?.updateOn === 'blur') {\r\n\r\n const writeValue = this.sirioInput.writeValue;\r\n\r\n this.sirioInput.writeValue = function (value: any, event = false) {\r\n writeValue.bind(this)(value, false);\r\n };\r\n\r\n this.sirioInput.onBlur = function (event: any) {\r\n writeValue.bind(this)(this.value, true);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioDatepickerComponent } from 'ngx-sirio-lib';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\n\r\n@Directive({\r\n selector: '[isoDate]',\r\n standalone: true\r\n})\r\nexport class DateDirective {\r\n\r\n constructor(@Host() private sirioDatepicker: SirioDatepickerComponent) {\r\n\r\n const registerOnChange = this.sirioDatepicker.registerOnChange.bind(this.sirioDatepicker);\r\n\r\n this.sirioDatepicker.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(dateToStore(value));\r\n });\r\n };\r\n\r\n const writeValue = this.sirioDatepicker.writeValue.bind(this.sirioDatepicker);\r\n\r\n this.sirioDatepicker.writeValue = function (value: any, event?: boolean, updateCalendar?: boolean) {\r\n writeValue(dateToDisplay(value), event, updateCalendar);\r\n };\r\n } \r\n}\r\n\r\nconst dislayFormat = 'dd/mm/yyyy';\r\nconst storeFormat = 'yyyy-mm-dd';\r\n\r\nfunction dateToDisplay(value: string): string | null {\r\n if (typeof value === \"string\") {\r\n const date = parseStore(value) ?? parseDisplay(value);\r\n return (date == null)\r\n ? value\r\n : Datepicker.formatDate(date, dislayFormat, 'it');\r\n }\r\n else {\r\n return null;\r\n } \r\n}\r\n\r\nfunction dateToStore(value: string): string | null {\r\n if (typeof value === \"string\") {\r\n const date = parseStore(value) ?? parseDisplay(value);\r\n return (date == null)\r\n ? null\r\n : Datepicker.formatDate(date, storeFormat, 'it');\r\n }\r\n else {\r\n return null;\r\n } \r\n}\r\n\r\nfunction parseDisplay(value: string): Date | null {\r\n const regex = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\r\n const match = value.match(regex);\r\n if (!match) return null;\r\n\r\n const day = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const year = parseInt(match[3], 10);\r\n\r\n const date = new Date(year, month - 1, day);\r\n\r\n if (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n ) {\r\n return date;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\nfunction parseStore(value: string): Date | null {\r\n const regex = /^(\\d{4})-(\\d{2})-(\\d{2})(T\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$/;\r\n const match = value.match(regex);\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const year = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const day = parseInt(match[3], 10);\r\n\r\n const date = new Date(year, month - 1, day);\r\n\r\n if (\r\n date.getFullYear() === year &&\r\n date.getMonth() === month - 1 &&\r\n date.getDate() === day\r\n ) {\r\n return date;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n\r\n\r\n","import { Directive, Host, AfterViewInit, Input } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[number]',\r\n standalone: true\r\n})\r\nexport class NumberDirective implements AfterViewInit {\r\n @Input() defaultValue: number | null = null;\r\n @Input() minimum: number | null = null;\r\n @Input() maximum: number | null = null;\r\n @Input() decimalDigits: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = (value: number | null): number | null => {\r\n const originalValue = value;\r\n\r\n if (value === null && this.defaultValue !== null) {\r\n value = this.defaultValue;\r\n }\r\n\r\n if (value != null) {\r\n if (this.minimum !== null && value < this.minimum) {\r\n value = this.minimum;\r\n }\r\n\r\n if (this.maximum !== null && value > this.maximum) {\r\n value = this.maximum;\r\n }\r\n\r\n if (this.decimalDigits != null && this.decimalDigits >= 0) {\r\n const factor = Math.pow(10, this.decimalDigits);\r\n value = Math.round(value * factor) / factor;\r\n }\r\n }\r\n \r\n if (originalValue !== value) { \r\n this.sirioInput.writeValue(value, false); \r\n }\r\n\r\n return value;\r\n };\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(valueToStore(value))); \r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n const input = this.sirioInput.sirioInput.nativeElement;\r\n\r\n input.addEventListener('keydown', (event: Event) => {\r\n const e = event as KeyboardEvent;\r\n if (e.key === '.'\r\n || (e.key === ',' && !this.acceptDecimal())\r\n || (e.key === '-' && !this.acceptSign())) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n input.addEventListener('paste', (event: Event) => {\r\n const e = event as ClipboardEvent;\r\n const text = e.clipboardData?.getData('text') || '';\r\n if (text.includes('.')\r\n || (text.includes(',') && !this.acceptDecimal())\r\n || (text.includes('-') && !this.acceptSign())) {\r\n event.preventDefault();\r\n }\r\n });\r\n \r\n }\r\n\r\n private acceptSign(): boolean {\r\n if (this.minimum !== null && this.minimum >= 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private acceptDecimal(): boolean {\r\n if (this.decimalDigits !== null && this.decimalDigits === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nfunction valueToStore(value: string): number | null {\r\n if (typeof value === \"string\") {\r\n if (value.trim() === '') { \r\n return null;\r\n }\r\n const numericValue = parseFloat(value);\r\n if (isNaN(numericValue)) {\r\n return null;\r\n }\r\n return numericValue;\r\n }\r\n else if (typeof value === 'number') {\r\n return value as number;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Renderer2, Input, OnChanges, AfterViewInit, SimpleChanges } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[textcase], [maxlength]',\r\n standalone: true\r\n})\r\nexport class TextDirective implements OnChanges, AfterViewInit {\r\n @Input() textcase: '' | 'uppercase' | 'lowercase' = '';\r\n @Input() maxlength: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent\r\n , private renderer: Renderer2) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = this.coerceValue.bind(this);\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(value));\r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.configureTextCase();\r\n this.configureMaxLength(); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"maxlength\"]) {\r\n this.configureMaxLength();\r\n }\r\n }\r\n\r\n private coerceValue(value: string): string\r\n {\r\n return this.applyMaxLength(\r\n this.applyCase(value));\r\n }\r\n\r\n private applyCase(value: string): string {\r\n if (this.textcase === \"uppercase\") {\r\n return value.toUpperCase();\r\n }\r\n else if (this.textcase === \"lowercase\") {\r\n return value.toLowerCase();\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n\r\n private applyMaxLength(value: string): string {\r\n if (this.maxlength != null && value.length > this.maxlength) {\r\n return value.slice(0, Math.max(0, this.maxlength));\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n\r\n private configureTextCase() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n\r\n inputElement.oninput = (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const value = input.value;\r\n\r\n var newValue = this.coerceValue(value);\r\n\r\n if (newValue != value) {\r\n this.replaceInputValue(input, newValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private configureMaxLength() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n\r\n if (inputElement) {\r\n if (this.maxlength == null) {\r\n inputElement.removeAttribute('maxlength');\r\n } else {\r\n inputElement.maxLength = this.maxlength;\r\n }\r\n } \r\n }\r\n\r\n private replaceInputValue(input: HTMLInputElement, value: string): void {\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n\r\n input.value = value;\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(start, end);\r\n }, 0);\r\n }\r\n\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[disableForm]',\r\n standalone: true\r\n})\r\nexport class DisableFormDirective implements OnChanges {\r\n @Input('disableForm') config!: {\r\n disabled: boolean | null;\r\n formGroup: FormGroup;\r\n path: string;\r\n };\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (this.hasValue(this.config.path) && this.config.formGroup) {\r\n var formGroup = this.config.formGroup.get(this.config.path);\r\n if (formGroup instanceof FormGroup) {\r\n if (this.config.disabled) {\r\n formGroup.disable({ emitEvent: false });\r\n } else {\r\n formGroup.enable({ emitEvent: false });\r\n }\r\n }\r\n }\r\n \r\n this.viewContainer.clear();\r\n }\r\n\r\n private hasValue(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n}\r\n","import { Directive, Host, OnInit, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[tabControl]',\r\n standalone: true\r\n})\r\nexport class TabControlDirective implements OnInit, OnDestroy {\r\n \r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.tabChangeSub = this.sirioTab.tabChange.subscribe(this.HandleIndexChange.bind(this));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabChangeSub?.unsubscribe();\r\n }\r\n\r\n private tabChangeSub!: Subscription;\r\n\r\n private HandleIndexChange(event: NgxSirioEvent<SirioTabComponent>) {\r\n const tab = event.component as any;\r\n if (event.data.newIndex === undefined) {\r\n tab.setActiveIndex(this.validateIndex(tab._savedIndex), true);\r\n }\r\n else {\r\n tab._savedIndex = event.data.newIndex;\r\n }\r\n }\r\n\r\n private validateIndex(index: number): number {\r\n if (index >= this.sirioTab.tabItems.length) {\r\n var firstTab = this.sirioTab.firstTabEnabled;\r\n if (firstTab) {\r\n index = firstTab.index;\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Directive({\r\n selector: '[collapse]',\r\n standalone: true\r\n})\r\nexport class CollapseDirective implements OnChanges, OnDestroy {\r\n @Input('collapse') maxHeight: number | null = null;\r\n @Input() language!: string;\r\n\r\n private currentHeight: number | null = null;\r\n private button: HTMLButtonElement | null = null;\r\n private iconSpan: HTMLElement | null = null;\r\n private expanded = false;\r\n private viewInitialized = false;\r\n private timeoutFocusOut: any;\r\n private unlistenFocusOut!: () => void;\r\n\r\n constructor(private el: ElementRef\r\n , private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewInitialized = true;\r\n this.currentHeight = this.maxHeight;\r\n this.applyCollapseLogic();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['language'] || changes['maxHeight']) {\r\n this.currentHeight = this.maxHeight;\r\n if (this.viewInitialized) {\r\n this.applyCollapseLogic();\r\n }\r\n }\r\n }\r\n\r\n private applyCollapseLogic(): void {\r\n \r\n this.resetStyles();\r\n \r\n this.resetButton();\r\n \r\n this.resetFocusHandler();\r\n\r\n if (this.maxHeight == null || this.maxHeight <= 0) {\r\n this.expanded = true;\r\n return;\r\n }\r\n\r\n this.expanded = false;\r\n\r\n this.applyStyle();\r\n\r\n const element = this.el.nativeElement as HTMLElement;\r\n\r\n if (element.scrollHeight > this.maxHeight) {\r\n this.applyButton();\r\n this.applyFocusHandler();\r\n }\r\n }\r\n\r\n private applyStyle() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'overflow', 'hidden');\r\n this.renderer.setStyle(element, 'max-height', `${this.maxHeight}px`);\r\n }\r\n\r\n private resetStyles() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'overflow', null);\r\n this.renderer.setStyle(element, 'max-height', null);\r\n }\r\n\r\n private applyButton(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.button = this.renderer.createElement('button');\r\n this.renderer.addClass(this.button, 'sirio-btn');\r\n this.renderer.setStyle(this.button, 'padding', '0px');\r\n\r\n const text = this.renderer.createText(this.locale(Texts, 'ReadMore'));\r\n\r\n this.iconSpan = this.renderer.createElement('span');\r\n this.renderer.addClass(this.iconSpan, 'fa');\r\n this.renderer.addClass(this.iconSpan, 'fa-chevron-down');\r\n \r\n this.renderer.appendChild(this.button, text);\r\n this.renderer.appendChild(this.button, this.iconSpan);\r\n\r\n this.renderer.listen(this.button, 'click', () => this.toggleExpand());\r\n this.renderer.setStyle(this.button, 'margin-top', '8px');\r\n\r\n this.renderer.appendChild(element.parentNode, this.button);\r\n }\r\n\r\n private resetButton() {\r\n if (this.button && this.button.parentNode) {\r\n this.renderer.removeChild(this.button.parentNode, this.button);\r\n this.button = null;\r\n }\r\n }\r\n\r\n private applyFocusHandler() {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.unlistenFocusOut = this.renderer.listen(element, 'focusout', () => {\r\n clearTimeout(this.timeoutFocusOut);\r\n this.timeoutFocusOut = setTimeout(() => {\r\n if (!element.contains(document.activeElement)) {\r\n element.scrollTop = 0;\r\n console.log('NESSUN elemento interno ha più il focus');\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n private resetFocusHandler() {\r\n if (this.unlistenFocusOut) {\r\n this.unlistenFocusOut();\r\n }\r\n clearTimeout(this.timeoutFocusOut);\r\n }\r\n\r\n private toggleExpand(): void {\r\n this.expanded = !this.expanded;\r\n if (this.expanded) {\r\n this.expand();\r\n } else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n private expand(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'max-height', 'none');\r\n this.renderer.setStyle(element, 'overflow', 'visible');\r\n this.button!.childNodes[0].textContent = this.locale(Texts, 'ReadLess');\r\n this.updateIcon('fa-chevron-up', 'fa-chevron-down');\r\n }\r\n\r\n private collapse(): void {\r\n const element = this.el.nativeElement as HTMLElement;\r\n this.renderer.setStyle(element, 'max-height', `${this.currentHeight}px`);\r\n this.renderer.setStyle(element, 'overflow', 'hidden');\r\n this.button!.childNodes[0].textContent = this.locale(Texts, 'ReadMore');\r\n this.updateIcon('fa-chevron-down', 'fa-chevron-up');\r\n }\r\n\r\n private updateIcon(add: string, remove: string) {\r\n if (this.iconSpan) {\r\n this.renderer.removeClass(this.iconSpan, remove);\r\n this.renderer.addClass(this.iconSpan, add);\r\n }\r\n }\r\n\r\n private locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resetButton();\r\n this.resetFocusHandler();\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioAccordionPanelComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[accordionPanel]',\r\n standalone: true\r\n})\r\nexport class AccordionPanelDirective {\r\n\r\n constructor(\r\n @Host() panel: SirioAccordionPanelComponent\r\n ) {\r\n panel.opened.subscribe((event: NgxSirioEvent<SirioAccordionPanelComponent>) => {\r\n const element = (event.component.body as any).el.nativeElement;\r\n // delay height calculation to allow for DOM updates\r\n setTimeout(() => {\r\n //const scrollHeight = element.scrollHeight;\r\n //element.style.height = `${scrollHeight}px`;\r\n element.style.height = '';\r\n }, 0);\r\n }); \r\n }\r\n}\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-template-wrapper',\r\n template: '',\r\n standalone: true\r\n})\r\nexport class TemplateWrapperComponent {\r\n @Input() template!: TemplateRef<any>;\r\n @Input() context: any = {};\r\n\r\n constructor() { }\r\n\r\n getTemplateRef(): TemplateRef<any> {\r\n const result = {\r\n createEmbeddedView: (context: any) => {\r\n return this.template.createEmbeddedView(this.context);\r\n }\r\n } as TemplateRef<any>;\r\n\r\n (result as any).createEmbeddedViewImpl = () => {\r\n return this.template.createEmbeddedView(this.context);\r\n }\r\n\r\n return result;\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SanitizeService {\r\n\r\n constructor(private sanitizer: DomSanitizer)\r\n {\r\n this.sanitizeOption = {\r\n allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),\r\n allowedAttributes: {\r\n ...sanitizeHtml.defaults.allowedAttributes,\r\n '*': ['style']\r\n }\r\n };\r\n }\r\n\r\n sanitizeHtml(html: string): string {\r\n return sanitizeHtml(html, this.sanitizeOption);\r\n };\r\n\r\n sanitizeSafeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html));\r\n };\r\n\r\n sanitizeSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n toString(safeHtml: SafeHtml): string {\r\n return this.sanitizer.sanitize(1, safeHtml) || '';\r\n }\r\n\r\n private sanitizeOption!: sanitizeHtml.IOptions;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { marked } from 'marked';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkdownService {\r\n\r\n constructor() {\r\n\r\n marked.use({\r\n async: false,\r\n gfm: true,\r\n breaks: true\r\n });\r\n\r\n const renderer = new marked.Renderer();\r\n\r\n renderer.link = function (args) {\r\n return `<a href=\"${args.href}\" target=\"_blank\">${args.text}</a>`; \r\n };\r\n\r\n marked.setOptions({ renderer });\r\n }\r\n\r\n toHtml(text: string): string {\r\n return marked.parse(text ?? \"\") as string;\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport mimeDb from 'mime-db';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MimeService {\r\n\r\n constructor() { }\r\n\r\n getMimeTypes(extensions: string): string {\r\n return (extensions ?? \"\")\r\n .split(',')\r\n .map(ext => this.getMimeType(ext.trim()))\r\n .filter(mime => mime !== null)\r\n .join(', ');\r\n };\r\n\r\n private getMimeType(extension: string): string | null {\r\n const ext = extension.startsWith('.') ? extension.slice(1) : extension;\r\n for (const [mimeType, info] of Object.entries(mimeDb)) {\r\n if (info.extensions && info.extensions.includes(ext)) {\r\n return mimeType;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, FormControl, FormArray, AbstractControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\nimport { SanitizeService } from '../services/sanitize.service';\r\nimport { MarkdownService } from '../services/markdown.service';\r\nimport { MimeService } from '../services/mime.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { EventService, CommandEvent } from '../services/event.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { GridService } from '../services/grid.service';\r\nimport { ChartService } from '../services/chart.service';\r\nimport { ButtonColors } from 'ngx-sirio-lib';\r\nimport { AdornerDirective } from '../directives/adorner.directive';\r\nimport { DisableDirective } from '../directives/disable.directive';\r\nimport { DisplayDirective } from '../directives/display.directive';\r\nimport { RepeatDirective } from '../directives/repeat.directive';\r\nimport { FrameSecurityDirective } from '../directives/framesecurity.directive';\r\nimport { DropdownDirective } from '../directives/dropdown.directive';\r\nimport { TabDirective } from '../directives/tab.directive';\r\nimport { AccordionDirective } from '../directives/accordion.directive';\r\nimport { GridDirective } from '../directives/grid.directive';\r\nimport { ChangeDirective } from '../directives/change.directive';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { RefreshDirective } from '../directives/refresh.directive';\r\nimport { UpdateBlurDirective } from '../directives/updateblur.directive';\r\nimport { DateDirective } from '../directives/date.directive';\r\nimport { NumberDirective } from '../directives/number.directive';\r\nimport { TextDirective } from '../directives/text.directive';\r\nimport { DisableFormDirective } from '../directives/disableform.directive';\r\nimport { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { CollapseDirective } from '../directives/collapse.directive';\r\nimport { AccordionPanelDirective } from '../directives/accordionpanel.directive';\r\nimport { TemplateWrapperComponent } from '../shared/template-wrapper/template-wrapper.component';\r\nimport { isObservable, Observable, of } from 'rxjs';\r\n\r\nimport {\r\n SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , NgxSirioEvent\r\n} from 'ngx-sirio-lib';\r\n\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { Module, GridOptions } from 'ag-grid-community';\r\nimport { AgCharts } from \"ag-charts-angular\";\r\nimport { AgChartOptions } from 'ag-charts-community';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'app-dynamic-fields',\r\n templateUrl: './dynamic-fields.component.html',\r\n styleUrls: [\r\n './dynamic-fields.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, DisableDirective, DisplayDirective, FrameSecurityDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, TabDirective, GridDirective, ChangeDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective\r\n , DisableFormDirective, TabControlDirective, CollapseDirective, AccordionPanelDirective\r\n , SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , TemplateWrapperComponent\r\n , AgGridAngular, AgCharts],\r\n providers: [\r\n RegisterService,\r\n ProgrammabilityService,\r\n GridService,\r\n ChartService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFieldsComponent implements OnInit, AfterViewInit, IDynamicFieldsComponent {\r\n @Input() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() language!: string;\r\n\r\n Texts = Texts;\r\n\r\n constructor(private sanitizer: SanitizeService\r\n , private markdown: MarkdownService\r\n , private mime: MimeService\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private grid: GridService\r\n , private chart: ChartService\r\n , private el: ElementRef\r\n , private cdr: ChangeDetectorRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void { \r\n this.configureDatepicker();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.focusFirst();\r\n });\r\n }\r\n\r\n getRegister(): RegisterService {\r\n return this.register;\r\n }\r\n\r\n getClass(component: any): string {\r\n const colHost = \"col-host \";\r\n if (component.layout?.columns) {\r\n return colHost + \"col-md-\" + component.layout?.columns;\r\n }\r\n else {\r\n return colHost + \"col\";\r\n }\r\n }\r\n\r\n getTextFeedback(component: any): string {\r\n const control = this.formGroup.get(component.key) as FormControl;\r\n return !control || control.valid || !control.errors\r\n ? ''\r\n : control.errors['message'];\r\n }\r\n\r\n isWarning(component: any): boolean {\r\n const control = this.formGroup.get(component.key) as FormControl;\r\n return (control && control.errors && control.errors['warning']) || false\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.formGroup, value); \r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n return this.programmability.evaluateBoolean(this.formGroup, value);\r\n }\r\n\r\n evaluateNumber(value: number | string | null): number | null {\r\n return this.programmability.evaluateNumber(this.formGroup, value);\r\n }\r\n\r\n evaluateUrl(value: string | null): SafeResourceUrl {\r\n const url = this.programmability.evaluateString(this.formGroup, value);\r\n const watchKey = `:safeUrl(${url})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n return this.sanitizer.sanitizeSafeUrl(url);\r\n });\r\n }\r\n\r\n evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n evaluate(text: string | null, cacheable: boolean = true): any {\r\n return this.programmability.evaluate(this.formGroup, text, {\r\n cacheable: cacheable\r\n });\r\n }\r\n\r\n evaluateColor(value: string | null): ButtonColors | null {\r\n const color = this.evaluateString(value);\r\n const watchKey = `:buttonColor(${color})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n if (color === \"ghost\")\r\n return null;\r\n const validColors: ButtonColors[] = ['primary', 'secondary', 'tertiary', 'tertiary-light', 'danger'];\r\n return validColors.includes(color as ButtonColors) ? (color as ButtonColors) : 'primary';\r\n });\r\n }\r\n\r\n evaluateConditional(conditional: any): boolean {\r\n const hide = this.evaluateBoolean(conditional?.hide);\r\n const show = this.evaluateBoolean(conditional?.show);\r\n \r\n return !(hide === true || show === false);\r\n }\r\n\r\n getTemplate(value: string): any {\r\n return this.metadata.getFormByName(value);\r\n }\r\n\r\n getFormGroup(control: AbstractControl | null): FormGroup {\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormArray(control: AbstractControl | null): FormArray {\r\n if (!(control instanceof FormArray)) {\r\n throw new Error('Control is not a FormArray');\r\n }\r\n return control;\r\n }\r\n\r\n resolvePath(path: string | null): FormGroup {\r\n return this.getFormGroup(this.getControlFromPath(path))\r\n }\r\n\r\n toHTML(text: string): SafeHtml {\r\n const watchKey = `:safeHtml(${text})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n const html = this.markdown.toHtml(text);\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n });\r\n };\r\n\r\n sanitize(html: string): SafeHtml {\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n };\r\n\r\n getMimeTypes(extensions: string): string {\r\n return this.mime.getMimeTypes(extensions);\r\n };\r\n\r\n clickButton(component: any, event: any) {\r\n if (component.click) {\r\n this.evaluate(component.click, false);\r\n }\r\n if (component.command) {\r\n const command: CommandEvent = {\r\n name: this.evaluateString(component.command),\r\n component: component,\r\n formGroup: this.formGroup,\r\n event: event\r\n };\r\n this.events.emitCommand(command);\r\n } \r\n }\r\n\r\n getValues(component: any): Observable<any> {\r\n if (component.values) {\r\n // Static\r\n return of(component.values);\r\n }\r\n else if (component.valuesKey) {\r\n // Field value\r\n const result = this.evaluate(component.valuesKey);\r\n return this.getAsObservable(result);\r\n }\r\n else if (component.valuesExpression) {\r\n // Expression\r\n const result = this.evaluate(component.valuesExpression);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return of([]);\r\n } \r\n }\r\n\r\n refreshValues(component: any): () => void {\r\n return () => {\r\n if (component.valuesKey) {\r\n this.invalidate(component.valuesKey);\r\n }\r\n else if (component.valuesExpression) {\r\n this.invalidate(component.valuesExpression);\r\n } \r\n }; \r\n }\r\n\r\n getChartOptions(component: any): Observable<AgChartOptions> {\r\n return this.weak.call(component, `getChartOptions_${this.language}`\r\n , () => this.chart.getOptions(component, this.formGroup, this.language));\r\n }\r\n\r\n invalidateChart(component: any): () => void {\r\n return () => this.weak.invalidate(component, `getChartOptions_${this.language}`);\r\n }\r\n\r\n getChartData(component: any): any {\r\n const expression = this.chart.getDataExpression(component);\r\n return this.programmability.evaluate(this.formGroup, expression);\r\n }\r\n\r\n getGridOptions(component: any): GridOptions {\r\n return this.weak.call(component, `getGridOptions_${this.language}`\r\n , () => this.grid.getOptions(component, this.formGroup, this.language));\r\n }\r\n\r\n getGridModules(component: any): Module[] {\r\n return this.weak.call(component, 'getGridModules', () => this.grid.getModules());\r\n }\r\n\r\n onGridSelectionChanged(component: any, event: any) {\r\n this.grid.onSelectionChanged(component, this.formGroup, event);\r\n }\r\n\r\n getRowSource(component: any): Observable<any> {\r\n if (component.dataSource) {\r\n // Expression\r\n const result = this.evaluate(component.dataSource, true);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return of([]);\r\n }\r\n }\r\n\r\n refreshRowSource(component: any): () => void {\r\n return () => {\r\n if (component.dataSource) {\r\n this.invalidate(component.dataSource);\r\n } \r\n };\r\n }\r\n\r\n addItem(formArray: FormArray) {\r\n (formArray as any).addItem();\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number) {\r\n formArray.removeAt(index);\r\n }\r\n\r\n createUploadTables(component: any): any {\r\n return this.weak.call(component, 'createUploadTables', () => {\r\n return [\r\n {\r\n components: [\r\n {\r\n \"type\": \"table\",\r\n \"layout\": {\r\n \"columns\": null\r\n },\r\n \"columns\": [\r\n {\r\n \"label\": this.locale(Texts, 'Name'),\r\n \"key\": \"name\",\r\n \"flex\": 1\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Size'),\r\n \"key\": \"size\",\r\n \"format\": \"integer\",\r\n \"align\": \"right\"\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Type'),\r\n \"key\": \"type\" \r\n },\r\n {\r\n \"key\": \"url\",\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"objectURL\"\r\n },\r\n {\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"deleteRow\"\r\n }\r\n ],\r\n \"dataSource\": \"=\" + component.key,\r\n \"height\": 200,\r\n \"conditional\": component.conditional,\r\n \"disabled\": component.disabled\r\n }\r\n ]\r\n }\r\n ];\r\n });\r\n }\r\n\r\n fileUploaded($event: NgxSirioEvent<SirioFileUploadComponent>) {\r\n const removeFile = (file: File) => {\r\n if ($event.component.control) {\r\n const newFiles = $event.component.fileList.filter(f => f !== file);\r\n $event.component.control.setValue(newFiles);\r\n addRemove(newFiles);\r\n return newFiles;\r\n }\r\n return [];\r\n }\r\n\r\n const addRemove = (files: File[]) => {\r\n files.forEach(file => {\r\n if (!('remove' in file)) {\r\n Object.defineProperty(file, 'remove', {\r\n value: function () {\r\n removeFile(this);\r\n },\r\n writable: false,\r\n enumerable: false\r\n });\r\n } \r\n }); \r\n };\r\n\r\n addRemove($event.component.fileList);\r\n }\r\n\r\n private invalidate(text: string | null): void {\r\n return this.programmability.invalidate(text);\r\n }\r\n\r\n private getControlFromPath(path: string | null): AbstractControl | null {\r\n const control = path\r\n ? this.formGroup.get(path)\r\n : this.formGroup;\r\n\r\n if (!control) {\r\n throw new Error(`FormGroup does not contain a control with path '${path}'`, { cause: this.formGroup });\r\n }\r\n return control;\r\n }\r\n\r\n private focusFirst() {\r\n const focusableElements = this.el.nativeElement.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n for (let el of focusableElements) {\r\n if (!(el as HTMLElement).hasAttribute('disabled')) {\r\n (el as HTMLElement).focus();\r\n break;\r\n } \r\n }\r\n }\r\n\r\n private getAsObservable(value: any): Observable<any> {\r\n if (isObservable(value))\r\n return value;\r\n return of(value);\r\n }\r\n\r\n private configureDatepicker() {\r\n (Datepicker.locales as any)['it'] = {\r\n days: [\r\n 'Domenica',\r\n 'Lunedì',\r\n 'Martedì',\r\n 'Mercoledì',\r\n 'Giovedì',\r\n 'Venerdì',\r\n 'Sabato',\r\n ],\r\n daysMin: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],\r\n months: [\r\n 'Gennaio',\r\n 'Febbraio',\r\n 'Marzo',\r\n 'Aprile',\r\n 'Maggio',\r\n 'Giugno',\r\n 'Luglio',\r\n 'Agosto',\r\n 'Settembre',\r\n 'Ottobre',\r\n 'Novembre',\r\n 'Dicembre',\r\n ],\r\n monthsShort: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'Mag',\r\n 'Giu',\r\n 'Lug',\r\n 'Ago',\r\n 'Set',\r\n 'Ott',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n today: 'Oggi',\r\n clear: 'Pulisci',\r\n format: 'dd/mm/yyyy',\r\n weekStart: 1\r\n };\r\n };\r\n}\r\n","<ng-container *ngFor=\"let row of rows\" [formGroup]=\"formGroup\">\r\n <div class=\"row field-set\">\r\n <ng-container *ngFor=\"let component of row.components\">\r\n <ng-container [ngSwitch]=\"component.type\">\r\n <div [class]=\"getClass(component)\">\r\n <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <!-- #region textfield -->\r\n <ng-container *ngSwitchCase=\"'textfield'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"text\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n dropdown\r\n #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"locale(Texts, 'TypeToSearch')\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [isMultiple]=\"true\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"number\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n number\r\n [defaultValue]=\"evaluateNumber(component.defaultValue)\"\r\n [minimum]=\"evaluateNumber(component.minimum)\"\r\n [maximum]=\"evaluateNumber(component.maximum)\"\r\n [decimalDigits]=\"evaluateNumber(component.decimalDigits)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaDateLabel') || locale(component, 'dateLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'dateLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n isoDate\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaTimeLabel') || locale(component, 'timeLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'timeLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [refresh]=\"refreshValues(component)\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"textarea\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-file-upload [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ locale(Texts, 'Upload') }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-slider [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [min]=\"evaluateNumber(component.range?.min) ?? 0\"\r\n [max]=\"evaluateNumber(component.range?.max) ?? 0\"\r\n #range\r\n [register]=\"component\"\r\n [componentRef]=\"range\">\r\n </ngx-sirio-slider>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\"\r\n [repeat]=\"evaluateNumber(component.repetitions)\"\r\n [allowAddRemove]=\"evaluateBoolean(component.allowAddRemove)\">\r\n <p *ngIf=\"component.description\">{{ evaluateString(locale(component, 'description')) }}</p>\r\n <ng-container *ngIf=\"getFormArray(resolvePath(component.path).get(component.key)) as formArray\">\r\n <ng-container *ngIf=\"formArray.controls.length > 0\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [tabCount]=\"formArray.controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\">\r\n <ng-container *ngIf=\"i === dynamiclisttab.activeIndex\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"formArray.controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel #panel accordionPanel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <ng-container *ngIf=\"panel.panelIsOpen\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true, 'group-outline-repeat': true }\">\r\n <div [ngClass]=\"{\r\n'group-top': component.verticalAlignment === 'start',\r\n'group-center': component.verticalAlignment === 'center',\r\n'group-bottom': component.verticalAlignment === 'end'}\">\r\n <label>{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"{\r\n 'group-outline': component.showOutline === true,\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <div #group\r\n [register]=\"component\"\r\n [componentRef]=\"group\">\r\n <app-dynamic-fields [formGroup]=\"resolvePath(component.path)\"\r\n [rows]=\"component.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <ngx-sirio-tab #tab\r\n [register]=\"component\"\r\n [componentRef]=\"tab\"\r\n [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [isNavLine]=\"component.navigation\"\r\n [isVertical]=\"component.vertical\"\r\n tabControl>\r\n <ng-container *ngFor=\"let panel of component.panels; let i = index;\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(panel, 'label'))\"\r\n [icon]=\"evaluateString(panel.icon)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <div *ngIf=\"i === tab.activeIndex\" [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <ngx-sirio-accordion #accordion\r\n [register]=\"component\"\r\n [componentRef]=\"accordion\">\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-accordion-panel *ngIf=\"evaluateConditional(panel.conditional)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled)\">\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(panel, 'label'))\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div [collapse]=\"component.collapseTo\"\r\n [language]=\"language\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n <!--Reset View Context-->\r\n <div tabindex=\"0\" style=\"display:none\"></div>\r\n <div class=\"flex\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n <ng-container *ngIf=\"component.tooltip\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [attr.aria-label]=\"locale(Texts, 'Information')\"\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'tooltip')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region html -->\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <div class=\"html-paragraph\"\r\n [innerHTML]=\"sanitize(evaluateTemplate(locale(component, 'content')))\"\r\n #html\r\n [register]=\"component\"\r\n [componentRef]=\"html\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img [src]=\"evaluateString(component.source)\"\r\n [alt]=\"evaluateString(locale(component, 'alt'))\"\r\n style=\"width: 100%;height: 100%;\"\r\n #image\r\n [register]=\"component\"\r\n [componentRef]=\"image\">\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\r\n [gridOptions]=\"getGridOptions(component)\"\r\n (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [rowSource]=\"(getRowSource(component) | async) || []\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height.px]=\"component.height\"\r\n #table\r\n [register]=\"component\"\r\n [componentRef]=\"table\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region button -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <label [for]=\"component.id\">{{ evaluateString(locale(component, 'label')) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(locale(component, 'label'))\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"locale(Texts, 'Close')\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(locale(component, 'title'))\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(locale(component, 'title')) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region chart -->\r\n <ng-container *ngSwitchCase=\"'chart'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-charts [options]=\"(getChartOptions(component) | async) ?? {}\"\r\n [observe]=\"getChartData(component)\"\r\n [callback]=\"invalidateChart(component)\"\r\n [style.height.px]=\"component.height\"\r\n #chart\r\n [register]=\"component\"\r\n [componentRef]=\"chart\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","/// <reference path=\"../types/typings.d.ts\" />\r\n\r\nimport {\r\n Component, Input, Output, OnChanges, OnDestroy \r\n , SimpleChanges, ViewEncapsulation, EventEmitter\r\n , ViewChild, ElementRef, Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormBuilder, FormGroup, FormControlOptions, AbstractControl\r\n , ValidatorFn, Validators, ValidationErrors,\r\n FormArray\r\n} from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { patchForm } from '../utils/patchForm';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { CommandEvent, EventService } from '../services/event.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { FunctionService } from '../services/function.service';\r\nimport { DialogService, FormDialogOptions } from '../services/dialog.service';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport {\r\n SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , SirioStepperProgressStatus\r\n} from 'ngx-sirio-lib';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { DisableFormDirective } from '../directives/disableform.directive';\r\nimport { Control } from '../controls/control'; \r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Component({\r\n selector: 'app-dynamic-form',\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: [\r\n '../shared/bootstrap-grid.scss',\r\n './dynamic-form.component.css'\r\n ],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , RegisterDirective, DisableFormDirective\r\n , SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , DynamicFieldsComponent],\r\n providers: [\r\n EventService\r\n , ProgrammabilityService\r\n , RegisterService\r\n , MetadataService\r\n , FunctionService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormComponent implements OnChanges, OnDestroy {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() value: any = {};\r\n @Input() strict: boolean = false;\r\n @Input() showNav: boolean = true;\r\n @Input() showNavButton: boolean = true;\r\n @Input() showProgress: boolean = false;\r\n @Input() showFormTitle: boolean = false;\r\n @Input() progressStatus: boolean = true;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() initialized = new EventEmitter<FormGroup>();\r\n @Output() onCommand = new EventEmitter<CommandEvent>();\r\n @Output() activeNavChange = new EventEmitter<any>();\r\n @ViewChild('default') formDiv!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private fb: FormBuilder\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private registerService: RegisterService\r\n , private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector\r\n ) { }\r\n\r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n private internalChange = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.onChangeSchema(); \r\n }\r\n\r\n if (changes['value']) {\r\n this.onChangeValue();\r\n }\r\n }\r\n\r\n get forms(): Array<any> {\r\n return this._forms;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n canPrevious(): boolean {\r\n return this.getPrevious() != -1; \r\n }\r\n\r\n goPrevious() {\r\n if (this.canPrevious()) {\r\n this.activeNav = this.getPrevious();\r\n }\r\n }\r\n\r\n canNext(): boolean {\r\n return this.getNext() != -1; \r\n }\r\n\r\n goNext() {\r\n if (this.canNext()) { \r\n this.activeNav = this.getNext();\r\n }\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n return this.registerService.getControl(name);\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n return this.registerService.getControlAs(name, type);\r\n }\r\n\r\n get activeNav(): number {\r\n return this._activeNav;\r\n }\r\n\r\n @Input()\r\n set activeNav(value: number) {\r\n if (value >= 0 && value < this.getMaxNav()) {\r\n this._activeNav = value;\r\n } \r\n setTimeout(() => {\r\n if (this.formDiv?.nativeElement) {\r\n setFocus(this.formDiv.nativeElement);\r\n }\r\n this.activeNavChange.emit(this._activeNav);\r\n });\r\n }\r\n\r\n get language(): string {\r\n return this._language;\r\n }\r\n\r\n @Input()\r\n set language(value: string) {\r\n this._language = value ?? '';\r\n this.metadata.setLanguage(this._language);\r\n }\r\n\r\n getFormGroup(path: string | null): FormGroup {\r\n const control = path ? this.formGroup.get(path) : this.formGroup;\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormStatus(form: any, index: number): SirioStepperProgressStatus {\r\n\r\n const current = index == this.activeNav;\r\n\r\n if (this.progressStatus && !current && this.hasValue(form.path)) {\r\n const formGroup = this.getFormGroup(form.path);\r\n return formGroup.valid ? \"success\" : \"error\";\r\n }\r\n else {\r\n return \"active\";\r\n } \r\n }\r\n\r\n activateForm(title: string) {\r\n const index = this.forms.findIndex(form => form.title === title);\r\n if (index != -1)\r\n this.activeNav = index;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n return this.programmability.evaluateBoolean(this.formGroup, value);\r\n }\r\n\r\n evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n openForm(template: string, options: FormDialogOptions) {\r\n const formSchema = this.metadata.getTemplateByName(template);\r\n if (formSchema) {\r\n options = {\r\n ...options,\r\n injector: this.injector,\r\n language: this.language,\r\n };\r\n this.dialog.openDialog(formSchema, options);\r\n } \r\n }\r\n\r\n refresh() {\r\n patchForm(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n }\r\n\r\n private valueChangesSubscription: Subscription | null = null;\r\n private onCommandSubscription: Subscription | null = null;\r\n\r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private _language: string = \"\";\r\n\r\n private defaultValue: any = { };\r\n\r\n private onChangeSchema() {\r\n if (!this.formGroup) {\r\n this.formGroup = this.fb.group({});\r\n }\r\n\r\n this.clearControls();\r\n\r\n this.clearHandlers();\r\n\r\n const schema = this.schema;\r\n\r\n const allForms = groupByRow(schema.forms ?? []);\r\n\r\n this.metadata.setSchema(schema);\r\n\r\n this.metadata.setForms(allForms);\r\n\r\n this._forms = allForms.filter(item => item.isTemplate !== true);;\r\n\r\n this.buildForm();\r\n\r\n this.defaultValue = this.formGroup.value;\r\n\r\n if (this.value) {\r\n patchForm(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n }\r\n\r\n if (this.initialized)\r\n this.initialized.emit(this.formGroup);\r\n\r\n this.registerHandlers(); \r\n }\r\n\r\n private onChangeValue() {\r\n if (this.internalChange) {\r\n this.internalChange = false;\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n this.clearFormArrays(this.formGroup);\r\n patchForm(this.formGroup, this.value, {\r\n emitEvent: false,\r\n strict: this.strict\r\n });\r\n }\r\n }\r\n\r\n private getNext(): number {\r\n let index = this.activeNav + 1;\r\n const max = this.getMaxNav();\r\n\r\n while (index < max) {\r\n if (!this.isDisabled(index)) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n private getPrevious(): number {\r\n let index = this.activeNav - 1;\r\n\r\n while (index >= 0) {\r\n if (!this.isDisabled(index)) {\r\n return index;\r\n }\r\n index--;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n private getMaxNav(): number {\r\n return this._forms.length ?? 0; \r\n };\r\n\r\n private isDisabled(index: number): boolean {\r\n var form = this._forms[index];\r\n\r\n if (!form)\r\n return false;\r\n\r\n return this.evaluateBoolean(form.disabled) ?? false;\r\n }\r\n \r\n private clearControls(): void {\r\n Object.keys(this.formGroup.controls).forEach(key => {\r\n this.formGroup.removeControl(key);\r\n });\r\n }\r\n\r\n private clearFormArrays(control: AbstractControl): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear();\r\n control.markAsPristine();\r\n control.markAsUntouched();\r\n } else if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach(childControl => {\r\n this.clearFormArrays(childControl);\r\n });\r\n }\r\n }\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n this.internalChange = true;\r\n this.valueChange.emit(value);\r\n });\r\n\r\n this.onCommandSubscription = this.events.onCommand.subscribe((data) => {\r\n if (this.onCommand)\r\n this.onCommand.emit(data);\r\n });\r\n };\r\n\r\n private clearHandlers(): void {\r\n if (this.valueChangesSubscription) {\r\n this.valueChangesSubscription.unsubscribe();\r\n }\r\n\r\n if (this.onCommandSubscription) {\r\n this.onCommandSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private buildForm() {\r\n this.forms.forEach((form: any) => {\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components);\r\n });\r\n });\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder, formGroup: FormGroup, components: Array<any>) {\r\n let formComponent = this;\r\n\r\n components?.forEach((component: any) => {\r\n if (this.isFormComponent(component)) {\r\n const currentGroup = this.applyPath(this.fb, formGroup, component.path);\r\n let defaultValue = this.getDefaultValue(component);\r\n const validators = this.getValidators(currentGroup, component);\r\n const options: FormControlOptions = {\r\n validators: validators || [],\r\n updateOn: this.getUpdateOn(component) || \"change\"\r\n };\r\n const control = formBuilder.control(defaultValue, options);\r\n currentGroup.addControl(component.key, control);\r\n }\r\n else if (this.isContainerComponent(component)) {\r\n const containers = this.getContainers(component);\r\n containers?.forEach((container: { path: any; rows: any }) => {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, container.path);\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components);\r\n });\r\n });\r\n }\r\n else if (this.isArrayComponent(component)) {\r\n const itemComponent = this.getArrayItem(component);\r\n if (itemComponent.key) {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, itemComponent.path);\r\n this.createFormArray(formBuilder, currentGroup, itemComponent);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder, formGroup: FormGroup, itemComponent: any): FormArray {\r\n const formComponent = this;\r\n\r\n const formArray = formBuilder.array<FormGroup>([]);\r\n\r\n formGroup.addControl(itemComponent.key, formArray);\r\n\r\n const createItem = function (): FormGroup {\r\n let newGroup = formBuilder.group({});\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components);\r\n });\r\n return newGroup;\r\n };\r\n\r\n const resizeFormArray = this.resizeFormArray;\r\n\r\n const addItem = function (this: FormArray) {\r\n let newGroup = createItem();\r\n this.push(newGroup);\r\n return newGroup;\r\n };\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.resize = resize;\r\n }\r\n\r\n const resize = function (this: FormArray, size: number) {\r\n const newArray = resizeFormArray(this, size, createItem);\r\n prepareArray(newArray);\r\n formGroup.setControl(itemComponent.key, newArray);\r\n };\r\n\r\n prepareArray(formArray);\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: () => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n newArray.push(createItem());\r\n }\r\n return newArray;\r\n }\r\n else if (formArray.length > size) {\r\n return new FormArray(formArray.controls.slice(0, size));\r\n }\r\n else {\r\n return formArray;\r\n }\r\n }\r\n\r\n private applyPath(formBuilder: FormBuilder, formGroup: FormGroup, path: string) {\r\n if (!path) {\r\n return formGroup;\r\n }\r\n let currentGroup: FormGroup = formGroup;\r\n this.splitPath(path).forEach((segment) => {\r\n const existGroup = currentGroup.get(segment);\r\n if (existGroup instanceof FormGroup) {\r\n currentGroup = existGroup;\r\n return;\r\n }\r\n else if (existGroup) {\r\n throw new Error(`Cannot create form group because an element with path ${segment} already exists`);\r\n }\r\n else {\r\n const segmentGroup = formBuilder.group({});\r\n currentGroup.addControl(segment, segmentGroup);\r\n currentGroup = segmentGroup;\r\n } \r\n });\r\n return currentGroup;\r\n }\r\n\r\n private getValidators(formGroup: FormGroup, component: any): ValidatorFn[] | null {\r\n\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (component?.validate?.required === true) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n if (!Array.isArray(component.validations)) {\r\n if (validators.length == 0)\r\n return null;\r\n return validators;\r\n }\r\n\r\n component.validations?.forEach((item: any) => {\r\n if (!this.programmability.isExpression(item.expression))\r\n return;\r\n\r\n if (item.type === \"validate\") {\r\n validators.push(this.validateFn(formGroup, item));\r\n }\r\n else if (item.type === \"invalidate\") {\r\n validators.push(this.invalidateFn(formGroup, item));\r\n } \r\n });\r\n\r\n if (validators.length == 0)\r\n return null;\r\n\r\n return validators;\r\n }\r\n\r\n private validateFn(formGroup: FormGroup, item: any): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n //if (!control.touched)\r\n // return null;\r\n\r\n var valid = this.programmability.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n if (!valid) {\r\n return { error: true, message: this.locale(item, 'message') };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n private invalidateFn(formGroup: FormGroup, item: any): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n //if (!control.touched)\r\n // return null;\r\n\r\n var invalid = this.programmability.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n if (invalid) {\r\n return { error: true, message: this.locale(item, 'message') };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n private isFormComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"checkbox\":\r\n case \"checklist\":\r\n case \"datetime\":\r\n case \"filepicker\":\r\n case \"number\":\r\n case \"radio\":\r\n case \"select\":\r\n case \"taglist\":\r\n case \"textarea\":\r\n case \"textfield\":\r\n case \"range\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isContainerComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"group\":\r\n case \"tab\":\r\n case \"accordion\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isArrayComponent(component: any): boolean {\r\n switch (component.type) {\r\n case \"dynamiclist\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n \r\n private getArrayItem(component: any): { key: any; path: any; rows: any } {\r\n if (component.type === 'dynamiclist') {\r\n return { key: component.key, path: component.path, rows: component.rows };\r\n }\r\n else {\r\n return { key: null, path: null, rows: [] };\r\n }\r\n }\r\n\r\n private getContainers(component: any): { path: any; rows: any }[] {\r\n if (component.type === 'group') {\r\n return [{ path: component.path, rows: component.rows }];\r\n }\r\n else if (component.type === 'tab'\r\n || component.type === 'accordion') {\r\n return component.panels.map((panel: any) => ({\r\n path: panel.path,\r\n rows: this.metadata.getFormByName(panel.template)?.rows ?? []\r\n }));\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private getUpdateOn(component: any): any {\r\n switch (component.type) {\r\n case \"number\":\r\n case \"textarea\":\r\n case \"textfield\":\r\n return \"blur\";\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private getDefaultValue(component: any): any {\r\n switch (component.type) {\r\n case \"textarea\":\r\n case \"textfield\":\r\n case \"radio\":\r\n case \"select\":\r\n return component.defaultValue as string;\r\n case \"number\":\r\n return component.defaultValue as number;\r\n case \"checkbox\":\r\n return component.defaultValue as boolean;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private splitPath(path: string): string[] {\r\n if (!path) {\r\n return [];\r\n }\r\n return path\r\n .split('.')\r\n .map(segment => segment.trim())\r\n .filter(segment => segment.length > 0);\r\n }\r\n\r\n private hasValue(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngs\">\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n\r\n <!-- #region progress -->\r\n <ngx-sirio-stepper-progress-bar *ngIf=\"showProgress\"\r\n (eventClick)=\"activateForm($event.data.label)\"\r\n [hasDropdown]=\"true\"\r\n [dropDownLabel]=\"locale(Texts, 'Show')\">\r\n <ng-container *ngFor=\"let form of forms, let formIndex = index\">\r\n <ngx-sirio-stepper-progress-item *ngIf=\"!evaluateBoolean(form.disabled)\"\r\n [hasNavigation]=\"true\"\r\n [status]=\"getFormStatus(form,formIndex)\"\r\n [label]=\"evaluateTemplate(locale(form, 'title'))\" />\r\n </ng-container>\r\n </ngx-sirio-stepper-progress-bar>\r\n <!-- #endregion -->\r\n\r\n <!-- #region form disable -->\r\n <ng-container *ngFor=\"let form of forms\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(form.disabled),\r\n formGroup: formGroup,\r\n path: form.path\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <ng-container *ngIf=\"showNav\">\r\n\r\n <div class=\"col-md-4\">\r\n\r\n <!-- #region sidenav -->\r\n <ng-template #sidenavTemplate>\r\n <ngx-sirio-sidenav>\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == sectionIndex\"\r\n (click)=\"activeNav = sectionIndex\"\r\n (keydown.enter)=\"activeNav = sectionIndex\"\r\n tabindex=\"0\">\r\n {{ evaluateTemplate(locale(form, 'title')) }}\r\n </ngx-sirio-sidenav-item>\r\n </ng-container>\r\n </ng-container>\r\n </ngx-sirio-sidenav>\r\n </ng-template>\r\n\r\n <ngx-sirio-sidenav-mobile class=\"d-block d-lg-none\"\r\n [openMenuLabel]=\"locale(Texts, 'OpenMenu')\"\r\n [openMenuAriaLabel]=\"locale(Texts, 'OpenMenu')\"\r\n [closeMenuLabel]=\"locale(Texts, 'CloseMenu')\"\r\n closeMenuAriaLabel=\"locale(Texts, 'CloseMenu')\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </ngx-sirio-sidenav-mobile>\r\n <div class=\"d-none d-lg-block\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n </div>\r\n\r\n <div class=\"col-md-1\">\r\n <div class=\"separator-horizontal\"></div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div class=\"content-element-form\" [ngClass]=\"showNav ? 'col-md-11' : 'col-md-16'\">\r\n\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <div *ngIf=\"activeNav == sectionIndex && !evaluateBoolean(form.disabled)\"\r\n #default\r\n [register]=\"form\"\r\n [componentRef]=\"default\">\r\n <h1 *ngIf=\"showFormTitle && form.title\" class=\"h3 form-title\">{{ evaluateTemplate(locale(form, 'title')) }}</h1>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(form.path)\"\r\n [rows]=\"form.rows\"\r\n [language]=\"language\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showNavButton && (canNext() || canPrevious())\">\r\n\r\n <div class=\"row section-navs\">\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" *ngIf=\"canNext()\" (click)=\"goNext()\" class=\"nextSection\">\r\n {{ locale(Texts, 'NextSection') }}\r\n <span class=\"fa-solid fa-chevron-right\" style=\"margin-left: 10px\"></span>\r\n </ngx-sirio-button>\r\n </div>\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" *ngIf=\"canPrevious()\" (click)=\"goPrevious()\" class=\"prevSection\">\r\n <span class=\"fa-solid fa-chevron-left\" style=\"margin-right: 10px\"></span>\r\n {{ locale(Texts, 'PreviousSection') }}\r\n </ngx-sirio-button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n</form>\r\n\r\n\r\n\r\n","export function extractFiles(data: any)\r\n : { data: any; files: File[] }\r\n{\r\n let files: File[] = [];\r\n\r\n const rewrite = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => rewrite(item));\r\n }\r\n else if (obj instanceof File) {\r\n files.push(obj);\r\n return {\r\n name: obj.name,\r\n size: obj.size,\r\n type: obj.type,\r\n lastModified: obj.lastModified,\r\n _fileIndex: files.length - 1\r\n };\r\n }\r\n else if (typeof obj === 'object' && obj !== null) {\r\n const rewritten: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n rewritten[key] = rewrite(obj[key]);\r\n }\r\n }\r\n return rewritten;\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n return { data: rewrite(data), files: files };\r\n}\r\n","import { extractFiles } from \"./extractFiles\";\r\n\r\nexport function toFormData(data: any): FormData\r\n{\r\n const formData = new FormData();\r\n\r\n var result = extractFiles(data);\r\n\r\n formData.append(\"data\", JSON.stringify(result.data));\r\n \r\n result.files.forEach((file) => {\r\n formData.append(\"files\", file);\r\n });\r\n\r\n return formData;\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { IGetRowsParams } from 'ag-grid-community';\r\nimport { IRowsSource } from './interfaces';\r\n\r\nexport class ODataSource implements IRowsSource {\r\n constructor(private url: string\r\n , private http: HttpClient) {\r\n }\r\n\r\n getRows(params: IGetRowsParams) {\r\n const queryString = this.getQueryString(params);\r\n\r\n let queryUrl = `${this.url}${queryString}`\r\n\r\n this.http.get<any>(queryUrl, { observe: 'response' }).subscribe({\r\n next: response => {\r\n const data = response.body ?? [];\r\n const count = response.headers.get('X-Total-Count');\r\n params.successCallback(data, this.toNumber(count));\r\n },\r\n error: error => {\r\n console.log(error);\r\n params.failCallback();\r\n }\r\n });\r\n }\r\n\r\n private getQueryString(params: IGetRowsParams): string {\r\n let queryParams = new HttpParams();\r\n queryParams = this.addCount(queryParams);\r\n queryParams = this.addSkipAndTake(params, queryParams);\r\n queryParams = this.addOrderBy(params, queryParams);\r\n queryParams = this.addFilterBy(params, queryParams);\r\n\r\n const queryString = queryParams.toString();\r\n return queryString ? \"?\" + queryString : queryString;\r\n }\r\n\r\n private addCount(queryParams: HttpParams): HttpParams {\r\n return queryParams.set(\"$count\", \"true\");\r\n }\r\n\r\n private addSkipAndTake(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n return queryParams\r\n .set(\"$top\", `${params.endRow - params.startRow}`)\r\n .set(\"$skip\", `${params.startRow}`);\r\n }\r\n\r\n private addOrderBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n if (!params.sortModel || params.sortModel.length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const orderByParams = params.sortModel\r\n .map(sort => `${sort.colId} ${sort.sort}`)\r\n .join(\",\");\r\n\r\n return queryParams.set(\"$orderby\", orderByParams);\r\n }\r\n\r\n private addFilterBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n\r\n const filterModel = params.filterModel;\r\n\r\n if (!filterModel || Object.keys(filterModel).length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const filters: string[] = [];\r\n\r\n for (const column in filterModel) {\r\n const filter = filterModel[column];\r\n\r\n const condition = this.getCondition(column, filter);\r\n\r\n if (condition) {\r\n filters.push(condition);\r\n }\r\n }\r\n\r\n return queryParams.set(\"$filter\", filters.join(\" and \"));\r\n }\r\n\r\n private getCondition(column: string, filter: any): string | null {\r\n\r\n if (filter.operator === \"AND\" || filter.operator === \"OR\") {\r\n if (Array.isArray(filter.conditions)) {\r\n return \"(\" + filter.conditions.map((subfilter: any) => this.getCondition(column, subfilter))\r\n .join(` ${filter.operator.toLowerCase()} `) + \")\";\r\n }\r\n return null;\r\n }\r\n\r\n const value = filter.filter;\r\n\r\n switch (filter.filterType) {\r\n case \"text\":\r\n const text = (value ?? \"\").replace(/'/g, \"''\");\r\n if (filter.type === \"contains\") {\r\n return `contains(${column}, '${text}')`;\r\n } else if (filter.type === \"notContains\") {\r\n return `not contains(${column}, '${text}')`;\r\n } else if (filter.type === \"equals\") {\r\n return `${column} eq '${text}'`;\r\n } else if (filter.type === \"notEqual\") {\r\n return `${column} ne '${text}'`;\r\n } else if (filter.type === \"startsWith\") {\r\n return `startswith(${column}, '${text}')`;\r\n } else if (filter.type === \"endsWith\") {\r\n return `endswith(${column}, '${text}')`;\r\n } else if (filter.type === \"blank\") {\r\n return `${column} eq null`;\r\n } else if (filter.type === \"notBlank\") {\r\n return `${column} ne null`;\r\n } else if (filter.type === \"true\") {\r\n return `${column} eq true`;\r\n } else if (filter.type === \"false\") {\r\n return `${column} eq false`;\r\n }\r\n break;\r\n\r\n case \"number\":\r\n if (filter.type === \"equals\") {\r\n return `${column} eq ${value}`;\r\n } else if (filter.type === \"greaterThan\") {\r\n return `${column} gt ${value}`;\r\n } else if (filter.type === \"lessThan\") {\r\n return `${column} lt ${value}`;\r\n } else if (filter.type === \"greaterThanOrEqual\") {\r\n return `${column} ge ${value}`;\r\n } else if (filter.type === \"lessThanOrEqual\") {\r\n return `${column} le ${value}`;\r\n }\r\n break;\r\n\r\n case \"date\":\r\n return `${column} eq ${value}`; // Modifica se OData usa formati ISO\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private toNumber(value: string | null): number | undefined {\r\n if (!value)\r\n return undefined;\r\n const num = parseFloat(value);\r\n return isNaN(num) ? undefined : num;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport class RestDataSource<T, T2 = T> {\r\n private params: Record<string, any> = {};\r\n private mapFn?: (data: T) => T2;\r\n\r\n constructor(private http: HttpClient\r\n , private baseUrl: string) { }\r\n\r\n setParam(key: string, value: any): RestDataSource<T, T2> {\r\n if (value !== undefined && value !== null) {\r\n this.params[key] = value;\r\n } else {\r\n delete this.params[key];\r\n }\r\n return this;\r\n }\r\n\r\n setParams(params: Record<string, any>): RestDataSource<T, T2> {\r\n this.params = { ...params };\r\n return this;\r\n }\r\n\r\n setMapFunction(mapFn: (data: T) => T2): RestDataSource<T, T2> {\r\n this.mapFn = mapFn;\r\n return this;\r\n }\r\n\r\n getMapFunction(): ((data: T) => T2) | undefined {\r\n return this.mapFn;\r\n }\r\n\r\n getParam(key: string): any {\r\n return this.params[key];\r\n }\r\n\r\n getParams(): Record<string, any> {\r\n return this.params;\r\n }\r\n\r\n getData(): Observable<T2[]> {\r\n let httpParams = new HttpParams();\r\n\r\n Object.keys(this.params).forEach(key => {\r\n if (this.params[key] !== undefined && this.params[key] !== null) {\r\n httpParams = httpParams.set(key, this.params[key].toString());\r\n }\r\n });\r\n\r\n return this.http.get<T[]>(this.baseUrl, { params: httpParams }).pipe(\r\n map(responseArray =>\r\n this.mapFn ? responseArray.map(item => this.mapFn!(item)) : responseArray as unknown as T2[]\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ODataSource } from '../dataSources/odata';\r\nimport { RestDataSource } from '../dataSources/rest';\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataService {\r\n\r\n constructor(\r\n private http: HttpClient)\r\n { }\r\n\r\n queryOData(url: string): IRowsSource {\r\n return this.createOData(url);\r\n }\r\n\r\n createRest(url: string): RestDataSource<any, any>;\r\n createRest<T>(url: string): RestDataSource<T, T>;\r\n createRest<T, T2>(url: string): RestDataSource<T, T2>;\r\n createRest<T = any, T2 = T>(url: string): RestDataSource<T, T2> {\r\n return new RestDataSource<T, T2>(this.http, url);\r\n }\r\n\r\n private createOData(url: string): IRowsSource {\r\n return new ODataSource(url, this.http);\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["evaluateTemplate","evaluate","Texts","it","en","de","fr","es","pt","i1.MetadataService","i2.DialogService","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FunctionService","i6.RegisterService","i7.ScopeService","FormControl","i1.ProgrammabilityService","i1","i2","i1.FormatterService","i2.ProgrammabilityService","takeUntil","i1.RegisterService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.EventService","i6.WeakService","i7.RegisterService","i8.MetadataService","i9.GridService","i10.ChartService","i12","i3.EventService","i4.RegisterService","i5.MetadataService","i6.DialogService","i7"],"mappings":"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"}