@ebiz/designer-components 0.0.18 → 0.0.19

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 (99) hide show
  1. package/package.json +3 -2
  2. package/src/apiService/mockDataService.js +116 -0
  3. package/src/apiService/simpleDataService.js +186 -80
  4. package/src/components/Button.vue +72 -22
  5. package/src/components/EbizAvatar.vue +116 -0
  6. package/src/components/EbizCheckbox.vue +94 -0
  7. package/src/components/EbizCheckboxGroup.vue +70 -0
  8. package/src/components/EbizDetailBlock.vue +82 -0
  9. package/src/components/EbizDialog.vue +244 -56
  10. package/src/components/EbizEmployeeInfo.vue +139 -0
  11. package/src/components/EbizFileUpload.vue +202 -0
  12. package/src/components/EbizPageHeader.vue +96 -0
  13. package/src/components/EbizPagination.vue +163 -0
  14. package/src/components/EbizRadio.vue +87 -0
  15. package/src/components/EbizRadioGroup.vue +84 -0
  16. package/src/components/EbizRemoteSelect.vue +118 -40
  17. package/src/components/EbizSpace.vue +101 -0
  18. package/src/components/EbizStatistic.vue +150 -0
  19. package/src/components/EbizSwiper.vue +114 -0
  20. package/src/components/EbizSwiperItem.vue +14 -0
  21. package/src/components/EbizSwitch.vue +86 -0
  22. package/src/components/EbizTabHeader.vue +145 -0
  23. package/src/components/EbizTabPanel.vue +23 -0
  24. package/src/components/EbizTable.vue +466 -0
  25. package/src/components/EbizTableColumn.vue +117 -0
  26. package/src/components/EbizTableSort.vue +181 -0
  27. package/src/components/EbizTabs.vue +133 -91
  28. package/src/components/EbizTimePicker.vue +144 -0
  29. package/src/components/EbizTitle.vue +3 -10
  30. package/src/components/EbizTree.vue +153 -0
  31. package/src/components/EbizTreeSelector.vue +423 -0
  32. package/src/components/Home.vue +8 -0
  33. package/src/components/TdesignAlert.vue +116 -0
  34. package/src/components/TdesignButton.vue +130 -0
  35. package/src/components/TdesignCalendar/index.vue +146 -0
  36. package/src/components/TdesignCard.vue +196 -0
  37. package/src/components/TdesignCol.vue +102 -0
  38. package/src/components/TdesignCollapse.vue +143 -0
  39. package/src/components/TdesignCollapsePanel.vue +80 -0
  40. package/src/components/TdesignDatePicker.vue +125 -0
  41. package/src/components/TdesignDialog.vue +226 -0
  42. package/src/components/TdesignForm.vue +134 -0
  43. package/src/components/TdesignFormItem.vue +106 -0
  44. package/src/components/TdesignGrid.vue +56 -0
  45. package/src/components/TdesignIcon.vue +68 -0
  46. package/src/components/TdesignImage.vue +163 -0
  47. package/src/components/TdesignImageViewer.vue +201 -0
  48. package/src/components/TdesignInput.vue +243 -0
  49. package/src/components/TdesignSelect.vue +445 -0
  50. package/src/components/TdesignTag.vue +118 -0
  51. package/src/components/TdesignTextarea.vue +143 -0
  52. package/src/components/TdesignTimeline.vue +58 -0
  53. package/src/components/TdesignTimelineItem.vue +72 -0
  54. package/src/components/TdesignUpload.vue +757 -0
  55. package/src/components/TdesignWatermark.vue +108 -0
  56. package/src/index.js +130 -0
  57. package/src/main.js +20 -4
  58. package/src/router/index.js +244 -5
  59. package/src/views/Button.vue +7 -3
  60. package/src/views/CheckboxDemo.vue +105 -0
  61. package/src/views/DialogDemo.vue +126 -0
  62. package/src/views/EbizAvatar.vue +224 -0
  63. package/src/views/EbizDetailBlockDemo.vue +31 -0
  64. package/src/views/EbizEmployeeInfo.vue +250 -0
  65. package/src/views/EbizRadioDemo.vue +152 -0
  66. package/src/views/EbizSpace.vue +186 -0
  67. package/src/views/EbizSwiper.vue +158 -0
  68. package/src/views/GridDemo.vue +239 -0
  69. package/src/views/Home.vue +63 -2
  70. package/src/views/PageHeaderDemo.vue +105 -0
  71. package/src/views/PaginationDemo.vue +97 -0
  72. package/src/views/RemoteSelect.vue +336 -5
  73. package/src/views/StatisticDemo.vue +191 -0
  74. package/src/views/SwitchDemo.vue +80 -0
  75. package/src/views/TableDemo.vue +335 -0
  76. package/src/views/TableSortDemo.vue +144 -0
  77. package/src/views/TableView.vue +69 -0
  78. package/src/views/TabsDemo.vue +283 -0
  79. package/src/views/TagDemo.vue +102 -0
  80. package/src/views/TdesignAlert.vue +99 -0
  81. package/src/views/TdesignButton.vue +191 -0
  82. package/src/views/TdesignCalendar.vue +95 -0
  83. package/src/views/TdesignCard.vue +297 -0
  84. package/src/views/TdesignCollapse.vue +294 -0
  85. package/src/views/TdesignDatePicker.vue +188 -0
  86. package/src/views/TdesignForm.vue +249 -0
  87. package/src/views/TdesignIcon.vue +204 -0
  88. package/src/views/TdesignImage.vue +216 -0
  89. package/src/views/TdesignImageViewer.vue +199 -0
  90. package/src/views/TdesignInput.vue +253 -0
  91. package/src/views/TdesignSelect.vue +474 -0
  92. package/src/views/TdesignSwiper.vue +158 -0
  93. package/src/views/TextareaDemo.vue +94 -0
  94. package/src/views/TimePickerDemo.vue +147 -0
  95. package/src/views/TimelineDemo.vue +161 -0
  96. package/src/views/TreeDemo.vue +255 -0
  97. package/src/views/TreeSelectorDemo.vue +246 -0
  98. package/src/views/UploadDemo.vue +122 -0
  99. package/src/views/WatermarkDemo.vue +86 -0
