@zzdadelu/schema-builder 1.0.0-alpha.1

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 (58) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE +21 -0
  3. package/README.md +39 -0
  4. package/es/createIframe.js +12 -0
  5. package/es/index.js +2 -0
  6. package/es/main.js +64 -0
  7. package/es/settings/index.js +26 -0
  8. package/es/settings/meta/card.js +108 -0
  9. package/es/settings/meta/cardList.js +203 -0
  10. package/es/settings/meta/checkbox.js +29 -0
  11. package/es/settings/meta/checkboxes.js +66 -0
  12. package/es/settings/meta/color.js +21 -0
  13. package/es/settings/meta/date.js +28 -0
  14. package/es/settings/meta/dateRange.js +37 -0
  15. package/es/settings/meta/form.js +115 -0
  16. package/es/settings/meta/imageInput.js +21 -0
  17. package/es/settings/meta/input.js +62 -0
  18. package/es/settings/meta/number.js +69 -0
  19. package/es/settings/meta/radio.js +65 -0
  20. package/es/settings/meta/rate.js +56 -0
  21. package/es/settings/meta/select.js +58 -0
  22. package/es/settings/meta/slider.js +40 -0
  23. package/es/settings/meta/switch.js +48 -0
  24. package/es/settings/meta/textarea.js +69 -0
  25. package/es/settings/meta/time.js +29 -0
  26. package/es/settings/meta/timeRange.js +37 -0
  27. package/es/settings/meta/treeSelect.js +85 -0
  28. package/es/settings/meta/urlInput.js +34 -0
  29. package/es/settings/utils.js +251 -0
  30. package/es/type.js +1 -0
  31. package/lib/createIframe.js +18 -0
  32. package/lib/index.js +9 -0
  33. package/lib/main.js +72 -0
  34. package/lib/settings/index.js +153 -0
  35. package/lib/settings/meta/card.js +114 -0
  36. package/lib/settings/meta/cardList.js +209 -0
  37. package/lib/settings/meta/checkbox.js +35 -0
  38. package/lib/settings/meta/checkboxes.js +72 -0
  39. package/lib/settings/meta/color.js +27 -0
  40. package/lib/settings/meta/date.js +34 -0
  41. package/lib/settings/meta/dateRange.js +43 -0
  42. package/lib/settings/meta/form.js +121 -0
  43. package/lib/settings/meta/imageInput.js +27 -0
  44. package/lib/settings/meta/input.js +68 -0
  45. package/lib/settings/meta/number.js +75 -0
  46. package/lib/settings/meta/radio.js +71 -0
  47. package/lib/settings/meta/rate.js +62 -0
  48. package/lib/settings/meta/select.js +64 -0
  49. package/lib/settings/meta/slider.js +46 -0
  50. package/lib/settings/meta/switch.js +54 -0
  51. package/lib/settings/meta/textarea.js +75 -0
  52. package/lib/settings/meta/time.js +35 -0
  53. package/lib/settings/meta/timeRange.js +43 -0
  54. package/lib/settings/meta/treeSelect.js +91 -0
  55. package/lib/settings/meta/urlInput.js +40 -0
  56. package/lib/settings/utils.js +258 -0
  57. package/lib/type.js +1 -0
  58. package/package.json +95 -0
