diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index fe666924..05ef0932 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -33,11 +33,11 @@ "@aws-sdk/s3-request-presigner": "^3.535.0", "@certd/vue-js-cron-light": "^4.0.14", "@ctrl/tinycolor": "^4.1.0", - "@fast-crud/editor-code": "^1.26.6", - "@fast-crud/fast-crud": "^1.26.6", - "@fast-crud/fast-extends": "^1.26.6", - "@fast-crud/ui-antdv4": "^1.26.6", - "@fast-crud/ui-interface": "^1.26.6", + "@fast-crud/editor-code": "^1.27.4", + "@fast-crud/fast-crud": "^1.27.4", + "@fast-crud/fast-extends": "^1.27.4", + "@fast-crud/ui-antdv4": "^1.27.4", + "@fast-crud/ui-interface": "^1.27.4", "@iconify/tailwind": "^1.2.0", "@iconify/vue": "^4.1.1", "@manypkg/get-packages": "^2.2.2", diff --git a/packages/ui/certd-client/src/plugin/fast-crud/index.tsx b/packages/ui/certd-client/src/plugin/fast-crud/index.tsx index 14bc403b..2672f17f 100644 --- a/packages/ui/certd-client/src/plugin/fast-crud/index.tsx +++ b/packages/ui/certd-client/src/plugin/fast-crud/index.tsx @@ -1,6 +1,6 @@ import { request } from "/src/api/service"; // import "/src/mock"; -import { ColumnCompositionProps, CrudOptions, FastCrud, PageQuery, PageRes, setLogger, TransformResProps, useColumns, UseCrudProps, UserPageQuery, useTypes, utils } from "@fast-crud/fast-crud"; +import { ColumnCompositionProps, CrudOptions, FastCrud, PageQuery, PageRes, setLogger, TransformResProps, useColumns, UseCrudProps, UserPageQuery, useTypes, utils, forEachTableColumns } from "@fast-crud/fast-crud"; import "@fast-crud/fast-crud/dist/style.css"; import { FsExtendsCopyable, FsExtendsEditor, FsExtendsJson, FsExtendsTime, FsExtendsUploader, FsExtendsInput } from "@fast-crud/fast-extends"; import "@fast-crud/fast-extends/dist/style.css"; @@ -17,22 +17,24 @@ import { FsEditorCode } from "@fast-crud/editor-code"; import "@fast-crud/editor-code/dist/style.css"; class ColumnSizeSaver { - save: (key: string, size: number) => void; - constructor() { - this.save = debounce((key: string, size: number) => { + type: string; + save: (key: string, value: any) => void; + constructor(type: string = "columnSize") { + this.type = type; + this.save = debounce((key: string, value: any) => { const saveKey = this.getKey(); let data = LocalStorage.get(saveKey); if (!data) { data = {}; } - data[key] = size; + data[key] = value; LocalStorage.set(saveKey, data); }); } getKey() { const loc = window.location; const currentUrl = `${loc.pathname}${loc.search}${loc.hash}`; - return `columnSize-${currentUrl}`; + return `${this.type}-${currentUrl}`; } get(key: string) { const saveKey = this.getKey(); @@ -45,6 +47,7 @@ class ColumnSizeSaver { } } const columnSizeSaver = new ColumnSizeSaver(); +const tableSortSaver = new ColumnSizeSaver("tableSorter"); function install(app: App, options: any = {}) { app.use(UiAntdv); @@ -63,6 +66,8 @@ function install(app: App, options: any = {}) { commonOptions(props: UseCrudProps): CrudOptions { utils.logger.debug("commonOptions:", props); const crudBinding = props.crudExpose?.crudBinding; + const crudExpose = props.crudExpose; + const { isMobile } = usePreferences(); const opts: CrudOptions = { settings: { @@ -74,6 +79,20 @@ function install(app: App, options: any = {}) { }, }, }, + onUseCrud(bindings: any) { + const oldSorter = tableSortSaver.get("sorter"); + if (oldSorter) { + const { prop, order } = oldSorter; + forEachTableColumns(bindings.table.columns, (column: any) => { + if (column.key === prop) { + column.sortOrder = order; + } else { + column.sortOrder = false; + } + }); + bindings.table.sort = oldSorter; + } + }, }, table: { scroll: { @@ -104,6 +123,30 @@ function install(app: App, options: any = {}) { return "-"; }, }, + onSortChange: (sortChange: any) => { + const { isServerSort, prop, asc, order } = sortChange; + const oldSort = crudBinding.value.table.sort; + const newSorter = isServerSort ? { prop, order, asc } : null; + + forEachTableColumns(crudBinding.value.table.columns, (column: any) => { + if (column.key === prop) { + column.sortOrder = order; + } else { + column.sortOrder = false; + } + }); + + crudBinding.value.table.sort = newSorter; + if (newSorter) { + tableSortSaver.save("sorter", newSorter); + } else { + tableSortSaver.clear(); + } + + if (isServerSort || oldSort != null) { + crudExpose.doRefresh(); + } + }, }, toolbar: { export: { @@ -189,6 +232,10 @@ function install(app: App, options: any = {}) { }, wrapperCol: { span: null, + buttons: { + copy: { show: false }, + paste: { show: false }, + }, }, wrapper: { saveRemind: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c52f088..116a0a80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: packages/core/acme-client: dependencies: '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../basic '@peculiar/x509': specifier: ^1.11.0 @@ -207,11 +207,11 @@ importers: packages/core/pipeline: dependencies: '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../basic '@certd/plus-core': - specifier: ^1.37.2 - version: 1.37.2 + specifier: ^1.37.4 + version: 1.37.4 dayjs: specifier: ^1.11.7 version: 1.11.13 @@ -415,7 +415,7 @@ importers: packages/libs/lib-k8s: dependencies: '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/basic '@kubernetes/client-node': specifier: 0.21.0 @@ -455,20 +455,20 @@ importers: packages/libs/lib-server: dependencies: '@certd/acme-client': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.37.2 - version: 1.37.2 + specifier: ^1.37.4 + version: 1.37.4 '@midwayjs/cache': specifier: 3.14.0 version: 3.14.0 @@ -613,16 +613,16 @@ importers: packages/plugins/plugin-cert: dependencies: '@certd/acme-client': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../plugin-lib '@google-cloud/publicca': specifier: ^1.3.0 @@ -701,10 +701,10 @@ importers: specifier: ^3.787.0 version: 3.810.0(aws-crt@1.26.2) '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/pipeline '@kubernetes/client-node': specifier: 0.21.0 @@ -789,19 +789,19 @@ importers: packages/pro/commercial-core: dependencies: '@certd/basic': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../core/basic '@certd/lib-server': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../libs/lib-server '@certd/pipeline': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../core/pipeline '@certd/plugin-plus': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../plugin-plus '@certd/plus-core': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../plus-core '@midwayjs/core': specifier: 3.20.11 @@ -886,22 +886,22 @@ importers: specifier: ^1.0.2 version: 1.0.3 '@certd/basic': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../core/basic '@certd/lib-k8s': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../libs/lib-k8s '@certd/pipeline': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../plus-core ali-oss: specifier: ^6.21.0 @@ -1004,7 +1004,7 @@ importers: packages/pro/plus-core: dependencies: '@certd/basic': - specifier: ^1.37.1 + specifier: ^1.37.2 version: link:../../core/basic dayjs: specifier: ^1.11.7 @@ -1086,20 +1086,20 @@ importers: specifier: ^4.1.0 version: 4.1.0 '@fast-crud/editor-code': - specifier: ^1.26.6 - version: 1.26.6 + specifier: ^1.27.4 + version: 1.27.4 '@fast-crud/fast-crud': - specifier: ^1.26.6 - version: 1.26.6(vue@3.5.14(typescript@5.8.3)) + specifier: ^1.27.4 + version: 1.27.4(vue@3.5.14(typescript@5.8.3)) '@fast-crud/fast-extends': - specifier: ^1.26.6 - version: 1.26.6(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3)) + specifier: ^1.27.4 + version: 1.27.4(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3)) '@fast-crud/ui-antdv4': - specifier: ^1.26.6 - version: 1.26.6 + specifier: ^1.27.4 + version: 1.27.4 '@fast-crud/ui-interface': - specifier: ^1.26.6 - version: 1.26.6 + specifier: ^1.27.4 + version: 1.27.4 '@iconify/tailwind': specifier: ^1.2.0 version: 1.2.0 @@ -1300,10 +1300,10 @@ importers: version: 0.1.3(zod@3.24.4) devDependencies: '@certd/lib-iframe': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/lib-iframe '@certd/pipeline': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/pipeline '@rollup/plugin-commonjs': specifier: ^25.0.7 @@ -1486,47 +1486,47 @@ importers: specifier: ^3.705.0 version: 3.810.0(aws-crt@1.26.2) '@certd/acme-client': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/basic '@certd/commercial-core': - specifier: ^1.37.2 - version: 1.37.2(better-sqlite3@11.10.0)(encoding@0.1.13)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.8.3)) + specifier: ^1.37.4 + version: 1.37.4(better-sqlite3@11.10.0)(encoding@0.1.13)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.8.3)) '@certd/cv4pve-api-javascript': specifier: ^8.4.2 version: 8.4.2 '@certd/jdcloud': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/lib-jdcloud '@certd/lib-huawei': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/lib-huawei '@certd/lib-k8s': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/lib-k8s '@certd/lib-server': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/lib-server '@certd/midway-flyway-js': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../libs/midway-flyway-js '@certd/pipeline': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.37.2 + specifier: ^1.37.4 version: link:../../plugins/plugin-lib '@certd/plugin-plus': - specifier: ^1.37.2 - version: 1.37.2(encoding@0.1.13) + specifier: ^1.37.4 + version: 1.37.4(encoding@0.1.13) '@certd/plus-core': - specifier: ^1.37.2 - version: 1.37.2 + specifier: ^1.37.4 + version: 1.37.4 '@huaweicloud/huaweicloud-sdk-cdn': specifier: ^3.1.120 version: 3.1.149 @@ -2769,17 +2769,17 @@ packages: '@better-scroll/zoom@2.5.1': resolution: {integrity: sha512-aGvFY5ooeZWS4RcxQLD+pGLpQHQxpPy0sMZV3yadcd2QK53PK9gS4Dp+BYfRv8lZ4/P2LoNEhr6Wq1DN6+uPlA==} - '@certd/commercial-core@1.37.2': - resolution: {integrity: sha512-fhDA3sr+iNPEj7xf9D2bJHIl6SzOhahJJ65wJID1HHHSKl8/o+QYpaa0vLfoxE7gmem7H+BoIDe2zB54/JVdFw==} + '@certd/commercial-core@1.37.4': + resolution: {integrity: sha512-Axx1yBekqPy6D9LjjrijVbmO8Ck6E9Fv0+Jcy8cuua269sSpME8k3nj0U8Y4ec0JwfE6GbQYF9gaUE0kSSNexg==} '@certd/cv4pve-api-javascript@8.4.2': resolution: {integrity: sha512-udGce7ewrVl4DmZvX+17PjsnqsdDIHEDatr8QP0AVrY2p+8JkaSPW4mXCKiLGf82C9K2+GXgT+qNIqgW7tfF9Q==} - '@certd/plugin-plus@1.37.2': - resolution: {integrity: sha512-mlhlNe3ft9DAt3sL01f5MbVnSqWprXdwW6G6Pvn1XZW+ZdvFK+/jDXcn4DwKKeBbQvbijB7VsdWMEooK8GWgoQ==} + '@certd/plugin-plus@1.37.4': + resolution: {integrity: sha512-h3oSqMBSBYAz8dPcZ4fexrUk32Y2pJcixZMycOZi5onaM9Q5skkWqW3X625B7kdyYaIsojWQzETerXmwJzTBxQ==} - '@certd/plus-core@1.37.2': - resolution: {integrity: sha512-UIugZvzmTt6OSJnKdPv6q4/06SRxPxFfPXyekLNLwGIB/LkG3qjqZyu98xOT/ytI0k/DT9WerM5X7EAyxD9oEw==} + '@certd/plus-core@1.37.4': + resolution: {integrity: sha512-7RFOBjZW98hgsTqoq2T8E6ANhWkuNP7Yi3Y1rZ7m5aXAOgn2H1Aci/Jz9bmD6MZgawfU7j2MLoBXFLEPLpwruQ==} '@certd/vue-js-cron-core@6.0.3': resolution: {integrity: sha512-kqzoAMhYz9j6FGNWEODRYtt4NpUEUwjpkU89z5WVg2tCtOcI5VhwyUGOd8AxiBCRfd6PtXvzuqw85PaOps9wrQ==} @@ -3420,20 +3420,20 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fast-crud/editor-code@1.26.6': - resolution: {integrity: sha512-Dq51jO3ACkJJB3eIfyyQ/cU14Sn5jBG5qui2ZTaibs16mpE1cSMLJNl1kk5VXucHeMAlaa5QEJWuuYO/dEKZcA==} + '@fast-crud/editor-code@1.27.4': + resolution: {integrity: sha512-syuSxpNc/So5xoGGZkiC4Iqa8MdrQpeHJRqs6/A8pRUDh9UEN1iBFm8PPxmSluHc7sFXZdt0IIRfJE6sDBhRiA==} - '@fast-crud/fast-crud@1.26.6': - resolution: {integrity: sha512-m44F0qPUaswEBAn+bUqpjNm/+zn/icsTEpr4rGnDd692eZKzx7uPP1szVFwCc0nZeVteI5hNNAioIKB/6Xns1w==} + '@fast-crud/fast-crud@1.27.4': + resolution: {integrity: sha512-wwTqwETgcgBa8v2P/C2MGFfAxZGvAPDFiyrg3b9k+6eMePR//RbY9+M1knsTVaHTTkabAmgwZ+OnnCJzpmnK/A==} - '@fast-crud/fast-extends@1.26.6': - resolution: {integrity: sha512-OHWxN7ZWmE0I0rGyqLjgx9RfZxHakWO68cAX5b6ADwFfFlGR2zfQuj6VjfYayPe6VSt5p3ZoUSsxQgmLbHYnKA==} + '@fast-crud/fast-extends@1.27.4': + resolution: {integrity: sha512-GVWmwondzouPsDD2mCLmxbR7RV5Cf1pJQS0nracQZfrwKsJdNcKlIZ3F3SULklAELMtW01hFbwt7VC+ZehjvAQ==} - '@fast-crud/ui-antdv4@1.26.6': - resolution: {integrity: sha512-VeTt75ejjhIzii5wcQFWY5ugEizLGZhU2cowLNTGskCBmMEAP3GGUwn4TP33dtmQWvTu7FMjwaKtyWnFaiYmuA==} + '@fast-crud/ui-antdv4@1.27.4': + resolution: {integrity: sha512-WcDYmlc06/BIpOnpfN7cZuWqW2kxZC5EfazVw1IaY+kxx3eLRdWX1dShh23oZEsKdwKwGcgY7xeiptFgEpel+Q==} - '@fast-crud/ui-interface@1.26.6': - resolution: {integrity: sha512-C6lWTWs8Vl76qQjORGbPmOy53clo3rO5KnVX2FhTcu5TTecR9JOc85IcQPSWRnWEn+dCdted2wXR83TgQK41eA==} + '@fast-crud/ui-interface@1.27.4': + resolution: {integrity: sha512-hZJiABhXOZma6kaxes9waKMdVEjaEMUtEGZ7TIXXJuExynNOMK1AVtfgACSP5uwTj8mKxUEa7iBKx2vr9EcfFA==} '@fidm/asn1@1.0.4': resolution: {integrity: sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==} @@ -15385,13 +15385,13 @@ snapshots: dependencies: '@better-scroll/core': 2.5.1 - '@certd/commercial-core@1.37.2(better-sqlite3@11.10.0)(encoding@0.1.13)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.8.3))': + '@certd/commercial-core@1.37.4(better-sqlite3@11.10.0)(encoding@0.1.13)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.8.3))': dependencies: '@certd/basic': link:packages/core/basic '@certd/lib-server': link:packages/libs/lib-server '@certd/pipeline': link:packages/core/pipeline - '@certd/plugin-plus': 1.37.2(encoding@0.1.13) - '@certd/plus-core': 1.37.2 + '@certd/plugin-plus': 1.37.4(encoding@0.1.13) + '@certd/plus-core': 1.37.4 '@midwayjs/core': 3.20.11 '@midwayjs/koa': 3.20.13 '@midwayjs/logger': 3.4.2 @@ -15430,7 +15430,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@certd/plugin-plus@1.37.2(encoding@0.1.13)': + '@certd/plugin-plus@1.37.4(encoding@0.1.13)': dependencies: '@alicloud/pop-core': 1.8.0 '@baiducloud/sdk': 1.0.3 @@ -15438,7 +15438,8 @@ snapshots: '@certd/lib-k8s': link:packages/libs/lib-k8s '@certd/pipeline': link:packages/core/pipeline '@certd/plugin-cert': link:packages/plugins/plugin-cert - '@certd/plus-core': 1.37.2 + '@certd/plugin-lib': link:packages/plugins/plugin-lib + '@certd/plus-core': 1.37.4 ali-oss: 6.23.0 baidu-aip-sdk: 4.16.16 basic-ftp: 5.0.5 @@ -15457,7 +15458,7 @@ snapshots: - proxy-agent - supports-color - '@certd/plus-core@1.37.2': + '@certd/plus-core@1.37.4': dependencies: '@certd/basic': link:packages/core/basic dayjs: 1.11.13 @@ -15973,14 +15974,14 @@ snapshots: '@eslint/js@8.57.0': {} - '@fast-crud/editor-code@1.26.6': + '@fast-crud/editor-code@1.27.4': dependencies: js-yaml: 4.1.0 lodash-es: 4.17.21 monaco-editor: 0.52.2 monaco-yaml: 5.4.0(monaco-editor@0.52.2) - '@fast-crud/fast-crud@1.26.6(vue@3.5.14(typescript@5.8.3))': + '@fast-crud/fast-crud@1.27.4(vue@3.5.14(typescript@5.8.3))': dependencies: '@iconify/types': 2.0.0 file-saver: 2.0.5 @@ -15990,7 +15991,7 @@ snapshots: transitivePeerDependencies: - vue - '@fast-crud/fast-extends@1.26.6(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))': + '@fast-crud/fast-extends@1.27.4(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))': dependencies: '@aws-sdk/client-s3': 3.810.0(aws-crt@1.26.2) '@aws-sdk/s3-request-presigner': 3.810.0 @@ -16020,9 +16021,9 @@ snapshots: - utf-8-validate - vue - '@fast-crud/ui-antdv4@1.26.6': {} + '@fast-crud/ui-antdv4@1.27.4': {} - '@fast-crud/ui-interface@1.26.6': + '@fast-crud/ui-interface@1.27.4': dependencies: lodash-es: 4.17.21