@delon/abc 12.3.0 → 12.4.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.
Files changed (81) hide show
  1. package/bundles/abc.umd.js +1 -1
  2. package/bundles/autoFocus.umd.js +1 -1
  3. package/bundles/avatarList.umd.js +1 -1
  4. package/bundles/count-down.umd.js +1 -1
  5. package/bundles/datePicker.umd.js +1 -1
  6. package/bundles/downFile.umd.js +1 -1
  7. package/bundles/edit.umd.js +1 -1
  8. package/bundles/ellipsis.umd.js +1 -1
  9. package/bundles/errorCollect.umd.js +1 -1
  10. package/bundles/exception.umd.js +11 -8
  11. package/bundles/exception.umd.js.map +1 -1
  12. package/bundles/footerToolbar.umd.js +1 -1
  13. package/bundles/fullContent.umd.js +1 -1
  14. package/bundles/globalFooter.umd.js +1 -1
  15. package/bundles/grid.umd.js +1 -1
  16. package/bundles/image.umd.js +1 -1
  17. package/bundles/let.umd.js +1 -1
  18. package/bundles/loading.umd.js +1 -1
  19. package/bundles/lodop.umd.js +1 -1
  20. package/bundles/lodop.umd.js.map +1 -1
  21. package/bundles/media.umd.js +1 -1
  22. package/bundles/noticeIcon.umd.js +1 -1
  23. package/bundles/onboarding.umd.js +1 -1
  24. package/bundles/pageHeader.umd.js +1 -1
  25. package/bundles/pdf.umd.js +1 -1
  26. package/bundles/qr.umd.js +1 -1
  27. package/bundles/quickMenu.umd.js +1 -1
  28. package/bundles/result.umd.js +1 -1
  29. package/bundles/reuseTab.umd.js +9 -18
  30. package/bundles/reuseTab.umd.js.map +1 -1
  31. package/bundles/table.umd.js +236 -139
  32. package/bundles/table.umd.js.map +1 -1
  33. package/bundles/tagSelect.umd.js +1 -1
  34. package/bundles/view.umd.js +1 -1
  35. package/bundles/xlsx.umd.js +1 -1
  36. package/bundles/xlsx.umd.js.map +1 -1
  37. package/bundles/zip.umd.js +1 -1
  38. package/bundles/zip.umd.js.map +1 -1
  39. package/esm2015/exception/exception.component.js +7 -4
  40. package/esm2015/exception/exception.module.js +3 -2
  41. package/esm2015/lodop/lodop.service.js +1 -1
  42. package/esm2015/reuse-tab/reuse-tab-context-menu.component.js +2 -2
  43. package/esm2015/reuse-tab/reuse-tab-context.service.js +4 -13
  44. package/esm2015/reuse-tab/reuse-tab.component.js +6 -6
  45. package/esm2015/st/index.js +2 -0
  46. package/esm2015/st/st-column-source.js +25 -7
  47. package/esm2015/st/st-data-source.js +4 -4
  48. package/esm2015/st/st-filter.component.js +149 -0
  49. package/esm2015/st/st-td.component.js +232 -0
  50. package/esm2015/st/st.component.js +28 -118
  51. package/esm2015/st/st.config.js +1 -2
  52. package/esm2015/st/st.interfaces.js +1 -1
  53. package/esm2015/st/st.module.js +9 -3
  54. package/esm2015/st/st.types.js +1 -1
  55. package/esm2015/st/table.js +3 -1
  56. package/esm2015/xlsx/xlsx.service.js +1 -1
  57. package/esm2015/zip/zip.service.js +1 -1
  58. package/exception/exception.component.d.ts +3 -2
  59. package/exception/exception.metadata.json +1 -1
  60. package/fesm2015/exception.js +8 -4
  61. package/fesm2015/exception.js.map +1 -1
  62. package/fesm2015/lodop.js.map +1 -1
  63. package/fesm2015/reuseTab.js +9 -18
  64. package/fesm2015/reuseTab.js.map +1 -1
  65. package/fesm2015/table.js +436 -130
  66. package/fesm2015/table.js.map +1 -1
  67. package/fesm2015/xlsx.js.map +1 -1
  68. package/fesm2015/zip.js.map +1 -1
  69. package/package.json +4 -4
  70. package/reuse-tab/reuse-tab.component.d.ts +1 -1
  71. package/reuse-tab/reuseTab.metadata.json +1 -1
  72. package/st/index.d.ts +1 -0
  73. package/st/st-filter.component.d.ts +18 -0
  74. package/st/st-td.component.d.ts +27 -0
  75. package/st/st.component.d.ts +8 -23
  76. package/st/st.interfaces.d.ts +57 -3
  77. package/st/st.types.d.ts +6 -0
  78. package/st/style/index.less +8 -0
  79. package/st/table.d.ts +2 -0
  80. package/st/table.metadata.json +1 -1
  81. package/sv/style/index.less +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx.js","sources":["../../../../packages/abc/xlsx/xlsx.service.ts","../../../../packages/abc/xlsx/xlsx.directive.ts","../../../../packages/abc/xlsx/xlsx.module.ts","../../../../packages/abc/xlsx/xlsx.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, NgZone } from '@angular/core';\n\nimport isUtf8 from 'isutf8';\n\nimport { AlainConfigService, AlainXlsxConfig } from '@delon/util/config';\nimport { ZoneOutside } from '@delon/util/decorator';\nimport { LazyResult, LazyService } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { XlsxExportOptions, XlsxExportResult, XlsxExportSheet } from './xlsx.types';\n\ndeclare var XLSX: NzSafeAny;\ndeclare var cptable: NzSafeAny;\n\n@Injectable({ providedIn: 'root' })\nexport class XlsxService {\n constructor(\n private http: HttpClient,\n private lazy: LazyService,\n configSrv: AlainConfigService,\n private ngZone: NgZone\n ) {\n this.cog = configSrv.merge('xlsx', {\n url: 'https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/xlsx.full.min.js',\n modules: [`https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/cpexcel.min.js`]\n })!;\n }\n private cog: AlainXlsxConfig;\n\n private init(): Promise<LazyResult[]> {\n return typeof XLSX !== 'undefined'\n ? Promise.resolve([])\n : this.lazy.load([this.cog.url!].concat(this.cog.modules!));\n }\n\n @ZoneOutside()\n private read(data: NzSafeAny): { [key: string]: NzSafeAny[][] } {\n const {\n read,\n utils: { sheet_to_json }\n } = XLSX;\n const ret: NzSafeAny = {};\n const buf = new Uint8Array(data);\n let type = 'array';\n if (!isUtf8(buf)) {\n try {\n data = cptable.utils.decode(936, buf);\n type = 'string';\n } catch {}\n }\n const wb = read(data, { type });\n wb.SheetNames.forEach((name: string) => {\n const sheet: NzSafeAny = wb.Sheets[name];\n ret[name] = sheet_to_json(sheet, { header: 1 });\n });\n return ret;\n }\n\n /**\n * 导入Excel并输出JSON,支持 `<input type=\"file\">`、URL 形式\n */\n import(fileOrUrl: File | string): Promise<{ [key: string]: NzSafeAny[][] }> {\n return new Promise<{ [key: string]: NzSafeAny[][] }>((resolve, reject) => {\n const r = (data: NzSafeAny) => this.ngZone.run(() => resolve(this.read(data)));\n this.init()\n .then(() => {\n // from url\n if (typeof fileOrUrl === 'string') {\n this.http.request('GET', fileOrUrl, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => r(new Uint8Array(res)),\n (err: NzSafeAny) => reject(err)\n );\n return;\n }\n // from file\n const reader: FileReader = new FileReader();\n reader.onload = (e: NzSafeAny) => r(e.target.result);\n reader.onerror = (e: NzSafeAny) => reject(e);\n reader.readAsArrayBuffer(fileOrUrl);\n })\n .catch(() => reject(`Unable to load xlsx.js`));\n });\n }\n\n @ZoneOutside()\n async export(options: XlsxExportOptions): Promise<XlsxExportResult> {\n return new Promise<XlsxExportResult>((resolve, reject) => {\n this.init()\n .then(() => {\n options = { format: 'xlsx', ...options };\n const {\n writeFile,\n utils: { book_new, aoa_to_sheet, book_append_sheet }\n } = XLSX;\n const wb: NzSafeAny = book_new();\n if (Array.isArray(options.sheets)) {\n (options.sheets as XlsxExportSheet[]).forEach((value: XlsxExportSheet, index: number) => {\n const ws: NzSafeAny = aoa_to_sheet(value.data);\n book_append_sheet(wb, ws, value.name || `Sheet${index + 1}`);\n });\n } else {\n wb.SheetNames = Object.keys(options.sheets);\n wb.Sheets = options.sheets;\n }\n\n if (options.callback) options.callback(wb);\n\n const filename = options.filename || `export.${options.format}`;\n writeFile(wb, filename, {\n bookType: options.format,\n bookSST: false,\n type: 'array',\n ...options.opts\n });\n\n resolve({ filename, wb });\n })\n .catch(err => reject(err));\n });\n }\n\n /**\n * 数据转符号名\n * - `1` => `A`\n * - `27` => `AA`\n * - `703` => `AAA`\n */\n numberToSchema(val: number): string {\n const startCode = 'A'.charCodeAt(0);\n let res = '';\n\n do {\n --val;\n res = String.fromCharCode(startCode + (val % 26)) + res;\n val = (val / 26) >> 0;\n } while (val > 0);\n\n return res;\n }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { XlsxService } from './xlsx.service';\nimport { XlsxExportOptions } from './xlsx.types';\n\n@Directive({\n selector: '[xlsx]',\n exportAs: 'xlsx',\n host: {\n '(click)': '_click()'\n }\n})\nexport class XlsxDirective {\n @Input('xlsx') data: XlsxExportOptions;\n\n constructor(private srv: XlsxService) {}\n\n _click(): void {\n this.srv.export(this.data);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { XlsxDirective } from './xlsx.directive';\n\nconst COMPONENTS = [XlsxDirective];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class XlsxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlsx.js","sources":["../../../../packages/abc/xlsx/xlsx.service.ts","../../../../packages/abc/xlsx/xlsx.directive.ts","../../../../packages/abc/xlsx/xlsx.module.ts","../../../../packages/abc/xlsx/xlsx.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, NgZone } from '@angular/core';\n\nimport isUtf8 from 'isutf8';\n\nimport { AlainConfigService, AlainXlsxConfig } from '@delon/util/config';\nimport { ZoneOutside } from '@delon/util/decorator';\nimport { LazyResult, LazyService } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { XlsxExportOptions, XlsxExportResult, XlsxExportSheet } from './xlsx.types';\n\ndeclare var XLSX: NzSafeAny;\ndeclare var cptable: NzSafeAny;\n\n@Injectable({ providedIn: 'root' })\nexport class XlsxService {\n constructor(\n private http: HttpClient,\n private lazy: LazyService,\n configSrv: AlainConfigService,\n private ngZone: NgZone\n ) {\n this.cog = configSrv.merge('xlsx', {\n url: 'https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/xlsx.full.min.js',\n modules: [`https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/cpexcel.min.js`]\n })!;\n }\n private cog: AlainXlsxConfig;\n\n private init(): Promise<LazyResult[]> {\n return typeof XLSX !== 'undefined'\n ? Promise.resolve([])\n : this.lazy.load([this.cog.url!].concat(this.cog.modules!));\n }\n\n @ZoneOutside()\n private read(data: NzSafeAny): { [key: string]: NzSafeAny[][] } {\n const {\n read,\n utils: { sheet_to_json }\n } = XLSX;\n const ret: NzSafeAny = {};\n const buf = new Uint8Array(data);\n let type = 'array';\n if (!isUtf8(buf)) {\n try {\n data = cptable.utils.decode(936, buf);\n type = 'string';\n } catch {}\n }\n const wb = read(data, { type });\n wb.SheetNames.forEach((name: string) => {\n const sheet: NzSafeAny = wb.Sheets[name];\n ret[name] = sheet_to_json(sheet, { header: 1 });\n });\n return ret;\n }\n\n /**\n * 导入Excel并输出JSON,支持 `<input type=\"file\">`、URL 形式\n */\n import(fileOrUrl: File | string): Promise<{ [key: string]: NzSafeAny[][] }> {\n return new Promise<{ [key: string]: NzSafeAny[][] }>((resolve, reject) => {\n const r = (data: NzSafeAny): void => this.ngZone.run(() => resolve(this.read(data)));\n this.init()\n .then(() => {\n // from url\n if (typeof fileOrUrl === 'string') {\n this.http.request('GET', fileOrUrl, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => r(new Uint8Array(res)),\n (err: NzSafeAny) => reject(err)\n );\n return;\n }\n // from file\n const reader: FileReader = new FileReader();\n reader.onload = (e: NzSafeAny) => r(e.target.result);\n reader.onerror = (e: NzSafeAny) => reject(e);\n reader.readAsArrayBuffer(fileOrUrl);\n })\n .catch(() => reject(`Unable to load xlsx.js`));\n });\n }\n\n @ZoneOutside()\n async export(options: XlsxExportOptions): Promise<XlsxExportResult> {\n return new Promise<XlsxExportResult>((resolve, reject) => {\n this.init()\n .then(() => {\n options = { format: 'xlsx', ...options };\n const {\n writeFile,\n utils: { book_new, aoa_to_sheet, book_append_sheet }\n } = XLSX;\n const wb: NzSafeAny = book_new();\n if (Array.isArray(options.sheets)) {\n (options.sheets as XlsxExportSheet[]).forEach((value: XlsxExportSheet, index: number) => {\n const ws: NzSafeAny = aoa_to_sheet(value.data);\n book_append_sheet(wb, ws, value.name || `Sheet${index + 1}`);\n });\n } else {\n wb.SheetNames = Object.keys(options.sheets);\n wb.Sheets = options.sheets;\n }\n\n if (options.callback) options.callback(wb);\n\n const filename = options.filename || `export.${options.format}`;\n writeFile(wb, filename, {\n bookType: options.format,\n bookSST: false,\n type: 'array',\n ...options.opts\n });\n\n resolve({ filename, wb });\n })\n .catch(err => reject(err));\n });\n }\n\n /**\n * 数据转符号名\n * - `1` => `A`\n * - `27` => `AA`\n * - `703` => `AAA`\n */\n numberToSchema(val: number): string {\n const startCode = 'A'.charCodeAt(0);\n let res = '';\n\n do {\n --val;\n res = String.fromCharCode(startCode + (val % 26)) + res;\n val = (val / 26) >> 0;\n } while (val > 0);\n\n return res;\n }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { XlsxService } from './xlsx.service';\nimport { XlsxExportOptions } from './xlsx.types';\n\n@Directive({\n selector: '[xlsx]',\n exportAs: 'xlsx',\n host: {\n '(click)': '_click()'\n }\n})\nexport class XlsxDirective {\n @Input('xlsx') data: XlsxExportOptions;\n\n constructor(private srv: XlsxService) {}\n\n _click(): void {\n this.srv.export(this.data);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { XlsxDirective } from './xlsx.directive';\n\nconst COMPONENTS = [XlsxDirective];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class XlsxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zip.js","sources":["../../../../packages/abc/zip/zip.service.ts","../../../../packages/abc/zip/zip.module.ts","../../../../packages/abc/zip/zip.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, NgZone } from '@angular/core';\n\nimport { saveAs } from 'file-saver';\n\nimport { AlainConfigService, AlainZipConfig } from '@delon/util/config';\nimport { ZoneOutside } from '@delon/util/decorator';\nimport { LazyResult, LazyService } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ZipSaveOptions } from './zip.types';\n\ndeclare var JSZip: NzSafeAny;\n\n@Injectable({ providedIn: 'root' })\nexport class ZipService {\n private cog: AlainZipConfig;\n\n constructor(\n private http: HttpClient,\n private lazy: LazyService,\n configSrv: AlainConfigService,\n private ngZone: NgZone\n ) {\n this.cog = configSrv.merge('zip', {\n url: '//cdn.bootcss.com/jszip/3.3.0/jszip.min.js',\n utils: []\n })!;\n }\n\n private init(): Promise<LazyResult[]> {\n return this.lazy.load([this.cog.url!].concat(this.cog.utils!));\n }\n\n private check(zip: NzSafeAny): void {\n if (!zip) throw new Error('get instance via `ZipService.create()`');\n }\n\n /** 解压 */\n @ZoneOutside()\n read(fileOrUrl: File | string, options?: NzSafeAny): Promise<NzSafeAny> {\n return new Promise<NzSafeAny>((resolve, reject) => {\n const resolveCallback = (data: NzSafeAny) => {\n this.ngZone.run(() => resolve(data));\n };\n this.init().then(() => {\n // from url\n if (typeof fileOrUrl === 'string') {\n this.http.request('GET', fileOrUrl, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => {\n JSZip.loadAsync(res, options).then((ret: NzSafeAny) => resolveCallback(ret));\n },\n (err: NzSafeAny) => {\n reject(err);\n }\n );\n return;\n }\n // from file\n const reader: FileReader = new FileReader();\n reader.onload = (e: NzSafeAny) => {\n JSZip.loadAsync(e.target.result, options).then((ret: NzSafeAny) => resolveCallback(ret));\n };\n reader.readAsBinaryString(fileOrUrl as File);\n });\n });\n }\n\n /** 创建 Zip 实例,用于创建压缩文件 */\n create(): Promise<NzSafeAny> {\n return new Promise<NzSafeAny>(resolve => {\n this.init().then(() => {\n const zipFile: NzSafeAny = new JSZip();\n resolve(zipFile);\n });\n });\n }\n\n /**\n * 下载URL资源并写入 zip\n *\n * @param zip Zip 实例\n * @param path Zip 路径,例如: `text.txt`、`txt/hi.txt`\n * @param url URL 地址\n */\n pushUrl(zip: NzSafeAny, path: string, url: string): Promise<void> {\n this.check(zip);\n return new Promise<void>((resolve, reject) => {\n this.http.request('GET', url, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => {\n zip.file(path, res);\n resolve();\n },\n (error: NzSafeAny) => {\n reject({ url, error });\n }\n );\n });\n }\n\n /**\n * 保存Zip并执行打开保存对话框\n *\n * @param zip zip 对象,务必通过 `create()` 构建\n * @param options 额外参数,\n */\n save(zip: NzSafeAny, options?: ZipSaveOptions): Promise<void> {\n this.check(zip);\n const opt = { ...options } as ZipSaveOptions;\n return new Promise<void>((resolve, reject) => {\n zip.generateAsync({ type: 'blob', ...opt.options }, opt.update).then(\n (data: Blob) => {\n if (opt.callback) opt.callback(data);\n saveAs(data, opt.filename || 'download.zip');\n resolve();\n },\n (err: NzSafeAny) => {\n reject(err);\n }\n );\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class ZipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip.js","sources":["../../../../packages/abc/zip/zip.service.ts","../../../../packages/abc/zip/zip.module.ts","../../../../packages/abc/zip/zip.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, NgZone } from '@angular/core';\n\nimport { saveAs } from 'file-saver';\n\nimport { AlainConfigService, AlainZipConfig } from '@delon/util/config';\nimport { ZoneOutside } from '@delon/util/decorator';\nimport { LazyResult, LazyService } from '@delon/util/other';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ZipSaveOptions } from './zip.types';\n\ndeclare var JSZip: NzSafeAny;\n\n@Injectable({ providedIn: 'root' })\nexport class ZipService {\n private cog: AlainZipConfig;\n\n constructor(\n private http: HttpClient,\n private lazy: LazyService,\n configSrv: AlainConfigService,\n private ngZone: NgZone\n ) {\n this.cog = configSrv.merge('zip', {\n url: '//cdn.bootcss.com/jszip/3.3.0/jszip.min.js',\n utils: []\n })!;\n }\n\n private init(): Promise<LazyResult[]> {\n return this.lazy.load([this.cog.url!].concat(this.cog.utils!));\n }\n\n private check(zip: NzSafeAny): void {\n if (!zip) throw new Error('get instance via `ZipService.create()`');\n }\n\n /** 解压 */\n @ZoneOutside()\n read(fileOrUrl: File | string, options?: NzSafeAny): Promise<NzSafeAny> {\n return new Promise<NzSafeAny>((resolve, reject) => {\n const resolveCallback = (data: NzSafeAny): void => {\n this.ngZone.run(() => resolve(data));\n };\n this.init().then(() => {\n // from url\n if (typeof fileOrUrl === 'string') {\n this.http.request('GET', fileOrUrl, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => {\n JSZip.loadAsync(res, options).then((ret: NzSafeAny) => resolveCallback(ret));\n },\n (err: NzSafeAny) => {\n reject(err);\n }\n );\n return;\n }\n // from file\n const reader: FileReader = new FileReader();\n reader.onload = (e: NzSafeAny) => {\n JSZip.loadAsync(e.target.result, options).then((ret: NzSafeAny) => resolveCallback(ret));\n };\n reader.readAsBinaryString(fileOrUrl as File);\n });\n });\n }\n\n /** 创建 Zip 实例,用于创建压缩文件 */\n create(): Promise<NzSafeAny> {\n return new Promise<NzSafeAny>(resolve => {\n this.init().then(() => {\n const zipFile: NzSafeAny = new JSZip();\n resolve(zipFile);\n });\n });\n }\n\n /**\n * 下载URL资源并写入 zip\n *\n * @param zip Zip 实例\n * @param path Zip 路径,例如: `text.txt`、`txt/hi.txt`\n * @param url URL 地址\n */\n pushUrl(zip: NzSafeAny, path: string, url: string): Promise<void> {\n this.check(zip);\n return new Promise<void>((resolve, reject) => {\n this.http.request('GET', url, { responseType: 'arraybuffer' }).subscribe(\n (res: ArrayBuffer) => {\n zip.file(path, res);\n resolve();\n },\n (error: NzSafeAny) => {\n reject({ url, error });\n }\n );\n });\n }\n\n /**\n * 保存Zip并执行打开保存对话框\n *\n * @param zip zip 对象,务必通过 `create()` 构建\n * @param options 额外参数,\n */\n save(zip: NzSafeAny, options?: ZipSaveOptions): Promise<void> {\n this.check(zip);\n const opt = { ...options } as ZipSaveOptions;\n return new Promise<void>((resolve, reject) => {\n zip.generateAsync({ type: 'blob', ...opt.options }, opt.update).then(\n (data: Blob) => {\n if (opt.callback) opt.callback(data);\n saveAs(data, opt.filename || 'download.zip');\n resolve();\n },\n (err: NzSafeAny) => {\n reject(err);\n }\n );\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class ZipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delon/abc",
3
- "version": "12.3.0",
3
+ "version": "12.4.0",
4
4
  "author": "cipchk<cipchk@qq.com>",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,9 +26,9 @@
26
26
  "jszip": "^3.7.1",
27
27
  "xlsx": "^0.17.1",
28
28
  "ngx-countdown": "^12.0.1",
29
- "@delon/theme": "^12.3.0",
30
- "@delon/util": "^12.3.0",
31
- "@delon/acl": "^12.3.0",
29
+ "@delon/theme": "^12.4.0",
30
+ "@delon/util": "^12.4.0",
31
+ "@delon/acl": "^12.4.0",
32
32
  "tslib": "^2.2.0"
33
33
  },
34
34
  "main": "bundles/abc.umd.js",
@@ -21,7 +21,7 @@ export declare class ReuseTabComponent implements OnInit, OnChanges, OnDestroy {
21
21
  static ngAcceptInputType_keepingScroll: BooleanInput;
22
22
  static ngAcceptInputType_disabled: BooleanInput;
23
23
  private tabset;
24
- private unsubscribe$;
24
+ private destroy$;
25
25
  private updatePos$;
26
26
  private _keepingScrollContainer;
27
27
  list: ReuseItem[];
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ReuseTabContextMenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"reuse-tab-context-menu","host":{"(document:click)":"closeMenu($event)","(document:contextmenu)":"closeMenu($event)","$quoted$":["(document:click)","(document:contextmenu)"]},"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":28,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":29,"character":17},"member":"None"},"template":"<ul nz-menu>\n <li nz-menu-item (click)=\"click($event, 'refresh')\" data-type=\"refresh\" [innerHTML]=\"i18n.refresh\"></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"}]}],"members":{"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"item":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"event":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"close":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"DelonLocaleService","line":52,"character":31}]}],"notify":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"isDisabled":[{"__symbolic":"method"}],"closeMenu":[{"__symbolic":"method"}]}},"ReuseTabContextComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"reuse-tab-context","template":""}]}],"members":{"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabContextService"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ReuseTabContextDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[reuse-tab-context-menu]","exportAs":"reuseTabContextMenu","host":{"(contextmenu)":"_onContextMenu($event)","$quoted$":["(contextmenu)"]}}]}],"members":{"item":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["reuse-tab-context-menu"]}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabContextService"}]}],"_onContextMenu":[{"__symbolic":"method"}]}},"ReuseTabContextService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":21,"character":31}]}],"remove":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}]}},"ReuseTabComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"reuse-tab, [reuse-tab]","exportAs":"reuseTab","host":{"[class.reuse-tab]":"true","[class.reuse-tab__line]":"tabType === 'line'","[class.reuse-tab__card]":"tabType === 'card'","[class.reuse-tab__disabled]":"disabled","$quoted$":["[class.reuse-tab]","[class.reuse-tab__line]","[class.reuse-tab__card]","[class.reuse-tab__disabled]"]},"providers":[{"__symbolic":"reference","name":"ReuseTabContextService"}],"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":55,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":56,"character":17},"member":"None"},"template":"<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"}]}],"members":{"tabset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":["tabset"]}]}],"mode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":78,"character":12}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputNumber","line":79,"character":12}}]}],"tabMaxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputNumber","line":80,"character":12}}]}],"excludes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"allowClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":82,"character":12}}]}],"keepingScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":83,"character":12}}]}],"keepingScrollContainer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"tabBarExtraContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"tabBarGutter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"tabBarStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"tabType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"routeParamMatchMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":94,"character":12}}]}],"titleRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":96,"character":3}}]}],"close":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":97,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":106,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":106,"character":17},"arguments":[{"__symbolic":"reference","module":"@delon/theme","name":"ALAIN_I18N_TOKEN","line":106,"character":24}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":107,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"ReuseTabService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":17},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":104,"character":20},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":105,"character":19},{"__symbolic":"reference","module":"@delon/theme","name":"AlainI18NService","line":106,"character":59},{"__symbolic":"reference","module":"ng-zorro-antd/core/types","name":"NzSafeAny","line":107,"character":35},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":108,"character":22}]}],"genTit":[{"__symbolic":"method"}],"genCurItem":[{"__symbolic":"method"}],"genList":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"contextMenuChange":[{"__symbolic":"method"}],"_to":[{"__symbolic":"method"}],"_close":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ReuseTabService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"index":[{"__symbolic":"method"}],"exists":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"closeRight":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"move":[{"__symbolic":"method"}],"replace":[{"__symbolic":"method"}],"getTitle":[{"__symbolic":"method"}],"clearTitleCached":[{"__symbolic":"method"}],"getClosable":[{"__symbolic":"method"}],"clearClosableCached":[{"__symbolic":"method"}],"getTruthRoute":[{"__symbolic":"method"}],"getUrl":[{"__symbolic":"method"}],"can":[{"__symbolic":"method"}],"isExclude":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"di":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":365,"character":32},{"__symbolic":"reference","module":"@delon/theme","name":"MenuService","line":365,"character":63}]}],"init":[{"__symbolic":"method"}],"getMenu":[{"__symbolic":"method"}],"runHook":[{"__symbolic":"method"}],"hasInValidRoute":[{"__symbolic":"method"}],"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}],"getKeepingScroll":[{"__symbolic":"method"}],"initScroll":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ReuseTabStrategy":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabService"}]}],"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}]}},"ReuseTabModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":12},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":19,"character":26},{"__symbolic":"reference","module":"@delon/theme","name":"DelonLocaleModule","line":19,"character":40},{"__symbolic":"reference","module":"ng-zorro-antd/menu","name":"NzMenuModule","line":19,"character":59},{"__symbolic":"reference","module":"ng-zorro-antd/tabs","name":"NzTabsModule","line":19,"character":73},{"__symbolic":"reference","module":"ng-zorro-antd/icon","name":"NzIconModule","line":19,"character":87},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":19,"character":101}],"declarations":[{"__symbolic":"reference","name":"ReuseTabComponent"},{"__symbolic":"reference","name":"ReuseTabContextMenuComponent"},{"__symbolic":"reference","name":"ReuseTabContextComponent"},{"__symbolic":"reference","name":"ReuseTabContextDirective"}],"exports":[{"__symbolic":"reference","name":"ReuseTabComponent"}]}]}],"members":{}},"ReuseTabMatchMode":{"Menu":0,"MenuForce":1,"URL":2},"ReuseTabRouteParamMatchMode":{"__symbolic":"interface"},"ReuseTitle":{"__symbolic":"interface"},"ReuseTabCached":{"__symbolic":"interface"},"ReuseTabNotify":{"__symbolic":"interface"},"ReuseItem":{"__symbolic":"interface"},"ReuseContextEvent":{"__symbolic":"interface"},"CloseType":{"__symbolic":"interface"},"ReuseContextCloseEvent":{"__symbolic":"interface"},"ReuseContextI18n":{"__symbolic":"interface"},"ReuseCustomContextMenu":{"__symbolic":"interface"},"ReuseComponentHandle":{"__symbolic":"interface"},"ReuseComponentRef":{"__symbolic":"interface"},"ReuseHookTypes":{"__symbolic":"interface"},"ReuseHookOnReuseInitType":{"__symbolic":"interface"},"ReuseComponentInstance":{"__symbolic":"interface"},"OnReuseInit":{"__symbolic":"interface"},"OnReuseDestroy":{"__symbolic":"interface"}},"origins":{"ReuseTabContextMenuComponent":"./reuse-tab-context-menu.component","ReuseTabContextComponent":"./reuse-tab-context.component","ReuseTabContextDirective":"./reuse-tab-context.directive","ReuseTabContextService":"./reuse-tab-context.service","ReuseTabComponent":"./reuse-tab.component","ReuseTabService":"./reuse-tab.service","ReuseTabStrategy":"./reuse-tab.strategy","ReuseTabModule":"./reuse-tab.module","ReuseTabMatchMode":"./reuse-tab.interfaces","ReuseTabRouteParamMatchMode":"./reuse-tab.interfaces","ReuseTitle":"./reuse-tab.interfaces","ReuseTabCached":"./reuse-tab.interfaces","ReuseTabNotify":"./reuse-tab.interfaces","ReuseItem":"./reuse-tab.interfaces","ReuseContextEvent":"./reuse-tab.interfaces","CloseType":"./reuse-tab.interfaces","ReuseContextCloseEvent":"./reuse-tab.interfaces","ReuseContextI18n":"./reuse-tab.interfaces","ReuseCustomContextMenu":"./reuse-tab.interfaces","ReuseComponentHandle":"./reuse-tab.interfaces","ReuseComponentRef":"./reuse-tab.interfaces","ReuseHookTypes":"./reuse-tab.interfaces","ReuseHookOnReuseInitType":"./reuse-tab.interfaces","ReuseComponentInstance":"./reuse-tab.interfaces","OnReuseInit":"./lifecycle_hooks","OnReuseDestroy":"./lifecycle_hooks"},"importAs":"@delon/abc/reuse-tab"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ReuseTabContextMenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"reuse-tab-context-menu","host":{"(document:click)":"closeMenu($event)","(document:contextmenu)":"closeMenu($event)","$quoted$":["(document:click)","(document:contextmenu)"]},"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":28,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":29,"character":17},"member":"None"},"template":"<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"}]}],"members":{"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"item":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"event":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"close":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@delon/theme","name":"DelonLocaleService","line":52,"character":31}]}],"notify":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"isDisabled":[{"__symbolic":"method"}],"closeMenu":[{"__symbolic":"method"}]}},"ReuseTabContextComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"reuse-tab-context","template":""}]}],"members":{"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabContextService"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ReuseTabContextDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[reuse-tab-context-menu]","exportAs":"reuseTabContextMenu","host":{"(contextmenu)":"_onContextMenu($event)","$quoted$":["(contextmenu)"]}}]}],"members":{"item":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["reuse-tab-context-menu"]}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabContextService"}]}],"_onContextMenu":[{"__symbolic":"method"}]}},"ReuseTabContextService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":21,"character":31}]}],"remove":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}]}},"ReuseTabComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"reuse-tab, [reuse-tab]","exportAs":"reuseTab","host":{"[class.reuse-tab]":"true","[class.reuse-tab__line]":"tabType === 'line'","[class.reuse-tab__card]":"tabType === 'card'","[class.reuse-tab__disabled]":"disabled","$quoted$":["[class.reuse-tab]","[class.reuse-tab__line]","[class.reuse-tab__card]","[class.reuse-tab__disabled]"]},"providers":[{"__symbolic":"reference","name":"ReuseTabContextService"}],"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":55,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":56,"character":17},"member":"None"},"template":"<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"}]}],"members":{"tabset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":66,"character":3},"arguments":["tabset"]}]}],"mode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"debug":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":78,"character":12}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputNumber","line":79,"character":12}}]}],"tabMaxWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputNumber","line":80,"character":12}}]}],"excludes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"allowClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":82,"character":12}}]}],"keepingScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":83,"character":12}}]}],"keepingScrollContainer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"customContextMenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"tabBarExtraContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"tabBarGutter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"tabBarStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"tabType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"routeParamMatchMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@delon/util/decorator","name":"InputBoolean","line":94,"character":12}}]}],"titleRender":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":96,"character":3}}]}],"close":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":97,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":106,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":106,"character":17},"arguments":[{"__symbolic":"reference","module":"@delon/theme","name":"ALAIN_I18N_TOKEN","line":106,"character":24}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":107,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"ReuseTabService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":17},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":104,"character":20},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":105,"character":19},{"__symbolic":"reference","module":"@delon/theme","name":"AlainI18NService","line":106,"character":59},{"__symbolic":"reference","module":"ng-zorro-antd/core/types","name":"NzSafeAny","line":107,"character":35},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":108,"character":22}]}],"genTit":[{"__symbolic":"method"}],"genCurItem":[{"__symbolic":"method"}],"genList":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"contextMenuChange":[{"__symbolic":"method"}],"_to":[{"__symbolic":"method"}],"_close":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ReuseTabService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"index":[{"__symbolic":"method"}],"exists":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"closeRight":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"move":[{"__symbolic":"method"}],"replace":[{"__symbolic":"method"}],"getTitle":[{"__symbolic":"method"}],"clearTitleCached":[{"__symbolic":"method"}],"getClosable":[{"__symbolic":"method"}],"clearClosableCached":[{"__symbolic":"method"}],"getTruthRoute":[{"__symbolic":"method"}],"getUrl":[{"__symbolic":"method"}],"can":[{"__symbolic":"method"}],"isExclude":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"di":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":365,"character":32},{"__symbolic":"reference","module":"@delon/theme","name":"MenuService","line":365,"character":63}]}],"init":[{"__symbolic":"method"}],"getMenu":[{"__symbolic":"method"}],"runHook":[{"__symbolic":"method"}],"hasInValidRoute":[{"__symbolic":"method"}],"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}],"getKeepingScroll":[{"__symbolic":"method"}],"initScroll":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ReuseTabStrategy":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ReuseTabService"}]}],"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}]}},"ReuseTabModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":12},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":19,"character":26},{"__symbolic":"reference","module":"@delon/theme","name":"DelonLocaleModule","line":19,"character":40},{"__symbolic":"reference","module":"ng-zorro-antd/menu","name":"NzMenuModule","line":19,"character":59},{"__symbolic":"reference","module":"ng-zorro-antd/tabs","name":"NzTabsModule","line":19,"character":73},{"__symbolic":"reference","module":"ng-zorro-antd/icon","name":"NzIconModule","line":19,"character":87},{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"OverlayModule","line":19,"character":101}],"declarations":[{"__symbolic":"reference","name":"ReuseTabComponent"},{"__symbolic":"reference","name":"ReuseTabContextMenuComponent"},{"__symbolic":"reference","name":"ReuseTabContextComponent"},{"__symbolic":"reference","name":"ReuseTabContextDirective"}],"exports":[{"__symbolic":"reference","name":"ReuseTabComponent"}]}]}],"members":{}},"ReuseTabMatchMode":{"Menu":0,"MenuForce":1,"URL":2},"ReuseTabRouteParamMatchMode":{"__symbolic":"interface"},"ReuseTitle":{"__symbolic":"interface"},"ReuseTabCached":{"__symbolic":"interface"},"ReuseTabNotify":{"__symbolic":"interface"},"ReuseItem":{"__symbolic":"interface"},"ReuseContextEvent":{"__symbolic":"interface"},"CloseType":{"__symbolic":"interface"},"ReuseContextCloseEvent":{"__symbolic":"interface"},"ReuseContextI18n":{"__symbolic":"interface"},"ReuseCustomContextMenu":{"__symbolic":"interface"},"ReuseComponentHandle":{"__symbolic":"interface"},"ReuseComponentRef":{"__symbolic":"interface"},"ReuseHookTypes":{"__symbolic":"interface"},"ReuseHookOnReuseInitType":{"__symbolic":"interface"},"ReuseComponentInstance":{"__symbolic":"interface"},"OnReuseInit":{"__symbolic":"interface"},"OnReuseDestroy":{"__symbolic":"interface"}},"origins":{"ReuseTabContextMenuComponent":"./reuse-tab-context-menu.component","ReuseTabContextComponent":"./reuse-tab-context.component","ReuseTabContextDirective":"./reuse-tab-context.directive","ReuseTabContextService":"./reuse-tab-context.service","ReuseTabComponent":"./reuse-tab.component","ReuseTabService":"./reuse-tab.service","ReuseTabStrategy":"./reuse-tab.strategy","ReuseTabModule":"./reuse-tab.module","ReuseTabMatchMode":"./reuse-tab.interfaces","ReuseTabRouteParamMatchMode":"./reuse-tab.interfaces","ReuseTitle":"./reuse-tab.interfaces","ReuseTabCached":"./reuse-tab.interfaces","ReuseTabNotify":"./reuse-tab.interfaces","ReuseItem":"./reuse-tab.interfaces","ReuseContextEvent":"./reuse-tab.interfaces","CloseType":"./reuse-tab.interfaces","ReuseContextCloseEvent":"./reuse-tab.interfaces","ReuseContextI18n":"./reuse-tab.interfaces","ReuseCustomContextMenu":"./reuse-tab.interfaces","ReuseComponentHandle":"./reuse-tab.interfaces","ReuseComponentRef":"./reuse-tab.interfaces","ReuseHookTypes":"./reuse-tab.interfaces","ReuseHookOnReuseInitType":"./reuse-tab.interfaces","ReuseComponentInstance":"./reuse-tab.interfaces","OnReuseInit":"./lifecycle_hooks","OnReuseDestroy":"./lifecycle_hooks"},"importAs":"@delon/abc/reuse-tab"}
package/st/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './public_api';
@@ -0,0 +1,18 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { LocaleData } from '@delon/theme';
3
+ import { STColumnFilter, STColumnFilterMenu, STIcon } from './st.interfaces';
4
+ import { _STColumn } from './st.types';
5
+ export declare class STFilterComponent {
6
+ visible: boolean;
7
+ col: _STColumn;
8
+ locale: LocaleData;
9
+ f: STColumnFilter;
10
+ readonly n: EventEmitter<unknown>;
11
+ readonly handle: EventEmitter<boolean>;
12
+ get icon(): STIcon;
13
+ show($event: MouseEvent): void;
14
+ checkboxChange(): void;
15
+ radioChange(item: STColumnFilterMenu): void;
16
+ confirm(): void;
17
+ reset(): void;
18
+ }
@@ -0,0 +1,27 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { DrawerHelper, ModalHelper } from '@delon/theme';
4
+ import { STComponent } from '.';
5
+ import { STColumnButton, STData } from './st.interfaces';
6
+ import { _STColumn, _STTdNotify } from './st.types';
7
+ export declare class STTdComponent {
8
+ private stComp;
9
+ private router;
10
+ private modalHelper;
11
+ private drawerHelper;
12
+ c: _STColumn;
13
+ cIdx: number;
14
+ data: STData[];
15
+ i: STData;
16
+ index: number;
17
+ readonly n: EventEmitter<_STTdNotify>;
18
+ private get routerState();
19
+ constructor(stComp: STComponent, router: Router, modalHelper: ModalHelper, drawerHelper: DrawerHelper);
20
+ private report;
21
+ _checkbox(value: boolean): void;
22
+ _radio(checked: boolean): void;
23
+ _link(e: Event): boolean;
24
+ _stopPropagation(ev: Event): void;
25
+ _btn(btn: STColumnButton, ev?: Event): void;
26
+ private btnCallback;
27
+ }
@@ -1,8 +1,7 @@
1
1
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
2
2
  import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChange, SimpleChanges, TemplateRef, TrackByFunction } from '@angular/core';
