@lumal/core 0.0.1-beta

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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/LumalThemeSettingsPanel-BFkZzwEW.js +685 -0
  4. package/dist/LumalThemeSettingsPanel-C6aPhgUX.cjs +1 -0
  5. package/dist/_plugin-vue_export-helper-B3ysoDQm.js +8 -0
  6. package/dist/_plugin-vue_export-helper-BTmtiIyf.cjs +1 -0
  7. package/dist/auth.cjs +1 -0
  8. package/dist/auth.js +127 -0
  9. package/dist/components-DJiHYQQB.cjs +2 -0
  10. package/dist/components-DYmKh-eF.js +2206 -0
  11. package/dist/components.cjs +1 -0
  12. package/dist/components.js +3 -0
  13. package/dist/composables-C4twj5Ov.cjs +1 -0
  14. package/dist/composables-C9EuCUjj.js +130 -0
  15. package/dist/composables.cjs +1 -0
  16. package/dist/composables.js +148 -0
  17. package/dist/core.css +2 -0
  18. package/dist/dictionary-B7tsaVqB.js +19 -0
  19. package/dist/dictionary-ClEWtQCU.cjs +1 -0
  20. package/dist/dictionary.cjs +1 -0
  21. package/dist/dictionary.js +3 -0
  22. package/dist/directive-D-fB5qbY.js +16 -0
  23. package/dist/directive-DSVr7QvO.cjs +1 -0
  24. package/dist/directives.cjs +1 -0
  25. package/dist/directives.js +11 -0
  26. package/dist/index.cjs +1 -0
  27. package/dist/index.js +88 -0
  28. package/dist/layout-C8H9wuQa.js +2075 -0
  29. package/dist/layout-ZnyG9X3N.cjs +1 -0
  30. package/dist/layout.cjs +1 -0
  31. package/dist/layout.js +2 -0
  32. package/dist/permission-6sXtjGMS.cjs +1 -0
  33. package/dist/permission-CCkqvnWg.js +104 -0
  34. package/dist/permission.cjs +1 -0
  35. package/dist/permission.js +3 -0
  36. package/dist/request.cjs +1 -0
  37. package/dist/request.js +277 -0
  38. package/dist/router.cjs +1 -0
  39. package/dist/router.js +510 -0
  40. package/dist/src/app/createLumalAdmin.d.ts +4 -0
  41. package/dist/src/app/createLumalAdmin.d.ts.map +1 -0
  42. package/dist/src/app/default-components.d.ts +4 -0
  43. package/dist/src/app/default-components.d.ts.map +1 -0
  44. package/dist/src/app/index.d.ts +3 -0
  45. package/dist/src/app/index.d.ts.map +1 -0
  46. package/dist/src/app/types.d.ts +41 -0
  47. package/dist/src/app/types.d.ts.map +1 -0
  48. package/dist/src/auth/adapter.d.ts +3 -0
  49. package/dist/src/auth/adapter.d.ts.map +1 -0
  50. package/dist/src/auth/createAuthSession.d.ts +8 -0
  51. package/dist/src/auth/createAuthSession.d.ts.map +1 -0
  52. package/dist/src/auth/index.d.ts +8 -0
  53. package/dist/src/auth/index.d.ts.map +1 -0
  54. package/dist/src/auth/redirect.d.ts +8 -0
  55. package/dist/src/auth/redirect.d.ts.map +1 -0
  56. package/dist/src/auth/session-expired.d.ts +5 -0
  57. package/dist/src/auth/session-expired.d.ts.map +1 -0
  58. package/dist/src/auth/session.d.ts +10 -0
  59. package/dist/src/auth/session.d.ts.map +1 -0
  60. package/dist/src/auth/storage.d.ts +7 -0
  61. package/dist/src/auth/storage.d.ts.map +1 -0
  62. package/dist/src/auth/types.d.ts +68 -0
  63. package/dist/src/auth/types.d.ts.map +1 -0
  64. package/dist/src/components/crud-table/LumalCrudEditor.vue.d.ts +41 -0
  65. package/dist/src/components/crud-table/LumalCrudEditor.vue.d.ts.map +1 -0
  66. package/dist/src/components/crud-table/LumalCrudTable.vue.d.ts +151 -0
  67. package/dist/src/components/crud-table/LumalCrudTable.vue.d.ts.map +1 -0
  68. package/dist/src/components/crud-table/index.d.ts +4 -0
  69. package/dist/src/components/crud-table/index.d.ts.map +1 -0
  70. package/dist/src/components/crud-table/schema.d.ts +4 -0
  71. package/dist/src/components/crud-table/schema.d.ts.map +1 -0
  72. package/dist/src/components/crud-table/types.d.ts +165 -0
  73. package/dist/src/components/crud-table/types.d.ts.map +1 -0
  74. package/dist/src/components/crud-table/useCrudData.d.ts +20 -0
  75. package/dist/src/components/crud-table/useCrudData.d.ts.map +1 -0
  76. package/dist/src/components/crud-table/useCrudDialog.d.ts +19 -0
  77. package/dist/src/components/crud-table/useCrudDialog.d.ts.map +1 -0
  78. package/dist/src/components/crud-table/useCrudQuery.d.ts +18 -0
  79. package/dist/src/components/crud-table/useCrudQuery.d.ts.map +1 -0
  80. package/dist/src/components/crud-table/useCrudSelection.d.ts +9 -0
  81. package/dist/src/components/crud-table/useCrudSelection.d.ts.map +1 -0
  82. package/dist/src/components/info-table/LumalInfoTable.vue.d.ts +12 -0
  83. package/dist/src/components/info-table/LumalInfoTable.vue.d.ts.map +1 -0
  84. package/dist/src/components/info-table/index.d.ts +3 -0
  85. package/dist/src/components/info-table/index.d.ts.map +1 -0
  86. package/dist/src/components/info-table/types.d.ts +15 -0
  87. package/dist/src/components/info-table/types.d.ts.map +1 -0
  88. package/dist/src/components/page/LumalPage.vue.d.ts +36 -0
  89. package/dist/src/components/page/LumalPage.vue.d.ts.map +1 -0
  90. package/dist/src/components/page/index.d.ts +2 -0
  91. package/dist/src/components/page/index.d.ts.map +1 -0
  92. package/dist/src/components/page-layout/LumalPageLayout.vue.d.ts +38 -0
  93. package/dist/src/components/page-layout/LumalPageLayout.vue.d.ts.map +1 -0
  94. package/dist/src/components/page-layout/index.d.ts +3 -0
  95. package/dist/src/components/page-layout/index.d.ts.map +1 -0
  96. package/dist/src/components/page-layout/types.d.ts +9 -0
  97. package/dist/src/components/page-layout/types.d.ts.map +1 -0
  98. package/dist/src/components/pagination/LumalPagination.vue.d.ts +31 -0
  99. package/dist/src/components/pagination/LumalPagination.vue.d.ts.map +1 -0
  100. package/dist/src/components/pagination/index.d.ts +3 -0
  101. package/dist/src/components/pagination/index.d.ts.map +1 -0
  102. package/dist/src/components/pagination/types.d.ts +5 -0
  103. package/dist/src/components/pagination/types.d.ts.map +1 -0
  104. package/dist/src/components/schema-form/LumalSchemaForm.vue.d.ts +78 -0
  105. package/dist/src/components/schema-form/LumalSchemaForm.vue.d.ts.map +1 -0
  106. package/dist/src/components/schema-form/index.d.ts +4 -0
  107. package/dist/src/components/schema-form/index.d.ts.map +1 -0
  108. package/dist/src/components/schema-form/normalize.d.ts +11 -0
  109. package/dist/src/components/schema-form/normalize.d.ts.map +1 -0
  110. package/dist/src/components/schema-form/types.d.ts +103 -0
  111. package/dist/src/components/schema-form/types.d.ts.map +1 -0
  112. package/dist/src/components/schema-form/types.type-test.d.ts +2 -0
  113. package/dist/src/components/schema-form/types.type-test.d.ts.map +1 -0
  114. package/dist/src/components/schema-table/LumalSchemaTable.vue.d.ts +108 -0
  115. package/dist/src/components/schema-table/LumalSchemaTable.vue.d.ts.map +1 -0
  116. package/dist/src/components/schema-table/LumalSchemaTableCell.vue.d.ts +8 -0
  117. package/dist/src/components/schema-table/LumalSchemaTableCell.vue.d.ts.map +1 -0
  118. package/dist/src/components/schema-table/cell.d.ts +13 -0
  119. package/dist/src/components/schema-table/cell.d.ts.map +1 -0
  120. package/dist/src/components/schema-table/index.d.ts +6 -0
  121. package/dist/src/components/schema-table/index.d.ts.map +1 -0
  122. package/dist/src/components/schema-table/normalize.d.ts +8 -0
  123. package/dist/src/components/schema-table/normalize.d.ts.map +1 -0
  124. package/dist/src/components/schema-table/types.d.ts +66 -0
  125. package/dist/src/components/schema-table/types.d.ts.map +1 -0
  126. package/dist/src/components/schema-table/types.type-test.d.ts +2 -0
  127. package/dist/src/components/schema-table/types.type-test.d.ts.map +1 -0
  128. package/dist/src/composables/index.d.ts +11 -0
  129. package/dist/src/composables/index.d.ts.map +1 -0
  130. package/dist/src/composables/useConfirmAction.d.ts +21 -0
  131. package/dist/src/composables/useConfirmAction.d.ts.map +1 -0
  132. package/dist/src/composables/useFullscreen.d.ts +14 -0
  133. package/dist/src/composables/useFullscreen.d.ts.map +1 -0
  134. package/dist/src/composables/usePagination.d.ts +36 -0
  135. package/dist/src/composables/usePagination.d.ts.map +1 -0
  136. package/dist/src/composables/usePersistentState.d.ts +9 -0
  137. package/dist/src/composables/usePersistentState.d.ts.map +1 -0
  138. package/dist/src/composables/useSelection.d.ts +20 -0
  139. package/dist/src/composables/useSelection.d.ts.map +1 -0
  140. package/dist/src/dictionary/composables.d.ts +15 -0
  141. package/dist/src/dictionary/composables.d.ts.map +1 -0
  142. package/dist/src/dictionary/context.d.ts +10 -0
  143. package/dist/src/dictionary/context.d.ts.map +1 -0
  144. package/dist/src/dictionary/fetcher.d.ts +4 -0
  145. package/dist/src/dictionary/fetcher.d.ts.map +1 -0
  146. package/dist/src/dictionary/index.d.ts +8 -0
  147. package/dist/src/dictionary/index.d.ts.map +1 -0
  148. package/dist/src/dictionary/normalize.d.ts +5 -0
  149. package/dist/src/dictionary/normalize.d.ts.map +1 -0
  150. package/dist/src/dictionary/store.d.ts +4 -0
  151. package/dist/src/dictionary/store.d.ts.map +1 -0
  152. package/dist/src/dictionary/types.d.ts +53 -0
  153. package/dist/src/dictionary/types.d.ts.map +1 -0
  154. package/dist/src/directives/index.d.ts +16 -0
  155. package/dist/src/directives/index.d.ts.map +1 -0
  156. package/dist/src/exports/components.d.ts +16 -0
  157. package/dist/src/exports/components.d.ts.map +1 -0
  158. package/dist/src/index.d.ts +6 -0
  159. package/dist/src/index.d.ts.map +1 -0
  160. package/dist/src/layout/LumalBreadcrumb.vue.d.ts +28 -0
  161. package/dist/src/layout/LumalBreadcrumb.vue.d.ts.map +1 -0
  162. package/dist/src/layout/LumalContent.vue.d.ts +18 -0
  163. package/dist/src/layout/LumalContent.vue.d.ts.map +1 -0
  164. package/dist/src/layout/LumalGlobalSearch.vue.d.ts +25 -0
  165. package/dist/src/layout/LumalGlobalSearch.vue.d.ts.map +1 -0
  166. package/dist/src/layout/LumalHeader.vue.d.ts +43 -0
  167. package/dist/src/layout/LumalHeader.vue.d.ts.map +1 -0
  168. package/dist/src/layout/LumalLayout.vue.d.ts +98 -0
  169. package/dist/src/layout/LumalLayout.vue.d.ts.map +1 -0
  170. package/dist/src/layout/LumalMenuBadge.vue.d.ts +16 -0
  171. package/dist/src/layout/LumalMenuBadge.vue.d.ts.map +1 -0
  172. package/dist/src/layout/LumalRouterView.vue.d.ts +24 -0
  173. package/dist/src/layout/LumalRouterView.vue.d.ts.map +1 -0
  174. package/dist/src/layout/LumalSidebar.vue.d.ts +29 -0
  175. package/dist/src/layout/LumalSidebar.vue.d.ts.map +1 -0
  176. package/dist/src/layout/LumalSidebarMenuItem.vue.d.ts +16 -0
  177. package/dist/src/layout/LumalSidebarMenuItem.vue.d.ts.map +1 -0
  178. package/dist/src/layout/LumalTabs.vue.d.ts +76 -0
  179. package/dist/src/layout/LumalTabs.vue.d.ts.map +1 -0
  180. package/dist/src/layout/LumalTopNav.vue.d.ts +27 -0
  181. package/dist/src/layout/LumalTopNav.vue.d.ts.map +1 -0
  182. package/dist/src/layout/LumalTopNavMenuItem.vue.d.ts +15 -0
  183. package/dist/src/layout/LumalTopNavMenuItem.vue.d.ts.map +1 -0
  184. package/dist/src/layout/index.d.ts +18 -0
  185. package/dist/src/layout/index.d.ts.map +1 -0
  186. package/dist/src/layout/state/menu-layout.d.ts +35 -0
  187. package/dist/src/layout/state/menu-layout.d.ts.map +1 -0
  188. package/dist/src/layout/state/tab-storage.d.ts +51 -0
  189. package/dist/src/layout/state/tab-storage.d.ts.map +1 -0
  190. package/dist/src/layout/state/tab-strategy.d.ts +73 -0
  191. package/dist/src/layout/state/tab-strategy.d.ts.map +1 -0
  192. package/dist/src/layout/types.d.ts +29 -0
  193. package/dist/src/layout/types.d.ts.map +1 -0
  194. package/dist/src/permission/LumalAccessControl.vue.d.ts +26 -0
  195. package/dist/src/permission/LumalAccessControl.vue.d.ts.map +1 -0
  196. package/dist/src/permission/context.d.ts +6 -0
  197. package/dist/src/permission/context.d.ts.map +1 -0
  198. package/dist/src/permission/directive.d.ts +3 -0
  199. package/dist/src/permission/directive.d.ts.map +1 -0
  200. package/dist/src/permission/guard.d.ts +4 -0
  201. package/dist/src/permission/guard.d.ts.map +1 -0
  202. package/dist/src/permission/helpers.d.ts +4 -0
  203. package/dist/src/permission/helpers.d.ts.map +1 -0
  204. package/dist/src/permission/index.d.ts +8 -0
  205. package/dist/src/permission/index.d.ts.map +1 -0
  206. package/dist/src/permission/store.d.ts +4 -0
  207. package/dist/src/permission/store.d.ts.map +1 -0
  208. package/dist/src/permission/types.d.ts +67 -0
  209. package/dist/src/permission/types.d.ts.map +1 -0
  210. package/dist/src/request/cache.d.ts +8 -0
  211. package/dist/src/request/cache.d.ts.map +1 -0
  212. package/dist/src/request/client.d.ts +4 -0
  213. package/dist/src/request/client.d.ts.map +1 -0
  214. package/dist/src/request/error.d.ts +19 -0
  215. package/dist/src/request/error.d.ts.map +1 -0
  216. package/dist/src/request/index.d.ts +8 -0
  217. package/dist/src/request/index.d.ts.map +1 -0
  218. package/dist/src/request/standard.d.ts +61 -0
  219. package/dist/src/request/standard.d.ts.map +1 -0
  220. package/dist/src/request/types.d.ts +102 -0
  221. package/dist/src/request/types.d.ts.map +1 -0
  222. package/dist/src/router/index.d.ts +36 -0
  223. package/dist/src/router/index.d.ts.map +1 -0
  224. package/dist/src/router/types.d.ts +231 -0
  225. package/dist/src/router/types.d.ts.map +1 -0
  226. package/dist/src/theme/LumalThemeSettingsPanel.vue.d.ts +33 -0
  227. package/dist/src/theme/LumalThemeSettingsPanel.vue.d.ts.map +1 -0
  228. package/dist/src/theme/dom.d.ts +6 -0
  229. package/dist/src/theme/dom.d.ts.map +1 -0
  230. package/dist/src/theme/index.d.ts +11 -0
  231. package/dist/src/theme/index.d.ts.map +1 -0
  232. package/dist/src/theme/preferences-store.d.ts +4 -0
  233. package/dist/src/theme/preferences-store.d.ts.map +1 -0
  234. package/dist/src/theme/preferences.d.ts +18 -0
  235. package/dist/src/theme/preferences.d.ts.map +1 -0
  236. package/dist/src/theme/store.d.ts +3 -0
  237. package/dist/src/theme/store.d.ts.map +1 -0
  238. package/dist/src/theme/theme-color-presets.d.ts +13 -0
  239. package/dist/src/theme/theme-color-presets.d.ts.map +1 -0
  240. package/dist/src/theme/tokens.d.ts +5 -0
  241. package/dist/src/theme/tokens.d.ts.map +1 -0
  242. package/dist/src/theme/types.d.ts +103 -0
  243. package/dist/src/theme/types.d.ts.map +1 -0
  244. package/dist/src/utils/clone.d.ts +12 -0
  245. package/dist/src/utils/clone.d.ts.map +1 -0
  246. package/dist/src/utils/color.d.ts +6 -0
  247. package/dist/src/utils/color.d.ts.map +1 -0
  248. package/dist/src/utils/display.d.ts +10 -0
  249. package/dist/src/utils/display.d.ts.map +1 -0
  250. package/dist/src/utils/download.d.ts +10 -0
  251. package/dist/src/utils/download.d.ts.map +1 -0
  252. package/dist/src/utils/index.d.ts +12 -0
  253. package/dist/src/utils/index.d.ts.map +1 -0
  254. package/dist/src/utils/object.d.ts +6 -0
  255. package/dist/src/utils/object.d.ts.map +1 -0
  256. package/dist/src/utils/path.d.ts +6 -0
  257. package/dist/src/utils/path.d.ts.map +1 -0
  258. package/dist/src/utils/query.d.ts +9 -0
  259. package/dist/src/utils/query.d.ts.map +1 -0
  260. package/dist/src/utils/storage.d.ts +7 -0
  261. package/dist/src/utils/storage.d.ts.map +1 -0
  262. package/dist/src/utils/types.d.ts +13 -0
  263. package/dist/src/utils/types.d.ts.map +1 -0
  264. package/dist/src/utils/with-install.d.ts +11 -0
  265. package/dist/src/utils/with-install.d.ts.map +1 -0
  266. package/dist/theme.cjs +1 -0
  267. package/dist/theme.js +187 -0
  268. package/dist/utils.cjs +1 -0
  269. package/dist/utils.js +130 -0
  270. package/package.json +124 -0
  271. package/theme-chalk/index.scss +70 -0
