@rytass/bpm-core-react 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/chunks/FormBuilderView-CLFlfDGe.cjs +3 -0
  3. package/dist/chunks/FormBuilderView-CLFlfDGe.cjs.map +1 -0
  4. package/dist/chunks/FormBuilderView-D4xIuPYB.js +1960 -0
  5. package/dist/chunks/FormBuilderView-D4xIuPYB.js.map +1 -0
  6. package/dist/chunks/FormRendererView-BxGT16z0.cjs +2 -0
  7. package/dist/chunks/FormRendererView-BxGT16z0.cjs.map +1 -0
  8. package/dist/chunks/FormRendererView-DUceSOXe.js +798 -0
  9. package/dist/chunks/FormRendererView-DUceSOXe.js.map +1 -0
  10. package/dist/chunks/admin-pickers-Btvij1at.cjs.map +1 -1
  11. package/dist/chunks/admin-pickers-DLlG_1du.js.map +1 -1
  12. package/dist/chunks/approval-instance-list-page-BjX2kaoF.js.map +1 -1
  13. package/dist/chunks/approval-instance-list-page-CWiQvnfE.cjs +2 -0
  14. package/dist/chunks/{approval-instance-list-page-C408vxE2.cjs.map → approval-instance-list-page-CWiQvnfE.cjs.map} +1 -1
  15. package/dist/chunks/auth-provider-4BeCw7cI.cjs.map +1 -1
  16. package/dist/chunks/auth-provider-B5oPmvk2.js.map +1 -1
  17. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -1
  18. package/dist/chunks/categories-DGlxuC6X.js.map +1 -1
  19. package/dist/chunks/categories-Yid05WAX.cjs +2 -0
  20. package/dist/chunks/{categories-DUfldZ_9.cjs.map → categories-Yid05WAX.cjs.map} +1 -1
  21. package/dist/chunks/{compose-D-OS-Ngs.js → compose-Bb-REfoB.js} +4 -4
  22. package/dist/chunks/{compose-D-OS-Ngs.js.map → compose-Bb-REfoB.js.map} +1 -1
  23. package/dist/chunks/compose-DzRYZcqe.cjs +2 -0
  24. package/dist/chunks/{compose-CODnd9-2.cjs.map → compose-DzRYZcqe.cjs.map} +1 -1
  25. package/dist/chunks/dashboard-page-CH87L5nx.cjs +2 -0
  26. package/dist/chunks/{dashboard-page-DwHQY6Ki.cjs.map → dashboard-page-CH87L5nx.cjs.map} +1 -1
  27. package/dist/chunks/dashboard-page-DJ9vOPga.js.map +1 -1
  28. package/dist/chunks/{delegations-DLEEFBlH.js → delegations-0MbJ7CWj.js} +3 -2
  29. package/dist/chunks/{delegations-DLEEFBlH.js.map → delegations-0MbJ7CWj.js.map} +1 -1
  30. package/dist/chunks/delegations-Bc9psOZ3.cjs +2 -0
  31. package/dist/chunks/{delegations-CGj-tZNO.cjs.map → delegations-Bc9psOZ3.cjs.map} +1 -1
  32. package/dist/chunks/{delegations-DqMpI_Nk.js → delegations-DyMGIDpp.js} +3 -2
  33. package/dist/chunks/{delegations-DqMpI_Nk.js.map → delegations-DyMGIDpp.js.map} +1 -1
  34. package/dist/chunks/delegations-vpLtus9g.cjs +2 -0
  35. package/dist/chunks/{delegations-kbMOSEif.cjs.map → delegations-vpLtus9g.cjs.map} +1 -1
  36. package/dist/chunks/{designer-DDSxwtjV.js → designer-C6oIO9Kq.js} +39 -30
  37. package/dist/chunks/{designer-DDSxwtjV.js.map → designer-C6oIO9Kq.js.map} +1 -1
  38. package/dist/chunks/designer-gFUdImeZ.cjs +65 -0
  39. package/dist/chunks/{designer-Cdn10NNl.cjs.map → designer-gFUdImeZ.cjs.map} +1 -1
  40. package/dist/chunks/{detail-DAPz2qyn.js → detail-BgKgMvYx.js} +392 -391
  41. package/dist/chunks/{detail-DAPz2qyn.js.map → detail-BgKgMvYx.js.map} +1 -1
  42. package/dist/chunks/detail-Dnz5aaI-.cjs +2 -0
  43. package/dist/chunks/{detail-CtVu5NTi.cjs.map → detail-Dnz5aaI-.cjs.map} +1 -1
  44. package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -1
  45. package/dist/chunks/format-date-time-D-cx5M8z.cjs +2 -0
  46. package/dist/chunks/{format-date-time-XxBzF0F5.cjs.map → format-date-time-D-cx5M8z.cjs.map} +1 -1
  47. package/dist/chunks/login-9bCXyjbX.cjs.map +1 -1
  48. package/dist/chunks/login-BKxpLibd.js.map +1 -1
  49. package/dist/chunks/notifications-Bc4mgSds.cjs +2 -0
  50. package/dist/chunks/{notifications--hwl-DR0.cjs.map → notifications-Bc4mgSds.cjs.map} +1 -1
  51. package/dist/chunks/notifications-DJ5wzCye.js.map +1 -1
  52. package/dist/chunks/{orgs-DytLvZ_X.js → orgs-B930facb.js} +11 -10
  53. package/dist/chunks/{orgs-DytLvZ_X.js.map → orgs-B930facb.js.map} +1 -1
  54. package/dist/chunks/orgs-BefGgeyc.cjs +2 -0
  55. package/dist/chunks/{orgs-Ni22buHs.cjs.map → orgs-BefGgeyc.cjs.map} +1 -1
  56. package/dist/chunks/providers-BsEn3ikK.cjs +2 -0
  57. package/dist/chunks/{providers-D_zTbkQH.cjs.map → providers-BsEn3ikK.cjs.map} +1 -1
  58. package/dist/chunks/{providers-DEqcuXw9.js → providers-DjLh4oLY.js} +3 -3
  59. package/dist/chunks/{providers-DEqcuXw9.js.map → providers-DjLh4oLY.js.map} +1 -1
  60. package/dist/chunks/{chunk-CMqjfN_6.cjs → rolldown-runtime-BocRIvOZ.cjs} +1 -1
  61. package/dist/chunks/router-adapter--gYs13E8.cjs.map +1 -1
  62. package/dist/chunks/routes-config-fDVHmvXi.cjs.map +1 -1
  63. package/dist/chunks/users-C9LA-Rd7.cjs +2 -0
  64. package/dist/chunks/{users-0HqlM_VQ.cjs.map → users-C9LA-Rd7.cjs.map} +1 -1
  65. package/dist/chunks/users-FWrb3ehW.js.map +1 -1
  66. package/dist/index.cjs +1 -1
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.js +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/next/index.cjs +1 -1
  71. package/dist/next/index.cjs.map +1 -1
  72. package/dist/next/index.js +9 -9
  73. package/dist/next/index.js.map +1 -1
  74. package/dist/next/workflow-chat-route.cjs +1 -1
  75. package/dist/next/workflow-chat-route.cjs.map +1 -1
  76. package/dist/next/workflow-chat-route.js +2 -1
  77. package/dist/next/workflow-chat-route.js.map +1 -1
  78. package/dist/pages/admin/delegations/index.cjs +1 -1
  79. package/dist/pages/admin/delegations/index.cjs.map +1 -1
  80. package/dist/pages/admin/delegations/index.js +1 -1
  81. package/dist/pages/admin/orgs/index.cjs +1 -1
  82. package/dist/pages/admin/orgs/index.cjs.map +1 -1
  83. package/dist/pages/admin/orgs/index.js +1 -1
  84. package/dist/pages/admin/users/index.cjs +1 -1
  85. package/dist/pages/admin/users/index.cjs.map +1 -1
  86. package/dist/pages/cc/index.cjs.map +1 -1
  87. package/dist/pages/dashboard/index.cjs.map +1 -1
  88. package/dist/pages/delegations/index.cjs +1 -1
  89. package/dist/pages/delegations/index.cjs.map +1 -1
  90. package/dist/pages/delegations/index.js +1 -1
  91. package/dist/pages/inbox/index.cjs.map +1 -1
  92. package/dist/pages/instances/detail/index.cjs +1 -1
  93. package/dist/pages/instances/detail/index.cjs.map +1 -1
  94. package/dist/pages/instances/detail/index.js +1 -1
  95. package/dist/pages/instances/new/index.cjs.map +1 -1
  96. package/dist/pages/login/index.cjs.map +1 -1
  97. package/dist/pages/root/index.cjs.map +1 -1
  98. package/dist/pages/search/index.cjs.map +1 -1
  99. package/dist/pages/sent/index.cjs.map +1 -1
  100. package/dist/pages/settings/notifications/index.cjs +1 -1
  101. package/dist/pages/settings/notifications/index.cjs.map +1 -1
  102. package/dist/pages/templates/categories/index.cjs +1 -1
  103. package/dist/pages/templates/categories/index.cjs.map +1 -1
  104. package/dist/pages/templates/compose/index.cjs +1 -1
  105. package/dist/pages/templates/compose/index.cjs.map +1 -1
  106. package/dist/pages/templates/compose/index.js +1 -1
  107. package/dist/pages/templates/designer/index.cjs +1 -1
  108. package/dist/pages/templates/designer/index.cjs.map +1 -1
  109. package/dist/pages/templates/designer/index.js +1 -1
  110. package/dist/pages/templates/index.cjs.map +1 -1
  111. package/dist/pages/templates/versions/index.cjs.map +1 -1
  112. package/dist/views/admin/delegations/index.cjs +1 -1
  113. package/dist/views/admin/delegations/index.js +1 -1
  114. package/dist/views/admin/index.cjs +1 -1
  115. package/dist/views/admin/index.js +2 -2
  116. package/dist/views/admin/orgs/index.cjs +1 -1
  117. package/dist/views/admin/orgs/index.js +1 -1
  118. package/dist/views/admin/users/index.cjs +1 -1
  119. package/dist/views/cc/index.cjs +1 -1
  120. package/dist/views/cc/index.cjs.map +1 -1
  121. package/dist/views/dashboard/index.cjs +1 -1
  122. package/dist/views/dashboard/index.cjs.map +1 -1
  123. package/dist/views/delegations/index.cjs +1 -1
  124. package/dist/views/delegations/index.js +1 -1
  125. package/dist/views/forms/builder/index.cjs +1 -1
  126. package/dist/views/forms/builder/index.js +1 -1
  127. package/dist/views/forms/renderer/form-data-source-field.d.ts +16 -0
  128. package/dist/views/forms/renderer/index.cjs +1 -1
  129. package/dist/views/forms/renderer/index.js +1 -1
  130. package/dist/views/inbox/index.cjs +1 -1
  131. package/dist/views/inbox/index.cjs.map +1 -1
  132. package/dist/views/inbox/index.js.map +1 -1
  133. package/dist/views/instances/detail/index.cjs +1 -1
  134. package/dist/views/instances/detail/index.js +1 -1
  135. package/dist/views/instances/new/index.cjs +1 -1
  136. package/dist/views/instances/new/index.cjs.map +1 -1
  137. package/dist/views/instances/new/index.js +48 -48
  138. package/dist/views/instances/new/index.js.map +1 -1
  139. package/dist/views/search/index.cjs +1 -1
  140. package/dist/views/search/index.cjs.map +1 -1
  141. package/dist/views/sent/index.cjs +1 -1
  142. package/dist/views/sent/index.cjs.map +1 -1
  143. package/dist/views/settings/index.cjs +1 -1
  144. package/dist/views/settings/notifications/index.cjs +1 -1
  145. package/dist/views/templates/categories/index.cjs +1 -1
  146. package/dist/views/templates/compose/index.cjs +1 -1
  147. package/dist/views/templates/compose/index.js +1 -1
  148. package/dist/views/templates/designer/index.cjs +1 -1
  149. package/dist/views/templates/designer/index.js +1 -1
  150. package/dist/views/templates/index.cjs +1 -1
  151. package/dist/views/templates/index.cjs.map +1 -1
  152. package/dist/views/templates/index.js.map +1 -1
  153. package/dist/views/templates/versions/index.cjs +1 -1
  154. package/dist/views/templates/versions/index.cjs.map +1 -1
  155. package/dist/views/templates/versions/index.js.map +1 -1
  156. package/package.json +3 -3
  157. package/dist/chunks/FormBuilderView-D6baVqBY.cjs +0 -3
  158. package/dist/chunks/FormBuilderView-D6baVqBY.cjs.map +0 -1
  159. package/dist/chunks/FormBuilderView-QtREqV4j.js +0 -1477
  160. package/dist/chunks/FormBuilderView-QtREqV4j.js.map +0 -1
  161. package/dist/chunks/FormRendererView-Cw9LiidV.cjs +0 -2
  162. package/dist/chunks/FormRendererView-Cw9LiidV.cjs.map +0 -1
  163. package/dist/chunks/FormRendererView-D8QHLvd0.js +0 -577
  164. package/dist/chunks/FormRendererView-D8QHLvd0.js.map +0 -1
  165. package/dist/chunks/approval-instance-list-page-C408vxE2.cjs +0 -2
  166. package/dist/chunks/categories-DUfldZ_9.cjs +0 -2
  167. package/dist/chunks/compose-CODnd9-2.cjs +0 -2
  168. package/dist/chunks/dashboard-page-DwHQY6Ki.cjs +0 -2
  169. package/dist/chunks/delegations-CGj-tZNO.cjs +0 -2
  170. package/dist/chunks/delegations-kbMOSEif.cjs +0 -2
  171. package/dist/chunks/designer-Cdn10NNl.cjs +0 -65
  172. package/dist/chunks/detail-CtVu5NTi.cjs +0 -2
  173. package/dist/chunks/format-date-time-XxBzF0F5.cjs +0 -2
  174. package/dist/chunks/notifications--hwl-DR0.cjs +0 -2
  175. package/dist/chunks/orgs-Ni22buHs.cjs +0 -2
  176. package/dist/chunks/providers-D_zTbkQH.cjs +0 -2
  177. package/dist/chunks/users-0HqlM_VQ.cjs +0 -2