3
- import { Router } from '@angular/router';
4
3
  import { Observable } from 'rxjs';
5
- import { AlainI18NService, DelonLocaleService, DrawerHelper, LocaleData, ModalHelper } from '@delon/theme';
4
+ import { AlainI18NService, DelonLocaleService, LocaleData } from '@delon/theme';
6
5
  import { AlainConfigService } from '@delon/util/config';
7
6
  import { BooleanInput, NumberInput } from '@delon/util/decorator';
8
7
  import type { NzSafeAny } from 'ng-zorro-antd/core/types';
@@ -12,15 +11,12 @@ import { NzTableComponent } from 'ng-zorro-antd/table';
12
11
  import { STColumnSource } from './st-column-source';
13
12
  import { STDataSource } from './st-data-source';
14
13
  import { STExport } from './st-export';
15
- import { STChange, STClickRowClassName, STColumn, STColumnButton, STColumnFilterMenu, STColumnSelection, STContextmenuFn, STContextmenuItem, STCustomRequestOptions, STData, STError, STExportOptions, STLoadOptions, STPage, STReq, STRes, STResetColumnsOption, STResizable, STRowClassName, STSingleSort, STStatisticalResults, STWidthMode } from './st.interfaces';
16
- import { _STColumn, _STHeader } from './st.types';
14
+ import { STChange, STClickRowClassName, STColumn, STColumnSelection, STContextmenuFn, STContextmenuItem, STCustomRequestOptions, STData, STError, STExportOptions, STLoadOptions, STPage, STReq, STRes, STResetColumnsOption, STResizable, STRowClassName, STSingleSort, STStatisticalResults, STWidthMode } from './st.interfaces';
15
+ import { _STColumn, _STHeader, _STTdNotify } from './st.types';
17
16
  export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy {
18
17
  private cdr;
19
- private router;
20
18
  private el;
21
19
  private exportSrv;
22
- private modalHelper;
23
- private drawerHelper;
24
20
  private doc;
25
21
  private columnSource;
26
22
  private dataSource;
@@ -33,7 +29,6 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
33
29
  static ngAcceptInputType_bordered: BooleanInput;
34
30
  static ngAcceptInputType_expandRowByClick: BooleanInput;
35
31
  static ngAcceptInputType_expandAccordion: BooleanInput;
36
- static ngAcceptInputType_rowClickTime: NumberInput;
37
32
  static ngAcceptInputType_responsive: BooleanInput;
38
33
  static ngAcceptInputType_responsiveHideHeaderFooter: BooleanInput;
39
34
  static ngAcceptInputType_virtualScroll: BooleanInput;
@@ -44,7 +39,6 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
44
39
  private data$;
45
40
  private totalTpl;
46
41
  private cog;
47
- private rowClickCount;
48
42
  private _req;
49
43
  private _res;
50
44
  private _page;
@@ -109,7 +103,6 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
109
103
  column: STColumn;
110
104
  }>;