@@ -0,0 +1,2206 @@
1
+ import { f as e, i as t } from "./composables-C9EuCUjj.js";
2
+ import { t as n } from "./_plugin-vue_export-helper-B3ysoDQm.js";
3
+ import { Fragment as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createTextVNode as u, createVNode as d, defineComponent as f, guardReactiveProps as p, mergeModels as m, mergeProps as h, nextTick as g, normalizeClass as _, normalizeProps as ee, normalizeStyle as v, onBeforeUnmount as y, onMounted as te, openBlock as b, renderList as x, renderSlot as S, shallowRef as C, toDisplayString as w, unref as T, useModel as E, useSlots as D, useTemplateRef as O, vShow as k, watch as A, withCtx as j, withDirectives as ne, withKeys as re, withModifiers as ie } from "vue";
4
+ import { LumalIcon as ae, LumalIcon as M, LumalIconPicker as N, LumalIconPickerDialog as oe } from "@lumal/icons-vue";
5
+ import { ElButton as P, ElCheckbox as se, ElCheckboxGroup as F, ElCol as I, ElDatePicker as L, ElDialog as R, ElDrawer as z, ElForm as ce, ElFormItem as le, ElInput as ue, ElInputNumber as de, ElLoading as fe, ElMessageBox as pe, ElOption as me, ElPagination as he, ElPopover as ge, ElRadio as _e, ElRadioGroup as ve, ElRow as ye, ElSelect as be, ElSwitch as xe, ElTable as Se, ElTableColumn as Ce, ElTreeSelect as we, ElUpload as Te } from "element-plus";
6
+ //#endregion
7
+ //#region src/components/pagination/LumalPagination.vue
8
+ var Ee = /*#__PURE__*/ n(/* @__PURE__ */ f({
9
+ __name: "LumalPagination",
10
+ props: /*@__PURE__*/ m({
11
+ total: {},
12
+ pageSizes: { default: () => [
13
+ 10,
14
+ 20,
15
+ 50,
16
+ 100
17
+ ] },
18
+ disabled: {
19
+ type: Boolean,
20
+ default: !1
21
+ }
22
+ }, {
23
+ page: { default: 1 },
24
+ pageModifiers: {},
25
+ pageSize: { default: 10 },
26
+ pageSizeModifiers: {}
27
+ }),
28
+ emits: /*@__PURE__*/ m(["change"], ["update:page", "update:pageSize"]),
29
+ setup(e, { expose: t, emit: n }) {
30
+ let r = e, o = n, s = E(e, "page"), c = E(e, "pageSize"), l = O("paginationRef"), u = i(() => Math.max(1, Math.ceil(r.total / c.value)));
31
+ function d(e, t) {
32
+ o("change", {
33
+ page: e,
34
+ pageSize: t
35
+ });
36
+ }
37
+ function f(e) {
38
+ if (r.disabled) return;
39
+ let t = Math.min(Math.max(e, 1), u.value);
40
+ s.value = t, d(t, c.value);
41
+ }
42
+ function p(e) {
43
+ r.disabled || (c.value = e, s.value = 1, d(1, e));
44
+ }
45
+ return t({
46
+ getPaginationElement: () => l.value?.$el,
47
+ getPaginationInstance: () => l.value
48
+ }), (t, n) => (b(), a(T(he), {
49
+ ref_key: "paginationRef",
50
+ ref: l,
51
+ class: "lumal-pagination",
52
+ background: "",
53
+ layout: "total, sizes, prev, pager, next, jumper",
54
+ "current-page": s.value,
55
+ "page-size": c.value,
56
+ "page-sizes": e.pageSizes,
57
+ total: e.total,
58
+ disabled: e.disabled,
59
+ onCurrentChange: f,
60
+ onSizeChange: p
61
+ }, null, 8, [
62
+ "current-page",
63
+ "page-size",
64
+ "page-sizes",
65
+ "total",
66
+ "disabled"
67
+ ]));
68
+ }
69
+ }), [["__scopeId", "data-v-e5a835aa"]]);
70
+ //#endregion
71
+ //#region src/components/schema-form/normalize.ts
72
+ function De(e) {
73
+ return `lumal-schema-form-${e.replace(/[^\w-]/g, "-")}`;
74
+ }
75
+ function B(e, t) {
76
+ return typeof e == "function" ? !!e(t) : !!e;
77
+ }
78
+ function V(e, t, n) {
79
+ return typeof e == "function" ? e(t) : e ?? n;
80
+ }
81
+ function H(e, t) {
82
+ return !e.authority || t.canAccess?.(e.authority) !== !1;
83
+ }
84
+ function U(e = [], t = {}) {
85
+ let n = t.model ?? {};
86
+ return e.filter((e) => e.field.trim()).map((e) => {
87
+ let r = {
88
+ field: e.field,
89
+ getValues: () => n,
90
+ mode: t.mode ?? "create",
91
+ model: n,
92
+ setFieldValue: t.setFieldValue ?? (() => void 0),
93
+ value: n[e.field]
94
+ }, i = e.component ?? (e.dictionary || e.dictType ? "select" : "input"), a = B(e.hidden, r), o = B(e.disabled, r), s = e.readonlyAuthority ? t.canAccess?.(e.readonlyAuthority) === !1 : !1, c = r.mode === "view" || s || B(e.readonly, r), l = !a && i !== "hidden" && H(e, t), u = V(e.componentProps, r, {}), d = typeof e.options == "function" ? e.options(r) : T(e.options);
95
+ return {
96
+ ...e,
97
+ id: De(e.field),
98
+ component: i,
99
+ componentProps: { ...u },
100
+ description: V(e.description, r, ""),
101
+ disabled: o,
102
+ help: V(e.help, r, ""),
103
+ options: d ?? [],
104
+ required: B(e.required, r),
105
+ readonly: c,
106
+ renderable: l,
107
+ rules: V(e.rules, r, [])
108
+ };
109
+ });
110
+ }
111
+ function Oe(e, t = {}) {
112
+ return e.reduce((e, t) => (!(t.field in e) && t.defaultValue !== void 0 && (e[t.field] = t.defaultValue), e), { ...t });
113
+ }
114
+ //#endregion
115
+ //#region src/components/schema-form/LumalSchemaForm.vue?vue&type=script&setup=true&lang.ts
116
+ var ke = {
117
+ key: 0,
118
+ class: "lumal-schema-form__readonly-value"
119
+ }, W = {
120
+ key: 0,
121
+ class: "lumal-schema-form__description"
122
+ }, G = {
123
+ key: 1,
124
+ class: "lumal-schema-form__help"
125
+ }, K = /*#__PURE__*/ n(/* @__PURE__ */ f({
126
+ __name: "LumalSchemaForm",
127
+ props: /*@__PURE__*/ m({
128
+ canAccess: {},
129
+ actionLayout: { default: "rowEnd" },
130
+ actionPosition: { default: "right" },
131
+ columns: { default: 1 },
132
+ compact: {
133
+ type: Boolean,
134
+ default: !1
135
+ },
136
+ disabled: {
137
+ type: Boolean,
138
+ default: !1
139
+ },
140
+ gutter: { default: 16 },
141
+ labelPosition: { default: "right" },
142
+ labelWidth: { default: "auto" },
143
+ loading: {
144
+ type: Boolean,
145
+ default: !1
146
+ },
147
+ mode: { default: "create" },
148
+ resetText: { default: "重置" },
149
+ schemas: {},
150
+ scrollToFirstError: {
151
+ type: Boolean,
152
+ default: !0
153
+ },
154
+ showReset: {
155
+ type: Boolean,
156
+ default: !1
157
+ },
158
+ submitLoading: {
159
+ type: Boolean,
160
+ default: !1
161
+ },
162
+ submitOnEnter: {
163
+ type: Boolean,
164
+ default: !1
165
+ },
166
+ submitText: { default: "提交" },
167
+ showActions: {
168
+ type: Boolean,
169
+ default: !1
170
+ }
171
+ }, {
172
+ modelValue: { default: () => ({}) },
173
+ modelModifiers: {}
174
+ }),
175
+ emits: /*@__PURE__*/ m([
176
+ "reset",
177
+ "submit",
178
+ "valuesChange"
179
+ ], ["update:modelValue"]),
180
+ setup(e, { expose: n, emit: c }) {
181
+ let f = e, p = c, m = E(e, "modelValue"), g = O("formRef"), ee = fe.directive, v = C({ ...m.value }), y = C(f.mode);
182
+ A(() => f.mode, (e) => {
183
+ y.value = e;
184
+ });
185
+ let te = i(() => U(f.schemas, {
186
+ canAccess: f.canAccess,
187
+ mode: y.value,
188
+ model: m.value,
189
+ setFieldValue: Y
190
+ })), D = i(() => te.value.filter((e) => e.renderable)), k = i(() => Oe(te.value, m.value)), { dictionaryMap: ae } = t(() => te.value.map((e) => e.dictionary ?? e.dictType));
191
+ function M(e) {
192
+ let t = k.value[e];
193
+ return typeof t == "number" || typeof t == "string" ? t : t == null ? "" : String(t);
194
+ }
195
+ function N(e) {
196
+ let t = k.value[e];
197
+ return Array.isArray(t) ? t.filter((e) => typeof e == "boolean" || typeof e == "number" || typeof e == "string") : typeof t == "boolean" || typeof t == "number" || typeof t == "string" ? t : "";
198
+ }
199
+ function oe(e) {
200
+ let t = N(e);
201
+ return Array.isArray(t) ? t[0] ?? "" : t;
202
+ }
203
+ function R(e) {
204
+ let t = k.value[e];
205
+ if (typeof t == "number") return t;
206
+ if (typeof t == "string" && t.trim()) return Number(t);
207
+ }
208
+ function z(e) {
209
+ return !!k.value[e];
210
+ }
211
+ function pe(e) {
212
+ let t = k.value[e];
213
+ return Array.isArray(t) ? t.filter((e) => typeof e == "number" || typeof e == "string") : [];
214
+ }
215
+ function he(e) {
216
+ let t = k.value[e];
217
+ if (t instanceof Date || typeof t == "number" || typeof t == "string" || Array.isArray(t) && t.every((e) => e instanceof Date || typeof e == "number" || typeof e == "string")) return t;
218
+ }
219
+ function ge(e) {
220
+ return e.component === "datetime" ? "datetime" : e.component === "daterange" ? "daterange" : "date";
221
+ }
222
+ function Se(e) {
223
+ let t = k.value[e];
224
+ if (typeof t == "boolean" || typeof t == "number" || typeof t == "string" || t && typeof t == "object") return t;
225
+ }
226
+ function Ce(e) {
227
+ return String(e.componentProps.type ?? "text");
228
+ }
229
+ function Ee(e) {
230
+ return e.component === "daterange" ? [`${e.id}-start`, `${e.id}-end`] : e.id;
231
+ }
232
+ function De(e) {
233
+ return e.component === "daterange" ? [`${e.field}-start`, `${e.field}-end`] : e.field;
234
+ }
235
+ function B(e) {
236
+ return f.disabled || e.disabled || e.readonly || y.value === "edit" && !!e.editDisabled || !!e.componentProps.disabled;
237
+ }
238
+ function V(e) {
239
+ return typeof e.span == "number" ? Math.min(24, Math.max(1, e.span)) : Math.floor(24 / Math.max(1, f.columns));
240
+ }
241
+ function H(e) {
242
+ let t = e.dictionary ?? e.dictType;
243
+ return t ? ae.value[t] ?? [] : e.options;
244
+ }
245
+ function K(e) {
246
+ return e.componentProps;
247
+ }
248
+ function q(e) {
249
+ let t = k.value[e.field];
250
+ if (e.formatter) return e.formatter(t, k.value);
251
+ let n = (Array.isArray(t) ? t : [t]).map((t) => H(e).find((e) => String(e.value) === String(t))?.label ?? t).filter((e) => e != null && e !== "");
252
+ return n.length > 0 ? n.map(String).join(", ") : "-";
253
+ }
254
+ function J(e, t) {
255
+ return {
256
+ field: e,
257
+ getValues: () => k.value,
258
+ mode: y.value,
259
+ model: k.value,
260
+ setFieldValue: Y,
261
+ value: t
262
+ };
263
+ }
264
+ function Y(e, t) {
265
+ let n = {
266
+ ...k.value,
267
+ [e]: t
268
+ };
269
+ m.value = n, te.value.find((t) => t.field === e)?.onChange?.(t, J(e, t)), p("valuesChange", n, [e]);
270
+ }
271
+ function X(e, t) {
272
+ Y(e, t);
273
+ }
274
+ async function Z() {
275
+ y.value === "view" || f.submitLoading || await Fe() && p("submit", k.value);
276
+ }
277
+ function Q(e) {
278
+ !f.submitOnEnter || e.isComposing || e.target?.tagName === "TEXTAREA" || (e.preventDefault(), Z());
279
+ }
280
+ function $() {
281
+ Ie(), p("reset", k.value);
282
+ }
283
+ function Ae(e) {
284
+ return `field-${e.field}`;
285
+ }
286
+ function je(e) {
287
+ return `prefix-${e.field}`;
288
+ }
289
+ function Me(e) {
290
+ return `suffix-${e.field}`;
291
+ }
292
+ function Ne(e) {
293
+ m.value = {
294
+ ...k.value,
295
+ ...e
296
+ };
297
+ }
298
+ function Pe(e) {
299
+ y.value = e;
300
+ }
301
+ async function Fe() {
302
+ try {
303
+ return await g.value?.validate?.() !== !1;
304
+ } catch (e) {
305
+ if (f.scrollToFirstError && e && typeof e == "object") {
306
+ let t = Object.keys(e)[0];
307
+ t && g.value?.scrollToField?.(t);
308
+ }
309
+ return !1;
310
+ }
311
+ }
312
+ function Ie() {
313
+ g.value?.resetFields?.(), m.value = Oe(te.value, v.value);
314
+ }
315
+ function Le(e) {
316
+ g.value?.clearValidate?.(e);
317
+ }
318
+ function Re(e) {
319
+ g.value?.scrollToField?.(e);
320
+ }
321
+ function ze(e) {
322
+ return (g.value?.$el)?.querySelector(`[data-field="${e}"] input, [data-field="${e}"] textarea, [data-field="${e}"] select, [data-field="${e}"] button`) ?? void 0;
323
+ }
324
+ return n({
325
+ clearValidate: Le,
326
+ getFieldComponent: ze,
327
+ getFormElement: () => g.value?.$el,
328
+ getFormInstance: () => g.value,
329
+ getValues: () => k.value,
330
+ resetFields: Ie,
331
+ scrollToField: Re,
332
+ setFieldValue: Y,
333
+ setMode: Pe,
334
+ setValues: Ne,
335
+ validate: Fe
336
+ }), (t, n) => ne((b(), a(T(ce), {
337
+ ref_key: "formRef",
338
+ ref: g,
339
+ class: _(["lumal-schema-form", { "is-compact": f.compact }]),
340
+ disabled: f.disabled,
341
+ "label-position": f.labelPosition,
342
+ "label-width": f.labelWidth,
343
+ model: k.value,
344
+ onKeydown: re(Q, ["enter"]),
345
+ onSubmit: ie(Z, ["prevent"])
346
+ }, {
347
+ default: j(() => [d(T(ye), {
348
+ class: "lumal-schema-form__row",
349
+ gutter: f.gutter,
350
+ "data-columns": f.columns
351
+ }, {
352
+ default: j(() => [(b(!0), s(r, null, x(D.value, (e) => (b(), a(T(I), {
353
+ key: e.field,
354
+ span: V(e),
355
+ class: _({ "is-full-span": V(e) === 24 })
356
+ }, {
357
+ default: j(() => [d(T(le), {
358
+ class: "lumal-schema-form__item",
359
+ label: e.label,
360
+ prop: e.field,
361
+ required: e.required,
362
+ rules: e.rules,
363
+ "data-field": e.field
364
+ }, {
365
+ default: j(() => [
366
+ S(t.$slots, je(e), {
367
+ model: k.value,
368
+ schema: e,
369
+ value: k.value[e.field]
370
+ }, void 0, !0),
371
+ S(t.$slots, Ae(e), {
372
+ model: k.value,
373
+ schema: e,
374
+ value: k.value[e.field]
375
+ }, () => [y.value === "view" ? (b(), s("span", ke, w(q(e)), 1)) : e.component === "textarea" ? (b(), a(T(ue), h({
376
+ key: 1,
377
+ ref_for: !0
378
+ }, K(e), {
379
+ id: e.id,
380
+ "model-value": M(e.field),
381
+ name: e.field,
382
+ placeholder: e.placeholder,
383
+ disabled: B(e),
384
+ required: e.required,
385
+ type: "textarea",
386
+ "onUpdate:modelValue": (t) => X(e.field, t)
387
+ }), null, 16, [
388
+ "id",
389
+ "model-value",
390
+ "name",
391
+ "placeholder",
392
+ "disabled",
393
+ "required",
394
+ "onUpdate:modelValue"
395
+ ])) : e.component === "select" ? (b(), a(T(be), h({
396
+ key: 2,
397
+ ref_for: !0
398
+ }, K(e), {
399
+ id: e.id,
400
+ "model-value": N(e.field),
401
+ name: e.field,
402
+ placeholder: e.placeholder,
403
+ disabled: B(e),
404
+ required: e.required,
405
+ "onUpdate:modelValue": (t) => X(e.field, t)
406
+ }), {
407
+ default: j(() => [(b(!0), s(r, null, x(H(e), (e) => (b(), a(T(me), {
408
+ key: String(e.value),
409
+ label: e.label,
410
+ value: e.value,
411
+ disabled: e.disabled
412
+ }, null, 8, [
413
+ "label",
414
+ "value",
415
+ "disabled"
416
+ ]))), 128))]),
417
+ _: 2
418
+ }, 1040, [
419
+ "id",
420
+ "model-value",
421
+ "name",
422
+ "placeholder",
423
+ "disabled",
424
+ "required",
425
+ "onUpdate:modelValue"
426
+ ])) : e.component === "number" ? (b(), a(T(de), h({
427
+ key: 3,
428
+ ref_for: !0
429
+ }, K(e), {
430
+ id: e.id,
431
+ "model-value": R(e.field),
432
+ name: e.field,
433
+ placeholder: e.placeholder,
434
+ disabled: B(e),
435
+ "onUpdate:modelValue": (t) => X(e.field, t)
436
+ }), l({ _: 2 }, [e.prefix ? {
437
+ name: "prefix",
438
+ fn: j(() => [u(w(e.prefix), 1)]),
439
+ key: "0"
440
+ } : void 0, e.suffix ? {
441
+ name: "suffix",
442
+ fn: j(() => [u(w(e.suffix), 1)]),
443
+ key: "1"
444
+ } : void 0]), 1040, [
445
+ "id",
446
+ "model-value",
447
+ "name",
448
+ "placeholder",
449
+ "disabled",
450
+ "onUpdate:modelValue"
451
+ ])) : e.component === "switch" ? (b(), a(T(xe), h({
452
+ key: 4,
453
+ ref_for: !0
454
+ }, K(e), {
455
+ "model-value": z(e.field),
456
+ name: e.field,
457
+ disabled: B(e),
458
+ "onUpdate:modelValue": (t) => X(e.field, t)
459
+ }), null, 16, [
460
+ "model-value",
461
+ "name",
462
+ "disabled",
463
+ "onUpdate:modelValue"
464
+ ])) : e.component === "date" || e.component === "datetime" || e.component === "daterange" ? (b(), a(T(L), h({
465
+ key: 5,
466
+ ref_for: !0
467
+ }, K(e), {
468
+ id: Ee(e),
469
+ "model-value": he(e.field),
470
+ name: De(e),
471
+ placeholder: e.placeholder,
472
+ disabled: B(e),
473
+ type: ge(e),
474
+ "onUpdate:modelValue": (t) => X(e.field, t)
475
+ }), null, 16, [
476
+ "id",
477
+ "model-value",
478
+ "name",
479
+ "placeholder",
480
+ "disabled",
481
+ "type",
482
+ "onUpdate:modelValue"
483
+ ])) : e.component === "radio" ? (b(), a(T(ve), h({
484
+ key: 6,
485
+ ref_for: !0
486
+ }, K(e), {
487
+ "model-value": oe(e.field),
488
+ name: e.field,
489
+ disabled: B(e),
490
+ "onUpdate:modelValue": (t) => X(e.field, t)
491
+ }), {
492
+ default: j(() => [(b(!0), s(r, null, x(H(e), (e) => (b(), a(T(_e), {
493
+ key: String(e.value),
494
+ value: e.value,
495
+ disabled: e.disabled
496
+ }, {
497
+ default: j(() => [u(w(e.label), 1)]),
498
+ _: 2
499
+ }, 1032, ["value", "disabled"]))), 128))]),
500
+ _: 2
501
+ }, 1040, [
502
+ "model-value",
503
+ "name",
504
+ "disabled",
505
+ "onUpdate:modelValue"
506
+ ])) : e.component === "checkbox" ? (b(), a(T(F), h({
507
+ key: 7,
508
+ ref_for: !0
509
+ }, K(e), {
510
+ "model-value": pe(e.field),
511
+ name: e.field,
512
+ disabled: B(e),
513
+ "onUpdate:modelValue": (t) => X(e.field, t)
514
+ }), {
515
+ default: j(() => [(b(!0), s(r, null, x(H(e), (e) => (b(), a(T(se), {
516
+ key: String(e.value),
517
+ value: e.value,
518
+ disabled: e.disabled
519
+ }, {
520
+ default: j(() => [u(w(e.label), 1)]),
521
+ _: 2
522
+ }, 1032, ["value", "disabled"]))), 128))]),
523
+ _: 2
524
+ }, 1040, [
525
+ "model-value",
526
+ "name",
527
+ "disabled",
528
+ "onUpdate:modelValue"
529
+ ])) : e.component === "tree-select" ? (b(), a(T(we), h({
530
+ key: 8,
531
+ ref_for: !0
532
+ }, K(e), {
533
+ id: e.id,
534
+ "model-value": Se(e.field),
535
+ name: e.field,
536
+ placeholder: e.placeholder,
537
+ disabled: B(e),
538
+ "onUpdate:modelValue": (t) => X(e.field, t)
539
+ }), null, 16, [
540
+ "id",
541
+ "model-value",
542
+ "name",
543
+ "placeholder",
544
+ "disabled",
545
+ "onUpdate:modelValue"
546
+ ])) : e.component === "upload" ? (b(), a(T(Te), h({
547
+ key: 9,
548
+ ref_for: !0
549
+ }, K(e), { disabled: B(e) }), {
550
+ default: j(() => [d(T(P), { type: "primary" }, {
551
+ default: j(() => [...n[0] ||= [u(" 上传 ", -1)]]),
552
+ _: 1
553
+ })]),
554
+ _: 1
555
+ }, 16, ["disabled"])) : (b(), a(T(ue), h({
556
+ key: 10,
557
+ ref_for: !0
558
+ }, K(e), {
559
+ id: e.id,
560
+ "model-value": M(e.field),
561
+ name: e.field,
562
+ type: Ce(e),
563
+ placeholder: e.placeholder,
564
+ disabled: B(e),
565
+ required: e.required,
566
+ "onUpdate:modelValue": (t) => X(e.field, t)
567
+ }), l({ _: 2 }, [
568
+ e.prepend ? {
569
+ name: "prepend",
570
+ fn: j(() => [u(w(e.prepend), 1)]),
571
+ key: "0"
572
+ } : void 0,
573
+ e.append ? {
574
+ name: "append",
575
+ fn: j(() => [u(w(e.append), 1)]),
576
+ key: "1"
577
+ } : void 0,
578
+ e.prefix ? {
579
+ name: "prefix",
580
+ fn: j(() => [u(w(e.prefix), 1)]),
581
+ key: "2"
582
+ } : void 0,
583
+ e.suffix ? {
584
+ name: "suffix",
585
+ fn: j(() => [u(w(e.suffix), 1)]),
586
+ key: "3"
587
+ } : void 0
588
+ ]), 1040, [
589
+ "id",
590
+ "model-value",
591
+ "name",
592
+ "type",
593
+ "placeholder",
594
+ "disabled",
595
+ "required",
596
+ "onUpdate:modelValue"
597
+ ]))], !0),
598
+ S(t.$slots, Me(e), {
599
+ model: k.value,
600
+ schema: e,
601
+ value: k.value[e.field]
602
+ }, void 0, !0),
603
+ e.description ? (b(), s("p", W, w(e.description), 1)) : o("", !0),
604
+ e.help ? (b(), s("p", G, w(e.help), 1)) : o("", !0)
605
+ ]),
606
+ _: 2
607
+ }, 1032, [
608
+ "label",
609
+ "prop",
610
+ "required",
611
+ "rules",
612
+ "data-field"
613
+ ])]),
614
+ _: 2
615
+ }, 1032, ["span", "class"]))), 128))]),
616
+ _: 3
617
+ }, 8, ["gutter", "data-columns"]), e.showActions && y.value !== "view" ? (b(), s("div", {
618
+ key: 0,
619
+ class: _(["lumal-schema-form__actions", [`is-${e.actionLayout}`, `is-${e.actionPosition}`]])
620
+ }, [e.showReset ? (b(), a(T(P), {
621
+ key: 0,
622
+ "native-type": "button",
623
+ disabled: e.submitLoading,
624
+ onClick: $
625
+ }, {
626
+ default: j(() => [u(w(e.resetText), 1)]),
627
+ _: 1
628
+ }, 8, ["disabled"])) : o("", !0), d(T(P), {
629
+ type: "primary",
630
+ "native-type": "submit",
631
+ loading: e.submitLoading,
632
+ disabled: e.submitLoading
633
+ }, {
634
+ default: j(() => [u(w(e.submitText), 1)]),
635
+ _: 1
636
+ }, 8, ["loading", "disabled"])], 2)) : o("", !0)]),
637
+ _: 3
638
+ }, 8, [
639
+ "class",
640
+ "disabled",
641
+ "label-position",
642
+ "label-width",
643
+ "model"
644
+ ])), [[T(ee), f.loading]]);
645
+ }
646
+ }), [["__scopeId", "data-v-5c24440d"]]);
647
+ //#endregion
648
+ //#region src/components/schema-table/cell.ts
649
+ function q(e) {
650
+ return e == null || typeof e == "boolean" || typeof e == "number" || typeof e == "string" || Array.isArray(e) && e.every((e) => typeof e == "boolean" || typeof e == "number" || typeof e == "string");
651
+ }
652
+ function J(e, t) {
653
+ let n = (Array.isArray(t) ? t : [t]).map((t, n) => {
654
+ let r = e.find((e) => String(e.value) === String(t));
655
+ return {
656
+ ...r?.color ? { color: r.color } : {},
657
+ key: `${String(t)}-${n}`,
658
+ label: r?.label ?? String(t)
659
+ };
660
+ });
661
+ return n.some((e) => e.color) ? n : [];
662
+ }
663
+ function Y(t, n, r, i = []) {
664
+ let a = t[n.field], o = n.formatter?.(a, t, r) ?? a;
665
+ return o == null || o === "" || Array.isArray(o) && o.length === 0 ? {
666
+ tags: [],
667
+ text: n.emptyText
668
+ } : n.formatter ? {
669
+ tags: [],
670
+ text: String(o)
671
+ } : i.length > 0 && q(o) ? {
672
+ tags: J(i, o),
673
+ text: e(i, o)
674
+ } : {
675
+ tags: [],
676
+ text: Array.isArray(o) ? o.map((e) => String(e)).join(", ") : String(o)
677
+ };
678
+ }
679
+ //#endregion
680
+ //#region src/components/schema-table/LumalSchemaTableCell.vue?vue&type=script&setup=true&lang.ts
681
+ var X = {
682
+ key: 0,
683
+ class: "lumal-schema-table__dictionary-tags"
684
+ }, Z = {
685
+ key: 0,
686
+ class: "lumal-schema-table__dictionary-dot",
687
+ "aria-hidden": "true"
688
+ }, Q = { key: 1 }, $ = /*#__PURE__*/ n(/* @__PURE__ */ f({
689
+ __name: "LumalSchemaTableCell",
690
+ props: { display: {} },
691
+ setup(e) {
692
+ function t(e) {
693
+ return e.color ? { "--lumal-dictionary-color": e.color } : void 0;
694
+ }
695
+ return (n, i) => e.display.tags.length ? (b(), s("div", X, [(b(!0), s(r, null, x(e.display.tags, (e) => (b(), s("span", {
696
+ key: e.key,
697
+ class: "lumal-schema-table__dictionary-tag",
698
+ style: v(t(e))
699
+ }, [e.color ? (b(), s("span", Z)) : o("", !0), c("span", null, w(e.label), 1)], 4))), 128))])) : (b(), s("span", Q, w(e.display.text), 1));
700
+ }
701
+ }), [["__scopeId", "data-v-ad0cf9f4"]]);
702
+ //#endregion
703
+ //#region src/components/schema-table/normalize.ts
704
+ function Ae(e, t) {
705
+ return typeof e == "function" ? !!e(t) : !!e;
706
+ }
707
+ function je(e, t) {
708
+ return !e.authority || t.canAccess?.(e.authority) !== !1;
709
+ }
710
+ function Me(e = [], t = {}) {
711
+ let n = { rows: t.rows ?? [] };
712
+ return e.map((e) => ({
713
+ ...e,
714
+ field: e.field.trim()
715
+ })).filter((e) => e.field).map((e) => ({
716
+ ...e,
717
+ align: e.align ?? "left",
718
+ componentProps: e.componentProps ?? {},
719
+ emptyText: e.emptyText ?? "-",
720
+ renderable: (typeof e.hidden == "function" || !Ae(e.hidden, n)) && je(e, t)
721
+ }));
722
+ }
723
+ //#endregion
724
+ //#region src/components/schema-table/LumalSchemaTable.vue?vue&type=script&setup=true&lang.ts
725
+ var Ne = {
726
+ key: 0,
727
+ class: "lumal-schema-table__toolbar"
728
+ }, Pe = {
729
+ key: 0,
730
+ class: "lumal-schema-table__toolbar-title"
731
+ }, Fe = {
732
+ key: 1,
733
+ class: "lumal-schema-table__toolbar-content"
734
+ }, Ie = {
735
+ key: 2,
736
+ class: "lumal-schema-table__toolbar-tools"
737
+ }, Le = {
738
+ key: 0,
739
+ class: "lumal-schema-table__column-settings"
740
+ }, Re = {
741
+ class: "lumal-schema-table__column-settings-trigger",
742
+ "aria-label": "列设置",
743
+ title: "列设置"
744
+ }, ze = { class: "lumal-schema-table__column-options" }, Be = [
745
+ "draggable",
746
+ "onDragstart",
747
+ "onDrop"
748
+ ], Ve = {
749
+ key: 0,
750
+ class: "lumal-schema-table__column-order-actions"
751
+ }, He = [
752
+ "disabled",
753
+ "aria-label",
754
+ "onClick"
755
+ ], Ue = [
756
+ "disabled",
757
+ "aria-label",
758
+ "onClick"
759
+ ], We = {
760
+ key: 1,
761
+ class: "lumal-schema-table__error",
762
+ role: "alert"
763
+ }, Ge = {
764
+ key: 2,
765
+ class: "lumal-schema-table__scroll"
766
+ }, Ke = { class: "lumal-schema-table__actions lumal-schema-table__actions--desktop" }, qe = [
767
+ "aria-expanded",
768
+ "onClick",
769
+ "onKeydown"
770
+ ], Je = {
771
+ key: 3,
772
+ class: "lumal-schema-table__pagination"
773
+ }, Ye = /*#__PURE__*/ n(/* @__PURE__ */ f({
774
+ __name: "LumalSchemaTable",
775
+ props: /*@__PURE__*/ m({
776
+ actionLabel: { default: "操作" },
777
+ actionWidth: { default: 160 },
778
+ autoResize: {
779
+ type: Boolean,
780
+ default: !0
781
+ },
782
+ canAccess: {},
783
+ cellClassName: {},
784
+ columnResizable: {
785
+ type: Boolean,
786
+ default: !0
787
+ },
788
+ columnSettings: {},
789
+ columns: {},
790
+ defaultExpandAll: { type: Boolean },
791
+ emptyText: { default: "暂无数据" },
792
+ error: {
793
+ type: [
794
+ Error,
795
+ String,
796
+ Boolean
797
+ ],
798
+ default: !1
799
+ },
800
+ errorText: { default: "数据加载失败" },
801
+ headerCellClassName: {},
802
+ indexLabel: { default: "#" },
803
+ indexWidth: { default: 64 },
804
+ loading: {
805
+ type: Boolean,
806
+ default: !1
807
+ },
808
+ mobileActionLabel: { default: "更多" },
809
+ mobileActionWidth: { default: 72 },
810
+ pageSizes: { default: () => [
811
+ 10,
812
+ 20,
813
+ 50,
814
+ 100
815
+ ] },
816
+ pagination: {
817
+ type: Boolean,
818
+ default: !1
819
+ },
820
+ rowClassName: {},
821
+ rowKey: {
822
+ type: [String, Function],
823
+ default: "id"
824
+ },
825
+ rows: { default: () => [] },
826
+ retryText: { default: "重新加载" },
827
+ scaleColumnWidth: {
828
+ type: Boolean,
829
+ default: !0
830
+ },
831
+ selection: {
832
+ type: Boolean,
833
+ default: !1
834
+ },
835
+ showColumnSettings: {
836
+ type: Boolean,
837
+ default: !1
838
+ },
839
+ showIndex: {
840
+ type: Boolean,
841
+ default: !1
842
+ },
843
+ tableProps: { default: () => ({}) },
844
+ total: { default: 0 },
845
+ treeProps: {}
846
+ }, {
847
+ page: { default: 1 },
848
+ pageModifiers: {},
849
+ pageSize: { default: 10 },
850
+ pageSizeModifiers: {}
851
+ }),
852
+ emits: /*@__PURE__*/ m([
853
+ "currentChange",
854
+ "expandChange",
855
+ "filterChange",
856
+ "pageChange",
857
+ "retry",
858
+ "rowClick",
859
+ "selectionChange",
860
+ "sortChange"
861
+ ], ["update:page", "update:pageSize"]),
862
+ setup(e, { expose: n, emit: l }) {
863
+ let f = e, p = l, m = E(e, "page"), _ = E(e, "pageSize"), ee = fe.directive, v = O("containerRef"), D = O("tableRef"), k = C(/* @__PURE__ */ new Set()), M = C([]), N = C([]), oe = C([]), P = C(typeof window < "u" && window.innerWidth <= 768), F = C(null), I, L, R = "", z = i(() => Me(f.columns, {
864
+ canAccess: f.canAccess,
865
+ rows: f.rows
866
+ })), ce = i(() => {
867
+ let e = M.value;
868
+ if (e.length === 0) return z.value;
869
+ let t = new Map(e.map((e, t) => [e, t]));
870
+ return [...z.value].sort((e, n) => (t.get(String(e.field)) ?? 2 ** 53 - 1) - (t.get(String(n.field)) ?? 2 ** 53 - 1));
871
+ }), le = i(() => ce.value.filter((e) => e.renderable && !k.value.has(String(e.field)))), ue = i(() => ce.value.filter((e) => e.renderable && !e.fixed && e.configurable !== !1)), de = i(() => [...le.value].reverse().find((e) => !e.fixed)?.field), { dictionaryMap: pe } = t(() => z.value.map((e) => e.dictionary ?? e.dictType)), me = i(() => {
872
+ if (typeof f.rowKey != "function") return f.rowKey;
873
+ let e = f.rowKey;
874
+ return (t) => String(e(t, f.rows.indexOf(t)));
875
+ }), he = i(() => f.pagination && f.total > 0), _e = i(() => f.showColumnSettings || f.columnSettings?.enabled), ve = i(() => P.value ? f.mobileActionWidth : f.actionWidth), ye = i(() => f.error instanceof Error ? f.error.message || f.errorText : typeof f.error == "string" ? f.error : f.errorText), be = i(() => f.defaultExpandAll ?? !!f.tableProps.defaultExpandAll), xe = i(() => f.treeProps ?? f.tableProps.treeProps ?? {
876
+ children: "children",
877
+ hasChildren: "hasChildren"
878
+ });
879
+ function we(e) {
880
+ let t = new Set(k.value);
881
+ if (t.has(e)) t.delete(e);
882
+ else {
883
+ if (ue.value.filter((e) => !t.has(String(e.field))).length <= 1) return;
884
+ t.add(e);
885
+ }
886
+ k.value = t, H(), g(() => D.value?.doLayout?.());
887
+ }
888
+ function Te() {
889
+ k.value = /* @__PURE__ */ new Set(), M.value = z.value.map((e) => String(e.field)), H(), g(() => D.value?.doLayout?.());
890
+ }
891
+ function De(e, t) {
892
+ let n = ue.value.map((e) => String(e.field)), r = n.indexOf(e), i = r + t;
893
+ if (r < 0 || i < 0 || i >= n.length) return;
894
+ let a = n[i], o = ce.value.map((e) => String(e.field)), s = o.indexOf(e), c = o.indexOf(a);
895
+ o.splice(s, 1), o.splice(c, 0, e), M.value = o, H(), g(() => D.value?.doLayout?.());
896
+ }
897
+ function B(e) {
898
+ R = e;
899
+ }
900
+ function V(e) {
901
+ if (!R || R === e) {
902
+ R = "";
903
+ return;
904
+ }
905
+ let t = ce.value.map((e) => String(e.field)), n = t.indexOf(R), r = t.indexOf(e);
906
+ n >= 0 && r >= 0 && (t.splice(n, 1), t.splice(r, 0, R), M.value = t, H(), g(() => D.value?.doLayout?.())), R = "";
907
+ }
908
+ function H() {
909
+ let e = f.columnSettings?.storageKey;
910
+ if (!(!e || typeof localStorage > "u")) try {
911
+ localStorage.setItem(e, JSON.stringify({
912
+ hidden: [...k.value],
913
+ order: M.value
914
+ }));
915
+ } catch {}
916
+ }
917
+ function U() {
918
+ M.value = z.value.map((e) => String(e.field));
919
+ let e = f.columnSettings?.storageKey;
920
+ if (!(!e || typeof localStorage > "u")) try {
921
+ let t = JSON.parse(localStorage.getItem(e) ?? "{}"), n = new Set(z.value.map((e) => String(e.field)));
922
+ k.value = new Set((t.hidden ?? []).filter((e) => n.has(e))), M.value = [...(t.order ?? []).filter((e) => n.has(e)), ...[...n].filter((e) => !(t.order ?? []).includes(e))];
923
+ } catch {
924
+ Te();
925
+ }
926
+ }
927
+ function Oe(e) {
928
+ let t = e.dictionary ?? e.dictType;
929
+ return t ? pe.value[t] ?? [] : T(e.options) ?? [];
930
+ }
931
+ function ke(e, t, n) {
932
+ return typeof t.hidden == "function" && !!t.hidden({
933
+ rows: f.rows,
934
+ row: e,
935
+ index: n
936
+ });
937
+ }
938
+ function W(e, t, n) {
939
+ return Y(e, t, n, Oe(t));
940
+ }
941
+ function G(e) {
942
+ return (t, n, r, i) => ke(t, e, i) ? "" : W(t, e, i).text;
943
+ }
944
+ function K(e) {
945
+ if (!f.scaleColumnWidth) return;
946
+ let t = e.minWidth ?? e.componentProps.minWidth;
947
+ return e.field === de.value ? t ?? e.width ?? e.componentProps.width : t;
948
+ }
949
+ function q(e) {
950
+ if (!(!f.scaleColumnWidth || e.field === de.value)) return e.width;
951
+ }
952
+ function J(e, t) {
953
+ if (typeof f.rowKey == "function") return f.rowKey(e, t);
954
+ let n = f.rowKey ? e[f.rowKey] : void 0;
955
+ return typeof n == "string" || typeof n == "number" ? n : void 0;
956
+ }
957
+ function X(e, t) {
958
+ let n = J(e, t);
959
+ return n === void 0 ? `index:${t}` : `row:${typeof n}:${n}`;
960
+ }
961
+ function Z(e, t) {
962
+ return F.value === X(e, t);
963
+ }
964
+ function Q(e, t, n) {
965
+ let r = X(e, t);
966
+ n ? F.value = r : F.value === r && (F.value = null);
967
+ }
968
+ function Ae(e, t) {
969
+ let n = X(e, t);
970
+ F.value = F.value === n ? null : n;
971
+ }
972
+ function je() {
973
+ F.value = null;
974
+ }
975
+ function Ye(e) {
976
+ N.value = e, oe.value = e.map((e) => J(e, f.rows.indexOf(e))).filter((e) => e !== void 0), p("selectionChange", e, oe.value);
977
+ }
978
+ function Xe(e) {
979
+ p("pageChange", e);
980
+ }
981
+ function Ze(e, t, n) {
982
+ p("rowClick", e, t, n);
983
+ }
984
+ function Qe(e, t) {
985
+ p("currentChange", e, t);
986
+ }
987
+ function $e(e, t) {
988
+ p("expandChange", e, t);
989
+ }
990
+ function et() {
991
+ if (typeof window > "u") return;
992
+ let e = window.innerWidth <= 768;
993
+ e !== P.value && (P.value = e, e || je(), g(() => D.value?.doLayout?.()));
994
+ }
995
+ function tt(e) {
996
+ e.key === "Escape" && je();
997
+ }
998
+ function nt() {
999
+ !f.autoResize || typeof ResizeObserver > "u" || !v.value || (I = new ResizeObserver(() => {
1000
+ L && clearTimeout(L), L = setTimeout(() => {
1001
+ L = void 0, D.value?.doLayout?.();
1002
+ });
1003
+ }), I.observe(v.value));
1004
+ }
1005
+ function rt() {
1006
+ I?.disconnect(), I = void 0, L &&= (clearTimeout(L), void 0);
1007
+ }
1008
+ return A(() => f.autoResize, () => {
1009
+ rt(), nt();
1010
+ }), A(() => [f.columns, f.columnSettings?.storageKey], U, { deep: !0 }), A(F, (e) => {
1011
+ typeof document > "u" || (document.removeEventListener("keydown", tt), e !== null && document.addEventListener("keydown", tt));
1012
+ }), te(() => {
1013
+ U(), et(), nt(), window.addEventListener("resize", et);
1014
+ }), y(() => {
1015
+ rt(), window.removeEventListener("resize", et), document.removeEventListener("keydown", tt);
1016
+ }), n({
1017
+ clearSelection: () => D.value?.clearSelection?.(),
1018
+ doLayout: () => D.value?.doLayout?.(),
1019
+ getSelectedRowKeys: () => [...oe.value],
1020
+ getSelectedRows: () => [...N.value],
1021
+ getColumnOrder: () => [...M.value],
1022
+ getExportData: (e = f.rows) => ({
1023
+ columns: le.value.map((e) => ({
1024
+ field: String(e.field),
1025
+ label: e.label
1026
+ })),
1027
+ rows: e.map((e) => le.value.map((t) => W(e, t, f.rows.indexOf(e)).text))
1028
+ }),
1029
+ getVisibleColumns: () => [...le.value],
1030
+ resetColumnSettings: Te,
1031
+ getTableElement: () => D.value?.$el,
1032
+ getTableInstance: () => D.value,
1033
+ toggleRowSelection: (e, t) => D.value?.toggleRowSelection?.(e, t)
1034
+ }), (t, n) => (b(), s("div", {
1035
+ ref_key: "containerRef",
1036
+ ref: v,
1037
+ class: "lumal-schema-table"
1038
+ }, [
1039
+ t.$slots["toolbar-title"] || t.$slots.toolbar || t.$slots["toolbar-tools"] || _e.value ? (b(), s("div", Ne, [
1040
+ t.$slots["toolbar-title"] ? (b(), s("div", Pe, [S(t.$slots, "toolbar-title", {}, void 0, !0)])) : o("", !0),
1041
+ t.$slots.toolbar ? (b(), s("div", Fe, [S(t.$slots, "toolbar", {}, void 0, !0)])) : o("", !0),
1042
+ t.$slots["toolbar-tools"] || _e.value ? (b(), s("div", Ie, [S(t.$slots, "toolbar-tools", {}, void 0, !0), _e.value ? (b(), s("div", Le, [c("details", null, [c("summary", Re, [d(T(ae), { name: "lumal:grid" })]), c("div", ze, [c("div", { class: "lumal-schema-table__column-options-header" }, [n[6] ||= c("strong", null, "列设置", -1), c("button", {
1043
+ type: "button",
1044
+ onClick: Te
1045
+ }, " 恢复默认 ")]), (b(!0), s(r, null, x(ue.value, (t, r) => (b(), s("div", {
1046
+ key: String(t.field),
1047
+ class: "lumal-schema-table__column-option",
1048
+ draggable: e.columnSettings?.reorderable !== !1,
1049
+ onDragstart: (e) => B(String(t.field)),
1050
+ onDragover: n[0] ||= ie(() => {}, ["prevent"]),
1051
+ onDrop: (e) => V(String(t.field))
1052
+ }, [d(T(se), {
1053
+ "model-value": !k.value.has(String(t.field)),
1054
+ "onUpdate:modelValue": (e) => we(String(t.field))
1055
+ }, {
1056
+ default: j(() => [u(w(t.label), 1)]),
1057
+ _: 2
1058
+ }, 1032, ["model-value", "onUpdate:modelValue"]), e.columnSettings?.reorderable === !1 ? o("", !0) : (b(), s("span", Ve, [c("button", {
1059
+ type: "button",
1060
+ disabled: r === 0,
1061
+ "aria-label": `上移${t.label}`,
1062
+ onClick: (e) => De(String(t.field), -1)
1063
+ }, " ↑ ", 8, He), c("button", {
1064
+ type: "button",
1065
+ disabled: r === ue.value.length - 1,
1066
+ "aria-label": `下移${t.label}`,
1067
+ onClick: (e) => De(String(t.field), 1)
1068
+ }, " ↓ ", 8, Ue)]))], 40, Be))), 128))])])])) : o("", !0)])) : o("", !0)
1069
+ ])) : o("", !0),
1070
+ e.error ? (b(), s("div", We, [c("span", null, w(ye.value), 1), c("button", {
1071
+ type: "button",
1072
+ onClick: n[1] ||= (e) => p("retry")
1073
+ }, w(e.retryText), 1)])) : (b(), s("div", Ge, [ne((b(), a(T(Se), h({
1074
+ ref_key: "tableRef",
1075
+ ref: D
1076
+ }, e.tableProps, {
1077
+ class: "lumal-schema-table__body",
1078
+ data: e.rows,
1079
+ "row-key": me.value,
1080
+ "empty-text": e.emptyText,
1081
+ "row-class-name": e.rowClassName,
1082
+ "cell-class-name": e.cellClassName,
1083
+ "header-cell-class-name": e.headerCellClassName,
1084
+ "default-expand-all": be.value,
1085
+ "tree-props": xe.value,
1086
+ "data-loading": e.loading,
1087
+ onSelectionChange: Ye,
1088
+ onSortChange: n[2] ||= (e) => p("sortChange", e),
1089
+ onFilterChange: n[3] ||= (e) => p("filterChange", e),
1090
+ onRowClick: Ze,
1091
+ onCurrentChange: Qe,
1092
+ onExpandChange: $e
1093
+ }), {
1094
+ default: j(() => [
1095
+ e.selection ? (b(), a(T(Ce), {
1096
+ key: 0,
1097
+ type: "selection",
1098
+ width: "48"
1099
+ })) : o("", !0),
1100
+ e.showIndex ? (b(), a(T(Ce), {
1101
+ key: 1,
1102
+ type: "index",
1103
+ label: e.indexLabel,
1104
+ width: e.indexWidth
1105
+ }, null, 8, ["label", "width"])) : o("", !0),
1106
+ (b(!0), s(r, null, x(le.value, (n) => (b(), a(T(Ce), h({ key: String(n.field) }, { ref_for: !0 }, n.componentProps, {
1107
+ prop: String(n.field),
1108
+ label: n.label,
1109
+ align: n.align,
1110
+ width: q(n),
1111
+ "min-width": K(n),
1112
+ fixed: n.fixed,
1113
+ resizable: e.columnResizable,
1114
+ "show-overflow-tooltip": n.showOverflowTooltip ?? !0,
1115
+ formatter: G(n),
1116
+ "data-field": String(n.field)
1117
+ }), {
1118
+ default: j(({ row: e, $index: r }) => [ke(e, n, r) ? o("", !0) : S(t.$slots, `table-${String(n.field)}`, {
1119
+ key: 0,
1120
+ row: e,
1121
+ index: r,
1122
+ column: n,
1123
+ value: e[n.field]
1124
+ }, () => [d($, { display: W(e, n, r) }, null, 8, ["display"])], !0)]),
1125
+ _: 2
1126
+ }, 1040, [
1127
+ "prop",
1128
+ "label",
1129
+ "align",
1130
+ "width",
1131
+ "min-width",
1132
+ "fixed",
1133
+ "resizable",
1134
+ "show-overflow-tooltip",
1135
+ "formatter",
1136
+ "data-field"
1137
+ ]))), 128)),
1138
+ t.$slots.actions ? (b(), a(T(Ce), {
1139
+ key: 2,
1140
+ fixed: "right",
1141
+ label: e.actionLabel,
1142
+ width: ve.value,
1143
+ "data-field": "actions"
1144
+ }, {
1145
+ default: j(({ row: n, $index: r }) => [c("div", Ke, [S(t.$slots, "actions", {
1146
+ row: n,
1147
+ index: r
1148
+ }, void 0, !0)]), d(T(ge), {
1149
+ visible: Z(n, r),
1150
+ teleported: !0,
1151
+ trigger: "click",
1152
+ placement: "bottom-end",
1153
+ "popper-class": "lumal-schema-table__mobile-actions-popper",
1154
+ "onUpdate:visible": (e) => Q(n, r, e)
1155
+ }, {
1156
+ reference: j(() => [c("button", {
1157
+ type: "button",
1158
+ class: "lumal-schema-table__mobile-actions",
1159
+ "aria-haspopup": "menu",
1160
+ "aria-expanded": Z(n, r),
1161
+ onClick: ie((e) => Ae(n, r), ["stop"]),
1162
+ onKeydown: re(ie(je, ["stop", "prevent"]), ["esc"])
1163
+ }, w(e.mobileActionLabel), 41, qe)]),
1164
+ default: j(() => [c("div", {
1165
+ class: "lumal-schema-table__mobile-actions-menu",
1166
+ role: "menu",
1167
+ onClickCapture: je
1168
+ }, [S(t.$slots, "actions", {
1169
+ row: n,
1170
+ index: r
1171
+ }, void 0, !0)], 32)]),
1172
+ _: 2
1173
+ }, 1032, ["visible", "onUpdate:visible"])]),
1174
+ _: 3
1175
+ }, 8, ["label", "width"])) : o("", !0)
1176
+ ]),
1177
+ _: 3
1178
+ }, 16, [
1179
+ "data",
1180
+ "row-key",
1181
+ "empty-text",
1182
+ "row-class-name",
1183
+ "cell-class-name",
1184
+ "header-cell-class-name",
1185
+ "default-expand-all",
1186
+ "tree-props",
1187
+ "data-loading"
1188
+ ])), [[T(ee), e.loading]])])),
1189
+ he.value ? (b(), s("div", Je, [d(T(Ee), {
1190
+ page: m.value,
1191
+ "onUpdate:page": n[4] ||= (e) => m.value = e,
1192
+ "page-size": _.value,
1193
+ "onUpdate:pageSize": n[5] ||= (e) => _.value = e,
1194
+ total: e.total,
1195
+ "page-sizes": e.pageSizes,
1196
+ onChange: Xe
1197
+ }, null, 8, [
1198
+ "page",
1199
+ "page-size",
1200
+ "total",
1201
+ "page-sizes"
1202
+ ])])) : o("", !0)
1203
+ ], 512));
1204
+ }
1205
+ }), [["__scopeId", "data-v-0cb1dbee"]]), Xe = /* @__PURE__ */ f({
1206
+ __name: "LumalCrudEditor",
1207
+ props: /*@__PURE__*/ m({
1208
+ beforeClose: {},
1209
+ closeOnClickModal: {
1210
+ type: Boolean,
1211
+ default: !1
1212
+ },
1213
+ destroyOnClose: {
1214
+ type: Boolean,
1215
+ default: !0
1216
+ },
1217
+ title: {},
1218
+ type: { default: "dialog" },
1219
+ width: { default: "min(920px, calc(100vw - 32px))" }
1220
+ }, {
1221
+ modelValue: {
1222
+ type: Boolean,
1223
+ default: !1
1224
+ },
1225
+ modelModifiers: {}
1226
+ }),
1227
+ emits: ["update:modelValue"],
1228
+ setup(e) {
1229
+ let t = E(e, "modelValue");
1230
+ return (n, r) => e.type === "drawer" ? (b(), a(T(z), {
1231
+ key: 0,
1232
+ modelValue: t.value,
1233
+ "onUpdate:modelValue": r[0] ||= (e) => t.value = e,
1234
+ title: e.title,
1235
+ size: e.width,
1236
+ "close-on-click-modal": e.closeOnClickModal,
1237
+ "destroy-on-close": e.destroyOnClose,
1238
+ "before-close": e.beforeClose,
1239
+ class: "lumal-crud-table__drawer"
1240
+ }, {
1241
+ footer: j(() => [S(n.$slots, "footer")]),
1242
+ default: j(() => [S(n.$slots, "default")]),
1243
+ _: 3
1244
+ }, 8, [
1245
+ "modelValue",
1246
+ "title",
1247
+ "size",
1248
+ "close-on-click-modal",
1249
+ "destroy-on-close",
1250
+ "before-close"
1251
+ ])) : (b(), a(T(R), {
1252
+ key: 1,
1253
+ modelValue: t.value,
1254
+ "onUpdate:modelValue": r[1] ||= (e) => t.value = e,
1255
+ title: e.title,
1256
+ width: e.width,
1257
+ "close-on-click-modal": e.closeOnClickModal,
1258
+ "destroy-on-close": e.destroyOnClose,
1259
+ "before-close": e.beforeClose,
1260
+ class: "lumal-crud-table__dialog"
1261
+ }, {
1262
+ footer: j(() => [S(n.$slots, "footer")]),
1263
+ default: j(() => [S(n.$slots, "default")]),
1264
+ _: 3
1265
+ }, 8, [
1266
+ "modelValue",
1267
+ "title",
1268
+ "width",
1269
+ "close-on-click-modal",
1270
+ "destroy-on-close",
1271
+ "before-close"
1272
+ ]));
1273
+ }
1274
+ });
1275
+ //#endregion
1276
+ //#region src/components/crud-table/schema.ts
1277
+ function Ze(e = [], t = []) {
1278
+ return t.length > 0 ? [...t] : e.filter((e) => e.showInForm !== !1 && e.field !== "action").map((e) => ({
1279
+ append: e.append,
1280
+ component: e.component ?? (e.dictionary || e.dictType ? "select" : "input"),
1281
+ componentProps: e.formComponentProps,
1282
+ defaultValue: e.defaultValue,
1283
+ dictionary: e.dictionary,
1284
+ dictType: e.dictType,
1285
+ editDisabled: e.editDisabled,
1286
+ field: e.field,
1287
+ label: e.label,
1288
+ options: e.options,
1289
+ placeholder: e.placeholder,
1290
+ prefix: e.prefix,
1291
+ prepend: e.prepend,
1292
+ required: e.required,
1293
+ rules: e.rules,
1294
+ span: e.span,
1295
+ suffix: e.suffix
1296
+ }));
1297
+ }
1298
+ //#endregion
1299
+ //#region src/components/crud-table/useCrudData.ts
1300
+ function Qe(e) {
1301
+ return typeof e == "object" && !!e && !Array.isArray(e);
1302
+ }
1303
+ function $e(e) {
1304
+ let t = C([]), n = C(0), r = C(!1), a = C(""), o = i(() => e.dataSource.value ? t.value : e.rows.value), s = i(() => e.dataSource.value ? n.value : e.total.value), c = i(() => e.loading.value || r.value);
1305
+ function l(t) {
1306
+ let n = e.dataSource.value;
1307
+ return n?.parseResponse ? n.parseResponse(t) : !Qe(t) || !Array.isArray(t.items) || typeof t.total != "number" ? {
1308
+ items: [],
1309
+ total: 0
1310
+ } : {
1311
+ items: t.items,
1312
+ total: t.total
1313
+ };
1314
+ }
1315
+ async function u() {
1316
+ let i = e.dataSource.value;
1317
+ if (i) {
1318
+ r.value = !0, a.value = "";
1319
+ try {
1320
+ let r = l(await i.fetch({
1321
+ page: e.page.value,
1322
+ pageSize: e.pageSize.value,
1323
+ query: { ...e.queryModel.value }
1324
+ }));
1325
+ t.value = r.items, n.value = r.total;
1326
+ } catch (e) {
1327
+ a.value = e instanceof Error ? e.message : String(e), t.value = [], n.value = 0;
1328
+ } finally {
1329
+ r.value = !1;
1330
+ }
1331
+ }
1332
+ }
1333
+ return {
1334
+ currentLoading: c,
1335
+ currentRows: o,
1336
+ currentTotal: s,
1337
+ error: a,
1338
+ load: u
1339
+ };
1340
+ }
1341
+ //#endregion
1342
+ //#region src/components/crud-table/useCrudDialog.ts
1343
+ function et(e) {
1344
+ try {
1345
+ return JSON.stringify(e);
1346
+ } catch {
1347
+ return String(e);
1348
+ }
1349
+ }
1350
+ function tt(e) {
1351
+ let t = C(!1), n = C("create"), r = C({}), a = C({}), o = C(), s = C(!1), c = C(""), l = i(() => n.value !== "view" && et(r.value) !== et(a.value));
1352
+ function u(e, i) {
1353
+ let s = i ? { ...i } : {};
1354
+ n.value = e, o.value = i, r.value = s, a.value = { ...s }, c.value = "", t.value = !0;
1355
+ }
1356
+ async function d(r) {
1357
+ let i = e.dataSource.value;
1358
+ if (!i) return t.value = !1, !0;
1359
+ s.value = !0, c.value = "";
1360
+ try {
1361
+ return n.value === "edit" && o.value ? await i.update?.(o.value, r) : await i.create?.(r), a.value = { ...r }, t.value = !1, await e.afterSave(), !0;
1362
+ } catch (e) {
1363
+ return c.value = e instanceof Error ? e.message : String(e), !1;
1364
+ } finally {
1365
+ s.value = !1;
1366
+ }
1367
+ }
1368
+ return {
1369
+ dirty: l,
1370
+ editingRow: o,
1371
+ error: c,
1372
+ mode: n,
1373
+ model: r,
1374
+ open: u,
1375
+ saving: s,
1376
+ submit: d,
1377
+ visible: t
1378
+ };
1379
+ }
1380
+ //#endregion
1381
+ //#region src/components/crud-table/useCrudQuery.ts
1382
+ function nt(e) {
1383
+ let t = C(e.defaultCollapsed.value), n = i(() => Oe(U(e.schemas.value))), r = i(() => {
1384
+ if (!e.collapsible.value || !t.value) return e.schemas.value;
1385
+ let n = 24 / e.columns.value, r = e.columns.value * e.collapsedRows.value, i = 0;
1386
+ return e.schemas.value.filter((e) => {
1387
+ let t = Math.max(1, Math.ceil((e.span ?? n) / n));
1388
+ return i + t > r ? !1 : (i += t, !0);
1389
+ });
1390
+ }), a = i(() => e.collapsible.value && r.value.length < e.schemas.value.length);
1391
+ function o() {
1392
+ let t = { ...n.value };
1393
+ return e.model.value = t, t;
1394
+ }
1395
+ function s() {
1396
+ t.value = !t.value;
1397
+ }
1398
+ return {
1399
+ canCollapse: a,
1400
+ collapsed: t,
1401
+ defaultModel: n,
1402
+ reset: o,
1403
+ toggle: s,
1404
+ visibleSchemas: r
1405
+ };
1406
+ }
1407
+ //#endregion
1408
+ //#region src/components/crud-table/useCrudSelection.ts
1409
+ function rt() {
1410
+ let e = C([]), t = C([]);
1411
+ function n() {
1412
+ e.value = [], t.value = [];
1413
+ }
1414
+ function r(n, r = []) {
1415
+ e.value = n, t.value = r;
1416
+ }
1417
+ return {
1418
+ clear: n,
1419
+ selectedRowKeys: t,
1420
+ selectedRows: e,
1421
+ update: r
1422
+ };
1423
+ }
1424
+ //#endregion
1425
+ //#region src/components/crud-table/LumalCrudTable.vue?vue&type=script&setup=true&lang.ts
1426
+ var it = { class: "lumal-crud-table__query-actions" }, at = {
1427
+ key: 1,
1428
+ class: "lumal-crud-table__error",
1429
+ role: "alert"
1430
+ }, ot = { class: "lumal-crud-table__table-panel" }, st = { class: "lumal-crud-table__body" }, ct = { class: "lumal-crud-table__toolbar-tools" }, lt = {
1431
+ key: 0,
1432
+ class: "lumal-crud-table__extra"
1433
+ }, ut = {
1434
+ key: 1,
1435
+ class: "lumal-crud-table__pagination"
1436
+ }, dt = {
1437
+ key: 0,
1438
+ class: "lumal-crud-table__dialog-error",
1439
+ role: "alert"
1440
+ }, ft = { class: "lumal-crud-table__dialog-footer" }, pt = /*#__PURE__*/ n(/* @__PURE__ */ f({
1441
+ __name: "LumalCrudTable",
1442
+ props: /*@__PURE__*/ m({
1443
+ title: {},
1444
+ querySchemas: { default: () => [] },
1445
+ formSchemas: { default: () => [] },
1446
+ columns: { default: () => [] },
1447
+ dataSource: {},
1448
+ rows: { default: () => [] },
1449
+ rowKey: {},
1450
+ total: { default: 0 },
1451
+ pageSizes: { default: () => [
1452
+ 10,
1453
+ 20,
1454
+ 50,
1455
+ 100
1456
+ ] },
1457
+ pagination: {
1458
+ type: [Boolean, Object],
1459
+ default: !0
1460
+ },
1461
+ loading: {
1462
+ type: Boolean,
1463
+ default: !1
1464
+ },
1465
+ emptyText: { default: "暂无数据" },
1466
+ searchText: { default: "查询" },
1467
+ resetText: { default: "重置" },
1468
+ createText: { default: "新增" },
1469
+ batchDeleteText: { default: "批量删除" },
1470
+ selection: {
1471
+ type: Boolean,
1472
+ default: !1
1473
+ },
1474
+ query: {},
1475
+ table: {},
1476
+ toolbar: {},
1477
+ actions: {},
1478
+ editor: {}
1479
+ }, {
1480
+ queryModel: { default: () => ({}) },
1481
+ queryModelModifiers: {},
1482
+ page: { default: 1 },
1483
+ pageModifiers: {},
1484
+ pageSize: { default: 10 },
1485
+ pageSizeModifiers: {}
1486
+ }),
1487
+ emits: /*@__PURE__*/ m([
1488
+ "search",
1489
+ "reset",
1490
+ "pageChange",
1491
+ "export",
1492
+ "operationError"
1493
+ ], [
1494
+ "update:queryModel",
1495
+ "update:page",
1496
+ "update:pageSize"
1497
+ ]),
1498
+ setup(e, { expose: t, emit: n }) {
1499
+ let r = e, f = n, m = E(e, "queryModel"), h = E(e, "page"), v = E(e, "pageSize"), D = O("crudRef"), re = O("queryRef"), ie = O("queryFormRef"), M = O("dialogFormRef"), N = O("tableRef"), oe = i(() => r.query?.schemas ?? r.querySchemas), se = i(() => r.table?.columns ?? r.columns), F = i(() => se.value.filter((e) => e.showInTable !== !1)), I = i(() => Ze(se.value, r.formSchemas)), L = i(() => r.table?.rowKey ?? r.rowKey), R = i(() => r.table?.selection ?? r.selection), z = i(() => r.table?.emptyText ?? r.emptyText), ce = C(3), le = i(() => Math.max(1, r.query?.columns ?? ce.value)), ue = i(() => r.query?.collapsible ?? !1), de = i(() => r.query?.defaultCollapsed ?? !0), fe = i(() => Math.max(1, r.query?.collapsedRows ?? 1)), me = i(() => typeof r.pagination == "object" ? r.pagination.enabled !== !1 : r.pagination), he = i(() => typeof r.pagination == "object" ? r.pagination.pageSizes ?? r.pageSizes : r.pageSizes), ge = i(() => oe.value.length > 0), _e = i(() => I.value.length > 0), ve = i(() => _e.value && r.toolbar?.create !== !1), ye = i(() => R.value && r.toolbar?.batchDelete !== !1), be = i(() => !!r.dataSource && r.toolbar?.refresh !== !1), xe = i(() => !!r.toolbar?.export), Se = i(() => r.toolbar?.fullscreen !== !1), Ce = i(() => ge.value && r.toolbar?.queryToggle !== !1), we = i(() => ve.value || ye.value || xe.value), Te = i(() => Ce.value || be.value || Se.value), De = typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(max-width: 768px)").matches, B = {
1500
+ desktop: r.query?.defaultVisible ?? !0,
1501
+ mobile: r.query?.mobileDefaultVisible ?? r.query?.defaultVisible ?? !0
1502
+ }, V = i(() => r.dataSource), H = C(!1), U = C(!1), Oe = C(De), ke = i(() => Oe.value ? "mobile" : "desktop"), W = C(B), G = C(B[De ? "mobile" : "desktop"]), q, J, Y, X = $e({
1503
+ dataSource: V,
1504
+ loading: i(() => r.loading),
1505
+ page: h,
1506
+ pageSize: v,
1507
+ queryModel: m,
1508
+ rows: i(() => r.rows),
1509
+ total: i(() => r.total)
1510
+ }), Z = nt({
1511
+ collapsedRows: fe,
1512
+ collapsible: ue,
1513
+ columns: le,
1514
+ defaultCollapsed: de,
1515
+ model: m,
1516
+ schemas: oe
1517
+ }), Q = rt(), $ = tt({
1518
+ dataSource: V,
1519
+ afterSave: X.load
1520
+ }), Ae = i(() => X.currentLoading.value || H.value), je = i(() => me.value && X.currentTotal.value > 0), Me = i(() => ({
1521
+ create: r.editor?.createTitle ?? r.toolbar?.createText ?? r.createText,
1522
+ edit: r.editor?.editTitle ?? "编辑",
1523
+ view: r.editor?.viewTitle ?? "查看"
1524
+ })[$.mode.value]);
1525
+ A(() => r.dataSource, () => void X.load(), { immediate: !0 }), A([h, v], () => void X.load());
1526
+ function Ne() {
1527
+ U.value = typeof document < "u" && document.fullscreenElement === D.value;
1528
+ }
1529
+ function Pe(e) {
1530
+ if (r.query?.columns !== void 0 || e <= 0) return;
1531
+ let t = e >= 1280 ? 4 : e >= 960 ? 3 : e >= 640 ? 2 : 1;
1532
+ ce.value !== t && (ce.value = t);
1533
+ }
1534
+ function Fe() {
1535
+ J?.disconnect(), J = void 0, re.value && (Pe(re.value.clientWidth), !(typeof ResizeObserver > "u") && (J = new ResizeObserver((e) => Pe(e[0]?.contentRect.width ?? 0)), J.observe(re.value)));
1536
+ }
1537
+ function Ie(e) {
1538
+ Oe.value !== e && (Oe.value = e, G.value = W.value[ke.value], g(() => {
1539
+ G.value ? Fe() : J?.disconnect(), N.value?.doLayout();
1540
+ }));
1541
+ }
1542
+ function Le(e) {
1543
+ Ie(e.matches);
1544
+ }
1545
+ te(() => {
1546
+ typeof document < "u" && document.addEventListener("fullscreenchange", Ne), typeof window < "u" && typeof window.matchMedia == "function" && (Y = window.matchMedia("(max-width: 768px)"), Ie(Y.matches), Y.addEventListener?.("change", Le)), Fe();
1547
+ }), y(() => {
1548
+ typeof document < "u" && document.removeEventListener("fullscreenchange", Ne), Y?.removeEventListener?.("change", Le), J?.disconnect(), q && clearTimeout(q);
1549
+ }), A(() => r.query?.columns, (e) => {
1550
+ e === void 0 && Pe(re.value?.clientWidth ?? 0);
1551
+ }), A([() => r.query?.defaultVisible, () => r.query?.mobileDefaultVisible], ([e, t]) => {
1552
+ W.value = {
1553
+ desktop: e ?? !0,
1554
+ mobile: t ?? e ?? !0
1555
+ }, G.value = W.value[ke.value];
1556
+ });
1557
+ function Re() {
1558
+ f("search", { ...m.value }), h.value === 1 ? X.load() : h.value = 1;
1559
+ }
1560
+ function ze() {
1561
+ let e = Z.reset();
1562
+ ie.value?.resetFields(), f("reset", e), h.value === 1 ? X.load() : h.value = 1;
1563
+ }
1564
+ function Be() {
1565
+ r.query?.submitOnChange && (q && clearTimeout(q), q = setTimeout(Re, Math.max(0, r.query.submitDebounce ?? 300)));
1566
+ }
1567
+ async function Ve() {
1568
+ let e = [...Q.selectedRows.value], t = e.length > 0 ? e : X.currentRows.value, n = {
1569
+ columns: F.value,
1570
+ query: { ...m.value },
1571
+ rows: t,
1572
+ selectedRows: e
1573
+ };
1574
+ f("export", {
1575
+ query: n.query,
1576
+ selectedRows: e
1577
+ });
1578
+ let i = typeof r.toolbar?.export == "object" ? r.toolbar.export : void 0;
1579
+ if (i?.handler) {
1580
+ await i.handler(n);
1581
+ return;
1582
+ }
1583
+ let a = N.value?.getExportData(t);
1584
+ if (!a || typeof document > "u" || typeof URL > "u" || typeof navigator < "u" && navigator.userAgent.toLowerCase().includes("jsdom")) return;
1585
+ let o = (e) => `"${e.replace(/"/g, "\"\"")}"`, s = [a.columns.map((e) => o(e.label)).join(","), ...a.rows.map((e) => e.map(o).join(","))].join("\n"), c = new Blob([`\uFEFF${s}`], { type: "text/csv;charset=utf-8" }), l = URL.createObjectURL(c), u = document.createElement("a");
1586
+ u.href = l, u.download = i?.filename ?? `lumal-export-${Date.now()}.csv`, u.click(), URL.revokeObjectURL(l);
1587
+ }
1588
+ async function He() {
1589
+ if (!(!D.value || typeof document > "u")) try {
1590
+ document.fullscreenElement === D.value ? await document.exitFullscreen?.() : await D.value.requestFullscreen?.();
1591
+ } catch (e) {
1592
+ f("operationError", e);
1593
+ }
1594
+ }
1595
+ function Ue(e) {
1596
+ f("pageChange", e);
1597
+ }
1598
+ function We() {
1599
+ if (G.value = !G.value, W.value = {
1600
+ ...W.value,
1601
+ [ke.value]: G.value
1602
+ }, G.value) {
1603
+ g(() => {
1604
+ Fe(), N.value?.doLayout();
1605
+ });
1606
+ return;
1607
+ }
1608
+ J?.disconnect(), g(() => N.value?.doLayout());
1609
+ }
1610
+ function Ge(e, t, n, r) {
1611
+ return typeof e == "function" ? e(n, r) : e ?? t;
1612
+ }
1613
+ function Ke() {
1614
+ $.open("create");
1615
+ }
1616
+ function qe(e) {
1617
+ $.open("edit", e);
1618
+ }
1619
+ function Je(e) {
1620
+ $.open("view", e);
1621
+ }
1622
+ async function Qe(e) {
1623
+ await M.value?.validate() !== !1 && !await $.submit(e) && $.error.value && f("operationError", Error($.error.value));
1624
+ }
1625
+ async function et(e) {
1626
+ let t = r.actions?.confirmRemove;
1627
+ if (t === !1) return !0;
1628
+ if (typeof t == "function") return t(e);
1629
+ let n = typeof t?.message == "function" ? t.message(e) : t?.message ?? `确定删除选中的 ${e.length} 条数据吗?`;
1630
+ try {
1631
+ return await pe.confirm(n, t?.title ?? "删除确认", {
1632
+ cancelButtonText: t?.cancelButtonText ?? "取消",
1633
+ confirmButtonText: t?.confirmButtonText ?? "删除",
1634
+ type: "warning"
1635
+ }), !0;
1636
+ } catch {
1637
+ return !1;
1638
+ }
1639
+ }
1640
+ async function pt(e) {
1641
+ H.value = !0;
1642
+ try {
1643
+ return await e(), bt(), await X.load(), !0;
1644
+ } catch (e) {
1645
+ return f("operationError", e), !1;
1646
+ } finally {
1647
+ H.value = !1;
1648
+ }
1649
+ }
1650
+ async function mt(e) {
1651
+ let t = r.dataSource?.remove, n = !r.dataSource?.beforeRemove || await r.dataSource.beforeRemove([e]);
1652
+ !t || !n || !await et([e]) || await pt(() => t(e));
1653
+ }
1654
+ async function ht() {
1655
+ let e = [...Q.selectedRows.value], t = !r.dataSource?.beforeRemove || await r.dataSource.beforeRemove(e);
1656
+ e.length === 0 || !t || !await et(e) || await pt(() => r.dataSource?.removeMany ? r.dataSource.removeMany(e) : Promise.all(e.map((e) => r.dataSource?.remove?.(e))));
1657
+ }
1658
+ async function gt() {
1659
+ if ($.saving.value) return !1;
1660
+ if (!$.dirty.value) return !0;
1661
+ if (r.editor?.confirmClose) return r.editor.confirmClose({
1662
+ mode: $.mode.value,
1663
+ model: $.model.value,
1664
+ row: $.editingRow.value
1665
+ });
1666
+ try {
1667
+ return await pe.confirm("表单内容尚未保存,确定关闭吗?", "关闭确认", {
1668
+ cancelButtonText: "继续编辑",
1669
+ confirmButtonText: "关闭",
1670
+ type: "warning"
1671
+ }), !0;
1672
+ } catch {
1673
+ return !1;
1674
+ }
1675
+ }
1676
+ function _t(e) {
1677
+ gt().then((t) => {
1678
+ t && e();
1679
+ });
1680
+ }
1681
+ function vt() {
1682
+ gt().then((e) => {
1683
+ e && ($.visible.value = !1);
1684
+ });
1685
+ }
1686
+ function yt() {
1687
+ Qe($.model.value);
1688
+ }
1689
+ function bt() {
1690
+ Q.clear(), N.value?.clearSelection();
1691
+ }
1692
+ return t({
1693
+ clearSelection: bt,
1694
+ getCrudElement: () => D.value,
1695
+ closeEditor: vt,
1696
+ getEditorForm: () => M.value,
1697
+ getQueryForm: () => ie.value,
1698
+ getSelectedRowKeys: () => [...Q.selectedRowKeys.value],
1699
+ getSelectedRows: () => [...Q.selectedRows.value],
1700
+ getTable: () => N.value,
1701
+ isLoading: () => Ae.value,
1702
+ openCreate: Ke,
1703
+ openEdit: qe,
1704
+ openView: Je,
1705
+ query: Re,
1706
+ reset: ze,
1707
+ reload: X.load,
1708
+ removeRow: mt,
1709
+ removeSelectedRows: ht,
1710
+ setFormData: (e) => M.value?.setValues(e),
1711
+ toggleFullscreen: He,
1712
+ toggleQuery: Z.toggle,
1713
+ toggleQueryPanel: We
1714
+ }), (t, n) => (b(), s("div", {
1715
+ ref_key: "crudRef",
1716
+ ref: D,
1717
+ class: "lumal-crud-table"
1718
+ }, [
1719
+ ge.value ? ne((b(), s("div", {
1720
+ key: 0,
1721
+ ref_key: "queryRef",
1722
+ ref: re,
1723
+ class: _(["lumal-crud-table__query", { "is-collapsed": T(Z).collapsed.value }])
1724
+ }, [d(T(K), {
1725
+ ref_key: "queryFormRef",
1726
+ ref: ie,
1727
+ modelValue: m.value,
1728
+ "onUpdate:modelValue": n[0] ||= (e) => m.value = e,
1729
+ schemas: T(Z).visibleSchemas.value,
1730
+ columns: le.value,
1731
+ "label-width": e.query?.labelWidth ?? 88,
1732
+ class: "lumal-crud-table__query-form",
1733
+ onValuesChange: Be
1734
+ }, l({ _: 2 }, [x(T(Z).visibleSchemas.value.filter((e) => t.$slots[`query-${String(e.field)}`]), (e) => ({
1735
+ name: `field-${String(e.field)}`,
1736
+ fn: j((n) => [S(t.$slots, `query-${String(e.field)}`, ee(p(n)), void 0, !0)])
1737
+ }))]), 1032, [
1738
+ "modelValue",
1739
+ "schemas",
1740
+ "columns",
1741
+ "label-width"
1742
+ ]), c("div", it, [
1743
+ d(T(P), {
1744
+ type: "primary",
1745
+ "native-type": "button",
1746
+ "data-action": "search",
1747
+ onClick: Re
1748
+ }, {
1749
+ default: j(() => [u(w(e.query?.searchText ?? e.searchText), 1)]),
1750
+ _: 1
1751
+ }),
1752
+ d(T(P), {
1753
+ "native-type": "button",
1754
+ "data-action": "reset",
1755
+ onClick: ze
1756
+ }, {
1757
+ default: j(() => [u(w(e.query?.resetText ?? e.resetText), 1)]),
1758
+ _: 1
1759
+ }),
1760
+ T(Z).canCollapse.value ? (b(), a(T(P), {
1761
+ key: 0,
1762
+ "native-type": "button",
1763
+ "data-action": "toggle-query",
1764
+ "aria-expanded": String(!T(Z).collapsed.value),
1765
+ onClick: T(Z).toggle
1766
+ }, {
1767
+ default: j(() => [u(w(T(Z).collapsed.value ? "展开" : "收起"), 1)]),
1768
+ _: 1
1769
+ }, 8, ["aria-expanded", "onClick"])) : o("", !0)
1770
+ ])], 2)), [[k, G.value]]) : o("", !0),
1771
+ T(X).error.value ? (b(), s("div", at, [c("span", null, w(T(X).error.value), 1), d(T(P), {
1772
+ "native-type": "button",
1773
+ "data-action": "retry",
1774
+ onClick: T(X).load
1775
+ }, {
1776
+ default: j(() => [...n[5] ||= [u(" 重试 ", -1)]]),
1777
+ _: 1
1778
+ }, 8, ["onClick"])])) : o("", !0),
1779
+ c("section", ot, [
1780
+ c("div", st, [d(T(Ye), {
1781
+ ref_key: "tableRef",
1782
+ ref: N,
1783
+ columns: F.value,
1784
+ rows: T(X).currentRows.value,
1785
+ "row-key": L.value,
1786
+ "empty-text": z.value,
1787
+ loading: Ae.value,
1788
+ selection: R.value,
1789
+ "show-column-settings": e.table?.showColumnSettings,
1790
+ "column-settings": e.table?.columnSettings,
1791
+ "auto-resize": e.table?.autoResize ?? !0,
1792
+ "action-width": e.table?.actionWidth,
1793
+ "mobile-action-width": e.table?.mobileActionWidth,
1794
+ "table-props": {
1795
+ height: "100%",
1796
+ border: !0
1797
+ },
1798
+ onSelectionChange: T(Q).update
1799
+ }, l({ _: 2 }, [
1800
+ t.$slots["table-title"] || e.title ? {
1801
+ name: "toolbar-title",
1802
+ fn: j(() => [S(t.$slots, "table-title", {}, () => [u(w(e.title), 1)], !0)]),
1803
+ key: "0"
1804
+ } : void 0,
1805
+ we.value || t.$slots.actions || t.$slots["toolbar-actions"] ? {
1806
+ name: "toolbar",
1807
+ fn: j(() => [c("div", { class: _(["lumal-crud-table__toolbar", `is-${e.toolbar?.actionsPosition ?? "right"}`]) }, [
1808
+ ve.value ? S(t.$slots, "create-action", {
1809
+ key: 0,
1810
+ openCreate: Ke
1811
+ }, () => [d(T(P), {
1812
+ type: "primary",
1813
+ "native-type": "button",
1814
+ "data-action": "create",
1815
+ onClick: Ke
1816
+ }, {
1817
+ default: j(() => [d(T(ae), { name: "lumal:plus" }), u(" " + w(e.toolbar?.createText ?? e.createText), 1)]),
1818
+ _: 1
1819
+ })], !0) : o("", !0),
1820
+ ye.value ? (b(), a(T(P), {
1821
+ key: 1,
1822
+ "native-type": "button",
1823
+ "data-action": "batch-remove",
1824
+ disabled: T(Q).selectedRows.value.length === 0 || H.value,
1825
+ onClick: ht
1826
+ }, {
1827
+ default: j(() => [u(w(e.toolbar?.batchDeleteText ?? e.batchDeleteText), 1)]),
1828
+ _: 1
1829
+ }, 8, ["disabled"])) : o("", !0),
1830
+ xe.value ? (b(), a(T(P), {
1831
+ key: 2,
1832
+ "native-type": "button",
1833
+ "data-action": "export",
1834
+ onClick: Ve
1835
+ }, {
1836
+ default: j(() => [u(w(e.toolbar?.exportText ?? "导出"), 1)]),
1837
+ _: 1
1838
+ })) : o("", !0),
1839
+ S(t.$slots, "toolbar-actions", {
1840
+ reload: T(X).load,
1841
+ openCreate: Ke,
1842
+ selectedRows: T(Q).selectedRows.value,
1843
+ selectedRowKeys: T(Q).selectedRowKeys.value,
1844
+ clearSelection: bt
1845
+ }, void 0, !0),
1846
+ S(t.$slots, "actions", {}, void 0, !0)
1847
+ ], 2)]),
1848
+ key: "1"
1849
+ } : void 0,
1850
+ Te.value || t.$slots["toolbar-tools"] ? {
1851
+ name: "toolbar-tools",
1852
+ fn: j(() => [c("div", ct, [
1853
+ S(t.$slots, "toolbar-tools", {
1854
+ reload: T(X).load,
1855
+ toggleFullscreen: He
1856
+ }, void 0, !0),
1857
+ Ce.value ? (b(), a(T(P), {
1858
+ key: 0,
1859
+ circle: "",
1860
+ "native-type": "button",
1861
+ "data-action": "toggle-query-panel",
1862
+ class: _({ "is-active": G.value }),
1863
+ "aria-expanded": String(G.value),
1864
+ "aria-label": G.value ? "隐藏筛选条件" : "显示筛选条件",
1865
+ title: G.value ? "隐藏筛选条件" : "显示筛选条件",
1866
+ onClick: We
1867
+ }, {
1868
+ default: j(() => [d(T(ae), { name: "lumal:filter" })]),
1869
+ _: 1
1870
+ }, 8, [
1871
+ "class",
1872
+ "aria-expanded",
1873
+ "aria-label",
1874
+ "title"
1875
+ ])) : o("", !0),
1876
+ be.value ? (b(), a(T(P), {
1877
+ key: 1,
1878
+ circle: "",
1879
+ "native-type": "button",
1880
+ "data-action": "refresh",
1881
+ "aria-label": e.toolbar?.refreshText ?? "刷新",
1882
+ title: e.toolbar?.refreshText ?? "刷新",
1883
+ onClick: T(X).load
1884
+ }, {
1885
+ default: j(() => [d(T(ae), { name: "lumal:refresh" })]),
1886
+ _: 1
1887
+ }, 8, [
1888
+ "aria-label",
1889
+ "title",
1890
+ "onClick"
1891
+ ])) : o("", !0),
1892
+ Se.value ? (b(), a(T(P), {
1893
+ key: 2,
1894
+ circle: "",
1895
+ "native-type": "button",
1896
+ "data-action": "fullscreen",
1897
+ "aria-label": e.toolbar?.fullscreenText ?? (U.value ? "退出全屏" : "全屏"),
1898
+ title: e.toolbar?.fullscreenText ?? (U.value ? "退出全屏" : "全屏"),
1899
+ onClick: He
1900
+ }, {
1901
+ default: j(() => [d(T(ae), { name: U.value ? "lumal:fullscreen-exit" : "lumal:fullscreen" }, null, 8, ["name"])]),
1902
+ _: 1
1903
+ }, 8, ["aria-label", "title"])) : o("", !0)
1904
+ ])]),
1905
+ key: "2"
1906
+ } : void 0,
1907
+ x(F.value.filter((e) => t.$slots[`table-${String(e.field)}`]), (e) => ({
1908
+ name: `table-${String(e.field)}`,
1909
+ fn: j((n) => [S(t.$slots, `table-${String(e.field)}`, ee(p(n)), void 0, !0)])
1910
+ })),
1911
+ _e.value || V.value?.remove || t.$slots["row-actions"] ? {
1912
+ name: "actions",
1913
+ fn: j(({ row: n, index: r }) => [S(t.$slots, "row-actions", {
1914
+ row: n,
1915
+ index: r,
1916
+ openView: Je,
1917
+ openEdit: qe,
1918
+ removeRow: mt
1919
+ }, () => [
1920
+ Ge(e.actions?.view, _e.value, n, r) ? (b(), a(T(P), {
1921
+ key: 0,
1922
+ "native-type": "button",
1923
+ "data-action": "view",
1924
+ onClick: (e) => Je(n)
1925
+ }, {
1926
+ default: j(() => [u(w(e.actions?.viewText ?? "查看"), 1)]),
1927
+ _: 1
1928
+ }, 8, ["onClick"])) : o("", !0),
1929
+ Ge(e.actions?.edit, _e.value, n, r) ? (b(), a(T(P), {
1930
+ key: 1,
1931
+ "native-type": "button",
1932
+ "data-action": "edit",
1933
+ onClick: (e) => qe(n)
1934
+ }, {
1935
+ default: j(() => [u(w(e.actions?.editText ?? "编辑"), 1)]),
1936
+ _: 1
1937
+ }, 8, ["onClick"])) : o("", !0),
1938
+ Ge(e.actions?.remove, !!V.value?.remove, n, r) ? (b(), a(T(P), {
1939
+ key: 2,
1940
+ type: "danger",
1941
+ "native-type": "button",
1942
+ "data-action": "remove",
1943
+ onClick: (e) => mt(n)
1944
+ }, {
1945
+ default: j(() => [u(w(e.actions?.removeText ?? "删除"), 1)]),
1946
+ _: 1
1947
+ }, 8, ["onClick"])) : o("", !0)
1948
+ ], !0)]),
1949
+ key: "3"
1950
+ } : void 0
1951
+ ]), 1032, [
1952
+ "columns",
1953
+ "rows",
1954
+ "row-key",
1955
+ "empty-text",
1956
+ "loading",
1957
+ "selection",
1958
+ "show-column-settings",
1959
+ "column-settings",
1960
+ "auto-resize",
1961
+ "action-width",
1962
+ "mobile-action-width",
1963
+ "onSelectionChange"
1964
+ ])]),
1965
+ t.$slots.default ? (b(), s("div", lt, [S(t.$slots, "default", {}, void 0, !0)])) : o("", !0),
1966
+ je.value ? (b(), s("div", ut, [d(T(Ee), {
1967
+ page: h.value,
1968
+ "onUpdate:page": n[1] ||= (e) => h.value = e,
1969
+ "page-size": v.value,
1970
+ "onUpdate:pageSize": n[2] ||= (e) => v.value = e,
1971
+ total: T(X).currentTotal.value,
1972
+ "page-sizes": he.value,
1973
+ onChange: Ue
1974
+ }, null, 8, [
1975
+ "page",
1976
+ "page-size",
1977
+ "total",
1978
+ "page-sizes"
1979
+ ])])) : o("", !0)
1980
+ ]),
1981
+ d(Xe, {
1982
+ modelValue: T($).visible.value,
1983
+ "onUpdate:modelValue": n[4] ||= (e) => T($).visible.value = e,
1984
+ title: Me.value,
1985
+ type: e.editor?.type ?? "dialog",
1986
+ width: e.editor?.width ?? (e.editor?.type === "drawer" ? "min(720px, 92vw)" : "min(920px, calc(100vw - 32px))"),
1987
+ "close-on-click-modal": e.editor?.closeOnClickModal ?? !1,
1988
+ "destroy-on-close": e.editor?.destroyOnClose ?? !0,
1989
+ "before-close": _t
1990
+ }, {
1991
+ footer: j(() => [S(t.$slots, "footer", {
1992
+ mode: T($).mode.value,
1993
+ model: T($).model.value,
1994
+ close: vt,
1995
+ submit: yt
1996
+ }, () => [c("div", ft, [d(T(P), {
1997
+ "native-type": "button",
1998
+ onClick: vt
1999
+ }, {
2000
+ default: j(() => [u(w(T($).mode.value === "view" ? "关闭" : "取消"), 1)]),
2001
+ _: 1
2002
+ }), T($).mode.value === "view" ? o("", !0) : (b(), a(T(P), {
2003
+ key: 0,
2004
+ type: "primary",
2005
+ "native-type": "button",
2006
+ loading: T($).saving.value,
2007
+ onClick: yt
2008
+ }, {
2009
+ default: j(() => [u(w(e.editor?.submitText ?? "保存"), 1)]),
2010
+ _: 1
2011
+ }, 8, ["loading"]))])], !0)]),
2012
+ default: j(() => [T($).error.value ? (b(), s("div", dt, w(T($).error.value), 1)) : o("", !0), d(T(K), {
2013
+ ref_key: "dialogFormRef",
2014
+ ref: M,
2015
+ modelValue: T($).model.value,
2016
+ "onUpdate:modelValue": n[3] ||= (e) => T($).model.value = e,
2017
+ mode: T($).mode.value,
2018
+ schemas: I.value,
2019
+ columns: e.editor?.columns ?? 2,
2020
+ "label-width": e.editor?.labelWidth ?? 88,
2021
+ loading: e.editor?.loading,
2022
+ disabled: T($).saving.value || e.editor?.disabled,
2023
+ "submit-loading": T($).saving.value,
2024
+ "show-actions": !1,
2025
+ onSubmit: Qe
2026
+ }, l({ _: 2 }, [x(I.value.filter((e) => t.$slots[`form-${String(e.field)}`]), (e) => ({
2027
+ name: `field-${String(e.field)}`,
2028
+ fn: j((n) => [S(t.$slots, `form-${String(e.field)}`, ee(p(n)), void 0, !0)])
2029
+ }))]), 1032, [
2030
+ "modelValue",
2031
+ "mode",
2032
+ "schemas",
2033
+ "columns",
2034
+ "label-width",
2035
+ "loading",
2036
+ "disabled",
2037
+ "submit-loading"
2038
+ ])]),
2039
+ _: 3
2040
+ }, 8, [
2041
+ "modelValue",
2042
+ "title",
2043
+ "type",
2044
+ "width",
2045
+ "close-on-click-modal",
2046
+ "destroy-on-close"
2047
+ ])
2048
+ ], 512));
2049
+ }
2050
+ }), [["__scopeId", "data-v-68c1d18f"]]), mt = { class: "lumal-info-table__value" }, ht = /*#__PURE__*/ n(/* @__PURE__ */ f({
2051
+ __name: "LumalInfoTable",
2052
+ props: {
2053
+ items: {},
2054
+ columns: { default: 1 },
2055
+ labelWidth: { default: "88px" },
2056
+ emptyText: { default: "-" },
2057
+ bordered: {
2058
+ type: Boolean,
2059
+ default: !0
2060
+ }
2061
+ },
2062
+ setup(e, { expose: t }) {
2063
+ let n = e, a = O("infoTableRef"), o = i(() => n.items.filter((e) => !e.hidden)), l = i(() => ({ "--lumal-info-table-columns": String(Math.max(1, n.columns)) })), u = i(() => ({ width: typeof n.labelWidth == "number" ? `${n.labelWidth}px` : n.labelWidth }));
2064
+ function d(e) {
2065
+ return e.value === void 0 || e.value === null || e.value === "" ? e.emptyText ?? n.emptyText : String(e.value);
2066
+ }
2067
+ function f(e) {
2068
+ return Math.max(1, Math.min(e.span ?? 1, n.columns));
2069
+ }
2070
+ return t({ getInfoTableElement: () => a.value }), (t, n) => (b(), s("dl", {
2071
+ ref_key: "infoTableRef",
2072
+ ref: a,
2073
+ class: _(["lumal-info-table", { "lumal-info-table--bordered": e.bordered }]),
2074
+ style: v(l.value)
2075
+ }, [(b(!0), s(r, null, x(o.value, (e) => (b(), s("div", {
2076
+ key: e.label,
2077
+ class: "lumal-info-table__item",
2078
+ style: v({ gridColumn: `span ${f(e)}` })
2079
+ }, [c("dt", {
2080
+ class: "lumal-info-table__label",
2081
+ style: v(u.value)
2082
+ }, w(e.label), 5), c("dd", mt, w(d(e)), 1)], 4))), 128))], 6));
2083
+ }
2084
+ }), [["__scopeId", "data-v-4066d619"]]), gt = {
2085
+ key: 0,
2086
+ class: "lumal-page__header"
2087
+ }, _t = { class: "lumal-page__heading" }, vt = {
2088
+ key: 0,
2089
+ class: "lumal-page__title"
2090
+ }, yt = {
2091
+ key: 0,
2092
+ class: "lumal-page__description"
2093
+ }, bt = {
2094
+ key: 0,
2095
+ class: "lumal-page__actions"
2096
+ }, xt = {
2097
+ key: 1,
2098
+ class: "lumal-page__loading"
2099
+ }, St = /*#__PURE__*/ n(/* @__PURE__ */ f({
2100
+ __name: "LumalPage",
2101
+ props: {
2102
+ title: {},
2103
+ description: {},
2104
+ contentClass: { default: "" },
2105
+ fill: {
2106
+ type: Boolean,
2107
+ default: !1
2108
+ },
2109
+ loading: {
2110
+ type: Boolean,
2111
+ default: !1
2112
+ },
2113
+ loadingText: { default: "加载中" },
2114
+ noPadding: {
2115
+ type: Boolean,
2116
+ default: !1
2117
+ }
2118
+ },
2119
+ setup(e, { expose: t }) {
2120
+ let n = e, r = O("pageRef"), a = D(), l = i(() => !!(n.title || n.description || a.title || a.actions));
2121
+ return t({ getPageElement: () => r.value }), (t, n) => (b(), s("section", {
2122
+ ref_key: "pageRef",
2123
+ ref: r,
2124
+ class: _(["lumal-page", {
2125
+ "is-fill": e.fill,
2126
+ "is-no-padding": e.noPadding
2127
+ }])
2128
+ }, [
2129
+ l.value ? (b(), s("header", gt, [c("div", _t, [S(t.$slots, "title", {}, () => [e.title ? (b(), s("h2", vt, w(e.title), 1)) : o("", !0)], !0), e.description ? (b(), s("p", yt, w(e.description), 1)) : o("", !0)]), t.$slots.actions ? (b(), s("div", bt, [S(t.$slots, "actions", {}, void 0, !0)])) : o("", !0)])) : o("", !0),
2130
+ c("div", { class: _(["lumal-page__body", e.contentClass]) }, [S(t.$slots, "default", {}, void 0, !0)], 2),
2131
+ e.loading ? (b(), s("div", xt, w(e.loadingText), 1)) : o("", !0)
2132
+ ], 2));
2133
+ }
2134
+ }), [["__scopeId", "data-v-07931bf6"]]), Ct = {
2135
+ key: 0,
2136
+ class: "lumal-page-layout__query"
2137
+ }, wt = { class: "lumal-page-layout__query-body" }, Tt = { class: "lumal-page-layout__query-actions" }, Et = {
2138
+ key: 1,
2139
+ class: "lumal-page-layout__toolbar"
2140
+ }, Dt = { class: "lumal-page-layout__content" }, Ot = {
2141
+ key: 2,
2142
+ class: "lumal-page-layout__pagination"
2143
+ }, kt = /*#__PURE__*/ n(/* @__PURE__ */ f({
2144
+ __name: "LumalPageLayout",
2145
+ props: {
2146
+ contentScrollable: {
2147
+ type: Boolean,
2148
+ default: !0
2149
+ },
2150
+ fill: {
2151
+ type: Boolean,
2152
+ default: !1
2153
+ },
2154
+ searchText: { default: "查询" },
2155
+ resetText: { default: "重置" },
2156
+ queryCollapsed: {
2157
+ type: Boolean,
2158
+ default: !1
2159
+ },
2160
+ surface: {
2161
+ type: Boolean,
2162
+ default: !0
2163
+ }
2164
+ },
2165
+ emits: ["reset", "search"],
2166
+ setup(e, { expose: t, emit: n }) {
2167
+ let r = e, a = n, l = O("pageLayoutRef"), f = D(), p = i(() => !!(f.query || f.form)), m = i(() => !!f.toolbar), h = i(() => !!f.pagination);
2168
+ function g() {
2169
+ a("search");
2170
+ }
2171
+ function ee() {
2172
+ a("reset");
2173
+ }
2174
+ return t({ getPageLayoutElement: () => l.value }), (t, n) => (b(), s("section", {
2175
+ ref_key: "pageLayoutRef",
2176
+ ref: l,
2177
+ class: _(["lumal-page-layout", {
2178
+ "is-content-scrollable": e.contentScrollable,
2179
+ "is-fill": e.fill,
2180
+ "is-surface": e.surface
2181
+ }])
2182
+ }, [
2183
+ p.value ? (b(), s("div", Ct, [ne(c("div", wt, [S(t.$slots, "query", {}, () => [S(t.$slots, "form", {}, void 0, !0)], !0)], 512), [[k, !r.queryCollapsed]]), c("div", Tt, [d(T(P), {
2184
+ type: "primary",
2185
+ "native-type": "button",
2186
+ "data-action": "search",
2187
+ onClick: g
2188
+ }, {
2189
+ default: j(() => [u(w(r.searchText), 1)]),
2190
+ _: 1
2191
+ }), d(T(P), {
2192
+ "native-type": "button",
2193
+ "data-action": "reset",
2194
+ onClick: ee
2195
+ }, {
2196
+ default: j(() => [u(w(r.resetText), 1)]),
2197
+ _: 1
2198
+ })])])) : o("", !0),
2199
+ m.value ? (b(), s("div", Et, [S(t.$slots, "toolbar", {}, void 0, !0)])) : o("", !0),
2200
+ c("div", Dt, [S(t.$slots, "default", {}, void 0, !0)]),
2201
+ h.value ? (b(), s("div", Ot, [S(t.$slots, "pagination", {}, void 0, !0)])) : o("", !0)
2202
+ ], 2));
2203
+ }
2204
+ }), [["__scopeId", "data-v-8e09ec3e"]]);
2205
+ //#endregion
2206
+ export { St as a, Ze as c, Ee as d, kt as i, Ye as l, N as n, ht as o, oe as r, pt as s, M as t, K as u };