@vunk/form 2.9.2 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,266 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var formItem = require('@vunk/form/components/form-item');
7
+ var elementPlus = require('element-plus');
8
+ var form = require('@vunk/form');
9
+ var composables = require('@vunk/core/composables');
10
+ var formItemRenderer = require('@vunk/form/components/form-item-renderer');
11
+ var templatesDefault = require('@vunk/form/components/templates-default');
12
+ var rendererData = require('@vunk/form/components/renderer-data');
13
+ var core = require('@vunk/core');
14
+ var avatar = require('@vunk/plus/components/avatar');
15
+ var index = require('../index2.cjs');
16
+ var _pluginVue_exportHelper = require('../_plugin-vue_export-helper.cjs');
17
+
18
+ const props = {
19
+ ...formItem._VkfFormItemCtx.props,
20
+ /**
21
+ * @description model;
22
+ */
23
+ modelValue: null,
24
+ iconSize: {
25
+ type: Number,
26
+ default: 22
27
+ },
28
+ readonly: {
29
+ type: Boolean,
30
+ default: void 0
31
+ },
32
+ /**
33
+ * @description model; Whether the text is editable.
34
+ * @default false
35
+ */
36
+ editable: {
37
+ type: Boolean,
38
+ default: void 0
39
+ },
40
+ /**
41
+ * @description 编辑主体
42
+ * @default __VkfInput.Source
43
+ */
44
+ edit: {
45
+ type: Object,
46
+ default: void 0
47
+ }
48
+ };
49
+ const emits = {
50
+ "update:editable": null,
51
+ "update:modelValue": null
52
+ };
53
+
54
+ var _sfc_main = /* @__PURE__ */vue.defineComponent({
55
+ ...{
56
+ name: "VkfEditableText"
57
+ },
58
+ __name: "index",
59
+ props: props,
60
+ emits,
61
+ setup(__props, {
62
+ expose: __expose,
63
+ emit: __emit
64
+ }) {
65
+ __expose();
66
+ const props = __props;
67
+ const emit = __emit;
68
+ const id = vue.useId();
69
+ const editable = composables.useModelComputed({
70
+ key: "editable",
71
+ default: false
72
+ }, props, emit);
73
+ const prop = vue.computed(() => {
74
+ return props.prop ?? id;
75
+ });
76
+ const formItemBindProps = formItem._VkfFormItemCtx.createBindProps(props, []);
77
+ const readonly = form.useComputedReadonly(props);
78
+ const formItemContainerRef = vue.ref();
79
+ const formItemRef = vue.ref();
80
+ const editSource = vue.computed(() => {
81
+ const source = {
82
+ templateType: "VkfInput",
83
+ ...formItemBindProps.value,
84
+ inline: true,
85
+ onBlur: handleCheck,
86
+ ...props.edit,
87
+ prop: prop.value,
88
+ elRef: e => {
89
+ props.edit?.elRef?.(e);
90
+ formItemRef.value = e;
91
+ }
92
+ };
93
+ return [source];
94
+ });
95
+ const rendererData$1 = vue.computed(() => {
96
+ const data = {};
97
+ core.setData(data, {
98
+ k: prop.value,
99
+ v: props.modelValue
100
+ });
101
+ return data;
102
+ });
103
+ const handleSetData = ({
104
+ v
105
+ }) => {
106
+ emit("update:modelValue", v);
107
+ };
108
+ const originValue = vue.ref(props.modelValue);
109
+ function handleEdit() {
110
+ originValue.value = props.modelValue;
111
+ editable.value = true;
112
+ vue.nextTick(() => {
113
+ const input = formItemContainerRef.value?.$el.querySelector("input, textarea");
114
+ if (input) {
115
+ input.focus();
116
+ }
117
+ });
118
+ }
119
+ function handleCheck() {
120
+ if (formItemRef.value?.validate) {
121
+ formItemRef.value.validate().then(() => {
122
+ editable.value = false;
123
+ }).catch(() => {
124
+ console.warn("Validation failed, editable text remains open.");
125
+ });
126
+ } else {
127
+ editable.value = false;
128
+ }
129
+ }
130
+ function handleCancel() {
131
+ emit("update:modelValue", originValue.value);
132
+ editable.value = false;
133
+ }
134
+ const __returned__ = {
135
+ props,
136
+ emit,
137
+ id,
138
+ editable,
139
+ prop,
140
+ formItemBindProps,
141
+ readonly,
142
+ formItemContainerRef,
143
+ formItemRef,
144
+ editSource,
145
+ rendererData: rendererData$1,
146
+ handleSetData,
147
+ originValue,
148
+ handleEdit,
149
+ handleCheck,
150
+ handleCancel,
151
+ get VkfFormItem() {
152
+ return formItem.VkfFormItem;
153
+ },
154
+ get ElText() {
155
+ return elementPlus.ElText;
156
+ },
157
+ get VkfFormItemRenderer() {
158
+ return formItemRenderer.VkfFormItemRenderer;
159
+ },
160
+ get VkfTemplatesDefault() {
161
+ return templatesDefault.VkfTemplatesDefault;
162
+ },
163
+ get VkfRendererData() {
164
+ return rendererData.VkfRendererData;
165
+ },
166
+ get VkAvatar() {
167
+ return avatar.VkAvatar;
168
+ },
169
+ get CloseBold() {
170
+ return index.close_bold_default;
171
+ },
172
+ get Select() {
173
+ return index.select_default;
174
+ }
175
+ };
176
+ Object.defineProperty(__returned__, "__isScriptSetup", {
177
+ enumerable: false,
178
+ value: true
179
+ });
180
+ return __returned__;
181
+ }
182
+ });
183
+
184
+ const _hoisted_1 = { class: "vkf-editable-text-actions" };
185
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
186
+ return $setup.readonly || !$setup.editable ? (vue.openBlock(), vue.createBlock(
187
+ $setup["VkfFormItem"],
188
+ vue.normalizeProps(vue.mergeProps({ key: 0 }, $setup.formItemBindProps)),
189
+ {
190
+ default: vue.withCtx(() => [
191
+ vue.renderSlot(_ctx.$slots, "text", { handleEdit: $setup.handleEdit }, () => [
192
+ vue.createVNode($setup["ElText"], { onDblclick: $setup.handleEdit }, {
193
+ default: vue.withCtx(() => [
194
+ vue.createTextVNode(
195
+ vue.toDisplayString(_ctx.modelValue),
196
+ 1
197
+ /* TEXT */
198
+ )
199
+ ]),
200
+ _: 1
201
+ /* STABLE */
202
+ })
203
+ ])
204
+ ]),
205
+ _: 3
206
+ /* FORWARDED */
207
+ },
208
+ 16
209
+ /* FULL_PROPS */
210
+ )) : (vue.openBlock(), vue.createBlock($setup["VkfRendererData"], {
211
+ key: 1,
212
+ data: $setup.rendererData,
213
+ onSetData: $setup.handleSetData
214
+ }, {
215
+ default: vue.withCtx(() => [
216
+ vue.createVNode(
217
+ $setup["VkfFormItem"],
218
+ { ref: "formItemContainerRef" },
219
+ {
220
+ default: vue.withCtx(() => [
221
+ vue.createVNode($setup["VkfFormItemRenderer"], { source: $setup.editSource }, {
222
+ placeholder: vue.withCtx(() => [
223
+ vue.createVNode($setup["VkfTemplatesDefault"])
224
+ ]),
225
+ _: 1
226
+ /* STABLE */
227
+ }, 8, ["source"]),
228
+ vue.createElementVNode("div", _hoisted_1, [
229
+ vue.createVNode($setup["VkAvatar"], {
230
+ icon: $setup.Select,
231
+ size: _ctx.iconSize,
232
+ color: "var(--el-color-primary)",
233
+ onClick: $setup.handleCheck
234
+ }, null, 8, ["icon", "size"]),
235
+ vue.createVNode($setup["VkAvatar"], {
236
+ icon: $setup.CloseBold,
237
+ size: _ctx.iconSize,
238
+ color: "var(--el-color-danger)",
239
+ onClick: $setup.handleCancel
240
+ }, null, 8, ["icon", "size"])
241
+ ])
242
+ ]),
243
+ _: 1
244
+ /* STABLE */
245
+ },
246
+ 512
247
+ /* NEED_PATCH */
248
+ )
249
+ ]),
250
+ _: 1
251
+ /* STABLE */
252
+ }, 8, ["data"]));
253
+ }
254
+ var VkfEditableText = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/private-vunk-form/private-vunk-form/packages/components/editable-text/src/index.vue"]]);
255
+
256
+ var types = /*#__PURE__*/Object.freeze({
257
+ __proto__: null
258
+ });
259
+
260
+ VkfEditableText.install = (app) => {
261
+ app.component(VkfEditableText.name || "VkfEditableText", VkfEditableText);
262
+ };
263
+
264
+ exports.VkfEditableText = VkfEditableText;
265
+ exports.__VkfEditableText = types;
266
+ exports.default = VkfEditableText;
@@ -0,0 +1,6 @@
1
+ .vkf-editable-text-actions{
2
+ display: flex;
3
+ }
4
+ .vkf-editable-text-actions .el-avatar {
5
+ cursor: pointer;
6
+ }
@@ -0,0 +1,4 @@
1
+ import VkfEditableText from './src/index.vue';
2
+ export * as __VkfEditableText from './src/types';
3
+ export { VkfEditableText, };
4
+ export default VkfEditableText;
@@ -0,0 +1,260 @@
1
+ import { defineComponent, useId, computed, ref, nextTick, openBlock, createBlock, normalizeProps, mergeProps, withCtx, renderSlot, createVNode, createTextVNode, toDisplayString, createElementVNode } from 'vue';
2
+ import { _VkfFormItemCtx, VkfFormItem } from '@vunk/form/components/form-item';
3
+ import { ElText } from 'element-plus';
4
+ import { useComputedReadonly } from '@vunk/form';
5
+ import { useModelComputed } from '@vunk/core/composables';
6
+ import { VkfFormItemRenderer } from '@vunk/form/components/form-item-renderer';
7
+ import { VkfTemplatesDefault } from '@vunk/form/components/templates-default';
8
+ import { VkfRendererData } from '@vunk/form/components/renderer-data';
9
+ import { setData } from '@vunk/core';
10
+ import { VkAvatar } from '@vunk/plus/components/avatar';
11
+ import { a as close_bold_default, s as select_default } from '../index2.mjs';
12
+ import { _ as _export_sfc } from '../_plugin-vue_export-helper.mjs';
13
+
14
+ const props = {
15
+ ..._VkfFormItemCtx.props,
16
+ /**
17
+ * @description model;
18
+ */
19
+ modelValue: null,
20
+ iconSize: {
21
+ type: Number,
22
+ default: 22
23
+ },
24
+ readonly: {
25
+ type: Boolean,
26
+ default: void 0
27
+ },
28
+ /**
29
+ * @description model; Whether the text is editable.
30
+ * @default false
31
+ */
32
+ editable: {
33
+ type: Boolean,
34
+ default: void 0
35
+ },
36
+ /**
37
+ * @description 编辑主体
38
+ * @default __VkfInput.Source
39
+ */
40
+ edit: {
41
+ type: Object,
42
+ default: void 0
43
+ }
44
+ };
45
+ const emits = {
46
+ "update:editable": null,
47
+ "update:modelValue": null
48
+ };
49
+
50
+ var _sfc_main = /* @__PURE__ */defineComponent({
51
+ ...{
52
+ name: "VkfEditableText"
53
+ },
54
+ __name: "index",
55
+ props: props,
56
+ emits,
57
+ setup(__props, {
58
+ expose: __expose,
59
+ emit: __emit
60
+ }) {
61
+ __expose();
62
+ const props = __props;
63
+ const emit = __emit;
64
+ const id = useId();
65
+ const editable = useModelComputed({
66
+ key: "editable",
67
+ default: false
68
+ }, props, emit);
69
+ const prop = computed(() => {
70
+ return props.prop ?? id;
71
+ });
72
+ const formItemBindProps = _VkfFormItemCtx.createBindProps(props, []);
73
+ const readonly = useComputedReadonly(props);
74
+ const formItemContainerRef = ref();
75
+ const formItemRef = ref();
76
+ const editSource = computed(() => {
77
+ const source = {
78
+ templateType: "VkfInput",
79
+ ...formItemBindProps.value,
80
+ inline: true,
81
+ onBlur: handleCheck,
82
+ ...props.edit,
83
+ prop: prop.value,
84
+ elRef: e => {
85
+ props.edit?.elRef?.(e);
86
+ formItemRef.value = e;
87
+ }
88
+ };
89
+ return [source];
90
+ });
91
+ const rendererData = computed(() => {
92
+ const data = {};
93
+ setData(data, {
94
+ k: prop.value,
95
+ v: props.modelValue
96
+ });
97
+ return data;
98
+ });
99
+ const handleSetData = ({
100
+ v
101
+ }) => {
102
+ emit("update:modelValue", v);
103
+ };
104
+ const originValue = ref(props.modelValue);
105
+ function handleEdit() {
106
+ originValue.value = props.modelValue;
107
+ editable.value = true;
108
+ nextTick(() => {
109
+ const input = formItemContainerRef.value?.$el.querySelector("input, textarea");
110
+ if (input) {
111
+ input.focus();
112
+ }
113
+ });
114
+ }
115
+ function handleCheck() {
116
+ if (formItemRef.value?.validate) {
117
+ formItemRef.value.validate().then(() => {
118
+ editable.value = false;
119
+ }).catch(() => {
120
+ console.warn("Validation failed, editable text remains open.");
121
+ });
122
+ } else {
123
+ editable.value = false;
124
+ }
125
+ }
126
+ function handleCancel() {
127
+ emit("update:modelValue", originValue.value);
128
+ editable.value = false;
129
+ }
130
+ const __returned__ = {
131
+ props,
132
+ emit,
133
+ id,
134
+ editable,
135
+ prop,
136
+ formItemBindProps,
137
+ readonly,
138
+ formItemContainerRef,
139
+ formItemRef,
140
+ editSource,
141
+ rendererData,
142
+ handleSetData,
143
+ originValue,
144
+ handleEdit,
145
+ handleCheck,
146
+ handleCancel,
147
+ get VkfFormItem() {
148
+ return VkfFormItem;
149
+ },
150
+ get ElText() {
151
+ return ElText;
152
+ },
153
+ get VkfFormItemRenderer() {
154
+ return VkfFormItemRenderer;
155
+ },
156
+ get VkfTemplatesDefault() {
157
+ return VkfTemplatesDefault;
158
+ },
159
+ get VkfRendererData() {
160
+ return VkfRendererData;
161
+ },
162
+ get VkAvatar() {
163
+ return VkAvatar;
164
+ },
165
+ get CloseBold() {
166
+ return close_bold_default;
167
+ },
168
+ get Select() {
169
+ return select_default;
170
+ }
171
+ };
172
+ Object.defineProperty(__returned__, "__isScriptSetup", {
173
+ enumerable: false,
174
+ value: true
175
+ });
176
+ return __returned__;
177
+ }
178
+ });
179
+
180
+ const _hoisted_1 = { class: "vkf-editable-text-actions" };
181
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
182
+ return $setup.readonly || !$setup.editable ? (openBlock(), createBlock(
183
+ $setup["VkfFormItem"],
184
+ normalizeProps(mergeProps({ key: 0 }, $setup.formItemBindProps)),
185
+ {
186
+ default: withCtx(() => [
187
+ renderSlot(_ctx.$slots, "text", { handleEdit: $setup.handleEdit }, () => [
188
+ createVNode($setup["ElText"], { onDblclick: $setup.handleEdit }, {
189
+ default: withCtx(() => [
190
+ createTextVNode(
191
+ toDisplayString(_ctx.modelValue),
192
+ 1
193
+ /* TEXT */
194
+ )
195
+ ]),
196
+ _: 1
197
+ /* STABLE */
198
+ })
199
+ ])
200
+ ]),
201
+ _: 3
202
+ /* FORWARDED */
203
+ },
204
+ 16
205
+ /* FULL_PROPS */
206
+ )) : (openBlock(), createBlock($setup["VkfRendererData"], {
207
+ key: 1,
208
+ data: $setup.rendererData,
209
+ onSetData: $setup.handleSetData
210
+ }, {
211
+ default: withCtx(() => [
212
+ createVNode(
213
+ $setup["VkfFormItem"],
214
+ { ref: "formItemContainerRef" },
215
+ {
216
+ default: withCtx(() => [
217
+ createVNode($setup["VkfFormItemRenderer"], { source: $setup.editSource }, {
218
+ placeholder: withCtx(() => [
219
+ createVNode($setup["VkfTemplatesDefault"])
220
+ ]),
221
+ _: 1
222
+ /* STABLE */
223
+ }, 8, ["source"]),
224
+ createElementVNode("div", _hoisted_1, [
225
+ createVNode($setup["VkAvatar"], {
226
+ icon: $setup.Select,
227
+ size: _ctx.iconSize,
228
+ color: "var(--el-color-primary)",
229
+ onClick: $setup.handleCheck
230
+ }, null, 8, ["icon", "size"]),
231
+ createVNode($setup["VkAvatar"], {
232
+ icon: $setup.CloseBold,
233
+ size: _ctx.iconSize,
234
+ color: "var(--el-color-danger)",
235
+ onClick: $setup.handleCancel
236
+ }, null, 8, ["icon", "size"])
237
+ ])
238
+ ]),
239
+ _: 1
240
+ /* STABLE */
241
+ },
242
+ 512
243
+ /* NEED_PATCH */
244
+ )
245
+ ]),
246
+ _: 1
247
+ /* STABLE */
248
+ }, 8, ["data"]));
249
+ }
250
+ var VkfEditableText = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/private-vunk-form/private-vunk-form/packages/components/editable-text/src/index.vue"]]);
251
+
252
+ var types = /*#__PURE__*/Object.freeze({
253
+ __proto__: null
254
+ });
255
+
256
+ VkfEditableText.install = (app) => {
257
+ app.component(VkfEditableText.name || "VkfEditableText", VkfEditableText);
258
+ };
259
+
260
+ export { VkfEditableText, types as __VkfEditableText, VkfEditableText as default };
@@ -0,0 +1,89 @@
1
+ export declare const props: {
2
+ /**
3
+ * @description model;
4
+ */
5
+ modelValue: any;
6
+ iconSize: {
7
+ type: NumberConstructor;
8
+ default: number;
9
+ };
10
+ readonly: {
11
+ type: BooleanConstructor;
12
+ default: any;
13
+ };
14
+ /**
15
+ * @description model; Whether the text is editable.
16
+ * @default false
17
+ */
18
+ editable: {
19
+ type: BooleanConstructor;
20
+ default: any;
21
+ };
22
+ /**
23
+ * @description 编辑主体
24
+ * @default __VkfInput.Source
25
+ */
26
+ edit: {
27
+ type: ObjectConstructor;
28
+ default: any;
29
+ };
30
+ required: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
31
+ formItemSize: {
32
+ type: import("vue").PropType<"default" | "small" | "large">;
33
+ default: "default" | "small" | "large";
34
+ };
35
+ formItemSlots: {
36
+ type: import("vue").PropType<import("@vunk/form/components/form-item/src/types").FormItemSlots>;
37
+ default: any;
38
+ };
39
+ elRef: {
40
+ type: import("vue").PropType<any>;
41
+ required: boolean;
42
+ };
43
+ inline: {
44
+ type: BooleanConstructor;
45
+ default: boolean;
46
+ };
47
+ formItemTip: {
48
+ type: StringConstructor;
49
+ default: any;
50
+ };
51
+ formItemTipClass: any;
52
+ labelTip: {
53
+ type: StringConstructor;
54
+ default: any;
55
+ };
56
+ information: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
60
+ label: StringConstructor;
61
+ labelWidth: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
62
+ labelPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "top" | "left" | "right", unknown, "", boolean>;
63
+ prop: {
64
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | string[]) | (() => import("element-plus").FormItemProp) | ((new (...args: any[]) => string | string[]) | (() => import("element-plus").FormItemProp))[], unknown, unknown>>;
65
+ readonly required: false;
66
+ readonly validator: ((val: unknown) => boolean) | undefined;
67
+ __epPropKey: true;
68
+ };
69
+ rules: {
70
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("element-plus").FormItemRule | import("element-plus").FormItemRule[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus").FormItemRule>) | ((new (...args: any[]) => import("element-plus").FormItemRule | import("element-plus").FormItemRule[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus").FormItemRule>))[], unknown, unknown>>;
71
+ readonly required: false;
72
+ readonly validator: ((val: unknown) => boolean) | undefined;
73
+ __epPropKey: true;
74
+ };
75
+ error: StringConstructor;
76
+ validateStatus: {
77
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "error" | "success" | "validating", unknown>>;
78
+ readonly required: false;
79
+ readonly validator: ((val: unknown) => boolean) | undefined;
80
+ __epPropKey: true;
81
+ };
82
+ for: StringConstructor;
83
+ inlineMessage: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, BooleanConstructor], unknown, unknown, "", boolean>;
84
+ showMessage: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
85
+ };
86
+ export declare const emits: {
87
+ 'update:editable': any;
88
+ 'update:modelValue': any;
89
+ };