111
105
  noResult?: string | TemplateRef<void> | null;
112
- rowClickTime: number;
113
106
  responsive: boolean;
114
107
  responsiveHideHeaderFooter: boolean;
115
108
  readonly error: EventEmitter<STError>;
@@ -128,8 +121,7 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
128
121
  * Get the data of the current page
129
122
  */
130
123
  get list(): STData[];
131
- private get routerState();
132
- constructor(i18nSrv: AlainI18NService, cdr: ChangeDetectorRef, router: Router, el: ElementRef, exportSrv: STExport, modalHelper: ModalHelper, drawerHelper: DrawerHelper, doc: NzSafeAny, columnSource: STColumnSource, dataSource: STDataSource, delonI18n: DelonLocaleService, configSrv: AlainConfigService, cms: NzContextMenuService);
124
+ constructor(i18nSrv: AlainI18NService, cdr: ChangeDetectorRef, el: ElementRef, exportSrv: STExport, doc: NzSafeAny, columnSource: STColumnSource, dataSource: STDataSource, delonI18n: DelonLocaleService, configSrv: AlainConfigService, cms: NzContextMenuService);
133
125
  private setCog;
134
126
  cd(): this;
135
127
  renderTotal(total: string, range: string[]): string;
@@ -174,9 +166,8 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
174
166
  reset(extraParams?: NzSafeAny, options?: STLoadOptions): this;
