cmat 0.0.81 → 0.0.83

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 (148) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +19 -13
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  4. package/fesm2022/cmat-components-card.mjs.map +1 -1
  5. package/fesm2022/cmat-components-carousel.mjs +20 -20
  6. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  7. package/fesm2022/cmat-components-cascade.mjs +7 -5
  8. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  9. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  10. package/fesm2022/cmat-components-code-editor.mjs +3 -2
  11. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  12. package/fesm2022/cmat-components-custom-formly.mjs +228 -108
  13. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  14. package/fesm2022/cmat-components-date-range.mjs +20 -11
  15. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  16. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  17. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  18. package/fesm2022/cmat-components-fullscreen.mjs +1 -1
  19. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  20. package/fesm2022/cmat-components-highlight.mjs +1 -1
  21. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  22. package/fesm2022/cmat-components-image-viewer.mjs +29 -11
  23. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  24. package/fesm2022/cmat-components-json-editor.mjs +16 -26
  25. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  26. package/fesm2022/cmat-components-knob-input.mjs +8 -7
  27. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  28. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  29. package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
  30. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  31. package/fesm2022/cmat-components-material-datetimepicker.mjs +28 -16
  32. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  33. package/fesm2022/cmat-components-navigation.mjs +14 -14
  34. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  35. package/fesm2022/cmat-components-opt-input.mjs +2 -2
  36. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  37. package/fesm2022/cmat-components-password-strength.mjs +8 -5
  38. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  39. package/fesm2022/cmat-components-popover.mjs +2 -2
  40. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  41. package/fesm2022/cmat-components-qrcode.mjs +9 -2
  42. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  43. package/fesm2022/cmat-components-rating.mjs +1 -1
  44. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  45. package/fesm2022/cmat-components-select-search.mjs +25 -24
  46. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  47. package/fesm2022/cmat-components-select-table.mjs +42 -15
  48. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  49. package/fesm2022/cmat-components-select-tree.mjs +3 -1
  50. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  51. package/fesm2022/cmat-components-speed-dial.mjs +24 -5
  52. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  53. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  54. package/fesm2022/cmat-components-toast.mjs +20 -13
  55. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  56. package/fesm2022/cmat-components-transfer-picker.mjs +11 -6
  57. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  58. package/fesm2022/cmat-components-treetable.mjs +4 -3
  59. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  60. package/fesm2022/cmat-components-upload.mjs +29 -15
  61. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  62. package/fesm2022/cmat-components-x6-angular-shape.mjs +2 -2
  63. package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
  64. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  65. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  66. package/fesm2022/cmat-directives-data-exporter.mjs +1 -1
  67. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  68. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  69. package/fesm2022/cmat-directives-digit-only.mjs +12 -18
  70. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  71. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +3 -2
  72. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  73. package/fesm2022/cmat-lib-mock-api.mjs +7 -7
  74. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  75. package/fesm2022/cmat-pipes-find-by-key.mjs +1 -1
  76. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  77. package/fesm2022/cmat-pipes-group-by.mjs +9 -5
  78. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  79. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  80. package/fesm2022/cmat-pipes-secure.mjs +9 -1
  81. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  82. package/fesm2022/cmat-services-alert.mjs +16 -7
  83. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  84. package/fesm2022/cmat-services-data.mjs.map +1 -1
  85. package/fesm2022/cmat-services-export-as.mjs +11 -10
  86. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  87. package/fesm2022/cmat-services-local-storage.mjs +42 -4
  88. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  89. package/fesm2022/cmat-services-title.mjs +2 -2
  90. package/fesm2022/cmat-services-title.mjs.map +1 -1
  91. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  92. package/fesm2022/cmat-services-utils.mjs +78 -57
  93. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  94. package/fesm2022/cmat-validators.mjs +4 -1
  95. package/fesm2022/cmat-validators.mjs.map +1 -1
  96. package/fesm2022/cmat.mjs +759 -438
  97. package/fesm2022/cmat.mjs.map +1 -1
  98. package/package.json +1 -1
  99. package/types/cmat-components-adapter.d.ts +24 -24
  100. package/types/cmat-components-breadcrumb.d.ts +1 -1
  101. package/types/cmat-components-card.d.ts +1 -1
  102. package/types/cmat-components-carousel.d.ts +23 -23
  103. package/types/cmat-components-cascade.d.ts +12 -12
  104. package/types/cmat-components-chip-input.d.ts +8 -8
  105. package/types/cmat-components-code-editor.d.ts +2 -2
  106. package/types/cmat-components-custom-formly.d.ts +121 -44
  107. package/types/cmat-components-date-range.d.ts +30 -16
  108. package/types/cmat-components-drawer.d.ts +2 -2
  109. package/types/cmat-components-file-preview.d.ts +1 -1
  110. package/types/cmat-components-image-viewer.d.ts +5 -3
  111. package/types/cmat-components-json-editor.d.ts +7 -9
  112. package/types/cmat-components-knob-input.d.ts +3 -3
  113. package/types/cmat-components-masonry.d.ts +3 -3
  114. package/types/cmat-components-material-color-picker.d.ts +13 -9
  115. package/types/cmat-components-material-datetimepicker.d.ts +26 -10
  116. package/types/cmat-components-navigation.d.ts +14 -14
  117. package/types/cmat-components-opt-input.d.ts +8 -8
  118. package/types/cmat-components-popover.d.ts +1 -1
  119. package/types/cmat-components-qrcode.d.ts +2 -1
  120. package/types/cmat-components-rating.d.ts +13 -13
  121. package/types/cmat-components-select-search.d.ts +5 -5
  122. package/types/cmat-components-select-table.d.ts +12 -8
  123. package/types/cmat-components-select-tree.d.ts +1 -1
  124. package/types/cmat-components-speed-dial.d.ts +3 -0
  125. package/types/cmat-components-timeline.d.ts +2 -2
  126. package/types/cmat-components-toast.d.ts +2 -2
  127. package/types/cmat-components-transfer-picker.d.ts +5 -4
  128. package/types/cmat-components-treetable.d.ts +2 -2
  129. package/types/cmat-components-upload.d.ts +35 -28
  130. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  131. package/types/cmat-directives-autofocus.d.ts +1 -1
  132. package/types/cmat-directives-data-exporter.d.ts +2 -1
  133. package/types/cmat-directives-debounce.d.ts +5 -5
  134. package/types/cmat-directives-digit-only.d.ts +7 -7
  135. package/types/cmat-directives-seamless-auto-scroll.d.ts +2 -2
  136. package/types/cmat-lib-mock-api.d.ts +1 -1
  137. package/types/cmat-pipes-find-by-key.d.ts +2 -1
  138. package/types/cmat-pipes-group-by.d.ts +6 -1
  139. package/types/cmat-pipes-keys.d.ts +4 -1
  140. package/types/cmat-pipes-secure.d.ts +1 -0
  141. package/types/cmat-services-alert.d.ts +14 -13
  142. package/types/cmat-services-data.d.ts +3 -3
  143. package/types/cmat-services-export-as.d.ts +4 -3
  144. package/types/cmat-services-local-storage.d.ts +10 -2
  145. package/types/cmat-services-translation.d.ts +3 -3
  146. package/types/cmat-services-utils.d.ts +31 -15
  147. package/types/cmat-validators.d.ts +1 -1
  148. package/types/cmat.d.ts +463 -304
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/select-tree.node.ts","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { isNil, isUndefined } from 'lodash-es';\r\nimport { Subject, debounceTime } from 'rxjs';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\n\r\nlet NEXT_ID = 0;\r\n\r\ntype CmatSelectTreeValueItem = CmatSelectTreeNode | CmatSelectTreeFlatNode;\r\ntype CmatSelectTreeValue = CmatSelectTreeValueItem[] | CmatSelectTreeValueItem | null;\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }],\r\n exportAs: 'cmatSelectTree',\r\n imports: [MatIconModule, MatSelectModule, CmatSelectSearchComponent,\r\n ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule]\r\n})\r\nexport class CmatSelectTreeComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnChanges, AfterViewInit, OnDestroy {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-tree-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn?: (value: CmatSelectTreeFlatNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @Input() compareWith: (o1: CmatSelectTreeNode | CmatSelectTreeFlatNode | null, o2: CmatSelectTreeNode | CmatSelectTreeFlatNode | null) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n private readonly _flatNodeById = new Map<string | number, CmatSelectTreeFlatNode>();\r\n private readonly _parentFlatNodeById = new Map<string | number, CmatSelectTreeFlatNode | null>();\r\n private readonly _selectedFlatNodeIds = new Set<string | number>();\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n readonly treeDataSource = signal<CmatSelectTreeNode[]>([]);\r\n readonly dataFlatNodes = signal<CmatSelectTreeFlatNode[]>([]);\r\n\r\n overallFilterControl: FormControl = new FormControl();\r\n\r\n readonly isIndeterminate = signal(false);\r\n readonly isChecked = signal(false);\r\n\r\n readonly checkCount = signal(0);\r\n\r\n selectControl: FormControl = new FormControl();\r\n readonly matSelectData = signal<CmatSelectTreeFlatNode[]>([]);\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _matSelect: MatSelect;\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatSelectTreeNode>;\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n getLevel = (dataNode: CmatSelectTreeFlatNode): number => dataNode.level;\r\n\r\n childrenAccessor: (node: CmatSelectTreeNode) => CmatSelectTreeNode[] = (node: CmatSelectTreeNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatSelectTreeNode) => boolean = (_: number, node: CmatSelectTreeNode) => !!node.children && node.children.length > 0;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // 数据源变化时,重建节点索引和缓存\r\n if (changes['dataSource']) {\r\n this.flatNodeMap.clear();\r\n this.nestedNodeMap.clear();\r\n this._flatNodeById.clear();\r\n this._parentFlatNodeById.clear();\r\n\r\n this.treeDataSource.set(this.dataSource);\r\n this.dataFlatNodes.set(this._getFlattenNodes(this.dataSource));\r\n this.matSelectData.set([...this.dataFlatNodes()]);\r\n\r\n if (this.dataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 初始化下拉面板样式,并监听筛选输入变化\r\n let panelClass: string[] = ['overflow-y-auto','scrollbar-custom'];\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n this._matSelect.panelClass = [this.matSelect.panelClass,...panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass,...panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n const panelClassEntries = this._matSelect.panelClass as Record<string, boolean>;\r\n\r\n panelClass.forEach((i) => {\r\n panelClassEntries[i] = true;\r\n });\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n this.overallFilterControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(200))\r\n .subscribe(() => {\r\n const filterValue = `${this.overallFilterControl.value ?? ''}`.toLowerCase();\r\n const dataClone: CmatSelectTreeNode[] = this._cloneTreeNodes(this.dataSource);\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], filterValue)) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource.set(dataClone);\r\n this.dataFlatNodes.set(this._getFlattenNodes(dataClone));\r\n this.matSelectData.set([...this.dataFlatNodes()]);\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): CmatSelectTreeValue {\r\n return this._value;\r\n }\r\n set value(value: CmatSelectTreeValue) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: CmatSelectTreeValue;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: any) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: (value: CmatSelectTreeValue) => void): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n if (!this._matSelect.panel.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: CmatSelectTreeValue): void {\r\n this._init(value);\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const nodeRecord = node as unknown as Record<string, unknown>;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) => {\r\n const nodeValue = nodeRecord[key];\r\n\r\n if (isNil(nodeValue) || (typeof nodeValue !== 'string' && typeof nodeValue !== 'number' && typeof nodeValue !== 'boolean' && typeof nodeValue !== 'bigint')) {\r\n return '';\r\n }\r\n\r\n atLeastPartialSubstitution = true;\r\n return String(nodeValue);\r\n });\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n // 面板打开/关闭时,同步树节点和选中值\r\n if (opened) {\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this._getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n }\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n } else {\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected.length > 0 ? [...this.checklistSelection.selected] : null;\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this.value = { ...this.checklistSelection.selected[0] };\r\n }\r\n }\r\n\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n }, 100);\r\n }\r\n }\r\n \r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n // 判断当前节点的所有后代是否都已选中\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child =>\r\n this._selectedFlatNodeIds.has(child.id)\r\n );\r\n }\r\n\r\n \r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n // 判断当前节点是否处于半选状态\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this._selectedFlatNodeIds.has(child.id));\r\n return result && !descendants.every(child => this._selectedFlatNodeIds.has(child.id));\r\n }\r\n\r\n \r\n todoItemSelectionToggle(event: MouseEvent, node: CmatSelectTreeFlatNode): void {\r\n // 切换分支节点的选中状态\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n const descendants = this._getDescendants(node);\r\n\r\n if (this.checklistSelection.isSelected(node)) {\r\n this.checklistSelection.select(...descendants);\r\n\r\n } else {\r\n this.checklistSelection.deselect(...descendants);\r\n }\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n \r\n todoLeafItemSelectionToggle(event: MouseEvent, node: CmatSelectTreeFlatNode): void {\r\n // 切换叶子节点的选中状态\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n clearSelection(): void {\r\n // 清空所有选择\r\n this.checklistSelection.clear();\r\n this.isChecked.set(false);\r\n this.isIndeterminate.set(false);\r\n\r\n this.checkCount.set(0);\r\n this._selectedFlatNodeIds.clear();\r\n\r\n this.value = null;\r\n this._matSelect.writeValue(null);\r\n this._matSelect._onChange(null);\r\n }\r\n\r\n\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n // 全选或取消全选\r\n if (selectAllValue) {\r\n this.checklistSelection.select(...this.dataFlatNodes());\r\n this.isIndeterminate.set(false);\r\n this.isChecked.set(true);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked.set(false);\r\n this.isIndeterminate.set(false);\r\n\r\n this.checkCount.set(0);\r\n this._selectedFlatNodeIds.clear();\r\n }\r\n }\r\n\r\n getChecklistSelectionIsSelected(i: CmatSelectTreeNode): boolean {\r\n // 根据原始节点判断是否已选中\r\n const flatNode = this.nestedNodeMap.get(i);\r\n return !!flatNode && this._selectedFlatNodeIds.has(flatNode.id);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: CmatSelectTreeValue) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => void = () => { };\r\n\r\n private _init(v: CmatSelectTreeValue): void {\r\n // 初始化内部值和选中状态\r\n if (this.dataSource.length > 0 && this.treeDataSource().length > 0 && this._matSelect) {\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n\r\n if (!isNil(v)) {\r\n this._updateChecklistSelection(v);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n\r\n if (Array.isArray(v) && v.length > 0) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = [...this.checklistSelection.selected];\r\n\r\n } else {\r\n this.value = this.checklistSelection.selected.length > 0 ? { ...this.checklistSelection.selected[0] } : null;\r\n }\r\n\r\n } else {\r\n this.value = v;\r\n }\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this._updateCheckState();\r\n\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n private _checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n // 级联更新父节点的选中状态\r\n let parent: CmatSelectTreeFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.tree.expand(this.flatNodeMap.get(parent)!);\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n \r\n private _checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n // 根据子节点状态同步父节点选中状态\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n }\r\n\r\n this._updateCheckState();\r\n }\r\n\r\n private _getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n // 通过缓存获取父节点\r\n return this._parentFlatNodeById.get(node.id) ?? null;\r\n }\r\n\r\n private _updateChecklistSelection(value: CmatSelectTreeValueItem[] | CmatSelectTreeValueItem): void {\r\n // 根据外部值同步内部选择状态\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this._flatNodeById.get(item.id);\r\n\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n\r\n this._syncSelectedFlatNodeIds();\r\n }\r\n }\r\n\r\n private _updateSelect(value: CmatSelectTreeValueItem[] | CmatSelectTreeValueItem): void {\r\n // 根据当前值同步显示选择\r\n if (!isNil(value)) {\r\n const valueArray = !Array.isArray(value) ? [value] : value;\r\n\r\n if (this.overallSearchEnabled) // 有搜索功能时,将选中节点转换为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this._flatNodeById.get(item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checklistSelection.deselect(item as CmatSelectTreeFlatNode);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this._checkAllParentsSelection(item);\r\n });\r\n }\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n // 递归过滤节点及其子节点\r\n let result = false;\r\n\r\n if (node?.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node?.children?.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node.name.toLowerCase();\r\n if (cellValue.includes(filter)) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _updateCheckState(): void {\r\n // 更新全选与半选状态\r\n if (this.showToggleAllCheckbox && this.dataSource.length > 0) {\r\n const selectedCount = this._selectedFlatNodeIds.size;\r\n this.checkCount.set(selectedCount);\r\n this.isIndeterminate.set(selectedCount < this.dataFlatNodes().length && selectedCount > 0);\r\n this.isChecked.set(selectedCount === this.dataFlatNodes().length && selectedCount > 0);\r\n }\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatSelectTreeNode[], i: number = 0, parent: CmatSelectTreeFlatNode | null = null): CmatSelectTreeFlatNode[] {\r\n // 将树结构平铺为节点列表\r\n const flattenedNodes: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n const flatNode = this._transformer(node, i, parent);\r\n\r\n flattenedNodes.push(flatNode);\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1, flatNode));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _cloneTreeNodes(nodes: CmatSelectTreeNode[]): CmatSelectTreeNode[] {\r\n return nodes.map(node => ({\r\n id: node.id,\r\n name: node.name,\r\n children: node.children ? this._cloneTreeNodes(node.children) : null\r\n }));\r\n }\r\n\r\n private _syncSelectedFlatNodeIds(): void {\r\n // 同步选中节点 ID 缓存\r\n this._selectedFlatNodeIds.clear();\r\n\r\n this.checklistSelection.selected.forEach((node) => {\r\n this._selectedFlatNodeIds.add(node.id);\r\n });\r\n\r\n this.checkCount.set(this._selectedFlatNodeIds.size);\r\n }\r\n\r\n private _transformer = (node: CmatSelectTreeNode, level: number, parent: CmatSelectTreeFlatNode | null = null): CmatSelectTreeFlatNode => {\r\n // 构建平铺节点并缓存映射关系\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode?.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n this._flatNodeById.set(flatNode.id, flatNode);\r\n this._parentFlatNodeById.set(flatNode.id, parent);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode[] {\r\n // 收集当前节点的所有后代\r\n const node = this.flatNodeMap.get(dataNode);\r\n\r\n if (!node?.children?.length) {\r\n return [];\r\n }\r\n\r\n const descendants: CmatSelectTreeFlatNode[] = [];\r\n\r\n const collect = (children: CmatSelectTreeNode[]): void => {\r\n for (const child of children) {\r\n const flatNode = this.nestedNodeMap.get(child);\r\n\r\n if (flatNode) {\r\n descendants.push(flatNode);\r\n }\r\n\r\n if (child.children?.length) {\r\n collect(child.children);\r\n }\r\n }\r\n };\r\n\r\n collect(node.children);\r\n\r\n return descendants;\r\n }\r\n\r\n}\r\n","@if(multiple){\r\n<mat-select #componentSelect multiple [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (openedChange)=\"openedChange($event)\" (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{ simpleTriggerLabelFn(checklistSelection.selected) }}\r\n } @else {\r\n {{ customTriggerLabelFn(checklistSelection.selected) }}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate()\" [toggleAllCheckboxChecked]=\"isChecked()\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @for (selectData of matSelectData(); track selectData.id) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"getChecklistSelectionIsSelected(node)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)\"\r\n [color]=\"'primary'\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect [placeholder]=\"placeholder\"\r\n [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{ simpleTriggerLabelFn(checklistSelection.selected) }}\r\n } @else {\r\n {{ customTriggerLabelFn(checklistSelection.selected) }}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate()\" [toggleAllCheckboxChecked]=\"isChecked()\"\r\n [showToggleAllCheckbox]=\"false\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource().length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">空</mat-option>\r\n }\r\n @for (selectData of matSelectData(); track selectData.id) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n","export class CmatSelectTreeNode {\r\n id: string | number;\r\n children: CmatSelectTreeNode[] | null;\r\n name: string;\r\n}\r\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":"cmat-components-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/select-tree.node.ts","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { NgClass } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, HostBinding, HostListener, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { isNil, isUndefined } from 'lodash-es';\r\nimport { Subject, debounceTime } from 'rxjs';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\n\r\nlet NEXT_ID = 0;\r\n\r\ntype CmatSelectTreeValueItem = CmatSelectTreeNode | CmatSelectTreeFlatNode;\r\ntype CmatSelectTreeValue = CmatSelectTreeValueItem[] | CmatSelectTreeValueItem | null;\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }],\r\n exportAs: 'cmatSelectTree',\r\n imports: [MatIconModule, MatSelectModule, CmatSelectSearchComponent,\r\n ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule]\r\n})\r\nexport class CmatSelectTreeComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnChanges, AfterViewInit, OnDestroy {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-tree-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn?: (value: CmatSelectTreeFlatNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @Input() compareWith: (o1: CmatSelectTreeNode | CmatSelectTreeFlatNode | null, o2: CmatSelectTreeNode | CmatSelectTreeFlatNode | null) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n private readonly _flatNodeById = new Map<string | number, CmatSelectTreeFlatNode>();\r\n private readonly _parentFlatNodeById = new Map<string | number, CmatSelectTreeFlatNode | null>();\r\n private readonly _selectedFlatNodeIds = new Set<string | number>();\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n readonly treeDataSource = signal<CmatSelectTreeNode[]>([]);\r\n readonly dataFlatNodes = signal<CmatSelectTreeFlatNode[]>([]);\r\n\r\n overallFilterControl: FormControl = new FormControl();\r\n\r\n readonly isIndeterminate = signal(false);\r\n readonly isChecked = signal(false);\r\n\r\n readonly checkCount = signal(0);\r\n\r\n selectControl: FormControl = new FormControl();\r\n readonly matSelectData = signal<CmatSelectTreeFlatNode[]>([]);\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _matSelect: MatSelect;\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatSelectTreeNode>;\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n getLevel = (dataNode: CmatSelectTreeFlatNode): number => dataNode.level;\r\n\r\n childrenAccessor: (node: CmatSelectTreeNode) => CmatSelectTreeNode[] = (node: CmatSelectTreeNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatSelectTreeNode) => boolean = (_: number, node: CmatSelectTreeNode) => !!node.children && node.children.length > 0;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // 数据源变化时,重建节点索引和缓存\r\n if (changes['dataSource']) {\r\n this.flatNodeMap.clear();\r\n this.nestedNodeMap.clear();\r\n this._flatNodeById.clear();\r\n this._parentFlatNodeById.clear();\r\n\r\n this.treeDataSource.set(this.dataSource);\r\n this.dataFlatNodes.set(this._getFlattenNodes(this.dataSource));\r\n this.matSelectData.set([...this.dataFlatNodes()]);\r\n\r\n if (this.dataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 初始化下拉面板样式,并监听筛选输入变化\r\n let panelClass: string[] = ['overflow-y-auto','scrollbar-custom'];\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n this._matSelect.panelClass = [this.matSelect.panelClass,...panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass,...panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n const panelClassEntries = this._matSelect.panelClass as Record<string, boolean>;\r\n\r\n panelClass.forEach((i) => {\r\n panelClassEntries[i] = true;\r\n });\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n this.overallFilterControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(200))\r\n .subscribe(() => {\r\n const filterValue = `${this.overallFilterControl.value ?? ''}`.toLowerCase();\r\n const dataClone: CmatSelectTreeNode[] = this._cloneTreeNodes(this.dataSource);\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], filterValue)) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource.set(dataClone);\r\n this.dataFlatNodes.set(this._getFlattenNodes(dataClone));\r\n this.matSelectData.set([...this.dataFlatNodes()]);\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): CmatSelectTreeValue {\r\n return this._value;\r\n }\r\n set value(value: CmatSelectTreeValue) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: CmatSelectTreeValue;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: (value: CmatSelectTreeValue) => void): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n const relatedTarget = event.relatedTarget;\r\n const panelElement = this._matSelect.panel.nativeElement as HTMLElement;\r\n\r\n if (!(relatedTarget instanceof Element) || !panelElement.contains(relatedTarget)) {\r\n this.touched = true;\r\n this.focused = false;\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: CmatSelectTreeValue): void {\r\n this._init(value);\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const nodeRecord = node as CmatSelectTreeFlatNode & Record<string, unknown>;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) => {\r\n const nodeValue = nodeRecord[key as keyof typeof nodeRecord];\r\n\r\n if (isNil(nodeValue) || (typeof nodeValue !== 'string' && typeof nodeValue !== 'number' && typeof nodeValue !== 'boolean' && typeof nodeValue !== 'bigint')) {\r\n return '';\r\n }\r\n\r\n atLeastPartialSubstitution = true;\r\n return String(nodeValue);\r\n });\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n // 面板打开/关闭时,同步树节点和选中值\r\n if (opened) {\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this._getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n }\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n } else {\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected.length > 0 ? [...this.checklistSelection.selected] : null;\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this.value = { ...this.checklistSelection.selected[0] };\r\n }\r\n }\r\n\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n }, 100);\r\n }\r\n }\r\n \r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n // 判断当前节点的所有后代是否都已选中\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child =>\r\n this._selectedFlatNodeIds.has(child.id)\r\n );\r\n }\r\n\r\n \r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n // 判断当前节点是否处于半选状态\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this._selectedFlatNodeIds.has(child.id));\r\n return result && !descendants.every(child => this._selectedFlatNodeIds.has(child.id));\r\n }\r\n\r\n \r\n todoItemSelectionToggle(event: MouseEvent, node: CmatSelectTreeFlatNode): void {\r\n // 切换分支节点的选中状态\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n const descendants = this._getDescendants(node);\r\n\r\n if (this.checklistSelection.isSelected(node)) {\r\n this.checklistSelection.select(...descendants);\r\n\r\n } else {\r\n this.checklistSelection.deselect(...descendants);\r\n }\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n \r\n todoLeafItemSelectionToggle(event: MouseEvent, node: CmatSelectTreeFlatNode): void {\r\n // 切换叶子节点的选中状态\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n clearSelection(): void {\r\n // 清空所有选择\r\n this.checklistSelection.clear();\r\n this.isChecked.set(false);\r\n this.isIndeterminate.set(false);\r\n\r\n this.checkCount.set(0);\r\n this._selectedFlatNodeIds.clear();\r\n\r\n this.value = null;\r\n this._matSelect.writeValue(null);\r\n this._matSelect._onChange(null);\r\n }\r\n\r\n\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n // 全选或取消全选\r\n if (selectAllValue) {\r\n this.checklistSelection.select(...this.dataFlatNodes());\r\n this.isIndeterminate.set(false);\r\n this.isChecked.set(true);\r\n\r\n this._syncSelectedFlatNodeIds();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked.set(false);\r\n this.isIndeterminate.set(false);\r\n\r\n this.checkCount.set(0);\r\n this._selectedFlatNodeIds.clear();\r\n }\r\n }\r\n\r\n getChecklistSelectionIsSelected(i: CmatSelectTreeNode): boolean {\r\n // 根据原始节点判断是否已选中\r\n const flatNode = this.nestedNodeMap.get(i);\r\n return !!flatNode && this._selectedFlatNodeIds.has(flatNode.id);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: CmatSelectTreeValue) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => void = () => { };\r\n\r\n private _init(v: CmatSelectTreeValue): void {\r\n // 初始化内部值和选中状态\r\n if (this.dataSource.length > 0 && this.treeDataSource().length > 0 && this._matSelect) {\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n\r\n if (!isNil(v)) {\r\n this._updateChecklistSelection(v);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n\r\n if (Array.isArray(v) && v.length > 0) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = [...this.checklistSelection.selected];\r\n\r\n } else {\r\n this.value = this.checklistSelection.selected.length > 0 ? { ...this.checklistSelection.selected[0] } : null;\r\n }\r\n\r\n } else {\r\n this.value = v;\r\n }\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this._updateCheckState();\r\n\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n private _checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n // 级联更新父节点的选中状态\r\n let parent: CmatSelectTreeFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.tree.expand(this.flatNodeMap.get(parent)!);\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n \r\n private _checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n // 根据子节点状态同步父节点选中状态\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n }\r\n\r\n this._updateCheckState();\r\n }\r\n\r\n private _getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n // 通过缓存获取父节点\r\n return this._parentFlatNodeById.get(node.id) ?? null;\r\n }\r\n\r\n private _updateChecklistSelection(value: CmatSelectTreeValueItem[] | CmatSelectTreeValueItem): void {\r\n // 根据外部值同步内部选择状态\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this._flatNodeById.get(item.id);\r\n\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n\r\n this._syncSelectedFlatNodeIds();\r\n }\r\n }\r\n\r\n private _updateSelect(value: CmatSelectTreeValueItem[] | CmatSelectTreeValueItem): void {\r\n // 根据当前值同步显示选择\r\n if (!isNil(value)) {\r\n const valueArray = !Array.isArray(value) ? [value] : value;\r\n\r\n if (this.overallSearchEnabled) // 有搜索功能时,将选中节点转换为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this._flatNodeById.get(item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checklistSelection.deselect(item as CmatSelectTreeFlatNode);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this._checkAllParentsSelection(item);\r\n });\r\n }\r\n\r\n this._syncSelectedFlatNodeIds();\r\n this._updateCheckState();\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n // 递归过滤节点及其子节点\r\n let result = false;\r\n\r\n if (node?.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node?.children?.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node.name.toLowerCase();\r\n if (cellValue.includes(filter)) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _updateCheckState(): void {\r\n // 更新全选与半选状态\r\n if (this.showToggleAllCheckbox && this.dataSource.length > 0) {\r\n const selectedCount = this._selectedFlatNodeIds.size;\r\n this.checkCount.set(selectedCount);\r\n this.isIndeterminate.set(selectedCount < this.dataFlatNodes().length && selectedCount > 0);\r\n this.isChecked.set(selectedCount === this.dataFlatNodes().length && selectedCount > 0);\r\n }\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatSelectTreeNode[], i: number = 0, parent: CmatSelectTreeFlatNode | null = null): CmatSelectTreeFlatNode[] {\r\n // 将树结构平铺为节点列表\r\n const flattenedNodes: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n const flatNode = this._transformer(node, i, parent);\r\n\r\n flattenedNodes.push(flatNode);\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1, flatNode));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _cloneTreeNodes(nodes: CmatSelectTreeNode[]): CmatSelectTreeNode[] {\r\n return nodes.map(node => ({\r\n id: node.id,\r\n name: node.name,\r\n children: node.children ? this._cloneTreeNodes(node.children) : null\r\n }));\r\n }\r\n\r\n private _syncSelectedFlatNodeIds(): void {\r\n // 同步选中节点 ID 缓存\r\n this._selectedFlatNodeIds.clear();\r\n\r\n this.checklistSelection.selected.forEach((node) => {\r\n this._selectedFlatNodeIds.add(node.id);\r\n });\r\n\r\n this.checkCount.set(this._selectedFlatNodeIds.size);\r\n }\r\n\r\n private _transformer = (node: CmatSelectTreeNode, level: number, parent: CmatSelectTreeFlatNode | null = null): CmatSelectTreeFlatNode => {\r\n // 构建平铺节点并缓存映射关系\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode?.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n this._flatNodeById.set(flatNode.id, flatNode);\r\n this._parentFlatNodeById.set(flatNode.id, parent);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode[] {\r\n // 收集当前节点的所有后代\r\n const node = this.flatNodeMap.get(dataNode);\r\n\r\n if (!node?.children?.length) {\r\n return [];\r\n }\r\n\r\n const descendants: CmatSelectTreeFlatNode[] = [];\r\n\r\n const collect = (children: CmatSelectTreeNode[]): void => {\r\n for (const child of children) {\r\n const flatNode = this.nestedNodeMap.get(child);\r\n\r\n if (flatNode) {\r\n descendants.push(flatNode);\r\n }\r\n\r\n if (child.children?.length) {\r\n collect(child.children);\r\n }\r\n }\r\n };\r\n\r\n collect(node.children);\r\n\r\n return descendants;\r\n }\r\n\r\n}","@if(multiple){\r\n<mat-select #componentSelect multiple [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (openedChange)=\"openedChange($event)\" (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{ simpleTriggerLabelFn(checklistSelection.selected) }}\r\n } @else {\r\n {{ customTriggerLabelFn(checklistSelection.selected) }}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate()\" [toggleAllCheckboxChecked]=\"isChecked()\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @for (selectData of matSelectData(); track selectData.id) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"getChecklistSelectionIsSelected(node)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)\"\r\n [color]=\"'primary'\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect [placeholder]=\"placeholder\"\r\n [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{ simpleTriggerLabelFn(checklistSelection.selected) }}\r\n } @else {\r\n {{ customTriggerLabelFn(checklistSelection.selected) }}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate()\" [toggleAllCheckboxChecked]=\"isChecked()\"\r\n [showToggleAllCheckbox]=\"false\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource().length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">空</mat-option>\r\n }\r\n @for (selectData of matSelectData(); track selectData.id) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource()\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n","export class CmatSelectTreeNode {\r\n id: string | number;\r\n children: CmatSelectTreeNode[] | null;\r\n name: string;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -155,6 +155,8 @@ class CmatSpeedDialComponent {
155
155
  this._animationMode = 'fling';
156
156
  this._fixed = false;
157
157
  this._documentClickUnlistener = null;
158
+ this._openChangeTimeoutId = null;
159
+ this._dialOpened = signal(false, ...(ngDevMode ? [{ debugName: "_dialOpened" }] : /* istanbul ignore next */ []));
158
160
  }
159
161
  get fixed() {
160
162
  return this._fixed;
@@ -164,14 +166,25 @@ class CmatSpeedDialComponent {
164
166
  this._processOutsideClickState();
165
167
  }
166
168
  // eslint-disable-next-line @typescript-eslint/member-ordering
169
+ get dialOpened() {
170
+ return this._dialOpened();
171
+ }
172
+ // eslint-disable-next-line @typescript-eslint/member-ordering
167
173
  get open() {
168
174
  return this._open;
169
175
  }
170
176
  set open(open) {
171
177
  const previousOpen = this._open;
172
178
  this._open = open;
179
+ this._dialOpened.set(this._open);
173
180
  if (previousOpen !== this._open) {
174
- this.openChange.emit(this._open);
181
+ if (this._openChangeTimeoutId !== null) {
182
+ clearTimeout(this._openChangeTimeoutId);
183
+ }
184
+ this._openChangeTimeoutId = window.setTimeout(() => {
185
+ this._openChangeTimeoutId = null;
186
+ this.openChange.emit(this._open);
187
+ });
175
188
  if (this._isInitialized) {
176
189
  this.setActionsVisibility();
177
190
  }
@@ -203,7 +216,9 @@ class CmatSpeedDialComponent {
203
216
  this._setElementClass(previousAnimationMode, false);
204
217
  this._setElementClass(this.animationMode, true);
205
218
  if (this._isInitialized) {
206
- void Promise.resolve(null).then(() => (this.open = false));
219
+ window.setTimeout(() => {
220
+ this.open = false;
221
+ });
207
222
  }
208
223
  }
209
224
  }
@@ -215,6 +230,10 @@ class CmatSpeedDialComponent {
215
230
  }
216
231
  ngOnDestroy() {
217
232
  this._unsetDocumentClickListener();
233
+ if (this._openChangeTimeoutId !== null) {
234
+ clearTimeout(this._openChangeTimeoutId);
235
+ this._openChangeTimeoutId = null;
236
+ }
218
237
  }
219
238
  toggle() {
220
239
  this.open = !this.open;
@@ -266,7 +285,7 @@ class CmatSpeedDialComponent {
266
285
  }
267
286
  }
268
287
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CmatSpeedDialComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
269
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: CmatSpeedDialComponent, isStandalone: true, selector: "cmat-speed-dial", inputs: { fixed: "fixed", open: "open", direction: "direction", animationMode: "animationMode" }, outputs: { openChange: "openChange" }, host: { listeners: { "click": "onClick()" }, properties: { "class.dial-opened": "this.open" } }, queries: [{ propertyName: "_childActions", first: true, predicate: CmatSpeedDialActionsComponent, descendants: true }], ngImport: i0, template: `
288
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: CmatSpeedDialComponent, isStandalone: true, selector: "cmat-speed-dial", inputs: { fixed: "fixed", open: "open", direction: "direction", animationMode: "animationMode" }, outputs: { openChange: "openChange" }, host: { listeners: { "click": "onClick()" }, properties: { "class.dial-opened": "this.dialOpened" } }, queries: [{ propertyName: "_childActions", first: true, predicate: CmatSpeedDialActionsComponent, descendants: true }], ngImport: i0, template: `
270
289
  <div class="cmat-speed-dial-container">
271
290
  <ng-content select="cmat-speed-dial-trigger" />
272
291
  <ng-content select="cmat-speed-dial-actions" />
@@ -288,10 +307,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
288
307
  args: [CmatSpeedDialActionsComponent]
289
308
  }], fixed: [{
290
309
  type: Input
291
- }], open: [{
310
+ }], dialOpened: [{
292
311
  type: HostBinding,
293
312
  args: ['class.dial-opened']
294
- }, {
313
+ }], open: [{
295
314
  type: Input
296
315
  }], direction: [{
297
316
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-speed-dial.mjs","sources":["../../../projects/cmat/components/speed-dial/speed-dial.component.ts","../../../projects/cmat/components/speed-dial/cmat-components-speed-dial.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewEncapsulation,\r\n DOCUMENT,\r\n signal\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatMiniFabButton } from '@angular/material/button';\r\nimport { forkJoin, fromEvent, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nconst Z_INDEX_ITEM = 23;\r\n\r\nexport type Direction = 'up' | 'down' | 'left' | 'right';\r\nexport type AnimationMode = 'fling' | 'scale';\r\n\r\nfunction getHostElement(button: MatMiniFabButton): HTMLElement {\r\n return button._elementRef.nativeElement;\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial-actions',\r\n template: `@if (miniFabVisible()) {\r\n <ng-content select=\"[matMiniFab]\" />\r\n }`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialActionsComponent implements AfterContentInit, OnDestroy {\r\n @ContentChildren(MatMiniFabButton) private _buttons!: QueryList<MatMiniFabButton>;\r\n public readonly miniFabVisible = signal(false);\r\n\r\n private readonly _renderer = inject(Renderer2);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private readonly _parent = inject(CmatSpeedDialComponent);\r\n private _showMiniFabAnimation: number | null = null;\r\n private _hideMiniFab: Subscription | null = null;\r\n private _hideTimeoutId: number | null = null;\r\n\r\n ngAfterContentInit(): void {\r\n this._buttons.changes\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._initButtonStates();\r\n this._parent.setActionsVisibility();\r\n });\r\n\r\n this._initButtonStates();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n }\r\n\r\n public show(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n this.miniFabVisible.set(true);\r\n\r\n this._showMiniFabAnimation = window.setTimeout(() => {\r\n this._showMiniFabAnimation = null;\r\n this._buttons.forEach((button, i) => {\r\n let transitionDelay = 0;\r\n let transform;\r\n if (this._parent.animationMode === 'scale') {\r\n transitionDelay = 3 + 65 * i;\r\n transform = 'scale(1)';\r\n } else {\r\n transform = this._getTranslateFunction('0');\r\n }\r\n\r\n const hostElement = getHostElement(button);\r\n this._changeElementStyle(hostElement, 'transition-delay', transitionDelay.toString() + 'ms');\r\n this._changeElementStyle(hostElement, 'opacity', '1');\r\n this._changeElementStyle(hostElement, 'transform', transform);\r\n });\r\n }, 50);\r\n }\r\n\r\n public hide(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n\r\n if (this._buttons.length === 0) {\r\n this.miniFabVisible.set(false);\r\n return;\r\n }\r\n\r\n const obs = this._buttons.map((button, i) => {\r\n let opacity = '1';\r\n let transitionDelay = 0;\r\n let transform;\r\n\r\n if (this._parent.animationMode === 'scale') {\r\n transitionDelay = 3 - 65 * i;\r\n transform = 'scale(0)';\r\n opacity = '0';\r\n } else {\r\n transform = this._getTranslateFunction((55 * (i + 1) - i * 5).toString() + 'px');\r\n }\r\n\r\n const hostElement = getHostElement(button);\r\n\r\n this._changeElementStyle(hostElement, 'transition-delay', transitionDelay.toString() + 'ms');\r\n this._changeElementStyle(hostElement, 'opacity', opacity);\r\n this._changeElementStyle(hostElement, 'transform', transform);\r\n\r\n return fromEvent(hostElement, 'transitionend').pipe(take(1));\r\n });\r\n this._hideMiniFab = forkJoin(obs).subscribe(() => {\r\n this._clearHideTimeout();\r\n this.miniFabVisible.set(false);\r\n });\r\n\r\n this._hideTimeoutId = window.setTimeout(() => {\r\n this._hideTimeoutId = null;\r\n if (this._hideMiniFab) {\r\n this._hideMiniFab.unsubscribe();\r\n this._hideMiniFab = null;\r\n }\r\n this.miniFabVisible.set(false);\r\n }, 500);\r\n }\r\n\r\n private _initButtonStates(): void {\r\n this._buttons.forEach((button, i) => {\r\n this._renderer.addClass(getHostElement(button), 'cmat-action-item');\r\n this._changeElementStyle(getHostElement(button), 'z-index', '' + (Z_INDEX_ITEM - i).toString());\r\n });\r\n }\r\n\r\n private _resetAnimationState(): void {\r\n if (this._showMiniFabAnimation !== null) {\r\n clearTimeout(this._showMiniFabAnimation);\r\n this._showMiniFabAnimation = null;\r\n }\r\n if (this._hideMiniFab) {\r\n this._hideMiniFab.unsubscribe();\r\n this._hideMiniFab = null;\r\n }\r\n }\r\n\r\n private _clearHideTimeout(): void {\r\n if (this._hideTimeoutId !== null) {\r\n clearTimeout(this._hideTimeoutId);\r\n this._hideTimeoutId = null;\r\n }\r\n }\r\n\r\n private _getTranslateFunction(value: string): string {\r\n const dir = this._parent.direction;\r\n const translateFn = dir === 'up' || dir === 'down' ? 'translateY' : 'translateX';\r\n const sign = dir === 'down' || dir === 'right' ? '-' : '';\r\n\r\n return translateFn + '(' + sign + value + ')';\r\n }\r\n\r\n private _changeElementStyle(elem: any, style: string, value: string): void {\r\n this._renderer.setStyle(elem, style, value);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial',\r\n template: `\r\n <div class=\"cmat-speed-dial-container\">\r\n <ng-content select=\"cmat-speed-dial-trigger\" />\r\n <ng-content select=\"cmat-speed-dial-actions\" />\r\n </div>\r\n `,\r\n styleUrl: './speed-dial.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialComponent implements OnDestroy, AfterContentInit {\r\n @Output() public readonly openChange = new EventEmitter<boolean>();\r\n @ContentChild(CmatSpeedDialActionsComponent) private _childActions!: CmatSpeedDialActionsComponent;\r\n\r\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n private readonly _document = inject(DOCUMENT);\r\n\r\n private _isInitialized = false;\r\n private _direction: Direction = 'up';\r\n private _open = false;\r\n private _animationMode: AnimationMode = 'fling';\r\n private _fixed = false;\r\n private _documentClickUnlistener: VoidFunction | null = null;\r\n\r\n @Input()\r\n public get fixed(): boolean {\r\n return this._fixed;\r\n }\r\n\r\n public set fixed(fixed: boolean) {\r\n this._fixed = fixed;\r\n this._processOutsideClickState();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @HostBinding('class.dial-opened')\r\n @Input()\r\n public get open(): boolean {\r\n return this._open;\r\n }\r\n\r\n public set open(open: boolean) {\r\n const previousOpen = this._open;\r\n this._open = open;\r\n if (previousOpen !== this._open) {\r\n this.openChange.emit(this._open);\r\n if (this._isInitialized) {\r\n this.setActionsVisibility();\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n public get direction(): Direction {\r\n return this._direction;\r\n }\r\n\r\n public set direction(direction: Direction) {\r\n const previousDirection = this._direction;\r\n this._direction = direction;\r\n if (previousDirection !== this.direction) {\r\n this._setElementClass(previousDirection, false);\r\n this._setElementClass(this.direction, true);\r\n\r\n if (this._isInitialized) {\r\n this.setActionsVisibility();\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n public get animationMode(): AnimationMode {\r\n return this._animationMode;\r\n }\r\n\r\n public set animationMode(animationMode: AnimationMode) {\r\n const previousAnimationMode = this._animationMode;\r\n this._animationMode = animationMode;\r\n if (previousAnimationMode !== this._animationMode) {\r\n this._setElementClass(previousAnimationMode, false);\r\n this._setElementClass(this.animationMode, true);\r\n\r\n if (this._isInitialized) {\r\n void Promise.resolve(null).then(() => (this.open = false));\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this._isInitialized = true;\r\n this.setActionsVisibility();\r\n this._setElementClass(this.direction, true);\r\n this._setElementClass(this.animationMode, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsetDocumentClickListener();\r\n }\r\n\r\n public toggle(): void {\r\n this.open = !this.open;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @HostListener('click')\r\n public onClick(): void {\r\n if (!this.fixed && this.open) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n public setActionsVisibility(): void {\r\n if (!this._childActions) {\r\n return;\r\n }\r\n if (this.open) {\r\n this._childActions.show();\r\n } else {\r\n this._childActions.hide();\r\n }\r\n this._processOutsideClickState();\r\n }\r\n\r\n private _setElementClass(elemClass: string, isAdd: boolean): void {\r\n const finalClass = `dial-${elemClass}`;\r\n if (isAdd) {\r\n this._renderer.addClass(this._elementRef.nativeElement, finalClass);\r\n } else {\r\n this._renderer.removeClass(this._elementRef.nativeElement, finalClass);\r\n }\r\n }\r\n\r\n private _processOutsideClickState(): void {\r\n if (!this.fixed && this.open) {\r\n this._setDocumentClickListener();\r\n } else {\r\n this._unsetDocumentClickListener();\r\n }\r\n }\r\n\r\n private _setDocumentClickListener(): void {\r\n this._documentClickUnlistener ??= this._renderer.listen(this._document, 'click', () => {\r\n this.open = false;\r\n });\r\n }\r\n\r\n private _unsetDocumentClickListener(): void {\r\n if (this._documentClickUnlistener) {\r\n this._documentClickUnlistener();\r\n this._documentClickUnlistener = null;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial-trigger',\r\n template: ' <ng-content select=\"[matFab]\" />',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialTriggerComponent {\r\n @Input() public spin = false;\r\n private readonly _parent = inject(CmatSpeedDialComponent);\r\n\r\n @HostBinding('class.dial-spin')\r\n public get sp(): boolean {\r\n return this.spin;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event): void {\r\n if (!this._parent.fixed) {\r\n this._parent.toggle();\r\n event.stopPropagation();\r\n }\r\n }\r\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":"cmat-components-speed-dial.mjs","sources":["../../../projects/cmat/components/speed-dial/speed-dial.component.ts","../../../projects/cmat/components/speed-dial/cmat-components-speed-dial.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewEncapsulation,\r\n DOCUMENT,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatMiniFabButton } from '@angular/material/button';\r\nimport { forkJoin, fromEvent, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nconst Z_INDEX_ITEM = 23;\r\n\r\nexport type Direction = 'up' | 'down' | 'left' | 'right';\r\nexport type AnimationMode = 'fling' | 'scale';\r\n\r\nfunction getHostElement(button: MatMiniFabButton): HTMLElement {\r\n return button._elementRef.nativeElement;\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial-actions',\r\n template: `@if (miniFabVisible()) {\r\n <ng-content select=\"[matMiniFab]\" />\r\n }`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialActionsComponent implements AfterContentInit, OnDestroy {\r\n @ContentChildren(MatMiniFabButton) private _buttons!: QueryList<MatMiniFabButton>;\r\n public readonly miniFabVisible = signal(false);\r\n\r\n private readonly _renderer = inject(Renderer2);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private readonly _parent = inject(CmatSpeedDialComponent);\r\n private _showMiniFabAnimation: number | null = null;\r\n private _hideMiniFab: Subscription | null = null;\r\n private _hideTimeoutId: number | null = null;\r\n\r\n ngAfterContentInit(): void {\r\n this._buttons.changes\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._initButtonStates();\r\n this._parent.setActionsVisibility();\r\n });\r\n\r\n this._initButtonStates();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n }\r\n\r\n public show(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n this.miniFabVisible.set(true);\r\n\r\n this._showMiniFabAnimation = window.setTimeout(() => {\r\n this._showMiniFabAnimation = null;\r\n this._buttons.forEach((button, i) => {\r\n let transitionDelay = 0;\r\n let transform;\r\n if (this._parent.animationMode === 'scale') {\r\n transitionDelay = 3 + 65 * i;\r\n transform = 'scale(1)';\r\n } else {\r\n transform = this._getTranslateFunction('0');\r\n }\r\n\r\n const hostElement = getHostElement(button);\r\n this._changeElementStyle(hostElement, 'transition-delay', transitionDelay.toString() + 'ms');\r\n this._changeElementStyle(hostElement, 'opacity', '1');\r\n this._changeElementStyle(hostElement, 'transform', transform);\r\n });\r\n }, 50);\r\n }\r\n\r\n public hide(): void {\r\n this._resetAnimationState();\r\n this._clearHideTimeout();\r\n\r\n if (this._buttons.length === 0) {\r\n this.miniFabVisible.set(false);\r\n return;\r\n }\r\n\r\n const obs = this._buttons.map((button, i) => {\r\n let opacity = '1';\r\n let transitionDelay = 0;\r\n let transform;\r\n\r\n if (this._parent.animationMode === 'scale') {\r\n transitionDelay = 3 - 65 * i;\r\n transform = 'scale(0)';\r\n opacity = '0';\r\n } else {\r\n transform = this._getTranslateFunction((55 * (i + 1) - i * 5).toString() + 'px');\r\n }\r\n\r\n const hostElement = getHostElement(button);\r\n\r\n this._changeElementStyle(hostElement, 'transition-delay', transitionDelay.toString() + 'ms');\r\n this._changeElementStyle(hostElement, 'opacity', opacity);\r\n this._changeElementStyle(hostElement, 'transform', transform);\r\n\r\n return fromEvent(hostElement, 'transitionend').pipe(take(1));\r\n });\r\n this._hideMiniFab = forkJoin(obs).subscribe(() => {\r\n this._clearHideTimeout();\r\n this.miniFabVisible.set(false);\r\n });\r\n\r\n this._hideTimeoutId = window.setTimeout(() => {\r\n this._hideTimeoutId = null;\r\n if (this._hideMiniFab) {\r\n this._hideMiniFab.unsubscribe();\r\n this._hideMiniFab = null;\r\n }\r\n this.miniFabVisible.set(false);\r\n }, 500);\r\n }\r\n\r\n private _initButtonStates(): void {\r\n this._buttons.forEach((button, i) => {\r\n this._renderer.addClass(getHostElement(button), 'cmat-action-item');\r\n this._changeElementStyle(getHostElement(button), 'z-index', '' + (Z_INDEX_ITEM - i).toString());\r\n });\r\n }\r\n\r\n private _resetAnimationState(): void {\r\n if (this._showMiniFabAnimation !== null) {\r\n clearTimeout(this._showMiniFabAnimation);\r\n this._showMiniFabAnimation = null;\r\n }\r\n if (this._hideMiniFab) {\r\n this._hideMiniFab.unsubscribe();\r\n this._hideMiniFab = null;\r\n }\r\n }\r\n\r\n private _clearHideTimeout(): void {\r\n if (this._hideTimeoutId !== null) {\r\n clearTimeout(this._hideTimeoutId);\r\n this._hideTimeoutId = null;\r\n }\r\n }\r\n\r\n private _getTranslateFunction(value: string): string {\r\n const dir = this._parent.direction;\r\n const translateFn = dir === 'up' || dir === 'down' ? 'translateY' : 'translateX';\r\n const sign = dir === 'down' || dir === 'right' ? '-' : '';\r\n\r\n return translateFn + '(' + sign + value + ')';\r\n }\r\n\r\n private _changeElementStyle(elem: HTMLElement, style: string, value: string): void {\r\n this._renderer.setStyle(elem, style, value);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial',\r\n template: `\r\n <div class=\"cmat-speed-dial-container\">\r\n <ng-content select=\"cmat-speed-dial-trigger\" />\r\n <ng-content select=\"cmat-speed-dial-actions\" />\r\n </div>\r\n `,\r\n styleUrl: './speed-dial.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialComponent implements OnDestroy, AfterContentInit {\r\n @Output() public readonly openChange = new EventEmitter<boolean>();\r\n @ContentChild(CmatSpeedDialActionsComponent) private _childActions!: CmatSpeedDialActionsComponent;\r\n\r\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n private readonly _document = inject(DOCUMENT);\r\n\r\n private _isInitialized = false;\r\n private _direction: Direction = 'up';\r\n private _open = false;\r\n private _animationMode: AnimationMode = 'fling';\r\n private _fixed = false;\r\n private _documentClickUnlistener: VoidFunction | null = null;\r\n private _openChangeTimeoutId: number | null = null;\r\n private _dialOpened = signal(false);\r\n\r\n @Input()\r\n public get fixed(): boolean {\r\n return this._fixed;\r\n }\r\n\r\n public set fixed(fixed: boolean) {\r\n this._fixed = fixed;\r\n this._processOutsideClickState();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @HostBinding('class.dial-opened')\r\n public get dialOpened(): boolean {\r\n return this._dialOpened();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n public get open(): boolean {\r\n return this._open;\r\n }\r\n\r\n public set open(open: boolean) {\r\n const previousOpen = this._open;\r\n this._open = open;\r\n this._dialOpened.set(this._open);\r\n\r\n if (previousOpen !== this._open) {\r\n if (this._openChangeTimeoutId !== null) {\r\n clearTimeout(this._openChangeTimeoutId);\r\n }\r\n\r\n this._openChangeTimeoutId = window.setTimeout(() => {\r\n this._openChangeTimeoutId = null;\r\n this.openChange.emit(this._open);\r\n });\r\n if (this._isInitialized) {\r\n this.setActionsVisibility();\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n public get direction(): Direction {\r\n return this._direction;\r\n }\r\n\r\n public set direction(direction: Direction) {\r\n const previousDirection = this._direction;\r\n this._direction = direction;\r\n if (previousDirection !== this.direction) {\r\n this._setElementClass(previousDirection, false);\r\n this._setElementClass(this.direction, true);\r\n\r\n if (this._isInitialized) {\r\n this.setActionsVisibility();\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n public get animationMode(): AnimationMode {\r\n return this._animationMode;\r\n }\r\n\r\n public set animationMode(animationMode: AnimationMode) {\r\n const previousAnimationMode = this._animationMode;\r\n this._animationMode = animationMode;\r\n if (previousAnimationMode !== this._animationMode) {\r\n this._setElementClass(previousAnimationMode, false);\r\n this._setElementClass(this.animationMode, true);\r\n\r\n if (this._isInitialized) {\r\n window.setTimeout(() => {\r\n this.open = false;\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this._isInitialized = true;\r\n this.setActionsVisibility();\r\n this._setElementClass(this.direction, true);\r\n this._setElementClass(this.animationMode, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsetDocumentClickListener();\r\n if (this._openChangeTimeoutId !== null) {\r\n clearTimeout(this._openChangeTimeoutId);\r\n this._openChangeTimeoutId = null;\r\n }\r\n }\r\n\r\n public toggle(): void {\r\n this.open = !this.open;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @HostListener('click')\r\n public onClick(): void {\r\n if (!this.fixed && this.open) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n public setActionsVisibility(): void {\r\n if (!this._childActions) {\r\n return;\r\n }\r\n if (this.open) {\r\n this._childActions.show();\r\n } else {\r\n this._childActions.hide();\r\n }\r\n this._processOutsideClickState();\r\n }\r\n\r\n private _setElementClass(elemClass: string, isAdd: boolean): void {\r\n const finalClass = `dial-${elemClass}`;\r\n if (isAdd) {\r\n this._renderer.addClass(this._elementRef.nativeElement, finalClass);\r\n } else {\r\n this._renderer.removeClass(this._elementRef.nativeElement, finalClass);\r\n }\r\n }\r\n\r\n private _processOutsideClickState(): void {\r\n if (!this.fixed && this.open) {\r\n this._setDocumentClickListener();\r\n } else {\r\n this._unsetDocumentClickListener();\r\n }\r\n }\r\n\r\n private _setDocumentClickListener(): void {\r\n this._documentClickUnlistener ??= this._renderer.listen(this._document, 'click', () => {\r\n this.open = false;\r\n });\r\n }\r\n\r\n private _unsetDocumentClickListener(): void {\r\n if (this._documentClickUnlistener) {\r\n this._documentClickUnlistener();\r\n this._documentClickUnlistener = null;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-speed-dial-trigger',\r\n template: ' <ng-content select=\"[matFab]\" />',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatSpeedDialTriggerComponent {\r\n @Input() public spin = false;\r\n private readonly _parent = inject(CmatSpeedDialComponent);\r\n\r\n @HostBinding('class.dial-spin')\r\n public get sp(): boolean {\r\n return this.spin;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event): void {\r\n if (!this._parent.fixed) {\r\n this._parent.toggle();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-timeline.mjs","sources":["../../../projects/cmat/components/timeline/timeline-item/timeline-item.component.ts","../../../projects/cmat/components/timeline/timeline-item/timeline-item.component.html","../../../projects/cmat/components/timeline/timeline.component.ts","../../../projects/cmat/components/timeline/timeline.component.html","../../../projects/cmat/components/timeline/cmat-components-timeline.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@Directive({\r\n selector: 'ng-template[cmatTimelineItemIcon]'\r\n})\r\nexport class CmatTimelineItemIconDirective {\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'ng-template[cmatTimelineItemLabel]'\r\n})\r\nexport class CmatTimelineItemLabelDirective {\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'cmat-timeline-item',\r\n templateUrl: './timeline-item.component.html',\r\n styleUrls: ['./timeline-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTimelineItem',\r\n imports: [MatIconModule, NgTemplateOutlet]\r\n})\r\nexport class CmatTimelineItemComponent {\r\n\r\n @Input()\r\n label?: string | null;\r\n\r\n @Input()\r\n icon?: string | null;\r\n\r\n @Input()\r\n svgIcon?: string | null;\r\n\r\n @Input()\r\n iconUrl?: string | null;\r\n\r\n @HostBinding('class') class='cmat-timeline-item';\r\n \r\n @ContentChild(CmatTimelineItemIconDirective, { read: TemplateRef })\r\n customIconTpl?: TemplateRef<any>;\r\n\r\n @ContentChild(CmatTimelineItemLabelDirective, { read: TemplateRef })\r\n customLabelTpl?: TemplateRef<any>;\r\n\r\n @ViewChild('contentEl', { static: true })\r\n private _contentEl!: ElementRef;\r\n\r\n @ViewChild('fillEl', { static: true })\r\n private _fillEl!: ElementRef;\r\n\r\n \r\n\r\n updateVerticalCenteredLayout(): void {\r\n this._fillEl.nativeElement.style.minWidth = this._contentEl.nativeElement.offsetWidth + 'px';\r\n this._fillEl.nativeElement.style.minHeight = 'unset';\r\n }\r\n\r\n updateHorizontalCenteredLayout(): void {\r\n this._fillEl.nativeElement.style.minHeight = this._contentEl.nativeElement.offsetHeight + 'px';\r\n this._fillEl.nativeElement.style.minWidth = 'unset';\r\n }\r\n\r\n}\r\n","<div #fillEl class=\"cmat-timeline-item-fill\"></div>\r\n\r\n<div class=\"cmat-timeline-item-timeline\">\r\n\r\n <ng-container *ngTemplateOutlet=\"customIconTpl ? customIconTpl : iconTpl\"></ng-container>\r\n\r\n <ng-template #iconTpl>\r\n @if (icon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\">{{ icon }}</mat-icon>\r\n } @else {\r\n @if (svgIcon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\r\n } @else {\r\n @if (iconUrl) {\r\n <img alt=\"icon\" class=\"cmat-timeline-item-icon\" [src]=\"iconUrl\" />\r\n }\r\n }\r\n }\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-container *ngTemplateOutlet=\"customLabelTpl ? customLabelTpl : labelTpl\"></ng-container>\r\n\r\n <ng-template #labelTpl>\r\n @if (label) {\r\n <div class=\"mat-caption cmat-timeline-item-label\">{{ label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <div class=\"cmat-timeline-item-line\"></div>\r\n\r\n</div>\r\n\r\n<div #contentEl class=\"cmat-timeline-item-content\">\r\n <ng-content></ng-content>\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, throttleTime } from 'rxjs/operators';\r\nimport { CmatTimelineItemComponent } from './timeline-item/timeline-item.component';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type CMAT_TIMELINE_POSITION = 'start' | 'end' | 'center' | 'center-alt';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type CMAT_TIMELINE_ORIENTATION = 'vertical' | 'horizontal';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-timeline',\r\n templateUrl: './timeline.component.html',\r\n styleUrls: ['./timeline.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cmatTimeLine',\r\n imports: []\r\n})\r\nexport class CmatTimelineComponent implements OnInit {\r\n @ContentChildren(CmatTimelineItemComponent)\r\n readonly items = new QueryList<CmatTimelineItemComponent>();\r\n readonly class = 'cmat-timeline';\r\n\r\n private _host = inject(ElementRef);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _reverse: boolean = false;\r\n private _position: CMAT_TIMELINE_POSITION = 'start';\r\n private _orientation: CMAT_TIMELINE_ORIENTATION = 'vertical';\r\n\r\n\r\n @HostBinding('class.cmat-timeline-start')\r\n get isStartPosition(): boolean {\r\n return this._position === 'start';\r\n }\r\n @HostBinding('class.cmat-timeline-end')\r\n get isEndPosition(): boolean {\r\n return this._position === 'end';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-center')\r\n get isCenterPosition(): boolean {\r\n return this._position === 'center';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-center-alt')\r\n get isCenterAltPosition(): boolean {\r\n return this._position === 'center-alt';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-vertical')\r\n get isVerticalOrientation(): boolean {\r\n return this._orientation === 'vertical';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-horizontal')\r\n get isHorizontalOrientation(): boolean {\r\n return this._orientation === 'horizontal';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-reverse')\r\n get isReverse(): boolean {\r\n return this._reverse;\r\n }\r\n\r\n @Input()\r\n set position(position: CMAT_TIMELINE_POSITION) {\r\n this._position = position;\r\n this.updateLayout();\r\n }\r\n\r\n @Input()\r\n set orientation(orientation: CMAT_TIMELINE_ORIENTATION) {\r\n this._orientation = orientation;\r\n this.updateLayout();\r\n }\r\n\r\n @Input()\r\n set reverse(reverse: boolean) {\r\n this._reverse = reverse;\r\n this.updateLayout();\r\n }\r\n\r\n ngOnInit(): void {\r\n new Observable((observer) => {\r\n const ro = new ResizeObserver(entries => observer.next(entries));\r\n ro.observe(this._host.nativeElement);\r\n\r\n return (): void => {\r\n ro.unobserve(this._host.nativeElement);\r\n ro.disconnect();\r\n };\r\n }).pipe(\r\n throttleTime(10),\r\n tap(() => this.updateLayout()),\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe();\r\n }\r\n\r\n updateLayout(): void {\r\n if (this.isCenterPosition || this.isCenterAltPosition) {\r\n this.items.forEach((item) => {\r\n this.isVerticalOrientation ? item.updateVerticalCenteredLayout() : item.updateHorizontalCenteredLayout();\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"cmat-timeline-content\">\r\n <ng-content></ng-content>\r\n</div>\r\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":"cmat-components-timeline.mjs","sources":["../../../projects/cmat/components/timeline/timeline-item/timeline-item.component.ts","../../../projects/cmat/components/timeline/timeline-item/timeline-item.component.html","../../../projects/cmat/components/timeline/timeline.component.ts","../../../projects/cmat/components/timeline/timeline.component.html","../../../projects/cmat/components/timeline/cmat-components-timeline.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@Directive({\r\n selector: 'ng-template[cmatTimelineItemIcon]'\r\n})\r\nexport class CmatTimelineItemIconDirective {\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'ng-template[cmatTimelineItemLabel]'\r\n})\r\nexport class CmatTimelineItemLabelDirective {\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'cmat-timeline-item',\r\n templateUrl: './timeline-item.component.html',\r\n styleUrls: ['./timeline-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatTimelineItem',\r\n imports: [MatIconModule, NgTemplateOutlet]\r\n})\r\nexport class CmatTimelineItemComponent {\r\n\r\n @Input()\r\n label?: string | null;\r\n\r\n @Input()\r\n icon?: string | null;\r\n\r\n @Input()\r\n svgIcon?: string | null;\r\n\r\n @Input()\r\n iconUrl?: string | null;\r\n\r\n @HostBinding('class') class='cmat-timeline-item';\r\n \r\n @ContentChild(CmatTimelineItemIconDirective, { read: TemplateRef })\r\n customIconTpl?: TemplateRef<unknown>;\r\n\r\n @ContentChild(CmatTimelineItemLabelDirective, { read: TemplateRef })\r\n customLabelTpl?: TemplateRef<unknown>;\r\n\r\n @ViewChild('contentEl', { static: true })\r\n private _contentEl!: ElementRef<HTMLElement>;\r\n\r\n @ViewChild('fillEl', { static: true })\r\n private _fillEl!: ElementRef<HTMLElement>;\r\n\r\n \r\n\r\n updateVerticalCenteredLayout(): void {\r\n this._fillEl.nativeElement.style.minWidth = this._contentEl.nativeElement.offsetWidth + 'px';\r\n this._fillEl.nativeElement.style.minHeight = 'unset';\r\n }\r\n\r\n updateHorizontalCenteredLayout(): void {\r\n this._fillEl.nativeElement.style.minHeight = this._contentEl.nativeElement.offsetHeight + 'px';\r\n this._fillEl.nativeElement.style.minWidth = 'unset';\r\n }\r\n\r\n}\r\n","<div #fillEl class=\"cmat-timeline-item-fill\"></div>\r\n\r\n<div class=\"cmat-timeline-item-timeline\">\r\n\r\n <ng-container *ngTemplateOutlet=\"customIconTpl ? customIconTpl : iconTpl\"></ng-container>\r\n\r\n <ng-template #iconTpl>\r\n @if (icon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\">{{ icon }}</mat-icon>\r\n } @else {\r\n @if (svgIcon) {\r\n <mat-icon class=\"cmat-timeline-item-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\r\n } @else {\r\n @if (iconUrl) {\r\n <img alt=\"icon\" class=\"cmat-timeline-item-icon\" [src]=\"iconUrl\" />\r\n }\r\n }\r\n }\r\n </ng-template>\r\n\r\n\r\n\r\n <ng-container *ngTemplateOutlet=\"customLabelTpl ? customLabelTpl : labelTpl\"></ng-container>\r\n\r\n <ng-template #labelTpl>\r\n @if (label) {\r\n <div class=\"mat-caption cmat-timeline-item-label\">{{ label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <div class=\"cmat-timeline-item-line\"></div>\r\n\r\n</div>\r\n\r\n<div #contentEl class=\"cmat-timeline-item-content\">\r\n <ng-content></ng-content>\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n HostBinding,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, throttleTime } from 'rxjs/operators';\r\nimport { CmatTimelineItemComponent } from './timeline-item/timeline-item.component';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type CMAT_TIMELINE_POSITION = 'start' | 'end' | 'center' | 'center-alt';\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport type CMAT_TIMELINE_ORIENTATION = 'vertical' | 'horizontal';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-timeline',\r\n templateUrl: './timeline.component.html',\r\n styleUrls: ['./timeline.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cmatTimeLine',\r\n imports: []\r\n})\r\nexport class CmatTimelineComponent implements OnInit {\r\n @ContentChildren(CmatTimelineItemComponent)\r\n readonly items = new QueryList<CmatTimelineItemComponent>();\r\n readonly class = 'cmat-timeline';\r\n\r\n private _host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _reverse: boolean = false;\r\n private _position: CMAT_TIMELINE_POSITION = 'start';\r\n private _orientation: CMAT_TIMELINE_ORIENTATION = 'vertical';\r\n\r\n\r\n @HostBinding('class.cmat-timeline-start')\r\n get isStartPosition(): boolean {\r\n return this._position === 'start';\r\n }\r\n @HostBinding('class.cmat-timeline-end')\r\n get isEndPosition(): boolean {\r\n return this._position === 'end';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-center')\r\n get isCenterPosition(): boolean {\r\n return this._position === 'center';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-center-alt')\r\n get isCenterAltPosition(): boolean {\r\n return this._position === 'center-alt';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-vertical')\r\n get isVerticalOrientation(): boolean {\r\n return this._orientation === 'vertical';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-horizontal')\r\n get isHorizontalOrientation(): boolean {\r\n return this._orientation === 'horizontal';\r\n }\r\n\r\n @HostBinding('class.cmat-timeline-reverse')\r\n get isReverse(): boolean {\r\n return this._reverse;\r\n }\r\n\r\n @Input()\r\n set position(position: CMAT_TIMELINE_POSITION) {\r\n this._position = position;\r\n this.updateLayout();\r\n }\r\n\r\n @Input()\r\n set orientation(orientation: CMAT_TIMELINE_ORIENTATION) {\r\n this._orientation = orientation;\r\n this.updateLayout();\r\n }\r\n\r\n @Input()\r\n set reverse(reverse: boolean) {\r\n this._reverse = reverse;\r\n this.updateLayout();\r\n }\r\n\r\n ngOnInit(): void {\r\n new Observable<ResizeObserverEntry[]>((observer) => {\r\n const ro = new ResizeObserver(entries => observer.next(entries));\r\n ro.observe(this._host.nativeElement);\r\n\r\n return (): void => {\r\n ro.unobserve(this._host.nativeElement);\r\n ro.disconnect();\r\n };\r\n }).pipe(\r\n throttleTime(10),\r\n tap(() => this.updateLayout()),\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe();\r\n }\r\n\r\n updateLayout(): void {\r\n if (this.isCenterPosition || this.isCenterAltPosition) {\r\n this.items.forEach((item) => {\r\n this.isVerticalOrientation ? item.updateVerticalCenteredLayout() : item.updateHorizontalCenteredLayout();\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"cmat-timeline-content\">\r\n <ng-content></ng-content>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}