el-plus 0.0.81 → 0.0.83

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 (84) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +73 -20
  4. package/dist/index.full.min.js +4 -4
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +4 -4
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +74 -21
  9. package/es/components/attachment/src/attachment.vue2.mjs +12 -2
  10. package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
  11. package/es/components/form/index.d.ts +3 -0
  12. package/es/components/form/src/form-item-vue.mjs +1 -1
  13. package/es/components/form/src/form-item-vue.mjs.map +1 -1
  14. package/es/components/form/src/form.vue.d.ts +1 -0
  15. package/es/components/form/src/form.vue2.mjs +14 -3
  16. package/es/components/form/src/form.vue2.mjs.map +1 -1
  17. package/es/components/form/src/hooks/use-form-item.d.ts +1 -1
  18. package/es/components/form/src/hooks/use-form-item.mjs +7 -2
  19. package/es/components/form/src/hooks/use-form-item.mjs.map +1 -1
  20. package/es/components/form/src/hooks/use-form.d.ts +2 -0
  21. package/es/components/form/src/hooks/use-form.mjs +16 -2
  22. package/es/components/form/src/hooks/use-form.mjs.map +1 -1
  23. package/es/components/search-list-page/index.d.ts +18 -6
  24. package/es/components/search-list-page/src/search-list-page.vue.d.ts +6 -2
  25. package/es/components/search-list-page/src/use-search-list-page.d.ts +6 -2
  26. package/es/components/table/index.d.ts +3 -0
  27. package/es/components/table/src/table.vue.d.ts +1 -0
  28. package/es/components/table/src/table.vue2.mjs +2 -0
  29. package/es/components/table/src/table.vue2.mjs.map +1 -1
  30. package/es/components/table/src/use-table.d.ts +1 -0
  31. package/es/components/table/src/use-table.mjs +4 -0
  32. package/es/components/table/src/use-table.mjs.map +1 -1
  33. package/es/hooks/dialog/use-dialog.d.ts +1 -0
  34. package/es/hooks/dialog/use-dialog.mjs +3 -0
  35. package/es/hooks/dialog/use-dialog.mjs.map +1 -1
  36. package/es/hooks/use-request.mjs +13 -8
  37. package/es/hooks/use-request.mjs.map +1 -1
  38. package/es/hooks/use-template-promise.d.ts +1 -0
  39. package/es/hooks/use-template-promise.mjs +1 -1
  40. package/es/hooks/use-template-promise.mjs.map +1 -1
  41. package/es/package.json.mjs +1 -1
  42. package/lib/components/attachment/src/attachment.vue2.js +12 -2
  43. package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
  44. package/lib/components/form/index.d.ts +3 -0
  45. package/lib/components/form/src/form-item-vue.js +1 -1
  46. package/lib/components/form/src/form-item-vue.js.map +1 -1
  47. package/lib/components/form/src/form.vue.d.ts +1 -0
  48. package/lib/components/form/src/form.vue2.js +14 -3
  49. package/lib/components/form/src/form.vue2.js.map +1 -1
  50. package/lib/components/form/src/hooks/use-form-item.d.ts +1 -1
  51. package/lib/components/form/src/hooks/use-form-item.js +7 -2
  52. package/lib/components/form/src/hooks/use-form-item.js.map +1 -1
  53. package/lib/components/form/src/hooks/use-form.d.ts +2 -0
  54. package/lib/components/form/src/hooks/use-form.js +15 -1
  55. package/lib/components/form/src/hooks/use-form.js.map +1 -1
  56. package/lib/components/search-list-page/index.d.ts +18 -6
  57. package/lib/components/search-list-page/src/search-list-page.vue.d.ts +6 -2
  58. package/lib/components/search-list-page/src/use-search-list-page.d.ts +6 -2
  59. package/lib/components/table/index.d.ts +3 -0
  60. package/lib/components/table/src/table.vue.d.ts +1 -0
  61. package/lib/components/table/src/table.vue2.js +2 -0
  62. package/lib/components/table/src/table.vue2.js.map +1 -1
  63. package/lib/components/table/src/use-table.d.ts +1 -0
  64. package/lib/components/table/src/use-table.js +4 -0
  65. package/lib/components/table/src/use-table.js.map +1 -1
  66. package/lib/hooks/dialog/use-dialog.d.ts +1 -0
  67. package/lib/hooks/dialog/use-dialog.js +3 -0
  68. package/lib/hooks/dialog/use-dialog.js.map +1 -1
  69. package/lib/hooks/use-request.js +13 -8
  70. package/lib/hooks/use-request.js.map +1 -1
  71. package/lib/hooks/use-template-promise.d.ts +1 -0
  72. package/lib/hooks/use-template-promise.js +1 -1
  73. package/lib/hooks/use-template-promise.js.map +1 -1
  74. package/lib/package.json.js +1 -1
  75. package/package.json +1 -1
  76. package/theme-chalk/attachment.css +1 -1
  77. package/theme-chalk/header.css +1 -1
  78. package/theme-chalk/index.css +1 -1
  79. package/theme-chalk/src/attachment.scss +3 -0
  80. package/theme-chalk/src/header.scss +1 -1
  81. package/theme-chalk/src/table.scss +1 -0
  82. package/theme-chalk/src/title.scss +41 -43
  83. package/theme-chalk/table.css +1 -1
  84. package/theme-chalk/title.css +1 -1
@@ -1,6 +1,6 @@
1
- /*! ElPlus v0.0.81 */
1
+ /*! ElPlus v0.0.83 */
2
2
 
3
- import { useAttrs, getCurrentInstance, inject, provide, ref, nextTick, defineComponent, computed, createVNode, Fragment, withDirectives, resolveComponent, mergeProps, resolveDirective, useTemplateRef, createTextVNode, h, mergeModels, useModel, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createCommentVNode, withCtx, renderSlot, renderList, createBlock, vShow, toDisplayString, reactive, useSlots, watch, onMounted, createSlots, normalizeProps, guardReactiveProps, markRaw, Transition, shallowReactive, isVNode, render, createElementVNode, toRaw } from 'vue';
3
+ import { useAttrs, getCurrentInstance, inject, provide, ref, nextTick, defineComponent, computed, createVNode, Fragment, withDirectives, resolveComponent, mergeProps, resolveDirective, useTemplateRef, reactive, onBeforeUpdate, createTextVNode, h, mergeModels, useModel, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createCommentVNode, withCtx, renderSlot, renderList, createBlock, vShow, toDisplayString, useSlots, watch, onMounted, createSlots, normalizeProps, guardReactiveProps, markRaw, Transition, shallowReactive, isVNode, render, createElementVNode, toRaw } from 'vue';
4
4
  import { buttonProps, useLocale as useLocale$1, ElLoading, ElMessage, ElMessageBox, formProps as formProps$1, formEmits as formEmits$1, ElTooltip, formItemProps as formItemProps$1, ElFormItem, ElForm, ElRow, ElCol, inputProps as inputProps$1, inputEmits as inputEmits$1, configProviderContextKey, ElConfigProvider, ElDialog, ElButton, ElTable, ElIcon, selectProps as selectProps$1, selectEmits as selectEmits$1, ElPageHeader, datePickerProps, linkProps as linkProps$1, ElSkeleton } from 'element-plus';
5
5
  import { isFunction } from '@vue/shared';
6
6
  import axios from 'axios';