175
167
  private _toTop;
176
168
  _change(type: 'pi' | 'ps', options?: STLoadOptions): void;
177
- _click(e: Event, item: STData, col: STColumn): boolean;
178
169
  private closeOtherExpand;
179
- _rowClick(e: Event, item: STData, index: number): void;
170
+ _rowClick(e: Event, item: STData, index: number, dbl: boolean): void;
180
171
  private _clickRowClassName;
181
172
  _expandChange(item: STData, expand: boolean): void;
182
173
  _stopPropagation(ev: Event): void;
@@ -207,24 +198,18 @@ export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy
207
198
  }): this;
208
199
  sort(col: _STColumn, idx: number, value: NzSafeAny): void;
209
200
  clearSort(): this;
210
- private handleFilter;
211
- _filterConfirm(col: _STColumn): void;
212
- _filterRadio(col: _STColumn, item: STColumnFilterMenu, checked: boolean): void;
213
- _filterClear(col: _STColumn): void;
201
+ _handleFilter(col: _STColumn, confirm: boolean): void;
202
+ handleFilterNotify(value?: unknown): void;
214
203
  clearFilter(): this;
215
- _filterClick($event: MouseEvent): void;
216
204
  /** 清除所有 `checkbox` */
217
205
  clearCheck(): this;
