@wemake4u/form-player-se 1.0.36 → 1.0.37

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/proxy.ts","../../../projects/ngx-sirio/src/lib/common/path.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/utils/bound.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/formatter.service.ts","../../../projects/ngx-sirio/src/lib/utils/uuid.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/services/form.service.ts","../../../projects/ngx-sirio/src/lib/services/global.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/feelable.ts","../../../projects/ngx-sirio/src/lib/utils/CallbackRegistry.ts","../../../projects/ngx-sirio/src/lib/services/validation.service.ts","../../../projects/ngx-sirio/src/lib/services/disable.service.ts","../../../projects/ngx-sirio/src/lib/services/status.service.ts","../../../projects/ngx-sirio/src/lib/services/event.service.ts","../../../projects/ngx-sirio/src/lib/services/compute.service.ts","../../../projects/ngx-sirio/src/lib/utils/groupByRow.ts","../../../projects/ngx-sirio/src/lib/components/objectURLRenderer/objectURLRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/objectURLRenderer/objectURLRenderer.component.html","../../../projects/ngx-sirio/src/lib/components/deleteRowRenderer/deleteRowRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/deleteRowRenderer/deleteRowRenderer.component.html","../../../projects/ngx-sirio/src/lib/components/actionsCellRenderer/actionsCellRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/actionsCellRenderer/actionsCellRenderer.component.html","../../../projects/ngx-sirio/src/lib/common/symbols.ts","../../../projects/ngx-sirio/src/lib/common/record.ts","../../../projects/ngx-sirio/src/lib/components/setFilter/setFilter.component.ts","../../../projects/ngx-sirio/src/lib/components/setFilter/setfilter.component.html","../../../projects/ngx-sirio/src/lib/components/hostCellRenderer/hostCellRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/hostCellRenderer/hostCellRenderer.component.html","../../../projects/ngx-sirio/src/lib/utils/focusable.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/validationpatch.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapsepatch.directive.ts","../../../projects/ngx-sirio/src/lib/directives/adorner.directive.ts","../../../projects/ngx-sirio/src/lib/directives/readonly.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/services/cache.service.ts","../../../projects/ngx-sirio/src/lib/directives/recursion.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/displayfield.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/valuesync.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabitem.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/dynamic-host/dynamic-host.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.html","../../../projects/ngx-sirio/src/lib/utils/isMeaningful.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/services/autofocus.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/directives/formIndex.directive.ts","../../../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/utils/syncronize.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/lib/interact/confirmation.ts","../../../projects/ngx-sirio/src/lib/interact/notification.ts","../../../projects/ngx-sirio/src/lib/interact/prompt.ts","../../../projects/ngx-sirio/src/wemake4u-form-player-se.ts"],"sourcesContent":["export function bindFunction(fn: Function, context: any) {\r\n if (fn.bind && context && fn.prototype !== undefined) {\r\n return fn.bind(context);\r\n }\r\n return (...args: any[]) => fn.apply(context, args);\r\n}\r\n\r\nexport function toProxy(instance: any, seen = new WeakMap()): any { \r\n if (instance === null || typeof instance !== 'object') return instance;\r\n if (seen.has(instance)) return seen.get(instance);\r\n\r\n const proxy = new Proxy(instance, {\r\n get: (target: any, property: PropertyKey, receiver: any) => {\r\n let value: any;\r\n try {\r\n value = Reflect.get(target, property, receiver);\r\n } catch {\r\n return undefined;\r\n }\r\n\r\n if (typeof property === 'symbol' || property === 'toJSON') return value;\r\n\r\n if (typeof value === 'function') {\r\n return bindFunction(value, instance);\r\n }\r\n\r\n if (typeof value === 'object' && value !== null) {\r\n if (value instanceof Date || value instanceof RegExp || value instanceof Map || value instanceof Set) {\r\n return value;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n if (seen.has(value)) return seen.get(value);\r\n const arrayProxy = new Proxy(value, {\r\n get(arrTarget, index, arrReceiver) {\r\n const item = Reflect.get(arrTarget, index, arrReceiver);\r\n return typeof item === 'object' && item !== null\r\n ? toProxy(item, seen)\r\n : item;\r\n }\r\n });\r\n seen.set(value, arrayProxy);\r\n return arrayProxy;\r\n }\r\n\r\n return toProxy(value, seen);\r\n }\r\n\r\n return value;\r\n },\r\n has(target, key) {\r\n return key in target;\r\n }\r\n });\r\n\r\n seen.set(instance, proxy);\r\n return proxy;\r\n}\r\n","export type Path = string | number | Array<string | number>;\r\n\r\nexport function normalizePath(path: Path): (string | number)[]\r\n{\r\n if (typeof path === 'string') {\r\n return path.split('.');\r\n }\r\n if (Array.isArray(path)) {\r\n return path.reduce<(string | number)[]>((acc, part) => {\r\n if (typeof part === 'string') {\r\n acc.push(...part.split('.'));\r\n } else {\r\n acc.push(part);\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n return [path];\r\n};\r\n\r\nexport function matchPath(pathA: Path, pathB: Path): boolean {\r\n\r\n const a = normalizePath(pathA);\r\n const b = normalizePath(pathB);\r\n\r\n const minLen = Math.min(a.length, b.length);\r\n\r\n for (let i = 0; i < minLen; i++) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function stringifyPath(path: Path): string {\r\n if (Array.isArray(path)) {\r\n return path.join(\".\");\r\n }\r\n return String(path);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { buildSimpleTree, parser, evaluate as evaluateTemplate } from 'feelers';\r\nimport { unaryTest, evaluate, parseExpression } from 'feelin';\r\n\r\nconst PathExpression = \"PathExpression\";\r\nconst VariableName = \"VariableName\";\r\nconst FunctionInvocation = \"FunctionInvocation\";\r\nconst PositionalParameters = \"PositionalParameters\";\r\nconst NamedParameters = \"NamedParameters\";\r\nconst ParameterName = \"ParameterName\";\r\nconst StringLiteral = \"StringLiteral\";\r\nconst NumericLiteral = \"NumericLiteral\";\r\nconst List = \"List\";\r\nconst StatusDependency = \"$status\";\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\r\n const nodes: NodeItem[] = [{ type: \"root\", text: expression, children: [], parent: null }];\r\n\r\n const peek = () => {\r\n return nodes.length > 0 ? nodes[nodes.length - 1] : null;\r\n };\r\n\r\n const isAllowedPathExpression = (node: NodeItem): boolean => {\r\n if (node.type === VariableName) {\r\n return true;\r\n }\r\n if (node.type !== PathExpression || !Array.isArray(node.children)) {\r\n return false;\r\n }\r\n return node.children.every(isAllowedPathExpression);\r\n };\r\n\r\n const getPathExpression = (item: NodeItem): string[] => {\r\n if (item.type === VariableName) {\r\n return [item.text];\r\n }\r\n if (item.type === PathExpression) {\r\n return item.children.flatMap(getPathExpression);\r\n }\r\n return [];\r\n };\r\n\r\n parseExpression(expression, context).iterate({\r\n enter: (node: any) => {\r\n const type = node.name;\r\n const text = expression.substring(node.from, node.to);\r\n const parent = peek();\r\n const item: NodeItem = { type, text, children: [], parent: parent };\r\n if (parent) {\r\n parent.children.push(item);\r\n }\r\n nodes.push(item);\r\n },\r\n leave: (node: any) => {\r\n if (nodes.length > 0) {\r\n const item = nodes.pop();\r\n if (!item) return;\r\n const parent = peek();\r\n\r\n if (item.type === PathExpression) {\r\n const ignore = (parent?.type === FunctionInvocation\r\n || parent?.type === PathExpression\r\n || item.children.length == 0\r\n || !isAllowedPathExpression(item));\r\n if (!ignore) {\r\n const pathExpression = getPathExpression(item);\r\n if (addSet(pathExpression.join('.'))) {\r\n dependencies.push(pathExpression);\r\n }\r\n }\r\n }\r\n else if (item.type === VariableName) {\r\n const ignore = (parent?.type === FunctionInvocation\r\n || parent?.type === PathExpression);\r\n if (!ignore) {\r\n const pathExpression = item.text;\r\n if (addSet(pathExpression)) {\r\n dependencies.push(pathExpression);\r\n } \r\n }\r\n }\r\n else if (item.type === FunctionInvocation) {\r\n const functionName = this.getFunctionName(item, getPathExpression);\r\n if (functionName == \"fn.status\") {\r\n const statusDeps = this.getStatusDependencies(item);\r\n if (statusDeps && addSet(statusDeps.join('.'))) {\r\n dependencies.push(statusDeps);\r\n } \r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return dependencies;\r\n }\r\n\r\n getTemplateDependencies(expression: string, context: Record<string, any> = {}): (string | string[])[] {\r\n if (!expression) return [];\r\n\r\n const simpleTree = buildSimpleTree(parser.parse(expression), expression);\r\n\r\n const result: string[] = [];\r\n\r\n function traverse(nodeArray: any[]) {\r\n for (const node of nodeArray) {\r\n if (node.name === 'FeelBlock' && node.content) {\r\n result.push(node.content);\r\n }\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n }\r\n\r\n traverse([simpleTree]);\r\n\r\n const arrayExpression = `[ ${result.join(', ')} ]`;\r\n\r\n return this.getDependencies(arrayExpression, context);\r\n }\r\n\r\n //#region Private Members\r\n\r\n private findAncestor(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n let current = node.parent;\r\n while (current !== null) {\r\n if (predicate(current)) {\r\n return current;\r\n }\r\n current = current.parent;\r\n }\r\n return null;\r\n }\r\n\r\n private findDescendant(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n for (const child of node.children) {\r\n if (predicate(child)) {\r\n return child;\r\n }\r\n const found = this.findDescendant(child, predicate);\r\n if (found !== null) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private findChild(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n for (const child of node.children) {\r\n if (predicate(child)) {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private findChildren(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem[] {\r\n return node.children.filter(predicate);\r\n }\r\n\r\n private getFunctionName(node: NodeItem, pathResolver: (item: NodeItem) => string[]): string | null {\r\n\r\n const pathExpression = this.findChild(node, (n) => n.type === PathExpression);\r\n if (pathExpression) {\r\n return pathResolver(pathExpression).join('.');\r\n }\r\n\r\n const variableName = this.findChild(node, (n) => n.type === VariableName);\r\n if (variableName) {\r\n return pathResolver(variableName).join('.');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getStatusDependencies(node: NodeItem): string[] | null {\r\n if (node.type != FunctionInvocation) return [];\r\n\r\n let pathParameter: NodeItem | null = null;\r\n\r\n const namedParameters = this.findChild(node, (n) => n.type === NamedParameters);\r\n\r\n if (namedParameters) {\r\n const pathName = this.findDescendant(namedParameters, (n) => n.type == ParameterName && n.text === \"path\");\r\n const namedParameter = pathName?.parent;\r\n if (namedParameter && namedParameter.children.length > 1) {\r\n pathParameter = namedParameter.children[1];\r\n } \r\n }\r\n\r\n const positionalParameters = this.findChild(node, (n) => n.type === PositionalParameters);\r\n\r\n if (positionalParameters) {\r\n pathParameter = positionalParameters.children[0];\r\n }\r\n\r\n if (pathParameter) {\r\n\r\n const getPathExpression = (item: NodeItem): string[] => {\r\n if (item.type === StringLiteral) {\r\n return this.splitQuoted(item.text);\r\n }\r\n else if (item.type === NumericLiteral) {\r\n return [item.text];\r\n }\r\n else if (item.type === List) {\r\n const items = this.findChildren(item, (n) => n.type !== \"[\" && n.type !== \"]\");\r\n if (items.every(n => n.type === StringLiteral || n.type === NumericLiteral)) {\r\n return items.flatMap(getPathExpression);\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const path = getPathExpression(pathParameter);\r\n if (path.length > 0) \r\n return [StatusDependency, ...path];\r\n }\r\n \r\n return null;\r\n }\r\n\r\n private splitQuoted(input: string, separator: string = '.'): string[] {\r\n input = (input ?? \"\").slice(1, -1)\r\n return input\r\n .split(separator)\r\n .map(part => part.trim())\r\n .filter(part => part.length > 0);\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\ninterface NodeItem {\r\n type: string;\r\n text: string;\r\n children: NodeItem[];\r\n parent: NodeItem | null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isObservable, take } 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 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 invalidateAll(source: object) {\r\n if (this.cache.has(source)) {\r\n this.cache.delete(source);\r\n }\r\n }\r\n}\r\n","import { bindFunction } from '../utils/proxy';\r\n\r\nexport 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] = bindFunction(original, instance);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/bound';\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, title?: string, delay: number = 2000) {\r\n this.notify(\"info\", message, title, delay);\r\n }\r\n\r\n notifySuccess(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"success\", message, title, delay);\r\n }\r\n\r\n notifyWarning(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"warning\", message, title, delay);\r\n }\r\n\r\n notifyError(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"danger\", message, title, 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(type: ToastTypes, message: string, title?: string, delay: number = 2000) {\r\n this.sirioToast.openToast({\r\n delay: delay,\r\n text: message,\r\n type: type,\r\n title: title\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 host.onOutsideClick = () => { }\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 LoadingFailed: \"Si è verificato un errore durante il caricamento dei dati\",\r\n ConfirmDelete: \"Confermi l’eliminazione ?\\r\\nL’operazione non può essere annullata\",\r\n MoveUp: \"Sposta Sù\",\r\n MoveDown: \"Sposta Giù\",\r\n NoData: \"Nessun dato da mostrare\",\r\n RequiredField: \"Campo obbligatorio\"\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 LoadingFailed: \"An error occurred while loading data\",\r\n ConfirmDelete: \"Do you confirm the deletion?\\r\\nThis action cannot be undone\",\r\n MoveUp: \"Move Up\",\r\n MoveDown: \"Move Down\",\r\n NoData: \"No data to display\",\r\n RequiredField: \"Required field\",\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 LoadingFailed: \"Beim Laden der Daten ist ein Fehler aufgetreten\",\r\n ConfirmDelete: \"Möchten Sie das Löschen bestätigen?\\r\\nDieser Vorgang kann nicht rückgängig gemacht werden\",\r\n MoveUp: \"Nach oben verschieben\",\r\n MoveDown: \"Nach unten verschieben\",\r\n NoData: \"Keine Daten zum Anzeigen\",\r\n RequiredField: \"Pflichtfeld\"\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 LoadingFailed: \"Erreur lors du chargement des données\",\r\n ConfirmDelete: \"Confirmez-vous la suppression ?\\r\\nCette action ne peut pas être annulée\",\r\n MoveUp: \"Déplacer vers le haut\",\r\n MoveDown: \"Déplacer vers le bas\",\r\n NoData: \"Aucune donnée à afficher\",\r\n RequiredField: \"Champ obligatoire\"\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 LoadingFailed: \"Error al cargar los datos\",\r\n ConfirmDelete: \"¿Confirma la eliminación?\\r\\nEsta acción no se puede deshacer\",\r\n MoveUp: \"Mover arriba\",\r\n MoveDown: \"Mover abajo\",\r\n NoData: \"No hay datos para mostrar\",\r\n RequiredField: \"Campo obligatorio\"\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 LoadingFailed: \"Erro ao carregar os dados\",\r\n ConfirmDelete: \"Confirma a eliminação?\\r\\nEsta ação não pode ser desfeita\",\r\n MoveUp: \"Mover para cima\",\r\n MoveDown: \"Mover para baixo\",\r\n NoData: \"Nenhum dado para exibir\",\r\n RequiredField: \"Campo obrigatório\"\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 { LanguageService } from '@wemake4u/interact';\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 constructor(private languageService: LanguageService) {\r\n super();\r\n }\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('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.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 get language(): string {\r\n return this.languageService.getLanguage();\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/bound';\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 show(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n type: \"info\",\r\n buttons: 'OK',\r\n ...options,\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 prompt(text: string, defaultValue?: string, options?: DialogOptions) {\r\n const formSchema = this.createInputSchema(text, defaultValue);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OKCancel',\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 'show'\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 private createInputSchema(label: string, defaultValue?: string) {\r\n return {\r\n \"forms\": [\r\n {\r\n \"components\": [\r\n {\r\n \"label\": label,\r\n \"defaultValue\": defaultValue,\r\n \"type\": \"textfield\",\r\n \"layout\": {\r\n \"row\": \"Row_1wxz5gd\",\r\n \"columns\": null\r\n },\r\n \"id\": \"Field_1tau53x\",\r\n \"key\": \"input\"\r\n }\r\n ],\r\n \"type\": \"default\",\r\n \"id\": \"Form_1ontwnx\",\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 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\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/bound';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatterService implements IEvaluatorProvider {\r\n\r\n constructor() { }\r\n\r\n formatDate(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const formatOptions: Intl.DateTimeFormatOptions = {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n ...options\r\n };\r\n\r\n return new Intl.DateTimeFormat(locale, formatOptions).format(date);\r\n }\r\n\r\n formatTime(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const formatOptions: Intl.DateTimeFormatOptions = {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n ...options\r\n };\r\n\r\n return new Intl.DateTimeFormat(locale, formatOptions).format(date);\r\n }\r\n\r\n formatDateTime(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT') {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const datePart = new Intl.DateTimeFormat(locale, {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n ...options\r\n }).format(date);\r\n\r\n const timePart = new Intl.DateTimeFormat(locale, {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n ...options\r\n }).format(date);\r\n\r\n return `${datePart} ${timePart}`;\r\n }\r\n\r\n formatCurrency(\r\n value: number,\r\n currency: string = 'EUR',\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (isNaN(value)) return '';\r\n\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency: currency,\r\n currencyDisplay: 'symbol' // oppure: 'code' | 'name'\r\n }).format(value);\r\n }\r\n\r\n formatNumber(\r\n value: number,\r\n decimals: number = 2,\r\n locale: string = 'it-IT' \r\n ): string {\r\n if (isNaN(value)) return '';\r\n\r\n return new Intl.NumberFormat(locale, {\r\n style: 'decimal',\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals\r\n }).format(value);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'formatDate',\r\n 'formatTime',\r\n 'formatDateTime',\r\n 'formatCurrency',\r\n 'formatNumber'\r\n ]);\r\n }\r\n \r\n}\r\n","export function generateGuid(): string {\r\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\r\n return crypto.randomUUID();\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\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 private schema: any = { forms: [] };\r\n\r\n private forms: any[] = [];\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/bound';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { Observable, take } from 'rxjs';\r\nimport { generateGuid } from '../utils/uuid';\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 if (typeof func?.invoke === 'function') {\r\n return (...args: any) => func.invoke(args);\r\n }\r\n else {\r\n return () => { };\r\n }\r\n }\r\n\r\n executeOnce<T>(observable: Observable<T>, callback: any): void {\r\n if (!observable) return;\r\n observable\r\n .pipe(take(1))\r\n .subscribe({\r\n next: this.invokable(callback) as (value: T) => void\r\n });\r\n }\r\n\r\n openForm(template: string | object, options: DialogOptions)\r\n {\r\n let formSchema: any;\r\n\r\n if (typeof template === 'string') {\r\n formSchema = this.metadata.getTemplateByName(template);\r\n } else {\r\n formSchema = template;\r\n }\r\n\r\n if (formSchema) {\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n injector: this.injector\r\n }\r\n\r\n this.dialog.openDialog(formSchema, formOptions);\r\n }\r\n }\r\n\r\n newGuid(): string {\r\n return generateGuid();\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\",\r\n \"executeOnce\",\r\n \"newGuid\"\r\n ]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from './programmability.service';\r\nimport { AbstractControl, FormGroup, FormArray, FormControl, FormControlStatus } from '@angular/forms';\r\nimport { Path, normalizePath } from '../common/path';\r\nimport { filter, interval, map, Observable, of, take } from 'rxjs';\r\n\r\ntype ControlType = 'array' | 'group' | 'control';\r\n\r\nexport interface PatchOptions {\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\r\nexport interface PathOptions {\r\n emitError?: boolean;\r\n emitWarn?: boolean;\r\n create?: boolean;\r\n expected?: ControlType;\r\n breakOnArray?: boolean;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService implements IEvaluatorProvider {\r\n\r\n set(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n\r\n const currentControl = this.applyPath(control, path, pathOptions ?? { create: true });\r\n\r\n if (!currentControl)\r\n return false;\r\n\r\n this.patch(currentControl, value, patchOptions);\r\n\r\n return true;\r\n }\r\n\r\n get(control: AbstractControl, path: Path, pathOptions?: PathOptions): any {\r\n const result = this.getControl(control, path, pathOptions);\r\n return result?.value;\r\n }\r\n\r\n getControl(control: AbstractControl, path: Path, pathOptions?: PathOptions): AbstractControl | undefined {\r\n return this.applyPath(control, path, pathOptions);\r\n }\r\n\r\n prepend(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, 0, value, patchOptions);\r\n }\r\n return false;\r\n }\r\n\r\n append(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, formArray.length, value, patchOptions); \r\n }\r\n return false;\r\n }\r\n\r\n insert(control: AbstractControl, path: Path, index: number, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, index, value, patchOptions); \r\n }\r\n return false;\r\n }\r\n\r\n remove(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n return this.removeFromArray(formArray, index);\r\n }\r\n return false;\r\n }\r\n\r\n moveUp(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n if (index <= 0 || index >= formArray.length) return false;\r\n\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index - 1, control);\r\n\r\n return true;\r\n } \r\n return false;\r\n }\r\n\r\n moveDown(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n if (index < 0 || index >= formArray.length - 1) return false;\r\n\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index + 1, control);\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n status(control: AbstractControl, path: Path, pathOptions?: PathOptions) : FormControlStatus | undefined {\r\n const result = this.applyPath(control, path, pathOptions);\r\n return result?.status;\r\n }\r\n\r\n updateAllValueAndValidity(control: AbstractControl, emitEvent: boolean = true): void {\r\n for (const c of this.enumerateControls(control)) {\r\n c.updateValueAndValidity({ emitEvent });\r\n }\r\n }\r\n\r\n countInvalid(controls: Iterable<AbstractControl>) {\r\n let errors = 0;\r\n for (const control of controls) {\r\n errors += this.collectErrors(control);\r\n }\r\n return errors;\r\n }\r\n\r\n getInvalidControls(control: AbstractControl): { path: string, control: AbstractControl }[] {\r\n const invalid: { path: string, control: AbstractControl }[] = [];\r\n\r\n if (control.disabled)\r\n return invalid;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n const children = Object.values(control.controls);\r\n for (const child of children) {\r\n invalid.push(...this.getInvalidControls(child));\r\n }\r\n }\r\n else if (control.invalid) {\r\n invalid.push({ path: this.getPath(control).join(\".\"), control });\r\n }\r\n\r\n return invalid;\r\n }\r\n\r\n patch(\r\n control: AbstractControl, value: any, options?: PatchOptions): 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(`[patchControl] ${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 const currentValue = this.asObject(value);\r\n Object.keys(currentValue).forEach((key) => {\r\n if (control.controls[key]) {\r\n this.patch(control.controls[key], value[key], options);\r\n }\r\n else if (!strict) {\r\n const newControl = this.createControlFromValue(value[key]);\r\n this.setUnknown(newControl);\r\n control.addControl(key, newControl);\r\n this.patch(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 Object.keys(control.controls).forEach((key) => {\r\n if (!(key in currentValue)) {\r\n const childControl = control.get(key);\r\n if (childControl) {\r\n childControl.reset();\r\n }\r\n }\r\n }); \r\n }\r\n else if (control instanceof FormArray) {\r\n const currentValue = this.asArray(value);\r\n while (control.length < currentValue.length) {\r\n const anyControl = control as any;\r\n const itemToAdd = currentValue[control.length];\r\n if (typeof (anyControl).addItem === 'function') {\r\n anyControl.addItem();\r\n } else {\r\n control.push(this.createControlFromValue(itemToAdd));\r\n }\r\n }\r\n while (control.length > currentValue.length) {\r\n control.removeAt(control.length - 1);\r\n }\r\n currentValue.forEach((item: any, index: number) => {\r\n this.patch(control.at(index), item, options);\r\n });\r\n }\r\n else {\r\n error('Unsupported AbstractControl type.');\r\n }\r\n }\r\n\r\n getPath(control: AbstractControl): (string | number)[] {\r\n const path: (string | number)[] = [];\r\n let current: AbstractControl | null = control;\r\n\r\n while (current?.parent) {\r\n const parent: any = current.parent;\r\n\r\n if (parent instanceof FormArray) {\r\n const index = parent.controls.indexOf(current);\r\n path.unshift(index);\r\n } else if (parent instanceof FormGroup) {\r\n const key = Object.keys(parent.controls).find(k => parent.get(k) === current);\r\n if (key) {\r\n path.unshift(key);\r\n }\r\n }\r\n\r\n current = parent;\r\n }\r\n\r\n return path;\r\n }\r\n\r\n waitForControl(\r\n formGroup: FormGroup\r\n , path: Path\r\n , pathOptions?: PathOptions\r\n ): Observable<AbstractControl> {\r\n\r\n const resolve = (): AbstractControl | undefined =>\r\n this.getControl(formGroup, path, pathOptions);\r\n\r\n const existing = resolve();\r\n if (existing) return of(existing);\r\n\r\n return new Observable<AbstractControl>((observer) => {\r\n const sub = formGroup.valueChanges.subscribe(() => {\r\n const ctrl = resolve();\r\n if (ctrl) {\r\n observer.next(ctrl);\r\n observer.complete();\r\n sub.unsubscribe();\r\n }\r\n });\r\n\r\n return () => sub.unsubscribe();\r\n });\r\n }\r\n\r\n getContext(formGroup: any): Record<string, any> {\r\n if (!(formGroup instanceof FormGroup)) {\r\n throw new Error(\"Scope is not a FormGroup\");\r\n }\r\n const patchOptions: PatchOptions = {\r\n strict: false\r\n };\r\n\r\n return {\r\n set: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.set(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n get: (path: Path, pathOptions?: PathOptions): AbstractControl | undefined =>\r\n this.get(formGroup, path, pathOptions),\r\n\r\n status: (path: Path, pathOptions?: PathOptions): FormControlStatus | undefined =>\r\n this.status(formGroup, path, pathOptions),\r\n\r\n prepend: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.prepend(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n append: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.append(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n insert: (path: Path, index: number, value: any, pathOptions?: PathOptions): boolean =>\r\n this.insert(formGroup, path, index, value, pathOptions, patchOptions),\r\n\r\n remove: (path: Path, index: number): boolean =>\r\n this.remove(formGroup, path, index),\r\n\r\n moveUp: (path: Path, index: number): boolean =>\r\n this.moveUp(formGroup, path, index),\r\n\r\n moveDown: (path: Path, index: number): boolean =>\r\n this.moveDown(formGroup, path, index)\r\n };\r\n }\r\n\r\n statusChanges(control: AbstractControl\r\n , waitForPending?: () => void\r\n ): Observable<FormControlStatus> {\r\n\r\n if (control.status === 'PENDING' && waitForPending) {\r\n this.waitUntilSettled(control)\r\n .subscribe(() => waitForPending());\r\n }\r\n\r\n return control.statusChanges;\r\n }\r\n\r\n private applyPath(\r\n control: AbstractControl,\r\n path: Path,\r\n options?: PathOptions\r\n ): AbstractControl | undefined {\r\n const warn = (message: string) => {\r\n if (options?.emitWarn) console.warn(`[applyPath] ${message}`);\r\n };\r\n\r\n const error = (message: string): never => {\r\n if (options?.emitError) throw new Error(`[applyPath] ${message}`);\r\n throw new Error(`[applyPath] ${message}`); // fallback default behavior\r\n };\r\n\r\n const createControl = (type: ControlType): AbstractControl => {\r\n switch (type) {\r\n case 'array': return new FormArray([]);\r\n case 'group': return new FormGroup({});\r\n case 'control': default: return new FormControl(null);\r\n }\r\n };\r\n\r\n const segments = normalizePath(path);\r\n let current: AbstractControl | null = control;\r\n const createPath = options?.create ?? false;\r\n\r\n for (let i = 0; i < segments.length; i++) {\r\n const segment = segments[i];\r\n const isLeaf = i === segments.length - 1;\r\n const nextType: ControlType =\r\n isLeaf ? (options?.expected ?? 'control')\r\n : typeof segments[i + 1] === 'number' ? 'array'\r\n : 'group';\r\n\r\n const getCurrentPath = () => segments.slice(0, i + 1).join('.');\r\n\r\n if (!current) {\r\n return error(`Control is null at segment \"${getCurrentPath()}\"`);\r\n }\r\n\r\n if (typeof segment === 'number') {\r\n if (!(current instanceof FormArray)) {\r\n return error(`Expected FormArray at segment [${getCurrentPath()}], got ${current.constructor.name}`);\r\n }\r\n\r\n const index = segment;\r\n if (index < 0 || index >= current.length) {\r\n warn(`Index ${index} is out of bounds at path \"${getCurrentPath()}\" (length = ${current.length})`);\r\n return undefined;\r\n }\r\n\r\n current = current.at(index);\r\n\r\n } else if (typeof segment === 'string') {\r\n\r\n if (segment === 'parent') {\r\n current = (current instanceof FormGroup) && current.get(segment)\r\n ? current.get(segment)\r\n : current.parent;\r\n continue;\r\n }\r\n\r\n if (segment === 'root') {\r\n current = (current instanceof FormGroup && current.get(segment))\r\n ? current.get(segment)\r\n : current.root;\r\n continue;\r\n }\r\n\r\n if ((current instanceof FormArray) && options?.breakOnArray) {\r\n break;\r\n }\r\n\r\n if (!(current instanceof FormGroup)) {\r\n return error(`Expected FormGroup at segment \"${getCurrentPath()}\", got ${current.constructor.name}`);\r\n }\r\n\r\n if (current.get(segment)) {\r\n current = current.get(segment);\r\n } else {\r\n if (createPath) {\r\n const newControl = createControl(nextType);\r\n current.addControl(segment, newControl);\r\n current = newControl;\r\n }\r\n else {\r\n warn(`Control with key \"${getCurrentPath()}\" not found in FormGroup.`);\r\n return undefined;\r\n }\r\n }\r\n\r\n }\r\n else if (!segment) {\r\n continue;\r\n }\r\n else {\r\n return error(`Invalid segment type: ${typeof segment}`);\r\n }\r\n }\r\n\r\n return current ?? undefined;\r\n }\r\n\r\n private asObject(value: any): object {\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n return value as Record<string, any>;\r\n }\r\n return { };\r\n }\r\n\r\n private asArray(value: any): Array<any> {\r\n if (value && Array.isArray(value)) {\r\n return value;\r\n }\r\n return [];\r\n }\r\n\r\n private insertIntoArray(formArray: FormArray, index: number, value: any, options?: PatchOptions): boolean {\r\n const itemToAdd = this.createArrayItem(formArray);\r\n this.patch(itemToAdd, value, options);\r\n formArray.insert(index, itemToAdd);\r\n return true;\r\n }\r\n\r\n private removeFromArray(formArray: FormArray, index: number): boolean {\r\n if (index <= 0 || index >= formArray.length) false;\r\n formArray.removeAt(index);\r\n return true;\r\n }\r\n\r\n private createArrayItem(formArray: FormArray): FormGroup\r\n {\r\n const anyControl = formArray as any;\r\n const formGroup = (typeof (anyControl).createItem === 'function')\r\n ? anyControl.createItem()\r\n : new FormGroup({});\r\n return formGroup;\r\n }\r\n\r\n private 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(this.createControlFromArray(value));\r\n }\r\n return new FormGroup({});\r\n }\r\n\r\n private createControlFromArray(array: any[]): AbstractControl[] {\r\n return array.map(item => this.createControlFromValue(item));\r\n }\r\n\r\n private *enumerateControls(control: AbstractControl): Generator<AbstractControl> {\r\n yield control;\r\n\r\n if (control instanceof FormGroup) {\r\n for (const child of Object.values(control.controls)) {\r\n yield* this.enumerateControls(child);\r\n }\r\n } else if (control instanceof FormArray) {\r\n for (const child of control.controls) {\r\n yield* this.enumerateControls(child);\r\n }\r\n }\r\n }\r\n\r\n private collectErrors(control: AbstractControl): number {\r\n\r\n let errors = 0;\r\n\r\n if (control.disabled)\r\n return errors;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n const children = Object.values(control.controls);\r\n for (const child of children) {\r\n errors += this.collectErrors(child);\r\n }\r\n }\r\n else if (control.invalid) {\r\n errors++;\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n private setUnknown(control: any) {\r\n control._unknown = true;\r\n }\r\n\r\n private isUnknown(control: any): boolean {\r\n return control && control._unknown === true;\r\n }\r\n\r\n private waitUntilSettled(\r\n control: AbstractControl,\r\n pollInterval = 100\r\n ): Observable<FormControlStatus> {\r\n return interval(pollInterval).pipe(\r\n map(() => control.status),\r\n filter(status => status !== 'PENDING'),\r\n take(1)\r\n );\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalService {\r\n\r\n constructor() { }\r\n\r\n clearProperties(): void {\r\n this.properties = {};\r\n }\r\n\r\n setProperties(properties: Record<string, any>): void {\r\n this.properties = { ...this.properties, ...properties };\r\n }\r\n\r\n getProperties(): Record<string, any> {\r\n return this.properties || { };\r\n }\r\n\r\n getProperty(name: string, defaultValue: any = undefined): any {\r\n const properties = this.getProperties();\r\n if (name in properties) {\r\n return properties[name];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n registerComponent(typeName: string, componentType: Type<any>): void {\r\n this.components[typeName] = componentType;\r\n }\r\n\r\n getComponents(): Record<string, Type<any>> {\r\n return this.components || {};\r\n }\r\n\r\n getComponent(typeName: string): Type<any> | null {\r\n return this.getComponents()[typeName] ?? null;\r\n }\r\n \r\n //#region Private Members\r\n\r\n private properties: Record<string, any> = {};\r\n\r\n private components: Record<string, Type<any>> = {};\r\n\r\n //#endregion\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\nimport { Observable, Subject } from 'rxjs';\r\nimport { Path } from '../common/path';\r\nimport { toProxy } from '../utils/proxy';\r\n\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 private readonly refreshSubject = new Subject<Path>();\r\n\r\n readonly onRefresh: Observable<Path> = this.refreshSubject.asObservable();\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 refresh(path: Path = []): void {\r\n this.refreshSubject.next(path);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...toProxy(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, FormControlStatus, 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 { GlobalService } from '../services/global.service';\r\nimport { FormService } from './form.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { toProxy } from '../utils/proxy';\r\nimport { Subject, takeUntil, isObservable, Observable } from \"rxjs\";\r\nimport { filter, pairwise, startWith, tap } from 'rxjs/operators';\r\nimport { Path, matchPath } from '../common/path';\r\n\r\nconst StatusDependency = \"$status\";\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 formatterService: FormatterService\r\n , private functionService: FunctionService\r\n , private formService: FormService\r\n , private globalService: GlobalService\r\n , @Optional() private register: RegisterService\r\n , @Optional() private scope: ScopeService\r\n ) {\r\n this.Init();\r\n\r\n this.evaluatorProviders = [\r\n this.dialogService,\r\n this.toastService,\r\n this.functionService,\r\n this.formatterService,\r\n this.register \r\n ];\r\n\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n\r\n /*\r\n Global Properties:\r\n - feel-diagnostics: \"on\", \"off\"\r\n - feel-cacheable: \"on\", \"off\"\r\n */\r\n\r\n private predefinedFunctions!: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private evaluatorProviders: IEvaluatorProvider[] = [];\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n addEvaluatorProviders(evaluatorProvider: IEvaluatorProvider): void {\r\n if (evaluatorProvider) {\r\n this.evaluatorProviders.push(evaluatorProvider);\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return typeof text === 'string' && 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, options: EvaluateOptions = {}): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) 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 (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) as boolean;\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null, options: EvaluateOptions = {}): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) as number;\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 value;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): 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), options) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n if (!template)\r\n return \"\";\r\n\r\n return this.evalTemplate(formGroup, template, options);\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input, options);\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.invalidateExpression(this.getExpression(value)); \r\n }\r\n }\r\n\r\n watch(formGroup: FormGroup, dependencies: (string | string[])[], callback: () => void) {\r\n this.watchingDependencies(formGroup, dependencies, callback);\r\n }\r\n\r\n getDependencies(expression: string): (string | string[])[] {\r\n return this.feelService.getDependencies(expression);\r\n }\r\n\r\n subscribeChanges<T>(\r\n observable$: Observable<T>,\r\n control: AbstractControl,\r\n initial: T,\r\n callback: (() => void) | ((oldValue: T, newValue: T) => void),\r\n logFn?: (control: AbstractControl) => void \r\n ) {\r\n observable$\r\n .pipe(\r\n startWith(initial),\r\n pairwise(),\r\n filter(([oldValue, newValue]) => {\r\n return control instanceof FormArray\r\n || control instanceof FormGroup\r\n || oldValue !== newValue\r\n }),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(([oldValue, newValue]) => {\r\n queueMicrotask(() => {\r\n if (callback.length === 0) {\r\n (callback as () => void)();\r\n } else {\r\n (callback as (oldValue: T, newValue: T) => void)(oldValue, newValue);\r\n }\r\n logFn?.(control);\r\n });\r\n });\r\n }\r\n\r\n get verbose(): boolean {\r\n return this._verbose;\r\n }\r\n\r\n get cacheable(): boolean {\r\n return this._cacheable;\r\n }\r\n\r\n private _verbose = false;\r\n\r\n private _cacheable = true;\r\n\r\n private onErrorHandler: any = this.onError.bind(this);\r\n\r\n private Init() {\r\n this._cacheable = this.globalService.getProperty(\"feel-cacheable\", \"on\") === \"on\";\r\n this._verbose = this.globalService.getProperty(\"feel-diagnostics\", \"off\") === \"on\";\r\n if (this.verbose)\r\n console.log(\"Programmability Service Initialized\", { cacheable: this.cacheable, verbose: this.verbose });\r\n }\r\n\r\n private evalUnaryTest(formGroup: FormGroup, expression: string, input: any, options: EvaluateOptions = {}) {\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, error });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate UnaryTest:\", expression, result, { formGroup });\r\n };\r\n\r\n try {\r\n const result = this.feelService.evalUnaryTest(expression\r\n , this.getContext(formGroup, options)\r\n , input);\r\n logEvaluation(expression, result);\r\n return result;\r\n } catch (e) {\r\n logError(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\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, options, error });\r\n };\r\n\r\n const logInvalidate = (expression: string) => {\r\n if (!this.verbose) return;\r\n console.log(\"Invalidate Expression:\", expression, { formGroup, options });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate Expression:\", expression, result, { formGroup, options });\r\n };\r\n\r\n const evaluate = () => {\r\n try {\r\n const result = this.feelService.evalExpression(expression\r\n , this.getContext(formGroup, options));\r\n logEvaluation(expression, result);\r\n return result;\r\n }\r\n catch (e) {\r\n logError(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\r\n const ignoreDeps = options.ignoreDeps ?? false;\r\n\r\n if (!ignoreDeps) {\r\n const watchKey = `:watch(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchingExpression(formGroup, expression\r\n , () => {\r\n this.invalidateExpression(expression);\r\n logInvalidate(expression);\r\n });\r\n return true;\r\n });\r\n }\r\n \r\n return this.weakService.call(this, expression, evaluate, null, this.onErrorHandler);\r\n }\r\n else {\r\n return evaluate();\r\n }\r\n }\r\n\r\n private evalTemplate(formGroup: FormGroup, expression: string, options: EvaluateOptions = {}): any {\r\n\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, options, error });\r\n };\r\n\r\n const logInvalidate = (expression: string) => {\r\n if (!this.verbose) return;\r\n console.log(\"Invalidate Template:\", expression, { formGroup, options });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate Template:\", expression, result, { formGroup, options });\r\n };\r\n\r\n const evaluate = () => {\r\n try {\r\n const result = this.feelService.evalTemplate(expression\r\n , this.getContext(formGroup));\r\n logEvaluation(expression, result);\r\n return result;\r\n }\r\n catch (e) {\r\n logError(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 = `:watchTemplate(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchingTemplateExpression(formGroup, expression\r\n , () => {\r\n this.invalidateExpression(expression);\r\n logInvalidate(expression);\r\n });\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 onError(result: any): any {\r\n if (isObservable(result)) {\r\n return result.pipe(\r\n tap({\r\n error: err => {\r\n this.toastService.notifyError(err.message);\r\n }\r\n })\r\n );\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n\r\n private getPredefinedFunctions(): Record<string, any> {\r\n return this.evaluatorProviders.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private getFormFunctions(formGroup: FormGroup | null): Record<string, any> {\r\n return this.formService.getContext(formGroup);\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 const self = this;\r\n\r\n return {\r\n ...parent.value,\r\n formGroup: () => toProxy(parent), \r\n get parent() { return self.getParentContext(parent); },\r\n }; \r\n }\r\n\r\n private getRootContext(formGroup: FormGroup | null): Record<string, any> | null {\r\n if (formGroup === null) {\r\n return null;\r\n }\r\n \r\n const root = formGroup?.root;\r\n\r\n if (!root) {\r\n return null;\r\n }\r\n\r\n return root.value; \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 const self = this;\r\n\r\n let context = {\r\n get console() { return toProxy(console); },\r\n get parent() { return self.getParentContext(formGroup); },\r\n get root() { return self.getRootContext(formGroup); },\r\n formGroup: () => toProxy(formGroup),\r\n _: this.scope?.getContext(),\r\n ...baseContext,\r\n fn: {\r\n ...this.predefinedFunctions,\r\n ...this.getFormFunctions(formGroup),\r\n }\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 logDependencies = (dependencies: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Get Dependencies:\", expression, dependencies, { formGroup });\r\n };\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getDependencies(expression, context);\r\n logDependencies(dependencies);\r\n this.watchingDependencies(formGroup, dependencies, callback);\r\n };\r\n\r\n private watchingTemplateExpression(formGroup: FormGroup, expression: string, callback: () => void): void {\r\n const logDependencies = (dependencies: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Get Template Dependencies:\", expression, dependencies, { formGroup });\r\n };\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getTemplateDependencies(expression, context);\r\n logDependencies(dependencies);\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 logWatching = (dependence: any) => {\r\n if (!this.verbose) return;\r\n const text = Array.isArray(dependence) ? dependence.join(\".\") : dependence;\r\n console.log(\"Watching dependence:\", text, { formGroup });\r\n };\r\n\r\n const logValueChanged = (control: AbstractControl) => {\r\n if (!this.verbose) return;\r\n console.log(\"Value Changed:\", control.value, { path: this.getPath(control), control });\r\n };\r\n\r\n const logStatusChanged = (control: AbstractControl) => {\r\n if (!this.verbose) return;\r\n console.log(\"Status Changed:\", control.status, { path: this.getPath(control), control });\r\n };\r\n\r\n const logScopeRefreshed = (path: Path) => {\r\n if (!this.verbose) return;\r\n console.log(\"Scope Refreshed: \", path);\r\n };\r\n\r\n const valueSubscribe = (control: AbstractControl) => {\r\n this.subscribeChanges(control.valueChanges, control, control.value, callback, logValueChanged);\r\n };\r\n\r\n const statusSubscribe = (control: AbstractControl) => {\r\n this.subscribeChanges<FormControlStatus>(this.formService.statusChanges(control, callback), control, control.status, callback, logStatusChanged);\r\n };\r\n\r\n const subscribeScope = (dependence: Path) => {\r\n this.scope.onRefresh\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((path) => {\r\n if (matchPath(path, dependence)){\r\n callback();\r\n logScopeRefreshed(dependence);\r\n }\r\n });\r\n logWatching(dependence);\r\n };\r\n\r\n const subscribeControl = (control: AbstractControl\r\n , status: boolean\r\n , dependence: string | string[]\r\n ) => {\r\n if (!status) {\r\n valueSubscribe(control);\r\n logWatching(dependence);\r\n }\r\n else {\r\n statusSubscribe(control);\r\n logWatching(dependence);\r\n }\r\n };\r\n\r\n const isScope = (path: string | string[]): path is string[] => {\r\n return Array.isArray(path) && path.length > 0 && path[0] === \"_\";\r\n };\r\n\r\n for (const dependence of dependencies) {\r\n const [path, status] = this.processDependencies(dependence);\r\n if (isScope(path)) {\r\n subscribeScope(path.splice(1));\r\n }\r\n else {\r\n const control = this.formService.getControl(formGroup, path, { breakOnArray: true });\r\n if (control) {\r\n subscribeControl(control, status, dependence);\r\n }\r\n else {\r\n this.formService.waitForControl(formGroup, path, { breakOnArray: true })\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(control => {\r\n subscribeControl(control, status, dependence);\r\n callback();\r\n });\r\n }\r\n }\r\n } \r\n }\r\n\r\n private invalidateExpression(expression: string): void {\r\n this.weakService.invalidate(this, expression);\r\n }\r\n\r\n private processDependencies(dependency: string | string[]): [string | string[], boolean] {\r\n const statusDependency = Array.isArray(dependency)\r\n && dependency.length > 1\r\n && dependency[0] === StatusDependency;\r\n\r\n return statusDependency\r\n ? [dependency.slice(1), true]\r\n : [dependency, false];\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface IEvaluatorProvider {\r\n getContext(scope?: any): Record<string, any>;\r\n}\r\n\r\nexport interface EvaluateOptions {\r\n cacheable?: boolean;\r\n ignoreDeps?: boolean;\r\n extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n","export function toExpression(value: any): string {\r\n return \"=\" + toFeelable(value);\r\n}\r\n\r\nexport function toFeelable(value: any): string {\r\n if (value === null || typeof value === 'number' || typeof value === 'boolean') {\r\n return JSON.stringify(value);\r\n }\r\n\r\n if (typeof value === 'string') {\r\n if (value.startsWith('=')) {\r\n return value.substring(1);\r\n } else {\r\n return JSON.stringify(value);\r\n }\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n const items = value.map(item => toFeelable(item));\r\n return `[${items.join(', ')}]`;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n const entries = Object.entries(value).map(([key, val]) => {\r\n return `\"${key}\": ${toFeelable(val)}`;\r\n });\r\n return `{ ${entries.join(', ')} }`;\r\n }\r\n\r\n return JSON.stringify(null);\r\n}\r\n","export class CallbackRegistry {\r\n private callbacks: (() => void)[] = [];\r\n\r\n register(callback: () => void) {\r\n if (callback)\r\n this.callbacks.push(callback);\r\n }\r\n\r\n clear() {\r\n this.callbacks = [];\r\n }\r\n\r\n invoke() {\r\n for (const cb of this.callbacks) {\r\n cb();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isObservable, map, Observable, of, catchError, take } from 'rxjs';\r\nimport { toFeelable } from '../utils/feelable';\r\nimport { CallbackRegistry } from '../utils/CallbackRegistry';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Injectable()\r\nexport class ValidationService {\r\n\r\n constructor(\r\n private languageService: LanguageService,\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n suppress: boolean = false;\r\n\r\n createCollection(): ValidationCollection {\r\n return new Map<AbstractControl, ComponentContext>();\r\n }\r\n\r\n addToCollection(collection: ValidationCollection, control: AbstractControl, formGroup: FormGroup, component: any) {\r\n collection.set(control, { component, formGroup });\r\n }\r\n\r\n setupCollection(collection: ValidationCollection) {\r\n collection.forEach((componentValidation, control) => {\r\n const component = componentValidation.component;\r\n const currentGroup = componentValidation.formGroup;\r\n const required = component?.validate?.required;\r\n const rules = this.getRules(component);\r\n const [validators, asyncValidators, watching] = this.validateRules(currentGroup, component, required, rules);\r\n control.setValidators(validators);\r\n control.setAsyncValidators(asyncValidators);\r\n watching(control);\r\n });\r\n }\r\n\r\n private getRules(component: any): ValidationRule[] {\r\n if (!Array.isArray(component.validations)) return [];\r\n return component.validations?.map((rule: any) => {\r\n return {\r\n expression: rule.expression,\r\n type: rule.type,\r\n message: this.locale(rule, 'message'),\r\n async: rule.async === true\r\n } as ValidationRule;\r\n });\r\n }\r\n\r\n private validateRules(formGroup: FormGroup\r\n , component: any\r\n , required?: boolean\r\n , validations?: ValidationRule[]): [ValidatorFn[], AsyncValidatorFn[], (control: AbstractControl) => void] {\r\n const validators: ValidatorFn[] = [];\r\n\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n\r\n const noWatching = () => { };\r\n\r\n if (required === true) {\r\n validators.push(this.getRequiredValidator(component));\r\n }\r\n\r\n if (!Array.isArray(validations)) {\r\n return [validators, asyncValidators, noWatching];\r\n }\r\n\r\n const callbacks = new CallbackRegistry();\r\n\r\n validations.forEach((item: ValidationRule) => {\r\n if (!this.programmability.isExpression(item.expression))\r\n return;\r\n\r\n const logger: ValidationCallback = (control: AbstractControl, result: ValidationErrors | null) =>\r\n this.logValidation(component, item, control, result);\r\n \r\n if (item.type === \"validate\" || item.type === \"invalidate\") {\r\n const predicate = item.type === \"validate\"\r\n ? (result: any) => result\r\n : (result: any) => !result;\r\n\r\n if (item.async) {\r\n asyncValidators.push(this.createAsyncValidator(formGroup, item, callbacks, predicate, logger));\r\n }\r\n else {\r\n validators.push(this.createValidator(formGroup, item, predicate, logger));\r\n }\r\n }\r\n });\r\n\r\n const watching = (control: AbstractControl): void => {\r\n this.watchForValidation(formGroup, control, component.key, validations, callbacks);\r\n };\r\n\r\n return [validators, asyncValidators, watching];\r\n }\r\n\r\n private createValidator(formGroup: FormGroup\r\n , item: ValidationRule\r\n , predicate: (result: any) => boolean\r\n , callback: ValidationCallback): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (this.suppress) return null;\r\n const result = this.programmability.evaluateUnary(formGroup, item.expression, control.value)\r\n if (isObservable(result)) {\r\n console.warn(\r\n \"[Validator] Unexpected observable result in createValidator\",\r\n { expression: item.expression, value: control.value, rule: item }\r\n );\r\n return null;\r\n }\r\n const validate = predicate(result) ? null : this.validationErrors(formGroup, item);\r\n callback(control, validate);\r\n return validate;\r\n };\r\n }\r\n\r\n private createAsyncValidator(formGroup: FormGroup\r\n , item: ValidationRule\r\n , callbacks: CallbackRegistry\r\n , predicate: (result: any) => boolean\r\n , callback: ValidationCallback): AsyncValidatorFn {\r\n\r\n const unsetState = () => ({ value: Symbol('unset'), result: null });\r\n\r\n let state = unsetState();\r\n\r\n callbacks.register(() => state = unsetState());\r\n\r\n const getResult = (control: AbstractControl): any => this.programmability.evaluate(formGroup, item.expression, {\r\n cacheable: false,\r\n extendContext: () => { return { \"?\": control.value } }\r\n });\r\n\r\n const computeOnce = (control: AbstractControl): any => {\r\n const v = control.value;\r\n if (state.value !== v) {\r\n let result = getResult(control);\r\n if (isObservable(result)) {\r\n result = (result as Observable<any>).pipe(\r\n take(1),\r\n map((value: any) => {\r\n const validate = predicate(value) ? null : this.validationErrors(formGroup, item);\r\n callback(control, validate);\r\n return validate;\r\n }),\r\n catchError(err => {\r\n console.error(\"[AsyncValidator] Evaluation error\", { expression: item.expression, err });\r\n return this.nullObserver;\r\n })\r\n );\r\n }\r\n state = { value: v, result: result };\r\n }\r\n return state.result;\r\n };\r\n\r\n return (control: AbstractControl) => {\r\n if (this.suppress) return this.nullObserver;\r\n const result = computeOnce(control); \r\n if (!isObservable(result)) {\r\n console.warn(\r\n \"[AsyncValidator] Expected observable but got non-observable result\",\r\n { expression: item.expression, value: control.value, result, rule: item }\r\n );\r\n return this.nullObserver;\r\n }\r\n return result as Observable<any>;\r\n };\r\n }\r\n\r\n private validationErrors(formGroup: FormGroup, item: ValidationRule) {\r\n const message = this.programmability.evaluateString(formGroup, item.message);\r\n const validationError = { error: true, message };\r\n return validationError;\r\n }\r\n\r\n private watchForValidation(formGroup: FormGroup\r\n , control: AbstractControl\r\n , key: string\r\n , validations: ValidationRule[]\r\n , callbacks: CallbackRegistry): void {\r\n\r\n if (Array.isArray(validations)) {\r\n const expressions = validations\r\n .filter(item => this.programmability.isExpression(item.expression))\r\n .map(item => \"=\" + this.programmability.getExpression(item.expression));\r\n\r\n if (expressions.length === 0) return;\r\n\r\n const feelable = toFeelable(expressions);\r\n\r\n const dependencies = this.programmability.getDependencies(feelable)\r\n .filter(dep => dep !== key);\r\n\r\n if (dependencies.length === 0) return;\r\n\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n setTimeout(() => {\r\n callbacks.invoke();\r\n control.updateValueAndValidity();\r\n });\r\n\r\n });\r\n }\r\n }\r\n\r\n private logValidation = (component: any, rule: ValidationRule, control: AbstractControl, result: ValidationErrors | null) => {\r\n if (this.programmability.verbose) {\r\n if (result != null) {\r\n console.warn(\"[Validation] Failed\", { control, component, rule, result });\r\n }\r\n else {\r\n console.log(\"[Validation] Success\", { control, component, rule, result });\r\n }\r\n }\r\n }\r\n\r\n private readonly nullObserver = of(null);\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 private getRequiredValidator(component: any): ValidatorFn {\r\n if (this.isTrueValidator(component)) {\r\n return this.requiredTrueValidator.bind(this);\r\n }\r\n else {\r\n return this.requiredValidator.bind(this);\r\n } \r\n }\r\n\r\n private requiredValidator(control: AbstractControl): ValidationErrors | null {\r\n if (Validators.required(control) == null) {\r\n return null;\r\n }\r\n return { error: true, message: this.getRequiredMessage() } \r\n }\r\n\r\n private requiredTrueValidator(control: AbstractControl): ValidationErrors | null {\r\n if (Validators.requiredTrue(control) == null) {\r\n return null;\r\n }\r\n return { error: true, message: this.getRequiredMessage() }\r\n }\r\n\r\n private isTrueValidator(component: any): boolean {\r\n return component?.type === 'checkbox';\r\n }\r\n\r\n private getRequiredMessage(): string {\r\n return this.locale(Texts, 'RequiredField');\r\n }\r\n}\r\n\r\ntype ValidationCallback = (control: AbstractControl, result: ValidationErrors | null) => void;\r\n\r\nexport interface ComponentContext {\r\n component: any;\r\n formGroup: FormGroup;\r\n}\r\n\r\nexport interface ValidationRule {\r\n expression: string;\r\n type: \"validate\" | \"invalidate\";\r\n message: string,\r\n async: boolean\r\n}\r\n\r\nexport type ValidationCollection = Map<AbstractControl, ComponentContext>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from './programmability.service';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class DisableService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService\r\n , private formService: FormService) {\r\n }\r\n\r\n createCollection(): DisableCollection {\r\n return new Map<AbstractControl, DisableContext>();\r\n }\r\n\r\n addToCollection(collection: DisableCollection, control: AbstractControl, parentGroup: FormGroup\r\n , component: any) {\r\n if (this.isAllowedValue(component?.disabled))\r\n collection.set(control, { parentGroup, component });\r\n }\r\n\r\n setupCollection(collection: DisableCollection) {\r\n collection.forEach((disableContext, control) => {\r\n this.applyRule(disableContext.parentGroup, control, disableContext); \r\n });\r\n }\r\n\r\n private applyRule(formGroup: FormGroup, control: AbstractControl, context: DisableContext): void {\r\n // se riabilito un FormGroup vengono riabilitato tutti i child\r\n // mentre dovrebbero essere rivalutati se hanno una condizione o un valore static.\r\n const {\r\n key\r\n , disabled } = context.component ?? {};\r\n\r\n const logDisabled = (value: any) => {\r\n if (!this.programmability.verbose) return;\r\n console.log(value ? \"Disable\" : \"Enable\", control, { path: this.getPath(control), formGroup });\r\n };\r\n const disableControl = (value: boolean | null) => {\r\n if (value === true) {\r\n if (control.disabled) return;\r\n control.disable();\r\n logDisabled(value);\r\n } else {\r\n if (control.enabled) return;\r\n control.enable();\r\n logDisabled(value);\r\n }\r\n }\r\n if (typeof disabled === 'boolean') {\r\n disableControl(disabled);\r\n }\r\n else if (typeof disabled === 'string') {\r\n if (this.programmability.isExpression(disabled)) {\r\n const expression = this.programmability.getExpression(disabled);\r\n const dependencies = this.programmability.getDependencies(expression)\r\n .filter(dep => dep !== key);\r\n const applyExpression = () => {\r\n const result = this.programmability.evaluateBoolean(formGroup, disabled, { cacheable: false });\r\n disableControl(result);\r\n };\r\n if (dependencies.length > 0) {\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n applyExpression();\r\n });\r\n }\r\n applyExpression();\r\n }\r\n }\r\n }\r\n\r\n private isAllowedValue(value: any): boolean {\r\n return typeof value === 'boolean'\r\n || typeof value === 'string';\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface DisableContext {\r\n parentGroup: FormGroup;\r\n component: any\r\n}\r\n\r\nexport type DisableCollection = Map<AbstractControl, DisableContext>;\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class StatusService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService,\r\n private formService: FormService) {\r\n }\r\n\r\n createCollection(): StatusCollection {\r\n return new Set<AbstractControl>();\r\n }\r\n\r\n addToCollection(collection: StatusCollection, control: AbstractControl) {\r\n collection.add(control);\r\n }\r\n\r\n setupCollection(key: any, collection: StatusCollection) {\r\n\r\n const countInvalid = () => {\r\n return this.formService.countInvalid(collection);\r\n }\r\n\r\n this.invalidMap.set(key, countInvalid());\r\n\r\n collection.forEach((control) => {\r\n\r\n this.programmability.subscribeChanges(control.statusChanges\r\n , control\r\n , control.status\r\n , () => this.invalidMap.set(key, countInvalid()));\r\n });\r\n }\r\n\r\n countInvalid(key: any) : number\r\n {\r\n return this.invalidMap.get(key) ?? 0;\r\n }\r\n\r\n private invalidMap: Map<any, number> = new Map<any, number>();\r\n}\r\n\r\nexport type StatusCollection = Set<AbstractControl>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class EventService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n suppress: boolean = false;\r\n\r\n createCollection(): EventCollection {\r\n return new Map<AbstractControl, EventContext>();\r\n }\r\n\r\n addToCollection(collection: EventCollection, control: AbstractControl, formGroup: FormGroup, component: any) {\r\n collection.set(control, { component, formGroup });\r\n }\r\n\r\n setupCollection(collection: EventCollection) {\r\n collection.forEach((componentValidation, control) => {\r\n const component = componentValidation.component;\r\n const currentGroup = componentValidation.formGroup;\r\n const events = component.events;\r\n if (!events || typeof events !== 'object') return;\r\n this.processHandler(events.onChange, currentGroup, control, control.valueChanges, control.value);\r\n this.processHandler(events.onStatusChange, currentGroup, control, control.statusChanges, control.status); \r\n });\r\n }\r\n\r\n private processHandler<T>(handler: string\r\n , formGroup: FormGroup\r\n , control: AbstractControl\r\n , observable$: Observable<T>\r\n , initial: T)\r\n {\r\n if (!this.programmability.isExpression(handler))\r\n return;\r\n\r\n this.programmability.subscribeChanges(observable$, control, initial\r\n , (oldValue, newValue) => {\r\n if (this.suppress) return;\r\n this.programmability.evaluate(formGroup, handler, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n control: control,\r\n oldValue: oldValue,\r\n newValue: newValue\r\n }\r\n })\r\n });\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport interface EventContext {\r\n component: any;\r\n formGroup: FormGroup;\r\n}\r\n\r\nexport type EventCollection = Map<AbstractControl, EventContext>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from './programmability.service';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { toFeelable } from '../utils/feelable';\r\n\r\n@Injectable()\r\nexport class ComputeService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService\r\n , private formService: FormService) {\r\n }\r\n\r\n createCollection(): ComputeCollection {\r\n return new Map<AbstractControl, ComputeContext>();\r\n }\r\n\r\n addToCollection(collection: ComputeCollection, control: AbstractControl\r\n , parentGroup: FormGroup, component: any)\r\n {\r\n if (this.programmability.isExpression(component.expression)) {\r\n collection.set(control, { component, parentGroup });\r\n } \r\n }\r\n\r\n setupCollection(collection: ComputeCollection) {\r\n collection.forEach((computeContext, control) => {\r\n this.applyExpression(control, computeContext); \r\n });\r\n }\r\n\r\n private applyExpression(control: AbstractControl, context: ComputeContext): void {\r\n const formGroup = context.parentGroup;\r\n\r\n const {\r\n key\r\n , expression\r\n , conditional } = context.component ?? {};\r\n\r\n const deactivate = conditional?.hide;\r\n\r\n const logComputed = (value: any) => {\r\n if (!this.programmability.verbose) return;\r\n console.log(\"Compute\", control, { value: value, path: this.getPath(control), formGroup });\r\n };\r\n const assignValue = (value: any) => {\r\n logComputed(value);\r\n this.formService.patch(control, value, { strict: false });\r\n }\r\n if (typeof expression === 'string') {\r\n if (this.programmability.isExpression(expression)) {\r\n const applyExpression = () => {\r\n if (this.programmability.isExpression(deactivate)) {\r\n const isDeactivate = this.programmability.evaluateBoolean(formGroup, deactivate, { cacheable: false });\r\n if (!!isDeactivate) {\r\n return;\r\n }\r\n }\r\n const result = this.programmability.evaluate(formGroup, expression, { cacheable: false });\r\n assignValue(result);\r\n };\r\n const dependencies = this.programmability.getDependencies(toFeelable({\r\n expression: expression,\r\n deactivate: deactivate\r\n })).filter(dep => dep !== key);\r\n\r\n if (dependencies.length > 0) {\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n setTimeout(() => applyExpression());\r\n });\r\n }\r\n setTimeout(() => applyExpression());\r\n }\r\n }\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface ComputeContext {\r\n parentGroup: FormGroup;\r\n component: any;\r\n}\r\n\r\nexport type ComputeCollection = Map<AbstractControl, ComputeContext>;\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n readonly: string | boolean | null;\r\n disabled: string | boolean | null;\r\n inactive: string | boolean | null;\r\n path: string | null;\r\n verticalAlignment: 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 readonly: form.readonly,\r\n disabled: form.disabled,\r\n inactive: form.inactive,\r\n path: form.path,\r\n verticalAlignment: form.verticalAlignment,\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 { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './objectURLRenderer.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","<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","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './deleteRowRenderer.component.html',\r\n standalone: true\r\n})\r\nexport class DeleteRowRendererComponent 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","<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","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../../services/programmability.service';\r\nimport { CacheContextService } from '../../services/cache.service';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { toProxy } from '../../utils/proxy';\r\n\r\n@Component({\r\n templateUrl: './actionsCellRenderer.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, SirioButtonComponent\r\n ]\r\n})\r\nexport class ActionsCellRendererComponent 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 this.cacheContext = this.getCacheContext(); \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 return this.cacheContext.evaluateBoolean(this.getCacheControl(), this.getFormGroup(), value, this.getOptions());\r\n //return this.programmability.evaluateBoolean(this.getFormGroup(), value, this.getOptions());\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.cacheContext.evaluateString(this.getCacheControl(), this.getFormGroup(), value, this.getOptions());\r\n //return this.programmability.evaluateString(this.getFormGroup(), value, this.getOptions());\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 rowIndex: this.getRowIndex()\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 cacheContext!: CacheContextService;\r\n\r\n private getCacheControl(): any {\r\n return this.params.data ?? this;\r\n }\r\n\r\n private getOptions(): EvaluateOptions {\r\n return {\r\n //cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n data: this.getData(),\r\n rowIndex: this.getRowIndex()\r\n }\r\n })\r\n }\r\n }\r\n\r\n private getData(): any {\r\n return toProxy(this.params.data);\r\n }\r\n\r\n private getRowIndex(): any {\r\n return this.params.node.rowIndex;\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup as FormGroup;\r\n }\r\n\r\n private getCacheContext(): CacheContextService {\r\n return this.params.api.getGridOption(\"context\").cacheContext; \r\n }\r\n}\r\n\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 *ngIf=\"!evaluateBoolean(action.disabled)\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\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: './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","import {\r\n Component, ViewChild, ViewContainerRef, AfterViewInit, ComponentRef, Type\r\n , Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../../services/programmability.service';\r\nimport { GlobalService } from '../../services/global.service';\r\nimport { toProxy } from '../../utils/proxy';\r\n\r\n@Component({\r\n templateUrl: './hostCellRenderer.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class HostCellRendererComponent implements ICellRendererAngularComp, AfterViewInit {\r\n @ViewChild('container', { read: ViewContainerRef, static: true }) container!: ViewContainerRef;\r\n\r\n constructor(private injector: Injector,\r\n private programmability: ProgrammabilityService,\r\n private globalService: GlobalService) { }\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 ngAfterViewInit(): void {\r\n const componentType = this.resolveComponentType(this.getComponentType());\r\n if (componentType) {\r\n this.componentRef = this.container.createComponent(componentType, {\r\n injector: this.injector,\r\n });\r\n\r\n this.setProperties();\r\n }\r\n }\r\n\r\n //#region Private Members\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n private resolveComponentType(type: string): Type<any> | null {\r\n return this.globalService.getComponent(type);\r\n }\r\n\r\n private resolveProperties(): Record<string, any> {\r\n const properties = this.getProperties();\r\n if (properties) {\r\n return this.evaluate(properties) ?? {}\r\n }\r\n else\r\n {\r\n return { };\r\n } \r\n }\r\n\r\n private setProperties(): void {\r\n if (!this.componentRef) return;\r\n const properties = this.resolveProperties();\r\n for (const key of Object.keys(properties)) {\r\n const value = properties[key];\r\n if (key in this.componentRef.instance) {\r\n this.componentRef.setInput?.(key, value);\r\n }\r\n }\r\n }\r\n\r\n private evaluate(value: string) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n value: this.getValue(),\r\n data: this.getData(),\r\n rowIndex: this.getRowIndex()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluate(this.getFormGroup(), value, options);\r\n }\r\n\r\n private getComponentType(): string {\r\n return this.params.componentType;\r\n }\r\n\r\n private getProperties(): string | undefined\r\n {\r\n return this.params.properties;\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup;\r\n }\r\n\r\n private getData(): any {\r\n return toProxy(this.params.data);\r\n }\r\n\r\n private getValue(): any {\r\n return this.params.value;\r\n }\r\n\r\n private getRowIndex(): any {\r\n return this.params.node.rowIndex;\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\n","<ng-container #container></ng-container>\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 const hasTabIndex = element.tabIndex >= 0;\r\n const isContentEditable = element.hasAttribute('contenteditable')\r\n && element.getAttribute('contenteditable') !== 'false';\r\n if (element.contentEditable === \"true\") return true;\r\n return (hasTabIndex || isContentEditable) &&\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, preventScroll: boolean = false): HTMLElement | null {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return null;\r\n }\r\n const target = focusables[0];\r\n\r\n target.focus({ preventScroll });\r\n\r\n return target;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n Module, PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule\r\n , LocaleModule, CellStyleModule, ValidationModule, RowApiModule \r\n , RowSelectionModule, RowSelectionOptions \r\n , TextFilterModule, NumberFilterModule, DateFilterModule\r\n , ColDef, themeQuartz, iconSetAlpine, GridOptions, DataTypeDefinition\r\n , ClientSideRowModelApiModule, RowAutoHeightModule\r\n , GridSizeChangedEvent, ModelUpdatedEvent, ColumnAutoSizeModule, ColumnApiModule, GridApi\r\n , SuppressKeyboardEventParams\r\n , GetRowIdFunc, GetRowIdParams, HighlightChangesModule\r\n} from 'ag-grid-community';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ObjectURLRendererComponent } from '../components/objectURLRenderer/objectURLRenderer.component';\r\nimport { DeleteRowRendererComponent } from '../components/deleteRowRenderer/deleteRowRenderer.component';\r\nimport { ActionsCellRendererComponent } from '../components/actionsCellRenderer/actionsCellRenderer.component';\r\nimport { SetFilterComponent } from '../components/setFilter/setFilter.component';\r\nimport { HostCellRendererComponent } from '../components/hostCellRenderer/hostCellRenderer.component';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { WeakService } from '../services/weak.service';\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 { LanguageService } from '@wemake4u/interact';\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\ntype GroupNode = {\r\n name: string;\r\n type: \"group\";\r\n columns: (GroupNode | any)[];\r\n};\r\n\r\n@Injectable()\r\nexport class GridService {\r\n\r\n constructor(private formatter: FormatterService\r\n , private languageService: LanguageService\r\n , private programmability: ProgrammabilityService\r\n , private weak: WeakService) {\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 , RowApiModule\r\n , RowAutoHeightModule\r\n , HighlightChangesModule\r\n //, ValidationModule\r\n ];\r\n };\r\n\r\n getOptions(component: any, formGroup: FormGroup): GridOptions {\r\n const selection = this.getRowSelection(component, formGroup);\r\n const rowId = this.getRowId(component);\r\n const pagination = this.getPaginable(component);\r\n const pageSize = this.getPageSize(component);\r\n const texts = this.getTexts();\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 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 getRowId: rowId,\r\n onGridSizeChanged: (params: GridSizeChangedEvent) => {\r\n this.resizeGrid(component, params.api);\r\n },\r\n onModelUpdated: (params: ModelUpdatedEvent) => {\r\n this.resizeGrid(component, params.api);\r\n this.onRowSelecting(component, formGroup, params); \r\n } \r\n };\r\n }\r\n\r\n getColumnDefs(component: any, columns: any, formGroup: FormGroup): ColDef[] {\r\n if (Array.isArray(columns)) {\r\n const groupedColumns = this.groupColumns(columns);\r\n const columnDefs = this.groupsToColumnDefs(groupedColumns\r\n , (cs) => this.createColumnDefs(component, cs, formGroup));\r\n\r\n this.addActionColumnDef(component, columnDefs, formGroup);\r\n this.addRowNumbersColumnDef(component, columnDefs);\r\n\r\n return columnDefs;\r\n }\r\n else {\r\n return [];\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 getCacheKey(): string {\r\n return `getGridOptions_${this.language}`;\r\n }\r\n\r\n invalidateOptions(component: any) {\r\n this.weak.invalidate(component, this.getCacheKey());\r\n }\r\n\r\n onRowDataChanged(component: any, api: GridApi, rowData: any) { \r\n if (this.hasRowNumbers(component) && this.hasRowId(component)) {\r\n this.refreshRowNumbers(api);\r\n } \r\n }\r\n\r\n onDataSourceChanged(component: any, api: GridApi, dataSource: any) {\r\n // Nothing\r\n }\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 resizeGrid(component: any, api: GridApi) {\r\n const columnsToResize: string[] = [];\r\n\r\n if (this.hasActions(component)) {\r\n columnsToResize.push('actions');\r\n }\r\n\r\n if (this.hasRowNumbers(component)) {\r\n columnsToResize.push('rowNumbers');\r\n }\r\n\r\n if (columnsToResize.length > 0) {\r\n api.autoSizeColumns(columnsToResize);\r\n }\r\n }\r\n\r\n private hasActions(component: any) {\r\n return Array.isArray(component.actions) && component.actions.length > 0;\r\n }\r\n\r\n private hasRowNumbers(component: any) {\r\n return (component.rowNumbers);\r\n }\r\n\r\n private createColumnDefs(component: any, columns: any, formGroup: FormGroup): ColDef[] {\r\n if (Array.isArray(columns)) {\r\n const columnDefs = columns.map((column: any) => {\r\n const colDef: ColDef = {\r\n field: column.key,\r\n headerName: this.locale(column, 'label')\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, formGroup);\r\n this.setStyles(column, colDef);\r\n this.setAutoHeight(column, colDef);\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 this.setCellChangeFlash(column, colDef);\r\n\r\n return colDef;\r\n });\r\n\r\n return columnDefs;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private addActionColumnDef(component: any, columnDefs: ColDef[], formGroup: FormGroup) {\r\n if (this.hasActions(component)) {\r\n columnDefs.push({\r\n colId: 'actions',\r\n headerName: this.locale(Texts, 'Actions'),\r\n resizable: false,\r\n sortable: false,\r\n filter: false,\r\n cellDataType: false,\r\n hide: this.suppressActions(component, formGroup),\r\n pinned: \"right\", \r\n cellRendererParams: {\r\n component: component,\r\n formGroup: formGroup\r\n },\r\n cellRenderer: ActionsCellRendererComponent,\r\n suppressKeyboardEvent: this.navigateInsideCell.bind(this)\r\n });\r\n }\r\n }\r\n\r\n private addRowNumbersColumnDef(component: any, columnDefs: ColDef[]) { \r\n if (this.hasRowNumbers(component)) {\r\n columnDefs.unshift({\r\n colId: 'rowNumbers',\r\n headerName: \"#\",\r\n pinned: \"left\",\r\n headerClass: 'row-numbers-header',\r\n cellClass: 'row-numbers-cell',\r\n resizable: false,\r\n sortable: false,\r\n valueGetter: (n: any) => n.node.rowIndex + 1\r\n });\r\n }\r\n }\r\n\r\n private refreshRowNumbers(api: GridApi) {\r\n if (api) {\r\n const rowNumbers = [\"rowNumbers\"];\r\n api.setColumnsVisible(rowNumbers, false);\r\n api.setColumnsVisible(rowNumbers, true); \r\n } \r\n }\r\n\r\n private groupColumns(columns: any[]): (GroupNode | any)[] {\r\n const rootItemsOrdered: (GroupNode | any)[] = [];\r\n\r\n function findOrCreateGroup(\r\n groups: (GroupNode | any)[],\r\n name: string\r\n ): GroupNode {\r\n let group = groups.find(\r\n item => (item as GroupNode).type === \"group\" && (item as GroupNode).name === name\r\n ) as GroupNode;\r\n\r\n if (!group) {\r\n group = {\r\n name,\r\n type: \"group\",\r\n columns: [],\r\n };\r\n groups.push(group);\r\n }\r\n\r\n return group;\r\n }\r\n\r\n for (const column of columns) {\r\n const groupParts = (column.group ?? \"\")\r\n .split(/[\\\\/]/)\r\n .map((part: string) => part.trim())\r\n .filter((part: string) => part.length > 0);\r\n\r\n if (groupParts.length === 0) {\r\n rootItemsOrdered.push(column);\r\n } else {\r\n let currentLevel = rootItemsOrdered;\r\n for (let i = 0; i < groupParts.length; i++) {\r\n const part = groupParts[i];\r\n const group = findOrCreateGroup(currentLevel, part);\r\n currentLevel = group.columns;\r\n }\r\n currentLevel.push(column);\r\n }\r\n }\r\n\r\n return rootItemsOrdered;\r\n }\r\n\r\n private groupsToColumnDefs(grouped: (GroupNode | any)[], getColumnsDef: (columns: any[]) => ColDef[]): any[] {\r\n return grouped.map(item => {\r\n if ('type' in item && item.type === 'group') {\r\n return {\r\n headerName: item.name,\r\n children: this.groupsToColumnDefs(item.columns, getColumnsDef)\r\n };\r\n } else {\r\n return getColumnsDef([item])[0];\r\n }\r\n });\r\n }\r\n\r\n private setCellDataType(column: any, colDef: ColDef) {\r\n if (column.dataType === \"component\"\r\n || column.dataType === \"auto\") return;\r\n\r\n if (typeof column.dataType === \"string\"\r\n && column.dataType.trim() !== \"\") {\r\n colDef.cellDataType = column.dataType;\r\n }\r\n }\r\n\r\n private setStyles(column: any, colDef: ColDef) {\r\n if (column.headerClass) {\r\n colDef.headerClass = column.headerClass;\r\n }\r\n if (column.headerStyle) {\r\n colDef.headerStyle = column.headerStyle; \r\n }\r\n }\r\n\r\n private setCellRenderer(column: any, colDef: ColDef, map: MapType, formGroup: FormGroup) {\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 = DeleteRowRendererComponent;\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 if (column.dataType === \"component\") {\r\n colDef.cellRenderer = HostCellRendererComponent;\r\n colDef.cellRendererParams = {\r\n componentType: column.component,\r\n properties: column.properties,\r\n formGroup: formGroup\r\n };\r\n colDef.cellClass = 'cell-component';\r\n }\r\n\r\n }\r\n\r\n private setCellChangeFlash(column: any, colDef: ColDef) {\r\n colDef.enableCellChangeFlash = true;\r\n }\r\n\r\n private setAutoHeight(column: any, colDef: ColDef) {\r\n if (column.autoHeight) {\r\n colDef.autoHeight = true;\r\n colDef.wrapText = true;\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 getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n let options: RowSelectionOptions | undefined = undefined;\r\n if (this.selectable(component, formGroup)) {\r\n if (this.multiSelect(component, formGroup)) {\r\n options = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n }\r\n else {\r\n options = { mode: \"singleRow\" };\r\n }\r\n\r\n if (component.rowSelectable) {\r\n options = {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private hasRowId(component: any) {\r\n return typeof component.rowId === 'string' && component.rowId.trim() !== '';\r\n }\r\n\r\n private getRowId(component: any): GetRowIdFunc<any> | undefined\r\n {\r\n if (this.hasRowId(component)) {\r\n return (params: GetRowIdParams<any>) => params.data[component.rowId]; \r\n }\r\n else {\r\n return undefined;\r\n }\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.rowSelectable, {\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 onRowSelected(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.rowSelected, {\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 onRowSelecting(component: any, formGroup: FormGroup, params: ModelUpdatedEvent) {\r\n if (params.newData \r\n && component.rowSelected\r\n && this.selectable(component, formGroup))\r\n {\r\n params.api.forEachNode((node) => {\r\n if (this.onRowSelected(component, formGroup, node.data)) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private suppressActions(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.suppressActions, { cacheable: false })\r\n ?? false;\r\n }\r\n\r\n private selectable(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.selectable, { cacheable: false })\r\n ?? false;\r\n }\r\n\r\n private multiSelect(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.multiSelect, { cacheable: false })\r\n ?? false;\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(): any {\r\n if (this.language === 'it') {\r\n return AG_GRID_LOCALE_IT;\r\n }\r\n else if (this.language === 'en') {\r\n return AG_GRID_LOCALE_EN;\r\n }\r\n else if (this.language === 'de') {\r\n return AG_GRID_LOCALE_DE;\r\n }\r\n else if (this.language === 'fr') {\r\n return AG_GRID_LOCALE_FR;\r\n }\r\n else if (this.language === 'es') {\r\n return AG_GRID_LOCALE_ES;\r\n }\r\n else if (this.language === 'pt') {\r\n return AG_GRID_LOCALE_PT;\r\n }\r\n else if (this.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: true,\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 time: {\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.formatTime(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 decimal: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatNumber(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.formatNumber(params.value, 0)\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 map?.['null'] ?? \"\";\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\n\r\nimport { LanguageService } from '@wemake4u/interact';\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 , private languageService: LanguageService) {\r\n }\r\n\r\n getOptions(component: any, formGroup: FormGroup): 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);\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 get language(): string {\r\n return this.languageService.getLanguage();\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 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): 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);\r\n case \"line\":\r\n return this.getLineSeriesOptions(serie, formGroup);\r\n case \"area\":\r\n return this.getAreaSeriesOptions(serie, formGroup);\r\n case \"scatter\":\r\n return this.getScatterSeriesOptions(serie, formGroup);\r\n case \"bubble\":\r\n return this.getBubbleSeriesOptions(serie, formGroup);\r\n case \"pie\":\r\n return this.getPieSeriesOptions(serie, formGroup);\r\n case \"donut\":\r\n return this.getDonutSeriesOptions(serie, formGroup);\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)\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\");\r\n\r\n if (this.isString(serie.yName))\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (this.isString(serie.legendItemName))\r\n options.legendItemName = this.locale(serie, \"legendItemName\");\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): 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)\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): 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)\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): 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)\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)\r\n : AgAreaSeriesOptionsNames {\r\n const options: AgAreaSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n return options;\r\n }\r\n\r\n private getScatterSeriesOptions(serie: any, formGroup: FormGroup): 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)\r\n };\r\n }\r\n\r\n private getScatterSeriesOptionsNames(serie: any)\r\n : AgScatterSeriesOptionsNames {\r\n const options: AgScatterSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getBubbleSeriesOptions(serie: any, formGroup: FormGroup): 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)\r\n };\r\n }\r\n\r\n private getBubbleSeriesOptionsNames(serie: any)\r\n : AgBubbleSeriesOptionsNames {\r\n const options: AgBubbleSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (serie.sizeName)\r\n options.sizeName = this.locale(serie, \"sizeName\");\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptions(serie: any, formGroup: FormGroup): 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)\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)\r\n : AgPieSeriesOptionsNames {\r\n const options: AgPieSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\");\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\");\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\");\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptions(serie: any, formGroup: FormGroup): 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)\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)\r\n : AgDonutSeriesOptionsNames {\r\n const options: AgDonutSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\");\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\");\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\");\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\");\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 { Directive, Renderer2 } from '@angular/core';\r\nimport { SirioValidationDirective } from 'ngx-sirio-lib';\r\nimport { FormService } from '../services/form.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nconst classNames = ['sirio-is-invalid', 'sirio-is-valid', 'sirio-is-warning', 'sirio-is-pending'];\r\n\r\n@Directive({\r\n selector: '[validation]',\r\n standalone: true\r\n})\r\nexport class ValidationPatchDirective extends SirioValidationDirective {\r\n\r\n constructor(private formService: FormService) {\r\n super();\r\n }\r\n\r\n override subscribeToNgControlChanges() {\r\n const thisRef = this as any;\r\n\r\n const control = thisRef.host.control;\r\n if (!control) {\r\n console.error(\"can't find a control. Please provide a formControl for\", thisRef.elementRef.nativeElement);\r\n }\r\n else {\r\n thisRef.elementControl = control;\r\n\r\n const callback = () => {\r\n if (thisRef.canValidate) {\r\n thisRef.checkValidation();\r\n }\r\n };\r\n \r\n this.formService.statusChanges(thisRef.elementControl, callback)\r\n .pipe(\r\n takeUntilDestroyed(thisRef.destroyRef)\r\n , debounceTime(0))\r\n .subscribe(callback);\r\n }\r\n }\r\n\r\n override checkValidation() {\r\n if (this.elementControl?.status === \"PENDING\") {\r\n this.setPending();\r\n return;\r\n }\r\n return super.checkValidation();\r\n }\r\n\r\n override cleanupValidation() {\r\n classNames.forEach(c => this.getRenderer().removeClass(this.validationTarget, c));\r\n }\r\n\r\n override setValid() {\r\n this.applyClass('sirio-is-valid'); \r\n }\r\n\r\n override setInvalid() {\r\n this.applyClass('sirio-is-invalid'); \r\n }\r\n\r\n override setWarning() {\r\n this.applyClass('sirio-is-warning'); \r\n }\r\n\r\n setPending() {\r\n this.applyClass('sirio-is-pending'); \r\n }\r\n\r\n private applyClass(className: string) {\r\n this.cleanupValidation();\r\n this.getRenderer().addClass(this.validationTarget, className);\r\n this.activeClassName = className;\r\n }\r\n\r\n private getRenderer(): Renderer2 {\r\n return (this as any).renderer;\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioCollapseComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[collapseExtension]',\r\n exportAs: 'collapseExtension',\r\n standalone: true\r\n})\r\nexport class CollapsePatchDirective {\r\n constructor(@Host() private host: SirioCollapseComponent) {\r\n\r\n const thisRef = host as any;\r\n\r\n thisRef._setCollapseHeight = () => {\r\n thisRef.renderer.setStyle(thisRef.element, 'height', 'auto');\r\n }\r\n\r\n const _openCollapse = thisRef._openCollapse.bind(thisRef);\r\n thisRef._openCollapse = () => {\r\n _openCollapse();\r\n thisRef.renderer.addClass(thisRef.element, 'is-open');\r\n };\r\n\r\n const _closeCollapse = thisRef._closeCollapse.bind(thisRef);\r\n thisRef._closeCollapse = () => {\r\n _closeCollapse();\r\n thisRef.renderer.removeClass(thisRef.element, 'is-open');\r\n };\r\n\r\n }\r\n\r\n get isOpen(): boolean {\r\n return(this.host as any)._isOpen;\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\nimport { Subscription } from 'rxjs';\r\nimport { GlobalService } from '../services/global.service';\r\n\r\n@Directive({\r\n selector: '[readonly]',\r\n standalone: true\r\n})\r\nexport class ReadOnlyDirective implements OnChanges {\r\n @Input() readonly: boolean | null = null;\r\n @Input() placeholder: string | null = null;\r\n @Input() componentRef: any;\r\n @Input() properties: any;\r\n\r\n constructor(private ngControl: NgControl\r\n , private global: GlobalService\r\n , private el: ElementRef\r\n , private renderer: Renderer2) {\r\n }\r\n\r\n private disableClass: string = \"is-disabled\";\r\n private readonlyClass: string = \"is-readonly\";\r\n private lightReadonlyClass: string = \"light-readonly\";\r\n\r\n private sub?: Subscription;\r\n\r\n ngOnInit() {\r\n const control = this.ngControl.control;\r\n if (control) {\r\n this.sub = control.statusChanges.subscribe(_ => {\r\n this.apply(); \r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub?.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"readonly\"]) {\r\n this.apply();\r\n }\r\n }\r\n\r\n private apply() {\r\n const control = this.ngControl.control;\r\n if (!control) return;\r\n if (control.disabled) {\r\n this.toggleClass(true, this.disableClass);\r\n this.overridePlaceholder(false);\r\n } else {\r\n this.toggleClass(false, this.disableClass);\r\n const readonly = this.readonly === true;\r\n (this.ngControl.valueAccessor as any)?.setDisabledState(readonly);\r\n if (this.useLightReadonly()) {\r\n this.toggleClass(readonly, this.lightReadonlyClass);\r\n this.overridePlaceholder(readonly);\r\n }\r\n else {\r\n this.toggleClass(readonly, this.readonlyClass);\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 private useLightReadonly() {\r\n const value = this.properties?.useLightReadonly\r\n || this.global.getProperty(\"useLightReadonly\", \"yes\");\r\n if (value !== \"yes\" && value !== \"no\")\r\n return true;\r\n return (value === \"yes\");\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 }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EvaluateOptions, ProgrammabilityService } from '../services/programmability.service';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class CacheContextService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return this.programmability.isExpression(text);\r\n }\r\n\r\n getExpression(text: string | null): string {\r\n return this.programmability.getExpression(text);\r\n }\r\n\r\n evaluateString(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): string {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateString(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return value ?? \"\"; \r\n }\r\n\r\n evaluateBoolean(cacheControl: any, 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 (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () => \r\n this.programmability.evaluateBoolean(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(cacheControl: any, formGroup: FormGroup, value: number | string | null, options: EvaluateOptions = {}): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateNumber(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluate(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return value;\r\n }\r\n\r\n evaluateTemplate(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): any {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateTemplate(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n\r\n evaluateUnary(cacheControl: any, formGroup: FormGroup, value: string | null, input: any, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateUnary(formGroup, value, input, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(cacheControl: any) {\r\n if (this.cache.has(cacheControl)) {\r\n this.cache.delete(cacheControl);\r\n }\r\n }\r\n\r\n invalidateAll() {\r\n this.cache = new WeakMap<object, Record<string, any>>();\r\n }\r\n\r\n private getOptions(options: EvaluateOptions): EvaluateOptions {\r\n return {\r\n ...options,\r\n cacheable: false\r\n };\r\n }\r\n\r\n private call(cacheControl: any, value: string | null, evaluate: () => any): any {\r\n\r\n if (value === null)\r\n return null;\r\n\r\n if (!this.cache.has(cacheControl)) {\r\n this.cache.set(cacheControl, {});\r\n }\r\n\r\n const cachedObject = this.cache.get(cacheControl)!;\r\n\r\n if (value in cachedObject) {\r\n return cachedObject[value];\r\n }\r\n\r\n const result: any = evaluate();\r\n\r\n cachedObject[value] = result;\r\n\r\n return result;\r\n }\r\n\r\n private cache = new WeakMap<object, Record<string, any>>();\r\n}\r\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { ControlContainer, FormArray, FormGroup } from '@angular/forms';\r\nimport { CacheContextService } from '../services/cache.service';\r\nimport { FormService } from '../services/form.service';\r\nimport { EvaluateOptions } from '../services/programmability.service';\r\nimport { debounceTime, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[recursion]',\r\n exportAs: 'recursion',\r\n standalone: true,\r\n providers: [\r\n CacheContextService\r\n ],\r\n})\r\nexport class RecursionDirective implements OnInit, OnChanges, OnDestroy {\r\n @Input() formGroup!: FormGroup;\r\n @Input(\"recursion\") component: any;\r\n\r\n private subscription: Subscription | null = null;\r\n private componentRows: any = null;\r\n private nestedFormGroup: FormGroup | null = null;\r\n\r\n constructor(private controlContainer: ControlContainer\r\n , private formService: FormService\r\n , private cacheContext: CacheContextService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.componentRows = this.createComponentRows();\r\n this.nestedFormGroup = this.createNestedFormGroup();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.isSubscribeRequired()) {\r\n this.subscribeToChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribeToChanges();\r\n }\r\n\r\n getItemsArray(formItem: FormGroup): FormArray | null {\r\n if (this.isRecursionByKey()) {\r\n return this.getArrayFromKey(formItem);\r\n }\r\n\r\n if (this.isRecursionByExpression()) {\r\n return this.getArrayFromExpression(formItem);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getComponentRows(): any {\r\n return this.componentRows;\r\n }\r\n\r\n getFormGroup(formItem: FormGroup): FormGroup {\r\n if (this.isRecursionByExpression()) {\r\n const nestedGroup = this.nestedFormGroup!;\r\n nestedGroup.setControl(this.component.key, this.getArrayFromExpression(formItem));\r\n return nestedGroup\r\n }\r\n else { \r\n return formItem;\r\n }\r\n }\r\n\r\n private isSubscribeRequired(): boolean {\r\n return this.shouldCreateItems()\r\n || this.isRecursionByExpression();\r\n }\r\n\r\n private isRecursionAllowed(): boolean {\r\n return this.component?.subtype === \"table\"\r\n && this.component?.recursion?.allowed === true\r\n }\r\n\r\n private isRecursionByKey(): boolean { \r\n return this.isRecursionAllowed()\r\n && this.component?.recursion?.source === \"key\"\r\n && this.component?.recursion?.key;\r\n }\r\n\r\n private isRecursionByExpression(): boolean {\r\n return this.isRecursionAllowed()\r\n && this.component?.recursion?.source === \"expression\"\r\n && this.cacheContext.isExpression(this.component.recursion.expression ?? \"\");\r\n }\r\n\r\n private shouldCreateItems(): boolean {\r\n return this.isRecursionByKey()\r\n && this.component.allowAddRemove === true\r\n && this.cacheContext.isExpression(this.component.recursion.shouldCreate ?? \"\");\r\n }\r\n\r\n private subscribeToChanges() {\r\n this.unsubscribeToChanges();\r\n const formArray = this.getFormArray();\r\n if (formArray) {\r\n this.subscription = formArray.valueChanges\r\n .pipe(debounceTime(200))\r\n .subscribe(() => this.onChangeArray(formArray));\r\n }\r\n }\r\n\r\n private unsubscribeToChanges() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n }\r\n\r\n private onChangeArray(formArray: FormArray) {\r\n this.cacheContext.invalidateAll();\r\n if (this.shouldCreateItems()) {\r\n this.creatingItems(formArray);\r\n } \r\n }\r\n\r\n private getFormArray(): FormArray {\r\n return this.controlContainer.control as FormArray;\r\n }\r\n\r\n private creatingItems(formArray: FormArray) {\r\n const key = this.component.recursion.key ?? \"\";\r\n const shouldCreate = this.component.recursion.shouldCreate ?? \"\";\r\n\r\n for (let i = 0; i < formArray.length; i++) {\r\n\r\n const formItem = formArray.at(i) as FormGroup;\r\n\r\n const options: EvaluateOptions = {\r\n extendContext: () => ({\r\n \"item\": formItem.value\r\n })\r\n }\r\n const recursive = this.cacheContext.evaluateBoolean(formItem, this.formGroup, shouldCreate, options);\r\n\r\n if (recursive && !formItem.get(key)) {\r\n const newArray = (formArray as any).createNewArray();\r\n formItem.addControl(key, newArray); \r\n }\r\n else if (!recursive && formItem.get(key)) {\r\n formItem.removeControl(key);\r\n }\r\n }\r\n }\r\n\r\n private getArrayFromKey(formItem: FormGroup): FormArray | null {\r\n const control = formItem.get(this.component.recursion.key);\r\n if ((control instanceof FormArray)) {\r\n const childArray = this.prepareChildArray(formItem, control);\r\n if (childArray != control) {\r\n formItem.setControl(this.component.recursion.key, childArray);\r\n }\r\n return childArray;\r\n }\r\n return null;\r\n }\r\n\r\n private getArrayFromExpression(formItem: FormGroup): FormArray | null {\r\n const expression = this.cacheContext.getExpression(this.component.recursion.expression);\r\n const wrapExpression = `=__asFormArray(${expression})`;\r\n const result = this.cacheContext.evaluate(formItem, this.formGroup, wrapExpression, {\r\n extendContext: () => ({\r\n item: formItem.value,\r\n __asFormArray: (value: any) => {\r\n if (Array.isArray(value)) { \r\n const newArray = new FormArray<any>([]);\r\n this.formService.patch(newArray, value, { strict: false });\r\n return newArray;\r\n }\r\n return null;\r\n }\r\n })\r\n });\r\n if ((result instanceof FormArray)) {\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n private createComponentRows(): any {\r\n let component = this.component;\r\n\r\n if (this.isRecursionByKey()\r\n && component.key !== this.component.recursion.key) {\r\n component = { ...this.component, key: this.component.recursion.key };\r\n }\r\n\r\n return [{ components: [component] }]\r\n }\r\n\r\n private createNestedFormGroup(): FormGroup | null {\r\n if (this.isRecursionByExpression()) {\r\n return new FormGroup({\r\n [this.component.key]: new FormArray([])\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n private prepareChildArray(formItem: FormGroup, childArray: FormArray) {\r\n if ((childArray as any).createNewArray)\r\n return childArray;\r\n\r\n const parentArray = formItem.parent;\r\n if ((parentArray instanceof FormArray)\r\n && (parentArray as any).createNewArray)\r\n {\r\n var newArray = (parentArray as any).createNewArray();\r\n this.formService.patch(newArray, childArray.value, { strict: false });\r\n return newArray;\r\n }\r\n\r\n return childArray;\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\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\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 @Host() private sirioSelect: SirioSelectComponent\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n this.handleOptionsChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.addValidator();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.optionsSubscription?.unsubscribe();\r\n this.removeValidator();\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: FocusEvent) => {\r\n if (event.relatedTarget !== dropMenu)\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 setTimeout(() => {\r\n this.handleValue();\r\n this.canValidate = true;\r\n this.refreshValidators();\r\n }); \r\n });\r\n }\r\n\r\n private optionsSubscription?: Subscription;\r\n\r\n private canValidate: boolean = false;\r\n\r\n private validator = this.validateOptions.bind(this);\r\n\r\n private addValidator(): void {\r\n this.sirioSelect.control?.addValidators(this.validator);\r\n }\r\n\r\n private removeValidator(): void {\r\n this.sirioSelect.control?.removeValidators(this.validator);\r\n }\r\n\r\n private validateOptions(control: AbstractControl): ValidationErrors | null {\r\n if (!this.canValidate) return null;\r\n const value = control.value;\r\n if (value) {\r\n const valueOption = this.sirioSelect.options.find(\r\n option => option.value === value\r\n );\r\n if (!valueOption) {\r\n return { error: true, message: `\"${value}\" non è un valore valido` };\r\n }\r\n } \r\n return null;\r\n }\r\n\r\n private refreshValidators() {\r\n this.sirioSelect.control?.updateValueAndValidity({ onlySelf: true, emitEvent: false });\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, inject } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\nimport { catchError, take, tap, finalize } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DestroyRef } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { IGetRowsParams, GridApi } from \"ag-grid-community\";\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\nimport { GridService } from '../services/grid.service';\r\nimport { CacheContextService } from '../services/cache.service';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Directive({\r\n selector: '[rowSource], [columnDefs], [selectable], [multiSelect], [suppressActions]',\r\n standalone: true,\r\n providers: [\r\n CacheContextService\r\n ],\r\n})\r\n\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource!: any;\r\n @Input() columnDefs: any = null;\r\n @Input() selectable: boolean | null = null;\r\n @Input() multiSelect: boolean | null = null;\r\n @Input() suppressActions: boolean | null = null;\r\n @Input() formGroup!: FormGroup; \r\n @Input(\"register\") component: any = null;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n @Host() private grid: AgGridAngular,\r\n private gridService: GridService,\r\n private cacheContext: CacheContextService,\r\n private languageService: LanguageService\r\n ) {\r\n\r\n grid.gridReady.subscribe((params) => {\r\n this.gridApi = params.api;\r\n this.prepareContext();\r\n this.isGridReady = true;\r\n this.onGridReady(); \r\n });\r\n }\r\n\r\n //https://www.ag-grid.com/angular-data-grid/column-updating-definitions/\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (this.isRowSourceChanged(changes)) {\r\n this.onRowSourceChanged();\r\n }\r\n\r\n if (this.isColumnDefsChanged(changes)) {\r\n this.onColumnDefsChanged();\r\n }\r\n\r\n if (this.isSelectionChanged(changes)) {\r\n this.onSelectionChanged();\r\n }\r\n\r\n if (this.isSuppressActionChanged(changes)) {\r\n this.onSuppressAction();\r\n }\r\n }\r\n\r\n private gridApi!: GridApi<any>;\r\n\r\n private isGridReady: boolean = false;\r\n\r\n private noData: Observable<any> = of([]);\r\n\r\n private prepareContext() {\r\n const context = this.gridApi.getGridOption(\"context\") ?? {};\r\n context[\"cacheContext\"] = this.cacheContext;\r\n this.gridApi.setGridOption(\"context\", context);\r\n }\r\n\r\n private applyResult(data: any) {\r\n\r\n if (this.isArray(data)) {\r\n this.setRowData(data);\r\n }\r\n else if (this.isDataSource(data)) {\r\n this.setDataSource(data);\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 this.gridService.onRowDataChanged(this.component, this.gridApi, rowSource);\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 this.gridService.onDataSourceChanged(this.component, this.gridApi, rowSource);\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 obj && typeof obj.getRows === \"function\";\r\n }\r\n\r\n private onGridReady() { \r\n this.onColumnDefsChanged();\r\n }\r\n\r\n private isRowSourceChanged(changes: SimpleChanges): boolean {\r\n return ['rowSource'].some(\r\n key => !!changes[key]\r\n );\r\n }\r\n\r\n private onRowSourceChanged() {\r\n this.cacheContext.invalidateAll();\r\n if (isObservable(this.rowSource)) {\r\n this.wrapObservable(this.rowSource).pipe(\r\n take(1),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(value => {\r\n this.applyResult(value ?? []);\r\n });\r\n }\r\n else if (this.isDataSource(this.rowSource)) {\r\n this.applyResult(this.wrapRowsSource(this.rowSource));\r\n }\r\n else {\r\n this.applyResult(this.rowSource);\r\n }\r\n }\r\n\r\n private isColumnDefsChanged(changes: SimpleChanges): boolean {\r\n return ['columnDefs'].some(\r\n key => !!changes[key]\r\n );\r\n }\r\n\r\n private onColumnDefsChanged() {\r\n if (this.gridApi) {\r\n const columnDef = this.gridService.getColumnDefs(this.component, this.columnDefs, this.formGroup);\r\n this.gridApi.setGridOption(\"columnDefs\", columnDef);\r\n }\r\n }\r\n\r\n private isSelectionChanged(changes: SimpleChanges): boolean {\r\n return ['selectable', 'multiSelect'].some(\r\n key => !!changes[key] && !changes[key].isFirstChange()\r\n );\r\n }\r\n\r\n private onSelectionChanged() {\r\n if (this.gridApi) {\r\n const rowSelection = this.gridService.getRowSelection(this.component, this.formGroup);\r\n this.gridApi.setGridOption(\"rowSelection\", rowSelection);\r\n }\r\n }\r\n\r\n private isSuppressActionChanged(changes: SimpleChanges): boolean {\r\n return ['suppressActions'].some(\r\n key => !!changes[key] && !changes[key].isFirstChange()\r\n );\r\n }\r\n\r\n private onSuppressAction() {\r\n if (this.gridApi) {\r\n this.gridApi.setColumnsVisible([\"actions\"], !(this.suppressActions ?? false));\r\n this.gridService.resizeGrid(this.component, this.gridApi);\r\n }\r\n }\r\n\r\n private showLoading(value: boolean) {\r\n if (this.gridApi) {\r\n this.gridApi.setGridOption('loading', value);\r\n } \r\n }\r\n\r\n private showLoadError(value: boolean) {\r\n if (!this.gridApi) return;\r\n\r\n if (value) {\r\n this.grid.api.setGridOption('overlayNoRowsTemplate', this.locale(Texts, 'LoadingFailed'));\r\n this.grid.api.showNoRowsOverlay();\r\n }\r\n else {\r\n this.grid.api.setGridOption('overlayNoRowsTemplate', undefined); \r\n } \r\n }\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 private wrapObservable<T>(source: Observable<T>): Observable<T> {\r\n this.showLoading(true);\r\n this.showLoadError(false);\r\n\r\n return source.pipe(\r\n tap(() => this.showLoadError(false)),\r\n catchError(err => {\r\n this.showLoadError(true); \r\n return this.noData;\r\n }),\r\n finalize(() => this.showLoading(false))\r\n );\r\n }\r\n\r\n private wrapRowsSource(source: IRowsSource): IRowsSource {\r\n\r\n const thisRef = this;\r\n\r\n function wrapParams(params: IGetRowsParams): IGetRowsParams {\r\n thisRef.showLoading(true);\r\n thisRef.showLoadError(false);\r\n\r\n return {\r\n ...params,\r\n successCallback: (rows, lastRow) => {\r\n try {\r\n params.successCallback(rows, lastRow);\r\n } finally {\r\n thisRef.showLoading(false);\r\n }\r\n },\r\n failCallback: () => {\r\n try {\r\n params.failCallback();\r\n } finally {\r\n thisRef.showLoading(false);\r\n thisRef.showLoadError(true);\r\n }\r\n }\r\n };\r\n }\r\n\r\n return {\r\n getRows: (params: IGetRowsParams) => {\r\n const wrapped = wrapParams(params);\r\n source.getRows(wrapped);\r\n }\r\n };\r\n }\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 readonly canNext = () => {\r\n return this.getNextIndex() !== null;\r\n }\r\n\r\n readonly goNext = () => {\r\n const next = this.getNextIndex();\r\n if (next !== null) this.setActiveIndex(next);\r\n }\r\n\r\n readonly canPrevious = () => {\r\n return this.getPreviousIndex() !== null;\r\n }\r\n\r\n readonly goPrevious = () => {\r\n const previous = this.getPreviousIndex();\r\n if (previous !== null) this.setActiveIndex(previous);\r\n }\r\n\r\n readonly setActiveIndex = (index: number): void => {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n if (index < 0 || index >= items.length) return;\r\n const item = items[index];\r\n if (item.disabled) return;\r\n tabControl.setActiveIndex(index);\r\n };\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n private getPreviousIndex(): number | null {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n const currentIndex = tabControl.activeIndex;\r\n for (let i = currentIndex - 1; i >= 0; i--) {\r\n if (!items[i].disabled) return i;\r\n }\r\n return null;\r\n }\r\n\r\n private getNextIndex(): number | null {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n const currentIndex = tabControl.activeIndex;\r\n for (let i = currentIndex + 1; i < items.length; i++) {\r\n if (!items[i].disabled) return i;\r\n }\r\n return null;\r\n }\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 { Control } from \"./control\";\r\n\r\nexport class DisplayFieldControl extends Control {\r\n\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 { DisplayFieldControl } from '../controls/displayfield';\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 \"displayfield\":\r\n return new DisplayFieldControl(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 let changed = false;\r\n \r\n this.sirioInput.writeValue = function (value: any, event = false) {\r\n if (this.value !== value) {\r\n changed = true;\r\n writeValue.bind(this)(value, false);\r\n }\r\n };\r\n\r\n this.sirioInput.onBlur = function (event: any) {\r\n if (changed) {\r\n changed = false;\r\n writeValue.bind(this)(this.value, true);\r\n }\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}(\\.\\d+)?(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 formatNumber = (value: number | null): number | string | null => {\r\n if (value && 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 return value.toFixed(this.decimalDigits);\r\n }\r\n return value;\r\n }\r\n\r\n let firstWrite = true;\r\n\r\n const writeValue = this.sirioInput.writeValue.bind(this.sirioInput);\r\n\r\n this.sirioInput.writeValue = function (value: any, event?: boolean) {\r\n if (firstWrite) {\r\n firstWrite = false;\r\n value = formatNumber(value);\r\n }\r\n writeValue(value, event);\r\n };\r\n\r\n const coerceValue = (value: number | null): number | null => {\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 writeValue(formatNumber(value), false);\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\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.configureSpellCheck();\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 if (typeof value !== 'string') {\r\n return value;\r\n }\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\r\n if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n\r\n this.applyTextTransform(inputElement);\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 this.applyTextTransformByValue(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 applyTextTransform(inputElement: HTMLInputElement | HTMLTextAreaElement) {\r\n if (inputElement.placeholder) return;\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n }\r\n\r\n private applyTextTransformByValue(inputElement: HTMLInputElement, value: any) {\r\n if (!inputElement.placeholder) return; \r\n this.renderer.setStyle(inputElement, 'text-transform', value ? this.textcase : \"none\"); \r\n }\r\n\r\n private configureSpellCheck() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n if (inputElement) {\r\n this.renderer.setAttribute(inputElement, 'spellcheck', 'false'); \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 } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { distinctUntilChanged, filter, Subscription, tap } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[valueSync]',\r\n standalone: true\r\n})\r\nexport class ValueSyncDirective {\r\n @Input() valueSync: boolean | null = null;\r\n\r\n constructor(private ngControl: NgControl) { \r\n }\r\n\r\n private sub?: Subscription;\r\n\r\n ngOnInit() {\r\n if (this.valueSync) {\r\n this.startSync();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.valueSync) {\r\n this.startSync();\r\n } else {\r\n this.stopSync();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stopSync();\r\n }\r\n\r\n private startSync() {\r\n if (this.sub) return;\r\n\r\n const control = this.ngControl.control;\r\n const valueAccessor = this.ngControl.valueAccessor;\r\n\r\n if (!control || !valueAccessor) return;\r\n\r\n this.sub = control.valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(value => {\r\n const currentValue = (valueAccessor as any)?.value;\r\n return currentValue !== value;\r\n }),\r\n tap(value => {\r\n try {\r\n valueAccessor.writeValue(value);\r\n } catch (err) {\r\n console.warn('writeValue failed:', err);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private stopSync() {\r\n this.sub?.unsubscribe();\r\n this.sub = undefined;\r\n }\r\n\r\n}\r\n","import { Directive, Host, OnInit, ViewContainerRef, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\nimport { setFocus } from '../utils/focusable';\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 this.setFocus();\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 private setFocus()\r\n {\r\n setTimeout(() => {\r\n const tabItem: any = this.sirioTab.activeTabItem;\r\n const containerRef = tabItem?.viewContainerRef as ViewContainerRef;\r\n if (containerRef)\r\n setFocus(containerRef.element.nativeElement as HTMLElement);\r\n }, 100);\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SirioTabComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[tabItem]',\r\n standalone: true\r\n})\r\nexport class TabItemDirective implements OnChanges {\r\n @Input() componentRef: any;\r\n @Input() disabled: any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"disabled\"]) {\r\n const tabControl = this.componentRef as SirioTabComponent;\r\n (tabControl as any).cd.markForCheck(); \r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\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 \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 private subscription = new Subscription();\r\n\r\n constructor(private el: ElementRef\r\n , private renderer: Renderer2\r\n , private languageService: LanguageService) {\r\n\r\n this.subscription = languageService.onLanguageChanged()\r\n .subscribe(() => this.applyCollapseLogic());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resetButton();\r\n this.resetFocusHandler();\r\n this.subscription.unsubscribe();\r\n }\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 get language(): string {\r\n return this.languageService.getLanguage();\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 setTimeout(() => {\r\n if (element.scrollHeight > this.maxHeight!) {\r\n this.applyButton();\r\n this.applyFocusHandler();\r\n }\r\n }, 100);\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 \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 {\r\n Component, Input, AfterViewInit, ViewChild, ViewContainerRef, Injector\r\n , Type, ComponentRef, OnChanges, SimpleChanges,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { FormGroup, ControlValueAccessor, FormControl } from '@angular/forms';\r\nimport { GlobalService } from '../services/global.service';\r\nimport { Subscription, distinctUntilChanged, map } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-dynamic-host',\r\n templateUrl: './dynamic-host.component.html',\r\n styleUrls: [\r\n './dynamic-host.component.css'],\r\n standalone: true\r\n})\r\nexport class DynamicHostComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n @Input(\"register\") component!: any;\r\n @Input() properties: Record<string, any> | null = null;\r\n @Input() formGroup!: FormGroup;\r\n @ViewChild('container', { read: ViewContainerRef, static: true }) container!: ViewContainerRef;\r\n\r\n constructor(private injector: Injector,\r\n private globalService: GlobalService) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.statusSub) {\r\n this.statusSub.unsubscribe();\r\n }\r\n } \r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"properties\"]) {\r\n this.setProperties();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const componentType = this.resolveComponentType(this.component.component);\r\n if (componentType) {\r\n this.componentRef = this.container.createComponent(componentType, {\r\n injector: this.injector,\r\n });\r\n\r\n if (this.isBindable()) {\r\n this.setBinding();\r\n }\r\n \r\n this.setProperties();\r\n }\r\n }\r\n\r\n getComponentRef(): ComponentRef<any> | null {\r\n return this.componentRef;\r\n }\r\n\r\n //#region Private Members\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n private statusSub: Subscription | null = null;\r\n\r\n private isBindable(): boolean {\r\n if (!this.componentRef) return false;\r\n return this.component.isInput\r\n && this.component.key\r\n && this.isControlValueAccessor(this.componentRef.instance);\r\n }\r\n\r\n private setBinding() {\r\n if (!this.componentRef) return;\r\n\r\n const key = this.component.key;\r\n const instance = this.componentRef.instance;\r\n\r\n if (!this.isControlValueAccessor(instance)) return;\r\n\r\n let formControl = this.formGroup.get(key);\r\n\r\n if (!formControl) {\r\n return;\r\n }\r\n\r\n instance.writeValue(formControl.value);\r\n\r\n instance.registerOnChange((value: any) => {\r\n formControl.setValue(value);\r\n });\r\n\r\n instance.registerOnTouched(() => {\r\n formControl.markAsTouched();\r\n });\r\n\r\n const setDisabledState = instance.setDisabledState;\r\n\r\n if (typeof setDisabledState === 'function') {\r\n const invoke = setDisabledState.bind(instance);\r\n this.statusSub = formControl.statusChanges\r\n .pipe(\r\n map(() => formControl.disabled),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(isDisabled => {\r\n invoke(isDisabled);\r\n });\r\n }\r\n }\r\n\r\n private setProperties(): void {\r\n if (!this.componentRef) return;\r\n const properties = this.properties ?? {};\r\n if (this.validProperties(properties)) {\r\n for (const key of Object.keys(properties)) {\r\n const value = properties[key];\r\n if (key in this.componentRef.instance) {\r\n this.componentRef.setInput?.(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isControlValueAccessor(obj: any): obj is ControlValueAccessor {\r\n return (\r\n obj &&\r\n typeof obj.writeValue === 'function' &&\r\n typeof obj.registerOnChange === 'function' &&\r\n typeof obj.registerOnTouched === 'function'\r\n );\r\n }\r\n\r\n private resolveComponentType(type: string): Type<any> | null {\r\n return this.globalService.getComponent(type);\r\n }\r\n\r\n private validProperties(value: unknown): value is Record<string, any> {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n }\r\n\r\n //#endregion\r\n}\r\n","<ng-container #container></ng-container>\r\n","export function isMeaningful(x: any): boolean {\r\n if (x == null) return false; // null/undefined\r\n if (Array.isArray(x)) return x.length > 0; // empty array\r\n if (typeof x === 'string') return x.trim().length > 0; // empty string\r\n if (typeof x === 'object') return Object.keys(x).length > 0; // empty object\r\n return !!x; // number/boolean/other\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 { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AutoFocusService {\r\n\r\n private map = new WeakMap<object, boolean>();\r\n\r\n mark(target: object): void {\r\n this.map.set(target, true);\r\n }\r\n\r\n consume(target: object): boolean {\r\n const flag = this.map.get(target) === true;\r\n this.map.delete(target);\r\n return flag;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, 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 { DialogService } from '../services/dialog.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { GlobalService } from '../services/global.service';\r\nimport { FormService } from '../services/form.service';\r\nimport { GridService } from '../services/grid.service';\r\nimport { ChartService } from '../services/chart.service';\r\nimport { AutoFocusService } from '../services/autofocus.service';\r\nimport { ButtonColors } from 'ngx-sirio-lib';\r\nimport { ValidationPatchDirective } from '../directives/validationpatch.directive';\r\nimport { CollapsePatchDirective } from '../directives/collapsepatch.directive';\r\nimport { AdornerDirective } from '../directives/adorner.directive';\r\nimport { ReadOnlyDirective } from '../directives/readonly.directive';\r\nimport { DisplayDirective } from '../directives/display.directive';\r\nimport { RepeatDirective } from '../directives/repeat.directive';\r\nimport { RecursionDirective } from '../directives/recursion.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 { ValueSyncDirective } from '../directives/valuesync.directive';\r\nimport { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { TabItemDirective } from '../directives/tabitem.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 { DynamicHostComponent } from '../dynamic-host/dynamic-host.component';\r\nimport { toExpression } from '../utils/feelable';\r\nimport { isMeaningful } from '../utils/isMeaningful';\r\nimport { isObservable, Observable, of } from 'rxjs';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport {\r\n SirioInputComponent\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, SirioCollapseComponent, SirioCollapseTriggerDirective\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 { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\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 './styles/validation.css',\r\n './styles/alignment.css',\r\n './styles/data-display.css',\r\n './styles/light-readonly.css',\r\n './styles/pending-state.css',\r\n './styles/dynamiclist-as-table.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, ReadOnlyDirective, DisplayDirective, FrameSecurityDirective, ValidationPatchDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, RecursionDirective, TabDirective, GridDirective, ChangeDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective, ValueSyncDirective\r\n , TabControlDirective, TabItemDirective, CollapseDirective, AccordionPanelDirective, CollapsePatchDirective\r\n , SirioInputComponent\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, SirioCollapseComponent, SirioCollapseTriggerDirective\r\n , TemplateWrapperComponent, DynamicHostComponent\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() form!: DynamicFormComponent;\r\n @Input() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() alignment: string = \"\";\r\n @Input() readOnly: boolean | null = null;\r\n @Input() recursionLevel: number = 0;\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 weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private languageService: LanguageService\r\n , private global: GlobalService\r\n , private formService: FormService\r\n , private grid: GridService\r\n , private chart: ChartService\r\n , private dialog: DialogService\r\n , private autoFocus: AutoFocusService\r\n , private el: ElementRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.programmability.addEvaluatorProviders(this.form);\r\n this.configureDatepicker();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus.consume(this.formGroup)) {\r\n setTimeout(() => {\r\n setFocus(this.el.nativeElement as HTMLElement);\r\n });\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.formService.getControl(this.formGroup, [component.path, component.key]);\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.formService.getControl(this.formGroup, [component.path, component.key]);\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 evaluateHeight(value: number | string | null): string | null {\r\n if (typeof value === \"number\") {\r\n return value + \"px\";\r\n }\r\n else if (typeof value === \"string\") {\r\n const result = this.programmability.evaluate(this.formGroup, value);\r\n if (typeof result === \"number\") {\r\n return result + \"px\";\r\n }\r\n return result;\r\n }\r\n return null;\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 }\r\n\r\n hasValues(component: any): boolean {\r\n if (!component) return false;\r\n const { values, valuesKey, valuesExpression } = component;\r\n return (\r\n isMeaningful(values) ||\r\n isMeaningful(valuesKey) ||\r\n isMeaningful(valuesExpression)\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 this.noData;\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 toLabel(value: any, list: Array<{ label: string; value: any }>): any {\r\n if (!list || !Array.isArray(list) || list.length === 0) {\r\n return value;\r\n }\r\n const getLabel = (value: any) => {\r\n const item = list.find(x => x.value === value);\r\n return item ? item.label : value;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.map(v => getLabel(v)).join(', ');\r\n }\r\n else {\r\n return getLabel(value); \r\n } \r\n }\r\n\r\n supportValues(component: any): boolean {\r\n if (!component) return false;\r\n return component.fieldtype === 'select' || component.fieldtype === 'taglist';\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));\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, this.grid.getCacheKey()\r\n , () => this.grid.getOptions(component, this.formGroup));\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): any {\r\n if (component.dataSource) {\r\n // Expression\r\n return this.evaluate(component.dataSource, true);\r\n }\r\n else {\r\n // Nothing\r\n return this.noData;\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 const addedItem = (formArray as any).addItem();\r\n this.autoFocus.mark(addedItem);\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number, withConfirm: boolean) {\r\n if (withConfirm) {\r\n this.dialog.confirm(this.locale(Texts, 'ConfirmDelete'), {\r\n \"title\": this.locale(Texts, 'Confirm'),\r\n \"buttons\": \"ConfirmCancel\",\r\n \"onResult\": (result) => {\r\n if (result.action === \"Yes\") {\r\n formArray.removeAt(index);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n formArray.removeAt(index);\r\n }\r\n }\r\n\r\n moveUpItem(formArray: FormArray, index: number) {\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index - 1, control);\r\n }\r\n\r\n moveDownItem(formArray: FormArray, index: number) {\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index + 1, control); \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 getFeelableProperties(component: any): Record<string, any> | null {\r\n const properties = component.properties;\r\n if (typeof properties === 'object' && properties !== null && !Array.isArray(properties)) {\r\n const feelable = toExpression(properties);\r\n return this.programmability.evaluate(this.formGroup, feelable);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getGroupOutline(component: any) {\r\n return {\r\n 'group-outline': component.showOutline === true\r\n };\r\n }\r\n\r\n getFormAlignment() {\r\n return this.getAlignmentRules(\"valign\", this.alignment); \r\n }\r\n\r\n getComponentAlignment(component: any) {\r\n return this.getAlignmentRules(\"component\", component.selfAlignment); \r\n }\r\n\r\n getTextAlignment(component: any): string {\r\n switch (component.textAlign) {\r\n case 'left': return \"text-left\"\r\n case 'center': return \"text-center\"\r\n case 'right': return \"text-right\"\r\n default: return \"\";\r\n }\r\n }\r\n\r\n getHorizontalAlignment(component: any) {\r\n const alignment = component.horizontalAlignment;\r\n const ruleName = \"horizontal\";\r\n return {\r\n [`${ruleName}-left`]: alignment === 'left',\r\n [`${ruleName}-center`]: alignment === 'center',\r\n [`${ruleName}-right`]: alignment === 'right',\r\n [`${ruleName}-fill`]: alignment === 'fill'\r\n };\r\n }\r\n\r\n getLightView(component: any): string {\r\n const className = 'light-view';\r\n const value = component.properties?.useLightReadonly\r\n || this.global.getProperty(\"useLightReadonly\", \"yes\");\r\n if (value !== \"yes\" && value !== \"no\")\r\n return className;\r\n return (value === \"yes\") ? className : \"\";\r\n }\r\n\r\n private noData: Observable<any> = of([]);\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\r\n }\r\n\r\n private getAlignmentRules(ruleName: string, alignment: string) {\r\n return {\r\n [`${ruleName}-start`]: alignment === 'start',\r\n [`${ruleName}-center`]: alignment === 'center',\r\n [`${ruleName}-end`]: alignment === 'end'\r\n };\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 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 private markForAutoFocus(formGroup: FormGroup) {\r\n (formGroup as any)['_autoFocus'] = true;\r\n }\r\n\r\n private requireAutoFocus(formGroup: FormGroup): boolean {\r\n return (formGroup as any)['_autoFocus'] === true;\r\n }\r\n\r\n\r\n}\r\n","<div [ngClass]=\"getFormAlignment()\">\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 [ngClass]=\"getComponentAlignment(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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n [ngClass]=\"getTextAlignment(component)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [ngClass]=\"getTextAlignment(component)\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 </div>\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [ngClass]=\"getTextAlignment(component)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 </div>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"></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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 displayfield -->\r\n <ng-container *ngSwitchCase=\"'displayfield'\">\r\n <div class=\"sirio-control\"\r\n [ngClass]=\"[getTextAlignment(component), getLightView(component) ]\"\r\n #displayfield\r\n [register]=\"component\"\r\n [componentRef]=\"displayfield\">\r\n <div *ngIf=\"component.label\" class=\"sirio-label\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n <button *ngIf=\"component.tooltip\"\r\n sirioTooltip\r\n [content]=\"component.tooltip\"\r\n [hasPopover]=\"true\"\r\n [attr.aria-label]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n class=\"sirio-label-popover fas fa-info-circle\"></button>\r\n </div>\r\n <div class=\"sirio-form-control data-display\" [ngClass]=\"component.fieldtype\">\r\n <ng-container *ngIf=\"component.fieldtype === 'checkbox'; else defaultTemplate\">\r\n <i *ngIf=\"evaluate(component.expression)\" class=\"fas fa-check\"></i>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <ng-container *ngIf=\"supportValues(component) && hasValues(component); else simpleTemplate\">\r\n <ng-container *ngIf=\"getValues(component) | async as values\">\r\n {{ toLabel(evaluate(component.expression), values) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #simpleTemplate>\r\n {{ evaluate(component.expression) }}\r\n </ng-template>\r\n </div>\r\n <p *ngIf=\"component.description\" class=\"sirio-helper-text\">\r\n {{ evaluateString(locale(component, 'description')) }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\">\r\n <ng-container [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\" \r\n [recursion]=\"component\"\r\n #recursion=\"recursion\"\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>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i }\"></ng-container>\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>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i }\"></ng-container>\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 table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <table class=\"dynamiclist-table\" [ngClass]=\"{ 'main': recursionLevel == 0 }\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ng-container *ngIf=\"getFormGroup(item) as formItem\">\r\n <ng-container *ngIf=\"{ itemsArray: recursion.getItemsArray(formItem) } as recursionData\">\r\n <tr>\r\n <td class=\"content-cell\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true && component.subtype !== 'table', 'group-outline-repeat': true }\">\r\n <div>\r\n <label *ngIf=\"component.label\">{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"formItem\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"command-cell\">\r\n <div>\r\n <ng-container *ngIf=\"recursionData.itemsArray\">\r\n <ng-container *ngTemplateOutlet=\"buttonsAdd; context: { formArray: recursionData.itemsArray, compact: true }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsReorder; context: { formArray: formArray, i: i, compact: true }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsRemove; context: { formArray: formArray, i: i, compact: true }\"></ng-container>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"recursionData.itemsArray && recursionData.itemsArray.length > 0\">\r\n <td colspan=\"2\" class=\"recursion-cell\">\r\n <div class=\"layout\">\r\n <div class=\"recursion-toggle\">\r\n <ngx-sirio-button [ngxSirioCollapseTrigger]=\"collapseTemplate\"\r\n [color]=\"null\" [icon]=\"collapse.isOpen ? 'fas fa-chevron-down' : 'fas fa-chevron-right' \" />\r\n </div>\r\n <div *ngIf=\"!collapse.isOpen\" class=\"recursion-title\">\r\n <div class=\"recursion-text\">\r\n <ng-container *ngIf=\"!collapse.isOpen\">\r\n {{ recursionData.itemsArray.length }} elementi presenti\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"recursion-content\">\r\n <ngx-sirio-collapse #collapseTemplate\r\n #collapse=\"collapseExtension\"\r\n collapseExtension\r\n [isOpen]=\"true\">\r\n <div *ngIf=\"collapse.isOpen\" style=\"margin-bottom: -11px;\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"recursion.getFormGroup(formItem)\"\r\n [readOnly]=\"readOnly\"\r\n [recursionLevel]=\"recursionLevel+1\"\r\n [rows]=\"recursion.getComponentRows()\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </ngx-sirio-collapse>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </table>\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>\r\n <label *ngIf=\"component.label\">{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove || component.allowReorder\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"buttonsReorder; context: { formArray: formArray, i: i }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsRemove; context: { formArray: formArray, i: i }\"></ng-container>\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=\"formArray.controls.length == 0\">\r\n <div class=\"dynamiclist-no-data\">{{ evaluateString(locale(component, 'noDataText')) || locale(Texts, 'NoData') }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"recursionLevel == 0\">\r\n <ng-container *ngTemplateOutlet=\"buttonsAdd; context: { formArray: formArray }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> \r\n <!-- #region templates -->\r\n <ng-template #btnMoveUp let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"locale(Texts, 'MoveUp') as upLabel\">\r\n <ngx-sirio-button (click)=\"moveUpItem(formArray, i)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"upLabel\"\r\n [title]=\"upLabel\"\r\n [color]=\"null\" icon=\"fas fa-arrow-up\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ upLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnMoveDown let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"locale(Texts, 'MoveDown') as downLabel\">\r\n <ngx-sirio-button (click)=\"moveDownItem(formArray, i)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"downLabel\"\r\n [title]=\"downLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-arrow-down\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ downLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnRemove let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) as removeLabel\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i, true)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"removeLabel\"\r\n [title]=\"removeLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-trash\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ removeLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnAdd let-formArray=\"formArray\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) as addLabel\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\"\r\n class=\"add-item\"\r\n [ariaLabel]=\"addLabel\"\r\n [title]=\"addLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-plus\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ addLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #buttonsReorder let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowReorder\">\r\n <ng-container *ngTemplateOutlet=\"btnMoveUp; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"btnMoveDown; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #buttonsRemove let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #buttonsAdd let-formArray=\"formArray\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <ng-container *ngTemplateOutlet=\"btnAdd; context: { formArray: formArray, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"getGroupOutline(component)\">\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 [form]=\"form\"\r\n [formGroup]=\"resolvePath(component.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></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 <ngx-sirio-tab-item [label]=\"evaluateString(locale(panel, 'label'))\"\r\n [icon]=\"evaluateString(panel.icon)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n #tabPanel\r\n tabItem\r\n [componentRef]=\"tab\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <div *ngIf=\"tabPanel.isActive\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"template?.rows\"\r\n [readOnly]=\"readOnly || evaluateBoolean(panel.readonly)\"\r\n [alignment]=\"template?.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\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 <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>\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"resolvePath(panel.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(panel.readonly)\"\r\n [rows]=\"template?.rows\"\r\n [alignment]=\"template?.verticalAlignment\"></app-dynamic-fields>\r\n </ng-container>\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 #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 [selectable]=\"evaluateBoolean(component.selectable)\"\r\n [multiSelect]=\"evaluateBoolean(component.multiSelect)\"\r\n (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [suppressActions]=\"evaluateBoolean(component.suppressActions)\"\r\n [columnDefs]=\"component.columns || evaluate(component.columnsExpression) || []\"\r\n [rowSource]=\"getRowSource(component)\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height]=\"evaluateHeight(component.height)\"\r\n [formGroup]=\"formGroup\"\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n <ng-container *ngIf=\"evaluateString(component.icon) as icon; else noIcon\">\r\n <span *ngIf=\"component.iconPosition!='right'\" [class]=\"icon\" aria-hidden=\"true\"></span>\r\n {{ evaluateString(locale(component, 'label')) }}\r\n <span *ngIf=\"component.iconPosition=='right'\" [class]=\"icon\" aria-hidden=\"true\"></span>\r\n </ng-container>\r\n <ng-template #noIcon>\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ng-template>\r\n </ngx-sirio-button>\r\n </div> \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 <!-- #region component -->\r\n <ng-container *ngSwitchCase=\"'component'\">\r\n <ng-container *ngIf=\"component.isInput; else noInputTemplate\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <app-dynamic-host [properties]=\"getFeelableProperties(component)\"\r\n [formGroup]=\"resolvePath(component.path)\"\r\n #componentHost\r\n [register]=\"component\"\r\n [componentRef]=\"componentHost\" />\r\n </ng-container>\r\n <ng-template #noInputTemplate>\r\n <app-dynamic-host [properties]=\"getFeelableProperties(component)\"\r\n #componentHost\r\n [register]=\"component\"\r\n [componentRef]=\"componentHost\" />\r\n </ng-template>\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</div>\r\n\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[formIndex]',\r\n standalone: true\r\n})\r\nexport class FormIndexDirective implements AfterContentInit {\r\n @Input() formIndex!: number;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef.formIndex = this.formIndex;\r\n }\r\n\r\n}\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 { FormBuilder, FormGroup, FormControlOptions, AbstractControl, FormArray } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { IEvaluatorProvider, ProgrammabilityService } from '../services/programmability.service';\r\nimport { ValidationService, ValidationCollection } from '../services/validation.service';\r\nimport { DisableService, DisableCollection } from '../services/disable.service';\r\nimport { StatusService, StatusCollection } from '../services/status.service';\r\nimport { EventService, EventCollection } from '../services/event.service';\r\nimport { ComputeService, ComputeCollection } from '../services/compute.service';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { FormService } from '../services/form.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, NgxSirioEvent\r\n} from 'ngx-sirio-lib';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { FormIndexDirective } from '../directives/formIndex.directive';\r\nimport { ToBoundArrows } from '../utils/bound';\r\n\r\nimport { Control } from '../controls/control'; \r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\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, FormIndexDirective\r\n , SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , DynamicFieldsComponent],\r\n providers: [\r\n ProgrammabilityService\r\n , ValidationService\r\n , DisableService\r\n , ComputeService\r\n , StatusService\r\n , EventService\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, IEvaluatorProvider {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() readOnly: boolean | null = null;\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() 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 validationService: ValidationService\r\n , private disableService: DisableService\r\n , private computeService: ComputeService\r\n , private statusService: StatusService\r\n , private eventService: EventService\r\n , private registerService: RegisterService\r\n , private languageService: LanguageService\r\n , private metadata: MetadataService\r\n , private formService: FormService\r\n , private dialog: DialogService\r\n , private injector: Injector\r\n ) {\r\n this.programmability.addEvaluatorProviders(this);\r\n }\r\n \r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['schema']) {\r\n this.onChangeSchema();\r\n }\r\n\r\n if (changes['value'] && !this.isEmittedValue(this.value)) {\r\n this.onChangeValue();\r\n }\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 if (this.isDisabled(value) || this.isInactive(value))\r\n return;\r\n this._activeNav = value;\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\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.isInactive(index)) {\r\n return \"inactive\";\r\n }\r\n else if (this.progressStatus && !current) {\r\n const errors = this.countInvalids(form);\r\n return errors > 0 ? \"error\" : \"success\";\r\n }\r\n else {\r\n return \"active\";\r\n } \r\n }\r\n\r\n countInvalids(form: any): number {\r\n return this.statusService.countInvalid(form);\r\n }\r\n\r\n activateForm(event: NgxSirioEvent<SirioStepperProgressBarComponent>) {\r\n const formIndex = (event.component as any).formIndex;\r\n if (typeof formIndex === 'number') {\r\n this.activeNav = formIndex;\r\n }\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 };\r\n this.dialog.openDialog(formSchema, options);\r\n } \r\n }\r\n\r\n isChanged(): boolean {\r\n return this.formGroup.dirty;\r\n }\r\n\r\n isValid(): boolean {\r\n return this.formGroup.valid;\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'canPrevious',\r\n 'goPrevious',\r\n 'canNext',\r\n 'goNext',\r\n 'activeNav'\r\n ]);\r\n }\r\n\r\n private valueChangesSubscription: Subscription | null = null;\r\n \r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private defaultValue: any = { };\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\r\n }\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 this.formService.patch(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 try {\r\n this.validationService.suppress = true;\r\n this.suspendValueChanges = true;\r\n\r\n const emitEvent = true;\r\n this.formGroup.reset(this.defaultValue, { emitEvent });\r\n this.clearFormArrays(this.formGroup, emitEvent);\r\n this.formService.patch(this.formGroup, this.value, {\r\n emitEvent,\r\n strict: this.strict\r\n });\r\n }\r\n finally {\r\n this.validationService.suppress = false;\r\n this.formService.updateAllValueAndValidity(this.formGroup, true);\r\n this.suspendValueChanges = false;\r\n this.emitValueChange();\r\n }\r\n }\r\n\r\n private suspendValueChanges: boolean = false;\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n if (this.suspendValueChanges)\r\n return;\r\n this.emitValueChange(); \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\r\n private emittedValues = new WeakMap<object, true>();\r\n\r\n private isEmittedValue(value: any): boolean {\r\n if (typeof value === 'object' && value !== null && this.emittedValues.has(value)) {\r\n this.emittedValues.delete(value);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n private emitValueChange(): void {\r\n const newValue = this.formGroup.value;\r\n this.emittedValues.set(newValue, true);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n refresh() {\r\n try {\r\n this.suspendValueChanges = true;\r\n this.formService.patch(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n } finally {\r\n this.suspendValueChanges = false;\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) && !this.isInactive(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) && !this.isInactive(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 isInactive(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.inactive) ?? 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, emitEvent: boolean): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear({ emitEvent });\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, emitEvent);\r\n });\r\n }\r\n }\r\n\r\n private buildForm() {\r\n const validationCollection = this.validationService.createCollection();\r\n const disableCollection = this.disableService.createCollection();\r\n const eventCollection = this.eventService.createCollection();\r\n const computeCollection = this.computeService.createCollection();\r\n this.forms.forEach((form: any) => {\r\n const statusCollection = this.statusService.createCollection();\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n if (this.hasPath(form.path)) {\r\n this.disableService.addToCollection(disableCollection, currentGroup, this.formGroup, form);\r\n }\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\r\n });\r\n this.statusService.setupCollection(form, statusCollection);\r\n });\r\n this.disableService.setupCollection(disableCollection);\r\n this.computeService.setupCollection(computeCollection);\r\n this.validationService.setupCollection(validationCollection);\r\n this.eventService.setupCollection(eventCollection);\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder\r\n , formGroup: FormGroup\r\n , components: Array<any>\r\n , disableCollection: DisableCollection\r\n , computeCollection: ComputeCollection\r\n , validationCollection: ValidationCollection\r\n , statusCollection: StatusCollection\r\n , eventCollection: EventCollection) {\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 if (currentGroup.contains(component.key)) {\r\n this.statusService.addToCollection(statusCollection, currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else {\r\n let defaultValue = this.getDefaultValue(component);\r\n const options: FormControlOptions = {\r\n updateOn: this.getUpdateOn(component) || \"change\",\r\n nonNullable: (defaultValue !== null && defaultValue !== undefined)\r\n };\r\n const control = formBuilder.control(defaultValue, options); \r\n currentGroup.addControl(component.key, control);\r\n this.statusService.addToCollection(statusCollection, control);\r\n this.disableService.addToCollection(disableCollection, control, formGroup, component);\r\n this.computeService.addToCollection(computeCollection, control, formGroup, component);\r\n this.validationService.addToCollection(validationCollection, control, currentGroup, component);\r\n this.eventService.addToCollection(eventCollection, control, currentGroup, component);\r\n }\r\n }\r\n else if (this.isContainerComponent(component)) {\r\n const containers = this.getContainers(component);\r\n containers?.forEach((container) => {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, container.path);\r\n if (this.hasPath(container.path)) {\r\n this.disableService.addToCollection(disableCollection, currentGroup, formGroup, container);\r\n }\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\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 const formArray = this.createFormArray(formBuilder, currentGroup, itemComponent);\r\n this.statusService.addToCollection(statusCollection, formArray);\r\n }\r\n }\r\n else if (this.isComponentWithInput(component)) {\r\n const currentGroup = this.applyPath(this.fb, formGroup, component.path);\r\n if (currentGroup.contains(component.key)) {\r\n this.statusService.addToCollection(statusCollection, currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else {\r\n const control = formBuilder.control(null);\r\n currentGroup.addControl(component.key, control);\r\n this.statusService.addToCollection(statusCollection, control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder\r\n , formGroup: FormGroup\r\n , 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 (target: FormArray | null): FormGroup {\r\n const statusCollection = formComponent.statusService.createCollection();\r\n const validationCollection = formComponent.validationService.createCollection();\r\n const eventCollection = formComponent.eventService.createCollection();\r\n const disableCollection = formComponent.disableService.createCollection();\r\n const computeCollection = formComponent.computeService.createCollection();\r\n let newGroup = formBuilder.group({});\r\n target?.push(newGroup);\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\r\n });\r\n // ignore statusCollection\r\n formComponent.disableService.setupCollection(disableCollection);\r\n formComponent.computeService.setupCollection(computeCollection);\r\n formComponent.validationService.setupCollection(validationCollection);\r\n formComponent.eventService.setupCollection(eventCollection);\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 return createItem(this);\r\n };\r\n\r\n const createNewArray = function (this: FormArray) {\r\n const newArray = new FormArray([]);\r\n prepareArray(newArray);\r\n return newArray;\r\n }\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.createItem = createItem;\r\n array.resize = resize;\r\n array.createNewArray = createNewArray;\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 // used externally: addItem, resize\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: (target: FormArray | null) => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n createItem(newArray); \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 hasPath(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n\r\n private applyPath(formBuilder: FormBuilder, formGroup: FormGroup, path: string) {\r\n if (!this.hasPath(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 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 case \"expression\":\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 isComponentWithInput(component: any): boolean {\r\n return component.type === \"component\"\r\n && component.isInput === true\r\n && component.key;\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, disabled: any }[] {\r\n if (component.type === 'group') {\r\n return [{\r\n path: component.path,\r\n rows: component.rows,\r\n disabled: component.disabled\r\n }];\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 disabled: panel.disabled\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 ?? false) 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","<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)\"\r\n [hasDropdown]=\"true\"\r\n [dropDownLabel]=\"locale(Texts, 'Show')\">\r\n <ng-container *ngFor=\"let form of forms, let formIndex = index\"> \r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ng-container *ngIf=\"getFormStatus(form, formIndex) as status\">\r\n <ngx-sirio-stepper-progress-item [hasNavigation]=\"status !== 'inactive'\"\r\n [status]=\"status\"\r\n [label]=\"evaluateTemplate(locale(form, 'title'))\"\r\n #progressItem\r\n [componentRef]=\"progressItem\"\r\n [formIndex]=\"formIndex\"/>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ngx-sirio-stepper-progress-bar>\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 formIndex = index\">\r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ng-container *ngIf=\"getFormStatus(form, formIndex) as status\">\r\n <ng-container *ngIf=\"{ count: countInvalids(form) } as errors\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == formIndex\"\r\n (click)=\"activeNav = formIndex\"\r\n [disabledState]=\"status === 'inactive'\"\r\n (keydown.enter)=\"activeNav = formIndex\"\r\n [withTag]=\"errors.count > 0\"\r\n tagType=\"danger\"\r\n [tagValue]=\"errors.count\"\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 </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 [form]=\"this\"\r\n [formGroup]=\"getFormGroup(form.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(form.readonly)\"\r\n [rows]=\"form.rows\"\r\n [alignment]=\"form.verticalAlignment\"></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</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","export function syncronize(target: any, source: any): any {\r\n // If source is a primitive or null/undefined → replace directly\r\n if (source === null || source === undefined || typeof source !== \"object\") {\r\n return source;\r\n }\r\n\r\n // If target is null/undefined or a primitive → create a new container (array/object)\r\n if (target === null || target === undefined || typeof target !== \"object\") {\r\n target = Array.isArray(source) ? [] : {};\r\n }\r\n\r\n // Handle arrays\r\n if (Array.isArray(source)) {\r\n if (!Array.isArray(target)) {\r\n target = [];\r\n }\r\n\r\n target.length = source.length;\r\n\r\n for (let i = 0; i < source.length; i++) {\r\n target[i] = syncronize(target[i], source[i]);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n // Handle objects\r\n\r\n // Remove missing keys\r\n for (const key of Object.keys(target)) {\r\n if (!(key in source)) {\r\n delete target[key];\r\n }\r\n }\r\n\r\n // Add or update keys\r\n for (const [key, value] of Object.entries(source)) {\r\n target[key] = syncronize(target[key], value);\r\n }\r\n\r\n return target;\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","import { Injectable } from '@angular/core';\r\nimport { ConfirmationController } from '@wemake4u/interact';\r\nimport { DialogOptions, DialogService } from '../services/dialog.service';\r\nimport { Observable } from 'rxjs';\r\n \r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultConfirmationController implements ConfirmationController {\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n confirm(message?: string, title?: string): Observable<boolean> {\r\n\r\n return new Observable<boolean>(observer => {\r\n const options: DialogOptions = {\r\n title: title,\r\n type: 'info',\r\n onResult: result => {\r\n if (result.action === 'Yes') {\r\n observer.next(true);\r\n } else {\r\n observer.next(false);\r\n }\r\n observer.complete();\r\n }\r\n };\r\n\r\n this.dialogService.confirm(message ?? \"\", options); \r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NotificationController, NotifyTypes } from '@wemake4u/interact';\r\nimport { ToastService } from '../services/toast.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultNotificationController implements NotificationController {\r\n\r\n constructor(private toast: ToastService) {\r\n }\r\n\r\n notify(type: NotifyTypes, message: string, title?: string): void {\r\n\r\n const delay = 5000;\r\n\r\n switch (type) {\r\n case 'info': this.toast.notifyInfo(message, title, delay); break;\r\n case 'warning': this.toast.notifyWarning(message, title, delay); break;\r\n case 'error': this.toast.notifyError(message, title, delay); break;\r\n case 'success': this.toast.notifySuccess(message, title, delay); break;\r\n default: break;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PromptController } from '@wemake4u/interact';\r\nimport { DialogOptions, DialogService } from '../services/dialog.service';\r\nimport { Observable } from 'rxjs';\r\n \r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultPromptController implements PromptController {\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n prompt(message?: string, defaultValue?: string, title?: string): Observable<string | null> {\r\n return new Observable<string | null>(observer => {\r\n const options: DialogOptions = {\r\n title: title,\r\n type: 'info',\r\n onResult: result => {\r\n if (result.action === 'OK') {\r\n observer.next(result.value.input);\r\n }\r\n observer.complete();\r\n }\r\n };\r\n\r\n this.dialogService.prompt(message ?? \"Prompt\", defaultValue, options);\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["StatusDependency","evaluateTemplate","evaluate","Texts","it","en","de","fr","es","pt","i1","i1.MetadataService","i2.DialogService","FormControl","filter","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FormatterService","i6.FunctionService","i7.FormService","i8.GlobalService","i9.RegisterService","i10.ScopeService","i2.ProgrammabilityService","i1.ProgrammabilityService","i2.FormService","i2","i2.GlobalService","i1.FormatterService","i3.ProgrammabilityService","i4.WeakService","map","i1.FormService","debounceTime","i3.CacheContextService","take","catchError","i2.GridService","i4","takeUntil","i1.RegisterService","tap","i1.GlobalService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.WeakService","i6.RegisterService","i7.MetadataService","i8","i9.GlobalService","i10.FormService","i11.GridService","i12.ChartService","i13.DialogService","i14.AutoFocusService","i16","i3.ValidationService","i4.DisableService","i5.ComputeService","i6.StatusService","i7.EventService","i8.RegisterService","i9","i10.MetadataService","i11.FormService","i12.DialogService","i13","i1.DialogService","i1.ToastService"],"mappings":"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"}
1
+ {"version":3,"file":"wemake4u-form-player-se.mjs","sources":["../../../projects/ngx-sirio/src/lib/utils/proxy.ts","../../../projects/ngx-sirio/src/lib/common/path.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/utils/bound.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/formatter.service.ts","../../../projects/ngx-sirio/src/lib/utils/uuid.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/services/form.service.ts","../../../projects/ngx-sirio/src/lib/services/global.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/feelable.ts","../../../projects/ngx-sirio/src/lib/utils/CallbackRegistry.ts","../../../projects/ngx-sirio/src/lib/services/validation.service.ts","../../../projects/ngx-sirio/src/lib/services/disable.service.ts","../../../projects/ngx-sirio/src/lib/services/status.service.ts","../../../projects/ngx-sirio/src/lib/services/event.service.ts","../../../projects/ngx-sirio/src/lib/services/compute.service.ts","../../../projects/ngx-sirio/src/lib/utils/groupByRow.ts","../../../projects/ngx-sirio/src/lib/components/objectURLRenderer/objectURLRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/objectURLRenderer/objectURLRenderer.component.html","../../../projects/ngx-sirio/src/lib/components/deleteRowRenderer/deleteRowRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/deleteRowRenderer/deleteRowRenderer.component.html","../../../projects/ngx-sirio/src/lib/components/actionsCellRenderer/actionsCellRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/actionsCellRenderer/actionsCellRenderer.component.html","../../../projects/ngx-sirio/src/lib/common/symbols.ts","../../../projects/ngx-sirio/src/lib/common/record.ts","../../../projects/ngx-sirio/src/lib/components/setFilter/setFilter.component.ts","../../../projects/ngx-sirio/src/lib/components/setFilter/setfilter.component.html","../../../projects/ngx-sirio/src/lib/components/hostCellRenderer/hostCellRenderer.component.ts","../../../projects/ngx-sirio/src/lib/components/hostCellRenderer/hostCellRenderer.component.html","../../../projects/ngx-sirio/src/lib/utils/focusable.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/validationpatch.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapsepatch.directive.ts","../../../projects/ngx-sirio/src/lib/directives/adorner.directive.ts","../../../projects/ngx-sirio/src/lib/directives/readonly.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/services/cache.service.ts","../../../projects/ngx-sirio/src/lib/directives/recursion.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/displayfield.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/valuesync.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabitem.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/utils/date.ts","../../../projects/ngx-sirio/src/lib/directives/datetime.directive.ts","../../../projects/ngx-sirio/src/lib/shared/template-wrapper/template-wrapper.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.html","../../../projects/ngx-sirio/src/lib/utils/isMeaningful.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/services/autofocus.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/directives/formIndex.directive.ts","../../../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/utils/syncronize.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/lib/interact/confirmation.ts","../../../projects/ngx-sirio/src/lib/interact/notification.ts","../../../projects/ngx-sirio/src/lib/interact/prompt.ts","../../../projects/ngx-sirio/src/wemake4u-form-player-se.ts"],"sourcesContent":["export function bindFunction(fn: Function, context: any) {\r\n if (fn.bind && context && fn.prototype !== undefined) {\r\n return fn.bind(context);\r\n }\r\n return (...args: any[]) => fn.apply(context, args);\r\n}\r\n\r\nexport function toProxy(instance: any, seen = new WeakMap()): any { \r\n if (instance === null || typeof instance !== 'object') return instance;\r\n if (seen.has(instance)) return seen.get(instance);\r\n\r\n const proxy = new Proxy(instance, {\r\n get: (target: any, property: PropertyKey, receiver: any) => {\r\n let value: any;\r\n try {\r\n value = Reflect.get(target, property, receiver);\r\n } catch {\r\n return undefined;\r\n }\r\n\r\n if (typeof property === 'symbol' || property === 'toJSON') return value;\r\n\r\n if (typeof value === 'function') {\r\n return bindFunction(value, instance);\r\n }\r\n\r\n if (typeof value === 'object' && value !== null) {\r\n if (value instanceof Date || value instanceof RegExp || value instanceof Map || value instanceof Set) {\r\n return value;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n if (seen.has(value)) return seen.get(value);\r\n const arrayProxy = new Proxy(value, {\r\n get(arrTarget, index, arrReceiver) {\r\n const item = Reflect.get(arrTarget, index, arrReceiver);\r\n return typeof item === 'object' && item !== null\r\n ? toProxy(item, seen)\r\n : item;\r\n }\r\n });\r\n seen.set(value, arrayProxy);\r\n return arrayProxy;\r\n }\r\n\r\n return toProxy(value, seen);\r\n }\r\n\r\n return value;\r\n },\r\n has(target, key) {\r\n return key in target;\r\n }\r\n });\r\n\r\n seen.set(instance, proxy);\r\n return proxy;\r\n}\r\n","export type Path = string | number | Array<string | number>;\r\n\r\nexport function normalizePath(path: Path): (string | number)[]\r\n{\r\n if (typeof path === 'string') {\r\n return path.split('.');\r\n }\r\n if (Array.isArray(path)) {\r\n return path.reduce<(string | number)[]>((acc, part) => {\r\n if (typeof part === 'string') {\r\n acc.push(...part.split('.'));\r\n } else {\r\n acc.push(part);\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n return [path];\r\n};\r\n\r\nexport function matchPath(pathA: Path, pathB: Path): boolean {\r\n\r\n const a = normalizePath(pathA);\r\n const b = normalizePath(pathB);\r\n\r\n const minLen = Math.min(a.length, b.length);\r\n\r\n for (let i = 0; i < minLen; i++) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function stringifyPath(path: Path): string {\r\n if (Array.isArray(path)) {\r\n return path.join(\".\");\r\n }\r\n return String(path);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { buildSimpleTree, parser, evaluate as evaluateTemplate } from 'feelers';\r\nimport { unaryTest, evaluate, parseExpression } from 'feelin';\r\n\r\nconst PathExpression = \"PathExpression\";\r\nconst VariableName = \"VariableName\";\r\nconst FunctionInvocation = \"FunctionInvocation\";\r\nconst PositionalParameters = \"PositionalParameters\";\r\nconst NamedParameters = \"NamedParameters\";\r\nconst ParameterName = \"ParameterName\";\r\nconst StringLiteral = \"StringLiteral\";\r\nconst NumericLiteral = \"NumericLiteral\";\r\nconst List = \"List\";\r\nconst StatusDependency = \"$status\";\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\r\n const nodes: NodeItem[] = [{ type: \"root\", text: expression, children: [], parent: null }];\r\n\r\n const peek = () => {\r\n return nodes.length > 0 ? nodes[nodes.length - 1] : null;\r\n };\r\n\r\n const isAllowedPathExpression = (node: NodeItem): boolean => {\r\n if (node.type === VariableName) {\r\n return true;\r\n }\r\n if (node.type !== PathExpression || !Array.isArray(node.children)) {\r\n return false;\r\n }\r\n return node.children.every(isAllowedPathExpression);\r\n };\r\n\r\n const getPathExpression = (item: NodeItem): string[] => {\r\n if (item.type === VariableName) {\r\n return [item.text];\r\n }\r\n if (item.type === PathExpression) {\r\n return item.children.flatMap(getPathExpression);\r\n }\r\n return [];\r\n };\r\n\r\n parseExpression(expression, context).iterate({\r\n enter: (node: any) => {\r\n const type = node.name;\r\n const text = expression.substring(node.from, node.to);\r\n const parent = peek();\r\n const item: NodeItem = { type, text, children: [], parent: parent };\r\n if (parent) {\r\n parent.children.push(item);\r\n }\r\n nodes.push(item);\r\n },\r\n leave: (node: any) => {\r\n if (nodes.length > 0) {\r\n const item = nodes.pop();\r\n if (!item) return;\r\n const parent = peek();\r\n\r\n if (item.type === PathExpression) {\r\n const ignore = (parent?.type === FunctionInvocation\r\n || parent?.type === PathExpression\r\n || item.children.length == 0\r\n || !isAllowedPathExpression(item));\r\n if (!ignore) {\r\n const pathExpression = getPathExpression(item);\r\n if (addSet(pathExpression.join('.'))) {\r\n dependencies.push(pathExpression);\r\n }\r\n }\r\n }\r\n else if (item.type === VariableName) {\r\n const ignore = (parent?.type === FunctionInvocation\r\n || parent?.type === PathExpression);\r\n if (!ignore) {\r\n const pathExpression = item.text;\r\n if (addSet(pathExpression)) {\r\n dependencies.push(pathExpression);\r\n } \r\n }\r\n }\r\n else if (item.type === FunctionInvocation) {\r\n const functionName = this.getFunctionName(item, getPathExpression);\r\n if (functionName == \"fn.status\") {\r\n const statusDeps = this.getStatusDependencies(item);\r\n if (statusDeps && addSet(statusDeps.join('.'))) {\r\n dependencies.push(statusDeps);\r\n } \r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return dependencies;\r\n }\r\n\r\n getTemplateDependencies(expression: string, context: Record<string, any> = {}): (string | string[])[] {\r\n if (!expression) return [];\r\n\r\n const simpleTree = buildSimpleTree(parser.parse(expression), expression);\r\n\r\n const result: string[] = [];\r\n\r\n function traverse(nodeArray: any[]) {\r\n for (const node of nodeArray) {\r\n if (node.name === 'FeelBlock' && node.content) {\r\n result.push(node.content);\r\n }\r\n if (node.children && node.children.length > 0) {\r\n traverse(node.children);\r\n }\r\n }\r\n }\r\n\r\n traverse([simpleTree]);\r\n\r\n const arrayExpression = `[ ${result.join(', ')} ]`;\r\n\r\n return this.getDependencies(arrayExpression, context);\r\n }\r\n\r\n //#region Private Members\r\n\r\n private findAncestor(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n let current = node.parent;\r\n while (current !== null) {\r\n if (predicate(current)) {\r\n return current;\r\n }\r\n current = current.parent;\r\n }\r\n return null;\r\n }\r\n\r\n private findDescendant(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n for (const child of node.children) {\r\n if (predicate(child)) {\r\n return child;\r\n }\r\n const found = this.findDescendant(child, predicate);\r\n if (found !== null) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private findChild(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem | null {\r\n for (const child of node.children) {\r\n if (predicate(child)) {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private findChildren(node: NodeItem, predicate: (child: NodeItem) => boolean): NodeItem[] {\r\n return node.children.filter(predicate);\r\n }\r\n\r\n private getFunctionName(node: NodeItem, pathResolver: (item: NodeItem) => string[]): string | null {\r\n\r\n const pathExpression = this.findChild(node, (n) => n.type === PathExpression);\r\n if (pathExpression) {\r\n return pathResolver(pathExpression).join('.');\r\n }\r\n\r\n const variableName = this.findChild(node, (n) => n.type === VariableName);\r\n if (variableName) {\r\n return pathResolver(variableName).join('.');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getStatusDependencies(node: NodeItem): string[] | null {\r\n if (node.type != FunctionInvocation) return [];\r\n\r\n let pathParameter: NodeItem | null = null;\r\n\r\n const namedParameters = this.findChild(node, (n) => n.type === NamedParameters);\r\n\r\n if (namedParameters) {\r\n const pathName = this.findDescendant(namedParameters, (n) => n.type == ParameterName && n.text === \"path\");\r\n const namedParameter = pathName?.parent;\r\n if (namedParameter && namedParameter.children.length > 1) {\r\n pathParameter = namedParameter.children[1];\r\n } \r\n }\r\n\r\n const positionalParameters = this.findChild(node, (n) => n.type === PositionalParameters);\r\n\r\n if (positionalParameters) {\r\n pathParameter = positionalParameters.children[0];\r\n }\r\n\r\n if (pathParameter) {\r\n\r\n const getPathExpression = (item: NodeItem): string[] => {\r\n if (item.type === StringLiteral) {\r\n return this.splitQuoted(item.text);\r\n }\r\n else if (item.type === NumericLiteral) {\r\n return [item.text];\r\n }\r\n else if (item.type === List) {\r\n const items = this.findChildren(item, (n) => n.type !== \"[\" && n.type !== \"]\");\r\n if (items.every(n => n.type === StringLiteral || n.type === NumericLiteral)) {\r\n return items.flatMap(getPathExpression);\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const path = getPathExpression(pathParameter);\r\n if (path.length > 0) \r\n return [StatusDependency, ...path];\r\n }\r\n \r\n return null;\r\n }\r\n\r\n private splitQuoted(input: string, separator: string = '.'): string[] {\r\n input = (input ?? \"\").slice(1, -1)\r\n return input\r\n .split(separator)\r\n .map(part => part.trim())\r\n .filter(part => part.length > 0);\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\ninterface NodeItem {\r\n type: string;\r\n text: string;\r\n children: NodeItem[];\r\n parent: NodeItem | null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isObservable, take } 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 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 invalidateAll(source: object) {\r\n if (this.cache.has(source)) {\r\n this.cache.delete(source);\r\n }\r\n }\r\n}\r\n","import { bindFunction } from '../utils/proxy';\r\n\r\nexport 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] = bindFunction(original, instance);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/bound';\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, title?: string, delay: number = 2000) {\r\n this.notify(\"info\", message, title, delay);\r\n }\r\n\r\n notifySuccess(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"success\", message, title, delay);\r\n }\r\n\r\n notifyWarning(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"warning\", message, title, delay);\r\n }\r\n\r\n notifyError(message: string, title?: string, delay: number = 2000) {\r\n this.notify(\"danger\", message, title, 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(type: ToastTypes, message: string, title?: string, delay: number = 2000) {\r\n this.sirioToast.openToast({\r\n delay: delay,\r\n text: message,\r\n type: type,\r\n title: title\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 host.onOutsideClick = () => { }\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 LoadingFailed: \"Si è verificato un errore durante il caricamento dei dati\",\r\n ConfirmDelete: \"Confermi l’eliminazione ?\\r\\nL’operazione non può essere annullata\",\r\n MoveUp: \"Sposta Sù\",\r\n MoveDown: \"Sposta Giù\",\r\n NoData: \"Nessun dato da mostrare\",\r\n RequiredField: \"Campo obbligatorio\"\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 LoadingFailed: \"An error occurred while loading data\",\r\n ConfirmDelete: \"Do you confirm the deletion?\\r\\nThis action cannot be undone\",\r\n MoveUp: \"Move Up\",\r\n MoveDown: \"Move Down\",\r\n NoData: \"No data to display\",\r\n RequiredField: \"Required field\",\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 LoadingFailed: \"Beim Laden der Daten ist ein Fehler aufgetreten\",\r\n ConfirmDelete: \"Möchten Sie das Löschen bestätigen?\\r\\nDieser Vorgang kann nicht rückgängig gemacht werden\",\r\n MoveUp: \"Nach oben verschieben\",\r\n MoveDown: \"Nach unten verschieben\",\r\n NoData: \"Keine Daten zum Anzeigen\",\r\n RequiredField: \"Pflichtfeld\"\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 LoadingFailed: \"Erreur lors du chargement des données\",\r\n ConfirmDelete: \"Confirmez-vous la suppression ?\\r\\nCette action ne peut pas être annulée\",\r\n MoveUp: \"Déplacer vers le haut\",\r\n MoveDown: \"Déplacer vers le bas\",\r\n NoData: \"Aucune donnée à afficher\",\r\n RequiredField: \"Champ obligatoire\"\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 LoadingFailed: \"Error al cargar los datos\",\r\n ConfirmDelete: \"¿Confirma la eliminación?\\r\\nEsta acción no se puede deshacer\",\r\n MoveUp: \"Mover arriba\",\r\n MoveDown: \"Mover abajo\",\r\n NoData: \"No hay datos para mostrar\",\r\n RequiredField: \"Campo obligatorio\"\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 LoadingFailed: \"Erro ao carregar os dados\",\r\n ConfirmDelete: \"Confirma a eliminação?\\r\\nEsta ação não pode ser desfeita\",\r\n MoveUp: \"Mover para cima\",\r\n MoveDown: \"Mover para baixo\",\r\n NoData: \"Nenhum dado para exibir\",\r\n RequiredField: \"Campo obrigatório\"\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 { LanguageService } from '@wemake4u/interact';\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 constructor(private languageService: LanguageService) {\r\n super();\r\n }\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('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.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 get language(): string {\r\n return this.languageService.getLanguage();\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/bound';\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 show(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n type: \"info\",\r\n buttons: 'OK',\r\n ...options,\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 prompt(text: string, defaultValue?: string, options?: DialogOptions) {\r\n const formSchema = this.createInputSchema(text, defaultValue);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OKCancel',\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 'show'\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 private createInputSchema(label: string, defaultValue?: string) {\r\n return {\r\n \"forms\": [\r\n {\r\n \"components\": [\r\n {\r\n \"label\": label,\r\n \"defaultValue\": defaultValue,\r\n \"type\": \"textfield\",\r\n \"layout\": {\r\n \"row\": \"Row_1wxz5gd\",\r\n \"columns\": null\r\n },\r\n \"id\": \"Field_1tau53x\",\r\n \"key\": \"input\"\r\n }\r\n ],\r\n \"type\": \"default\",\r\n \"id\": \"Form_1ontwnx\",\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 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\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/bound';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatterService implements IEvaluatorProvider {\r\n\r\n constructor() { }\r\n\r\n formatDate(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const formatOptions: Intl.DateTimeFormatOptions = {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n ...options\r\n };\r\n\r\n return new Intl.DateTimeFormat(locale, formatOptions).format(date);\r\n }\r\n\r\n formatTime(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const formatOptions: Intl.DateTimeFormatOptions = {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n ...options\r\n };\r\n\r\n return new Intl.DateTimeFormat(locale, formatOptions).format(date);\r\n }\r\n\r\n formatDateTime(isoDate: string | null | undefined,\r\n options?: Intl.DateTimeFormatOptions,\r\n locale: string = 'it-IT') {\r\n if (!isoDate) return '';\r\n\r\n const date = new Date(isoDate);\r\n if (isNaN(date.getTime())) return '';\r\n\r\n const datePart = new Intl.DateTimeFormat(locale, {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n ...options\r\n }).format(date);\r\n\r\n const timePart = new Intl.DateTimeFormat(locale, {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n ...options\r\n }).format(date);\r\n\r\n return `${datePart} ${timePart}`;\r\n }\r\n\r\n formatCurrency(\r\n value: number,\r\n currency: string = 'EUR',\r\n locale: string = 'it-IT'\r\n ): string {\r\n if (isNaN(value)) return '';\r\n\r\n return new Intl.NumberFormat(locale, {\r\n style: 'currency',\r\n currency: currency,\r\n currencyDisplay: 'symbol' // oppure: 'code' | 'name'\r\n }).format(value);\r\n }\r\n\r\n formatNumber(\r\n value: number,\r\n decimals: number = 2,\r\n locale: string = 'it-IT' \r\n ): string {\r\n if (isNaN(value)) return '';\r\n\r\n return new Intl.NumberFormat(locale, {\r\n style: 'decimal',\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals\r\n }).format(value);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'formatDate',\r\n 'formatTime',\r\n 'formatDateTime',\r\n 'formatCurrency',\r\n 'formatNumber'\r\n ]);\r\n }\r\n \r\n}\r\n","export function generateGuid(): string {\r\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\r\n return crypto.randomUUID();\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}\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 private schema: any = { forms: [] };\r\n\r\n private forms: any[] = [];\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/bound';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { Observable, take } from 'rxjs';\r\nimport { generateGuid } from '../utils/uuid';\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 if (typeof func?.invoke === 'function') {\r\n return (...args: any) => func.invoke(args);\r\n }\r\n else {\r\n return () => { };\r\n }\r\n }\r\n\r\n executeOnce<T>(observable: Observable<T>, callback: any): void {\r\n if (!observable) return;\r\n observable\r\n .pipe(take(1))\r\n .subscribe({\r\n next: this.invokable(callback) as (value: T) => void\r\n });\r\n }\r\n\r\n openForm(template: string | object, options: DialogOptions)\r\n {\r\n let formSchema: any;\r\n\r\n if (typeof template === 'string') {\r\n formSchema = this.metadata.getTemplateByName(template);\r\n } else {\r\n formSchema = template;\r\n }\r\n\r\n if (formSchema) {\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n injector: this.injector\r\n }\r\n\r\n this.dialog.openDialog(formSchema, formOptions);\r\n }\r\n }\r\n\r\n newGuid(): string {\r\n return generateGuid();\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\",\r\n \"executeOnce\",\r\n \"newGuid\"\r\n ]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from './programmability.service';\r\nimport { AbstractControl, FormGroup, FormArray, FormControl, FormControlStatus } from '@angular/forms';\r\nimport { Path, normalizePath } from '../common/path';\r\nimport { filter, interval, map, Observable, of, take } from 'rxjs';\r\n\r\ntype ControlType = 'array' | 'group' | 'control';\r\n\r\nexport interface PatchOptions {\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\r\nexport interface PathOptions {\r\n emitError?: boolean;\r\n emitWarn?: boolean;\r\n create?: boolean;\r\n expected?: ControlType;\r\n breakOnArray?: boolean;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService implements IEvaluatorProvider {\r\n\r\n set(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n\r\n const currentControl = this.applyPath(control, path, pathOptions ?? { create: true });\r\n\r\n if (!currentControl)\r\n return false;\r\n\r\n this.patch(currentControl, value, patchOptions);\r\n\r\n return true;\r\n }\r\n\r\n get(control: AbstractControl, path: Path, pathOptions?: PathOptions): any {\r\n const result = this.getControl(control, path, pathOptions);\r\n return result?.value;\r\n }\r\n\r\n getControl(control: AbstractControl, path: Path, pathOptions?: PathOptions): AbstractControl | undefined {\r\n return this.applyPath(control, path, pathOptions);\r\n }\r\n\r\n prepend(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, 0, value, patchOptions);\r\n }\r\n return false;\r\n }\r\n\r\n append(control: AbstractControl, path: Path, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, formArray.length, value, patchOptions); \r\n }\r\n return false;\r\n }\r\n\r\n insert(control: AbstractControl, path: Path, index: number, value: any, pathOptions?: PathOptions, patchOptions?: PatchOptions): boolean {\r\n const formArray = this.applyPath(control, path, pathOptions ?? { expected: \"array\", create: true });\r\n if (formArray instanceof FormArray) {\r\n return this.insertIntoArray(formArray, index, value, patchOptions); \r\n }\r\n return false;\r\n }\r\n\r\n remove(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n return this.removeFromArray(formArray, index);\r\n }\r\n return false;\r\n }\r\n\r\n moveUp(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n if (index <= 0 || index >= formArray.length) return false;\r\n\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index - 1, control);\r\n\r\n return true;\r\n } \r\n return false;\r\n }\r\n\r\n moveDown(control: AbstractControl, path: Path, index: number): boolean {\r\n const formArray = this.applyPath(control, path);\r\n if (formArray instanceof FormArray) {\r\n if (index < 0 || index >= formArray.length - 1) return false;\r\n\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index + 1, control);\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n status(control: AbstractControl, path: Path, pathOptions?: PathOptions) : FormControlStatus | undefined {\r\n const result = this.applyPath(control, path, pathOptions);\r\n return result?.status;\r\n }\r\n\r\n updateAllValueAndValidity(control: AbstractControl, emitEvent: boolean = true): void {\r\n for (const c of this.enumerateControls(control)) {\r\n c.updateValueAndValidity({ emitEvent });\r\n }\r\n }\r\n\r\n countInvalid(controls: Iterable<AbstractControl>) {\r\n let errors = 0;\r\n for (const control of controls) {\r\n errors += this.collectErrors(control);\r\n }\r\n return errors;\r\n }\r\n\r\n getInvalidControls(control: AbstractControl): { path: string, control: AbstractControl }[] {\r\n const invalid: { path: string, control: AbstractControl }[] = [];\r\n\r\n if (control.disabled)\r\n return invalid;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n const children = Object.values(control.controls);\r\n for (const child of children) {\r\n invalid.push(...this.getInvalidControls(child));\r\n }\r\n }\r\n else if (control.invalid) {\r\n invalid.push({ path: this.getPath(control).join(\".\"), control });\r\n }\r\n\r\n return invalid;\r\n }\r\n\r\n patch(\r\n control: AbstractControl, value: any, options?: PatchOptions): 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(`[patchControl] ${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 const currentValue = this.asObject(value);\r\n Object.keys(currentValue).forEach((key) => {\r\n if (control.controls[key]) {\r\n this.patch(control.controls[key], value[key], options);\r\n }\r\n else if (!strict) {\r\n const newControl = this.createControlFromValue(value[key]);\r\n this.setUnknown(newControl);\r\n control.addControl(key, newControl);\r\n this.patch(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 Object.keys(control.controls).forEach((key) => {\r\n if (!(key in currentValue)) {\r\n const childControl = control.get(key);\r\n if (childControl) {\r\n childControl.reset();\r\n }\r\n }\r\n }); \r\n }\r\n else if (control instanceof FormArray) {\r\n const currentValue = this.asArray(value);\r\n while (control.length < currentValue.length) {\r\n const anyControl = control as any;\r\n const itemToAdd = currentValue[control.length];\r\n if (typeof (anyControl).addItem === 'function') {\r\n anyControl.addItem();\r\n } else {\r\n control.push(this.createControlFromValue(itemToAdd));\r\n }\r\n }\r\n while (control.length > currentValue.length) {\r\n control.removeAt(control.length - 1);\r\n }\r\n currentValue.forEach((item: any, index: number) => {\r\n this.patch(control.at(index), item, options);\r\n });\r\n }\r\n else {\r\n error('Unsupported AbstractControl type.');\r\n }\r\n }\r\n\r\n getPath(control: AbstractControl): (string | number)[] {\r\n const path: (string | number)[] = [];\r\n let current: AbstractControl | null = control;\r\n\r\n while (current?.parent) {\r\n const parent: any = current.parent;\r\n\r\n if (parent instanceof FormArray) {\r\n const index = parent.controls.indexOf(current);\r\n path.unshift(index);\r\n } else if (parent instanceof FormGroup) {\r\n const key = Object.keys(parent.controls).find(k => parent.get(k) === current);\r\n if (key) {\r\n path.unshift(key);\r\n }\r\n }\r\n\r\n current = parent;\r\n }\r\n\r\n return path;\r\n }\r\n\r\n waitForControl(\r\n formGroup: FormGroup\r\n , path: Path\r\n , pathOptions?: PathOptions\r\n ): Observable<AbstractControl> {\r\n\r\n const resolve = (): AbstractControl | undefined =>\r\n this.getControl(formGroup, path, pathOptions);\r\n\r\n const existing = resolve();\r\n if (existing) return of(existing);\r\n\r\n return new Observable<AbstractControl>((observer) => {\r\n const sub = formGroup.valueChanges.subscribe(() => {\r\n const ctrl = resolve();\r\n if (ctrl) {\r\n observer.next(ctrl);\r\n observer.complete();\r\n sub.unsubscribe();\r\n }\r\n });\r\n\r\n return () => sub.unsubscribe();\r\n });\r\n }\r\n\r\n getContext(formGroup: any): Record<string, any> {\r\n if (!(formGroup instanceof FormGroup)) {\r\n throw new Error(\"Scope is not a FormGroup\");\r\n }\r\n const patchOptions: PatchOptions = {\r\n strict: false\r\n };\r\n\r\n return {\r\n set: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.set(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n get: (path: Path, pathOptions?: PathOptions): AbstractControl | undefined =>\r\n this.get(formGroup, path, pathOptions),\r\n\r\n status: (path: Path, pathOptions?: PathOptions): FormControlStatus | undefined =>\r\n this.status(formGroup, path, pathOptions),\r\n\r\n prepend: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.prepend(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n append: (path: Path, value: any, pathOptions?: PathOptions): boolean =>\r\n this.append(formGroup, path, value, pathOptions, patchOptions),\r\n\r\n insert: (path: Path, index: number, value: any, pathOptions?: PathOptions): boolean =>\r\n this.insert(formGroup, path, index, value, pathOptions, patchOptions),\r\n\r\n remove: (path: Path, index: number): boolean =>\r\n this.remove(formGroup, path, index),\r\n\r\n moveUp: (path: Path, index: number): boolean =>\r\n this.moveUp(formGroup, path, index),\r\n\r\n moveDown: (path: Path, index: number): boolean =>\r\n this.moveDown(formGroup, path, index)\r\n };\r\n }\r\n\r\n statusChanges(control: AbstractControl\r\n , waitForPending?: () => void\r\n ): Observable<FormControlStatus> {\r\n\r\n if (control.status === 'PENDING' && waitForPending) {\r\n this.waitUntilSettled(control)\r\n .subscribe(() => waitForPending());\r\n }\r\n\r\n return control.statusChanges;\r\n }\r\n\r\n private applyPath(\r\n control: AbstractControl,\r\n path: Path,\r\n options?: PathOptions\r\n ): AbstractControl | undefined {\r\n const warn = (message: string) => {\r\n if (options?.emitWarn) console.warn(`[applyPath] ${message}`);\r\n };\r\n\r\n const error = (message: string): never => {\r\n if (options?.emitError) throw new Error(`[applyPath] ${message}`);\r\n throw new Error(`[applyPath] ${message}`); // fallback default behavior\r\n };\r\n\r\n const createControl = (type: ControlType): AbstractControl => {\r\n switch (type) {\r\n case 'array': return new FormArray([]);\r\n case 'group': return new FormGroup({});\r\n case 'control': default: return new FormControl(null);\r\n }\r\n };\r\n\r\n const segments = normalizePath(path);\r\n let current: AbstractControl | null = control;\r\n const createPath = options?.create ?? false;\r\n\r\n for (let i = 0; i < segments.length; i++) {\r\n const segment = segments[i];\r\n const isLeaf = i === segments.length - 1;\r\n const nextType: ControlType =\r\n isLeaf ? (options?.expected ?? 'control')\r\n : typeof segments[i + 1] === 'number' ? 'array'\r\n : 'group';\r\n\r\n const getCurrentPath = () => segments.slice(0, i + 1).join('.');\r\n\r\n if (!current) {\r\n return error(`Control is null at segment \"${getCurrentPath()}\"`);\r\n }\r\n\r\n if (typeof segment === 'number') {\r\n if (!(current instanceof FormArray)) {\r\n return error(`Expected FormArray at segment [${getCurrentPath()}], got ${current.constructor.name}`);\r\n }\r\n\r\n const index = segment;\r\n if (index < 0 || index >= current.length) {\r\n warn(`Index ${index} is out of bounds at path \"${getCurrentPath()}\" (length = ${current.length})`);\r\n return undefined;\r\n }\r\n\r\n current = current.at(index);\r\n\r\n } else if (typeof segment === 'string') {\r\n\r\n if (segment === 'parent') {\r\n current = (current instanceof FormGroup) && current.get(segment)\r\n ? current.get(segment)\r\n : current.parent;\r\n continue;\r\n }\r\n\r\n if (segment === 'root') {\r\n current = (current instanceof FormGroup && current.get(segment))\r\n ? current.get(segment)\r\n : current.root;\r\n continue;\r\n }\r\n\r\n if ((current instanceof FormArray) && options?.breakOnArray) {\r\n break;\r\n }\r\n\r\n if (!(current instanceof FormGroup)) {\r\n return error(`Expected FormGroup at segment \"${getCurrentPath()}\", got ${current.constructor.name}`);\r\n }\r\n\r\n if (current.get(segment)) {\r\n current = current.get(segment);\r\n } else {\r\n if (createPath) {\r\n const newControl = createControl(nextType);\r\n current.addControl(segment, newControl);\r\n current = newControl;\r\n }\r\n else {\r\n warn(`Control with key \"${getCurrentPath()}\" not found in FormGroup.`);\r\n return undefined;\r\n }\r\n }\r\n\r\n }\r\n else if (!segment) {\r\n continue;\r\n }\r\n else {\r\n return error(`Invalid segment type: ${typeof segment}`);\r\n }\r\n }\r\n\r\n return current ?? undefined;\r\n }\r\n\r\n private asObject(value: any): object {\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n return value as Record<string, any>;\r\n }\r\n return { };\r\n }\r\n\r\n private asArray(value: any): Array<any> {\r\n if (value && Array.isArray(value)) {\r\n return value;\r\n }\r\n return [];\r\n }\r\n\r\n private insertIntoArray(formArray: FormArray, index: number, value: any, options?: PatchOptions): boolean {\r\n const itemToAdd = this.createArrayItem(formArray);\r\n this.patch(itemToAdd, value, options);\r\n formArray.insert(index, itemToAdd);\r\n return true;\r\n }\r\n\r\n private removeFromArray(formArray: FormArray, index: number): boolean {\r\n if (index <= 0 || index >= formArray.length) false;\r\n formArray.removeAt(index);\r\n return true;\r\n }\r\n\r\n private createArrayItem(formArray: FormArray): FormGroup\r\n {\r\n const anyControl = formArray as any;\r\n const formGroup = (typeof (anyControl).createItem === 'function')\r\n ? anyControl.createItem()\r\n : new FormGroup({});\r\n return formGroup;\r\n }\r\n\r\n private 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(this.createControlFromArray(value));\r\n }\r\n return new FormGroup({});\r\n }\r\n\r\n private createControlFromArray(array: any[]): AbstractControl[] {\r\n return array.map(item => this.createControlFromValue(item));\r\n }\r\n\r\n private *enumerateControls(control: AbstractControl): Generator<AbstractControl> {\r\n yield control;\r\n\r\n if (control instanceof FormGroup) {\r\n for (const child of Object.values(control.controls)) {\r\n yield* this.enumerateControls(child);\r\n }\r\n } else if (control instanceof FormArray) {\r\n for (const child of control.controls) {\r\n yield* this.enumerateControls(child);\r\n }\r\n }\r\n }\r\n\r\n private collectErrors(control: AbstractControl): number {\r\n\r\n let errors = 0;\r\n\r\n if (control.disabled)\r\n return errors;\r\n\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n const children = Object.values(control.controls);\r\n for (const child of children) {\r\n errors += this.collectErrors(child);\r\n }\r\n }\r\n else if (control.invalid) {\r\n errors++;\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n private setUnknown(control: any) {\r\n control._unknown = true;\r\n }\r\n\r\n private isUnknown(control: any): boolean {\r\n return control && control._unknown === true;\r\n }\r\n\r\n private waitUntilSettled(\r\n control: AbstractControl,\r\n pollInterval = 100\r\n ): Observable<FormControlStatus> {\r\n return interval(pollInterval).pipe(\r\n map(() => control.status),\r\n filter(status => status !== 'PENDING'),\r\n take(1)\r\n );\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalService {\r\n\r\n constructor() { }\r\n\r\n clearProperties(): void {\r\n this.properties = {};\r\n }\r\n\r\n setProperties(properties: Record<string, any>): void {\r\n this.properties = { ...this.properties, ...properties };\r\n }\r\n\r\n getProperties(): Record<string, any> {\r\n return this.properties || { };\r\n }\r\n\r\n getProperty(name: string, defaultValue: any = undefined): any {\r\n const properties = this.getProperties();\r\n if (name in properties) {\r\n return properties[name];\r\n }\r\n return defaultValue;\r\n }\r\n\r\n registerComponent(typeName: string, componentType: Type<any>): void {\r\n this.components[typeName] = componentType;\r\n }\r\n\r\n getComponents(): Record<string, Type<any>> {\r\n return this.components || {};\r\n }\r\n\r\n getComponent(typeName: string): Type<any> | null {\r\n return this.getComponents()[typeName] ?? null;\r\n }\r\n \r\n //#region Private Members\r\n\r\n private properties: Record<string, any> = {};\r\n\r\n private components: Record<string, Type<any>> = {};\r\n\r\n //#endregion\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\nimport { Observable, Subject } from 'rxjs';\r\nimport { Path } from '../common/path';\r\nimport { toProxy } from '../utils/proxy';\r\n\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 private readonly refreshSubject = new Subject<Path>();\r\n\r\n readonly onRefresh: Observable<Path> = this.refreshSubject.asObservable();\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 refresh(path: Path = []): void {\r\n this.refreshSubject.next(path);\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...toProxy(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, FormControlStatus, 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 { GlobalService } from '../services/global.service';\r\nimport { FormService } from './form.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { toProxy } from '../utils/proxy';\r\nimport { Subject, takeUntil, isObservable, Observable } from \"rxjs\";\r\nimport { filter, pairwise, startWith, tap } from 'rxjs/operators';\r\nimport { Path, matchPath } from '../common/path';\r\n\r\nconst StatusDependency = \"$status\";\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 formatterService: FormatterService\r\n , private functionService: FunctionService\r\n , private formService: FormService\r\n , private globalService: GlobalService\r\n , @Optional() private register: RegisterService\r\n , @Optional() private scope: ScopeService\r\n ) {\r\n this.Init();\r\n\r\n this.evaluatorProviders = [\r\n this.dialogService,\r\n this.toastService,\r\n this.functionService,\r\n this.formatterService,\r\n this.register \r\n ];\r\n\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n\r\n /*\r\n Global Properties:\r\n - feel-diagnostics: \"on\", \"off\"\r\n - feel-cacheable: \"on\", \"off\"\r\n */\r\n\r\n private predefinedFunctions!: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private evaluatorProviders: IEvaluatorProvider[] = [];\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n addEvaluatorProviders(evaluatorProvider: IEvaluatorProvider): void {\r\n if (evaluatorProvider) {\r\n this.evaluatorProviders.push(evaluatorProvider);\r\n this.predefinedFunctions = this.getPredefinedFunctions();\r\n }\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return typeof text === 'string' && 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, options: EvaluateOptions = {}): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) 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 (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) as boolean;\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null, options: EvaluateOptions = {}): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options) as number;\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 value;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): 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), options) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n if (!template)\r\n return \"\";\r\n\r\n return this.evalTemplate(formGroup, template, options);\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input, options);\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.invalidateExpression(this.getExpression(value)); \r\n }\r\n }\r\n\r\n watch(formGroup: FormGroup, dependencies: (string | string[])[], callback: () => void) {\r\n this.watchingDependencies(formGroup, dependencies, callback);\r\n }\r\n\r\n getDependencies(expression: string): (string | string[])[] {\r\n return this.feelService.getDependencies(expression);\r\n }\r\n\r\n subscribeChanges<T>(\r\n observable$: Observable<T>,\r\n control: AbstractControl,\r\n initial: T,\r\n callback: (() => void) | ((oldValue: T, newValue: T) => void),\r\n logFn?: (control: AbstractControl) => void \r\n ) {\r\n observable$\r\n .pipe(\r\n startWith(initial),\r\n pairwise(),\r\n filter(([oldValue, newValue]) => {\r\n return control instanceof FormArray\r\n || control instanceof FormGroup\r\n || oldValue !== newValue\r\n }),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(([oldValue, newValue]) => {\r\n queueMicrotask(() => {\r\n if (callback.length === 0) {\r\n (callback as () => void)();\r\n } else {\r\n (callback as (oldValue: T, newValue: T) => void)(oldValue, newValue);\r\n }\r\n logFn?.(control);\r\n });\r\n });\r\n }\r\n\r\n get verbose(): boolean {\r\n return this._verbose;\r\n }\r\n\r\n get cacheable(): boolean {\r\n return this._cacheable;\r\n }\r\n\r\n private _verbose = false;\r\n\r\n private _cacheable = true;\r\n\r\n private onErrorHandler: any = this.onError.bind(this);\r\n\r\n private Init() {\r\n this._cacheable = this.globalService.getProperty(\"feel-cacheable\", \"on\") === \"on\";\r\n this._verbose = this.globalService.getProperty(\"feel-diagnostics\", \"off\") === \"on\";\r\n if (this.verbose)\r\n console.log(\"Programmability Service Initialized\", { cacheable: this.cacheable, verbose: this.verbose });\r\n }\r\n\r\n private evalUnaryTest(formGroup: FormGroup, expression: string, input: any, options: EvaluateOptions = {}) {\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, error });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate UnaryTest:\", expression, result, { formGroup });\r\n };\r\n\r\n try {\r\n const result = this.feelService.evalUnaryTest(expression\r\n , this.getContext(formGroup, options)\r\n , input);\r\n logEvaluation(expression, result);\r\n return result;\r\n } catch (e) {\r\n logError(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\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, options, error });\r\n };\r\n\r\n const logInvalidate = (expression: string) => {\r\n if (!this.verbose) return;\r\n console.log(\"Invalidate Expression:\", expression, { formGroup, options });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate Expression:\", expression, result, { formGroup, options });\r\n };\r\n\r\n const evaluate = () => {\r\n try {\r\n const result = this.feelService.evalExpression(expression\r\n , this.getContext(formGroup, options));\r\n logEvaluation(expression, result);\r\n return result;\r\n }\r\n catch (e) {\r\n logError(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\r\n const ignoreDeps = options.ignoreDeps ?? false;\r\n\r\n if (!ignoreDeps) {\r\n const watchKey = `:watch(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchingExpression(formGroup, expression\r\n , () => {\r\n this.invalidateExpression(expression);\r\n logInvalidate(expression);\r\n });\r\n return true;\r\n });\r\n }\r\n \r\n return this.weakService.call(this, expression, evaluate, null, this.onErrorHandler);\r\n }\r\n else {\r\n return evaluate();\r\n }\r\n }\r\n\r\n private evalTemplate(formGroup: FormGroup, expression: string, options: EvaluateOptions = {}): any {\r\n\r\n const logError = (expression: string, error: any) => {\r\n console.warn(expression, { formGroup, options, error });\r\n };\r\n\r\n const logInvalidate = (expression: string) => {\r\n if (!this.verbose) return;\r\n console.log(\"Invalidate Template:\", expression, { formGroup, options });\r\n };\r\n\r\n const logEvaluation = (expression: string, result: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Evaluate Template:\", expression, result, { formGroup, options });\r\n };\r\n\r\n const evaluate = () => {\r\n try {\r\n const result = this.feelService.evalTemplate(expression\r\n , this.getContext(formGroup));\r\n logEvaluation(expression, result);\r\n return result;\r\n }\r\n catch (e) {\r\n logError(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 = `:watchTemplate(${expression})`;\r\n\r\n this.weakService.call(this, watchKey, () => {\r\n this.watchingTemplateExpression(formGroup, expression\r\n , () => {\r\n this.invalidateExpression(expression);\r\n logInvalidate(expression);\r\n });\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 onError(result: any): any {\r\n if (isObservable(result)) {\r\n return result.pipe(\r\n tap({\r\n error: err => {\r\n this.toastService.notifyError(err.message);\r\n }\r\n })\r\n );\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n\r\n private getPredefinedFunctions(): Record<string, any> {\r\n return this.evaluatorProviders.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private getFormFunctions(formGroup: FormGroup | null): Record<string, any> {\r\n return this.formService.getContext(formGroup);\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 const self = this;\r\n\r\n return {\r\n ...parent.value,\r\n formGroup: () => toProxy(parent), \r\n get parent() { return self.getParentContext(parent); },\r\n }; \r\n }\r\n\r\n private getRootContext(formGroup: FormGroup | null): Record<string, any> | null {\r\n if (formGroup === null) {\r\n return null;\r\n }\r\n \r\n const root = formGroup?.root;\r\n\r\n if (!root) {\r\n return null;\r\n }\r\n\r\n return root.value; \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 const self = this;\r\n\r\n let context = {\r\n get console() { return toProxy(console); },\r\n get parent() { return self.getParentContext(formGroup); },\r\n get root() { return self.getRootContext(formGroup); },\r\n formGroup: () => toProxy(formGroup),\r\n _: this.scope?.getContext(),\r\n ...baseContext,\r\n fn: {\r\n ...this.predefinedFunctions,\r\n ...this.getFormFunctions(formGroup),\r\n }\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 logDependencies = (dependencies: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Get Dependencies:\", expression, dependencies, { formGroup });\r\n };\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getDependencies(expression, context);\r\n logDependencies(dependencies);\r\n this.watchingDependencies(formGroup, dependencies, callback);\r\n };\r\n\r\n private watchingTemplateExpression(formGroup: FormGroup, expression: string, callback: () => void): void {\r\n const logDependencies = (dependencies: any) => {\r\n if (!this.verbose) return;\r\n console.log(\"Get Template Dependencies:\", expression, dependencies, { formGroup });\r\n };\r\n const context = this.getContext(formGroup);\r\n const dependencies = this.feelService.getTemplateDependencies(expression, context);\r\n logDependencies(dependencies);\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 logWatching = (dependence: any) => {\r\n if (!this.verbose) return;\r\n const text = Array.isArray(dependence) ? dependence.join(\".\") : dependence;\r\n console.log(\"Watching dependence:\", text, { formGroup });\r\n };\r\n\r\n const logValueChanged = (control: AbstractControl) => {\r\n if (!this.verbose) return;\r\n console.log(\"Value Changed:\", control.value, { path: this.getPath(control), control });\r\n };\r\n\r\n const logStatusChanged = (control: AbstractControl) => {\r\n if (!this.verbose) return;\r\n console.log(\"Status Changed:\", control.status, { path: this.getPath(control), control });\r\n };\r\n\r\n const logScopeRefreshed = (path: Path) => {\r\n if (!this.verbose) return;\r\n console.log(\"Scope Refreshed: \", path);\r\n };\r\n\r\n const valueSubscribe = (control: AbstractControl) => {\r\n this.subscribeChanges(control.valueChanges, control, control.value, callback, logValueChanged);\r\n };\r\n\r\n const statusSubscribe = (control: AbstractControl) => {\r\n this.subscribeChanges<FormControlStatus>(this.formService.statusChanges(control, callback), control, control.status, callback, logStatusChanged);\r\n };\r\n\r\n const subscribeScope = (dependence: Path) => {\r\n this.scope.onRefresh\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((path) => {\r\n if (matchPath(path, dependence)){\r\n callback();\r\n logScopeRefreshed(dependence);\r\n }\r\n });\r\n logWatching(dependence);\r\n };\r\n\r\n const subscribeControl = (control: AbstractControl\r\n , status: boolean\r\n , dependence: string | string[]\r\n ) => {\r\n if (!status) {\r\n valueSubscribe(control);\r\n logWatching(dependence);\r\n }\r\n else {\r\n statusSubscribe(control);\r\n logWatching(dependence);\r\n }\r\n };\r\n\r\n const isScope = (path: string | string[]): path is string[] => {\r\n return Array.isArray(path) && path.length > 0 && path[0] === \"_\";\r\n };\r\n\r\n for (const dependence of dependencies) {\r\n const [path, status] = this.processDependencies(dependence);\r\n if (isScope(path)) {\r\n subscribeScope(path.splice(1));\r\n }\r\n else {\r\n const control = this.formService.getControl(formGroup, path, { breakOnArray: true });\r\n if (control) {\r\n subscribeControl(control, status, dependence);\r\n }\r\n else {\r\n this.formService.waitForControl(formGroup, path, { breakOnArray: true })\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(control => {\r\n subscribeControl(control, status, dependence);\r\n callback();\r\n });\r\n }\r\n }\r\n } \r\n }\r\n\r\n private invalidateExpression(expression: string): void {\r\n this.weakService.invalidate(this, expression);\r\n }\r\n\r\n private processDependencies(dependency: string | string[]): [string | string[], boolean] {\r\n const statusDependency = Array.isArray(dependency)\r\n && dependency.length > 1\r\n && dependency[0] === StatusDependency;\r\n\r\n return statusDependency\r\n ? [dependency.slice(1), true]\r\n : [dependency, false];\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface IEvaluatorProvider {\r\n getContext(scope?: any): Record<string, any>;\r\n}\r\n\r\nexport interface EvaluateOptions {\r\n cacheable?: boolean;\r\n ignoreDeps?: boolean;\r\n extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n","export function toExpression(value: any): string {\r\n return \"=\" + toFeelable(value);\r\n}\r\n\r\nexport function toFeelable(value: any): string {\r\n if (value === null || typeof value === 'number' || typeof value === 'boolean') {\r\n return JSON.stringify(value);\r\n }\r\n\r\n if (typeof value === 'string') {\r\n if (value.startsWith('=')) {\r\n return value.substring(1);\r\n } else {\r\n return JSON.stringify(value);\r\n }\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n const items = value.map(item => toFeelable(item));\r\n return `[${items.join(', ')}]`;\r\n }\r\n\r\n if (typeof value === 'object') {\r\n const entries = Object.entries(value).map(([key, val]) => {\r\n return `\"${key}\": ${toFeelable(val)}`;\r\n });\r\n return `{ ${entries.join(', ')} }`;\r\n }\r\n\r\n return JSON.stringify(null);\r\n}\r\n","export class CallbackRegistry {\r\n private callbacks: (() => void)[] = [];\r\n\r\n register(callback: () => void) {\r\n if (callback)\r\n this.callbacks.push(callback);\r\n }\r\n\r\n clear() {\r\n this.callbacks = [];\r\n }\r\n\r\n invoke() {\r\n for (const cb of this.callbacks) {\r\n cb();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { isObservable, map, Observable, of, catchError, take } from 'rxjs';\r\nimport { toFeelable } from '../utils/feelable';\r\nimport { CallbackRegistry } from '../utils/CallbackRegistry';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Injectable()\r\nexport class ValidationService {\r\n\r\n constructor(\r\n private languageService: LanguageService,\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n suppress: boolean = false;\r\n\r\n createCollection(): ValidationCollection {\r\n return new Map<AbstractControl, ComponentContext>();\r\n }\r\n\r\n addToCollection(collection: ValidationCollection, control: AbstractControl, formGroup: FormGroup, component: any) {\r\n collection.set(control, { component, formGroup });\r\n }\r\n\r\n setupCollection(collection: ValidationCollection) {\r\n collection.forEach((componentValidation, control) => {\r\n const component = componentValidation.component;\r\n const currentGroup = componentValidation.formGroup;\r\n const required = component?.validate?.required;\r\n const rules = this.getRules(component);\r\n const [validators, asyncValidators, watching] = this.validateRules(currentGroup, component, required, rules);\r\n control.setValidators(validators);\r\n control.setAsyncValidators(asyncValidators);\r\n watching(control);\r\n });\r\n }\r\n\r\n private getRules(component: any): ValidationRule[] {\r\n if (!Array.isArray(component.validations)) return [];\r\n return component.validations?.map((rule: any) => {\r\n return {\r\n expression: rule.expression,\r\n type: rule.type,\r\n message: this.locale(rule, 'message'),\r\n async: rule.async === true\r\n } as ValidationRule;\r\n });\r\n }\r\n\r\n private validateRules(formGroup: FormGroup\r\n , component: any\r\n , required?: boolean\r\n , validations?: ValidationRule[]): [ValidatorFn[], AsyncValidatorFn[], (control: AbstractControl) => void] {\r\n const validators: ValidatorFn[] = [];\r\n\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n\r\n const noWatching = () => { };\r\n\r\n if (required === true) {\r\n validators.push(this.getRequiredValidator(component));\r\n }\r\n\r\n if (!Array.isArray(validations)) {\r\n return [validators, asyncValidators, noWatching];\r\n }\r\n\r\n const callbacks = new CallbackRegistry();\r\n\r\n validations.forEach((item: ValidationRule) => {\r\n if (!this.programmability.isExpression(item.expression))\r\n return;\r\n\r\n const logger: ValidationCallback = (control: AbstractControl, result: ValidationErrors | null) =>\r\n this.logValidation(component, item, control, result);\r\n \r\n if (item.type === \"validate\" || item.type === \"invalidate\") {\r\n const predicate = item.type === \"validate\"\r\n ? (result: any) => result\r\n : (result: any) => !result;\r\n\r\n if (item.async) {\r\n asyncValidators.push(this.createAsyncValidator(formGroup, item, callbacks, predicate, logger));\r\n }\r\n else {\r\n validators.push(this.createValidator(formGroup, item, predicate, logger));\r\n }\r\n }\r\n });\r\n\r\n const watching = (control: AbstractControl): void => {\r\n this.watchForValidation(formGroup, control, component.key, validations, callbacks);\r\n };\r\n\r\n return [validators, asyncValidators, watching];\r\n }\r\n\r\n private createValidator(formGroup: FormGroup\r\n , item: ValidationRule\r\n , predicate: (result: any) => boolean\r\n , callback: ValidationCallback): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (this.suppress) return null;\r\n const result = this.programmability.evaluateUnary(formGroup, item.expression, control.value)\r\n if (isObservable(result)) {\r\n console.warn(\r\n \"[Validator] Unexpected observable result in createValidator\",\r\n { expression: item.expression, value: control.value, rule: item }\r\n );\r\n return null;\r\n }\r\n const validate = predicate(result) ? null : this.validationErrors(formGroup, item);\r\n callback(control, validate);\r\n return validate;\r\n };\r\n }\r\n\r\n private createAsyncValidator(formGroup: FormGroup\r\n , item: ValidationRule\r\n , callbacks: CallbackRegistry\r\n , predicate: (result: any) => boolean\r\n , callback: ValidationCallback): AsyncValidatorFn {\r\n\r\n const unsetState = () => ({ value: Symbol('unset'), result: null });\r\n\r\n let state = unsetState();\r\n\r\n callbacks.register(() => state = unsetState());\r\n\r\n const getResult = (control: AbstractControl): any => this.programmability.evaluate(formGroup, item.expression, {\r\n cacheable: false,\r\n extendContext: () => { return { \"?\": control.value } }\r\n });\r\n\r\n const computeOnce = (control: AbstractControl): any => {\r\n const v = control.value;\r\n if (state.value !== v) {\r\n let result = getResult(control);\r\n if (isObservable(result)) {\r\n result = (result as Observable<any>).pipe(\r\n take(1),\r\n map((value: any) => {\r\n const validate = predicate(value) ? null : this.validationErrors(formGroup, item);\r\n callback(control, validate);\r\n return validate;\r\n }),\r\n catchError(err => {\r\n console.error(\"[AsyncValidator] Evaluation error\", { expression: item.expression, err });\r\n return this.nullObserver;\r\n })\r\n );\r\n }\r\n state = { value: v, result: result };\r\n }\r\n return state.result;\r\n };\r\n\r\n return (control: AbstractControl) => {\r\n if (this.suppress) return this.nullObserver;\r\n const result = computeOnce(control); \r\n if (!isObservable(result)) {\r\n console.warn(\r\n \"[AsyncValidator] Expected observable but got non-observable result\",\r\n { expression: item.expression, value: control.value, result, rule: item }\r\n );\r\n return this.nullObserver;\r\n }\r\n return result as Observable<any>;\r\n };\r\n }\r\n\r\n private validationErrors(formGroup: FormGroup, item: ValidationRule) {\r\n const message = this.programmability.evaluateString(formGroup, item.message);\r\n const validationError = { error: true, message };\r\n return validationError;\r\n }\r\n\r\n private watchForValidation(formGroup: FormGroup\r\n , control: AbstractControl\r\n , key: string\r\n , validations: ValidationRule[]\r\n , callbacks: CallbackRegistry): void {\r\n\r\n if (Array.isArray(validations)) {\r\n const expressions = validations\r\n .filter(item => this.programmability.isExpression(item.expression))\r\n .map(item => \"=\" + this.programmability.getExpression(item.expression));\r\n\r\n if (expressions.length === 0) return;\r\n\r\n const feelable = toFeelable(expressions);\r\n\r\n const dependencies = this.programmability.getDependencies(feelable)\r\n .filter(dep => dep !== key);\r\n\r\n if (dependencies.length === 0) return;\r\n\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n setTimeout(() => {\r\n callbacks.invoke();\r\n control.updateValueAndValidity();\r\n });\r\n\r\n });\r\n }\r\n }\r\n\r\n private logValidation = (component: any, rule: ValidationRule, control: AbstractControl, result: ValidationErrors | null) => {\r\n if (this.programmability.verbose) {\r\n if (result != null) {\r\n console.warn(\"[Validation] Failed\", { control, component, rule, result });\r\n }\r\n else {\r\n console.log(\"[Validation] Success\", { control, component, rule, result });\r\n }\r\n }\r\n }\r\n\r\n private readonly nullObserver = of(null);\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 private getRequiredValidator(component: any): ValidatorFn {\r\n if (this.isTrueValidator(component)) {\r\n return this.requiredTrueValidator.bind(this);\r\n }\r\n else {\r\n return this.requiredValidator.bind(this);\r\n } \r\n }\r\n\r\n private requiredValidator(control: AbstractControl): ValidationErrors | null {\r\n if (Validators.required(control) == null) {\r\n return null;\r\n }\r\n return { error: true, message: this.getRequiredMessage() } \r\n }\r\n\r\n private requiredTrueValidator(control: AbstractControl): ValidationErrors | null {\r\n if (Validators.requiredTrue(control) == null) {\r\n return null;\r\n }\r\n return { error: true, message: this.getRequiredMessage() }\r\n }\r\n\r\n private isTrueValidator(component: any): boolean {\r\n return component?.type === 'checkbox';\r\n }\r\n\r\n private getRequiredMessage(): string {\r\n return this.locale(Texts, 'RequiredField');\r\n }\r\n}\r\n\r\ntype ValidationCallback = (control: AbstractControl, result: ValidationErrors | null) => void;\r\n\r\nexport interface ComponentContext {\r\n component: any;\r\n formGroup: FormGroup;\r\n}\r\n\r\nexport interface ValidationRule {\r\n expression: string;\r\n type: \"validate\" | \"invalidate\";\r\n message: string,\r\n async: boolean\r\n}\r\n\r\nexport type ValidationCollection = Map<AbstractControl, ComponentContext>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from './programmability.service';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class DisableService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService\r\n , private formService: FormService) {\r\n }\r\n\r\n createCollection(): DisableCollection {\r\n return new Map<AbstractControl, DisableContext>();\r\n }\r\n\r\n addToCollection(collection: DisableCollection, control: AbstractControl, parentGroup: FormGroup\r\n , component: any) {\r\n if (this.isAllowedValue(component?.disabled))\r\n collection.set(control, { parentGroup, component });\r\n }\r\n\r\n setupCollection(collection: DisableCollection) {\r\n collection.forEach((disableContext, control) => {\r\n this.applyRule(disableContext.parentGroup, control, disableContext); \r\n });\r\n }\r\n\r\n private applyRule(formGroup: FormGroup, control: AbstractControl, context: DisableContext): void {\r\n // se riabilito un FormGroup vengono riabilitato tutti i child\r\n // mentre dovrebbero essere rivalutati se hanno una condizione o un valore static.\r\n const {\r\n key\r\n , disabled } = context.component ?? {};\r\n\r\n const logDisabled = (value: any) => {\r\n if (!this.programmability.verbose) return;\r\n console.log(value ? \"Disable\" : \"Enable\", control, { path: this.getPath(control), formGroup });\r\n };\r\n const disableControl = (value: boolean | null) => {\r\n if (value === true) {\r\n if (control.disabled) return;\r\n control.disable();\r\n logDisabled(value);\r\n } else {\r\n if (control.enabled) return;\r\n control.enable();\r\n logDisabled(value);\r\n }\r\n }\r\n if (typeof disabled === 'boolean') {\r\n disableControl(disabled);\r\n }\r\n else if (typeof disabled === 'string') {\r\n if (this.programmability.isExpression(disabled)) {\r\n const expression = this.programmability.getExpression(disabled);\r\n const dependencies = this.programmability.getDependencies(expression)\r\n .filter(dep => dep !== key);\r\n const applyExpression = () => {\r\n const result = this.programmability.evaluateBoolean(formGroup, disabled, { cacheable: false });\r\n disableControl(result);\r\n };\r\n if (dependencies.length > 0) {\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n applyExpression();\r\n });\r\n }\r\n applyExpression();\r\n }\r\n }\r\n }\r\n\r\n private isAllowedValue(value: any): boolean {\r\n return typeof value === 'boolean'\r\n || typeof value === 'string';\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface DisableContext {\r\n parentGroup: FormGroup;\r\n component: any\r\n}\r\n\r\nexport type DisableCollection = Map<AbstractControl, DisableContext>;\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class StatusService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService,\r\n private formService: FormService) {\r\n }\r\n\r\n createCollection(): StatusCollection {\r\n return new Set<AbstractControl>();\r\n }\r\n\r\n addToCollection(collection: StatusCollection, control: AbstractControl) {\r\n collection.add(control);\r\n }\r\n\r\n setupCollection(key: any, collection: StatusCollection) {\r\n\r\n const countInvalid = () => {\r\n return this.formService.countInvalid(collection);\r\n }\r\n\r\n this.invalidMap.set(key, countInvalid());\r\n\r\n collection.forEach((control) => {\r\n\r\n this.programmability.subscribeChanges(control.statusChanges\r\n , control\r\n , control.status\r\n , () => this.invalidMap.set(key, countInvalid()));\r\n });\r\n }\r\n\r\n countInvalid(key: any) : number\r\n {\r\n return this.invalidMap.get(key) ?? 0;\r\n }\r\n\r\n private invalidMap: Map<any, number> = new Map<any, number>();\r\n}\r\n\r\nexport type StatusCollection = Set<AbstractControl>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class EventService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n suppress: boolean = false;\r\n\r\n createCollection(): EventCollection {\r\n return new Map<AbstractControl, EventContext>();\r\n }\r\n\r\n addToCollection(collection: EventCollection, control: AbstractControl, formGroup: FormGroup, component: any) {\r\n collection.set(control, { component, formGroup });\r\n }\r\n\r\n setupCollection(collection: EventCollection) {\r\n collection.forEach((componentValidation, control) => {\r\n const component = componentValidation.component;\r\n const currentGroup = componentValidation.formGroup;\r\n const events = component.events;\r\n if (!events || typeof events !== 'object') return;\r\n this.processHandler(events.onChange, currentGroup, control, control.valueChanges, control.value);\r\n this.processHandler(events.onStatusChange, currentGroup, control, control.statusChanges, control.status); \r\n });\r\n }\r\n\r\n private processHandler<T>(handler: string\r\n , formGroup: FormGroup\r\n , control: AbstractControl\r\n , observable$: Observable<T>\r\n , initial: T)\r\n {\r\n if (!this.programmability.isExpression(handler))\r\n return;\r\n\r\n this.programmability.subscribeChanges(observable$, control, initial\r\n , (oldValue, newValue) => {\r\n if (this.suppress) return;\r\n this.programmability.evaluate(formGroup, handler, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n control: control,\r\n oldValue: oldValue,\r\n newValue: newValue\r\n }\r\n })\r\n });\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport interface EventContext {\r\n component: any;\r\n formGroup: FormGroup;\r\n}\r\n\r\nexport type EventCollection = Map<AbstractControl, EventContext>;\r\n","import { Injectable } from '@angular/core';\r\nimport { ProgrammabilityService } from './programmability.service';\r\nimport { FormService } from './form.service';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { toFeelable } from '../utils/feelable';\r\n\r\n@Injectable()\r\nexport class ComputeService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService\r\n , private formService: FormService) {\r\n }\r\n\r\n createCollection(): ComputeCollection {\r\n return new Map<AbstractControl, ComputeContext>();\r\n }\r\n\r\n addToCollection(collection: ComputeCollection, control: AbstractControl\r\n , parentGroup: FormGroup, component: any)\r\n {\r\n if (this.programmability.isExpression(component.expression)) {\r\n collection.set(control, { component, parentGroup });\r\n } \r\n }\r\n\r\n setupCollection(collection: ComputeCollection) {\r\n collection.forEach((computeContext, control) => {\r\n this.applyExpression(control, computeContext); \r\n });\r\n }\r\n\r\n private applyExpression(control: AbstractControl, context: ComputeContext): void {\r\n const formGroup = context.parentGroup;\r\n\r\n const {\r\n key\r\n , expression\r\n , conditional } = context.component ?? {};\r\n\r\n const deactivate = conditional?.hide;\r\n\r\n const logComputed = (value: any) => {\r\n if (!this.programmability.verbose) return;\r\n console.log(\"Compute\", control, { value: value, path: this.getPath(control), formGroup });\r\n };\r\n const assignValue = (value: any) => {\r\n logComputed(value);\r\n this.formService.patch(control, value, { strict: false });\r\n }\r\n if (typeof expression === 'string') {\r\n if (this.programmability.isExpression(expression)) {\r\n const applyExpression = () => {\r\n if (this.programmability.isExpression(deactivate)) {\r\n const isDeactivate = this.programmability.evaluateBoolean(formGroup, deactivate, { cacheable: false });\r\n if (!!isDeactivate) {\r\n return;\r\n }\r\n }\r\n const result = this.programmability.evaluate(formGroup, expression, { cacheable: false });\r\n assignValue(result);\r\n };\r\n const dependencies = this.programmability.getDependencies(toFeelable({\r\n expression: expression,\r\n deactivate: deactivate\r\n })).filter(dep => dep !== key);\r\n\r\n if (dependencies.length > 0) {\r\n this.programmability.watch(formGroup, dependencies, () => {\r\n setTimeout(() => applyExpression());\r\n });\r\n }\r\n setTimeout(() => applyExpression());\r\n }\r\n }\r\n }\r\n\r\n private getPath(control: AbstractControl): string {\r\n return this.formService.getPath(control).join(\".\");\r\n }\r\n}\r\n\r\nexport interface ComputeContext {\r\n parentGroup: FormGroup;\r\n component: any;\r\n}\r\n\r\nexport type ComputeCollection = Map<AbstractControl, ComputeContext>;\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n readonly: string | boolean | null;\r\n disabled: string | boolean | null;\r\n inactive: string | boolean | null;\r\n path: string | null;\r\n verticalAlignment: 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 readonly: form.readonly,\r\n disabled: form.disabled,\r\n inactive: form.inactive,\r\n path: form.path,\r\n verticalAlignment: form.verticalAlignment,\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 { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './objectURLRenderer.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","<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","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './deleteRowRenderer.component.html',\r\n standalone: true\r\n})\r\nexport class DeleteRowRendererComponent 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","<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","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../../services/programmability.service';\r\nimport { CacheContextService } from '../../services/cache.service';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { toProxy } from '../../utils/proxy';\r\n\r\n@Component({\r\n templateUrl: './actionsCellRenderer.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule, SirioButtonComponent\r\n ]\r\n})\r\nexport class ActionsCellRendererComponent 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 this.cacheContext = this.getCacheContext(); \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 return this.cacheContext.evaluateBoolean(this.getCacheControl(), this.getFormGroup(), value, this.getOptions());\r\n //return this.programmability.evaluateBoolean(this.getFormGroup(), value, this.getOptions());\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.cacheContext.evaluateString(this.getCacheControl(), this.getFormGroup(), value, this.getOptions());\r\n //return this.programmability.evaluateString(this.getFormGroup(), value, this.getOptions());\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 rowIndex: this.getRowIndex()\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 cacheContext!: CacheContextService;\r\n\r\n private getCacheControl(): any {\r\n return this.params.data ?? this;\r\n }\r\n\r\n private getOptions(): EvaluateOptions {\r\n return {\r\n //cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n data: this.getData(),\r\n rowIndex: this.getRowIndex()\r\n }\r\n })\r\n }\r\n }\r\n\r\n private getData(): any {\r\n return toProxy(this.params.data);\r\n }\r\n\r\n private getRowIndex(): any {\r\n return this.params.node.rowIndex;\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup as FormGroup;\r\n }\r\n\r\n private getCacheContext(): CacheContextService {\r\n return this.params.api.getGridOption(\"context\").cacheContext; \r\n }\r\n}\r\n\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 *ngIf=\"!evaluateBoolean(action.disabled)\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\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: './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","import {\r\n Component, ViewChild, ViewContainerRef, AfterViewInit, ComponentRef, Type\r\n , Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ProgrammabilityService, EvaluateOptions } from '../../services/programmability.service';\r\nimport { GlobalService } from '../../services/global.service';\r\nimport { toProxy } from '../../utils/proxy';\r\n\r\n@Component({\r\n templateUrl: './hostCellRenderer.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class HostCellRendererComponent implements ICellRendererAngularComp, AfterViewInit {\r\n @ViewChild('container', { read: ViewContainerRef, static: true }) container!: ViewContainerRef;\r\n\r\n constructor(private injector: Injector,\r\n private programmability: ProgrammabilityService,\r\n private globalService: GlobalService) { }\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 ngAfterViewInit(): void {\r\n const componentType = this.resolveComponentType(this.getComponentType());\r\n if (componentType) {\r\n this.componentRef = this.container.createComponent(componentType, {\r\n injector: this.injector,\r\n });\r\n\r\n this.setProperties();\r\n }\r\n }\r\n\r\n //#region Private Members\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n private resolveComponentType(type: string): Type<any> | null {\r\n return this.globalService.getComponent(type);\r\n }\r\n\r\n private resolveProperties(): Record<string, any> {\r\n const properties = this.getProperties();\r\n if (properties) {\r\n return this.evaluate(properties) ?? {}\r\n }\r\n else\r\n {\r\n return { };\r\n } \r\n }\r\n\r\n private setProperties(): void {\r\n if (!this.componentRef) return;\r\n const properties = this.resolveProperties();\r\n for (const key of Object.keys(properties)) {\r\n const value = properties[key];\r\n if (key in this.componentRef.instance) {\r\n this.componentRef.setInput?.(key, value);\r\n }\r\n }\r\n }\r\n\r\n private evaluate(value: string) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n value: this.getValue(),\r\n data: this.getData(),\r\n rowIndex: this.getRowIndex()\r\n }\r\n })\r\n }\r\n\r\n return this.programmability.evaluate(this.getFormGroup(), value, options);\r\n }\r\n\r\n private getComponentType(): string {\r\n return this.params.componentType;\r\n }\r\n\r\n private getProperties(): string | undefined\r\n {\r\n return this.params.properties;\r\n }\r\n\r\n private getFormGroup(): FormGroup {\r\n return this.params.formGroup;\r\n }\r\n\r\n private getData(): any {\r\n return toProxy(this.params.data);\r\n }\r\n\r\n private getValue(): any {\r\n return this.params.value;\r\n }\r\n\r\n private getRowIndex(): any {\r\n return this.params.node.rowIndex;\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\n","<ng-container #container></ng-container>\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 const hasTabIndex = element.tabIndex >= 0;\r\n const isContentEditable = element.hasAttribute('contenteditable')\r\n && element.getAttribute('contenteditable') !== 'false';\r\n if (element.contentEditable === \"true\") return true;\r\n return (hasTabIndex || isContentEditable) &&\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, preventScroll: boolean = false): HTMLElement | null {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return null;\r\n }\r\n const target = focusables[0];\r\n\r\n target.focus({ preventScroll });\r\n\r\n return target;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n Module, PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule\r\n , LocaleModule, CellStyleModule, ValidationModule, RowApiModule \r\n , RowSelectionModule, RowSelectionOptions \r\n , TextFilterModule, NumberFilterModule, DateFilterModule\r\n , ColDef, themeQuartz, iconSetAlpine, GridOptions, DataTypeDefinition\r\n , ClientSideRowModelApiModule, RowAutoHeightModule\r\n , GridSizeChangedEvent, ModelUpdatedEvent, ColumnAutoSizeModule, ColumnApiModule, GridApi\r\n , SuppressKeyboardEventParams\r\n , GetRowIdFunc, GetRowIdParams, HighlightChangesModule\r\n} from 'ag-grid-community';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ObjectURLRendererComponent } from '../components/objectURLRenderer/objectURLRenderer.component';\r\nimport { DeleteRowRendererComponent } from '../components/deleteRowRenderer/deleteRowRenderer.component';\r\nimport { ActionsCellRendererComponent } from '../components/actionsCellRenderer/actionsCellRenderer.component';\r\nimport { SetFilterComponent } from '../components/setFilter/setFilter.component';\r\nimport { HostCellRendererComponent } from '../components/hostCellRenderer/hostCellRenderer.component';\r\nimport { FormatterService } from '../services/formatter.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { WeakService } from '../services/weak.service';\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 { LanguageService } from '@wemake4u/interact';\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\ntype GroupNode = {\r\n name: string;\r\n type: \"group\";\r\n columns: (GroupNode | any)[];\r\n};\r\n\r\n@Injectable()\r\nexport class GridService {\r\n\r\n constructor(private formatter: FormatterService\r\n , private languageService: LanguageService\r\n , private programmability: ProgrammabilityService\r\n , private weak: WeakService) {\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 , RowApiModule\r\n , RowAutoHeightModule\r\n , HighlightChangesModule\r\n //, ValidationModule\r\n ];\r\n };\r\n\r\n getOptions(component: any, formGroup: FormGroup): GridOptions {\r\n const selection = this.getRowSelection(component, formGroup);\r\n const rowId = this.getRowId(component);\r\n const pagination = this.getPaginable(component);\r\n const pageSize = this.getPageSize(component);\r\n const texts = this.getTexts();\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 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 getRowId: rowId,\r\n onGridSizeChanged: (params: GridSizeChangedEvent) => {\r\n this.resizeGrid(component, params.api);\r\n },\r\n onModelUpdated: (params: ModelUpdatedEvent) => {\r\n this.resizeGrid(component, params.api);\r\n this.onRowSelecting(component, formGroup, params); \r\n } \r\n };\r\n }\r\n\r\n getColumnDefs(component: any, columns: any, formGroup: FormGroup): ColDef[] {\r\n if (Array.isArray(columns)) {\r\n const groupedColumns = this.groupColumns(columns);\r\n const columnDefs = this.groupsToColumnDefs(groupedColumns\r\n , (cs) => this.createColumnDefs(component, cs, formGroup));\r\n\r\n this.addActionColumnDef(component, columnDefs, formGroup);\r\n this.addRowNumbersColumnDef(component, columnDefs);\r\n\r\n return columnDefs;\r\n }\r\n else {\r\n return [];\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 getCacheKey(): string {\r\n return `getGridOptions_${this.language}`;\r\n }\r\n\r\n invalidateOptions(component: any) {\r\n this.weak.invalidate(component, this.getCacheKey());\r\n }\r\n\r\n onRowDataChanged(component: any, api: GridApi, rowData: any) { \r\n if (this.hasRowNumbers(component) && this.hasRowId(component)) {\r\n this.refreshRowNumbers(api);\r\n } \r\n }\r\n\r\n onDataSourceChanged(component: any, api: GridApi, dataSource: any) {\r\n // Nothing\r\n }\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 resizeGrid(component: any, api: GridApi) {\r\n const columnsToResize: string[] = [];\r\n\r\n if (this.hasActions(component)) {\r\n columnsToResize.push('actions');\r\n }\r\n\r\n if (this.hasRowNumbers(component)) {\r\n columnsToResize.push('rowNumbers');\r\n }\r\n\r\n if (columnsToResize.length > 0) {\r\n api.autoSizeColumns(columnsToResize);\r\n }\r\n }\r\n\r\n private hasActions(component: any) {\r\n return Array.isArray(component.actions) && component.actions.length > 0;\r\n }\r\n\r\n private hasRowNumbers(component: any) {\r\n return (component.rowNumbers);\r\n }\r\n\r\n private createColumnDefs(component: any, columns: any, formGroup: FormGroup): ColDef[] {\r\n if (Array.isArray(columns)) {\r\n const columnDefs = columns.map((column: any) => {\r\n const colDef: ColDef = {\r\n field: column.key,\r\n headerName: this.locale(column, 'label')\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, formGroup);\r\n this.setStyles(column, colDef);\r\n this.setAutoHeight(column, colDef);\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 this.setCellChangeFlash(column, colDef);\r\n\r\n return colDef;\r\n });\r\n\r\n return columnDefs;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private addActionColumnDef(component: any, columnDefs: ColDef[], formGroup: FormGroup) {\r\n if (this.hasActions(component)) {\r\n columnDefs.push({\r\n colId: 'actions',\r\n headerName: this.locale(Texts, 'Actions'),\r\n resizable: false,\r\n sortable: false,\r\n filter: false,\r\n cellDataType: false,\r\n hide: this.suppressActions(component, formGroup),\r\n pinned: \"right\", \r\n cellRendererParams: {\r\n component: component,\r\n formGroup: formGroup\r\n },\r\n cellRenderer: ActionsCellRendererComponent,\r\n suppressKeyboardEvent: this.navigateInsideCell.bind(this)\r\n });\r\n }\r\n }\r\n\r\n private addRowNumbersColumnDef(component: any, columnDefs: ColDef[]) { \r\n if (this.hasRowNumbers(component)) {\r\n columnDefs.unshift({\r\n colId: 'rowNumbers',\r\n headerName: \"#\",\r\n pinned: \"left\",\r\n headerClass: 'row-numbers-header',\r\n cellClass: 'row-numbers-cell',\r\n resizable: false,\r\n sortable: false,\r\n valueGetter: (n: any) => n.node.rowIndex + 1\r\n });\r\n }\r\n }\r\n\r\n private refreshRowNumbers(api: GridApi) {\r\n if (api) {\r\n const rowNumbers = [\"rowNumbers\"];\r\n api.setColumnsVisible(rowNumbers, false);\r\n api.setColumnsVisible(rowNumbers, true); \r\n } \r\n }\r\n\r\n private groupColumns(columns: any[]): (GroupNode | any)[] {\r\n const rootItemsOrdered: (GroupNode | any)[] = [];\r\n\r\n function findOrCreateGroup(\r\n groups: (GroupNode | any)[],\r\n name: string\r\n ): GroupNode {\r\n let group = groups.find(\r\n item => (item as GroupNode).type === \"group\" && (item as GroupNode).name === name\r\n ) as GroupNode;\r\n\r\n if (!group) {\r\n group = {\r\n name,\r\n type: \"group\",\r\n columns: [],\r\n };\r\n groups.push(group);\r\n }\r\n\r\n return group;\r\n }\r\n\r\n for (const column of columns) {\r\n const groupParts = (column.group ?? \"\")\r\n .split(/[\\\\/]/)\r\n .map((part: string) => part.trim())\r\n .filter((part: string) => part.length > 0);\r\n\r\n if (groupParts.length === 0) {\r\n rootItemsOrdered.push(column);\r\n } else {\r\n let currentLevel = rootItemsOrdered;\r\n for (let i = 0; i < groupParts.length; i++) {\r\n const part = groupParts[i];\r\n const group = findOrCreateGroup(currentLevel, part);\r\n currentLevel = group.columns;\r\n }\r\n currentLevel.push(column);\r\n }\r\n }\r\n\r\n return rootItemsOrdered;\r\n }\r\n\r\n private groupsToColumnDefs(grouped: (GroupNode | any)[], getColumnsDef: (columns: any[]) => ColDef[]): any[] {\r\n return grouped.map(item => {\r\n if ('type' in item && item.type === 'group') {\r\n return {\r\n headerName: item.name,\r\n children: this.groupsToColumnDefs(item.columns, getColumnsDef)\r\n };\r\n } else {\r\n return getColumnsDef([item])[0];\r\n }\r\n });\r\n }\r\n\r\n private setCellDataType(column: any, colDef: ColDef) {\r\n if (column.dataType === \"component\"\r\n || column.dataType === \"auto\") return;\r\n\r\n if (typeof column.dataType === \"string\"\r\n && column.dataType.trim() !== \"\") {\r\n colDef.cellDataType = column.dataType;\r\n }\r\n }\r\n\r\n private setStyles(column: any, colDef: ColDef) {\r\n if (column.headerClass) {\r\n colDef.headerClass = column.headerClass;\r\n }\r\n if (column.headerStyle) {\r\n colDef.headerStyle = column.headerStyle; \r\n }\r\n }\r\n\r\n private setCellRenderer(column: any, colDef: ColDef, map: MapType, formGroup: FormGroup) {\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 = DeleteRowRendererComponent;\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 if (column.dataType === \"component\") {\r\n colDef.cellRenderer = HostCellRendererComponent;\r\n colDef.cellRendererParams = {\r\n componentType: column.component,\r\n properties: column.properties,\r\n formGroup: formGroup\r\n };\r\n colDef.cellClass = 'cell-component';\r\n }\r\n\r\n }\r\n\r\n private setCellChangeFlash(column: any, colDef: ColDef) {\r\n colDef.enableCellChangeFlash = true;\r\n }\r\n\r\n private setAutoHeight(column: any, colDef: ColDef) {\r\n if (column.autoHeight) {\r\n colDef.autoHeight = true;\r\n colDef.wrapText = true;\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 getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n let options: RowSelectionOptions | undefined = undefined;\r\n if (this.selectable(component, formGroup)) {\r\n if (this.multiSelect(component, formGroup)) {\r\n options = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n }\r\n else {\r\n options = { mode: \"singleRow\" };\r\n }\r\n\r\n if (component.rowSelectable) {\r\n options = {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private hasRowId(component: any) {\r\n return typeof component.rowId === 'string' && component.rowId.trim() !== '';\r\n }\r\n\r\n private getRowId(component: any): GetRowIdFunc<any> | undefined\r\n {\r\n if (this.hasRowId(component)) {\r\n return (params: GetRowIdParams<any>) => params.data[component.rowId]; \r\n }\r\n else {\r\n return undefined;\r\n }\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.rowSelectable, {\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 onRowSelected(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.rowSelected, {\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 onRowSelecting(component: any, formGroup: FormGroup, params: ModelUpdatedEvent) {\r\n if (params.newData \r\n && component.rowSelected\r\n && this.selectable(component, formGroup))\r\n {\r\n params.api.forEachNode((node) => {\r\n if (this.onRowSelected(component, formGroup, node.data)) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private suppressActions(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.suppressActions, { cacheable: false })\r\n ?? false;\r\n }\r\n\r\n private selectable(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.selectable, { cacheable: false })\r\n ?? false;\r\n }\r\n\r\n private multiSelect(component: any, formGroup: FormGroup): boolean {\r\n return this.programmability.evaluateBoolean(formGroup, component.multiSelect, { cacheable: false })\r\n ?? false;\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(): any {\r\n if (this.language === 'it') {\r\n return AG_GRID_LOCALE_IT;\r\n }\r\n else if (this.language === 'en') {\r\n return AG_GRID_LOCALE_EN;\r\n }\r\n else if (this.language === 'de') {\r\n return AG_GRID_LOCALE_DE;\r\n }\r\n else if (this.language === 'fr') {\r\n return AG_GRID_LOCALE_FR;\r\n }\r\n else if (this.language === 'es') {\r\n return AG_GRID_LOCALE_ES;\r\n }\r\n else if (this.language === 'pt') {\r\n return AG_GRID_LOCALE_PT;\r\n }\r\n else if (this.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: true,\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 time: {\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.formatTime(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 decimal: {\r\n extendsDataType: 'number',\r\n baseDataType: 'number',\r\n valueFormatter: params => params.value == null\r\n ? ''\r\n : this.formatter.formatNumber(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.formatNumber(params.value, 0)\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 map?.['null'] ?? \"\";\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\n\r\nimport { LanguageService } from '@wemake4u/interact';\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 , private languageService: LanguageService) {\r\n }\r\n\r\n getOptions(component: any, formGroup: FormGroup): 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);\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 get language(): string {\r\n return this.languageService.getLanguage();\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 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): 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);\r\n case \"line\":\r\n return this.getLineSeriesOptions(serie, formGroup);\r\n case \"area\":\r\n return this.getAreaSeriesOptions(serie, formGroup);\r\n case \"scatter\":\r\n return this.getScatterSeriesOptions(serie, formGroup);\r\n case \"bubble\":\r\n return this.getBubbleSeriesOptions(serie, formGroup);\r\n case \"pie\":\r\n return this.getPieSeriesOptions(serie, formGroup);\r\n case \"donut\":\r\n return this.getDonutSeriesOptions(serie, formGroup);\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)\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\");\r\n\r\n if (this.isString(serie.yName))\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (this.isString(serie.legendItemName))\r\n options.legendItemName = this.locale(serie, \"legendItemName\");\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): 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)\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): 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)\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): 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)\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)\r\n : AgAreaSeriesOptionsNames {\r\n const options: AgAreaSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n return options;\r\n }\r\n\r\n private getScatterSeriesOptions(serie: any, formGroup: FormGroup): 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)\r\n };\r\n }\r\n\r\n private getScatterSeriesOptionsNames(serie: any)\r\n : AgScatterSeriesOptionsNames {\r\n const options: AgScatterSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getBubbleSeriesOptions(serie: any, formGroup: FormGroup): 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)\r\n };\r\n }\r\n\r\n private getBubbleSeriesOptionsNames(serie: any)\r\n : AgBubbleSeriesOptionsNames {\r\n const options: AgBubbleSeriesOptionsNames = {};\r\n\r\n if (serie.xName)\r\n options.xName = this.locale(serie, \"xName\");\r\n\r\n if (serie.yName)\r\n options.yName = this.locale(serie, \"yName\");\r\n\r\n if (serie.sizeName)\r\n options.sizeName = this.locale(serie, \"sizeName\");\r\n\r\n if (serie.labelName)\r\n options.labelName = this.locale(serie, \"labelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getPieSeriesOptions(serie: any, formGroup: FormGroup): 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)\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)\r\n : AgPieSeriesOptionsNames {\r\n const options: AgPieSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\");\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\");\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\");\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\");\r\n\r\n return options;\r\n }\r\n\r\n private getDonutSeriesOptions(serie: any, formGroup: FormGroup): 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)\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)\r\n : AgDonutSeriesOptionsNames {\r\n const options: AgDonutSeriesOptionsNames = {};\r\n\r\n if (serie.angleName)\r\n options.angleName = this.locale(serie, \"angleName\");\r\n\r\n if (serie.radiusName)\r\n options.radiusName = this.locale(serie, \"radiusName\");\r\n\r\n if (serie.calloutLabelName)\r\n options.calloutLabelName = this.locale(serie, \"calloutLabelName\");\r\n\r\n if (serie.sectorLabelName)\r\n options.sectorLabelName = this.locale(serie, \"sectorLabelName\");\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 { Directive, Renderer2 } from '@angular/core';\r\nimport { SirioValidationDirective } from 'ngx-sirio-lib';\r\nimport { FormService } from '../services/form.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nconst classNames = ['sirio-is-invalid', 'sirio-is-valid', 'sirio-is-warning', 'sirio-is-pending'];\r\n\r\n@Directive({\r\n selector: '[validation]',\r\n standalone: true\r\n})\r\nexport class ValidationPatchDirective extends SirioValidationDirective {\r\n\r\n constructor(private formService: FormService) {\r\n super();\r\n }\r\n\r\n override subscribeToNgControlChanges() {\r\n const thisRef = this as any;\r\n\r\n const control = thisRef.host.control;\r\n if (!control) {\r\n console.error(\"can't find a control. Please provide a formControl for\", thisRef.elementRef.nativeElement);\r\n }\r\n else {\r\n thisRef.elementControl = control;\r\n\r\n const callback = () => {\r\n if (thisRef.canValidate) {\r\n thisRef.checkValidation();\r\n }\r\n };\r\n \r\n this.formService.statusChanges(thisRef.elementControl, callback)\r\n .pipe(\r\n takeUntilDestroyed(thisRef.destroyRef)\r\n , debounceTime(0))\r\n .subscribe(callback);\r\n }\r\n }\r\n\r\n override checkValidation() {\r\n if (this.elementControl?.status === \"PENDING\") {\r\n this.setPending();\r\n return;\r\n }\r\n return super.checkValidation();\r\n }\r\n\r\n override cleanupValidation() {\r\n classNames.forEach(c => this.getRenderer().removeClass(this.validationTarget, c));\r\n }\r\n\r\n override setValid() {\r\n this.applyClass('sirio-is-valid'); \r\n }\r\n\r\n override setInvalid() {\r\n this.applyClass('sirio-is-invalid'); \r\n }\r\n\r\n override setWarning() {\r\n this.applyClass('sirio-is-warning'); \r\n }\r\n\r\n setPending() {\r\n this.applyClass('sirio-is-pending'); \r\n }\r\n\r\n private applyClass(className: string) {\r\n this.cleanupValidation();\r\n this.getRenderer().addClass(this.validationTarget, className);\r\n this.activeClassName = className;\r\n }\r\n\r\n private getRenderer(): Renderer2 {\r\n return (this as any).renderer;\r\n }\r\n}\r\n","import { Directive, Host } from '@angular/core';\r\nimport { SirioCollapseComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[collapseExtension]',\r\n exportAs: 'collapseExtension',\r\n standalone: true\r\n})\r\nexport class CollapsePatchDirective {\r\n constructor(@Host() private host: SirioCollapseComponent) {\r\n\r\n const thisRef = host as any;\r\n\r\n thisRef._setCollapseHeight = () => {\r\n thisRef.renderer.setStyle(thisRef.element, 'height', 'auto');\r\n }\r\n\r\n const _openCollapse = thisRef._openCollapse.bind(thisRef);\r\n thisRef._openCollapse = () => {\r\n _openCollapse();\r\n thisRef.renderer.addClass(thisRef.element, 'is-open');\r\n };\r\n\r\n const _closeCollapse = thisRef._closeCollapse.bind(thisRef);\r\n thisRef._closeCollapse = () => {\r\n _closeCollapse();\r\n thisRef.renderer.removeClass(thisRef.element, 'is-open');\r\n };\r\n\r\n }\r\n\r\n get isOpen(): boolean {\r\n return(this.host as any)._isOpen;\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\nimport { Subscription } from 'rxjs';\r\nimport { GlobalService } from '../services/global.service';\r\n\r\n@Directive({\r\n selector: '[readonly]',\r\n standalone: true\r\n})\r\nexport class ReadOnlyDirective implements OnChanges {\r\n @Input() readonly: boolean | null = null;\r\n @Input() placeholder: string | null = null;\r\n @Input() componentRef: any;\r\n @Input() properties: any;\r\n\r\n constructor(private ngControl: NgControl\r\n , private global: GlobalService\r\n , private el: ElementRef\r\n , private renderer: Renderer2) {\r\n }\r\n\r\n private disableClass: string = \"is-disabled\";\r\n private readonlyClass: string = \"is-readonly\";\r\n private lightReadonlyClass: string = \"light-readonly\";\r\n\r\n private sub?: Subscription;\r\n\r\n ngOnInit() {\r\n const control = this.ngControl.control;\r\n if (control) {\r\n this.sub = control.statusChanges.subscribe(_ => {\r\n this.apply(); \r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.sub?.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"readonly\"]) {\r\n this.apply();\r\n }\r\n }\r\n\r\n private apply() {\r\n const control = this.ngControl.control;\r\n if (!control) return;\r\n if (control.disabled) {\r\n this.toggleClass(true, this.disableClass);\r\n this.overridePlaceholder(false);\r\n } else {\r\n this.toggleClass(false, this.disableClass);\r\n const readonly = this.readonly === true;\r\n (this.ngControl.valueAccessor as any)?.setDisabledState(readonly);\r\n if (this.useLightReadonly()) {\r\n this.toggleClass(readonly, this.lightReadonlyClass);\r\n this.overridePlaceholder(readonly);\r\n }\r\n else {\r\n this.toggleClass(readonly, this.readonlyClass);\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 private useLightReadonly() {\r\n const value = this.properties?.useLightReadonly\r\n || this.global.getProperty(\"useLightReadonly\", \"yes\");\r\n if (value !== \"yes\" && value !== \"no\")\r\n return true;\r\n return (value === \"yes\");\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 }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EvaluateOptions, ProgrammabilityService } from '../services/programmability.service';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class CacheContextService {\r\n\r\n constructor(\r\n private programmability: ProgrammabilityService) {\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return this.programmability.isExpression(text);\r\n }\r\n\r\n getExpression(text: string | null): string {\r\n return this.programmability.getExpression(text);\r\n }\r\n\r\n evaluateString(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): string {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateString(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return value ?? \"\"; \r\n }\r\n\r\n evaluateBoolean(cacheControl: any, 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 (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () => \r\n this.programmability.evaluateBoolean(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(cacheControl: any, formGroup: FormGroup, value: number | string | null, options: EvaluateOptions = {}): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateNumber(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluate(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n return value;\r\n }\r\n\r\n evaluateTemplate(cacheControl: any, formGroup: FormGroup, value: string | null, options: EvaluateOptions = {}): any {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateTemplate(formGroup, value, this.getOptions(options))\r\n );\r\n }\r\n\r\n evaluateUnary(cacheControl: any, formGroup: FormGroup, value: string | null, input: any, options: EvaluateOptions = {}): any {\r\n if (this.isExpression(value)) {\r\n return this.call(cacheControl, value, () =>\r\n this.programmability.evaluateUnary(formGroup, value, input, this.getOptions(options))\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(cacheControl: any) {\r\n if (this.cache.has(cacheControl)) {\r\n this.cache.delete(cacheControl);\r\n }\r\n }\r\n\r\n invalidateAll() {\r\n this.cache = new WeakMap<object, Record<string, any>>();\r\n }\r\n\r\n private getOptions(options: EvaluateOptions): EvaluateOptions {\r\n return {\r\n ...options,\r\n cacheable: false\r\n };\r\n }\r\n\r\n private call(cacheControl: any, value: string | null, evaluate: () => any): any {\r\n\r\n if (value === null)\r\n return null;\r\n\r\n if (!this.cache.has(cacheControl)) {\r\n this.cache.set(cacheControl, {});\r\n }\r\n\r\n const cachedObject = this.cache.get(cacheControl)!;\r\n\r\n if (value in cachedObject) {\r\n return cachedObject[value];\r\n }\r\n\r\n const result: any = evaluate();\r\n\r\n cachedObject[value] = result;\r\n\r\n return result;\r\n }\r\n\r\n private cache = new WeakMap<object, Record<string, any>>();\r\n}\r\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { ControlContainer, FormArray, FormGroup } from '@angular/forms';\r\nimport { CacheContextService } from '../services/cache.service';\r\nimport { FormService } from '../services/form.service';\r\nimport { EvaluateOptions } from '../services/programmability.service';\r\nimport { debounceTime, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[recursion]',\r\n exportAs: 'recursion',\r\n standalone: true,\r\n providers: [\r\n CacheContextService\r\n ],\r\n})\r\nexport class RecursionDirective implements OnInit, OnChanges, OnDestroy {\r\n @Input() formGroup!: FormGroup;\r\n @Input(\"recursion\") component: any;\r\n\r\n private subscription: Subscription | null = null;\r\n private componentRows: any = null;\r\n private nestedFormGroup: FormGroup | null = null;\r\n\r\n constructor(private controlContainer: ControlContainer\r\n , private formService: FormService\r\n , private cacheContext: CacheContextService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.componentRows = this.createComponentRows();\r\n this.nestedFormGroup = this.createNestedFormGroup();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.isSubscribeRequired()) {\r\n this.subscribeToChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribeToChanges();\r\n }\r\n\r\n getItemsArray(formItem: FormGroup): FormArray | null {\r\n if (this.isRecursionByKey()) {\r\n return this.getArrayFromKey(formItem);\r\n }\r\n\r\n if (this.isRecursionByExpression()) {\r\n return this.getArrayFromExpression(formItem);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getComponentRows(): any {\r\n return this.componentRows;\r\n }\r\n\r\n getFormGroup(formItem: FormGroup): FormGroup {\r\n if (this.isRecursionByExpression()) {\r\n const nestedGroup = this.nestedFormGroup!;\r\n nestedGroup.setControl(this.component.key, this.getArrayFromExpression(formItem));\r\n return nestedGroup\r\n }\r\n else { \r\n return formItem;\r\n }\r\n }\r\n\r\n private isSubscribeRequired(): boolean {\r\n return this.shouldCreateItems()\r\n || this.isRecursionByExpression();\r\n }\r\n\r\n private isRecursionAllowed(): boolean {\r\n return this.component?.subtype === \"table\"\r\n && this.component?.recursion?.allowed === true\r\n }\r\n\r\n private isRecursionByKey(): boolean { \r\n return this.isRecursionAllowed()\r\n && this.component?.recursion?.source === \"key\"\r\n && this.component?.recursion?.key;\r\n }\r\n\r\n private isRecursionByExpression(): boolean {\r\n return this.isRecursionAllowed()\r\n && this.component?.recursion?.source === \"expression\"\r\n && this.cacheContext.isExpression(this.component.recursion.expression ?? \"\");\r\n }\r\n\r\n private shouldCreateItems(): boolean {\r\n return this.isRecursionByKey()\r\n && this.component.allowAddRemove === true\r\n && this.cacheContext.isExpression(this.component.recursion.shouldCreate ?? \"\");\r\n }\r\n\r\n private subscribeToChanges() {\r\n this.unsubscribeToChanges();\r\n const formArray = this.getFormArray();\r\n if (formArray) {\r\n this.subscription = formArray.valueChanges\r\n .pipe(debounceTime(200))\r\n .subscribe(() => this.onChangeArray(formArray));\r\n }\r\n }\r\n\r\n private unsubscribeToChanges() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n }\r\n\r\n private onChangeArray(formArray: FormArray) {\r\n this.cacheContext.invalidateAll();\r\n if (this.shouldCreateItems()) {\r\n this.creatingItems(formArray);\r\n } \r\n }\r\n\r\n private getFormArray(): FormArray {\r\n return this.controlContainer.control as FormArray;\r\n }\r\n\r\n private creatingItems(formArray: FormArray) {\r\n const key = this.component.recursion.key ?? \"\";\r\n const shouldCreate = this.component.recursion.shouldCreate ?? \"\";\r\n\r\n for (let i = 0; i < formArray.length; i++) {\r\n\r\n const formItem = formArray.at(i) as FormGroup;\r\n\r\n const options: EvaluateOptions = {\r\n extendContext: () => ({\r\n \"item\": formItem.value\r\n })\r\n }\r\n const recursive = this.cacheContext.evaluateBoolean(formItem, this.formGroup, shouldCreate, options);\r\n\r\n if (recursive && !formItem.get(key)) {\r\n const newArray = (formArray as any).createNewArray();\r\n formItem.addControl(key, newArray); \r\n }\r\n else if (!recursive && formItem.get(key)) {\r\n formItem.removeControl(key);\r\n }\r\n }\r\n }\r\n\r\n private getArrayFromKey(formItem: FormGroup): FormArray | null {\r\n const control = formItem.get(this.component.recursion.key);\r\n if ((control instanceof FormArray)) {\r\n const childArray = this.prepareChildArray(formItem, control);\r\n if (childArray != control) {\r\n formItem.setControl(this.component.recursion.key, childArray);\r\n }\r\n return childArray;\r\n }\r\n return null;\r\n }\r\n\r\n private getArrayFromExpression(formItem: FormGroup): FormArray | null {\r\n const expression = this.cacheContext.getExpression(this.component.recursion.expression);\r\n const wrapExpression = `=__asFormArray(${expression})`;\r\n const result = this.cacheContext.evaluate(formItem, this.formGroup, wrapExpression, {\r\n extendContext: () => ({\r\n item: formItem.value,\r\n __asFormArray: (value: any) => {\r\n if (Array.isArray(value)) { \r\n const newArray = new FormArray<any>([]);\r\n this.formService.patch(newArray, value, { strict: false });\r\n return newArray;\r\n }\r\n return null;\r\n }\r\n })\r\n });\r\n if ((result instanceof FormArray)) {\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n private createComponentRows(): any {\r\n let component = this.component;\r\n\r\n if (this.isRecursionByKey()\r\n && component.key !== this.component.recursion.key) {\r\n component = { ...this.component, key: this.component.recursion.key };\r\n }\r\n\r\n return [{ components: [component] }]\r\n }\r\n\r\n private createNestedFormGroup(): FormGroup | null {\r\n if (this.isRecursionByExpression()) {\r\n return new FormGroup({\r\n [this.component.key]: new FormArray([])\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n private prepareChildArray(formItem: FormGroup, childArray: FormArray) {\r\n if ((childArray as any).createNewArray)\r\n return childArray;\r\n\r\n const parentArray = formItem.parent;\r\n if ((parentArray instanceof FormArray)\r\n && (parentArray as any).createNewArray)\r\n {\r\n var newArray = (parentArray as any).createNewArray();\r\n this.formService.patch(newArray, childArray.value, { strict: false });\r\n return newArray;\r\n }\r\n\r\n return childArray;\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\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\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 @Host() private sirioSelect: SirioSelectComponent\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n this.handleOptionsChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.addValidator();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.optionsSubscription?.unsubscribe();\r\n this.removeValidator();\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: FocusEvent) => {\r\n if (event.relatedTarget !== dropMenu)\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 setTimeout(() => {\r\n this.handleValue();\r\n this.canValidate = true;\r\n this.refreshValidators();\r\n }); \r\n });\r\n }\r\n\r\n private optionsSubscription?: Subscription;\r\n\r\n private canValidate: boolean = false;\r\n\r\n private validator = this.validateOptions.bind(this);\r\n\r\n private addValidator(): void {\r\n this.sirioSelect.control?.addValidators(this.validator);\r\n }\r\n\r\n private removeValidator(): void {\r\n this.sirioSelect.control?.removeValidators(this.validator);\r\n }\r\n\r\n private validateOptions(control: AbstractControl): ValidationErrors | null {\r\n if (!this.canValidate) return null;\r\n const value = control.value;\r\n if (value) {\r\n const valueOption = this.sirioSelect.options.find(\r\n option => option.value === value\r\n );\r\n if (!valueOption) {\r\n return { error: true, message: `\"${value}\" non è un valore valido` };\r\n }\r\n } \r\n return null;\r\n }\r\n\r\n private refreshValidators() {\r\n this.sirioSelect.control?.updateValueAndValidity({ onlySelf: true, emitEvent: false });\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, inject } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\nimport { catchError, take, tap, finalize } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DestroyRef } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { IGetRowsParams, GridApi } from \"ag-grid-community\";\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\nimport { GridService } from '../services/grid.service';\r\nimport { CacheContextService } from '../services/cache.service';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\n\r\n@Directive({\r\n selector: '[rowSource], [columnDefs], [selectable], [multiSelect], [suppressActions]',\r\n standalone: true,\r\n providers: [\r\n CacheContextService\r\n ],\r\n})\r\n\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource!: any;\r\n @Input() columnDefs: any = null;\r\n @Input() selectable: boolean | null = null;\r\n @Input() multiSelect: boolean | null = null;\r\n @Input() suppressActions: boolean | null = null;\r\n @Input() formGroup!: FormGroup; \r\n @Input(\"register\") component: any = null;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n @Host() private grid: AgGridAngular,\r\n private gridService: GridService,\r\n private cacheContext: CacheContextService,\r\n private languageService: LanguageService\r\n ) {\r\n\r\n grid.gridReady.subscribe((params) => {\r\n this.gridApi = params.api;\r\n this.prepareContext();\r\n this.isGridReady = true;\r\n this.onGridReady(); \r\n });\r\n }\r\n\r\n //https://www.ag-grid.com/angular-data-grid/column-updating-definitions/\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (this.isRowSourceChanged(changes)) {\r\n this.onRowSourceChanged();\r\n }\r\n\r\n if (this.isColumnDefsChanged(changes)) {\r\n this.onColumnDefsChanged();\r\n }\r\n\r\n if (this.isSelectionChanged(changes)) {\r\n this.onSelectionChanged();\r\n }\r\n\r\n if (this.isSuppressActionChanged(changes)) {\r\n this.onSuppressAction();\r\n }\r\n }\r\n\r\n private gridApi!: GridApi<any>;\r\n\r\n private isGridReady: boolean = false;\r\n\r\n private noData: Observable<any> = of([]);\r\n\r\n private prepareContext() {\r\n const context = this.gridApi.getGridOption(\"context\") ?? {};\r\n context[\"cacheContext\"] = this.cacheContext;\r\n this.gridApi.setGridOption(\"context\", context);\r\n }\r\n\r\n private applyResult(data: any) {\r\n\r\n if (this.isArray(data)) {\r\n this.setRowData(data);\r\n }\r\n else if (this.isDataSource(data)) {\r\n this.setDataSource(data);\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 this.gridService.onRowDataChanged(this.component, this.gridApi, rowSource);\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 this.gridService.onDataSourceChanged(this.component, this.gridApi, rowSource);\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 obj && typeof obj.getRows === \"function\";\r\n }\r\n\r\n private onGridReady() { \r\n this.onColumnDefsChanged();\r\n }\r\n\r\n private isRowSourceChanged(changes: SimpleChanges): boolean {\r\n return ['rowSource'].some(\r\n key => !!changes[key]\r\n );\r\n }\r\n\r\n private onRowSourceChanged() {\r\n this.cacheContext.invalidateAll();\r\n if (isObservable(this.rowSource)) {\r\n this.wrapObservable(this.rowSource).pipe(\r\n take(1),\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(value => {\r\n this.applyResult(value ?? []);\r\n });\r\n }\r\n else if (this.isDataSource(this.rowSource)) {\r\n this.applyResult(this.wrapRowsSource(this.rowSource));\r\n }\r\n else {\r\n this.applyResult(this.rowSource);\r\n }\r\n }\r\n\r\n private isColumnDefsChanged(changes: SimpleChanges): boolean {\r\n return ['columnDefs'].some(\r\n key => !!changes[key]\r\n );\r\n }\r\n\r\n private onColumnDefsChanged() {\r\n if (this.gridApi) {\r\n const columnDef = this.gridService.getColumnDefs(this.component, this.columnDefs, this.formGroup);\r\n this.gridApi.setGridOption(\"columnDefs\", columnDef);\r\n }\r\n }\r\n\r\n private isSelectionChanged(changes: SimpleChanges): boolean {\r\n return ['selectable', 'multiSelect'].some(\r\n key => !!changes[key] && !changes[key].isFirstChange()\r\n );\r\n }\r\n\r\n private onSelectionChanged() {\r\n if (this.gridApi) {\r\n const rowSelection = this.gridService.getRowSelection(this.component, this.formGroup);\r\n this.gridApi.setGridOption(\"rowSelection\", rowSelection);\r\n }\r\n }\r\n\r\n private isSuppressActionChanged(changes: SimpleChanges): boolean {\r\n return ['suppressActions'].some(\r\n key => !!changes[key] && !changes[key].isFirstChange()\r\n );\r\n }\r\n\r\n private onSuppressAction() {\r\n if (this.gridApi) {\r\n this.gridApi.setColumnsVisible([\"actions\"], !(this.suppressActions ?? false));\r\n this.gridService.resizeGrid(this.component, this.gridApi);\r\n }\r\n }\r\n\r\n private showLoading(value: boolean) {\r\n if (this.gridApi) {\r\n this.gridApi.setGridOption('loading', value);\r\n } \r\n }\r\n\r\n private showLoadError(value: boolean) {\r\n if (!this.gridApi) return;\r\n\r\n if (value) {\r\n this.grid.api.setGridOption('overlayNoRowsTemplate', this.locale(Texts, 'LoadingFailed'));\r\n this.grid.api.showNoRowsOverlay();\r\n }\r\n else {\r\n this.grid.api.setGridOption('overlayNoRowsTemplate', undefined); \r\n } \r\n }\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\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 private wrapObservable<T>(source: Observable<T>): Observable<T> {\r\n this.showLoading(true);\r\n this.showLoadError(false);\r\n\r\n return source.pipe(\r\n tap(() => this.showLoadError(false)),\r\n catchError(err => {\r\n this.showLoadError(true); \r\n return this.noData;\r\n }),\r\n finalize(() => this.showLoading(false))\r\n );\r\n }\r\n\r\n private wrapRowsSource(source: IRowsSource): IRowsSource {\r\n\r\n const thisRef = this;\r\n\r\n function wrapParams(params: IGetRowsParams): IGetRowsParams {\r\n thisRef.showLoading(true);\r\n thisRef.showLoadError(false);\r\n\r\n return {\r\n ...params,\r\n successCallback: (rows, lastRow) => {\r\n try {\r\n params.successCallback(rows, lastRow);\r\n } finally {\r\n thisRef.showLoading(false);\r\n }\r\n },\r\n failCallback: () => {\r\n try {\r\n params.failCallback();\r\n } finally {\r\n thisRef.showLoading(false);\r\n thisRef.showLoadError(true);\r\n }\r\n }\r\n };\r\n }\r\n\r\n return {\r\n getRows: (params: IGetRowsParams) => {\r\n const wrapped = wrapParams(params);\r\n source.getRows(wrapped);\r\n }\r\n };\r\n }\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 readonly canNext = () => {\r\n return this.getNextIndex() !== null;\r\n }\r\n\r\n readonly goNext = () => {\r\n const next = this.getNextIndex();\r\n if (next !== null) this.setActiveIndex(next);\r\n }\r\n\r\n readonly canPrevious = () => {\r\n return this.getPreviousIndex() !== null;\r\n }\r\n\r\n readonly goPrevious = () => {\r\n const previous = this.getPreviousIndex();\r\n if (previous !== null) this.setActiveIndex(previous);\r\n }\r\n\r\n readonly setActiveIndex = (index: number): void => {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n if (index < 0 || index >= items.length) return;\r\n const item = items[index];\r\n if (item.disabled) return;\r\n tabControl.setActiveIndex(index);\r\n };\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n private getPreviousIndex(): number | null {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n const currentIndex = tabControl.activeIndex;\r\n for (let i = currentIndex - 1; i >= 0; i--) {\r\n if (!items[i].disabled) return i;\r\n }\r\n return null;\r\n }\r\n\r\n private getNextIndex(): number | null {\r\n const tabControl = this.getTab();\r\n const items = tabControl.tabItems;\r\n const currentIndex = tabControl.activeIndex;\r\n for (let i = currentIndex + 1; i < items.length; i++) {\r\n if (!items[i].disabled) return i;\r\n }\r\n return null;\r\n }\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 { Control } from \"./control\";\r\n\r\nexport class DisplayFieldControl extends Control {\r\n\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 { DisplayFieldControl } from '../controls/displayfield';\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 \"displayfield\":\r\n return new DisplayFieldControl(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 let changed = false;\r\n \r\n this.sirioInput.writeValue = function (value: any, event = false) {\r\n if (this.value !== value) {\r\n changed = true;\r\n writeValue.bind(this)(value, false);\r\n }\r\n };\r\n\r\n this.sirioInput.onBlur = function (event: any) {\r\n if (changed) {\r\n changed = false;\r\n writeValue.bind(this)(this.value, true);\r\n }\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\n\r\nconst dislayFormat = 'dd/mm/yyyy';\r\nconst storeFormat = 'yyyy-mm-dd';\r\n\r\nexport function 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\nexport function 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}(\\.\\d+)?(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 formatNumber = (value: number | null): number | string | null => {\r\n if (value && 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 return value.toFixed(this.decimalDigits);\r\n }\r\n return value;\r\n }\r\n\r\n let firstWrite = true;\r\n\r\n const writeValue = this.sirioInput.writeValue.bind(this.sirioInput);\r\n\r\n this.sirioInput.writeValue = function (value: any, event?: boolean) {\r\n if (firstWrite) {\r\n firstWrite = false;\r\n value = formatNumber(value);\r\n }\r\n writeValue(value, event);\r\n };\r\n\r\n const coerceValue = (value: number | null): number | null => {\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 writeValue(formatNumber(value), false);\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\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.configureSpellCheck();\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 if (typeof value !== 'string') {\r\n return value;\r\n }\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\r\n if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n\r\n this.applyTextTransform(inputElement);\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 this.applyTextTransformByValue(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 applyTextTransform(inputElement: HTMLInputElement | HTMLTextAreaElement) {\r\n if (inputElement.placeholder) return;\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n }\r\n\r\n private applyTextTransformByValue(inputElement: HTMLInputElement, value: any) {\r\n if (!inputElement.placeholder) return; \r\n this.renderer.setStyle(inputElement, 'text-transform', value ? this.textcase : \"none\"); \r\n }\r\n\r\n private configureSpellCheck() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n if (inputElement) {\r\n this.renderer.setAttribute(inputElement, 'spellcheck', 'false'); \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 } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { distinctUntilChanged, filter, Subscription, tap } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[valueSync]',\r\n standalone: true\r\n})\r\nexport class ValueSyncDirective {\r\n @Input() valueSync: boolean | null = null;\r\n\r\n constructor(private ngControl: NgControl) { \r\n }\r\n\r\n private sub?: Subscription;\r\n\r\n ngOnInit() {\r\n if (this.valueSync) {\r\n this.startSync();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.valueSync) {\r\n this.startSync();\r\n } else {\r\n this.stopSync();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stopSync();\r\n }\r\n\r\n private startSync() {\r\n if (this.sub) return;\r\n\r\n const control = this.ngControl.control;\r\n const valueAccessor = this.ngControl.valueAccessor;\r\n\r\n if (!control || !valueAccessor) return;\r\n\r\n this.sub = control.valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(value => {\r\n const currentValue = (valueAccessor as any)?.value;\r\n return currentValue !== value;\r\n }),\r\n tap(value => {\r\n try {\r\n valueAccessor.writeValue(value);\r\n } catch (err) {\r\n console.warn('writeValue failed:', err);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private stopSync() {\r\n this.sub?.unsubscribe();\r\n this.sub = undefined;\r\n }\r\n\r\n}\r\n","import { Directive, Host, OnInit, ViewContainerRef, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\nimport { setFocus } from '../utils/focusable';\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 this.setFocus();\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 private setFocus()\r\n {\r\n setTimeout(() => {\r\n const tabItem: any = this.sirioTab.activeTabItem;\r\n const containerRef = tabItem?.viewContainerRef as ViewContainerRef;\r\n if (containerRef)\r\n setFocus(containerRef.element.nativeElement as HTMLElement);\r\n }, 100);\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { SirioTabComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[tabItem]',\r\n standalone: true\r\n})\r\nexport class TabItemDirective implements OnChanges {\r\n @Input() componentRef: any;\r\n @Input() disabled: any;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"disabled\"]) {\r\n const tabControl = this.componentRef as SirioTabComponent;\r\n (tabControl as any).cd.markForCheck(); \r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\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 \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 private subscription = new Subscription();\r\n\r\n constructor(private el: ElementRef\r\n , private renderer: Renderer2\r\n , private languageService: LanguageService) {\r\n\r\n this.subscription = languageService.onLanguageChanged()\r\n .subscribe(() => this.applyCollapseLogic());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resetButton();\r\n this.resetFocusHandler();\r\n this.subscription.unsubscribe();\r\n }\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 get language(): string {\r\n return this.languageService.getLanguage();\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 setTimeout(() => {\r\n if (element.scrollHeight > this.maxHeight!) {\r\n this.applyButton();\r\n this.applyFocusHandler();\r\n }\r\n }, 100);\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 \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","export function toLocalString(d: Date): string | null {\r\n if (!isValidDateObject(d)) return null;\r\n return [\r\n toLocalDateString(d),\r\n toLocalTimeString(d)\r\n ].join('T');\r\n}\r\n\r\nexport function toLocalDateString(d: Date): string | null {\r\n if (!isValidDateObject(d)) return null;\r\n return [\r\n d.getFullYear(),\r\n (d.getMonth() + 1).toString().padStart(2, '0'),\r\n d.getDate().toString().padStart(2, '0')\r\n ].join('-');\r\n}\r\n\r\nexport function toLocalTimeString(d: Date): string | null {\r\n if (!isValidDateObject(d)) return null;\r\n return [\r\n d.getHours().toString().padStart(2, '0'),\r\n d.getMinutes().toString().padStart(2, '0'),\r\n d.getSeconds().toString().padStart(2, '0')\r\n ].join(':');\r\n}\r\n\r\nexport function isValidDateObject(value: any): value is Date {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n}\r\n\r\nexport function isValidTime(value: string): boolean {\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n\r\n const match = /^(\\d{2}):(\\d{2})$/.exec(value);\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const hours = Number(match[1]);\r\n const minutes = Number(match[2]);\r\n\r\n return hours >= 0 && hours <= 23 && minutes >= 0 && minutes <= 59;\r\n}\r\n\r\nexport function isValidDate(value: string): boolean {\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n\r\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value);\r\n if (!match) {\r\n return false;\r\n }\r\n\r\n const year = Number(match[1]);\r\n const month = Number(match[2]);\r\n const day = Number(match[3]);\r\n\r\n if (month < 1 || month > 12) {\r\n return false;\r\n }\r\n\r\n const date = new Date(year, month - 1, day);\r\n\r\n return isValidDateObject(date);\r\n}\r\n","import { Directive, AfterViewInit, Input, forwardRef, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { NgxSirioEvent, SirioDatepickerComponent, SirioTimepickerComponent, } from 'ngx-sirio-lib';\r\nimport { toLocalString, toLocalDateString, isValidTime, isValidDate, isValidDateObject } from '../utils/date';\r\nimport { dateToStore } from '../directives/date.directive';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[dateTimeCoordinator]',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimeCoordinatorDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateTimeCoordinatorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy {\r\n\r\n @Input() datePicker!: SirioDatepickerComponent;\r\n @Input() timePicker!: SirioTimepickerComponent;\r\n \r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n\r\n private dateValue: string | null = null;\r\n private timeValue: string | null = null;\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 ngAfterViewInit(): void {\r\n\r\n this.datePicker?.blurEvent\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((event: NgxSirioEvent<SirioDatepickerComponent>) => {\r\n const value = dateToStore(event.component.value);\r\n this.dateValue = isValidDate(value ?? \"\") ? value : null;\r\n this.recalculate(\"date\");\r\n });\r\n\r\n this.timePicker?.blurEvent\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((event: NgxSirioEvent<SirioTimepickerComponent>) => {\r\n this.timeValue = isValidTime(event.component.value)\r\n ? event.component.value : null;\r\n this.recalculate(\"time\");\r\n });\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!value) {\r\n this.dateValue = null;\r\n this.timeValue = null;\r\n this.datePicker?.writeValue(null);\r\n this.timePicker?.writeValue(null);\r\n return;\r\n }\r\n\r\n const date = value instanceof Date ? value : new Date(value);\r\n const local = toLocalString(date);\r\n this.dateValue = local ? local.substring(0, 10) : null;\r\n this.timeValue = local ? local.substring(11, 16) : null;\r\n this.datePicker?.writeValue(this.dateValue);\r\n this.timePicker?.writeValue(this.timeValue);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.datePicker?.setDisabledState(isDisabled);\r\n this.timePicker?.setDisabledState(isDisabled);\r\n }\r\n\r\n registerOnChange(fn: any): void { this.onChange = fn; }\r\n registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n private recalculate(part: \"date\" | \"time\") {\r\n // Case: both fields cleared\r\n if (!this.dateValue && !this.timeValue) {\r\n this.onChange(null);\r\n return;\r\n }\r\n\r\n // Case: date is set but time is empty → apply default time\r\n if (this.dateValue && !this.timeValue) {\r\n this.timeValue = '00:00';\r\n this.timePicker?.writeValue(this.timeValue);\r\n }\r\n\r\n // Case: time is set but date is empty → apply default date\r\n if (part === \"time\" && !this.dateValue && this.timeValue) {\r\n const today = new Date();\r\n this.dateValue = toLocalDateString(today);\r\n this.datePicker?.writeValue(this.dateValue);\r\n }\r\n\r\n // If after applying the rules one of the values is still missing → null\r\n if (!this.dateValue || !this.timeValue) {\r\n this.onChange(null);\r\n return;\r\n }\r\n\r\n let combined = `${this.dateValue}T${this.timeValue}:00`;\r\n\r\n this.onChange(combined);\r\n }\r\n\r\n}\r\n\r\nconst classNames = ['sirio-is-invalid', 'sirio-is-valid', 'sirio-is-warning', 'sirio-is-pending'];\r\n\r\n@Directive({\r\n selector: '[dateTimeValidator]',\r\n standalone: true \r\n})\r\nexport class DateTimeValidationDirective implements AfterViewInit, OnDestroy {\r\n @Input() isWarning: boolean = false;\r\n @Input() showWhenValid: boolean = false;\r\n\r\n private sub?: Subscription;\r\n\r\n constructor(private ngControl: NgControl,\r\n private renderer: Renderer2)\r\n { \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub?.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.ngControl?.statusChanges) {\r\n return;\r\n }\r\n\r\n this.sub = this.ngControl.statusChanges.subscribe(status => {\r\n const coordinator = this.getCoordinator();\r\n if (coordinator) {\r\n this.checkValidation(coordinator.datePicker.validationTarget);\r\n this.checkValidation(coordinator.timePicker.validationTarget);\r\n }\r\n });\r\n }\r\n\r\n private getCoordinator(): DateTimeCoordinatorDirective | null {\r\n return this.ngControl?.valueAccessor as DateTimeCoordinatorDirective ?? null;\r\n }\r\n\r\n private checkValidation(validationTarget: any) {\r\n if (this.ngControl?.status === \"PENDING\") {\r\n this.setPending(validationTarget);\r\n return;\r\n }\r\n\r\n const isDisabled = this.ngControl?.disabled;\r\n if (isDisabled) {\r\n this.cleanupValidation(validationTarget);\r\n return;\r\n }\r\n const isValid = this.ngControl?.valid;\r\n if (isValid) {\r\n if (this.showWhenValid) {\r\n this.setValid(validationTarget);\r\n }\r\n else {\r\n this.cleanupValidation(validationTarget);\r\n }\r\n }\r\n if (!isValid && this.isWarning) {\r\n this.setWarning(validationTarget);\r\n }\r\n if (!isValid && !this.isWarning) {\r\n this.setInvalid(validationTarget);\r\n }\r\n //this.cd.detectChanges();\r\n }\r\n\r\n private cleanupValidation(validationTarget: any) {\r\n classNames.forEach(c => this.renderer.removeClass(validationTarget, c));\r\n }\r\n\r\n private setValid(validationTarget: any) {\r\n this.applyClass(validationTarget, 'sirio-is-valid');\r\n }\r\n\r\n private setInvalid(validationTarget: any) {\r\n this.applyClass(validationTarget, 'sirio-is-invalid');\r\n }\r\n\r\n private setWarning(validationTarget: any) {\r\n this.applyClass(validationTarget, 'sirio-is-warning');\r\n }\r\n\r\n private setPending(validationTarget: any) {\r\n this.applyClass(validationTarget, 'sirio-is-pending');\r\n }\r\n\r\n private applyClass(validationTarget: any, className: string) {\r\n this.cleanupValidation(validationTarget);\r\n this.renderer.addClass(validationTarget, className);\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 {\r\n Component, Input, AfterViewInit, ViewChild, ViewContainerRef, Injector\r\n , Type, ComponentRef, OnChanges, SimpleChanges,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { FormGroup, ControlValueAccessor, FormControl } from '@angular/forms';\r\nimport { GlobalService } from '../services/global.service';\r\nimport { Observable, isObservable, Subscription, distinctUntilChanged, map } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-dynamic-host',\r\n templateUrl: './dynamic-host.component.html',\r\n styleUrls: [\r\n './dynamic-host.component.css'],\r\n standalone: true\r\n})\r\nexport class DynamicHostComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n @Input(\"register\") component!: any;\r\n @Input() properties: Record<string, any> | null = null;\r\n @Input() formGroup!: FormGroup;\r\n @ViewChild('container', { read: ViewContainerRef, static: true }) container!: ViewContainerRef;\r\n\r\n constructor(private injector: Injector,\r\n private globalService: GlobalService) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.statusSub) {\r\n this.statusSub.unsubscribe();\r\n }\r\n } \r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"properties\"]) {\r\n this.setProperties();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const componentType = this.resolveComponentType(this.component.component);\r\n if (componentType) {\r\n this.componentRef = this.container.createComponent(componentType, {\r\n injector: this.injector,\r\n });\r\n\r\n if (this.isBindable()) {\r\n this.setBinding();\r\n }\r\n \r\n this.setProperties();\r\n }\r\n }\r\n\r\n getComponentRef(): ComponentRef<any> | null {\r\n return this.componentRef;\r\n }\r\n\r\n //#region Private Members\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n private statusSub: Subscription | null = null;\r\n\r\n private isBindable(): boolean {\r\n if (!this.componentRef) return false;\r\n return this.component.isInput\r\n && this.component.key\r\n && this.isControlValueAccessor(this.componentRef.instance);\r\n }\r\n\r\n private setBinding() {\r\n if (!this.componentRef) return;\r\n\r\n const key = this.component.key;\r\n const instance = this.componentRef.instance;\r\n\r\n if (!this.isControlValueAccessor(instance)) return;\r\n\r\n let formControl = this.formGroup.get(key);\r\n\r\n if (!formControl) {\r\n return;\r\n }\r\n\r\n instance.writeValue(formControl.value);\r\n\r\n instance.registerOnChange((value: any) => {\r\n formControl.setValue(value);\r\n });\r\n\r\n instance.registerOnTouched(() => {\r\n formControl.markAsTouched();\r\n });\r\n\r\n const setDisabledState = instance.setDisabledState;\r\n\r\n if (typeof setDisabledState === 'function') {\r\n const invoke = setDisabledState.bind(instance);\r\n this.statusSub = formControl.statusChanges\r\n .pipe(\r\n map(() => formControl.disabled),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(isDisabled => {\r\n invoke(isDisabled);\r\n });\r\n }\r\n }\r\n\r\n private setProperties(): void {\r\n if (!this.componentRef) return;\r\n const properties = this.properties ?? {};\r\n if (this.validProperties(properties)) {\r\n for (const key of Object.keys(properties)) {\r\n const value = properties[key];\r\n if (key in this.componentRef.instance) {\r\n this.assignValue(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private assignValue(key: string, value: any)\r\n {\r\n if (isObservable(value)) {\r\n value.pipe(take(1)).subscribe(v => {\r\n this.componentRef?.setInput?.(key, v);\r\n });\r\n } else {\r\n this.componentRef?.setInput?.(key, value);\r\n }\r\n }\r\n\r\n private isControlValueAccessor(obj: any): obj is ControlValueAccessor {\r\n return (\r\n obj &&\r\n typeof obj.writeValue === 'function' &&\r\n typeof obj.registerOnChange === 'function' &&\r\n typeof obj.registerOnTouched === 'function'\r\n );\r\n }\r\n\r\n private resolveComponentType(type: string): Type<any> | null {\r\n return this.globalService.getComponent(type);\r\n }\r\n\r\n private validProperties(value: unknown): value is Record<string, any> {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n }\r\n\r\n //#endregion\r\n}\r\n","<ng-container #container></ng-container>\r\n","export function isMeaningful(x: any): boolean {\r\n if (x == null) return false; // null/undefined\r\n if (Array.isArray(x)) return x.length > 0; // empty array\r\n if (typeof x === 'string') return x.trim().length > 0; // empty string\r\n if (typeof x === 'object') return Object.keys(x).length > 0; // empty object\r\n return !!x; // number/boolean/other\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 { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AutoFocusService {\r\n\r\n private map = new WeakMap<object, boolean>();\r\n\r\n mark(target: object): void {\r\n this.map.set(target, true);\r\n }\r\n\r\n consume(target: object): boolean {\r\n const flag = this.map.get(target) === true;\r\n this.map.delete(target);\r\n return flag;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, 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 { DialogService } from '../services/dialog.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { GlobalService } from '../services/global.service';\r\nimport { FormService } from '../services/form.service';\r\nimport { GridService } from '../services/grid.service';\r\nimport { ChartService } from '../services/chart.service';\r\nimport { AutoFocusService } from '../services/autofocus.service';\r\nimport { ButtonColors } from 'ngx-sirio-lib';\r\nimport { ValidationPatchDirective } from '../directives/validationpatch.directive';\r\nimport { CollapsePatchDirective } from '../directives/collapsepatch.directive';\r\nimport { AdornerDirective } from '../directives/adorner.directive';\r\nimport { ReadOnlyDirective } from '../directives/readonly.directive';\r\nimport { DisplayDirective } from '../directives/display.directive';\r\nimport { RepeatDirective } from '../directives/repeat.directive';\r\nimport { RecursionDirective } from '../directives/recursion.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 { ValueSyncDirective } from '../directives/valuesync.directive';\r\nimport { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { TabItemDirective } from '../directives/tabitem.directive';\r\nimport { CollapseDirective } from '../directives/collapse.directive';\r\nimport { AccordionPanelDirective } from '../directives/accordionpanel.directive';\r\nimport { DateTimeCoordinatorDirective, DateTimeValidationDirective } from '../directives/datetime.directive';\r\nimport { TemplateWrapperComponent } from '../shared/template-wrapper/template-wrapper.component';\r\nimport { DynamicHostComponent } from '../dynamic-host/dynamic-host.component';\r\nimport { toExpression } from '../utils/feelable';\r\nimport { isMeaningful } from '../utils/isMeaningful';\r\nimport { isObservable, Observable, of } from 'rxjs';\r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport {\r\n SirioInputComponent\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, SirioCollapseComponent, SirioCollapseTriggerDirective\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 { LanguageService } from '@wemake4u/interact';\r\nimport { Texts } from '../locale/locale';\r\nimport { localize } from '../locale/localize';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\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 './styles/validation.css',\r\n './styles/alignment.css',\r\n './styles/data-display.css',\r\n './styles/light-readonly.css',\r\n './styles/pending-state.css',\r\n './styles/dynamiclist-as-table.css',\r\n './styles/date-time.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, ReadOnlyDirective, DisplayDirective, FrameSecurityDirective, ValidationPatchDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, RecursionDirective, TabDirective, GridDirective, ChangeDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective, ValueSyncDirective\r\n , TabControlDirective, TabItemDirective, CollapseDirective, AccordionPanelDirective, CollapsePatchDirective\r\n , DateTimeCoordinatorDirective, DateTimeValidationDirective\r\n , SirioInputComponent\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, SirioCollapseComponent, SirioCollapseTriggerDirective\r\n , TemplateWrapperComponent, DynamicHostComponent\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() form!: DynamicFormComponent;\r\n @Input() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() alignment: string = \"\";\r\n @Input() readOnly: boolean | null = null;\r\n @Input() recursionLevel: number = 0;\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 weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private languageService: LanguageService\r\n , private global: GlobalService\r\n , private formService: FormService\r\n , private grid: GridService\r\n , private chart: ChartService\r\n , private dialog: DialogService\r\n , private autoFocus: AutoFocusService\r\n , private el: ElementRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.programmability.addEvaluatorProviders(this.form);\r\n this.configureDatepicker();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus.consume(this.formGroup)) {\r\n setTimeout(() => {\r\n setFocus(this.el.nativeElement as HTMLElement);\r\n });\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.formService.getControl(this.formGroup, [component.path, component.key]);\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.formService.getControl(this.formGroup, [component.path, component.key]);\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 evaluateHeight(value: number | string | null): string | null {\r\n if (typeof value === \"number\") {\r\n return value + \"px\";\r\n }\r\n else if (typeof value === \"string\") {\r\n const result = this.programmability.evaluate(this.formGroup, value);\r\n if (typeof result === \"number\") {\r\n return result + \"px\";\r\n }\r\n return result;\r\n }\r\n return null;\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 }\r\n\r\n hasValues(component: any): boolean {\r\n if (!component) return false;\r\n const { values, valuesKey, valuesExpression } = component;\r\n return (\r\n isMeaningful(values) ||\r\n isMeaningful(valuesKey) ||\r\n isMeaningful(valuesExpression)\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 this.noData;\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 toLabel(value: any, list: Array<{ label: string; value: any }>): any {\r\n if (!list || !Array.isArray(list) || list.length === 0) {\r\n return value;\r\n }\r\n const getLabel = (value: any) => {\r\n const item = list.find(x => x.value === value);\r\n return item ? item.label : value;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.map(v => getLabel(v)).join(', ');\r\n }\r\n else {\r\n return getLabel(value); \r\n } \r\n }\r\n\r\n supportValues(component: any): boolean {\r\n if (!component) return false;\r\n return component.fieldtype === 'select' || component.fieldtype === 'taglist';\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));\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, this.grid.getCacheKey()\r\n , () => this.grid.getOptions(component, this.formGroup));\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): any {\r\n if (component.dataSource) {\r\n // Expression\r\n return this.evaluate(component.dataSource, true);\r\n }\r\n else {\r\n // Nothing\r\n return this.noData;\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 const addedItem = (formArray as any).addItem();\r\n this.autoFocus.mark(addedItem);\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number, withConfirm: boolean) {\r\n if (withConfirm) {\r\n this.dialog.confirm(this.locale(Texts, 'ConfirmDelete'), {\r\n \"title\": this.locale(Texts, 'Confirm'),\r\n \"buttons\": \"ConfirmCancel\",\r\n \"onResult\": (result) => {\r\n if (result.action === \"Yes\") {\r\n formArray.removeAt(index);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n formArray.removeAt(index);\r\n }\r\n }\r\n\r\n moveUpItem(formArray: FormArray, index: number) {\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index - 1, control);\r\n }\r\n\r\n moveDownItem(formArray: FormArray, index: number) {\r\n const control: AbstractControl = formArray.at(index);\r\n formArray.removeAt(index);\r\n formArray.insert(index + 1, control); \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 getFeelableProperties(component: any): Record<string, any> | null {\r\n const properties = component.properties;\r\n if (typeof properties === 'object' && properties !== null && !Array.isArray(properties)) {\r\n const feelable = toExpression(properties);\r\n return this.programmability.evaluate(this.formGroup, feelable);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getGroupOutline(component: any) {\r\n return {\r\n 'group-outline': component.showOutline === true\r\n };\r\n }\r\n\r\n getFormAlignment() {\r\n return this.getAlignmentRules(\"valign\", this.alignment); \r\n }\r\n\r\n getComponentAlignment(component: any) {\r\n return this.getAlignmentRules(\"component\", component.selfAlignment); \r\n }\r\n\r\n getTextAlignment(component: any): string {\r\n switch (component.textAlign) {\r\n case 'left': return \"text-left\"\r\n case 'center': return \"text-center\"\r\n case 'right': return \"text-right\"\r\n default: return \"\";\r\n }\r\n }\r\n\r\n getHorizontalAlignment(component: any) {\r\n const alignment = component.horizontalAlignment;\r\n const ruleName = \"horizontal\";\r\n return {\r\n [`${ruleName}-left`]: alignment === 'left',\r\n [`${ruleName}-center`]: alignment === 'center',\r\n [`${ruleName}-right`]: alignment === 'right',\r\n [`${ruleName}-fill`]: alignment === 'fill'\r\n };\r\n }\r\n\r\n getLightView(component: any): string {\r\n const className = 'light-view';\r\n const value = component.properties?.useLightReadonly\r\n || this.global.getProperty(\"useLightReadonly\", \"yes\");\r\n if (value !== \"yes\" && value !== \"no\")\r\n return className;\r\n return (value === \"yes\") ? className : \"\";\r\n }\r\n\r\n private noData: Observable<any> = of([]);\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\r\n }\r\n\r\n private getAlignmentRules(ruleName: string, alignment: string) {\r\n return {\r\n [`${ruleName}-start`]: alignment === 'start',\r\n [`${ruleName}-center`]: alignment === 'center',\r\n [`${ruleName}-end`]: alignment === 'end'\r\n };\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 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 private markForAutoFocus(formGroup: FormGroup) {\r\n (formGroup as any)['_autoFocus'] = true;\r\n }\r\n\r\n private requireAutoFocus(formGroup: FormGroup): boolean {\r\n return (formGroup as any)['_autoFocus'] === true;\r\n }\r\n\r\n\r\n}\r\n","<div [ngClass]=\"getFormAlignment()\">\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 [ngClass]=\"getComponentAlignment(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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\r\n [ngClass]=\"getTextAlignment(component)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [ngClass]=\"getTextAlignment(component)\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <div [formControlName]=\"component.key\"\r\n dateTimeCoordinator\r\n dateTimeValidator\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [datePicker]=\"date\"\r\n [timePicker]=\"time\"\r\n [readonly]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [valueSync]=\"component.valueSync\"\r\n #datetime\r\n [register]=\"component\"\r\n [componentRef]=\"datetime\"\r\n class=\"datetime-container\">\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 isoDate\r\n #date>\r\n </ngx-sirio-datepicker>\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 #time>\r\n </ngx-sirio-timepicker>\r\n </div>\r\n <ng-container *ngIf=\"getTextFeedback(component) as textFeedback\">\r\n <span class=\"sirio-form-feedback\">{{textFeedback}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"evaluateString(locale(component, 'description')) as textHelp\">\r\n <p class=\"sirio-helper-text\">{{textHelp}}</p>\r\n </ng-container>\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 </div>\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [ngClass]=\"getTextAlignment(component)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [valueSync]=\"component.valueSync\"\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 </div>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"></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]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\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 [valueSync]=\"component.valueSync\"\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 displayfield -->\r\n <ng-container *ngSwitchCase=\"'displayfield'\">\r\n <div class=\"sirio-control\"\r\n [ngClass]=\"[getTextAlignment(component), getLightView(component) ]\"\r\n #displayfield\r\n [register]=\"component\"\r\n [componentRef]=\"displayfield\">\r\n <div *ngIf=\"component.label\" class=\"sirio-label\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n <button *ngIf=\"component.tooltip\"\r\n sirioTooltip\r\n [content]=\"component.tooltip\"\r\n [hasPopover]=\"true\"\r\n [attr.aria-label]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n class=\"sirio-label-popover fas fa-info-circle\"></button>\r\n </div>\r\n <div class=\"sirio-form-control data-display\" [ngClass]=\"component.fieldtype\">\r\n <ng-container *ngIf=\"component.fieldtype === 'checkbox'; else defaultTemplate\">\r\n <i *ngIf=\"evaluate(component.expression)\" class=\"fas fa-check\"></i>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <ng-container *ngIf=\"supportValues(component) && hasValues(component); else simpleTemplate\">\r\n <ng-container *ngIf=\"getValues(component) | async as values\">\r\n {{ toLabel(evaluate(component.expression), values) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #simpleTemplate>\r\n {{ evaluate(component.expression) }}\r\n </ng-template>\r\n </div>\r\n <p *ngIf=\"component.description\" class=\"sirio-helper-text\">\r\n {{ evaluateString(locale(component, 'description')) }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\">\r\n <ng-container [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\" \r\n [recursion]=\"component\"\r\n #recursion=\"recursion\"\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>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i }\"></ng-container>\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>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i }\"></ng-container>\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 table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <table class=\"dynamiclist-table\" [ngClass]=\"{ 'main': recursionLevel == 0 }\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ng-container *ngIf=\"getFormGroup(item) as formItem\">\r\n <ng-container *ngIf=\"{ itemsArray: recursion.getItemsArray(formItem) } as recursionData\">\r\n <tr>\r\n <td class=\"content-cell\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true && component.subtype !== 'table', 'group-outline-repeat': true }\">\r\n <div>\r\n <label *ngIf=\"component.label\">{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"formItem\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"command-cell\">\r\n <div>\r\n <ng-container *ngIf=\"recursionData.itemsArray\">\r\n <ng-container *ngTemplateOutlet=\"buttonsAdd; context: { formArray: recursionData.itemsArray, compact: true }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsReorder; context: { formArray: formArray, i: i, compact: true }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsRemove; context: { formArray: formArray, i: i, compact: true }\"></ng-container>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"recursionData.itemsArray && recursionData.itemsArray.length > 0\">\r\n <td colspan=\"2\" class=\"recursion-cell\">\r\n <div class=\"layout\">\r\n <div class=\"recursion-toggle\">\r\n <ngx-sirio-button [ngxSirioCollapseTrigger]=\"collapseTemplate\"\r\n [color]=\"null\" [icon]=\"collapse.isOpen ? 'fas fa-chevron-down' : 'fas fa-chevron-right' \" />\r\n </div>\r\n <div *ngIf=\"!collapse.isOpen\" class=\"recursion-title\">\r\n <div class=\"recursion-text\">\r\n <ng-container *ngIf=\"!collapse.isOpen\">\r\n {{ recursionData.itemsArray.length }} elementi presenti\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"recursion-content\">\r\n <ngx-sirio-collapse #collapseTemplate\r\n #collapse=\"collapseExtension\"\r\n collapseExtension\r\n [isOpen]=\"true\">\r\n <div *ngIf=\"collapse.isOpen\" style=\"margin-bottom: -11px;\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"recursion.getFormGroup(formItem)\"\r\n [readOnly]=\"readOnly\"\r\n [recursionLevel]=\"recursionLevel+1\"\r\n [rows]=\"recursion.getComponentRows()\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </ngx-sirio-collapse>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </table>\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>\r\n <label *ngIf=\"component.label\">{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"getFormGroup(item)\"\r\n [readOnly]=\"readOnly\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove || component.allowReorder\">\r\n <div style=\"text-align:right\">\r\n <ng-container *ngTemplateOutlet=\"buttonsReorder; context: { formArray: formArray, i: i }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"buttonsRemove; context: { formArray: formArray, i: i }\"></ng-container>\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=\"formArray.controls.length == 0\">\r\n <div class=\"dynamiclist-no-data\">{{ evaluateString(locale(component, 'noDataText')) || locale(Texts, 'NoData') }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"recursionLevel == 0\">\r\n <ng-container *ngTemplateOutlet=\"buttonsAdd; context: { formArray: formArray }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container> \r\n <!-- #region templates -->\r\n <ng-template #btnMoveUp let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"locale(Texts, 'MoveUp') as upLabel\">\r\n <ngx-sirio-button (click)=\"moveUpItem(formArray, i)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"upLabel\"\r\n [title]=\"upLabel\"\r\n [color]=\"null\" icon=\"fas fa-arrow-up\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ upLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnMoveDown let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"locale(Texts, 'MoveDown') as downLabel\">\r\n <ngx-sirio-button (click)=\"moveDownItem(formArray, i)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"downLabel\"\r\n [title]=\"downLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-arrow-down\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ downLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnRemove let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) as removeLabel\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i, true)\"\r\n class=\"remove-item\"\r\n [ariaLabel]=\"removeLabel\"\r\n [title]=\"removeLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-trash\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ removeLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #btnAdd let-formArray=\"formArray\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) as addLabel\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\"\r\n class=\"add-item\"\r\n [ariaLabel]=\"addLabel\"\r\n [title]=\"addLabel\"\r\n [color]=\"null\"\r\n icon=\"fas fa-plus\">\r\n <ng-container *ngIf=\"!compact\">\r\n {{ addLabel }}\r\n </ng-container>\r\n </ngx-sirio-button>\r\n </ng-container> \r\n </ng-template>\r\n <ng-template #buttonsReorder let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowReorder\">\r\n <ng-container *ngTemplateOutlet=\"btnMoveUp; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"btnMoveDown; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #buttonsRemove let-formArray=\"formArray\" let-i=\"i\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <ng-container *ngTemplateOutlet=\"btnRemove; context: { formArray: formArray, i: i, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #buttonsAdd let-formArray=\"formArray\" let-compact=\"compact\">\r\n <ng-container *ngIf=\"!readOnly && component.allowAddRemove\">\r\n <ng-container *ngTemplateOutlet=\"btnAdd; context: { formArray: formArray, compact: compact }\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <!-- #endregion -->\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"getGroupOutline(component)\">\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 [form]=\"form\"\r\n [formGroup]=\"resolvePath(component.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(component.readonly)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></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 <ngx-sirio-tab-item [label]=\"evaluateString(locale(panel, 'label'))\"\r\n [icon]=\"evaluateString(panel.icon)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n #tabPanel\r\n tabItem\r\n [componentRef]=\"tab\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <div *ngIf=\"tabPanel.isActive\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"template?.rows\"\r\n [readOnly]=\"readOnly || evaluateBoolean(panel.readonly)\"\r\n [alignment]=\"template?.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\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 <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>\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <app-dynamic-fields [form]=\"form\"\r\n [formGroup]=\"resolvePath(panel.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(panel.readonly)\"\r\n [rows]=\"template?.rows\"\r\n [alignment]=\"template?.verticalAlignment\"></app-dynamic-fields>\r\n </ng-container>\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 #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 [selectable]=\"evaluateBoolean(component.selectable)\"\r\n [multiSelect]=\"evaluateBoolean(component.multiSelect)\"\r\n (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [suppressActions]=\"evaluateBoolean(component.suppressActions)\"\r\n [columnDefs]=\"component.columns || evaluate(component.columnsExpression) || []\"\r\n [rowSource]=\"getRowSource(component)\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height]=\"evaluateHeight(component.height)\"\r\n [formGroup]=\"formGroup\"\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 <div [ngClass]=\"getHorizontalAlignment(component)\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n <ng-container *ngIf=\"evaluateString(component.icon) as icon; else noIcon\">\r\n <span *ngIf=\"component.iconPosition!='right'\" [class]=\"icon\" aria-hidden=\"true\"></span>\r\n {{ evaluateString(locale(component, 'label')) }}\r\n <span *ngIf=\"component.iconPosition=='right'\" [class]=\"icon\" aria-hidden=\"true\"></span>\r\n </ng-container>\r\n <ng-template #noIcon>\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ng-template>\r\n </ngx-sirio-button>\r\n </div> \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 <!-- #region component -->\r\n <ng-container *ngSwitchCase=\"'component'\">\r\n <ng-container *ngIf=\"component.isInput; else noInputTemplate\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <app-dynamic-host [properties]=\"getFeelableProperties(component)\"\r\n [formGroup]=\"resolvePath(component.path)\"\r\n #componentHost\r\n [register]=\"component\"\r\n [componentRef]=\"componentHost\" />\r\n </ng-container>\r\n <ng-template #noInputTemplate>\r\n <app-dynamic-host [properties]=\"getFeelableProperties(component)\"\r\n #componentHost\r\n [register]=\"component\"\r\n [componentRef]=\"componentHost\" />\r\n </ng-template>\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</div>\r\n\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[formIndex]',\r\n standalone: true\r\n})\r\nexport class FormIndexDirective implements AfterContentInit {\r\n @Input() formIndex!: number;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef.formIndex = this.formIndex;\r\n }\r\n\r\n}\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 { FormBuilder, FormGroup, FormControlOptions, AbstractControl, FormArray } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { IEvaluatorProvider, ProgrammabilityService } from '../services/programmability.service';\r\nimport { ValidationService, ValidationCollection } from '../services/validation.service';\r\nimport { DisableService, DisableCollection } from '../services/disable.service';\r\nimport { StatusService, StatusCollection } from '../services/status.service';\r\nimport { EventService, EventCollection } from '../services/event.service';\r\nimport { ComputeService, ComputeCollection } from '../services/compute.service';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { FormService } from '../services/form.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, NgxSirioEvent\r\n} from 'ngx-sirio-lib';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { FormIndexDirective } from '../directives/formIndex.directive';\r\nimport { ToBoundArrows } from '../utils/bound';\r\n\r\nimport { Control } from '../controls/control'; \r\nimport { setFocus } from '../utils/focusable';\r\n\r\nimport { LanguageService } from '@wemake4u/interact';\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, FormIndexDirective\r\n , SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent\r\n , SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent\r\n , DynamicFieldsComponent],\r\n providers: [\r\n ProgrammabilityService\r\n , ValidationService\r\n , DisableService\r\n , ComputeService\r\n , StatusService\r\n , EventService\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, IEvaluatorProvider {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() readOnly: boolean | null = null;\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() 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 validationService: ValidationService\r\n , private disableService: DisableService\r\n , private computeService: ComputeService\r\n , private statusService: StatusService\r\n , private eventService: EventService\r\n , private registerService: RegisterService\r\n , private languageService: LanguageService\r\n , private metadata: MetadataService\r\n , private formService: FormService\r\n , private dialog: DialogService\r\n , private injector: Injector\r\n ) {\r\n this.programmability.addEvaluatorProviders(this);\r\n }\r\n \r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['schema']) {\r\n this.onChangeSchema();\r\n }\r\n\r\n if (changes['value'] && !this.isEmittedValue(this.value)) {\r\n this.onChangeValue();\r\n }\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 if (this.isDisabled(value) || this.isInactive(value))\r\n return;\r\n this._activeNav = value;\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\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.isInactive(index)) {\r\n return \"inactive\";\r\n }\r\n else if (this.progressStatus && !current) {\r\n const errors = this.countInvalids(form);\r\n return errors > 0 ? \"error\" : \"success\";\r\n }\r\n else {\r\n return \"active\";\r\n } \r\n }\r\n\r\n countInvalids(form: any): number {\r\n return this.statusService.countInvalid(form);\r\n }\r\n\r\n activateForm(event: NgxSirioEvent<SirioStepperProgressBarComponent>) {\r\n const formIndex = (event.component as any).formIndex;\r\n if (typeof formIndex === 'number') {\r\n this.activeNav = formIndex;\r\n }\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 };\r\n this.dialog.openDialog(formSchema, options);\r\n } \r\n }\r\n\r\n isChanged(): boolean {\r\n return this.formGroup.dirty;\r\n }\r\n\r\n isValid(): boolean {\r\n return this.formGroup.valid;\r\n }\r\n\r\n getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n 'canPrevious',\r\n 'goPrevious',\r\n 'canNext',\r\n 'goNext',\r\n 'activeNav'\r\n ]);\r\n }\r\n\r\n private valueChangesSubscription: Subscription | null = null;\r\n \r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private defaultValue: any = { };\r\n\r\n private get language(): string {\r\n return this.languageService.getLanguage();\r\n }\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 this.formService.patch(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 try {\r\n this.validationService.suppress = true;\r\n this.suspendValueChanges = true;\r\n\r\n const emitEvent = true;\r\n this.formGroup.reset(this.defaultValue, { emitEvent });\r\n this.clearFormArrays(this.formGroup, emitEvent);\r\n this.formService.patch(this.formGroup, this.value, {\r\n emitEvent,\r\n strict: this.strict\r\n });\r\n }\r\n finally {\r\n this.validationService.suppress = false;\r\n this.formService.updateAllValueAndValidity(this.formGroup, true);\r\n this.suspendValueChanges = false;\r\n this.emitValueChange();\r\n }\r\n }\r\n\r\n private suspendValueChanges: boolean = false;\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n if (this.suspendValueChanges)\r\n return;\r\n this.emitValueChange(); \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\r\n private emittedValues = new WeakMap<object, true>();\r\n\r\n private isEmittedValue(value: any): boolean {\r\n if (typeof value === 'object' && value !== null && this.emittedValues.has(value)) {\r\n this.emittedValues.delete(value);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n private emitValueChange(): void {\r\n const newValue = this.formGroup.value;\r\n this.emittedValues.set(newValue, true);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n refresh() {\r\n try {\r\n this.suspendValueChanges = true;\r\n this.formService.patch(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n } finally {\r\n this.suspendValueChanges = false;\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) && !this.isInactive(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) && !this.isInactive(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 isInactive(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.inactive) ?? 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, emitEvent: boolean): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear({ emitEvent });\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, emitEvent);\r\n });\r\n }\r\n }\r\n\r\n private buildForm() {\r\n const validationCollection = this.validationService.createCollection();\r\n const disableCollection = this.disableService.createCollection();\r\n const eventCollection = this.eventService.createCollection();\r\n const computeCollection = this.computeService.createCollection();\r\n this.forms.forEach((form: any) => {\r\n const statusCollection = this.statusService.createCollection();\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n if (this.hasPath(form.path)) {\r\n this.disableService.addToCollection(disableCollection, currentGroup, this.formGroup, form);\r\n }\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\r\n });\r\n this.statusService.setupCollection(form, statusCollection);\r\n });\r\n this.disableService.setupCollection(disableCollection);\r\n this.computeService.setupCollection(computeCollection);\r\n this.validationService.setupCollection(validationCollection);\r\n this.eventService.setupCollection(eventCollection);\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder\r\n , formGroup: FormGroup\r\n , components: Array<any>\r\n , disableCollection: DisableCollection\r\n , computeCollection: ComputeCollection\r\n , validationCollection: ValidationCollection\r\n , statusCollection: StatusCollection\r\n , eventCollection: EventCollection) {\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 if (currentGroup.contains(component.key)) {\r\n this.statusService.addToCollection(statusCollection, currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else {\r\n let defaultValue = this.getDefaultValue(component);\r\n const options: FormControlOptions = {\r\n updateOn: this.getUpdateOn(component) || \"change\",\r\n nonNullable: (defaultValue !== null && defaultValue !== undefined)\r\n };\r\n const control = formBuilder.control(defaultValue, options); \r\n currentGroup.addControl(component.key, control);\r\n this.statusService.addToCollection(statusCollection, control);\r\n this.disableService.addToCollection(disableCollection, control, formGroup, component);\r\n this.computeService.addToCollection(computeCollection, control, formGroup, component);\r\n this.validationService.addToCollection(validationCollection, control, currentGroup, component);\r\n this.eventService.addToCollection(eventCollection, control, currentGroup, component);\r\n }\r\n }\r\n else if (this.isContainerComponent(component)) {\r\n const containers = this.getContainers(component);\r\n containers?.forEach((container) => {\r\n const currentGroup = this.applyPath(formBuilder, formGroup, container.path);\r\n if (this.hasPath(container.path)) {\r\n this.disableService.addToCollection(disableCollection, currentGroup, formGroup, container);\r\n }\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\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 const formArray = this.createFormArray(formBuilder, currentGroup, itemComponent);\r\n this.statusService.addToCollection(statusCollection, formArray);\r\n }\r\n }\r\n else if (this.isComponentWithInput(component)) {\r\n const currentGroup = this.applyPath(this.fb, formGroup, component.path);\r\n if (currentGroup.contains(component.key)) {\r\n this.statusService.addToCollection(statusCollection, currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else {\r\n const control = formBuilder.control(null);\r\n currentGroup.addControl(component.key, control);\r\n this.statusService.addToCollection(statusCollection, control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder\r\n , formGroup: FormGroup\r\n , 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 (target: FormArray | null): FormGroup {\r\n const statusCollection = formComponent.statusService.createCollection();\r\n const validationCollection = formComponent.validationService.createCollection();\r\n const eventCollection = formComponent.eventService.createCollection();\r\n const disableCollection = formComponent.disableService.createCollection();\r\n const computeCollection = formComponent.computeService.createCollection();\r\n let newGroup = formBuilder.group({});\r\n target?.push(newGroup);\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components\r\n , disableCollection\r\n , computeCollection\r\n , validationCollection\r\n , statusCollection\r\n , eventCollection);\r\n });\r\n // ignore statusCollection\r\n formComponent.disableService.setupCollection(disableCollection);\r\n formComponent.computeService.setupCollection(computeCollection);\r\n formComponent.validationService.setupCollection(validationCollection);\r\n formComponent.eventService.setupCollection(eventCollection);\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 return createItem(this);\r\n };\r\n\r\n const createNewArray = function (this: FormArray) {\r\n const newArray = new FormArray([]);\r\n prepareArray(newArray);\r\n return newArray;\r\n }\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.createItem = createItem;\r\n array.resize = resize;\r\n array.createNewArray = createNewArray;\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 // used externally: addItem, resize\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: (target: FormArray | null) => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n createItem(newArray); \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 hasPath(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n\r\n private applyPath(formBuilder: FormBuilder, formGroup: FormGroup, path: string) {\r\n if (!this.hasPath(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 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 case \"expression\":\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 isComponentWithInput(component: any): boolean {\r\n return component.type === \"component\"\r\n && component.isInput === true\r\n && component.key;\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, disabled: any }[] {\r\n if (component.type === 'group') {\r\n return [{\r\n path: component.path,\r\n rows: component.rows,\r\n disabled: component.disabled\r\n }];\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 disabled: panel.disabled\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 ?? false) 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","<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)\"\r\n [hasDropdown]=\"true\"\r\n [dropDownLabel]=\"locale(Texts, 'Show')\">\r\n <ng-container *ngFor=\"let form of forms, let formIndex = index\"> \r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ng-container *ngIf=\"getFormStatus(form, formIndex) as status\">\r\n <ngx-sirio-stepper-progress-item [hasNavigation]=\"status !== 'inactive'\"\r\n [status]=\"status\"\r\n [label]=\"evaluateTemplate(locale(form, 'title'))\"\r\n #progressItem\r\n [componentRef]=\"progressItem\"\r\n [formIndex]=\"formIndex\"/>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ngx-sirio-stepper-progress-bar>\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 formIndex = index\">\r\n <ng-container *ngIf=\"!evaluateBoolean(form.disabled)\">\r\n <ng-container *ngIf=\"getFormStatus(form, formIndex) as status\">\r\n <ng-container *ngIf=\"{ count: countInvalids(form) } as errors\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == formIndex\"\r\n (click)=\"activeNav = formIndex\"\r\n [disabledState]=\"status === 'inactive'\"\r\n (keydown.enter)=\"activeNav = formIndex\"\r\n [withTag]=\"errors.count > 0\"\r\n tagType=\"danger\"\r\n [tagValue]=\"errors.count\"\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 </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 [form]=\"this\"\r\n [formGroup]=\"getFormGroup(form.path)\"\r\n [readOnly]=\"readOnly || evaluateBoolean(form.readonly)\"\r\n [rows]=\"form.rows\"\r\n [alignment]=\"form.verticalAlignment\"></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</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","export function syncronize(target: any, source: any): any {\r\n // If source is a primitive or null/undefined → replace directly\r\n if (source === null || source === undefined || typeof source !== \"object\") {\r\n return source;\r\n }\r\n\r\n // If target is null/undefined or a primitive → create a new container (array/object)\r\n if (target === null || target === undefined || typeof target !== \"object\") {\r\n target = Array.isArray(source) ? [] : {};\r\n }\r\n\r\n // Handle arrays\r\n if (Array.isArray(source)) {\r\n if (!Array.isArray(target)) {\r\n target = [];\r\n }\r\n\r\n target.length = source.length;\r\n\r\n for (let i = 0; i < source.length; i++) {\r\n target[i] = syncronize(target[i], source[i]);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n // Handle objects\r\n\r\n // Remove missing keys\r\n for (const key of Object.keys(target)) {\r\n if (!(key in source)) {\r\n delete target[key];\r\n }\r\n }\r\n\r\n // Add or update keys\r\n for (const [key, value] of Object.entries(source)) {\r\n target[key] = syncronize(target[key], value);\r\n }\r\n\r\n return target;\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","import { Injectable } from '@angular/core';\r\nimport { ConfirmationController } from '@wemake4u/interact';\r\nimport { DialogOptions, DialogService } from '../services/dialog.service';\r\nimport { Observable } from 'rxjs';\r\n \r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultConfirmationController implements ConfirmationController {\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n confirm(message?: string, title?: string): Observable<boolean> {\r\n\r\n return new Observable<boolean>(observer => {\r\n const options: DialogOptions = {\r\n title: title,\r\n type: 'info',\r\n onResult: result => {\r\n if (result.action === 'Yes') {\r\n observer.next(true);\r\n } else {\r\n observer.next(false);\r\n }\r\n observer.complete();\r\n }\r\n };\r\n\r\n this.dialogService.confirm(message ?? \"\", options); \r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NotificationController, NotifyTypes } from '@wemake4u/interact';\r\nimport { ToastService } from '../services/toast.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultNotificationController implements NotificationController {\r\n\r\n constructor(private toast: ToastService) {\r\n }\r\n\r\n notify(type: NotifyTypes, message: string, title?: string): void {\r\n\r\n const delay = 5000;\r\n\r\n switch (type) {\r\n case 'info': this.toast.notifyInfo(message, title, delay); break;\r\n case 'warning': this.toast.notifyWarning(message, title, delay); break;\r\n case 'error': this.toast.notifyError(message, title, delay); break;\r\n case 'success': this.toast.notifySuccess(message, title, delay); break;\r\n default: break;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PromptController } from '@wemake4u/interact';\r\nimport { DialogOptions, DialogService } from '../services/dialog.service';\r\nimport { Observable } from 'rxjs';\r\n \r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultPromptController implements PromptController {\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n prompt(message?: string, defaultValue?: string, title?: string): Observable<string | null> {\r\n return new Observable<string | null>(observer => {\r\n const options: DialogOptions = {\r\n title: title,\r\n type: 'info',\r\n onResult: result => {\r\n if (result.action === 'OK') {\r\n observer.next(result.value.input);\r\n }\r\n observer.complete();\r\n }\r\n };\r\n\r\n this.dialogService.prompt(message ?? \"Prompt\", defaultValue, options);\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["StatusDependency","evaluateTemplate","evaluate","Texts","it","en","de","fr","es","pt","i1","i1.MetadataService","i2.DialogService","FormControl","filter","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FormatterService","i6.FunctionService","i7.FormService","i8.GlobalService","i9.RegisterService","i10.ScopeService","i2.ProgrammabilityService","i1.ProgrammabilityService","i2.FormService","i2","i2.GlobalService","i1.FormatterService","i3.ProgrammabilityService","i4.WeakService","map","classNames","i1.FormService","debounceTime","i3.CacheContextService","take","catchError","i2.GridService","i4","takeUntil","i1.RegisterService","tap","i1.GlobalService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.WeakService","i6.RegisterService","i7.MetadataService","i8","i9.GlobalService","i10.FormService","i11.GridService","i12.ChartService","i13.DialogService","i14.AutoFocusService","i16","i3.ValidationService","i4.DisableService","i5.ComputeService","i6.StatusService","i7.EventService","i8.RegisterService","i9","i10.MetadataService","i11.FormService","i12.DialogService","i13","i1.DialogService","i1.ToastService"],"mappings":"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"}