@@ -1,577 +0,0 @@
1
- "use client";
2
- import { t as e } from "./bpm-form-field-Cao0rMol.js";
3
- import { useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
4
- import { AutoComplete as o, Button as s, CheckboxGroup as c, DatePicker as l, DateTimePicker as u, Input as d, RadioGroup as f, Select as p, Textarea as m, Toggle as h, Typography as g, Upload as _ } from "@mezzanine-ui/react";
5
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
6
- import { buildFormRendererValues as b, clampOptionalNumber as x, formatDatePickerValue as S, formatDateTimePickerValue as C, isFormRendererFieldReadonly as w, isFormRendererFieldRequired as T, mergeFormDataSourceOptions as E, parseOptionalNumberInput as D, previewFormFieldOptions as ee, previewResolveFormFieldOptions as te, readDatePickerValue as O, readFieldOptionAsSelectOption as k, readFormDataSourceErrorCode as ne, readFormDataSourceErrorMessage as re, readFormDataSourceSelectedValues as ie, readFormDataSourceValueSignature as A, readFormFieldOptions as ae, readMissingFormDataSourceDependencies as oe, readMissingFormDataSourceOptionValues as j, readSelectOption as M, readSelectedFormDataSourceOptions as N, readVisibleFormRendererFields as se, resolveFormFieldOptions as ce } from "@rytass/bpm-core-client/form";
7
- import { isFormDataSourceFieldDefinition as le, isFormStaticOptionFieldDefinition as P, readFormFieldSelectionMode as F } from "@rytass/bpm-core-shared/form";
8
- //#region src/views/forms/renderer/form-data-source-field.ts
9
- var ue = {
10
- canRetry: !1,
11
- error: null,
12
- hasValue: !1,
13
- hasNextPage: !1,
14
- invalidValues: [],
15
- onReachBottom: () => void 0,
16
- onSearch: () => void 0,
17
- options: [],
18
- retry: () => void 0,
19
- status: "IDLE"
20
- }, I = [], de = 10, fe = ["FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED", "FORM_DATA_SOURCE_SEARCH_TOO_SHORT"];
21
- function L(e) {
22
- let o = le(e.field) ? e.field : null, s = o ? e.optionSnapshots?.[o.fieldKey] : void 0, c = o ? JSON.stringify({
23
- dataSource: o.dataSource,
24
- fieldKey: o.fieldKey,
25
- type: o.type
26
- }) : "", l = JSON.stringify(s ?? null), u = r(() => s?.options ?? [], [l]), d = JSON.stringify(e.formData), f = JSON.stringify(e.initialFormData ?? {}), p = JSON.stringify(e.schema), m = JSON.stringify(e.uiSchema), h = e.context?.kind, g = e.context?.kind === "runtime" ? e.context.instanceId : void 0, _ = e.context?.kind === "runtime" ? e.context.templateId : void 0, v = o ? e.formData[o.fieldKey] : void 0, y = A(v), b = r(() => ie(v), [y]), x = b.length > 0, S = o ? JSON.stringify({
27
- bindings: o.dataSource.bindings.map((t) => t.from.kind === "FIELD" ? {
28
- fieldKey: t.from.fieldKey,
29
- value: e.formData[t.from.fieldKey]
30
- } : { value: t.from.value }),
31
- value: e.initialFormData !== void 0 || e.initialValue !== void 0 ? e.formData[o.fieldKey] : void 0
32
- }) : "", C = r(() => {
33
- if (h === "preview") return { kind: "preview" };
34
- if (h === "runtime" && !e.readonly) return {
35
- instanceId: g,
36
- kind: "runtime",
37
- templateId: _
38
- };
39
- }, [
40
- g,
41
- h,
42
- _,
43
- e.readonly
44
- ]), w = o ? (e.initialFormData !== void 0 || e.initialValue !== void 0) && A(e.initialValue) !== y : !1, T = o ? e.initialFormData !== void 0 && o.dataSource.bindings.some((t) => t.from.kind === "FIELD" ? A(e.initialFormData?.[t.from.fieldKey]) !== A(e.formData[t.from.fieldKey]) : !1) : !1, D = !!((s || x) && (w || T)), O = !!(o && C && D && x), k = he({
45
- hasSnapshot: !!s,
46
- hasValue: x,
47
- isStale: D,
48
- readonly: e.readonly
49
- }), j = !!(o && C && o.type !== "autocomplete"), M = ge(D, j && o !== null && oe(o, e.formData).length > 0), [se, P] = a([]), [F, I] = a(""), [L, R] = a(null), [z, pe] = a(null), [ye, V] = a(() => o ? j ? M : k : "IDLE"), [be, H] = a(null), U = i(0), W = i(0), G = i(0), K = i(null), q = i(null), J = i({
50
- cursor: null,
51
- searchText: ""
52
- }), Y = r(() => Object.entries(e.formData).reduce((e, [t, n]) => n === void 0 ? e : {
53
- ...e,
54
- [t]: n
55
- }, {}), [d]), X = r(() => E(u, se), [se, u]), Z = z && z.signature === S ? z : null, xe = O && !Z, Q = me({
56
- options: X,
57
- resolution: Z,
58
- resolvePending: xe,
59
- value: v
60
- }), $ = t((t, n) => {
61
- if (!o || !C) return;
62
- let r = W.current + 1;
63
- W.current = r, J.current = {
64
- cursor: n,
65
- searchText: t
66
- }, K.current?.abort();
67
- let i = new AbortController();
68
- K.current = i, V(M), H(null), (C.kind === "preview" ? ee({
69
- cursor: n,
70
- fieldKey: o.fieldKey,
71
- formData: Y,
72
- schema: e.schema,
73
- searchText: t,
74
- signal: i.signal,
75
- uiSchema: e.uiSchema
76
- }) : ae({
77
- cursor: n,
78
- fieldKey: o.fieldKey,
79
- formData: Y,
80
- instanceId: C.instanceId ?? null,
81
- searchText: t,
82
- signal: i.signal,
83
- templateId: C.templateId ?? null
84
- })).then((a) => {
85
- B(i, W, r) || (P((t) => E(N(o ? e.formData[o.fieldKey] : void 0, t), n ? t : [], a.options)), R(a.nextCursor), H(null), U.current = n ? U.current + a.options.length : a.options.length, a.nextCursor && a.options.length > 0 && U.current < de && Se.current(t, a.nextCursor), V(a.waitingForFieldKeys.length ? "WAITING_FOR_DEPENDENCIES" : "VALID"));
86
- }).catch((e) => {
87
- if (B(i, W, r)) return;
88
- let t = re(e) ?? "選項來源暫時無法使用。", n = ne(e);
89
- H(t), V(_e(!!(n && fe.includes(n)), x));
90
- });
91
- }, [
92
- c,
93
- C,
94
- x,
95
- M,
96
- Y,
97
- p,
98
- m
99
- ]), Se = i($);
100
- Se.current = $;
101
- let Ce = t(() => {
102
- if (!o || !C || b.length === 0) return;
103
- let t = S, n = G.current + 1;
104
- G.current = n, q.current?.abort();
105
- let r = new AbortController();
106
- q.current = r, H(null), (C.kind === "preview" ? te({
107
- fieldKey: o.fieldKey,
108
- formData: Y,
109
- schema: e.schema,
110
- signal: r.signal,
111
- uiSchema: e.uiSchema,
112
- values: b
113
- }) : ce({
114
- fieldKey: o.fieldKey,
115
- formData: Y,
116
- instanceId: C.instanceId ?? null,
117
- signal: r.signal,
118
- templateId: C.templateId ?? null,
119
- values: b
120
- })).then((e) => {
121
- if (!B(r, G, n)) {
122
- if (e.waitingForFieldKeys.length) {
123
- V("WAITING_FOR_DEPENDENCIES");
124
- return;
125
- }
126
- P((t) => E(t, e.options)), pe({
127
- signature: t,
128
- unresolvedValues: e.unresolvedValues
129
- }), V("VALID");
130
- }
131
- }).catch((e) => {
132
- B(r, G, n) || (V("UNAVAILABLE"), H(re(e) ?? "選項來源暫時無法使用。"));
133
- });
134
- }, [
135
- S,
136
- c,
137
- C,
138
- Y,
139
- p,
140
- b,
141
- m
142
- ]), we = i(Ce);
143
- we.current = Ce, n(() => {
144
- if (W.current += 1, K.current?.abort(), P((e) => N(v, e)), R((e) => e === null ? e : null), I((e) => e && ""), H((e) => e && null), !o) {
145
- V("IDLE");
146
- return;
147
- }
148
- if (!j) {
149
- V(k);
150
- return;
151
- }
152
- Se.current("", null);
153
- }, [
154
- j,
155
- c,
156
- C,
157
- S,
158
- f,
159
- e.readonly,
160
- M,
161
- k,
162
- l
163
- ]), n(() => {
164
- O && we.current();
165
- }, [
166
- S,
167
- C,
168
- O
169
- ]), n(() => () => {
170
- K.current?.abort(), q.current?.abort();
171
- }, []);
172
- let Te = t((e) => {
173
- I(e), P((e) => N(v, e)), R(null), $(e, null);
174
- }, [$]), Ee = t(() => {
175
- L && $(F, L);
176
- }, [
177
- $,
178
- L,
179
- F
180
- ]), De = t(() => {
181
- C && ($(J.current.searchText, J.current.cursor), O && we.current());
182
- }, [
183
- C,
184
- $,
185
- O
186
- ]);
187
- return o ? {
188
- canRetry: !!C,
189
- error: be,
190
- hasValue: x,
191
- hasNextPage: !!L,
192
- invalidValues: Q,
193
- onReachBottom: Ee,
194
- onSearch: Te,
195
- options: X,
196
- retry: De,
197
- status: ve({
198
- invalidValues: Q,
199
- resolvePending: xe,
200
- status: ye
201
- })
202
- } : ue;
203
- }
204
- function R(e) {
205
- switch (e.status) {
206
- case "WAITING_FOR_DEPENDENCIES": return "請先填寫相依欄位。";
207
- case "STALE": return "選項需要重新載入或驗證。";
208
- case "INVALID": return e.invalidValues.length ? `無法辨識選項:${e.invalidValues.join("、")}` : "目前選項已失效,請重新選擇。";
209
- case "UNAVAILABLE": return e.error ?? "選項來源暫時無法使用。";
210
- case "VALID": return e.error ?? (e.options.length ? null : "目前沒有可用選項。");
211
- default: return e.error;
212
- }
213
- }
214
- function z(e) {
215
- return e.hasValue && e.status !== "VALID";
216
- }
217
- function pe(e) {
218
- let t = e.filter(z);
219
- return t.length === 0 ? null : t.every((e) => e.status === "LOADING" || e.status === "STALE") ? "選項驗證中,請稍候再送出。" : "請先完成動態選項驗證。";
220
- }
221
- function me(e) {
222
- return e.resolution ? e.resolution.unresolvedValues : e.resolvePending ? I : j(e.value, e.options);
223
- }
224
- function he(e) {
225
- return e.isStale ? "STALE" : e.hasSnapshot ? "VALID" : e.readonly && e.hasValue ? "UNAVAILABLE" : "IDLE";
226
- }
227
- function ge(e, t) {
228
- return t ? "WAITING_FOR_DEPENDENCIES" : e ? "STALE" : "LOADING";
229
- }
230
- function _e(e, t) {
231
- return e ? t ? "VALID" : "IDLE" : "UNAVAILABLE";
232
- }
233
- function ve(e) {
234
- return e.status === "LOADING" || e.status === "UNAVAILABLE" || e.status === "WAITING_FOR_DEPENDENCIES" ? e.status : e.invalidValues.length ? "INVALID" : e.resolvePending ? "STALE" : e.status;
235
- }
236
- function B(e, t, n) {
237
- return e.signal.aborted || t.current !== n;
238
- }
239
- //#endregion
240
- //#region src/views/forms/renderer/FormRendererView.tsx
241
- var ye = {
242
- alignItems: "start",
243
- display: "grid",
244
- gap: 12,
245
- gridTemplateColumns: "repeat(12, minmax(0, 1fr))"
246
- }, V = { gridColumn: "1 / -1" }, be = {
247
- alignItems: "start",
248
- display: "grid",
249
- gap: 8,
250
- minWidth: 0
251
- }, H = {
252
- minWidth: "100%",
253
- width: "100%"
254
- };
255
- function U(e) {
256
- e && (e.style.width = "100%");
257
- }
258
- function W({ dataSourceContext: e, dataSourceInitialValues: t, emptyText: o = "尚未建立欄位。", errors: s = {}, maxWidth: c, onChange: l, onDataSourceStateChange: u, onUploadAttachment: d, optionSnapshots: f, readonly: p = !1, schema: m, singleColumn: h = !1, uiSchema: _, value: y }) {
259
- let [x, S] = a(() => b(m.fields, y ?? {})), C = r(() => b(m.fields, y ?? x), [
260
- x,
261
- m.fields,
262
- y
263
- ]), w = i(C), T = r(() => se(m, _, C), [
264
- m,
265
- _,
266
- C
267
- ]);
268
- n(() => {
269
- w.current = C;
270
- }, [C]), n(() => {
271
- S((e) => b(m.fields, y ?? e));
272
- }, [m.fields, y]);
273
- function E(e, t) {
274
- let n = {
275
- ...w.current,
276
- [e]: t
277
- };
278
- w.current = n, y || S(n), l?.(n);
279
- }
280
- return T.length ? /* @__PURE__ */ v("div", {
281
- style: {
282
- ...ye,
283
- ...h ? {
284
- maxWidth: c,
285
- width: "100%"
286
- } : {}
287
- },
288
- children: T.map((n) => /* @__PURE__ */ v(G, {
289
- dataSourceContext: e,
290
- dataSourceInitialValues: t,
291
- field: n,
292
- error: s[n.fieldKey] ?? null,
293
- fields: m.fields,
294
- onChange: E,
295
- onDataSourceStateChange: u,
296
- onUploadAttachment: d,
297
- optionSnapshots: f,
298
- readonly: p,
299
- schema: m,
300
- style: {
301
- ...be,
302
- gridColumn: `span ${h ? 12 : Y(n, _)}`
303
- },
304
- value: C[n.fieldKey],
305
- values: C,
306
- uiSchema: _
307
- }, n.fieldKey))
308
- }) : /* @__PURE__ */ v("div", {
309
- style: ye,
310
- children: /* @__PURE__ */ v(g, {
311
- color: "text-neutral",
312
- style: V,
313
- variant: "body",
314
- children: m.fields.length > 0 ? "目前條件下沒有可填寫欄位。" : o
315
- })
316
- });
317
- }
318
- function G({ dataSourceContext: t, dataSourceInitialValues: r, error: i, field: a, fields: o, onChange: c, onDataSourceStateChange: l, onUploadAttachment: u, optionSnapshots: d, readonly: f, schema: p, style: m, value: h, values: _, uiSchema: b }) {
319
- let x = T(a, o, _), S = f || w(a, o, _), C = L({
320
- context: t,
321
- field: a,
322
- formData: _,
323
- initialFormData: r,
324
- initialValue: r?.[a.fieldKey],
325
- optionSnapshots: d,
326
- readonly: S,
327
- schema: p,
328
- uiSchema: b
329
- }), E = R(C);
330
- return n(() => {
331
- le(a) && l?.(a.fieldKey, {
332
- hasValue: C.hasValue,
333
- invalidValues: C.invalidValues,
334
- status: C.status
335
- });
336
- }, [
337
- JSON.stringify({
338
- hasValue: C.hasValue,
339
- invalidValues: C.invalidValues,
340
- status: C.status
341
- }),
342
- a.fieldKey,
343
- l
344
- ]), /* @__PURE__ */ y("div", {
345
- "data-form-field-key": a.fieldKey,
346
- style: m,
347
- children: [
348
- /* @__PURE__ */ v(e, {
349
- label: a.label,
350
- name: a.fieldKey,
351
- required: x,
352
- children: q(a, h, S, c, u, t, C)
353
- }),
354
- i ? /* @__PURE__ */ v(g, {
355
- color: "text-error",
356
- variant: "caption",
357
- children: i
358
- }) : null,
359
- E ? /* @__PURE__ */ y("div", {
360
- style: K,
361
- children: [/* @__PURE__ */ v(g, {
362
- color: C.status === "INVALID" || C.status === "UNAVAILABLE" ? "text-error" : "text-neutral",
363
- variant: "caption",
364
- children: E
365
- }), C.status === "UNAVAILABLE" && C.canRetry ? /* @__PURE__ */ v(s, {
366
- onClick: C.retry,
367
- size: "sub",
368
- type: "button",
369
- variant: "base-ghost",
370
- children: "重試"
371
- }) : null]
372
- }) : null
373
- ]
374
- });
375
- }
376
- var K = {
377
- alignItems: "center",
378
- display: "flex",
379
- gap: 8
380
- };
381
- function q(e, t, n, r, i, a, o) {
382
- if (e.type === "textarea") return /* @__PURE__ */ v(m, {
383
- onChange: (t) => r(e.fieldKey, t.target.value),
384
- placeholder: e.placeholder ?? "請輸入多行文字",
385
- readOnly: n,
386
- ref: U,
387
- rows: 3,
388
- style: H,
389
- value: X(t)
390
- });
391
- if (e.type === "boolean") return /* @__PURE__ */ v(h, {
392
- checked: t === !0,
393
- disabled: n,
394
- label: "啟用",
395
- onChange: (t) => r(e.fieldKey, t.target.checked)
396
- });
397
- if (le(e)) return J(e, t, n, r, a, o);
398
- if (P(e) && e.type === "checkbox") {
399
- let i = e.options.map(k);
400
- return /* @__PURE__ */ v(p, {
401
- mode: "multiple",
402
- onChange: (t) => r(e.fieldKey, t?.length ? t.map((e) => e.id) : void 0),
403
- options: i,
404
- placeholder: e.placeholder ?? "請選擇一或多個選項",
405
- readOnly: n,
406
- value: i.filter((e) => Z(t).includes(e.id))
407
- });
408
- }
409
- if (P(e)) {
410
- let i = e.options.map(k);
411
- return /* @__PURE__ */ v(p, {
412
- onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
413
- options: i,
414
- placeholder: e.placeholder ?? "請選擇",
415
- readOnly: n,
416
- value: M(i, X(t))
417
- });
418
- }
419
- return e.type === "file_upload" ? /* @__PURE__ */ v(_, {
420
- accept: e.acceptedMimeTypes?.join(","),
421
- disabled: n,
422
- maxFiles: e.maxFiles,
423
- mode: "button-list",
424
- ...(e.maxFiles ?? 1) > 1 ? { multiple: !0 } : {},
425
- onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
426
- onUpload: async (t) => Promise.all(t.map(async (t) => ({
427
- file: t,
428
- id: (i ? await i(e, t) : { id: `${t.name}-${t.lastModified}` }).id,
429
- progress: 100,
430
- status: "done"
431
- }))),
432
- size: "sub"
433
- }) : e.type === "date" ? /* @__PURE__ */ v(l, {
434
- format: "YYYY-MM-DD",
435
- fullWidth: !0,
436
- onChange: (t) => r(e.fieldKey, S(t)),
437
- placeholder: e.placeholder ?? Q(e.type),
438
- readOnly: n,
439
- value: O(t)
440
- }) : e.type === "datetime" ? /* @__PURE__ */ v(u, {
441
- formatDate: "YYYY-MM-DD",
442
- formatTime: "HH:mm",
443
- fullWidth: !0,
444
- hideSecond: !0,
445
- onChange: (t) => r(e.fieldKey, C(t)),
446
- placeholderLeft: "選擇日期",
447
- placeholderRight: "選擇時間",
448
- readOnly: n,
449
- value: O(t)
450
- }) : e.type === "number" || e.type === "money" ? /* @__PURE__ */ v(d, {
451
- fullWidth: !0,
452
- max: e.maximum,
453
- min: e.minimum,
454
- onChange: (t) => r(e.fieldKey, x(D(t.target.value), {
455
- max: e.maximum,
456
- min: e.minimum
457
- })),
458
- placeholder: e.placeholder ?? Q(e.type),
459
- ...n ? { readonly: !0 } : {},
460
- showSpinner: !0,
461
- value: xe(t),
462
- variant: "measure"
463
- }) : /* @__PURE__ */ v(d, {
464
- fullWidth: !0,
465
- onChange: (t) => r(e.fieldKey, t.target.value),
466
- placeholder: e.placeholder ?? Q(e.type),
467
- ...n ? { readonly: !0 } : {},
468
- value: X(t),
469
- variant: "base"
470
- });
471
- }
472
- function J(e, t, n, r, i, a) {
473
- let s = a.options.map(k), l = N(t, a.options).map(k), u = a.status === "LOADING", d = a.status === "WAITING_FOR_DEPENDENCIES", m = !!i && !n, h = n || d, g = n;
474
- return e.type === "autocomplete" ? F(e) === "multiple" ? /* @__PURE__ */ v(o, {
475
- asyncData: m,
476
- clearSearchText: !0,
477
- disabled: g,
478
- disabledOptionsFilter: m,
479
- globalPortal: !0,
480
- loading: u,
481
- mode: "multiple",
482
- onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
483
- onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
484
- onSearch: m ? a.onSearch : void 0,
485
- options: s,
486
- placeholder: e.placeholder ?? "請輸入或選擇",
487
- readOnly: n,
488
- searchDebounceTime: 300,
489
- value: l
490
- }) : /* @__PURE__ */ v(o, {
491
- asyncData: m,
492
- clearSearchText: !0,
493
- disabled: g,
494
- disabledOptionsFilter: m,
495
- globalPortal: !0,
496
- loading: u,
497
- mode: "single",
498
- onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
499
- onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
500
- onSearch: m ? a.onSearch : void 0,
501
- options: s,
502
- placeholder: e.placeholder ?? "請輸入或選擇",
503
- readOnly: n,
504
- searchDebounceTime: 300,
505
- value: l[0] ?? null
506
- }) : e.type === "radio" ? /* @__PURE__ */ v(f, {
507
- disabled: h,
508
- name: e.fieldKey,
509
- onChange: (t) => r(e.fieldKey, t.target.value || void 0),
510
- options: s,
511
- value: X(t)
512
- }) : e.type === "checkbox" ? /* @__PURE__ */ v(c, {
513
- disabled: h,
514
- name: e.fieldKey,
515
- onChange: (t) => r(e.fieldKey, t.target.values.length ? t.target.values : void 0),
516
- options: s.map((e) => ({
517
- label: e.name,
518
- value: e.id
519
- })),
520
- value: [...Z(t)]
521
- }) : F(e) === "multiple" ? /* @__PURE__ */ v(p, {
522
- disabled: h,
523
- loading: u,
524
- mode: "multiple",
525
- onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
526
- onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
527
- options: s,
528
- placeholder: e.placeholder ?? "請選擇一或多個選項",
529
- readOnly: n,
530
- value: l
531
- }) : /* @__PURE__ */ v(p, {
532
- disabled: h,
533
- loading: u,
534
- onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
535
- onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
536
- options: s,
537
- placeholder: e.placeholder ?? "請選擇",
538
- readOnly: n,
539
- value: l[0] ?? null
540
- });
541
- }
542
- function Y(e, t) {
543
- return {
544
- FULL: 12,
545
- HALF: 6,
546
- THIRD: 4
547
- }[t.layout.find((t) => t.fieldKey === e.fieldKey)?.width ?? "FULL"];
548
- }
549
- function X(e) {
550
- return typeof e == "string" ? e : "";
551
- }
552
- function Z(e) {
553
- return Array.isArray(e) ? e : [];
554
- }
555
- function xe(e) {
556
- return typeof e == "number" ? String(e) : "";
557
- }
558
- function Q(e) {
559
- return {
560
- boolean: "",
561
- autocomplete: "請輸入或選擇",
562
- checkbox: "請選擇一或多個選項",
563
- date: "請選擇日期",
564
- datetime: "請選擇日期與時間",
565
- file_upload: "請上傳附件",
566
- money: "請輸入金額",
567
- number: "請輸入數字",
568
- radio: "請選擇一個選項",
569
- select: "請選擇一個選項",
570
- text: "請輸入文字",
571
- textarea: "請輸入多行文字"
572
- }[e];
573
- }
574
- //#endregion
575
- export { L as a, pe as i, z as n, R as r, W as t };
576
-
577
- //# sourceMappingURL=FormRendererView-D8QHLvd0.js.map