@@ -0,0 +1,115 @@
1
+ import { createMeta } from '../utils';
2
+ export default createMeta('FormRender', {
3
+ title: '表单',
4
+ group: '基础组件',
5
+ category: '表单',
6
+ props: [{
7
+ title: '表单布局',
8
+ display: 'accordion',
9
+ type: 'group',
10
+ items: [{
11
+ name: 'displayType',
12
+ title: {
13
+ label: '标签位置',
14
+ tip: 'displayType | 标签的展示位置'
15
+ },
16
+ defaultValue: 'row',
17
+ setter: {
18
+ componentName: 'RadioGroupSetter',
19
+ props: {
20
+ options: [{
21
+ title: '水平居左',
22
+ value: 'row'
23
+ }, {
24
+ title: '垂直居上',
25
+ value: 'column'
26
+ }, {
27
+ title: '紧凑',
28
+ value: 'inline'
29
+ }]
30
+ }
31
+ }
32
+ }, {
33
+ name: 'column',
34
+ title: {
35
+ label: '一行多列',
36
+ tip: 'column | 一行多列'
37
+ },
38
+ defaultValue: 1,
39
+ setter: {
40
+ componentName: 'RadioGroupSetter',
41
+ props: {
42
+ options: [{
43
+ title: '一列',
44
+ value: 1
45
+ }, {
46
+ title: '两列',
47
+ value: 2
48
+ }, {
49
+ title: '三列',
50
+ value: 3
51
+ }, {
52
+ title: '四列',
53
+ value: 4
54
+ }]
55
+ }
56
+ }
57
+ }, {
58
+ name: 'labelWidth',
59
+ title: {
60
+ label: '标签宽度',
61
+ tip: 'labelWidth | 标签宽度'
62
+ },
63
+ setter: 'NumberSetter'
64
+ }]
65
+ }, {
66
+ title: '标签和控件栅格总数不能超过24',
67
+ display: 'block',
68
+ type: 'group',
69
+ items: [{
70
+ name: 'labelCol',
71
+ title: {
72
+ label: '标签栅格数',
73
+ tip: 'labelCol | 栅格占位格数'
74
+ },
75
+ setter: {
76
+ componentName: 'NumberSetter',
77
+ props: {
78
+ min: 0,
79
+ max: 24
80
+ }
81
+ }
82
+ }, {
83
+ name: 'fieldCol',
84
+ title: {
85
+ label: '控件栅格数',
86
+ tip: 'fieldCol | 栅格占位格数'
87
+ },
88
+ setter: {
89
+ componentName: 'NumberSetter',
90
+ props: {
91
+ min: 0,
92
+ max: 24
93
+ }
94
+ }
95
+ }, {
96
+ name: 'maxWidth',
97
+ title: {
98
+ label: '最大宽度',
99
+ tip: 'maxWidth | 最大宽度'
100
+ },
101
+ defaultValue: '340px',
102
+ setter: 'StringSetter'
103
+ }]
104
+ }],
105
+ configure: {
106
+ supports: {
107
+ loop: false,
108
+ condition: false
109
+ },
110
+ component: {
111
+ isContainer: true,
112
+ isModal: false
113
+ }
114
+ }
115
+ });
@@ -0,0 +1,21 @@
1
+ import { createMeta, inputPropsBasic } from '../utils';
2
+ export default createMeta('ImageInput', {
3
+ title: '图片 URL',
4
+ category: '其他',
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: inputPropsBasic
10
+ }],
11
+ snippets: [{
12
+ title: '图片 URL',
13
+ screenshot: 'icon-image',
14
+ schema: {
15
+ componentName: 'ImageInput',
16
+ props: {
17
+ title: '图片 URL'
18
+ }
19
+ }
20
+ }]
21
+ });
@@ -0,0 +1,62 @@
1
+ import { createMeta, inputPropsBasic } from '../utils';
2
+ export default createMeta('Input', {
3
+ title: '单行文本',
4
+ priority: 1000,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: inputPropsBasic
10
+ }, {
11
+ title: '其他配置',
12
+ type: 'group',
13
+ display: 'accordion',
14
+ items: [{
15
+ name: 'props.prefix',
16
+ title: {
17
+ label: '前缀',
18
+ tip: 'prefix | 前缀'
19
+ },
20
+ setter: 'StringSetter'
21
+ }, {
22
+ name: 'props.suffix',
23
+ title: {
24
+ label: '后缀',
25
+ tip: 'suffix | 后缀'
26
+ },
27
+ setter: 'StringSetter'
28
+ }, {
29
+ name: 'props.addonBefore',
30
+ title: {
31
+ label: '前置标签',
32
+ tip: 'addonBefore | 前置标签'
33
+ },
34
+ setter: 'StringSetter'
35
+ }, {
36
+ name: 'props.addonAfter',
37
+ title: {
38
+ label: '后置标签',
39
+ tip: 'addonAfter | 后置标签'
40
+ },
41
+ setter: 'StringSetter'
42
+ }, {
43
+ name: 'props.allowClear',
44
+ title: {
45
+ label: '支持清除',
46
+ tip: 'allowClear | 支持清除'
47
+ },
48
+ setter: 'BoolSetter'
49
+ }]
50
+ }],
51
+ snippets: [{
52
+ label: '单行文本',
53
+ screenshot: 'icon-input',
54
+ schema: {
55
+ componentName: 'Input',
56
+ props: {
57
+ title: '单行文本',
58
+ type: 'string'
59
+ }
60
+ }
61
+ }]
62
+ });
@@ -0,0 +1,69 @@
1
+ import { createMeta, getInputPropsBasic } from '../utils';
2
+ export default createMeta('InputNumber', {
3
+ title: '数字输入框',
4
+ priority: 999,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'NumberSetter'
16
+ })
17
+ }, {
18
+ title: '其他配置',
19
+ display: 'accordion',
20
+ type: 'group',
21
+ items: [{
22
+ name: 'props.prefix',
23
+ title: {
24
+ label: '前缀',
25
+ tip: 'prefix | 前缀'
26
+ },
27
+ setter: 'StringSetter'
28
+ }, {
29
+ name: 'props.addonBefore',
30
+ title: {
31
+ label: '前置标签',
32
+ tip: 'addonBefore | 前置标签'
33
+ },
34
+ setter: 'StringSetter'
35
+ }, {
36
+ name: 'props.addonAfter',
37
+ title: {
38
+ label: '后置标签',
39
+ tip: 'addonAfter | 后置标签'
40
+ },
41
+ setter: 'StringSetter'
42
+ }, {
43
+ name: 'props.precision',
44
+ title: {
45
+ label: '数值精度',
46
+ tip: 'precision | 数值精度'
47
+ },
48
+ setter: 'NumberSetter'
49
+ }, {
50
+ name: 'props.step',
51
+ title: {
52
+ label: '单步步长',
53
+ tip: 'step | 每次改变步数,可以为小数'
54
+ },
55
+ setter: ['NumberSetter', 'StringSetter']
56
+ }]
57
+ }],
58
+ snippets: [{
59
+ label: '数字输入框',
60
+ screenshot: 'icon-inputNumber',
61
+ schema: {
62
+ componentName: 'InputNumber',
63
+ props: {
64
+ title: '数字输入框',
65
+ type: 'number'
66
+ }
67
+ }
68
+ }]
69
+ });
@@ -0,0 +1,65 @@
1
+ import { getNotInputPropsBasic, createMeta, optionsProp } from '../utils';
2
+ export default createMeta('Radio', {
3
+ title: '点击单选',
4
+ priority: 997,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getNotInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'JsonSetter'
16
+ })
17
+ }, optionsProp, {
18
+ title: '其他配置',
19
+ display: 'accordion',
20
+ type: 'group',
21
+ items: [{
22
+ name: 'props.direction',
23
+ title: {
24
+ label: '排列方向',
25
+ tip: '选项的排列方向'
26
+ },
27
+ defaultValue: 'row',
28
+ setter: {
29
+ componentName: 'RadioGroupSetter',
30
+ props: {
31
+ options: [{
32
+ title: '水平',
33
+ value: 'row'
34
+ }, {
35
+ title: '垂直',
36
+ value: 'column'
37
+ }]
38
+ }
39
+ }
40
+ }]
41
+ }],
42
+ snippets: [{
43
+ title: '点击单选',
44
+ screenshot: 'icon-radio',
45
+ schema: {
46
+ componentName: 'Radio',
47
+ props: {
48
+ title: '点击单选',
49
+ type: 'string',
50
+ props: {
51
+ options: [{
52
+ label: 'A',
53
+ value: 'A'
54
+ }, {
55
+ label: 'B',
56
+ value: 'B'
57
+ }, {
58
+ label: 'C',
59
+ value: 'C'
60
+ }]
61
+ }
62
+ }
63
+ }
64
+ }]
65
+ });
@@ -0,0 +1,56 @@
1
+ import { createMeta, getNotInputPropsBasic } from '../utils';
2
+ export default createMeta('Rate', {
3
+ title: '评分',
4
+ priority: 992,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getNotInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'NumberSetter'
16
+ })
17
+ }, {
18
+ title: '其他配置',
19
+ display: 'accordion',
20
+ type: 'group',
21
+ items: [{
22
+ name: 'props.allowClear',
23
+ title: {
24
+ label: '支持清除',
25
+ tip: '是否允许清除'
26
+ },
27
+ setter: 'BoolSetter',
28
+ defaultValue: true
29
+ }, {
30
+ name: 'props.allowHalf',
31
+ title: {
32
+ label: '支持半选',
33
+ tip: '支持半选'
34
+ },
35
+ setter: 'BoolSetter'
36
+ }, {
37
+ name: 'props.count',
38
+ title: {
39
+ label: '总数',
40
+ tip: 'star 总数'
41
+ },
42
+ setter: 'NumberSetter',
43
+ defaultValue: 5
44
+ }]
45
+ }],
46
+ snippets: [{
47
+ label: '评分',
48
+ screenshot: 'icon-rate',
49
+ schema: {
50
+ componentName: 'Rate',
51
+ props: {
52
+ title: '评分'
53
+ }
54
+ }
55
+ }]
56
+ });
@@ -0,0 +1,58 @@
1
+ import { createMeta, getInputPropsBasic, optionsProp } from '../utils';
2
+ export default createMeta('Select', {
3
+ title: '下拉选择',
4
+ priority: 998,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'JsonSetter'
16
+ })
17
+ }, optionsProp],
18
+ snippets: [{
19
+ title: '下拉单选',
20
+ screenshot: 'icon-select',
21
+ schema: {
22
+ componentName: 'Select',
23
+ props: {
24
+ title: '下拉单选',
25
+ type: 'string',
26
+ props: {
27
+ options: [{
28
+ label: 'A',
29
+ value: 'A'
30
+ }, {
31
+ label: 'B',
32
+ value: 'B'
33
+ }]
34
+ }
35
+ }
36
+ }
37
+ }, {
38
+ title: '下拉多选',
39
+ screenshot: 'icon-multiSelect',
40
+ schema: {
41
+ componentName: 'Select',
42
+ props: {
43
+ title: '下拉多选',
44
+ type: 'array',
45
+ widget: 'multiSelect',
46
+ props: {
47
+ options: [{
48
+ label: 'A',
49
+ value: 'A'
50
+ }, {
51
+ label: 'B',
52
+ value: 'B'
53
+ }]
54
+ }
55
+ }
56
+ }
57
+ }]
58
+ });
@@ -0,0 +1,40 @@
1
+ import { createMeta, getNotInputPropsBasic } from '../utils';
2
+ export default createMeta('Slider', {
3
+ title: '滑动条',
4
+ priority: 991,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getNotInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'NumberSetter'
16
+ })
17
+ }, {
18
+ title: '其他配置',
19
+ display: 'accordion',
20
+ type: 'group',
21
+ items: [{
22
+ name: 'props.hideInput',
23
+ title: {
24
+ label: '隐藏输入框',
25
+ tip: '隐藏输入框'
26
+ },
27
+ setter: 'BoolSetter'
28
+ }]
29
+ }],
30
+ snippets: [{
31
+ label: '滑动条',
32
+ screenshot: 'icon-slider',
33
+ schema: {
34
+ componentName: 'Slider',
35
+ props: {
36
+ title: '滑动条'
37
+ }
38
+ }
39
+ }]
40
+ });
@@ -0,0 +1,48 @@
1
+ import { createMeta, getNotInputPropsBasic } from '../utils';
2
+ export default createMeta('Switch', {
3
+ title: '开关',
4
+ priority: 993,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: getNotInputPropsBasic({
10
+ name: 'defaultValue',
11
+ title: {
12
+ label: '默认值',
13
+ tip: 'defaultValue | 默认值'
14
+ },
15
+ setter: 'BoolSetter'
16
+ })
17
+ }, {
18
+ title: '其他配置',
19
+ display: 'accordion',
20
+ type: 'group',
21
+ items: [{
22
+ name: 'props.checkedChildren',
23
+ title: {
24
+ label: '选中时内容',
25
+ tip: 'checkedChildren | 选中时内容'
26
+ },
27
+ setter: 'StringSetter'
28
+ }, {
29
+ name: 'props.unCheckedChildren',
30
+ title: {
31
+ label: '非选中时内容',
32
+ tip: 'unCheckedChildren | 非选中时内容'
33
+ },
34
+ setter: 'StringSetter'
35
+ }]
36
+ }],
37
+ snippets: [{
38
+ label: '开关',
39
+ screenshot: 'icon-switch',
40
+ schema: {
41
+ componentName: 'Switch',
42
+ props: {
43
+ title: '开关',
44
+ type: 'boolean'
45
+ }
46
+ }
47
+ }]
48
+ });
@@ -0,0 +1,69 @@
1
+ import { createMeta, inputPropsBasic } from '../utils';
2
+ export default createMeta('TextArea', {
3
+ title: '多行文本',
4
+ priority: 995,
5
+ props: [{
6
+ title: '基础配置',
7
+ type: 'group',
8
+ display: 'accordion',
9
+ items: inputPropsBasic
10
+ }, {
11
+ title: '其他配置',
12
+ display: 'accordion',
13
+ type: 'group',
14
+ items: [{
15
+ name: 'props.allowClear',
16
+ title: {
17
+ label: '支持清除',
18
+ tip: 'allowClear | 支持清除'
19
+ },
20
+ setter: 'BoolSetter'
21
+ }, {
22
+ name: 'props.showCount',
23
+ title: {
24
+ label: '展示字数',
25
+ tip: 'showCount | 是否展示字数'
26
+ },
27
+ setter: 'BoolSetter'
28
+ }, {
29
+ name: 'props.autoSize',
30
+ title: {
31
+ label: '高度自动',
32
+ tip: 'autoSize | 文本域高度自适应内容'
33
+ },
34
+ setter: 'BoolSetter'
35
+ }, {
36
+ name: 'props.rows',
37
+ title: {
38
+ label: '指定行数',
39
+ tip: 'minRows | 指定显示的行数'
40
+ },
41
+ setter: 'NumberSetter'
42
+ }, {
43
+ name: 'props.minLength',
44
+ title: {
45
+ label: '最小长度',
46
+ tip: 'minLength | 内容最小长度'
47
+ },
48
+ setter: 'NumberSetter'
49
+ }, {
50
+ name: 'props.maxLength',
51
+ title: {
52
+ label: '最大长度',
53
+ tip: 'maxLength | 内容最大长度'
54
+ },
55
+ setter: 'NumberSetter'
56
+ }]
57
+ }],
58
+ snippets: [{
59
+ label: '多行文本',
60
+ screenshot: 'icon-textarea',
61
+ schema: {
62
+ componentName: 'TextArea',
63
+ props: {
64
+ title: '多行文本',
65
+ type: 'string'
66
+ }
67
+ }
68
+ }]
69
+ });
@@ -0,0 +1,29 @@
1
+ import { createMeta, getInputPropsBasic } from '../utils';
2
+ export default createMeta('TimePicker', {
3
+ title: '时间选择',
4
+ props: [{
5
+ title: '基础配置',
6
+ type: 'group',
7
+ display: 'accordion',
8
+ items: getInputPropsBasic({
9
+ name: 'defaultValue',
10
+ title: {
11
+ label: '默认值',
12
+ tip: 'default | 默认值'
13
+ },
14
+ setter: 'CustomTimeSetter'
15
+ })
16
+ }],
17
+ snippets: [{
18
+ title: '时间选择',
19
+ screenshot: 'icon-time',
20
+ schema: {
21
+ componentName: 'TimePicker',
22
+ props: {
23
+ title: '时间选择',
24
+ type: 'string',
25
+ format: 'time'
26
+ }
27
+ }
28
+ }]
29
+ });
@@ -0,0 +1,37 @@
1
+ import { createMeta, getInputPropsBasic } from '../utils';
2
+ export default createMeta('TimeRange', {
3
+ title: '时间区间选择',
4
+ props: [{
5
+ title: '基础配置',
6
+ type: 'group',
7
+ display: 'accordion',
8
+ items: getInputPropsBasic({
9
+ name: 'defaultValue',
10
+ title: {
11
+ label: '默认值',
12
+ tip: 'default | 默认值'
13
+ },
14
+ setter: 'CustomTimeRangeSetter'
15
+ }, {
16
+ name: 'props.placeholder',
17
+ title: {
18
+ label: '提示文字',
19
+ tip: 'placeholder | 输入框提示文字'
20
+ },
21
+ defaultValue: ['开始时间', '结束时间'],
22
+ setter: 'JsonSetter'
23
+ })
24
+ }],
25
+ snippets: [{
26
+ title: '时间区间选择',
27
+ screenshot: 'icon-time',
28
+ schema: {
29
+ componentName: 'TimeRange',
30
+ props: {
31
+ title: '时间区间',
32
+ type: 'range',
33
+ format: 'time'
34
+ }
35
+ }
36
+ }]
37
+ });