@tmagic/form 1.2.0-beta.2 → 1.2.0-beta.4

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 (66) hide show
  1. package/dist/tmagic-form.mjs +2081 -2500
  2. package/dist/tmagic-form.mjs.map +1 -1
  3. package/dist/tmagic-form.umd.js +2104 -2524
  4. package/dist/tmagic-form.umd.js.map +1 -1
  5. package/package.json +3 -4
  6. package/src/Form.vue +116 -159
  7. package/src/FormDialog.vue +104 -126
  8. package/src/containers/Col.vue +22 -38
  9. package/src/containers/Container.vue +135 -171
  10. package/src/containers/Fieldset.vue +11 -7
  11. package/src/containers/GroupList.vue +80 -112
  12. package/src/containers/GroupListItem.vue +87 -124
  13. package/src/containers/Panel.vue +26 -49
  14. package/src/containers/Row.vue +18 -40
  15. package/src/containers/Step.vue +36 -48
  16. package/src/containers/Table.vue +437 -478
  17. package/src/containers/Tabs.vue +89 -118
  18. package/src/fields/Cascader.vue +88 -136
  19. package/src/fields/Checkbox.vue +46 -50
  20. package/src/fields/CheckboxGroup.vue +39 -35
  21. package/src/fields/ColorPicker.vue +4 -2
  22. package/src/fields/Date.vue +20 -26
  23. package/src/fields/DateTime.vue +31 -39
  24. package/src/fields/Daterange.vue +3 -2
  25. package/src/fields/DynamicField.vue +63 -77
  26. package/src/fields/Link.vue +65 -86
  27. package/src/fields/Number.vue +32 -34
  28. package/src/fields/RadioGroup.vue +23 -23
  29. package/src/fields/Select.vue +294 -310
  30. package/src/fields/SelectOptionGroups.vue +10 -5
  31. package/src/fields/SelectOptions.vue +4 -2
  32. package/src/fields/Switch.vue +46 -49
  33. package/src/fields/Text.vue +99 -107
  34. package/src/fields/Textarea.vue +32 -44
  35. package/src/fields/Time.vue +19 -30
  36. package/src/index.ts +22 -23
  37. package/src/schema.ts +45 -12
  38. package/types/Form.vue.d.ts +213 -111
  39. package/types/FormDialog.vue.d.ts +812 -155
  40. package/types/containers/Col.vue.d.ts +94 -40
  41. package/types/containers/Container.vue.d.ts +124 -65
  42. package/types/containers/GroupList.vue.d.ts +88 -53
  43. package/types/containers/GroupListItem.vue.d.ts +99 -67
  44. package/types/containers/Panel.vue.d.ts +92 -39
  45. package/types/containers/Row.vue.d.ts +94 -39
  46. package/types/containers/Step.vue.d.ts +104 -42
  47. package/types/containers/Table.vue.d.ts +157 -130
  48. package/types/containers/Tabs.vue.d.ts +95 -50
  49. package/types/fields/Cascader.vue.d.ts +97 -71
  50. package/types/fields/Checkbox.vue.d.ts +97 -56
  51. package/types/fields/CheckboxGroup.vue.d.ts +97 -53
  52. package/types/fields/Date.vue.d.ts +97 -54
  53. package/types/fields/DateTime.vue.d.ts +97 -54
  54. package/types/fields/DynamicField.vue.d.ts +97 -64
  55. package/types/fields/Link.vue.d.ts +62 -657
  56. package/types/fields/Number.vue.d.ts +101 -56
  57. package/types/fields/RadioGroup.vue.d.ts +98 -52
  58. package/types/fields/Select.vue.d.ts +99 -65
  59. package/types/fields/Switch.vue.d.ts +97 -56
  60. package/types/fields/Text.vue.d.ts +100 -57
  61. package/types/fields/Textarea.vue.d.ts +102 -60
  62. package/types/fields/Time.vue.d.ts +97 -55
  63. package/types/index.d.ts +0 -1
  64. package/types/schema.d.ts +37 -9
  65. package/src/utils/fieldProps.ts +0 -39
  66. package/types/utils/fieldProps.d.ts +0 -21
