@dazhicheng/ui 1.5.228 → 1.5.229

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.
@@ -1,2 +1,2 @@
1
1
  export * from './useModalForm';
2
- export type { TtModalFormProps } from './props';
2
+ export type { ModalFormApi, ModalFormType, TtModalFormProps } from './props';
@@ -1,5 +1,6 @@
1
1
  import { Recordable } from '../../../../utils/src';
2
- import { TtModalFormProps } from './props';
2
+ import { ModalFormType, TtModalFormProps } from './props';
3
+ import { TtFormProps, UseGroupFormOptions } from '../tt-form';
3
4
  declare function __VLS_template(): {
4
5
  attrs: Partial<{}>;
5
6
  slots: Readonly<{
@@ -17,20 +18,21 @@ declare function __VLS_template(): {
17
18
  rootEl: any;
18
19
  };
19
20
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
20
- declare const __VLS_component: import('vue').DefineComponent<Partial<TtModalFormProps>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
+ declare const __VLS_component: import('vue').DefineComponent<Partial<TtModalFormProps<ModalFormType>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
22
  submit: (data: Recordable) => any;
22
23
  fetch: (data: Recordable) => any;
23
24
  getinfo: (data: any) => any;
24
- }, string, import('vue').PublicProps, Readonly<Partial<TtModalFormProps>> & Readonly<{
25
+ }, string, import('vue').PublicProps, Readonly<Partial<TtModalFormProps<ModalFormType>>> & Readonly<{
25
26
  onSubmit?: ((data: Recordable) => any) | undefined;
26
27
  onFetch?: ((data: Recordable) => any) | undefined;
27
28
  onGetinfo?: ((data: any) => any) | undefined;
28
29
  }>, {
30
+ renderType: ModalFormType;
29
31
  dataField: string;
30
32
  infoApiIdKey: string;
31
33
  infoApiParams: globalThis.Recordable;
32
34
  apiParams: globalThis.Recordable;
33
- formProps: Partial<import('../tt-form').TtFormProps>;
35
+ formProps: Partial<TtFormProps<Record<string, any>>> | Partial<UseGroupFormOptions<Record<string, any>>>;
34
36
  isContinuousChecked: boolean;
35
37
  checkedOptions: Record<string, any>;
36
38
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,7 +1,7 @@
1
- import { defineComponent as G, useSlots as H, ref as K, computed as F, toValue as J, nextTick as y, watch as Q, createBlock as C, openBlock as M, unref as d, createSlots as B, withCtx as A, renderSlot as h, createVNode as W, renderList as P, normalizeProps as S, guardReactiveProps as b, createCommentVNode as X } from "vue";
1
+ import { defineComponent as H, useSlots as J, ref as K, computed as C, toValue as Q, nextTick as y, watch as W, createBlock as M, openBlock as B, unref as d, createSlots as P, withCtx as A, renderSlot as h, createVNode as X, renderList as S, normalizeProps as b, guardReactiveProps as V, createCommentVNode as Y } from "vue";
2
2
  import "axios";
3
- import { ElCheckbox as Y, ElMessage as V } from "element-plus";
4
- import { isFunction as u } from "../../packages/utils/src/is.js";
3
+ import { ElCheckbox as Z, ElMessage as O } from "element-plus";
4
+ import { isFunction as c } from "../../packages/utils/src/is.js";
5
5
  import "xe-utils";
6
6
  import "dayjs";
7
7
  import "dayjs/plugin/utc";
@@ -11,7 +11,7 @@ import "../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js";
11
11
  import "../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf8.js";
12
12
  import "../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js";
13
13
  import "../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-pkcs7.js";
14
- import { get as Z } from "lodash-es";
14
+ import { get as ee } from "lodash-es";
15
15
  import "../tt-select/index.js";
16
16
  import "../tt-checkbox/index.js";
17
17
  import "../tt-radio-group/index.js";
@@ -19,30 +19,21 @@ import "../tt-panel-select/index.js";
19
19
  import "../tt-upload/index.js";
20
20
  import "../tt-api-component/index.js";
21
21
  import "vee-validate";
22
- import { useForm as ee } from "../tt-form/src/useForm.js";
22
+ import { useForm as oe } from "../tt-form/src/useForm.js";
23
23
  import "zod";
24
24
  import "@vee-validate/zod";
25
25
  import "@tanstack/vue-store";
26
26
  import "es-toolkit/compat";
27
27
  import "../tt-form/src/shared/zod-defaults.js";
28
- import "../tt-nav-anchor/index.js";
29
- import "../../node_modules/.pnpm/vue-types@5.1.3_vue@3.5.21_typescript@5.9.3_/node_modules/vue-types/shim/index.modern.js";
30
- import "../tt-icon/index.js";
31
- import "../tt-form/src/components/Slot.js";
32
- import "../tt-form-item-error-tooltip/index.js";
33
- import "@vueuse/core";
34
- /* empty css */
35
- import "../tt-form/src/form/RenderContent.vue.js";
36
- import "../tt-form/src/form-render/FormFieldContact.js";
37
- /* empty css */
38
- /* empty css */
28
+ import { useGroupForm as te } from "../tt-form/src/group-form/useGroupForm.js";
39
29
  import "../tt-modal/index.js";
40
- import { useModalFormSlot as oe } from "./hooks/useModalFormSlot.js";
41
- import { useModalRender as te } from "../tt-modal/src/hooks/useModalRender.js";
42
- const Ue = /* @__PURE__ */ G({
30
+ import { useModalFormSlot as ie } from "./hooks/useModalFormSlot.js";
31
+ import { useModalRender as ne } from "../tt-modal/src/hooks/useModalRender.js";
32
+ const Ee = /* @__PURE__ */ H({
43
33
  name: "TtModalForm",
44
34
  __name: "index",
45
35
  props: {
36
+ renderType: { default: "form" },
46
37
  model: {},
47
38
  addApi: {},
48
39
  editApi: {},
@@ -63,12 +54,12 @@ const Ue = /* @__PURE__ */ G({
63
54
  checkedOptions: { default: () => ({}) }
64
55
  },
65
56
  emits: ["submit", "fetch", "getinfo"],
66
- setup(I, { emit: O }) {
67
- var k, w;
68
- const o = I, p = O, D = H(), f = K(), r = K(!1), { getFormSlotKeys: L, getModalSlotKeys: E, replaceFormSlotKey: R, replaceModalSlotKey: _ } = oe(D), x = F(() => E.value.filter(Boolean)), T = F(() => L.value.filter(Boolean)), [$, s] = ee({
57
+ setup(I, { emit: D }) {
58
+ var w, F;
59
+ const o = I, m = D, L = J(), f = K(), r = K(!1), { getFormSlotKeys: T, getModalSlotKeys: E, replaceFormSlotKey: R, replaceModalSlotKey: _ } = ie(L), x = C(() => E.value.filter(Boolean)), $ = C(() => T.value.filter(Boolean)), v = {
69
60
  showDefaultActions: !1,
70
- ...J(o.formProps)
71
- }), [z, a] = te({
61
+ ...Q(o.formProps)
62
+ }, [z, s] = o.renderType === "groupForm" ? te(v) : oe(v), [N, a] = ne({
72
63
  ...o.modalProps,
73
64
  onReceiveSharedData: async (e) => {
74
65
  if (!e) {
@@ -77,8 +68,8 @@ const Ue = /* @__PURE__ */ G({
77
68
  }
78
69
  if (e.schemas && s.setState({ schema: e.schemas }), e != null && e.title && a.setModalProps({ title: e.title }), f.value = e[o.infoApiIdKey], e != null && e[o.infoApiIdKey]) {
79
70
  const i = o.infoApi;
80
- if (!u(i)) {
81
- v(e);
71
+ if (!c(i)) {
72
+ g(e);
82
73
  return;
83
74
  }
84
75
  a.changeLoading(!0);
@@ -86,56 +77,56 @@ const Ue = /* @__PURE__ */ G({
86
77
  const t = {
87
78
  ...o.infoApiParams,
88
79
  [o.infoApiIdKey]: e[o.infoApiIdKey]
89
- }, n = u(o.infoApiBefore) ? await o.infoApiBefore(t) : t, l = await i(n), c = o.dataField ? Z(l, o.dataField) : l, m = u(o.infoApiAfter) ? await o.infoApiAfter(c) : c;
90
- g(m), p("getinfo", m), await y(), await s.resetForm({ values: m });
80
+ }, n = c(o.infoApiBefore) ? await o.infoApiBefore(t) : t, l = await i(n), p = o.dataField ? ee(l, o.dataField) : l, u = c(o.infoApiAfter) ? await o.infoApiAfter(p) : p;
81
+ k(u), m("getinfo", u), await y(), await s.resetForm({ values: u });
91
82
  } finally {
92
83
  a.changeLoading(!1);
93
84
  }
94
85
  } else
95
- v(e);
86
+ g(e);
96
87
  },
97
88
  async onOk() {
98
89
  await q();
99
90
  }
100
91
  });
101
- function v(e) {
92
+ function g(e) {
102
93
  const i = e[o.infoDataKey || ""] || {};
103
- g(i), y(() => {
94
+ k(i), y(() => {
104
95
  s.resetForm({ values: i });
105
96
  });
106
97
  }
107
- function g(e) {
98
+ function k(e) {
108
99
  const i = Object.keys(o.checkedOptions || {});
109
100
  i.length && i.forEach((t) => {
110
- var m;
111
- const n = (m = o.checkedOptions) == null ? void 0 : m[t];
101
+ var u;
102
+ const n = (u = o.checkedOptions) == null ? void 0 : u[t];
112
103
  if (!Array.isArray(n) || n.length === 0)
113
104
  return;
114
- const [l, c] = n.length === 1 ? [n[0], n[0]] : n;
115
- !l || !c || (e[t] = {
105
+ const [l, p] = n.length === 1 ? [n[0], n[0]] : n;
106
+ !l || !p || (e[t] = {
116
107
  label: e[l],
117
- value: e[c]
108
+ value: e[p]
118
109
  });
119
110
  });
120
111
  }
121
- async function N() {
112
+ async function j() {
122
113
  const e = await s.getValues(), { apiParams: i } = o;
123
114
  let t = {
124
115
  ...e,
125
116
  ...i
126
117
  };
127
- return t = u(o.saveApiBefore) ? await o.saveApiBefore(t) : t, { reqParams: t, formValue: e };
118
+ return t = c(o.saveApiBefore) ? await o.saveApiBefore(t) : t, { reqParams: t, formValue: e };
128
119
  }
129
- async function j(e, i) {
120
+ async function G(e, i) {
130
121
  const { editApi: t } = o;
131
- !t || !u(t) || (e[o.infoApiIdKey] = f.value, await t(e, i.files), V.success("修改成功"), p("submit", {
122
+ !t || !c(t) || (e[o.infoApiIdKey] = f.value, await t(e, i.files), O.success("修改成功"), m("submit", {
132
123
  ...e,
133
124
  continuousChecked: r.value
134
125
  }), a.closeModal());
135
126
  }
136
127
  async function U(e, i) {
137
128
  const { addApi: t } = o;
138
- !t || !u(t) || (await t(e, i.files), V.success("新增成功"), p("submit", {
129
+ !t || !c(t) || (await t(e, i.files), O.success("新增成功"), m("submit", {
139
130
  ...e,
140
131
  continuousChecked: r.value
141
132
  }), (!r.value || !o.isContinuousChecked) && a.closeModal());
@@ -145,24 +136,24 @@ const Ue = /* @__PURE__ */ G({
145
136
  try {
146
137
  const { valid: e } = await s.validate();
147
138
  if (!e) return;
148
- const { reqParams: i, formValue: t } = await N();
139
+ const { reqParams: i, formValue: t } = await j();
149
140
  if (!i)
150
141
  return;
151
142
  const { addApi: n, editApi: l } = o;
152
143
  if (!n && !l) {
153
- p("submit", {
144
+ m("submit", {
154
145
  ...i,
155
146
  [o.infoApiIdKey]: f.value,
156
147
  continuousChecked: r.value
157
148
  });
158
149
  return;
159
150
  }
160
- f.value ? await j(i, t) : await U(i, t);
151
+ f.value ? await G(i, t) : await U(i, t);
161
152
  } finally {
162
153
  a.changeOkLoading(!1);
163
154
  }
164
155
  }
165
- return (k = o.getFormApi) == null || k.call(o, s), (w = o.getModalApi) == null || w.call(o, a), Q(
156
+ return (w = o.getFormApi) == null || w.call(o, s), (F = o.getModalApi) == null || F.call(o, a), W(
166
157
  () => {
167
158
  var e;
168
159
  return (e = a.getVisible) == null ? void 0 : e.value;
@@ -171,42 +162,42 @@ const Ue = /* @__PURE__ */ G({
171
162
  if (e) {
172
163
  await y();
173
164
  const i = await s.getValues();
174
- p("fetch", i);
165
+ m("fetch", i);
175
166
  } else
176
167
  r.value = !1;
177
168
  }
178
- ), (e, i) => (M(), C(d(z), null, B({
169
+ ), (e, i) => (B(), M(d(N), null, P({
179
170
  insertFooter: A(() => [
180
- o.isContinuousChecked && !f.value ? (M(), C(d(Y), {
171
+ o.isContinuousChecked && !f.value ? (B(), M(d(Z), {
181
172
  key: 0,
182
173
  modelValue: r.value,
183
174
  "onUpdate:modelValue": i[0] || (i[0] = (t) => r.value = t),
184
175
  label: "连续添加",
185
176
  size: "small"
186
- }, null, 8, ["modelValue"])) : X("", !0)
177
+ }, null, 8, ["modelValue"])) : Y("", !0)
187
178
  ]),
188
179
  default: A(() => [
189
180
  h(e.$slots, "BasicMsgTop"),
190
- W(d($), null, B({ _: 2 }, [
191
- P(T.value, (t) => ({
181
+ X(d(z), null, P({ _: 2 }, [
182
+ S($.value, (t) => ({
192
183
  name: d(R)(t),
193
184
  fn: A((n) => [
194
- h(e.$slots, t, S(b(n)))
185
+ h(e.$slots, t, b(V(n)))
195
186
  ])
196
187
  }))
197
188
  ]), 1024)
198
189
  ]),
199
190
  _: 2
200
191
  }, [
201
- P(x.value, (t) => ({
192
+ S(x.value, (t) => ({
202
193
  name: d(_)(t),
203
194
  fn: A((n) => [
204
- h(e.$slots, t, S(b(n)))
195
+ h(e.$slots, t, b(V(n)))
205
196
  ])
206
197
  }))
207
198
  ]), 1024));
208
199
  }
209
200
  });
210
201
  export {
211
- Ue as default
202
+ Ee as default
212
203
  };
@@ -1,6 +1,14 @@
1
- import { TtExtendedFormApi, TtFormProps } from '../tt-form';
1
+ import { GroupFormApi, TtExtendedFormApi, TtFormProps, UseGroupFormOptions } from '../tt-form';
2
2
  import { ModalApiOptions, TtModalExtendedModalApi } from '../tt-modal';
3
- export type TtModalFormProps = {
3
+ /** modal-form 使用的表单类型。 */
4
+ export type ModalFormType = "form" | "groupForm";
5
+ /** modal-form 对外暴露的表单 API 类型。 */
6
+ export type ModalFormApi<TType extends ModalFormType = "form"> = TType extends "groupForm" ? GroupFormApi : TtExtendedFormApi;
7
+ /** 根据表单类型收窄的表单配置。 */
8
+ type ModalFormProps<TValues extends Record<string, any>, TType extends ModalFormType> = TType extends "groupForm" ? Partial<UseGroupFormOptions<TValues>> : Partial<TtFormProps<TValues>>;
9
+ export type TtModalFormProps<TType extends ModalFormType = "form", TValues extends Record<string, any> = Record<string, any>> = {
10
+ /** 表单渲染类型,默认使用普通表单 */
11
+ renderType?: TType;
4
12
  /** model */
5
13
  model?: Recordable;
6
14
  /** 新增保存接口 */
@@ -24,7 +32,7 @@ export type TtModalFormProps = {
24
32
  /** 保存额外参数 */
25
33
  apiParams?: Recordable;
26
34
  /** formProps */
27
- formProps?: Partial<TtFormProps>;
35
+ formProps?: ModalFormProps<TValues, TType>;
28
36
  /** 是否连续添加 */
29
37
  isContinuousChecked?: boolean;
30
38
  /** 响应结果集字段 */
@@ -32,9 +40,10 @@ export type TtModalFormProps = {
32
40
  /** modal props */
33
41
  modalProps?: ModalApiOptions;
34
42
  /** 获取formApi的回调 */
35
- getFormApi?: (api: TtExtendedFormApi) => void;
43
+ getFormApi?: (api: ModalFormApi<TType>) => void;
36
44
  /** 获取modalApi的回调 */
37
45
  getModalApi?: (api: TtModalExtendedModalApi) => void;
38
46
  /** 处理TtSelect(非多选回显值) */
39
47
  checkedOptions?: Record<string, any>;
40
48
  };
49
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { TtModalExtendedModalApi } from '../tt-modal';
2
- import { TtModalFormProps } from './props';
3
- export declare function useModalForm(options: TtModalFormProps): readonly [import('vue').DefineSetupFnComponent<Partial<TtModalFormProps>, {}, {}, Partial<TtModalFormProps> & {}, import('vue').PublicProps>, {
4
- readonly formApi: import('vue').Ref<import('../tt-form/src/types').ExtendedFormApi | undefined, import('../tt-form/src/types').ExtendedFormApi | undefined>;
2
+ import { ModalFormApi, ModalFormType, TtModalFormProps } from './props';
3
+ /** 创建普通表单或分组表单的弹窗表单。 */
4
+ export declare function useModalForm<TType extends ModalFormType = "form", TValues extends Record<string, any> = Record<string, any>>(options: TtModalFormProps<TType, TValues>): readonly [import('vue').DefineSetupFnComponent<Partial<TtModalFormProps<ModalFormType>>, {}, {}, Partial<TtModalFormProps<ModalFormType>> & {}, import('vue').PublicProps>, {
5
+ readonly formApi: import('vue').Ref<ModalFormApi<TType> | undefined, ModalFormApi<TType> | undefined>;
5
6
  readonly modalApi: import('vue').Ref<TtModalExtendedModalApi | undefined, TtModalExtendedModalApi | undefined>;
6
7
  }];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dazhicheng/ui",
3
- "version": "1.5.228",
3
+ "version": "1.5.229",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",