218
206
  private _refCheck;
219
207
  _checkAll(checked?: boolean): this;
220
- _checkSelection(i: STData, value: boolean): this;
221
208
  _rowSelection(row: STColumnSelection): this;
222
209
  _checkNotify(): this;
223
210
  /** 清除所有 `radio` */
224
211
  clearRadio(): this;
225
- _refRadio(checked: boolean, item: STData): this;
226
- _btnClick(record: STData, btn: STColumnButton, ev?: Event): void;
227
- private btnCallback;
212
+ _handleTd(ev: _STTdNotify): void;
228
213
  /**
229
214
  * 导出当前页,确保已经注册 `XlsxModule`
230
215
  *
@@ -1,10 +1,12 @@
1
1
  import { HttpHeaders, HttpParams } from '@angular/common/http';
2
2
  import { ElementRef, TemplateRef } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
+ import type { ThemeType } from '@ant-design/icons-angular';
4
5
  import type { ACLCanType } from '@delon/acl';
5
6
  import type { DrawerHelperOptions, ModalHelperOptions, YNMode } from '@delon/theme';
6
7
  import type { CurrencyFormatOptions } from '@delon/util/format';
7
8
  import type { NgClassType, NgStyleInterface } from 'ng-zorro-antd/core/types';
9
+ import type { DisabledTimeFn } from 'ng-zorro-antd/date-picker';
8
10
  import type { NzDrawerOptions } from 'ng-zorro-antd/drawer';
9
11
  import type { ModalOptions } from 'ng-zorro-antd/modal';
10
12
  import type { PaginationItemRenderContext } from 'ng-zorro-antd/pagination';
@@ -174,21 +176,35 @@ export interface STPage {
174
176
  */
