cmat 0.0.87 → 0.0.88

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 (228) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +26 -34
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +467 -556
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +270 -259
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +200 -116
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +85 -38
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-color-picker.mjs +841 -0
  16. package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
  17. package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
  18. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  19. package/fesm2022/cmat-components-data-picker.mjs +996 -0
  20. package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
  21. package/fesm2022/cmat-components-date-range.mjs +310 -264
  22. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  23. package/fesm2022/cmat-components-date-time-display.mjs +16 -20
  24. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  25. package/fesm2022/cmat-components-drawer.mjs +120 -137
  26. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  27. package/fesm2022/cmat-components-empty-state.mjs +17 -24
  28. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  29. package/fesm2022/cmat-components-file-preview.mjs +18 -24
  30. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  31. package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
  32. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  33. package/fesm2022/cmat-components-form-actions.mjs +12 -12
  34. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  35. package/fesm2022/cmat-components-fullscreen.mjs +10 -10
  36. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  37. package/fesm2022/cmat-components-highlight.mjs +48 -41
  38. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  39. package/fesm2022/cmat-components-image-viewer.mjs +104 -107
  40. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  41. package/fesm2022/cmat-components-inline-loading.mjs +12 -15
  42. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  43. package/fesm2022/cmat-components-json-editor.mjs +118 -75
  44. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  45. package/fesm2022/cmat-components-knob-input.mjs +196 -178
  46. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  47. package/fesm2022/cmat-components-masonry.mjs +26 -41
  48. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  49. package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
  50. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  51. package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
  52. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  53. package/fesm2022/cmat-components-navigation.mjs +467 -450
  54. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  55. package/fesm2022/cmat-components-opt-input.mjs +143 -132
  56. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  57. package/fesm2022/cmat-components-org-chart.mjs +68 -83
  58. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  59. package/fesm2022/cmat-components-page-header.mjs +18 -24
  60. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  61. package/fesm2022/cmat-components-pagination.mjs +220 -136
  62. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  63. package/fesm2022/cmat-components-password-strength.mjs +262 -215
  64. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  65. package/fesm2022/cmat-components-popover.mjs +227 -195
  66. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  67. package/fesm2022/cmat-components-progress-bar.mjs +15 -34
  68. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  69. package/fesm2022/cmat-components-qrcode.mjs +95 -88
  70. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  71. package/fesm2022/cmat-components-rating.mjs +70 -67
  72. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  73. package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
  74. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-search.mjs +190 -159
  76. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  77. package/fesm2022/cmat-components-select-table.mjs +276 -213
  78. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  79. package/fesm2022/cmat-components-select-tree.mjs +178 -128
  80. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  81. package/fesm2022/cmat-components-skeleton.mjs +44 -28
  82. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  83. package/fesm2022/cmat-components-speed-dial.mjs +107 -163
  84. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  85. package/fesm2022/cmat-components-status-tag.mjs +29 -36
  86. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  87. package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
  88. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  89. package/fesm2022/cmat-components-timeline.mjs +111 -118
  90. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  91. package/fesm2022/cmat-components-toast.mjs +65 -66
  92. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  93. package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
  94. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  95. package/fesm2022/cmat-components-treetable.mjs +32 -39
  96. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  97. package/fesm2022/cmat-components-upload.mjs +186 -176
  98. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
  100. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
  102. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  104. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
  106. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  107. package/fesm2022/cmat-directives-debounce.mjs +16 -19
  108. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  109. package/fesm2022/cmat-directives-digit-only.mjs +60 -69
  110. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  111. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  112. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  113. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
  114. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  115. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  116. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  118. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  119. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  120. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  122. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  123. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  124. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  125. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  126. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  127. package/fesm2022/cmat-pipes-secure.mjs +7 -13
  128. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  129. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  130. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  131. package/fesm2022/cmat-services-alert.mjs +26 -27
  132. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  133. package/fesm2022/cmat-services-config.mjs +14 -23
  134. package/fesm2022/cmat-services-config.mjs.map +1 -1
  135. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  136. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  137. package/fesm2022/cmat-services-data.mjs +6 -10
  138. package/fesm2022/cmat-services-data.mjs.map +1 -1
  139. package/fesm2022/cmat-services-export-as.mjs +3 -3
  140. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  141. package/fesm2022/cmat-services-loading.mjs +30 -47
  142. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  143. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  144. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  145. package/fesm2022/cmat-services-media-watcher.mjs +43 -34
  146. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  147. package/fesm2022/cmat-services-platform.mjs +3 -3
  148. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  149. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  150. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  151. package/fesm2022/cmat-services-title.mjs +3 -3
  152. package/fesm2022/cmat-services-title.mjs.map +1 -1
  153. package/fesm2022/cmat-services-translation.mjs +11 -11
  154. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  155. package/fesm2022/cmat-services-utils.mjs +3 -3
  156. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  157. package/fesm2022/cmat.mjs +9228 -7507
  158. package/fesm2022/cmat.mjs.map +1 -1
  159. package/icons/material-icons/heroicons-outline.svg +3 -0
  160. package/icons/material-icons/heroicons-solid.svg +3 -0
  161. package/package.json +10 -1
  162. package/styles/components/bundle.scss +21 -0
  163. package/styles/overrides/angular-material.scss +22 -1
  164. package/tailwind/plugins/theming.js +183 -183
  165. package/types/cmat-components-breadcrumb.d.ts +40 -37
  166. package/types/cmat-components-card.d.ts +11 -13
  167. package/types/cmat-components-carousel.d.ts +87 -113
  168. package/types/cmat-components-cascade.d.ts +84 -65
  169. package/types/cmat-components-chip-input.d.ts +29 -24
  170. package/types/cmat-components-code-editor.d.ts +28 -12
  171. package/types/cmat-components-color-picker.d.ts +236 -0
  172. package/types/cmat-components-custom-formly.d.ts +316 -184
  173. package/types/cmat-components-data-picker.d.ts +372 -0
  174. package/types/cmat-components-date-range.d.ts +31 -36
  175. package/types/cmat-components-date-time-display.d.ts +8 -8
  176. package/types/cmat-components-drawer.d.ts +30 -32
  177. package/types/cmat-components-empty-state.d.ts +9 -10
  178. package/types/cmat-components-file-preview.d.ts +9 -9
  179. package/types/cmat-components-filter-toolbar.d.ts +15 -15
  180. package/types/cmat-components-form-actions.d.ts +5 -5
  181. package/types/cmat-components-fullscreen.d.ts +5 -5
  182. package/types/cmat-components-highlight.d.ts +13 -14
  183. package/types/cmat-components-image-viewer.d.ts +29 -33
  184. package/types/cmat-components-inline-loading.d.ts +6 -6
  185. package/types/cmat-components-json-editor.d.ts +15 -17
  186. package/types/cmat-components-knob-input.d.ts +58 -55
  187. package/types/cmat-components-masonry.d.ts +9 -12
  188. package/types/cmat-components-material-color-picker.d.ts +16 -21
  189. package/types/cmat-components-material-datetimepicker.d.ts +174 -216
  190. package/types/cmat-components-navigation.d.ts +34 -39
  191. package/types/cmat-components-opt-input.d.ts +35 -33
  192. package/types/cmat-components-org-chart.d.ts +8 -9
  193. package/types/cmat-components-page-header.d.ts +9 -9
  194. package/types/cmat-components-pagination.d.ts +36 -40
  195. package/types/cmat-components-password-strength.d.ts +58 -64
  196. package/types/cmat-components-popover.d.ts +22 -32
  197. package/types/cmat-components-progress-bar.d.ts +7 -10
  198. package/types/cmat-components-qrcode.d.ts +22 -22
  199. package/types/cmat-components-rating.d.ts +17 -19
  200. package/types/cmat-components-rich-text-editor.d.ts +11 -12
  201. package/types/cmat-components-select-search.d.ts +48 -36
  202. package/types/cmat-components-select-table.d.ts +38 -34
  203. package/types/cmat-components-select-tree.d.ts +17 -15
  204. package/types/cmat-components-skeleton.d.ts +27 -10
  205. package/types/cmat-components-speed-dial.d.ts +24 -33
  206. package/types/cmat-components-status-tag.d.ts +19 -9
  207. package/types/cmat-components-table-toolbar.d.ts +7 -7
  208. package/types/cmat-components-timeline.d.ts +33 -34
  209. package/types/cmat-components-toast.d.ts +26 -30
  210. package/types/cmat-components-transfer-picker.d.ts +51 -56
  211. package/types/cmat-components-treetable.d.ts +12 -13
  212. package/types/cmat-components-upload.d.ts +33 -38
  213. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  214. package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
  215. package/types/cmat-directives-arrow-cursor.d.ts +18 -20
  216. package/types/cmat-directives-data-exporter.d.ts +10 -10
  217. package/types/cmat-directives-debounce.d.ts +5 -5
  218. package/types/cmat-directives-digit-only.d.ts +13 -13
  219. package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
  220. package/types/cmat-pipes-secure.d.ts +1 -3
  221. package/types/cmat-services-alert.d.ts +11 -12
  222. package/types/cmat-services-config.d.ts +2 -7
  223. package/types/cmat-services-confirmation.d.ts +2 -2
  224. package/types/cmat-services-data.d.ts +0 -1
  225. package/types/cmat-services-loading.d.ts +14 -22
  226. package/types/cmat-services-media-watcher.d.ts +5 -5
  227. package/types/cmat-services-translation.d.ts +4 -5
  228. package/types/cmat.d.ts +2167 -1746
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-select-table.mjs","sources":["../../../projects/cmat/components/select-table/select-table.component.ts","../../../projects/cmat/components/select-table/select-table.component.html","../../../projects/cmat/components/select-table/cmat-components-select-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges, ViewChild, ViewChildren, ViewEncapsulation, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatOption, MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatSort, MatSortModule, Sort, SortDirection } from '@angular/material/sort';\r\nimport { MatTable, MatTableModule } from '@angular/material/table';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { isArray, isNil, isNumber, isString, isUndefined } from 'lodash-es';\r\nimport { debounceTime, merge, Subject } from 'rxjs';\r\nimport { CmatSelectTableColumn, CmatSelectTableDataSource, CmatSelectTableFilter, CmatSelectTableRow } from './select-table.type';\r\n\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: ['./select-table.component.scss'],\r\n exportAs: 'cmatSelectTable',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTableComponent }],\r\n imports: [CmatSelectSearchComponent, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, CommonModule,\r\n MatIconModule, MatTableModule, MatInputModule, MatSortModule, CmatDigitOnlyDirective\r\n ]\r\n})\r\nexport class CmatSelectTableComponent implements MatFormFieldControl<CmatSelectTableRow[] | CmatSelectTableRow | null>, ControlValueAccessor, AfterViewInit, OnDestroy, OnChanges {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-table-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTableDataSource<CmatSelectTableRow>;\r\n\r\n @Input() noEntriesFoundLabel:string = '无结果';\r\n\r\n @Input() showNoFoundLabel: boolean = true;\r\n\r\n @Input() isPhone: boolean = false;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() overallSearchVisible: boolean;\r\n\r\n @Input() resetSortOnOpen: boolean;\r\n\r\n @Input() resetFiltersOnOpen: boolean;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTableRow[]) => string;\r\n\r\n @Input() triggerLabelSort: Sort;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() canNull: boolean;\r\n\r\n @Input() defaultSort: Sort;\r\n\r\n @Input() resetOptionAction: () => void;\r\n\r\n @Input() keyParam: string = 'id';\r\n @Input() compareWith: (o1: CmatSelectTableRow | null, o2: CmatSelectTableRow | 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 @Output() closed = new EventEmitter<boolean>();\r\n\r\n @ViewChild(CmatSelectSearchComponent, { static: false }) private _matSelectSearch: CmatSelectSearchComponent;\r\n\r\n @ViewChild(MatSort, { static: false }) private _sort: MatSort;\r\n\r\n @ViewChild(MatTable, { static: false }) private _table: MatTable<CmatSelectTableRow>;\r\n\r\n @ViewChildren(MatOption) private _matOptions: QueryList<MatOption>;\r\n\r\n readonly tableDataSource = signal<CmatSelectTableRow[]>([]);\r\n\r\n readonly tableColumns = signal<string[]>([]);\r\n\r\n tableColumnsMap: Map<string, CmatSelectTableColumn>;\r\n\r\n private readonly _rowById = new Map<string | number, CmatSelectTableRow>();\r\n private _columnKeys: string[] = [];\r\n\r\n filteredOutRows: Record<string, CmatSelectTableRow>;\r\n\r\n completeRowList: CmatSelectTableRow[] = [];\r\n\r\n readonly overallSearchVisibleState = signal(false);\r\n\r\n overallFilterControl: FormControl<string | null> = new FormControl<string | null>('');\r\n selectControl: FormControl = new FormControl();\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 private _filterControls: FormGroup;\r\n\r\n private _nullRow: CmatSelectTableRow = { id: null };\r\n\r\n private _completeValueList: (string | number | null | undefined)[] = [];\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n this.tableColumnsMap = new Map();\r\n this._filterControls = new FormGroup({});\r\n }\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n\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\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 ngAfterViewInit(): void {\r\n let panelClass: string[] = ['overflow-hidden','cmat-select-search-table-panel'];\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 panelClassObject = this._matSelect.panelClass as Record<string, boolean>;\r\n panelClass.forEach((i) => {\r\n panelClassObject[i] = true;\r\n });\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n merge(...[\r\n this._sort.sortChange,\r\n this._filterControls.valueChanges,\r\n this.overallFilterControl.valueChanges\r\n ])\r\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(100))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTableRow[] = [...((this.dataSource || { data: [] }).data || [])];\r\n if (this.addNullRow()) {\r\n dataClone.unshift(this._nullRow);\r\n }\r\n\r\n if (this.overallSearchEnabled && this.overallSearchVisibleState()) {\r\n this._applyOverallFilter(dataClone);\r\n } else {\r\n this._applyColumnLevelFilters(dataClone);\r\n }\r\n\r\n if (!this._sort.active && !isNil(this.defaultSort) && this.defaultSort.active) {\r\n this._sort.active = this.defaultSort.active;\r\n this._sort.direction = this.defaultSort.direction;\r\n }\r\n\r\n this.tableDataSource.set(!this._sort.active ?\r\n dataClone : this._sortData(dataClone, this._sort.active, this._sort.direction));\r\n });\r\n\r\n this._matOptions.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n const options: Record<string, MatOption> = {};\r\n\r\n this._matOptions\r\n .toArray()\r\n .filter(option => !isNil(option) && !isNil(option.value) && !option._getHostElement().classList.contains('contains-cmat-select-search'))\r\n .forEach((option) => {\r\n const row = option.value as CmatSelectTableRow;\r\n options[`${row.id}`] = option;\r\n });\r\n const tableOptions = this._buildTableOptions(options);\r\n this._matSelect?.options.reset(this._matSelectSearch ? [this._matOptions.first, ...tableOptions] : tableOptions);\r\n\r\n\r\n try {\r\n this._matSelect?.options.notifyOnChanges();\r\n\r\n const value = this.multiple\r\n ? (this.completeRowList.length > 0 ? [...this.completeRowList] : null)\r\n : (this.completeRowList.length > 0 ? { ...this.completeRowList[0] } : null);\r\n\r\n this._matSelect.writeValue(value);\r\n this._matSelect._onChange(value);\r\n } catch {\r\n return;\r\n }\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 private _value: CmatSelectTableRow[] | CmatSelectTableRow | null = null;\r\n\r\n @Input()\r\n get value(): CmatSelectTableRow[] | CmatSelectTableRow | null {\r\n return this._value;\r\n }\r\n set value(value: CmatSelectTableRow[] | CmatSelectTableRow | null) {\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\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: CmatSelectTableRow[] | CmatSelectTableRow | null) => void): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => object): void {\r\n this._onTouchedChange = fn;\r\n this._matSelect?.registerOnTouched(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 as HTMLElement).contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: CmatSelectTableRow[] | CmatSelectTableRow | null): void {\r\n this._init(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isNil(changes.resetFiltersOnOpen) && changes.resetFiltersOnOpen.currentValue !== false) {\r\n this._resetFilters();\r\n }\r\n\r\n if (!isNil(changes.dataSource) && !isNil(changes.dataSource.currentValue)) {\r\n const currentDataSource = changes.dataSource.currentValue as CmatSelectTableDataSource<CmatSelectTableRow>;\r\n\r\n if (!isArray(currentDataSource.data)) {\r\n return;\r\n }\r\n\r\n const columns = currentDataSource.columns;\r\n const data = currentDataSource.data;\r\n\r\n this._rowById.clear();\r\n this._columnKeys = columns.map((column: CmatSelectTableColumn) => column.key);\r\n this.tableDataSource.set([...data]);\r\n if (this.addNullRow()) {\r\n this.tableDataSource.update(value => [this._nullRow, ...value]);\r\n }\r\n this.tableColumns.set(['_selection', ...this._columnKeys]);\r\n this.tableColumnsMap.clear();\r\n columns.forEach((column: CmatSelectTableColumn) => this.tableColumnsMap.set(column.key, column));\r\n data.forEach((row: CmatSelectTableRow) => {\r\n if (!isNil(row?.id)) {\r\n this._rowById.set(row.id, row);\r\n }\r\n });\r\n\r\n if (this.tableDataSource().length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n emulateMatOptionClick(event: MouseEvent): void {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n let rowElement: HTMLElement | null = event.target;\r\n while (rowElement != null && rowElement instanceof HTMLElement && rowElement.tagName.toLowerCase() !== 'tr') {\r\n rowElement = rowElement.parentElement;\r\n }\r\n if (rowElement === null) {\r\n return;\r\n }\r\n const childOption: HTMLElement | null = rowElement.querySelector('mat-option');\r\n if (!childOption) {\r\n return;\r\n }\r\n\r\n if (event.target.tagName.toLowerCase() != 'mat-pseudo-checkbox') {\r\n childOption.click();\r\n }\r\n\r\n const option = this._getMatOptionById(childOption.id);\r\n\r\n if (!option) {\r\n return;\r\n }\r\n\r\n if (this.multiple && this._matSelect.panelOpen) {\r\n this._updateCompleteRowList(option.value as CmatSelectTableRow, option.selected);\r\n }\r\n\r\n if (!this.multiple) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (option.value) {\r\n const row = option.value as CmatSelectTableRow;\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n }\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n if (this.resetFiltersOnOpen !== false || (!this._matOptions.length && this.overallSearchEnabled) || (this.overallSearchEnabled && this._matOptions.length === 1)) {\r\n this._resetFilters();\r\n }\r\n this.overallSearchVisibleState.set(!!this.overallSearchVisible);\r\n if (this.resetSortOnOpen !== false) {\r\n this._sort.sort({ id: '', start: 'asc', disableClear: false });\r\n }\r\n if (!opened) {\r\n this.value = this._getCommittedValue();\r\n\r\n if (this.value === null) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n this._checkAndResetSelection();\r\n }\r\n\r\n this._syncMatSelectValue(this.value);\r\n\r\n this.closed.emit(!opened);\r\n return;\r\n }\r\n\r\n const table = this._table as unknown as { _headerRowDefChanged: boolean };\r\n table._headerRowDefChanged = true;\r\n\r\n setTimeout(() => this._expandPanelForTableRows(), 1);\r\n }\r\n filterFormControl(key: string): FormControl {\r\n if (!this._filterControls.contains(key)) {\r\n this._filterControls.registerControl(key, new FormControl(''));\r\n }\r\n return this._filterControls.get(key) as FormControl;\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTableRow[]): string {\r\n const rows = this._getTriggerRows(value);\r\n\r\n return rows.map(row => this._resolveTriggerLabel(row)).join(', ');\r\n }\r\n\r\n getTriggerLabel(): string {\r\n return this.customTriggerLabelFn?.(this.completeRowList) ?? this.simpleTriggerLabelFn(this.completeRowList);\r\n }\r\n\r\n toggleOverallSearch(): void {\r\n this.overallSearchVisibleState.update(value => !value);\r\n this._resetFilters();\r\n if (this.overallSearchVisibleState()) {\r\n setTimeout(() => this._matSelectSearch.focus());\r\n }\r\n }\r\n\r\n addNullRow(): boolean {\r\n return !this.multiple && this.canNull;\r\n }\r\n\r\n get hasNullRow(): boolean {\r\n return this.addNullRow();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: CmatSelectTableRow[] | CmatSelectTableRow | null) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => void = () => { };\r\n\r\n private _init(value: CmatSelectTableRow[] | CmatSelectTableRow | null): void {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (value) {\r\n if (this.multiple && Array.isArray(value)) {\r\n value.forEach((v: CmatSelectTableRow) => this._updateCompleteRowList(v, true));\r\n } else if (!this.multiple) {\r\n this._updateCompleteRowList(value as CmatSelectTableRow, true)\r\n }\r\n }\r\n\r\n this.value = this.completeRowList.length > 0 ? [... this.completeRowList] : value;\r\n\r\n if (this._matSelect) {\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n\r\n }\r\n\r\n private _updateCompleteRowList(value: CmatSelectTableRow, selected: boolean): void {\r\n if (isNil(value)) {\r\n return;\r\n }\r\n if (selected) {\r\n const rowId = value.id;\r\n\r\n if (isNil(rowId)) {\r\n return;\r\n }\r\n\r\n const row = this._rowById.get(rowId);\r\n\r\n if (!row) {\r\n return;\r\n }\r\n\r\n const exists = this.completeRowList.some(item => item[this.keyParam] === row[this.keyParam]);\r\n if (!exists) {\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n } else {\r\n const rowIndex = this.completeRowList.findIndex(i => i.id === value.id);\r\n if (rowIndex > -1)\r\n this.completeRowList.splice(rowIndex, 1);\r\n\r\n const valueIndex = this._completeValueList.findIndex(i => i === value.id);\r\n if (valueIndex > -1)\r\n this._completeValueList.splice(valueIndex, 1);\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n const filters: Record<string, { filter: CmatSelectTableFilter | undefined; value: unknown }> = {};\r\n Object.keys(this._filterControls.controls)\r\n .filter((key) => {\r\n const column = this.tableColumnsMap.get(key);\r\n\r\n return !isNil(column?.filter) && column.filter.enabled !== false;\r\n })\r\n .filter((key) => {\r\n const filterControl = this._filterControls.get(key) as FormControl<unknown> | null;\r\n const value = filterControl?.value;\r\n\r\n return !isNil(value)\r\n && ((isArray(value) && value.length > 0)\r\n || (typeof value === 'string' && value.trim().length > 0)\r\n || (typeof value === 'number' && `${value}`.trim().length > 0));\r\n })\r\n .forEach((key) => {\r\n const column = this.tableColumnsMap.get(key);\r\n const filterControl = this._filterControls.get(key);\r\n\r\n filters[key] = {\r\n filter: column?.filter,\r\n value: filterControl?.value\r\n };\r\n });\r\n const filterKeys: string[] = Object.keys(filters);\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let k = 0; k < filterKeys.length; k++) {\r\n const filterKey: string = filterKeys[k];\r\n const row: CmatSelectTableRow = data[i];\r\n const filter = filters[filterKey];\r\n\r\n if (isNil(row)) {\r\n this._removeFilteredRow(data, i);\r\n break;\r\n }\r\n\r\n if (!this._matchesColumnFilter(row, filterKey, filter)) {\r\n this._removeFilteredRow(data, i);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _applyOverallFilter(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n if (isNil(this.overallFilterControl.value)) {\r\n return;\r\n }\r\n const filterValueLC: string = (this.overallFilterControl.value ?? '').toLowerCase();\r\n if (filterValueLC.trim().length === 0) {\r\n return;\r\n }\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n const row: CmatSelectTableRow = data[i];\r\n let rowShouldBeFiltered = true;\r\n const rowKeys = this._columnKeys;\r\n\r\n for (let j = rowKeys.length - 1; j >= 0; j--) {\r\n const key: string = rowKeys[j];\r\n const cellValue = (row as Record<string, unknown>)[key];\r\n if (isNil(cellValue)) {\r\n continue;\r\n }\r\n const cellValueLC: string = typeof cellValue === 'string'\r\n ? cellValue.toLowerCase()\r\n : typeof cellValue === 'number' || typeof cellValue === 'boolean' || typeof cellValue === 'bigint'\r\n ? String(cellValue).toLowerCase()\r\n : '';\r\n if (cellValueLC.includes(filterValueLC)) {\r\n rowShouldBeFiltered = false;\r\n break;\r\n }\r\n }\r\n if (rowShouldBeFiltered) {\r\n this._removeFilteredRow(data, i);\r\n }\r\n }\r\n }\r\n\r\n private _resetFilters(): void {\r\n this.overallFilterControl.setValue('');\r\n Object.keys(this._filterControls.controls)\r\n .forEach(key => this._filterControls.get(key)?.setValue(''));\r\n }\r\n\r\n private _sortingDataAccessor(data: CmatSelectTableRow, active: string): string | number | Date {\r\n const value = (data as Record<string, unknown>)[active];\r\n\r\n if (isNumber(value)) {\r\n const numberValue = Number(value);\r\n\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value as string | number | Date;\r\n }\r\n\r\n\r\n private _sortData(data: CmatSelectTableRow[], active: string, direction: SortDirection): CmatSelectTableRow[] {\r\n if (!active || direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let aValue = this._sortingDataAccessor(a, active);\r\n let bValue = this._sortingDataAccessor(b, active);\r\n\r\n if (a.id === null) {\r\n return -1;\r\n } else if (b.id === null) {\r\n return 1;\r\n }\r\n if (aValue === bValue) {\r\n return 0;\r\n }\r\n if (isNil(aValue) && !isNil(bValue)) {\r\n return -1;\r\n } else if (!isNil(aValue) && isNil(bValue)) {\r\n return 1;\r\n }\r\n\r\n if (aValue instanceof Date) {\r\n aValue = aValue.getTime();\r\n }\r\n if (bValue instanceof Date) {\r\n bValue = bValue.getTime();\r\n }\r\n if (isString(aValue) && isString(bValue)) {\r\n return (aValue).localeCompare(bValue) * (direction === 'asc' ? 1 : -1);\r\n }\r\n aValue = isNaN((aValue as number)) ? `${aValue}` : +aValue;\r\n bValue = isNaN((bValue as number)) ? `${bValue}` : +bValue;\r\n if (isString(aValue) && isNumber(bValue)) {\r\n return (1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n if (isNumber(aValue) && isString(bValue)) {\r\n return (-1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n return (aValue > bValue ? 1 : -1) * (direction === 'asc' ? 1 : -1);\r\n });\r\n\r\n }\r\n\r\n private _checkAndResetSelection(): void {\r\n if (this._matSelect.value && isArray(this._matSelect.value) && this._matSelect.value.length < 1\r\n && !isNil(this.resetOptionAction)) {\r\n this.resetOptionAction();\r\n }\r\n }\r\n\r\n private _matchesColumnFilter(\r\n row: CmatSelectTableRow,\r\n filterKey: string,\r\n filter: { filter: CmatSelectTableFilter | undefined; value: unknown }\r\n ): boolean {\r\n const cellValue = (row as Record<string, unknown>)[filterKey] as string | number | boolean | null | undefined;\r\n\r\n if (isNil(cellValue)) {\r\n return false;\r\n }\r\n\r\n const columnFilter = filter.filter;\r\n const comparator = columnFilter?.comparator;\r\n const filterValue = filter.value;\r\n let normalizedFilterValue: string | number | boolean | null | undefined;\r\n if (columnFilter?.type === 'number') {\r\n normalizedFilterValue = Number(filterValue);\r\n } else if (filterValue === null || filterValue === undefined) {\r\n normalizedFilterValue = '';\r\n } else if (typeof filterValue === 'object') {\r\n normalizedFilterValue = '';\r\n } else {\r\n normalizedFilterValue = filterValue as string;\r\n }\r\n\r\n if (typeof columnFilter?.comparatorFn === 'function') {\r\n return columnFilter.comparatorFn.call(null, cellValue, normalizedFilterValue, row);\r\n }\r\n\r\n if (isNil(comparator) || comparator === 'equals') {\r\n return normalizedFilterValue === cellValue;\r\n }\r\n\r\n if (typeof cellValue !== 'string' || typeof normalizedFilterValue !== 'string') {\r\n return false;\r\n }\r\n\r\n const cellValueLC = cellValue.toLowerCase();\r\n const filterValueLC = normalizedFilterValue.toLowerCase();\r\n\r\n if (isNil(comparator) || comparator === 'equalsIgnoreCase') {\r\n return filterValueLC === cellValueLC;\r\n }\r\n\r\n if (comparator === 'contains') {\r\n return cellValue.includes(normalizedFilterValue);\r\n }\r\n\r\n if (comparator === 'containsIgnoreCase') {\r\n return cellValueLC.includes(filterValueLC);\r\n }\r\n\r\n if (comparator === 'startsWith') {\r\n return cellValue.startsWith(normalizedFilterValue);\r\n }\r\n\r\n if (comparator === 'startsWithIgnoreCase') {\r\n return cellValueLC.startsWith(filterValueLC);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _buildTableOptions(options: Record<string, MatOption>): MatOption[] {\r\n const tableOptions: MatOption[] = [];\r\n\r\n for (const row of this.tableDataSource()) {\r\n const rowOption = options[String(row.id)];\r\n\r\n if (!isNil(rowOption)) {\r\n tableOptions.push(rowOption);\r\n }\r\n }\r\n\r\n return tableOptions;\r\n }\r\n\r\n private _getMatOptionById(id: string): MatOption | undefined {\r\n return this._matOptions.find(option => option.id === id);\r\n }\r\n\r\n getFilterContext(column: CmatSelectTableColumn | undefined): { column: CmatSelectTableColumn | undefined } {\r\n return { column };\r\n }\r\n\r\n getCellValue(row: CmatSelectTableRow, key: string): unknown {\r\n return row[key];\r\n }\r\n\r\n private _expandPanelForTableRows(): void {\r\n let tableAdditionalHeight = 0;\r\n\r\n this._table._getRenderedRows(this._table._headerRowOutlet).forEach(row => tableAdditionalHeight += row.getBoundingClientRect().height);\r\n this._table._getRenderedRows(this._table._footerRowOutlet).forEach(row => tableAdditionalHeight += row.getBoundingClientRect().height);\r\n\r\n const panelElement: HTMLDivElement = this._matSelect.panel.nativeElement as HTMLDivElement;\r\n const panelHeight = panelElement.getBoundingClientRect().height;\r\n\r\n if (!isNaN(panelHeight)) {\r\n panelElement.style.maxHeight = `${panelHeight + tableAdditionalHeight}px`;\r\n }\r\n }\r\n\r\n private _getCommittedValue(): CmatSelectTableRow[] | CmatSelectTableRow | null {\r\n if (this.completeRowList.length === 0) {\r\n return null;\r\n }\r\n\r\n return this.multiple ? [...this.completeRowList] : { ...this.completeRowList[0] };\r\n }\r\n\r\n private _syncMatSelectValue(value: CmatSelectTableRow[] | CmatSelectTableRow | null): void {\r\n this._matSelect.writeValue(value);\r\n this._matSelect._onChange(value);\r\n }\r\n\r\n private _removeFilteredRow(data: CmatSelectTableRow[], index: number): void {\r\n data.splice(index, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n }\r\n\r\n private _resolveTriggerLabel(row: CmatSelectTableRow | null): string {\r\n if (isNil(row)) {\r\n return '';\r\n }\r\n\r\n const template = typeof this.customTriggerLabelTemplate === 'string' ? this.customTriggerLabelTemplate.trim() : '';\r\n\r\n if (template.length === 0) {\r\n return `${row.id}`;\r\n }\r\n\r\n const rowRecord = row as Record<string, unknown>;\r\n let hasMatch = false;\r\n\r\n const substitution = template.replace(/[$]{1}[{]{1}([^}]+)[}]{1}?/g, (_, key) => {\r\n const value = rowRecord[String(key)];\r\n\r\n if (isNil(value)) {\r\n return '';\r\n }\r\n\r\n if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean' && typeof value !== 'bigint') {\r\n return '';\r\n }\r\n\r\n hasMatch = true;\r\n return String(value);\r\n });\r\n\r\n return hasMatch ? substitution.trim() : `${row.id}`;\r\n }\r\n\r\n private _getTriggerRows(value: CmatSelectTableRow[]): CmatSelectTableRow[] {\r\n if (isNil(this.triggerLabelSort)) {\r\n return value;\r\n }\r\n\r\n return this._sortData([...value], this.triggerLabelSort.active, this.triggerLabelSort.direction);\r\n }\r\n}","@if(multiple){\r\n<mat-select #componentSelect multiple disableRipple \r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @let triggerLabel = getTriggerLabel();\r\n {{ triggerLabel }}\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState()}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState() === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState() ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState() ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState() ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource()\">\r\n @for (columnKey of tableColumns(); track $index) {\r\n @let column = tableColumnsMap.get(columnKey);\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{selection: true, hidden: !multiple}\"></th>\r\n <td *matCellDef=\"let row\" mat-cell [ngClass]=\"{selection: true, hidden: !multiple}\">\r\n <mat-option [value]=\"row\"></mat-option>\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!column?.sortable\">\r\n @if(!column?.sortable){\r\n <div>{{column?.name}}</div>\r\n }@else {\r\n @switch (column?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @default {\r\n <div>{{column?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell>\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"column?.name+':'\">\r\n {{getCellValue(row, columnKey)}}\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns(); sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns();\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}@else {\r\n<mat-select #componentSelect disableRipple \r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if(!customTriggerLabelFn){\r\n {{simpleTriggerLabelFn(completeRowList)}}\r\n }@else {\r\n {{customTriggerLabelFn(completeRowList)}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState()}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState() === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState() ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState() ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState() ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource()\">\r\n @for (columnKey of tableColumns(); track $index) {\r\n @let column = tableColumnsMap.get(columnKey);\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell class=\"selection\"></th>\r\n <td *matCellDef=\"let row\" mat-cell class=\"selection\">\r\n @if(row.id===null){\r\n <mat-option></mat-option>\r\n }@else {\r\n <mat-option [value]=\"row\"></mat-option>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!column?.sortable\">\r\n @if(!column?.sortable){\r\n <div>{{column?.name}}</div>\r\n }@else {\r\n @switch (column?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @default {\r\n <div>{{column?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell\r\n [colSpan]=\"hasNullRow && row.id === null && $index === 1 ? tableColumns.length : 1\"\r\n [ngStyle]=\"{display: hasNullRow && row.id === null && $index !== 1 ? 'none' : ''}\">\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"column?.name+':'\">\r\n {{hasNullRow && row.id === null && $index === 1 ? '空' : getCellValue(row, columnKey)}}\r\n </div> \r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns(); sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns();\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}\r\n<ng-template #filterTypeString let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput [formControl]=\"filterFormControl(column.key)\" [placeholder]=\"column.name\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #filterTypeNumber let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput cmatDigitOnly [min]=\"0\" [formControl]=\"filterFormControl(column.key)\"\r\n [placeholder]=\"column.name\" (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>\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-table.mjs","sources":["../../../projects/cmat/components/select-table/select-table.component.ts","../../../projects/cmat/components/select-table/select-table.component.html","../../../projects/cmat/components/select-table/cmat-components-select-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n HostListener,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n viewChild,\r\n viewChildren,\r\n ViewEncapsulation,\r\n effect,\r\n inject,\r\n signal,\r\n input,\r\n output,\r\n Input,\r\n untracked,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormControl,\r\n FormGroup,\r\n NgControl,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport {\r\n MatFormFieldControl,\r\n MatFormFieldModule,\r\n} from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n MatOption,\r\n MatSelect,\r\n MatSelectModule,\r\n} from '@angular/material/select';\r\nimport {\r\n MatSort,\r\n MatSortModule,\r\n Sort,\r\n SortDirection,\r\n} from '@angular/material/sort';\r\nimport { MatTable, MatTableModule } from '@angular/material/table';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { isArray, isNil, isNumber, isString } from 'lodash-es';\r\nimport { debounceTime, merge, Subject } from 'rxjs';\r\nimport {\r\n CmatSelectTableColumn,\r\n CmatSelectTableDataSource,\r\n CmatSelectTableFilter,\r\n CmatSelectTableRow,\r\n} from './select-table.type';\r\n\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: ['./select-table.component.scss'],\r\n exportAs: 'cmatSelectTable',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: MatFormFieldControl, useExisting: CmatSelectTableComponent },\r\n ],\r\n imports: [\r\n CmatSelectSearchComponent,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n MatIconModule,\r\n MatTableModule,\r\n MatInputModule,\r\n MatSortModule,\r\n CmatDigitOnlyDirective,\r\n ],\r\n host: {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class CmatSelectTableComponent\r\n implements\r\n MatFormFieldControl<CmatSelectTableRow[] | CmatSelectTableRow | null>,\r\n ControlValueAccessor,\r\n AfterViewInit,\r\n OnDestroy,\r\n OnChanges {\r\n readonly id = `cmat-select-table-${NEXT_ID++}`;\r\n readonly dataSource = input<CmatSelectTableDataSource<CmatSelectTableRow>>();\r\n\r\n readonly noEntriesFoundLabel = input<string>('无结果');\r\n\r\n readonly showNoFoundLabel = input<boolean>(true);\r\n\r\n readonly isPhone = input<boolean>(false);\r\n\r\n readonly multiple = input<boolean>(false);\r\n\r\n readonly overallSearchEnabled = input<boolean>(true);\r\n\r\n readonly overallSearchVisible = input<boolean>();\r\n\r\n readonly resetSortOnOpen = input<boolean>();\r\n\r\n readonly resetFiltersOnOpen = input<boolean>();\r\n\r\n readonly customTriggerLabelFn =\r\n input<(value: CmatSelectTableRow[]) => string>();\r\n\r\n readonly triggerLabelSort = input<Sort>();\r\n\r\n readonly customTriggerLabelTemplate = input<string>();\r\n\r\n readonly canNull = input<boolean>();\r\n\r\n readonly defaultSort = input<Sort>();\r\n\r\n readonly resetOptionAction = input<() => void>();\r\n\r\n readonly keyParam = input<string>('id');\r\n readonly compareWith = input<\r\n (o1: CmatSelectTableRow | null, o2: CmatSelectTableRow | null) => boolean\r\n >((o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n });\r\n\r\n readonly closed = output<boolean>();\r\n\r\n readonly _matSelectSearch = viewChild<CmatSelectSearchComponent>(CmatSelectSearchComponent);\r\n\r\n readonly _sort = viewChild<MatSort>(MatSort);\r\n\r\n readonly _table = viewChild<MatTable<CmatSelectTableRow>>(MatTable);\r\n\r\n readonly _matOptions = viewChildren<MatOption>(MatOption);\r\n\r\n readonly _matSelectSignal = viewChild<MatSelect>('componentSelect');\r\n\r\n readonly tableDataSource = signal<CmatSelectTableRow[]>([]);\r\n\r\n readonly tableColumns = signal<string[]>([]);\r\n\r\n tableColumnsMap: Map<string, CmatSelectTableColumn>;\r\n\r\n private readonly _rowById = new Map<string | number, CmatSelectTableRow>();\r\n private _columnKeys: string[] = [];\r\n\r\n filteredOutRows: Record<string, CmatSelectTableRow>;\r\n\r\n completeRowList: CmatSelectTableRow[] = [];\r\n\r\n readonly overallSearchVisibleState = signal(false);\r\n\r\n overallFilterControl: FormControl<string | null> = new FormControl<\r\n string | null\r\n >('');\r\n selectControl: FormControl = new FormControl();\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n private readonly _focusedSignal = signal<boolean>(false);\r\n private readonly _touchedSignal = signal<boolean>(false);\r\n private readonly _placeholderSignal = signal<string>('');\r\n private readonly _disabledSignal = signal<boolean>(false);\r\n private readonly _requiredSignal = signal<boolean>(false);\r\n\r\n get focused(): boolean {\r\n return this._focusedSignal();\r\n }\r\n\r\n get touched(): boolean {\r\n return this._touchedSignal();\r\n }\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 private _filterControls: FormGroup;\r\n\r\n private _nullRow: CmatSelectTableRow = { id: null };\r\n\r\n private _completeValueList: (string | number | null | undefined)[] = [];\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n this.tableColumnsMap = new Map();\r\n this._filterControls = new FormGroup({});\r\n\r\n effect(() => {\r\n const matSelect = this._matSelectSignal();\r\n\r\n if (matSelect && !this._matSelect) {\r\n this._matSelect = matSelect;\r\n\r\n untracked(() => {\r\n this._init(this.value);\r\n });\r\n\r\n this._matSelect.setDisabledState(this._disabledSignal());\r\n\r\n this._setPanelClass();\r\n } else if (matSelect && this._matSelect !== matSelect) {\r\n\r\n this._matSelect = matSelect;\r\n this._setPanelClass();\r\n }\r\n });\r\n }\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this._focusedSignal.set(false);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const sortInstance = this._sort();\r\n if (!sortInstance) {\r\n return;\r\n }\r\n\r\n merge(\r\n ...[\r\n sortInstance.sortChange,\r\n this._filterControls.valueChanges,\r\n this.overallFilterControl.valueChanges,\r\n ],\r\n )\r\n .pipe(takeUntilDestroyed(this._destroyRef), debounceTime(300))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTableRow[] = [\r\n ...((this.dataSource() ?? { data: [] }).data || []),\r\n ];\r\n if (this.addNullRow()) {\r\n dataClone.unshift(this._nullRow);\r\n }\r\n\r\n if (this.overallSearchEnabled() && this.overallSearchVisibleState()) {\r\n this._applyOverallFilter(dataClone);\r\n } else {\r\n this._applyColumnLevelFilters(dataClone);\r\n }\r\n\r\n const currentSort = this._sort();\r\n const defaultSort = this.defaultSort();\r\n if (currentSort && !currentSort.active && !isNil(defaultSort) && defaultSort.active) {\r\n currentSort.active = defaultSort.active;\r\n currentSort.direction = defaultSort.direction;\r\n }\r\n\r\n const sortedData = !currentSort?.active\r\n ? dataClone\r\n : this._sortData(\r\n dataClone,\r\n currentSort.active,\r\n currentSort.direction,\r\n );\r\n\r\n this.tableDataSource.set(sortedData);\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._placeholderSignal();\r\n }\r\n set placeholder(value: string) {\r\n this._placeholderSignal.set(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n private _value: CmatSelectTableRow[] | CmatSelectTableRow | null = null;\r\n\r\n\r\n @Input()\r\n get value(): CmatSelectTableRow[] | CmatSelectTableRow | null {\r\n return this._value;\r\n }\r\n set value(value: CmatSelectTableRow[] | CmatSelectTableRow | null) {\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\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) 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._focusedSignal() || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._requiredSignal();\r\n }\r\n set required(value: BooleanInput) {\r\n this._requiredSignal.set(coerceBooleanProperty(value));\r\n this.stateChanges.next();\r\n }\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._disabledSignal();\r\n }\r\n set disabled(value: BooleanInput) {\r\n const isDisabled = coerceBooleanProperty(value);\r\n this._disabledSignal.set(isDisabled);\r\n\r\n if (this._focusedSignal() && isDisabled) {\r\n this._focusedSignal.set(false);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n registerOnChange(\r\n fn: (value: CmatSelectTableRow[] | CmatSelectTableRow | null) => void,\r\n ): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => object): void {\r\n this._onTouchedChange = fn;\r\n this._matSelect?.registerOnTouched(fn);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabledSignal.set(isDisabled);\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._focusedSignal()) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this._focusedSignal()) {\r\n this._focusedSignal.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n const matSelectPanel = this._matSelect?.panel?.nativeElement as HTMLElement;\r\n if (\r\n matSelectPanel &&\r\n !(matSelectPanel).contains(\r\n event.relatedTarget as Element,\r\n )\r\n ) {\r\n this._touchedSignal.set(true);\r\n this._focusedSignal.set(false);\r\n\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: CmatSelectTableRow[] | CmatSelectTableRow | null): void {\r\n this._init(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n !isNil(changes.resetFiltersOnOpen) &&\r\n changes.resetFiltersOnOpen.currentValue !== false\r\n ) {\r\n this._resetFilters();\r\n }\r\n\r\n if (!isNil(changes.dataSource) && !isNil(changes.dataSource.currentValue)) {\r\n const currentDataSource = changes.dataSource\r\n .currentValue as CmatSelectTableDataSource<CmatSelectTableRow>;\r\n\r\n if (!isArray(currentDataSource.data)) {\r\n return;\r\n }\r\n\r\n const columns = currentDataSource.columns;\r\n const data = currentDataSource.data;\r\n\r\n this._rowById.clear();\r\n this._columnKeys = columns.map(\r\n (column: CmatSelectTableColumn) => column.key,\r\n );\r\n this.tableDataSource.set([...data]);\r\n if (this.addNullRow()) {\r\n this.tableDataSource.update(value => [this._nullRow, ...value]);\r\n }\r\n this.tableColumns.set(['_selection', ...this._columnKeys]);\r\n this.tableColumnsMap.clear();\r\n columns.forEach((column: CmatSelectTableColumn) =>\r\n this.tableColumnsMap.set(column.key, column),\r\n );\r\n data.forEach((row: CmatSelectTableRow) => {\r\n if (!isNil(row?.id)) {\r\n this._rowById.set(row.id, row);\r\n }\r\n });\r\n\r\n if (this.tableDataSource().length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n emulateMatOptionClick(event: MouseEvent): void {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n let rowElement: HTMLElement | null = event.target;\r\n while (\r\n rowElement != null &&\r\n rowElement instanceof HTMLElement &&\r\n rowElement.tagName.toLowerCase() !== 'tr'\r\n ) {\r\n rowElement = rowElement.parentElement;\r\n }\r\n if (rowElement === null) {\r\n return;\r\n }\r\n const childOption: HTMLElement | null =\r\n rowElement.querySelector('mat-option');\r\n if (!childOption) {\r\n return;\r\n }\r\n\r\n if (event.target.tagName.toLowerCase() != 'mat-pseudo-checkbox') {\r\n childOption.click();\r\n }\r\n\r\n const option = this._getMatOptionById(childOption.id);\r\n\r\n if (!option) {\r\n return;\r\n }\r\n\r\n const multiple = this.multiple();\r\n if (multiple && this._matSelect.panelOpen) {\r\n this._updateCompleteRowList(\r\n option.value as CmatSelectTableRow,\r\n option.selected,\r\n );\r\n\r\n // 同步更新 selectControl 以触发 UI 更新\r\n if (this.selectControl) {\r\n this.selectControl.setValue([...this.completeRowList], { emitEvent: false });\r\n }\r\n }\r\n\r\n if (!multiple) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (option.value) {\r\n const row = option.value as CmatSelectTableRow;\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n }\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n const overallSearchEnabled = this.overallSearchEnabled();\r\n if (\r\n this.resetFiltersOnOpen() !== false ||\r\n (!this._matOptions().length && overallSearchEnabled) ||\r\n (overallSearchEnabled && this._matOptions().length === 1)\r\n ) {\r\n this._resetFilters();\r\n }\r\n this.overallSearchVisibleState.set(!!this.overallSearchVisible());\r\n if (this.resetSortOnOpen() !== false) {\r\n const sortInstance = this._sort();\r\n if (sortInstance) {\r\n sortInstance.sort({ id: '', start: 'asc', disableClear: false });\r\n }\r\n }\r\n if (!opened) {\r\n this.value = this._getCommittedValue();\r\n\r\n if (this.value === null) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n this._checkAndResetSelection();\r\n }\r\n\r\n this._syncMatSelectValue(this.value);\r\n\r\n this.closed.emit(!opened);\r\n return;\r\n }\r\n\r\n const tableInstance = this._table();\r\n if (tableInstance) {\r\n const table = tableInstance as unknown as { _headerRowDefChanged: boolean };\r\n table._headerRowDefChanged = true;\r\n }\r\n\r\n setTimeout(() => this._expandPanelForTableRows(), 1);\r\n }\r\n filterFormControl(key: string): FormControl {\r\n if (!this._filterControls.contains(key)) {\r\n this._filterControls.registerControl(key, new FormControl(''));\r\n }\r\n return this._filterControls.get(key) as FormControl;\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTableRow[]): string {\r\n const rows = this._getTriggerRows(value);\r\n\r\n return rows.map(row => this._resolveTriggerLabel(row)).join(', ');\r\n }\r\n\r\n getTriggerLabel(): string {\r\n return (\r\n this.customTriggerLabelFn()?.(this.completeRowList) ??\r\n this.simpleTriggerLabelFn(this.completeRowList)\r\n );\r\n }\r\n\r\n toggleOverallSearch(): void {\r\n this.overallSearchVisibleState.update(value => !value);\r\n\r\n this._resetFilters();\r\n if (this.overallSearchVisibleState()) {\r\n const searchInstance = this._matSelectSearch();\r\n if (searchInstance) {\r\n setTimeout(() => searchInstance.focus());\r\n }\r\n }\r\n }\r\n\r\n addNullRow(): boolean {\r\n return !this.multiple() && (this.canNull() ?? false);\r\n }\r\n\r\n get hasNullRow(): boolean {\r\n return this.addNullRow();\r\n }\r\n\r\n\r\n private _onModelChange: (\r\n value: CmatSelectTableRow[] | CmatSelectTableRow | null,\r\n ) => void = () => { /* empty */ };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => void = () => { };\r\n\r\n private _init(value: CmatSelectTableRow[] | CmatSelectTableRow | null): void {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (value) {\r\n const multiple = this.multiple();\r\n if (multiple && Array.isArray(value)) {\r\n value.forEach((v: CmatSelectTableRow) =>\r\n this._updateCompleteRowList(v, true),\r\n );\r\n } else if (!multiple) {\r\n this._updateCompleteRowList(value as CmatSelectTableRow, true);\r\n }\r\n }\r\n\r\n this.value =\r\n this.completeRowList.length > 0 ? [...this.completeRowList] : value;\r\n\r\n if (this._matSelect) {\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n\r\n // 确保 selectControl 与当前值同步\r\n if (this.selectControl) {\r\n this.selectControl.setValue(this.value, { emitEvent: false });\r\n }\r\n }\r\n\r\n private _updateCompleteRowList(\r\n value: CmatSelectTableRow,\r\n selected: boolean,\r\n ): void {\r\n if (isNil(value)) {\r\n return;\r\n }\r\n if (selected) {\r\n const rowId = value.id;\r\n\r\n if (isNil(rowId)) {\r\n return;\r\n }\r\n\r\n const row = this._rowById.get(rowId);\r\n\r\n if (!row) {\r\n return;\r\n }\r\n\r\n const exists = this.completeRowList.some(\r\n item => item[this.keyParam()] === row[this.keyParam()],\r\n );\r\n if (!exists) {\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n } else {\r\n const rowIndex = this.completeRowList.findIndex(i => i.id === value.id);\r\n if (rowIndex > -1) this.completeRowList.splice(rowIndex, 1);\r\n\r\n const valueIndex = this._completeValueList.findIndex(\r\n i => i === value.id,\r\n );\r\n if (valueIndex > -1) this._completeValueList.splice(valueIndex, 1);\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n const filters: Record<\r\n string,\r\n { filter: CmatSelectTableFilter | undefined; value: unknown }\r\n > = {};\r\n Object.keys(this._filterControls.controls)\r\n .filter((key) => {\r\n const column = this.tableColumnsMap.get(key);\r\n\r\n return !isNil(column?.filter) && column.filter.enabled !== false;\r\n })\r\n .filter((key) => {\r\n const filterControl = this._filterControls.get(\r\n key,\r\n ) as FormControl<unknown> | null;\r\n const value = filterControl?.value;\r\n\r\n return (\r\n !isNil(value) &&\r\n ((isArray(value) && value.length > 0) ||\r\n (typeof value === 'string' && value.trim().length > 0) ||\r\n (typeof value === 'number' && `${value}`.trim().length > 0))\r\n );\r\n })\r\n .forEach((key) => {\r\n const column = this.tableColumnsMap.get(key);\r\n const filterControl = this._filterControls.get(key);\r\n\r\n filters[key] = {\r\n filter: column?.filter,\r\n value: filterControl?.value,\r\n };\r\n });\r\n const filterKeys: string[] = Object.keys(filters);\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let k = 0; k < filterKeys.length; k++) {\r\n const filterKey: string = filterKeys[k];\r\n const row: CmatSelectTableRow = data[i];\r\n const filter = filters[filterKey];\r\n\r\n if (isNil(row)) {\r\n this._removeFilteredRow(data, i);\r\n break;\r\n }\r\n\r\n if (!this._matchesColumnFilter(row, filterKey, filter)) {\r\n this._removeFilteredRow(data, i);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _applyOverallFilter(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n if (isNil(this.overallFilterControl.value)) {\r\n return;\r\n }\r\n const filterValueLC: string = (\r\n this.overallFilterControl.value ?? ''\r\n ).toLowerCase();\r\n if (filterValueLC.trim().length === 0) {\r\n return;\r\n }\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n const row: CmatSelectTableRow = data[i];\r\n let rowShouldBeFiltered = true;\r\n const rowKeys = this._columnKeys;\r\n\r\n for (let j = rowKeys.length - 1; j >= 0; j--) {\r\n const key: string = rowKeys[j];\r\n const cellValue = (row as Record<string, unknown>)[key];\r\n if (isNil(cellValue)) {\r\n continue;\r\n }\r\n const cellValueLC: string =\r\n typeof cellValue === 'string'\r\n ? cellValue.toLowerCase()\r\n : typeof cellValue === 'number' ||\r\n typeof cellValue === 'boolean' ||\r\n typeof cellValue === 'bigint'\r\n ? String(cellValue).toLowerCase()\r\n : '';\r\n if (cellValueLC.includes(filterValueLC)) {\r\n rowShouldBeFiltered = false;\r\n break;\r\n }\r\n }\r\n if (rowShouldBeFiltered) {\r\n this._removeFilteredRow(data, i);\r\n }\r\n }\r\n }\r\n\r\n private _resetFilters(): void {\r\n this.overallFilterControl.setValue('');\r\n Object.keys(this._filterControls.controls).forEach(key =>\r\n this._filterControls.get(key)?.setValue(''),\r\n );\r\n }\r\n\r\n private _sortingDataAccessor(\r\n data: CmatSelectTableRow,\r\n active: string,\r\n ): string | number | Date {\r\n const value = (data as Record<string, unknown>)[active];\r\n\r\n if (isNumber(value)) {\r\n const numberValue = Number(value);\r\n\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value as string | number | Date;\r\n }\r\n\r\n private _sortData(\r\n data: CmatSelectTableRow[],\r\n active: string,\r\n direction: SortDirection,\r\n ): CmatSelectTableRow[] {\r\n if (!active || direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let aValue = this._sortingDataAccessor(a, active);\r\n let bValue = this._sortingDataAccessor(b, active);\r\n\r\n if (a.id === null) {\r\n return -1;\r\n } else if (b.id === null) {\r\n return 1;\r\n }\r\n if (aValue === bValue) {\r\n return 0;\r\n }\r\n if (isNil(aValue) && !isNil(bValue)) {\r\n return -1;\r\n } else if (!isNil(aValue) && isNil(bValue)) {\r\n return 1;\r\n }\r\n\r\n if (aValue instanceof Date) {\r\n aValue = aValue.getTime();\r\n }\r\n if (bValue instanceof Date) {\r\n bValue = bValue.getTime();\r\n }\r\n if (isString(aValue) && isString(bValue)) {\r\n return aValue.localeCompare(bValue) * (direction === 'asc' ? 1 : -1);\r\n }\r\n aValue = isNaN(aValue as number) ? `${aValue}` : +aValue;\r\n bValue = isNaN(bValue as number) ? `${bValue}` : +bValue;\r\n if (isString(aValue) && isNumber(bValue)) {\r\n return 1 * (direction === 'asc' ? 1 : -1);\r\n }\r\n if (isNumber(aValue) && isString(bValue)) {\r\n return -1 * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n return (aValue > bValue ? 1 : -1) * (direction === 'asc' ? 1 : -1);\r\n });\r\n }\r\n\r\n private _checkAndResetSelection(): void {\r\n const resetOptionAction = this.resetOptionAction();\r\n if (\r\n this._matSelect.value &&\r\n isArray(this._matSelect.value) &&\r\n this._matSelect.value.length < 1 &&\r\n !isNil(resetOptionAction)\r\n ) {\r\n resetOptionAction();\r\n }\r\n }\r\n\r\n private _matchesColumnFilter(\r\n row: CmatSelectTableRow,\r\n filterKey: string,\r\n filter: { filter: CmatSelectTableFilter | undefined; value: unknown },\r\n ): boolean {\r\n const cellValue = (row as Record<string, unknown>)[filterKey] as\r\n | string\r\n | number\r\n | boolean\r\n | null\r\n | undefined;\r\n\r\n if (isNil(cellValue)) {\r\n return false;\r\n }\r\n\r\n const columnFilter = filter.filter;\r\n const comparator = columnFilter?.comparator;\r\n const filterValue = filter.value;\r\n let normalizedFilterValue: string | number | boolean | null | undefined;\r\n if (columnFilter?.type === 'number') {\r\n normalizedFilterValue = Number(filterValue);\r\n } else if (filterValue === null || filterValue === undefined) {\r\n normalizedFilterValue = '';\r\n } else if (typeof filterValue === 'object') {\r\n normalizedFilterValue = '';\r\n } else {\r\n normalizedFilterValue = filterValue as string;\r\n }\r\n\r\n if (typeof columnFilter?.comparatorFn === 'function') {\r\n return columnFilter.comparatorFn.call(\r\n null,\r\n cellValue,\r\n normalizedFilterValue,\r\n row,\r\n );\r\n }\r\n\r\n if (isNil(comparator) || comparator === 'equals') {\r\n return normalizedFilterValue === cellValue;\r\n }\r\n\r\n if (\r\n typeof cellValue !== 'string' ||\r\n typeof normalizedFilterValue !== 'string'\r\n ) {\r\n return false;\r\n }\r\n\r\n const cellValueLC = cellValue.toLowerCase();\r\n const filterValueLC = normalizedFilterValue.toLowerCase();\r\n\r\n if (isNil(comparator) || comparator === 'equalsIgnoreCase') {\r\n return filterValueLC === cellValueLC;\r\n }\r\n\r\n if (comparator === 'contains') {\r\n return cellValue.includes(normalizedFilterValue);\r\n }\r\n\r\n if (comparator === 'containsIgnoreCase') {\r\n return cellValueLC.includes(filterValueLC);\r\n }\r\n\r\n if (comparator === 'startsWith') {\r\n return cellValue.startsWith(normalizedFilterValue);\r\n }\r\n\r\n if (comparator === 'startsWithIgnoreCase') {\r\n return cellValueLC.startsWith(filterValueLC);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _getMatOptionById(id: string): MatOption | undefined {\r\n return this._matOptions().find(option => option.id === id);\r\n }\r\n\r\n getFilterContext(column: CmatSelectTableColumn | undefined): {\r\n column: CmatSelectTableColumn | undefined;\r\n } {\r\n return { column };\r\n }\r\n\r\n getCellValue(row: CmatSelectTableRow, key: string): unknown {\r\n return row[key];\r\n }\r\n\r\n private _expandPanelForTableRows(): void {\r\n let tableAdditionalHeight = 0;\r\n\r\n const tableInstance = this._table();\r\n if (!tableInstance) {\r\n return;\r\n }\r\n\r\n tableInstance\r\n ._getRenderedRows(tableInstance._headerRowOutlet)\r\n .forEach(\r\n row => (tableAdditionalHeight += row.getBoundingClientRect().height),\r\n );\r\n tableInstance\r\n ._getRenderedRows(tableInstance._footerRowOutlet)\r\n .forEach(\r\n row => (tableAdditionalHeight += row.getBoundingClientRect().height),\r\n );\r\n\r\n const panelElement = this._matSelect?.panel?.nativeElement as HTMLDivElement | undefined;\r\n\r\n if (!panelElement) {\r\n return;\r\n }\r\n\r\n const panelHeight = panelElement.getBoundingClientRect().height;\r\n\r\n if (!isNaN(panelHeight)) {\r\n panelElement.style.maxHeight = `${panelHeight + tableAdditionalHeight}px`;\r\n }\r\n }\r\n\r\n private _getCommittedValue():\r\n | CmatSelectTableRow[]\r\n | CmatSelectTableRow\r\n | null {\r\n if (this.completeRowList.length === 0) {\r\n return null;\r\n }\r\n\r\n return this.multiple()\r\n ? [...this.completeRowList]\r\n : { ...this.completeRowList[0] };\r\n }\r\n\r\n private _syncMatSelectValue(\r\n value: CmatSelectTableRow[] | CmatSelectTableRow | null,\r\n ): void {\r\n this._matSelect.writeValue(value);\r\n this._matSelect._onChange(value);\r\n }\r\n\r\n private _removeFilteredRow(data: CmatSelectTableRow[], index: number): void {\r\n data\r\n .splice(index, 1)\r\n .forEach(item => (this.filteredOutRows[`${item.id}`] = item));\r\n }\r\n\r\n private _resolveTriggerLabel(row: CmatSelectTableRow | null): string {\r\n if (isNil(row)) {\r\n return '';\r\n }\r\n\r\n const customTriggerLabelTemplate = this.customTriggerLabelTemplate();\r\n const template =\r\n typeof customTriggerLabelTemplate === 'string'\r\n ? customTriggerLabelTemplate.trim()\r\n : '';\r\n\r\n if (template.length === 0) {\r\n return `${row.id}`;\r\n }\r\n\r\n const rowRecord = row as Record<string, unknown>;\r\n let hasMatch = false;\r\n\r\n const substitution = template.replace(\r\n /[$]{1}[{]{1}([^}]+)[}]{1}?/g,\r\n (_, key) => {\r\n const value = rowRecord[String(key)];\r\n\r\n if (isNil(value)) {\r\n return '';\r\n }\r\n\r\n if (\r\n typeof value !== 'string' &&\r\n typeof value !== 'number' &&\r\n typeof value !== 'boolean' &&\r\n typeof value !== 'bigint'\r\n ) {\r\n return '';\r\n }\r\n\r\n hasMatch = true;\r\n return String(value);\r\n },\r\n );\r\n\r\n return hasMatch ? substitution.trim() : `${row.id}`;\r\n }\r\n\r\n private _getTriggerRows(value: CmatSelectTableRow[]): CmatSelectTableRow[] {\r\n const triggerLabelSort = this.triggerLabelSort();\r\n if (isNil(triggerLabelSort)) {\r\n return value;\r\n }\r\n\r\n return this._sortData(\r\n [...value],\r\n triggerLabelSort.active,\r\n triggerLabelSort.direction,\r\n );\r\n }\r\n\r\n private _setPanelClass(): void {\r\n let panelClass: string[] = [\r\n 'overflow-hidden',\r\n 'cmat-select-search-table-panel',\r\n ];\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 = [\r\n this._matSelect.panelClass,\r\n ...panelClass,\r\n ];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n const panelClassObject = this._matSelect.panelClass as Record<\r\n string,\r\n boolean\r\n >;\r\n panelClass.forEach((i) => {\r\n panelClassObject[i] = true;\r\n });\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n }\r\n}\r\n","@if (multiple()) {\r\n<mat-select #componentSelect multiple disableRipple [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith()\" (focusin)=\"onFocusIn()\"\r\n (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @let triggerLabel = getTriggerLabel();\r\n {{ triggerLabel }}\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{ 'hidden-header': overallSearchVisibleState() }\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled()) {\r\n <mat-option [ngClass]=\"{ hidden: !overallSearchVisibleState() === true }\">\r\n <cmat-select-search \r\n [showNoFoundLabel]=\"showNoFoundLabel()\" \r\n [noEntriesFoundLabel]=\"noEntriesFoundLabel()\"\r\n [formControl]=\"overallFilterControl\" \r\n [clearSearchInput]=\"resetFiltersOnOpen()??false\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if (!isPhone()) {\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{\r\n height: overallSearchVisibleState() ? '48px' : '55.4px',\r\n }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"\r\n overallSearchVisibleState()\r\n ? 'mat_outline:arrow_back'\r\n : 'mat_outline:search'\r\n \" (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource()\">\r\n @for (columnKey of tableColumns(); track $index) {\r\n @let column = tableColumnsMap.get(columnKey);\r\n @switch (columnKey) {\r\n @case (\"_selection\") {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{ selection: true, hidden: !multiple() }\"></th>\r\n <td *matCellDef=\"let row\" mat-cell [ngClass]=\"{ selection: true, hidden: !multiple() }\">\r\n <mat-option [value]=\"row\"></mat-option>\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header [disabled]=\"!column?.sortable\">\r\n @if (!column?.sortable) {\r\n <div>{{ column?.name }}</div>\r\n } @else {\r\n @switch (column?.filter.type) {\r\n @case (\"string\") {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @case (\"number\") {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @default {\r\n <div>{{ column?.name }}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell>\r\n <div class=\"has-label-on-mobile\" [attr.data-label]=\"column?.name + ':'\">\r\n {{ getCellValue(row, columnKey) }}\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n \r\n <tr *matHeaderRowDef=\"tableColumns(); sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns()\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n} @else {\r\n<mat-select #componentSelect disableRipple [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith()\" (focusin)=\"onFocusIn()\"\r\n (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn()) {\r\n {{ simpleTriggerLabelFn(completeRowList) }}\r\n } @else {\r\n {{ customTriggerLabelFn()!(completeRowList) }}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{ 'hidden-header': overallSearchVisibleState() }\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled()) {\r\n <mat-option [ngClass]=\"{ hidden: !overallSearchVisibleState() === true }\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel()\" [noEntriesFoundLabel]=\"noEntriesFoundLabel()\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen()??false\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if (!isPhone()) {\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{\r\n height: overallSearchVisibleState() ? '48px' : '55.4px',\r\n }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"\r\n overallSearchVisibleState()\r\n ? 'mat_outline:arrow_back'\r\n : 'mat_outline:search'\r\n \" (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource()\">\r\n @for (columnKey of tableColumns(); track $index) {\r\n @let column = tableColumnsMap.get(columnKey);\r\n @switch (columnKey) {\r\n @case (\"_selection\") {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell class=\"selection\"></th>\r\n <td *matCellDef=\"let row\" mat-cell class=\"selection\">\r\n @if (row.id === null) {\r\n <mat-option></mat-option>\r\n } @else {\r\n <mat-option [value]=\"row\"></mat-option>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header [disabled]=\"!column?.sortable\">\r\n @if (!column?.sortable) {\r\n <div>{{ column?.name }}</div>\r\n } @else {\r\n @switch (column?.filter.type) {\r\n @case (\"string\") {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @case (\"number\") {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"getFilterContext(column)\"></ng-container>\r\n }\r\n @default {\r\n <div>{{ column?.name }}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell [colSpan]=\"\r\n hasNullRow && row.id === null && $index === 1\r\n ? tableColumns.length\r\n : 1\r\n \" [ngStyle]=\"{\r\n display:\r\n hasNullRow && row.id === null && $index !== 1\r\n ? 'none'\r\n : '',\r\n }\">\r\n <div class=\"has-label-on-mobile\" [attr.data-label]=\"column?.name + ':'\">\r\n {{\r\n hasNullRow && row.id === null && $index === 1\r\n ? \"空\"\r\n : getCellValue(row, columnKey)\r\n }}\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns(); sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns()\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}\r\n<ng-template #filterTypeString let-column=\"column\">\r\n <mat-form-field appearance=\"fill\" class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput [formControl]=\"filterFormControl(column.key)\" [placeholder]=\"column.name\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\" (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #filterTypeNumber let-column=\"column\">\r\n <mat-form-field appearance=\"fill\" class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput cmatDigitOnly [min]=\"0\" [formControl]=\"filterFormControl(column.key)\" [placeholder]=\"column.name\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\" (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}