xianniu-ui 0.1.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 (43) hide show
  1. package/README.md +1 -0
  2. package/lib/demo.html +10 -0
  3. package/lib/style/index.css +1 -0
  4. package/lib/style/page.css +1 -0
  5. package/lib/style/table.css +1 -0
  6. package/lib/xn-ui.common.js +20159 -0
  7. package/lib/xn-ui.umd.js +20169 -0
  8. package/lib/xn-ui.umd.min.js +9 -0
  9. package/package.json +62 -0
  10. package/packages/dialog/index.js +7 -0
  11. package/packages/dialog/main.vue +123 -0
  12. package/packages/page/index.js +7 -0
  13. package/packages/page/main.vue +100 -0
  14. package/packages/style/lib/index.css +1 -0
  15. package/packages/style/lib/page.css +1 -0
  16. package/packages/style/lib/table.css +1 -0
  17. package/packages/style/package.json +22 -0
  18. package/packages/style/src/index.scss +2 -0
  19. package/packages/style/src/page.scss +7 -0
  20. package/packages/style/src/table.scss +9 -0
  21. package/packages/table/column.vue +111 -0
  22. package/packages/table/index.js +7 -0
  23. package/packages/table/main.vue +104 -0
  24. package/public/favicon.ico +0 -0
  25. package/public/index.html +18 -0
  26. package/src/area/index.js +12890 -0
  27. package/src/index.js +44 -0
  28. package/src/plugins/index.js +6 -0
  29. package/src/theme/element-variables.scss +28 -0
  30. package/src/theme/index.scss +1 -0
  31. package/src/theme/mixin.scss +270 -0
  32. package/src/theme/sidebar.scss +271 -0
  33. package/src/theme/transition.scss +52 -0
  34. package/src/theme/variables.scss +36 -0
  35. package/src/utils/dayjs.js +2 -0
  36. package/src/utils/format.js +122 -0
  37. package/src/utils/index.js +21 -0
  38. package/src/utils/lodash.js +2 -0
  39. package/src/utils/package.json +8 -0
  40. package/src/utils/reg.js +8 -0
  41. package/src/utils/scroll-to.js +59 -0
  42. package/src/utils/storage.js +2 -0
  43. package/src/utils/utils.js +20 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "xn-ui-style",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "lib/index.css",