@@ -1,44 +1,48 @@
1
1
  <template>
2
- <el-checkbox-group v-model="model[name]" :size="size" :disabled="disabled" @change="changeHandler">
3
- <el-checkbox v-for="option in config.options" :label="option.value" :key="option.value"
2
+ <TMagicCheckboxGroup v-model="model[name]" :size="size" :disabled="disabled" @change="changeHandler">
3
+ <TMagicCheckbox v-for="option in options" :label="option.value" :key="option.value" :disabled="option.disabled"
4
4
  >{{ option.text }}
5
- </el-checkbox>
6
- </el-checkbox-group>
5
+ </TMagicCheckbox>
6
+ </TMagicCheckboxGroup>
7
7
  </template>
8
8
 
9
- <script lang="ts">
10
- import { defineComponent, PropType } from 'vue';
9
+ <script lang="ts" setup>
10
+ import { computed, inject } from 'vue';
11
11
 
12
- import { CheckboxGroupConfig } from '../schema';
13
- import fieldProps from '../utils/fieldProps';
12
+ import { TMagicCheckbox, TMagicCheckboxGroup } from '@tmagic/design';
13
+
14
+ import { CheckboxGroupConfig, FormState } from '../schema';
14
15
  import { useAddField } from '../utils/useAddField';
16
+ import { filterFunction } from '..';
17
+
18
+ const props = defineProps<{
19
+ config: CheckboxGroupConfig;
20
+ model: any;
21
+ initValues?: any;
22
+ values?: any;
23
+ name: string;
24
+ prop: string;
25
+ disabled?: boolean;
26
+ size: 'mini' | 'small' | 'medium';
27
+ }>();
28
+
29
+ const emit = defineEmits(['change']);
30
+
31
+ useAddField(props.prop);
32
+
33
+ // 初始化选项
34
+ if (props.model && !props.model[props.name]) {
35
+ props.model[props.name] = [];
36
+ }
37
+
38
+ const changeHandler = (v: Array<string | number | boolean>) => {
39
+ emit('change', v);
40
+ };
15
41
 
