@wemake4u/form-player-se 1.0.26 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +3 -3
  2. package/esm2022/lib/components/deleteRowRenderer/deleteRowRenderer.component.mjs +3 -3
  3. package/esm2022/lib/components/hostCellRenderer/hostCellRenderer.component.mjs +3 -3
  4. package/esm2022/lib/components/objectURLRenderer/objectURLRenderer.component.mjs +3 -3
  5. package/esm2022/lib/components/setFilter/setFilter.component.mjs +3 -3
  6. package/esm2022/lib/dialog/dialog.component.mjs +3 -3
  7. package/esm2022/lib/directives/accordion.directive.mjs +3 -3
  8. package/esm2022/lib/directives/accordionpanel.directive.mjs +3 -3
  9. package/esm2022/lib/directives/adorner.directive.mjs +3 -3
  10. package/esm2022/lib/directives/change.directive.mjs +3 -3
  11. package/esm2022/lib/directives/collapse.directive.mjs +3 -3
  12. package/esm2022/lib/directives/date.directive.mjs +3 -3
  13. package/esm2022/lib/directives/dialog.directive.mjs +3 -3
  14. package/esm2022/lib/directives/display.directive.mjs +3 -3
  15. package/esm2022/lib/directives/dropdown.directive.mjs +3 -3
  16. package/esm2022/lib/directives/formIndex.directive.mjs +3 -3
  17. package/esm2022/lib/directives/framesecurity.directive.mjs +3 -3
  18. package/esm2022/lib/directives/grid.directive.mjs +49 -13
  19. package/esm2022/lib/directives/number.directive.mjs +5 -8
  20. package/esm2022/lib/directives/readonly.directive.mjs +3 -3
  21. package/esm2022/lib/directives/refresh.directive.mjs +3 -3
  22. package/esm2022/lib/directives/register.directive.mjs +3 -3
  23. package/esm2022/lib/directives/repeat.directive.mjs +8 -7
  24. package/esm2022/lib/directives/tab.directive.mjs +3 -3
  25. package/esm2022/lib/directives/tabcontrol.directive.mjs +3 -3
  26. package/esm2022/lib/directives/text.directive.mjs +3 -3
  27. package/esm2022/lib/directives/updateblur.directive.mjs +3 -3
  28. package/esm2022/lib/directives/validationpatch.directive.mjs +34 -0
  29. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +36 -16
  30. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +15 -10
  31. package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +3 -3
  32. package/esm2022/lib/interact/confirmation.mjs +3 -3
  33. package/esm2022/lib/interact/notification.mjs +3 -3
  34. package/esm2022/lib/interact/prompt.mjs +3 -3
  35. package/esm2022/lib/services/chart.service.mjs +3 -3
  36. package/esm2022/lib/services/data.service.mjs +3 -3
  37. package/esm2022/lib/services/dialog.service.mjs +3 -3
  38. package/esm2022/lib/services/event.service.mjs +3 -3
  39. package/esm2022/lib/services/feel.service.mjs +3 -3
  40. package/esm2022/lib/services/form.service.mjs +3 -3
  41. package/esm2022/lib/services/formatter.service.mjs +3 -3
  42. package/esm2022/lib/services/function.service.mjs +3 -3
  43. package/esm2022/lib/services/global.service.mjs +3 -3
  44. package/esm2022/lib/services/grid.service.mjs +3 -3
  45. package/esm2022/lib/services/markdown.service.mjs +3 -3
  46. package/esm2022/lib/services/metadata.service.mjs +3 -3
  47. package/esm2022/lib/services/mime.service.mjs +3 -3
  48. package/esm2022/lib/services/programmability.service.mjs +85 -35
  49. package/esm2022/lib/services/register.service.mjs +3 -3
  50. package/esm2022/lib/services/sanitize.service.mjs +3 -3
  51. package/esm2022/lib/services/scope.service.mjs +3 -3
  52. package/esm2022/lib/services/toast.service.mjs +3 -3
  53. package/esm2022/lib/services/weak.service.mjs +3 -3
  54. package/esm2022/lib/shared/template-wrapper/template-wrapper.component.mjs +3 -3
  55. package/esm2022/lib/utils/syncronize.mjs +34 -0
  56. package/esm2022/public-api.mjs +2 -1
  57. package/fesm2022/wemake4u-form-player-se.mjs +395 -225
  58. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  59. package/lib/directives/grid.directive.d.ts +2 -0
  60. package/lib/directives/validationpatch.directive.d.ts +7 -0
  61. package/lib/dynamic-fields/dynamic-fields.component.d.ts +5 -1
  62. package/lib/dynamic-form/dynamic-form.component.d.ts +2 -1
  63. package/lib/services/programmability.service.d.ts +3 -3
  64. package/lib/utils/syncronize.d.ts +1 -0
  65. package/package.json +1 -1
  66. package/public-api.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"wemake4u-form-player-se.mjs","sources":["../../../projects/ngx-sirio/src/lib/utils/functions.ts","../../../projects/ngx-sirio/src/lib/utils/feelable.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/services/toast.service.ts","../../../projects/ngx-sirio/src/lib/directives/dialog.directive.ts","../../../projects/ngx-sirio/src/lib/locale/locale-it.ts","../../../projects/ngx-sirio/src/lib/locale/locale-en.ts","../../../projects/ngx-sirio/src/lib/locale/locale-de.ts","../../../projects/ngx-sirio/src/lib/locale/locale-fr.ts","../../../projects/ngx-sirio/src/lib/locale/locale-es.ts","../../../projects/ngx-sirio/src/lib/locale/locale-pt.ts","../../../projects/ngx-sirio/src/lib/locale/locale.ts","../../../projects/ngx-sirio/src/lib/locale/localize.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.html","../../../projects/ngx-sirio/src/lib/services/dialog.service.ts","../../../projects/ngx-sirio/src/lib/services/formatter.service.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/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/groupByRow.ts","../../../projects/ngx-sirio/src/lib/services/event.service.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/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/directives/framesecurity.directive.ts","../../../projects/ngx-sirio/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tab.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordion.directive.ts","../../../projects/ngx-sirio/src/lib/directives/grid.directive.ts","../../../projects/ngx-sirio/src/lib/directives/change.directive.ts","../../../projects/ngx-sirio/src/lib/controls/form.ts","../../../projects/ngx-sirio/src/lib/controls/textfield.ts","../../../projects/ngx-sirio/src/lib/controls/select.ts","../../../projects/ngx-sirio/src/lib/controls/taglist.ts","../../../projects/ngx-sirio/src/lib/controls/number.ts","../../../projects/ngx-sirio/src/lib/controls/date.ts","../../../projects/ngx-sirio/src/lib/controls/time.ts","../../../projects/ngx-sirio/src/lib/controls/toggle.ts","../../../projects/ngx-sirio/src/lib/controls/checkbox.ts","../../../projects/ngx-sirio/src/lib/controls/chipradio.ts","../../../projects/ngx-sirio/src/lib/controls/radio.ts","../../../projects/ngx-sirio/src/lib/controls/chipchecklist.ts","../../../projects/ngx-sirio/src/lib/controls/checklist.ts","../../../projects/ngx-sirio/src/lib/controls/textarea.ts","../../../projects/ngx-sirio/src/lib/controls/filepicker.ts","../../../projects/ngx-sirio/src/lib/controls/text.ts","../../../projects/ngx-sirio/src/lib/controls/html.ts","../../../projects/ngx-sirio/src/lib/controls/image.ts","../../../projects/ngx-sirio/src/lib/controls/tab.ts","../../../projects/ngx-sirio/src/lib/controls/chart.ts","../../../projects/ngx-sirio/src/lib/controls/accordion.ts","../../../projects/ngx-sirio/src/lib/controls/dynamiclist.ts","../../../projects/ngx-sirio/src/lib/controls/group.ts","../../../projects/ngx-sirio/src/lib/controls/table.ts","../../../projects/ngx-sirio/src/lib/controls/button.ts","../../../projects/ngx-sirio/src/lib/controls/separator.ts","../../../projects/ngx-sirio/src/lib/controls/spacer.ts","../../../projects/ngx-sirio/src/lib/controls/iframe.ts","../../../projects/ngx-sirio/src/lib/controls/tooltip.ts","../../../projects/ngx-sirio/src/lib/controls/factory.ts","../../../projects/ngx-sirio/src/lib/directives/register.directive.ts","../../../projects/ngx-sirio/src/lib/directives/refresh.directive.ts","../../../projects/ngx-sirio/src/lib/directives/updateblur.directive.ts","../../../projects/ngx-sirio/src/lib/directives/date.directive.ts","../../../projects/ngx-sirio/src/lib/directives/number.directive.ts","../../../projects/ngx-sirio/src/lib/directives/text.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapse.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordionpanel.directive.ts","../../../projects/ngx-sirio/src/lib/shared/template-wrapper/template-wrapper.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.html","../../../projects/ngx-sirio/src/lib/services/sanitize.service.ts","../../../projects/ngx-sirio/src/lib/services/markdown.service.ts","../../../projects/ngx-sirio/src/lib/services/mime.service.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.html","../../../projects/ngx-sirio/src/lib/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/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 ToBoundArrows<T extends object>(\r\n instance: T,\r\n methodNames: (keyof T)[]) : Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const name of methodNames) {\r\n const original = instance[name];\r\n if (typeof original === 'function') {\r\n result[name as string] = (...args: any[]) => original.apply(instance, args);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function ToProxy(instance: any) {\r\n\r\n if (!instance) {\r\n return instance;\r\n }\r\n\r\n return new Proxy(instance, {\r\n get: (target: any, property) => {\r\n\r\n let value = undefined;\r\n\r\n if (property in target) {\r\n value = Reflect.get(target, property, target);\r\n }\r\n\r\n if (typeof value === 'function') {\r\n return (...args: any[]) => value.apply(instance, args);\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n return ToProxy(value);\r\n }\r\n\r\n return value;\r\n }\r\n });\r\n\r\n}\r\n","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","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","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { SirioToastService, ToastTypes } from \"ngx-sirio-lib\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private sirioToast: SirioToastService\r\n ) { }\r\n\r\n notifyInfo(message: string, 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};\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};\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};\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};\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};\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};\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/functions';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private dialogService: SirioDialogService\r\n )\r\n { }\r\n\r\n openDialog(formSchema: any, options?: FormDialogOptions) {\r\n this.showDialog(formSchema, options);\r\n }\r\n\r\n alert(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions : FormDialogOptions = {\r\n ...options,\r\n type: \"warning\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n info(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n confirm(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'YesNo',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n }; \r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n 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/functions';\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","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/functions';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class FunctionService implements IEvaluatorProvider {\r\n\r\n constructor(private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector) { }\r\n\r\n invokable(func: any): Function {\r\n 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 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 getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\"\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\n\r\nexport type Path = string | number | Array<string | number>;\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};\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 errors(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 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 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 normalizePath = (path: Path): (string | number)[] => {\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\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 (!segment) {\r\n continue;\r\n }\r\n else 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 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 } 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 {\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 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\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\n\r\n@Injectable()\r\nexport class ScopeService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: ScopeService | null) {\r\n }\r\n\r\n private scope: Record<string, any> | null = null;\r\n\r\n set(scope: Record<string, any> | null) {\r\n this.scope = scope;\r\n }\r\n\r\n get(): Record<string, any> | null {\r\n return this.scope; \r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...this.scope,\r\n parent: () => {\r\n this.parent?.getContext();\r\n }\r\n };\r\n } \r\n}\r\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup, ValidatorFn, Validators, ValidationErrors } 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/functions';\r\nimport { toFeelable } from '../utils/feelable';\r\nimport { Subject, takeUntil, distinctUntilChanged, isObservable, Observable } from \"rxjs\";\r\nimport { tap } from 'rxjs/operators';\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 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 readonly predefinedFunctions: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return 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): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n return value ?? \"\";\r\n }\r\n\r\n evaluateBoolean(formGroup: FormGroup, value: boolean | string | null, options: EvaluateOptions = {}): boolean | null {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue), options) as boolean;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue)) as number;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = { }): any {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options);\r\n }\r\n return null;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null): any {\r\n\r\n let template: string | null = null;\r\n\r\n if (this.isExpression(value)) {\r\n template = this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n if (!template)\r\n return \"\";\r\n\r\n return this.evalTemplate(formGroup, template);\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input);\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(value: string | null): void {\r\n if (this.isExpression(value)) {\r\n this.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 disable(formGroup: FormGroup, control: AbstractControl, value: boolean | string | null): 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 logDisabled = (value: any) => {\r\n if (!this.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 value === 'boolean') {\r\n disableControl(value);\r\n }\r\n else if (typeof value === 'string') {\r\n if (this.isExpression(value)) {\r\n const expression = this.getExpression(value);\r\n const dependencies = this.getDependencies(expression);\r\n const applyExpression = () => {\r\n const result = this.evaluateBoolean(formGroup, value, { cacheable: false });\r\n disableControl(result);\r\n };\r\n if (dependencies.length > 0) {\r\n this.watch(formGroup, dependencies, () => {\r\n applyExpression();\r\n });\r\n }\r\n applyExpression();\r\n }\r\n }\r\n }\r\n\r\n validate(formGroup: FormGroup, key: string, required?: boolean, validations?: ValidationRule[]): [ValidatorFn[], (control: AbstractControl) => void]\r\n {\r\n const validators: ValidatorFn[] = [];\r\n\r\n const noWatching = () => { };\r\n\r\n if (required === true) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n if (!Array.isArray(validations)) {\r\n return [validators, noWatching];\r\n }\r\n\r\n validations.forEach((item: ValidationRule) => {\r\n if (!this.isExpression(item.expression))\r\n return;\r\n\r\n if (item.type === \"validate\") {\r\n validators.push(this.validateFn(formGroup, item));\r\n }\r\n else if (item.type === \"invalidate\") {\r\n validators.push(this.invalidateFn(formGroup, item));\r\n }\r\n });\r\n\r\n const watching = (control: AbstractControl): void => {\r\n this.watchForValidation(formGroup, control, key, validations);\r\n };\r\n \r\n return [validators, watching];\r\n }\r\n\r\n private cacheable: boolean = true;\r\n\r\n private verbose: boolean = false;\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) {\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)\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 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 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\r\n const providers: IEvaluatorProvider[] = [\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 return providers.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private 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 valueSubscribe = (control: AbstractControl) => {\r\n control.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n logValueChanged(control);\r\n });\r\n });\r\n }\r\n\r\n const statusSubscribe = (control: AbstractControl) => {\r\n control.statusChanges\r\n .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n logStatusChanged(control);\r\n });\r\n });\r\n }\r\n\r\n for (const dependence of dependencies) {\r\n const [path, status] = this.processDependencies(dependence);\r\n //potrei scrivere una funzione che mi restituisce i control da control\r\n //risalendo fino al FormGroup\r\n const control = this.formService.getControl(formGroup, path);\r\n if (control) {\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 }\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 private validateFn(formGroup: FormGroup, item: ValidationRule): ValidatorFn { \r\n return (control: AbstractControl): ValidationErrors | null => {\r\n return this.validateRule(formGroup, control, item, (result: any) => !result);\r\n };\r\n }\r\n\r\n private invalidateFn(formGroup: FormGroup, item: ValidationRule): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n return this.validateRule(formGroup, control, item, (result: any) => result);\r\n };\r\n }\r\n\r\n private validateRule(formGroup: FormGroup, control: AbstractControl, item: ValidationRule\r\n , predicate: (result: any) => boolean): ValidationErrors | null {\r\n\r\n //if (!control.touched)\r\n // return null;\r\n\r\n const logValidation = (value: ValidationErrors | null) => {\r\n if (!this.verbose) return;\r\n if (value === null) {\r\n console.log(\"Validate successfully\", control.value, { path: this.getPath(control), item, control, formGroup });\r\n }\r\n else {\r\n console.log(\"Validation failed\", control.value, { resut: value, path: this.getPath(control), item, control, formGroup });\r\n }\r\n };\r\n\r\n var result = this.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n if (predicate(result)) {\r\n const message = this.evaluateString(formGroup, item.message);\r\n const validationError = { error: true, message };\r\n logValidation(validationError);\r\n return validationError;\r\n }\r\n\r\n logValidation(null);\r\n return null;\r\n }\r\n\r\n private watchForValidation(formGroup: FormGroup, control: AbstractControl, key: string, validations: ValidationRule[]): void {\r\n\r\n if (Array.isArray(validations)) {\r\n const expressions = validations\r\n .filter(item => this.isExpression(item.expression))\r\n .map(item => \"=\" + this.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.getDependencies(feelable)\r\n .filter(dep => dep !== key);\r\n\r\n if (dependencies.length === 0) return;\r\n\r\n this.watch(formGroup, dependencies, () => {\r\n setTimeout(() => {\r\n control.updateValueAndValidity();\r\n });\r\n \r\n });\r\n }\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 extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n\r\nexport interface ValidationRule {\r\n expression: string;\r\n type: \"validate\" | \"invalidate\";\r\n message: string\r\n}\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n disabled: string | boolean | null;\r\n 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 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 { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface CommandEvent {\r\n name: string;\r\n component: any,\r\n formGroup: FormGroup,\r\n event: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventService {\r\n\r\n private commandSubject = new Subject<CommandEvent>();\r\n\r\n onCommand = this.commandSubject.asObservable();\r\n\r\n emitCommand(data: CommandEvent) {\r\n this.commandSubject.next(data);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { 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 { FormGroup } from '@angular/forms';\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 }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n\r\n const options: EvaluateOptions = {\r\n 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 return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.getFormGroup(), value);\r\n }\r\n\r\n clickButton(action: any, event: any) {\r\n if (action.click) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n action: action,\r\n data: this.getData(),\r\n 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 getData(): any {\r\n return 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\r\n","<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n","export const getLabelSymbol = Symbol('getLabel');\r\n","import { getLabelSymbol } from './symbols';\r\n\r\nexport type LabeledMap<TKey extends string | number, TValue> =\r\n Record<TKey, TValue> & {\r\n [getLabelSymbol]?: (value: TKey) => TValue;\r\n };\r\n\r\nexport function isLabeledRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue,\r\n getLabelSymbol: symbol\r\n): obj is Record<TKey, TValue> & { [key: symbol]: (key: TKey) => TValue } {\r\n if (!isRecord(obj, isKey, isValue)) {\r\n return false;\r\n }\r\n const getLabel = (obj as { [key: symbol]: unknown })[getLabelSymbol];\r\n return (getLabel !== undefined && typeof getLabel === 'function');\r\n}\r\n\r\nexport function isRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue\r\n): obj is Record<TKey, TValue> {\r\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n return false;\r\n }\r\n return Object.entries(obj).every(([key, val]) => {\r\n return isKey(key) && isValue(val);\r\n });\r\n}\r\n\r\nexport function isStringKey(key: any): key is string | number {\r\n return typeof key === 'string';\r\n}\r\n\r\nexport function isNumericKey(key: any): key is string | number {\r\n return typeof key === 'string' && !isNaN(Number(key));\r\n}\r\n\r\nexport function isBooleanKey(key: any): key is string | number {\r\n return key === 'true' || key === 'false';\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { SirioInputComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { isRecord } from '../../common/record';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './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\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 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 return element.tabIndex >= 0 &&\r\n style.visibility !== 'hidden' &&\r\n style.display !== 'none' &&\r\n !element.hasAttribute('disabled') &&\r\n isVisible(element);\r\n}\r\n\r\nexport function getFocusables(el: HTMLElement, firstOnly = false): HTMLElement[] {\r\n const candidates = getCandidate(el);\r\n const result: HTMLElement[] = [];\r\n for (const focusableEl of candidates) { \r\n if (isFocusable(focusableEl)) {\r\n result.push(focusableEl);\r\n if (firstOnly) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function setFocus(el: HTMLElement) {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return false;\r\n }\r\n focusables[0].focus();\r\n return true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\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} 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 { 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 }\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 //, 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 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 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 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 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.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 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 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 valueGetter: (n: any) => n.node.rowIndex + 1\r\n });\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 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 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 private getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n let options: RowSelectionOptions | undefined = undefined;\r\n\r\n if (component.selection === \"singleRow\") {\r\n options = { mode: \"singleRow\" };\r\n }\r\n else if (component.selection === \"multiRow\") {\r\n options = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n }\r\n\r\n if (options && component.isSelectable) {\r\n options = {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private onRowSelectable(component: any, formGroup: FormGroup, data: any) : boolean {\r\n if (!data)\r\n return false;\r\n\r\n const result = this.programmability.evaluate(formGroup, component.isSelectable, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n data: data\r\n }\r\n })\r\n });\r\n\r\n return result === true; \r\n }\r\n\r\n private 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.isSelected, {\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.isSelected\r\n && this.hasSelection(component))\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 hasSelection(component: any): boolean {\r\n return component.selection === \"singleRow\"\r\n || component.selection === \"multiRow\";\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 '';\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 { 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 else if (this.allowAddRemove !== true) {\r\n (formArray as any).resize(0);\r\n } \r\n }\r\n }\r\n}\r\n","import { Directive, Input, AfterViewInit, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[frameSecurity]',\r\n standalone: true\r\n})\r\nexport class FrameSecurityDirective implements AfterViewInit {\r\n @Input() frameSecurity: any = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n const frame = this.el.nativeElement;\r\n\r\n const sandbox = this.getSandBox(this.frameSecurity);\r\n\r\n if (sandbox)\r\n this.renderer.setAttribute(frame, 'sandbox', sandbox);\r\n\r\n const allow = this.getAllow(this.frameSecurity);\r\n\r\n if (allow)\r\n this.renderer.setAttribute(frame, 'allow', allow);\r\n }\r\n\r\n private getSandBox(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"allowScripts\",\r\n \"allowSameOrigin\",\r\n \"allowForms\",\r\n \"allowModals\",\r\n \"allowPopups\",\r\n \"allowTopNavigation\",\r\n \"allowStorageAccessByUserActivation\"\r\n ];\r\n let sandBox = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => this.camelToKebabCase(key))\r\n .join(' ');\r\n\r\n return sandBox;\r\n };\r\n\r\n private getAllow(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"fullscreen\",\r\n \"geolocation\",\r\n \"camera\",\r\n \"microphone\"\r\n ];\r\n let allow = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => key)\r\n .join(' ');\r\n\r\n return allow;\r\n };\r\n\r\n private camelToKebabCase(str: string): string {\r\n return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());\r\n }\r\n}\r\n","import { Directive, AfterViewInit, OnDestroy, ElementRef, Host, Renderer2 } from '@angular/core';\r\nimport { SirioSelectComponent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\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 private optionsSubscription?: Subscription;\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n this.handleOptionsChanges();\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 this.sirioSelect.control?.updateValueAndValidity();\r\n });\r\n }\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 this.sirioSelect.control?.updateValueAndValidity();\r\n }\r\n\r\n private removeValidator(): void {\r\n this.sirioSelect.control?.removeValidators(this.validator);\r\n this.sirioSelect.control?.updateValueAndValidity();\r\n }\r\n\r\n private validateOptions(control: AbstractControl): ValidationErrors | 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 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 { GridApi } from \"ag-grid-community\";\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\nimport { GridService } from '../services/grid.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]',\r\n standalone: true\r\n})\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource!: any;\r\n @Input() columnDefs: any = 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 languageService: LanguageService\r\n ) {\r\n\r\n grid.gridReady.subscribe((params) => {\r\n this.gridApi = params.api;\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 if (changes['rowSource']) {\r\n if (isObservable(this.rowSource)) {\r\n this.showLoading(true);\r\n this.rowSource\r\n .pipe(\r\n take(1),\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(() => {\r\n this.showLoading(false);\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n )\r\n .subscribe(value => {\r\n this.applyResult(value ?? []); \r\n });\r\n }\r\n else {\r\n this.applyResult(this.rowSource);\r\n } \r\n }\r\n\r\n if (changes[\"columnDefs\"]) {\r\n this.onColumnsChanges();\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 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\r\n private setDataSource(rowSource: any) {\r\n this.grid.rowModelType = 'infinite';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('datasource', rowSource);\r\n }\r\n else {\r\n this.grid.datasource = rowSource;\r\n }\r\n }\r\n\r\n private isArray(rowSource: any): boolean {\r\n return Array.isArray(rowSource);\r\n }\r\n\r\n private isDataSource(obj: any): obj is IRowsSource {\r\n return obj && typeof obj.getRows === \"function\";\r\n }\r\n\r\n private onGridReady() { \r\n this.onColumnsChanges();\r\n }\r\n\r\n private onColumnsChanges() {\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 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","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[observe]',\r\n standalone: true\r\n})\r\nexport class ChangeDirective implements OnChanges {\r\n @Input() observe: any;\r\n @Input() callback?: () => void;\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"observe\"]) {\r\n if (this.callback) {\r\n this.callback();\r\n } \r\n } \r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class FormControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextFieldControl extends Control {\r\n\r\n readonly setRandomColor = (): void => {\r\n this.getInput().sirioInput.nativeElement.style.backgroundColor = this.getRandomColor(); \r\n }\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n private getRandomColor(): string {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n\r\n return color;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class SelectControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TagListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class NumberControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioDatepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class DateControl extends Control {\r\n\r\n private getDatePicker(): SirioDatepickerComponent {\r\n return this.getComponentRef() as SirioDatepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioTimepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TimeControl extends Control {\r\n\r\n private getTimePicker(): SirioTimepickerComponent {\r\n return this.getComponentRef() as SirioTimepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioToggleComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ToggleControl extends Control {\r\n\r\n private getToggle(): SirioToggleComponent {\r\n return this.getComponentRef() as SirioToggleComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckBoxControl extends Control {\r\n\r\n private getCheckBox(): SirioCheckboxComponent {\r\n return this.getComponentRef() as SirioCheckboxComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipRadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipRadio() as any)._refresh();\r\n }\r\n\r\n private getChipRadio(): SirioChipRadioGroupComponent {\r\n return this.getComponentRef() as SirioChipRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class RadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getRadio() as any)._refresh();\r\n }\r\n\r\n private getRadio(): SirioRadioGroupComponent {\r\n return this.getComponentRef() as SirioRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipCheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipCheckBoxGroup() as any)._refresh();\r\n }\r\n\r\n private getChipCheckBoxGroup(): SirioChipCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioChipCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getCheckboxGroup() as any)._refresh();\r\n }\r\n\r\n private getCheckboxGroup(): SirioCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextAreaControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioFileUploadComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class FilePickerControl extends Control {\r\n\r\n private getFileUpload(): SirioFileUploadComponent {\r\n return this.getComponentRef() as SirioFileUploadComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TextControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class HtmlControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class ImageControl extends Control {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioTabComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TabControl extends ContainerControl {\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgCharts } from 'ag-charts-angular';\r\n\r\nexport class ChartControl extends Control {\r\n\r\n //readonly refresh = (): void => {\r\n // (this.getGrid() as any)._refresh();\r\n //}\r\n\r\n private getChart(): AgCharts {\r\n return this.getComponentRef() as AgCharts;\r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioAccordionComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class AccordionControl extends ContainerControl {\r\n\r\n private getAccordion(): SirioAccordionComponent {\r\n return this.getComponentRef() as SirioAccordionComponent;\r\n }\r\n\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class DynamicListControl extends ContainerControl {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class GroupControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\n\r\n\r\nexport class TableControl extends Control {\r\n\r\n readonly setFilter = (filter: any): void => {\r\n this.getGrid().api.setFilterModel(filter);\r\n }\r\n\r\n readonly clearFilter = (): void => {\r\n this.getGrid().api.setFilterModel(null);\r\n }\r\n\r\n readonly refresh = (): void => {\r\n (this.getGrid() as any)._refresh();\r\n }\r\n\r\n private getGrid(): AgGridAngular {\r\n return this.getComponentRef() as AgGridAngular;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioButtonComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ButtonControl extends Control {\r\n\r\n private getButton(): SirioButtonComponent {\r\n return this.getComponentRef() as SirioButtonComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SeparatorControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SpacerControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class IFrameControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TooltipControl extends Control {\r\n\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Control } from '../controls/control';\r\nimport { FormControl } from '../controls/form';\r\nimport { TextFieldControl } from '../controls/textfield';\r\nimport { SelectControl } from '../controls/select';\r\nimport { TagListControl } from '../controls/taglist';\r\nimport { NumberControl } from '../controls/number';\r\nimport { DateControl } from '../controls/date';\r\nimport { TimeControl } from '../controls/time';\r\nimport { ToggleControl } from '../controls/toggle';\r\nimport { CheckBoxControl } from '../controls/checkbox';\r\nimport { ChipRadioControl } from '../controls/chipradio';\r\nimport { RadioControl } from '../controls/radio';\r\nimport { ChipCheckListControl } from '../controls/chipchecklist';\r\nimport { CheckListControl } from '../controls/checklist';\r\nimport { TextAreaControl } from '../controls/textarea';\r\nimport { FilePickerControl } from '../controls/filepicker';\r\nimport { TextControl } from '../controls/text';\r\nimport { HtmlControl } from '../controls/html';\r\nimport { ImageControl } from '../controls/image';\r\nimport { TabControl } from '../controls/tab';\r\nimport { ChartControl } from '../controls/chart';\r\nimport { AccordionControl } from '../controls/accordion';\r\nimport { DynamicListControl } from '../controls/dynamiclist';\r\nimport { GroupControl } from '../controls/group';\r\nimport { TableControl } from '../controls/table';\r\nimport { ButtonControl } from '../controls/button';\r\nimport { SeparatorControl } from '../controls/separator';\r\nimport { SpacerControl } from '../controls/spacer';\r\nimport { IFrameControl } from '../controls/iframe';\r\nimport { TooltipControl } from '../controls/tooltip';\r\nimport { RegisterService } from '../services/register.service';\r\n\r\nexport function createControl(name: string\r\n , metadata: any\r\n , componentRef: any\r\n , elementRef: ElementRef\r\n , register: RegisterService | undefined) : Control {\r\n\r\n switch (metadata.type) {\r\n\r\n case \"default\":\r\n return new FormControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"textfield\":\r\n return new TextFieldControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"select\":\r\n return new SelectControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"taglist\":\r\n return new TagListControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"number\":\r\n return new NumberControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"datetime\":\r\n switch (metadata.subtype) {\r\n case \"date\":\r\n return new DateControl(name, metadata, componentRef, elementRef);\r\n case \"time\":\r\n return new TimeControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checkbox\":\r\n switch (metadata.subtype) {\r\n case \"toggle\":\r\n return new ToggleControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckBoxControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"radio\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipRadioControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new RadioControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checklist\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipCheckListControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckListControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"textarea\":\r\n return new TextAreaControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"filepicker\":\r\n return new FilePickerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"text\":\r\n return new TextControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"html\":\r\n return new HtmlControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"image\":\r\n return new ImageControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"dynamiclist\":\r\n switch (metadata.subtype) {\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n default:\r\n return new DynamicListControl(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n case \"group\":\r\n return new GroupControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"table\":\r\n return new TableControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"chart\":\r\n return new ChartControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"button\":\r\n return new ButtonControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"separator\":\r\n return new SeparatorControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"spacer\":\r\n return new SpacerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"iframe\":\r\n return new IFrameControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tooltip\":\r\n return new TooltipControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n}\r\n","import {\r\n Directive, Input, ElementRef, AfterContentInit, OnDestroy\r\n , ContentChild, ContentChildren, QueryList, forwardRef\r\n} from '@angular/core';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { createControl } from '../controls/factory';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport { IDynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.interface';\r\nimport { ItemControl } from '../controls/control';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[register]',\r\n standalone: true\r\n})\r\nexport class RegisterDirective implements AfterContentInit, OnDestroy {\r\n @Input() register: any = null;\r\n @Input() componentRef: any;\r\n @ContentChild(forwardRef(() => DynamicFieldsComponent)) dynamicField?: IDynamicFieldsComponent;\r\n @ContentChildren(forwardRef(() => DynamicFieldsComponent), { descendants: true }) itemFields!: QueryList<IDynamicFieldsComponent>;\r\n \r\n constructor(\r\n private el: ElementRef,\r\n private registerService: RegisterService\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n this.registerControl();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unregisterControl();\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private registerControl(): void {\r\n const name = this.getName();\r\n\r\n const register = (this.register.type === 'dynamiclist')\r\n ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)\r\n : this.dynamicField?.getRegister();\r\n\r\n const control = createControl(name, this.register, this.componentRef, this.el, register);\r\n this.registerService.register(name, control);\r\n\r\n }\r\n\r\n private unregisterControl(): void {\r\n this.registerService.unregister(this.getName());\r\n }\r\n\r\n private getName(): string {\r\n return this.register.name ?? this.register.id;\r\n }\r\n\r\n private createDynamicRegister(name: string, metadata: any, componentRef: any, el: ElementRef\r\n , itemFields: QueryList<IDynamicFieldsComponent>): RegisterService {\r\n\r\n const newRegister = new RegisterService(null);\r\n\r\n const registerAll = (itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n newRegister.unregisterAll();\r\n itemFields.forEach((itemField, index) => {\r\n const register = itemField.getRegister();\r\n const newName = `${name}-${index}`;\r\n const control = new ItemControl(newName, index, metadata, componentRef, el, register);\r\n newRegister.register(newName, control);\r\n });\r\n }\r\n\r\n registerAll(itemFields);\r\n\r\n itemFields.changes\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n registerAll(itemFields);\r\n });\r\n\r\n return newRegister;\r\n }\r\n}\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[refresh]',\r\n standalone: true\r\n})\r\nexport class RefreshDirective implements AfterContentInit {\r\n @Input() refresh: (() => void) | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef._refresh = this.refresh;\r\n }\r\n\r\n}\r\n","import { Directive, AfterViewInit, Host } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[updateBlur]',\r\n standalone: true\r\n})\r\nexport class UpdateBlurDirective implements AfterViewInit {\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) { }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (this.sirioInput?.control?.updateOn === 'blur') {\r\n\r\n const writeValue = this.sirioInput.writeValue;\r\n\r\n 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 registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = (value: number | null): number | null => {\r\n const originalValue = value;\r\n\r\n if (value === null && this.defaultValue !== null) {\r\n value = this.defaultValue;\r\n }\r\n\r\n if (value != null) {\r\n if (this.minimum !== null && value < this.minimum) {\r\n value = this.minimum;\r\n }\r\n\r\n if (this.maximum !== null && value > this.maximum) {\r\n value = this.maximum;\r\n }\r\n\r\n if (this.decimalDigits != null && this.decimalDigits >= 0) {\r\n const factor = Math.pow(10, this.decimalDigits);\r\n value = Math.round(value * factor) / factor;\r\n }\r\n }\r\n \r\n if (originalValue !== value) { \r\n this.sirioInput.writeValue(value, false); \r\n }\r\n\r\n return value;\r\n };\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(valueToStore(value))); \r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n const input = this.sirioInput.sirioInput.nativeElement;\r\n\r\n input.addEventListener('keydown', (event: Event) => {\r\n const e = event as KeyboardEvent;\r\n if (e.key === '.'\r\n || (e.key === ',' && !this.acceptDecimal())\r\n || (e.key === '-' && !this.acceptSign())) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n input.addEventListener('paste', (event: Event) => {\r\n const e = event as ClipboardEvent;\r\n const text = e.clipboardData?.getData('text') || '';\r\n if (text.includes('.')\r\n || (text.includes(',') && !this.acceptDecimal())\r\n || (text.includes('-') && !this.acceptSign())) {\r\n event.preventDefault();\r\n }\r\n });\r\n \r\n }\r\n\r\n private acceptSign(): boolean {\r\n if (this.minimum !== null && this.minimum >= 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private acceptDecimal(): boolean {\r\n if (this.decimalDigits !== null && this.decimalDigits === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nfunction valueToStore(value: string): number | null {\r\n if (typeof value === \"string\") {\r\n if (value.trim() === '') { \r\n return null;\r\n }\r\n const numericValue = parseFloat(value);\r\n if (isNaN(numericValue)) {\r\n return null;\r\n }\r\n return numericValue;\r\n }\r\n else if (typeof value === 'number') {\r\n return value as number;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Renderer2, Input, OnChanges, AfterViewInit, SimpleChanges } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[textcase], [maxlength]',\r\n standalone: true\r\n})\r\nexport class TextDirective implements OnChanges, AfterViewInit {\r\n @Input() textcase: '' | 'uppercase' | 'lowercase' = '';\r\n @Input() maxlength: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent\r\n , private renderer: Renderer2) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = this.coerceValue.bind(this);\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(value));\r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.configureTextCase();\r\n this.configureMaxLength(); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"maxlength\"]) {\r\n this.configureMaxLength();\r\n }\r\n }\r\n\r\n private coerceValue(value: string): string\r\n {\r\n 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 if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n\r\n inputElement.oninput = (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const value = input.value;\r\n\r\n var newValue = this.coerceValue(value);\r\n\r\n if (newValue != value) {\r\n this.replaceInputValue(input, newValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private configureMaxLength() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n\r\n if (inputElement) {\r\n if (this.maxlength == null) {\r\n inputElement.removeAttribute('maxlength');\r\n } else {\r\n inputElement.maxLength = this.maxlength;\r\n }\r\n } \r\n }\r\n\r\n private replaceInputValue(input: HTMLInputElement, value: string): void {\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n\r\n input.value = value;\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(start, end);\r\n }, 0);\r\n }\r\n\r\n}\r\n","import { Directive, Host, OnInit, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[tabControl]',\r\n standalone: true\r\n})\r\nexport class TabControlDirective implements OnInit, OnDestroy {\r\n \r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.tabChangeSub = this.sirioTab.tabChange.subscribe(this.HandleIndexChange.bind(this));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabChangeSub?.unsubscribe();\r\n }\r\n\r\n private tabChangeSub!: Subscription;\r\n\r\n private HandleIndexChange(event: NgxSirioEvent<SirioTabComponent>) {\r\n const tab = event.component as any;\r\n if (event.data.newIndex === undefined) {\r\n tab.setActiveIndex(this.validateIndex(tab._savedIndex), true);\r\n }\r\n else {\r\n tab._savedIndex = event.data.newIndex;\r\n }\r\n }\r\n\r\n private validateIndex(index: number): number {\r\n if (index >= this.sirioTab.tabItems.length) {\r\n var firstTab = this.sirioTab.firstTabEnabled;\r\n if (firstTab) {\r\n index = firstTab.index;\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\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","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SanitizeService {\r\n\r\n constructor(private sanitizer: DomSanitizer)\r\n {\r\n this.sanitizeOption = {\r\n allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),\r\n allowedAttributes: {\r\n ...sanitizeHtml.defaults.allowedAttributes,\r\n '*': ['style']\r\n }\r\n };\r\n }\r\n\r\n sanitizeHtml(html: string): string {\r\n return sanitizeHtml(html, this.sanitizeOption);\r\n };\r\n\r\n sanitizeSafeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html));\r\n };\r\n\r\n sanitizeSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n toString(safeHtml: SafeHtml): string {\r\n return this.sanitizer.sanitize(1, safeHtml) || '';\r\n }\r\n\r\n private sanitizeOption!: sanitizeHtml.IOptions;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { marked } from 'marked';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkdownService {\r\n\r\n constructor() {\r\n\r\n marked.use({\r\n async: false,\r\n gfm: true,\r\n breaks: true\r\n });\r\n\r\n const renderer = new marked.Renderer();\r\n\r\n renderer.link = function (args) {\r\n return `<a href=\"${args.href}\" target=\"_blank\">${args.text}</a>`; \r\n };\r\n\r\n marked.setOptions({ renderer });\r\n }\r\n\r\n toHtml(text: string): string {\r\n return marked.parse(text ?? \"\") as string;\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport mimeDb from 'mime-db';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MimeService {\r\n\r\n constructor() { }\r\n\r\n getMimeTypes(extensions: string): string {\r\n return (extensions ?? \"\")\r\n .split(',')\r\n .map(ext => this.getMimeType(ext.trim()))\r\n .filter(mime => mime !== null)\r\n .join(', ');\r\n };\r\n\r\n private getMimeType(extension: string): string | null {\r\n const ext = extension.startsWith('.') ? extension.slice(1) : extension;\r\n for (const [mimeType, info] of Object.entries(mimeDb)) {\r\n if (info.extensions && info.extensions.includes(ext)) {\r\n return mimeType;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, FormArray, AbstractControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\nimport { SanitizeService } from '../services/sanitize.service';\r\nimport { MarkdownService } from '../services/markdown.service';\r\nimport { MimeService } from '../services/mime.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { EventService, CommandEvent } from '../services/event.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { FormService } from '../services/form.service';\r\nimport { GridService } from '../services/grid.service';\r\nimport { ChartService } from '../services/chart.service';\r\nimport { ButtonColors } from 'ngx-sirio-lib';\r\nimport { AdornerDirective } from '../directives/adorner.directive';\r\nimport { ReadOnlyDirective } from '../directives/readonly.directive';\r\nimport { DisplayDirective } from '../directives/display.directive';\r\nimport { RepeatDirective } from '../directives/repeat.directive';\r\nimport { FrameSecurityDirective } from '../directives/framesecurity.directive';\r\nimport { DropdownDirective } from '../directives/dropdown.directive';\r\nimport { TabDirective } from '../directives/tab.directive';\r\nimport { AccordionDirective } from '../directives/accordion.directive';\r\nimport { GridDirective } from '../directives/grid.directive';\r\nimport { ChangeDirective } from '../directives/change.directive';\r\nimport { RegisterDirective } from '../directives/register.directive';\r\nimport { RefreshDirective } from '../directives/refresh.directive';\r\nimport { UpdateBlurDirective } from '../directives/updateblur.directive';\r\nimport { DateDirective } from '../directives/date.directive';\r\nimport { NumberDirective } from '../directives/number.directive';\r\nimport { TextDirective } from '../directives/text.directive';\r\nimport { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { CollapseDirective } from '../directives/collapse.directive';\r\nimport { AccordionPanelDirective } from '../directives/accordionpanel.directive';\r\nimport { TemplateWrapperComponent } from '../shared/template-wrapper/template-wrapper.component';\r\nimport { DynamicHostComponent } from '../dynamic-host/dynamic-host.component';\r\nimport { toExpression } from '../utils/feelable';\r\nimport { isObservable, Observable, of } from 'rxjs';\r\n\r\nimport {\r\n SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , NgxSirioEvent\r\n} from 'ngx-sirio-lib';\r\n\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { Module, GridOptions } from 'ag-grid-community';\r\nimport { AgCharts } from \"ag-charts-angular\";\r\nimport { AgChartOptions } from 'ag-charts-community';\r\n\r\nimport { 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-fields',\r\n templateUrl: './dynamic-fields.component.html',\r\n styleUrls: [\r\n './dynamic-fields.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, ReadOnlyDirective, DisplayDirective, FrameSecurityDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, TabDirective, GridDirective, ChangeDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective\r\n , TabControlDirective, CollapseDirective, AccordionPanelDirective\r\n , SirioInputComponent, SirioValidationDirective\r\n , SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent\r\n , SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent\r\n , SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent\r\n , SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent\r\n , SirioButtonComponent, SirioFileUploadComponent\r\n , SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent\r\n , SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent\r\n , SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent\r\n , SirioTooltipDirective\r\n , TemplateWrapperComponent, 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() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() alignment: string = \"\";\r\n\r\n Texts = Texts;\r\n\r\n constructor(private sanitizer: SanitizeService\r\n , private markdown: MarkdownService\r\n , private mime: MimeService\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private languageService: LanguageService\r\n , private formService: FormService\r\n , private grid: GridService\r\n , private chart: ChartService\r\n , private el: ElementRef\r\n , private cdr: ChangeDetectorRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void { \r\n this.configureDatepicker();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.focusFirst();\r\n });\r\n }\r\n\r\n getRegister(): RegisterService {\r\n return this.register;\r\n }\r\n\r\n getClass(component: any): string {\r\n const colHost = \"col-host \";\r\n if (component.layout?.columns) {\r\n return colHost + \"col-md-\" + component.layout?.columns;\r\n }\r\n else {\r\n return colHost + \"col\";\r\n }\r\n }\r\n\r\n getTextFeedback(component: any): string {\r\n const control = this.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 evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n evaluate(text: string | null, cacheable: boolean = true): any {\r\n return this.programmability.evaluate(this.formGroup, text, {\r\n cacheable: cacheable\r\n });\r\n }\r\n\r\n evaluateColor(value: string | null): ButtonColors | null {\r\n const color = this.evaluateString(value);\r\n const watchKey = `:buttonColor(${color})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n if (color === \"ghost\")\r\n return null;\r\n const validColors: ButtonColors[] = ['primary', 'secondary', 'tertiary', 'tertiary-light', 'danger'];\r\n return validColors.includes(color as ButtonColors) ? (color as ButtonColors) : 'primary';\r\n });\r\n }\r\n\r\n evaluateConditional(conditional: any): boolean {\r\n const hide = this.evaluateBoolean(conditional?.hide);\r\n const show = this.evaluateBoolean(conditional?.show);\r\n \r\n return !(hide === true || show === false);\r\n }\r\n\r\n getTemplate(value: string): any {\r\n return this.metadata.getFormByName(value);\r\n }\r\n\r\n getFormGroup(control: AbstractControl | null): FormGroup {\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormArray(control: AbstractControl | null): FormArray {\r\n if (!(control instanceof FormArray)) {\r\n throw new Error('Control is not a FormArray');\r\n }\r\n return control;\r\n }\r\n\r\n resolvePath(path: string | null): FormGroup {\r\n return this.getFormGroup(this.getControlFromPath(path))\r\n }\r\n\r\n toHTML(text: string): SafeHtml {\r\n const watchKey = `:safeHtml(${text})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n const html = this.markdown.toHtml(text);\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n });\r\n };\r\n\r\n sanitize(html: string): SafeHtml {\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n };\r\n\r\n getMimeTypes(extensions: string): string {\r\n return this.mime.getMimeTypes(extensions);\r\n };\r\n\r\n clickButton(component: any, event: any) {\r\n if (component.click) {\r\n this.evaluate(component.click, false);\r\n }\r\n if (component.command) {\r\n const command: CommandEvent = {\r\n name: this.evaluateString(component.command),\r\n component: component,\r\n formGroup: this.formGroup,\r\n event: event\r\n };\r\n this.events.emitCommand(command);\r\n } \r\n }\r\n\r\n getValues(component: any): Observable<any> {\r\n if (component.values) {\r\n // Static\r\n return of(component.values);\r\n }\r\n else if (component.valuesKey) {\r\n // Field value\r\n const result = this.evaluate(component.valuesKey);\r\n return this.getAsObservable(result);\r\n }\r\n else if (component.valuesExpression) {\r\n // Expression\r\n const result = this.evaluate(component.valuesExpression);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return 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 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, `getGridOptions_${this.language}`\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 (formArray as any).addItem();\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number) {\r\n formArray.removeAt(index);\r\n }\r\n\r\n createUploadTables(component: any): any {\r\n return this.weak.call(component, 'createUploadTables', () => {\r\n return [\r\n {\r\n components: [\r\n {\r\n \"type\": \"table\",\r\n \"layout\": {\r\n \"columns\": null\r\n },\r\n \"columns\": [\r\n {\r\n \"label\": this.locale(Texts, 'Name'),\r\n \"key\": \"name\",\r\n \"flex\": 1\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Size'),\r\n \"key\": \"size\",\r\n \"format\": \"integer\",\r\n \"align\": \"right\"\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Type'),\r\n \"key\": \"type\" \r\n },\r\n {\r\n \"key\": \"url\",\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"objectURL\"\r\n },\r\n {\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"deleteRow\"\r\n }\r\n ],\r\n \"dataSource\": \"=\" + component.key,\r\n \"height\": 200,\r\n \"conditional\": component.conditional,\r\n \"disabled\": component.disabled\r\n }\r\n ]\r\n }\r\n ];\r\n });\r\n }\r\n\r\n fileUploaded($event: NgxSirioEvent<SirioFileUploadComponent>) {\r\n const removeFile = (file: File) => {\r\n if ($event.component.control) {\r\n const newFiles = $event.component.fileList.filter(f => f !== file);\r\n $event.component.control.setValue(newFiles);\r\n addRemove(newFiles);\r\n return newFiles;\r\n }\r\n return [];\r\n }\r\n\r\n const addRemove = (files: File[]) => {\r\n files.forEach(file => {\r\n if (!('remove' in file)) {\r\n Object.defineProperty(file, 'remove', {\r\n value: function () {\r\n removeFile(this);\r\n },\r\n writable: false,\r\n enumerable: false\r\n });\r\n } \r\n }); \r\n };\r\n\r\n addRemove($event.component.fileList);\r\n }\r\n\r\n 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 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 focusFirst() {\r\n const focusableElements = this.el.nativeElement.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n for (let el of focusableElements) {\r\n if (!(el as HTMLElement).hasAttribute('disabled')) {\r\n (el as HTMLElement).focus();\r\n break;\r\n } \r\n }\r\n }\r\n\r\n private getAsObservable(value: any): Observable<any> {\r\n if (isObservable(value))\r\n return value;\r\n return of(value);\r\n }\r\n\r\n private configureDatepicker() {\r\n (Datepicker.locales as any)['it'] = {\r\n days: [\r\n 'Domenica',\r\n 'Lunedì',\r\n 'Martedì',\r\n 'Mercoledì',\r\n 'Giovedì',\r\n 'Venerdì',\r\n 'Sabato',\r\n ],\r\n daysMin: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],\r\n months: [\r\n 'Gennaio',\r\n 'Febbraio',\r\n 'Marzo',\r\n 'Aprile',\r\n 'Maggio',\r\n 'Giugno',\r\n 'Luglio',\r\n 'Agosto',\r\n 'Settembre',\r\n 'Ottobre',\r\n 'Novembre',\r\n 'Dicembre',\r\n ],\r\n monthsShort: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'Mag',\r\n 'Giu',\r\n 'Lug',\r\n 'Ago',\r\n 'Set',\r\n 'Ott',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n today: 'Oggi',\r\n clear: 'Pulisci',\r\n format: 'dd/mm/yyyy',\r\n weekStart: 1\r\n };\r\n };\r\n}\r\n","<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]=\"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 updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"locale(Texts, 'TypeToSearch')\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"number\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [properties]=\"component.properties\"\r\n [formControlName]=\"component.key\"\r\n number\r\n [defaultValue]=\"evaluateNumber(component.defaultValue)\"\r\n [minimum]=\"evaluateNumber(component.minimum)\"\r\n [maximum]=\"evaluateNumber(component.maximum)\"\r\n [decimalDigits]=\"evaluateNumber(component.decimalDigits)\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaDateLabel') || locale(component, 'dateLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'dateLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaTimeLabel') || locale(component, 'timeLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'timeLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"textarea\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-file-upload [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ locale(Texts, 'Upload') }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-slider [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #range\r\n [register]=\"component\"\r\n [componentRef]=\"range\">\r\n </ngx-sirio-slider>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\"\r\n [repeat]=\"evaluateNumber(component.repetitions)\"\r\n [allowAddRemove]=\"evaluateBoolean(component.allowAddRemove)\">\r\n <p *ngIf=\"component.description\">{{ evaluateString(locale(component, 'description')) }}</p>\r\n <ng-container *ngIf=\"getFormArray(resolvePath(component.path).get(component.key)) as formArray\">\r\n <ng-container *ngIf=\"formArray.controls.length > 0\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [tabCount]=\"formArray.controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\">\r\n <ng-container *ngIf=\"i === dynamiclisttab.activeIndex\">\r\n <div>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"formArray.controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel #panel accordionPanel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <ng-container *ngIf=\"panel.panelIsOpen\">\r\n <div>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true, 'group-outline-repeat': true }\">\r\n <div>\r\n <label>{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"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 [formGroup]=\"resolvePath(component.path)\"\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 *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <div *ngIf=\"i === tab.activeIndex\">\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"template?.rows\"\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 [formGroup]=\"resolvePath(panel.path)\"\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 (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [columnDefs]=\"component.columns || evaluate(component.columnsExpression) || []\"\r\n [rowSource]=\"getRowSource(component)\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height.px]=\"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 <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <label [for]=\"component.id\">{{ evaluateString(locale(component, 'label')) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(locale(component, 'label'))\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"locale(Texts, 'Close')\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(locale(component, 'title'))\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(locale(component, 'title')) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region chart -->\r\n <ng-container *ngSwitchCase=\"'chart'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-charts [options]=\"(getChartOptions(component) | async) ?? {}\"\r\n [observe]=\"getChartData(component)\"\r\n [callback]=\"invalidateChart(component)\"\r\n [style.height.px]=\"component.height\"\r\n #chart\r\n [register]=\"component\"\r\n [componentRef]=\"chart\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #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 { ProgrammabilityService, ValidationRule } from '../services/programmability.service';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { CommandEvent, EventService } from '../services/event.service';\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\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 EventService\r\n , ProgrammabilityService\r\n , RegisterService\r\n , MetadataService\r\n , FunctionService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormComponent implements OnChanges, OnDestroy {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() value: any = {};\r\n @Input() strict: boolean = false;\r\n @Input() showNav: boolean = true;\r\n @Input() showNavButton: boolean = true;\r\n @Input() showProgress: boolean = false;\r\n @Input() showFormTitle: boolean = false;\r\n @Input() progressStatus: boolean = true;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() initialized = new EventEmitter<FormGroup>();\r\n @Output() onCommand = new EventEmitter<CommandEvent>();\r\n @Output() activeNavChange = new EventEmitter<any>();\r\n @ViewChild('default') formDiv!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private fb: FormBuilder\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private registerService: RegisterService\r\n , private 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\r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n private internalChange = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.onChangeSchema(); \r\n }\r\n\r\n if (changes['value']) {\r\n this.onChangeValue();\r\n }\r\n }\r\n\r\n get forms(): Array<any> {\r\n return this._forms;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n canPrevious(): boolean {\r\n return this.getPrevious() != -1; \r\n }\r\n\r\n goPrevious() {\r\n if (this.canPrevious()) {\r\n this.activeNav = this.getPrevious();\r\n }\r\n }\r\n\r\n canNext(): boolean {\r\n return this.getNext() != -1; \r\n }\r\n\r\n goNext() {\r\n if (this.canNext()) { \r\n this.activeNav = this.getNext();\r\n }\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n return this.registerService.getControl(name);\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n return this.registerService.getControlAs(name, type);\r\n }\r\n\r\n get activeNav(): number {\r\n return this._activeNav;\r\n }\r\n\r\n @Input()\r\n set activeNav(value: number) {\r\n if (value >= 0 && value < this.getMaxNav()) {\r\n 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.getErrors(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 getErrors(form: any): number {\r\n const controls = this.controlMap.get(form);\r\n if (!controls) {\r\n return 0;\r\n }\r\n return this.formService.errors(controls);\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 refresh() {\r\n this.formService.patch(this.formGroup, this.value, {\r\n strict: this.strict\r\n });\r\n }\r\n\r\n \r\n private valueChangesSubscription: Subscription | null = null;\r\n private onCommandSubscription: Subscription | null = null;\r\n\r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private defaultValue: any = { };\r\n\r\n private controlMap = new Map<any, Set<AbstractControl>>();\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 if (this.internalChange) {\r\n this.internalChange = false;\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: true });\r\n this.clearFormArrays(this.formGroup);\r\n this.formService.patch(this.formGroup, this.value, {\r\n emitEvent: true,\r\n strict: this.strict\r\n }); \r\n }\r\n }\r\n\r\n private getNext(): number {\r\n let index = this.activeNav + 1;\r\n const max = this.getMaxNav();\r\n\r\n while (index < max) {\r\n if (!this.isDisabled(index) && !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): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear();\r\n control.markAsPristine();\r\n control.markAsUntouched();\r\n } else if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach(childControl => {\r\n this.clearFormArrays(childControl);\r\n });\r\n }\r\n }\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n this.internalChange = true;\r\n this.valueChange.emit(value);\r\n });\r\n\r\n this.onCommandSubscription = this.events.onCommand.subscribe((data) => {\r\n if (this.onCommand)\r\n this.onCommand.emit(data);\r\n });\r\n };\r\n\r\n private clearHandlers(): void {\r\n if (this.valueChangesSubscription) {\r\n this.valueChangesSubscription.unsubscribe();\r\n }\r\n\r\n if (this.onCommandSubscription) {\r\n this.onCommandSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private buildForm() {\r\n const map = new Map<any, Set<AbstractControl>>();\r\n this.forms.forEach((form: any) => {\r\n const set = new Set<AbstractControl>();\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n if (this.hasPath(form.path)) {\r\n this.programmability.disable(this.formGroup, currentGroup, form.disabled);\r\n }\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components, set.add.bind(set));\r\n });\r\n map.set(form, set);\r\n });\r\n this.controlMap = map;\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder, formGroup: FormGroup, components: Array<any>, use: (control: AbstractControl) => void) {\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 use(currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else\r\n {\r\n let defaultValue = this.getDefaultValue(component);\r\n const [validators, watching] = this.programmability.validate(currentGroup, component.key\r\n , component?.validate?.required, this.getValidationRules(component));\r\n const options: FormControlOptions = {\r\n validators: validators,\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 watching(control);\r\n this.programmability.disable(formGroup, control, component.disabled);\r\n currentGroup.addControl(component.key, control);\r\n use(control);\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.programmability.disable(formGroup, currentGroup, container.disabled);\r\n }\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components, use);\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 use(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 use(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 use(control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getValidationRules(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 } as ValidationRule;\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder, formGroup: FormGroup, itemComponent: any): FormArray {\r\n const formComponent = this;\r\n\r\n const formArray = formBuilder.array<FormGroup>([]);\r\n\r\n formGroup.addControl(itemComponent.key, formArray);\r\n\r\n const createItem = function (): FormGroup {\r\n let newGroup = formBuilder.group({});\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components, () => { });\r\n });\r\n return newGroup;\r\n };\r\n\r\n const resizeFormArray = this.resizeFormArray;\r\n\r\n const addItem = function (this: FormArray) {\r\n let newGroup = createItem();\r\n this.push(newGroup);\r\n return newGroup;\r\n };\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.createItem = createItem;\r\n array.resize = resize;\r\n }\r\n\r\n const resize = function (this: FormArray, size: number) {\r\n const newArray = resizeFormArray(this, size, createItem);\r\n prepareArray(newArray);\r\n formGroup.setControl(itemComponent.key, newArray);\r\n };\r\n\r\n prepareArray(formArray);\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: () => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n newArray.push(createItem());\r\n }\r\n return newArray;\r\n }\r\n else if (formArray.length > size) {\r\n return new FormArray(formArray.controls.slice(0, size));\r\n }\r\n else {\r\n return formArray;\r\n }\r\n }\r\n\r\n private 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 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 as boolean;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private splitPath(path: string): string[] {\r\n if (!path) {\r\n return [];\r\n }\r\n return path\r\n .split('.')\r\n .map(segment => segment.trim())\r\n .filter(segment => segment.length > 0);\r\n }\r\n\r\n private hasValue(value: string | null): boolean {\r\n return value != null && value.trim().length > 0;\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngs\">\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n\r\n <!-- #region progress -->\r\n <ngx-sirio-stepper-progress-bar *ngIf=\"showProgress\"\r\n (eventClick)=\"activateForm($event)\"\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: getErrors(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 [formGroup]=\"getFormGroup(form.path)\"\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\r\n</form>\r\n\r\n\r\n\r\n","export function extractFiles(data: any)\r\n : { data: any; files: File[] }\r\n{\r\n let files: File[] = [];\r\n\r\n const rewrite = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => rewrite(item));\r\n }\r\n else if (obj instanceof File) {\r\n files.push(obj);\r\n return {\r\n name: obj.name,\r\n size: obj.size,\r\n type: obj.type,\r\n lastModified: obj.lastModified,\r\n _fileIndex: files.length - 1\r\n };\r\n }\r\n else if (typeof obj === 'object' && obj !== null) {\r\n const rewritten: any = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n rewritten[key] = rewrite(obj[key]);\r\n }\r\n }\r\n return rewritten;\r\n }\r\n\r\n return obj;\r\n };\r\n\r\n return { data: rewrite(data), files: files };\r\n}\r\n","import { extractFiles } from \"./extractFiles\";\r\n\r\nexport function toFormData(data: any): FormData\r\n{\r\n const formData = new FormData();\r\n\r\n var result = extractFiles(data);\r\n\r\n formData.append(\"data\", JSON.stringify(result.data));\r\n \r\n result.files.forEach((file) => {\r\n formData.append(\"files\", file);\r\n });\r\n\r\n return formData;\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { IGetRowsParams } from 'ag-grid-community';\r\nimport { IRowsSource } from './interfaces';\r\n\r\nexport class ODataSource implements IRowsSource {\r\n constructor(private url: string\r\n , private http: HttpClient) {\r\n }\r\n\r\n getRows(params: IGetRowsParams) {\r\n const queryString = this.getQueryString(params);\r\n\r\n let queryUrl = `${this.url}${queryString}`\r\n\r\n this.http.get<any>(queryUrl, { observe: 'response' }).subscribe({\r\n next: response => {\r\n const data = response.body ?? [];\r\n const count = response.headers.get('X-Total-Count');\r\n params.successCallback(data, this.toNumber(count));\r\n },\r\n error: error => {\r\n console.log(error);\r\n params.failCallback();\r\n }\r\n });\r\n }\r\n\r\n private getQueryString(params: IGetRowsParams): string {\r\n let queryParams = new HttpParams();\r\n queryParams = this.addCount(queryParams);\r\n queryParams = this.addSkipAndTake(params, queryParams);\r\n queryParams = this.addOrderBy(params, queryParams);\r\n queryParams = this.addFilterBy(params, queryParams);\r\n\r\n const queryString = queryParams.toString();\r\n return queryString ? \"?\" + queryString : queryString;\r\n }\r\n\r\n private addCount(queryParams: HttpParams): HttpParams {\r\n return queryParams.set(\"$count\", \"true\");\r\n }\r\n\r\n private addSkipAndTake(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n return queryParams\r\n .set(\"$top\", `${params.endRow - params.startRow}`)\r\n .set(\"$skip\", `${params.startRow}`);\r\n }\r\n\r\n private addOrderBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n if (!params.sortModel || params.sortModel.length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const orderByParams = params.sortModel\r\n .map(sort => `${sort.colId} ${sort.sort}`)\r\n .join(\",\");\r\n\r\n return queryParams.set(\"$orderby\", orderByParams);\r\n }\r\n\r\n private addFilterBy(params: IGetRowsParams, queryParams: HttpParams): HttpParams {\r\n\r\n const filterModel = params.filterModel;\r\n\r\n if (!filterModel || Object.keys(filterModel).length === 0) {\r\n return queryParams;\r\n }\r\n\r\n const filters: string[] = [];\r\n\r\n for (const column in filterModel) {\r\n const filter = filterModel[column];\r\n\r\n const condition = this.getCondition(column, filter);\r\n\r\n if (condition) {\r\n filters.push(condition);\r\n }\r\n }\r\n\r\n return queryParams.set(\"$filter\", filters.join(\" and \"));\r\n }\r\n\r\n private getCondition(column: string, filter: any): string | null {\r\n\r\n if (filter.operator === \"AND\" || filter.operator === \"OR\") {\r\n if (Array.isArray(filter.conditions)) {\r\n return \"(\" + filter.conditions.map((subfilter: any) => this.getCondition(column, subfilter))\r\n .join(` ${filter.operator.toLowerCase()} `) + \")\";\r\n }\r\n return null;\r\n }\r\n\r\n const value = filter.filter;\r\n\r\n switch (filter.filterType) {\r\n case \"text\":\r\n const text = (value ?? \"\").replace(/'/g, \"''\");\r\n if (filter.type === \"contains\") {\r\n return `contains(${column}, '${text}')`;\r\n } else if (filter.type === \"notContains\") {\r\n return `not contains(${column}, '${text}')`;\r\n } else if (filter.type === \"equals\") {\r\n return `${column} eq '${text}'`;\r\n } else if (filter.type === \"notEqual\") {\r\n return `${column} ne '${text}'`;\r\n } else if (filter.type === \"startsWith\") {\r\n return `startswith(${column}, '${text}')`;\r\n } else if (filter.type === \"endsWith\") {\r\n return `endswith(${column}, '${text}')`;\r\n } else if (filter.type === \"blank\") {\r\n return `${column} eq null`;\r\n } else if (filter.type === \"notBlank\") {\r\n return `${column} ne null`;\r\n } else if (filter.type === \"true\") {\r\n return `${column} eq true`;\r\n } else if (filter.type === \"false\") {\r\n return `${column} eq false`;\r\n }\r\n break;\r\n\r\n case \"number\":\r\n if (filter.type === \"equals\") {\r\n return `${column} eq ${value}`;\r\n } else if (filter.type === \"greaterThan\") {\r\n return `${column} gt ${value}`;\r\n } else if (filter.type === \"lessThan\") {\r\n return `${column} lt ${value}`;\r\n } else if (filter.type === \"greaterThanOrEqual\") {\r\n return `${column} ge ${value}`;\r\n } else if (filter.type === \"lessThanOrEqual\") {\r\n return `${column} le ${value}`;\r\n }\r\n break;\r\n\r\n case \"date\":\r\n return `${column} eq ${value}`; // Modifica se OData usa formati ISO\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private toNumber(value: string | null): number | undefined {\r\n if (!value)\r\n return undefined;\r\n const num = parseFloat(value);\r\n return isNaN(num) ? undefined : num;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport class RestDataSource<T, T2 = T> {\r\n private params: Record<string, any> = {};\r\n private mapFn?: (data: T) => T2;\r\n\r\n constructor(private http: HttpClient\r\n , private baseUrl: string) { }\r\n\r\n setParam(key: string, value: any): RestDataSource<T, T2> {\r\n if (value !== undefined && value !== null) {\r\n this.params[key] = value;\r\n } else {\r\n delete this.params[key];\r\n }\r\n return this;\r\n }\r\n\r\n setParams(params: Record<string, any>): RestDataSource<T, T2> {\r\n this.params = { ...params };\r\n return this;\r\n }\r\n\r\n setMapFunction(mapFn: (data: T) => T2): RestDataSource<T, T2> {\r\n this.mapFn = mapFn;\r\n return this;\r\n }\r\n\r\n getMapFunction(): ((data: T) => T2) | undefined {\r\n return this.mapFn;\r\n }\r\n\r\n getParam(key: string): any {\r\n return this.params[key];\r\n }\r\n\r\n getParams(): Record<string, any> {\r\n return this.params;\r\n }\r\n\r\n getData(): Observable<T2[]> {\r\n let httpParams = new HttpParams();\r\n\r\n Object.keys(this.params).forEach(key => {\r\n if (this.params[key] !== undefined && this.params[key] !== null) {\r\n httpParams = httpParams.set(key, this.params[key].toString());\r\n }\r\n });\r\n\r\n return this.http.get<T[]>(this.baseUrl, { params: httpParams }).pipe(\r\n map(responseArray =>\r\n this.mapFn ? responseArray.map(item => this.mapFn!(item)) : responseArray as unknown as T2[]\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ODataSource } from '../dataSources/odata';\r\nimport { RestDataSource } from '../dataSources/rest';\r\nimport { IRowsSource } from '../dataSources/interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataService {\r\n\r\n constructor(\r\n private http: HttpClient)\r\n { }\r\n\r\n queryOData(url: string): IRowsSource {\r\n return this.createOData(url);\r\n }\r\n\r\n createRest(url: string): RestDataSource<any, any>;\r\n createRest<T>(url: string): RestDataSource<T, T>;\r\n createRest<T, T2>(url: string): RestDataSource<T, T2>;\r\n createRest<T = any, T2 = T>(url: string): RestDataSource<T, T2> {\r\n return new RestDataSource<T, T2>(this.http, url);\r\n }\r\n\r\n private createOData(url: string): IRowsSource {\r\n return new ODataSource(url, this.http);\r\n }\r\n\r\n}\r\n","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","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FormatterService","i6.FunctionService","i7.FormService","i8.GlobalService","i9.RegisterService","i10.ScopeService","i1.ProgrammabilityService","i2","i2.GlobalService","i1.FormatterService","i3.ProgrammabilityService","take","i2.GridService","i3","takeUntil","i1.RegisterService","map","i1.GlobalService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.EventService","i6.WeakService","i7.RegisterService","i8.MetadataService","i9","i10.FormService","i11.GridService","i12.ChartService","i14","i2.ProgrammabilityService","i3.EventService","i4.RegisterService","i5","i6.MetadataService","i8.DialogService","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/functions.ts","../../../projects/ngx-sirio/src/lib/utils/feelable.ts","../../../projects/ngx-sirio/src/lib/services/feel.service.ts","../../../projects/ngx-sirio/src/lib/services/weak.service.ts","../../../projects/ngx-sirio/src/lib/services/toast.service.ts","../../../projects/ngx-sirio/src/lib/directives/dialog.directive.ts","../../../projects/ngx-sirio/src/lib/locale/locale-it.ts","../../../projects/ngx-sirio/src/lib/locale/locale-en.ts","../../../projects/ngx-sirio/src/lib/locale/locale-de.ts","../../../projects/ngx-sirio/src/lib/locale/locale-fr.ts","../../../projects/ngx-sirio/src/lib/locale/locale-es.ts","../../../projects/ngx-sirio/src/lib/locale/locale-pt.ts","../../../projects/ngx-sirio/src/lib/locale/locale.ts","../../../projects/ngx-sirio/src/lib/locale/localize.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.ts","../../../projects/ngx-sirio/src/lib/dialog/dialog.component.html","../../../projects/ngx-sirio/src/lib/services/dialog.service.ts","../../../projects/ngx-sirio/src/lib/services/formatter.service.ts","../../../projects/ngx-sirio/src/lib/services/metadata.service.ts","../../../projects/ngx-sirio/src/lib/services/function.service.ts","../../../projects/ngx-sirio/src/lib/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/groupByRow.ts","../../../projects/ngx-sirio/src/lib/services/event.service.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/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/directives/framesecurity.directive.ts","../../../projects/ngx-sirio/src/lib/directives/dropdown.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tab.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordion.directive.ts","../../../projects/ngx-sirio/src/lib/directives/grid.directive.ts","../../../projects/ngx-sirio/src/lib/directives/change.directive.ts","../../../projects/ngx-sirio/src/lib/controls/form.ts","../../../projects/ngx-sirio/src/lib/controls/textfield.ts","../../../projects/ngx-sirio/src/lib/controls/select.ts","../../../projects/ngx-sirio/src/lib/controls/taglist.ts","../../../projects/ngx-sirio/src/lib/controls/number.ts","../../../projects/ngx-sirio/src/lib/controls/date.ts","../../../projects/ngx-sirio/src/lib/controls/time.ts","../../../projects/ngx-sirio/src/lib/controls/toggle.ts","../../../projects/ngx-sirio/src/lib/controls/checkbox.ts","../../../projects/ngx-sirio/src/lib/controls/chipradio.ts","../../../projects/ngx-sirio/src/lib/controls/radio.ts","../../../projects/ngx-sirio/src/lib/controls/chipchecklist.ts","../../../projects/ngx-sirio/src/lib/controls/checklist.ts","../../../projects/ngx-sirio/src/lib/controls/textarea.ts","../../../projects/ngx-sirio/src/lib/controls/filepicker.ts","../../../projects/ngx-sirio/src/lib/controls/text.ts","../../../projects/ngx-sirio/src/lib/controls/html.ts","../../../projects/ngx-sirio/src/lib/controls/image.ts","../../../projects/ngx-sirio/src/lib/controls/tab.ts","../../../projects/ngx-sirio/src/lib/controls/chart.ts","../../../projects/ngx-sirio/src/lib/controls/accordion.ts","../../../projects/ngx-sirio/src/lib/controls/dynamiclist.ts","../../../projects/ngx-sirio/src/lib/controls/group.ts","../../../projects/ngx-sirio/src/lib/controls/table.ts","../../../projects/ngx-sirio/src/lib/controls/button.ts","../../../projects/ngx-sirio/src/lib/controls/separator.ts","../../../projects/ngx-sirio/src/lib/controls/spacer.ts","../../../projects/ngx-sirio/src/lib/controls/iframe.ts","../../../projects/ngx-sirio/src/lib/controls/tooltip.ts","../../../projects/ngx-sirio/src/lib/controls/factory.ts","../../../projects/ngx-sirio/src/lib/directives/register.directive.ts","../../../projects/ngx-sirio/src/lib/directives/refresh.directive.ts","../../../projects/ngx-sirio/src/lib/directives/updateblur.directive.ts","../../../projects/ngx-sirio/src/lib/directives/date.directive.ts","../../../projects/ngx-sirio/src/lib/directives/number.directive.ts","../../../projects/ngx-sirio/src/lib/directives/text.directive.ts","../../../projects/ngx-sirio/src/lib/directives/tabcontrol.directive.ts","../../../projects/ngx-sirio/src/lib/directives/collapse.directive.ts","../../../projects/ngx-sirio/src/lib/directives/accordionpanel.directive.ts","../../../projects/ngx-sirio/src/lib/shared/template-wrapper/template-wrapper.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-host/dynamic-host.component.html","../../../projects/ngx-sirio/src/lib/services/sanitize.service.ts","../../../projects/ngx-sirio/src/lib/services/markdown.service.ts","../../../projects/ngx-sirio/src/lib/services/mime.service.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.ts","../../../projects/ngx-sirio/src/lib/dynamic-fields/dynamic-fields.component.html","../../../projects/ngx-sirio/src/lib/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 ToBoundArrows<T extends object>(\r\n instance: T,\r\n methodNames: (keyof T)[]) : Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const name of methodNames) {\r\n const original = instance[name];\r\n if (typeof original === 'function') {\r\n result[name as string] = (...args: any[]) => original.apply(instance, args);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function ToProxy(instance: any) {\r\n\r\n if (!instance) {\r\n return instance;\r\n }\r\n\r\n return new Proxy(instance, {\r\n get: (target: any, property) => {\r\n\r\n let value = undefined;\r\n\r\n if (property in target) {\r\n value = Reflect.get(target, property, target);\r\n }\r\n\r\n if (typeof value === 'function') {\r\n return (...args: any[]) => value.apply(instance, args);\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n return ToProxy(value);\r\n }\r\n\r\n return value;\r\n }\r\n });\r\n\r\n}\r\n","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","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","import { Injectable } from '@angular/core';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\nimport { ToBoundArrows } from '../utils/functions';\r\nimport { SirioToastService, ToastTypes } from \"ngx-sirio-lib\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private sirioToast: SirioToastService\r\n ) { }\r\n\r\n notifyInfo(message: string, 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};\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};\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};\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};\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};\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};\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/functions';\r\nimport { DialogComponent } from '../dialog/dialog.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n private dialogService: SirioDialogService\r\n )\r\n { }\r\n\r\n openDialog(formSchema: any, options?: FormDialogOptions) {\r\n this.showDialog(formSchema, options);\r\n }\r\n\r\n alert(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions : FormDialogOptions = {\r\n ...options,\r\n type: \"warning\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n info(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'OK',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n };\r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n confirm(text: string, options?: DialogOptions) {\r\n const formSchema = this.createTextSchema(text);\r\n const formOptions: FormDialogOptions = {\r\n ...options,\r\n type: \"info\",\r\n buttons: 'YesNo',\r\n isDrawer: false,\r\n showNav: false,\r\n showNavButton: false,\r\n showProgress: false,\r\n showFormTitle: false\r\n }; \r\n this.showDialog(formSchema, formOptions);\r\n }\r\n\r\n 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/functions';\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","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/functions';\r\nimport { IEvaluatorProvider } from '../services/programmability.service';\r\n\r\n@Injectable()\r\nexport class FunctionService implements IEvaluatorProvider {\r\n\r\n constructor(private metadata: MetadataService\r\n , private dialog: DialogService\r\n , private injector: Injector) { }\r\n\r\n invokable(func: any): Function {\r\n 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 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 getContext(): Record<string, any> {\r\n return ToBoundArrows(this, [\r\n \"openForm\",\r\n \"invokable\"\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\n\r\nexport type Path = string | number | Array<string | number>;\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};\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 errors(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 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 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 normalizePath = (path: Path): (string | number)[] => {\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\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 (!segment) {\r\n continue;\r\n }\r\n else 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 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 } 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 {\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 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\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\n\r\n@Injectable()\r\nexport class ScopeService implements IEvaluatorProvider {\r\n\r\n constructor(\r\n @Optional() @SkipSelf() private parent: ScopeService | null) {\r\n }\r\n\r\n private scope: Record<string, any> | null = null;\r\n\r\n set(scope: Record<string, any> | null) {\r\n this.scope = scope;\r\n }\r\n\r\n get(): Record<string, any> | null {\r\n return this.scope; \r\n }\r\n\r\n getContext(): Record<string, any> {\r\n if (!this.scope) return {};\r\n return {\r\n ...this.scope,\r\n parent: () => {\r\n this.parent?.getContext();\r\n }\r\n };\r\n } \r\n}\r\n","import { Injectable, OnDestroy, Optional } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup, ValidatorFn, AsyncValidatorFn, Validators, ValidationErrors } 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/functions';\r\nimport { toFeelable } from '../utils/feelable';\r\nimport { Subject, takeUntil, distinctUntilChanged, isObservable, of, Observable, map, take, shareReplay } from \"rxjs\";\r\nimport { tap } from 'rxjs/operators';\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 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 readonly predefinedFunctions: Record<string, any>;\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n isExpression(text: string | null): boolean {\r\n return 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): string {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n return value ?? \"\";\r\n }\r\n\r\n evaluateBoolean(formGroup: FormGroup, value: boolean | string | null, options: EvaluateOptions = {}): boolean | null {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue), options) as boolean;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluateNumber(formGroup: FormGroup, value: number | string | null): number | null {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n const strValue: string = value;\r\n if (this.isExpression(strValue)) {\r\n return this.evalExpression(formGroup, this.getExpression(strValue)) as number;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n evaluate(formGroup: FormGroup, value: string | null, options: EvaluateOptions = { }): any {\r\n if (this.isExpression(value)) {\r\n return this.evalExpression(formGroup, this.getExpression(value), options);\r\n }\r\n return null;\r\n }\r\n\r\n evaluateTemplate(formGroup: FormGroup, value: string | null): any {\r\n\r\n let template: string | null = null;\r\n\r\n if (this.isExpression(value)) {\r\n template = this.evalExpression(formGroup, this.getExpression(value)) as string;\r\n }\r\n else {\r\n template = value;\r\n }\r\n\r\n if (!template)\r\n return \"\";\r\n\r\n return this.evalTemplate(formGroup, template);\r\n }\r\n\r\n evaluateUnary(formGroup: FormGroup, value: string | null, input: any): any {\r\n if (this.isExpression(value)) {\r\n return this.evalUnaryTest(formGroup, this.getExpression(value), input);\r\n }\r\n return null;\r\n }\r\n\r\n invalidate(value: string | null): void {\r\n if (this.isExpression(value)) {\r\n this.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 disable(formGroup: FormGroup, control: AbstractControl, value: boolean | string | null): 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 logDisabled = (value: any) => {\r\n if (!this.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 value === 'boolean') {\r\n disableControl(value);\r\n }\r\n else if (typeof value === 'string') {\r\n if (this.isExpression(value)) {\r\n const expression = this.getExpression(value);\r\n const dependencies = this.getDependencies(expression);\r\n const applyExpression = () => {\r\n const result = this.evaluateBoolean(formGroup, value, { cacheable: false });\r\n disableControl(result);\r\n };\r\n if (dependencies.length > 0) {\r\n this.watch(formGroup, dependencies, () => {\r\n applyExpression();\r\n });\r\n }\r\n applyExpression();\r\n }\r\n }\r\n }\r\n\r\n validate(formGroup: FormGroup, key: string, required?: boolean, validations?: ValidationRule[]): [ValidatorFn[], AsyncValidatorFn[], (control: AbstractControl) => void]\r\n {\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(Validators.required);\r\n }\r\n\r\n if (!Array.isArray(validations)) {\r\n return [validators, asyncValidators, noWatching];\r\n }\r\n\r\n validations.forEach((item: ValidationRule) => {\r\n if (!this.isExpression(item.expression))\r\n return;\r\n\r\n if (item.type === \"validate\") {\r\n const { sync, async } = this.validateFn(formGroup, item);\r\n validators.push(sync);\r\n asyncValidators.push(async);\r\n }\r\n else if (item.type === \"invalidate\") {\r\n const { sync, async } = this.invalidateFn(formGroup, item);\r\n validators.push(sync);\r\n asyncValidators.push(async);\r\n }\r\n });\r\n\r\n const watching = (control: AbstractControl): void => {\r\n this.watchForValidation(formGroup, control, key, validations);\r\n };\r\n \r\n return [validators, asyncValidators, watching];\r\n }\r\n\r\n private cacheable: boolean = true;\r\n\r\n private verbose: boolean = false;\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) {\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)\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 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 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\r\n const providers: IEvaluatorProvider[] = [\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 return providers.reduce((acc, provider) => {\r\n return {\r\n ...acc,\r\n ...provider.getContext()\r\n };\r\n }, {});\r\n }\r\n\r\n private 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 valueSubscribe = (control: AbstractControl) => {\r\n control.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n logValueChanged(control);\r\n });\r\n });\r\n }\r\n\r\n const statusSubscribe = (control: AbstractControl) => {\r\n control.statusChanges\r\n .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n setTimeout(() => {\r\n callback();\r\n logStatusChanged(control);\r\n });\r\n });\r\n }\r\n\r\n for (const dependence of dependencies) {\r\n const [path, status] = this.processDependencies(dependence);\r\n //potrei scrivere una funzione che mi restituisce i control da control\r\n //risalendo fino al FormGroup\r\n const control = this.formService.getControl(formGroup, path);\r\n if (control) {\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 }\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 private validateFn(formGroup: FormGroup, item: ValidationRule): { sync: ValidatorFn; async: AsyncValidatorFn } {\r\n return this.createValidators(formGroup, item, (result: any) => result);\r\n }\r\n\r\n private invalidateFn(formGroup: FormGroup, item: ValidationRule): { sync: ValidatorFn; async: AsyncValidatorFn } {\r\n return this.createValidators(formGroup, item, (result: any) => !result);\r\n }\r\n\r\n private createValidators(\r\n formGroup: FormGroup,\r\n item: ValidationRule,\r\n predicate: (result: any) => boolean\r\n ): { sync: ValidatorFn; async: AsyncValidatorFn } {\r\n\r\n //IMPORTANT: This validator instance is bound to exactly ONE control.\r\n //Thanks to this invariant we can cache the last `check(...)` result (sync value or shared Observable)\r\n let state = { value: Symbol('unset'), result: null };\r\n\r\n const check = (control: AbstractControl): any => this.evaluate(formGroup, item.expression, {\r\n cacheable: false,\r\n extendContext: () => { return { \"?\": control.value } }\r\n });\r\n\r\n const validationErrors = (): ValidationErrors => {\r\n const message = this.evaluateString(formGroup, item.message);\r\n const validationError = { error: true, message };\r\n return validationError;\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 r = check(control);\r\n if (isObservable(r)) {\r\n r = (r as Observable<any>).pipe(\r\n take(1),\r\n shareReplay({ bufferSize: 1, refCount: false })\r\n );\r\n }\r\n state = { value: v, result: r };\r\n }\r\n return state.result;\r\n };\r\n\r\n const sync: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const result = computeOnce(control);\r\n if (isObservable(result)) return null;\r\n return predicate(result) ? null : validationErrors();\r\n };\r\n\r\n const async: AsyncValidatorFn = (control: AbstractControl) => {\r\n const result = computeOnce(control);\r\n if (!isObservable(result)) {\r\n return of(predicate(result) ? null : validationErrors());\r\n }\r\n return (result as Observable<any>).pipe(\r\n map((value: any) => predicate(value) ? null : validationErrors())\r\n );\r\n };\r\n\r\n return { sync, async };\r\n }\r\n\r\n //private validateFn(formGroup: FormGroup, item: ValidationRule): ValidatorFn { \r\n // return (control: AbstractControl): ValidationErrors | null => {\r\n // return this.validateRule(formGroup, control, item, (result: any) => !result);\r\n // };\r\n //}\r\n\r\n //private invalidateFn(formGroup: FormGroup, item: ValidationRule): ValidatorFn {\r\n // return (control: AbstractControl): ValidationErrors | null => {\r\n // return this.validateRule(formGroup, control, item, (result: any) => result);\r\n // };\r\n //}\r\n\r\n //private validateRule(formGroup: FormGroup, control: AbstractControl, item: ValidationRule\r\n // , predicate: (result: any) => boolean): ValidationErrors | null {\r\n\r\n // //if (!control.touched)\r\n // // return null;\r\n\r\n // const logValidation = (value: ValidationErrors | null) => {\r\n // if (!this.verbose) return;\r\n // if (value === null) {\r\n // console.log(\"Validate successfully\", control.value, { path: this.getPath(control), item, control, formGroup });\r\n // }\r\n // else {\r\n // console.log(\"Validation failed\", control.value, { resut: value, path: this.getPath(control), item, control, formGroup });\r\n // }\r\n // };\r\n\r\n // var result = this.evaluateUnary(formGroup, item.expression, control.value);\r\n\r\n // if (predicate(result)) {\r\n // const message = this.evaluateString(formGroup, item.message);\r\n // const validationError = { error: true, message };\r\n // logValidation(validationError);\r\n // return validationError;\r\n // }\r\n\r\n // logValidation(null);\r\n // return null;\r\n //}\r\n\r\n private watchForValidation(formGroup: FormGroup, control: AbstractControl, key: string, validations: ValidationRule[]): void {\r\n\r\n if (Array.isArray(validations)) {\r\n const expressions = validations\r\n .filter(item => this.isExpression(item.expression))\r\n .map(item => \"=\" + this.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.getDependencies(feelable)\r\n .filter(dep => dep !== key);\r\n\r\n if (dependencies.length === 0) return;\r\n\r\n this.watch(formGroup, dependencies, () => {\r\n setTimeout(() => {\r\n control.updateValueAndValidity();\r\n });\r\n \r\n });\r\n }\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 extendContext?: ExtendContextFn;\r\n}\r\n\r\nexport type ExtendContextFn = () => Record<string, any>;\r\n\r\nexport interface ValidationRule {\r\n expression: string;\r\n type: \"validate\" | \"invalidate\";\r\n message: string\r\n}\r\n","interface Form {\r\n id: string;\r\n type: string;\r\n name: string;\r\n title: string;\r\n disabled: string | boolean | null;\r\n 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 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 { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport interface CommandEvent {\r\n name: string;\r\n component: any,\r\n formGroup: FormGroup,\r\n event: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventService {\r\n\r\n private commandSubject = new Subject<CommandEvent>();\r\n\r\n onCommand = this.commandSubject.asObservable();\r\n\r\n emitCommand(data: CommandEvent) {\r\n this.commandSubject.next(data);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { 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 { FormGroup } from '@angular/forms';\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 }\r\n\r\n refresh(): boolean {\r\n return false;\r\n }\r\n\r\n evaluateBoolean(value: boolean | string | null): boolean | null {\r\n\r\n const options: EvaluateOptions = {\r\n 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 return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);\r\n }\r\n\r\n evaluateString(value: string | null): string {\r\n return this.programmability.evaluateString(this.getFormGroup(), value);\r\n }\r\n\r\n clickButton(action: any, event: any) {\r\n if (action.click) {\r\n\r\n const options: EvaluateOptions = {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n params: this.params,\r\n action: action,\r\n data: this.getData(),\r\n 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 getData(): any {\r\n return 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\r\n","<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n","export const getLabelSymbol = Symbol('getLabel');\r\n","import { getLabelSymbol } from './symbols';\r\n\r\nexport type LabeledMap<TKey extends string | number, TValue> =\r\n Record<TKey, TValue> & {\r\n [getLabelSymbol]?: (value: TKey) => TValue;\r\n };\r\n\r\nexport function isLabeledRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue,\r\n getLabelSymbol: symbol\r\n): obj is Record<TKey, TValue> & { [key: symbol]: (key: TKey) => TValue } {\r\n if (!isRecord(obj, isKey, isValue)) {\r\n return false;\r\n }\r\n const getLabel = (obj as { [key: symbol]: unknown })[getLabelSymbol];\r\n return (getLabel !== undefined && typeof getLabel === 'function');\r\n}\r\n\r\nexport function isRecord<TKey extends string | number, TValue>(\r\n obj: any,\r\n isKey: (key: any) => key is TKey,\r\n isValue: (val: any) => val is TValue\r\n): obj is Record<TKey, TValue> {\r\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n return false;\r\n }\r\n return Object.entries(obj).every(([key, val]) => {\r\n return isKey(key) && isValue(val);\r\n });\r\n}\r\n\r\nexport function isStringKey(key: any): key is string | number {\r\n return typeof key === 'string';\r\n}\r\n\r\nexport function isNumericKey(key: any): key is string | number {\r\n return typeof key === 'string' && !isNaN(Number(key));\r\n}\r\n\r\nexport function isBooleanKey(key: any): key is string | number {\r\n return key === 'true' || key === 'false';\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IFilterParams, IDoesFilterPassParams } from 'ag-grid-community';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { SirioInputComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioButtonComponent } from 'ngx-sirio-lib';\r\nimport { isRecord } from '../../common/record';\r\nimport { Texts } from '../../locale/locale-it';\r\n\r\n@Component({\r\n templateUrl: './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\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 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 return element.tabIndex >= 0 &&\r\n style.visibility !== 'hidden' &&\r\n style.display !== 'none' &&\r\n !element.hasAttribute('disabled') &&\r\n isVisible(element);\r\n}\r\n\r\nexport function getFocusables(el: HTMLElement, firstOnly = false): HTMLElement[] {\r\n const candidates = getCandidate(el);\r\n const result: HTMLElement[] = [];\r\n for (const focusableEl of candidates) { \r\n if (isFocusable(focusableEl)) {\r\n result.push(focusableEl);\r\n if (firstOnly) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function setFocus(el: HTMLElement) {\r\n const focusables = getFocusables(el, true); \r\n if (focusables.length === 0) {\r\n return false;\r\n }\r\n focusables[0].focus();\r\n return true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\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} 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 { 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 }\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 //, 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 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 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 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 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.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 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 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 valueGetter: (n: any) => n.node.rowIndex + 1\r\n });\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 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 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 private getRowSelection(component: any, formGroup: FormGroup): RowSelectionOptions | undefined {\r\n let options: RowSelectionOptions | undefined = undefined;\r\n\r\n if (component.selection === \"singleRow\") {\r\n options = { mode: \"singleRow\" };\r\n }\r\n else if (component.selection === \"multiRow\") {\r\n options = {\r\n mode: \"multiRow\",\r\n selectAll: 'filtered',\r\n hideDisabledCheckboxes: true\r\n };\r\n }\r\n\r\n if (options && component.isSelectable) {\r\n options = {\r\n ...options,\r\n isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)\r\n }\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private onRowSelectable(component: any, formGroup: FormGroup, data: any) : boolean {\r\n if (!data)\r\n return false;\r\n\r\n const result = this.programmability.evaluate(formGroup, component.isSelectable, {\r\n cacheable: false,\r\n extendContext: () => ({\r\n \"event\": {\r\n data: data\r\n }\r\n })\r\n });\r\n\r\n return result === true; \r\n }\r\n\r\n private 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.isSelected, {\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.isSelected\r\n && this.hasSelection(component))\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 hasSelection(component: any): boolean {\r\n return component.selection === \"singleRow\"\r\n || component.selection === \"multiRow\";\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 '';\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 } from '@angular/core';\r\nimport { SirioValidationDirective } from 'ngx-sirio-lib';\r\nimport { debounceTime, merge } from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 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 merge(control.valueChanges, control.statusChanges)\r\n .pipe(takeUntilDestroyed(thisRef.destroyRef), debounceTime(0))\r\n .subscribe(() => {\r\n if (thisRef.canValidate) {\r\n thisRef.checkValidation();\r\n }\r\n });\r\n }\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 // commentato, perchè se arriva un value gia con un array vuoto senza allowAddRemove lo azzera\r\n //else if (this.allowAddRemove !== true) {\r\n // (formArray as any).resize(0);\r\n //} \r\n }\r\n }\r\n}\r\n","import { Directive, Input, AfterViewInit, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[frameSecurity]',\r\n standalone: true\r\n})\r\nexport class FrameSecurityDirective implements AfterViewInit {\r\n @Input() frameSecurity: any = null;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngAfterViewInit(): void {\r\n const frame = this.el.nativeElement;\r\n\r\n const sandbox = this.getSandBox(this.frameSecurity);\r\n\r\n if (sandbox)\r\n this.renderer.setAttribute(frame, 'sandbox', sandbox);\r\n\r\n const allow = this.getAllow(this.frameSecurity);\r\n\r\n if (allow)\r\n this.renderer.setAttribute(frame, 'allow', allow);\r\n }\r\n\r\n private getSandBox(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"allowScripts\",\r\n \"allowSameOrigin\",\r\n \"allowForms\",\r\n \"allowModals\",\r\n \"allowPopups\",\r\n \"allowTopNavigation\",\r\n \"allowStorageAccessByUserActivation\"\r\n ];\r\n let sandBox = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => this.camelToKebabCase(key))\r\n .join(' ');\r\n\r\n return sandBox;\r\n };\r\n\r\n private getAllow(security: any): string {\r\n let allowedProperties: string[] = [\r\n \"fullscreen\",\r\n \"geolocation\",\r\n \"camera\",\r\n \"microphone\"\r\n ];\r\n let allow = Object.entries(security)\r\n .filter(([key, value]) => value === true && allowedProperties.includes(key))\r\n .map(([key]) => key)\r\n .join(' ');\r\n\r\n return allow;\r\n };\r\n\r\n private camelToKebabCase(str: string): string {\r\n return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());\r\n }\r\n}\r\n","import { Directive, AfterViewInit, OnDestroy, ElementRef, Host, Renderer2 } from '@angular/core';\r\nimport { SirioSelectComponent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\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 private optionsSubscription?: Subscription;\r\n\r\n ngAfterViewInit(): void {\r\n this.handleValue();\r\n this.handleSearchable();\r\n this.handleOptionsChanges();\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 this.sirioSelect.control?.updateValueAndValidity();\r\n });\r\n }\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 this.sirioSelect.control?.updateValueAndValidity();\r\n }\r\n\r\n private removeValidator(): void {\r\n this.sirioSelect.control?.removeValidators(this.validator);\r\n this.sirioSelect.control?.updateValueAndValidity();\r\n }\r\n\r\n private validateOptions(control: AbstractControl): ValidationErrors | 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 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\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]',\r\n standalone: true\r\n})\r\nexport class GridDirective implements OnChanges {\r\n @Input() rowSource!: any;\r\n @Input() columnDefs: any = 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 languageService: LanguageService\r\n ) {\r\n\r\n grid.gridReady.subscribe((params) => {\r\n this.gridApi = params.api;\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 if (changes['rowSource']) {\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 if (changes[\"columnDefs\"]) {\r\n this.onColumnsChanges();\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 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\r\n private setDataSource(rowSource: any) {\r\n this.grid.rowModelType = 'infinite';\r\n if (this.isGridReady) {\r\n this.grid.api.setGridOption('datasource', rowSource);\r\n }\r\n else {\r\n this.grid.datasource = rowSource;\r\n }\r\n }\r\n\r\n private isArray(rowSource: any): boolean {\r\n return Array.isArray(rowSource);\r\n }\r\n\r\n private isDataSource(obj: any): obj is IRowsSource {\r\n return obj && typeof obj.getRows === \"function\";\r\n }\r\n\r\n private onGridReady() { \r\n this.onColumnsChanges();\r\n }\r\n\r\n private onColumnsChanges() {\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 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","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[observe]',\r\n standalone: true\r\n})\r\nexport class ChangeDirective implements OnChanges {\r\n @Input() observe: any;\r\n @Input() callback?: () => void;\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"observe\"]) {\r\n if (this.callback) {\r\n this.callback();\r\n } \r\n } \r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class FormControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextFieldControl extends Control {\r\n\r\n readonly setRandomColor = (): void => {\r\n this.getInput().sirioInput.nativeElement.style.backgroundColor = this.getRandomColor(); \r\n }\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n private getRandomColor(): string {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n\r\n return color;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class SelectControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioSelectComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TagListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getSelect() as any)._refresh();\r\n }\r\n\r\n private getSelect(): SirioSelectComponent {\r\n return this.getComponentRef() as SirioSelectComponent;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class NumberControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioDatepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class DateControl extends Control {\r\n\r\n private getDatePicker(): SirioDatepickerComponent {\r\n return this.getComponentRef() as SirioDatepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioTimepickerComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TimeControl extends Control {\r\n\r\n private getTimePicker(): SirioTimepickerComponent {\r\n return this.getComponentRef() as SirioTimepickerComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioToggleComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ToggleControl extends Control {\r\n\r\n private getToggle(): SirioToggleComponent {\r\n return this.getComponentRef() as SirioToggleComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckBoxControl extends Control {\r\n\r\n private getCheckBox(): SirioCheckboxComponent {\r\n return this.getComponentRef() as SirioCheckboxComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipRadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipRadio() as any)._refresh();\r\n }\r\n\r\n private getChipRadio(): SirioChipRadioGroupComponent {\r\n return this.getComponentRef() as SirioChipRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioRadioGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class RadioControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getRadio() as any)._refresh();\r\n }\r\n\r\n private getRadio(): SirioRadioGroupComponent {\r\n return this.getComponentRef() as SirioRadioGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioChipCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ChipCheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getChipCheckBoxGroup() as any)._refresh();\r\n }\r\n\r\n private getChipCheckBoxGroup(): SirioChipCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioChipCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioCheckboxGroupComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class CheckListControl extends Control {\r\n\r\n readonly refresh = (): void => {\r\n (this.getCheckboxGroup() as any)._refresh();\r\n }\r\n\r\n private getCheckboxGroup(): SirioCheckboxGroupComponent {\r\n return this.getComponentRef() as SirioCheckboxGroupComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioInputComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TextAreaControl extends Control {\r\n\r\n private getInput(): SirioInputComponent {\r\n return this.getComponentRef() as SirioInputComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioFileUploadComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class FilePickerControl extends Control {\r\n\r\n private getFileUpload(): SirioFileUploadComponent {\r\n return this.getComponentRef() as SirioFileUploadComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TextControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class HtmlControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class ImageControl extends Control {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioTabComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class TabControl extends ContainerControl {\r\n\r\n private getTab(): SirioTabComponent {\r\n return this.getComponentRef() as SirioTabComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgCharts } from 'ag-charts-angular';\r\n\r\nexport class ChartControl extends Control {\r\n\r\n //readonly refresh = (): void => {\r\n // (this.getGrid() as any)._refresh();\r\n //}\r\n\r\n private getChart(): AgCharts {\r\n return this.getComponentRef() as AgCharts;\r\n }\r\n}\r\n","import { ContainerControl } from \"./control\";\r\nimport { SirioAccordionComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class AccordionControl extends ContainerControl {\r\n\r\n private getAccordion(): SirioAccordionComponent {\r\n return this.getComponentRef() as SirioAccordionComponent;\r\n }\r\n\r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class DynamicListControl extends ContainerControl {\r\n\r\n \r\n}\r\n","import { ContainerControl } from \"./control\";\r\n\r\nexport class GroupControl extends ContainerControl {\r\n\r\n}\r\n","import { Control } from \"./control\";\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\n\r\n\r\nexport class TableControl extends Control {\r\n\r\n readonly setFilter = (filter: any): void => {\r\n this.getGrid().api.setFilterModel(filter);\r\n }\r\n\r\n readonly clearFilter = (): void => {\r\n this.getGrid().api.setFilterModel(null);\r\n }\r\n\r\n readonly refresh = (): void => {\r\n (this.getGrid() as any)._refresh();\r\n }\r\n\r\n private getGrid(): AgGridAngular {\r\n return this.getComponentRef() as AgGridAngular;\r\n }\r\n}\r\n","import { Control } from \"./control\";\r\nimport { SirioButtonComponent } from \"ngx-sirio-lib\";\r\n\r\nexport class ButtonControl extends Control {\r\n\r\n private getButton(): SirioButtonComponent {\r\n return this.getComponentRef() as SirioButtonComponent;\r\n }\r\n\r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SeparatorControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class SpacerControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class IFrameControl extends Control {\r\n\r\n \r\n}\r\n","import { Control } from \"./control\";\r\n\r\nexport class TooltipControl extends Control {\r\n\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Control } from '../controls/control';\r\nimport { FormControl } from '../controls/form';\r\nimport { TextFieldControl } from '../controls/textfield';\r\nimport { SelectControl } from '../controls/select';\r\nimport { TagListControl } from '../controls/taglist';\r\nimport { NumberControl } from '../controls/number';\r\nimport { DateControl } from '../controls/date';\r\nimport { TimeControl } from '../controls/time';\r\nimport { ToggleControl } from '../controls/toggle';\r\nimport { CheckBoxControl } from '../controls/checkbox';\r\nimport { ChipRadioControl } from '../controls/chipradio';\r\nimport { RadioControl } from '../controls/radio';\r\nimport { ChipCheckListControl } from '../controls/chipchecklist';\r\nimport { CheckListControl } from '../controls/checklist';\r\nimport { TextAreaControl } from '../controls/textarea';\r\nimport { FilePickerControl } from '../controls/filepicker';\r\nimport { TextControl } from '../controls/text';\r\nimport { HtmlControl } from '../controls/html';\r\nimport { ImageControl } from '../controls/image';\r\nimport { TabControl } from '../controls/tab';\r\nimport { ChartControl } from '../controls/chart';\r\nimport { AccordionControl } from '../controls/accordion';\r\nimport { DynamicListControl } from '../controls/dynamiclist';\r\nimport { GroupControl } from '../controls/group';\r\nimport { TableControl } from '../controls/table';\r\nimport { ButtonControl } from '../controls/button';\r\nimport { SeparatorControl } from '../controls/separator';\r\nimport { SpacerControl } from '../controls/spacer';\r\nimport { IFrameControl } from '../controls/iframe';\r\nimport { TooltipControl } from '../controls/tooltip';\r\nimport { RegisterService } from '../services/register.service';\r\n\r\nexport function createControl(name: string\r\n , metadata: any\r\n , componentRef: any\r\n , elementRef: ElementRef\r\n , register: RegisterService | undefined) : Control {\r\n\r\n switch (metadata.type) {\r\n\r\n case \"default\":\r\n return new FormControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"textfield\":\r\n return new TextFieldControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"select\":\r\n return new SelectControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"taglist\":\r\n return new TagListControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"number\":\r\n return new NumberControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"datetime\":\r\n switch (metadata.subtype) {\r\n case \"date\":\r\n return new DateControl(name, metadata, componentRef, elementRef);\r\n case \"time\":\r\n return new TimeControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checkbox\":\r\n switch (metadata.subtype) {\r\n case \"toggle\":\r\n return new ToggleControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckBoxControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"radio\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipRadioControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new RadioControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"checklist\":\r\n switch (metadata.subtype) {\r\n case \"chip\":\r\n return new ChipCheckListControl(name, metadata, componentRef, elementRef);\r\n default:\r\n return new CheckListControl(name, metadata, componentRef, elementRef);\r\n }\r\n\r\n case \"textarea\":\r\n return new TextAreaControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"filepicker\":\r\n return new FilePickerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"text\":\r\n return new TextControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"html\":\r\n return new HtmlControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"image\":\r\n return new ImageControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"dynamiclist\":\r\n switch (metadata.subtype) {\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n default:\r\n return new DynamicListControl(name, metadata, componentRef, elementRef, register);\r\n }\r\n\r\n case \"group\":\r\n return new GroupControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"table\":\r\n return new TableControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"chart\":\r\n return new ChartControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"button\":\r\n return new ButtonControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"separator\":\r\n return new SeparatorControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"spacer\":\r\n return new SpacerControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"iframe\":\r\n return new IFrameControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tooltip\":\r\n return new TooltipControl(name, metadata, componentRef, elementRef);\r\n\r\n case \"tab\":\r\n return new TabControl(name, metadata, componentRef, elementRef, register);\r\n\r\n case \"accordion\":\r\n return new AccordionControl(name, metadata, componentRef, elementRef, register);\r\n\r\n default:\r\n return new Control(name, metadata, componentRef, elementRef);\r\n }\r\n}\r\n","import {\r\n Directive, Input, ElementRef, AfterContentInit, OnDestroy\r\n , ContentChild, ContentChildren, QueryList, forwardRef\r\n} from '@angular/core';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { createControl } from '../controls/factory';\r\nimport { DynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.component';\r\nimport { IDynamicFieldsComponent } from '../dynamic-fields/dynamic-fields.interface';\r\nimport { ItemControl } from '../controls/control';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[register]',\r\n standalone: true\r\n})\r\nexport class RegisterDirective implements AfterContentInit, OnDestroy {\r\n @Input() register: any = null;\r\n @Input() componentRef: any;\r\n @ContentChild(forwardRef(() => DynamicFieldsComponent)) dynamicField?: IDynamicFieldsComponent;\r\n @ContentChildren(forwardRef(() => DynamicFieldsComponent), { descendants: true }) itemFields!: QueryList<IDynamicFieldsComponent>;\r\n \r\n constructor(\r\n private el: ElementRef,\r\n private registerService: RegisterService\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n this.registerControl();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unregisterControl();\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private destroy$ = new Subject<void>();\r\n\r\n private registerControl(): void {\r\n const name = this.getName();\r\n\r\n const register = (this.register.type === 'dynamiclist')\r\n ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)\r\n : this.dynamicField?.getRegister();\r\n\r\n const control = createControl(name, this.register, this.componentRef, this.el, register);\r\n this.registerService.register(name, control);\r\n\r\n }\r\n\r\n private unregisterControl(): void {\r\n this.registerService.unregister(this.getName());\r\n }\r\n\r\n private getName(): string {\r\n return this.register.name ?? this.register.id;\r\n }\r\n\r\n private createDynamicRegister(name: string, metadata: any, componentRef: any, el: ElementRef\r\n , itemFields: QueryList<IDynamicFieldsComponent>): RegisterService {\r\n\r\n const newRegister = new RegisterService(null);\r\n\r\n const registerAll = (itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n newRegister.unregisterAll();\r\n itemFields.forEach((itemField, index) => {\r\n const register = itemField.getRegister();\r\n const newName = `${name}-${index}`;\r\n const control = new ItemControl(newName, index, metadata, componentRef, el, register);\r\n newRegister.register(newName, control);\r\n });\r\n }\r\n\r\n registerAll(itemFields);\r\n\r\n itemFields.changes\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((itemFields: QueryList<IDynamicFieldsComponent>) => {\r\n registerAll(itemFields);\r\n });\r\n\r\n return newRegister;\r\n }\r\n}\r\n","import { Directive, Input, AfterContentInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[refresh]',\r\n standalone: true\r\n})\r\nexport class RefreshDirective implements AfterContentInit {\r\n @Input() refresh: (() => void) | null = null;\r\n @Input() componentRef: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.componentRef._refresh = this.refresh;\r\n }\r\n\r\n}\r\n","import { Directive, AfterViewInit, Host } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[updateBlur]',\r\n standalone: true\r\n})\r\nexport class UpdateBlurDirective implements AfterViewInit {\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent) { }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (this.sirioInput?.control?.updateOn === 'blur') {\r\n\r\n const writeValue = this.sirioInput.writeValue;\r\n\r\n 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 registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\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 const factor = Math.pow(10, this.decimalDigits);\r\n value = Math.round(value * factor) / factor;\r\n this.sirioInput.writeValue(value.toFixed(this.decimalDigits), false); \r\n }\r\n }\r\n \r\n return value;\r\n };\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(valueToStore(value))); \r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n const input = this.sirioInput.sirioInput.nativeElement;\r\n\r\n input.addEventListener('keydown', (event: Event) => {\r\n const e = event as KeyboardEvent;\r\n if (e.key === '.'\r\n || (e.key === ',' && !this.acceptDecimal())\r\n || (e.key === '-' && !this.acceptSign())) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n input.addEventListener('paste', (event: Event) => {\r\n const e = event as ClipboardEvent;\r\n const text = e.clipboardData?.getData('text') || '';\r\n if (text.includes('.')\r\n || (text.includes(',') && !this.acceptDecimal())\r\n || (text.includes('-') && !this.acceptSign())) {\r\n event.preventDefault();\r\n }\r\n });\r\n \r\n }\r\n\r\n private acceptSign(): boolean {\r\n if (this.minimum !== null && this.minimum >= 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private acceptDecimal(): boolean {\r\n if (this.decimalDigits !== null && this.decimalDigits === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n}\r\n\r\nfunction valueToStore(value: string): number | null {\r\n if (typeof value === \"string\") {\r\n if (value.trim() === '') { \r\n return null;\r\n }\r\n const numericValue = parseFloat(value);\r\n if (isNaN(numericValue)) {\r\n return null;\r\n }\r\n return numericValue;\r\n }\r\n else if (typeof value === 'number') {\r\n return value as number;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n","import { Directive, Host, Renderer2, Input, OnChanges, AfterViewInit, SimpleChanges } from '@angular/core';\r\nimport { SirioInputComponent } from 'ngx-sirio-lib';\r\n\r\n@Directive({\r\n selector: '[textcase], [maxlength]',\r\n standalone: true\r\n})\r\nexport class TextDirective implements OnChanges, AfterViewInit {\r\n @Input() textcase: '' | 'uppercase' | 'lowercase' = '';\r\n @Input() maxlength: number | null = null;\r\n\r\n constructor(@Host() private sirioInput: SirioInputComponent\r\n , private renderer: Renderer2) {\r\n\r\n const registerOnChange = this.sirioInput.registerOnChange.bind(this.sirioInput);\r\n\r\n const coerceValue = this.coerceValue.bind(this);\r\n\r\n this.sirioInput.registerOnChange = function (fn: (_: any) => void) {\r\n registerOnChange(function (value: any) {\r\n fn(coerceValue(value));\r\n });\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.configureTextCase();\r\n this.configureMaxLength(); \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[\"maxlength\"]) {\r\n this.configureMaxLength();\r\n }\r\n }\r\n\r\n private coerceValue(value: string): string\r\n {\r\n 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 if (inputElement && (this.textcase === 'uppercase' || this.textcase === 'lowercase')) {\r\n this.renderer.setStyle(inputElement, 'text-transform', this.textcase);\r\n\r\n inputElement.oninput = (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const value = input.value;\r\n\r\n var newValue = this.coerceValue(value);\r\n\r\n if (newValue != value) {\r\n this.replaceInputValue(input, newValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private configureMaxLength() {\r\n const inputElement = this.sirioInput.sirioInput?.nativeElement;\r\n\r\n if (inputElement) {\r\n if (this.maxlength == null) {\r\n inputElement.removeAttribute('maxlength');\r\n } else {\r\n inputElement.maxLength = this.maxlength;\r\n }\r\n } \r\n }\r\n\r\n private replaceInputValue(input: HTMLInputElement, value: string): void {\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n\r\n input.value = value;\r\n\r\n setTimeout(() => {\r\n input.setSelectionRange(start, end);\r\n }, 0);\r\n }\r\n\r\n}\r\n","import { Directive, Host, OnInit, OnDestroy } from '@angular/core';\r\nimport { SirioTabComponent, NgxSirioEvent } from 'ngx-sirio-lib';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[tabControl]',\r\n standalone: true\r\n})\r\nexport class TabControlDirective implements OnInit, OnDestroy {\r\n \r\n constructor(\r\n @Host() private sirioTab: SirioTabComponent\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.tabChangeSub = this.sirioTab.tabChange.subscribe(this.HandleIndexChange.bind(this));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabChangeSub?.unsubscribe();\r\n }\r\n\r\n private tabChangeSub!: Subscription;\r\n\r\n private HandleIndexChange(event: NgxSirioEvent<SirioTabComponent>) {\r\n const tab = event.component as any;\r\n if (event.data.newIndex === undefined) {\r\n tab.setActiveIndex(this.validateIndex(tab._savedIndex), true);\r\n }\r\n else {\r\n tab._savedIndex = event.data.newIndex;\r\n }\r\n }\r\n\r\n private validateIndex(index: number): number {\r\n if (index >= this.sirioTab.tabItems.length) {\r\n var firstTab = this.sirioTab.firstTabEnabled;\r\n if (firstTab) {\r\n index = firstTab.index;\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\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","import { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport sanitizeHtml from 'sanitize-html';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SanitizeService {\r\n\r\n constructor(private sanitizer: DomSanitizer)\r\n {\r\n this.sanitizeOption = {\r\n allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),\r\n allowedAttributes: {\r\n ...sanitizeHtml.defaults.allowedAttributes,\r\n '*': ['style']\r\n }\r\n };\r\n }\r\n\r\n sanitizeHtml(html: string): string {\r\n return sanitizeHtml(html, this.sanitizeOption);\r\n };\r\n\r\n sanitizeSafeHtml(html: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html));\r\n };\r\n\r\n sanitizeSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n toString(safeHtml: SafeHtml): string {\r\n return this.sanitizer.sanitize(1, safeHtml) || '';\r\n }\r\n\r\n private sanitizeOption!: sanitizeHtml.IOptions;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { marked } from 'marked';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkdownService {\r\n\r\n constructor() {\r\n\r\n marked.use({\r\n async: false,\r\n gfm: true,\r\n breaks: true\r\n });\r\n\r\n const renderer = new marked.Renderer();\r\n\r\n renderer.link = function (args) {\r\n return `<a href=\"${args.href}\" target=\"_blank\">${args.text}</a>`; \r\n };\r\n\r\n marked.setOptions({ renderer });\r\n }\r\n\r\n toHtml(text: string): string {\r\n return marked.parse(text ?? \"\") as string;\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport mimeDb from 'mime-db';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MimeService {\r\n\r\n constructor() { }\r\n\r\n getMimeTypes(extensions: string): string {\r\n return (extensions ?? \"\")\r\n .split(',')\r\n .map(ext => this.getMimeType(ext.trim()))\r\n .filter(mime => mime !== null)\r\n .join(', ');\r\n };\r\n\r\n private getMimeType(extension: string): string | null {\r\n const ext = extension.startsWith('.') ? extension.slice(1) : extension;\r\n for (const [mimeType, info] of Object.entries(mimeDb)) {\r\n if (info.extensions && info.extensions.includes(ext)) {\r\n return mimeType;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IDynamicFieldsComponent } from './dynamic-fields.interface';\r\nimport { FormGroup, FormArray, AbstractControl } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { Datepicker } from 'vanillajs-datepicker';\r\nimport { SanitizeService } from '../services/sanitize.service';\r\nimport { MarkdownService } from '../services/markdown.service';\r\nimport { MimeService } from '../services/mime.service';\r\nimport { ProgrammabilityService } from '../services/programmability.service';\r\nimport { EventService, CommandEvent } from '../services/event.service';\r\nimport { WeakService } from '../services/weak.service';\r\nimport { RegisterService } from '../services/register.service';\r\nimport { MetadataService } from '../services/metadata.service';\r\nimport { 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 { ButtonColors } from 'ngx-sirio-lib';\r\nimport { ValidationPatchDirective } from '../directives/validationpatch.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 { 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 { TabControlDirective } from '../directives/tabcontrol.directive';\r\nimport { CollapseDirective } from '../directives/collapse.directive';\r\nimport { AccordionPanelDirective } from '../directives/accordionpanel.directive';\r\nimport { TemplateWrapperComponent } from '../shared/template-wrapper/template-wrapper.component';\r\nimport { DynamicHostComponent } from '../dynamic-host/dynamic-host.component';\r\nimport { toExpression } from '../utils/feelable';\r\nimport { isObservable, Observable, of } from 'rxjs';\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\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\n\r\n@Component({\r\n selector: 'app-dynamic-fields',\r\n templateUrl: './dynamic-fields.component.html',\r\n styleUrls: [\r\n './dynamic-fields.component.css'],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule\r\n , AdornerDirective, ReadOnlyDirective, DisplayDirective, FrameSecurityDirective, ValidationPatchDirective\r\n , DropdownDirective, UpdateBlurDirective, RepeatDirective, TabDirective, GridDirective, ChangeDirective\r\n , RegisterDirective, RefreshDirective, AccordionDirective, DateDirective, NumberDirective, TextDirective\r\n , TabControlDirective, CollapseDirective, AccordionPanelDirective\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\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() rows: Array<any> | undefined;\r\n @Input() formGroup!: FormGroup;\r\n @Input() alignment: string = \"\";\r\n\r\n Texts = Texts;\r\n\r\n constructor(private sanitizer: SanitizeService\r\n , private markdown: MarkdownService\r\n , private mime: MimeService\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private weak: WeakService\r\n , private register: RegisterService\r\n , private metadata: MetadataService\r\n , private 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 el: ElementRef\r\n , private cdr: ChangeDetectorRef\r\n )\r\n {\r\n }\r\n\r\n ngOnInit(): void { \r\n this.configureDatepicker();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.focusFirst();\r\n });\r\n }\r\n\r\n getRegister(): RegisterService {\r\n return this.register;\r\n }\r\n\r\n getClass(component: any): string {\r\n const colHost = \"col-host \";\r\n if (component.layout?.columns) {\r\n return colHost + \"col-md-\" + component.layout?.columns;\r\n }\r\n else {\r\n return colHost + \"col\";\r\n }\r\n }\r\n\r\n getTextFeedback(component: any): string {\r\n const control = this.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 evaluateTemplate(value: string | null): string {\r\n return this.programmability.evaluateTemplate(this.formGroup, value);\r\n }\r\n\r\n evaluate(text: string | null, cacheable: boolean = true): any {\r\n return this.programmability.evaluate(this.formGroup, text, {\r\n cacheable: cacheable\r\n });\r\n }\r\n\r\n evaluateColor(value: string | null): ButtonColors | null {\r\n const color = this.evaluateString(value);\r\n const watchKey = `:buttonColor(${color})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n if (color === \"ghost\")\r\n return null;\r\n const validColors: ButtonColors[] = ['primary', 'secondary', 'tertiary', 'tertiary-light', 'danger'];\r\n return validColors.includes(color as ButtonColors) ? (color as ButtonColors) : 'primary';\r\n });\r\n }\r\n\r\n evaluateConditional(conditional: any): boolean {\r\n const hide = this.evaluateBoolean(conditional?.hide);\r\n const show = this.evaluateBoolean(conditional?.show);\r\n \r\n return !(hide === true || show === false);\r\n }\r\n\r\n getTemplate(value: string): any {\r\n return this.metadata.getFormByName(value);\r\n }\r\n\r\n getFormGroup(control: AbstractControl | null): FormGroup {\r\n if (!(control instanceof FormGroup)) {\r\n throw new Error('Control is not a FormGroup');\r\n }\r\n return control;\r\n }\r\n\r\n getFormArray(control: AbstractControl | null): FormArray {\r\n if (!(control instanceof FormArray)) {\r\n throw new Error('Control is not a FormArray');\r\n }\r\n return control;\r\n }\r\n\r\n resolvePath(path: string | null): FormGroup {\r\n return this.getFormGroup(this.getControlFromPath(path))\r\n }\r\n\r\n toHTML(text: string): SafeHtml {\r\n const watchKey = `:safeHtml(${text})`;\r\n return this.weak.call(this.formGroup, watchKey, () => {\r\n const html = this.markdown.toHtml(text);\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n });\r\n };\r\n\r\n sanitize(html: string): SafeHtml {\r\n return this.sanitizer.sanitizeSafeHtml(html);\r\n };\r\n\r\n getMimeTypes(extensions: string): string {\r\n return this.mime.getMimeTypes(extensions);\r\n };\r\n\r\n clickButton(component: any, event: any) {\r\n if (component.click) {\r\n this.evaluate(component.click, false);\r\n }\r\n if (component.command) {\r\n const command: CommandEvent = {\r\n name: this.evaluateString(component.command),\r\n component: component,\r\n formGroup: this.formGroup,\r\n event: event\r\n };\r\n this.events.emitCommand(command);\r\n } \r\n }\r\n\r\n getValues(component: any): Observable<any> {\r\n if (component.values) {\r\n // Static\r\n return of(component.values);\r\n }\r\n else if (component.valuesKey) {\r\n // Field value\r\n const result = this.evaluate(component.valuesKey);\r\n return this.getAsObservable(result);\r\n }\r\n else if (component.valuesExpression) {\r\n // Expression\r\n const result = this.evaluate(component.valuesExpression);\r\n return this.getAsObservable(result);\r\n }\r\n else {\r\n // Nothing\r\n return 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 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, `getGridOptions_${this.language}`\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 (formArray as any).addItem();\r\n }\r\n\r\n removeItem(formArray: FormArray, index: number) {\r\n formArray.removeAt(index);\r\n }\r\n\r\n createUploadTables(component: any): any {\r\n return this.weak.call(component, 'createUploadTables', () => {\r\n return [\r\n {\r\n components: [\r\n {\r\n \"type\": \"table\",\r\n \"layout\": {\r\n \"columns\": null\r\n },\r\n \"columns\": [\r\n {\r\n \"label\": this.locale(Texts, 'Name'),\r\n \"key\": \"name\",\r\n \"flex\": 1\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Size'),\r\n \"key\": \"size\",\r\n \"format\": \"integer\",\r\n \"align\": \"right\"\r\n },\r\n {\r\n \"label\": this.locale(Texts, 'Type'),\r\n \"key\": \"type\" \r\n },\r\n {\r\n \"key\": \"url\",\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"objectURL\"\r\n },\r\n {\r\n \"label\": \"\",\r\n \"width\": 50,\r\n \"align\": \"center\",\r\n \"format\": \"deleteRow\"\r\n }\r\n ],\r\n \"dataSource\": \"=\" + component.key,\r\n \"height\": 200,\r\n \"conditional\": component.conditional,\r\n \"disabled\": component.disabled\r\n }\r\n ]\r\n }\r\n ];\r\n });\r\n }\r\n\r\n fileUploaded($event: NgxSirioEvent<SirioFileUploadComponent>) {\r\n const removeFile = (file: File) => {\r\n if ($event.component.control) {\r\n const newFiles = $event.component.fileList.filter(f => f !== file);\r\n $event.component.control.setValue(newFiles);\r\n addRemove(newFiles);\r\n return newFiles;\r\n }\r\n return [];\r\n }\r\n\r\n const addRemove = (files: File[]) => {\r\n files.forEach(file => {\r\n if (!('remove' in file)) {\r\n Object.defineProperty(file, 'remove', {\r\n value: function () {\r\n removeFile(this);\r\n },\r\n writable: false,\r\n enumerable: false\r\n });\r\n } \r\n }); \r\n };\r\n\r\n addRemove($event.component.fileList);\r\n }\r\n\r\n 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 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 focusFirst() {\r\n const focusableElements = this.el.nativeElement.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n\r\n for (let el of focusableElements) {\r\n if (!(el as HTMLElement).hasAttribute('disabled')) {\r\n (el as HTMLElement).focus();\r\n break;\r\n } \r\n }\r\n }\r\n\r\n private getAsObservable(value: any): Observable<any> {\r\n if (isObservable(value))\r\n return value;\r\n return of(value);\r\n }\r\n\r\n private configureDatepicker() {\r\n (Datepicker.locales as any)['it'] = {\r\n days: [\r\n 'Domenica',\r\n 'Lunedì',\r\n 'Martedì',\r\n 'Mercoledì',\r\n 'Giovedì',\r\n 'Venerdì',\r\n 'Sabato',\r\n ],\r\n daysMin: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],\r\n months: [\r\n 'Gennaio',\r\n 'Febbraio',\r\n 'Marzo',\r\n 'Aprile',\r\n 'Maggio',\r\n 'Giugno',\r\n 'Luglio',\r\n 'Agosto',\r\n 'Settembre',\r\n 'Ottobre',\r\n 'Novembre',\r\n 'Dicembre',\r\n ],\r\n monthsShort: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'Mag',\r\n 'Giu',\r\n 'Lug',\r\n 'Ago',\r\n 'Set',\r\n 'Ott',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n today: 'Oggi',\r\n clear: 'Pulisci',\r\n format: 'dd/mm/yyyy',\r\n weekStart: 1\r\n };\r\n };\r\n}\r\n","<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]=\"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 #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"locale(Texts, 'TypeToSearch')\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-select [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ locale(option, 'label') }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"number\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaDateLabel') || locale(component, 'dateLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'dateLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker [ariaLabel]=\"evaluateString(locale(component, 'ariaTimeLabel') || locale(component, 'timeLabel'))\"\r\n [label]=\"evaluateString(locale(component, 'timeLabel'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ locale(option, 'label') }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-input type=\"textarea\"\r\n [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [placeholder]=\"locale(component, 'placeholder') || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-file-upload [ariaLabel]=\"evaluateString(locale(component, 'ariaLabel') || locale(component, 'label'))\"\r\n [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ locale(Texts, 'Upload') }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\"\r\n [rows]=\"createUploadTables(component)\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ngx-sirio-slider [label]=\"evaluateString(locale(component, 'label'))\"\r\n [labelPopover]=\"evaluateString(locale(component, 'tooltip'))\"\r\n [textHelp]=\"evaluateString(locale(component, 'description'))\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [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 #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\" [ngClass]=\"[getTextAlignment(component), getLightView(component) ]\">\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 {{ 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'\" [formGroup]=\"resolvePath(component.path)\">\r\n <ng-container [formArrayName]=\"component.key\"\r\n [repeat]=\"evaluateNumber(component.repetitions)\"\r\n [allowAddRemove]=\"evaluateBoolean(component.allowAddRemove)\">\r\n <p *ngIf=\"component.description\">{{ evaluateString(locale(component, 'description')) }}</p>\r\n <ng-container *ngIf=\"getFormArray(resolvePath(component.path).get(component.key)) as formArray\">\r\n <ng-container *ngIf=\"formArray.controls.length > 0\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"locale(Texts, 'ScrollLeft')\"\r\n [rightArrowLabel]=\"locale(Texts, 'ScrollRight')\"\r\n [tabCount]=\"formArray.controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\">\r\n <ng-container *ngIf=\"i === dynamiclisttab.activeIndex\">\r\n <div>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"formArray.controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel #panel accordionPanel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(locale(component, 'label')) + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <ng-container *ngIf=\"panel.panelIsOpen\">\r\n <div>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <ng-container *ngFor=\"let item of formArray.controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true, 'group-outline-repeat': true }\">\r\n <div>\r\n <label>{{ evaluateString(locale(component, 'label')) + ' ' + (i + 1) }}</label>\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\"\r\n [rows]=\"component.rows\"\r\n [alignment]=\"component.verticalAlignment\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(formArray, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ evaluateString(locale(component, 'removeLabel') || locale(Texts, 'RemoveItem')) }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addItem(formArray)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ evaluateString(locale(component, 'addLabel') || locale(Texts, 'AddItem')) }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"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 [formGroup]=\"resolvePath(component.path)\"\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 *ngIf=\"evaluateConditional(panel.conditional)\">\r\n <ng-container *ngIf=\"getTemplate(panel.template) as template\">\r\n <div *ngIf=\"i === tab.activeIndex\">\r\n <app-dynamic-fields [formGroup]=\"resolvePath(panel.path)\"\r\n [rows]=\"template?.rows\"\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 [formGroup]=\"resolvePath(panel.path)\"\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 (selectionChanged)=\"onGridSelectionChanged(component, $event)\"\r\n [columnDefs]=\"component.columns || evaluate(component.columnsExpression) || []\"\r\n [rowSource]=\"getRowSource(component)\"\r\n [refresh]=\"refreshRowSource(component)\"\r\n [style.height.px]=\"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 <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(locale(component, 'label')) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <label [for]=\"component.id\">{{ evaluateString(locale(component, 'label')) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(locale(component, 'label'))\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"locale(Texts, 'Close')\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(locale(component, 'title'))\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(locale(component, 'title')) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(locale(component, 'text')))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region chart -->\r\n <ng-container *ngSwitchCase=\"'chart'\">\r\n <label>{{ evaluateString(locale(component, 'label')) }}</label>\r\n <ag-charts [options]=\"(getChartOptions(component) | async) ?? {}\"\r\n [observe]=\"getChartData(component)\"\r\n [callback]=\"invalidateChart(component)\"\r\n [style.height.px]=\"component.height\"\r\n #chart\r\n [register]=\"component\"\r\n [componentRef]=\"chart\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #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 { ProgrammabilityService, ValidationRule } from '../services/programmability.service';\r\nimport { groupByRow } from '../utils/groupByRow';\r\nimport { CommandEvent, EventService } from '../services/event.service';\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\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 EventService\r\n , ProgrammabilityService\r\n , RegisterService\r\n , MetadataService\r\n , FunctionService\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicFormComponent implements OnChanges, OnDestroy {\r\n @Input() schema: any;\r\n @Input() formGroup!: FormGroup;\r\n @Input() value: any = {};\r\n @Input() strict: boolean = false;\r\n @Input() showNav: boolean = true;\r\n @Input() showNavButton: boolean = true;\r\n @Input() showProgress: boolean = false;\r\n @Input() showFormTitle: boolean = false;\r\n @Input() progressStatus: boolean = true;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Output() initialized = new EventEmitter<FormGroup>();\r\n @Output() onCommand = new EventEmitter<CommandEvent>();\r\n @Output() activeNavChange = new EventEmitter<any>();\r\n @ViewChild('default') formDiv!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private fb: FormBuilder\r\n , private programmability: ProgrammabilityService\r\n , private events: EventService\r\n , private registerService: RegisterService\r\n , private 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\r\n Texts = Texts;\r\n\r\n ngOnDestroy(): void {\r\n this.clearHandlers();\r\n }\r\n\r\n private internalChange = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['schema']) {\r\n this.onChangeSchema(); \r\n }\r\n\r\n if (changes['value']) {\r\n this.onChangeValue();\r\n }\r\n }\r\n\r\n get forms(): Array<any> {\r\n return this._forms;\r\n }\r\n\r\n locale(component: any, key: string): string {\r\n return localize(this.language, component, key);\r\n }\r\n\r\n canPrevious(): boolean {\r\n return this.getPrevious() != -1; \r\n }\r\n\r\n goPrevious() {\r\n if (this.canPrevious()) {\r\n this.activeNav = this.getPrevious();\r\n }\r\n }\r\n\r\n canNext(): boolean {\r\n return this.getNext() != -1; \r\n }\r\n\r\n goNext() {\r\n if (this.canNext()) { \r\n this.activeNav = this.getNext();\r\n }\r\n }\r\n\r\n getControl(name: string): Control | null {\r\n return this.registerService.getControl(name);\r\n }\r\n\r\n getControlAs<T extends Control>(name: string, type: new (...args: any[]) => T): T | null {\r\n return this.registerService.getControlAs(name, type);\r\n }\r\n\r\n get activeNav(): number {\r\n return this._activeNav;\r\n }\r\n\r\n @Input()\r\n set activeNav(value: number) {\r\n if (value >= 0 && value < this.getMaxNav()) {\r\n 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.getErrors(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 getErrors(form: any): number {\r\n const controls = this.controlMap.get(form);\r\n if (!controls) {\r\n return 0;\r\n }\r\n return this.formService.errors(controls);\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 refresh() {\r\n this.formService.patch(this.formGroup, this.value, {\r\n strict: this.strict\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 private valueChangesSubscription: Subscription | null = null;\r\n private onCommandSubscription: Subscription | null = null;\r\n\r\n private _forms: Array<any> = [];\r\n\r\n private _activeNav: number = 0;\r\n\r\n private defaultValue: any = { };\r\n\r\n private controlMap = new Map<any, Set<AbstractControl>>();\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 if (this.internalChange) {\r\n this.internalChange = false;\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n this.clearFormArrays(this.formGroup);\r\n this.formService.patch(this.formGroup, this.value, {\r\n emitEvent: false,\r\n strict: this.strict\r\n });\r\n this.formGroup.updateValueAndValidity({ emitEvent: true });\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): void {\r\n if (control instanceof FormArray && control.controls.length > 0) {\r\n control.clear();\r\n control.markAsPristine();\r\n control.markAsUntouched();\r\n } else if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach(childControl => {\r\n this.clearFormArrays(childControl);\r\n });\r\n }\r\n }\r\n\r\n private registerHandlers(): void {\r\n this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {\r\n this.internalChange = true;\r\n this.valueChange.emit(value);\r\n });\r\n\r\n this.onCommandSubscription = this.events.onCommand.subscribe((data) => {\r\n if (this.onCommand)\r\n this.onCommand.emit(data);\r\n });\r\n };\r\n\r\n private clearHandlers(): void {\r\n if (this.valueChangesSubscription) {\r\n this.valueChangesSubscription.unsubscribe();\r\n }\r\n\r\n if (this.onCommandSubscription) {\r\n this.onCommandSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private buildForm() {\r\n const map = new Map<any, Set<AbstractControl>>();\r\n this.forms.forEach((form: any) => {\r\n const set = new Set<AbstractControl>();\r\n const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);\r\n if (this.hasPath(form.path)) {\r\n this.programmability.disable(this.formGroup, currentGroup, form.disabled);\r\n }\r\n form.rows?.forEach((row: any) => {\r\n this.addControls(this.fb, currentGroup, row.components, set.add.bind(set));\r\n });\r\n map.set(form, set);\r\n });\r\n this.controlMap = map;\r\n }\r\n\r\n private addControls(formBuilder: FormBuilder, formGroup: FormGroup, components: Array<any>, use: (control: AbstractControl) => void) {\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 use(currentGroup.get(component.key) as AbstractControl);\r\n return;\r\n }\r\n else\r\n {\r\n let defaultValue = this.getDefaultValue(component);\r\n const [validators, asyncValidators, watching] = this.programmability.validate(currentGroup, component.key\r\n , component?.validate?.required, this.getValidationRules(component));\r\n const options: FormControlOptions = {\r\n validators: validators,\r\n asyncValidators: asyncValidators,\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 watching(control);\r\n this.programmability.disable(formGroup, control, component.disabled);\r\n currentGroup.addControl(component.key, control);\r\n use(control);\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.programmability.disable(formGroup, currentGroup, container.disabled);\r\n }\r\n container.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, currentGroup, row.components, use);\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 use(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 use(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 use(control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getValidationRules(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 } as ValidationRule;\r\n });\r\n }\r\n\r\n private createFormArray(formBuilder: FormBuilder, formGroup: FormGroup, itemComponent: any): FormArray {\r\n const formComponent = this;\r\n\r\n const formArray = formBuilder.array<FormGroup>([]);\r\n\r\n formGroup.addControl(itemComponent.key, formArray);\r\n\r\n const createItem = function (): FormGroup {\r\n let newGroup = formBuilder.group({});\r\n itemComponent.rows?.forEach((row: any) => {\r\n formComponent.addControls(formBuilder, newGroup, row.components, () => { });\r\n });\r\n return newGroup;\r\n };\r\n\r\n const resizeFormArray = this.resizeFormArray;\r\n\r\n const addItem = function (this: FormArray) {\r\n let newGroup = createItem();\r\n this.push(newGroup);\r\n return newGroup;\r\n };\r\n\r\n const prepareArray = (array: any) => {\r\n array.addItem = addItem;\r\n array.createItem = createItem;\r\n array.resize = resize;\r\n }\r\n\r\n const resize = function (this: FormArray, size: number) {\r\n const newArray = resizeFormArray(this, size, createItem);\r\n prepareArray(newArray);\r\n formGroup.setControl(itemComponent.key, newArray);\r\n };\r\n\r\n prepareArray(formArray);\r\n\r\n return formArray;\r\n }\r\n\r\n private resizeFormArray(formArray: FormArray, size: number, createItem: () => FormGroup) : FormArray {\r\n if (formArray.length < size) {\r\n const newArray = new FormArray(formArray.controls);\r\n while (formArray.length < size) {\r\n newArray.push(createItem());\r\n }\r\n return newArray;\r\n }\r\n else if (formArray.length > size) {\r\n return new FormArray(formArray.controls.slice(0, size));\r\n }\r\n else {\r\n return formArray;\r\n }\r\n }\r\n\r\n private 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 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 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: getErrors(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 [formGroup]=\"getFormGroup(form.path)\"\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\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","shareReplay","i1.FeelService","i2.WeakService","i3.ToastService","i4.DialogService","i5.FormatterService","i6.FunctionService","i7.FormService","i8.GlobalService","i9.RegisterService","i10.ScopeService","i1.ProgrammabilityService","i2","i2.GlobalService","i1.FormatterService","i3.ProgrammabilityService","map","take","i2.GridService","i3","takeUntil","i1.RegisterService","i1.GlobalService","i1.SanitizeService","i2.MarkdownService","i3.MimeService","i4.ProgrammabilityService","i5.EventService","i6.WeakService","i7.RegisterService","i8.MetadataService","i9","i10.GlobalService","i11.FormService","i12.GridService","i13.ChartService","i15","i2.ProgrammabilityService","i3.EventService","i4.RegisterService","i5","i6.MetadataService","i8.DialogService","i1.DialogService","i1.ToastService"],"mappings":"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"}