@@ -806,16 +806,30 @@ const useForm$1 = (props) => {
806
806
  const clearValidate = (props2) => {
807
807
  return elFormRef.value.clearValidate(props2);
808
808
  };
809
+ const formItemRenderRefs = reactive(/* @__PURE__ */ new Map());
810
+ onBeforeUpdate(() => {
811
+ formItemRenderRefs.clear();
812
+ });
813
+ const getFormItemRenderRef = (refName) => {
814
+ return formItemRenderRefs.get(refName);
815
+ };
816
+ const registerFormItemRenderRef = (refName, ref2) => {
817
+ if (refName && ref2) {
818
+ formItemRenderRefs.set(refName, ref2);
819
+ }
820
+ };
809
821
  return {
810
822
  filterFormItemList,
811
823
  elFormRef,
812
824
  validate,
813
825
  resetFields,
814
- clearValidate
826
+ clearValidate,
827
+ getFormItemRenderRef,
828
+ registerFormItemRenderRef
815
829
  };
816
830
  };
817
831
 
818
- const useFormItemSlots = (props) => {
832
+ const useFormItemSlots = (props, emit) => {
819
833
  const attrs = useAttrs();
820
834
  const {
821
835
  render,
@@ -856,7 +870,12 @@ const useFormItemSlots = (props) => {
856
870
  disabled,
857
871
  clearable: true,
858
872
  ...renderProps,
859
- ...events
873
+ ...events,
874
+ ref: (el) => {
875
+ if (el) {
876
+ emit("registerFormItemRenderRef", el);
877
+ }
878
+ }
860
879
  }, renderScopedSlots) : formData[prop];
861
880
  },
862
881
  label: () => {
@@ -966,7 +985,7 @@ var EpFormItem = /* @__PURE__ */ defineComponent({
966
985
  const attrs = useAttrs();
967
986
  const {
968
987
  scopedSlots
969
- } = useFormItemSlots(props);
988
+ } = useFormItemSlots(props, emit);
970
989
  const {
971
990
  rules
972
991
  } = useFormItemRules(props);
@@ -1016,7 +1035,15 @@ var _sfc_main$b = /* @__PURE__ */ defineComponent({
1016
1035
  };
1017
1036
  });
1018
1037
  const formData = useModel(__props, "modelValue");
1019
- const { filterFormItemList, elFormRef, validate, resetFields, clearValidate } = useForm$1(props);
1038
+ const {
1039
+ filterFormItemList,
1040
+ elFormRef,
1041
+ validate,
1042
+ resetFields,
1043
+ clearValidate,
1044
+ getFormItemRenderRef,
1045
+ registerFormItemRenderRef
1046
+ } = useForm$1(props);
1020
1047
  const { open, toggleStatus, isShowFoldBtn, isShowFormItem } = useCollapse(
1021
1048
  {
1022
1049
  filterFormItemList,
@@ -1029,7 +1056,8 @@ var _sfc_main$b = /* @__PURE__ */ defineComponent({
1029
1056
  elFormRef,
1030
1057
  validate,
1031
1058
  resetFields,
1032
- clearValidate
1059
+ clearValidate,
1060
+ getFormItemRenderRef
1033
1061
  });
1034
1062
  return (_ctx, _cache) => {
1035
1063
  return openBlock(), createElementBlock("div", {
@@ -1062,7 +1090,9 @@ var _sfc_main$b = /* @__PURE__ */ defineComponent({
1062
1090
  createVNode(unref(EpFormItem), mergeProps({
1063
1091
  "form-data": formData.value,
1064
1092
  "form-label-width": _ctx.labelWidth
1065
- }, { ref_for: true }, item), null, 16, ["form-data", "form-label-width"])
1093
+ }, { ref_for: true }, item, {
1094
+ onRegisterFormItemRenderRef: (ref2) => unref(registerFormItemRenderRef)(item.props?.ref, ref2)
1095
+ }), null, 16, ["form-data", "form-label-width", "onRegisterFormItemRenderRef"])
1066
1096
  ]),
1067
1097
  _: 2
1068
1098
  }, 1032, ["class", "span"])), [
@@ -1320,7 +1350,7 @@ const useTemplatePromise = (options = {}) => {
1320
1350
  const renderList = () => instances.value.map((props) => {
1321
1351
  return withDirectives(h("div", {
1322
1352
  // key: props.key,
1323
- class: "ep-template-promise is-init"
1353
+ class: `ep-template-promise is-init ${options.class || ""}`
1324
1354
  }, render ? render(props, ctx) : slots.default?.(props)), [[vShow, props.isVisible]]);
1325
1355
  });
1326
1356
  if (transition) return () => {
@@ -1352,10 +1382,12 @@ const useDialog = (options = {}) => {
1352
1382
  onBeforeCancel,
1353
1383
  cancelText,
1354
1384
  showFooter = true,
1385
+ templatePromiseClass,
1355
1386
  ...dialogProps
1356
1387
  } = options;
1357
1388
  const Dialog = useTemplatePromise({
1358
1389
  destroy: destroyOnClose,
1390
+ class: templatePromiseClass,
1359
1391
  render: (promiseOptions, ctx) => {
1360
1392
  for (const key in scopedSlots) {
1361
1393
  scopedSlots[key] = scopedSlots[key].bind(null, promiseOptions);
@@ -1389,6 +1421,7 @@ const useDialog = (options = {}) => {
1389
1421
  }), scopedSlots.footerInner?.(promiseOptions), createVNode(ElButton, {
1390
1422
  "type": "primary",
1391
1423
  "onClick": async () => {
1424
+ console.log(111);
1392
1425
  if (onBeforeConfirm) {
1393
1426
  await onBeforeConfirm(resolve);
1394
1427
  }
@@ -1483,11 +1516,6 @@ const useRequest = ({
1483
1516
  const config = {
1484
1517
  method
1485
1518
  };
1486
- if (cancelToken) {
1487
- config.cancelRequest = (cancel) => {
1488
- cancelRequest = cancel;
1489
- };
1490
- }
1491
1519
  apiFn = (data = {}, params) => {
1492
1520
  if (config.method === "get") {
1493
1521
  config.params = data;
@@ -1511,29 +1539,38 @@ const useRequest = ({
1511
1539
  if (reqBefore) {
1512
1540
  reqBefore(config);
1513
1541
  }
1542
+ if (cancelToken) {
1543
+ config.cancelToken = new axios.CancelToken(function(cancel) {
1544
+ cancelRequest = cancel;
1545
+ });
1546
+ }
1514
1547
  return http.request(api, config);
1515
1548
  };
1516
1549
  } else {
1517
1550
  apiFn = api;
1518
1551
  }
1519
- const requestFn = async (data = {}) => {
1552
+ const requestFn = async (data = {}, params) => {
1520
1553
  if (loading.value && !cancelToken) return;
1521
1554
  loading.value = true;
1522
1555
  try {
1523
1556
  cancelRequest && cancelRequest();
1524
- const res = await apiFn(data);
1557
+ const res = await apiFn(data, params);
1525
1558
  if (reqAfter) {
1526
1559
  reqAfter(res);
1527
1560
  }
1528
1561
  if (hooks?.success) {
1529
1562
  hooks.success(typeof api === "function" ? res : res.data);
1530
1563
  }
1564
+ loading.value = false;
1531
1565
  } catch (error) {
1532
1566
  if (hooks?.fail) {
1533
1567
  hooks.fail(error);
1534
1568
  }
1535
- } finally {
1569
+ if (axios.isCancel(error)) {
1570
+ return;
1571
+ }
1536
1572
  loading.value = false;
1573
+ } finally {
1537
1574
  }
1538
1575
  };
1539
1576
  return {
@@ -2090,6 +2127,9 @@ const useTable$1 = (props) => {
2090
2127
  const clearValidate = (props2) => {
2091
2128
  return elFormRef.value.clearValidate(props2);
2092
2129
  };
2130
+ const getSelectionRows = () => {
2131
+ return elTableRef.value.getSelectionRows();
2132
+ };
2093
2133
  const formatActionButtons = (list, scope) => {
2094
2134
  return list.map((item) => {
2095
2135
  if (item.onClick) {
@@ -2111,6 +2151,7 @@ const useTable$1 = (props) => {
2111
2151
  clearSelection,
2112
2152
  resetFields,
2113
2153
  clearValidate,
2154
+ getSelectionRows,
2114
2155
  elFormRef,
2115
2156
  elTableRef,
2116
2157
  formatActionButtons,
@@ -2366,6 +2407,7 @@ var _sfc_main$8 = /* @__PURE__ */ defineComponent({
2366
2407
  resetFields,
2367
2408
  clearValidate,
2368
2409
  clearSelection,
2410
+ getSelectionRows,
2369
2411
  loading,
2370
2412
  search,
2371
2413
  elFormRef,
@@ -2387,6 +2429,7 @@ var _sfc_main$8 = /* @__PURE__ */ defineComponent({
2387
2429
  resetFields,
2388
2430
  clearValidate,
2389
2431
  clearSelection,
2432
+ getSelectionRows,
2390
2433
  search,
2391
2434
  openCustomColumnDialog: () => {
2392
2435
  customColumnRef.value?.open();
@@ -3708,11 +3751,20 @@ var _sfc_main$4 = /* @__PURE__ */ defineComponent({
3708
3751
  const bem = createNameSpace("attachment");
3709
3752
  const props = __props;
3710
3753
  const modelValue = useModel(__props, "modelValue");
3711
- const { columns, actionButtons, addAttachment, isNormalOpen, permission, onConfirm, onCancel, mode } = useAttachment(props, {
3754
+ const {
3755
+ columns,
3756
+ actionButtons,
3757
+ addAttachment,
3758
+ isNormalOpen,
3759
+ permission,
3760
+ onConfirm,
3761
+ onCancel,
3762
+ mode
3763
+ } = useAttachment(props, {
3712
3764
  data: modelValue
3713
3765
  });
3714
3766
  const AttachmentDialog = useDialog({
3715
- width: 850,
3767
+ width: isNormalOpen ? "" : 850,
3716
3768
  center: true,
3717
3769
  title: isNormalOpen ? "" : t("ep.attachment.manageAttachment"),
3718
3770
  modal: !isNormalOpen,
@@ -3723,6 +3775,7 @@ var _sfc_main$4 = /* @__PURE__ */ defineComponent({
3723
3775
  "dialog",
3724
3776
  props.openType === "normal" ? props.openType : ""
3725
3777
  ),
3778
+ templatePromiseClass: bem.e("promise"),
3726
3779
  onConfirm: async (resolve) => {
3727
3780
  onConfirm(resolve);
3728
3781
  },
@@ -4292,7 +4345,7 @@ var components = [
4292
4345
  EpUniVue
4293
4346
  ];
4294
4347
 
4295
- var version = "0.0.81";
4348
+ var version = "0.0.83";
4296
4349
 
4297
4350
  var globalProperties = {
4298
4351
  install(app) {
@@ -25,11 +25,20 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
25
25
  const bem = createNameSpace("attachment");
26
26
  const props = __props;
27
27
  const modelValue = useModel(__props, "modelValue");
28
- const { columns, actionButtons, addAttachment, isNormalOpen, permission, onConfirm, onCancel, mode } = useAttachment(props, {
28
+ const {
29
+ columns,
30
+ actionButtons,
31
+ addAttachment,
32
+ isNormalOpen,
33
+ permission,
34
+ onConfirm,
35
+ onCancel,
36
+ mode
37
+ } = useAttachment(props, {
29
38
  data: modelValue
30
39
  });
31
40
  const AttachmentDialog = useDialog({
32
- width: 850,
41
+ width: isNormalOpen ? "" : 850,
33
42
  center: true,
34
43
  title: isNormalOpen ? "" : t("ep.attachment.manageAttachment"),
35
44
  modal: !isNormalOpen,
@@ -40,6 +49,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
40
49
  "dialog",
41
50
  props.openType === "normal" ? props.openType : ""
42
51
  ),
52
+ templatePromiseClass: bem.e("promise"),
43
53
  onConfirm: async (resolve) => {
44
54
  onConfirm(resolve);
45
55
  },
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.vue2.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"props.isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n v-permission=\"permission\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"props.openType === 'dialog' && mode !== 'browse'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :action-buttons=\"actionButtons\"\n actionColWidth=\"110\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nimport { vPermission } from '@el-plus/directives'\n\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst { columns,actionButtons, addAttachment, isNormalOpen,permission, onConfirm, onCancel, mode } =\n useAttachment(props, {\n data: modelValue,\n })\nconst AttachmentDialog = useDialog({\n width: 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["_useModel","_createBlock","_unref","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"attachment.vue2.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"props.isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n v-permission=\"permission\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"props.openType === 'dialog' && mode !== 'browse'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :action-buttons=\"actionButtons\"\n actionColWidth=\"110\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nimport { vPermission } from '@el-plus/directives'\n\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst {\n columns,\n actionButtons,\n addAttachment,\n isNormalOpen,\n permission,\n onConfirm,\n onCancel,\n mode,\n} = useAttachment(props, {\n data: modelValue,\n})\nconst AttachmentDialog = useDialog({\n width: isNormalOpen ? '' : 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n templatePromiseClass: bem.e('promise'),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["_useModel","_createBlock","_unref","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsDA,IAAA,MAAM,EAAE,CAAA,EAAE,GAAI,SAAA,EAAU;AAKxB,IAAA,MAAM,GAAA,GAAM,gBAAgB,YAAY,CAAA;AACxC,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,UAAA,GAAaA,QAAA,CAA+B,OAAA,EAAA,YAAC,CAAA;AACnD,IAAA,MAAM;AAAA,MACJ,OAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,GAAI,cAAc,KAAA,EAAO;AAAA,MACvB,IAAA,EAAM;AAAA,KACP,CAAA;AACD,IAAA,MAAM,mBAAmB,SAAA,CAAU;AAAA,MACjC,KAAA,EAAO,eAAe,EAAA,GAAK,GAAA;AAAA,MAC3B,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,YAAA,GAAe,EAAA,GAAK,CAAA,CAAE,gCAAgC,CAAA;AAAA,MAC7D,OAAO,CAAC,YAAA;AAAA,MACR,WAAW,CAAC,YAAA;AAAA,MACZ,YAAY,CAAC,YAAA;AAAA,MACb,UAAA,EAAY,eAAe,EAAA,GAAK,aAAA;AAAA,MAChC,YAAY,GAAA,CAAI,EAAA;AAAA,QACd,QAAA;AAAA,QACA,KAAA,CAAM,QAAA,KAAa,QAAA,GAAW,KAAA,CAAM,QAAA,GAAW;AAAA,OACjD;AAAA,MACA,oBAAA,EAAsB,GAAA,CAAI,CAAA,CAAE,SAAS,CAAA;AAAA,MACrC,SAAA,EAAW,OAAO,OAAA,KAAY;AAC5B,QAAA,SAAA,CAAU,OAAO,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,QAAA,EAAU,CAAC,OAAA,KAAY;AACrB,QAAA,QAAA,CAAS,OAAO,CAAA;AAAA,MAClB;AAAA,KACD,CAAA;AACD,IAAA,MAAM,OAAO,gBAAA,CAAiB,IAAA;AAC9B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAA,EAAK;AAAA,IACP;AACA,IAAA,QAAA,CAAa;AAAA,MACX;AAAA,KACD,CAAA;;;;QAlGS,KAAA,CAAM,sDADdC,WAAA,CAUWC,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA;UART,IAAA,EAAK,SAAA;AAAA,UACL,KAAA,EAAA,EAAA;AAAA,UACA,IAAA,EAAK,OAAA;AAAA,UACJ,OAAKC,cAAA,CAAED,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,CAAC,SAAA,CAAA,CAAA;AAAA,UACZ,OAAA,EAAOA,MAAA,IAAA;AAAA;2BAGR,MAAyC;AAAA,YAAtCE,gBAAAC,eAAA,CAAAH,KAAA,CAAA,CAAA,CAAA,sCAAsC,GAAA,GAACG,eAAA,CAAG,kBAAY,MAAA,SAAc,MACzE,CAAA;AAAA;;;8BAHgBH,KAAA,CAAA,UAAA,CAAU;AAAA;QAI1BI,WAAA,CA4BmBJ,KAAA,CAAA,gBAAA,CAAA,EAAA,IAAA,EAAA;AAAA,2BA3BjB,MAYM;AAAA,YAZNK,kBAAA,CAYM,KAAA,EAAA,EAZD,KAAA,EAAA,EAAA,iBAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAA8C,EAAA;AAAA,cAEzC,KAAA,CAAM,QAAA,KAAQ,QAAA,IAAiBL,KAAA,CAAA,IAAA,MAAI,QAAA,iBAD3CD,WAAA,CAUE,oBAAA,EAAA;AAAA;gBARA,IAAA,EAAK,SAAA;AAAA,gBACJ,IAAA,EAAI;AAAA;0BAAkCC,KAAA,CAAA,CAAA,CAAA,CAAC,6BAAA,CAAA;AAAA;6BAAmFA,MAAA,aAAA;AAAA;;;;YAU/HI,WAAA,CAYUJ,KAAA,WAZVM,UAAA,CAYU;AAAA,cAXR,GAAA,EAAI,UAAA;AAAA,cACH,KAAA,EAAK,CAAA,EAAKN,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,MAAOA,KAAA,CAAA,iBAAA,CAAA,EAAiB,CAAA,CAAA;AAAA,cACtC,KAAA,EAAK;AAAA,mBAAeA,KAAA,CAAA,aAAA,CAAA;AAAa;cAGjC,OAAA,EAASA,MAAA,OAAA,CAAA;AAAA,cACT,gBAAA,EAAgBA,MAAA,aAAA,CAAA;AAAA,cACjB,cAAA,EAAe,KAAA;AAAA,cACd,MAAM,UAAA,CAAA;AAAA,eACC,KAAK,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,CAAA;AAAA;;;;;;;;;;"}
@@ -68,6 +68,7 @@ export declare const EpForm: {
68
68
  validate: () => import("element-plus").FormValidationResult;
69
69
  resetFields: (props: import("element-plus").FormItemProp) => void;
70
70
  clearValidate: (props: import("element-plus").FormItemProp) => void;
71
+ getFormItemRenderRef: (refName: string) => any;
71
72
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
72
73
  toggleStatus: (status: boolean) => void;
73
74
  validate: (prop: import("element-plus").FormItemProp, isValid: boolean, message: string) => void;
@@ -165,6 +166,7 @@ export declare const EpForm: {
165
166
  validate: () => import("element-plus").FormValidationResult;
166
167
  resetFields: (props: import("element-plus").FormItemProp) => void;
167
168
  clearValidate: (props: import("element-plus").FormItemProp) => void;
169
+ getFormItemRenderRef: (refName: string) => any;
168
170
  }, {}, {}, {}, {
169
171
  col: number;
170
172
  size: import("element-plus/es/utils/index.js").EpPropMergeType<StringConstructor, "" | "small" | "default" | "large", unknown>;
@@ -255,6 +257,7 @@ export declare const EpForm: {
255
257
  validate: () => import("element-plus").FormValidationResult;
256
258
  resetFields: (props: import("element-plus").FormItemProp) => void;
257
259
  clearValidate: (props: import("element-plus").FormItemProp) => void;
260
+ getFormItemRenderRef: (refName: string) => any;
258
261
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
259
262
  toggleStatus: (status: boolean) => void;
260
263
  validate: (prop: import("element-plus").FormItemProp, isValid: boolean, message: string) => void;
@@ -16,7 +16,7 @@ var EpFormItem = /* @__PURE__ */ defineComponent({
16
16
  const attrs = useAttrs();
17
17
  const {
18
18
  scopedSlots
19
- } = useFormItemSlots(props);
19
+ } = useFormItemSlots(props, emit);
20
20
  const {
21
21
  rules
22
22
  } = useFormItemRules(props);
@@ -1 +1 @@
1
- {"version":3,"file":"form-item-vue.mjs","sources":["../../../../../../packages/components/form/src/form-item-vue.tsx"],"sourcesContent":["import { defineComponent, useAttrs } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useFormItemRules, useFormItemSlots } from './hooks/use-form-item'\nimport { ElFormItem } from 'element-plus'\n\nimport { formItemProps, expandFormItemPropsKeys } from './form-item'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nconst bem = createNameSpace('form-item')\nexport default defineComponent({\n name: 'EpFormItem',\n inheritAttrs: false,\n props: formItemProps,\n setup(props, { emit }) {\n // const {} = useFormItem(props)\n const attrs = useAttrs()\n const { scopedSlots } = useFormItemSlots(props)\n const { rules } = useFormItemRules(props)\n const { props: childProps, disabled, ...formItemProps } = props // eslint-disable-line\n return () => {\n return (\n <ElFormItem\n class={[\n bem.b(),\n bem.is('hide-label', !props.isShowLabel),\n prepareClassNames(),\n ]}\n style={prepareStyles()}\n v-slots={scopedSlots}\n {...{\n ...prepareProps(formItemProps, [...expandFormItemPropsKeys]),\n rules,\n 'label-width': attrs['form-label-width'],\n }}\n // scopedSlots={scopedSlots}\n // label={label}\n // prop={prop}\n // rules={mergeRules}\n // {...{ props: formItemProps }}\n />\n )\n }\n },\n})\n"],"names":["bem","createNameSpace","name","inheritAttrs","props","formItemProps","setup","emit","attrs","useAttrs","scopedSlots","useFormItemSlots","rules","useFormItemRules","childProps","disabled","_createVNode","ElFormItem","_mergeProps","b","is","isShowLabel","prepareClassNames","prepareStyles","prepareProps","expandFormItemPropsKeys"],"mappings":";;;;;;;AAYA,MAAMA,GAAAA,GAAMC,gBAAgB,WAAW,CAAA;AACvC,iDAA+B;AAAA,EAC7BC,IAAAA,EAAM,YAAA;AAAA,EACNC,YAAAA,EAAc,KAAA;AAAA,EACdC,KAAAA,EAAOC,aAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG;AAAAA,GAAK,EAAG;AAErB,IAAA,MAAMC,QAAQC,QAAAA,EAAS;AACvB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAY,GAAIC,iBAAiBP,KAAK,CAAA;AAC9C,IAAA,MAAM;AAAA,MAAEQ;AAAAA,KAAM,GAAIC,iBAAiBT,KAAK,CAAA;AACxC,IAAA,MAAM;AAAA,MAAEA,KAAAA,EAAOU,UAAAA;AAAAA,MAAYC,QAAAA;AAAAA,MAAU,GAAGV;AAAAA,KAAc,GAAID,KAAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAA,OAAAY,WAAAA,CAAAC,YAAAC,UAAAA,CAAA;AAAA,QAAA,OAAA,EAEW,CACLlB,GAAAA,CAAImB,CAAAA,EAAE,EACNnB,GAAAA,CAAIoB,EAAAA,CAAG,YAAA,EAAc,CAAChB,KAAAA,CAAMiB,WAAW,CAAA,EACvCC,mBAAmB,CAAA;AAAA,QACpB,SACMC,aAAAA;AAAc,OAAC,EAAA;AAAA,QAGpB,GAAGC,YAAAA,CAAanB,cAAAA,EAAe,CAAC,GAAGoB,uBAAuB,CAAC,CAAA;AAAA,QAC3Db,KAAAA;AAAAA,QACA,aAAA,EAAeJ,MAAM,kBAAkB;AAAA,OAAC,GAJjCE,WAAW,CAAA;AAAA,IAa1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"form-item-vue.mjs","sources":["../../../../../../packages/components/form/src/form-item-vue.tsx"],"sourcesContent":["import { defineComponent, useAttrs } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useFormItemRules, useFormItemSlots } from './hooks/use-form-item'\nimport { ElFormItem } from 'element-plus'\n\nimport { formItemProps, expandFormItemPropsKeys } from './form-item'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nconst bem = createNameSpace('form-item')\nexport default defineComponent({\n name: 'EpFormItem',\n inheritAttrs: false,\n props: formItemProps,\n setup(props, { emit }) {\n // const {} = useFormItem(props)\n const attrs = useAttrs()\n const { scopedSlots } = useFormItemSlots(props,emit)\n const { rules } = useFormItemRules(props)\n const { props: childProps, disabled, ...formItemProps } = props // eslint-disable-line\n return () => {\n return (\n <ElFormItem\n class={[\n bem.b(),\n bem.is('hide-label', !props.isShowLabel),\n prepareClassNames(),\n ]}\n style={prepareStyles()}\n v-slots={scopedSlots}\n {...{\n ...prepareProps(formItemProps, [...expandFormItemPropsKeys]),\n rules,\n 'label-width': attrs['form-label-width'],\n }}\n // scopedSlots={scopedSlots}\n // label={label}\n // prop={prop}\n // rules={mergeRules}\n // {...{ props: formItemProps }}\n />\n )\n }\n },\n})\n"],"names":["bem","createNameSpace","name","inheritAttrs","props","formItemProps","setup","emit","attrs","useAttrs","scopedSlots","useFormItemSlots","rules","useFormItemRules","childProps","disabled","_createVNode","ElFormItem","_mergeProps","b","is","isShowLabel","prepareClassNames","prepareStyles","prepareProps","expandFormItemPropsKeys"],"mappings":";;;;;;;AAYA,MAAMA,GAAAA,GAAMC,gBAAgB,WAAW,CAAA;AACvC,iDAA+B;AAAA,EAC7BC,IAAAA,EAAM,YAAA;AAAA,EACNC,YAAAA,EAAc,KAAA;AAAA,EACdC,KAAAA,EAAOC,aAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG;AAAAA,GAAK,EAAG;AAErB,IAAA,MAAMC,QAAQC,QAAAA,EAAS;AACvB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAY,GAAIC,gBAAAA,CAAiBP,KAAAA,EAAMG,IAAI,CAAA;AACnD,IAAA,MAAM;AAAA,MAAEK;AAAAA,KAAM,GAAIC,iBAAiBT,KAAK,CAAA;AACxC,IAAA,MAAM;AAAA,MAAEA,KAAAA,EAAOU,UAAAA;AAAAA,MAAYC,QAAAA;AAAAA,MAAU,GAAGV;AAAAA,KAAc,GAAID,KAAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAA,OAAAY,WAAAA,CAAAC,YAAAC,UAAAA,CAAA;AAAA,QAAA,OAAA,EAEW,CACLlB,GAAAA,CAAImB,CAAAA,EAAE,EACNnB,GAAAA,CAAIoB,EAAAA,CAAG,YAAA,EAAc,CAAChB,KAAAA,CAAMiB,WAAW,CAAA,EACvCC,mBAAmB,CAAA;AAAA,QACpB,SACMC,aAAAA;AAAc,OAAC,EAAA;AAAA,QAGpB,GAAGC,YAAAA,CAAanB,cAAAA,EAAe,CAAC,GAAGoB,uBAAuB,CAAC,CAAA;AAAA,QAC3Db,KAAAA;AAAAA,QACA,aAAA,EAAeJ,MAAM,kBAAkB;AAAA,OAAC,GAJjCE,WAAW,CAAA;AAAA,IAa1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;;;;"}
@@ -65,6 +65,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
65
65
  validate: () => import("element-plus").FormValidationResult;
66
66
  resetFields: (props: import("element-plus").FormItemProp) => void;
67
67
  clearValidate: (props: import("element-plus").FormItemProp) => void;
68
+ getFormItemRenderRef: (refName: string) => any;
68
69
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
69
70
  toggleStatus: (status: boolean) => void;
70
71
  validate: (prop: import("element-plus").FormItemProp, isValid: boolean, message: string) => void;
@@ -35,7 +35,15 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  };
36
36
  });
37
37
  const formData = useModel(__props, "modelValue");
38
- const { filterFormItemList, elFormRef, validate, resetFields, clearValidate } = useForm(props);
38
+ const {
39
+ filterFormItemList,
40
+ elFormRef,
41
+ validate,
42
+ resetFields,
43
+ clearValidate,
44
+ getFormItemRenderRef,
45
+ registerFormItemRenderRef
46
+ } = useForm(props);
39
47
  const { open, toggleStatus, isShowFoldBtn, isShowFormItem } = useCollapse(
40
48
  {
41
49
  filterFormItemList,
@@ -48,7 +56,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
48
56
  elFormRef,
49
57
  validate,
50
58
  resetFields,
51
- clearValidate
59
+ clearValidate,
60
+ getFormItemRenderRef
52
61
  });
53
62
  return (_ctx, _cache) => {
54
63
  return openBlock(), createElementBlock("div", {
@@ -81,7 +90,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
81
90
  createVNode(unref(EpFormItem), mergeProps({
82
91
  "form-data": formData.value,
83
92
  "form-label-width": _ctx.labelWidth
84
- }, { ref_for: true }, item), null, 16, ["form-data", "form-label-width"])
93
+ }, { ref_for: true }, item, {
94
+ onRegisterFormItemRenderRef: (ref2) => unref(registerFormItemRenderRef)(item.props?.ref, ref2)
95
+ }), null, 16, ["form-data", "form-label-width", "onRegisterFormItemRenderRef"])
85
96
  ]),
86
97
  _: 2
87
98
  }, 1032, ["class", "span"])), [
@@ -1 +1 @@
1
- {"version":3,"file":"form.vue2.mjs","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n bem.b(),\n prepareClassNames(),\n bem.is('open', open),\n bem.is('fold', isShowFoldBtn),\n ]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-form ref=\"elFormRef\" :model=\"formData\" v-bind=\"customAttrs\">\n <slot>\n <el-row>\n <el-col\n v-for=\"(item, index) in filterFormItemList\"\n v-show=\"isShowFormItem(index)\"\n :key=\"item.prop || index\"\n :class=\"bem.e('col')\"\n :span=\"item.col || 24 / col\"\n >\n <FormItem\n :form-data=\"formData\"\n :form-label-width=\"labelWidth\"\n v-bind=\"item\"\n />\n </el-col>\n </el-row>\n </slot>\n </el-form>\n <div v-if=\"isShowFoldBtn\" :class=\"bem.e('fold')\" @click=\"toggleStatus\">\n {{ open ? t('ep.form.collapse') : t('ep.form.more') }}\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, reactive, ref, useTemplateRef } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n formProps,\n formEmits,\n formEmitsKeys,\n expandFormPropsKeys,\n} from './form'\nimport type { FormEmits } from './form'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { ElForm, ElRow, ElCol } from 'element-plus'\nimport { useCollapse, useForm } from './hooks/use-form'\nimport FormItem from './form-item-vue'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpForm',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('form')\nconst props = defineProps(formProps)\nconst emit = defineEmits(formEmits)\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', 'model', ...expandFormPropsKeys]),\n hideRequiredAsterisk: true, // 隐藏必填星号, 使用自己的*\n scrollToError: true,\n ...prepareEvents<FormEmits>(emit, formEmitsKeys),\n }\n})\nconst formData = defineModel<Record<string, unknown>>({\n default: () => reactive({}),\n})\n\nconst { filterFormItemList, elFormRef, validate, resetFields, clearValidate } =\n useForm(props)\n\nconst { open, toggleStatus, isShowFoldBtn, isShowFormItem } = useCollapse(\n {\n filterFormItemList,\n isShowFold: props.isShowFold,\n showFieldCount: props.showFieldCount,\n },\n emit,\n)\n\ndefineExpose({\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n})\n</script>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createVNode","_mergeProps","_renderSlot","_openBlock","_Fragment","_renderList","_createBlock","col","labelWidth","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"form.vue2.mjs","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n bem.b(),\n prepareClassNames(),\n bem.is('open', open),\n bem.is('fold', isShowFoldBtn),\n ]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-form ref=\"elFormRef\" :model=\"formData\" v-bind=\"customAttrs\">\n <slot>\n <el-row>\n <el-col\n v-for=\"(item, index) in filterFormItemList\"\n v-show=\"isShowFormItem(index)\"\n :key=\"item.prop || index\"\n :class=\"bem.e('col')\"\n :span=\"item.col || 24 / col\"\n >\n <FormItem\n :form-data=\"formData\"\n :form-label-width=\"labelWidth\"\n v-bind=\"item\"\n @registerFormItemRenderRef=\"\n (ref) => registerFormItemRenderRef(item.props?.ref, ref)\n \"\n />\n </el-col>\n </el-row>\n </slot>\n </el-form>\n <div v-if=\"isShowFoldBtn\" :class=\"bem.e('fold')\" @click=\"toggleStatus\">\n {{ open ? t('ep.form.collapse') : t('ep.form.more') }}\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, reactive, ref, useTemplateRef } from 'vue'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n formProps,\n formEmits,\n formEmitsKeys,\n expandFormPropsKeys,\n} from './form'\nimport type { FormEmits } from './form'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { ElForm, ElRow, ElCol } from 'element-plus'\nimport { useCollapse, useForm } from './hooks/use-form'\nimport FormItem from './form-item-vue'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpForm',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('form')\nconst props = defineProps(formProps)\nconst emit = defineEmits(formEmits)\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', 'model', ...expandFormPropsKeys]),\n hideRequiredAsterisk: true, // 隐藏必填星号, 使用自己的*\n scrollToError: true,\n ...prepareEvents<FormEmits>(emit, formEmitsKeys),\n }\n})\nconst formData = defineModel<Record<string, unknown>>({\n default: () => reactive({}),\n})\n\nconst {\n filterFormItemList,\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n getFormItemRenderRef,\n registerFormItemRenderRef,\n} = useForm(props)\n\nconst { open, toggleStatus, isShowFoldBtn, isShowFormItem } = useCollapse(\n {\n filterFormItemList,\n isShowFold: props.isShowFold,\n showFieldCount: props.showFieldCount,\n },\n emit,\n)\n\ndefineExpose({\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n getFormItemRenderRef\n})\n</script>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createVNode","_mergeProps","_renderSlot","_openBlock","_Fragment","_renderList","_createBlock","col","labelWidth","ref","_vShow"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { FormItemProps } from '../form-item';
2
2
  import type { FormItemRule } from 'element-plus';
3
3
  export declare const useFormItem: () => {};
4
- export declare const useFormItemSlots: (props: FormItemProps) => {
4
+ export declare const useFormItemSlots: (props: FormItemProps, emit: any) => {
5
5
  scopedSlots: {
6
6
  default: () => unknown;
7
7
  label: () => import("vue/jsx-runtime").JSX.Element;
@@ -5,7 +5,7 @@ import { useLocale } from '../../../../hooks/use-locale.mjs';
5
5
  const useFormItem = () => {
6
6
  return {};
7
7
  };
8
- const useFormItemSlots = (props) => {
8
+ const useFormItemSlots = (props, emit) => {
9
9
  const attrs = useAttrs();
10
10
  const {
11
11
  render,
@@ -46,7 +46,12 @@ const useFormItemSlots = (props) => {
46
46
  disabled,
47
47
  clearable: true,
48
48
  ...renderProps,
49
- ...events
49
+ ...events,
50
+ ref: (el) => {
51
+ if (el) {
52
+ emit("registerFormItemRenderRef", el);
53
+ }
54
+ }
50
55
  }, renderScopedSlots) : formData[prop];
51
56
  },
52
57
  label: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-form-item.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form-item.tsx"],"sourcesContent":["import { h, resolveComponent, useAttrs, ref } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormItemRule } from 'element-plus'\nimport { ElTooltip } from 'element-plus'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nexport const useFormItem = () => {\n return {}\n}\nexport const useFormItemSlots = (props: FormItemProps) => {\n const attrs = useAttrs()\n const { render, labelRender } = props\n const prop = props.tableProp || props.prop\n const events: Record<string, (...args: any[]) => void> = {}\n for (const key in attrs) {\n if (key.startsWith('on')) {\n // 包装事件处理函数,确保在事件触发时使用最新的 scope\n // fix: table筛选后,点击事件触发时,scope.row仍为筛选前的行数据\n events[key] = (...args: any[]) => {\n const tableScope = attrs['table-scope']\n const eventFn = attrs[key] as (...args: any[]) => void\n return eventFn(...args, tableScope)\n }\n }\n }\n const isTipDisabled = ref(true) // 默认禁用提示\n const checkOverflow = (e: MouseEvent) => {\n const el = e.currentTarget as HTMLElement\n isTipDisabled.value = el.scrollWidth <= el.clientWidth\n }\n const scopedSlots = {\n default: () => {\n const formData = attrs['form-data'] as Record<string, unknown>\n const { scopedSlots: renderScopedSlots, ...renderProps } =\n props.props || {}\n let disabled = props.disabled\n if (typeof props.disabled === 'function') {\n disabled = props.disabled(formData)\n }\n return props.type\n ? h(\n resolveComponent(props.type),\n {\n modelValue: formData[prop as string],\n 'onUpdate:modelValue': (value: unknown) => {\n formData[prop as string] = value\n },\n disabled,\n clearable: true,\n ...renderProps,\n ...events,\n },\n renderScopedSlots,\n )\n : formData[prop as string]\n },\n label: () => {\n return (\n <ElTooltip\n placement=\"top\"\n effect=\"dark\"\n content={props.label}\n disabled={!props.isShowLabel || isTipDisabled.value}\n >\n <span\n onMouseenter={checkOverflow}\n style=\"display: block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"\n >\n {!props.hideRequiredAsterisk && props.required ? (\n <span style=\"color: var(--el-color-danger);\">*</span>\n ) : null}\n {props.isShowLabel ? <span>{props.label}</span> : ''}\n </span>\n </ElTooltip>\n )\n },\n }\n\n if (labelRender) {\n scopedSlots.label = () => labelRender({ label: props.label })\n }\n if (render) {\n scopedSlots.default = () => {\n return render(attrs['table-scope'])\n }\n }\n return {\n scopedSlots,\n }\n}\nexport const useFormItemRules = (props: FormItemProps) => {\n const { t } = useLocale()\n const { required, rules, label } = props\n let mergeRules: FormItemRule[] = []\n if (required) {\n const requiredDefault = { required: true }\n mergeRules.push(requiredDefault)\n }\n if (rules) {\n if (Array.isArray(rules)) {\n mergeRules = mergeRules.concat(rules)\n }\n\n if (Object.prototype.toString.call(rules) === '[object Object]') {\n mergeRules.push(rules as FormItemRule)\n }\n }\n\n if (mergeRules) {\n mergeRules.forEach((r) => {\n if (r.required && typeof r.message === 'undefined') {\n r.message = `${label || ''}${t('ep.formItem.required')}`\n }\n })\n }\n return { rules: mergeRules }\n}\n"],"names":["useFormItem","useFormItemSlots","props","attrs","useAttrs","render","labelRender","prop","tableProp","events","key","startsWith","args","tableScope","eventFn","isTipDisabled","ref","checkOverflow","e","el","currentTarget","value","scrollWidth","clientWidth","scopedSlots","default","formData","renderScopedSlots","renderProps","disabled","type","h","resolveComponent","modelValue","clearable","label","_createVNode","ElTooltip","isShowLabel","hideRequiredAsterisk","required","_createTextVNode","useFormItemRules","t","useLocale","rules","mergeRules","requiredDefault","push","Array","isArray","concat","Object","prototype","toString","call","forEach","r","message"],"mappings":"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"}
1
+ {"version":3,"file":"use-form-item.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form-item.tsx"],"sourcesContent":["import { h, resolveComponent, useAttrs, ref } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormItemRule } from 'element-plus'\nimport { ElTooltip } from 'element-plus'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nexport const useFormItem = () => {\n return {}\n}\nexport const useFormItemSlots = (props: FormItemProps,emit) => {\n const attrs = useAttrs()\n const { render, labelRender } = props\n const prop = props.tableProp || props.prop\n const events: Record<string, (...args: any[]) => void> = {}\n for (const key in attrs) {\n if (key.startsWith('on')) {\n // 包装事件处理函数,确保在事件触发时使用最新的 scope\n // fix: table筛选后,点击事件触发时,scope.row仍为筛选前的行数据\n events[key] = (...args: any[]) => {\n const tableScope = attrs['table-scope']\n const eventFn = attrs[key] as (...args: any[]) => void\n return eventFn(...args, tableScope)\n }\n }\n }\n const isTipDisabled = ref(true) // 默认禁用提示\n const checkOverflow = (e: MouseEvent) => {\n const el = e.currentTarget as HTMLElement\n isTipDisabled.value = el.scrollWidth <= el.clientWidth\n }\n const scopedSlots = {\n default: () => {\n const formData = attrs['form-data'] as Record<string, unknown>\n const { scopedSlots: renderScopedSlots, ...renderProps } =\n props.props || {}\n let disabled = props.disabled\n if (typeof props.disabled === 'function') {\n disabled = props.disabled(formData)\n }\n return props.type\n ? h(\n resolveComponent(props.type),\n {\n modelValue: formData[prop as string],\n 'onUpdate:modelValue': (value: unknown) => {\n formData[prop as string] = value\n },\n disabled,\n clearable: true,\n ...renderProps,\n ...events,\n ref: (el: any) => {\n if (el) {\n emit('registerFormItemRenderRef', el)\n }\n },\n },\n renderScopedSlots,\n )\n : formData[prop as string]\n },\n label: () => {\n return (\n <ElTooltip\n placement=\"top\"\n effect=\"dark\"\n content={props.label}\n disabled={!props.isShowLabel || isTipDisabled.value}\n >\n <span\n onMouseenter={checkOverflow}\n style=\"display: block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"\n >\n {!props.hideRequiredAsterisk && props.required ? (\n <span style=\"color: var(--el-color-danger);\">*</span>\n ) : null}\n {props.isShowLabel ? <span>{props.label}</span> : ''}\n </span>\n </ElTooltip>\n )\n },\n }\n\n if (labelRender) {\n scopedSlots.label = () => labelRender({ label: props.label })\n }\n if (render) {\n scopedSlots.default = () => {\n return render(attrs['table-scope'])\n }\n }\n return {\n scopedSlots,\n }\n}\nexport const useFormItemRules = (props: FormItemProps) => {\n const { t } = useLocale()\n const { required, rules, label } = props\n let mergeRules: FormItemRule[] = []\n if (required) {\n const requiredDefault = { required: true }\n mergeRules.push(requiredDefault)\n }\n if (rules) {\n if (Array.isArray(rules)) {\n mergeRules = mergeRules.concat(rules)\n }\n\n if (Object.prototype.toString.call(rules) === '[object Object]') {\n mergeRules.push(rules as FormItemRule)\n }\n }\n\n if (mergeRules) {\n mergeRules.forEach((r) => {\n if (r.required && typeof r.message === 'undefined') {\n r.message = `${label || ''}${t('ep.formItem.required')}`\n }\n })\n }\n return { rules: mergeRules }\n}\n"],"names":["useFormItem","useFormItemSlots","props","emit","attrs","useAttrs","render","labelRender","prop","tableProp","events","key","startsWith","args","tableScope","eventFn","isTipDisabled","ref","checkOverflow","e","el","currentTarget","value","scrollWidth","clientWidth","scopedSlots","default","formData","renderScopedSlots","renderProps","disabled","type","h","resolveComponent","modelValue","clearable","label","_createVNode","ElTooltip","isShowLabel","hideRequiredAsterisk","required","_createTextVNode","useFormItemRules","t","useLocale","rules","mergeRules","requiredDefault","push","Array","isArray","concat","Object","prototype","toString","call","forEach","r","message"],"mappings":"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"}
@@ -21,5 +21,7 @@ export declare const useForm: (props: FormProps) => {
21
21
  validate: () => import("element-plus").FormValidationResult;
22
22
  resetFields: (props: FormItemProp) => void;
23
23
  clearValidate: (props: FormItemProp) => void;
24
+ getFormItemRenderRef: (refName: string) => any;
25
+ registerFormItemRenderRef: (refName: string, ref: any) => void;
24
26
  };
25
27
  export {};
@@ -1,4 +1,4 @@
1
- import { useTemplateRef, computed, ref } from 'vue';
1
+ import { useTemplateRef, computed, reactive, onBeforeUpdate, ref } from 'vue';
2
2
 
3
3
  const useCollapse = ({ isShowFold, showFieldCount, filterFormItemList }, emit) => {
4
4
  const open = ref(false);
@@ -40,12 +40,26 @@ const useForm = (props) => {
40
40
  const clearValidate = (props2) => {
41
41
  return elFormRef.value.clearValidate(props2);
42
42
  };
43
+ const formItemRenderRefs = reactive(/* @__PURE__ */ new Map());
44
+ onBeforeUpdate(() => {
45
+ formItemRenderRefs.clear();
46
+ });
47
+ const getFormItemRenderRef = (refName) => {
48
+ return formItemRenderRefs.get(refName);
49
+ };
50
+ const registerFormItemRenderRef = (refName, ref2) => {
51
+ if (refName && ref2) {
52
+ formItemRenderRefs.set(refName, ref2);
53
+ }
54
+ };
43
55
  return {
44
56
  filterFormItemList,
45
57
  elFormRef,
46
58
  validate,
47
59
  resetFields,
48
- clearValidate
60
+ clearValidate,
61
+ getFormItemRenderRef,
62
+ registerFormItemRenderRef
49
63
  };
50
64
  };
51
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form.ts"],"sourcesContent":["import { ref, computed, useTemplateRef, type SetupContext } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormProps, FormEmits } from '../form'\nimport type { FormInstance, FormItemProp } from 'element-plus'\n\ninterface UseCollapseParams {\n isShowFold: boolean\n showFieldCount: number\n filterFormItemList: { value: FormItemProps[] }\n}\nexport const useCollapse = (\n { isShowFold, showFieldCount, filterFormItemList }: UseCollapseParams,\n emit: SetupContext<FormEmits>['emit'],\n) => {\n const open = ref(false)\n const toggleStatus = () => {\n open.value = !open.value\n emit('toggleStatus', open.value)\n }\n // 是否显示折叠按钮\n const isShowFoldBtn = computed(() => {\n return isShowFold && filterFormItemList.value.length > showFieldCount\n })\n // 展开收起隐藏formItem逻辑\n const isShowFormItem = (index: number) => {\n return index < showFieldCount || open.value || !isShowFoldBtn.value\n }\n return {\n open,\n toggleStatus,\n isShowFoldBtn,\n isShowFormItem,\n }\n}\n\nexport const useForm = (props: FormProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const filterFormItemList = computed(() => {\n return (props.formItemList || []).filter((item: FormItemProps) => {\n if ('show' in item) {\n return typeof item.show === 'function' ? item.show(item) : item.show\n } else if ('hide' in item) {\n return typeof item.hide === 'function' ? !item.hide(item) : !item.hide\n }\n return true\n })\n })\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n\n return {\n filterFormItemList,\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n }\n}\n"],"names":["props"],"mappings":";;AAUO,MAAM,cAAc,CACzB,EAAE,YAAY,cAAA,EAAgB,kBAAA,IAC9B,IAAA,KACG;AACH,EAAA,MAAM,IAAA,GAAO,IAAI,KAAK,CAAA;AACtB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA;AACnB,IAAA,IAAA,CAAK,cAAA,EAAgB,KAAK,KAAK,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,OAAO,UAAA,IAAc,kBAAA,CAAmB,KAAA,CAAM,MAAA,GAAS,cAAA;AAAA,EACzD,CAAC,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,IAAA,OAAO,KAAA,GAAQ,cAAA,IAAkB,IAAA,CAAK,KAAA,IAAS,CAAC,aAAA,CAAc,KAAA;AAAA,EAChE,CAAA;AACA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,MAAM,OAAA,GAAU,CAAC,KAAA,KAAqB;AAC3C,EAAA,MAAM,SAAA,GAAY,eAA6B,WAAW,CAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqB,SAAS,MAAM;AACxC,IAAA,OAAA,CAAQ,MAAM,YAAA,IAAgB,EAAC,EAAG,MAAA,CAAO,CAAC,IAAA,KAAwB;AAChE,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,OAAO,KAAK,IAAA,KAAS,UAAA,GAAa,KAAK,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,IAAA;AAAA,MAClE,CAAA,MAAA,IAAW,UAAU,IAAA,EAAM;AACzB,QAAA,OAAO,OAAO,IAAA,CAAK,IAAA,KAAS,UAAA,GAAa,CAAC,KAAK,IAAA,CAAK,IAAI,CAAA,GAAI,CAAC,IAAA,CAAK,IAAA;AAAA,MACpE;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,OAAO,SAAA,CAAU,MAAO,QAAA,EAAS;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAACA,MAAAA,KAAwB;AAC3C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,WAAA,CAAYA,MAAK,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAACA,MAAAA,KAAwB;AAC7C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,aAAA,CAAcA,MAAK,CAAA;AAAA,EAC7C,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"use-form.mjs","sources":["../../../../../../../packages/components/form/src/hooks/use-form.ts"],"sourcesContent":["import { ref, reactive, computed, useTemplateRef, type SetupContext, onBeforeUpdate } from 'vue'\nimport type { FormItemProps } from '../form-item'\nimport type { FormProps, FormEmits } from '../form'\nimport type { FormInstance, FormItemProp } from 'element-plus'\n\ninterface UseCollapseParams {\n isShowFold: boolean\n showFieldCount: number\n filterFormItemList: { value: FormItemProps[] }\n}\nexport const useCollapse = (\n { isShowFold, showFieldCount, filterFormItemList }: UseCollapseParams,\n emit: SetupContext<FormEmits>['emit'],\n) => {\n const open = ref(false)\n const toggleStatus = () => {\n open.value = !open.value\n emit('toggleStatus', open.value)\n }\n // 是否显示折叠按钮\n const isShowFoldBtn = computed(() => {\n return isShowFold && filterFormItemList.value.length > showFieldCount\n })\n // 展开收起隐藏formItem逻辑\n const isShowFormItem = (index: number) => {\n return index < showFieldCount || open.value || !isShowFoldBtn.value\n }\n return {\n open,\n toggleStatus,\n isShowFoldBtn,\n isShowFormItem,\n }\n}\n\nexport const useForm = (props: FormProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const filterFormItemList = computed(() => {\n return (props.formItemList || []).filter((item: FormItemProps) => {\n if ('show' in item) {\n return typeof item.show === 'function' ? item.show(item) : item.show\n } else if ('hide' in item) {\n return typeof item.hide === 'function' ? !item.hide(item) : !item.hide\n }\n return true\n })\n })\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n // 存储form-item的ref\n const formItemRenderRefs = reactive(new Map())\n // 每次更新前清空,防止内存泄漏或引用过时\n onBeforeUpdate(() => {\n formItemRenderRefs.clear();\n });\n // 获取form-item渲染render的ref\n const getFormItemRenderRef = (refName: string) => {\n return formItemRenderRefs.get(refName)\n }\n // 注册form-item的ref\n const registerFormItemRenderRef = (refName: string, ref: any) => {\n if (refName && ref) {\n formItemRenderRefs.set(refName, ref)\n }\n }\n\n return {\n filterFormItemList,\n elFormRef,\n validate,\n resetFields,\n clearValidate,\n getFormItemRenderRef,\n registerFormItemRenderRef,\n }\n}\n"],"names":["props","ref"],"mappings":";;AAUO,MAAM,cAAc,CACzB,EAAE,YAAY,cAAA,EAAgB,kBAAA,IAC9B,IAAA,KACG;AACH,EAAA,MAAM,IAAA,GAAO,IAAI,KAAK,CAAA;AACtB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA;AACnB,IAAA,IAAA,CAAK,cAAA,EAAgB,KAAK,KAAK,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,OAAO,UAAA,IAAc,kBAAA,CAAmB,KAAA,CAAM,MAAA,GAAS,cAAA;AAAA,EACzD,CAAC,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,IAAA,OAAO,KAAA,GAAQ,cAAA,IAAkB,IAAA,CAAK,KAAA,IAAS,CAAC,aAAA,CAAc,KAAA;AAAA,EAChE,CAAA;AACA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,MAAM,OAAA,GAAU,CAAC,KAAA,KAAqB;AAC3C,EAAA,MAAM,SAAA,GAAY,eAA6B,WAAW,CAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqB,SAAS,MAAM;AACxC,IAAA,OAAA,CAAQ,MAAM,YAAA,IAAgB,EAAC,EAAG,MAAA,CAAO,CAAC,IAAA,KAAwB;AAChE,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,OAAO,KAAK,IAAA,KAAS,UAAA,GAAa,KAAK,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,IAAA;AAAA,MAClE,CAAA,MAAA,IAAW,UAAU,IAAA,EAAM;AACzB,QAAA,OAAO,OAAO,IAAA,CAAK,IAAA,KAAS,UAAA,GAAa,CAAC,KAAK,IAAA,CAAK,IAAI,CAAA,GAAI,CAAC,IAAA,CAAK,IAAA;AAAA,MACpE;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,OAAO,SAAA,CAAU,MAAO,QAAA,EAAS;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAACA,MAAAA,KAAwB;AAC3C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,WAAA,CAAYA,MAAK,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAACA,MAAAA,KAAwB;AAC7C,IAAA,OAAO,SAAA,CAAU,KAAA,CAAO,aAAA,CAAcA,MAAK,CAAA;AAAA,EAC7C,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,QAAA,iBAAS,IAAI,GAAA,EAAK,CAAA;AAE7C,EAAA,cAAA,CAAe,MAAM;AACnB,IAAA,kBAAA,CAAmB,KAAA,EAAM;AAAA,EAC3B,CAAC,CAAA;AAED,EAAA,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAAoB;AAChD,IAAA,OAAO,kBAAA,CAAmB,IAAI,OAAO,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,yBAAA,GAA4B,CAAC,OAAA,EAAiBC,IAAAA,KAAa;AAC/D,IAAA,IAAI,WAAWA,IAAAA,EAAK;AAClB,MAAA,kBAAA,CAAmB,GAAA,CAAI,SAASA,IAAG,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}