175
177
  export interface STData {
176
178
  /**
179
+ * Select or radio button `checked` status value
180
+ *
177
181
  * 选择框或单选框状态值
178
182
  */
179
183
  checked?: boolean;
180
184
  /**
185
+ * Select or radio button `disabled` status value
186
+ *
181
187
  * 选择框或单选框 `disabled` 值
182
188
  */
183
189
  disabled?: boolean;
184
190
  /**
191
+ * Whether to expand the status value
192
+ *
185
193
  * 是否展开状态
186
194
  */
187
195
  expand?: boolean;
188
196
  /**
197
+ * Whether show expand icon
198
+ *
189
199
  * 是否显示展开按钮
190
200
  */
191
201
  showExpand?: boolean;
202
+ /**
203
+ * Class name of the row
204
+ *
205
+ * 行样式
206
+ */
207
+ className?: string;
192
208
  [key: string]: any;
193
209
  }
194
210
  /**
@@ -467,8 +483,11 @@ export interface STColumnFilter<T extends STData = any> {
467
483
  * 搜索方式
468
484
  * - `defualt` 默认形式
469
485
  * - `keyword` 文本框形式
486
+ * - `number` 数字框形式
487
+ * - `date` 日期形式
488
+ * - `custom` 自定义模式
470
489
  */
