@v2coding/ui 0.1.0

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 (49) hide show
  1. package/README.md +6 -0
  2. package/dist/v2coding-ui.esm.js +10840 -0
  3. package/dist/v2coding-ui.min.js +1 -0
  4. package/dist/v2coding-ui.ssr.js +10747 -0
  5. package/package.json +54 -0
  6. package/src/components/dialog/dialog.vue +179 -0
  7. package/src/components/drawer/drawer.vue +523 -0
  8. package/src/components/exports/index.vue +53 -0
  9. package/src/components/exports/remote-exports-dialog.vue +202 -0
  10. package/src/components/field/field.autocomplete.vue +21 -0
  11. package/src/components/field/field.calendar.vue +117 -0
  12. package/src/components/field/field.cascade.vue +233 -0
  13. package/src/components/field/field.checkbox.vue +134 -0
  14. package/src/components/field/field.color.vue +24 -0
  15. package/src/components/field/field.date.vue +145 -0
  16. package/src/components/field/field.icons.vue +123 -0
  17. package/src/components/field/field.number.vue +43 -0
  18. package/src/components/field/field.radio.vue +100 -0
  19. package/src/components/field/field.rate.vue +37 -0
  20. package/src/components/field/field.rich.vue +165 -0
  21. package/src/components/field/field.select.vue +210 -0
  22. package/src/components/field/field.slider.vue +66 -0
  23. package/src/components/field/field.switch.vue +14 -0
  24. package/src/components/field/field.text.vue +66 -0
  25. package/src/components/field/field.timepicker.vue +70 -0
  26. package/src/components/field/field.timeselect.vue +24 -0
  27. package/src/components/field/field.trigger.dialog.vue +50 -0
  28. package/src/components/field/field.trigger.popover.vue +63 -0
  29. package/src/components/field/field.upload.file.vue +241 -0
  30. package/src/components/field/field.upload.image.vue +125 -0
  31. package/src/components/field/field.upload.portrait.vue +304 -0
  32. package/src/components/fill-view/index.vue +43 -0
  33. package/src/components/form/form.dialog.vue +174 -0
  34. package/src/components/form/form.drawer.vue +246 -0
  35. package/src/components/form/form.fieldset.vue +110 -0
  36. package/src/components/form/form.item.vue +213 -0
  37. package/src/components/form/form.vue +293 -0
  38. package/src/components/head-menu/index.vue +188 -0
  39. package/src/components/head-menu/menu-item.vue +84 -0
  40. package/src/components/history/index.vue +360 -0
  41. package/src/components/icon/icon.vue +63 -0
  42. package/src/components/minimize/index.vue +342 -0
  43. package/src/components/page/page.vue +43 -0
  44. package/src/components/provider/provider.vue +15 -0
  45. package/src/components/scroll-view/scroll-view.vue +384 -0
  46. package/src/components/table/column.vue +262 -0
  47. package/src/components/table/table.pagination.vue +71 -0
  48. package/src/components/table/table.select.vue +165 -0
  49. package/src/components/table/table.vue +805 -0
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@v2coding/ui",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+
6
+ "main": "dist/v2coding-ui.ssr.js",
7
+ "browser": "dist/v2coding-ui.esm.js",
8
+ "module": "dist/v2coding-ui.esm.js",
9
+ "unpkg": "dist/v2coding-ui.min.js",
10
+
11
+ "files": [
12
+ "dist/*",
13
+ "src/**/*.vue"
14
+ ],
15
+ "sideEffects": false,
16
+
17
+ "scripts": {
18
+ "serve": "vue-cli-service serve dev/serve.js",
19
+ "prebuild": "rimraf ./dist",
20
+ "build": "cross-env NODE_ENV=production rollup --config build/rollup.config.js",
21
+ "build:ssr": "cross-env NODE_ENV=production rollup --config build/rollup.config.js --format cjs",
22
+ "build:es": "cross-env NODE_ENV=production rollup --config build/rollup.config.js --format es",
23
+ "build:unpkg": "cross-env NODE_ENV=production rollup --config build/rollup.config.js --format iife"
24
+ },
25
+
26
+ "dependencies": {
27
+ },
28
+
29
+ "devDependencies": {
30
+ "@babel/core": "^7.14.6",
31
+ "@babel/preset-env": "^7.14.7",
32
+ "@rollup/plugin-alias": "^3.1.2",
33
+ "@rollup/plugin-babel": "^5.3.0",
34
+ "@rollup/plugin-commonjs": "^14.0.0",
35
+ "@rollup/plugin-node-resolve": "^9.0.0",
36
+ "@rollup/plugin-replace": "^2.4.2",
37
+ "@vue/cli-plugin-babel": "^4.5.13",
38
+ "@vue/cli-service": "^4.5.13",
39
+ "cross-env": "^7.0.3",
40
+ "minimist": "^1.2.5",
41
+ "rimraf": "^3.0.2",
42
+ "rollup": "^2.52.8",
43
+ "rollup-plugin-terser": "^7.0.2",
44
+ "rollup-plugin-vue": "^5.1.9",
45
+ "vue": "^2.6.14",
46
+ "vue-template-compiler": "^2.6.14"
47
+ },
48
+ "peerDependencies": {
49
+ "vue": "^2.6.14"
50
+ },
51
+ "engines": {
52
+ "node": ">=12"
53
+ }
54
+ }
@@ -0,0 +1,179 @@
1
+ <template>
2
+ <el-dialog v-dialogDrag v-bind="$attrs" :visible="visible" @update:visible="updateVisible" :width="width" :close-on-click-modal="closeOnClickModal" :destroy-on-close="destroyOnClose" @open="onOpen" :show-close="false" @opened="onOpened" @close="onClose" @closed="onClosed" ref="_dialog" class="ui-dialog">
3
+ <div v-if="title" slot="title" class="title">
4
+ {{ title }}
5
+ <span class="close" @click="close">
6
+ <i class="el-icon-close"></i>
7
+ </span>
8
+ </div>
9
+ <slot></slot>
10
+ <div v-if="buttons && buttons.length" slot="footer">
11
+ <el-button v-for="(button, index) in buttons" :key="index" size="medium" v-bind="button" @click="button.handle(close)">{{ button.text }}</el-button>
12
+ </div>
13
+ </el-dialog>
14
+ </template>
15
+
16
+ <script>
17
+ export default {
18
+ name: 'ui-dialog',
19
+ props: {
20
+ title: String,
21
+ visible: Boolean,
22
+ width: {
23
+ type: String,
24
+ default: '600px',
25
+ },
26
+ // 默认取消按钮点击触发函数
27
+ cancel: {
28
+ type: Function,
29
+ default: (hide) => hide(),
30
+ },
31
+ closeOnClickModal: {
32
+ type: Boolean,
33
+ default: false,
34
+ },
35
+ destroyOnClose: {
36
+ type: Boolean,
37
+ default: true,
38
+ },
39
+ autoFocus: {
40
+ type: Boolean,
41
+ default: false,
42
+ },
43
+ // 默认确定按钮点击触发函数
44
+ confirm: {
45
+ type: Function,
46
+ default: (hide) => hide(),
47
+ },
48
+ /**
49
+ * {
50
+ * text: '', // required
51
+ * handle: () => {}, // required
52
+ * icon: '', // optional
53
+ * ... el-button`s options
54
+ * }
55
+ */
56
+ buttons: {
57
+ type: null,
58
+ default() {
59
+ return [
60
+ {text: '取消', icon: 'el-icon-error', handle: this.cancel},
61
+ {text: '确定', icon: 'el-icon-success', type: 'primary', handle: this.confirm},
62
+ ];
63
+ },
64
+ },
65
+ },
66
+ deactivated() {
67
+ this.close();
68
+ },
69
+ beforeDestroy() {
70
+ this.close();
71
+ },
72
+ methods: {
73
+ close() {
74
+ this.updateVisible(false);
75
+ },
76
+ updateVisible(visible) {
77
+ this.$emit('update:visible', visible);
78
+ },
79
+ onOpen() {
80
+ this.$emit('open');
81
+ },
82
+ onOpened() {
83
+ if (this.autoFocus) {
84
+ const input = this.$el.querySelector('input');
85
+ input && input.focus();
86
+ }
87
+ this.$emit('opened');
88
+ },
89
+ onClose() {
90
+ this.$emit('close');
91
+ },
92
+ onClosed() {
93
+ this.$emit('closed');
94
+ },
95
+ },
96
+ };
97
+ </script>
98
+
99
+ <style lang="scss" scoped>
100
+
101
+ .ui-dialog {
102
+
103
+ ::v-deep .el-dialog {
104
+ margin-bottom: 0;
105
+
106
+ .title {
107
+ position: relative;
108
+ line-height: 28px;
109
+ padding: 12px 48px 12px 24px;
110
+ word-break: keep-all;
111
+ overflow: hidden;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
114
+ border-bottom: 1px solid #e8e8e8;
115
+ color: #202124;
116
+ font-weight: 500;
117
+ font-size: 16px;
118
+
119
+ .close {
120
+ position: absolute;
121
+ right: 0;
122
+ top: 0;
123
+ bottom: 0;
124
+ width: 53px;
125
+ height: 53px;
126
+ display: inline-block;
127
+ text-align: center;
128
+ cursor: pointer;
129
+ transition: all 0.3s;
130
+ user-select: none;
131
+
132
+ &:hover {
133
+ color: var(--color-primary);
134
+ }
135
+
136
+ & > i {
137
+ font-size: 20px;
138
+ line-height: 53px;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ ::v-deep .el-form .ui-form-fieldset:first-child {
146
+ margin-top: 0;
147
+ }
148
+
149
+ ::v-deep .el-form .ui-form-fieldset:last-child {
150
+ margin-bottom: 0;
151
+ }
152
+
153
+ ::v-deep .el-dialog__header {
154
+ padding: 0;
155
+ user-select: none;
156
+ }
157
+
158
+ ::v-deep .el-dialog__body {
159
+ padding-bottom: 20px;
160
+ }
161
+
162
+ ::v-deep .el-dialog__footer {
163
+ padding: 10px 20px;
164
+ border-top: 1px solid #dcdfe6;
165
+ }
166
+
167
+ .el-dialog__footer .el-button {
168
+ border-radius: 2px;
169
+ }
170
+
171
+ @keyframes rotate {
172
+ from {
173
+ transform: rotate(0deg);
174
+ }
175
+ to {
176
+ transform: rotate(360deg);
177
+ }
178
+ }
179
+ </style>