16
- export default defineComponent({
17
- name: 'm-fields-checkbox-group',
18
-
19
- props: {
20
- ...fieldProps,
21
- config: {
22
- type: Object as PropType<CheckboxGroupConfig>,
23
- required: true,
24
- },
25
- },
26
-
27
- emits: ['change'],
28
-
29
- setup(props, { emit }) {
30
- useAddField(props.prop);
31
-
32
- // 初始化选项
33
- if (props.model && !props.model[props.name]) {
34
- // eslint-disable-next-line no-param-reassign
35
- props.model[props.name] = [];
36
- }
37
- return {
38
- changeHandler: (v: Array<string | number | boolean>) => {
39
- emit('change', v);
40
- },
41
- };
42
- },
42
+ const mForm = inject<FormState | undefined>('mForm');
43
+ const options = computed(() => {
44
+ if (Array.isArray(props.config.options)) return props.config.options;
45
+ if (typeof props.config.options === 'function') return filterFunction(mForm, props.config.options, props);
46
+ return [];
43
47
  });
44
48
  </script>
@@ -1,14 +1,16 @@
1
1
  <template>
2
- <el-color-picker
2
+ <TMagicColorPicker
3
3
  v-model="model[name]"
4
4
  :size="size"
5
5
  :disabled="disabled"
6
6
  :showAlpha="true"
7
7
  @change="changeHandler"
8
- ></el-color-picker>
8
+ ></TMagicColorPicker>
9
9
  </template>
10
10
 
11
11
  <script lang="ts" setup>
12
+ import { TMagicColorPicker } from '@tmagic/design';
13
+
12
14
  import { ColorPickConfig } from '../schema';
13
15
  import { useAddField } from '../utils/useAddField';
14
16
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="model[name]"
4
4
  type="date"
5
5
  :size="size"
@@ -8,40 +8,34 @@
8
8
  :format="config.format"
9
9
  :value-format="config.format || 'YYYY-MM-DD HH:mm:ss'"
10
10
  @change="changeHandler"
11
- ></el-date-picker>
11
+ ></TMagicDatePicker>
12
12
  </template>
13
13
 
14
- <script lang="ts">
15
- import { defineComponent, PropType } from 'vue';
16
-
14
+ <script lang="ts" setup>
15
+ import { TMagicDatePicker } from '@tmagic/design';
17
16
  import { datetimeFormatter } from '@tmagic/utils';
18
17
 
19
18
  import { DateConfig } from '../schema';
20
- import fieldProps from '../utils/fieldProps';
21
19
  import { useAddField } from '../utils/useAddField';
22
20
 
23
- export default defineComponent({
24
- name: 'm-fields-date',
21
+ const props = defineProps<{
22
+ config: DateConfig;
23
+ model: any;
24
+ initValues?: any;
25
+ values?: any;
26
+ name: string;
27
+ prop: string;
28
+ disabled?: boolean;
29
+ size: 'mini' | 'small' | 'medium';
30
+ }>();
25
31
 
26
- props: {
27
- ...fieldProps,
28
- config: {
29
- type: Object as PropType<DateConfig>,
30
- required: true,
31
- },
32
- },
32
+ const emit = defineEmits(['change']);
33
33
 
34
- emits: ['change', 'input'],
34
+ useAddField(props.prop);
35
35
 
36
- setup(props, { emit }) {
37
- useAddField(props.prop);
36
+ props.model[props.name] = datetimeFormatter(props.model[props.name], '');
38
37
 
39
- props.model[props.name] = datetimeFormatter(props.model[props.name], '');
40
- return {
41
- changeHandler(v: string) {
42
- emit('change', v);
43
- },
44
- };
45
- },
46
- });
38
+ const changeHandler = (v: string) => {
39
+ emit('change', v);
40
+ };
47
41
  </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="model[name]"
4
4
  popper-class="magic-datetime-picker-popper"
5
5
  type="datetime"
@@ -10,49 +10,41 @@
10
10
  :value-format="config.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
11
11
  :default-time="config.defaultTime"
12
12
  @change="changeHandler"
13
- ></el-date-picker>
13
+ ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
- <script lang="ts">
17
- import { defineComponent, PropType } from 'vue';
18
-
16
+ <script lang="ts" setup>
17
+ import { TMagicDatePicker } from '@tmagic/design';
19
18
  import { datetimeFormatter } from '@tmagic/utils';
20
19
 
21
20
  import { DateTimeConfig } from '../schema';
22
- import fieldProps from '../utils/fieldProps';
23
21
  import { useAddField } from '../utils/useAddField';
24
22
 
25
- export default defineComponent({
26
- name: 'm-fields-datetime',
27
-
28
- props: {
29
- ...fieldProps,
30
- config: {
31
- type: Object as PropType<DateTimeConfig>,
32
- required: true,
33
- },
34
- },
35
-
36
- emits: ['change'],
37
-
38
- setup(props, { emit }) {
39
- useAddField(props.prop);
40
-
41
- const value = props.model?.[props.name].toString();
42
- if (props.model) {
43
- if (value === 'Invalid Date') {
44
- props.model[props.name] = '';
45
- } else {
46
- props.model[props.name] = datetimeFormatter(props.model[props.name], '', props.config.valueFormat);
47
- }
48
- }
49
-
50
- return {
51
- value,
52
- changeHandler: (v: Date) => {
53
- emit('change', v);
54
- },
55
- };
56
- },
57
- });
23
+ const props = defineProps<{
24
+ config: DateTimeConfig;
25
+ model: any;
26
+ initValues?: any;
27
+ values?: any;
28
+ name: string;
29
+ prop: string;
30
+ disabled?: boolean;
31
+ size: 'mini' | 'small' | 'medium';
32
+ }>();
33
+
34
+ const emit = defineEmits(['change']);
35
+
36
+ useAddField(props.prop);
37
+
38
+ const value = props.model?.[props.name].toString();
39
+ if (props.model) {
40
+ if (value === 'Invalid Date') {
41
+ props.model[props.name] = '';
42
+ } else {
43
+ props.model[props.name] = datetimeFormatter(props.model[props.name], '', props.config.valueFormat);
44
+ }
45
+ }
46
+
47
+ const changeHandler = (v: string) => {
48
+ emit('change', v);
49
+ };
58
50
  </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="value"
4
4
  type="datetimerange"
5
5
  range-separator="-"
@@ -10,12 +10,13 @@
10
10
  :disabled="disabled"
11
11
  :default-time="config.defaultTime"
12
12
  @change="changeHandler"
13
- ></el-date-picker>
13
+ ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
16
  <script lang="ts" setup>
17
17
  import { ref, watch } from 'vue';
18
18
 
19
+ import { TMagicDatePicker } from '@tmagic/design';
19
20
  import { datetimeFormatter } from '@tmagic/utils';
20
21
 
21
22
  import { DaterangeConfig } from '../schema';
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div class="m-fields-dynamic-field">
3
- <el-form size="small">
4
- <el-form-item v-for="key in Object.keys(fieldMap.value)" :key="key" :label="fieldLabelMap.value[key]">
5
- <el-input
3
+ <TMagicForm size="small">
4
+ <TMagicFormItem v-for="key in Object.keys(fieldMap.value)" :key="key" :label="fieldLabelMap.value[key]">
5
+ <TMagicInput
6
6
  v-model="fieldMap.value[key]"
7
7
  :placeholder="fieldLabelMap.value[key]"
8
8
  @change="inputChangeHandler(key)"
9
- ></el-input>
10
- </el-form-item>
11
- </el-form>
9
+ ></TMagicInput>
10
+ </TMagicFormItem>
11
+ </TMagicForm>
12
12
  </div>
13
13
  </template>
14
14
 
15
- <script lang="ts">
15
+ <script lang="ts" setup>
16
16
  /**
17
17
  * 动态表单,目前只支持input类型字段
18
18
  * inputType: 'dynamic-field',
@@ -23,87 +23,73 @@
23
23
  * 特别注意!!!field的上一级必须extensible: true,才能保存未声明的字段
24
24
  */
25
25
 
26
- import { defineComponent, onBeforeUnmount, PropType, reactive, watch } from 'vue';
26
+ import { onBeforeUnmount, reactive, watch } from 'vue';
27
+
28
+ import { TMagicForm, TMagicFormItem, TMagicInput } from '@tmagic/design';
27
29
 
28
30
  import { DynamicFieldConfig } from '../schema';
29
31
  import { getConfig } from '../utils/config';
30
- import fieldProps from '../utils/fieldProps';
31
32
  import { useAddField } from '../utils/useAddField';
32
33
 
33
- export default defineComponent({
34
- name: 'm-fields-dynamic-field',
35
-
36
- props: {
37
- ...fieldProps,
38
- config: {
39
- type: Object as PropType<DynamicFieldConfig>,
40
- required: true,
41
- },
42
- },
43
-
44
- emits: ['change'],
45
-
46
- setup(props, { emit }) {
47
- useAddField(props.prop);
48
-
49
- const request = getConfig('request') as Function;
50
- const fieldMap = reactive<{ [key: string]: any }>({
51
- value: {},
52
- });
53
- const fieldLabelMap = reactive<{ [key: string]: any }>({
54
- value: {},
55
- });
34
+ const props = defineProps<{
35
+ config: DynamicFieldConfig;
36
+ model: any;
37
+ initValues?: any;
38
+ values?: any;
39
+ name: string;
40
+ prop: string;
41
+ disabled?: boolean;
42
+ size: 'mini' | 'small' | 'medium';
43
+ }>();
56
44
 
57
- const changeFieldMap = async () => {
58
- if (typeof props.config.returnFields !== 'function' || !props.model) return;
59
- const fields = await props.config.returnFields(props.config, props.model, request);
60
- fieldMap.value = {};
61
- fieldLabelMap.value = {};
62
- fields.forEach((v) => {
63
- if (typeof v !== 'object' || v.name === undefined) return;
64
- let oldVal = props.model?.[v.name] || '';
65
- if (!oldVal && v.defaultValue !== undefined) {
66
- oldVal = v.defaultValue;
67
- emit('change', oldVal, v.name);
68
- }
69
- fieldMap.value[v.name] = oldVal;
70
- fieldLabelMap.value[v.name] = v.label || '';
71
- });
72
- };
45
+ const emit = defineEmits(['change']);
73
46
 
74
- const unwatch = watch(
75
- () => props.model?.[props.config.dynamicKey],
76
- (val) => {
77
- if (val !== '') {
78
- changeFieldMap();
79
- }
80
- },
81
- {
82
- immediate: true,
83
- },
84
- );
47
+ useAddField(props.prop);
85
48
 
86
- onBeforeUnmount(() => {
87
- if (typeof unwatch === 'function') {
88
- unwatch();
89
- }
90
- });
49
+ const request = getConfig('request') as Function;
50
+ const fieldMap = reactive<{ [key: string]: any }>({
51
+ value: {},
52
+ });
53
+ const fieldLabelMap = reactive<{ [key: string]: any }>({
54
+ value: {},
55
+ });
91
56
 
92
- return {
93
- request,
94
- fieldMap,
95
- fieldLabelMap,
96
- unwatch,
57
+ const changeFieldMap = async () => {
58
+ if (typeof props.config.returnFields !== 'function' || !props.model) return;
59
+ const fields = await props.config.returnFields(props.config, props.model, request);
60
+ fieldMap.value = {};
61
+ fieldLabelMap.value = {};
62
+ fields.forEach((v) => {
63
+ if (typeof v !== 'object' || v.name === undefined) return;
64
+ let oldVal = props.model?.[v.name] || '';
65
+ if (!oldVal && v.defaultValue !== undefined) {
66
+ oldVal = v.defaultValue;
67
+ emit('change', oldVal, v.name);
68
+ }
69
+ fieldMap.value[v.name] = oldVal;
70
+ fieldLabelMap.value[v.name] = v.label || '';
71
+ });
72
+ };
97
73
 
98
- changeFieldMap,
99
- inputChangeHandler: (key: string) => {
100
- emit('change', fieldMap.value[key], key);
101
- },
102
- };
74
+ const unwatch = watch(
75
+ () => props.model?.[props.config.dynamicKey],
76
+ (val) => {
77
+ if (val !== '') {
78
+ changeFieldMap();
79
+ }
103
80
  },
104
-
105
- methods: {
106
- init() {},
81
+ {
82
+ immediate: true,
107
83
  },
84
+ );
85
+
86
+ onBeforeUnmount(() => {
87
+ if (typeof unwatch === 'function') {
88
+ unwatch();
89
+ }
108
90
  });
91
+
92
+ const inputChangeHandler = (key: string) => {
93
+ emit('change', fieldMap.value[key], key);
94
+ };
109
95
  </script>
@@ -2,8 +2,8 @@
2
2
  <a v-if="config.href && !disabled" target="_blank" :href="href" :style="config.css || {}">{{ displayText }}</a>
3
3
  <span v-else-if="config.href && disabled" :style="config.disabledCss || {}">{{ displayText }}</span>
4
4
  <div v-else class="m-fields-link">
5
- <el-button text type="primary" @click="editHandler">点击编辑</el-button>
6
- <m-form-dialog
5
+ <TMagicButton :text="true" type="primary" @click="editHandler">点击编辑</TMagicButton>
6
+ <FormDialog
7
7
  ref="editor"
8
8
  :title="config.formTitle || '编辑扩展配置'"
9
9
  :width="config.formWidth"
@@ -12,101 +12,80 @@
12
12
  :parentValues="values"
13
13
  :fullscreen="config.fullscreen"
14
14
  @submit="action"
15
- ></m-form-dialog>
15
+ ></FormDialog>
16
16
  </div>
17
17
  </template>
18
18
 
19
- <script lang="ts">
20
- import { computed, defineComponent, inject, PropType, ref } from 'vue';
19
+ <script lang="ts" setup>
20
+ import { computed, inject, ref } from 'vue';
21
+
22
+ import { TMagicButton } from '@tmagic/design';
21
23
 
22
24
  import FormDialog from '../FormDialog.vue';
23
25
  import { FormState, LinkConfig } from '../schema';
24
- import fieldProps from '../utils/fieldProps';
25
26
  import { useAddField } from '../utils/useAddField';
26
27
 
27
- export default defineComponent({
28
- name: 'm-fields-link',
29
-
30
- props: {
31
- ...fieldProps,
32
- config: {
33
- type: Object as PropType<LinkConfig>,
34
- required: true,
35
- },
36
- },
37
-
38
- emits: ['change'],
39
-
40
- setup(props, { emit }) {
41
- useAddField(props.prop);
28
+ const props = defineProps<{
29
+ config: LinkConfig;
30
+ model: any;
31
+ initValues?: any;
32
+ values?: any;
33
+ name: string;
34
+ prop: string;
35
+ disabled?: boolean;
36
+ size: 'mini' | 'small' | 'medium';
37
+ }>();
38
+
39
+ const emit = defineEmits(['change']);
40
+
41
+ useAddField(props.prop);
42
+
43
+ const formValue = ref({});
44
+ const editor = ref<InstanceType<typeof FormDialog>>();
45
+ const mForm = inject<FormState | undefined>('mForm');
46
+
47
+ const href = computed(() => {
48
+ if (typeof props.config.href === 'function' && props.model) {
49
+ return props.config.href(props.model);
50
+ }
51
+ return props.config.href || props.model?.[props.name];
52
+ });
42
53
 
43
- const formValue = ref({});
44
- const editor = ref<InstanceType<typeof FormDialog>>();
45
- const mForm = inject<FormState | undefined>('mForm');
54
+ const init = () => {
55
+ formValue.value = props.model?.[props.name] || {};
56
+ };
46
57
 
47
- const href = computed(() => {
48
- if (typeof props.config.href === 'function' && props.model) {
49
- return props.config.href(props.model);
50
- }
51
- return props.config.href || props.model?.[props.name];
58
+ const formConfig = computed(() => {
59
+ if (typeof props.config.form === 'function') {
60
+ return props.config.form(mForm, {
61
+ model: props.model || {},
62
+ values: props.values || {},
52
63
  });
64
+ }
65
+ return props.config.form;
66
+ });
53
67
 
54
- const init = () => {
55
- formValue.value = props.model?.[props.name] || {};
56
- };
57
-
58
- return {
59
- // ref
60
- formValue,
61
- editor,
62
-
63
- // computed methods
64
- href,
65
-
66
- formConfig: computed(() => {
67
- if (typeof props.config.form === 'function') {
68
- return props.config.form(mForm, {
69
- model: props.model || {},
70
- values: props.values || {},
71
- });
72
- }
73
- return props.config.form;
74
- }),
75
-
76
- disable: computed(() => {
77
- if (typeof props.config.disabled !== 'undefined') {
78
- return props.config.disabled;
79
- }
80
- return !href.value;
81
- }),
82
-
83
- displayText: computed(() => {
84
- if (typeof props.config.displayText === 'function') {
85
- return props.config.displayText(mForm, { model: props.model || {} });
86
- }
87
- if (props.config.displayText) {
88
- return props.config.displayText;
89
- }
90
- return '跳转';
91
- }),
92
-
93
- // methods
94
- init,
95
-
96
- editHandler: () => {
97
- init();
98
- editor.value && (editor.value.dialogVisible = true);
99
- },
100
-
101
- action: (data: any) => {
102
- if (props.model) {
103
- props.model[props.name] = data;
104
- formValue.value = data;
105
- emit('change', props.model[props.name]);
106
- }
107
- editor.value && (editor.value.dialogVisible = false);
108
- },
109
- };
110
- },
68
+ const displayText = computed(() => {
69
+ if (typeof props.config.displayText === 'function') {
70
+ return props.config.displayText(mForm, { model: props.model || {} });
71
+ }
72
+ if (props.config.displayText) {
73
+ return props.config.displayText;
74
+ }
75
+ return '跳转';
111
76
  });
77
+
78
+ const editHandler = () => {
79
+ init();
80
+ editor.value && (editor.value.dialogVisible = true);
81
+ };
82
+
83
+ const action = (data: any) => {
84
+ if (props.model) {
85
+ props.model[props.name] = data;
86
+ formValue.value = data;
87
+ emit('change', props.model[props.name]);
88
+ }
89
+ editor.value && (editor.value.dialogVisible = false);
90
+ };
112
91
  </script>