@tmagic/form 1.7.7 → 1.7.8-beta.2
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.
- package/LICENSE +235 -164
- package/dist/es/Form.js +5 -0
- package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +234 -0
- package/dist/es/FormBox.js +5 -0
- package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/es/FormDialog.js +5 -0
- package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +222 -0
- package/dist/es/FormDrawer.js +5 -0
- package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +176 -0
- package/dist/es/_virtual/_rolldown/runtime.js +27 -0
- package/dist/es/containers/Col.js +5 -0
- package/dist/es/containers/Col.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/es/containers/Container.js +5 -0
- package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +438 -0
- package/dist/es/containers/Fieldset.js +5 -0
- package/dist/es/containers/Fieldset.vue_vue_type_script_setup_true_lang.js +153 -0
- package/dist/es/containers/FlexLayout.js +5 -0
- package/dist/es/containers/FlexLayout.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/es/containers/FormLabel.js +5 -0
- package/dist/es/containers/FormLabel.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/es/containers/GroupList.js +5 -0
- package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/es/containers/GroupListItem.js +5 -0
- package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +221 -0
- package/dist/es/containers/Panel.js +5 -0
- package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/es/containers/Row.js +5 -0
- package/dist/es/containers/Row.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/es/containers/Step.js +5 -0
- package/dist/es/containers/Step.vue_vue_type_script_setup_true_lang.js +85 -0
- package/dist/es/containers/Tabs.js +5 -0
- package/dist/es/containers/Tabs.vue_vue_type_script_setup_true_lang.js +194 -0
- package/dist/es/fields/Cascader.js +5 -0
- package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/es/fields/Checkbox.js +5 -0
- package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/es/fields/CheckboxGroup.js +5 -0
- package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/es/fields/ColorPicker.js +5 -0
- package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/es/fields/Date.js +5 -0
- package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/es/fields/DateTime.js +5 -0
- package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/es/fields/Daterange.js +5 -0
- package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/es/fields/Display.js +5 -0
- package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/es/fields/DynamicField.js +5 -0
- package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/es/fields/Hidden.js +5 -0
- package/dist/es/fields/Hidden.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/es/fields/Link.js +5 -0
- package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/es/fields/Number.js +5 -0
- package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/es/fields/NumberRange.js +5 -0
- package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/es/fields/RadioGroup.js +5 -0
- package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/es/fields/Select.js +5 -0
- package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +337 -0
- package/dist/es/fields/Switch.js +5 -0
- package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/es/fields/Text.js +5 -0
- package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +215 -0
- package/dist/es/fields/Textarea.js +5 -0
- package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/es/fields/Time.js +5 -0
- package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/es/fields/Timerange.js +5 -0
- package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/es/index.js +41 -0
- package/dist/es/plugin.js +74 -0
- package/dist/es/schema.js +2 -0
- package/dist/es/style.css +325 -0
- package/dist/es/table/ActionsColumn.js +5 -0
- package/dist/es/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/es/table/SortColumn.js +5 -0
- package/dist/es/table/SortColumn.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/es/table/Table.js +5 -0
- package/dist/es/table/Table.vue_vue_type_script_setup_true_lang.js +232 -0
- package/dist/es/table/useAdd.js +71 -0
- package/dist/es/table/useFullscreen.js +15 -0
- package/dist/es/table/useImport.js +46 -0
- package/dist/es/table/usePagination.js +26 -0
- package/dist/es/table/useSelection.js +26 -0
- package/dist/es/table/useSortable.js +39 -0
- package/dist/es/table/useTableColumns.js +160 -0
- package/dist/es/utils/config.js +15 -0
- package/dist/es/utils/form.js +174 -0
- package/dist/es/utils/useAddField.js +13 -0
- package/dist/style.css +1 -1
- package/dist/tmagic-form.umd.cjs +7696 -8924
- package/package.json +7 -6
- package/src/Form.vue +2 -2
- package/src/containers/Container.vue +25 -20
- package/src/containers/GroupListItem.vue +3 -1
- package/src/fields/Hidden.vue +6 -2
- package/src/fields/RadioGroup.vue +1 -1
- package/src/fields/Timerange.vue +2 -2
- package/src/index.ts +8 -82
- package/src/plugin.ts +102 -0
- package/src/table/useSortable.ts +8 -4
- package/src/utils/config.ts +16 -1
- package/src/utils/form.ts +10 -7
- package/types/index.d.ts +1265 -1227
- package/dist/tmagic-form.js +0 -5940
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
2
|
+
import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, inject, openBlock, readonly, ref, shallowRef, toDisplayString, unref, watch, withCtx, withModifiers } from "vue";
|
|
3
|
+
import { debounce } from "lodash-es";
|
|
4
|
+
import { isNumber } from "@tmagic/utils";
|
|
5
|
+
import { TMagicButton, TMagicInput } from "@tmagic/design";
|
|
6
|
+
import { createPopper } from "@popperjs/core";
|
|
7
|
+
//#region packages/form/src/fields/Text.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var _hoisted_1 = { class: "m-fields-text" };
|
|
9
|
+
var _hoisted_2 = { key: 1 };
|
|
10
|
+
var _hoisted_3 = { style: {
|
|
11
|
+
"display": "flex",
|
|
12
|
+
"justify-content": "flex-end"
|
|
13
|
+
} };
|
|
14
|
+
var Text_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
15
|
+
name: "MFormText",
|
|
16
|
+
__name: "Text",
|
|
17
|
+
props: {
|
|
18
|
+
config: {},
|
|
19
|
+
model: {},
|
|
20
|
+
initValues: {},
|
|
21
|
+
values: {},
|
|
22
|
+
name: {},
|
|
23
|
+
prop: {},
|
|
24
|
+
disabled: { type: Boolean },
|
|
25
|
+
size: {},
|
|
26
|
+
lastValues: {},
|
|
27
|
+
isCompare: { type: Boolean }
|
|
28
|
+
},
|
|
29
|
+
emits: ["change", "input"],
|
|
30
|
+
setup(__props, { emit: __emit }) {
|
|
31
|
+
const props = __props;
|
|
32
|
+
const emit = __emit;
|
|
33
|
+
useAddField(props.prop);
|
|
34
|
+
const mForm = inject("mForm");
|
|
35
|
+
const value = ref("");
|
|
36
|
+
watch(() => props.model[props.name], (v) => {
|
|
37
|
+
value.value = v;
|
|
38
|
+
}, { immediate: true });
|
|
39
|
+
const appendConfig = computed(() => {
|
|
40
|
+
if (typeof props.config.append === "string") return {
|
|
41
|
+
type: "text",
|
|
42
|
+
text: props.config.append,
|
|
43
|
+
handler: void 0
|
|
44
|
+
};
|
|
45
|
+
if (typeof props.config.append === "object") {
|
|
46
|
+
if (typeof props.config.append?.handler === "function") return {
|
|
47
|
+
type: "button",
|
|
48
|
+
text: props.config.append.text,
|
|
49
|
+
handler: props.config.append.handler
|
|
50
|
+
};
|
|
51
|
+
if (props.config.append) {
|
|
52
|
+
if (props.config.append.value === 0) return false;
|
|
53
|
+
return props.config.append;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
});
|
|
58
|
+
const popoverVisible = ref(false);
|
|
59
|
+
const confirmTrimHandler = () => {
|
|
60
|
+
emit("change", props.model[props.name].trim() || "");
|
|
61
|
+
popoverVisible.value = false;
|
|
62
|
+
};
|
|
63
|
+
const checkWhiteSpace = debounce((value) => {
|
|
64
|
+
if (typeof value === "string" && !props.config.trim) popoverVisible.value = value.trim() !== value;
|
|
65
|
+
}, 300);
|
|
66
|
+
const changeHandler = (value) => {
|
|
67
|
+
emit("change", value);
|
|
68
|
+
};
|
|
69
|
+
const inputHandler = (v) => {
|
|
70
|
+
checkWhiteSpace(v);
|
|
71
|
+
emit("input", v);
|
|
72
|
+
mForm?.$emit("field-input", props.prop, v);
|
|
73
|
+
};
|
|
74
|
+
const buttonClickHandler = () => {
|
|
75
|
+
if (!appendConfig.value) return;
|
|
76
|
+
if (typeof appendConfig.value.handler === "function") {
|
|
77
|
+
const newChangeRecords = [];
|
|
78
|
+
const setModel = (key, value) => {
|
|
79
|
+
newChangeRecords.push({
|
|
80
|
+
propPath: props.prop.replace(`${props.name}`, key),
|
|
81
|
+
value
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
const setFormValue = (key, value) => {
|
|
85
|
+
newChangeRecords.push({
|
|
86
|
+
propPath: key,
|
|
87
|
+
value
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
appendConfig.value.handler(mForm, {
|
|
91
|
+
model: props.model,
|
|
92
|
+
values: mForm ? readonly(mForm.initValues) : null,
|
|
93
|
+
formValue: props.values || {},
|
|
94
|
+
setModel,
|
|
95
|
+
setFormValue
|
|
96
|
+
});
|
|
97
|
+
if (newChangeRecords.length > 0) emit("change", props.model[props.name], { changeRecords: newChangeRecords });
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const keyUpHandler = ($event) => {
|
|
101
|
+
if (!props.model) return;
|
|
102
|
+
if (!props.name) return;
|
|
103
|
+
const arrowUp = $event.key === "ArrowUp";
|
|
104
|
+
const arrowDown = $event.key === "ArrowDown";
|
|
105
|
+
if (!arrowUp && !arrowDown) return;
|
|
106
|
+
const value = props.model[props.name];
|
|
107
|
+
let num;
|
|
108
|
+
let unit;
|
|
109
|
+
if (isNumber(value)) num = +value;
|
|
110
|
+
else value.replace(/^([0-9.]+)([a-z%]+)$/, ($0, $1, $2) => {
|
|
111
|
+
num = +$1;
|
|
112
|
+
unit = $2;
|
|
113
|
+
});
|
|
114
|
+
if (num === void 0) return;
|
|
115
|
+
const ctrl = navigator.platform.match("Mac") ? $event.metaKey : $event.ctrlKey;
|
|
116
|
+
const shift = $event.shiftKey;
|
|
117
|
+
const alt = $event.altKey;
|
|
118
|
+
if (arrowUp) if (ctrl) num += 100;
|
|
119
|
+
else if (alt) num = (num * 1e4 + 1e3) / 1e4;
|
|
120
|
+
else if (shift) num = num + 10;
|
|
121
|
+
else num += 1;
|
|
122
|
+
else if (arrowDown) if (ctrl) num -= 100;
|
|
123
|
+
else if (alt) num = (num * 1e4 - 1e3) / 1e4;
|
|
124
|
+
else if (shift) num -= 10;
|
|
125
|
+
else num -= 1;
|
|
126
|
+
props.model[props.name] = `${num}${unit || ""}`;
|
|
127
|
+
emit("change", props.model[props.name]);
|
|
128
|
+
};
|
|
129
|
+
const popoverEl = ref();
|
|
130
|
+
const input = ref();
|
|
131
|
+
const instanceRef = shallowRef();
|
|
132
|
+
watch(popoverEl, (el) => {
|
|
133
|
+
destroyPopover();
|
|
134
|
+
if (!input.value?.$el || !el) return;
|
|
135
|
+
instanceRef.value = createPopper(input.value.$el, el, {
|
|
136
|
+
placement: props.config.tooltip ? "top" : "bottom",
|
|
137
|
+
strategy: "absolute",
|
|
138
|
+
modifiers: [{
|
|
139
|
+
name: "offset",
|
|
140
|
+
options: { offset: [0, 10] }
|
|
141
|
+
}]
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
const destroyPopover = () => {
|
|
145
|
+
if (!instanceRef.value) return;
|
|
146
|
+
instanceRef.value.destroy();
|
|
147
|
+
instanceRef.value = void 0;
|
|
148
|
+
};
|
|
149
|
+
return (_ctx, _cache) => {
|
|
150
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(TMagicInput), {
|
|
151
|
+
modelValue: value.value,
|
|
152
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
153
|
+
ref_key: "input",
|
|
154
|
+
ref: input,
|
|
155
|
+
clearable: __props.config.clearable ?? true,
|
|
156
|
+
size: __props.size,
|
|
157
|
+
placeholder: __props.config.placeholder,
|
|
158
|
+
disabled: __props.disabled,
|
|
159
|
+
onChange: changeHandler,
|
|
160
|
+
onInput: inputHandler,
|
|
161
|
+
onKeyup: _cache[1] || (_cache[1] = ($event) => keyUpHandler($event))
|
|
162
|
+
}, createSlots({ _: 2 }, [__props.config.prepend ? {
|
|
163
|
+
name: "prepend",
|
|
164
|
+
fn: withCtx(() => [createElementVNode("span", null, toDisplayString(__props.config.prepend), 1)]),
|
|
165
|
+
key: "0"
|
|
166
|
+
} : void 0, appendConfig.value ? {
|
|
167
|
+
name: "append",
|
|
168
|
+
fn: withCtx(() => [appendConfig.value.type === "button" ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
169
|
+
key: 0,
|
|
170
|
+
style: { "color": "#409eff" },
|
|
171
|
+
size: __props.size,
|
|
172
|
+
onClick: withModifiers(buttonClickHandler, ["prevent"])
|
|
173
|
+
}, {
|
|
174
|
+
default: withCtx(() => [createTextVNode(toDisplayString(appendConfig.value.text), 1)]),
|
|
175
|
+
_: 1
|
|
176
|
+
}, 8, ["size"])) : (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(appendConfig.value.text), 1))]),
|
|
177
|
+
key: "1"
|
|
178
|
+
} : void 0]), 1032, [
|
|
179
|
+
"modelValue",
|
|
180
|
+
"clearable",
|
|
181
|
+
"size",
|
|
182
|
+
"placeholder",
|
|
183
|
+
"disabled"
|
|
184
|
+
]), (openBlock(), createBlock(Teleport, { to: "body" }, [popoverVisible.value ? (openBlock(), createElementBlock("div", {
|
|
185
|
+
key: 0,
|
|
186
|
+
class: "tmagic-form-text-popper m-form-item__content",
|
|
187
|
+
ref_key: "popoverEl",
|
|
188
|
+
ref: popoverEl
|
|
189
|
+
}, [
|
|
190
|
+
_cache[5] || (_cache[5] = createElementVNode("div", { class: "m-form-validate__warning" }, "输入内容前后有空格,是否移除空格?", -1)),
|
|
191
|
+
createElementVNode("div", _hoisted_3, [createVNode(unref(TMagicButton), {
|
|
192
|
+
link: "",
|
|
193
|
+
size: "small",
|
|
194
|
+
onClick: _cache[2] || (_cache[2] = ($event) => popoverVisible.value = false)
|
|
195
|
+
}, {
|
|
196
|
+
default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode("保持原样", -1)])]),
|
|
197
|
+
_: 1
|
|
198
|
+
}), createVNode(unref(TMagicButton), {
|
|
199
|
+
type: "primary",
|
|
200
|
+
size: "small",
|
|
201
|
+
onClick: confirmTrimHandler
|
|
202
|
+
}, {
|
|
203
|
+
default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("移除空格", -1)])]),
|
|
204
|
+
_: 1
|
|
205
|
+
})]),
|
|
206
|
+
_cache[6] || (_cache[6] = createElementVNode("span", {
|
|
207
|
+
class: "tmagic-form-text-popper-arrow",
|
|
208
|
+
"data-popper-arrow": ""
|
|
209
|
+
}, null, -1))
|
|
210
|
+
], 512)) : createCommentVNode("v-if", true)]))]);
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
//#endregion
|
|
215
|
+
export { Text_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Textarea_vue_vue_type_script_setup_true_lang_default from "./Textarea.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Textarea.vue
|
|
3
|
+
var Textarea_default = Textarea_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Textarea_default as default };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
2
|
+
import { createBlock, defineComponent, inject, openBlock, ref, unref, watch } from "vue";
|
|
3
|
+
import { TMagicInput } from "@tmagic/design";
|
|
4
|
+
//#region packages/form/src/fields/Textarea.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var Textarea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "MFormTextarea",
|
|
7
|
+
__name: "Textarea",
|
|
8
|
+
props: {
|
|
9
|
+
config: {},
|
|
10
|
+
model: {},
|
|
11
|
+
initValues: {},
|
|
12
|
+
values: {},
|
|
13
|
+
name: {},
|
|
14
|
+
prop: {},
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
size: {},
|
|
17
|
+
lastValues: {},
|
|
18
|
+
isCompare: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["change", "input"],
|
|
21
|
+
setup(__props, { emit: __emit }) {
|
|
22
|
+
const props = __props;
|
|
23
|
+
const emit = __emit;
|
|
24
|
+
const value = ref("");
|
|
25
|
+
watch(() => props.model[props.name], (v) => {
|
|
26
|
+
value.value = v;
|
|
27
|
+
}, { immediate: true });
|
|
28
|
+
useAddField(props.prop);
|
|
29
|
+
const mForm = inject("mForm");
|
|
30
|
+
const changeHandler = (value) => {
|
|
31
|
+
emit("change", value);
|
|
32
|
+
};
|
|
33
|
+
const inputHandler = (v) => {
|
|
34
|
+
emit("input", v);
|
|
35
|
+
mForm?.$emit("field-input", props.prop, v);
|
|
36
|
+
};
|
|
37
|
+
return (_ctx, _cache) => {
|
|
38
|
+
return openBlock(), createBlock(unref(TMagicInput), {
|
|
39
|
+
modelValue: value.value,
|
|
40
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
41
|
+
type: "textarea",
|
|
42
|
+
size: __props.size,
|
|
43
|
+
clearable: "",
|
|
44
|
+
placeholder: __props.config.placeholder,
|
|
45
|
+
disabled: __props.disabled,
|
|
46
|
+
rows: __props.config.rows,
|
|
47
|
+
onChange: changeHandler,
|
|
48
|
+
onInput: inputHandler
|
|
49
|
+
}, null, 8, [
|
|
50
|
+
"modelValue",
|
|
51
|
+
"size",
|
|
52
|
+
"placeholder",
|
|
53
|
+
"disabled",
|
|
54
|
+
"rows"
|
|
55
|
+
]);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
//#endregion
|
|
60
|
+
export { Textarea_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Time_vue_vue_type_script_setup_true_lang_default from "./Time.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Time.vue
|
|
3
|
+
var Time_default = Time_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Time_default as default };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
2
|
+
import { createBlock, defineComponent, openBlock, unref } from "vue";
|
|
3
|
+
import { TMagicTimePicker } from "@tmagic/design";
|
|
4
|
+
//#region packages/form/src/fields/Time.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var Time_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "MFormTime",
|
|
7
|
+
__name: "Time",
|
|
8
|
+
props: {
|
|
9
|
+
config: {},
|
|
10
|
+
model: {},
|
|
11
|
+
initValues: {},
|
|
12
|
+
values: {},
|
|
13
|
+
name: {},
|
|
14
|
+
prop: {},
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
size: {},
|
|
17
|
+
lastValues: {},
|
|
18
|
+
isCompare: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["change"],
|
|
21
|
+
setup(__props, { emit: __emit }) {
|
|
22
|
+
const props = __props;
|
|
23
|
+
const emit = __emit;
|
|
24
|
+
useAddField(props.prop);
|
|
25
|
+
const changeHandler = (v) => {
|
|
26
|
+
emit("change", v);
|
|
27
|
+
};
|
|
28
|
+
return (_ctx, _cache) => {
|
|
29
|
+
return openBlock(), createBlock(unref(TMagicTimePicker), {
|
|
30
|
+
"model-value": __props.model[__props.name],
|
|
31
|
+
"value-format": __props.config.valueFormat || "HH:mm:ss",
|
|
32
|
+
format: __props.config.format || "HH:mm:ss",
|
|
33
|
+
size: __props.size,
|
|
34
|
+
placeholder: __props.config.placeholder,
|
|
35
|
+
disabled: __props.disabled,
|
|
36
|
+
"onUpdate:modelValue": changeHandler
|
|
37
|
+
}, null, 8, [
|
|
38
|
+
"model-value",
|
|
39
|
+
"value-format",
|
|
40
|
+
"format",
|
|
41
|
+
"size",
|
|
42
|
+
"placeholder",
|
|
43
|
+
"disabled"
|
|
44
|
+
]);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//#endregion
|
|
49
|
+
export { Time_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Timerange_vue_vue_type_script_setup_true_lang_default from "./Timerange.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Timerange.vue
|
|
3
|
+
var Timerange_default = Timerange_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Timerange_default as default };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { datetimeFormatter } from "../utils/form.js";
|
|
2
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
3
|
+
import { createBlock, defineComponent, onUnmounted, openBlock, ref, unref, watch } from "vue";
|
|
4
|
+
import dayjs from "dayjs";
|
|
5
|
+
import { TMagicTimePicker } from "@tmagic/design";
|
|
6
|
+
//#region packages/form/src/fields/Timerange.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var Timerange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
name: "MFormTimeRange",
|
|
9
|
+
__name: "Timerange",
|
|
10
|
+
props: {
|
|
11
|
+
config: {},
|
|
12
|
+
model: {},
|
|
13
|
+
initValues: {},
|
|
14
|
+
values: {},
|
|
15
|
+
name: {},
|
|
16
|
+
prop: {},
|
|
17
|
+
disabled: { type: Boolean },
|
|
18
|
+
size: {},
|
|
19
|
+
lastValues: {},
|
|
20
|
+
isCompare: { type: Boolean }
|
|
21
|
+
},
|
|
22
|
+
emits: ["change"],
|
|
23
|
+
setup(__props, { emit: __emit }) {
|
|
24
|
+
const props = __props;
|
|
25
|
+
const emit = __emit;
|
|
26
|
+
useAddField(props.prop);
|
|
27
|
+
const { names } = props.config;
|
|
28
|
+
const value = ref([]);
|
|
29
|
+
const getFullDatetime = (item) => item ? `${dayjs().format("YYYY/MM/DD")} ${item}` : "";
|
|
30
|
+
const getFormat = () => `YYYY/MM/DD ${props.config.valueFormat || "HH:mm:ss"}`;
|
|
31
|
+
const timeFormatter = (time, format) => datetimeFormatter(getFullDatetime(time), "", format).substring(11);
|
|
32
|
+
if (props.model !== void 0) {
|
|
33
|
+
if (names?.length) {
|
|
34
|
+
const unWatch = watch([() => props.model[names[0]], () => props.model[names[1]]], ([start, end], [preStart, preEnd]) => {
|
|
35
|
+
if (!value.value) value.value = [];
|
|
36
|
+
const format = getFormat();
|
|
37
|
+
if (!start || !end) value.value = [];
|
|
38
|
+
if (start !== preStart) value.value[0] = timeFormatter(start, format);
|
|
39
|
+
if (end !== preEnd) value.value[1] = timeFormatter(end, format);
|
|
40
|
+
}, { immediate: true });
|
|
41
|
+
onUnmounted(() => {
|
|
42
|
+
unWatch();
|
|
43
|
+
});
|
|
44
|
+
} else if (props.name) {
|
|
45
|
+
const unWatch = watch(() => props.model[props.name], (v = []) => {
|
|
46
|
+
if (Array.isArray(v)) value.value = v.map((item) => item ? timeFormatter(item, getFormat()) : void 0);
|
|
47
|
+
else value.value = [];
|
|
48
|
+
}, { immediate: true });
|
|
49
|
+
onUnmounted(() => {
|
|
50
|
+
unWatch();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const changeHandler = (v) => {
|
|
55
|
+
const value = v || [];
|
|
56
|
+
if (props.name) emit("change", value);
|
|
57
|
+
else if (props.config.names?.length) {
|
|
58
|
+
const newChangeRecords = [];
|
|
59
|
+
props.config.names.forEach((item, index) => {
|
|
60
|
+
if (!props.model) return;
|
|
61
|
+
if (Array.isArray(v)) newChangeRecords.push({
|
|
62
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
63
|
+
value: v[index]
|
|
64
|
+
});
|
|
65
|
+
else newChangeRecords.push({
|
|
66
|
+
propPath: props.prop ? `${props.prop}.${item}` : item,
|
|
67
|
+
value: void 0
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
emit("change", props.model, { changeRecords: newChangeRecords });
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return (_ctx, _cache) => {
|
|
74
|
+
return openBlock(), createBlock(unref(TMagicTimePicker), {
|
|
75
|
+
modelValue: value.value,
|
|
76
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
77
|
+
"is-range": "",
|
|
78
|
+
"range-separator": "-",
|
|
79
|
+
"start-placeholder": "开始时间",
|
|
80
|
+
"end-placeholder": "结束时间",
|
|
81
|
+
size: __props.size,
|
|
82
|
+
"unlink-panels": true,
|
|
83
|
+
disabled: __props.disabled,
|
|
84
|
+
"default-time": __props.config.defaultTime,
|
|
85
|
+
format: __props.config.format || "HH:mm:ss",
|
|
86
|
+
"value-format": __props.config.valueFormat || "HH:mm:ss",
|
|
87
|
+
onChange: changeHandler
|
|
88
|
+
}, null, 8, [
|
|
89
|
+
"modelValue",
|
|
90
|
+
"size",
|
|
91
|
+
"disabled",
|
|
92
|
+
"default-time",
|
|
93
|
+
"format",
|
|
94
|
+
"value-format"
|
|
95
|
+
]);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
//#endregion
|
|
100
|
+
export { Timerange_vue_vue_type_script_setup_true_lang_default as default };
|
package/dist/es/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { createObjectProp, createValues, datetimeFormatter, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange } from "./utils/form.js";
|
|
3
|
+
import { useAddField } from "./utils/useAddField.js";
|
|
4
|
+
import Hidden_default from "./fields/Hidden.js";
|
|
5
|
+
import { deleteField, getField, registerField } from "./utils/config.js";
|
|
6
|
+
import Container_default from "./containers/Container.js";
|
|
7
|
+
import Form_default from "./Form.js";
|
|
8
|
+
import FormDialog_default from "./FormDialog.js";
|
|
9
|
+
import FormDrawer_default from "./FormDrawer.js";
|
|
10
|
+
import FormBox_default from "./FormBox.js";
|
|
11
|
+
import Fieldset_default from "./containers/Fieldset.js";
|
|
12
|
+
import FlexLayout_default from "./containers/FlexLayout.js";
|
|
13
|
+
import Panel_default from "./containers/Panel.js";
|
|
14
|
+
import Row_default from "./containers/Row.js";
|
|
15
|
+
import Tabs_default from "./containers/Tabs.js";
|
|
16
|
+
import Table_default from "./table/Table.js";
|
|
17
|
+
import GroupList_default from "./containers/GroupList.js";
|
|
18
|
+
import Text_default from "./fields/Text.js";
|
|
19
|
+
import Number_default from "./fields/Number.js";
|
|
20
|
+
import NumberRange_default from "./fields/NumberRange.js";
|
|
21
|
+
import Textarea_default from "./fields/Textarea.js";
|
|
22
|
+
import Date_default from "./fields/Date.js";
|
|
23
|
+
import DateTime_default from "./fields/DateTime.js";
|
|
24
|
+
import Time_default from "./fields/Time.js";
|
|
25
|
+
import Checkbox_default from "./fields/Checkbox.js";
|
|
26
|
+
import Switch_default from "./fields/Switch.js";
|
|
27
|
+
import Daterange_default from "./fields/Daterange.js";
|
|
28
|
+
import Timerange_default from "./fields/Timerange.js";
|
|
29
|
+
import ColorPicker_default from "./fields/ColorPicker.js";
|
|
30
|
+
import CheckboxGroup_default from "./fields/CheckboxGroup.js";
|
|
31
|
+
import RadioGroup_default from "./fields/RadioGroup.js";
|
|
32
|
+
import Display_default from "./fields/Display.js";
|
|
33
|
+
import Link_default from "./fields/Link.js";
|
|
34
|
+
import Select_default from "./fields/Select.js";
|
|
35
|
+
import Cascader_default from "./fields/Cascader.js";
|
|
36
|
+
import DynamicField_default from "./fields/DynamicField.js";
|
|
37
|
+
import plugin_default from "./plugin.js";
|
|
38
|
+
export * from "@tmagic/form-schema";
|
|
39
|
+
var createForm = (config) => config;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { Cascader_default as MCascader, Checkbox_default as MCheckbox, CheckboxGroup_default as MCheckboxGroup, ColorPicker_default as MColorPicker, Container_default as MContainer, Date_default as MDate, DateTime_default as MDateTime, Daterange_default as MDaterange, Display_default as MDisplay, DynamicField_default as MDynamicField, Fieldset_default as MFieldset, FlexLayout_default as MFlexLayout, Form_default as MForm, FormBox_default as MFormBox, FormDialog_default as MFormDialog, FormDrawer_default as MFormDrawer, GroupList_default as MGroupList, Hidden_default as MHidden, Link_default as MLink, Number_default as MNumber, NumberRange_default as MNumberRange, Panel_default as MPanel, RadioGroup_default as MRadioGroup, Row_default as MRow, Select_default as MSelect, Switch_default as MSwitch, Table_default as MTable, Tabs_default as MTabs, Text_default as MText, Textarea_default as MTextarea, Time_default as MTime, Timerange_default as MTimerange, createForm, createObjectProp, createValues, datetimeFormatter, plugin_default as default, deleteField as deleteFormField, display, filterFunction, getDataByPage, getField as getFormField, getRules, initValue, registerField as registerFormField, sortArray, sortChange, useAddField };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import Hidden_default from "./fields/Hidden.js";
|
|
2
|
+
import { setConfig } from "./utils/config.js";
|
|
3
|
+
import Container_default from "./containers/Container.js";
|
|
4
|
+
import Form_default from "./Form.js";
|
|
5
|
+
import FormDialog_default from "./FormDialog.js";
|
|
6
|
+
import Fieldset_default from "./containers/Fieldset.js";
|
|
7
|
+
import FlexLayout_default from "./containers/FlexLayout.js";
|
|
8
|
+
import Panel_default from "./containers/Panel.js";
|
|
9
|
+
import Row_default from "./containers/Row.js";
|
|
10
|
+
import Tabs_default from "./containers/Tabs.js";
|
|
11
|
+
import Table_default from "./table/Table.js";
|
|
12
|
+
import GroupList_default from "./containers/GroupList.js";
|
|
13
|
+
import Text_default from "./fields/Text.js";
|
|
14
|
+
import Number_default from "./fields/Number.js";
|
|
15
|
+
import NumberRange_default from "./fields/NumberRange.js";
|
|
16
|
+
import Textarea_default from "./fields/Textarea.js";
|
|
17
|
+
import Date_default from "./fields/Date.js";
|
|
18
|
+
import DateTime_default from "./fields/DateTime.js";
|
|
19
|
+
import Time_default from "./fields/Time.js";
|
|
20
|
+
import Checkbox_default from "./fields/Checkbox.js";
|
|
21
|
+
import Switch_default from "./fields/Switch.js";
|
|
22
|
+
import Daterange_default from "./fields/Daterange.js";
|
|
23
|
+
import Timerange_default from "./fields/Timerange.js";
|
|
24
|
+
import ColorPicker_default from "./fields/ColorPicker.js";
|
|
25
|
+
import CheckboxGroup_default from "./fields/CheckboxGroup.js";
|
|
26
|
+
import RadioGroup_default from "./fields/RadioGroup.js";
|
|
27
|
+
import Display_default from "./fields/Display.js";
|
|
28
|
+
import Link_default from "./fields/Link.js";
|
|
29
|
+
import Select_default from "./fields/Select.js";
|
|
30
|
+
import Cascader_default from "./fields/Cascader.js";
|
|
31
|
+
import DynamicField_default from "./fields/DynamicField.js";
|
|
32
|
+
import Step_default from "./containers/Step.js";
|
|
33
|
+
/* empty css */
|
|
34
|
+
//#region packages/form/src/plugin.ts
|
|
35
|
+
var defaultInstallOpt = {};
|
|
36
|
+
var plugin_default = { install(app, opt = {}) {
|
|
37
|
+
const option = Object.assign(defaultInstallOpt, opt);
|
|
38
|
+
app.config.globalProperties.$MAGIC_FORM = option;
|
|
39
|
+
setConfig(option);
|
|
40
|
+
app.component("m-form", Form_default);
|
|
41
|
+
app.component("m-form-dialog", FormDialog_default);
|
|
42
|
+
app.component("m-form-container", Container_default);
|
|
43
|
+
app.component("m-form-fieldset", Fieldset_default);
|
|
44
|
+
app.component("m-form-group-list", GroupList_default);
|
|
45
|
+
app.component("m-form-panel", Panel_default);
|
|
46
|
+
app.component("m-form-row", Row_default);
|
|
47
|
+
app.component("m-form-step", Step_default);
|
|
48
|
+
app.component("m-form-table", Table_default);
|
|
49
|
+
app.component("m-form-tab", Tabs_default);
|
|
50
|
+
app.component("m-form-flex-layout", FlexLayout_default);
|
|
51
|
+
app.component("m-fields-text", Text_default);
|
|
52
|
+
app.component("m-fields-img-upload", Text_default);
|
|
53
|
+
app.component("m-fields-number", Number_default);
|
|
54
|
+
app.component("m-fields-number-range", NumberRange_default);
|
|
55
|
+
app.component("m-fields-textarea", Textarea_default);
|
|
56
|
+
app.component("m-fields-hidden", Hidden_default);
|
|
57
|
+
app.component("m-fields-date", Date_default);
|
|
58
|
+
app.component("m-fields-datetime", DateTime_default);
|
|
59
|
+
app.component("m-fields-daterange", Daterange_default);
|
|
60
|
+
app.component("m-fields-timerange", Timerange_default);
|
|
61
|
+
app.component("m-fields-time", Time_default);
|
|
62
|
+
app.component("m-fields-checkbox", Checkbox_default);
|
|
63
|
+
app.component("m-fields-switch", Switch_default);
|
|
64
|
+
app.component("m-fields-color-picker", ColorPicker_default);
|
|
65
|
+
app.component("m-fields-checkbox-group", CheckboxGroup_default);
|
|
66
|
+
app.component("m-fields-radio-group", RadioGroup_default);
|
|
67
|
+
app.component("m-fields-display", Display_default);
|
|
68
|
+
app.component("m-fields-link", Link_default);
|
|
69
|
+
app.component("m-fields-select", Select_default);
|
|
70
|
+
app.component("m-fields-cascader", Cascader_default);
|
|
71
|
+
app.component("m-fields-dynamic-field", DynamicField_default);
|
|
72
|
+
} };
|
|
73
|
+
//#endregion
|
|
74
|
+
export { plugin_default as default };
|