@delon/abc 13.0.0-beta.1 → 13.2.0
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/README.md +1 -1
- package/auto-focus/{autoFocus.d.ts → auto-focus.d.ts} +0 -0
- package/auto-focus/package.json +6 -6
- package/avatar-list/{avatarList.d.ts → avatar-list.d.ts} +0 -0
- package/avatar-list/package.json +6 -6
- package/date-picker/{datePicker.d.ts → date-picker.d.ts} +0 -0
- package/date-picker/package.json +6 -6
- package/down-file/{downFile.d.ts → down-file.d.ts} +0 -0
- package/down-file/package.json +6 -6
- package/ellipsis/ellipsis.component.d.ts +1 -0
- package/error-collect/error-collect.component.d.ts +4 -2
- package/error-collect/{errorCollect.d.ts → error-collect.d.ts} +0 -0
- package/error-collect/package.json +6 -6
- package/esm2020/auto-focus/auto-focus.directive.mjs +3 -3
- package/esm2020/auto-focus/auto-focus.mjs +5 -0
- package/esm2020/auto-focus/auto-focus.module.mjs +4 -4
- package/esm2020/avatar-list/avatar-list-item.component.mjs +3 -3
- package/esm2020/avatar-list/avatar-list.component.mjs +3 -3
- package/esm2020/avatar-list/avatar-list.mjs +5 -0
- package/esm2020/avatar-list/avatar-list.module.mjs +4 -4
- package/esm2020/count-down/count-down.component.mjs +3 -3
- package/esm2020/count-down/count-down.module.mjs +4 -4
- package/esm2020/date-picker/date-picker.mjs +5 -0
- package/esm2020/date-picker/date-picker.module.mjs +4 -4
- package/esm2020/date-picker/range-shortcut.component.mjs +3 -3
- package/esm2020/date-picker/range.directive.mjs +3 -3
- package/esm2020/down-file/down-file.directive.mjs +3 -3
- package/esm2020/down-file/down-file.mjs +5 -0
- package/esm2020/down-file/down-file.module.mjs +4 -4
- package/esm2020/ellipsis/ellipsis.component.mjs +8 -5
- package/esm2020/ellipsis/ellipsis.module.mjs +4 -4
- package/esm2020/error-collect/error-collect.component.mjs +12 -8
- package/esm2020/error-collect/error-collect.mjs +5 -0
- package/esm2020/error-collect/error-collect.module.mjs +4 -4
- package/esm2020/exception/exception.component.mjs +3 -3
- package/esm2020/exception/exception.module.mjs +4 -4
- package/esm2020/footer-toolbar/footer-toolbar.component.mjs +3 -3
- package/esm2020/footer-toolbar/footer-toolbar.mjs +5 -0
- package/esm2020/footer-toolbar/footer-toolbar.module.mjs +4 -4
- package/esm2020/full-content/full-content-toggle.directive.mjs +3 -3
- package/esm2020/full-content/full-content.component.mjs +3 -3
- package/esm2020/full-content/full-content.mjs +5 -0
- package/esm2020/full-content/full-content.module.mjs +4 -4
- package/esm2020/full-content/full-content.service.mjs +3 -3
- package/esm2020/global-footer/global-footer-item.component.mjs +3 -3
- package/esm2020/global-footer/global-footer.component.mjs +3 -3
- package/esm2020/global-footer/global-footer.mjs +5 -0
- package/esm2020/global-footer/global-footer.module.mjs +4 -4
- package/esm2020/image/image.directive.mjs +3 -3
- package/esm2020/image/image.module.mjs +4 -4
- package/esm2020/let/let.directive.mjs +3 -3
- package/esm2020/let/let.module.mjs +4 -4
- package/esm2020/loading/loading.component.mjs +3 -3
- package/esm2020/loading/loading.module.mjs +4 -4
- package/esm2020/loading/loading.service.mjs +3 -3
- package/esm2020/lodop/lodop.module.mjs +4 -4
- package/esm2020/lodop/lodop.service.mjs +3 -3
- package/esm2020/media/media.component.mjs +3 -3
- package/esm2020/media/media.module.mjs +4 -4
- package/esm2020/media/media.service.mjs +3 -3
- package/esm2020/notice-icon/notice-icon-tab.component.mjs +3 -3
- package/esm2020/notice-icon/notice-icon.component.mjs +3 -3
- package/esm2020/notice-icon/notice-icon.mjs +5 -0
- package/esm2020/notice-icon/notice-icon.module.mjs +4 -4
- package/esm2020/onboarding/onboarding.component.mjs +3 -3
- package/esm2020/onboarding/onboarding.module.mjs +4 -4
- package/esm2020/onboarding/onboarding.service.mjs +3 -3
- package/esm2020/page-header/page-header.component.mjs +3 -3
- package/esm2020/page-header/page-header.mjs +5 -0
- package/esm2020/page-header/page-header.module.mjs +4 -4
- package/esm2020/pdf/pdf.component.mjs +3 -3
- package/esm2020/pdf/pdf.module.mjs +4 -4
- package/esm2020/qr/qr.component.mjs +5 -5
- package/esm2020/qr/qr.module.mjs +4 -4
- package/esm2020/quick-menu/quick-menu.component.mjs +3 -3
- package/esm2020/quick-menu/quick-menu.mjs +5 -0
- package/esm2020/quick-menu/quick-menu.module.mjs +4 -4
- package/esm2020/result/result.component.mjs +3 -3
- package/esm2020/result/result.module.mjs +4 -4
- package/esm2020/reuse-tab/reuse-tab-context-menu.component.mjs +3 -3
- package/esm2020/reuse-tab/reuse-tab-context.component.mjs +3 -3
- package/esm2020/reuse-tab/reuse-tab-context.directive.mjs +3 -3
- package/esm2020/reuse-tab/reuse-tab-context.service.mjs +3 -3
- package/esm2020/reuse-tab/reuse-tab.component.mjs +3 -3
- package/esm2020/reuse-tab/reuse-tab.mjs +5 -0
- package/esm2020/reuse-tab/reuse-tab.module.mjs +4 -4
- package/esm2020/reuse-tab/reuse-tab.service.mjs +3 -3
- package/esm2020/se/se-container.component.mjs +6 -6
- package/esm2020/se/se.component.mjs +5 -5
- package/esm2020/se/se.mjs +5 -0
- package/esm2020/se/se.module.mjs +4 -4
- package/esm2020/sg/sg-container.component.mjs +3 -3
- package/esm2020/sg/sg.component.mjs +3 -3
- package/esm2020/sg/sg.mjs +5 -0
- package/esm2020/sg/sg.module.mjs +4 -4
- package/esm2020/st/st-column-source.mjs +3 -3
- package/esm2020/st/st-data-source.mjs +3 -3
- package/esm2020/st/st-export.mjs +3 -3
- package/esm2020/st/st-filter.component.mjs +3 -3
- package/esm2020/st/st-row.directive.mjs +6 -6
- package/esm2020/st/st-widget-host.directive.mjs +3 -3
- package/esm2020/st/st-widget.mjs +3 -3
- package/esm2020/st/st.component.mjs +6 -6
- package/esm2020/st/st.mjs +5 -0
- package/esm2020/st/st.module.mjs +4 -4
- package/esm2020/sv/sv-container.component.mjs +6 -6
- package/esm2020/sv/sv-value.component.mjs +3 -3
- package/esm2020/sv/sv.component.mjs +3 -3
- package/esm2020/sv/sv.mjs +5 -0
- package/esm2020/sv/sv.module.mjs +4 -4
- package/esm2020/tag-select/tag-select.component.mjs +3 -3
- package/esm2020/tag-select/tag-select.mjs +5 -0
- package/esm2020/tag-select/tag-select.module.mjs +4 -4
- package/esm2020/xlsx/xlsx.directive.mjs +3 -3
- package/esm2020/xlsx/xlsx.module.mjs +4 -4
- package/esm2020/xlsx/xlsx.service.mjs +3 -3
- package/esm2020/zip/zip.module.mjs +4 -4
- package/esm2020/zip/zip.service.mjs +3 -3
- package/fesm2015/{autoFocus.mjs → auto-focus.mjs} +8 -8
- package/fesm2015/auto-focus.mjs.map +1 -0
- package/fesm2015/{avatarList.mjs → avatar-list.mjs} +11 -11
- package/fesm2015/avatar-list.mjs.map +1 -0
- package/fesm2015/count-down.mjs +7 -7
- package/fesm2015/{datePicker.mjs → date-picker.mjs} +11 -11
- package/fesm2015/date-picker.mjs.map +1 -0
- package/fesm2015/{downFile.mjs → down-file.mjs} +8 -8
- package/fesm2015/down-file.mjs.map +1 -0
- package/fesm2015/ellipsis.mjs +11 -8
- package/fesm2015/ellipsis.mjs.map +1 -1
- package/fesm2015/{errorCollect.mjs → error-collect.mjs} +16 -12
- package/fesm2015/error-collect.mjs.map +1 -0
- package/fesm2015/exception.mjs +7 -7
- package/fesm2015/{footerToolbar.mjs → footer-toolbar.mjs} +8 -8
- package/fesm2015/footer-toolbar.mjs.map +1 -0
- package/fesm2015/{fullContent.mjs → full-content.mjs} +14 -14
- package/fesm2015/full-content.mjs.map +1 -0
- package/fesm2015/{globalFooter.mjs → global-footer.mjs} +11 -11
- package/fesm2015/global-footer.mjs.map +1 -0
- package/fesm2015/image.mjs +7 -7
- package/fesm2015/let.mjs +7 -7
- package/fesm2015/loading.mjs +10 -10
- package/fesm2015/lodop.mjs +7 -7
- package/fesm2015/media.mjs +10 -10
- package/{fesm2020/noticeIcon.mjs → fesm2015/notice-icon.mjs} +11 -11
- package/fesm2015/notice-icon.mjs.map +1 -0
- package/fesm2015/onboarding.mjs +10 -10
- package/fesm2015/{pageHeader.mjs → page-header.mjs} +8 -8
- package/fesm2015/page-header.mjs.map +1 -0
- package/fesm2015/pdf.mjs +7 -7
- package/fesm2015/qr.mjs +8 -8
- package/fesm2015/qr.mjs.map +1 -1
- package/fesm2015/{quickMenu.mjs → quick-menu.mjs} +8 -8
- package/fesm2015/quick-menu.mjs.map +1 -0
- package/fesm2015/result.mjs +7 -7
- package/fesm2015/{reuseTab.mjs → reuse-tab.mjs} +23 -23
- package/fesm2015/reuse-tab.mjs.map +1 -0
- package/fesm2015/{edit.mjs → se.mjs} +15 -15
- package/fesm2015/se.mjs.map +1 -0
- package/fesm2015/{grid.mjs → sg.mjs} +11 -11
- package/fesm2015/sg.mjs.map +1 -0
- package/fesm2015/{table.mjs → st.mjs} +35 -35
- package/fesm2015/st.mjs.map +1 -0
- package/fesm2015/{view.mjs → sv.mjs} +17 -17
- package/fesm2015/sv.mjs.map +1 -0
- package/fesm2015/{tagSelect.mjs → tag-select.mjs} +8 -8
- package/fesm2015/tag-select.mjs.map +1 -0
- package/fesm2015/xlsx.mjs +10 -10
- package/fesm2015/zip.mjs +7 -7
- package/fesm2020/{autoFocus.mjs → auto-focus.mjs} +8 -8
- package/fesm2020/auto-focus.mjs.map +1 -0
- package/fesm2020/{avatarList.mjs → avatar-list.mjs} +11 -11
- package/fesm2020/avatar-list.mjs.map +1 -0
- package/fesm2020/count-down.mjs +7 -7
- package/fesm2020/{datePicker.mjs → date-picker.mjs} +11 -11
- package/fesm2020/date-picker.mjs.map +1 -0
- package/fesm2020/{downFile.mjs → down-file.mjs} +8 -8
- package/fesm2020/down-file.mjs.map +1 -0
- package/fesm2020/ellipsis.mjs +11 -8
- package/fesm2020/ellipsis.mjs.map +1 -1
- package/fesm2020/{errorCollect.mjs → error-collect.mjs} +16 -12
- package/fesm2020/error-collect.mjs.map +1 -0
- package/fesm2020/exception.mjs +7 -7
- package/fesm2020/{footerToolbar.mjs → footer-toolbar.mjs} +8 -8
- package/fesm2020/footer-toolbar.mjs.map +1 -0
- package/fesm2020/{fullContent.mjs → full-content.mjs} +14 -14
- package/fesm2020/full-content.mjs.map +1 -0
- package/fesm2020/{globalFooter.mjs → global-footer.mjs} +11 -11
- package/fesm2020/global-footer.mjs.map +1 -0
- package/fesm2020/image.mjs +7 -7
- package/fesm2020/let.mjs +7 -7
- package/fesm2020/loading.mjs +10 -10
- package/fesm2020/lodop.mjs +7 -7
- package/fesm2020/media.mjs +10 -10
- package/{fesm2015/noticeIcon.mjs → fesm2020/notice-icon.mjs} +11 -11
- package/fesm2020/notice-icon.mjs.map +1 -0
- package/fesm2020/onboarding.mjs +10 -10
- package/fesm2020/{pageHeader.mjs → page-header.mjs} +8 -8
- package/fesm2020/page-header.mjs.map +1 -0
- package/fesm2020/pdf.mjs +7 -7
- package/fesm2020/qr.mjs +8 -8
- package/fesm2020/qr.mjs.map +1 -1
- package/fesm2020/{quickMenu.mjs → quick-menu.mjs} +8 -8
- package/fesm2020/quick-menu.mjs.map +1 -0
- package/fesm2020/result.mjs +7 -7
- package/fesm2020/{reuseTab.mjs → reuse-tab.mjs} +23 -23
- package/fesm2020/reuse-tab.mjs.map +1 -0
- package/fesm2020/{edit.mjs → se.mjs} +15 -15
- package/fesm2020/se.mjs.map +1 -0
- package/fesm2020/{grid.mjs → sg.mjs} +11 -11
- package/fesm2020/sg.mjs.map +1 -0
- package/fesm2020/{table.mjs → st.mjs} +35 -35
- package/fesm2020/st.mjs.map +1 -0
- package/fesm2020/{view.mjs → sv.mjs} +17 -17
- package/fesm2020/sv.mjs.map +1 -0
- package/fesm2020/{tagSelect.mjs → tag-select.mjs} +8 -8
- package/fesm2020/tag-select.mjs.map +1 -0
- package/fesm2020/xlsx.mjs +10 -10
- package/fesm2020/zip.mjs +7 -7
- package/footer-toolbar/{footerToolbar.d.ts → footer-toolbar.d.ts} +0 -0
- package/footer-toolbar/package.json +6 -6
- package/full-content/{fullContent.d.ts → full-content.d.ts} +0 -0
- package/full-content/package.json +6 -6
- package/global-footer/{globalFooter.d.ts → global-footer.d.ts} +0 -0
- package/global-footer/package.json +6 -6
- package/notice-icon/{noticeIcon.d.ts → notice-icon.d.ts} +0 -0
- package/notice-icon/package.json +6 -6
- package/package.json +106 -106
- package/page-header/package.json +6 -6
- package/page-header/{pageHeader.d.ts → page-header.d.ts} +0 -0
- package/qr/qr.component.d.ts +1 -1
- package/quick-menu/package.json +6 -6
- package/quick-menu/{quickMenu.d.ts → quick-menu.d.ts} +0 -0
- package/reuse-tab/package.json +6 -6
- package/reuse-tab/{reuseTab.d.ts → reuse-tab.d.ts} +0 -0
- package/se/package.json +6 -6
- package/se/{edit.d.ts → se.d.ts} +0 -0
- package/se/style/index.less +2 -0
- package/sg/package.json +6 -6
- package/sg/{grid.d.ts → sg.d.ts} +0 -0
- package/st/package.json +6 -6
- package/st/{table.d.ts → st.d.ts} +0 -0
- package/sv/package.json +6 -6
- package/sv/{view.d.ts → sv.d.ts} +0 -0
- package/tag-select/package.json +6 -6
- package/tag-select/{tagSelect.d.ts → tag-select.d.ts} +0 -0
- package/esm2020/auto-focus/autoFocus.mjs +0 -5
- package/esm2020/avatar-list/avatarList.mjs +0 -5
- package/esm2020/date-picker/datePicker.mjs +0 -5
- package/esm2020/down-file/downFile.mjs +0 -5
- package/esm2020/error-collect/errorCollect.mjs +0 -5
- package/esm2020/footer-toolbar/footerToolbar.mjs +0 -5
- package/esm2020/full-content/fullContent.mjs +0 -5
- package/esm2020/global-footer/globalFooter.mjs +0 -5
- package/esm2020/notice-icon/noticeIcon.mjs +0 -5
- package/esm2020/page-header/pageHeader.mjs +0 -5
- package/esm2020/quick-menu/quickMenu.mjs +0 -5
- package/esm2020/reuse-tab/reuseTab.mjs +0 -5
- package/esm2020/se/edit.mjs +0 -5
- package/esm2020/sg/grid.mjs +0 -5
- package/esm2020/st/table.mjs +0 -5
- package/esm2020/sv/view.mjs +0 -5
- package/esm2020/tag-select/tagSelect.mjs +0 -5
- package/fesm2015/autoFocus.mjs.map +0 -1
- package/fesm2015/avatarList.mjs.map +0 -1
- package/fesm2015/datePicker.mjs.map +0 -1
- package/fesm2015/downFile.mjs.map +0 -1
- package/fesm2015/edit.mjs.map +0 -1
- package/fesm2015/errorCollect.mjs.map +0 -1
- package/fesm2015/footerToolbar.mjs.map +0 -1
- package/fesm2015/fullContent.mjs.map +0 -1
- package/fesm2015/globalFooter.mjs.map +0 -1
- package/fesm2015/grid.mjs.map +0 -1
- package/fesm2015/noticeIcon.mjs.map +0 -1
- package/fesm2015/pageHeader.mjs.map +0 -1
- package/fesm2015/quickMenu.mjs.map +0 -1
- package/fesm2015/reuseTab.mjs.map +0 -1
- package/fesm2015/table.mjs.map +0 -1
- package/fesm2015/tagSelect.mjs.map +0 -1
- package/fesm2015/view.mjs.map +0 -1
- package/fesm2020/autoFocus.mjs.map +0 -1
- package/fesm2020/avatarList.mjs.map +0 -1
- package/fesm2020/datePicker.mjs.map +0 -1
- package/fesm2020/downFile.mjs.map +0 -1
- package/fesm2020/edit.mjs.map +0 -1
- package/fesm2020/errorCollect.mjs.map +0 -1
- package/fesm2020/footerToolbar.mjs.map +0 -1
- package/fesm2020/fullContent.mjs.map +0 -1
- package/fesm2020/globalFooter.mjs.map +0 -1
- package/fesm2020/grid.mjs.map +0 -1
- package/fesm2020/noticeIcon.mjs.map +0 -1
- package/fesm2020/pageHeader.mjs.map +0 -1
- package/fesm2020/quickMenu.mjs.map +0 -1
- package/fesm2020/reuseTab.mjs.map +0 -1
- package/fesm2020/table.mjs.map +0 -1
- package/fesm2020/tagSelect.mjs.map +0 -1
- package/fesm2020/view.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reuseTab.mjs","sources":["../../../../packages/abc/reuse-tab/reuse-tab-context-menu.component.ts","../../../../packages/abc/reuse-tab/reuse-tab-context-menu.component.html","../../../../packages/abc/reuse-tab/reuse-tab-context.service.ts","../../../../packages/abc/reuse-tab/reuse-tab-context.component.ts","../../../../packages/abc/reuse-tab/reuse-tab-context.directive.ts","../../../../packages/abc/reuse-tab/reuse-tab.interfaces.ts","../../../../packages/abc/reuse-tab/reuse-tab.service.ts","../../../../packages/abc/reuse-tab/reuse-tab.component.ts","../../../../packages/abc/reuse-tab/reuse-tab.component.html","../../../../packages/abc/reuse-tab/reuse-tab.strategy.ts","../../../../packages/abc/reuse-tab/reuse-tab.module.ts","../../../../packages/abc/reuse-tab/reuseTab.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DelonLocaleService } from '@delon/theme';\n\nimport {\n CloseType,\n ReuseContextCloseEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu,\n ReuseItem\n} from './reuse-tab.interfaces';\n\n@Component({\n selector: 'reuse-tab-context-menu',\n templateUrl: './reuse-tab-context-menu.component.html',\n host: {\n '(document:click)': 'closeMenu($event)',\n '(document:contextmenu)': 'closeMenu($event)'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ReuseTabContextMenuComponent implements OnInit {\n private _i18n!: ReuseContextI18n;\n @Input()\n set i18n(value: ReuseContextI18n) {\n this._i18n = {\n ...this.i18nSrv.getData('reuseTab'),\n ...value\n };\n }\n get i18n(): ReuseContextI18n {\n return this._i18n;\n }\n @Input() item!: ReuseItem;\n @Input() event!: MouseEvent;\n @Input() customContextMenu!: ReuseCustomContextMenu[];\n @Output() readonly close = new EventEmitter<ReuseContextCloseEvent>();\n\n get includeNonCloseable(): boolean {\n return this.event.ctrlKey;\n }\n\n constructor(private i18nSrv: DelonLocaleService) {}\n\n private notify(type: CloseType): void {\n this.close.next({\n type,\n item: this.item,\n includeNonCloseable: this.includeNonCloseable\n });\n }\n\n ngOnInit(): void {\n if (this.includeNonCloseable) this.item.closable = true;\n }\n\n click(e: MouseEvent, type: CloseType, custom?: ReuseCustomContextMenu): void {\n e.preventDefault();\n e.stopPropagation();\n if (type === 'close' && !this.item.closable) return;\n if (type === 'closeRight' && this.item.last) return;\n\n if (custom) {\n if (this.isDisabled(custom)) return;\n custom.fn(this.item, custom);\n }\n this.notify(type);\n }\n\n isDisabled(custom: ReuseCustomContextMenu): boolean {\n return custom.disabled ? custom.disabled(this.item) : false;\n }\n\n closeMenu(event: MouseEvent): void {\n if (event.type === 'click' && event.button === 2) return;\n this.notify(null);\n }\n}\n","<ul nz-menu>\n <li\n *ngIf=\"item.active\"\n nz-menu-item\n (click)=\"click($event, 'refresh')\"\n data-type=\"refresh\"\n [innerHTML]=\"i18n.refresh\"\n ></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'close')\"\n data-type=\"close\"\n [nzDisabled]=\"!item.closable\"\n [innerHTML]=\"i18n.close\"\n ></li>\n <li nz-menu-item (click)=\"click($event, 'closeOther')\" data-type=\"closeOther\" [innerHTML]=\"i18n.closeOther\"></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'closeRight')\"\n data-type=\"closeRight\"\n [nzDisabled]=\"item.last\"\n [innerHTML]=\"i18n.closeRight\"\n ></li>\n <ng-container *ngIf=\"customContextMenu!.length > 0\">\n <li nz-menu-divider></li>\n <li\n *ngFor=\"let i of customContextMenu\"\n nz-menu-item\n [attr.data-type]=\"i.id\"\n [nzDisabled]=\"isDisabled(i)\"\n (click)=\"click($event, 'custom', i)\"\n [innerHTML]=\"i.title\"\n ></li>\n </ng-container>\n</ul>\n","import { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { ReuseTabContextMenuComponent } from './reuse-tab-context-menu.component';\nimport {\n ReuseContextCloseEvent,\n ReuseContextEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu\n} from './reuse-tab.interfaces';\n\n@Injectable()\nexport class ReuseTabContextService {\n private ref: OverlayRef | null = null;\n i18n?: ReuseContextI18n;\n\n show: Subject<ReuseContextEvent> = new Subject<ReuseContextEvent>();\n close: Subject<ReuseContextCloseEvent> = new Subject<ReuseContextCloseEvent>();\n\n constructor(private overlay: Overlay) {}\n\n remove(): void {\n if (!this.ref) return;\n this.ref.detach();\n this.ref.dispose();\n this.ref = null;\n }\n\n open(context: ReuseContextEvent): void {\n this.remove();\n const { event, item, customContextMenu } = context;\n const { x, y } = event;\n const positions = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n ];\n const positionStrategy = this.overlay.position().flexibleConnectedTo({ x, y }).withPositions(positions);\n this.ref = this.overlay.create({\n positionStrategy,\n panelClass: 'reuse-tab__cm',\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n const comp = this.ref.attach(new ComponentPortal(ReuseTabContextMenuComponent));\n const instance = comp.instance;\n instance.i18n = this.i18n!;\n instance.item = { ...item };\n instance.customContextMenu = customContextMenu as ReuseCustomContextMenu[];\n instance.event = event;\n\n const sub$ = new Subscription();\n sub$.add(\n instance.close.subscribe((res: ReuseContextCloseEvent) => {\n this.close.next(res);\n this.remove();\n })\n );\n comp.onDestroy(() => sub$.unsubscribe());\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport { ReuseContextCloseEvent, ReuseContextI18n } from './reuse-tab.interfaces';\n\n@Component({\n selector: 'reuse-tab-context',\n template: ``\n})\nexport class ReuseTabContextComponent implements OnDestroy {\n private sub$: Subscription = new Subscription();\n\n @Input()\n set i18n(value: ReuseContextI18n | undefined) {\n this.srv.i18n = value;\n }\n\n @Output() readonly change = new EventEmitter<ReuseContextCloseEvent>();\n\n constructor(private srv: ReuseTabContextService) {\n this.sub$.add(srv.show.subscribe(context => this.srv.open(context)));\n this.sub$.add(srv.close.subscribe(res => this.change.emit(res)));\n }\n\n ngOnDestroy(): void {\n this.sub$.unsubscribe();\n }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport { ReuseCustomContextMenu, ReuseItem } from './reuse-tab.interfaces';\n\n@Directive({\n selector: '[reuse-tab-context-menu]',\n exportAs: 'reuseTabContextMenu',\n host: {\n '(contextmenu)': '_onContextMenu($event)'\n }\n})\nexport class ReuseTabContextDirective {\n @Input('reuse-tab-context-menu') item!: ReuseItem;\n @Input() customContextMenu!: ReuseCustomContextMenu[];\n\n constructor(private srv: ReuseTabContextService) {}\n\n _onContextMenu(event: MouseEvent): void {\n this.srv.show.next({\n event,\n item: this.item,\n customContextMenu: this.customContextMenu\n });\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ReuseTabContextComponent } from './reuse-tab-context.component';\n\n/**\n * 复用匹配模式\n */\nexport enum ReuseTabMatchMode {\n /**\n * (推荐)按菜单 `Menu` 配置\n *\n * 可复用:\n * - `{ text:'Dashboard' }`\n * - `{ text:'Dashboard', reuse: true }`\n *\n * 不可复用:\n * - `{ text:'Dashboard', reuse: false }`\n */\n Menu,\n /**\n * 按菜单 `Menu` 强制配置\n *\n * 可复用:\n * - `{ text:'Dashboard', reuse: true }`\n *\n * 不可复用:\n * - `{ text:'Dashboard' }`\n * - `{ text:'Dashboard', reuse: false }`\n */\n MenuForce,\n /**\n * 对所有路由有效,可以配合 `excludes` 过滤无须复用路由\n */\n URL\n}\n\nexport type ReuseTabRouteParamMatchMode = 'strict' | 'loose';\n\nexport interface ReuseTitle {\n text?: string;\n i18n?: string;\n}\n\nexport interface ReuseTabCached {\n title: ReuseTitle;\n\n url: string;\n\n /** 是否允许关闭,默认:`true` */\n closable?: boolean;\n\n /** 当前滚动条位置 */\n position?: [number, number] | null;\n\n _snapshot: ActivatedRouteSnapshot;\n\n _handle: ReuseComponentHandle;\n}\n\nexport interface ReuseTabNotify {\n /** 事件类型 */\n active: 'add' | 'override' | 'title' | 'clear' | 'closable' | 'close' | 'closeRight' | 'move' | 'refresh';\n url?: string;\n title?: ReuseTitle;\n item?: ReuseTabCached;\n list?: ReuseTabCached[];\n [key: string]: NzSafeAny;\n}\n\nexport interface ReuseItem {\n url: string;\n title: string;\n closable: boolean;\n index: number;\n active: boolean;\n last: boolean;\n}\n\nexport interface ReuseContextEvent {\n event: MouseEvent;\n item: ReuseItem;\n comp?: ReuseTabContextComponent;\n customContextMenu?: ReuseCustomContextMenu[];\n}\n\nexport type CloseType = 'close' | 'closeOther' | 'closeRight' | 'custom' | 'refresh' | null;\n\nexport interface ReuseContextCloseEvent {\n type: CloseType;\n item: ReuseItem;\n includeNonCloseable: boolean;\n}\n\nexport interface ReuseContextI18n {\n close?: string;\n closeOther?: string;\n closeRight?: string;\n refresh?: string;\n}\n\nexport interface ReuseCustomContextMenu {\n id: string;\n title: string;\n fn: (item: ReuseItem, menu: ReuseCustomContextMenu) => void;\n disabled?: (item: ReuseItem) => boolean;\n}\n\nexport interface ReuseComponentHandle {\n componentRef: ReuseComponentRef;\n}\n\nexport interface ReuseComponentRef {\n instance: ReuseComponentInstance;\n}\n\nexport type ReuseHookTypes = '_onReuseInit' | '_onReuseDestroy';\n\nexport type ReuseHookOnReuseInitType = 'init' | 'refresh';\n\nexport interface ReuseComponentInstance {\n _onReuseInit: (type: ReuseHookOnReuseInitType) => void;\n _onReuseDestroy: () => void;\n destroy: () => void;\n}\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n ExtraOptions,\n NavigationEnd,\n NavigationStart,\n Router,\n ROUTER_CONFIGURATION\n} from '@angular/router';\nimport { BehaviorSubject, Observable, timer, Unsubscribable } from 'rxjs';\n\nimport { Menu, MenuService } from '@delon/theme';\nimport { ScrollService } from '@delon/util/browser';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport {\n ReuseComponentRef,\n ReuseHookOnReuseInitType,\n ReuseHookTypes,\n ReuseTabCached,\n ReuseTabMatchMode,\n ReuseTabNotify,\n ReuseTabRouteParamMatchMode,\n ReuseTitle\n} from './reuse-tab.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ReuseTabService implements OnDestroy {\n private _inited = false;\n private _max = 10;\n private _keepingScroll = false;\n private _cachedChange = new BehaviorSubject<ReuseTabNotify | null>(null);\n private _cached: ReuseTabCached[] = [];\n private _titleCached: { [url: string]: ReuseTitle } = {};\n private _closableCached: { [url: string]: boolean } = {};\n private _router$?: Unsubscribable;\n private removeUrlBuffer: string | null = null;\n private positionBuffer: { [url: string]: [number, number] } = {};\n componentRef?: ReuseComponentRef;\n debug = false;\n routeParamMatchMode: ReuseTabRouteParamMatchMode = 'strict';\n mode = ReuseTabMatchMode.Menu;\n /** 排除规则,限 `mode=URL` */\n excludes: RegExp[] = [];\n\n private get snapshot(): ActivatedRouteSnapshot {\n return this.injector.get(ActivatedRoute).snapshot;\n }\n\n // #region public\n\n /**\n * Get init status\n *\n * 是否已经初始化完成\n */\n get inited(): boolean {\n return this._inited;\n }\n\n /**\n * Current routing address\n *\n * 当前路由地址\n */\n get curUrl(): string {\n return this.getUrl(this.snapshot);\n }\n\n /**\n * 允许最多复用多少个页面,取值范围 `2-100`,值发生变更时会强制关闭且忽略可关闭条件\n */\n set max(value: number) {\n this._max = Math.min(Math.max(value, 2), 100);\n for (let i = this._cached.length; i > this._max; i--) {\n this._cached.pop();\n }\n }\n set keepingScroll(value: boolean) {\n this._keepingScroll = value;\n this.initScroll();\n }\n get keepingScroll(): boolean {\n return this._keepingScroll;\n }\n keepingScrollContainer?: Element;\n /** 获取已缓存的路由 */\n get items(): ReuseTabCached[] {\n return this._cached;\n }\n /** 获取当前缓存的路由总数 */\n get count(): number {\n return this._cached.length;\n }\n /** 订阅缓存变更通知 */\n get change(): Observable<ReuseTabNotify | null> {\n return this._cachedChange.asObservable(); // .pipe(filter(w => w !== null));\n }\n /** 自定义当前标题 */\n set title(value: string | ReuseTitle) {\n const url = this.curUrl;\n if (typeof value === 'string') value = { text: value };\n this._titleCached[url] = value;\n this.di('update current tag title: ', value);\n this._cachedChange.next({\n active: 'title',\n url,\n title: value,\n list: this._cached\n });\n }\n /** 获取指定路径缓存所在位置,`-1` 表示无缓存 */\n index(url: string): number {\n return this._cached.findIndex(w => w.url === url);\n }\n /** 获取指定路径缓存是否存在 */\n exists(url: string): boolean {\n return this.index(url) !== -1;\n }\n /** 获取指定路径缓存 */\n get(url?: string): ReuseTabCached | null {\n return url ? this._cached.find(w => w.url === url) || null : null;\n }\n private remove(url: string | number, includeNonCloseable: boolean): boolean {\n const idx = typeof url === 'string' ? this.index(url) : url;\n const item = idx !== -1 ? this._cached[idx] : null;\n if (!item || (!includeNonCloseable && !item.closable)) return false;\n\n this.destroy(item._handle);\n\n this._cached.splice(idx, 1);\n delete this._titleCached[url];\n return true;\n }\n /**\n * 根据URL移除标签\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n close(url: string, includeNonCloseable: boolean = false): boolean {\n this.removeUrlBuffer = url;\n\n this.remove(url, includeNonCloseable);\n\n this._cachedChange.next({ active: 'close', url, list: this._cached });\n\n this.di('close tag', url);\n return true;\n }\n /**\n * 清除右边\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n closeRight(url: string, includeNonCloseable: boolean = false): boolean {\n const start = this.index(url);\n for (let i = this.count - 1; i > start; i--) {\n this.remove(i, includeNonCloseable);\n }\n\n this.removeUrlBuffer = null;\n\n this._cachedChange.next({ active: 'closeRight', url, list: this._cached });\n\n this.di('close right tages', url);\n return true;\n }\n /**\n * 清除所有缓存\n *\n * @param [includeNonCloseable=false] 是否强制包含不可关闭\n */\n clear(includeNonCloseable: boolean = false): void {\n this._cached.forEach(w => {\n if (!includeNonCloseable && w.closable) this.destroy(w._handle);\n });\n this._cached = this._cached.filter(w => !includeNonCloseable && !w.closable);\n\n this.removeUrlBuffer = null;\n\n this._cachedChange.next({ active: 'clear', list: this._cached });\n\n this.di('clear all catch');\n }\n /**\n * 移动缓存数据\n *\n * @param url 要移动的URL地址\n * @param position 新位置,下标从 `0` 开始\n *\n * @example\n * ```\n * // source\n * [ '/a/1', '/a/2', '/a/3', '/a/4', '/a/5' ]\n * move('/a/1', 2);\n * // output\n * [ '/a/2', '/a/3', '/a/1', '/a/4', '/a/5' ]\n * move('/a/1', -1);\n * // output\n * [ '/a/2', '/a/3', '/a/4', '/a/5', '/a/1' ]\n * ```\n */\n move(url: string, position: number): void {\n const start = this._cached.findIndex(w => w.url === url);\n if (start === -1) return;\n const data = this._cached.slice();\n data.splice(position < 0 ? data.length + position : position, 0, data.splice(start, 1)[0]);\n this._cached = data;\n this._cachedChange.next({\n active: 'move',\n url,\n position,\n list: this._cached\n });\n }\n /**\n * 强制关闭当前路由(包含不可关闭状态),并重新导航至 `newUrl` 路由\n */\n replace(newUrl: string): void {\n const url = this.curUrl;\n if (this.exists(url)) {\n this.close(url, true);\n } else {\n this.removeUrlBuffer = url;\n }\n this.injector.get<Router>(Router).navigateByUrl(newUrl);\n }\n /**\n * 获取标题,顺序如下:\n *\n * 1. 组件内使用 `ReuseTabService.title = 'new title'` 重新指定文本\n * 2. 路由配置中 data 属性中包含 titleI18n > title\n * 3. 菜单数据中 text 属性\n *\n * @param url 指定URL\n * @param route 指定路由快照\n */\n getTitle(url: string, route?: ActivatedRouteSnapshot): ReuseTitle {\n if (this._titleCached[url]) {\n return this._titleCached[url];\n }\n\n if (route && route.data && (route.data.titleI18n || route.data.title)) {\n return {\n text: route.data.title,\n i18n: route.data.titleI18n\n } as ReuseTitle;\n }\n\n const menu = this.getMenu(url);\n return menu ? { text: menu.text, i18n: menu.i18n } : { text: url };\n }\n\n /**\n * 清除标题缓存\n */\n clearTitleCached(): void {\n this._titleCached = {};\n }\n /** 自定义当前 `closable` 状态 */\n set closable(value: boolean) {\n const url = this.curUrl;\n this._closableCached[url] = value;\n this.di('update current tag closable: ', value);\n this._cachedChange.next({\n active: 'closable',\n closable: value,\n list: this._cached\n });\n }\n /**\n * 获取 `closable` 状态,顺序如下:\n *\n * 1. 组件内使用 `ReuseTabService.closable = true` 重新指定 `closable` 状态\n * 2. 路由配置中 data 属性中包含 `reuseClosable`\n * 3. 菜单数据中 `reuseClosable` 属性\n *\n * @param url 指定URL\n * @param route 指定路由快照\n */\n getClosable(url: string, route?: ActivatedRouteSnapshot): boolean {\n if (typeof this._closableCached[url] !== 'undefined') return this._closableCached[url];\n\n if (route && route.data && typeof route.data.reuseClosable === 'boolean') return route.data.reuseClosable;\n\n const menu = this.mode !== ReuseTabMatchMode.URL ? this.getMenu(url) : null;\n if (menu && typeof menu.reuseClosable === 'boolean') return menu.reuseClosable;\n\n return true;\n }\n /**\n * 清空 `closable` 缓存\n */\n clearClosableCached(): void {\n this._closableCached = {};\n }\n getTruthRoute(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n let next = route;\n while (next.firstChild) next = next.firstChild;\n return next;\n }\n /**\n * 根据快照获取URL地址\n */\n getUrl(route: ActivatedRouteSnapshot): string {\n let next = this.getTruthRoute(route);\n const segments: string[] = [];\n while (next) {\n segments.push(next.url.join('/'));\n next = next.parent!;\n }\n const url = `/${segments\n .filter(i => i)\n .reverse()\n .join('/')}`;\n return url;\n }\n /**\n * 检查快照是否允许被复用\n */\n can(route: ActivatedRouteSnapshot): boolean {\n const url = this.getUrl(route);\n if (url === this.removeUrlBuffer) return false;\n\n if (route.data && typeof route.data.reuse === 'boolean') return route.data.reuse;\n\n if (this.mode !== ReuseTabMatchMode.URL) {\n const menu = this.getMenu(url);\n if (!menu) return false;\n if (this.mode === ReuseTabMatchMode.Menu) {\n if (menu.reuse === false) return false;\n } else {\n if (!menu.reuse || menu.reuse !== true) return false;\n }\n return true;\n }\n return !this.isExclude(url);\n }\n\n isExclude(url: string): boolean {\n return this.excludes.findIndex(r => r.test(url)) !== -1;\n }\n\n /**\n * 刷新,触发一个 refresh 类型事件\n */\n refresh(data?: NzSafeAny): void {\n this._cachedChange.next({ active: 'refresh', data });\n }\n // #endregion\n\n // #region privates\n\n private destroy(_handle: NzSafeAny): void {\n if (_handle && _handle.componentRef && _handle.componentRef.destroy) _handle.componentRef.destroy();\n }\n\n private di(...args: NzSafeAny[]): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.debug) return;\n console.warn(...args);\n }\n }\n\n // #endregion\n\n constructor(private injector: Injector, private menuService: MenuService) {}\n\n init(): void {\n this.initScroll();\n this._inited = true;\n }\n\n private getMenu(url: string): Menu | null | undefined {\n const menus = this.menuService.getPathByUrl(url);\n if (!menus || menus.length === 0) return null;\n return menus.pop();\n }\n\n runHook(\n method: ReuseHookTypes,\n comp: ReuseComponentRef | number | undefined,\n type: ReuseHookOnReuseInitType = 'init'\n ): void {\n if (typeof comp === 'number') {\n const item = this._cached[comp];\n comp = item._handle.componentRef;\n }\n if (comp == null || !comp.instance) {\n return;\n }\n const compThis = comp.instance;\n const fn = compThis[method];\n if (typeof fn !== 'function') {\n return;\n }\n if (method === '_onReuseInit') {\n fn.call(compThis, type);\n } else {\n (fn as () => void).call(compThis);\n }\n }\n\n private hasInValidRoute(route: ActivatedRouteSnapshot): boolean {\n return !route.routeConfig || !!route.routeConfig.loadChildren || !!route.routeConfig.children;\n }\n\n /**\n * 决定是否允许路由复用,若 `true` 会触发 `store`\n */\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n if (this.hasInValidRoute(route)) return false;\n this.di('#shouldDetach', this.can(route), this.getUrl(route));\n return this.can(route);\n }\n\n /**\n * 存储\n */\n store(_snapshot: ActivatedRouteSnapshot, _handle: NzSafeAny): void {\n const url = this.getUrl(_snapshot);\n const idx = this.index(url);\n const isAdd = idx === -1;\n\n const item: ReuseTabCached = {\n title: this.getTitle(url, _snapshot),\n closable: this.getClosable(url, _snapshot),\n position: this.getKeepingScroll(url, _snapshot) ? this.positionBuffer[url] : null,\n url,\n _snapshot,\n _handle\n };\n if (isAdd) {\n if (this.count >= this._max) {\n // Get the oldest closable location\n const closeIdx = this._cached.findIndex(w => w.closable!);\n if (closeIdx !== -1) this.remove(closeIdx, false);\n }\n this._cached.push(item);\n } else {\n // Current handler is null when activate routes\n // For better reliability, we need to wait for the component to be attached before call _onReuseInit\n const cahcedComponentRef = this._cached[idx]._handle?.componentRef;\n if (_handle == null && cahcedComponentRef != null) {\n timer(100).subscribe(() => this.runHook('_onReuseInit', cahcedComponentRef));\n }\n this._cached[idx] = item;\n }\n this.removeUrlBuffer = null;\n\n this.di('#store', isAdd ? '[new]' : '[override]', url);\n\n if (_handle && _handle.componentRef) {\n this.runHook('_onReuseDestroy', _handle.componentRef);\n }\n\n if (!isAdd) {\n this._cachedChange.next({ active: 'override', item, list: this._cached });\n }\n }\n\n /**\n * 决定是否允许应用缓存数据\n */\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n if (this.hasInValidRoute(route)) return false;\n const url = this.getUrl(route);\n const data = this.get(url);\n const ret = !!(data && data._handle);\n this.di('#shouldAttach', ret, url);\n if (!ret) {\n this._cachedChange.next({ active: 'add', url, list: this._cached });\n }\n return ret;\n }\n\n /**\n * 提取复用数据\n */\n retrieve(route: ActivatedRouteSnapshot): NzSafeAny | null {\n if (this.hasInValidRoute(route)) return null;\n const url = this.getUrl(route);\n const data = this.get(url);\n const ret = (data && data._handle) || null;\n this.di('#retrieve', url, ret);\n return ret;\n }\n\n /**\n * 决定是否应该进行复用路由处理\n */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n let ret = future.routeConfig === curr.routeConfig;\n if (!ret) return false;\n\n const path = ((future.routeConfig && future.routeConfig.path) || '') as string;\n if (path.length > 0 && ~path.indexOf(':')) {\n if (this.routeParamMatchMode === 'strict') {\n ret = this.getUrl(future) === this.getUrl(curr);\n } else {\n ret = path === ((curr.routeConfig && curr.routeConfig.path) || '');\n }\n }\n this.di('=====================');\n this.di('#shouldReuseRoute', ret, `${this.getUrl(curr)}=>${this.getUrl(future)}`, future, curr);\n return ret;\n }\n\n // #region scroll\n\n /**\n * 获取 `keepingScroll` 状态,顺序如下:\n *\n * 1. 路由配置中 data 属性中包含 `keepingScroll`\n * 2. 菜单数据中 `keepingScroll` 属性\n * 3. 组件 `keepingScroll` 值\n */\n getKeepingScroll(url: string, route?: ActivatedRouteSnapshot): boolean {\n if (route && route.data && typeof route.data.keepingScroll === 'boolean') return route.data.keepingScroll;\n\n const menu = this.mode !== ReuseTabMatchMode.URL ? this.getMenu(url) : null;\n if (menu && typeof menu.keepingScroll === 'boolean') return menu.keepingScroll;\n\n return this.keepingScroll;\n }\n\n private get isDisabledInRouter(): boolean {\n const routerConfig = this.injector.get<ExtraOptions>(ROUTER_CONFIGURATION, {} as NzSafeAny);\n return routerConfig.scrollPositionRestoration === 'disabled';\n }\n\n private get ss(): ScrollService {\n return this.injector.get(ScrollService);\n }\n\n private initScroll(): void {\n if (this._router$) {\n this._router$.unsubscribe();\n }\n\n this._router$ = this.injector.get<Router>(Router).events.subscribe(e => {\n if (e instanceof NavigationStart) {\n const url = this.curUrl;\n if (this.getKeepingScroll(url, this.getTruthRoute(this.snapshot))) {\n this.positionBuffer[url] = this.ss.getScrollPosition(this.keepingScrollContainer);\n } else {\n delete this.positionBuffer[url];\n }\n } else if (e instanceof NavigationEnd) {\n const url = this.curUrl;\n const item = this.get(url);\n if (item && item.position && this.getKeepingScroll(url, this.getTruthRoute(this.snapshot))) {\n if (this.isDisabledInRouter) {\n this.ss.scrollToPosition(this.keepingScrollContainer, item.position);\n } else {\n setTimeout(() => this.ss.scrollToPosition(this.keepingScrollContainer, item.position!), 1);\n }\n }\n }\n });\n }\n\n // #endregion\n\n ngOnDestroy(): void {\n const { _cachedChange, _router$ } = this;\n this.clear();\n this._cached = [];\n _cachedChange.complete();\n\n if (_router$) {\n _router$.unsubscribe();\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\n\nimport { AlainI18NService, ALAIN_I18N_TOKEN } from '@delon/theme';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput } from '@delon/util/decorator';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTabSetComponent } from 'ng-zorro-antd/tabs';\n\nimport { ReuseTabContextService } from './reuse-tab-context.service';\nimport {\n ReuseContextCloseEvent,\n ReuseContextI18n,\n ReuseCustomContextMenu,\n ReuseItem,\n ReuseTabCached,\n ReuseTabMatchMode,\n ReuseTabNotify,\n ReuseTabRouteParamMatchMode,\n ReuseTitle\n} from './reuse-tab.interfaces';\nimport { ReuseTabService } from './reuse-tab.service';\n\n@Component({\n selector: 'reuse-tab, [reuse-tab]',\n exportAs: 'reuseTab',\n templateUrl: './reuse-tab.component.html',\n host: {\n '[class.reuse-tab]': 'true',\n '[class.reuse-tab__line]': `tabType === 'line'`,\n '[class.reuse-tab__card]': `tabType === 'card'`,\n '[class.reuse-tab__disabled]': `disabled`\n },\n providers: [ReuseTabContextService],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ReuseTabComponent implements OnInit, OnChanges, OnDestroy {\n static ngAcceptInputType_debug: BooleanInput;\n static ngAcceptInputType_max: NumberInput;\n static ngAcceptInputType_tabMaxWidth: NumberInput;\n static ngAcceptInputType_allowClose: BooleanInput;\n static ngAcceptInputType_keepingScroll: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n\n @ViewChild('tabset') private tabset!: NzTabSetComponent;\n private destroy$ = new Subject<void>();\n private _keepingScrollContainer?: Element;\n list: ReuseItem[] = [];\n item?: ReuseItem;\n pos = 0;\n\n // #region fields\n\n @Input() mode: ReuseTabMatchMode = ReuseTabMatchMode.Menu;\n @Input() i18n?: ReuseContextI18n;\n @Input() @InputBoolean() debug = false;\n @Input() @InputNumber() max?: number;\n @Input() @InputNumber() tabMaxWidth?: number;\n @Input() excludes?: RegExp[];\n @Input() @InputBoolean() allowClose = true;\n @Input() @InputBoolean() keepingScroll = false;\n @Input()\n set keepingScrollContainer(value: string | Element) {\n this._keepingScrollContainer = typeof value === 'string' ? this.doc.querySelector(value) : value;\n }\n @Input() customContextMenu: ReuseCustomContextMenu[] = [];\n @Input() tabBarExtraContent?: TemplateRef<void>;\n @Input() tabBarGutter?: number;\n @Input() tabBarStyle: { [key: string]: string } | null = null;\n @Input() tabType: 'line' | 'card' = 'line';\n @Input() routeParamMatchMode: ReuseTabRouteParamMatchMode = 'strict';\n @Input() @InputBoolean() disabled = false;\n @Input() titleRender?: TemplateRef<{ $implicit: ReuseItem }>;\n @Output() readonly change = new EventEmitter<ReuseItem>();\n @Output() readonly close = new EventEmitter<ReuseItem | null>();\n\n // #endregion\n\n constructor(\n private srv: ReuseTabService,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private route: ActivatedRoute,\n @Optional() @Inject(ALAIN_I18N_TOKEN) private i18nSrv: AlainI18NService,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n private platform: Platform\n ) {}\n\n private genTit(title: ReuseTitle): string {\n return title.i18n && this.i18nSrv ? this.i18nSrv.fanyi(title.i18n) : title.text!;\n }\n\n private get curUrl(): string {\n return this.srv.getUrl(this.route.snapshot);\n }\n\n private genCurItem(): ReuseItem {\n const url = this.curUrl;\n const snapshotTrue = this.srv.getTruthRoute(this.route.snapshot);\n return {\n url,\n title: this.genTit(this.srv.getTitle(url, snapshotTrue)),\n closable: this.allowClose && this.srv.count > 0 && this.srv.getClosable(url, snapshotTrue),\n active: false,\n last: false,\n index: 0\n };\n }\n\n private genList(notify: ReuseTabNotify | null): void {\n const ls = this.srv.items.map(\n (item: ReuseTabCached, index: number) =>\n ({\n url: item.url,\n title: this.genTit(item.title),\n closable: this.allowClose && item.closable && this.srv.count > 0,\n index,\n active: false,\n last: false\n } as ReuseItem)\n );\n // debugger;\n\n const url = this.curUrl;\n let addCurrent = ls.findIndex(w => w.url === url) === -1;\n if (notify && notify.active === 'close' && notify.url === url) {\n addCurrent = false;\n let toPos = 0;\n const curItem = this.list.find(w => w.url === url)!;\n if (curItem.index === ls.length) {\n // When closed is last\n toPos = ls.length - 1;\n } else if (curItem.index < ls.length) {\n // Should be actived next tab when closed is middle\n toPos = Math.max(0, curItem.index);\n }\n this.router.navigateByUrl(ls[toPos].url);\n }\n\n if (addCurrent) {\n ls.splice(this.pos + 1, 0, this.genCurItem());\n }\n\n ls.forEach((item, index) => (item.index = index));\n if (ls.length === 1) {\n ls[0].closable = false;\n }\n this.list = ls;\n this.cdr.detectChanges();\n this.updatePos();\n }\n\n private updateTitle(res: ReuseTabNotify): void {\n const item = this.list.find(w => w.url === res!.url);\n if (!item) return;\n item.title = this.genTit(res!.title!);\n this.cdr.detectChanges();\n }\n\n private refresh(item: ReuseItem): void {\n this.srv.runHook('_onReuseInit', this.pos === item.index ? this.srv.componentRef : item.index, 'refresh');\n }\n\n // #region UI\n\n contextMenuChange(res: ReuseContextCloseEvent): void {\n let fn: (() => void) | null = null;\n switch (res.type) {\n case 'refresh':\n this.refresh(res.item);\n break;\n case 'close':\n this._close(null, res.item.index, res.includeNonCloseable);\n break;\n case 'closeRight':\n fn = () => {\n this.srv.closeRight(res.item.url, res.includeNonCloseable);\n this.close.emit(null);\n };\n break;\n case 'closeOther':\n fn = () => {\n this.srv.clear(res.includeNonCloseable);\n this.close.emit(null);\n };\n break;\n }\n if (!fn) {\n return;\n }\n if (!res.item.active && res.item.index <= this.list.find(w => w.active)!.index) {\n this._to(res.item.index, fn);\n } else {\n fn();\n }\n }\n\n _to(index: number, cb?: () => void): void {\n index = Math.max(0, Math.min(index, this.list.length - 1));\n const item = this.list[index];\n this.router.navigateByUrl(item.url).then(res => {\n if (!res) return;\n this.item = item;\n this.change.emit(item);\n if (cb) {\n cb();\n }\n });\n }\n\n _close(e: Event | null, idx: number, includeNonCloseable: boolean): boolean {\n if (e != null) {\n e.preventDefault();\n e.stopPropagation();\n }\n const item = this.list[idx];\n this.srv.close(item.url, includeNonCloseable);\n this.close.emit(item);\n this.cdr.detectChanges();\n return false;\n }\n\n activate(instance: NzSafeAny): void {\n this.srv.componentRef = { instance };\n }\n\n private updatePos(): void {\n const url = this.srv.getUrl(this.route.snapshot);\n const ls = this.list.filter(w => w.url === url || !this.srv.isExclude(w.url));\n if (ls.length === 0) {\n return;\n }\n\n const last = ls[ls.length - 1];\n const item = ls.find(w => w.url === url);\n last.last = true;\n const pos = item == null ? last.index : item.index;\n ls.forEach((i, idx) => (i.active = pos === idx));\n this.pos = pos;\n // TODO: 目前无法知道为什么 `pos` 无法通过 `nzSelectedIndex` 生效,因此强制使用组件实例的方式来修改,这种方式是安全的\n // https://github.com/ng-alain/ng-alain/issues/1736\n this.tabset.nzSelectedIndex = pos;\n this.list = ls;\n this.cdr.detectChanges();\n }\n\n // #endregion\n\n ngOnInit(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n this.srv.change.pipe(takeUntil(this.destroy$)).subscribe(res => {\n switch (res?.active) {\n case 'title':\n this.updateTitle(res);\n return;\n case 'override':\n if (res?.list?.length === this.list.length) {\n this.updatePos();\n return;\n }\n break;\n }\n this.genList(res);\n });\n\n this.i18nSrv.change\n .pipe(\n filter(() => this.srv.inited),\n takeUntil(this.destroy$),\n debounceTime(100)\n )\n .subscribe(() => this.genList({ active: 'title' }));\n\n this.srv.init();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n if (changes.max) this.srv.max = this.max!;\n if (changes.excludes) this.srv.excludes = this.excludes!;\n if (changes.mode) this.srv.mode = this.mode;\n if (changes.routeParamMatchMode) this.srv.routeParamMatchMode = this.routeParamMatchMode;\n if (changes.keepingScroll) {\n this.srv.keepingScroll = this.keepingScroll;\n this.srv.keepingScrollContainer = this._keepingScrollContainer;\n }\n\n this.srv.debug = this.debug;\n\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n const { destroy$ } = this;\n destroy$.next();\n destroy$.complete();\n }\n}\n","<nz-tabset\n #tabset\n [nzSelectedIndex]=\"pos\"\n [nzAnimated]=\"false\"\n [nzType]=\"tabType\"\n [nzTabBarExtraContent]=\"tabBarExtraContent\"\n [nzTabBarGutter]=\"tabBarGutter\"\n [nzTabBarStyle]=\"tabBarStyle\"\n>\n <nz-tab *ngFor=\"let i of list; let index = index\" [nzTitle]=\"titleTemplate\" (nzClick)=\"_to(index)\">\n <ng-template #titleTemplate>\n <div\n [reuse-tab-context-menu]=\"i\"\n [customContextMenu]=\"customContextMenu\"\n class=\"reuse-tab__name\"\n [attr.title]=\"i.title\"\n >\n <span [class.reuse-tab__name-width]=\"tabMaxWidth\" [style.max-width.px]=\"tabMaxWidth\">\n <ng-container\n *ngIf=\"titleRender; else defaultTitle\"\n [ngTemplateOutlet]=\"titleRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i }\"\n ></ng-container>\n <ng-template #defaultTitle>{{ i.title }}</ng-template>\n </span>\n </div>\n <i *ngIf=\"i.closable\" nz-icon nzType=\"close\" class=\"reuse-tab__op\" (click)=\"_close($event, index, false)\"></i>\n </ng-template>\n </nz-tab>\n</nz-tabset>\n<reuse-tab-context [i18n]=\"i18n\" (change)=\"contextMenuChange($event)\"></reuse-tab-context>\n","import { ActivatedRouteSnapshot, RouteReuseStrategy } from '@angular/router';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ReuseTabService } from './reuse-tab.service';\n\nexport class ReuseTabStrategy implements RouteReuseStrategy {\n constructor(private srv: ReuseTabService) {}\n\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldDetach(route);\n }\n store(route: ActivatedRouteSnapshot, handle: unknown): void {\n this.srv.store(route, handle);\n }\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldAttach(route);\n }\n retrieve(route: ActivatedRouteSnapshot): NzSafeAny | null {\n return this.srv.retrieve(route);\n }\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n return this.srv.shouldReuseRoute(future, curr);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\n\nimport { ReuseTabContextMenuComponent } from './reuse-tab-context-menu.component';\nimport { ReuseTabContextComponent } from './reuse-tab-context.component';\nimport { ReuseTabContextDirective } from './reuse-tab-context.directive';\nimport { ReuseTabComponent } from './reuse-tab.component';\n\nconst COMPONENTS = [ReuseTabComponent];\nconst NOEXPORTS = [ReuseTabContextMenuComponent, ReuseTabContextComponent, ReuseTabContextDirective];\n\n@NgModule({\n imports: [CommonModule, RouterModule, DelonLocaleModule, NzMenuModule, NzTabsModule, NzIconModule, OverlayModule],\n declarations: [...COMPONENTS, ...NOEXPORTS],\n exports: COMPONENTS\n})\nexport class ReuseTabModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/fesm2015/table.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"table.mjs","sources":["../../../../packages/abc/st/st-row.directive.ts","../../../../packages/abc/st/st-widget.ts","../../../../packages/abc/st/st-column-source.ts","../../../../packages/abc/st/st-data-source.ts","../../../../packages/abc/st/st-export.ts","../../../../packages/abc/st/st-widget-host.directive.ts","../../../../packages/abc/st/st.config.ts","../../../../packages/abc/st/st-filter.component.ts","../../../../packages/abc/st/st.component.ts","../../../../packages/abc/st/st.component.html","../../../../packages/abc/st/st-td.component.html","../../../../packages/abc/st/st.module.ts","../../../../packages/abc/st/table.ts"],"sourcesContent":["import { Directive, Host, Injectable, Input, OnInit, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport class STRowSource {\n private titles: { [key: string]: TemplateRef<void> } = {};\n private rows: { [key: string]: TemplateRef<void> } = {};\n\n add(type: string | undefined, path: string, ref: TemplateRef<void>): void {\n this[type === 'title' ? 'titles' : 'rows'][path] = ref;\n }\n\n getTitle(path: string): TemplateRef<void> {\n return this.titles[path];\n }\n\n getRow(path: string): TemplateRef<void> {\n return this.rows[path];\n }\n}\n\n@Directive({ selector: '[st-row]' })\nexport class STRowDirective implements OnInit {\n @Input('st-row') id!: string;\n\n @Input() type?: 'title';\n\n constructor(private ref: TemplateRef<void>, @Host() private source: STRowSource) {}\n\n ngOnInit(): void {\n this.source.add(this.type, this.id, this.ref);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Injectable({ providedIn: 'root' })\nexport class STWidgetRegistry {\n private _widgets: { [type: string]: NzSafeAny } = {};\n\n get widgets(): NzSafeAny {\n return this._widgets;\n }\n\n register(type: string, widget: NzSafeAny): void {\n this._widgets[type] = widget;\n }\n\n has(type: string): boolean {\n return this._widgets.hasOwnProperty(type);\n }\n\n get(type: string): NzSafeAny {\n return this._widgets[type];\n }\n}\n","import { Host, Inject, Injectable, Optional, TemplateRef } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { ACLService } from '@delon/acl';\nimport { AlainI18NService, ALAIN_I18N_TOKEN } from '@delon/theme';\nimport { AlainSTConfig } from '@delon/util/config';\nimport { deepCopy, warn } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STRowSource } from './st-row.directive';\nimport { STWidgetRegistry } from './st-widget';\nimport {\n STColumn,\n STColumnButton,\n STColumnButtonPop,\n STColumnFilter,\n STColumnGroupType,\n STColumnSafeType,\n STIcon,\n STResizable,\n STSortMap,\n STWidthMode\n} from './st.interfaces';\nimport { _STColumn, _STHeader } from './st.types';\n\nexport interface STColumnSourceProcessOptions {\n widthMode: STWidthMode;\n resizable?: STResizable;\n safeType: STColumnSafeType;\n}\n\n@Injectable()\nexport class STColumnSource {\n private cog!: AlainSTConfig;\n\n constructor(\n private dom: DomSanitizer,\n @Host() private rowSource: STRowSource,\n @Optional() private acl: ACLService,\n @Optional() @Inject(ALAIN_I18N_TOKEN) private i18nSrv: AlainI18NService,\n private stWidgetRegistry: STWidgetRegistry\n ) {}\n\n setCog(val: AlainSTConfig): void {\n this.cog = val;\n }\n\n private fixPop(i: STColumnButton, def: STColumnButtonPop): void {\n if (i.pop == null || i.pop === false) {\n i.pop = false;\n return;\n }\n\n let pop = {\n ...def\n };\n if (typeof i.pop === 'string') {\n pop.title = i.pop;\n } else if (typeof i.pop === 'object') {\n pop = {\n ...pop,\n ...i.pop\n };\n }\n\n if (typeof pop.condition !== 'function') {\n pop.condition = () => false;\n }\n\n i.pop = pop;\n }\n\n private btnCoerce(list: STColumnButton[]): STColumnButton[] {\n if (!list) return [];\n const ret: STColumnButton[] = [];\n const { modal, drawer, pop, btnIcon } = this.cog;\n\n for (const item of list) {\n if (this.acl && item.acl && !this.acl.can(item.acl)) {\n continue;\n }\n\n if (item.type === 'modal' || item.type === 'static') {\n if (item.modal == null || item.modal.component == null) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`[st] Should specify modal parameter when type is modal or static`);\n }\n item.type = 'none';\n } else {\n item.modal = { ...{ paramsName: 'record', size: 'lg' }, ...modal, ...item.modal };\n }\n }\n\n if (item.type === 'drawer') {\n if (item.drawer == null || item.drawer.component == null) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`[st] Should specify drawer parameter when type is drawer`);\n }\n item.type = 'none';\n } else {\n item.drawer = { ...{ paramsName: 'record', size: 'lg' }, ...drawer, ...item.drawer };\n }\n }\n\n if (item.type === 'del' && typeof item.pop === 'undefined') {\n item.pop = true;\n }\n\n // pop\n this.fixPop(item, pop!);\n\n if (item.icon) {\n item.icon = {\n ...btnIcon,\n ...(typeof item.icon === 'string' ? { type: item.icon } : item.icon)\n };\n }\n\n item.children = item.children && item.children.length > 0 ? this.btnCoerce(item.children) : [];\n\n // i18n\n if (item.i18n && this.i18nSrv) {\n item.text = this.i18nSrv.fanyi(item.i18n);\n }\n\n ret.push(item);\n }\n this.btnCoerceIf(ret);\n return ret;\n }\n\n private btnCoerceIf(list: STColumnButton[]): void {\n for (const item of list) {\n if (!item.iif) item.iif = () => true;\n item.iifBehavior = item.iifBehavior || this.cog.iifBehavior;\n if (item.children && item.children.length > 0) {\n this.btnCoerceIf(item.children);\n } else {\n item.children = [];\n }\n }\n }\n\n private fixedCoerce(list: _STColumn[]): void {\n const countReduce = (a: number, b: _STColumn): number => a + +b.width!.toString().replace('px', '');\n // left width\n list\n .filter(w => w.fixed && w.fixed === 'left' && w.width)\n .forEach((item, idx) => (item._left = `${list.slice(0, idx).reduce(countReduce, 0)}px`));\n // right width\n list\n .filter(w => w.fixed && w.fixed === 'right' && w.width)\n .reverse()\n .forEach((item, idx) => (item._right = `${idx > 0 ? list.slice(-idx).reduce(countReduce, 0) : 0}px`));\n }\n\n private sortCoerce(item: _STColumn): STSortMap {\n const res = this.fixSortCoerce(item);\n res.reName = {\n ...this.cog.sortReName,\n ...res.reName\n };\n return res;\n }\n\n private fixSortCoerce(item: _STColumn): STSortMap {\n if (typeof item.sort === 'undefined') {\n return { enabled: false };\n }\n\n let res: STSortMap = {};\n\n if (typeof item.sort === 'string') {\n res.key = item.sort;\n } else if (typeof item.sort !== 'boolean') {\n res = item.sort;\n } else if (typeof item.sort === 'boolean') {\n res.compare = (a, b) => a[item.indexKey!] - b[item.indexKey!];\n }\n\n if (!res.key) {\n res.key = item.indexKey;\n }\n\n res.enabled = true;\n\n return res;\n }\n\n private filterCoerce(item: _STColumn): STColumnFilter | null {\n if (item.filter == null) {\n return null;\n }\n\n let res: STColumnFilter | null = item.filter;\n res.type = res.type || 'default';\n res.showOPArea = res.showOPArea !== false;\n\n let icon = 'filter';\n let iconTheme = 'fill';\n let fixMenus = true;\n let value: NzSafeAny = undefined;\n switch (res.type) {\n case 'keyword':\n icon = 'search';\n iconTheme = 'outline';\n break;\n case 'number':\n icon = 'search';\n iconTheme = 'outline';\n res.number = {\n step: 1,\n min: -Infinity,\n max: Infinity,\n ...res.number\n };\n break;\n case 'date':\n icon = 'calendar';\n iconTheme = 'outline';\n res.date = {\n range: false,\n mode: 'date',\n showToday: true,\n showNow: false,\n ...res.date\n };\n break;\n default:\n fixMenus = false;\n break;\n }\n if (fixMenus && (res.menus == null || res.menus!.length === 0)) {\n res.menus = [{ value }];\n }\n\n if (res.menus!.length === 0) {\n return null;\n }\n\n if (typeof res.multiple === 'undefined') {\n res.multiple = true;\n }\n\n res.confirmText = res.confirmText || this.cog.filterConfirmText;\n res.clearText = res.clearText || this.cog.filterClearText;\n res.key = res.key || item.indexKey;\n res.icon = res.icon || icon;\n\n const baseIcon = { type: icon, theme: iconTheme } as STIcon;\n if (typeof res.icon === 'string') {\n res.icon = { ...baseIcon, type: res.icon } as STIcon;\n } else {\n res.icon = { ...baseIcon, ...res.icon };\n }\n\n this.updateDefault(res);\n\n if (this.acl) {\n res.menus = res.menus!.filter(w => this.acl.can(w.acl!));\n }\n\n if (res.menus!.length <= 0) {\n res = null;\n }\n\n return res;\n }\n\n private restoreRender(item: _STColumn): void {\n if (item.renderTitle) {\n item.__renderTitle =\n typeof item.renderTitle === 'string'\n ? this.rowSource.getTitle(item.renderTitle)\n : (item.renderTitle as TemplateRef<void>);\n }\n if (item.render) {\n item.__render =\n typeof item.render === 'string' ? this.rowSource.getRow(item.render) : (item.render as TemplateRef<void>);\n }\n }\n\n private widgetCoerce(item: _STColumn): void {\n if (item.type !== 'widget') return;\n if (item.widget == null || !this.stWidgetRegistry.has(item.widget.type)) {\n delete item.type;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warn(`st: No widget for type \"${item.widget?.type}\"`);\n }\n }\n }\n\n private genHeaders(rootColumns: _STColumn[]): { headers: _STHeader[][]; headerWidths: string[] | null } {\n const rows: _STHeader[][] = [];\n const widths: string[] = [];\n const fillRowCells = (columns: _STColumn[], colIndex: number, rowIndex = 0): number[] => {\n // Init rows\n rows[rowIndex] = rows[rowIndex] || [];\n\n let currentColIndex = colIndex;\n const colSpans: number[] = columns.map(column => {\n const cell: STColumnGroupType = {\n column,\n colStart: currentColIndex,\n hasSubColumns: false\n };\n\n let colSpan = 1;\n\n const subColumns = column.children;\n if (Array.isArray(subColumns) && subColumns.length > 0) {\n colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce((total, count) => total + count, 0);\n cell.hasSubColumns = true;\n } else {\n widths.push((cell.column.width as string) || '');\n }\n\n if ('colSpan' in column) {\n colSpan = column.colSpan!;\n }\n\n if ('rowSpan' in column) {\n cell.rowSpan = column.rowSpan;\n }\n\n cell.colSpan = colSpan;\n cell.colEnd = cell.colStart + colSpan - 1;\n rows[rowIndex].push(cell as NzSafeAny);\n\n currentColIndex += colSpan;\n\n return colSpan;\n });\n\n return colSpans;\n };\n\n fillRowCells(rootColumns, 0);\n\n // Handle `rowSpan`\n const rowCount = rows.length;\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n rows[rowIndex].forEach(cell => {\n if (!('rowSpan' in cell) && !(cell as _STHeader).hasSubColumns) {\n (cell as _STHeader).rowSpan = rowCount - rowIndex;\n }\n });\n }\n\n return { headers: rows, headerWidths: rowCount > 1 ? widths : null };\n }\n\n private cleanCond(list: _STColumn[]): _STColumn[] {\n const res: _STColumn[] = [];\n const copyList = deepCopy(list);\n for (const item of copyList) {\n if (item.iif && !item.iif(item)) {\n continue;\n }\n if (this.acl && item.acl && !this.acl.can(item.acl)) {\n continue;\n }\n if (Array.isArray(item.children) && item.children.length > 0) {\n item.children = this.cleanCond(item.children);\n }\n res.push(item);\n }\n return res;\n }\n\n process(\n list: STColumn[],\n options: STColumnSourceProcessOptions\n ): { columns: _STColumn[]; headers: _STHeader[][]; headerWidths: string[] | null } {\n if (!list || list.length === 0) throw new Error(`[st]: the columns property muse be define!`);\n\n const { noIndex } = this.cog;\n let checkboxCount = 0;\n let radioCount = 0;\n let point = 0;\n const columns: _STColumn[] = [];\n\n const processItem = (item: _STColumn): _STColumn => {\n // index\n if (item.index) {\n if (!Array.isArray(item.index)) {\n item.index = item.index.toString().split('.');\n }\n item.indexKey = item.index.join('.');\n }\n\n // #region title\n\n const tit = (typeof item.title === 'string' ? { text: item.title } : item.title) || {};\n if (tit.i18n && this.i18nSrv) {\n tit.text = this.i18nSrv.fanyi(tit.i18n);\n }\n if (tit.text) {\n tit._text = this.dom.bypassSecurityTrustHtml(tit.text);\n }\n item.title = tit;\n\n // #endregion\n\n // no\n if (item.type === 'no') {\n item.noIndex = item.noIndex == null ? noIndex : item.noIndex;\n }\n // checkbox\n if (item.selections == null) {\n item.selections = [];\n }\n if (item.type === 'checkbox') {\n ++checkboxCount;\n if (!item.width) {\n item.width = `${item.selections.length > 0 ? 62 : 50}px`;\n }\n }\n if (this.acl) {\n item.selections = item.selections.filter(w => this.acl.can(w.acl!));\n }\n // radio\n if (item.type === 'radio') {\n ++radioCount;\n item.selections = [];\n if (!item.width) {\n item.width = '50px';\n }\n }\n // types\n if (item.type === 'yn') {\n item.yn = { truth: true, ...this.cog.yn, ...item.yn };\n }\n // date\n if (item.type === 'date') {\n item.dateFormat = item.dateFormat || this.cog.date?.format;\n }\n if (\n (item.type === 'link' && typeof item.click !== 'function') ||\n (item.type === 'badge' && item.badge == null) ||\n (item.type === 'tag' && item.tag == null) ||\n (item.type === 'enum' && item.enum == null)\n ) {\n item.type = '';\n }\n item._isTruncate = !!item.width && options.widthMode.strictBehavior === 'truncate' && item.type !== 'img';\n // className\n if (!item.className) {\n item.className = (\n {\n number: 'text-right',\n currency: 'text-right',\n date: 'text-center'\n } as NzSafeAny\n )[item.type!];\n }\n item._className = item.className || (item._isTruncate ? 'text-truncate' : null);\n // width\n if (typeof item.width === 'number') {\n item._width = item.width;\n item.width = `${item.width}px`;\n }\n item._left = false;\n item._right = false;\n item.safeType = item.safeType ?? options.safeType;\n\n // sorter\n item._sort = this.sortCoerce(item);\n // filter\n item.filter = this.filterCoerce(item) as STColumnFilter;\n // buttons\n item.buttons = this.btnCoerce(item.buttons!);\n // widget\n this.widgetCoerce(item);\n // restore custom row\n this.restoreRender(item);\n // resizable\n item.resizable = {\n disabled: true,\n bounds: 'window',\n minWidth: 60,\n maxWidth: 360,\n preview: true,\n ...options.resizable,\n ...(typeof item.resizable === 'boolean' ? ({ disabled: !item.resizable } as STResizable) : item.resizable)\n };\n\n item.__point = point++;\n\n return item;\n };\n\n const processList = (data: _STColumn[]): void => {\n for (const item of data) {\n columns.push(processItem(item));\n if (Array.isArray(item.children)) {\n processList(item.children);\n }\n }\n };\n\n const copyList = this.cleanCond(list as _STColumn[]);\n processList(copyList);\n\n if (checkboxCount > 1) {\n throw new Error(`[st]: just only one column checkbox`);\n }\n if (radioCount > 1) {\n throw new Error(`[st]: just only one column radio`);\n }\n\n this.fixedCoerce(columns as _STColumn[]);\n return {\n columns: columns.filter(w => !Array.isArray(w.children) || w.children.length === 0),\n ...this.genHeaders(copyList)\n };\n }\n\n restoreAllRender(columns: _STColumn[]): void {\n columns.forEach(i => this.restoreRender(i));\n }\n\n updateDefault(filter: STColumnFilter): this {\n if (filter.type === 'default') {\n filter.default = filter.menus!.findIndex(w => w.checked!) !== -1;\n } else {\n filter.default = !!filter.menus![0].value;\n }\n return this;\n }\n\n cleanFilter(col: _STColumn): this {\n const f = col.filter!;\n f.default = false;\n if (f.type === 'default') {\n f.menus!.forEach(i => (i.checked = false));\n } else {\n f.menus![0].value = undefined;\n }\n return this;\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { HttpParams } from '@angular/common/http';\nimport { Host, Injectable } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { DatePipe, YNPipe, _HttpClient } from '@delon/theme';\nimport { CurrencyService } from '@delon/util/format';\nimport { deepCopy, deepGet } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport {\n STColumn,\n STColumnFilter,\n STColumnFilterMenu,\n STCustomRequestOptions,\n STData,\n STMultiSort,\n STMultiSortResultType,\n STPage,\n STReq,\n STReqReNameType,\n STRequestOptions,\n STRes,\n STRowClassName,\n STSingleSort,\n STSortMap,\n STStatistical,\n STStatisticalResult,\n STStatisticalResults,\n STStatisticalType\n} from './st.interfaces';\nimport { _STColumn, _STColumnButton, _STDataValue } from './st.types';\n\nexport interface STDataSourceOptions {\n pi: number;\n ps: number;\n paginator: boolean;\n data: string | STData[] | Observable<STData[]>;\n total: number;\n req: STReq;\n res: STRes;\n page: STPage;\n columns: _STColumn[];\n singleSort?: STSingleSort;\n multiSort?: STMultiSort;\n rowClassName?: STRowClassName;\n customRequest?: (options: STCustomRequestOptions) => Observable<NzSafeAny>;\n}\n\nexport interface STDataSourceResult {\n /** 是否需要显示分页器 */\n pageShow: boolean;\n /** 新 `pi`,若返回 `undefined` 表示用户受控 */\n pi: number;\n /** 新 `ps`,若返回 `undefined` 表示用户受控 */\n ps: number;\n /** 新 `total`,若返回 `undefined` 表示用户受控 */\n total: number;\n /** 数据 */\n list: STData[];\n /** 统计数据 */\n statistical: STStatisticalResults;\n}\n\n@Injectable()\nexport class STDataSource {\n private sortTick = 0;\n\n constructor(\n private http: _HttpClient,\n @Host() private datePipe: DatePipe,\n @Host() private ynPipe: YNPipe,\n @Host() private numberPipe: DecimalPipe,\n private currencySrv: CurrencyService,\n private dom: DomSanitizer\n ) {}\n\n process(options: STDataSourceOptions): Observable<STDataSourceResult> {\n let data$: Observable<STData[]>;\n let isRemote = false;\n const { data, res, total, page, pi, ps, paginator, columns } = options;\n let retTotal: number;\n let retPs: number;\n let retList: STData[];\n let retPi: number;\n let rawData: NzSafeAny;\n let showPage = page.show;\n\n if (typeof data === 'string') {\n isRemote = true;\n data$ = this.getByRemote(data, options).pipe(\n map(result => {\n rawData = result;\n let ret: STData[];\n if (Array.isArray(result)) {\n ret = result;\n retTotal = ret.length;\n retPs = retTotal;\n showPage = false;\n } else {\n // list\n ret = deepGet(result, res.reName!.list as string[], []);\n if (ret == null || !Array.isArray(ret)) {\n ret = [];\n }\n // total\n const resultTotal = res.reName!.total && deepGet(result, res.reName!.total as string[], null);\n retTotal = resultTotal == null ? total || 0 : +resultTotal;\n }\n return deepCopy(ret);\n })\n );\n } else if (Array.isArray(data)) {\n data$ = of(data);\n } else {\n // a cold observable\n data$ = data;\n }\n\n if (!isRemote) {\n data$ = data$.pipe(\n // sort\n map((result: STData[]) => {\n rawData = result;\n let copyResult = deepCopy(result);\n const sorterFn = this.getSorterFn(columns as _STColumn[]);\n if (sorterFn) {\n copyResult = copyResult.sort(sorterFn);\n }\n return copyResult;\n }),\n // filter\n map((result: STData[]) => {\n columns\n .filter(w => w.filter)\n .forEach(c => {\n const filter = c.filter!;\n const values = this.getFilteredData(filter);\n if (values.length === 0) return;\n const onFilter = filter.fn;\n if (typeof onFilter !== 'function') {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`[st] Muse provide the fn function in filter`);\n }\n return;\n }\n result = result.filter(record => values.some(v => onFilter(v, record)));\n });\n return result;\n }),\n // paging\n map((result: STData[]) => {\n if (paginator && page.front) {\n const maxPageIndex = Math.ceil(result.length / ps);\n retPi = Math.max(1, pi > maxPageIndex ? maxPageIndex : pi);\n retTotal = result.length;\n if (page.show === true) {\n return result.slice((retPi - 1) * ps, retPi * ps);\n }\n }\n return result;\n })\n );\n }\n\n // pre-process\n if (typeof res.process === 'function') {\n data$ = data$.pipe(map(result => res.process!(result, rawData)));\n }\n\n data$ = data$.pipe(map(result => this.optimizeData({ result, columns, rowClassName: options.rowClassName })));\n\n return data$.pipe(\n map(result => {\n retList = result;\n const realTotal = retTotal || total;\n const realPs = retPs || ps;\n\n return {\n pi: retPi,\n ps: retPs,\n total: retTotal,\n list: retList,\n statistical: this.genStatistical(columns as _STColumn[], retList, rawData),\n pageShow: typeof showPage === 'undefined' ? realTotal > realPs : showPage\n } as STDataSourceResult;\n })\n );\n }\n\n private get(item: STData, col: _STColumn, idx: number): _STDataValue {\n try {\n const safeHtml = col.safeType === 'safeHtml';\n if (col.format) {\n const formatRes = col.format(item, col, idx) || '';\n return {\n text: formatRes,\n _text: safeHtml ? this.dom.bypassSecurityTrustHtml(formatRes) : formatRes,\n org: formatRes,\n safeType: col.safeType!\n };\n }\n\n const value = deepGet(item, col.index as string[], col.default);\n\n let text = value;\n let color: string | undefined;\n switch (col.type) {\n case 'no':\n text = this.getNoIndex(item, col, idx);\n break;\n case 'img':\n text = value ? `<img src=\"${value}\" class=\"img\">` : '';\n break;\n case 'number':\n text = this.numberPipe.transform(value, col.numberDigits);\n break;\n case 'currency':\n text = this.currencySrv.format(value, col.currency?.format);\n break;\n case 'date':\n text = value === col.default ? col.default : this.datePipe.transform(value, col.dateFormat);\n break;\n case 'yn':\n text = this.ynPipe.transform(value === col.yn!.truth, col.yn!.yes!, col.yn!.no!, col.yn!.mode!, false);\n break;\n case 'enum':\n text = col.enum![value];\n break;\n case 'tag':\n case 'badge':\n const data = col.type === 'tag' ? col.tag : col.badge;\n if (data && data[text]) {\n const dataItem = data[text];\n text = dataItem.text;\n color = dataItem.color;\n } else {\n text = '';\n }\n break;\n }\n if (text == null) text = '';\n return {\n text,\n _text: safeHtml ? this.dom.bypassSecurityTrustHtml(text) : text,\n org: value,\n color,\n safeType: col.safeType!,\n buttons: []\n };\n } catch (ex) {\n const text = `INVALID DATA`;\n console.error(`Failed to get data`, item, col, ex);\n return { text, _text: text, org: text, buttons: [], safeType: 'text' };\n }\n }\n\n private getByRemote(url: string, options: STDataSourceOptions): Observable<unknown> {\n const { req, page, paginator, pi, ps, singleSort, multiSort, columns } = options;\n const method = (req.method || 'GET').toUpperCase();\n let params = {};\n const reName = req.reName as STReqReNameType;\n if (paginator) {\n if (req.type === 'page') {\n params = {\n [reName.pi as string]: page.zeroIndexed ? pi - 1 : pi,\n [reName.ps as string]: ps\n };\n } else {\n params = {\n [reName.skip as string]: (pi - 1) * ps,\n [reName.limit as string]: ps\n };\n }\n }\n params = {\n ...params,\n ...req.params,\n ...this.getReqSortMap(singleSort, multiSort, columns),\n ...this.getReqFilterMap(columns)\n };\n\n let reqOptions: STRequestOptions = {\n params,\n body: req.body,\n headers: req.headers\n };\n if (method === 'POST' && req.allInBody === true) {\n reqOptions = {\n body: { ...req.body, ...params },\n headers: req.headers\n };\n }\n if (typeof req.process === 'function') {\n reqOptions = req.process(reqOptions);\n }\n if (!(reqOptions.params instanceof HttpParams)) {\n reqOptions.params = new HttpParams({ fromObject: reqOptions.params });\n }\n if (typeof options.customRequest === 'function') {\n return options.customRequest({ method, url, options: reqOptions });\n }\n return this.http.request(method, url, reqOptions);\n }\n\n optimizeData(options: { columns: _STColumn[]; result: STData[]; rowClassName?: STRowClassName }): STData[] {\n const { result, columns, rowClassName } = options;\n for (let i = 0, len = result.length; i < len; i++) {\n result[i]._values = columns.map(c => {\n if (Array.isArray(c.buttons) && c.buttons.length > 0) {\n return { buttons: this.genButtons(c.buttons, result[i], c), _text: '' };\n }\n\n return this.get(result[i], c, i);\n });\n result[i]._rowClassName = [rowClassName ? rowClassName(result[i], i) : null, result[i].className]\n .filter(w => !!w)\n .join(' ');\n }\n return result;\n }\n\n getNoIndex(item: STData, col: _STColumn, idx: number): number {\n return typeof col.noIndex === 'function' ? col.noIndex(item, col, idx) : col.noIndex! + idx;\n }\n\n private genButtons(_btns: _STColumnButton[], item: STData, col: STColumn): _STColumnButton[] {\n const fn = (btns: _STColumnButton[]): _STColumnButton[] => {\n return deepCopy(btns).filter(btn => {\n const result = btn.iif!(item, btn, col);\n const isRenderDisabled = btn.iifBehavior === 'disabled';\n btn._result = result;\n btn._disabled = !result && isRenderDisabled;\n if (btn.children!.length > 0) {\n btn.children = fn(btn.children!);\n }\n delete btn.iif;\n return result || isRenderDisabled;\n });\n };\n\n const res = fn(_btns);\n\n const fnText = (btns: _STColumnButton[]): _STColumnButton[] => {\n for (const btn of btns) {\n btn._text = typeof btn.text === 'function' ? btn.text(item, btn) : btn.text || '';\n if (btn.children!.length > 0) {\n btn.children = fnText(btn.children!);\n }\n }\n return btns;\n };\n\n return fnText(res);\n }\n\n // #region sort\n\n private getValidSort(columns: _STColumn[]): STSortMap[] {\n return columns.filter(item => item._sort && item._sort.enabled && item._sort.default).map(item => item._sort!);\n }\n\n private getSorterFn(columns: _STColumn[]): ((a: STData, b: STData) => number) | void {\n const sortList = this.getValidSort(columns);\n if (sortList.length === 0) {\n return;\n }\n const sortItem = sortList[0];\n if (sortItem.compare === null) {\n return;\n }\n if (typeof sortItem.compare !== 'function') {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`[st] Muse provide the compare function in sort`);\n }\n return;\n }\n\n return (a: STData, b: STData) => {\n const result = sortItem.compare!(a, b);\n if (result !== 0) {\n return sortItem.default === 'descend' ? -result : result;\n }\n return 0;\n };\n }\n\n get nextSortTick(): number {\n return ++this.sortTick;\n }\n\n getReqSortMap(\n singleSort: STSingleSort | undefined,\n multiSort: STMultiSort | undefined,\n columns: _STColumn[]\n ): STMultiSortResultType {\n let ret: STMultiSortResultType = {};\n const sortList = this.getValidSort(columns);\n\n if (multiSort) {\n const ms: STMultiSort = {\n key: 'sort',\n separator: '-',\n nameSeparator: '.',\n keepEmptyKey: true,\n arrayParam: false,\n ...multiSort\n };\n\n const sortMap = sortList\n .sort((a, b) => a.tick - b.tick)\n .map(item => item.key! + ms.nameSeparator + ((item.reName || {})[item.default!] || item.default));\n\n ret = { [ms.key!]: ms.arrayParam ? sortMap : sortMap.join(ms.separator) };\n\n return sortMap.length === 0 && ms.keepEmptyKey === false ? {} : ret;\n }\n\n if (sortList.length === 0) return ret;\n\n const mapData = sortList[0];\n let sortFiled = mapData.key;\n let sortValue = (sortList[0].reName || {})[mapData.default!] || mapData.default;\n if (singleSort) {\n sortValue = sortFiled + (singleSort.nameSeparator || '.') + sortValue;\n sortFiled = singleSort.key || 'sort';\n }\n ret[sortFiled as string] = sortValue as string;\n return ret;\n }\n\n // #endregion\n\n // #region filter\n\n private getFilteredData(filter: STColumnFilter): STColumnFilterMenu[] {\n return filter.type === 'default' ? filter.menus!.filter(f => f.checked === true) : filter.menus!.slice(0, 1);\n }\n\n private getReqFilterMap(columns: _STColumn[]): { [key: string]: string } {\n let ret = {};\n columns\n .filter(w => w.filter && w.filter.default === true)\n .forEach(col => {\n const filter = col.filter!;\n const values = this.getFilteredData(filter);\n let obj: { [key: string]: NzSafeAny } = {};\n if (filter.reName) {\n obj = filter.reName!(filter.menus!, col);\n } else {\n obj[filter.key!] = values.map(i => i.value).join(',');\n }\n ret = { ...ret, ...obj };\n });\n return ret;\n }\n\n // #endregion\n\n // #region statistical\n\n private genStatistical(columns: _STColumn[], list: STData[], rawData: NzSafeAny): STStatisticalResults {\n const res: { [key: string]: NzSafeAny } = {};\n columns.forEach((col, index) => {\n res[col.key || col.indexKey || index] =\n col.statistical == null ? {} : this.getStatistical(col, index, list, rawData);\n });\n return res;\n }\n\n private getStatistical(col: _STColumn, index: number, list: STData[], rawData: NzSafeAny): STStatisticalResult {\n const val = col.statistical;\n const item: STStatistical = {\n digits: 2,\n currency: undefined,\n ...(typeof val === 'string' ? { type: val as STStatisticalType } : (val as STStatistical))\n };\n let res: STStatisticalResult = { value: 0 };\n let currency = false;\n if (typeof item.type === 'function') {\n res = item.type(this.getValues(index, list), col, list, rawData);\n currency = true;\n } else {\n switch (item.type) {\n case 'count':\n res.value = list.length;\n break;\n case 'distinctCount':\n res.value = this.getValues(index, list).filter((value, idx, self) => self.indexOf(value) === idx).length;\n break;\n case 'sum':\n res.value = this.toFixed(this.getSum(index, list), item.digits!);\n currency = true;\n break;\n case 'average':\n res.value = this.toFixed(this.getSum(index, list) / list.length, item.digits!);\n currency = true;\n break;\n case 'max':\n res.value = Math.max(...this.getValues(index, list));\n currency = true;\n break;\n case 'min':\n res.value = Math.min(...this.getValues(index, list));\n currency = true;\n break;\n }\n }\n if (item.currency === true || (item.currency == null && currency === true)) {\n res.text = this.currencySrv.format(res.value, col.currency?.format) as string;\n } else {\n res.text = String(res.value);\n }\n return res;\n }\n\n private toFixed(val: number, digits: number): number {\n if (isNaN(val) || !isFinite(val)) {\n return 0;\n }\n return parseFloat(val.toFixed(digits));\n }\n\n private getValues(index: number, list: STData[]): number[] {\n return list.map(i => i._values[index].org).map(i => (i === '' || i == null ? 0 : i));\n }\n\n private getSum(index: number, list: STData[]): number {\n return this.getValues(index, list).reduce((p, i) => (p += parseFloat(String(i))), 0);\n }\n\n // #endregion\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { XlsxExportResult, XlsxService } from '@delon/abc/xlsx';\nimport { deepGet } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STColumn, STExportOptions } from './st.interfaces';\nimport { _STColumn } from './st.types';\n\n@Injectable()\nexport class STExport {\n constructor(@Optional() private xlsxSrv: XlsxService) {}\n\n private _stGet(item: NzSafeAny, col: STColumn, index: number, colIndex: number): NzSafeAny {\n const ret: { [key: string]: NzSafeAny } = { t: 's', v: '' };\n\n if (col.format) {\n ret.v = col.format(item, col, index);\n } else {\n const val = item._values ? item._values[colIndex].text : deepGet(item, col.index as string[], '');\n ret.v = val;\n if (val != null) {\n switch (col.type) {\n case 'currency':\n ret.t = 'n';\n break;\n case 'date':\n // Can't be a empty value, it will cause `#NULL!`\n // See https://github.com/SheetJS/sheetjs/blob/master/docbits/52_datatype.md\n if (`${val}`.length > 0) {\n ret.t = 'd';\n // Number Formats: https://github.com/SheetJS/sheetjs/blob/master/docbits/63_numfmt.md\n ret.z = col.dateFormat;\n }\n break;\n case 'yn':\n const yn = col.yn!;\n ret.v = val === yn.truth ? yn.yes : yn.no;\n break;\n }\n }\n }\n\n ret.v = ret.v || '';\n\n return ret;\n }\n\n private genSheet(opt: STExportOptions): { [sheet: string]: unknown } {\n const sheets: { [sheet: string]: { [key: string]: NzSafeAny } } = {};\n const sheet: { [key: string]: NzSafeAny } = (sheets[opt.sheetname || 'Sheet1'] = {});\n const dataLen = opt.data!.length;\n let validColCount = 0;\n let loseCount = 0;\n const columns = opt.columens! as _STColumn[];\n if (columns.findIndex(w => w._width != null) !== -1) {\n // wpx: width in screen pixels https://github.com/SheetJS/sheetjs#column-properties\n sheet['!cols'] = columns.map(col => ({ wpx: col._width }));\n }\n for (let colIdx = 0; colIdx < columns.length; colIdx++) {\n const col = columns[colIdx];\n if (col.exported === false || !col.index || !(!col.buttons || col.buttons.length === 0)) {\n ++loseCount;\n continue;\n }\n ++validColCount;\n const columnName = this.xlsxSrv.numberToSchema(colIdx + 1 - loseCount);\n sheet[`${columnName}1`] = {\n t: 's',\n v: typeof col.title === 'object' ? col.title.text : col.title\n };\n for (let dataIdx = 0; dataIdx < dataLen; dataIdx++) {\n sheet[`${columnName}${dataIdx + 2}`] = this._stGet(opt.data![dataIdx], col, dataIdx, colIdx);\n }\n }\n\n if (validColCount > 0 && dataLen > 0) {\n sheet['!ref'] = `A1:${this.xlsxSrv.numberToSchema(validColCount)}${dataLen + 1}`;\n }\n\n return sheets;\n }\n\n async export(opt: STExportOptions): Promise<XlsxExportResult> {\n const sheets = this.genSheet(opt);\n return this.xlsxSrv.export({\n sheets,\n filename: opt.filename,\n callback: opt.callback\n });\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { STWidgetRegistry } from './st-widget';\nimport { STColumn, STData } from './st.interfaces';\n\n@Directive({ selector: '[st-widget-host]' })\nexport class STWidgetHostDirective implements OnInit {\n @Input() record!: STData;\n @Input() column!: STColumn;\n\n constructor(private stWidgetRegistry: STWidgetRegistry, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n const widget = this.column.widget!;\n const componentType = this.stWidgetRegistry.get(widget.type);\n\n this.viewContainerRef.clear();\n const componentRef = this.viewContainerRef.createComponent(componentType);\n const { record, column } = this;\n const data: { [key: string]: NzSafeAny } = widget.params ? widget.params({ record, column }) : { record };\n Object.keys(data).forEach(key => {\n (componentRef.instance as NzSafeAny)[key] = data[key];\n });\n }\n}\n","import { AlainSTConfig } from '@delon/util/config';\n\nexport const ST_DEFAULT_CONFIG: AlainSTConfig = {\n pi: 1,\n ps: 10,\n size: 'default',\n responsive: true,\n responsiveHideHeaderFooter: false,\n req: {\n type: 'page',\n method: 'GET',\n allInBody: false,\n lazyLoad: false,\n reName: { pi: 'pi', ps: 'ps', skip: 'skip', limit: 'limit' }\n },\n res: {\n reName: { list: ['list'], total: ['total'] }\n },\n page: {\n front: true,\n zeroIndexed: false,\n position: 'bottom',\n placement: 'right',\n show: true,\n showSize: false,\n pageSizes: [10, 20, 30, 40, 50],\n showQuickJumper: false,\n total: true,\n toTop: true,\n toTopOffset: 100,\n itemRender: null,\n simple: false\n },\n modal: {\n paramsName: 'record',\n size: 'lg',\n exact: true\n },\n drawer: {\n paramsName: 'record',\n size: 'md',\n footer: true,\n footerHeight: 55\n },\n pop: {\n title: '确认删除吗?',\n trigger: 'click',\n placement: 'top'\n },\n btnIcon: {\n theme: 'outline',\n spin: false\n },\n noIndex: 1,\n expandRowByClick: false,\n expandAccordion: false,\n widthMode: {\n type: 'default',\n strictBehavior: 'truncate'\n },\n virtualItemSize: 54,\n virtualMaxBufferPx: 200,\n virtualMinBufferPx: 100,\n iifBehavior: 'hide',\n loadingDelay: 0,\n safeType: 'safeHtml',\n date: {\n format: `yyyy-MM-dd HH:mm`\n },\n yn: {\n truth: true,\n yes: '是',\n mode: 'icon'\n }\n};\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\nimport { LocaleData } from '@delon/theme';\n\nimport { STColumnFilter, STColumnFilterMenu, STIcon } from './st.interfaces';\nimport { _STColumn } from './st.types';\n\n@Component({\n selector: 'st-filter',\n template: `\n <span\n class=\"ant-table-filter-trigger\"\n [class.active]=\"visible || f.default\"\n nz-dropdown\n [nzDropdownMenu]=\"filterMenu\"\n nzTrigger=\"click\"\n [nzClickHide]=\"false\"\n [(nzVisible)]=\"visible\"\n nzOverlayClassName=\"st__filter-wrap\"\n (click)=\"show($event)\"\n >\n <i nz-icon [nzType]=\"icon.type\" [nzTheme]=\"icon.theme!\"></i>\n </span>\n <nz-dropdown-menu #filterMenu=\"nzDropdownMenu\">\n <div class=\"ant-table-filter-dropdown\">\n <ng-container [ngSwitch]=\"f.type\">\n <div *ngSwitchCase=\"'keyword'\" class=\"st__filter-keyword\">\n <input\n type=\"text\"\n nz-input\n [attr.placeholder]=\"f.placeholder\"\n [(ngModel)]=\"f.menus![0]!.value\"\n (ngModelChange)=\"n.emit($event)\"\n (keyup.enter)=\"confirm()\"\n />\n </div>\n <div *ngSwitchCase=\"'number'\" class=\"p-sm st__filter-number\">\n <nz-input-number\n [(ngModel)]=\"f.menus![0]!.value\"\n (ngModelChange)=\"n.emit($event)\"\n [nzMin]=\"f.number!.min!\"\n [nzMax]=\"f.number!.max!\"\n [nzStep]=\"f.number!.step!\"\n [nzPrecision]=\"f.number!.precision\"\n [nzPlaceHolder]=\"f.placeholder!\"\n class=\"width-100\"\n ></nz-input-number>\n </div>\n <div *ngSwitchCase=\"'date'\" class=\"p-sm st__filter-date\">\n <nz-date-picker\n *ngIf=\"!f.date!.range\"\n nzInline\n [nzMode]=\"f.date!.mode\"\n [(ngModel)]=\"f.menus![0]!.value\"\n (ngModelChange)=\"n.emit($event)\"\n [nzShowNow]=\"f.date!.showNow\"\n [nzShowToday]=\"f.date!.showToday\"\n [nzDisabledDate]=\"f.date!.disabledDate\"\n [nzDisabledTime]=\"f.date!.disabledTime\"\n ></nz-date-picker>\n <nz-range-picker\n *ngIf=\"f.date!.range\"\n nzInline\n [nzMode]=\"f.date!.mode\"\n [(ngModel)]=\"f.menus![0]!.value\"\n (ngModelChange)=\"n.emit($event)\"\n [nzShowNow]=\"f.date!.showNow\"\n [nzShowToday]=\"f.date!.showToday\"\n [nzDisabledDate]=\"f.date!.disabledDate\"\n [nzDisabledTime]=\"f.date!.disabledTime\"\n ></nz-range-picker>\n </div>\n <div *ngSwitchCase=\"'time'\" class=\"p-sm st__filter-time\"> </div>\n <div *ngSwitchCase=\"'custom'\" class=\"st__filter-custom\">\n <ng-template\n [ngTemplateOutlet]=\"f.custom!\"\n [ngTemplateOutletContext]=\"{ $implicit: f, col: col }\"\n ></ng-template>\n </div>\n <ul *ngSwitchDefault nz-menu>\n <ng-container *ngIf=\"f.multiple\">\n <li nz-menu-item *ngFor=\"let filter of f.menus\">\n <label nz-checkbox [(ngModel)]=\"filter.checked\" (ngModelChange)=\"checkboxChange()\">\n {{ filter.text }}\n </label>\n </li>\n </ng-container>\n <ng-container *ngIf=\"!f.multiple\">\n <li nz-menu-item *ngFor=\"let filter of f.menus\">\n <label nz-radio [ngModel]=\"filter.checked\" (ngModelChange)=\"radioChange(filter)\">\n {{ filter.text }}\n </label>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n <div *ngIf=\"f.showOPArea\" class=\"ant-table-filter-dropdown-btns\">\n <a class=\"ant-table-filter-dropdown-link confirm\" (click)=\"visible = false\">\n <span (click)=\"confirm()\">{{ f.confirmText || locale.filterConfirm }}</span>\n </a>\n <a class=\"ant-table-filter-dropdown-link clear\" (click)=\"visible = false\">\n <span (click)=\"reset()\">{{ f.clearText || locale.filterReset }}</span>\n </a>\n </div>\n </div>\n </nz-dropdown-menu>\n `,\n host: {\n '[class.ant-table-filter-trigger-container]': `true`,\n '[class.st__filter]': `true`,\n '[class.ant-table-filter-trigger-container-open]': `visible`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class STFilterComponent {\n visible = false;\n @Input() col!: _STColumn;\n @Input() locale: LocaleData = {};\n @Input() f!: STColumnFilter;\n @Output() readonly n = new EventEmitter<unknown>();\n @Output() readonly handle = new EventEmitter<boolean>();\n get icon(): STIcon {\n return this.f.icon as STIcon;\n }\n\n show($event: MouseEvent): void {\n $event.stopPropagation();\n }\n\n checkboxChange(): void {\n this.n.emit(this.f.menus?.filter(w => w.checked));\n }\n\n radioChange(item: STColumnFilterMenu): void {\n this.f.menus!.forEach(i => (i.checked = false));\n item.checked = !item.checked;\n this.n.emit(item);\n }\n\n confirm(): void {\n this.handle.emit(true);\n }\n\n reset(): void {\n this.handle.emit(false);\n }\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { DecimalPipe, DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n TrackByFunction,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { from, isObservable, Observable, of, Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n AlainI18NService,\n ALAIN_I18N_TOKEN,\n DatePipe,\n DelonLocaleService,\n DrawerHelper,\n LocaleData,\n ModalHelper,\n YNPipe\n} from '@delon/theme';\nimport { AlainConfigService, AlainSTConfig } from '@delon/util/config';\nimport { BooleanInput, InputBoolean, InputNumber, NumberInput, toBoolean } from '@delon/util/decorator';\nimport { deepCopy, deepMergeKey } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzContextMenuService, NzDropdownMenuComponent } from 'ng-zorro-antd/dropdown';\nimport { NzResizeEvent } from 'ng-zorro-antd/resizable';\nimport { NzTableComponent } from 'ng-zorro-antd/table';\n\nimport { STColumnSource } from './st-column-source';\nimport { STDataSource, STDataSourceOptions, STDataSourceResult } from './st-data-source';\nimport { STExport } from './st-export';\nimport { STRowSource } from './st-row.directive';\nimport { ST_DEFAULT_CONFIG } from './st.config';\nimport {\n STChange,\n STChangeType,\n STClickRowClassName,\n STClickRowClassNameType,\n STColumn,\n STColumnButton,\n STColumnSafeType,\n STColumnSelection,\n STContextmenuFn,\n STContextmenuItem,\n STCustomRequestOptions,\n STData,\n STError,\n STExportOptions,\n STLoadOptions,\n STMultiSort,\n STPage,\n STReq,\n STRes,\n STResetColumnsOption,\n STResizable,\n STRowClassName,\n STSingleSort,\n STStatisticalResults,\n STWidthMode\n} from './st.interfaces';\nimport { _STColumn, _STDataValue, _STHeader, _STTdNotify, _STTdNotifyType } from './st.types';\n\n@Component({\n selector: 'st',\n exportAs: 'st',\n templateUrl: './st.component.html',\n providers: [STDataSource, STRowSource, STColumnSource, STExport, DatePipe, YNPipe, DecimalPipe],\n host: {\n '[class.st]': `true`,\n '[class.st__p-left]': `page.placement === 'left'`,\n '[class.st__p-center]': `page.placement === 'center'`,\n '[class.st__width-strict]': `widthMode.type === 'strict'`,\n '[class.ant-table-rep]': `responsive`,\n '[class.ant-table-rep__hide-header-footer]': `responsiveHideHeaderFooter`\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class STComponent implements AfterViewInit, OnChanges, OnDestroy {\n static ngAcceptInputType_ps: NumberInput;\n static ngAcceptInputType_pi: NumberInput;\n static ngAcceptInputType_total: NumberInput;\n static ngAcceptInputType_loadingDelay: NumberInput;\n static ngAcceptInputType_bordered: BooleanInput;\n static ngAcceptInputType_expandRowByClick: BooleanInput;\n static ngAcceptInputType_expandAccordion: BooleanInput;\n static ngAcceptInputType_responsive: BooleanInput;\n static ngAcceptInputType_responsiveHideHeaderFooter: BooleanInput;\n static ngAcceptInputType_virtualScroll: BooleanInput;\n static ngAcceptInputType_virtualItemSize: NumberInput;\n static ngAcceptInputType_virtualMaxBufferPx: NumberInput;\n static ngAcceptInputType_virtualMinBufferPx: NumberInput;\n\n private destroy$ = new Subject<void>();\n private data$?: Subscription;\n private totalTpl = ``;\n private cog!: AlainSTConfig;\n private _req!: STReq;\n private _res!: STRes;\n private _page!: STPage;\n private _widthMode!: STWidthMode;\n private customWidthConfig: boolean = false;\n _widthConfig: string[] = [];\n locale: LocaleData = {};\n _loading = false;\n _data: STData[] = [];\n _statistical: STStatisticalResults = {};\n _isPagination = true;\n _allChecked = false;\n _allCheckedDisabled = false;\n _indeterminate = false;\n _headers: _STHeader[][] = [];\n _columns: _STColumn[] = [];\n contextmenuList: STContextmenuItem[] = [];\n @ViewChild('table') readonly orgTable!: NzTableComponent<STData>;\n @ViewChild('contextmenuTpl') readonly contextmenuTpl!: NzDropdownMenuComponent;\n\n @Input()\n get req(): STReq {\n return this._req;\n }\n set req(value: STReq) {\n this._req = deepMergeKey({}, true, this.cog.req, value);\n }\n /** 返回体配置 */\n @Input()\n get res(): STRes {\n return this._res;\n }\n set res(value: STRes) {\n const item = (this._res = deepMergeKey({}, true, this.cog.res, value));\n const reName = item.reName!;\n if (!Array.isArray(reName.list)) reName.list = reName.list!.split('.');\n if (!Array.isArray(reName.total)) reName.total = reName.total!.split('.');\n this._res = item;\n }\n @Input()\n get page(): STPage {\n return this._page;\n }\n set page(value: STPage) {\n this._page = { ...this.cog.page, ...value };\n this.updateTotalTpl();\n }\n @Input() data!: string | STData[] | Observable<STData[]>;\n @Input() columns: STColumn[] = [];\n @Input() contextmenu?: STContextmenuFn;\n @Input() @InputNumber() ps = 10;\n @Input() @InputNumber() pi = 1;\n @Input() @InputNumber() total = 0;\n @Input() loading: boolean | null = null;\n @Input() @InputNumber() loadingDelay = 0;\n @Input() loadingIndicator: TemplateRef<void> | null = null;\n @Input() @InputBoolean() bordered = false;\n @Input() size!: 'small' | 'middle' | 'default';\n @Input() scroll: { x?: string | null; y?: string | null } = { x: null, y: null };\n @Input() singleSort?: STSingleSort;\n private _multiSort?: STMultiSort;\n @Input()\n get multiSort(): NzSafeAny {\n return this._multiSort;\n }\n set multiSort(value: NzSafeAny) {\n if (\n (typeof value === 'boolean' && !toBoolean(value)) ||\n (typeof value === 'object' && Object.keys(value).length === 0)\n ) {\n this._multiSort = undefined;\n return;\n }\n this._multiSort = {\n ...(typeof value === 'object' ? value : {})\n };\n }\n @Input() rowClassName?: STRowClassName;\n @Input() clickRowClassName?: STClickRowClassName | null;\n @Input()\n set widthMode(value: STWidthMode) {\n this._widthMode = { ...this.cog.widthMode, ...value };\n }\n get widthMode(): STWidthMode {\n return this._widthMode;\n }\n @Input()\n set widthConfig(val: string[]) {\n this._widthConfig = val;\n this.customWidthConfig = val && val.length > 0;\n }\n private _resizable?: STResizable;\n @Input()\n set resizable(val: STResizable | boolean | string) {\n this._resizable = typeof val === 'object' ? val : { disabled: !toBoolean(val) };\n }\n @Input() header?: string | TemplateRef<void> | null;\n @Input() @InputBoolean() showHeader = true;\n @Input() footer?: string | TemplateRef<void> | null;\n @Input() bodyHeader?: TemplateRef<STStatisticalResults> | null;\n @Input() body?: TemplateRef<STStatisticalResults> | null;\n @Input() @InputBoolean() expandRowByClick = false;\n @Input() @InputBoolean() expandAccordion = false;\n @Input() expand: TemplateRef<{ $implicit: NzSafeAny; column: STColumn }> | null = null;\n @Input() noResult?: string | TemplateRef<void> | null;\n @Input() @InputBoolean() responsive: boolean = true;\n @Input() @InputBoolean() responsiveHideHeaderFooter?: boolean;\n @Output() readonly error = new EventEmitter<STError>();\n @Output() readonly change = new EventEmitter<STChange>();\n @Input() @InputBoolean() virtualScroll = false;\n @Input() @InputNumber() virtualItemSize = 54;\n @Input() @InputNumber() virtualMaxBufferPx = 200;\n @Input() @InputNumber() virtualMinBufferPx = 100;\n @Input() customRequest?: (options: STCustomRequestOptions) => Observable<NzSafeAny>;\n @Input() virtualForTrackBy: TrackByFunction<STData> = index => index;\n\n /**\n * Get the number of the current page\n */\n get count(): number {\n return this._data.length;\n }\n\n /**\n * Get the data of the current page\n */\n get list(): STData[] {\n return this._data;\n }\n\n constructor(\n @Optional() @Inject(ALAIN_I18N_TOKEN) i18nSrv: AlainI18NService,\n private cdr: ChangeDetectorRef,\n private el: ElementRef,\n private exportSrv: STExport,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n private columnSource: STColumnSource,\n private dataSource: STDataSource,\n private delonI18n: DelonLocaleService,\n configSrv: AlainConfigService,\n private cms: NzContextMenuService\n ) {\n this.setCog(configSrv.merge('st', ST_DEFAULT_CONFIG)!);\n\n this.delonI18n.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.locale = this.delonI18n.getData('st');\n if (this._columns.length > 0) {\n this.updateTotalTpl();\n this.cd();\n }\n });\n\n i18nSrv.change\n .pipe(\n takeUntil(this.destroy$),\n filter(() => this._columns.length > 0)\n )\n .subscribe(() => this.refreshColumns());\n }\n\n private setCog(cog: AlainSTConfig): void {\n const copyMultiSort = { ...cog.multiSort };\n // Because multiSort.global will affect the result, it should be removed first, and multiSort will be operated again after processing.\n delete cog.multiSort;\n this.cog = cog;\n Object.assign(this, cog);\n\n if (copyMultiSort.global !== false) {\n this.multiSort = copyMultiSort;\n }\n this.columnSource.setCog(cog);\n }\n\n cd(): this {\n this.cdr.detectChanges();\n return this;\n }\n\n private refreshData(): this {\n this._data = [...this._data];\n return this.cd();\n }\n\n renderTotal(total: string, range: string[]): string {\n return this.totalTpl\n ? this.totalTpl.replace('{{total}}', total).replace('{{range[0]}}', range[0]).replace('{{range[1]}}', range[1])\n : '';\n }\n\n private changeEmit(type: STChangeType, data?: NzSafeAny): void {\n const res: STChange = {\n type,\n pi: this.pi,\n ps: this.ps,\n total: this.total\n };\n if (data != null) {\n res[type] = data;\n }\n this.change.emit(res);\n }\n\n // #region data\n\n /**\n * 获取过滤后所有数据\n * - 本地数据:包含排序、过滤后不分页数据\n * - 远程数据:不传递 `pi`、`ps` 两个参数\n */\n get filteredData(): Promise<STData[]> {\n return this.loadData({ paginator: false } as NzSafeAny).then(res => res.list);\n }\n\n private updateTotalTpl(): void {\n const { total } = this.page;\n if (typeof total === 'string' && total.length) {\n this.totalTpl = total;\n } else if (toBoolean(total)) {\n this.totalTpl = this.locale.total;\n } else {\n this.totalTpl = '';\n }\n }\n\n private setLoading(val: boolean): void {\n if (this.loading == null) {\n this._loading = val;\n this.cdr.detectChanges();\n }\n }\n\n private loadData(options?: STDataSourceOptions): Promise<STDataSourceResult> {\n const { pi, ps, data, req, res, page, total, singleSort, multiSort, rowClassName } = this;\n return new Promise((resolvePromise, rejectPromise) => {\n if (this.data$) {\n this.data$.unsubscribe();\n }\n\n this.data$ = this.dataSource\n .process({\n pi,\n ps,\n total,\n data,\n req,\n res,\n page,\n columns: this._columns,\n singleSort,\n multiSort,\n rowClassName,\n paginator: true,\n customRequest: this.customRequest || this.cog.customRequest,\n ...options\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: result => resolvePromise(result),\n error: error => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn('st.loadDate', error);\n }\n rejectPromise(error);\n }\n });\n });\n }\n\n private async loadPageData(): Promise<this> {\n this.setLoading(true);\n try {\n const result = await this.loadData();\n this.setLoading(false);\n if (typeof result.pi !== 'undefined') {\n this.pi = result.pi;\n }\n if (typeof result.ps !== 'undefined') {\n this.ps = result.ps;\n }\n if (typeof result.total !== 'undefined') {\n this.total = result.total;\n }\n if (typeof result.pageShow !== 'undefined') {\n this._isPagination = result.pageShow;\n }\n this._data = result.list;\n this._statistical = result.statistical as STStatisticalResults;\n this.changeEmit('loaded', result.list);\n // Should be re-render in next tike when using virtual scroll\n // https://github.com/ng-alain/ng-alain/issues/1836\n if (this.cdkVirtualScrollViewport) {\n Promise.resolve().then(() => this.cdkVirtualScrollViewport.checkViewportSize());\n }\n return this._refCheck();\n } catch (error) {\n this.setLoading(false);\n if (!this.destroy$.isStopped) {\n this.cdr.detectChanges();\n this.error.emit({ type: 'req', error });\n }\n return this;\n }\n }\n\n /** 清空所有数据 */\n clear(cleanStatus: boolean = true): this {\n if (cleanStatus) {\n this.clearStatus();\n }\n this._data = [];\n return this.cd();\n }\n\n /** 清空所有状态 */\n clearStatus(): this {\n return this.clearCheck().clearRadio().clearFilter().clearSort();\n }\n\n /**\n * 根据页码重新加载数据\n *\n * @param pi 指定当前页码,默认:`1`\n * @param extraParams 重新指定 `extraParams` 值\n * @param options 选项\n */\n load(pi: number = 1, extraParams?: NzSafeAny, options?: STLoadOptions): this {\n if (pi !== -1) this.pi = pi;\n if (typeof extraParams !== 'undefined') {\n this.req.params = options && options.merge ? { ...this.req.params, ...extraParams } : extraParams;\n }\n this._change('pi', options);\n return this;\n }\n\n /**\n * 重新刷新当前页\n *\n * @param extraParams 重新指定 `extraParams` 值\n */\n reload(extraParams?: NzSafeAny, options?: STLoadOptions): this {\n return this.load(-1, extraParams, options);\n }\n\n /**\n * 重置且重新设置 `pi` 为 `1`,包含以下值:\n * - `check` 数据\n * - `radio` 数据\n * - `sort` 数据\n * - `fileter` 数据\n *\n * @param extraParams 重新指定 `extraParams` 值\n */\n reset(extraParams?: NzSafeAny, options?: STLoadOptions): this {\n this.clearStatus().load(1, extraParams, options);\n return this;\n }\n\n private _toTop(enforce?: boolean): void {\n if (!(enforce == null ? this.page.toTop : enforce)) return;\n const el = this.el.nativeElement as HTMLElement;\n el.scrollIntoView();\n // fix header height\n this.doc.documentElement.scrollTop -= this.page.toTopOffset!;\n if (this.scroll) {\n if (this.cdkVirtualScrollViewport) {\n this.cdkVirtualScrollViewport.scrollTo({\n top: 0,\n left: 0\n });\n } else {\n el.querySelector('.ant-table-body, .ant-table-content')?.scrollTo(0, 0);\n }\n }\n }\n\n _change(type: 'pi' | 'ps', options?: STLoadOptions): void {\n if (type === 'pi' || (type === 'ps' && this.pi <= Math.ceil(this.total / this.ps))) {\n this.loadPageData().then(() => this._toTop(options?.toTop));\n }\n\n this.changeEmit(type);\n }\n\n private closeOtherExpand(item: STData): void {\n if (this.expandAccordion === false) return;\n this._data.filter(i => i !== item).forEach(i => (i.expand = false));\n }\n\n _rowClick(e: Event, item: STData, index: number, dbl: boolean): void {\n const el = e.target as HTMLElement;\n if (el.nodeName === 'INPUT') return;\n const { expand, expandRowByClick } = this;\n if (!!expand && item.showExpand !== false && expandRowByClick) {\n item.expand = !item.expand;\n this.closeOtherExpand(item);\n this.changeEmit('expand', item);\n return;\n }\n\n const data = { e, item, index };\n if (dbl) {\n this.changeEmit('dblClick', data);\n } else {\n this._clickRowClassName(el, item, index);\n this.changeEmit('click', data);\n }\n }\n\n private _clickRowClassName(el: HTMLElement, item: STData, index: number): void {\n const cr = this.clickRowClassName;\n if (cr == null) return;\n const config = {\n exclusive: false,\n ...(typeof cr === 'string' ? { fn: () => cr } : cr)\n } as STClickRowClassNameType;\n const className = config.fn(item, index);\n const trEl = el.closest('tr') as HTMLElement;\n if (config.exclusive) {\n trEl.parentElement!!.querySelectorAll('tr').forEach((a: HTMLElement) => a.classList.remove(className));\n }\n if (trEl.classList.contains(className)) {\n trEl.classList.remove(className);\n } else {\n trEl.classList.add(className);\n }\n }\n\n _expandChange(item: STData, expand: boolean): void {\n item.expand = expand;\n this.closeOtherExpand(item);\n this.changeEmit('expand', item);\n }\n\n _stopPropagation(ev: Event): void {\n ev.stopPropagation();\n }\n\n /**\n * Remove a row in the table, like this:\n *\n * ```\n * this.st.removeRow(0)\n * this.st.removeRow(stDataItem)\n * ```\n */\n removeRow(data: STData | STData[] | number): this {\n if (typeof data === 'number') {\n this._data.splice(data, 1);\n } else {\n if (!Array.isArray(data)) {\n data = [data];\n }\n\n (data as STData[])\n .map(item => this._data.indexOf(item))\n .filter(pos => pos !== -1)\n .forEach(pos => this._data.splice(pos, 1));\n }\n // recalculate no\n this._columns\n .filter(w => w.type === 'no')\n .forEach(c =>\n this._data.forEach((i, idx) => {\n const text = `${this.dataSource.getNoIndex(i, c, idx)}`;\n i._values![c.__point!] = { text, _text: text, org: idx, safeType: 'text' } as _STDataValue;\n })\n );\n\n return this.refreshData();\n }\n\n /**\n * Sets the row value for the `index` in the table, like this:\n *\n * - `optinos.refreshSchema` Whether to refresh of st schemas\n * - `optinos.emitReload` Whether to trigger a reload http request when data is url\n *\n * ```\n * this.st.setRow(0, { price: 100 })\n * this.st.setRow(0, { price: 100, name: 'asdf' })\n * this.st.setRow(item, { price: 100 })\n * ```\n */\n setRow(index: number | STData, item: STData, options?: { refreshSchema?: boolean; emitReload?: boolean }): this {\n options = { refreshSchema: false, emitReload: false, ...options };\n if (typeof index !== 'number') {\n index = this._data.indexOf(index);\n }\n this._data[index] = deepMergeKey(this._data[index], false, item);\n this.optimizeData();\n if (options.refreshSchema) {\n this.resetColumns({ emitReload: options.emitReload });\n return this;\n }\n return this.refreshData();\n }\n\n // #endregion\n\n // #region sort\n\n sort(col: _STColumn, idx: number, value: NzSafeAny): void {\n if (this.multiSort) {\n col._sort.default = value;\n col._sort.tick = this.dataSource.nextSortTick;\n } else {\n this._columns.forEach((item, index) => (item._sort.default = index === idx ? value : null));\n }\n this.cdr.detectChanges();\n this.loadPageData();\n const res = {\n value,\n map: this.dataSource.getReqSortMap(this.singleSort, this.multiSort, this._columns),\n column: col\n };\n this.changeEmit('sort', res);\n }\n\n clearSort(): this {\n this._columns.forEach(item => (item._sort.default = null));\n return this;\n }\n\n // #endregion\n\n // #region filter\n\n _handleFilter(col: _STColumn, confirm: boolean): void {\n if (!confirm) {\n this.columnSource.cleanFilter(col);\n }\n // 过滤表示一种数据的变化应重置页码为 `1`\n this.pi = 1;\n this.columnSource.updateDefault(col.filter!);\n this.loadPageData();\n this.changeEmit('filter', col);\n }\n\n handleFilterNotify(value?: unknown): void {\n this.changeEmit('filterChange', value);\n }\n\n clearFilter(): this {\n this._columns.filter(w => w.filter && w.filter.default === true).forEach(col => this.columnSource.cleanFilter(col));\n return this;\n }\n // #endregion\n\n // #region checkbox\n\n /** 清除所有 `checkbox` */\n clearCheck(): this {\n return this.checkAll(false);\n }\n\n private _refCheck(): this {\n const validData = this._data.filter(w => !w.disabled);\n const checkedList = validData.filter(w => w.checked === true);\n this._allChecked = checkedList.length > 0 && checkedList.length === validData.length;\n const allUnChecked = validData.every(value => !value.checked);\n this._indeterminate = !this._allChecked && !allUnChecked;\n this._allCheckedDisabled = this._data.length === this._data.filter(w => w.disabled).length;\n return this.cd();\n }\n\n checkAll(checked?: boolean): this {\n checked = typeof checked === 'undefined' ? this._allChecked : checked;\n this._data.filter(w => !w.disabled).forEach(i => (i.checked = checked));\n return this._refCheck()._checkNotify().refreshData();\n }\n\n _rowSelection(row: STColumnSelection): this {\n row.select(this._data);\n return this._refCheck()._checkNotify();\n }\n\n _checkNotify(): this {\n const res = this._data.filter(w => !w.disabled && w.checked === true);\n this.changeEmit('checkbox', res);\n return this;\n }\n\n // #endregion\n\n // #region radio\n\n /** 清除所有 `radio` */\n clearRadio(): this {\n this._data.filter(w => w.checked).forEach(item => (item.checked = false));\n this.changeEmit('radio', null);\n return this.refreshData();\n }\n\n // #endregion\n\n _handleTd(ev: _STTdNotify): void {\n switch (ev.type) {\n case 'checkbox':\n this._refCheck()._checkNotify();\n break;\n case 'radio':\n this.changeEmit('radio', ev.item);\n this.refreshData();\n break;\n }\n }\n\n // #region export\n\n /**\n * 导出当前页,确保已经注册 `XlsxModule`\n *\n * @param newData 重新指定数据;若为 `true` 表示使用 `filteredData` 数据\n * @param opt 额外参数\n */\n export(newData?: STData[] | true, opt?: STExportOptions): void {\n const data = Array.isArray(newData)\n ? this.dataSource.optimizeData({ columns: this._columns, result: newData })\n : this._data;\n (newData === true ? from(this.filteredData) : of(data)).subscribe((res: STData[]) =>\n this.exportSrv.export({\n columens: this._columns,\n ...opt,\n data: res\n })\n );\n }\n\n // #endregion\n\n // #region resizable\n\n colResize({ width }: NzResizeEvent, column: _STColumn): void {\n column.width = `${width}px`;\n this.changeEmit('resize', column);\n }\n\n // #endregion\n\n // #region contextmenu\n onContextmenu(event: MouseEvent): void {\n if (!this.contextmenu) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const colEl = (event.target as HTMLElement).closest('[data-col-index]') as HTMLElement;\n if (!colEl) {\n return;\n }\n const colIndex = Number(colEl.dataset.colIndex);\n const rowIndex = Number((colEl.closest('tr') as HTMLElement).dataset.index);\n const isTitle = isNaN(rowIndex);\n const obs$ = this.contextmenu({\n event,\n type: isTitle ? 'head' : 'body',\n rowIndex: isTitle ? null : rowIndex,\n colIndex,\n data: isTitle ? null : this.list[rowIndex],\n column: this._columns[colIndex]\n });\n (isObservable(obs$) ? obs$ : of(obs$))\n .pipe(\n takeUntil(this.destroy$),\n filter(res => res.length > 0)\n )\n .subscribe(res => {\n this.contextmenuList = res.map(i => {\n if (!Array.isArray(i.children)) {\n i.children = [];\n }\n return i;\n });\n this.cdr.detectChanges();\n this.cms.create(event, this.contextmenuTpl);\n });\n }\n // #endregion\n\n get cdkVirtualScrollViewport(): CdkVirtualScrollViewport {\n return this.orgTable.cdkVirtualScrollViewport!;\n }\n\n resetColumns(options?: STResetColumnsOption): Promise<this> {\n options = { emitReload: true, preClearData: false, ...options };\n if (typeof options.columns !== 'undefined') {\n this.columns = options.columns;\n }\n if (typeof options.pi !== 'undefined') {\n this.pi = options.pi;\n }\n if (typeof options.ps !== 'undefined') {\n this.ps = options.ps;\n }\n if (options.emitReload) {\n // Should clean data, Because of changing columns may cause inaccurate data\n options.preClearData = true;\n }\n if (options.preClearData) {\n this._data = [];\n }\n this.refreshColumns();\n if (options.emitReload) {\n return this.loadPageData();\n } else {\n this.cd();\n return Promise.resolve(this);\n }\n }\n\n private refreshColumns(): this {\n const res = this.columnSource.process(this.columns as _STColumn[], {\n widthMode: this.widthMode,\n resizable: this._resizable,\n safeType: this.cog.safeType as STColumnSafeType\n });\n this._columns = res.columns;\n this._headers = res.headers;\n if (this.customWidthConfig === false && res.headerWidths != null) {\n this._widthConfig = res.headerWidths;\n }\n return this;\n }\n\n private optimizeData(): void {\n this._data = this.dataSource.optimizeData({\n columns: this._columns,\n result: this._data,\n rowClassName: this.rowClassName\n });\n }\n\n /**\n * Return pure data, `st` internally maintains a set of data for caching, this part of data may affect the backend\n *\n * 返回纯净数据,`st` 内部会维护一组用于缓存的数据,这部分数据可能会影响后端\n */\n pureItem(itemOrIndex: STData | number): STData | null {\n if (typeof itemOrIndex === 'number') {\n itemOrIndex = this._data[itemOrIndex];\n }\n if (!itemOrIndex) {\n return null;\n }\n const copyItem = deepCopy(itemOrIndex);\n delete copyItem._values;\n return copyItem;\n }\n\n ngAfterViewInit(): void {\n this.columnSource.restoreAllRender(this._columns);\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (changes.columns) {\n this.refreshColumns().optimizeData();\n }\n const changeData = changes.data;\n if (changeData && changeData.currentValue && !(this.req.lazyLoad && changeData.firstChange)) {\n this.loadPageData();\n }\n if (changes.loading) {\n this._loading = changes.loading.currentValue;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n\n@Component({\n selector: 'st-td',\n templateUrl: './st-td.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class STTdComponent {\n @Input() c!: _STColumn;\n @Input() cIdx!: number;\n @Input() data!: STData[];\n @Input() i!: STData;\n @Input() index!: number;\n @Output() readonly n = new EventEmitter<_STTdNotify>();\n\n private get routerState(): { pi: number; ps: number; total: number } {\n const { pi, ps, total } = this.stComp;\n return { pi, ps, total };\n }\n\n constructor(\n @Host() private stComp: STComponent,\n private router: Router,\n private modalHelper: ModalHelper,\n private drawerHelper: DrawerHelper\n ) {}\n\n private report(type: _STTdNotifyType): void {\n this.n.emit({ type, item: this.i, col: this.c });\n }\n\n _checkbox(value: boolean): void {\n this.i.checked = value;\n this.report('checkbox');\n }\n\n _radio(): void {\n this.data.filter(w => !w.disabled).forEach(i => (i.checked = false));\n this.i.checked = true;\n this.report('radio');\n }\n\n _link(e: Event): boolean {\n this._stopPropagation(e);\n const res = this.c.click!(this.i, this.stComp);\n if (typeof res === 'string') {\n this.router.navigateByUrl(res, { state: this.routerState });\n }\n return false;\n }\n\n _stopPropagation(ev: Event): void {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n _btn(btn: STColumnButton, ev?: Event): void {\n if (ev) {\n ev.stopPropagation();\n }\n const record = this.i;\n if (btn.type === 'modal' || btn.type === 'static') {\n const { modal } = btn;\n const obj = { [modal!.paramsName!]: record };\n (this.modalHelper[btn.type === 'modal' ? 'create' : 'createStatic'] as NzSafeAny)(\n modal!.component,\n { ...obj, ...(modal!.params && modal!.params!(record)) },\n deepMergeKey({}, true, this.stComp['cog'].modal, modal)\n )\n .pipe(filter(w => typeof w !== 'undefined'))\n .subscribe((res: NzSafeAny) => this.btnCallback(record, btn, res));\n return;\n } else if (btn.type === 'drawer') {\n const { drawer } = btn;\n const obj = { [drawer!.paramsName!]: record };\n this.drawerHelper\n .create(\n drawer!.title!,\n drawer!.component,\n { ...obj, ...(drawer!.params && drawer!.params!(record)) },\n deepMergeKey({}, true, this.stComp['cog'].drawer, drawer)\n )\n .pipe(filter(w => typeof w !== 'undefined'))\n .subscribe(res => this.btnCallback(record, btn, res));\n return;\n } else if (btn.type === 'link') {\n const clickRes = this.btnCallback(record, btn);\n if (typeof clickRes === 'string') {\n this.router.navigateByUrl(clickRes, { state: this.routerState });\n }\n return;\n }\n this.btnCallback(record, btn);\n }\n\n private btnCallback(record: STData, btn: STColumnButton, modal?: NzSafeAny): NzSafeAny {\n if (!btn.click) return;\n if (typeof btn.click === 'string') {\n switch (btn.click) {\n case 'load':\n this.stComp.load();\n break;\n case 'reload':\n this.stComp.reload();\n break;\n }\n } else {\n return btn.click(record, modal, this.stComp);\n }\n }\n}\n","<ng-template #titleTpl let-i>\n <span [innerHTML]=\"i._text\"></span>\n <small *ngIf=\"i.optional\" class=\"st__head-optional\" [innerHTML]=\"i.optional\"></small>\n <i\n *ngIf=\"i.optionalHelp\"\n class=\"st__head-tip\"\n nz-tooltip\n [nzTooltipTitle]=\"i.optionalHelp\"\n nz-icon\n nzType=\"question-circle\"\n ></i>\n</ng-template>\n<ng-template #chkAllTpl let-custom>\n <label\n nz-checkbox\n class=\"st__checkall\"\n [nzDisabled]=\"_allCheckedDisabled\"\n [(ngModel)]=\"_allChecked\"\n [nzIndeterminate]=\"_indeterminate\"\n (ngModelChange)=\"checkAll()\"\n [class.ant-table-selection-select-all-custom]=\"custom\"\n ></label>\n</ng-template>\n<nz-table\n #table\n [nzData]=\"_data\"\n [(nzPageIndex)]=\"pi\"\n (nzPageIndexChange)=\"_change('pi')\"\n [(nzPageSize)]=\"ps\"\n (nzPageSizeChange)=\"_change('ps')\"\n [nzTotal]=\"total\"\n [nzShowPagination]=\"_isPagination\"\n [nzFrontPagination]=\"false\"\n [nzBordered]=\"bordered\"\n [nzSize]=\"size\"\n [nzLoading]=\"_loading\"\n [nzLoadingDelay]=\"loadingDelay\"\n [nzLoadingIndicator]=\"loadingIndicator\"\n [nzTitle]=\"header!\"\n [nzFooter]=\"footer!\"\n [nzScroll]=\"scroll\"\n [nzVirtualItemSize]=\"virtualItemSize\"\n [nzVirtualMaxBufferPx]=\"virtualMaxBufferPx\"\n [nzVirtualMinBufferPx]=\"virtualMinBufferPx\"\n [nzVirtualForTrackBy]=\"virtualForTrackBy\"\n [nzNoResult]=\"noResult!\"\n [nzPageSizeOptions]=\"page.pageSizes!\"\n [nzShowQuickJumper]=\"page.showQuickJumper\"\n [nzShowSizeChanger]=\"page.showSize\"\n [nzPaginationPosition]=\"page.position!\"\n [nzPaginationType]=\"page.type!\"\n [nzItemRender]=\"page.itemRender!\"\n [nzSimple]=\"page.simple\"\n [nzShowTotal]=\"totalTpl\"\n [nzWidthConfig]=\"_widthConfig\"\n (contextmenu)=\"onContextmenu($event)\"\n>\n <thead *ngIf=\"showHeader\">\n <tr *ngFor=\"let row of _headers; let rowFirst = first\">\n <th *ngIf=\"rowFirst && expand\" nzWidth=\"50px\" [rowSpan]=\"_headers.length\"></th>\n <ng-container *ngFor=\"let h of row; let index = index; let last = last\">\n <th\n *let=\"h.column as _c\"\n [colSpan]=\"h.colSpan\"\n [rowSpan]=\"h.rowSpan\"\n [nzWidth]=\"$any(_c).width\"\n [nzLeft]=\"_c._left!\"\n [nzRight]=\"_c._right!\"\n [ngClass]=\"_c.className!\"\n [attr.data-col]=\"_c.indexKey\"\n [attr.data-col-index]=\"index\"\n [nzShowSort]=\"_c._sort.enabled\"\n [nzSortOrder]=\"$any(_c)._sort.default\"\n (nzSortOrderChange)=\"sort(_c, index, $event)\"\n [nzCustomFilter]=\"$any(_c).filter\"\n nz-resizable\n [nzDisabled]=\"last || $any(_c).resizable.disabled\"\n [nzMaxWidth]=\"$any(_c).resizable.maxWidth\"\n [nzMinWidth]=\"$any(_c).resizable.minWidth\"\n [nzBounds]=\"$any(_c).resizable.bounds\"\n [nzPreview]=\"$any(_c).resizable.preview\"\n (nzResizeEnd)=\"colResize($event, _c)\"\n >\n <nz-resize-handle *ngIf=\"$any(!last && !$any(_c).resizable.disabled)\" nzDirection=\"right\">\n <i></i>\n </nz-resize-handle>\n <ng-template\n #renderTitle\n [ngTemplateOutlet]=\"_c.__renderTitle!\"\n [ngTemplateOutletContext]=\"{ $implicit: h.column, index: index }\"\n ></ng-template>\n <ng-container *ngIf=\"!_c.__renderTitle; else renderTitle\">\n <ng-container [ngSwitch]=\"_c.type\">\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <ng-container *ngIf=\"_c.selections!.length === 0\">\n <ng-template [ngTemplateOutlet]=\"chkAllTpl\" [ngTemplateOutletContext]=\"{ $implicit: false }\">\n </ng-template>\n </ng-container>\n <div *ngIf=\"_c.selections!.length > 0\" class=\"ant-table-selection\">\n <ng-template [ngTemplateOutlet]=\"chkAllTpl\" [ngTemplateOutletContext]=\"{ $implicit: true }\">\n </ng-template>\n <div *ngIf=\"_c.selections!.length\" class=\"ant-table-selection-extra\">\n <div\n nz-dropdown\n nzPlacement=\"bottomLeft\"\n [nzDropdownMenu]=\"selectionMenu\"\n class=\"ant-table-selection-down st__checkall-selection\"\n >\n <i nz-icon nzType=\"down\"></i>\n </div>\n </div>\n <nz-dropdown-menu #selectionMenu=\"nzDropdownMenu\">\n <ul nz-menu class=\"ant-table-selection-menu\">\n <li\n nz-menu-item\n *ngFor=\"let rw of _c.selections\"\n (click)=\"_rowSelection(rw)\"\n [innerHTML]=\"rw.text\"\n ></li>\n </ul>\n </nz-dropdown-menu>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-template\n [ngTemplateOutlet]=\"titleTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: _c.title }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"_c.filter\">\n <st-filter\n nz-th-extra\n [col]=\"h.column\"\n [f]=\"_c.filter\"\n [locale]=\"locale\"\n (n)=\"handleFilterNotify($event)\"\n (handle)=\"_handleFilter(_c, $event)\"\n ></st-filter>\n </ng-container>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody class=\"st__body\">\n <ng-container *ngIf=\"!_loading\">\n <ng-template\n [ngTemplateOutlet]=\"bodyHeader!\"\n [ngTemplateOutletContext]=\"{ $implicit: _statistical }\"\n ></ng-template>\n </ng-container>\n <ng-template #bodyTpl let-i let-index=\"index\">\n <tr\n [attr.data-index]=\"index\"\n (click)=\"_rowClick($event, i, index, false)\"\n (dblclick)=\"_rowClick($event, i, index, true)\"\n [ngClass]=\"i._rowClassName\"\n >\n <td\n *ngIf=\"expand\"\n [nzShowExpand]=\"expand && i.showExpand !== false\"\n [nzExpand]=\"i.expand\"\n (nzExpandChange)=\"_expandChange(i, $event)\"\n (click)=\"_stopPropagation($event)\"\n nzWidth=\"50px\"\n ></td>\n <td\n *ngFor=\"let c of _columns; let cIdx = index\"\n [nzLeft]=\"!!c._left\"\n [nzRight]=\"!!c._right\"\n [attr.data-col-index]=\"cIdx\"\n [ngClass]=\"c._className!\"\n [attr.colspan]=\"c.colSpan\"\n >\n <span *ngIf=\"responsive\" class=\"ant-table-rep__title\">\n <ng-template [ngTemplateOutlet]=\"titleTpl\" [ngTemplateOutletContext]=\"{ $implicit: c.title }\"></ng-template>\n </span>\n <st-td [data]=\"_data\" [i]=\"i\" [index]=\"index\" [c]=\"c\" [cIdx]=\"cIdx\" (n)=\"_handleTd($event)\"></st-td>\n </td>\n </tr>\n <tr [nzExpand]=\"i.expand\">\n <ng-template\n [ngTemplateOutlet]=\"expand\"\n [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\"\n ></ng-template>\n </tr>\n </ng-template>\n <ng-container *ngIf=\"!virtualScroll\">\n <ng-container *ngFor=\"let i of _data; let index = index\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\">\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <ng-template nz-virtual-scroll let-i let-index=\"index\">\n <ng-template [ngTemplateOutlet]=\"bodyTpl\" [ngTemplateOutletContext]=\"{ $implicit: i, index: index }\">\n </ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!_loading\">\n <ng-template [ngTemplateOutlet]=\"body!\" [ngTemplateOutletContext]=\"{ $implicit: _statistical }\"></ng-template>\n </ng-container>\n </tbody>\n <ng-template #totalTpl let-range=\"range\" let-total>{{ renderTotal(total, range) }}</ng-template>\n</nz-table>\n<nz-dropdown-menu #contextmenuTpl=\"nzDropdownMenu\">\n <ul nz-menu class=\"st__contextmenu\">\n <ng-container *ngFor=\"let i of contextmenuList\">\n <li nz-menu-item *ngIf=\"i.children!.length === 0\" (click)=\"i.fn!(i)\" [innerHTML]=\"i.text\"></li>\n <li nz-submenu *ngIf=\"i.children!.length > 0\" [nzTitle]=\"i.text\">\n <ul>\n <li nz-menu-item *ngFor=\"let ci of i.children\" (click)=\"ci.fn!(ci)\" [innerHTML]=\"ci.text\"></li>\n </ul>\n </li>\n </ng-container>\n </ul>\n</nz-dropdown-menu>\n","<ng-template #btnTpl let-i>\n <ng-container *ngIf=\"!i.tooltip\">\n <ng-template [ngTemplateOutlet]=\"btnItemTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\"></ng-template>\n </ng-container>\n <span *ngIf=\"i.tooltip\" nz-tooltip [nzTooltipTitle]=\"i.tooltip\">\n <ng-template [ngTemplateOutlet]=\"btnItemTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\"></ng-template>\n </span>\n</ng-template>\n<ng-template #btnItemTpl let-i>\n <a\n *ngIf=\"i.pop\"\n nz-popconfirm\n [nzPopconfirmTitle]=\"i.pop.title\"\n [nzIcon]=\"i.pop.icon\"\n [nzCondition]=\"i.pop.condition(i)\"\n [nzCancelText]=\"i.pop.cancelText\"\n [nzOkText]=\"i.pop.okText\"\n [nzOkType]=\"i.pop.okType\"\n (nzOnConfirm)=\"_btn(i)\"\n class=\"st__btn-text\"\n [ngClass]=\"i.className\"\n (click)=\"_stopPropagation($event)\"\n >\n <ng-template [ngTemplateOutlet]=\"btnTextTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\"></ng-template>\n </a>\n <a *ngIf=\"!i.pop\" (click)=\"_btn(i, $event)\" class=\"st__btn-text\" [ngClass]=\"i.className\">\n <ng-template [ngTemplateOutlet]=\"btnTextTpl\" [ngTemplateOutletContext]=\"{ $implicit: i }\"></ng-template>\n </a>\n</ng-template>\n<ng-template #btnTextTpl let-i>\n <ng-container *ngIf=\"i.icon\">\n <i\n *ngIf=\"!i.icon.iconfont\"\n nz-icon\n [nzType]=\"i.icon.type\"\n [nzTheme]=\"i.icon.theme\"\n [nzSpin]=\"i.icon.spin\"\n [nzTwotoneColor]=\"i.icon.twoToneColor\"\n ></i>\n <i *ngIf=\"i.icon.iconfont\" nz-icon [nzIconfont]=\"i.icon.iconfont\"></i>\n </ng-container>\n <span [innerHTML]=\"i._text\" [ngClass]=\"{ 'pl-xs': i.icon }\"></span>\n</ng-template>\n<ng-template\n #render\n [ngTemplateOutlet]=\"c.__render!\"\n [ngTemplateOutletContext]=\"{ $implicit: i, index: index, column: c }\"\n></ng-template>\n<ng-container *ngIf=\"!c.__render; else render\">\n <ng-container [ngSwitch]=\"c.type\">\n <label\n *ngSwitchCase=\"'checkbox'\"\n nz-checkbox\n [nzDisabled]=\"i.disabled\"\n [ngModel]=\"i.checked\"\n (ngModelChange)=\"_checkbox($event)\"\n ></label>\n <label\n *ngSwitchCase=\"'radio'\"\n nz-radio\n [nzDisabled]=\"i.disabled\"\n [ngModel]=\"i.checked\"\n (ngModelChange)=\"_radio()\"\n ></label>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"_link($event)\"\n [innerHTML]=\"i._values[cIdx]._text\"\n [attr.title]=\"i._values[cIdx].text\"\n ></a>\n <ng-container *ngIf=\"i._values[cIdx].text\">\n <nz-tag *ngSwitchCase=\"'tag'\" [nzColor]=\"i._values[cIdx].color\">\n <span [innerHTML]=\"i._values[cIdx]._text\"></span>\n </nz-tag>\n <nz-badge *ngSwitchCase=\"'badge'\" [nzStatus]=\"i._values[cIdx].color\" [nzText]=\"i._values[cIdx].text\"></nz-badge>\n </ng-container>\n <ng-template *ngSwitchCase=\"'widget'\" st-widget-host [record]=\"i\" [column]=\"c\"></ng-template\n ><ng-container *ngSwitchDefault>\n <span\n *ngIf=\"c.safeType !== 'text'\"\n [innerHTML]=\"i._values[cIdx]._text\"\n [attr.title]=\"c._isTruncate ? i._values[cIdx].text : null\"\n ></span>\n <span\n *ngIf=\"c.safeType === 'text'\"\n [innerText]=\"i._values[cIdx]._text\"\n [attr.title]=\"c._isTruncate ? i._values[cIdx].text : null\"\n ></span>\n </ng-container>\n </ng-container>\n <ng-container *ngFor=\"let btn of i._values[cIdx].buttons; let last = last\">\n <a *ngIf=\"btn.children!.length > 0\" nz-dropdown [nzDropdownMenu]=\"btnMenu\" nzOverlayClassName=\"st__btn-sub\">\n <span [innerHTML]=\"btn._text\"></span>\n <i nz-icon nzType=\"down\"></i>\n </a>\n <nz-dropdown-menu #btnMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <ng-container *ngFor=\"let subBtn of btn.children!\">\n <li *ngIf=\"subBtn.type !== 'divider'\" nz-menu-item [class.st__btn-disabled]=\"subBtn._disabled\">\n <ng-template [ngTemplateOutlet]=\"btnTpl\" [ngTemplateOutletContext]=\"{ $implicit: subBtn }\"> </ng-template>\n </li>\n <li *ngIf=\"subBtn.type === 'divider'\" nz-menu-divider></li>\n </ng-container>\n </ul>\n </nz-dropdown-menu>\n <span *ngIf=\"btn.children!.length === 0\" [class.st__btn-disabled]=\"btn._disabled\">\n <ng-template [ngTemplateOutlet]=\"btnTpl\" [ngTemplateOutletContext]=\"{ $implicit: btn }\"> </ng-template>\n </span>\n <nz-divider *ngIf=\"!last\" nzType=\"vertical\"></nz-divider>\n </ng-container>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { LetModule } from '@delon/abc/let';\nimport { DelonACLModule } from '@delon/acl';\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzResizableModule } from 'ng-zorro-antd/resizable';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { NzTagModule } from 'ng-zorro-antd/tag';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { STFilterComponent } from './st-filter.component';\nimport { STRowDirective } from './st-row.directive';\nimport { STWidgetHostDirective } from './st-widget-host.directive';\nimport { STComponent, STTdComponent } from './st.component';\n\nconst COMPONENTS = [STComponent, STRowDirective, STWidgetHostDirective];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DelonACLModule,\n LetModule,\n NzPopconfirmModule,\n NzTableModule,\n NzIconModule,\n NzBadgeModule,\n NzCheckboxModule,\n NzDividerModule,\n NzDropDownModule,\n NzMenuModule,\n NzRadioModule,\n NzTagModule,\n NzInputModule,\n NzToolTipModule,\n NzResizableModule,\n NzInputNumberModule,\n NzDatePickerModule\n ],\n declarations: [...COMPONENTS, STFilterComponent, STTdComponent],\n exports: COMPONENTS\n})\nexport class STModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tagSelect.mjs","sources":["../../../../packages/abc/tag-select/tag-select.component.ts","../../../../packages/abc/tag-select/tag-select.component.html","../../../../packages/abc/tag-select/tag-select.module.ts","../../../../packages/abc/tag-select/tagSelect.ts"],"sourcesContent":["import { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DelonLocaleService, LocaleData } from '@delon/theme';\nimport { BooleanInput, InputBoolean } from '@delon/util/decorator';\n\n@Component({\n selector: 'tag-select',\n exportAs: 'tagSelect',\n templateUrl: './tag-select.component.html',\n host: {\n '[class.tag-select]': 'true',\n '[class.tag-select-rtl]': `dir === 'rtl'`,\n '[class.tag-select-rtl__has-expand]': `dir === 'rtl' && expandable`,\n '[class.tag-select__has-expand]': 'expandable',\n '[class.tag-select__expanded]': 'expand'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class TagSelectComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_expandable: BooleanInput;\n\n private destroy$ = new Subject<void>();\n locale: LocaleData = {};\n expand = false;\n dir: Direction = 'ltr';\n\n /** 是否启用 `展开与收进` */\n @Input() @InputBoolean() expandable = true;\n @Output() readonly change = new EventEmitter<boolean>();\n\n constructor(\n private i18n: DelonLocaleService,\n @Optional() private directionality: Directionality,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n this.i18n.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.locale = this.i18n.getData('tagSelect');\n this.cdr.detectChanges();\n });\n }\n\n trigger(): void {\n this.expand = !this.expand;\n this.change.emit(this.expand);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<ng-content></ng-content>\n<a *ngIf=\"expandable\" class=\"tag-select__trigger\" (click)=\"trigger()\">\n {{ expand ? locale.collapse : locale.expand\n }}<i nz-icon [nzType]=\"expand ? 'up' : 'down'\" class=\"tag-select__trigger-icon\"></i>\n</a>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { TagSelectComponent } from './tag-select.component';\n\nconst COMPONENTS = [TagSelectComponent];\n\n@NgModule({\n imports: [CommonModule, NzIconModule, DelonLocaleModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class TagSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAkCa,kBAAkB;IAY7B,YACU,IAAwB,EACZ,cAA8B,EAC1C,GAAsB;QAFtB,SAAI,GAAJ,IAAI,CAAoB;QACZ,mBAAc,GAAd,cAAc,CAAgB;QAC1C,QAAG,GAAH,GAAG,CAAmB;QAZxB,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QACvC,WAAM,GAAe,EAAE,CAAC;QACxB,WAAM,GAAG,KAAK,CAAC;QACf,QAAG,GAAc,KAAK,CAAC;;QAGE,eAAU,GAAG,IAAI,CAAC;QACxB,WAAM,GAAG,IAAI,YAAY,EAAW,CAAC;KAMpD;IAEJ,QAAQ;;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACrC,MAAA,IAAI,CAAC,cAAc,CAAC,MAAM,0CAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,SAAoB;YACxF,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B,CAAC,CAAC;KACJ;IAED,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;;+GArCU,kBAAkB;mGAAlB,kBAAkB,wYClC/B,4PAKA;ADsC2B;IAAf,YAAY,EAAE;sDAAmB;2FAThC,kBAAkB;kBAf9B,SAAS;+BACE,YAAY,YACZ,WAAW,QAEf;wBACJ,oBAAoB,EAAE,MAAM;wBAC5B,wBAAwB,EAAE,eAAe;wBACzC,oCAAoC,EAAE,6BAA6B;wBACnE,gCAAgC,EAAE,YAAY;wBAC9C,8BAA8B,EAAE,QAAQ;qBACzC,uBACoB,KAAK,mBACT,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI;;;8BAgBlC,QAAQ;;yBALc,UAAU;sBAAlC,KAAK;gBACa,MAAM;sBAAxB,MAAM;;;AEpCT,MAAM,UAAU,GAAG,CAAC,kBAAkB,CAAC,CAAC;MAO3B,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBAPR,kBAAkB,aAG1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,aAHrC,kBAAkB;6GAOzB,eAAe,YAJjB,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;2FAI7C,eAAe;kBAL3B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;oBACxD,YAAY,EAAE,UAAU;oBACxB,OAAO,EAAE,UAAU;iBACpB;;;ACdD;;;;;;"}
|