@@ -0,0 +1,118 @@
1
+ <template>
2
+ <t-tag
3
+ :theme="theme"
4
+ :size="size"
5
+ :variant="variant"
6
+ :maxWidth="maxWidth"
7
+ :icon="icon"
8
+ :content="content"
9
+ :closable="closable"
10
+ :checkable="checkable"
11
+ :checked="checked"
12
+ :disabled="disabled"
13
+ @click="handleClick"
14
+ @close="handleClose"
15
+ @change="handleChange"
16
+ >
17
+ <!-- 图标插槽 -->
18
+ <template v-if="$slots.icon" #icon>
19
+ <slot name="icon"></slot>
20
+ </template>
21
+
22
+ <!-- 内容插槽 -->
23
+ <template v-if="$slots.content" #content>
24
+ <slot name="content"></slot>
25
+ </template>
26
+
27
+ <!-- 默认插槽 -->
28
+ <slot>{{ content }}</slot>
29
+ </t-tag>
30
+ </template>
31
+
32
+ <script>
33
+ export default {
34
+ name: "EbizTag"
35
+ }
36
+ </script>
37
+
38
+ <script setup>
39
+ import { defineProps, defineEmits } from 'vue';
40
+ import { Tag as TTag } from 'tdesign-vue-next';
41
+
42
+ defineProps({
43
+ // 标签主题
44
+ theme: {
45
+ type: String,
46
+ default: 'default',
47
+ validator: (val) => ['default', 'primary', 'warning', 'danger', 'success'].includes(val)
48
+ },
49
+ // 标签尺寸
50
+ size: {
51
+ type: String,
52
+ default: 'medium',
53
+ validator: (val) => ['small', 'medium', 'large'].includes(val)
54
+ },
55
+ // 标签形式
56
+ variant: {
57
+ type: String,
58
+ default: 'dark',
59
+ validator: (val) => ['dark', 'light', 'outline', 'light-outline'].includes(val)
60
+ },
61
+ // 最大宽度
62
+ maxWidth: {
63
+ type: [String, Number],
64
+ default: undefined
65
+ },
66
+ // 图标
67
+ icon: {
68
+ type: [String, Function],
69
+ default: ''
70
+ },
71
+ // 标签内容
72
+ content: {
73
+ type: String,
74
+ default: ''
75
+ },
76
+ // 是否可关闭
77
+ closable: {
78
+ type: Boolean,
79
+ default: false
80
+ },
81
+ // 是否可选中
82
+ checkable: {
83
+ type: Boolean,
84
+ default: false
85
+ },
86
+ // 是否选中
87
+ checked: {
88
+ type: Boolean,
89
+ default: false
90
+ },
91
+ // 是否禁用
92
+ disabled: {
93
+ type: Boolean,
94
+ default: false
95
+ }
96
+ });
97
+
98
+ const emit = defineEmits(['click', 'close', 'change']);
99
+
100
+ // 点击事件
101
+ const handleClick = (e) => {
102
+ emit('click', e);
103
+ };
104
+
105
+ // 关闭事件
106
+ const handleClose = (e) => {
107
+ emit('close', e);
108
+ };
109
+
110
+ // 选中状态变化事件
111
+ const handleChange = (checked, context) => {
112
+ emit('change', checked, context);
113
+ };
114
+ </script>
115
+
116
+ <style lang="less" scoped>
117
+ /* 自定义样式 */
118
+ </style>
@@ -0,0 +1,143 @@
1
+ <template>
2
+ <t-textarea
3
+ :value="modelValue"
4
+ :disabled="disabled"
5
+ :readonly="readonly"
6
+ :placeholder="placeholder"
7
+ :autofocus="autofocus"
8
+ :autosize="autosize"
9
+ :max-character="maxCharacter"
10
+ :max-length="maxLength"
11
+ :max-rows="maxRows"
12
+ :status="status"
13
+ :tips="tips"
14
+ :default-value="defaultValue"
15
+ @blur="handleBlur"
16
+ @change="handleChange"
17
+ @focus="handleFocus"
18
+ @keydown="handleKeydown"
19
+ @keypress="handleKeypress"
20
+ @keyup="handleKeyup"
21
+ @validate="handleValidate"
22
+ >
23
+ <!-- 默认插槽 -->
24
+ <slot></slot>
25
+ </t-textarea>
26
+ </template>
27
+
28
+ <script>
29
+ export default {
30
+ name: "EbizTextarea"
31
+ }
32
+ </script>
33
+
34
+ <script setup>
35
+ import { defineProps, defineEmits } from 'vue';
36
+ import { Textarea as TTextarea } from 'tdesign-vue-next';
37
+
38
+ const props = defineProps({
39
+ // 文本框值(v-model)
40
+ modelValue: {
41
+ type: [String, Number],
42
+ default: ''
43
+ },
44
+ // 文本框默认值
45
+ defaultValue: {
46
+ type: [String, Number],
47
+ default: ''
48
+ },
49
+ // 是否禁用文本框
50
+ disabled: {
51
+ type: Boolean,
52
+ default: false
53
+ },
54
+ // 是否只读
55
+ readonly: {
56
+ type: Boolean,
57
+ default: false
58
+ },
59
+ // 文本框占位符
60
+ placeholder: {
61
+ type: String,
62
+ default: ''
63
+ },
64
+ // 是否自动聚焦
65
+ autofocus: {
66
+ type: Boolean,
67
+ default: false
68
+ },
69
+ // 是否自动调整高度
70
+ autosize: {
71
+ type: [Boolean, Object],
72
+ default: false
73
+ },
74
+ // 用于控制组件是否显示最大字符数,值为 true 会显示组件字符数最大值
75
+ maxCharacter: {
76
+ type: [Number, Boolean],
77
+ default: false
78
+ },
79
+ // 用于控制输入框最大可输入的字符个数
80
+ maxLength: {
81
+ type: Number,
82
+ default: undefined
83
+ },
84
+ // 最大行数,当超出最大行数时,会自动出现滚动条
85
+ maxRows: {
86
+ type: Number,
87
+ default: undefined
88
+ },
89
+ // 文本框状态
90
+ status: {
91
+ type: String,
92
+ default: 'default',
93
+ validator: (val) => ['default', 'success', 'warning', 'error'].includes(val)
94
+ },
95
+ // 输入框下方提示文本
96
+ tips: {
97
+ type: [String, Function],
98
+ default: ''
99
+ }
100
+ });
101
+
102
+ const emit = defineEmits(['update:modelValue', 'blur', 'change', 'focus', 'keydown', 'keypress', 'keyup', 'validate']);
103
+
104
+ // 失去焦点事件
105
+ const handleBlur = (value, context) => {
106
+ emit('blur', value, context);
107
+ };
108
+
109
+ // 输入内容变化事件
110
+ const handleChange = (value, context) => {
111
+ emit('update:modelValue', value);
112
+ emit('change', value, context);
113
+ };
114
+
115
+ // 获得焦点事件
116
+ const handleFocus = (value, context) => {
117
+ emit('focus', value, context);
118
+ };
119
+
120
+ // 键盘按下事件
121
+ const handleKeydown = (value, context) => {
122
+ emit('keydown', value, context);
123
+ };
124
+
125
+ // 按下字符键事件
126
+ const handleKeypress = (value, context) => {
127
+ emit('keypress', value, context);
128
+ };
129
+
130
+ // 释放键盘事件
131
+ const handleKeyup = (value, context) => {
132
+ emit('keyup', value, context);
133
+ };
134
+
135
+ // 字数超出限制事件
136
+ const handleValidate = (context) => {
137
+ emit('validate', context);
138
+ };
139
+ </script>
140
+
141
+ <style lang="less" scoped>
142
+ /* 自定义样式 */
143
+ </style>
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <t-timeline
3
+ :layout="layout"
4
+ :labelAlign="labelAlign"
5
+ :mode="mode"
6
+ :reverse="reverse"
7
+ :theme="theme"
8
+ >
9
+ <slot></slot>
10
+ </t-timeline>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ name: "EbizTimeline"
16
+ }
17
+ </script>
18
+
19
+ <script setup>
20
+ import { defineProps, defineEmits } from 'vue';
21
+ import { Timeline as TTimeline } from 'tdesign-vue-next';
22
+
23
+ defineProps({
24
+ // 布局方向
25
+ layout: {
26
+ type: String,
27
+ default: 'vertical',
28
+ validator: (val) => ['horizontal', 'vertical'].includes(val)
29
+ },
30
+ // 标签位置
31
+ labelAlign: {
32
+ type: String,
33
+ default: 'auto',
34
+ validator: (val) => ['left', 'right', 'top', 'bottom', 'auto'].includes(val)
35
+ },
36
+ // 展示类型
37
+ mode: {
38
+ type: String,
39
+ default: 'alternate',
40
+ validator: (val) => ['alternate', 'same', 'left', 'right'].includes(val)
41
+ },
42
+ // 是否倒序排列
43
+ reverse: {
44
+ type: Boolean,
45
+ default: false
46
+ },
47
+ // 主题风格
48
+ theme: {
49
+ type: String,
50
+ default: 'default',
51
+ validator: (val) => ['default', 'dot'].includes(val)
52
+ }
53
+ });
54
+ </script>
55
+
56
+ <style lang="less" scoped>
57
+ /* 自定义样式 */
58
+ </style>
@@ -0,0 +1,72 @@
1
+ <template>
2
+ <t-timeline-item
3
+ :content="content"
4
+ :dot="dot"
5
+ :dotColor="dotColor"
6
+ :label="label"
7
+ :labelAlign="labelAlign"
8
+ :loading="loading"
9
+ >
10
+ <!-- 时间轴点内容插槽 -->
11
+ <template v-if="$slots.dot" #dot>
12
+ <slot name="dot"></slot>
13
+ </template>
14
+
15
+ <!-- 标签内容插槽 -->
16
+ <template v-if="$slots.label" #label>
17
+ <slot name="label"></slot>
18
+ </template>
19
+
20
+ <!-- 默认插槽 -->
21
+ <slot>{{ content }}</slot>
22
+ </t-timeline-item>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ name: "EbizTimelineItem"
28
+ }
29
+ </script>
30
+
31
+ <script setup>
32
+ import { defineProps } from 'vue';
33
+ import { TimelineItem as TTimelineItem } from 'tdesign-vue-next';
34
+
35
+ defineProps({
36
+ // 内容
37
+ content: {
38
+ type: String,
39
+ default: ''
40
+ },
41
+ // 时间轴点内容,可以是组件
42
+ dot: {
43
+ type: [String, Function],
44
+ default: ''
45
+ },
46
+ // 时间轴点颜色,内置 primary/warning/error/default 四种色值
47
+ dotColor: {
48
+ type: String,
49
+ default: ''
50
+ },
51
+ // 标签文本内容
52
+ label: {
53
+ type: String,
54
+ default: ''
55
+ },
56
+ // 标签位置,优先级高于 Timeline 中的 labelAlign
57
+ labelAlign: {
58
+ type: String,
59
+ default: '',
60
+ validator: (val) => ['left', 'right', 'top', 'bottom', 'auto', ''].includes(val)
61
+ },
62
+ // 是否处于加载状态
63
+ loading: {
64
+ type: Boolean,
65
+ default: false
66
+ }
67
+ });
68
+ </script>
69
+
70
+ <style lang="less" scoped>
71
+ /* 自定义样式 */
72
+ </style>