cabloy 5.1.62 → 5.1.64

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 (111) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/cabloy-docs/frontend/form-guide.md +10 -4
  3. package/cabloy-docs/frontend/table-cell-cookbook.md +4 -1
  4. package/package.json +1 -1
  5. package/vona/packages-vona/vona/package.json +1 -1
  6. package/vona/pnpm-lock.yaml +78 -2
  7. package/vona/src/suite/a-training/modules/training-record/package.json +53 -0
  8. package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +198 -0
  9. package/vona/src/suite/a-training/modules/training-record/src/.metadata/locales.ts +18 -0
  10. package/vona/src/suite/a-training/modules/training-record/src/.metadata/this.ts +2 -0
  11. package/vona/src/suite/a-training/modules/training-record/src/bean/meta.index.ts +12 -0
  12. package/vona/src/suite/a-training/modules/training-record/src/bean/meta.version.ts +21 -0
  13. package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +7 -0
  14. package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +7 -0
  15. package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +48 -0
  16. package/vona/src/suite/a-training/modules/training-record/src/index.ts +2 -0
  17. package/vona/src/suite/a-training/modules/training-record/src/model/record.ts +10 -0
  18. package/vona/src/suite/a-training/modules/training-record/tsconfig.build.json +11 -0
  19. package/vona/src/suite/a-training/modules/training-record/tsconfig.json +7 -0
  20. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +39 -3
  21. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +1 -0
  22. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +1 -0
  23. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +12 -0
  24. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordMutate.tsx +31 -0
  25. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordResItem.tsx +41 -0
  26. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordView.tsx +28 -0
  27. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +16 -1
  28. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +4 -1
  29. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +4 -1
  30. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +9 -2
  31. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +1 -1
  32. package/vona/src/suite/a-training/package.json +1 -0
  33. package/vona/src/suite/a-training/tsconfig.json +3 -0
  34. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  35. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dto.ts +2 -0
  36. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +3 -3
  37. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +2 -2
  38. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +3 -0
  39. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +2 -1
  40. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +3 -0
  41. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  42. package/zova/packages-cli/cli/package.json +2 -2
  43. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateBlockPage/controller.tsx_ +6 -2
  44. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateBlockPageEntry/controller.tsx_ +6 -2
  45. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateFormActionRow/controller.tsx_ +6 -2
  46. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateFormField/controller.tsx_ +2 -1
  47. package/zova/packages-cli/cli-set-front/cli/templates/create/component/boilerplateTableActionBulk/controller.tsx_ +6 -2
  48. package/zova/packages-cli/cli-set-front/cli/templates/rest/component.ts +22 -0
  49. package/zova/packages-cli/cli-set-front/cli/templates/rest/render.ts +4 -0
  50. package/zova/packages-cli/cli-set-front/package.json +1 -1
  51. package/zova/packages-zova/zova/package.json +2 -2
  52. package/zova/pnpm-lock.yaml +32 -2
  53. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/render.tsx +5 -3
  54. package/zova/src/suite/a-home/modules/home-login/src/page/login/render.tsx +5 -3
  55. package/zova/src/suite/a-training/modules/training-student/package.json +6 -1
  56. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +13 -11
  57. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +1 -1
  58. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +60 -0
  59. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/index.ts +137 -0
  60. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/locales.ts +7 -0
  61. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/this.ts +2 -0
  62. package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +260 -0
  63. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +39 -0
  64. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/en-us.ts +7 -0
  65. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/zh-cn.ts +7 -0
  66. package/zova/src/suite/cabloy-basic/modules/basic-app/src/index.ts +4 -0
  67. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/appModalItem.ts +16 -0
  68. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/index.ts +1 -0
  69. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +38 -0
  70. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkeySys.ts +14 -0
  71. package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +89 -0
  72. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +52 -0
  73. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/index.ts +1 -0
  74. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.build.json +13 -0
  75. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.json +5 -0
  76. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +6 -1
  77. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/.metadata/index.ts +16 -0
  78. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.alert.tsx +8 -14
  79. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.confirm.tsx +10 -7
  80. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.prompt.tsx +30 -0
  81. package/zova/src/suite/cabloy-basic/modules/basic-details/package.json +52 -0
  82. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/component/actionCreate.ts +31 -0
  83. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/component/blockDetails.ts +34 -0
  84. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/component/blockDetailsToolbarBulk.ts +31 -0
  85. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/component/formFieldDetails.ts +31 -0
  86. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/index.ts +116 -0
  87. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/locales.ts +7 -0
  88. package/zova/src/suite/cabloy-basic/modules/basic-details/src/.metadata/this.ts +2 -0
  89. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/actionCreate/controller.tsx +42 -0
  90. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockDetails/controller.tsx +114 -0
  91. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/blockDetailsToolbarBulk/controller.tsx +61 -0
  92. package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/formFieldDetails/controller.tsx +105 -0
  93. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/en-us.ts +3 -0
  94. package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/zh-cn.ts +3 -0
  95. package/zova/src/suite/cabloy-basic/modules/basic-details/src/index.ts +3 -0
  96. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/details.ts +8 -0
  97. package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/index.ts +1 -0
  98. package/zova/src/suite/cabloy-basic/modules/basic-details/tsconfig.build.json +13 -0
  99. package/zova/src/suite/cabloy-basic/modules/basic-details/tsconfig.json +5 -0
  100. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +5 -3
  101. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +6 -1
  102. package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionDelete.tsx +4 -2
  103. package/zova/src/suite/cabloy-basic/package.json +2 -0
  104. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  105. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/action.ts +2 -0
  106. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/details.ts +7 -0
  107. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detailsActionBulk.ts +24 -0
  108. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/index.ts +2 -0
  109. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/index.ts +1 -0
  110. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/permissions.ts +6 -0
  111. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,116 @@