471
- type?: 'default' | 'keyword';
490
+ type?: 'default' | 'keyword' | 'number' | 'date' | 'custom';
472
491
  /**
473
492
  * 表头的筛选菜单项,至少一项才会生效
474
493
  * - 当 `type='keyword'` 时可为空
@@ -512,6 +531,37 @@ export interface STColumnFilter<T extends STData = any> {
512
531
  * @return 返回为 Object 对象
513
532
  */
514
533
  reName?: (list: STColumnFilterMenu[], col: STColumn) => Record<string, unknown>;
534
+ /**
535
+ * 自定义过滤器
536
+ */
537
+ custom?: TemplateRef<{
538
+ $implicit: STColumnFilter;
539
+ col: STColumn;
540
+ }>;
541
+ /**
542
+ * Whether to display the operation area, default: `true`
543
+ *
544
+ * 是否显示操作区域,默认:`true`
545
+ */
546
+ showOPArea?: boolean;
547
+ /**
548
+ * 在文字框中显示提示讯息
549
+ */
550
+ placeholder?: string;
551
+ number?: {
552
+ precision?: number;
553
+ min?: number;
554
+ max?: number;
555
+ step?: number;
556
+ };
557
+ date?: {
558
+ range?: boolean;
559
+ mode?: 'year' | 'month' | 'week' | 'date';
560
+ showToday?: boolean;
561
+ showNow?: boolean;
562
+ disabledDate?: (d: Date) => boolean;
563
+ disabledTime?: DisabledTimeFn;
564
+ };
515
565
  }