6
+ "style": "lib/index.css",
7
+ "files": [
8
+ "lib",
9
+ "src"
10
+ ],
11
+ "scripts": {
12
+ "style": "gulp"
13
+ },
14
+ "author": "",
15
+ "license": "ISC",
16
+ "devDependencies": {
17
+ "gulp": "^4.0.2",
18
+ "gulp-autoprefixer": "^8.0.0",
19
+ "gulp-cssmin": "^0.2.0",
20
+ "gulp-sass": "^5.1.0"
21
+ }
22
+ }
@@ -0,0 +1,2 @@
1
+ @import './table.scss';
2
+ @import './page.scss';
@@ -0,0 +1,7 @@
1
+ .xn-page{
2
+ margin-top: 15px;
3
+ text-align: right;
4
+ &.is-hidden{
5
+ display: none;
6
+ }
7
+ }
@@ -0,0 +1,9 @@
1
+ .xn-table-box{
2
+ &-tools{
3
+ text-align: right;
4
+ padding-bottom: 10px;
5
+ &.is-border{
6
+ border-bottom: 1px solid #f0f0f0;
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,111 @@
1
+ <template>
2
+ <el-table-column v-bind="$attrs" v-if="isShowColumn($attrs)">
3
+ <template v-if="$attrs.labelMsg">
4
+ <template slot="header">
5
+ <el-tooltip
6
+ class="item"
7
+ effect="dark"
8
+ :content="$attrs.labelMsg"
9
+ placement="right"
10
+ >
11
+ <span>{{ $attrs.label }} <i class="el-icon-question"></i></span>
12
+ </el-tooltip>
13
+ </template>
14
+ </template>
15
+ <template slot-scope="{ row, $index }">
16
+ <expandDom
17
+ v-if="$attrs.render"
18
+ :column="item"
19
+ :row="row"
20
+ :render="$attrs.render"
21
+ :index="$index"
22
+ ></expandDom>
23
+ <template v-else>
24
+ {{ row[$attrs.prop] }}
25
+ </template>
26
+ <!-- 更多操作 -->
27
+ <template v-if="$attrs.more && $attrs.more.options.length">
28
+ <template v-for="(itemBtn, idxBtn) in $attrs.more.options">
29
+ <expand-dom
30
+ v-if="itemBtn.render"
31
+ :key="idxBtn"
32
+ :column="itemBtn"
33
+ :row="row"
34
+ :render="itemBtn.render"
35
+ :index="idxBtn"
36
+ />
37
+ <template v-else>
38
+ <el-button
39
+ v-if="itemBtn.show ? itemBtn.show(row) : true"
40
+ :key="idxBtn"
41
+ :disabled="itemBtn.disabled ? itemBtn.disabled(row) : false"
42
+ :type="itemBtn.type || 'text'"
43
+ :size="itemBtn.size || 'mini'"
44
+ :icon="itemBtn.icon"
45
+ :plain="itemBtn.plain"
46
+ @click="handleClick(itemBtn.method, row, $index)"
47
+ >{{
48
+ typeof itemBtn.label === "function"
49
+ ? itemBtn.label(row)
50
+ : itemBtn.label
51
+ }}</el-button
52
+ >
53
+ </template>
54
+ </template>
55
+ </template>
56
+ </template>
57
+ </el-table-column>
58
+ </template>
59
+
60
+ <script>
61
+ export default {
62
+ components: {
63
+ expandDom: {
64
+ functional: true,
65
+ props: {
66
+ row: Object,
67
+ render: Function,
68
+ index: Number,
69
+ column: {
70
+ type: Object,
71
+ default: null,
72
+ },
73
+ },
74
+ render: (h, ctx) => {
75
+ const params = {
76
+ row: ctx.props.row,
77
+ index: ctx.props.index,
78
+ };
79
+ if (ctx.props.column) params.column = ctx.props.column;
80
+ return ctx.props.render(h, params);
81
+ },
82
+ },
83
+ },
84
+ computed: {
85
+ isShowColumn() {
86
+ return (row) => {
87
+ if (row.show !== undefined) {
88
+ if (typeof row.show === "function") {
89
+ return row.show();
90
+ } else {
91
+ return row.show;
92
+ }
93
+ }
94
+ return true;
95
+ };
96
+ },
97
+ },
98
+
99
+ watch: {},
100
+ methods: {
101
+ handleClick(method, row, index) {
102
+ if(this.$parent){
103
+ this.$parent.$emit("on-buttons", { method, row, index });
104
+ }
105
+ },
106
+ },
107
+ };
108
+ </script>
109
+
110
+ <style>
111
+ </style>
@@ -0,0 +1,7 @@
1
+ import XnTable from './main.vue'
2
+
3
+ XnTable.install = function (Vue) {
4
+ Vue.component(XnTable.name, XnTable)
5
+ }
6
+
7
+ export default XnTable
@@ -0,0 +1,104 @@
1
+ <template>
2
+ <div class="xn-table-box">
3
+ <div
4
+ class="xn-table-box-tools"
5
+ v-if="isTools"
6
+ :class="{ 'is-border': !border }"
7
+ >
8
+ <slot name="tools">
9
+ <el-button
10
+ circle
11
+ size="mini"
12
+ @click="$emit('on-refresh')"
13
+ icon="el-icon-refresh"
14
+ ></el-button>
15
+ </slot>
16
+ </div>
17
+ <el-table
18
+ :data="data"
19
+ v-on="$listeners"
20
+ v-bind="$attrs"
21
+ :border="border"
22
+ :stripe="stripe"
23
+ >
24
+ <el-table-column
25
+ v-if="selection && data.length"
26
+ v-bind="$attrs"
27
+ type="selection"
28
+ width="50px"
29
+ align="center"
30
+ ></el-table-column>
31
+ <el-table-column
32
+ width="50px"
33
+ label="序号"
34
+ v-if="index && data.length"
35
+ type="index"
36
+ ></el-table-column>
37
+ <slot name="column">
38
+ <column
39
+ v-for="(item, idx) in columns"
40
+ :key="idx"
41
+ v-bind="item"
42
+ ></column>
43
+ </slot>
44
+ </el-table>
45
+ <xn-page
46
+ :hidden="!showPage"
47
+ :total="pageConfig.total"
48
+ :page.sync="pageConfig.pageNum"
49
+ :limit.sync="pageConfig.pageSize"
50
+ @pagination="getList"
51
+ layout="total, prev, pager, next, jumper"
52
+ ></xn-page>
53
+ </div>
54
+ </template>
55
+
56
+ <script>
57
+ import column from "./column.vue";
58
+ export default {
59
+ name: "XnTable",
60
+ components: { column },
61
+ props: {
62
+ data: {
63
+ type: Array,
64
+ default: () => {},
65
+ },
66
+ border: {
67
+ type: Boolean,
68
+ default: false,
69
+ },
70
+ columns: {
71
+ type: Array,
72
+ default: () => {},
73
+ },
74
+ stripe: Boolean,
75
+ selection: Boolean,
76
+ showPage: Boolean,
77
+ pageConfig: {
78
+ type: Object,
79
+ default: () => {
80
+ return {
81
+ pageSize: 15,
82
+ pageNum: 1,
83
+ };
84
+ },
85
+ },
86
+ index: Boolean,
87
+ expand: Boolean,
88
+ isTools: Boolean,
89
+ },
90
+ computed: {
91
+ isObj() {
92
+ return typeof this.pageConfig === "object";
93
+ },
94
+ },
95
+ methods: {
96
+ getList(val) {
97
+ this.$emit("on-page", val);
98
+ },
99
+ },
100
+ };
101
+ </script>
102
+
103
+ <style>
104
+ </style>
Binary file
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html lang="">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico">
8
+ <title><%= htmlWebpackPlugin.options.title %></title>
9
+ <link rel="stylesheet" href="//shadow.elemecdn.com/npm/highlight.js@9.3.0/styles/color-brewer.css">
10
+ </head>
11
+ <body>
12
+ <noscript>
13
+ <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
14
+ </noscript>
15
+ <div id="app"></div>
16
+ <!-- built files will be auto injected -->
17
+ </body>
18
+ </html>