1
+ // eslint-disable
2
+ /** controller: begin */
3
+ export * from '../component/actionCreate/controller.jsx';
4
+ export * from '../component/blockDetails/controller.jsx';
5
+ export * from '../component/blockDetailsToolbarBulk/controller.jsx';
6
+ export * from '../component/formFieldDetails/controller.jsx';
7
+
8
+ import 'zova';
9
+ declare module 'zova' {
10
+
11
+
12
+ }
13
+ declare module 'zova-module-basic-details' {
14
+
15
+ export interface ControllerActionCreate {
16
+ /** @internal */
17
+ get scope(): ScopeModuleBasicDetails;
18
+ }
19
+
20
+ export interface ControllerBlockDetails {
21
+ /** @internal */
22
+ get scope(): ScopeModuleBasicDetails;
23
+ }
24
+
25
+ export interface ControllerBlockDetailsToolbarBulk {
26
+ /** @internal */
27
+ get scope(): ScopeModuleBasicDetails;
28
+ }
29
+
30
+ export interface ControllerFormFieldDetails {
31
+ /** @internal */
32
+ get scope(): ScopeModuleBasicDetails;
33
+ }
34
+ }
35
+ /** controller: end */
36
+ /** controller: begin */
37
+ import { ControllerActionCreate } from '../component/actionCreate/controller.jsx';
38
+ import { ControllerBlockDetails } from '../component/blockDetails/controller.jsx';
39
+ import { ControllerBlockDetailsToolbarBulk } from '../component/blockDetailsToolbarBulk/controller.jsx';
40
+ import { ControllerFormFieldDetails } from '../component/formFieldDetails/controller.jsx';
41
+ import 'zova';
42
+ declare module 'zova' {
43
+ export interface IBeanRecordLocal {
44
+ 'basic-details.controller.actionCreate': ControllerActionCreate;
45
+ 'basic-details.controller.blockDetails': ControllerBlockDetails;
46
+ 'basic-details.controller.blockDetailsToolbarBulk': ControllerBlockDetailsToolbarBulk;
47
+ 'basic-details.controller.formFieldDetails': ControllerFormFieldDetails;
48
+ }
49
+ }
50
+ /** controller: end */
51
+
52
+ /** components: begin */
53
+ export * from './component/actionCreate.js';
54
+ import { ZActionCreate } from './component/actionCreate.js';
55
+ export * from './component/blockDetails.js';
56
+ import { ZBlockDetails } from './component/blockDetails.js';
57
+ export * from './component/blockDetailsToolbarBulk.js';
58
+ import { ZBlockDetailsToolbarBulk } from './component/blockDetailsToolbarBulk.js';
59
+ export * from './component/formFieldDetails.js';
60
+ import { ZFormFieldDetails } from './component/formFieldDetails.js';
61
+ export const components = {
62
+ 'actionCreate': ZActionCreate,
63
+ 'blockDetails': ZBlockDetails,
64
+ 'blockDetailsToolbarBulk': ZBlockDetailsToolbarBulk,
65
+ 'formFieldDetails': ZFormFieldDetails,
66
+ };
67
+ import 'zova';
68
+ declare module 'zova' {
69
+ export interface IComponentRecord {
70
+ 'basic-details:actionCreate': ControllerActionCreate;
71
+ 'basic-details:blockDetails': ControllerBlockDetails;
72
+ 'basic-details:blockDetailsToolbarBulk': ControllerBlockDetailsToolbarBulk;
73
+ 'basic-details:formFieldDetails': ControllerFormFieldDetails;
74
+ }
75
+ export interface IZovaComponentRecord {
76
+ 'basic-details:actionCreate': typeof ZActionCreate;
77
+ 'basic-details:blockDetails': typeof ZBlockDetails;
78
+ 'basic-details:blockDetailsToolbarBulk': typeof ZBlockDetailsToolbarBulk;
79
+ 'basic-details:formFieldDetails': typeof ZFormFieldDetails;
80
+ }
81
+ }
82
+ /** components: end */
83
+ /** locale: begin */
84
+ import { locales } from './locales.js';
85
+ /** locale: end */
86
+ /** scope: begin */
87
+ import { BeanScopeBase, type BeanScopeUtil, TypeModuleLocales, TypeLocaleBase } from 'zova';
88
+ import { Scope } from 'zova-module-a-bean';
89
+
90
+ @Scope()
91
+ export class ScopeModuleBasicDetails extends BeanScopeBase {}
92
+
93
+ export interface ScopeModuleBasicDetails {
94
+ util: BeanScopeUtil;
95
+ locale: TypeModuleLocales<(typeof locales)[TypeLocaleBase]>;
96
+ }
97
+
98
+ import 'zova';
99
+ declare module 'zova' {
100
+ export interface IBeanScopeRecord {
101
+ 'basic-details': ScopeModuleBasicDetails;
102
+ }
103
+
104
+
105
+
106
+ export interface IBeanScopeLocale {
107
+ 'basic-details': (typeof locales)[TypeLocaleBase];
108
+ }
109
+
110
+
111
+ }
112
+
113
+ export function locale<K extends keyof (typeof locales)[TypeLocaleBase]>(key: K): `basic-details::${K}` {
114
+ return `basic-details::${key}`;
115
+ }
116
+ /** scope: end */
@@ -0,0 +1,7 @@
1
+ import locale_en_us from '../config/locale/en-us.js';
2
+ import locale_zh_cn from '../config/locale/zh-cn.js';
3
+
4
+ export const locales = {
5
+ 'en-us': locale_en_us,
6
+ 'zh-cn': locale_zh_cn,
7
+ };
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'basic-details';
2
+ export { ScopeModuleBasicDetails as ScopeModule } from './index.js';
@@ -0,0 +1,42 @@
1
+ import type { IComponentOptions } from 'zova';
2
+ import type {
3
+ IJsxRenderContextDetails,
4
+ IResourceDetailsActionBulkOptionsBase,
5
+ } from 'zova-module-a-openapi';
6
+
7
+ import { BeanControllerBase, Use } from 'zova';
8
+ import { Controller } from 'zova-module-a-bean';
9
+
10
+ declare module 'zova-module-a-openapi' {
11
+ export interface IResourceDetailsActionBulkRecord {
12
+ 'basic-details:actionCreate'?: ControllerActionCreateProps;
13
+ }
14
+ }
15
+
16
+ export interface ControllerActionCreateProps extends IResourceDetailsActionBulkOptionsBase {}
17
+
18
+ @Controller()
19
+ export class ControllerActionCreate extends BeanControllerBase {
20
+ static $propsDefault = {};
21
+ static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
22
+
23
+ @Use({ injectionScope: 'host' })
24
+ $$renderContext: IJsxRenderContextDetails;
25
+
26
+ protected async __init__() {}
27
+
28
+ protected render() {
29
+ return (
30
+ <button
31
+ class={this.$props.class}
32
+ type="button"
33
+ onClick={async () => {
34
+ console.log('create');
35
+ // await this.$performCommand('basic-commands:create', this.$props, this.$$renderContext);
36
+ }}
37
+ >
38
+ {this.scope.locale.Create()}
39
+ </button>
40
+ );
41
+ }
42
+ }
@@ -0,0 +1,114 @@
1
+ import { celEnvBase } from '@cabloy/utils';
2
+ import { VNode } from 'vue';
3
+ import { BeanControllerBase, IComponentOptions } from 'zova';
4
+ import { ZovaJsx } from 'zova-jsx';
5
+ import { Controller } from 'zova-module-a-bean';
6
+ import {
7
+ IDetailsScope,
8
+ IJsxRenderContextDetails,
9
+ IPermissionHintDetailsActionBulk,
10
+ IResourceBlockOptionsBase,
11
+ IResourceRenderBlockOptionsBlock,
12
+ ISchemaObjectExtensionField,
13
+ TypeFormScene,
14
+ } from 'zova-module-a-openapi';
15
+ import { BeanControllerTableBase } from 'zova-module-a-table';
16
+
17
+ declare module 'zova-module-a-openapi' {
18
+ export interface IResourceBlockRecord {
19
+ 'basic-details:blockDetails'?: ControllerBlockDetailsProps;
20
+ }
21
+ }
22
+
23
+ export interface ControllerBlockDetailsProps<
24
+ TData extends {} = {},
25
+ > extends IResourceBlockOptionsBase {
26
+ blocks?: IResourceRenderBlockOptionsBlock[];
27
+ formScene?: TypeFormScene;
28
+ schemaRow?: ISchemaObjectExtensionField;
29
+ getDetailItems?: () => TData[] | undefined;
30
+ setDetailItems?: (detailItems: TData[]) => void;
31
+ }
32
+
33
+ @Controller()
34
+ export class ControllerBlockDetails<TData extends {} = {}> extends BeanControllerBase {
35
+ static $propsDefault = {};
36
+ static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
37
+
38
+ tableRef: BeanControllerTableBase<TData>;
39
+
40
+ jsxZova: ZovaJsx;
41
+ jsxCelScope: IDetailsScope;
42
+ jsxRenderContext: IJsxRenderContextDetails<TData>;
43
+
44
+ protected async __init__() {
45
+ // jsx
46
+ this._prepareJsx();
47
+ }
48
+
49
+ get data() {
50
+ return this.$props.getDetailItems?.() ?? [];
51
+ }
52
+
53
+ get formScene() {
54
+ return this.$props.formScene!;
55
+ }
56
+
57
+ get schemaRow() {
58
+ return this.$props.schemaRow!;
59
+ }
60
+
61
+ public checkPermission(permissionHint?: IPermissionHintDetailsActionBulk): boolean {
62
+ const formScene = this.formScene;
63
+ const formSceneHint = permissionHint?.formScene;
64
+ if (!formSceneHint) return true;
65
+ if (Array.isArray(formSceneHint) && formSceneHint.includes(formScene!)) return true;
66
+ if (formSceneHint === formScene) return true;
67
+ return false;
68
+ }
69
+
70
+ private _prepareJsx() {
71
+ const jsxCelEnv = celEnvBase.clone();
72
+ this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false, undefined, jsxCelEnv);
73
+ this.jsxCelScope = this._prepareJsxCelScope();
74
+ this.jsxRenderContext = {
75
+ app: this.app,
76
+ ctx: this.ctx,
77
+ $scene: 'details',
78
+ $host: this,
79
+ $celScope: this.jsxCelScope,
80
+ $jsx: this.jsxZova,
81
+ $$details: this,
82
+ };
83
+ }
84
+
85
+ private _prepareJsxCelScope(): IDetailsScope {
86
+ return {};
87
+ }
88
+
89
+ protected render() {
90
+ return <div class={this.$props.class}>{this._renderBlocks()}</div>;
91
+ }
92
+
93
+ private _renderBlocks() {
94
+ const blocks = this.$props.blocks;
95
+ if (!blocks || blocks.length === 0) return;
96
+ const domBlocks: VNode[] = [];
97
+ blocks.forEach((block, index) => {
98
+ const options = Object.assign({ key: index }, block.options);
99
+ const domBlock = this.jsxZova.render(
100
+ block.render!,
101
+ options,
102
+ this.jsxCelScope,
103
+ this.jsxRenderContext,
104
+ );
105
+ if (!domBlock) return;
106
+ if (Array.isArray(domBlock)) {
107
+ domBlocks.push(...domBlock);
108
+ } else {
109
+ domBlocks.push(domBlock);
110
+ }
111
+ });
112
+ return domBlocks;
113
+ }
114
+ }
@@ -0,0 +1,61 @@
1
+ import type { IComponentOptions } from 'zova';
2
+ import type {
3
+ IResourceBlockOptionsBase,
4
+ IJsxRenderContextDetails,
5
+ IResourceRenderDetailsActionBulkOptionsAction,
6
+ } from 'zova-module-a-openapi';
7
+
8
+ import { VNode } from 'vue';
9
+ import { BeanControllerBase, Use } from 'zova';
10
+ import { Controller } from 'zova-module-a-bean';
11
+
12
+ declare module 'zova-module-a-openapi' {
13
+ export interface IResourceBlockRecord {
14
+ 'basic-details:blockDetailsToolbarBulk'?: ControllerBlockDetailsToolbarBulkProps;
15
+ }
16
+ }
17
+
18
+ export interface ControllerBlockDetailsToolbarBulkProps extends IResourceBlockOptionsBase {
19
+ actions?: IResourceRenderDetailsActionBulkOptionsAction[];
20
+ }
21
+
22
+ @Controller()
23
+ export class ControllerBlockDetailsToolbarBulk extends BeanControllerBase {
24
+ static $propsDefault = {};
25
+ static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
26
+
27
+ @Use({ injectionScope: 'host' })
28
+ $$renderContext: IJsxRenderContextDetails;
29
+
30
+ protected async __init__() {}
31
+
32
+ protected render() {
33
+ const domActions = this._renderActions();
34
+ if (!domActions || domActions.length === 0) return;
35
+ return (
36
+ <div class={this.$props.class}>
37
+ <div class="join">{domActions}</div>
38
+ </div>
39
+ );
40
+ }
41
+
42
+ private _renderActions() {
43
+ const { $jsx, $celScope, $$details } = this.$$renderContext;
44
+ const actions = this.$props.actions;
45
+ if (!actions || actions.length === 0) return;
46
+ const domActions: VNode[] = [];
47
+ actions.forEach((action, index) => {
48
+ const permissionHint = action.options?.permission;
49
+ if (!$$details.checkPermission(permissionHint)) return;
50
+ const options = Object.assign({ key: index }, action.options);
51
+ const domAction = $jsx.render(action.render!, options, $celScope, this.$$renderContext);
52
+ if (!domAction) return;
53
+ if (Array.isArray(domAction)) {
54
+ domActions.push(...domAction);
55
+ } else {
56
+ domActions.push(domAction);
57
+ }
58
+ });
59
+ return domActions;
60
+ }
61
+ }
@@ -0,0 +1,105 @@
1
+ import type { IComponentOptions } from 'zova';
2
+ import type {
3
+ ControllerFormField,
4
+ IFormFieldComponentOptions,
5
+ IFormFieldRenderContext,
6
+ } from 'zova-module-a-form';
7
+ import type {
8
+ IResourceFormFieldOptionsBase,
9
+ ISchemaObjectExtensionField,
10
+ TypeFormScene,
11
+ } from 'zova-module-a-openapi';
12
+
13
+ import { VNode } from 'vue';
14
+ import { BeanControllerBase, deepExtend } from 'zova';
15
+ import { ZovaJsx } from 'zova-jsx';
16
+ import { Controller } from 'zova-module-a-bean';
17
+ import { ZFormField } from 'zova-module-a-form';
18
+
19
+ declare module 'zova-module-a-openapi' {
20
+ export interface IResourceFormFieldRecord {
21
+ 'basic-details:formFieldDetails'?: IResourceFormFieldDetailsOptions;
22
+ }
23
+ }
24
+
25
+ export interface IResourceFormFieldDetailsOptions extends IResourceFormFieldOptionsBase {}
26
+
27
+ export interface ControllerFormFieldDetailsProps extends IFormFieldComponentOptions {
28
+ options?: IResourceFormFieldDetailsOptions;
29
+ }
30
+
31
+ @Controller()
32
+ export class ControllerFormFieldDetails extends BeanControllerBase {
33
+ static $propsDefault = {};
34
+ static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
35
+
36
+ jsxZova: ZovaJsx;
37
+
38
+ protected async __init__() {
39
+ // jsx
40
+ this._prepareJsx();
41
+ }
42
+
43
+ private _prepareJsx() {
44
+ this.jsxZova = this.bean._newBeanSimple(ZovaJsx, false);
45
+ }
46
+
47
+ protected render() {
48
+ return (
49
+ <ZFormField
50
+ {...this.$props}
51
+ slotDefault={(formFieldRenderContext, $$formField) => {
52
+ return this._renderBlocks(formFieldRenderContext, $$formField) ?? <></>;
53
+ }}
54
+ ></ZFormField>
55
+ );
56
+ }
57
+
58
+ private _renderBlocks(
59
+ formFieldRenderContext: IFormFieldRenderContext,
60
+ $$formField: ControllerFormField,
61
+ ) {
62
+ const { propsBucket } = formFieldRenderContext;
63
+ // schema
64
+ const schemaName = $$formField.property?.items?.$ref;
65
+ if (!schemaName) {
66
+ return <div>Should specify the detail schema</div>;
67
+ }
68
+ const schemaRow: ISchemaObjectExtensionField | undefined = this.$sdk.getSchema(
69
+ schemaName!,
70
+ ).data;
71
+ if (!schemaRow) return;
72
+ // formScene
73
+ const formScene: TypeFormScene = propsBucket.readonly
74
+ ? 'view'
75
+ : $$formField.formMeta!.formScene!;
76
+ // blocks
77
+ const blocks = schemaRow?.rest?.blocks;
78
+ if (!blocks || blocks.length === 0) return;
79
+ const domBlocks: VNode[] = [];
80
+ blocks.forEach((block, index) => {
81
+ const options = deepExtend(
82
+ { key: index },
83
+ {
84
+ formScene,
85
+ schemaRow,
86
+ getDetailItems: () => {
87
+ return propsBucket.value;
88
+ },
89
+ setDetailItems: (detailItems: any[]) => {
90
+ $$formField.setValue(detailItems);
91
+ },
92
+ },
93
+ block.options,
94
+ );
95
+ const domBlock = this.jsxZova.render(block.render!, options);
96
+ if (!domBlock) return;
97
+ if (Array.isArray(domBlock)) {
98
+ domBlocks.push(...domBlock);
99
+ } else {
100
+ domBlocks.push(domBlock);
101
+ }
102
+ });
103
+ return <div>{domBlocks}</div>;
104
+ }
105
+ }
@@ -0,0 +1,3 @@
1
+ export default {
2
+ Create: 'Create',
3
+ };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ Create: '创建',
3
+ };
@@ -0,0 +1,3 @@
1
+ export * from './.metadata/locales.js';
2
+ export * from './types/index.js';
3
+ export * from './.metadata/index.js';
@@ -0,0 +1,8 @@
1
+ import 'zova-module-a-openapi';
2
+ import { ControllerBlockDetails } from '../component/blockDetails/controller.jsx';
3
+
4
+ declare module 'zova-module-a-openapi' {
5
+ export interface IJsxRenderContextDetails<TData extends {} = {}> {
6
+ $$details: ControllerBlockDetails<TData>;
7
+ }
8
+ }
@@ -0,0 +1 @@
1
+ export * from './details.js';
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist",
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "emitDeclarationOnly": true,
9
+ "allowImportingTsExtensions": true,
10
+ "noEmit": false
11
+ },
12
+ "include": ["src", "src/.metadata/**/*"]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {},
4
+ "include": ["src", "src/.metadata/**/*"]
5
+ }
@@ -42,9 +42,11 @@ export class ControllerBlockForm extends BeanControllerBase {
42
42
  formProvider={$$pageEntry.formProvider}
43
43
  formScope={$$pageEntry.jsxCelScope}
44
44
  onSubmitData={data => $$pageEntry.submitData(data)}
45
- onShowError={({ error }) => {
46
- // eslint-disable-next-line no-alert
47
- window.alert(error.message);
45
+ onShowError={async ({ error }) => {
46
+ await this.$performCommand('basic-commands:alert', {
47
+ type: 'error',
48
+ text: error.message,
49
+ });
48
50
  }}
49
51
  onChanged={data => {
50
52
  $$pageEntry.setPageMeta(data, true);
@@ -48,5 +48,10 @@
48
48
  "exports.\\..import"
49
49
  ]
50
50
  },
51
- "title": "basic-table"
51
+ "title": "basic-table",
52
+ "zovaModule": {
53
+ "dependencies": {
54
+ "basic-app": "5.0.0"
55
+ }
56
+ }
52
57
  }
@@ -32,8 +32,10 @@ export class TableCellActionDelete extends BeanBase implements ITableCellRender
32
32
  class={options.class}
33
33
  type="button"
34
34
  onClick={async () => {
35
- // eslint-disable-next-line no-alert
36
- if (!window.confirm(this.scope.locale.DeleteConfirm())) return;
35
+ const confirmed = await $host.$performCommand('basic-commands:confirm', {
36
+ text: this.scope.locale.DeleteConfirm(),
37
+ });
38
+ if (!confirmed) return;
37
39
  await $host.$performCommand('basic-commands:delete', options, renderContext);
38
40
  }}
39
41
  >
@@ -8,11 +8,13 @@
8
8
  "type": "module",
9
9
  "dependencies": {
10
10
  "zova-module-basic-adapter": "^5.0.5",
11
+ "zova-module-basic-app": "^5.0.0",
11
12
  "zova-module-basic-captcha": "^5.0.8",
12
13
  "zova-module-basic-commands": "^5.1.15",
13
14
  "zova-module-basic-commandssync": "^5.0.5",
14
15
  "zova-module-basic-currency": "^5.1.15",
15
16
  "zova-module-basic-date": "^5.0.6",
17
+ "zova-module-basic-details": "^5.0.0",
16
18
  "zova-module-basic-form": "^5.0.7",
17
19
  "zova-module-basic-input": "^5.0.7",
18
20
  "zova-module-basic-page": "^5.0.7",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-openapi",
3
- "version": "5.1.34",
3
+ "version": "5.1.35",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -33,6 +33,8 @@ export interface IJsxRenderSceneRecord {
33
33
  tableCell: never;
34
34
  // form: never;
35
35
  formField: never;
36
+ //
37
+ details: never;
36
38
  }
37
39
 
38
40
  export interface IPageScope {
@@ -0,0 +1,7 @@
1
+ import { IJsxRenderContextBase } from '../action.js';
2
+
3
+ export interface IDetailsScope {}
4
+
5
+ export interface IJsxRenderContextDetails extends IJsxRenderContextBase {
6
+ $celScope: IDetailsScope;
7
+ }
@@ -0,0 +1,24 @@
1
+ import { types } from 'typestyle';
2
+ import { TypeRenderComponentJsx } from 'zova-jsx';
3
+
4
+ import type { IPermissionHintDetailsActionBulk } from '../permissions.js';
5
+
6
+ export type IResourceDetailsActionBulkNameRecord = {
7
+ [KEY in keyof IResourceDetailsActionBulkRecord as KEY extends `${string}:action${infer Name}`
8
+ ? Uncapitalize<Name>
9
+ : KEY]: IResourceDetailsActionBulkRecord[KEY];
10
+ };
11
+
12
+ export interface IResourceDetailsActionBulkRecord {}
13
+
14
+ export interface IResourceDetailsActionBulkOptionsBase {
15
+ class?: any;
16
+ style?: types.NestedCSSProperties;
17
+ permission?: IPermissionHintDetailsActionBulk;
18
+ }
19
+
20
+ export interface IResourceRenderDetailsActionBulkOptionsAction {
21
+ name?: keyof IResourceDetailsActionBulkNameRecord; // not omit operationsBulk
22
+ render?: keyof IResourceDetailsActionBulkRecord | TypeRenderComponentJsx;
23
+ options?: IResourceDetailsActionBulkOptionsBase;
24
+ }
@@ -0,0 +1,2 @@
1
+ export * from './details.js';
2
+ export * from './detailsActionBulk.js';
@@ -10,3 +10,4 @@ export * from './rest.js';
10
10
  export * from './schema.js';
11
11
  export * from './sdk.js';
12
12
  export * from './table.js';
13
+ export * from './detail/index.js';
@@ -34,3 +34,9 @@ export interface IPermissionHintTableActionBulk {
34
34
  actionInherit?: keyof IResourceTableActionBulkNameRecord;
35
35
  public?: boolean;
36
36
  }
37
+
38
+ export interface IPermissionHintDetailsActionBulk {
39
+ // actionInherit?: keyof IResourceDetailsActionBulkNameRecord;
40
+ // public?: boolean;
41
+ formScene?: TypeFormScene | TypeFormScene[];
42
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.103",
3
+ "version": "5.1.104",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -22,7 +22,7 @@
22
22
  "zova-module-a-logger": "^5.1.23",
23
23
  "zova-module-a-meta": "^5.1.18",
24
24
  "zova-module-a-model": "^5.1.27",
25
- "zova-module-a-openapi": "^5.1.34",
25
+ "zova-module-a-openapi": "^5.1.35",
26
26
  "zova-module-a-router": "^5.1.26",
27
27
  "zova-module-a-routerstack": "^5.1.23",
28
28
  "zova-module-a-routertabs": "^5.1.29",