zova-module-a-table 5.1.9 → 5.1.10
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/cli/tableCell/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +9 -2
- package/cli/tableCell/metadata/generate.ts +4 -1
- package/dist/.metadata/component/table.d.ts.map +1 -1
- package/dist/component/table/controller.d.ts +13 -11
- package/dist/component/table/controller.d.ts.map +1 -1
- package/dist/component/table/render.d.ts.map +1 -1
- package/dist/index.js +89 -66
- package/dist/index.js.map +1 -1
- package/dist/lib/beanControllerPageTableBase.d.ts +1 -0
- package/dist/lib/beanControllerPageTableBase.d.ts.map +1 -1
- package/dist/lib/beanControllerTableBase.d.ts +1 -0
- package/dist/lib/beanControllerTableBase.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/table.d.ts +9 -5
- package/dist/types/table.d.ts.map +1 -1
- package/dist/types/tableCell.d.ts +2 -1
- package/dist/types/tableCell.d.ts.map +1 -1
- package/dist/types/tableColumn.d.ts +5 -4
- package/dist/types/tableColumn.d.ts.map +1 -1
- package/package.json +2 -2
- package/rest/component/table.ts +2 -1
- package/src/.metadata/component/table.ts +11 -5
- package/src/component/table/controller.tsx +171 -107
- package/src/component/table/render.tsx +8 -2
- package/src/lib/beanControllerPageTableBase.ts +4 -0
- package/src/lib/beanControllerTableBase.ts +4 -0
- package/src/types/index.ts +0 -1
- package/src/types/table.ts +18 -5
- package/src/types/tableCell.ts +2 -1
- package/src/types/tableColumn.ts +6 -5
- package/dist/types/providers.d.ts +0 -24
- package/dist/types/providers.d.ts.map +0 -1
- package/src/types/providers.ts +0 -26
package/dist/types/table.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import type { ColumnDef,
|
|
1
|
+
import type { ColumnDef, useVueTable } from '@tanstack/vue-table';
|
|
2
2
|
import type { SchemaObject } from 'openapi3-ts/oas31';
|
|
3
|
+
import type { TypeTableCellRenderComponent } from 'zova-module-a-openapi';
|
|
4
|
+
import type { ControllerTable } from '../component/table/controller.jsx';
|
|
3
5
|
import type { TypeTableCellRender } from './tableColumn.js';
|
|
4
|
-
export type TypeTable<TData extends
|
|
5
|
-
export type TypeColumn<TData extends
|
|
6
|
-
export interface ITableMeta<TData extends
|
|
6
|
+
export type TypeTable<TData extends {} = {}> = ReturnType<typeof useVueTable<TData>>;
|
|
7
|
+
export type TypeColumn<TData extends {} = {}> = ColumnDef<TData, any>;
|
|
8
|
+
export interface ITableMeta<TData extends {} = {}> {
|
|
7
9
|
properties: SchemaObject[];
|
|
8
10
|
renders: Record<string, TypeTableCellRender<TData>>;
|
|
9
11
|
}
|
|
10
|
-
export type TypeTableGetColumnsNext<TData extends
|
|
12
|
+
export type TypeTableGetColumnsNext<TData extends {} = {}> = (properties?: SchemaObject[]) => Promise<TypeColumn<TData>[]>;
|
|
13
|
+
export type TypeTableCreateColumnRender<TData extends {} = {}> = (key: string, render: TypeTableCellRenderComponent) => Promise<TypeTableCellRender<TData, any> | undefined>;
|
|
14
|
+
export type TypeTableGetColumns<TData extends {} = {}> = (next: TypeTableGetColumnsNext<TData>, createColumnRender: TypeTableCreateColumnRender<TData>, table: ControllerTable<TData>) => Promise<TypeColumn<TData>[]>;
|
|
11
15
|
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/types/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/types/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAErF,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEtE,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE;IAC/C,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE3H,MAAM,MAAM,2BAA2B,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,IAAI,CAC/D,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,4BAA4B,KACjC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AAE1D,MAAM,MAAM,mBAAmB,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,IAAI,CACvD,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,EACpC,kBAAkB,EAAE,2BAA2B,CAAC,KAAK,CAAC,EACtD,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAC1B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { OmitNever } from 'zova';
|
|
|
3
3
|
import type { ServiceOnion } from 'zova-module-a-bean';
|
|
4
4
|
import type { IJsxRenderContextBase } from 'zova-module-a-openapi';
|
|
5
5
|
import type { ControllerTable } from '../component/table/controller.jsx';
|
|
6
|
-
import type { ITableCellScope } from './tableColumn.js';
|
|
6
|
+
import type { IJsxRenderContextTableColumn, ITableCellScope } from './tableColumn.js';
|
|
7
7
|
export interface IJsxRenderContextTableCell<TData extends {} = any> extends IJsxRenderContextBase {
|
|
8
8
|
$celScope: ITableCellScope;
|
|
9
9
|
$$table: ControllerTable<TData>;
|
|
@@ -14,6 +14,7 @@ export interface ITableCellRecord {
|
|
|
14
14
|
}
|
|
15
15
|
export interface ITableCellRender {
|
|
16
16
|
render(options: IDecoratorTableCellOptions, renderContext: IJsxRenderContextTableCell, next: NextTableCellRender): any;
|
|
17
|
+
checkVisible?(options: IDecoratorTableCellOptions, renderContext: IJsxRenderContextTableColumn): Promise<boolean>;
|
|
17
18
|
}
|
|
18
19
|
export interface IDecoratorTableCellOptions {
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableCell.d.ts","sourceRoot":"","sources":["../../src/types/tableCell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tableCell.d.ts","sourceRoot":"","sources":["../../src/types/tableCell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEtF,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,CAAE,SAAQ,qBAAqB;IAC/F,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,CAAC;AAE5C,MAAM,WAAW,gBAAgB;CAAG;AAEpC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,0BAA0B,EAAE,IAAI,EAAE,mBAAmB,GAAG,GAAG,CAAC;IACvH,YAAY,CAAC,CAAC,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnH;AAED,MAAM,WAAW,0BAA0B;CAAG;AAE9C,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,QAAQ;QACvB,SAAS,EAAE,YAAY,CAAC,0BAA0B,EAAE,MAAM,gBAAgB,CAAC,CAAC;KAC7E;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;KACxC;IAED,UAAiB,gBAAgB;QAC/B,SAAS,EAAE,KAAK,CAAC;KAClB;CACF"}
|
|
@@ -2,7 +2,6 @@ import type { CellContext, RowData } from '@tanstack/table-core';
|
|
|
2
2
|
import type { SchemaObject } from 'openapi3-ts/oas31';
|
|
3
3
|
import type { IJsxRenderContextBase, TypeTableCellRenderComponent } from 'zova-module-a-openapi';
|
|
4
4
|
import type { ControllerTable } from '../component/table/controller.jsx';
|
|
5
|
-
export declare const constColumnProps = "$$ColumnProps";
|
|
6
5
|
export type TypeTableCellRender<TData extends RowData = RowData, TValue = any> = (props?: CellContext<TData, TValue>) => any;
|
|
7
6
|
export interface IJsxRenderContextTableColumn<TData extends {} = any> extends IJsxRenderContextBase {
|
|
8
7
|
$celScope: ITableColumnScope;
|
|
@@ -10,9 +9,11 @@ export interface IJsxRenderContextTableColumn<TData extends {} = any> extends IJ
|
|
|
10
9
|
}
|
|
11
10
|
export interface ITableCellRenderColumnProps {
|
|
12
11
|
key: string;
|
|
13
|
-
|
|
12
|
+
}
|
|
13
|
+
export interface ITableCellRenderColumnOptions {
|
|
14
14
|
visible?: boolean;
|
|
15
|
-
render
|
|
15
|
+
render?: TypeTableCellRenderComponent;
|
|
16
|
+
columnProps: ITableCellRenderColumnProps;
|
|
16
17
|
}
|
|
17
18
|
export interface ITableScope {
|
|
18
19
|
}
|
|
@@ -22,6 +23,6 @@ export interface ITableColumnScope extends ITableScope {
|
|
|
22
23
|
}
|
|
23
24
|
export interface ITableCellScope extends ITableColumnScope {
|
|
24
25
|
value: any;
|
|
25
|
-
|
|
26
|
+
fallbackValue: any;
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=tableColumn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableColumn.d.ts","sourceRoot":"","sources":["../../src/types/tableColumn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"tableColumn.d.ts","sourceRoot":"","sources":["../../src/types/tableColumn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,MAAM,MAAM,mBAAmB,CAAC,KAAK,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;AAE7H,MAAM,WAAW,4BAA4B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,CAAE,SAAQ,qBAAqB;IACjG,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,4BAA4B,CAAC;IACtC,WAAW,EAAE,2BAA2B,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,KAAK,EAAE,GAAG,CAAC;IACX,aAAa,EAAE,GAAG,CAAC;CACpB"}
|
package/package.json
CHANGED
package/rest/component/table.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { TypeRenderComponentJsxPropsPublic } from 'zova-jsx';
|
|
2
2
|
import type { ControllerTableProps } from 'zova-module-a-table';
|
|
3
3
|
|
|
4
|
-
type TypeControllerTablePublicProps<TData extends {} = {}> = TypeRenderComponentJsxPropsPublic &
|
|
4
|
+
type TypeControllerTablePublicProps<TData extends {} = {}> = TypeRenderComponentJsxPropsPublic &
|
|
5
|
+
ControllerTableProps<TData>;
|
|
5
6
|
export function BBZTable<TData extends {} = {}>(_props: TypeControllerTablePublicProps<TData>) {
|
|
6
7
|
return 'a-table:table';
|
|
7
8
|
}
|
|
@@ -11,7 +11,10 @@ export type TypeControllerTablePublicProps<TData extends {} = {}> = {
|
|
|
11
11
|
controllerRef?: (ref: ControllerTable<TData>) => void;
|
|
12
12
|
} & ControllerTableProps<TData>;
|
|
13
13
|
|
|
14
|
-
type ControllerInnerProps<TData extends {} = {}> = TypeControllerInnerProps<
|
|
14
|
+
type ControllerInnerProps<TData extends {} = {}> = TypeControllerInnerProps<
|
|
15
|
+
ControllerTableProps<TData>,
|
|
16
|
+
keyof typeof ControllerTable.$propsDefault
|
|
17
|
+
>;
|
|
15
18
|
declare module 'zova-module-a-table' {
|
|
16
19
|
export interface ControllerTable<TData extends {} = {}> {
|
|
17
20
|
$props: ControllerInnerProps<TData>;
|
|
@@ -20,7 +23,10 @@ declare module 'zova-module-a-table' {
|
|
|
20
23
|
declare module 'zova-module-a-table' {
|
|
21
24
|
export interface RenderTable<TData extends {} = {}> extends ControllerTable<TData> {}
|
|
22
25
|
}
|
|
23
|
-
export const ZTable = defineComponent(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
export const ZTable = defineComponent(
|
|
27
|
+
<TData extends {} = {}>(_props: TypeControllerTablePublicProps<TData>) => {
|
|
28
|
+
useController(ControllerTable, RenderTable, undefined);
|
|
29
|
+
return () => {};
|
|
30
|
+
},
|
|
31
|
+
prepareComponentOptions(),
|
|
32
|
+
);
|
|
@@ -1,29 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
|
+
IResourceActionRowOptionsBase,
|
|
3
|
+
ISchemaObjectExtensionFieldRest,
|
|
4
|
+
ITableProvider,
|
|
5
|
+
TypeTableCellRenderComponent,
|
|
6
|
+
TypeTableCellRenderComponentProvider,
|
|
7
|
+
} from 'zova-module-a-openapi';
|
|
8
|
+
|
|
9
|
+
import { celEnvBase, isNilOrEmptyString } from '@cabloy/utils';
|
|
2
10
|
import { CellContext, createColumnHelper, getCoreRowModel, TableOptionsWithReactiveData } from '@tanstack/vue-table';
|
|
3
11
|
import { SchemaObject } from 'openapi3-ts/oas31';
|
|
4
12
|
import { VNode } from 'vue';
|
|
5
|
-
import { appResource, cast, deepEqual, deepExtend, objectAssignReactive,
|
|
13
|
+
import { appResource, cast, deepEqual, deepExtend, objectAssignReactive, Use } from 'zova';
|
|
6
14
|
import { isJsxComponent, ZovaJsx } from 'zova-jsx';
|
|
7
15
|
import { Controller } from 'zova-module-a-bean';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
TypeTableCellRenderComponentProvider,
|
|
13
|
-
} from 'zova-module-a-openapi';
|
|
16
|
+
import { BeanResourceProviders } from 'zova-module-a-openapi';
|
|
17
|
+
|
|
18
|
+
import type { ITableMeta, TypeColumn, TypeTable, TypeTableGetColumns } from '../../types/table.js';
|
|
19
|
+
import type { IDecoratorTableCellOptions, IJsxRenderContextTableCell, ITableCellRender } from '../../types/tableCell.js';
|
|
14
20
|
|
|
15
21
|
import { BeanControllerTableBase } from '../../lib/beanControllerTableBase.js';
|
|
16
|
-
import { ITableProvider } from '../../types/providers.js';
|
|
17
|
-
import { ITableMeta, TypeColumn, TypeTable, TypeTableGetColumnsNext } from '../../types/table.js';
|
|
18
|
-
import { IDecoratorTableCellOptions, IJsxRenderContextTableCell, ITableCellRender } from '../../types/tableCell.js';
|
|
19
22
|
import {
|
|
20
|
-
|
|
21
|
-
IJsxRenderContextTableColumn,
|
|
22
|
-
ITableCellRenderColumnProps,
|
|
23
|
-
ITableCellScope,
|
|
24
|
-
ITableColumnScope,
|
|
25
|
-
ITableScope,
|
|
26
|
-
TypeTableCellRender,
|
|
23
|
+
ITableCellRenderColumnOptions,
|
|
24
|
+
type IJsxRenderContextTableColumn,
|
|
25
|
+
type ITableCellRenderColumnProps,
|
|
26
|
+
type ITableCellScope,
|
|
27
|
+
type ITableColumnScope,
|
|
28
|
+
type ITableScope,
|
|
29
|
+
type TypeTableCellRender,
|
|
27
30
|
} from '../../types/tableColumn.js';
|
|
28
31
|
|
|
29
32
|
export interface ControllerTableProps<TData extends {} = {}> {
|
|
@@ -31,7 +34,7 @@ export interface ControllerTableProps<TData extends {} = {}> {
|
|
|
31
34
|
schema?: SchemaObject;
|
|
32
35
|
tableProvider?: ITableProvider;
|
|
33
36
|
tableScope?: ITableScope;
|
|
34
|
-
getColumns?:
|
|
37
|
+
getColumns?: TypeTableGetColumns<TData>;
|
|
35
38
|
slotDefault?: (table: ControllerTable<TData>) => VNode;
|
|
36
39
|
}
|
|
37
40
|
|
|
@@ -47,35 +50,28 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
47
50
|
zovaJsx: ZovaJsx;
|
|
48
51
|
columnCelEnv: typeof celEnvBase;
|
|
49
52
|
|
|
50
|
-
@
|
|
51
|
-
$$
|
|
53
|
+
@Use()
|
|
54
|
+
$$beanResourceProviders: BeanResourceProviders;
|
|
52
55
|
|
|
53
56
|
protected async __init__() {
|
|
54
57
|
this.bean._setBean('$$table', this);
|
|
55
58
|
this.tableProvider = this.$useComputed(() => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.$$scopeModuleAOpenapi.config.resourceMeta.provider,
|
|
59
|
-
this.$$scopeModuleAOpenapi.config.resourceMeta.table?.provider,
|
|
60
|
-
this.$props.tableProvider,
|
|
61
|
-
);
|
|
59
|
+
const tableProvider = this.$$beanResourceProviders.tableProvider;
|
|
60
|
+
return this.$props.tableProvider ? deepExtend({}, tableProvider, this.$props.tableProvider) : tableProvider;
|
|
62
61
|
});
|
|
63
62
|
// jsx
|
|
64
63
|
this.columnCelEnv = this._getColumnCelEnv();
|
|
65
64
|
this.zovaJsx = this.app.bean._newBeanSimple(ZovaJsx, false, this.tableProvider.components, this.tableProvider.actions, this.columnCelEnv);
|
|
66
65
|
// properties
|
|
67
66
|
this._createProperties();
|
|
68
|
-
// tableMeta
|
|
69
|
-
|
|
70
|
-
// columns
|
|
71
|
-
this.columns = await this._createColumns();
|
|
67
|
+
// tableMeta/columns
|
|
68
|
+
await this.refreshMeta();
|
|
72
69
|
// watch
|
|
73
70
|
this.$watch(
|
|
74
71
|
() => this.$props.schema,
|
|
75
72
|
async (newValue, oldValue) => {
|
|
76
73
|
if (deepEqual(newValue, oldValue)) return;
|
|
77
|
-
|
|
78
|
-
this.columns = await this._createColumns();
|
|
74
|
+
await this.refreshMeta();
|
|
79
75
|
},
|
|
80
76
|
);
|
|
81
77
|
// table
|
|
@@ -90,7 +86,13 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
90
86
|
return this.$props.data;
|
|
91
87
|
}
|
|
92
88
|
|
|
89
|
+
public async refreshMeta() {
|
|
90
|
+
this.tableMeta = await this._createTableMeta();
|
|
91
|
+
this.columns = await this._createColumns();
|
|
92
|
+
}
|
|
93
|
+
|
|
93
94
|
private _createTable() {
|
|
95
|
+
// eslint-disable-next-line
|
|
94
96
|
const self = this;
|
|
95
97
|
const tableOptions: TableOptionsWithReactiveData<TData> = {
|
|
96
98
|
getRowId: (row: TData) => cast(row).id,
|
|
@@ -110,12 +112,26 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
110
112
|
private async _createColumns() {
|
|
111
113
|
if (!this.properties) return [];
|
|
112
114
|
if (!this.$props.getColumns) return await this._createColumnsMiddle(this.tableMeta.properties);
|
|
113
|
-
return await this.$props.getColumns(
|
|
114
|
-
|
|
115
|
-
|
|
115
|
+
return await this.$props.getColumns(
|
|
116
|
+
async properties => {
|
|
117
|
+
return await this._createColumnsMiddle(properties ?? this.tableMeta.properties);
|
|
118
|
+
},
|
|
119
|
+
async (key: string, render: TypeTableCellRenderComponent): Promise<TypeTableCellRender<TData, any> | undefined> => {
|
|
120
|
+
// columnScope
|
|
121
|
+
const columnScope = this.getColumnScope(key);
|
|
122
|
+
// renderContext
|
|
123
|
+
const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);
|
|
124
|
+
// columnProps
|
|
125
|
+
const { visible, columnProps } = this.getColumnComponentPropsTop(key, columnScope, jsxRenderContext);
|
|
126
|
+
// visible
|
|
127
|
+
if (visible === false) return;
|
|
128
|
+
return await this._createColumnRender(render, columnProps, columnScope, jsxRenderContext);
|
|
129
|
+
},
|
|
130
|
+
this,
|
|
131
|
+
);
|
|
116
132
|
}
|
|
117
133
|
|
|
118
|
-
private async _createColumnsMiddle(properties: SchemaObject[]) {
|
|
134
|
+
private async _createColumnsMiddle(properties: SchemaObject[]): Promise<TypeColumn<TData>[]> {
|
|
119
135
|
const tableMeta = this.tableMeta;
|
|
120
136
|
const columnHelper = createColumnHelper<TData>();
|
|
121
137
|
const columns: TypeColumn<TData>[] = [];
|
|
@@ -141,7 +157,7 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
141
157
|
}
|
|
142
158
|
|
|
143
159
|
private async _createTableMeta() {
|
|
144
|
-
|
|
160
|
+
let properties: SchemaObject[] = [];
|
|
145
161
|
const renders: Record<string, TypeTableCellRender<TData>> = {};
|
|
146
162
|
if (!this.properties) return { properties, renders };
|
|
147
163
|
const promises: Promise<any>[] = [];
|
|
@@ -152,16 +168,20 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
152
168
|
// renderContext
|
|
153
169
|
const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);
|
|
154
170
|
// columnProps
|
|
155
|
-
const columnProps = this.getColumnComponentPropsTop(key, columnScope, jsxRenderContext);
|
|
171
|
+
const { visible, render, columnProps } = this.getColumnComponentPropsTop(key, columnScope, jsxRenderContext);
|
|
156
172
|
// visible
|
|
157
|
-
if (
|
|
173
|
+
if (visible === false) continue;
|
|
158
174
|
// property
|
|
159
175
|
properties.push(property);
|
|
160
176
|
// render
|
|
161
|
-
promises.push(this._createColumnRender(
|
|
177
|
+
promises.push(this._createColumnRender(render, columnProps, columnScope, jsxRenderContext));
|
|
162
178
|
}
|
|
163
|
-
|
|
164
|
-
properties.
|
|
179
|
+
let res = await Promise.all(promises);
|
|
180
|
+
properties = properties.filter((_item, index) => !!res[index]);
|
|
181
|
+
res = res.filter(item => !!item);
|
|
182
|
+
properties.forEach((item, index) => {
|
|
183
|
+
renders[item.key!] = res[index];
|
|
184
|
+
});
|
|
165
185
|
return { properties, renders };
|
|
166
186
|
}
|
|
167
187
|
|
|
@@ -190,43 +210,82 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
190
210
|
};
|
|
191
211
|
}
|
|
192
212
|
|
|
193
|
-
public async
|
|
194
|
-
|
|
195
|
-
const
|
|
196
|
-
|
|
213
|
+
public async cellRenderPrepare(renders: TypeTableCellRenderComponent | TypeTableCellRenderComponent[]) {
|
|
214
|
+
if (!Array.isArray(renders)) renders = [renders];
|
|
215
|
+
const renderProviders = renders.map(item => this.getRenderProvider(item));
|
|
216
|
+
const promises: Promise<any>[] = renderProviders.map(renderProvider =>
|
|
217
|
+
(async () => {
|
|
218
|
+
if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
|
|
219
|
+
return await this.sys.bean._getBean(renderProvider as any, true);
|
|
220
|
+
}
|
|
221
|
+
})(),
|
|
222
|
+
);
|
|
223
|
+
return await Promise.all(promises);
|
|
197
224
|
}
|
|
198
225
|
|
|
199
226
|
private async _createColumnRender(
|
|
200
|
-
render: TypeTableCellRenderComponent,
|
|
201
|
-
property: SchemaObject | undefined,
|
|
227
|
+
render: TypeTableCellRenderComponent | undefined,
|
|
202
228
|
columnProps: ITableCellRenderColumnProps | undefined,
|
|
203
229
|
columnScope: ITableColumnScope,
|
|
204
|
-
|
|
230
|
+
renderContext: IJsxRenderContextTableColumn,
|
|
231
|
+
): Promise<TypeTableCellRender<TData, any> | undefined> {
|
|
205
232
|
// renderProvider
|
|
206
233
|
const renderProvider = this.getRenderProvider(render);
|
|
207
234
|
// beanInstance
|
|
208
235
|
let beanInstance: ITableCellRender | undefined;
|
|
209
|
-
let onionOptions: IDecoratorTableCellOptions | undefined;
|
|
210
236
|
if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
|
|
211
237
|
beanInstance = await this.sys.bean._getBean(renderProvider as any, true);
|
|
212
238
|
const beanOptions = appResource.getBean(renderProvider as any);
|
|
213
|
-
onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;
|
|
239
|
+
const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;
|
|
240
|
+
columnProps = deepExtend({}, onionOptions, columnProps);
|
|
241
|
+
columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, columnScope, renderContext) as any;
|
|
242
|
+
if (beanInstance?.checkVisible && !(await beanInstance.checkVisible(columnProps as any, renderContext))) return;
|
|
214
243
|
}
|
|
215
244
|
return cellContext => {
|
|
216
245
|
if (!cellContext) return;
|
|
217
|
-
return this._cellRender(render,
|
|
246
|
+
return this._cellRender(render, columnProps, columnScope, cellContext, renderProvider, beanInstance, undefined, undefined, undefined);
|
|
218
247
|
};
|
|
219
248
|
}
|
|
220
249
|
|
|
250
|
+
public cellRender(render: TypeTableCellRenderComponent, columnProps: IResourceActionRowOptionsBase, renderContext: IJsxRenderContextTableCell) {
|
|
251
|
+
// render
|
|
252
|
+
const cellScope = renderContext.$celScope;
|
|
253
|
+
// renderProvider
|
|
254
|
+
const renderProvider = this.getRenderProvider(render);
|
|
255
|
+
// beanInstance
|
|
256
|
+
let beanInstance: ITableCellRender | undefined;
|
|
257
|
+
if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {
|
|
258
|
+
beanInstance = this.sys.bean._getBeanSyncOnly(renderProvider as any);
|
|
259
|
+
const beanOptions = appResource.getBean(renderProvider as any);
|
|
260
|
+
const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;
|
|
261
|
+
columnProps = deepExtend({}, onionOptions, columnProps);
|
|
262
|
+
columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, renderContext.$celScope, renderContext) as any;
|
|
263
|
+
}
|
|
264
|
+
// const cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;
|
|
265
|
+
const cellProps = columnProps;
|
|
266
|
+
return this._cellRender(
|
|
267
|
+
render,
|
|
268
|
+
columnProps as ITableCellRenderColumnProps,
|
|
269
|
+
undefined,
|
|
270
|
+
renderContext.cellContext,
|
|
271
|
+
renderProvider,
|
|
272
|
+
beanInstance,
|
|
273
|
+
cellProps,
|
|
274
|
+
cellScope,
|
|
275
|
+
renderContext,
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
|
|
221
279
|
private _cellRender(
|
|
222
|
-
render: TypeTableCellRenderComponent,
|
|
223
|
-
property: SchemaObject | undefined,
|
|
280
|
+
render: TypeTableCellRenderComponent | undefined,
|
|
224
281
|
columnProps: ITableCellRenderColumnProps | undefined,
|
|
225
|
-
columnScope: ITableColumnScope,
|
|
282
|
+
columnScope: ITableColumnScope | undefined,
|
|
226
283
|
cellContext: CellContext<TData, any>,
|
|
227
284
|
renderProvider: TypeTableCellRenderComponentProvider,
|
|
228
285
|
beanInstance: ITableCellRender | undefined,
|
|
229
|
-
|
|
286
|
+
cellProps: any | undefined,
|
|
287
|
+
cellScope: ITableCellScope | undefined,
|
|
288
|
+
jsxRenderContext: IJsxRenderContextTableCell | undefined,
|
|
230
289
|
) {
|
|
231
290
|
return this.zovaJsx.setTransientObject(
|
|
232
291
|
{
|
|
@@ -235,57 +294,67 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
235
294
|
},
|
|
236
295
|
},
|
|
237
296
|
() => {
|
|
238
|
-
return this._cellRenderInner(
|
|
297
|
+
return this._cellRenderInner(
|
|
298
|
+
render,
|
|
299
|
+
columnProps,
|
|
300
|
+
columnScope,
|
|
301
|
+
cellContext,
|
|
302
|
+
renderProvider,
|
|
303
|
+
beanInstance,
|
|
304
|
+
cellProps,
|
|
305
|
+
cellScope,
|
|
306
|
+
jsxRenderContext,
|
|
307
|
+
);
|
|
239
308
|
},
|
|
240
309
|
);
|
|
241
310
|
}
|
|
242
311
|
|
|
243
312
|
private _cellRenderInner(
|
|
244
|
-
render: TypeTableCellRenderComponent,
|
|
245
|
-
property: SchemaObject | undefined,
|
|
313
|
+
render: TypeTableCellRenderComponent | undefined,
|
|
246
314
|
columnProps: ITableCellRenderColumnProps | undefined,
|
|
247
|
-
columnScope: ITableColumnScope,
|
|
315
|
+
columnScope: ITableColumnScope | undefined,
|
|
248
316
|
cellContext: CellContext<TData, any>,
|
|
249
317
|
renderProvider: TypeTableCellRenderComponentProvider,
|
|
250
318
|
beanInstance: ITableCellRender | undefined,
|
|
251
|
-
|
|
319
|
+
cellProps: any | undefined,
|
|
320
|
+
cellScope: ITableCellScope | undefined,
|
|
321
|
+
jsxRenderContext: IJsxRenderContextTableCell | undefined,
|
|
252
322
|
) {
|
|
253
323
|
// value
|
|
254
324
|
const value = cellContext.getValue();
|
|
325
|
+
// renderFallbackValue
|
|
326
|
+
const fallbackValue = this.table.options.renderFallbackValue;
|
|
255
327
|
// cellScope
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
let displayValue = property?.rest?.displayValue !== undefined ? this.zovaJsx.evaluateExpression(property?.rest?.displayValue, cellScope) : value;
|
|
259
|
-
if (displayValue === undefined || displayValue === null || displayValue === '') {
|
|
260
|
-
displayValue = this.table.options.renderFallbackValue;
|
|
328
|
+
if (!cellScope) {
|
|
329
|
+
cellScope = objectAssignReactive({}, columnScope, { value, fallbackValue })!;
|
|
261
330
|
}
|
|
262
|
-
cellScope.displayValue = displayValue;
|
|
263
331
|
// render: text
|
|
264
332
|
if (renderProvider === 'text') {
|
|
265
|
-
return
|
|
333
|
+
return isNilOrEmptyString(value) ? fallbackValue : value;
|
|
266
334
|
}
|
|
267
335
|
// renderContext
|
|
268
|
-
|
|
336
|
+
if (!jsxRenderContext) {
|
|
337
|
+
jsxRenderContext = this.getCellJsxRenderContext(cellScope, cellContext);
|
|
338
|
+
}
|
|
269
339
|
// beanInstance
|
|
270
340
|
if (beanInstance) {
|
|
271
341
|
// jsx: props
|
|
272
|
-
|
|
273
|
-
?
|
|
274
|
-
|
|
275
|
-
if (onionOptions) {
|
|
276
|
-
cellProps = deepExtend({}, onionOptions, cellProps);
|
|
342
|
+
if (!cellProps) {
|
|
343
|
+
// cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;
|
|
344
|
+
cellProps = columnProps;
|
|
277
345
|
}
|
|
278
|
-
|
|
346
|
+
// const cellProps2 = this.zovaJsx.renderJsxProps(cellProps, {}, cellScope, jsxRenderContext);
|
|
347
|
+
return beanInstance.render(cellProps, jsxRenderContext, () => {
|
|
279
348
|
const children = isJsxComponent(render) && cast(render).children;
|
|
280
349
|
if (children && children.length > 0) {
|
|
281
350
|
return this.zovaJsx.renderJsxChildrenDirect(children, cellScope, jsxRenderContext);
|
|
282
351
|
} else {
|
|
283
|
-
return
|
|
352
|
+
return value;
|
|
284
353
|
}
|
|
285
354
|
});
|
|
286
355
|
}
|
|
287
356
|
// general component
|
|
288
|
-
return this.zovaJsx.render(render
|
|
357
|
+
return this.zovaJsx.render(render!, {}, cellScope, jsxRenderContext);
|
|
289
358
|
}
|
|
290
359
|
|
|
291
360
|
public getColumnProperty(name: string): SchemaObject | undefined {
|
|
@@ -312,40 +381,35 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
312
381
|
});
|
|
313
382
|
}
|
|
314
383
|
|
|
315
|
-
public getColumnComponentPropsTop(name: string, celScope: {}, renderContext: {}):
|
|
316
|
-
const props: any = { [constColumnProps]: true, key: name, name };
|
|
384
|
+
public getColumnComponentPropsTop(name: string, celScope: {}, renderContext: {}): ITableCellRenderColumnOptions {
|
|
317
385
|
const property = this.getColumnProperty(name);
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
if (!rest) return props;
|
|
321
|
-
const keys = Object.keys(rest).filter(item => !renderTableColumnTopPropsSystem.includes(item));
|
|
322
|
-
if (keys.length === 0) return props;
|
|
323
|
-
for (const key of keys) {
|
|
324
|
-
const value = rest[key];
|
|
325
|
-
let keyValue;
|
|
326
|
-
if (key === 'render') {
|
|
327
|
-
if (typeof value === 'string') {
|
|
328
|
-
keyValue = this.zovaJsx.evaluateExpression(value, celScope);
|
|
329
|
-
} else {
|
|
330
|
-
keyValue = value;
|
|
331
|
-
}
|
|
332
|
-
} else {
|
|
333
|
-
keyValue = this.zovaJsx.renderJsxOrCel(value, undefined, celScope, renderContext);
|
|
334
|
-
}
|
|
335
|
-
props[key] = keyValue;
|
|
336
|
-
}
|
|
337
|
-
return props;
|
|
386
|
+
const rest = property?.rest;
|
|
387
|
+
return this._getColumnComponentPropsTopByRest(rest, name, celScope, renderContext);
|
|
338
388
|
}
|
|
339
389
|
|
|
340
|
-
|
|
341
|
-
|
|
390
|
+
private _getColumnComponentPropsTopByRest(
|
|
391
|
+
rest: ISchemaObjectExtensionFieldRest | undefined,
|
|
392
|
+
name: string,
|
|
393
|
+
celScope: {},
|
|
394
|
+
_renderContext: {},
|
|
395
|
+
): ITableCellRenderColumnOptions {
|
|
396
|
+
const visible = this.zovaJsx.evaluateExpression(rest?.visible, celScope);
|
|
397
|
+
const render = rest?.render as TypeTableCellRenderComponent | undefined;
|
|
398
|
+
const columnProps = Object.assign({ key: name }, cast(rest)?.columnProps);
|
|
399
|
+
return { visible, render, columnProps };
|
|
342
400
|
}
|
|
343
401
|
|
|
344
|
-
public
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
402
|
+
// public getRenderFlattern(render: TypeTableCellRenderComponent): TypeTableCellRenderComponent {
|
|
403
|
+
// return isJsxComponent(render) ? cast(render).type : render;
|
|
404
|
+
// }
|
|
405
|
+
|
|
406
|
+
public getRenderProvider(render: TypeTableCellRenderComponent | undefined): TypeTableCellRenderComponentProvider {
|
|
407
|
+
if (!render) return 'text';
|
|
408
|
+
if (typeof render === 'string') {
|
|
409
|
+
const render2 = this.tableProvider.components?.[render];
|
|
410
|
+
if (!render2) throw new Error(`not found table cell component of: ${render}`);
|
|
411
|
+
return render2;
|
|
348
412
|
}
|
|
349
|
-
return
|
|
413
|
+
return render;
|
|
350
414
|
}
|
|
351
415
|
}
|
|
@@ -13,7 +13,10 @@ export class RenderTable extends BeanRenderBase {
|
|
|
13
13
|
{table.getFlatHeaders().map(header => {
|
|
14
14
|
return (
|
|
15
15
|
<th key={header.id}>
|
|
16
|
-
<FlexRender
|
|
16
|
+
<FlexRender
|
|
17
|
+
render={header.column.columnDef.header}
|
|
18
|
+
props={header.getContext()}
|
|
19
|
+
></FlexRender>
|
|
17
20
|
</th>
|
|
18
21
|
);
|
|
19
22
|
})}
|
|
@@ -26,7 +29,10 @@ export class RenderTable extends BeanRenderBase {
|
|
|
26
29
|
{row.getVisibleCells().map(cell => {
|
|
27
30
|
return (
|
|
28
31
|
<td key={cell.id}>
|
|
29
|
-
<FlexRender
|
|
32
|
+
<FlexRender
|
|
33
|
+
render={cell.column.columnDef.cell}
|
|
34
|
+
props={cell.getContext()}
|
|
35
|
+
></FlexRender>
|
|
30
36
|
</td>
|
|
31
37
|
);
|
|
32
38
|
})}
|
package/src/types/index.ts
CHANGED