@tmagic/form 1.8.0-beta.12 → 1.8.0-beta.14
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/dist/es/Form.vue_vue_type_script_setup_true_lang.js +51 -16
- package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +12 -5
- package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +38 -12
- package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +35 -27
- package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +6 -5
- package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +41 -31
- package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +16 -10
- package/dist/es/containers/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +13 -6
- package/dist/es/containers/table/Table.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/containers/table/useTableColumns.js +5 -1
- package/dist/es/containers/table-group-list/TableGroupList.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +29 -7
- package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +19 -9
- package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +112 -77
- package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/index.js +4 -4
- package/dist/es/plugin.js +3 -1
- package/dist/es/style.css +122 -8
- package/dist/es/submitForm.js +3 -9
- package/dist/es/utils/config.js +4 -1
- package/dist/es/utils/form.js +33 -3
- package/dist/es/utils/typeMatch.js +31 -26
- package/dist/style.css +122 -8
- package/dist/themes/magic-admin.css +499 -0
- package/dist/tmagic-form.umd.cjs +583 -330
- package/package.json +4 -4
- package/src/Form.vue +71 -18
- package/src/FormDialog.vue +14 -3
- package/src/FormDrawer.vue +40 -12
- package/src/containers/Container.vue +19 -6
- package/src/containers/GroupList.vue +1 -1
- package/src/containers/GroupListItem.vue +28 -22
- package/src/containers/Panel.vue +10 -3
- package/src/containers/table/ActionsColumn.vue +10 -4
- package/src/containers/table/Table.vue +1 -0
- package/src/containers/table/useTableColumns.ts +7 -3
- package/src/containers/table-group-list/TableGroupList.vue +7 -1
- package/src/fields/Link.vue +16 -3
- package/src/fields/Number.vue +2 -1
- package/src/fields/RadioGroup.vue +21 -6
- package/src/fields/Text.vue +43 -19
- package/src/plugin.ts +3 -0
- package/src/submitForm.ts +6 -12
- package/src/theme/container.scss +3 -0
- package/src/theme/fieldset.scss +51 -0
- package/src/theme/form.scss +6 -0
- package/src/theme/group-list.scss +9 -7
- package/src/theme/index.scss +1 -0
- package/src/theme/link.scss +17 -0
- package/src/theme/panel.scss +1 -1
- package/src/theme/radio-group.scss +23 -0
- package/src/theme/tabs.scss +2 -2
- package/src/theme/text.scss +38 -0
- package/src/theme/themes/magic-admin/index.scss +95 -0
- package/src/utils/config.ts +7 -1
- package/src/utils/form.ts +37 -0
- package/src/utils/typeMatch.ts +57 -28
- package/types/index.d.ts +72 -3
package/dist/es/utils/form.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createTypeMatchValidator } from "./typeMatch.js";
|
|
2
2
|
import { readonly } from "vue";
|
|
3
|
+
import dayjs from "dayjs";
|
|
4
|
+
import utc from "dayjs/plugin/utc";
|
|
3
5
|
import { cloneDeep } from "lodash-es";
|
|
4
6
|
import { getDesignConfig } from "@tmagic/design";
|
|
5
7
|
import { getValueByKeyPath } from "@tmagic/utils";
|
|
6
|
-
import dayjs from "dayjs";
|
|
7
|
-
import utc from "dayjs/plugin/utc";
|
|
8
8
|
//#region packages/form/src/utils/form.ts
|
|
9
9
|
var isTDesignAdapter = () => getDesignConfig("adapterType") === "tdesign-vue-next";
|
|
10
10
|
/**
|
|
@@ -203,6 +203,36 @@ var sortChange = (data, { prop, order }) => {
|
|
|
203
203
|
if (order === "ascending") data.sort((a, b) => a[prop] - b[prop]);
|
|
204
204
|
else if (order === "descending") data.sort((a, b) => b[prop] - a[prop]);
|
|
205
205
|
};
|
|
206
|
+
/**
|
|
207
|
+
* 将 extendState 返回的扩展字段合并进 formState。
|
|
208
|
+
*
|
|
209
|
+
* - data 描述符(普通字段)通过 `formState[key] = value` 写入,走 reactive proxy 的 set,
|
|
210
|
+
* 触发依赖通知;
|
|
211
|
+
* - accessor 描述符(`{ get stage() { return ... } }`)按原样 defineProperty,调用方
|
|
212
|
+
* 可控制读时求值;强制 `configurable: true` 以便下一次合并可再 define。
|
|
213
|
+
*
|
|
214
|
+
* 注意:formState 上由 props 派生的字段(keyProp / popperClass / config / initValues /
|
|
215
|
+
* isCompare / lastValues / parentValues)是只读 getter(无 setter),extendState 若以
|
|
216
|
+
* 普通字段形式返回同名 key,直接赋值会让 proxy 的 set trap 失败并抛出
|
|
217
|
+
* `TypeError: 'set' on proxy: trap returned falsish`,这里统一跳过并告警;
|
|
218
|
+
* 如确需覆盖,可在 extendState 中以 get 访问器形式返回。
|
|
219
|
+
*/
|
|
220
|
+
var applyExtendState = (formState, state) => {
|
|
221
|
+
if (!state) return;
|
|
222
|
+
for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(state))) {
|
|
223
|
+
if (!("value" in descriptor)) {
|
|
224
|
+
descriptor.configurable = true;
|
|
225
|
+
Object.defineProperty(formState, key, descriptor);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const targetDescriptor = Object.getOwnPropertyDescriptor(formState, key);
|
|
229
|
+
if (targetDescriptor && !("value" in targetDescriptor) && typeof targetDescriptor.set !== "function") {
|
|
230
|
+
console.warn(`[MForm] extendState: "${key}" is a read-only field derived from props and cannot be assigned a plain value. Return it as a getter accessor if you really need to override it.`);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
formState[key] = state[key];
|
|
234
|
+
}
|
|
235
|
+
};
|
|
206
236
|
var createObjectProp = (prop, key, name) => {
|
|
207
237
|
if (prop === "") return key;
|
|
208
238
|
const itemPath = `${prop}`.split(".");
|
|
@@ -212,4 +242,4 @@ var createObjectProp = (prop, key, name) => {
|
|
|
212
242
|
return `${[...itemPath, key].join(".")}`;
|
|
213
243
|
};
|
|
214
244
|
//#endregion
|
|
215
|
-
export { adaptFormValidator, createObjectProp, createValues, datetimeFormatter, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange };
|
|
245
|
+
export { adaptFormValidator, applyExtendState, createObjectProp, createValues, datetimeFormatter, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { readonly } from "vue";
|
|
2
|
-
import { appendValidateSuggestion } from "@tmagic/design";
|
|
3
|
-
import { getValueByKeyPath } from "@tmagic/utils";
|
|
4
2
|
import dayjs from "dayjs";
|
|
3
|
+
import { appendValidateSuggestion } from "@tmagic/design";
|
|
4
|
+
import { getValueByKeyPath, toLine } from "@tmagic/utils";
|
|
5
5
|
import customParseFormat from "dayjs/plugin/customParseFormat";
|
|
6
6
|
//#region packages/form/src/utils/typeMatch.ts
|
|
7
7
|
dayjs.extend(customParseFormat);
|
|
8
8
|
var typeMatchRuleRegistry = /* @__PURE__ */ new Map();
|
|
9
|
-
var
|
|
9
|
+
var isPromise = (value) => typeof value === "object" && value !== null && typeof value.then === "function";
|
|
10
10
|
/** 注册或覆盖某个字段 type 的 typeMatch 校验规则 */
|
|
11
11
|
var registerTypeMatchRule = (type, validator) => {
|
|
12
|
-
typeMatchRuleRegistry.set(
|
|
12
|
+
typeMatchRuleRegistry.set(toLine(type), validator);
|
|
13
13
|
};
|
|
14
14
|
/** 批量注册 typeMatch 校验规则 */
|
|
15
15
|
var registerTypeMatchRules = (rules) => {
|
|
@@ -18,9 +18,9 @@ var registerTypeMatchRules = (rules) => {
|
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
20
|
/** 获取某个字段 type 的自定义 typeMatch 校验规则 */
|
|
21
|
-
var getTypeMatchRule = (type) => typeMatchRuleRegistry.get(
|
|
21
|
+
var getTypeMatchRule = (type) => typeMatchRuleRegistry.get(toLine(type));
|
|
22
22
|
/** 删除某个字段 type 的自定义 typeMatch 校验规则 */
|
|
23
|
-
var deleteTypeMatchRule = (type) => typeMatchRuleRegistry.delete(
|
|
23
|
+
var deleteTypeMatchRule = (type) => typeMatchRuleRegistry.delete(toLine(type));
|
|
24
24
|
/** 清空所有自定义 typeMatch 校验规则 */
|
|
25
25
|
var clearTypeMatchRules = () => {
|
|
26
26
|
typeMatchRuleRegistry.clear();
|
|
@@ -124,7 +124,9 @@ var toggleSuggestion = (activeValue, inactiveValue) => `请使用以下某一个
|
|
|
124
124
|
var resolveFieldDefaultValue = (mForm, props) => {
|
|
125
125
|
const { defaultValue } = props.config || {};
|
|
126
126
|
if (typeof defaultValue === "undefined" || defaultValue === "undefined") return void 0;
|
|
127
|
-
|
|
127
|
+
const resolvedDefaultValue = resolveConfig(mForm, defaultValue, props);
|
|
128
|
+
if (isPromise(resolvedDefaultValue)) return;
|
|
129
|
+
return resolvedDefaultValue;
|
|
128
130
|
};
|
|
129
131
|
var isNumberValue = (value) => typeof value === "number" && !Number.isNaN(value);
|
|
130
132
|
var isStringValue = (value) => typeof value === "string";
|
|
@@ -175,12 +177,6 @@ var dateRangeSuggestion = (valueFormat) => {
|
|
|
175
177
|
return `请参考以下示例值:["${example}", "${example}"]`;
|
|
176
178
|
};
|
|
177
179
|
var dateValueFormatErrorMessage = (message, valueFormat) => defaultMessage(message, isTimestampValueFormat(valueFormat) ? "值类型应为时间戳数字" : `值格式应为 ${valueFormat}`, dateSuggestion(valueFormat));
|
|
178
|
-
var resolveFieldType = (mForm, props) => {
|
|
179
|
-
let type = "type" in (props.config || {}) ? props.config.type : "";
|
|
180
|
-
type = type ? resolveConfig(mForm, type, props) || "" : "";
|
|
181
|
-
if (type === "form" || type === "container") return "";
|
|
182
|
-
return normalizeType(type || "") || (props.config?.items ? "" : "text");
|
|
183
|
-
};
|
|
184
180
|
var resolveToggleValues = (config) => {
|
|
185
181
|
const filterIsNumber = config.filter === "number";
|
|
186
182
|
const { activeValue: configActiveValue, inactiveValue: configInactiveValue } = config;
|
|
@@ -206,11 +202,9 @@ var flattenSelectOptions = (options) => {
|
|
|
206
202
|
});
|
|
207
203
|
return values;
|
|
208
204
|
};
|
|
209
|
-
var resolveOptions = (
|
|
205
|
+
var resolveOptions = (props) => {
|
|
210
206
|
const { options } = props.config || {};
|
|
211
|
-
|
|
212
|
-
if (typeof options === "function") return resolveConfig(mForm, options, props) || [];
|
|
213
|
-
return [];
|
|
207
|
+
return Array.isArray(options) ? options : [];
|
|
214
208
|
};
|
|
215
209
|
var includesOptionValue = (optionValues, value) => optionValues.some((item) => Object.is(item, value));
|
|
216
210
|
var collectCascaderLeafValues = (options, result = []) => {
|
|
@@ -263,6 +257,7 @@ var cascaderExampleSuggestion = (options, config, valueSeparator, fallbackExampl
|
|
|
263
257
|
return `请参考以下示例值:${stringifyExampleValue(example)}`;
|
|
264
258
|
};
|
|
265
259
|
var validateSelectValue = (value, config, optionValues, message) => {
|
|
260
|
+
if (optionValues.length === 0) return;
|
|
266
261
|
if (config.allowCreate || config.remote) {
|
|
267
262
|
if (config.multiple) {
|
|
268
263
|
if (!Array.isArray(value)) return defaultMessage(message, `${value} 类型应为数组`, optionExampleSuggestion(optionValues, "[\"选项1\", \"选项2\"]", true));
|
|
@@ -280,10 +275,12 @@ var validateSelectValue = (value, config, optionValues, message) => {
|
|
|
280
275
|
if (isStaticOptions && !includesOptionValue(optionValues, value)) return defaultMessage(message, `${value} 不在可选项中`, optionSuggestion(optionValues));
|
|
281
276
|
};
|
|
282
277
|
var validateCascaderValue = (value, config, props, mForm, message) => {
|
|
278
|
+
const options = resolveOptions(props);
|
|
279
|
+
if (!options.length) return;
|
|
283
280
|
const valueSeparator = resolveConfig(mForm, config.valueSeparator, props);
|
|
281
|
+
if (isPromise(valueSeparator)) return;
|
|
284
282
|
const emitPath = config.emitPath !== false;
|
|
285
283
|
const multiple = Boolean(config.multiple);
|
|
286
|
-
const options = resolveOptions(mForm, props);
|
|
287
284
|
const cascaderExample = (fallbackExample) => cascaderExampleSuggestion(options, config, valueSeparator, fallbackExample);
|
|
288
285
|
if (valueSeparator) {
|
|
289
286
|
if (typeof value !== "string" && !Array.isArray(value)) return defaultMessage(message, `${value} 类型应为字符串或数组`, cascaderExample("\"选项1,选项2\" 或 [\"选项1\", \"选项2\"]"));
|
|
@@ -337,14 +334,16 @@ var validateBuiltinTypeMatch = (value, fieldType, mForm, props, message) => {
|
|
|
337
334
|
if (!Object.is(value, activeValue) && !Object.is(value, inactiveValue)) return defaultMessage(message, `${value} 不在合法开关值中`, toggleSuggestion(activeValue, inactiveValue));
|
|
338
335
|
return;
|
|
339
336
|
}
|
|
340
|
-
if (fieldType === "select") return validateSelectValue(value, config, flattenSelectOptions(resolveOptions(
|
|
337
|
+
if (fieldType === "select") return validateSelectValue(value, config, flattenSelectOptions(resolveOptions(props)), message);
|
|
341
338
|
if (fieldType === "radio-group") {
|
|
342
|
-
const optionValues = flattenSelectOptions(resolveOptions(
|
|
339
|
+
const optionValues = flattenSelectOptions(resolveOptions(props));
|
|
340
|
+
if (optionValues.length === 0) return;
|
|
343
341
|
if (!includesOptionValue(optionValues, value)) return defaultMessage(message, `${value} 不在可选项中`, optionSuggestion(optionValues));
|
|
344
342
|
return;
|
|
345
343
|
}
|
|
346
344
|
if (fieldType === "checkbox-group") {
|
|
347
|
-
const optionValues = flattenSelectOptions(resolveOptions(
|
|
345
|
+
const optionValues = flattenSelectOptions(resolveOptions(props));
|
|
346
|
+
if (optionValues.length === 0) return;
|
|
348
347
|
if (!Array.isArray(value)) return defaultMessage(message, `${value} 类型应为数组`, optionExampleSuggestion(optionValues, "[\"选项1\", \"选项2\"]", true));
|
|
349
348
|
if (value.some((item) => !includesOptionValue(optionValues, item))) return defaultMessage(message, `${value} 不在可选项中`, optionSuggestion(optionValues));
|
|
350
349
|
return;
|
|
@@ -363,7 +362,9 @@ var validateBuiltinTypeMatch = (value, fieldType, mForm, props, message) => {
|
|
|
363
362
|
};
|
|
364
363
|
var validateTypeMatch = (value, mForm, props, message) => {
|
|
365
364
|
if (isEmptyValue(value) || isEmptyArray(value)) return;
|
|
366
|
-
const
|
|
365
|
+
const rawFieldType = "type" in (props.config || {}) ? props.config.type : "";
|
|
366
|
+
if (typeof rawFieldType !== "string" || !rawFieldType) return;
|
|
367
|
+
const fieldType = toLine(rawFieldType);
|
|
367
368
|
const customValidator = getTypeMatchRule(fieldType);
|
|
368
369
|
if (customValidator) return customValidator(value, {
|
|
369
370
|
fieldType,
|
|
@@ -377,10 +378,14 @@ var createTypeMatchValidator = (mForm, props, rule) => {
|
|
|
377
378
|
const originalValidator = typeof rule.validator === "function" ? rule.validator : void 0;
|
|
378
379
|
return (asyncValidatorRule, value, callback, source, options) => {
|
|
379
380
|
const actualValue = props.config?.names ? props.model : value;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
381
|
+
try {
|
|
382
|
+
const error = validateTypeMatch(actualValue, mForm, props, rule.message);
|
|
383
|
+
if (error) {
|
|
384
|
+
callback(new Error(error));
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
} catch (error) {
|
|
388
|
+
console.error(error);
|
|
384
389
|
}
|
|
385
390
|
if (originalValidator) return originalValidator({
|
|
386
391
|
rule: asyncValidatorRule,
|
package/dist/style.css
CHANGED
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
.m-form-container .tmagic-design-form-item.show-before-diff {
|
|
17
17
|
background: #f7dadd;
|
|
18
18
|
}
|
|
19
|
+
.m-form-container .m-form-title-extra {
|
|
20
|
+
margin-left: 8px;
|
|
21
|
+
}
|
|
19
22
|
|
|
20
23
|
.m-form-dialog .el-dialog__body {
|
|
21
24
|
padding: 0 !important;
|
|
@@ -76,6 +79,10 @@
|
|
|
76
79
|
margin-bottom: var(--td-comp-margin-xxl);
|
|
77
80
|
}
|
|
78
81
|
|
|
82
|
+
.m-form-container .m-form-container-expand {
|
|
83
|
+
text-align: center;
|
|
84
|
+
}
|
|
85
|
+
|
|
79
86
|
.magic-datetime-picker-popper .el-picker-panel__footer button:first-child {
|
|
80
87
|
display: none;
|
|
81
88
|
}
|
|
@@ -85,6 +92,24 @@
|
|
|
85
92
|
align-items: center;
|
|
86
93
|
width: 100%;
|
|
87
94
|
}
|
|
95
|
+
.m-fields-text--static {
|
|
96
|
+
gap: 6px;
|
|
97
|
+
min-height: 32px;
|
|
98
|
+
}
|
|
99
|
+
.m-fields-text--static .m-fields-text__prepend {
|
|
100
|
+
color: var(--el-text-color-secondary, #909399);
|
|
101
|
+
}
|
|
102
|
+
.m-fields-text--static .m-fields-text__value {
|
|
103
|
+
color: var(--el-text-color-regular, #606266);
|
|
104
|
+
overflow: hidden;
|
|
105
|
+
text-overflow: ellipsis;
|
|
106
|
+
white-space: nowrap;
|
|
107
|
+
}
|
|
108
|
+
.m-fields-text--static .m-fields-text__icon {
|
|
109
|
+
width: 16px;
|
|
110
|
+
height: 16px;
|
|
111
|
+
cursor: pointer;
|
|
112
|
+
}
|
|
88
113
|
|
|
89
114
|
.m-form-validate__warning {
|
|
90
115
|
color: var(--el-color-warning);
|
|
@@ -110,6 +135,16 @@
|
|
|
110
135
|
outline: none;
|
|
111
136
|
}
|
|
112
137
|
|
|
138
|
+
.m-container-text.m-fields-title-container .tmagic-design-form-item .el-form-item__label {
|
|
139
|
+
color: #0f1113;
|
|
140
|
+
font-weight: 500;
|
|
141
|
+
font-size: 16px;
|
|
142
|
+
}
|
|
143
|
+
.m-container-text.m-fields-title-container .tmagic-design-form-item {
|
|
144
|
+
line-height: 24px;
|
|
145
|
+
margin-bottom: 16px;
|
|
146
|
+
}
|
|
147
|
+
|
|
113
148
|
.tmagic-form-text-popper[data-popper-placement^=top] > .tmagic-form-text-popper-arrow {
|
|
114
149
|
bottom: -4px;
|
|
115
150
|
}
|
|
@@ -148,6 +183,66 @@ div.m-fields-link {
|
|
|
148
183
|
width: fit-content;
|
|
149
184
|
}
|
|
150
185
|
|
|
186
|
+
a.magic-admin-link {
|
|
187
|
+
width: 100%;
|
|
188
|
+
box-sizing: border-box;
|
|
189
|
+
border-radius: 4px;
|
|
190
|
+
border: 1px solid #e6e6e6;
|
|
191
|
+
background-color: #fafafa;
|
|
192
|
+
padding: 0 8px;
|
|
193
|
+
height: 28px;
|
|
194
|
+
display: inline-flex;
|
|
195
|
+
gap: 4px;
|
|
196
|
+
align-items: center;
|
|
197
|
+
text-decoration: none;
|
|
198
|
+
}
|
|
199
|
+
a.magic-admin-link i {
|
|
200
|
+
margin-right: 4px;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.m-container-fieldset.no-border-fieldset.fieldset-in-row > fieldset.m-fieldset legend {
|
|
204
|
+
left: 0;
|
|
205
|
+
}
|
|
206
|
+
.m-container-fieldset.no-border-fieldset > fieldset.m-fieldset {
|
|
207
|
+
border: 0;
|
|
208
|
+
}
|
|
209
|
+
.m-container-fieldset.no-border-fieldset > fieldset.m-fieldset legend {
|
|
210
|
+
position: relative;
|
|
211
|
+
left: -5px;
|
|
212
|
+
font-size: 16px;
|
|
213
|
+
font-weight: 500;
|
|
214
|
+
line-height: 24px;
|
|
215
|
+
padding: 0;
|
|
216
|
+
}
|
|
217
|
+
.m-container-fieldset.fieldset-in-card-fit {
|
|
218
|
+
border-bottom: 1px solid #e6e6e6;
|
|
219
|
+
}
|
|
220
|
+
.m-container-fieldset.fieldset-in-card-fit > fieldset.m-fieldset {
|
|
221
|
+
padding: 16px 0 16px 0 !important;
|
|
222
|
+
border: 0;
|
|
223
|
+
margin-top: 0;
|
|
224
|
+
margin-bottom: 0;
|
|
225
|
+
}
|
|
226
|
+
.m-container-fieldset.fieldset-in-card-fit > fieldset.m-fieldset legend {
|
|
227
|
+
position: relative;
|
|
228
|
+
top: 10px;
|
|
229
|
+
background-color: transparent;
|
|
230
|
+
}
|
|
231
|
+
.m-container-fieldset.fieldset-in-card-fit.fieldset-in-card-fit-last {
|
|
232
|
+
padding-bottom: 0 !important;
|
|
233
|
+
border-bottom: 0;
|
|
234
|
+
}
|
|
235
|
+
.m-container-fieldset.fieldset-in-card-fit.fieldset-in-card-fit-first {
|
|
236
|
+
padding-top: 0 !important;
|
|
237
|
+
}
|
|
238
|
+
.m-container-fieldset.fieldset-in-card-fit:last-child {
|
|
239
|
+
padding-bottom: 0 !important;
|
|
240
|
+
border-bottom: 0;
|
|
241
|
+
}
|
|
242
|
+
.m-container-fieldset.fieldset-in-card-fit:first {
|
|
243
|
+
padding-top: 0 !important;
|
|
244
|
+
}
|
|
245
|
+
|
|
151
246
|
fieldset.m-fieldset {
|
|
152
247
|
position: relative;
|
|
153
248
|
border: 1px solid rgb(229, 229, 229);
|
|
@@ -174,6 +269,9 @@ fieldset.m-fieldset .m-form-tip {
|
|
|
174
269
|
margin-left: 5px;
|
|
175
270
|
}
|
|
176
271
|
|
|
272
|
+
.m-fields-group-list .m-fields-group-list-item.tmagic-design-card--flat:last-child {
|
|
273
|
+
border: 0;
|
|
274
|
+
}
|
|
177
275
|
.m-fields-group-list .el-button--text {
|
|
178
276
|
padding: 0;
|
|
179
277
|
margin-bottom: 7px;
|
|
@@ -192,23 +290,23 @@ fieldset.m-fieldset .m-form-tip {
|
|
|
192
290
|
.m-fields-group-list .m-fields-group-list-item:last-of-type {
|
|
193
291
|
border-bottom: 0;
|
|
194
292
|
}
|
|
195
|
-
.m-fields-group-list .
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
padding: 5px 0;
|
|
293
|
+
.m-fields-group-list .m-fields-group-list-item .m-fields-group-list-item-header {
|
|
294
|
+
display: flex;
|
|
295
|
+
align-items: center;
|
|
296
|
+
gap: 8px;
|
|
200
297
|
}
|
|
201
298
|
.m-fields-group-list .m-fields-group-list-footer {
|
|
202
299
|
display: flex;
|
|
203
300
|
justify-content: space-between;
|
|
204
301
|
margin-top: 10px;
|
|
302
|
+
margin-bottom: 16px;
|
|
205
303
|
}
|
|
206
304
|
|
|
207
305
|
.m-form-panel .el-card__header:hover {
|
|
208
306
|
background: #f2f6fc;
|
|
209
307
|
}
|
|
210
308
|
.m-form-panel .el-card__header a {
|
|
211
|
-
color: #409eff;
|
|
309
|
+
color: var(--el-color-primary, #409eff);
|
|
212
310
|
}
|
|
213
311
|
.m-form-panel .el-card__body {
|
|
214
312
|
padding: 10px;
|
|
@@ -291,8 +389,8 @@ fieldset.m-fieldset .m-form-tip {
|
|
|
291
389
|
margin-right: auto;
|
|
292
390
|
min-width: 50px;
|
|
293
391
|
outline: none;
|
|
294
|
-
border-color: #409eff;
|
|
295
|
-
color: #409eff;
|
|
392
|
+
border-color: var(--el-color-primary, #409eff);
|
|
393
|
+
color: var(--el-color-primary, #409eff);
|
|
296
394
|
width: 10px;
|
|
297
395
|
}
|
|
298
396
|
.magic-form-dynamic-tab .el-tabs__header.is-top .el-tabs__new-tab::before {
|
|
@@ -329,4 +427,20 @@ fieldset.m-fieldset .m-form-tip {
|
|
|
329
427
|
display: flex;
|
|
330
428
|
align-items: center;
|
|
331
429
|
justify-content: space-between;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.m-fields-radio-group__option {
|
|
433
|
+
display: flex;
|
|
434
|
+
align-items: center;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.m-fields-radio-group__text {
|
|
438
|
+
display: inline-block;
|
|
439
|
+
vertical-align: middle;
|
|
440
|
+
white-space: pre-line;
|
|
441
|
+
line-height: 20px;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.m-fields-radio-group__icon_with_text {
|
|
445
|
+
margin-right: 8px;
|
|
332
446
|
}/*$vite$:1*/
|