@igo2/common 20.0.0 → 20.0.1

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 (67) hide show
  1. package/fesm2022/igo2-common-action.mjs +14 -14
  2. package/fesm2022/igo2-common-action.mjs.map +1 -1
  3. package/fesm2022/igo2-common-backdrop.mjs +7 -7
  4. package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
  5. package/fesm2022/igo2-common-badge.mjs +7 -7
  6. package/fesm2022/igo2-common-badge.mjs.map +1 -1
  7. package/fesm2022/igo2-common-clickout.mjs +7 -7
  8. package/fesm2022/igo2-common-clickout.mjs.map +1 -1
  9. package/fesm2022/igo2-common-clone.mjs +7 -7
  10. package/fesm2022/igo2-common-clone.mjs.map +1 -1
  11. package/fesm2022/igo2-common-collapsible.mjs +10 -10
  12. package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
  13. package/fesm2022/igo2-common-color.mjs +7 -7
  14. package/fesm2022/igo2-common-color.mjs.map +1 -1
  15. package/fesm2022/igo2-common-confirm-dialog.mjs +10 -10
  16. package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
  17. package/fesm2022/igo2-common-context-menu.mjs +10 -10
  18. package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
  19. package/fesm2022/igo2-common-custom-html.mjs +10 -10
  20. package/fesm2022/igo2-common-custom-html.mjs.map +1 -1
  21. package/fesm2022/igo2-common-dom.mjs +7 -7
  22. package/fesm2022/igo2-common-dom.mjs.map +1 -1
  23. package/fesm2022/igo2-common-drag-drop.mjs +10 -10
  24. package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
  25. package/fesm2022/igo2-common-dynamic-component.mjs +14 -14
  26. package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
  27. package/fesm2022/igo2-common-entity.mjs +28 -28
  28. package/fesm2022/igo2-common-entity.mjs.map +1 -1
  29. package/fesm2022/igo2-common-flexible.mjs +7 -7
  30. package/fesm2022/igo2-common-flexible.mjs.map +1 -1
  31. package/fesm2022/igo2-common-form.mjs +50 -50
  32. package/fesm2022/igo2-common-form.mjs.map +1 -1
  33. package/fesm2022/igo2-common-home-button.mjs +7 -7
  34. package/fesm2022/igo2-common-home-button.mjs.map +1 -1
  35. package/fesm2022/igo2-common-icon.mjs +6 -6
  36. package/fesm2022/igo2-common-icon.mjs.map +1 -1
  37. package/fesm2022/igo2-common-image.mjs +10 -10
  38. package/fesm2022/igo2-common-image.mjs.map +1 -1
  39. package/fesm2022/igo2-common-interactive-tour.mjs +13 -13
  40. package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
  41. package/fesm2022/igo2-common-json-dialog.mjs +10 -10
  42. package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
  43. package/fesm2022/igo2-common-keyvalue.mjs +7 -7
  44. package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
  45. package/fesm2022/igo2-common-list.mjs +10 -10
  46. package/fesm2022/igo2-common-list.mjs.map +1 -1
  47. package/fesm2022/igo2-common-panel.mjs +7 -7
  48. package/fesm2022/igo2-common-panel.mjs.map +1 -1
  49. package/fesm2022/igo2-common-resizable-bar.mjs +6 -6
  50. package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
  51. package/fesm2022/igo2-common-select-value-dialog.mjs +10 -10
  52. package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
  53. package/fesm2022/igo2-common-sidenav.mjs +7 -7
  54. package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
  55. package/fesm2022/igo2-common-spinner.mjs +10 -10
  56. package/fesm2022/igo2-common-spinner.mjs.map +1 -1
  57. package/fesm2022/igo2-common-stop-propagation.mjs +10 -10
  58. package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -1
  59. package/fesm2022/igo2-common-table.mjs +7 -7
  60. package/fesm2022/igo2-common-table.mjs.map +1 -1
  61. package/fesm2022/igo2-common-tool.mjs +14 -14
  62. package/fesm2022/igo2-common-tool.mjs.map +1 -1
  63. package/fesm2022/igo2-common-widget.mjs +14 -14
  64. package/fesm2022/igo2-common-widget.mjs.map +1 -1
  65. package/fesm2022/igo2-common-workspace.mjs +18 -18
  66. package/fesm2022/igo2-common-workspace.mjs.map +1 -1
  67. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-common-drag-drop.mjs","sources":["../../../packages/common/drag-drop/src/drag-drop.directive.ts","../../../packages/common/drag-drop/src/tree-drag-drop/tree-drag-drop.directive.ts","../../../packages/common/drag-drop/src/drag-drop.module.ts","../../../packages/common/drag-drop/src/igo2-common-drag-drop.ts"],"sourcesContent":["import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[igoDragAndDrop]',\n standalone: true\n})\nexport class DragAndDropDirective {\n @Input() allowedExtensions: string[] = [];\n\n @Output() protected filesDropped = new EventEmitter<File[]>();\n\n @Output() protected filesInvalid = new EventEmitter<File[]>();\n\n @HostBinding('style.background') private background = 'inherit';\n\n @HostListener('dragover', ['$event'])\n public onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'inherit';\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (evt.alreadyFired) {\n return;\n }\n evt.alreadyFired = true;\n\n this.background = 'inherit';\n const filesObj = this.validExtensions(evt);\n if (filesObj.valid.length) {\n this.filesDropped.emit(filesObj.valid);\n }\n if (filesObj.invalid.length) {\n this.filesInvalid.emit(filesObj.invalid);\n }\n }\n\n private validExtensions(evt) {\n const files = evt.dataTransfer.files;\n const filesObj = {\n valid: [],\n invalid: []\n };\n if (files.length > 0) {\n for (const file of files) {\n const ext = file.name.split('.')[file.name.split('.').length - 1];\n if (\n this.allowedExtensions.length === 0 ||\n (this.allowedExtensions.lastIndexOf(ext) !== -1 && file.size !== 0)\n ) {\n filesObj.valid.push(file);\n } else {\n filesObj.invalid.push(file);\n }\n }\n }\n\n return filesObj;\n }\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { MatTreeNode } from '@angular/material/tree';\n\nimport {\n DropPosition,\n DropPositionType,\n TreeFlatNode\n} from './tree-drag-drop.interface';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TreeDropEvent<T = any> {\n node: TreeFlatNode<T>;\n ref: TreeFlatNode<T>;\n position: DropPositionType;\n}\n\ninterface DragNodeListeners {\n element: HTMLElement;\n listeners: [string, EventListenerOrEventListenerObject][];\n}\n\nexport interface DropPermission {\n canDrop: boolean;\n message?: string;\n params?: Record<string, unknown>;\n}\n\n/**\n * This directive should be use with a MatTree flatened\n * It should add all logic to drag the MatTreeNode and connect the (onDrop) output\n * Class added:\n * Tree: --dragging\n * Node: --drag-hover | --dragged\n */\n@Directive({\n selector: '[igoTreeDragDrop]',\n standalone: true\n})\nexport class TreeDragDropDirective implements AfterContentInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n draggedNode: TreeFlatNode;\n dropNodeTarget: TreeFlatNode;\n expandTimeout: number;\n nodesListeners: DragNodeListeners[] | undefined;\n dropLineTarget: HTMLElement;\n highlightedNode = new SelectionModel<TreeFlatNode>();\n\n @Input({ required: true }) treeControl: FlatTreeControl<TreeFlatNode>;\n\n /** The default is 5 */\n @Input() maxLevel = 5;\n\n @Input({ transform: booleanAttribute })\n set treeDragDropIsDisabled(disabled: boolean) {\n this.isDisabled = disabled;\n disabled ? this.removeAllListener() : this.addAllListener();\n }\n private isDisabled = false;\n\n @Output() dragStart = new EventEmitter<TreeFlatNode>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDrop = new EventEmitter<TreeDropEvent>(null);\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDropError = new EventEmitter<DropPermission>();\n\n @HostListener('dragover', ['$event']) hostDragOver(event: Event): void {\n event.preventDefault();\n }\n\n @HostListener('drop', ['$event']) hostDrop(event: DragEvent): void {\n this.drop(event);\n }\n\n @HostBinding('class.--dragging') dragging: boolean;\n\n @ContentChildren(MatTreeNode, { descendants: true })\n nodes: QueryList<MatTreeNode<TreeFlatNode>>;\n\n constructor() {\n this.onDrop.subscribe(() => this.dragEnd());\n\n this.highlightedNode.changed.subscribe((change) => {\n if (change.removed.length) {\n this.removeNodeClass(change.removed[0].id, '--drag-hover');\n }\n\n if (change.added.length) {\n this.addNodeClass(change.added[0].id, '--drag-hover');\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.nodes.changes.subscribe(() => {\n this.addAllListener();\n });\n }\n\n ngOnDestroy(): void {\n this.removeAllListener();\n }\n\n onDragStart(node: TreeFlatNode): void {\n this.dragging = true;\n this.draggedNode = node;\n this.addNodeClass(node.id, '--dragged');\n\n this.dragStart.emit(node);\n }\n\n dragEnd(): void {\n this.dragging = false;\n if (this.draggedNode) {\n this.removeNodeClass(this.draggedNode.id, '--dragged');\n this.draggedNode = null;\n }\n\n this.dragLeave();\n this.removeDropTargetLine();\n }\n\n dragOver(node: TreeFlatNode, event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropNodeTarget = node;\n\n const position = this.getPosition(event, node);\n\n this.updateDropTargetLinePosition(position);\n\n this.setHighlightedNode(node);\n\n this.handleGroupExpansion(node, position.type === 'inside');\n }\n\n dragLeave(): void {\n clearTimeout(this.expandTimeout);\n this.expandTimeout = null;\n this.highlightedNode.clear();\n }\n\n drop(event: DragEvent): void {\n if (!this.dropNodeTarget || this.isDisabled) {\n return;\n }\n\n const dropPosition: DropPosition = this.getPosition(\n event,\n this.dropNodeTarget\n );\n\n const validation = this.canDropNode(this.dropNodeTarget, dropPosition);\n if (!validation.canDrop) {\n this.onDropError.emit(validation);\n return;\n }\n\n // Allow to drop a last child outside is group. We refer to it's ancestor for the target\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== this.dropNodeTarget.level\n ) {\n this.dropNodeTarget = this.getNodeAncestors(\n this.dropNodeTarget.id,\n dropPosition.level\n );\n }\n\n if (this.dropNodeTarget.isGroup) {\n if (dropPosition.type === 'inside') {\n const isExpanded = this.treeControl.isExpanded(this.dropNodeTarget);\n if (isExpanded) {\n const children = this.getDirectDescendants(this.dropNodeTarget);\n if (children[0]?.id === this.draggedNode.id) {\n return;\n }\n }\n\n this.treeControl.expand(this.dropNodeTarget);\n return this.onDrop.emit({\n node: this.draggedNode,\n ref: this.dropNodeTarget,\n position: dropPosition.type\n });\n }\n }\n\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== this.dropNodeTarget.level\n ) {\n const ancestor = this.getNodeAncestors(this.dropNodeTarget.id);\n return this.onDrop.emit({\n node: this.draggedNode,\n ref: ancestor,\n position: dropPosition.type\n });\n }\n\n this.onDrop.emit({\n node: this.draggedNode,\n ref: this.dropNodeTarget,\n position: dropPosition.type\n });\n }\n\n private addNodeClass(id: string, className: string): void {\n const node = this.nodes.find((node) => node.data.id === id);\n this.renderer.addClass(node['_elementRef'].nativeElement, className);\n }\n\n private removeNodeClass(id: string, className: string): void {\n const node = this.nodes.find((node) => node.data.id === id);\n this.renderer.removeClass(node['_elementRef'].nativeElement, className);\n }\n\n private addAllListener(): void {\n if (this.isDisabled) {\n return;\n }\n const nodes = this.nodes?.toArray();\n if (this.nodesListeners) {\n this.removeAllListener();\n }\n\n this.nodesListeners = nodes?.map((node) => this.addListener(node));\n }\n\n private addListener(node: MatTreeNode<TreeFlatNode>): DragNodeListeners {\n const element = node['_elementRef'].nativeElement as HTMLElement;\n const listeners: [string, EventListenerOrEventListenerObject][] = [\n ['dragstart', () => this.onDragStart(node.data)],\n ['dragend', () => this.dragEnd()],\n ['dragover', (event: DragEvent) => this.dragOver(node.data, event)],\n ['dragleave', () => this.dragLeave()]\n ];\n element.setAttribute('draggable', 'true');\n listeners.forEach(([type, listener]) =>\n element.addEventListener(type, listener)\n );\n\n return { element, listeners };\n }\n\n private removeAllListener(): void {\n this.nodesListeners?.forEach(({ element, listeners }) => {\n listeners.forEach(([type, listener]) => {\n element.setAttribute('draggable', 'false');\n element.removeEventListener(type, listener);\n });\n });\n this.nodesListeners = null;\n }\n\n private setHighlightedNode(node: TreeFlatNode): void {\n const toHighlight = node.isGroup ? node : this.getNodeAncestors(node.id);\n toHighlight\n ? this.highlightedNode.select(toHighlight)\n : this.highlightedNode.clear();\n }\n\n private addDropTargetLine(): void {\n const target: HTMLElement = this.renderer.createElement('div');\n target.classList.add('drop-target-line');\n target.setAttribute(\n 'style',\n `position: absolute; top: 0; width: 100%; pointer-events: none; z-index: 4; height: 2px; background-color: black; transition: margin-left 150ms;`\n );\n this.dropLineTarget = target;\n this.renderer.appendChild(\n this.elementRef.nativeElement.parentElement,\n this.dropLineTarget\n );\n }\n\n private removeDropTargetLine(): void {\n if (!this.dropLineTarget) {\n return;\n }\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.dropLineTarget\n );\n this.dropLineTarget = null;\n }\n\n private updateDropTargetLinePosition(position: DropPosition): void {\n if (!this.dropLineTarget) {\n this.addDropTargetLine();\n }\n\n if (position.type === 'inside') {\n return this.removeDropTargetLine();\n }\n\n this.renderer.setStyle(\n this.dropLineTarget,\n 'margin-left',\n position.level * 24 + 20 + 'px'\n );\n this.renderer.setStyle(\n this.dropLineTarget,\n 'transform',\n 'translate3d(0,' + position.y + 'px, 0)'\n );\n }\n\n private handleGroupExpansion(node: TreeFlatNode, isInside: boolean): void {\n if (!isInside) {\n return this.dragLeave();\n }\n const isOpen = this.treeControl.isExpanded(node);\n if (!isOpen && !this.expandTimeout) {\n this.expandTimeout = window.setTimeout(() => {\n this.treeControl.expand(node);\n }, 1200);\n }\n }\n\n private getNodeElement(node: TreeFlatNode): HTMLElement | undefined {\n const treeNode = this.nodes.find((n) => n.data.id === node.id);\n return treeNode?.['_elementRef'].nativeElement;\n }\n\n private canDropNode(\n hoveredNode: TreeFlatNode,\n position: DropPosition\n ): DropPermission {\n if (this.draggedNode.isGroup) {\n return this.canDropGroup(hoveredNode, position);\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return { canDrop: true };\n }\n\n private canDropGroup(\n hoveredNode: TreeFlatNode,\n position: DropPosition\n ): DropPermission {\n // On ne veut pas permettre le Drop pour un groupe qui s'auto référence\n if (hoveredNode.id === this.draggedNode.id) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n const isHoverDescendant = this.isHoverDescendant(hoveredNode.id);\n return {\n canDrop: !isHoverDescendant,\n message:\n isHoverDescendant && 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n private validateMaxHierarchyLevel(position: DropPosition): DropPermission {\n if (!this.maxLevel) {\n return;\n }\n\n let level =\n position.type === 'inside' ? position.level + 1 : position.level;\n\n if (this.draggedNode.isGroup) {\n // We add an extra level +1 to avoid empty group in group\n level = level + (this.draggedNode.descendantLevels ?? 0) + 1;\n }\n\n if (level > this.maxLevel) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.maxLevel',\n params: { value: this.maxLevel }\n };\n }\n }\n\n private isHoverDescendant(id: string): boolean {\n return this.treeControl\n .getDescendants(this.draggedNode)\n .some((child) => child.id === id);\n }\n\n private getPosition(\n event: DragEvent,\n hoveredNode: TreeFlatNode\n ): DropPosition {\n if (this.draggedNode.isGroup) {\n if (this.isHoverDescendant(hoveredNode.id)) {\n hoveredNode = this.draggedNode;\n }\n }\n\n let positionType = this.getPositionType(event, hoveredNode);\n\n const bellowOpenedGroup =\n hoveredNode.isGroup &&\n positionType === 'below' &&\n this.treeControl.isExpanded(hoveredNode);\n if (bellowOpenedGroup) {\n positionType = 'inside';\n }\n\n return {\n x: event.x,\n y: this.getPositionY(hoveredNode, positionType),\n level: this.getPositionLevel(hoveredNode, positionType, event.x),\n type: positionType\n };\n }\n\n private getPositionY(node: TreeFlatNode, type: DropPositionType): number {\n const element = this.getNodeElement(node);\n const rect = element.getBoundingClientRect();\n\n return type === 'below'\n ? element.offsetTop + rect.height - 1\n : element.offsetTop + 1;\n }\n\n private getPositionType(\n event: DragEvent,\n hoveredNode: TreeFlatNode\n ): DropPositionType {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n const middle = rect.top + rect.height / 2;\n const y = event.y;\n\n const selfReferencing = this.draggedNode.id === hoveredNode.id;\n if (hoveredNode.isGroup && !selfReferencing) {\n const tolerence = 5;\n if (y <= middle + tolerence && y >= middle - tolerence) {\n return 'inside';\n }\n }\n\n const isBelow = y > middle;\n return isBelow ? 'below' : 'above';\n }\n\n private getPositionLevel(\n hoveredNode: TreeFlatNode,\n type: DropPositionType,\n x: number\n ): number {\n if (hoveredNode.level === 0) {\n return 0;\n }\n\n const ancestor = this.getNodeAncestors(hoveredNode.id);\n const children = this.getDirectDescendants(ancestor);\n const lastChild = [...children].pop();\n\n if (type === 'below' && lastChild.id === hoveredNode.id) {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n\n const indentation = 24;\n const xMin = rect.x + indentation;\n const xMax = xMin + indentation * hoveredNode.level;\n\n const isInsideSameGroup = x > xMax;\n if (!isInsideSameGroup) {\n const levelSubstracted = Math.round((xMax - x) / indentation);\n return Math.max(0, hoveredNode.level - levelSubstracted);\n }\n }\n\n return hoveredNode.level;\n }\n\n /**\n * @param level if level is defined with go to the defined levle to find ancestor. Sinon on prend le current ancestor\n */\n private getNodeAncestors(\n id: string,\n level?: number\n ): TreeFlatNode | undefined {\n const nodes = this.treeControl.dataNodes;\n const index = nodes.findIndex((node) => node.id === id);\n\n const targetLevel = level ?? Math.max(0, nodes[index].level - 1);\n return nodes\n .slice(0, index)\n .reverse()\n .find((node) => node.level === targetLevel);\n }\n\n private getDirectDescendants(node: TreeFlatNode): TreeFlatNode[] {\n const level = node.level + 1;\n return this.treeControl\n .getDescendants(node)\n .filter((child) => child.level === level);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragAndDropDirective } from './drag-drop.directive';\nimport { TreeDragDropDirective } from './tree-drag-drop/tree-drag-drop.directive';\n\n/**\n * @deprecated import the DragAndDropDirective directly\n */\n@NgModule({\n imports: [DragAndDropDirective, TreeDragDropDirective],\n exports: [DragAndDropDirective, TreeDragDropDirective]\n})\nexport class IgoDrapDropModule {\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\n return {\n ngModule: IgoDrapDropModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-common-drag-drop.mjs","sources":["../../../packages/common/drag-drop/src/drag-drop.directive.ts","../../../packages/common/drag-drop/src/tree-drag-drop/tree-drag-drop.directive.ts","../../../packages/common/drag-drop/src/drag-drop.module.ts","../../../packages/common/drag-drop/src/igo2-common-drag-drop.ts"],"sourcesContent":["import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\n\n@Directive({\n selector: '[igoDragAndDrop]',\n standalone: true\n})\nexport class DragAndDropDirective {\n @Input() allowedExtensions: string[] = [];\n\n @Output() protected filesDropped = new EventEmitter<File[]>();\n\n @Output() protected filesInvalid = new EventEmitter<File[]>();\n\n @HostBinding('style.background') private background = 'inherit';\n\n @HostListener('dragover', ['$event'])\n public onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'inherit';\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (evt.alreadyFired) {\n return;\n }\n evt.alreadyFired = true;\n\n this.background = 'inherit';\n const filesObj = this.validExtensions(evt);\n if (filesObj.valid.length) {\n this.filesDropped.emit(filesObj.valid);\n }\n if (filesObj.invalid.length) {\n this.filesInvalid.emit(filesObj.invalid);\n }\n }\n\n private validExtensions(evt) {\n const files = evt.dataTransfer.files;\n const filesObj = {\n valid: [],\n invalid: []\n };\n if (files.length > 0) {\n for (const file of files) {\n const ext = file.name.split('.')[file.name.split('.').length - 1];\n if (\n this.allowedExtensions.length === 0 ||\n (this.allowedExtensions.lastIndexOf(ext) !== -1 && file.size !== 0)\n ) {\n filesObj.valid.push(file);\n } else {\n filesObj.invalid.push(file);\n }\n }\n }\n\n return filesObj;\n }\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { MatTreeNode } from '@angular/material/tree';\n\nimport {\n DropPosition,\n DropPositionType,\n TreeFlatNode\n} from './tree-drag-drop.interface';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TreeDropEvent<T = any> {\n node: TreeFlatNode<T>;\n ref: TreeFlatNode<T>;\n position: DropPositionType;\n}\n\ninterface DragNodeListeners {\n element: HTMLElement;\n listeners: [string, EventListenerOrEventListenerObject][];\n}\n\nexport interface DropPermission {\n canDrop: boolean;\n message?: string;\n params?: Record<string, unknown>;\n}\n\n/**\n * This directive should be use with a MatTree flatened\n * It should add all logic to drag the MatTreeNode and connect the (onDrop) output\n * Class added:\n * Tree: --dragging\n * Node: --drag-hover | --dragged\n */\n@Directive({\n selector: '[igoTreeDragDrop]',\n standalone: true\n})\nexport class TreeDragDropDirective implements AfterContentInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n draggedNode: TreeFlatNode;\n dropNodeTarget: TreeFlatNode;\n expandTimeout: number;\n nodesListeners: DragNodeListeners[] | undefined;\n dropLineTarget: HTMLElement;\n highlightedNode = new SelectionModel<TreeFlatNode>();\n\n @Input({ required: true }) treeControl: FlatTreeControl<TreeFlatNode>;\n\n /** The default is 5 */\n @Input() maxLevel = 5;\n\n @Input({ transform: booleanAttribute })\n set treeDragDropIsDisabled(disabled: boolean) {\n this.isDisabled = disabled;\n disabled ? this.removeAllListener() : this.addAllListener();\n }\n private isDisabled = false;\n\n @Output() dragStart = new EventEmitter<TreeFlatNode>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDrop = new EventEmitter<TreeDropEvent>(null);\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onDropError = new EventEmitter<DropPermission>();\n\n @HostListener('dragover', ['$event']) hostDragOver(event: Event): void {\n event.preventDefault();\n }\n\n @HostListener('drop', ['$event']) hostDrop(event: DragEvent): void {\n this.drop(event);\n }\n\n @HostBinding('class.--dragging') dragging: boolean;\n\n @ContentChildren(MatTreeNode, { descendants: true })\n nodes: QueryList<MatTreeNode<TreeFlatNode>>;\n\n constructor() {\n this.onDrop.subscribe(() => this.dragEnd());\n\n this.highlightedNode.changed.subscribe((change) => {\n if (change.removed.length) {\n this.removeNodeClass(change.removed[0].id, '--drag-hover');\n }\n\n if (change.added.length) {\n this.addNodeClass(change.added[0].id, '--drag-hover');\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.nodes.changes.subscribe(() => {\n this.addAllListener();\n });\n }\n\n ngOnDestroy(): void {\n this.removeAllListener();\n }\n\n onDragStart(node: TreeFlatNode): void {\n this.dragging = true;\n this.draggedNode = node;\n this.addNodeClass(node.id, '--dragged');\n\n this.dragStart.emit(node);\n }\n\n dragEnd(): void {\n this.dragging = false;\n if (this.draggedNode) {\n this.removeNodeClass(this.draggedNode.id, '--dragged');\n this.draggedNode = null;\n }\n\n this.dragLeave();\n this.removeDropTargetLine();\n }\n\n dragOver(node: TreeFlatNode, event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropNodeTarget = node;\n\n const position = this.getPosition(event, node);\n\n this.updateDropTargetLinePosition(position);\n\n this.setHighlightedNode(node);\n\n this.handleGroupExpansion(node, position.type === 'inside');\n }\n\n dragLeave(): void {\n clearTimeout(this.expandTimeout);\n this.expandTimeout = null;\n this.highlightedNode.clear();\n }\n\n drop(event: DragEvent): void {\n if (!this.dropNodeTarget || this.isDisabled) {\n return;\n }\n\n const dropPosition: DropPosition = this.getPosition(\n event,\n this.dropNodeTarget\n );\n\n const validation = this.canDropNode(this.dropNodeTarget, dropPosition);\n if (!validation.canDrop) {\n this.onDropError.emit(validation);\n return;\n }\n\n // Allow to drop a last child outside is group. We refer to it's ancestor for the target\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== this.dropNodeTarget.level\n ) {\n this.dropNodeTarget = this.getNodeAncestors(\n this.dropNodeTarget.id,\n dropPosition.level\n );\n }\n\n if (this.dropNodeTarget.isGroup) {\n if (dropPosition.type === 'inside') {\n const isExpanded = this.treeControl.isExpanded(this.dropNodeTarget);\n if (isExpanded) {\n const children = this.getDirectDescendants(this.dropNodeTarget);\n if (children[0]?.id === this.draggedNode.id) {\n return;\n }\n }\n\n this.treeControl.expand(this.dropNodeTarget);\n return this.onDrop.emit({\n node: this.draggedNode,\n ref: this.dropNodeTarget,\n position: dropPosition.type\n });\n }\n }\n\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== this.dropNodeTarget.level\n ) {\n const ancestor = this.getNodeAncestors(this.dropNodeTarget.id);\n return this.onDrop.emit({\n node: this.draggedNode,\n ref: ancestor,\n position: dropPosition.type\n });\n }\n\n this.onDrop.emit({\n node: this.draggedNode,\n ref: this.dropNodeTarget,\n position: dropPosition.type\n });\n }\n\n private addNodeClass(id: string, className: string): void {\n const node = this.nodes.find((node) => node.data.id === id);\n this.renderer.addClass(node['_elementRef'].nativeElement, className);\n }\n\n private removeNodeClass(id: string, className: string): void {\n const node = this.nodes.find((node) => node.data.id === id);\n this.renderer.removeClass(node['_elementRef'].nativeElement, className);\n }\n\n private addAllListener(): void {\n if (this.isDisabled) {\n return;\n }\n const nodes = this.nodes?.toArray();\n if (this.nodesListeners) {\n this.removeAllListener();\n }\n\n this.nodesListeners = nodes?.map((node) => this.addListener(node));\n }\n\n private addListener(node: MatTreeNode<TreeFlatNode>): DragNodeListeners {\n const element = node['_elementRef'].nativeElement as HTMLElement;\n const listeners: [string, EventListenerOrEventListenerObject][] = [\n ['dragstart', () => this.onDragStart(node.data)],\n ['dragend', () => this.dragEnd()],\n ['dragover', (event: DragEvent) => this.dragOver(node.data, event)],\n ['dragleave', () => this.dragLeave()]\n ];\n element.setAttribute('draggable', 'true');\n listeners.forEach(([type, listener]) =>\n element.addEventListener(type, listener)\n );\n\n return { element, listeners };\n }\n\n private removeAllListener(): void {\n this.nodesListeners?.forEach(({ element, listeners }) => {\n listeners.forEach(([type, listener]) => {\n element.setAttribute('draggable', 'false');\n element.removeEventListener(type, listener);\n });\n });\n this.nodesListeners = null;\n }\n\n private setHighlightedNode(node: TreeFlatNode): void {\n const toHighlight = node.isGroup ? node : this.getNodeAncestors(node.id);\n toHighlight\n ? this.highlightedNode.select(toHighlight)\n : this.highlightedNode.clear();\n }\n\n private addDropTargetLine(): void {\n const target: HTMLElement = this.renderer.createElement('div');\n target.classList.add('drop-target-line');\n target.setAttribute(\n 'style',\n `position: absolute; top: 0; width: 100%; pointer-events: none; z-index: 4; height: 2px; background-color: black; transition: margin-left 150ms;`\n );\n this.dropLineTarget = target;\n this.renderer.appendChild(\n this.elementRef.nativeElement.parentElement,\n this.dropLineTarget\n );\n }\n\n private removeDropTargetLine(): void {\n if (!this.dropLineTarget) {\n return;\n }\n this.renderer.removeChild(\n this.elementRef.nativeElement.parentElement,\n this.dropLineTarget\n );\n this.dropLineTarget = null;\n }\n\n private updateDropTargetLinePosition(position: DropPosition): void {\n if (!this.dropLineTarget) {\n this.addDropTargetLine();\n }\n\n if (position.type === 'inside') {\n return this.removeDropTargetLine();\n }\n\n this.renderer.setStyle(\n this.dropLineTarget,\n 'margin-left',\n position.level * 24 + 20 + 'px'\n );\n this.renderer.setStyle(\n this.dropLineTarget,\n 'transform',\n 'translate3d(0,' + position.y + 'px, 0)'\n );\n }\n\n private handleGroupExpansion(node: TreeFlatNode, isInside: boolean): void {\n if (!isInside) {\n return this.dragLeave();\n }\n const isOpen = this.treeControl.isExpanded(node);\n if (!isOpen && !this.expandTimeout) {\n this.expandTimeout = window.setTimeout(() => {\n this.treeControl.expand(node);\n }, 1200);\n }\n }\n\n private getNodeElement(node: TreeFlatNode): HTMLElement | undefined {\n const treeNode = this.nodes.find((n) => n.data.id === node.id);\n return treeNode?.['_elementRef'].nativeElement;\n }\n\n private canDropNode(\n hoveredNode: TreeFlatNode,\n position: DropPosition\n ): DropPermission {\n if (this.draggedNode.isGroup) {\n return this.canDropGroup(hoveredNode, position);\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return { canDrop: true };\n }\n\n private canDropGroup(\n hoveredNode: TreeFlatNode,\n position: DropPosition\n ): DropPermission {\n // On ne veut pas permettre le Drop pour un groupe qui s'auto référence\n if (hoveredNode.id === this.draggedNode.id) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n const isHoverDescendant = this.isHoverDescendant(hoveredNode.id);\n return {\n canDrop: !isHoverDescendant,\n message:\n isHoverDescendant && 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n private validateMaxHierarchyLevel(position: DropPosition): DropPermission {\n if (!this.maxLevel) {\n return;\n }\n\n let level =\n position.type === 'inside' ? position.level + 1 : position.level;\n\n if (this.draggedNode.isGroup) {\n // We add an extra level +1 to avoid empty group in group\n level = level + (this.draggedNode.descendantLevels ?? 0) + 1;\n }\n\n if (level > this.maxLevel) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.maxLevel',\n params: { value: this.maxLevel }\n };\n }\n }\n\n private isHoverDescendant(id: string): boolean {\n return this.treeControl\n .getDescendants(this.draggedNode)\n .some((child) => child.id === id);\n }\n\n private getPosition(\n event: DragEvent,\n hoveredNode: TreeFlatNode\n ): DropPosition {\n if (this.draggedNode.isGroup) {\n if (this.isHoverDescendant(hoveredNode.id)) {\n hoveredNode = this.draggedNode;\n }\n }\n\n let positionType = this.getPositionType(event, hoveredNode);\n\n const bellowOpenedGroup =\n hoveredNode.isGroup &&\n positionType === 'below' &&\n this.treeControl.isExpanded(hoveredNode);\n if (bellowOpenedGroup) {\n positionType = 'inside';\n }\n\n return {\n x: event.x,\n y: this.getPositionY(hoveredNode, positionType),\n level: this.getPositionLevel(hoveredNode, positionType, event.x),\n type: positionType\n };\n }\n\n private getPositionY(node: TreeFlatNode, type: DropPositionType): number {\n const element = this.getNodeElement(node);\n const rect = element.getBoundingClientRect();\n\n return type === 'below'\n ? element.offsetTop + rect.height - 1\n : element.offsetTop + 1;\n }\n\n private getPositionType(\n event: DragEvent,\n hoveredNode: TreeFlatNode\n ): DropPositionType {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n const middle = rect.top + rect.height / 2;\n const y = event.y;\n\n const selfReferencing = this.draggedNode.id === hoveredNode.id;\n if (hoveredNode.isGroup && !selfReferencing) {\n const tolerence = 5;\n if (y <= middle + tolerence && y >= middle - tolerence) {\n return 'inside';\n }\n }\n\n const isBelow = y > middle;\n return isBelow ? 'below' : 'above';\n }\n\n private getPositionLevel(\n hoveredNode: TreeFlatNode,\n type: DropPositionType,\n x: number\n ): number {\n if (hoveredNode.level === 0) {\n return 0;\n }\n\n const ancestor = this.getNodeAncestors(hoveredNode.id);\n const children = this.getDirectDescendants(ancestor);\n const lastChild = [...children].pop();\n\n if (type === 'below' && lastChild.id === hoveredNode.id) {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n\n const indentation = 24;\n const xMin = rect.x + indentation;\n const xMax = xMin + indentation * hoveredNode.level;\n\n const isInsideSameGroup = x > xMax;\n if (!isInsideSameGroup) {\n const levelSubstracted = Math.round((xMax - x) / indentation);\n return Math.max(0, hoveredNode.level - levelSubstracted);\n }\n }\n\n return hoveredNode.level;\n }\n\n /**\n * @param level if level is defined with go to the defined levle to find ancestor. Sinon on prend le current ancestor\n */\n private getNodeAncestors(\n id: string,\n level?: number\n ): TreeFlatNode | undefined {\n const nodes = this.treeControl.dataNodes;\n const index = nodes.findIndex((node) => node.id === id);\n\n const targetLevel = level ?? Math.max(0, nodes[index].level - 1);\n return nodes\n .slice(0, index)\n .reverse()\n .find((node) => node.level === targetLevel);\n }\n\n private getDirectDescendants(node: TreeFlatNode): TreeFlatNode[] {\n const level = node.level + 1;\n return this.treeControl\n .getDescendants(node)\n .filter((child) => child.level === level);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragAndDropDirective } from './drag-drop.directive';\nimport { TreeDragDropDirective } from './tree-drag-drop/tree-drag-drop.directive';\n\n/**\n * @deprecated import the DragAndDropDirective directly\n */\n@NgModule({\n imports: [DragAndDropDirective, TreeDragDropDirective],\n exports: [DragAndDropDirective, TreeDragDropDirective]\n})\nexport class IgoDrapDropModule {\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\n return {\n ngModule: IgoDrapDropModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -199,10 +199,10 @@ class DynamicComponentService {
199
199
  const factory = this.resolver.resolveComponentFactory(componentCls);
200
200
  return new DynamicComponent(factory);
201
201
  }
202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
203
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
202
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DynamicComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
203
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
204
204
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicComponentService, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DynamicComponentService, decorators: [{
206
206
  type: Injectable,
207
207
  args: [{
208
208
  providedIn: 'root'
@@ -311,10 +311,10 @@ class DynamicOutletComponent {
311
311
  updateSubscribers() {
312
312
  this.dynamicComponent.updateSubscribers(this.subscribers);
313
313
  }
314
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: DynamicOutletComponent, isStandalone: true, selector: "igo-dynamic-outlet", inputs: { component: "component", inputs: "inputs", subscribers: "subscribers" }, viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #target></ng-template>\n", styles: [":host{display:block;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
314
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DynamicOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: DynamicOutletComponent, isStandalone: true, selector: "igo-dynamic-outlet", inputs: { component: "component", inputs: "inputs", subscribers: "subscribers" }, viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #target></ng-template>\n", styles: [":host{display:block;width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
316
316
  }
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: DynamicOutletComponent, decorators: [{
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DynamicOutletComponent, decorators: [{
318
318
  type: Component,
319
319
  args: [{ selector: 'igo-dynamic-outlet', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-template #target></ng-template>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
320
320
  }], propDecorators: { component: [{
@@ -332,11 +332,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
332
332
  * @deprecated import the DynamicOutletComponent directly
333
333
  */
334
334
  class IgoDynamicComponentModule {
335
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
336
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicComponentModule, imports: [DynamicOutletComponent], exports: [DynamicOutletComponent] });
337
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicComponentModule });
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
336
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicComponentModule, imports: [DynamicOutletComponent], exports: [DynamicOutletComponent] });
337
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicComponentModule });
338
338
  }
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicComponentModule, decorators: [{
339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicComponentModule, decorators: [{
340
340
  type: NgModule,
341
341
  args: [{
342
342
  imports: [DynamicOutletComponent],
@@ -348,11 +348,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
348
348
  * @deprecated import the DynamicOutletComponent directly
349
349
  */
350
350
  class IgoDynamicOutletModule {
351
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicOutletModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
352
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicOutletModule, imports: [DynamicOutletComponent], exports: [DynamicOutletComponent] });
353
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicOutletModule });
351
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicOutletModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
352
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicOutletModule, imports: [DynamicOutletComponent], exports: [DynamicOutletComponent] });
353
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicOutletModule });
354
354
  }
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoDynamicOutletModule, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoDynamicOutletModule, decorators: [{
356
356
  type: NgModule,
357
357
  args: [{
358
358
  imports: [DynamicOutletComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-common-dynamic-component.mjs","sources":["../../../packages/common/dynamic-component/src/shared/dynamic-component.ts","../../../packages/common/dynamic-component/src/shared/dynamic-component.service.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.html","../../../packages/common/dynamic-component/src/dynamic-component.module.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.module.ts","../../../packages/common/dynamic-component/src/igo2-common-dynamic-component.ts"],"sourcesContent":["import {\n ComponentFactory,\n ComponentRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * This class is used in the DynamicComponentOutlet component. It holds\n * a reference to a component factory and can render that component\n * in a target element on demand. It's also possible to set inputs\n * and to subscribe to outputs.\n */\nexport class DynamicComponent<C> {\n /**\n * Component reference\n */\n private componentRef: ComponentRef<C>;\n\n /**\n * Subscriptions to the component's outputs. Those need\n * to be unsubscribed when the component is destroyed.\n */\n private subscriptions: Subscription[] = [];\n\n /**\n * Component target element\n */\n private target: ViewContainerRef;\n\n /**\n * Component inputs\n */\n private inputs: Record<string, any> = {};\n\n /**\n * Subscriptions to the component's async inputs\n */\n private inputs$$: Record<string, Subscription> = {};\n\n /**\n * Subscribers to the component's outputs\n */\n private subscribers: Record<string, (event: any) => void> = {};\n\n constructor(private componentFactory: ComponentFactory<C>) {}\n\n /**\n * Render the component to a target element.\n * Set it's inputs and subscribe to it's outputs.\n * @param target Target element\n */\n setTarget(target: ViewContainerRef) {\n this.target = target;\n this.componentRef = target.createComponent(this.componentFactory);\n this.updateInputs(this.inputs);\n this.updateSubscribers(this.subscribers);\n }\n\n /**\n * Destroy this component. That means, removing from it's target\n * element and unsubscribing to it's outputs.\n */\n destroy() {\n if (this.target !== undefined) {\n this.target.clear();\n }\n if (this.componentRef !== undefined) {\n this.componentRef.destroy();\n this.componentRef = undefined;\n }\n this.unobserveAllInputs();\n this.unsubscribeAll();\n }\n\n /**\n * Update the component inputs. This is an update so any\n * key not defined won't be overwritten.\n */\n updateInputs(inputs: Record<string, any>) {\n this.inputs = inputs;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedInputs = this.componentFactory.inputs;\n allowedInputs.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n\n this.unobserveInput(key);\n\n const inputValue = inputs[key];\n if (Object.prototype.hasOwnProperty.call(inputs, key)) {\n if (inputValue instanceof Observable) {\n this.observeInput(key, inputValue);\n } else {\n this.setInputValue(instance, key, inputValue);\n }\n }\n }\n );\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n }\n\n /**\n * Set an instance's input value\n * @param instance Component instance\n * @param key Input key\n * @param value Input value\n */\n private setInputValue(instance: C, key: string, value: any) {\n const currentValue = instance[key];\n if (value === currentValue) {\n return;\n }\n\n const prototype = Object.getPrototypeOf(instance);\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\n if (descriptor !== undefined && descriptor.set !== undefined) {\n descriptor.set.call(instance, value);\n } else {\n instance[key] = value;\n }\n }\n\n /**\n * Update the component subscribers. This is an update so any\n * key not defined won't be overwritten.\n */\n updateSubscribers(subscribers: Record<string, (event: any) => void>) {\n this.subscribers = subscribers;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedSubscribers = this.componentFactory.outputs;\n allowedSubscribers.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n if (Object.prototype.hasOwnProperty.call(subscribers, key)) {\n const emitter = instance[key];\n const subscriber = subscribers[key];\n if (Array.isArray(subscriber)) {\n subscriber.forEach((_subscriber) => {\n this.subscriptions.push(emitter.subscribe(_subscriber));\n });\n } else {\n this.subscriptions.push(emitter.subscribe(subscriber));\n }\n }\n }\n );\n }\n\n /**\n * Subscribe to an observable input and update the component's input value\n * accordingly\n * @param key Input key\n * @param observable Observable\n */\n private observeInput(key: string, observable: Observable<any>) {\n this.inputs$$[key] = observable.subscribe((value: any) => {\n const instance = this.componentRef.instance;\n this.setInputValue(instance, key, value);\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n });\n }\n\n /**\n * Unsubscribe to an observable input\n * @param key Input key\n */\n private unobserveInput(key: string) {\n if (this.inputs$$[key] !== undefined) {\n this.inputs$$[key].unsubscribe();\n this.inputs$$[key] = undefined;\n }\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unobserveAllInputs() {\n Object.values(this.inputs$$).forEach((s: Subscription | undefined) => {\n if (s !== undefined) {\n s.unsubscribe();\n }\n });\n this.inputs$$ = {};\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unsubscribeAll() {\n this.subscriptions.forEach((s: Subscription) => s.unsubscribe());\n this.subscriptions = [];\n }\n}\n","import { ComponentFactoryResolver, Injectable, inject } from '@angular/core';\n\nimport { DynamicComponent } from './dynamic-component';\n\n/**\n * Service to creates DynamicComponent instances from base component classes\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n private resolver = inject(ComponentFactoryResolver);\n\n /**\n * Creates a DynamicComponent instance from a base component class\n * @param componentCls The component class\n * @returns DynamicComponent instance\n */\n create(componentCls: any): DynamicComponent<any> {\n const factory = this.resolver.resolveComponentFactory(componentCls as any);\n return new DynamicComponent<typeof componentCls>(factory);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { DynamicComponent } from '../shared/dynamic-component';\nimport { DynamicComponentService } from '../shared/dynamic-component.service';\n\n@Component({\n selector: 'igo-dynamic-outlet',\n templateUrl: 'dynamic-outlet.component.html',\n styleUrls: ['dynamic-outlet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DynamicOutletComponent implements OnChanges, OnDestroy {\n private dynamicComponentService = inject(DynamicComponentService);\n private cdRef = inject(ChangeDetectorRef);\n\n /**\n * The dynamic component base class or the dynamic component itself\n */\n @Input() component: DynamicComponent<any> | any;\n\n /**\n * The dynamic component inputs\n */\n @Input() inputs: Record<string, any> = {};\n\n /**\n * The subscribers to the dynamic component outputs\n */\n @Input() subscribers: Record<string, (event: any) => void> = {};\n\n /**\n * The dynamic component\n */\n private dynamicComponent: DynamicComponent<any>;\n\n /**\n * The view element to render the component to\n * @ignore\n */\n @ViewChild('target', { read: ViewContainerRef, static: true })\n private target: ViewContainerRef;\n\n /**\n * If the dynamic component changes, create it.\n * If the inputs or subscribers change, update the current component's\n * inputs or subscribers.\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n const component = changes.component;\n const inputs = changes.inputs;\n const subscribers = changes.subscribers;\n const eq = ObjectUtils.objectsAreEquivalent;\n\n if (!component || !component.currentValue) {\n return;\n }\n\n if (component.currentValue !== component.previousValue) {\n this.createComponent(component.currentValue);\n } else {\n const inputsAreEquivalents =\n inputs && eq(inputs.currentValue || {}, inputs.previousValue || {});\n const subscribersAreEquivalents =\n subscribers &&\n eq(subscribers.currentValue || {}, subscribers.previousValue || {});\n\n if (inputsAreEquivalents === false) {\n this.updateInputs();\n }\n\n if (subscribersAreEquivalents === false) {\n this.updateSubscribers();\n }\n }\n this.cdRef.detectChanges();\n }\n\n /**\n * Destroy the dynamic component and all it's subscribers\n * @internal\n */\n ngOnDestroy() {\n if (this.dynamicComponent) {\n this.dynamicComponent.destroy();\n }\n }\n\n /**\n * Create a DynamicComponent out of the component class and render it.\n * @internal\n */\n private createComponent(component: DynamicComponent<any> | any) {\n if (this.dynamicComponent !== undefined) {\n this.dynamicComponent.destroy();\n }\n this.dynamicComponent =\n component instanceof DynamicComponent\n ? component\n : this.dynamicComponentService.create(component);\n this.renderComponent();\n }\n\n /**\n * Create and render the dynamic component. Set it's inputs and subscribers\n * @internal\n */\n private renderComponent() {\n this.updateInputs();\n this.updateSubscribers();\n this.dynamicComponent.setTarget(this.target);\n }\n\n /**\n * Update the dynamic component inputs. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateInputs() {\n this.dynamicComponent.updateInputs(this.inputs);\n }\n\n /**\n * Update the dynamic component subscribers. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateSubscribers() {\n this.dynamicComponent.updateSubscribers(this.subscribers);\n }\n}\n","<ng-template #target></ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet/dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicComponentModule {}\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicOutletModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-common-dynamic-component.mjs","sources":["../../../packages/common/dynamic-component/src/shared/dynamic-component.ts","../../../packages/common/dynamic-component/src/shared/dynamic-component.service.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.html","../../../packages/common/dynamic-component/src/dynamic-component.module.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.module.ts","../../../packages/common/dynamic-component/src/igo2-common-dynamic-component.ts"],"sourcesContent":["import {\n ComponentFactory,\n ComponentRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * This class is used in the DynamicComponentOutlet component. It holds\n * a reference to a component factory and can render that component\n * in a target element on demand. It's also possible to set inputs\n * and to subscribe to outputs.\n */\nexport class DynamicComponent<C> {\n /**\n * Component reference\n */\n private componentRef: ComponentRef<C>;\n\n /**\n * Subscriptions to the component's outputs. Those need\n * to be unsubscribed when the component is destroyed.\n */\n private subscriptions: Subscription[] = [];\n\n /**\n * Component target element\n */\n private target: ViewContainerRef;\n\n /**\n * Component inputs\n */\n private inputs: Record<string, any> = {};\n\n /**\n * Subscriptions to the component's async inputs\n */\n private inputs$$: Record<string, Subscription> = {};\n\n /**\n * Subscribers to the component's outputs\n */\n private subscribers: Record<string, (event: any) => void> = {};\n\n constructor(private componentFactory: ComponentFactory<C>) {}\n\n /**\n * Render the component to a target element.\n * Set it's inputs and subscribe to it's outputs.\n * @param target Target element\n */\n setTarget(target: ViewContainerRef) {\n this.target = target;\n this.componentRef = target.createComponent(this.componentFactory);\n this.updateInputs(this.inputs);\n this.updateSubscribers(this.subscribers);\n }\n\n /**\n * Destroy this component. That means, removing from it's target\n * element and unsubscribing to it's outputs.\n */\n destroy() {\n if (this.target !== undefined) {\n this.target.clear();\n }\n if (this.componentRef !== undefined) {\n this.componentRef.destroy();\n this.componentRef = undefined;\n }\n this.unobserveAllInputs();\n this.unsubscribeAll();\n }\n\n /**\n * Update the component inputs. This is an update so any\n * key not defined won't be overwritten.\n */\n updateInputs(inputs: Record<string, any>) {\n this.inputs = inputs;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedInputs = this.componentFactory.inputs;\n allowedInputs.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n\n this.unobserveInput(key);\n\n const inputValue = inputs[key];\n if (Object.prototype.hasOwnProperty.call(inputs, key)) {\n if (inputValue instanceof Observable) {\n this.observeInput(key, inputValue);\n } else {\n this.setInputValue(instance, key, inputValue);\n }\n }\n }\n );\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n }\n\n /**\n * Set an instance's input value\n * @param instance Component instance\n * @param key Input key\n * @param value Input value\n */\n private setInputValue(instance: C, key: string, value: any) {\n const currentValue = instance[key];\n if (value === currentValue) {\n return;\n }\n\n const prototype = Object.getPrototypeOf(instance);\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\n if (descriptor !== undefined && descriptor.set !== undefined) {\n descriptor.set.call(instance, value);\n } else {\n instance[key] = value;\n }\n }\n\n /**\n * Update the component subscribers. This is an update so any\n * key not defined won't be overwritten.\n */\n updateSubscribers(subscribers: Record<string, (event: any) => void>) {\n this.subscribers = subscribers;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedSubscribers = this.componentFactory.outputs;\n allowedSubscribers.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n if (Object.prototype.hasOwnProperty.call(subscribers, key)) {\n const emitter = instance[key];\n const subscriber = subscribers[key];\n if (Array.isArray(subscriber)) {\n subscriber.forEach((_subscriber) => {\n this.subscriptions.push(emitter.subscribe(_subscriber));\n });\n } else {\n this.subscriptions.push(emitter.subscribe(subscriber));\n }\n }\n }\n );\n }\n\n /**\n * Subscribe to an observable input and update the component's input value\n * accordingly\n * @param key Input key\n * @param observable Observable\n */\n private observeInput(key: string, observable: Observable<any>) {\n this.inputs$$[key] = observable.subscribe((value: any) => {\n const instance = this.componentRef.instance;\n this.setInputValue(instance, key, value);\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n });\n }\n\n /**\n * Unsubscribe to an observable input\n * @param key Input key\n */\n private unobserveInput(key: string) {\n if (this.inputs$$[key] !== undefined) {\n this.inputs$$[key].unsubscribe();\n this.inputs$$[key] = undefined;\n }\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unobserveAllInputs() {\n Object.values(this.inputs$$).forEach((s: Subscription | undefined) => {\n if (s !== undefined) {\n s.unsubscribe();\n }\n });\n this.inputs$$ = {};\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unsubscribeAll() {\n this.subscriptions.forEach((s: Subscription) => s.unsubscribe());\n this.subscriptions = [];\n }\n}\n","import { ComponentFactoryResolver, Injectable, inject } from '@angular/core';\n\nimport { DynamicComponent } from './dynamic-component';\n\n/**\n * Service to creates DynamicComponent instances from base component classes\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n private resolver = inject(ComponentFactoryResolver);\n\n /**\n * Creates a DynamicComponent instance from a base component class\n * @param componentCls The component class\n * @returns DynamicComponent instance\n */\n create(componentCls: any): DynamicComponent<any> {\n const factory = this.resolver.resolveComponentFactory(componentCls as any);\n return new DynamicComponent<typeof componentCls>(factory);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { DynamicComponent } from '../shared/dynamic-component';\nimport { DynamicComponentService } from '../shared/dynamic-component.service';\n\n@Component({\n selector: 'igo-dynamic-outlet',\n templateUrl: 'dynamic-outlet.component.html',\n styleUrls: ['dynamic-outlet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DynamicOutletComponent implements OnChanges, OnDestroy {\n private dynamicComponentService = inject(DynamicComponentService);\n private cdRef = inject(ChangeDetectorRef);\n\n /**\n * The dynamic component base class or the dynamic component itself\n */\n @Input() component: DynamicComponent<any> | any;\n\n /**\n * The dynamic component inputs\n */\n @Input() inputs: Record<string, any> = {};\n\n /**\n * The subscribers to the dynamic component outputs\n */\n @Input() subscribers: Record<string, (event: any) => void> = {};\n\n /**\n * The dynamic component\n */\n private dynamicComponent: DynamicComponent<any>;\n\n /**\n * The view element to render the component to\n * @ignore\n */\n @ViewChild('target', { read: ViewContainerRef, static: true })\n private target: ViewContainerRef;\n\n /**\n * If the dynamic component changes, create it.\n * If the inputs or subscribers change, update the current component's\n * inputs or subscribers.\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n const component = changes.component;\n const inputs = changes.inputs;\n const subscribers = changes.subscribers;\n const eq = ObjectUtils.objectsAreEquivalent;\n\n if (!component || !component.currentValue) {\n return;\n }\n\n if (component.currentValue !== component.previousValue) {\n this.createComponent(component.currentValue);\n } else {\n const inputsAreEquivalents =\n inputs && eq(inputs.currentValue || {}, inputs.previousValue || {});\n const subscribersAreEquivalents =\n subscribers &&\n eq(subscribers.currentValue || {}, subscribers.previousValue || {});\n\n if (inputsAreEquivalents === false) {\n this.updateInputs();\n }\n\n if (subscribersAreEquivalents === false) {\n this.updateSubscribers();\n }\n }\n this.cdRef.detectChanges();\n }\n\n /**\n * Destroy the dynamic component and all it's subscribers\n * @internal\n */\n ngOnDestroy() {\n if (this.dynamicComponent) {\n this.dynamicComponent.destroy();\n }\n }\n\n /**\n * Create a DynamicComponent out of the component class and render it.\n * @internal\n */\n private createComponent(component: DynamicComponent<any> | any) {\n if (this.dynamicComponent !== undefined) {\n this.dynamicComponent.destroy();\n }\n this.dynamicComponent =\n component instanceof DynamicComponent\n ? component\n : this.dynamicComponentService.create(component);\n this.renderComponent();\n }\n\n /**\n * Create and render the dynamic component. Set it's inputs and subscribers\n * @internal\n */\n private renderComponent() {\n this.updateInputs();\n this.updateSubscribers();\n this.dynamicComponent.setTarget(this.target);\n }\n\n /**\n * Update the dynamic component inputs. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateInputs() {\n this.dynamicComponent.updateInputs(this.inputs);\n }\n\n /**\n * Update the dynamic component subscribers. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateSubscribers() {\n this.dynamicComponent.updateSubscribers(this.subscribers);\n }\n}\n","<ng-template #target></ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet/dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicComponentModule {}\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicOutletModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1801,10 +1801,10 @@ class EntitySelectorComponent {
1801
1801
  this.multiText$.next(this.multiAllText);
1802
1802
  }
1803
1803
  }
1804
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntitySelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1805
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: EntitySelectorComponent, isStandalone: true, selector: "igo-entity-selector", inputs: { store: "store", titleAccessor: "titleAccessor", emptyText: "emptyText", multi: "multi", multiAllText: "multiAllText", multiNoneText: "multiNoneText", placeholder: "placeholder", disabled: "disabled" }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText !== undefined && multi === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText }}</mat-option>\n }\n @if (multi === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store.stateView.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1804
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntitySelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1805
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: EntitySelectorComponent, isStandalone: true, selector: "igo-entity-selector", inputs: { store: "store", titleAccessor: "titleAccessor", emptyText: "emptyText", multi: "multi", multiAllText: "multiAllText", multiNoneText: "multiNoneText", placeholder: "placeholder", disabled: "disabled" }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText !== undefined && multi === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText }}</mat-option>\n }\n @if (multi === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store.stateView.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1806
1806
  }
1807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntitySelectorComponent, decorators: [{
1807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntitySelectorComponent, decorators: [{
1808
1808
  type: Component,
1809
1809
  args: [{ selector: 'igo-entity-selector', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatFormFieldModule, MatSelectModule, MatOptionModule, AsyncPipe], template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi\"\n [placeholder]=\"placeholder\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText !== undefined && multi === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText }}</mat-option>\n }\n @if (multi === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store.stateView.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"] }]
1810
1810
  }], propDecorators: { store: [{
@@ -1831,11 +1831,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
1831
1831
  * @deprecated import the EntitySelectorComponent directly
1832
1832
  */
1833
1833
  class IgoEntitySelectorModule {
1834
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntitySelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1835
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent], exports: [EntitySelectorComponent] });
1836
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent] });
1834
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntitySelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1835
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent], exports: [EntitySelectorComponent] });
1836
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent] });
1837
1837
  }
