@silver-formily/element-plus 4.0.1 → 4.0.3

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 (39) hide show
  1. package/esm/__builtins__/shared/utils.mjs +4 -1
  2. package/esm/__builtins__/shared/utils.mjs.map +1 -1
  3. package/esm/checkbox/index.d.ts +90 -90
  4. package/esm/color-picker/index.d.ts +14 -14
  5. package/esm/color-picker-panel/index.d.ts +12 -12
  6. package/esm/form-dialog/dialog-content.mjs +10 -12
  7. package/esm/form-dialog/dialog-content.mjs.map +1 -1
  8. package/esm/form-dialog/index.mjs +22 -26
  9. package/esm/form-dialog/index.mjs.map +1 -1
  10. package/esm/form-dialog/types.d.ts +0 -1
  11. package/esm/form-drawer/drawer-content.mjs +10 -12
  12. package/esm/form-drawer/drawer-content.mjs.map +1 -1
  13. package/esm/form-drawer/index.mjs +22 -26
  14. package/esm/form-drawer/index.mjs.map +1 -1
  15. package/esm/form-drawer/types.d.ts +0 -1
  16. package/esm/form-grid/form-grid-column.mjs +6 -4
  17. package/esm/form-grid/form-grid-column.mjs.map +1 -1
  18. package/esm/form-layout/form-layout.vue.d.ts +1 -1
  19. package/esm/input-number/index.d.ts +24 -24
  20. package/esm/preview-text/select.mjs +8 -3
  21. package/esm/preview-text/select.mjs.map +1 -1
  22. package/esm/query-form/query-form-light.mjs +13 -6
  23. package/esm/query-form/query-form-light.mjs.map +1 -1
  24. package/esm/query-form/query-form.mjs +13 -6
  25. package/esm/query-form/query-form.mjs.map +1 -1
  26. package/esm/query-form/types.d.ts +8 -1
  27. package/esm/radio/index.d.ts +45 -45
  28. package/esm/radio/radio-group.mjs +4 -2
  29. package/esm/radio/radio-group.mjs.map +1 -1
  30. package/esm/select/index.d.ts +7 -7
  31. package/esm/select-table/index.d.ts +1 -1
  32. package/esm/select-table/select-table.mjs +63 -29
  33. package/esm/select-table/select-table.mjs.map +1 -1
  34. package/esm/select-table/types.d.ts +1 -1
  35. package/esm/time-select/index.d.ts +16 -16
  36. package/esm/transfer/index.d.ts +12 -12
  37. package/package.json +4 -4
  38. package/esm/shared/url-change-listener.mjs +0 -50
  39. package/esm/shared/url-change-listener.mjs.map +0 -1
@@ -20,6 +20,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
20
20
  inheritAttrs: false,
21
21
  __name: "query-form",
22
22
  props: {
23
+ form: {},
23
24
  schema: {},
24
25
  schemaField: {},
25
26
  components: { default: () => ({}) },
@@ -51,7 +52,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
51
52
  default: true
52
53
  },
53
54
  submitProps: {},
54
- resetProps: {}
55
+ resetProps: {},
56
+ onAutoSubmit: {},
57
+ onAutoSubmitFailed: {}
55
58
  },