516
566
  export interface STColumnFilterMenu {
517
567
  /**
@@ -577,7 +627,7 @@ export interface STIcon {
577
627
  /** 图标类型 */
578
628
  type: string;
579
629
  /** 图标主题风格,默认:`outline` */
580
- theme?: 'outline' | 'twotone' | 'fill';
630
+ theme?: ThemeType;
581
631
  /** 是否有旋转动画,默认:`false` */
582
632
  spin?: boolean;
583
633
  /** 仅适用双色图标,设置双色图标的主要颜色,仅对当前 icon 生效 */
@@ -885,7 +935,7 @@ export interface STColumnTagValue {
885
935
  */
886
936
  color?: 'geekblue' | 'blue' | 'purple' | 'success' | 'red' | 'volcano' | 'orange' | 'gold' | 'lime' | 'green' | 'cyan' | string;
887
937
  }
888
- export declare type STChangeType = 'loaded' | 'pi' | 'ps' | 'checkbox' | 'radio' | 'sort' | 'filter' | 'click' | 'dblClick' | 'expand' | 'resize';
938
+ export declare type STChangeType = 'loaded' | 'pi' | 'ps' | 'checkbox' | 'radio' | 'sort' | 'filter' | 'filterChange' | 'click' | 'dblClick' | 'expand' | 'resize';
889
939
  /**
890
940
  * 回调数据
891
941
  */
@@ -942,6 +992,10 @@ export interface STChange<T extends STData = any> {
942
992
  * `resize` 参数
943
993
  */
944
994
  resize?: STColumn;
995
+ /**
996
+ * `filterChange` 参数,支持 `keyword`、`radio`、`checkbox` 三种类型的数据
997
+ */
998
+ filterChange?: unknown;
945
999
  }
946
1000
  /** 行单击参数 */
947
1001
  export interface STChangeSort {
package/st/st.types.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import { SafeHtml } from '@angular/platform-browser';
3
3
  import { STColumn, STColumnButton, STColumnSafeType, STData, STSortMap } from './st.interfaces';
4
+ export declare type _STTdNotifyType = 'checkbox' | 'radio';
5
+ export interface _STTdNotify {
6
+ type: _STTdNotifyType;
7
+ item: STData;
8
+ col: _STColumn;
9
+ }
4
10
  export interface _STColumn extends STColumn {
5
11
  children?: _STColumn[];
6
12
  indexKey?: string;
@@ -63,6 +63,14 @@
63
63
  &-keyword {
64
64
  padding: @layout-gutter;
65
65
  }
66
+ &-date {
67
+ .@{ant-prefix}-picker-panel-container {
68
+ box-shadow: none;
69
+ .@{ant-prefix}-picker-panel {
70
+ border: none;
71
+ }
72
+ }
73
+ }
66
74
  }
67
75
  // Title
68
76
  .@{ant-prefix}-table-column-title {
package/st/table.d.ts CHANGED
@@ -2,4 +2,6 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public_api';
5
+ export { STFilterComponent as ɵb } from './st-filter.component';
5
6
  export { STRowSource as ɵa } from './st-row.directive';
7
+ export { STTdComponent as ɵc } from './st-td.component';