1838
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntitySelectorModule, decorators: [{
1838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntitySelectorModule, decorators: [{
1839
1839
  type: NgModule,
1840
1840
  args: [{
1841
1841
  imports: [EntitySelectorComponent],
@@ -1966,10 +1966,10 @@ class EntityTablePaginatorComponent {
1966
1966
  emitPaginator() {
1967
1967
  this.paginatorChange.emit(this.paginator);
1968
1968
  }
1969
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTablePaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1970
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: EntityTablePaginatorComponent, isStandalone: true, selector: "igo-entity-table-paginator", inputs: { entitySortChange$: "entitySortChange$", store: "store", paginatorOptions: "paginatorOptions" }, outputs: { page: "page", paginatorChange: "paginatorChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n>\n</mat-paginator>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1969
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTablePaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1970
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: EntityTablePaginatorComponent, isStandalone: true, selector: "igo-entity-table-paginator", inputs: { entitySortChange$: "entitySortChange$", store: "store", paginatorOptions: "paginatorOptions" }, outputs: { page: "page", paginatorChange: "paginatorChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n>\n</mat-paginator>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1971
1971
  }
1972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTablePaginatorComponent, decorators: [{
1972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTablePaginatorComponent, decorators: [{
1973
1973
  type: Component,
1974
1974
  args: [{ selector: 'igo-entity-table-paginator', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatPaginatorModule], template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n>\n</mat-paginator>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"] }]
1975
1975
  }], propDecorators: { entitySortChange$: [{
@@ -2091,10 +2091,10 @@ class EntityTableRowDirective {
2091
2091
  removeCls(cls) {
2092
2092
  this.renderer.removeClass(this.el.nativeElement, cls);
2093
2093
  }
2094
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2095
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.4", type: EntityTableRowDirective, isStandalone: true, selector: "[igoEntityTableRow]", inputs: { selection: "selection", selectOnClick: "selectOnClick", highlightSelection: "highlightSelection", selected: "selected", scrollBehavior: "scrollBehavior" }, outputs: { select: "select" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2094
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2095
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.14", type: EntityTableRowDirective, isStandalone: true, selector: "[igoEntityTableRow]", inputs: { selection: "selection", selectOnClick: "selectOnClick", highlightSelection: "highlightSelection", selected: "selected", scrollBehavior: "scrollBehavior" }, outputs: { select: "select" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2096
2096
  }
2097
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTableRowDirective, decorators: [{
2097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTableRowDirective, decorators: [{
2098
2098
  type: Directive,
2099
2099
  args: [{
2100
2100
  selector: '[igoEntityTableRow]',
@@ -2875,14 +2875,14 @@ class EntityTableComponent {
2875
2875
  }
2876
2876
  return column;
2877
2877
  }
2878
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2879
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: EntityTableComponent, isStandalone: true, selector: "igo-entity-table", inputs: { store: "store", paginator: "paginator", template: "template", scrollBehavior: "scrollBehavior", sortNullsFirst: "sortNullsFirst", withPaginator: "withPaginator", paginatorOptions: "paginatorOptions" }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, providers: [
2878
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2879
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: EntityTableComponent, isStandalone: true, selector: "igo-entity-table", inputs: { store: "store", paginator: "paginator", template: "template", scrollBehavior: "scrollBehavior", sortNullsFirst: "sortNullsFirst", withPaginator: "withPaginator", paginatorOptions: "paginatorOptions" }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, providers: [
2880
2880
  { provide: MatFormFieldControl, useExisting: EntityTableComponent },
2881
2881
  provideMomentDateAdapter()
2882
2882
  ], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" [ngStyle]=\"{ height: tableHeight }\">\n <table\n id=\"currentWorkspaceTable\"\n mat-table\n matSort\n [ngClass]=\"getTableClass()\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"getTrackByFunction()\"\n (matSortChange)=\"onSort($event)\"\n >\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n @if (selectMany) {\n @let selectionState = selectionState$ | async;\n @if (selectionState) {\n <mat-checkbox\n (change)=\"onToggleRows($event.checked)\"\n [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"\n selectionState === entityTableSelectionState.Some\n \"\n >\n </mat-checkbox>\n }\n }\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\"\n (click)=\"\n $event.shiftKey\n ? onShiftToggleRow(!rowIsSelected(row.record), row.record, $event)\n : $event.stopPropagation()\n \"\n (change)=\"onToggleRow($event.checked, row.record)\"\n [checked]=\"rowIsSelected(row.record)\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n @for (column of template.columns; track column) {\n <ng-container [matColumnDef]=\"column.name\">\n @if (columnIsSortable(column)) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n }\n\n @let columnRenderer = getColumnRenderer(column);\n @if (columnRenderer) {\n @switch (columnRenderer) {\n @case (entityTableColumnRenderer.HTML) {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"row.cellData[column.name].value\"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.UnsanitizedHTML) {\n <ng-container *matCellDef=\"let row\">\n @if (isEdition(row.record)) {\n <td\n mat-cell\n class=\"mat-cell-text edition\"\n [formGroup]=\"formGroup\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @switch (column.type) {\n @case ('date') {\n <div class=\"date-picker\">\n <mat-datepicker-toggle\n matSuffix\n [for]=\"picker\"\n ></mat-datepicker-toggle>\n <input\n matInput\n [matDatepicker]=\"picker\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (dateChange)=\"\n onDateChange(column.name, row.record, $event)\n \"\n />\n <mat-datepicker #picker></mat-datepicker>\n </div>\n }\n @case ('time') {\n <input\n matInput\n type=\"time\"\n [formControlName]=\"column.name\"\n step=\"900\"\n (focus)=\"column.onFocus($event)\"\n (keypress)=\"column.onChange($event)\"\n (blur)=\"column.onBlur($event)\"\n />\n }\n @case ('number') {\n <input\n matInput\n type=\"number\"\n class=\"class_number_edition\"\n [formControlName]=\"column.name\"\n step=\"{{ column.step }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n min=\"{{\n getValidationAttributeValue(column, 'minValue')\n }}\"\n max=\"{{\n getValidationAttributeValue(column, 'maxValue')\n }}\"\n />\n }\n @case ('boolean') {\n <mat-checkbox\n [formControlName]=\"column.name\"\n [checked]=\"row.cellData[column.name].value\"\n (change)=\"\n onBooleanValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n ></mat-checkbox>\n }\n @case ('list') {\n <mat-select\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n [formControlName]=\"column.name\"\n [multiple]=\"column.multiple\"\n (selectionChange)=\"\n onSelectValueChange(column.name, row.record, $event)\n \"\n [value]=\"row.cellData[column.name].value\"\n >\n <mat-option\n *ngFor=\"let option of column.domainValues\"\n [value]=\"option.id\"\n [disabled]=\"option.disabled\"\n >\n {{ option.value }}\n </mat-option>\n </mat-select>\n }\n @case ('autocomplete') {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n [matAutocomplete]=\"auto\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"\n onAutocompleteValueChange(\n column,\n row.record,\n $event\n )\n \"\n panelWidth=\"430px\"\n >\n <mat-option\n *ngFor=\"\n let option of filteredOptions[column.name] | async\n \"\n [value]=\"option.id\"\n >\n {{ option.value }}\n </mat-option>\n </mat-autocomplete>\n }\n @default {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n />\n }\n }\n </td>\n } @else {\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"\n row.cellData[column.name].value | sanitizeHtml\n \"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n ><span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n >\n </a>\n </td>\n }\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.Icon) {\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @if (column.onClick) {\n <mat-icon (click)=\"column.onClick($event)\">{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n } @else {\n <mat-icon>{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n }\n </td>\n }\n @case (entityTableColumnRenderer.ButtonGroup) {\n <ng-container *matCellDef=\"let row\">\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @for (\n button of row.cellData[column.name].value;\n track button\n ) {\n @if (\n isEdition(row.record) === button.editMode ||\n button.editMode === undefined\n ) {\n <span>\n @if (button.style === 'mat-icon-button') {\n <button\n igoStopPropagation\n mat-icon-button\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n } @else {\n <button\n igoStopPropagation\n mat-mini-fab\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n }\n </span>\n }\n }\n </td>\n </ng-container>\n }\n @default {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n {{ row.cellData[column.name].value }}\n </td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate\n }}</span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n }\n }\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"headers; sticky: fixedHeader\"\n [ngClass]=\"getHeaderClass()\"\n ></tr>\n <tr\n mat-row\n igoEntityTableRow\n *matRowDef=\"let row; columns: headers\"\n [scrollBehavior]=\"scrollBehavior\"\n [ngClass]=\"getRowClass(row.record)\"\n [selection]=\"selection\"\n [selected]=\"rowIsSelected(row.record)\"\n (select)=\"onRowSelect(row.record)\"\n (click)=\"onRowClick(row.record)\"\n ></tr>\n </table>\n @if (withPaginator) {\n <igo-entity-table-paginator\n [store]=\"store\"\n [paginatorOptions]=\"paginatorOptions\"\n [entitySortChange$]=\"entitySortChange$\"\n (paginatorChange)=\"paginatorChange($event)\"\n >\n </igo-entity-table-paginator>\n }\n</div>\n", styles: [":host{width:100%;height:100%;display:block;--mat-table-header-container-height: 52px}:host.table-compact tr.mat-mdc-header-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:36px}:host.table-compact tr.mat-mdc-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}table.igo-entity-table-with-selection tr:hover{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_string,.class_text,.class_number_edition{text-align:left}td.edition{background:#a6a6a633}input{border-bottom:1px solid darkgrey}table.igo-entity-table-with-selection tr.igo-entity-table-row-highlighted{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}\n"], dependencies: [{ kind: "component", type: EntityTablePaginatorComponent, selector: "igo-entity-table-paginator", inputs: ["entitySortChange$", "store", "paginatorOptions"], outputs: ["page", "paginatorChange"] }, { kind: "directive", type: EntityTableRowDirective, selector: "[igoEntityTableRow]", inputs: ["selection", "selectOnClick", "highlightSelection", "selected", "scrollBehavior"], outputs: ["select"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: // For the DateAdapter provider
2883
2883
  MatOptionModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: SecureImagePipe, name: "secureImage" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2884
2884
  }
2885
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: EntityTableComponent, decorators: [{
2885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: EntityTableComponent, decorators: [{
2886
2886
  type: Component,
2887
2887
  args: [{ selector: 'igo-entity-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2888
2888
  { provide: MatFormFieldControl, useExisting: EntityTableComponent },
@@ -2940,11 +2940,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
2940
2940
  * @deprecated import the EntityTableComponent directly
2941
2941
  */
2942
2942
  class IgoEntityTableModule {
2943
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2944
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent], exports: [EntityTableComponent] });
2945
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent] });
2943
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2944
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent], exports: [EntityTableComponent] });
2945
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent] });
2946
2946
  }
2947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTableModule, decorators: [{
2947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTableModule, decorators: [{
2948
2948
  type: NgModule,
2949
2949
  args: [{
2950
2950
  imports: [EntityTableComponent],
@@ -2956,11 +2956,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
2956
2956
  * @deprecated import the EntityTablePaginatorComponent directly
2957
2957
  */
2958
2958
  class IgoEntityTablePaginatorModule {
2959
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTablePaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2960
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent], exports: [EntityTablePaginatorComponent] });
2961
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent] });
2959
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTablePaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2960
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent], exports: [EntityTablePaginatorComponent] });
2961
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent] });
2962
2962
  }
2963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityTablePaginatorModule, decorators: [{
2963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityTablePaginatorModule, decorators: [{
2964
2964
  type: NgModule,
2965
2965
  args: [{
2966
2966
  imports: [EntityTablePaginatorComponent],
@@ -2977,15 +2977,15 @@ const ENTITY_DIRECTIVES = [
2977
2977
  * @deprecated import the components directly or ENTITY_DIRECTIVES for every components/directives
2978
2978
  */
2979
2979
  class IgoEntityModule {
2980
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2981
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityModule, imports: [EntitySelectorComponent,
2980
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2981
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityModule, imports: [EntitySelectorComponent,
2982
2982
  EntityTableComponent,
2983
2983
  EntityTablePaginatorComponent], exports: [EntitySelectorComponent,
2984
2984
  EntityTableComponent,
2985
2985
  EntityTablePaginatorComponent] });
2986
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityModule, imports: [ENTITY_DIRECTIVES] });
2986
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityModule, imports: [ENTITY_DIRECTIVES] });
2987
2987
  }
2988
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: IgoEntityModule, decorators: [{
2988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: IgoEntityModule, decorators: [{
2989
2989
  type: NgModule,
2990
2990
  args: [{
2991
2991
  imports: [...ENTITY_DIRECTIVES],