cmat 0.0.86 → 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.
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +26 -34
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +467 -556
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +270 -259
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +200 -116
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +85 -38
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-color-picker.mjs +841 -0
- package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
- package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-data-picker.mjs +996 -0
- package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
- package/fesm2022/cmat-components-date-range.mjs +310 -264
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-date-time-display.mjs +16 -20
- package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +120 -137
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-empty-state.mjs +17 -24
- package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs +18 -24
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
- package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-form-actions.mjs +12 -12
- package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +10 -10
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +48 -41
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +104 -107
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-inline-loading.mjs +12 -15
- package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +118 -75
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +196 -178
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +26 -41
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +467 -450
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +143 -132
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-org-chart.mjs +68 -83
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
- package/fesm2022/cmat-components-page-header.mjs +18 -24
- package/fesm2022/cmat-components-page-header.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +220 -136
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +262 -215
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +227 -195
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +15 -34
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +95 -88
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +70 -67
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
- package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +190 -159
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +276 -213
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +178 -128
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-skeleton.mjs +44 -28
- package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +107 -163
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-status-tag.mjs +29 -36
- package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
- package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
- package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +111 -118
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +65 -66
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +32 -39
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +186 -176
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
- package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs +16 -19
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +60 -69
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +7 -13
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +26 -27
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +14 -23
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +8 -8
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +6 -10
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +3 -3
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +30 -47
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-media-watcher.mjs +43 -34
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +11 -11
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +4 -4
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat.mjs +9229 -7508
- package/fesm2022/cmat.mjs.map +1 -1
- package/icons/material-icons/heroicons-outline.svg +3 -0
- package/icons/material-icons/heroicons-solid.svg +3 -0
- package/package.json +10 -1
- package/styles/components/bundle.scss +21 -0
- package/styles/overrides/angular-material.scss +22 -1
- package/tailwind/plugins/theming.js +183 -183
- package/types/cmat-components-breadcrumb.d.ts +40 -37
- package/types/cmat-components-card.d.ts +11 -13
- package/types/cmat-components-carousel.d.ts +87 -113
- package/types/cmat-components-cascade.d.ts +84 -65
- package/types/cmat-components-chip-input.d.ts +29 -24
- package/types/cmat-components-code-editor.d.ts +28 -12
- package/types/cmat-components-color-picker.d.ts +236 -0
- package/types/cmat-components-custom-formly.d.ts +316 -184
- package/types/cmat-components-data-picker.d.ts +372 -0
- package/types/cmat-components-date-range.d.ts +31 -36
- package/types/cmat-components-date-time-display.d.ts +8 -8
- package/types/cmat-components-drawer.d.ts +30 -32
- package/types/cmat-components-empty-state.d.ts +9 -10
- package/types/cmat-components-file-preview.d.ts +9 -9
- package/types/cmat-components-filter-toolbar.d.ts +15 -15
- package/types/cmat-components-form-actions.d.ts +5 -5
- package/types/cmat-components-fullscreen.d.ts +5 -5
- package/types/cmat-components-highlight.d.ts +13 -14
- package/types/cmat-components-image-viewer.d.ts +29 -33
- package/types/cmat-components-inline-loading.d.ts +6 -6
- package/types/cmat-components-json-editor.d.ts +15 -17
- package/types/cmat-components-knob-input.d.ts +58 -55
- package/types/cmat-components-masonry.d.ts +9 -12
- package/types/cmat-components-material-color-picker.d.ts +16 -21
- package/types/cmat-components-material-datetimepicker.d.ts +174 -216
- package/types/cmat-components-navigation.d.ts +34 -39
- package/types/cmat-components-opt-input.d.ts +35 -33
- package/types/cmat-components-org-chart.d.ts +8 -9
- package/types/cmat-components-page-header.d.ts +9 -9
- package/types/cmat-components-pagination.d.ts +36 -40
- package/types/cmat-components-password-strength.d.ts +58 -64
- package/types/cmat-components-popover.d.ts +22 -32
- package/types/cmat-components-progress-bar.d.ts +7 -10
- package/types/cmat-components-qrcode.d.ts +22 -22
- package/types/cmat-components-rating.d.ts +17 -19
- package/types/cmat-components-rich-text-editor.d.ts +11 -12
- package/types/cmat-components-select-search.d.ts +48 -36
- package/types/cmat-components-select-table.d.ts +38 -34
- package/types/cmat-components-select-tree.d.ts +17 -15
- package/types/cmat-components-skeleton.d.ts +27 -10
- package/types/cmat-components-speed-dial.d.ts +24 -33
- package/types/cmat-components-status-tag.d.ts +19 -9
- package/types/cmat-components-table-toolbar.d.ts +7 -7
- package/types/cmat-components-timeline.d.ts +33 -34
- package/types/cmat-components-toast.d.ts +26 -30
- package/types/cmat-components-transfer-picker.d.ts +51 -56
- package/types/cmat-components-treetable.d.ts +12 -13
- package/types/cmat-components-upload.d.ts +33 -38
- package/types/cmat-components-x6-angular-shape.d.ts +1 -1
- package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
- package/types/cmat-directives-arrow-cursor.d.ts +18 -20
- package/types/cmat-directives-data-exporter.d.ts +10 -10
- package/types/cmat-directives-debounce.d.ts +5 -5
- package/types/cmat-directives-digit-only.d.ts +13 -13
- package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
- package/types/cmat-pipes-secure.d.ts +1 -3
- package/types/cmat-services-alert.d.ts +11 -12
- package/types/cmat-services-config.d.ts +2 -7
- package/types/cmat-services-confirmation.d.ts +2 -2
- package/types/cmat-services-data.d.ts +0 -1
- package/types/cmat-services-loading.d.ts +14 -22
- package/types/cmat-services-media-watcher.d.ts +5 -5
- package/types/cmat-services-translation.d.ts +4 -5
- package/types/cmat.d.ts +2167 -1746
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmat-components-data-picker.mjs","sources":["../../../projects/cmat/components/data-picker/data-picker.providers.ts","../../../projects/cmat/components/data-picker/data-picker-list.component.ts","../../../projects/cmat/components/data-picker/data-picker-list.component.html","../../../projects/cmat/components/data-picker/data-picker-sheet.component.ts","../../../projects/cmat/components/data-picker/data-picker-sheet.component.html","../../../projects/cmat/components/data-picker/data-picker-dialog.component.ts","../../../projects/cmat/components/data-picker/data-picker-dialog.component.html","../../../projects/cmat/components/data-picker/data-picker-drawer.component.ts","../../../projects/cmat/components/data-picker/data-picker-drawer.component.html","../../../projects/cmat/components/data-picker/data-picker.component.ts","../../../projects/cmat/components/data-picker/data-picker.component.html","../../../projects/cmat/components/data-picker/cmat-components-data-picker.ts"],"sourcesContent":["import { CmatDataService } from 'cmat/services/data';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { DataSourceConfig, DataPickerProvider, DataPickerQuery, PagedResult } from './data-picker.type';\r\n\r\n/**\r\n * HTTP数据提供者实现\r\n */\r\nexport class HttpDataPickerProvider<T = any> implements DataPickerProvider<T> {\r\n constructor(\r\n private _dataService: CmatDataService,\r\n private _config: DataSourceConfig<T>\r\n ) {}\r\n\r\n loadPage(query: DataPickerQuery): Observable<PagedResult<T>> {\r\n const { \r\n url, \r\n method = 'post', \r\n params = {}, \r\n searchParam = 'search',\r\n orderByField = 'orderBy',\r\n descField = 'desc',\r\n responseMapper \r\n } = this._config;\r\n\r\n // 构建请求参数\r\n const requestParams: Record<string, any> = { ...params };\r\n\r\n // 添加分页参数(使用后端期望的字段名)\r\n requestParams.pageIndex = query.page;\r\n requestParams.pageSize = query.size;\r\n\r\n // 添加搜索参数(支持自定义字段名)\r\n if (query.search) {\r\n requestParams[searchParam] = query.search;\r\n }\r\n\r\n // 添加排序参数(固定使用 orderBy 和 desc,但字段名可配置)\r\n if (query.orderBy) {\r\n requestParams[orderByField] = query.orderBy;\r\n requestParams[descField] = query.desc ?? false;\r\n }\r\n\r\n // 根据请求方法调用不同的服务\r\n const request$ = method.toLowerCase() === 'get'\r\n ? this._dataService.get(url, requestParams)\r\n : this._dataService.post(url, requestParams);\r\n\r\n return request$.pipe(\r\n map((res) => {\r\n // 如果提供了自定义映射函数,优先使用\r\n if (responseMapper) {\r\n return responseMapper(res);\r\n }\r\n \r\n // 默认映射:支持多种常见的响应格式\r\n const record = res as Record<string, unknown>;\r\n \r\n // 尝试常见的数据字段名\r\n const data = (record['data'] ?? record['detail'] ?? record['items'] ?? record['list'] ?? []) as T[];\r\n \r\n // 尝试常见的总数字段名\r\n const total = (record['total'] ?? record['totalCount'] ?? record['count'] ?? record['totalItems'] ?? 0) as number;\r\n \r\n return {\r\n data,\r\n total\r\n };\r\n })\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 创建HTTP数据提供者的工厂函数\r\n * @param config 数据源配置\r\n * @param dataService CmatDataService 实例\r\n */\r\nexport function createHttpDataProvider<T = unknown>(\r\n config: DataSourceConfig<T>, \r\n dataService: CmatDataService\r\n): DataPickerProvider<T> {\r\n return new HttpDataPickerProvider<T>(dataService, config);\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ViewEncapsulation,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n effect,\r\n inject,\r\n untracked,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSortModule, Sort } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { CmatPaginationComponent, CmatPaginatePipe, CmatPaginationInstance } from 'cmat/components/pagination';\r\nimport { EMPTY } from 'rxjs';\r\nimport { catchError, debounceTime, distinctUntilChanged, startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { DataPickerColumn, DataPickerProvider, PagedResult } from './data-picker.type';\r\n\r\n@Component({\r\n selector: 'cmat-data-picker-list',\r\n templateUrl: './data-picker-list.component.html',\r\n styleUrls: ['./data-picker-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatSortModule,\r\n MatTableModule,\r\n CmatPaginationComponent,\r\n CmatPaginatePipe\r\n ]\r\n})\r\nexport class CmatDataPickerListComponent<T = any> {\r\n // === 输入 ===\r\n readonly dataProvider = input.required<DataPickerProvider<T>>();\r\n readonly columns = input.required<DataPickerColumn[]>();\r\n readonly keyField = input<string>('id');\r\n readonly multiple = input<boolean>(false);\r\n readonly searchable = input<boolean>(true);\r\n readonly pageSize = input<number>(20);\r\n readonly searchPlaceholder = input<string>('搜索...');\r\n readonly emptyText = input<string>('暂无数据');\r\n readonly paginationId = input<string>('data-picker-pagination');\r\n\r\n // === 输出 ===\r\n readonly selectionChange = output<Set<string | number>>();\r\n\r\n // === 内部状态 ===\r\n readonly items = signal<T[]>([]);\r\n readonly loading = signal(false);\r\n readonly selectedItems = signal<Map<string | number, T>>(new Map());\r\n\r\n // === 分页状态(统一管理) ===\r\n readonly pagination = signal<CmatPaginationInstance>({\r\n currentPage: 1,\r\n itemsPerPage: 20,\r\n totalItems: 0\r\n });\r\n\r\n // === 排序状态 ===\r\n readonly sortState = signal<{ active?: string; direction?: 'asc' | 'desc' }>({});\r\n\r\n // === 搜索控制 ===\r\n readonly searchControl = new FormControl<string>('');\r\n\r\n // === 计算属性 ===\r\n readonly displayedColumns = computed(() => {\r\n const cols = this.columns().map(c => c.key);\r\n return ['_selection', ...cols];\r\n });\r\n\r\n readonly selectedCount = computed(() => this.selectedItems().size);\r\n\r\n readonly isAllSelected = computed(() => {\r\n if (!this.multiple() || this.items().length === 0) {\r\n return false;\r\n }\r\n return this.items().every(item =>\r\n this.selectedItems().has(this.getItemKey(item))\r\n );\r\n });\r\n\r\n readonly isIndeterminate = computed(() => {\r\n if (!this.multiple()) {\r\n return false;\r\n }\r\n const selectedCount = this.items().filter(item =>\r\n this.selectedItems().has(this.getItemKey(item))\r\n ).length;\r\n return selectedCount > 0 && selectedCount < this.items().length;\r\n });\r\n\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n // 监听搜索变化,带防抖\r\n effect(() => {\r\n const provider = this.dataProvider();\r\n if (!provider) return;\r\n\r\n untracked(() => {\r\n this.searchControl.valueChanges.pipe(\r\n startWith(''),\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.loading.set(true)),\r\n switchMap((search) => {\r\n // 在闭包中捕获当前的排序状态\r\n const currentSort = this.sortState();\r\n\r\n return provider.loadPage({\r\n page: 1,\r\n size: this.pagination().itemsPerPage,\r\n search: search ?? undefined,\r\n orderBy: currentSort.active,\r\n desc: currentSort.direction === 'desc'\r\n });\r\n }),\r\n takeUntilDestroyed(this._destroyRef),\r\n catchError((error) => {\r\n console.error('Search failed:', error);\r\n this.items.set([]);\r\n return EMPTY;\r\n })\r\n ).subscribe((result: PagedResult<T>) => {\r\n // 确保即使返回空数组也正确更新状态\r\n this.items.set(result.data || []);\r\n this.pagination.update(p => ({ ...p, currentPage: 1, totalItems: result.total || 0 }));\r\n this.loading.set(false);\r\n });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * 加载数据(公共方法,用于初始化和重置)\r\n */\r\n loadData(): void {\r\n this._loadPageData(\r\n this.pagination().currentPage,\r\n this.pagination().itemsPerPage,\r\n this.searchControl.value ?? undefined\r\n );\r\n }\r\n\r\n /**\r\n * 重置组件状态(用于重新打开时)\r\n */\r\n reset(): void {\r\n // 重置分页状态\r\n this.pagination.set({\r\n currentPage: 1,\r\n itemsPerPage: this.pageSize(),\r\n totalItems: 0\r\n });\r\n\r\n // 重置排序状态\r\n this.sortState.set({});\r\n\r\n // 清空搜索(不触发事件,避免重复加载)\r\n this.searchControl.setValue('', { emitEvent: false });\r\n\r\n // 清空选中项\r\n this.selectedItems.set(new Map());\r\n\r\n // 清空数据列表\r\n this.items.set([]);\r\n\r\n // 重新加载数据\r\n this._loadPageData(1, this.pageSize(), '', undefined, undefined);\r\n }\r\n\r\n /**\r\n * 获取项的唯一键\r\n */\r\n getItemKey(item: T): string | number {\r\n return (item as Record<string, unknown>)[this.keyField()] as string | number;\r\n }\r\n\r\n /**\r\n * 判断是否选中\r\n */\r\n isSelected(item: T): boolean {\r\n return this.selectedItems().has(this.getItemKey(item));\r\n }\r\n\r\n /**\r\n * 切换单个项的选中状态\r\n */\r\n toggleSelection(item: T, checked: boolean): void {\r\n const key = this.getItemKey(item);\r\n const newMap = new Map(this.selectedItems());\r\n\r\n if (checked) {\r\n newMap.set(key, item);\r\n } else {\r\n newMap.delete(key);\r\n }\r\n\r\n this.selectedItems.set(newMap);\r\n this._emitSelectionChange();\r\n }\r\n\r\n /**\r\n * 单选模式\r\n */\r\n selectSingle(item: T): void {\r\n const key = this.getItemKey(item);\r\n const newMap = new Map<string | number, T>();\r\n newMap.set(key, item);\r\n this.selectedItems.set(newMap);\r\n this._emitSelectionChange();\r\n }\r\n\r\n /**\r\n * 全选/取消全选当前页\r\n */\r\n toggleSelectAll(checked: boolean): void {\r\n const newMap = new Map(this.selectedItems());\r\n\r\n if (checked) {\r\n // 选中当前页所有项\r\n this.items().forEach((item) => {\r\n newMap.set(this.getItemKey(item), item);\r\n });\r\n } else {\r\n // 取消当前页所有项\r\n const currentKeys = new Set(\r\n this.items().map(item => this.getItemKey(item))\r\n );\r\n currentKeys.forEach(key => newMap.delete(key));\r\n }\r\n\r\n this.selectedItems.set(newMap);\r\n this._emitSelectionChange();\r\n }\r\n\r\n /**\r\n * 行点击事件\r\n */\r\n onRowClick(item: T): void {\r\n if (this.multiple()) {\r\n const checked = !this.isSelected(item);\r\n this.toggleSelection(item, checked);\r\n } else {\r\n this.selectSingle(item);\r\n }\r\n }\r\n\r\n /**\r\n * 排序变化\r\n */\r\n onSortChange(sort: Sort): void {\r\n // 更新排序状态\r\n this.sortState.set({\r\n active: sort.active || undefined,\r\n direction: sort.direction === 'asc' || sort.direction === 'desc' ? sort.direction : undefined\r\n });\r\n\r\n // 重置到第一页并重新加载数据\r\n this.pagination.update(p => ({ ...p, currentPage: 1 }));\r\n\r\n this._loadPageData(\r\n 1,\r\n this.pagination().itemsPerPage,\r\n this.searchControl.value ?? undefined,\r\n sort.active || undefined,\r\n sort.direction === 'desc'\r\n );\r\n }\r\n\r\n /**\r\n * 页码变化\r\n */\r\n onPageChange(page: number): void {\r\n this.pagination.update(p => ({ ...p, currentPage: page }));\r\n\r\n const currentSort = this.sortState();\r\n this._loadPageData(\r\n page,\r\n this.pagination().itemsPerPage,\r\n this.searchControl.value ?? undefined,\r\n currentSort.active,\r\n currentSort.direction === 'desc'\r\n );\r\n }\r\n\r\n /**\r\n * 每页数量变化\r\n */\r\n onPageSizeChange(size: number): void {\r\n // 更新分页状态\r\n this.pagination.update(p => ({ ...p, itemsPerPage: size, currentPage: 1 }));\r\n\r\n // 直接使用新的 size 加载第一页数据\r\n const currentSort = this.sortState();\r\n this._loadPageData(\r\n 1,\r\n size,\r\n this.searchControl.value ?? undefined,\r\n currentSort.active,\r\n currentSort.direction === 'desc'\r\n );\r\n }\r\n\r\n /**\r\n * 获取选中的项数组\r\n */\r\n getSelectedArray(): T[] {\r\n return Array.from(this.selectedItems().values());\r\n }\r\n\r\n /**\r\n * 设置选中项(用于初始化)\r\n */\r\n setSelectedItems(items: T[]): void {\r\n const newMap = new Map<string | number, T>();\r\n items.forEach((item) => {\r\n newMap.set(this.getItemKey(item), item);\r\n });\r\n this.selectedItems.set(newMap);\r\n }\r\n\r\n /**\r\n * 加载数据(统一入口,私有方法)\r\n */\r\n private _loadPageData(\r\n page: number,\r\n size: number,\r\n search?: string,\r\n orderBy?: string,\r\n desc?: boolean\r\n ): void {\r\n const provider = this.dataProvider();\r\n if (!provider) {\r\n this.loading.set(false);\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n provider.loadPage({\r\n page,\r\n size,\r\n search: search ?? undefined,\r\n orderBy,\r\n desc\r\n }).subscribe({\r\n next: (result: PagedResult<T>) => {\r\n // 确保即使返回空数组也正确更新状态\r\n this.items.set(result.data || []);\r\n this.pagination.update(p => ({ ...p, totalItems: result.total || 0 }));\r\n // 无论数据是否为空,都要关闭加载状态\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Failed to load data:', error);\r\n // 发生错误时也要关闭加载状态\r\n this.items.set([]);\r\n this.loading.set(false);\r\n },\r\n complete: () => {\r\n // 确保在流完成时也关闭加载状态(防御性编程)\r\n if (this.loading()) {\r\n this.loading.set(false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 发出选择变化事件(私有方法)\r\n */\r\n private _emitSelectionChange(): void {\r\n const keys = new Set(this.selectedItems().keys());\r\n this.selectionChange.emit(keys);\r\n }\r\n\r\n\r\n}","<div class=\"flex flex-col h-full\">\r\n <!-- 搜索框 -->\r\n @if (searchable()) {\r\n <div class=\"px-4 py-3 border-b\">\r\n <mat-form-field class=\"w-full\">\r\n <mat-icon matPrefix [svgIcon]=\"'heroicons_outline:magnifying-glass'\"></mat-icon>\r\n <input matInput [formControl]=\"searchControl\" [placeholder]=\"searchPlaceholder()\" />\r\n </mat-form-field>\r\n </div>\r\n }\r\n\r\n <!-- 数据表格 -->\r\n <div class=\"flex-1 overflow-y-auto scrollbar-custom\">\r\n @if (loading()) {\r\n <div class=\"flex items-center justify-center h-full min-h-30\">\r\n <mat-progress-spinner mode=\"indeterminate\" diameter=\"40\"></mat-progress-spinner>\r\n </div>\r\n } @else if (items().length === 0) {\r\n <div class=\"flex flex-col items-center justify-center h-full py-8\">\r\n <mat-icon class=\"icon-size-16 text-hint\" [svgIcon]=\"'heroicons_outline:inbox'\"></mat-icon>\r\n <p class=\"mt-2 text-secondary\">{{ emptyText() }}</p>\r\n </div>\r\n } @else {\r\n <table mat-table matSort class=\"w-full\"\r\n [dataSource]=\"items() | paginate: {id:paginationId(),currentPage: pagination().currentPage, itemsPerPage: pagination().itemsPerPage, totalItems: pagination().totalItems}\"\r\n (matSortChange)=\"onSortChange($event)\">\r\n\r\n <!-- 选择列 -->\r\n <ng-container matColumnDef=\"_selection\">\r\n <th *matHeaderCellDef mat-header-cell class=\"w-12\">\r\n @if (multiple()) {\r\n <mat-checkbox [checked]=\"isAllSelected()\" [indeterminate]=\"isIndeterminate()\"\r\n (change)=\"toggleSelectAll($event.checked)\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td *matCellDef=\"let item\" mat-cell class=\"w-12\">\r\n @if (multiple()) {\r\n <mat-checkbox [checked]=\"isSelected(item)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleSelection(item, $event.checked)\">\r\n </mat-checkbox>\r\n } @else {\r\n <mat-radio-button [checked]=\"isSelected(item)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"selectSingle(item)\">\r\n </mat-radio-button>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n <!-- 数据列 -->\r\n @for (column of columns(); track column.key) {\r\n <ng-container [matColumnDef]=\"column.key\">\r\n <th *matHeaderCellDef mat-header-cell \r\n [mat-sort-header]=\"column.sortable ? column.key : ''\"\r\n [disabled]=\"!column.sortable\"\r\n [start]=\"column.sortable ? 'asc' : ''\">\r\n {{ column.name }}\r\n </th>\r\n <td *matCellDef=\"let item\" mat-cell>\r\n <div class=\"has-label-on-mobile\" [attr.data-label]=\"column.name + ':'\">\r\n {{ item[column.key] }}\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr *matHeaderRowDef=\"displayedColumns(); sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let item; columns: displayedColumns()\" mat-row class=\"cursor-pointer\" (click)=\"onRowClick(item)\">\r\n </tr>\r\n </table>\r\n }\r\n </div>\r\n\r\n <!-- 分页器 -->\r\n <div class=\"border-t\">\r\n <cmat-pagination class=\"bg-slate-50 dark:bg-transparent\" [id]=\"paginationId()\" [initPerPage]=\"pageSize()\"\r\n [ngClass]=\"{'pointer-events-none': loading()}\" [hidden]=\"pagination().totalItems=== 0\" (pageChange)=\"onPageChange($event)\"\r\n (perPageCountChange)=\"onPageSizeChange($event)\">\r\n </cmat-pagination>\r\n </div>\r\n\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n inject,\r\n computed,\r\n AfterViewInit,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatDataPickerListComponent } from './data-picker-list.component';\r\nimport { DataPickerColumn, DataPickerProvider } from './data-picker.type';\r\n\r\n/**\r\n * BottomSheet传递的数据\r\n */\r\nexport interface DataPickerSheetData<T = any> {\r\n dataProvider: DataPickerProvider<T>;\r\n columns: DataPickerColumn[];\r\n keyField: string;\r\n multiple: boolean;\r\n searchable: boolean;\r\n pageSize: number;\r\n initialSelection?: T[];\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-data-picker-sheet',\r\n templateUrl: './data-picker-sheet.component.html',\r\n styleUrls: ['./data-picker-sheet.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n MatButtonModule,\r\n MatIconModule,\r\n CmatDataPickerListComponent\r\n ]\r\n})\r\nexport class CmatDataPickerSheetComponent<T = any> implements AfterViewInit {\r\n readonly data = inject<DataPickerSheetData<T>>(MAT_BOTTOM_SHEET_DATA);\r\n readonly title = computed(() => this.data.multiple ? '选择多项' : '选择一项');\r\n\r\n private readonly _listComponent = viewChild.required(CmatDataPickerListComponent<T>);\r\n\r\n private readonly _bottomSheetRef = inject(MatBottomSheetRef<CmatDataPickerSheetComponent<T>>);\r\n\r\n private _selectedKeys = new Set<string | number>();\r\n\r\n constructor() {\r\n // 初始化选中项\r\n if (this.data.initialSelection && this.data.initialSelection.length > 0) {\r\n const keys: (string | number)[] = this.data.initialSelection.map(\r\n item => (item as Record<string, unknown>)[this.data.keyField] as string | number\r\n );\r\n this._selectedKeys = new Set<string | number>(keys);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 在视图初始化后,如果已有选中项,设置到 list 组件\r\n if (this.data.initialSelection && this.data.initialSelection.length > 0) {\r\n this._listComponent().setSelectedItems(this.data.initialSelection);\r\n }\r\n }\r\n\r\n onSelectionChange(keys: Set<string | number>): void {\r\n this._selectedKeys = keys;\r\n }\r\n\r\n dismiss(): void {\r\n this._bottomSheetRef.dismiss();\r\n }\r\n\r\n confirm(): void {\r\n const selectedItems = this._listComponent().getSelectedArray();\r\n const result = this.data.multiple ? selectedItems : (selectedItems[0] ?? null);\r\n this._bottomSheetRef.dismiss(result);\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full max-h-[70vh] -mx-4\">\r\n <!-- 头部 -->\r\n <div class=\"flex items-center justify-between px-4 py-3 border-b bg-card\">\r\n <h2 class=\"text-lg font-semibold\">{{ title() }}</h2>\r\n <button matIconButton (click)=\"dismiss()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- 列表内容 -->\r\n <div class=\"flex-1 overflow-hidden min-h-0 flex\">\r\n <cmat-data-picker-list [dataProvider]=\"data.dataProvider\" [columns]=\"data.columns\" [keyField]=\"data.keyField\"\r\n [multiple]=\"data.multiple\" [searchable]=\"data.searchable\" [pageSize]=\"data.pageSize\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </cmat-data-picker-list>\r\n </div>\r\n <!-- 底部操作栏 -->\r\n <div class=\"px-4 py-3 border-t flex justify-end gap-2\">\r\n <button matButton=\"filled\" color=\"primary\" (click)=\"confirm()\">\r\n 确定\r\n </button>\r\n <button matButton=\"outlined\" (click)=\"dismiss()\">取消</button>\r\n </div>\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n inject,\r\n computed,\r\n AfterViewInit,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatDataPickerListComponent } from './data-picker-list.component';\r\nimport { DataPickerColumn, DataPickerProvider } from './data-picker.type';\r\n\r\n/**\r\n * Dialog传递的数据\r\n */\r\nexport interface DataPickerDialogData<T = any> {\r\n dataProvider: DataPickerProvider<T>;\r\n columns: DataPickerColumn[];\r\n keyField: string;\r\n multiple: boolean;\r\n searchable: boolean;\r\n pageSize: number;\r\n initialSelection?: T[];\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-data-picker-dialog',\r\n templateUrl: './data-picker-dialog.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n MatButtonModule,\r\n MatIconModule,\r\n CmatDataPickerListComponent\r\n ]\r\n})\r\nexport class CmatDataPickerDialogComponent<T = any> implements AfterViewInit {\r\n readonly data = inject<DataPickerDialogData<T>>(MAT_DIALOG_DATA);\r\n readonly title = computed(() => this.data.multiple ? '选择多项' : '选择一项');\r\n\r\n private readonly _listComponent = viewChild.required(CmatDataPickerListComponent<T>);\r\n private readonly _dialogRef = inject(MatDialogRef<CmatDataPickerDialogComponent<T>>);\r\n\r\n private _selectedKeys = new Set<string | number>();\r\n\r\n constructor() {\r\n // 初始化选中项\r\n if (this.data.initialSelection && this.data.initialSelection.length > 0) {\r\n const keys: (string | number)[] = this.data.initialSelection.map(\r\n item => (item as Record<string, unknown>)[this.data.keyField] as string | number\r\n );\r\n this._selectedKeys = new Set<string | number>(keys);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // 在视图初始化后,如果已有选中项,设置到 list 组件\r\n if (this.data.initialSelection && this.data.initialSelection.length > 0) {\r\n this._listComponent().setSelectedItems(this.data.initialSelection);\r\n }\r\n }\r\n\r\n onSelectionChange(keys: Set<string | number>): void {\r\n this._selectedKeys = keys;\r\n }\r\n\r\n dismiss(): void {\r\n this._dialogRef.close();\r\n }\r\n\r\n confirm(): void {\r\n const selectedItems = this._listComponent().getSelectedArray();\r\n const result = this.data.multiple ? selectedItems : (selectedItems[0] ?? null);\r\n this._dialogRef.close(result);\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full max-h-[80vh]\">\r\n <!-- 头部 -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b\">\r\n <h2 class=\"text-xl font-semibold\">{{ title() }}</h2>\r\n <button matIconButton (click)=\"dismiss()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- 列表内容 -->\r\n <div class=\"flex-1 overflow-hidden min-h-0 flex\">\r\n <cmat-data-picker-list [dataProvider]=\"data.dataProvider\" [columns]=\"data.columns\" [keyField]=\"data.keyField\"\r\n [multiple]=\"data.multiple\" [searchable]=\"data.searchable\" [pageSize]=\"data.pageSize\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </cmat-data-picker-list>\r\n </div>\r\n\r\n <!-- 底部操作栏 -->\r\n <div class=\"px-6 py-4 border-t flex justify-end gap-2\">\r\n <button matButton=\"filled\" color=\"primary\" (click)=\"confirm()\">\r\n 确定\r\n </button>\r\n <button matButton=\"outlined\" (click)=\"dismiss()\">取消</button>\r\n </div>\r\n</div>","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n AfterViewInit,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatDataPickerListComponent } from './data-picker-list.component';\r\nimport { DataPickerColumn, DataPickerProvider } from './data-picker.type';\r\n\r\n/**\r\n * Drawer传递的数据\r\n */\r\nexport interface DataPickerDrawerData<T = any> {\r\n dataProvider: DataPickerProvider<T>;\r\n columns: DataPickerColumn[];\r\n keyField: string;\r\n multiple: boolean;\r\n searchable: boolean;\r\n pageSize: number;\r\n initialSelection?: T[];\r\n onConfirm?: (items: T | T[] | null) => void;\r\n onClose?: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'cmat-data-picker-drawer',\r\n templateUrl: './data-picker-drawer.component.html',\r\n styleUrls: ['./data-picker-drawer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n MatButtonModule,\r\n MatIconModule,\r\n CmatDataPickerListComponent\r\n ]\r\n})\r\nexport class CmatDataPickerDrawerComponent<T = any> implements AfterViewInit {\r\n data!: DataPickerDrawerData<T>;\r\n\r\n readonly title = computed(() => this.data?.multiple ? '选择多项' : '选择一项');\r\n\r\n private readonly _listComponent = viewChild.required(CmatDataPickerListComponent<T>);\r\n\r\n private _selectedKeys = new Set<string | number>();\r\n\r\n ngAfterViewInit(): void {\r\n // 在视图初始化后,如果已有选中项,设置到 list 组件\r\n if (this.data.initialSelection && this.data.initialSelection.length > 0) {\r\n const keys: (string | number)[] = this.data.initialSelection.map(\r\n item => (item as Record<string, unknown>)[this.data.keyField] as string | number\r\n );\r\n this._selectedKeys = new Set<string | number>(keys);\r\n\r\n this._listComponent().setSelectedItems(this.data.initialSelection);\r\n }\r\n }\r\n\r\n onSelectionChange(keys: Set<string | number>): void {\r\n this._selectedKeys = keys;\r\n }\r\n\r\n dismiss(): void {\r\n // 触发关闭回调\r\n if (this.data.onClose) {\r\n this.data.onClose();\r\n }\r\n }\r\n\r\n confirm(): void {\r\n const selectedItems = this._listComponent().getSelectedArray();\r\n const result = this.data.multiple ? selectedItems : (selectedItems[0] ?? null);\r\n\r\n if (this.data.onConfirm) {\r\n this.data.onConfirm(result);\r\n }\r\n\r\n // 确认后也要关闭\r\n if (this.data.onClose) {\r\n this.data.onClose();\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full\">\r\n <!-- 头部 -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b bg-card\">\r\n <h2 class=\"text-xl font-semibold\">{{ title() }}</h2>\r\n <button matIconButton (click)=\"dismiss()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <!-- 列表内容 -->\r\n <div class=\"flex-1 overflow-hidden min-h-0 flex\">\r\n <cmat-data-picker-list [dataProvider]=\"data.dataProvider\" [columns]=\"data.columns\" [keyField]=\"data.keyField\"\r\n [multiple]=\"data.multiple\" [searchable]=\"data.searchable\" [pageSize]=\"data.pageSize\"\r\n (selectionChange)=\"onSelectionChange($event)\">\r\n </cmat-data-picker-list>\r\n </div>\r\n\r\n <!-- 底部操作栏 -->\r\n <div class=\"px-6 py-4 border-t bg-card flex justify-end gap-2\">\r\n <button matButton=\"filled\" color=\"primary\" (click)=\"confirm()\">\r\n 确定\r\n </button>\r\n <button matButton=\"outlined\" (click)=\"dismiss()\">取消</button>\r\n </div>\r\n</div>","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n signal,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n CmatDataPickerDialogComponent,\r\n DataPickerDialogData,\r\n} from './data-picker-dialog.component';\r\nimport {\r\n CmatDataPickerDrawerComponent,\r\n DataPickerDrawerData,\r\n} from './data-picker-drawer.component';\r\nimport {\r\n CmatDataPickerSheetComponent,\r\n DataPickerSheetData,\r\n} from './data-picker-sheet.component';\r\nimport {\r\n DataSourceConfig,\r\n DataPickerColumn,\r\n DataPickerProvider,\r\n} from './data-picker.type';\r\n\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-data-picker',\r\n templateUrl: './data-picker.component.html',\r\n styleUrls: ['./data-picker.component.scss'],\r\n providers: [\r\n { provide: MatFormFieldControl, useExisting: CmatDataPickerComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n CommonModule,\r\n MatChipsModule,\r\n MatIconModule\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 CmatDataPickerComponent<T = any> implements MatFormFieldControl<T | T[]>, ControlValueAccessor, OnInit, OnDestroy {\r\n readonly id = `cmat-data-picker-${NEXT_ID++}`;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n controlType = 'cmat-data-picker';\r\n userAriaDescribedBy?: string;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n\r\n readonly apiUrl = input<string>();\r\n readonly dataSource = input<DataSourceConfig>();\r\n readonly dataProvider = input<DataPickerProvider<T>>();\r\n\r\n readonly columns = input<DataPickerColumn[]>([]);\r\n readonly keyField = input<string>('id');\r\n readonly labelField = input<string>('name');\r\n readonly displayTemplate = input<string>();\r\n readonly displayLabelFn = input<(item: T) => string>();\r\n\r\n readonly multiple = input<boolean>(false);\r\n readonly searchable = input<boolean>(true);\r\n readonly debounceTime = input<number>(300);\r\n readonly pageSize = input<number>(20);\r\n\r\n readonly uiMode = input<'auto' | 'drawer' | 'dialog' | 'bottom-sheet'>('auto');\r\n readonly drawerPosition = input<'start' | 'end'>('end');\r\n readonly drawerWidth = input<string>('600px');\r\n readonly dialogWidth = input<string>('800px');\r\n readonly dialogMaxHeight = input<string>('80vh');\r\n\r\n readonly selectionChange = output<T | T[]>();\r\n\r\n readonly selectedItems = signal<Map<string | number, T>>(new Map());\r\n\r\n private readonly _placeholderSignal = signal<string>('请选择...');\r\n private readonly _disabledSignal = signal<boolean>(false);\r\n private readonly _requiredSignal = signal(false);\r\n private readonly _focusedSignal = signal<boolean>(false);\r\n private readonly _valueSignal = signal<T | T[] | null>(null);\r\n\r\n private _formField = inject(MatFormField, { optional: true });\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _bottomSheet = inject(MatBottomSheet);\r\n private readonly _dialog = inject(MatDialog);\r\n private readonly _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private readonly _elementRef = inject(ElementRef);\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly isHandSet = computed(() => {\r\n return !this._cmatMediaWatcherService.mediaChange().matchingAliases.includes('lg')\r\n });\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 get appearanceIsFill(): boolean {\r\n if (this._formField?.appearance === 'fill') {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focusedSignal();\r\n }\r\n\r\n get empty(): boolean {\r\n return this.selectedItems().size === 0;\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.ngControl.invalid && (this.ngControl.dirty ?? this.ngControl.touched)) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\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 // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get value(): T | T[] | null {\r\n return this._valueSignal();\r\n }\r\n set value(val: T | T[] | null) {\r\n if (val !== this._valueSignal()) {\r\n this._valueSignal.set(val);\r\n\r\n // 同步更新 selectedItems\r\n if (val === null || val === undefined) {\r\n this.selectedItems.set(new Map());\r\n } else if (Array.isArray(val)) {\r\n const newMap = new Map<string | number, T>();\r\n val.forEach((item) => {\r\n const key = (item as Record<string, unknown>)[this.keyField()] as string | number;\r\n newMap.set(key, item);\r\n });\r\n this.selectedItems.set(newMap);\r\n } else {\r\n const newMap = new Map<string | number, T>();\r\n const key = (val as Record<string, unknown>)[this.keyField()] as string | number;\r\n newMap.set(key, val);\r\n this.selectedItems.set(newMap);\r\n }\r\n\r\n this.stateChanges.next();\r\n this._onChange(val);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\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 // eslint-disable-next-line @typescript-eslint/member-ordering\r\n @Input()\r\n get disabled(): boolean {\r\n if (this.ngControl?.disabled != null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabledSignal();\r\n }\r\n set disabled(value: BooleanInput) {\r\n const coerced = coerceBooleanProperty(value);\r\n this._disabledSignal.set(coerced);\r\n this.stateChanges.next();\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n // Initialize data provider if needed\r\n const ds = this.dataSource();\r\n const url = this.apiUrl();\r\n\r\n if (url && !ds) {\r\n // Cannot set input() signals, log warning for parent component to handle\r\n console.warn('apiUrl is provided without dataSource. Please provide complete dataSource or dataProvider from parent component.');\r\n }\r\n\r\n if (!this.dataProvider() && ds) {\r\n // Create provider internally but cannot update the input signal\r\n // Parent component should provide dataProvider directly\r\n console.warn('dataSource is provided without dataProvider. Please create dataProvider using createHttpDataProvider in parent component.');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n if (ids.length) {\r\n this.userAriaDescribedBy = ids.join(' ');\r\n (this._elementRef.nativeElement as HTMLElement).setAttribute('aria-describedby', ids.join(' '));\r\n } else {\r\n this.userAriaDescribedBy = undefined;\r\n (this._elementRef.nativeElement as HTMLElement).removeAttribute('aria-describedby');\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this.openPicker();\r\n }\r\n }\r\n\r\n\r\n writeValue(value: T | T[] | null): void {\r\n this._valueSignal.set(value);\r\n\r\n if (value === null || value === undefined) {\r\n this.selectedItems.set(new Map());\r\n } else if (Array.isArray(value)) {\r\n const newMap = new Map<string | number, T>();\r\n value.forEach((item) => {\r\n const key = (item as Record<string, unknown>)[this.keyField()] as string | number;\r\n newMap.set(key, item);\r\n });\r\n this.selectedItems.set(newMap);\r\n } else {\r\n const newMap = new Map<string | number, T>();\r\n const key = (value as Record<string, unknown>)[this.keyField()] as string | number;\r\n newMap.set(key, value);\r\n this.selectedItems.set(newMap);\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: T | T[] | null) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n /**\r\n * Open picker\r\n */\r\n openPicker(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const mode = this.resolveUIMode();\r\n const data = this.getPickerData();\r\n\r\n switch (mode) {\r\n case 'bottom-sheet':\r\n this.openBottomSheet(data);\r\n break;\r\n case 'dialog':\r\n this.openDialog(data);\r\n break;\r\n case 'drawer':\r\n this.openDrawer();\r\n break;\r\n }\r\n\r\n this._onTouched();\r\n }\r\n\r\n\r\n removeItem(item: T): void {\r\n const key = (item as Record<string, unknown>)[this.keyField()] as string | number;\r\n const newMap = new Map(this.selectedItems());\r\n newMap.delete(key);\r\n\r\n const selectedArray = Array.from(newMap.values());\r\n const finalValue = this.multiple() ? selectedArray : (selectedArray[0] ?? null);\r\n\r\n // 直接设置 value,它会同时更新 _valueSignal、selectedItems,并触发 _onChange\r\n this.value = finalValue;\r\n this.selectionChange.emit(finalValue as T | T[]);\r\n }\r\n\r\n hasValue(): boolean {\r\n return this.selectedItems().size > 0;\r\n }\r\n\r\n getDisplayLabel(item: T): string {\r\n // First use custom function\r\n const labelFn = this.displayLabelFn();\r\n if (labelFn) {\r\n return labelFn(item);\r\n }\r\n\r\n // Second use template\r\n const template = this.displayTemplate();\r\n if (template) {\r\n return this.formatTemplate(template, item);\r\n }\r\n\r\n // Default use labelField\r\n return ((item as Record<string, unknown>)[this.labelField()] as string) ?? String(item);\r\n }\r\n\r\n /**\r\n * Get selected items array\r\n */\r\n getSelectedArray(): T[] {\r\n return Array.from(this.selectedItems().values());\r\n }\r\n\r\n /**\r\n * Handle focus event\r\n */\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this._focusedSignal.set(true);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Handle blur event\r\n */\r\n onFocusOut(): void {\r\n if (this.focused) {\r\n this._focusedSignal.set(false);\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Resolve UI mode\r\n */\r\n private resolveUIMode(): 'bottom-sheet' | 'dialog' | 'drawer' {\r\n const mode = this.uiMode();\r\n if (mode !== 'auto') {\r\n return mode;\r\n }\r\n return this.isHandSet() ? 'bottom-sheet' : 'dialog';\r\n }\r\n\r\n /**\r\n * Get picker data\r\n */\r\n private getPickerData(): DataPickerDialogData<T> {\r\n return {\r\n dataProvider: this.dataProvider()!,\r\n columns: this.columns(),\r\n keyField: this.keyField(),\r\n multiple: this.multiple(),\r\n searchable: this.searchable(),\r\n pageSize: this.pageSize(),\r\n initialSelection: Array.from(this.selectedItems().values()),\r\n };\r\n }\r\n\r\n /**\r\n * Open BottomSheet\r\n */\r\n private openBottomSheet(data: DataPickerSheetData<T>): void {\r\n const sheetRef = this._bottomSheet.open(CmatDataPickerSheetComponent, {\r\n data,\r\n });\r\n\r\n sheetRef.afterDismissed().subscribe((result: T | T[] | null) => {\r\n if (result !== undefined) {\r\n this.updateSelection(result);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open Dialog\r\n */\r\n private openDialog(data: DataPickerDialogData<T>): void {\r\n const dialogRef = this._dialog.open(CmatDataPickerDialogComponent, {\r\n width: this.dialogWidth(),\r\n maxHeight: this.dialogMaxHeight(),\r\n data,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: T | T[] | null) => {\r\n if (result !== undefined) {\r\n this.updateSelection(result);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open Drawer\r\n */\r\n private openDrawer(): void {\r\n // 创建 Overlay 配置\r\n const positionStrategy = this.drawerPosition() === 'end'\r\n ? this._overlay.position().global().right('0')\r\n : this._overlay.position().global().left('0');\r\n\r\n const overlayRef = this._overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy,\r\n width: this.drawerWidth(),\r\n height: '100%',\r\n panelClass: ['cmat-data-picker-drawer-overlay', 'cmat-drawer-enter'],\r\n });\r\n\r\n // 创建 Drawer 组件实例\r\n const drawerPortal = new ComponentPortal(CmatDataPickerDrawerComponent);\r\n const drawerRef = overlayRef.attach(drawerPortal);\r\n\r\n // 传递数据到 Drawer 组件\r\n const data: DataPickerDrawerData<T> = {\r\n dataProvider: this.dataProvider()!,\r\n columns: this.columns(),\r\n keyField: this.keyField(),\r\n multiple: this.multiple(),\r\n searchable: this.searchable(),\r\n pageSize: this.pageSize(),\r\n initialSelection: Array.from(this.selectedItems().values()),\r\n onConfirm: (result: T | T[] | null) => {\r\n if (result !== undefined) {\r\n this.updateSelection(result);\r\n }\r\n },\r\n onClose: () => {\r\n // 添加退出动画类\r\n const paneElement = overlayRef.overlayElement;\r\n if (paneElement) {\r\n paneElement.classList.remove('cmat-drawer-enter');\r\n paneElement.classList.add('cmat-drawer-leave');\r\n\r\n // 等待动画完成后销毁\r\n setTimeout(() => {\r\n overlayRef.dispose();\r\n }, 300);\r\n } else {\r\n overlayRef.dispose();\r\n }\r\n },\r\n };\r\n\r\n drawerRef.instance.data = data;\r\n\r\n // 监听背景点击关闭\r\n overlayRef.backdropClick().subscribe(() => {\r\n const paneElement = overlayRef.overlayElement;\r\n if (paneElement) {\r\n paneElement.classList.remove('cmat-drawer-enter');\r\n paneElement.classList.add('cmat-drawer-leave');\r\n\r\n setTimeout(() => {\r\n overlayRef.dispose();\r\n }, 300);\r\n } else {\r\n overlayRef.dispose();\r\n }\r\n });\r\n\r\n // 组件销毁时清理资源\r\n overlayRef.detachments().subscribe(() => {\r\n overlayRef.dispose();\r\n });\r\n }\r\n\r\n /**\r\n * Update selection\r\n */\r\n private updateSelection(newValue: T | T[] | null): void {\r\n // 直接设置 value,它会同时更新 _valueSignal、selectedItems,并触发 _onChange\r\n this.value = newValue;\r\n this.selectionChange.emit(newValue as T | T[]);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Format template string\r\n * 支持两种格式:\r\n * 1. Mustache 风格: {{name}} ({{department}})\r\n * 2. 模板字符串风格: ${name} (${department})\r\n */\r\n private formatTemplate(template: string, item: T): string {\r\n const record = item as Record<string, unknown>;\r\n\r\n // 先处理 Mustache 风格: {{key}}\r\n let result = template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {\r\n const value = record[key as keyof typeof record];\r\n return (value as string) ?? '';\r\n });\r\n\r\n // 再处理模板字符串风格: ${key}\r\n result = result.replace(/\\$\\{(\\w+)\\}/g, (_, key) => {\r\n const value = record[key as keyof typeof record];\r\n return (value as string) ?? '';\r\n });\r\n\r\n return result;\r\n }\r\n\r\n\r\n // === Internal Callbacks ===\r\n private _onChange: (value: T | T[] | null) => void = () => { /* no-op */ };\r\n private _onTouched: () => void = () => { /* no-op */ };\r\n}\r\n","<div class=\"cmat-data-picker\">\r\n <!-- 触发器 -->\r\n <div class=\"picker-trigger\" tabindex=\"0\" role=\"button\" [class.has-value]=\"hasValue()\" [class.disabled]=\"disabled\"\r\n (click)=\"openPicker()\" (focus)=\"onFocusIn()\" (blur)=\"onFocusOut()\" (keydown.enter)=\"openPicker()\"\r\n (keydown.space)=\"$event.preventDefault(); openPicker()\">\r\n\r\n @if (selectedItems().size > 0) {\r\n <mat-chip-grid class=\"items-center\">\r\n @for (item of getSelectedArray(); track item) {\r\n <mat-chip-row (removed)=\"removeItem(item)\">\r\n {{ getDisplayLabel(item) }}\r\n <button matChipRemove class=\"print:hidden\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n } @else {\r\n <span class=\"placeholder\">{{appearanceIsFill? placeholder:''}}</span>\r\n }\r\n\r\n <mat-icon class=\"trigger-icon\" [svgIcon]=\"'mat_outline:arrow_drop_down'\"></mat-icon>\r\n </div>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|