56
59
  setup(__props) {
57
60
  const props = __props;
@@ -60,14 +63,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
60
63
  const prefixCls = `${stylePrefix}-query-form`;
61
64
  const FormGridColumn = FormGrid.GridColumn;
62
65
  const fieldSchemaRef = useFieldSchema();
66
+ const formRef = useForm();
63
67
  const { externalForm, activeForm } = useQueryFormForm({
64
- formProps,
65
- fallbackForm: useForm()
68
+ formProps: computed(() => ({ form: props.form })),
69
+ fallbackForm: formRef
66
70
  });
67
71
  const innerFormProps = computed(() => ({
68
72
  fullness: true,
69
73
  ...formProps.value,
70
- form: externalForm.value
74
+ form: externalForm.value,
75
+ onAutoSubmit: props.onAutoSubmit,
76
+ onAutoSubmitFailed: props.onAutoSubmitFailed
71
77
  }));
72
78
  const schemaList = computed(() => {
73
79
  const rawSchema = props.schema ?? fieldSchemaRef.value;
@@ -108,8 +114,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
108
114
  return (props.visibleWhen ? props.visibleWhen(context) : defaultVisibleWhen(context)) !== false;
109
115
  }
110
116
  function isActionsNode(node, grid) {
111
- if ("element" in node && node.element) return node.element.dataset.queryFormActions !== void 0;
112
- return node.index === grid.childSize - 1;
117
+ const isLastNode = node.index === grid.childSize - 1;
118
+ if ("element" in node && node.element) return node.element.dataset.queryFormActions !== void 0 || isLastNode;
119
+ return isLastNode;
113
120
  }
114
121
  function getFieldRowCount(grid) {
115
122
  const rows = (grid.children ?? []).filter((node) => !isActionsNode(node, grid)).map((node) => node.shadowRow ?? 0);
@@ -1 +1 @@
1
- {"version":3,"file":"query-form.mjs","names":[],"sources":["../../src/query-form/query-form.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ISchema } from '@formily/json-schema'\nimport type { Grid, GridNode, IGridOptions } from '@silver-formily/grid'\nimport type { IQueryFormProps, SchemaEntry } from './types'\nimport { ArrowDown, ArrowUp } from '@element-plus/icons-vue'\nimport { Schema } from '@formily/json-schema'\nimport { createGrid } from '@silver-formily/grid'\nimport { autorunEffect } from '@silver-formily/reactive-vue'\nimport { useFieldSchema, useForm } from '@silver-formily/vue'\nimport { ElIcon, ElLink } from 'element-plus'\nimport { computed, ref, useSlots } from 'vue'\nimport { compatibleUnderlineProp, stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { Form } from '../form'\nimport { FormButtonGroup } from '../form-button-group'\nimport { FormGrid } from '../form-grid'\nimport { Reset } from '../reset'\nimport { Submit } from '../submit'\nimport { useQueryFormForm, useQueryFormSchemaField } from './hooks'\n\ndefineOptions({\n name: 'FQueryForm',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IQueryFormProps>(), {\n components: () => ({}),\n gridProps: () => ({}),\n defaultExpanded: false,\n showToggle: true,\n actionsAtRowEnd: false,\n submitText: '查询',\n resetText: '重置',\n expandText: '展开',\n collapseText: '收起',\n showSubmit: true,\n showReset: true,\n})\n\nconst { props: formProps } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\nconst slots = useSlots()\nconst prefixCls = `${stylePrefix}-query-form`\nconst FormGridColumn = FormGrid.GridColumn\n\nconst COLLAPSED_ROWS = 1\nconst fieldSchemaRef = useFieldSchema()\nconst formRef = useForm()\nconst { externalForm, activeForm } = useQueryFormForm({\n formProps,\n fallbackForm: formRef,\n})\nconst innerFormProps = computed(() => ({\n fullness: true,\n ...formProps.value,\n form: externalForm.value,\n}))\n\nconst schemaList = computed<SchemaEntry[]>(() => {\n const rawSchema = props.schema ?? fieldSchemaRef.value\n /* istanbul ignore next -- @preserve defensive: schema can be temporarily absent in external field-schema lifecycle */\n if (!rawSchema)\n return []\n const schema = rawSchema instanceof Schema ? rawSchema : new Schema(rawSchema)\n return schema.mapProperties((childSchema: ISchema, name: string | number) => ({\n name,\n schema: childSchema,\n }))\n})\n\nfunction resolveField(name?: string | number) {\n return activeForm.value?.query(name).take()\n}\n\nfunction createVisibleContext(\n node: GridNode,\n grid: Grid<HTMLElement>,\n collapsedOverride?: boolean,\n) {\n const index = node.index ?? 0\n const entry = schemaList.value[index]\n const schema = entry?.schema\n const name = entry?.name ?? schema?.name\n return {\n field: resolveField(name),\n schema,\n index,\n node,\n grid,\n collapsed: collapsedOverride ?? grid.maxRows !== Infinity,\n breakpoint: grid.breakpoint,\n }\n}\n\nfunction defaultVisibleWhen(context: ReturnType<typeof createVisibleContext>) {\n if (!context.collapsed)\n return true\n\n const shadowRow = context.node.shadowRow ?? 0\n const withinRows = shadowRow < COLLAPSED_ROWS + 1\n if (!withinRows)\n return false\n\n const isCollapsible = getFieldRowCount(context.grid) > COLLAPSED_ROWS\n if (!isCollapsible)\n return true\n const shadowColumn = context.node.shadowColumn ?? 1\n const span = context.node.span ?? 1\n const endColumn = shadowColumn + span - 1\n if (shadowRow === COLLAPSED_ROWS && endColumn === context.grid.columns)\n return false\n\n return true\n}\n\nfunction resolveVisibleWhen(context: ReturnType<typeof createVisibleContext>) {\n const visible = props.visibleWhen\n ? props.visibleWhen(context)\n : defaultVisibleWhen(context)\n return visible !== false\n}\n\nfunction isActionsNode(node: GridNode, grid: Grid<HTMLElement>) {\n if ('element' in node && node.element) {\n return node.element.dataset.queryFormActions !== undefined\n }\n return node.index === grid.childSize - 1\n}\n\nfunction getFieldRowCount(grid: Grid<HTMLElement>) {\n const rows = (grid.children ?? [])\n .filter(node => !isActionsNode(node, grid))\n .map(node => node.shadowRow ?? 0)\n return new Set(rows).size\n}\n\nconst defaultShouldVisible: IGridOptions['shouldVisible'] = (node, grid) => {\n if (isActionsNode(node, grid))\n return true\n return resolveVisibleWhen(createVisibleContext(node, grid))\n}\n\nconst restGridProps = props.gridProps ?? {}\nconst defaultGridProps: Partial<IGridOptions> = restGridProps.minColumns === undefined && restGridProps.maxColumns === undefined\n ? { maxColumns: 4 }\n : {}\n\nconst gridOptions: IGridOptions = {\n ...defaultGridProps,\n ...restGridProps,\n maxRows: (props.defaultExpanded || !props.showToggle) ? Infinity : COLLAPSED_ROWS,\n shouldVisible: defaultShouldVisible,\n}\n\nconst grid = createGrid(gridOptions)\n\nconst expanded = ref(grid.maxRows === Infinity)\nconst gridType = ref<'incomplete-wrap' | 'collapsible' | 'complete-wrap'>('complete-wrap')\n\nfunction updateType() {\n if (!props.showToggle) {\n gridType.value = 'incomplete-wrap'\n return\n }\n\n if (!props.visibleWhen) {\n gridType.value = getFieldRowCount(grid) > COLLAPSED_ROWS\n ? 'collapsible'\n : 'incomplete-wrap'\n return\n }\n\n const nodes = grid.children ?? []\n const hasHiddenInCollapsed = nodes.some((node) => {\n if (isActionsNode(node, grid))\n return false\n return !resolveVisibleWhen(createVisibleContext(node, grid, true))\n })\n /* istanbul ignore next -- @preserve layout branch depends on runtime grid measurement in browser */\n if (hasHiddenInCollapsed) {\n gridType.value = 'collapsible'\n return\n }\n const realRows = grid.shadowRows\n gridType.value = realRows < COLLAPSED_ROWS + 1 ? 'incomplete-wrap' : 'complete-wrap'\n}\n\nautorunEffect(() => {\n expanded.value = grid.maxRows === Infinity\n updateType()\n})\n\nfunction toggle() {\n if (!props.showToggle)\n return\n grid.maxRows = grid.maxRows === Infinity ? COLLAPSED_ROWS : Infinity\n}\n\nconst { hasDefaultSlot, schemaField } = useQueryFormSchemaField({\n slots,\n schema: computed(() => props.schema),\n schemaField: computed(() => props.schemaField),\n components: computed(() => props.components),\n scope: computed(() => props.scope),\n})\n</script>\n\n<template>\n <Form v-bind=\"innerFormProps\" :class=\"prefixCls\">\n <FormGrid :grid=\"grid\">\n <slot v-if=\"hasDefaultSlot\" />\n <component\n :is=\"schemaField\"\n v-else-if=\"schemaField\"\n :schema=\"props.schema\"\n />\n <FormGridColumn\n :grid-span=\"-1\"\n data-query-form-actions\n :class=\"[\n `${prefixCls}__actions`,\n props.actionsAtRowEnd && `${prefixCls}__actions--row-end`,\n ]\"\n >\n <template v-if=\"gridType === 'incomplete-wrap'\">\n <FormButtonGroup\n :align=\"props.actionsAtRowEnd ? 'right' : 'left'\"\n align-form-item\n inline\n :style=\"props.actionsAtRowEnd && { width: '100%' }\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n </FormButtonGroup>\n </template>\n <template v-else-if=\"gridType === 'collapsible' && props.showToggle\">\n <FormButtonGroup\n :align=\"props.actionsAtRowEnd ? 'right' : 'left'\"\n align-form-item\n inline\n :style=\"props.actionsAtRowEnd && { width: '100%' }\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n <slot\n name=\"collapse\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <ElLink\n type=\"primary\"\n :underline=\"compatibleUnderlineProp()\"\n :class=\"`${prefixCls}__collapse-link`\"\n @click=\"toggle\"\n >\n {{ expanded ? props.collapseText : props.expandText }}\n <ElIcon :class=\"`${prefixCls}__collapse-icon`\">\n <ArrowUp v-if=\"expanded\" />\n <ArrowDown v-else />\n </ElIcon>\n </ElLink>\n </slot>\n </FormButtonGroup>\n </template>\n <template v-else>\n <FormButtonGroup\n align=\"right\"\n inline\n style=\"display: flex; width: 100%;\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n </FormButtonGroup>\n </template>\n </FormGridColumn>\n </FormGrid>\n </Form>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"query-form.mjs","names":[],"sources":["../../src/query-form/query-form.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ISchema } from '@formily/json-schema'\nimport type { Grid, GridNode, IGridOptions } from '@silver-formily/grid'\nimport type { IQueryFormProps, SchemaEntry } from './types'\nimport { ArrowDown, ArrowUp } from '@element-plus/icons-vue'\nimport { Schema } from '@formily/json-schema'\nimport { createGrid } from '@silver-formily/grid'\nimport { autorunEffect } from '@silver-formily/reactive-vue'\nimport { useFieldSchema, useForm } from '@silver-formily/vue'\nimport { ElIcon, ElLink } from 'element-plus'\nimport { computed, ref, useSlots } from 'vue'\nimport { compatibleUnderlineProp, stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { Form } from '../form'\nimport { FormButtonGroup } from '../form-button-group'\nimport { FormGrid } from '../form-grid'\nimport { Reset } from '../reset'\nimport { Submit } from '../submit'\nimport { useQueryFormForm, useQueryFormSchemaField } from './hooks'\n\ndefineOptions({\n name: 'FQueryForm',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IQueryFormProps>(), {\n components: () => ({}),\n gridProps: () => ({}),\n defaultExpanded: false,\n showToggle: true,\n actionsAtRowEnd: false,\n submitText: '查询',\n resetText: '重置',\n expandText: '展开',\n collapseText: '收起',\n showSubmit: true,\n showReset: true,\n})\n\nconst { props: formProps } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\nconst slots = useSlots()\nconst prefixCls = `${stylePrefix}-query-form`\nconst FormGridColumn = FormGrid.GridColumn\n\nconst COLLAPSED_ROWS = 1\nconst fieldSchemaRef = useFieldSchema()\nconst formRef = useForm()\nconst { externalForm, activeForm } = useQueryFormForm({\n formProps: computed(() => ({ form: props.form })),\n fallbackForm: formRef,\n})\nconst innerFormProps = computed(() => ({\n fullness: true,\n ...formProps.value,\n form: externalForm.value,\n onAutoSubmit: props.onAutoSubmit,\n onAutoSubmitFailed: props.onAutoSubmitFailed,\n}))\n\nconst schemaList = computed<SchemaEntry[]>(() => {\n const rawSchema = props.schema ?? fieldSchemaRef.value\n /* istanbul ignore next -- @preserve defensive: schema can be temporarily absent in external field-schema lifecycle */\n if (!rawSchema)\n return []\n const schema = rawSchema instanceof Schema ? rawSchema : new Schema(rawSchema)\n return schema.mapProperties((childSchema: ISchema, name: string | number) => ({\n name,\n schema: childSchema,\n }))\n})\n\nfunction resolveField(name?: string | number) {\n return activeForm.value?.query(name).take()\n}\n\nfunction createVisibleContext(\n node: GridNode,\n grid: Grid<HTMLElement>,\n collapsedOverride?: boolean,\n) {\n const index = node.index ?? 0\n const entry = schemaList.value[index]\n const schema = entry?.schema\n const name = entry?.name ?? schema?.name\n return {\n field: resolveField(name),\n schema,\n index,\n node,\n grid,\n collapsed: collapsedOverride ?? grid.maxRows !== Infinity,\n breakpoint: grid.breakpoint,\n }\n}\n\nfunction defaultVisibleWhen(context: ReturnType<typeof createVisibleContext>) {\n if (!context.collapsed)\n return true\n\n const shadowRow = context.node.shadowRow ?? 0\n const withinRows = shadowRow < COLLAPSED_ROWS + 1\n if (!withinRows)\n return false\n\n const isCollapsible = getFieldRowCount(context.grid) > COLLAPSED_ROWS\n if (!isCollapsible)\n return true\n const shadowColumn = context.node.shadowColumn ?? 1\n const span = context.node.span ?? 1\n const endColumn = shadowColumn + span - 1\n if (shadowRow === COLLAPSED_ROWS && endColumn === context.grid.columns)\n return false\n\n return true\n}\n\nfunction resolveVisibleWhen(context: ReturnType<typeof createVisibleContext>) {\n const visible = props.visibleWhen\n ? props.visibleWhen(context)\n : defaultVisibleWhen(context)\n return visible !== false\n}\n\nfunction isActionsNode(node: GridNode, grid: Grid<HTMLElement>) {\n const isLastNode = node.index === grid.childSize - 1\n if ('element' in node && node.element) {\n return node.element.dataset.queryFormActions !== undefined || isLastNode\n }\n return isLastNode\n}\n\nfunction getFieldRowCount(grid: Grid<HTMLElement>) {\n const rows = (grid.children ?? [])\n .filter(node => !isActionsNode(node, grid))\n .map(node => node.shadowRow ?? 0)\n return new Set(rows).size\n}\n\nconst defaultShouldVisible: IGridOptions['shouldVisible'] = (node, grid) => {\n if (isActionsNode(node, grid))\n return true\n return resolveVisibleWhen(createVisibleContext(node, grid))\n}\n\nconst restGridProps = props.gridProps ?? {}\nconst defaultGridProps: Partial<IGridOptions> = restGridProps.minColumns === undefined && restGridProps.maxColumns === undefined\n ? { maxColumns: 4 }\n : {}\n\nconst gridOptions: IGridOptions = {\n ...defaultGridProps,\n ...restGridProps,\n maxRows: (props.defaultExpanded || !props.showToggle) ? Infinity : COLLAPSED_ROWS,\n shouldVisible: defaultShouldVisible,\n}\n\nconst grid = createGrid(gridOptions)\n\nconst expanded = ref(grid.maxRows === Infinity)\nconst gridType = ref<'incomplete-wrap' | 'collapsible' | 'complete-wrap'>('complete-wrap')\n\nfunction updateType() {\n if (!props.showToggle) {\n gridType.value = 'incomplete-wrap'\n return\n }\n\n if (!props.visibleWhen) {\n gridType.value = getFieldRowCount(grid) > COLLAPSED_ROWS\n ? 'collapsible'\n : 'incomplete-wrap'\n return\n }\n\n const nodes = grid.children ?? []\n const hasHiddenInCollapsed = nodes.some((node) => {\n if (isActionsNode(node, grid))\n return false\n return !resolveVisibleWhen(createVisibleContext(node, grid, true))\n })\n /* istanbul ignore next -- @preserve layout branch depends on runtime grid measurement in browser */\n if (hasHiddenInCollapsed) {\n gridType.value = 'collapsible'\n return\n }\n const realRows = grid.shadowRows\n gridType.value = realRows < COLLAPSED_ROWS + 1 ? 'incomplete-wrap' : 'complete-wrap'\n}\n\nautorunEffect(() => {\n expanded.value = grid.maxRows === Infinity\n updateType()\n})\n\nfunction toggle() {\n if (!props.showToggle)\n return\n grid.maxRows = grid.maxRows === Infinity ? COLLAPSED_ROWS : Infinity\n}\n\nconst { hasDefaultSlot, schemaField } = useQueryFormSchemaField({\n slots,\n schema: computed(() => props.schema),\n schemaField: computed(() => props.schemaField),\n components: computed(() => props.components),\n scope: computed(() => props.scope),\n})\n</script>\n\n<template>\n <Form v-bind=\"innerFormProps\" :class=\"prefixCls\">\n <FormGrid :grid=\"grid\">\n <slot v-if=\"hasDefaultSlot\" />\n <component\n :is=\"schemaField\"\n v-else-if=\"schemaField\"\n :schema=\"props.schema\"\n />\n <FormGridColumn\n :grid-span=\"-1\"\n data-query-form-actions\n :class=\"[\n `${prefixCls}__actions`,\n props.actionsAtRowEnd && `${prefixCls}__actions--row-end`,\n ]\"\n >\n <template v-if=\"gridType === 'incomplete-wrap'\">\n <FormButtonGroup\n :align=\"props.actionsAtRowEnd ? 'right' : 'left'\"\n align-form-item\n inline\n :style=\"props.actionsAtRowEnd && { width: '100%' }\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n </FormButtonGroup>\n </template>\n <template v-else-if=\"gridType === 'collapsible' && props.showToggle\">\n <FormButtonGroup\n :align=\"props.actionsAtRowEnd ? 'right' : 'left'\"\n align-form-item\n inline\n :style=\"props.actionsAtRowEnd && { width: '100%' }\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n <slot\n name=\"collapse\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <ElLink\n type=\"primary\"\n :underline=\"compatibleUnderlineProp()\"\n :class=\"`${prefixCls}__collapse-link`\"\n @click=\"toggle\"\n >\n {{ expanded ? props.collapseText : props.expandText }}\n <ElIcon :class=\"`${prefixCls}__collapse-icon`\">\n <ArrowUp v-if=\"expanded\" />\n <ArrowDown v-else />\n </ElIcon>\n </ElLink>\n </slot>\n </FormButtonGroup>\n </template>\n <template v-else>\n <FormButtonGroup\n align=\"right\"\n inline\n style=\"display: flex; width: 100%;\"\n >\n <slot\n name=\"actions\"\n :expanded=\"expanded\"\n :toggle=\"toggle\"\n :type=\"gridType\"\n >\n <Submit v-if=\"props.showSubmit\" v-bind=\"props.submitProps\">\n {{ props.submitText }}\n </Submit>\n <Reset v-if=\"props.showReset\" v-bind=\"props.resetProps\">\n {{ props.resetText }}\n </Reset>\n </slot>\n </FormButtonGroup>\n </template>\n </FormGridColumn>\n </FormGrid>\n </Form>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;AA2CA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAnBvB,MAAM,QAAQ;EAcd,MAAM,EAAE,OAAO,cAAc,cAAc,CAAC,cAAc,sBAAsB,CAAA;EAChF,MAAM,QAAQ,UAAS;EACvB,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,iBAAiB,SAAS;EAGhC,MAAM,iBAAiB,gBAAe;EACtC,MAAM,UAAU,SAAQ;EACxB,MAAM,EAAE,cAAc,eAAe,iBAAiB;GACpD,WAAW,gBAAgB,EAAE,MAAM,MAAM,MAAM,EAAE;GACjD,cAAc;GACf,CAAA;EACD,MAAM,iBAAiB,gBAAgB;GACrC,UAAU;GACV,GAAG,UAAU;GACb,MAAM,aAAa;GACnB,cAAc,MAAM;GACpB,oBAAoB,MAAM;GAC3B,EAAC;EAEF,MAAM,aAAa,eAA8B;GAC/C,MAAM,YAAY,MAAM,UAAU,eAAe;;AAEjD,OAAI,CAAC,UACH,QAAO,EAAC;AAEV,WADe,qBAAqB,SAAS,YAAY,IAAI,OAAO,UAAS,EAC/D,eAAe,aAAsB,UAA2B;IAC5E;IACA,QAAQ;IACT,EAAC;IACH;EAED,SAAS,aAAa,MAAwB;AAC5C,UAAO,WAAW,OAAO,MAAM,KAAK,CAAC,MAAK;;EAG5C,SAAS,qBACP,MACA,MACA,mBACA;GACA,MAAM,QAAQ,KAAK,SAAS;GAC5B,MAAM,QAAQ,WAAW,MAAM;GAC/B,MAAM,SAAS,OAAO;AAEtB,UAAO;IACL,OAAO,aAFI,OAAO,QAAQ,QAAQ,KAET;IACzB;IACA;IACA;IACA;IACA,WAAW,qBAAqB,KAAK,YAAY;IACjD,YAAY,KAAK;IACnB;;EAGF,SAAS,mBAAmB,SAAkD;AAC5E,OAAI,CAAC,QAAQ,UACX,QAAO;GAET,MAAM,YAAY,QAAQ,KAAK,aAAa;AAE5C,OAAI,EADe,YAAY,iBAAiB,GAE9C,QAAO;AAGT,OAAI,EADkB,iBAAiB,QAAQ,KAAK,GAAG,gBAErD,QAAO;GAGT,MAAM,aAFe,QAAQ,KAAK,gBAAgB,MACrC,QAAQ,KAAK,QAAQ,KACM;AACxC,OAAI,cAAc,kBAAkB,cAAc,QAAQ,KAAK,QAC7D,QAAO;AAET,UAAO;;EAGT,SAAS,mBAAmB,SAAkD;AAI5E,WAHgB,MAAM,cAClB,MAAM,YAAY,QAAO,GACzB,mBAAmB,QAAO,MACX;;EAGrB,SAAS,cAAc,MAAgB,MAAyB;GAC9D,MAAM,aAAa,KAAK,UAAU,KAAK,YAAY;AACnD,OAAI,aAAa,QAAQ,KAAK,QAC5B,QAAO,KAAK,QAAQ,QAAQ,qBAAqB,KAAA,KAAa;AAEhE,UAAO;;EAGT,SAAS,iBAAiB,MAAyB;GACjD,MAAM,QAAQ,KAAK,YAAY,EAAE,EAC9B,QAAO,SAAQ,CAAC,cAAc,MAAM,KAAK,CAAA,CACzC,KAAI,SAAQ,KAAK,aAAa,EAAC;AAClC,UAAO,IAAI,IAAI,KAAK,CAAC;;EAGvB,MAAM,wBAAuD,MAAM,SAAS;AAC1E,OAAI,cAAc,MAAM,KAAK,CAC3B,QAAO;AACT,UAAO,mBAAmB,qBAAqB,MAAM,KAAK,CAAA;;EAG5D,MAAM,gBAAgB,MAAM,aAAa,EAAC;EAY1C,MAAM,OAAO,WAPqB;GAChC,GAL8C,cAAc,eAAe,KAAA,KAAa,cAAc,eAAe,KAAA,IACnH,EAAE,YAAY,GAAE,GAChB,EAAC;GAIH,GAAG;GACH,SAAU,MAAM,mBAAmB,CAAC,MAAM,aAAc,WAAW;GACnE,eAAe;GACjB,CAEmC;EAEnC,MAAM,WAAW,IAAI,KAAK,YAAY,SAAQ;EAC9C,MAAM,WAAW,IAAyD,gBAAe;EAEzF,SAAS,aAAa;AACpB,OAAI,CAAC,MAAM,YAAY;AACrB,aAAS,QAAQ;AACjB;;AAGF,OAAI,CAAC,MAAM,aAAa;AACtB,aAAS,QAAQ,iBAAiB,KAAK,GAAG,iBACtC,gBACA;AACJ;;;AAUF,QAPc,KAAK,YAAY,EAAC,EACG,MAAM,SAAS;AAChD,QAAI,cAAc,MAAM,KAAK,CAC3B,QAAO;AACT,WAAO,CAAC,mBAAmB,qBAAqB,MAAM,MAAM,KAAK,CAAA;KAClE,EAEyB;AACxB,aAAS,QAAQ;AACjB;;AAGF,YAAS,QADQ,KAAK,aACM,iBAAiB,IAAI,oBAAoB;;AAGvE,sBAAoB;AAClB,YAAS,QAAQ,KAAK,YAAY;AAClC,eAAW;IACZ;EAED,SAAS,SAAS;AAChB,OAAI,CAAC,MAAM,WACT;AACF,QAAK,UAAU,KAAK,YAAY,WAAW,iBAAiB;;EAG9D,MAAM,EAAE,gBAAgB,gBAAgB,wBAAwB;GAC9D;GACA,QAAQ,eAAe,MAAM,OAAO;GACpC,aAAa,eAAe,MAAM,YAAY;GAC9C,YAAY,eAAe,MAAM,WAAW;GAC5C,OAAO,eAAe,MAAM,MAAM;GACnC,CAAA;;uBAIC,YAsGO,MAAA,YAAA,EAtGP,WAAc,eAsGP,OAtGqB,EAAG,OAAO,WAAS,CAAA,EAAA;2BAqGlC,CApGX,YAoGW,MAAA,SAAA,EAAA,EApGA,MAAM,MAAA,KAAI,EAAA,EAAA;4BACW,CAAlB,MAAA,eAAc,GAA1B,WAA8B,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,GAGjB,MAAA,YAAW,IAAA,WAAA,EAFxB,YAIE,wBAHK,MAAA,YAAW,CAAA,EAAA;;MAEf,QAAQ,MAAM;kEAEjB,YA4FiB,MAAA,eAAA,EAAA;MA3Fd,aAAW;MACZ,2BAAA;MACC,OAAK,eAAA,CAAA,GAAiB,UAAS,YAAuB,MAAM,mBAAe,GAAO,UAAS,oBAAA,CAAA;;6BA0BjF,CArBK,SAAA,UAAQ,qBAAA,WAAA,EACtB,YAmBkB,MAAA,gBAAA,EAAA;;OAlBf,OAAO,MAAM,kBAAe,UAAA;OAC7B,mBAAA;OACA,QAAA;OACC,OAAK,eAAE,MAAM,mBAAe,EAAA,OAAA,QAAA,CAAA;;8BActB,CAZP,WAYO,KAAA,QAAA,WAAA;QAVJ,UAAU,SAAA;QACF;QACR,MAAM,SAAA;gBAQF,CANS,MAAM,cAAA,WAAA,EAApB,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF+B,MAAM,YAAW,CAAA,EAAA;+BACjC,CAAA,gBAAA,gBAAnB,MAAM,WAAU,EAAA,EAAA,CAAA,CAAA;;mDAER,MAAM,aAAA,WAAA,EAAnB,YAEQ,MAAA,MAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF8B,MAAM,WAAU,CAAA,EAAA;+BAC/B,CAAA,gBAAA,gBAAlB,MAAM,UAAS,EAAA,EAAA,CAAA,CAAA;;;;mCAKL,SAAA,UAAQ,iBAAsB,MAAM,cAAA,WAAA,EACvD,YAsCkB,MAAA,gBAAA,EAAA;;OArCf,OAAO,MAAM,kBAAe,UAAA;OAC7B,mBAAA;OACA,QAAA;OACC,OAAK,eAAE,MAAM,mBAAe,EAAA,OAAA,QAAA,CAAA;;8BActB,CAZP,WAYO,KAAA,QAAA,WAAA;QAVJ,UAAU,SAAA;QACF;QACR,MAAM,SAAA;gBAQF,CANS,MAAM,cAAA,WAAA,EAApB,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF+B,MAAM,YAAW,CAAA,EAAA;+BACjC,CAAA,gBAAA,gBAAnB,MAAM,WAAU,EAAA,EAAA,CAAA,CAAA;;mDAER,MAAM,aAAA,WAAA,EAAnB,YAEQ,MAAA,MAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF8B,MAAM,WAAU,CAAA,EAAA;+BAC/B,CAAA,gBAAA,gBAAlB,MAAM,UAAS,EAAA,EAAA,CAAA,CAAA;;qDAGtB,WAkBO,KAAA,QAAA,YAAA;QAhBJ,UAAU,SAAA;QACF;QACR,MAAM,SAAA;gBAcF,CAZL,YAWS,MAAA,OAAA,EAAA;QAVP,MAAK;QACJ,WAAW,MAAA,wBAAuB,EAAA;QAClC,OAAK,eAAA,GAAK,UAAS,iBAAA;QACnB,SAAO;;+BAE8C,CAAA,gBAAA,gBAAnD,SAAA,QAAW,MAAM,eAAe,MAAM,WAAU,GAAG,KACtD,EAAA,EAAA,YAGS,MAAA,OAAA,EAAA,EAHA,OAAK,eAAA,GAAK,UAAS,iBAAA,EAAA,EAAA;gCACC,CAAZ,SAAA,SAAA,WAAA,EAAf,YAA2B,MAAA,QAAA,EAAA,EAAA,KAAA,GAAA,CAAA,KAAA,WAAA,EAC3B,YAAoB,MAAA,UAAA,EAAA,EAAA,KAAA,GAAA,CAAA,EAAA,CAAA;;;;;;iDAO5B,YAkBkB,MAAA,gBAAA,EAAA;;OAjBhB,OAAM;OACN,QAAA;OACA,OAAA;QAAA,WAAA;QAAA,SAAA;QAAmC;;8BAc5B,CAZP,WAYO,KAAA,QAAA,WAAA;QAVJ,UAAU,SAAA;QACF;QACR,MAAM,SAAA;gBAQF,CANS,MAAM,cAAA,WAAA,EAApB,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF+B,MAAM,YAAW,CAAA,EAAA;+BACjC,CAAA,gBAAA,gBAAnB,MAAM,WAAU,EAAA,EAAA,CAAA,CAAA;;mDAER,MAAM,aAAA,WAAA,EAAnB,YAEQ,MAAA,MAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAF8B,MAAM,WAAU,CAAA,EAAA;+BAC/B,CAAA,gBAAA,gBAAlB,MAAM,UAAS,EAAA,EAAA,CAAA,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import { Component } from "vue";
2
- import { GeneralField } from "@formily/core";
2
+ import { Form, GeneralField, IFormFeedback } from "@formily/core";
3
3
  import { Grid, GridNode, IGridOptions } from "@silver-formily/grid";
4
4
  import { ISchema } from "@formily/json-schema";
5
5
 
6
6
  //#region src/query-form/types.d.ts
7
+ type QueryFormFormProvider = Form | (() => Form | undefined);
7
8
  interface QueryFormVisibleContext {
8
9
  field?: GeneralField;
9
10
  schema?: ISchema;
@@ -15,6 +16,7 @@ interface QueryFormVisibleContext {
15
16
  }
16
17
  type QueryFormVisible = (context: QueryFormVisibleContext) => boolean;
17
18
  interface IQueryFormProps {
19
+ form?: QueryFormFormProvider;
18
20
  schema?: ISchema;
19
21
  schemaField?: Component;
20
22
  components?: Record<string, Component>;
@@ -32,13 +34,18 @@ interface IQueryFormProps {
32
34
  showReset?: boolean;
33
35
  submitProps?: Record<string, any>;
34
36
  resetProps?: Record<string, any>;
37
+ onAutoSubmit?: (values: Form['values']) => Promise<any>;
38
+ onAutoSubmitFailed?: (error: IFormFeedback[]) => void;
35
39
  }
36
40
  interface IQueryFormLightProps {
41
+ form?: QueryFormFormProvider;
37
42
  schema?: ISchema;
38
43
  schemaField?: Component;
39
44
  components?: Record<string, Component>;
40
45
  scope?: Record<string, any>;
41
46
  throttleWait?: number;
47
+ onAutoSubmit?: (values: Form['values']) => Promise<any>;
48
+ onAutoSubmitFailed?: (error: any) => void;
42
49
  }
43
50
  //#endregion
44
51
  export { IQueryFormLightProps, IQueryFormProps, QueryFormVisible, QueryFormVisibleContext };
@@ -23,14 +23,14 @@ declare const Radio: {
23
23
  size: {
24
24
  type: _$vue.PropType<"" | "default" | "small" | "large">;
25
25
  };
26
- label: {
27
- type: _$vue.PropType<string | number | boolean>;
28
- default: undefined;
29
- };
30
26
  border: {
31
27
  type: _$vue.PropType<boolean>;
32
28
  default: false;
33
29
  };
30
+ label: {
31
+ type: _$vue.PropType<string | number | boolean>;
32
+ default: undefined;
33
+ };
34
34
  }>> & {
35
35
  "onUpdate:modelValue"?: ((val: string | number | boolean | undefined) => any) | undefined;
36
36
  onChange?: ((val: string | number | boolean | undefined) => any) | undefined;
@@ -71,14 +71,14 @@ declare const Radio: {
71
71
  size: {
72
72
  type: _$vue.PropType<"" | "default" | "small" | "large">;
73
73
  };
74
- label: {
75
- type: _$vue.PropType<string | number | boolean>;
76
- default: undefined;
77
- };
78
74
  border: {
79
75
  type: _$vue.PropType<boolean>;
80
76
  default: false;
81
77
  };
78
+ label: {
79
+ type: _$vue.PropType<string | number | boolean>;
80
+ default: undefined;
81
+ };
82
82
  }>> & {
83
83
  "onUpdate:modelValue"?: ((val: string | number | boolean | undefined) => any) | undefined;
84
84
  onChange?: ((val: string | number | boolean | undefined) => any) | undefined;
@@ -113,14 +113,14 @@ declare const Radio: {
113
113
  size: {
114
114
  type: _$vue.PropType<"" | "default" | "small" | "large">;
115
115
  };
116
- label: {
117
- type: _$vue.PropType<string | number | boolean>;
118
- default: undefined;
119
- };
120
116
  border: {
121
117
  type: _$vue.PropType<boolean>;
122
118
  default: false;
123
119
  };
120
+ label: {
121
+ type: _$vue.PropType<string | number | boolean>;
122
+ default: undefined;
123
+ };
124
124
  }>> & {
125
125
  "onUpdate:modelValue"?: ((val: string | number | boolean | undefined) => any) | undefined;
126
126
  onChange?: ((val: string | number | boolean | undefined) => any) | undefined;
@@ -248,18 +248,14 @@ declare const Radio: {
248
248
  });
249
249
  RadioGroup: {
250
250
  new (...args: any[]): _$vue.CreateComponentPublicInstanceWithMixins<Readonly<_$vue.ExtractPropTypes<{
251
- props: {
252
- type: _$vue.PropType<_$element_plus0.radioOptionProp>;
253
- default: () => Required<_$element_plus0.radioOptionProp>;
254
- };
255
- fill: {
256
- type: _$vue.PropType<string>;
257
- default: "";
258
- };
259
251
  modelValue: {
260
252
  type: _$vue.PropType<string | number | boolean>;
261
253
  default: undefined;
262
254
  };
255
+ props: {
256
+ type: _$vue.PropType<_$element_plus0.radioOptionProp>;
257
+ default: () => Required<_$element_plus0.radioOptionProp>;
258
+ };
263
259
  type: {
264
260
  type: _$vue.PropType<"button" | "radio">;
265
261
  default: "radio";
@@ -268,16 +264,20 @@ declare const Radio: {
268
264
  type: _$vue.PropType<string>;
269
265
  default: undefined;
270
266
  };
267
+ fill: {
268
+ type: _$vue.PropType<string>;
269
+ default: "";
270
+ };
271
271
  disabled: {
272
272
  type: _$vue.PropType<boolean>;
273
273
  default: undefined;
274
274
  };
275
- options: {
276
- type: _$vue.PropType<_$element_plus0.radioOption[]>;
277
- };
278
275
  size: {
279
276
  type: _$vue.PropType<"" | "default" | "small" | "large">;
280
277
  };
278
+ options: {
279
+ type: _$vue.PropType<_$element_plus0.radioOption[]>;
280
+ };
281
281
  validateEvent: {
282
282
  type: _$vue.PropType<boolean>;
283
283
  default: true;
@@ -317,18 +317,14 @@ declare const Radio: {
317
317
  M: {};
318
318
  Defaults: {};
319
319
  }, Readonly<_$vue.ExtractPropTypes<{
320
- props: {
321
- type: _$vue.PropType<_$element_plus0.radioOptionProp>;
322
- default: () => Required<_$element_plus0.radioOptionProp>;
323
- };
324
- fill: {
325
- type: _$vue.PropType<string>;
326
- default: "";
327
- };
328
320
  modelValue: {
329
321
  type: _$vue.PropType<string | number | boolean>;
330
322
  default: undefined;
331
323
  };
324
+ props: {
325
+ type: _$vue.PropType<_$element_plus0.radioOptionProp>;
326
+ default: () => Required<_$element_plus0.radioOptionProp>;
327
+ };
332
328
  type: {
333
329
  type: _$vue.PropType<"button" | "radio">;
334
330
  default: "radio";
@@ -337,16 +333,20 @@ declare const Radio: {
337
333
  type: _$vue.PropType<string>;
338
334
  default: undefined;
339
335
  };
336
+ fill: {
337
+ type: _$vue.PropType<string>;
338
+ default: "";
339
+ };
340
340
  disabled: {
341
341
  type: _$vue.PropType<boolean>;
342
342
  default: undefined;
343
343
  };
344
- options: {
345
- type: _$vue.PropType<_$element_plus0.radioOption[]>;
346
- };
347
344
  size: {
348
345
  type: _$vue.PropType<"" | "default" | "small" | "large">;
349
346
  };
347
+ options: {
348
+ type: _$vue.PropType<_$element_plus0.radioOption[]>;
349
+ };
350
350
  validateEvent: {
351
351
  type: _$vue.PropType<boolean>;
352
352
  default: true;
@@ -380,18 +380,14 @@ declare const Radio: {
380
380
  __isTeleport?: never;
381
381
  __isSuspense?: never;
382
382
  } & _$vue.ComponentOptionsBase<Readonly<_$vue.ExtractPropTypes<{
383
- props: {
384
- type: _$vue.PropType<_$element_plus0.radioOptionProp>;
385
- default: () => Required<_$element_plus0.radioOptionProp>;
386
- };
387
- fill: {
388
- type: _$vue.PropType<string>;
389
- default: "";
390
- };
391
383
  modelValue: {
392
384
  type: _$vue.PropType<string | number | boolean>;
393
385
  default: undefined;
394
386
  };
387
+ props: {
388
+ type: _$vue.PropType<_$element_plus0.radioOptionProp>;
389
+ default: () => Required<_$element_plus0.radioOptionProp>;
390
+ };
395
391
  type: {
396
392
  type: _$vue.PropType<"button" | "radio">;
397
393
  default: "radio";
@@ -400,16 +396,20 @@ declare const Radio: {
400
396
  type: _$vue.PropType<string>;
401
397
  default: undefined;
402
398
  };
399
+ fill: {
400
+ type: _$vue.PropType<string>;
401
+ default: "";
402
+ };
403
403
  disabled: {
404
404
  type: _$vue.PropType<boolean>;
405
405
  default: undefined;
406
406
  };
407
- options: {
408
- type: _$vue.PropType<_$element_plus0.radioOption[]>;
409
- };
410
407
  size: {
411
408
  type: _$vue.PropType<"" | "default" | "small" | "large">;
412
409
  };
410
+ options: {
411
+ type: _$vue.PropType<_$element_plus0.radioOption[]>;
412
+ };
413
413
  validateEvent: {
414
414
  type: _$vue.PropType<boolean>;
415
415
  default: true;
@@ -6,6 +6,7 @@ import { isPlainObj } from "@formily/shared";
6
6
  //#region src/radio/radio-group.vue
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
8
  name: "FRadioGroup",
9
+ inheritAttrs: false,
9
10
  __name: "radio-group",
10
11
  props: {
11
12
  options: {
@@ -20,6 +21,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
20
21
  setup(__props) {
21
22
  const props = __props;
22
23
  const { props: radioProps } = useCleanAttrs();
24
+ const normalizedOptions = computed(() => Array.isArray(props.options) ? props.options : []);
23
25
  const OptionType = computed(() => {
24
26
  return props.optionType === "button" ? ElRadioButton : ElRadio;
25
27
  });
@@ -28,11 +30,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
28
30
  return isPlainObj(option);
29
31
  }
30
32
  function getOptionLabel(option, index) {
31
- if (isRadioPropsObject(props.options[index])) return props.options[index].label;
33
+ if (isRadioPropsObject(normalizedOptions.value[index])) return normalizedOptions.value[index].label;
32
34
  return option.label;
33
35
  }
34
36
  const compatiableProps = computed(() => {
35
- return props.options.map((option) => {
37
+ return normalizedOptions.value.map((option) => {
36
38
  if (!isRadioPropsObject(option)) return {
37
39
  label: option,
38
40
  value: option
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.mjs","names":[],"sources":["../../src/radio/radio-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { RadioProps } from 'element-plus'\nimport type { PropType } from 'vue'\nimport { isPlainObj } from '@formily/shared'\nimport { ElRadio, ElRadioButton, ElRadioGroup, version } from 'element-plus'\nimport { computed, useSlots } from 'vue'\nimport { lt, useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FRadioGroup',\n})\n\nconst props = defineProps({\n options: {\n type: Array as PropType<Array<RadioProps | string | number>>,\n default: () => [],\n },\n optionType: {\n type: String as PropType<'default' | 'button'>,\n default: 'default',\n },\n})\n\nconst { props: radioProps } = useCleanAttrs()\n\nconst OptionType = computed(() => {\n return props.optionType === 'button' ? ElRadioButton : ElRadio\n})\nconst IS_LESS_THAN_2_6_0 = lt(version, '2.6.0')\n\nfunction isRadioPropsObject(option: any): option is RadioProps {\n return isPlainObj(option)\n}\n\nfunction getOptionLabel(option: any, index: number) {\n if (isRadioPropsObject(props.options[index])) {\n return props.options[index].label\n }\n return option.label\n}\n\nconst compatiableProps = computed(() => {\n return props.options.map((option) => {\n if (!isRadioPropsObject(option)) {\n return {\n label: option,\n value: option,\n }\n }\n /* istanbul ignore if -- @preserve */\n if (IS_LESS_THAN_2_6_0) {\n return {\n ...option,\n label: option.value,\n }\n }\n return option\n })\n})\n\nconst slots = useSlots()\n</script>\n\n<template>\n <ElRadioGroup v-bind=\"radioProps\">\n <template v-if=\"!slots.option\">\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n {{ getOptionLabel(option, index) }}\n </component>\n </template>\n <template v-else>\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n <slot name=\"option\" :option=\"option\" />\n </component>\n </template>\n </ElRadioGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAWd,MAAM,EAAE,OAAO,eAAe,eAAc;EAE5C,MAAM,aAAa,eAAe;AAChC,UAAO,MAAM,eAAe,WAAW,gBAAgB;IACxD;EACD,MAAM,qBAAqB,GAAG,SAAS,QAAO;EAE9C,SAAS,mBAAmB,QAAmC;AAC7D,UAAO,WAAW,OAAM;;EAG1B,SAAS,eAAe,QAAa,OAAe;AAClD,OAAI,mBAAmB,MAAM,QAAQ,OAAO,CAC1C,QAAO,MAAM,QAAQ,OAAO;AAE9B,UAAO,OAAO;;EAGhB,MAAM,mBAAmB,eAAe;AACtC,UAAO,MAAM,QAAQ,KAAK,WAAW;AACnC,QAAI,CAAC,mBAAmB,OAAO,CAC7B,QAAO;KACL,OAAO;KACP,OAAO;KACT;;AAGF,QAAI,mBACF,QAAO;KACL,GAAG;KACH,OAAO,OAAO;KAChB;AAEF,WAAO;KACR;IACF;EAED,MAAM,QAAQ,UAAS;;uBAIrB,YAWe,MAAA,aAAA,EAAA,eAAA,mBAXO,MAAA,WAAU,CAAA,CAAA,EAAA;2BAKnB,CAAA,CAJM,MAAA,MAAK,CAAC,UAAA,UAAA,KAAA,EACrB,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC9D,CAAA,gBAAA,gBAAhC,eAAe,QAAQ,MAAK,CAAA,EAAA,EAAA,CAAA,CAAA;;;kCAIjC,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC1D,CAAvC,WAAuC,KAAA,QAAA,UAAA,EAAV,QAAM,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"radio-group.mjs","names":[],"sources":["../../src/radio/radio-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { RadioProps } from 'element-plus'\nimport type { PropType } from 'vue'\nimport { isPlainObj } from '@formily/shared'\nimport { ElRadio, ElRadioButton, ElRadioGroup, version } from 'element-plus'\nimport { computed, useSlots } from 'vue'\nimport { lt, useCleanAttrs } from '../__builtins__'\n\ndefineOptions({\n name: 'FRadioGroup',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n options: {\n type: Array as PropType<Array<RadioProps | string | number>>,\n default: () => [],\n },\n optionType: {\n type: String as PropType<'default' | 'button'>,\n default: 'default',\n },\n})\n\nconst { props: radioProps } = useCleanAttrs()\nconst normalizedOptions = computed(() => Array.isArray(props.options) ? props.options : [])\n\nconst OptionType = computed(() => {\n return props.optionType === 'button' ? ElRadioButton : ElRadio\n})\nconst IS_LESS_THAN_2_6_0 = lt(version, '2.6.0')\n\nfunction isRadioPropsObject(option: any): option is RadioProps {\n return isPlainObj(option)\n}\n\nfunction getOptionLabel(option: any, index: number) {\n if (isRadioPropsObject(normalizedOptions.value[index])) {\n return normalizedOptions.value[index].label\n }\n return option.label\n}\n\nconst compatiableProps = computed(() => {\n return normalizedOptions.value.map((option) => {\n if (!isRadioPropsObject(option)) {\n return {\n label: option,\n value: option,\n }\n }\n /* istanbul ignore if -- @preserve */\n if (IS_LESS_THAN_2_6_0) {\n return {\n ...option,\n label: option.value,\n }\n }\n return option\n })\n})\n\nconst slots = useSlots()\n</script>\n\n<template>\n <ElRadioGroup v-bind=\"radioProps\">\n <template v-if=\"!slots.option\">\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n {{ getOptionLabel(option, index) }}\n </component>\n </template>\n <template v-else>\n <component :is=\"OptionType\" v-for=\"(option, index) of compatiableProps\" :key=\"index\" v-bind=\"option\">\n <slot name=\"option\" :option=\"option\" />\n </component>\n </template>\n </ElRadioGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAWd,MAAM,EAAE,OAAO,eAAe,eAAc;EAC5C,MAAM,oBAAoB,eAAe,MAAM,QAAQ,MAAM,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAA;EAE1F,MAAM,aAAa,eAAe;AAChC,UAAO,MAAM,eAAe,WAAW,gBAAgB;IACxD;EACD,MAAM,qBAAqB,GAAG,SAAS,QAAO;EAE9C,SAAS,mBAAmB,QAAmC;AAC7D,UAAO,WAAW,OAAM;;EAG1B,SAAS,eAAe,QAAa,OAAe;AAClD,OAAI,mBAAmB,kBAAkB,MAAM,OAAO,CACpD,QAAO,kBAAkB,MAAM,OAAO;AAExC,UAAO,OAAO;;EAGhB,MAAM,mBAAmB,eAAe;AACtC,UAAO,kBAAkB,MAAM,KAAK,WAAW;AAC7C,QAAI,CAAC,mBAAmB,OAAO,CAC7B,QAAO;KACL,OAAO;KACP,OAAO;KACT;;AAGF,QAAI,mBACF,QAAO;KACL,GAAG;KACH,OAAO,OAAO;KAChB;AAEF,WAAO;KACR;IACF;EAED,MAAM,QAAQ,UAAS;;uBAIrB,YAWe,MAAA,aAAA,EAAA,eAAA,mBAXO,MAAA,WAAU,CAAA,CAAA,EAAA;2BAKnB,CAAA,CAJM,MAAA,MAAK,CAAC,UAAA,UAAA,KAAA,EACrB,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC9D,CAAA,gBAAA,gBAAhC,eAAe,QAAQ,MAAK,CAAA,EAAA,EAAA,CAAA,CAAA;;;kCAIjC,mBAEY,UAAA,EAAA,KAAA,GAAA,EAAA,WAF0C,iBAAA,QAAlB,QAAQ,UAAK;yBAAjD,YAEY,wBAFI,WAAA,MAAU,EAA1B,WAEY,EAF6D,KAAK,OAAK,EAAA,EAAA,SAAA,MAAA,EAAU,OAAM,EAAA;6BAC1D,CAAvC,WAAuC,KAAA,QAAA,UAAA,EAAV,QAAM,CAAA,CAAA,CAAA"}
@@ -8,7 +8,7 @@ declare const Select: {
8
8
  disabled: boolean;
9
9
  created: boolean;
10
10
  }> & Omit<{
11
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
11
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
12
12
  readonly disabled: boolean;
13
13
  readonly created: boolean;
14
14
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -22,7 +22,7 @@ declare const Select: {
22
22
  disabled: boolean;
23
23
  created: boolean;
24
24
  }> & Omit<{
25
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
25
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
26
26
  readonly disabled: boolean;
27
27
  readonly created: boolean;
28
28
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -40,7 +40,7 @@ declare const Select: {
40
40
  disabled: boolean;
41
41
  created: boolean;
42
42
  }> & Omit<{
43
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
43
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
44
44
  readonly disabled: boolean;
45
45
  readonly created: boolean;
46
46
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -54,7 +54,7 @@ declare const Select: {
54
54
  disabled: boolean;
55
55
  created: boolean;
56
56
  }> & Omit<{
57
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
57
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
58
58
  readonly disabled: boolean;
59
59
  readonly created: boolean;
60
60
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -69,7 +69,7 @@ declare const Select: {
69
69
  disabled: boolean;
70
70
  created: boolean;
71
71
  }> & Omit<{
72
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
72
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
73
73
  readonly disabled: boolean;
74
74
  readonly created: boolean;
75
75
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -83,7 +83,7 @@ declare const Select: {
83
83
  disabled: boolean;
84
84
  created: boolean;
85
85
  }> & Omit<{
86
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
86
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
87
87
  readonly disabled: boolean;
88
88
  readonly created: boolean;
89
89
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -96,7 +96,7 @@ declare const Select: {
96
96
  disabled: boolean;
97
97
  created: boolean;
98
98
  }> & Omit<{
99
- readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | BooleanConstructor | ObjectConstructor | StringConstructor)[], unknown, unknown>;
99
+ readonly value: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(BooleanConstructor | ObjectConstructor | NumberConstructor | StringConstructor)[], unknown, unknown>;
100
100
  readonly disabled: boolean;
101
101
  readonly created: boolean;
102
102
  readonly label?: _$element_plus_es_utils_index_mjs0.EpPropMergeType<(NumberConstructor | StringConstructor)[], unknown, unknown>;
@@ -18,7 +18,7 @@ declare const SelectTable: {
18
18
  clickRowToSelect: boolean;
19
19
  showAlertToolbar: boolean;
20
20
  ignoreSelectable: boolean;
21
- }, true, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
21
+ }, false, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
22
22
  P: {};
23
23
  B: {};
24
24
  D: {};
@@ -46,57 +46,90 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
46
46
  const emit = __emit;
47
47
  const elTableProps = useAttrs();
48
48
  const field = useField();
49
+ const elTableRef = ref();
50
+ const radioSelectedKey = ref();
51
+ function requireRowKey() {
52
+ if (!props.rowKey) throw new Error("rowKey is required");
53
+ return props.rowKey;
54
+ }
55
+ function getRowValue(item) {
56
+ if (!props.rowKey || !item) return;
57
+ return item[props.rowKey];
58
+ }
59
+ function getSingleSelectedKey(value) {
60
+ if (!isValid(value)) return null;
61
+ return props.optionAsValue ? getRowValue(value) ?? null : value;
62
+ }
63
+ function getMultipleSelectedKeys(value) {
64
+ if (!Array.isArray(value)) return [];
65
+ return value.map((item) => props.optionAsValue ? getRowValue(item) : item).filter(isValid);
66
+ }
67
+ function syncRadioSelection(item) {
68
+ radioSelectedKey.value = getRowValue(item) ?? null;
69
+ elTableRef.value?.setCurrentRow(item);
70
+ }
49
71
  function compatibleRadioValue(key) {
50
72
  return lt(version, "2.6.0") ? { label: key } : { value: key };
51
73
  }
52
- const elTableRef = ref();
53
- const rowKey = props.rowKey;
54
74
  function getInitialSelectedList() {
55
- if (props.mode === "multiple") return props.modelValue?.map((item) => {
56
- if (!props.optionAsValue) return { [rowKey]: item };
57
- return item;
58
- }) ?? [];
59
- else return props.optionAsValue ? [props.modelValue] : [{ [rowKey]: props.modelValue }];
75
+ if (!isValid(props.modelValue)) return [];
76
+ if (props.mode === "multiple") {
77
+ if (!Array.isArray(props.modelValue)) return [];
78
+ return props.modelValue.map((item) => {
79
+ if (!props.optionAsValue) {
80
+ if (!props.rowKey) return null;
81
+ return { [props.rowKey]: item };
82
+ }
83
+ return item;
84
+ }).filter(isValid);
85
+ } else {
86
+ if (props.optionAsValue) return [props.modelValue];
87
+ if (!props.rowKey) return [];
88
+ return [{ [props.rowKey]: props.modelValue }];
89
+ }
60
90
  }
61
91
  const selectedFlatDataSource = ref(getInitialSelectedList());
62
92
  let prevSelection = [];
63
- const radioSelectedKey = ref();
64
93
  const currentSelectLength = computed(() => {
65
94
  if (props.mode === "multiple") return Array.isArray(props.modelValue) ? props.modelValue.length : 0;
66
95
  else return isValid(radioSelectedKey.value) ? 1 : 0;
67
96
  });
68
97
  watch(() => props.dataSource, async () => {
69
- const selectedKeys = uniq(selectedFlatDataSource.value.map((item) => item[rowKey]));
98
+ const selectedKeys = uniq(selectedFlatDataSource.value.map((item) => getRowValue(item)).filter(isValid));
70
99
  await nextTick();
71
100
  for (const item of props.dataSource) {
72
- if (selectedKeys.includes(item[rowKey])) if (props.mode === "multiple") elTableRef.value?.toggleRowSelection(item, true, props.ignoreSelectable);
73
- else {
74
- elTableRef.value?.setCurrentRow(item);
75
- onRadioClick(item);
76
- }
101
+ const itemKey = getRowValue(item);
102
+ if (isValid(itemKey) && selectedKeys.includes(itemKey)) if (props.mode === "multiple") elTableRef.value?.toggleRowSelection(item, true, props.ignoreSelectable);
103
+ else syncRadioSelection(item);
77
104
  await nextTick();
78
- prevSelection = elTableRef.value?.getSelectionRows();
105
+ prevSelection = elTableRef.value?.getSelectionRows() ?? [];
79
106
  }
80
107
  }, { immediate: true });
81
108
  watch(() => [props.modelValue, props.loading], async ([value, loading]) => {
82
109
  if (loading) return;
83
- if (props.mode === "single") radioSelectedKey.value = props.optionAsValue ? value[rowKey] : value;
84
- else {
110
+ if (props.mode === "single") {
111
+ const selectedKey = getSingleSelectedKey(value);
112
+ radioSelectedKey.value = selectedKey;
113
+ const selectedItem = props.dataSource.find((item) => getRowValue(item) === selectedKey);
114
+ elTableRef.value?.setCurrentRow(selectedItem);
115
+ } else {
85
116
  await nextTick();
86
- const currentDisplayDataKeys = elTableRef.value?.getSelectionRows().map((item) => item[rowKey]);
87
- const valueKeys = props.optionAsValue ? value?.map((item) => item[rowKey]) : value ?? [];
88
- selectedFlatDataSource.value = selectedFlatDataSource.value.filter((item) => valueKeys.includes(item[rowKey]));
117
+ const currentDisplayDataKeys = elTableRef.value?.getSelectionRows().map((item) => getRowValue(item)).filter(isValid) ?? [];
118
+ const valueKeys = getMultipleSelectedKeys(value);
119
+ selectedFlatDataSource.value = selectedFlatDataSource.value.filter((item) => valueKeys.includes(getRowValue(item)));
89
120
  if (isEqual(valueKeys, currentDisplayDataKeys)) return;
90
121
  const diffItems = xor(valueKeys, currentDisplayDataKeys);
91
- for (const tableItem of props.dataSource) if (diffItems.includes(tableItem[rowKey])) {
92
- const shouldSelect = valueKeys.includes(tableItem[rowKey]);
93
- elTableRef.value.toggleRowSelection(tableItem, shouldSelect, props.ignoreSelectable);
122
+ for (const tableItem of props.dataSource) {
123
+ const itemKey = getRowValue(tableItem);
124
+ if (isValid(itemKey) && diffItems.includes(itemKey)) {
125
+ const shouldSelect = valueKeys.includes(itemKey);
126
+ elTableRef.value?.toggleRowSelection(tableItem, shouldSelect, props.ignoreSelectable);
127
+ }
94
128
  }
95
129
  }
96
130
  }, { immediate: true });
97
131
  function onSelect(newSelection) {
98
- /* istanbul ignore if -- @preserve */
99
- if (!rowKey) throw new Error("rowKey is required");
132
+ const rowKey = requireRowKey();
100
133
  const removedItemList = prevSelection.length > newSelection.length ? differenceWith(prevSelection, newSelection, (itemPrev, itemNext) => {
101
134
  return itemPrev[rowKey] === itemNext[rowKey];
102
135
  }) : [];
@@ -112,7 +145,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
112
145
  else emit("update:modelValue", selectedFlatDataSource.value.map((item) => item[rowKey]));
113
146
  }
114
147
  function onRadioClick(item) {
115
- radioSelectedKey.value = item[rowKey];
148
+ const rowKey = requireRowKey();
149
+ syncRadioSelection(item);
116
150
  if (props.optionAsValue) emit("update:modelValue", item);
117
151
  else emit("update:modelValue", item[rowKey]);
118
152
  }
@@ -131,7 +165,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
131
165
  emit("update:modelValue", []);
132
166
  selectedFlatDataSource.value = [];
133
167
  } else {
134
- radioSelectedKey.value = null;
168
+ syncRadioSelection(null);
135
169
  emit("update:modelValue", null);
136
170
  }
137
171
  }
@@ -155,7 +189,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
155
189
  ref_key: "elTableRef",
156
190
  ref: elTableRef
157
191
  }, unref(elTableProps), {
158
- "row-key": unref(rowKey),
192
+ "row-key": __props.rowKey,
159
193
  "row-class-name": props.clickRowToSelect ? `--click-row-select` : "",
160
194
  data: props.dataSource,
161
195
  "highlight-current-row": props.mode === "single",
@@ -176,7 +210,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
176
210
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => radioSelectedKey.value = $event),
177
211
  style: { "width": "100%" }
178
212
  }, {
179
- default: withCtx(() => [createVNode(unref(ElRadio), mergeProps(compatibleRadioValue(row[unref(rowKey)]), { onChange: () => onRadioClick(row) }), {
213
+ default: withCtx(() => [createVNode(unref(ElRadio), mergeProps(compatibleRadioValue(row[__props.rowKey]), { onChange: () => onRadioClick(row) }), {
180
214
  default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" \xA0 ", -1)])]),
181
215
  _: 1
182
216
  }, 16, ["onChange"])]),