@idooel/components 0.0.0 → 0.0.1-beta.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 (32) hide show
  1. package/dist/@idooel/components.esm.js +2634 -0
  2. package/dist/@idooel/components.umd.js +1019 -179
  3. package/package.json +44 -41
  4. package/packages/button/index.js +4 -4
  5. package/packages/button/src/index.vue +54 -24
  6. package/packages/composite-components/button-group/index.js +4 -4
  7. package/packages/composite-components/button-group/src/index.vue +50 -46
  8. package/packages/composite-components/search-area/index.js +4 -4
  9. package/packages/composite-components/search-area/src/index.vue +171 -128
  10. package/packages/composite-components/search-area/src/label.vue +35 -35
  11. package/packages/date/index.js +4 -4
  12. package/packages/date/src/index.vue +39 -39
  13. package/packages/index.js +50 -49
  14. package/packages/input/index.js +4 -4
  15. package/packages/input/src/index.vue +23 -23
  16. package/packages/select/index.js +4 -4
  17. package/packages/select/src/index.vue +34 -34
  18. package/packages/table/index.js +4 -4
  19. package/packages/table/src/action.vue +131 -44
  20. package/packages/table/src/index.vue +157 -88
  21. package/packages/theme/index.scss +12 -0
  22. package/packages/theme/variables.scss +34 -0
  23. package/packages/tpl/index.js +4 -4
  24. package/packages/tpl/src/index.vue +50 -39
  25. package/packages/tree/index.js +4 -4
  26. package/packages/tree/src/TreeNode.vue +29 -29
  27. package/packages/tree/src/index.vue +101 -96
  28. package/packages/tree-table-model/index.js +4 -4
  29. package/packages/tree-table-model/src/index.vue +306 -289
  30. package/scripts/rollup.config.js +35 -41
  31. package/scripts/rollup.esm.config.js +12 -0
  32. package/scripts/rollup.umd.config.js +14 -14
@@ -1,89 +1,158 @@
1
- <template>
2
- <div class="g-table__wrapper">
3
- <a-table
4
- :pagination="false"
5
- :loading="loading"
6
- :columns="columns"
7
- :row-class-name="setRowClassName"
8
- :data-source="dataSource"
9
- :scroll="{ x: 1500, y: 500 }">
10
- <template slot="action" slot-scope="record">
11
- <Actions v-on="$listeners" :data-source="actions" :record="record"></Actions>
12
- </template>
13
- </a-table>
14
- <div class="g-table__pagination">
15
- <a-pagination
16
- :show-total="total => `共 ${total} 条数据`"
17
- show-size-changer
18
- show-quick-jumper
19
- :pageSize="pageSize"
20
- :pageSizeOptions="pageSizeOptions"
21
- @change="onChangePagination"
22
- :total="total">
23
- </a-pagination>
24
- </div>
25
- </div>
26
- </template>
27
-
28
- <script>
29
- import Actions from './action.vue'
30
- export default {
31
- name: 'ele-table',
32
- components: {
33
- Actions
34
- },
35
- props: {
36
- actions: {
37
- type: Array,
38
- default: () => []
39
- },
40
- total: {
41
- type: Number,
42
- default: 0
43
- },
44
- loading: {
45
- type: Boolean,
46
- default: false
47
- },
48
- columns: {
49
- type: Array,
50
- default: () => []
51
- },
52
- dataSource: {
53
- type: Array,
54
- default: () => []
55
- },
56
- pageSize: {
57
- type: Number,
58
- default: 10
59
- },
60
- pageSizeOptions: {
61
- type: Array,
62
- default: () => ['10', '20', '30', '40']
63
- }
64
- },
65
- methods: {
66
- setRowClassName (record, idx) {
67
- return idx % 2 === 0 ? 'g-table__row--even' : 'g-table__row--odd'
68
- },
69
- onChangePagination (page, pagrSize) {
70
- this.$emit('change-page', page, pagrSize)
71
- }
72
- }
73
- }
74
- </script>
75
-
76
- <style lang="scss" scoped>
77
- .g-table__wrapper {
78
- padding: 16px;
79
- padding-top: unset;
80
- .g-table__row--even {}
81
- .g-table__row--odd {}
82
- .g-table__pagination {
83
- margin-top: 8px;
84
- display: flex;
85
- flex-direction: row;
86
- justify-content: end;
87
- }
88
- }
1
+ <template>
2
+ <div class="g-table__wrapper">
3
+ <a-table
4
+ :pagination="false"
5
+ :loading="loading"
6
+ :columns="columns"
7
+ :row-class-name="setRowClassName"
8
+ :data-source="dataSource"
9
+ :scroll="{ x: 1500, y: 500 }">
10
+ <template slot="action" slot-scope="record">
11
+ <Actions v-on="$listeners" :data-source="actions" :record="record"></Actions>
12
+ </template>
13
+ </a-table>
14
+ <div class="g-table__pagination">
15
+ <a-pagination
16
+ :show-total="total => `共 ${total} 条数据`"
17
+ show-size-changer
18
+ show-quick-jumper
19
+ :pageSize="pageSize"
20
+ :pageSizeOptions="pageSizeOptions"
21
+ @change="onChangePagination"
22
+ :total="total">
23
+ </a-pagination>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import Actions from './action.vue'
30
+ export default {
31
+ name: 'ele-table',
32
+ components: {
33
+ Actions
34
+ },
35
+ props: {
36
+ actions: {
37
+ type: Array,
38
+ default: () => []
39
+ },
40
+ total: {
41
+ type: Number,
42
+ default: 0
43
+ },
44
+ loading: {
45
+ type: Boolean,
46
+ default: false
47
+ },
48
+ columns: {
49
+ type: Array,
50
+ default: () => []
51
+ },
52
+ dataSource: {
53
+ type: Array,
54
+ default: () => []
55
+ },
56
+ pageSize: {
57
+ type: Number,
58
+ default: 10
59
+ },
60
+ pageSizeOptions: {
61
+ type: Array,
62
+ default: () => ['10', '20', '30', '40']
63
+ }
64
+ },
65
+ methods: {
66
+ setRowClassName (record, idx) {
67
+ return idx % 2 === 0 ? 'g-table__row--even' : 'g-table__row--odd'
68
+ },
69
+ onChangePagination (page, pagrSize) {
70
+ this.$emit('change-page', page, pagrSize)
71
+ }
72
+ }
73
+ }
74
+ </script>
75
+
76
+ <style lang="scss" scoped>
77
+ .g-table__wrapper {
78
+ ::v-deep .ant-table-wrapper {
79
+ .ant-table {
80
+ border-width: calc(var(--idooel-border-width) * 1px);
81
+ border-style: solid;
82
+ border-color: var(--idooel-border-color);
83
+ }
84
+ .ant-table-header {
85
+ .ant-table-fixed {
86
+ /* border-bottom: 2px solid #53a8ff !important; */
87
+ }
88
+ }
89
+ .ant-table-tbody {
90
+ tr {
91
+ td {
92
+ border-color: var(--idooel-column-border-color);
93
+ border-width: calc(var(--idooel-column-border-width) * 1px);;
94
+ border-style: solid;
95
+ border-top: unset;
96
+ border-left: unset;
97
+ }
98
+ }
99
+ }
100
+ .ant-table-body {
101
+ border-top-width: calc(var(--idooel-border-width) * 1px);
102
+ border-top-style: solid;
103
+ border-top-color: var(--idooel-border-color);
104
+ }
105
+ .ant-table-fixed-left {
106
+ border-bottom-width: calc(var(--idooel-border-width) * 1px);
107
+ border-bottom-style: solid;
108
+ border-bottom-color: var(--idooel-border-color);
109
+ .ant-table-header {
110
+ border-bottom-width: calc(var(--idooel-border-width) * 1px);
111
+ border-bottom-style: solid;
112
+ border-bottom-color: var(--idooel-border-color);
113
+ }
114
+ .ant-table-body-inner {
115
+ border-right-width: calc(var(--idooel-border-width) * 1px);
116
+ border-right-style: solid;
117
+ border-right-color: var(--idooel-border-color);
118
+ }
119
+ .ant-table-fixed {
120
+ border-right-width: calc(var(--idooel-border-width) * 1px);
121
+ border-right-color: var(--idooel-border-color);
122
+ border-right-style: solid;
123
+ }
124
+ }
125
+ .ant-table-fixed-right {
126
+ .ant-table-header {
127
+ border-bottom-width: calc(var(--idooel-border-width) * 1px);
128
+ border-bottom-color: var(--idooel-border-color);
129
+ border-bottom-style: solid;
130
+ }
131
+ border-bottom-width: calc(var(--idooel-border-width) * 1px);
132
+ border-bottom-style: solid;
133
+ border-bottom-color: var(--idooel-border-color);
134
+ .ant-table-fixed {
135
+ border-left-width: calc(var(--idooel-border-width) * 1px);
136
+ border-left-style: solid;
137
+ border-left-color: var(--idooel-border-color);
138
+ }
139
+ }
140
+ }
141
+ padding: 16px;
142
+ padding-top: unset;
143
+ .g-table__row--even {}
144
+ .g-table__row--odd {}
145
+ .g-table__pagination {
146
+ /* margin-top: 8px; */
147
+ display: flex;
148
+ flex-direction: row;
149
+ justify-content: end;
150
+ border-width: calc(var(--idooel-border-width) * 1px);
151
+ border-color: var(--idooel-border-color);
152
+ border-style: solid;
153
+ border-top: unset;
154
+ padding-top: 8px;
155
+ padding-bottom: 8px;
156
+ }
157
+ }
89
158
  </style>
@@ -0,0 +1,12 @@
1
+ @import 'variables.scss';
2
+
3
+ $primary: $primary-06;
4
+
5
+ :root {
6
+ --idooel-primary-color: #{$primary};
7
+ //Table
8
+ --idooel-border-width: 2;
9
+ --idooel-border-color: #53a8ff;
10
+ --idooel-column-border-width: 1;
11
+ --idooel-column-border-color: #d9ecff;
12
+ }
@@ -0,0 +1,34 @@
1
+ $primary-01: #E6F7FF !default;
2
+ $primary-02: #BAE7FF !default;
3
+ $primary-03: #91D5FF !default;
4
+ $primary-04: #69C0FF !default;
5
+ $primary-05: #40A9FF !default;
6
+ $primary-06: #1890FF !default;
7
+ $primary-07: #096DD9 !default;
8
+ $primary-08: #0050B3 !default;
9
+ $primary-09: #003A8C !default;
10
+ $primary-10: #002766 !default;
11
+
12
+ $link-01: #E6F7FF;
13
+ $link-03: #91D5FF;
14
+ $link-05: #40A9FF;
15
+ $link-06: #1890FF;
16
+ $link-07: #096DD9;
17
+
18
+ $error-01: #FFF1F0;
19
+ $error-03: #FFA39E;
20
+ $error-05: #FF4D4F;
21
+ $error-06: #F5222D;
22
+ $error-07: #CF1322;
23
+
24
+ $warning-01: #FFFBE6;
25
+ $warning-03: #FFE58F;
26
+ $warning-05: #FFC53D;
27
+ $warning-06: #FAAD14;
28
+ $warning-07: #D48806;
29
+
30
+ $success-01: #F6FFED;
31
+ $success-03: #B7EB8F;
32
+ $success-05: #73D13D;
33
+ $success-06: #52C41A;
34
+ $success-07: #389E0D;
@@ -1,5 +1,5 @@
1
- import EleTpl from './src/index.vue'
2
-
3
- EleTpl.install = Vue => Vue.component(EleTpl.name, EleTpl)
4
-
1
+ import EleTpl from './src/index.vue'
2
+
3
+ EleTpl.install = Vue => Vue.component(EleTpl.name, EleTpl)
4
+
5
5
  export default EleTpl
@@ -1,39 +1,50 @@
1
- <template>
2
- <component
3
- v-if="modelName"
4
- :is="modelName"
5
- :ref="genModelRef"
6
- v-bind="$attrs"
7
- v-on="$listeners">
8
- <template v-for="(idx, name) in $scopedSlots" v-slot:[name]="data">
9
- <slot :name="name" v-bind="data"></slot>
10
- </template>
11
- </component>
12
- <div v-else>未正确配置模版</div>
13
- </template>
14
-
15
- <script>
16
- import EleTreeTableModel from '../../tree-table-model/src/index.vue'
17
- import { v4 as uuidv4 } from 'uuid'
18
- export default {
19
- name: 'ele-tpl',
20
- props: {
21
- modelName: {
22
- type: String
23
- }
24
- },
25
- components: {
26
- [EleTreeTableModel.name]: EleTreeTableModel
27
- },
28
- computed: {
29
- genModelRef () {
30
- return uuidv4()
31
- }
32
- },
33
- methods: {
34
- getModel () {
35
- return this.$refs[this.genModelRef]
36
- }
37
- }
38
- }
39
- </script>
1
+ <template>
2
+ <component
3
+ v-if="modelNameValidator.existed"
4
+ :is="modelName"
5
+ :ref="genModelRef"
6
+ v-bind="$attrs"
7
+ v-on="$listeners">
8
+ <template v-for="(idx, name) in $scopedSlots" v-slot:[name]="data">
9
+ <slot :name="name" v-bind="data"></slot>
10
+ </template>
11
+ </component>
12
+ <div v-else v-html="modelNameValidator.message"></div>
13
+ </template>
14
+
15
+ <script>
16
+ import EleTreeTableModel from '../../tree-table-model/src/index.vue'
17
+ import { v4 as uuidv4 } from 'uuid'
18
+ import { models } from '../../index.js'
19
+ export default {
20
+ name: 'ele-tpl',
21
+ props: {
22
+ modelName: {
23
+ type: String
24
+ }
25
+ },
26
+ components: {
27
+ [EleTreeTableModel.name]: EleTreeTableModel
28
+ },
29
+ computed: {
30
+ modelNameValidator () {
31
+ const target = models.find(model => model.name === this.modelName)
32
+ return {
33
+ existed: !!target,
34
+ message: !!target ? '' : `Model <span style="color:red;">${this.modelName}</span> not found`
35
+ }
36
+ },
37
+ genModelRef () {
38
+ return uuidv4()
39
+ }
40
+ },
41
+ methods: {
42
+ getModel () {
43
+ return this.$refs[this.genModelRef]
44
+ }
45
+ }
46
+ }
47
+ </script>
48
+ <style lang="scss">
49
+ @import '../../theme/index.scss';
50
+ </style>
@@ -1,5 +1,5 @@
1
- import EleTree from './src/index.vue'
2
-
3
- EleTree.install = Vue => Vue.component(EleTree.name, EleTree)
4
-
1
+ import EleTree from './src/index.vue'
2
+
3
+ EleTree.install = Vue => Vue.component(EleTree.name, EleTree)
4
+
5
5
  export default EleTree
@@ -1,30 +1,30 @@
1
- <template>
2
- <a-tree-node :key="node.key" :title="node.title">
3
- <a-icon slot="icon" type="carry-out" />
4
- <template v-if="node.children">
5
- <TreeNode
6
- v-for="(children, idx) in node.children"
7
- :key="idx"
8
- :node="children">
9
- </TreeNode>
10
- </template>
11
- <!-- <span slot="title" style="color: #1890ff">parent 1</span> -->
12
- </a-tree-node>
13
- </template>
14
-
15
- <script>
16
- export default {
17
- name: 'TreeNode',
18
- isTreeNode: true,
19
- props: {
20
- node: {
21
- type: Object,
22
- required: true
23
- }
24
- }
25
- }
26
- </script>
27
-
28
- <style scoped>
29
-
1
+ <template>
2
+ <a-tree-node :key="node.key" :title="node.title">
3
+ <a-icon slot="icon" type="carry-out" />
4
+ <template v-if="node.children">
5
+ <TreeNode
6
+ v-for="(children, idx) in node.children"
7
+ :key="idx"
8
+ :node="children">
9
+ </TreeNode>
10
+ </template>
11
+ <!-- <span slot="title" style="color: #1890ff">parent 1</span> -->
12
+ </a-tree-node>
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ name: 'TreeNode',
18
+ isTreeNode: true,
19
+ props: {
20
+ node: {
21
+ type: Object,
22
+ required: true
23
+ }
24
+ }
25
+ }
26
+ </script>
27
+
28
+ <style scoped>
29
+
30
30
  </style>
@@ -1,97 +1,102 @@
1
- <template>
2
- <div class="g-tree__wrapper">
3
- <a-tree
4
- v-if="innerTreeData.length"
5
- :tree-data="innerTreeData"
6
- @select="selectTreeNode"
7
- :replaceFields="replaceFields"
8
- :default-expanded-keys="defaultExpandedKeys"
9
- :default-selected-keys="defaultSelectedKeys"
10
- blockNode
11
- :show-icon="showIcon">
12
- <template #title="{ title }">
13
- <span :title="title" class="tree-node__title">
14
- {{ title }}
15
- </span>
16
- </template>
17
- <template slot="custom" slot-scope="{ scopedSlots }">
18
- <a-icon :type="scopedSlots.iconName"></a-icon>
19
- </template>
20
- </a-tree>
21
- </div>
22
- </template>
23
-
24
- <script>
25
- export default {
26
- name: 'ele-tree',
27
- props: {
28
- treeData: {
29
- type: Array,
30
- default: () => []
31
- },
32
- replaceFields: {
33
- type: Object,
34
- default: () => ({
35
- title: 'title',
36
- key: 'id',
37
- children: 'children'
38
- })
39
- },
40
- defaultExpandedKeys: {
41
- type: Array
42
- },
43
- defaultSelectedKeys: {
44
- type: Array
45
- },
46
- showIcon: {
47
- type: Boolean,
48
- default: true
49
- }
50
- },
51
- data () {
52
- return {}
53
- },
54
- computed: {
55
- innerTreeData () {
56
- return this.treeData
57
- // return [
58
- // {
59
- // title: 'parent 1',
60
- // key: 1,
61
- // scopedSlots: {
62
- // icon: 'custom',
63
- // iconName: 'smile-o'
64
- // },
65
- // children: [
66
- // {
67
- // title: '2',
68
- // key: 2,
69
- // scopedSlots: {
70
- // icon: 'custom',
71
- // iconName: 'frown-o'
72
- // }
73
- // }
74
- // ]
75
- // }
76
- // ]
77
- }
78
- },
79
- methods: {
80
- refreshTreeStatus (props = {}) {},
81
- selectTreeNode (selectedKeys, e) {
82
- this.$emit('select', selectedKeys, e)
83
- }
84
- }
85
- }
86
- </script>
87
-
88
- <style lang="scss" scoped>
89
- .g-tree__wrapper {
90
- overflow: hidden;
91
- ::v-deep .ant-tree-node-content-wrapper {
92
- text-overflow: ellipsis;
93
- overflow: hidden;
94
- white-space: nowrap;
95
- }
96
- }
1
+ <template>
2
+ <div class="g-tree__wrapper">
3
+ <a-tree
4
+ v-if="innerTreeData.length"
5
+ :tree-data="innerTreeData"
6
+ @select="selectTreeNode"
7
+ :replaceFields="replaceFields"
8
+ :default-expanded-keys="defaultExpandedKeys"
9
+ :default-selected-keys="defaultSelectedKeys"
10
+ blockNode
11
+ :show-icon="showIcon">
12
+ <template #title="{ title }">
13
+ <span :title="title" class="tree-node__title">
14
+ {{ title }}
15
+ </span>
16
+ </template>
17
+ <template slot="custom" slot-scope="{ scopedSlots }">
18
+ <a-icon :type="scopedSlots.iconName"></a-icon>
19
+ </template>
20
+ </a-tree>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: 'ele-tree',
27
+ props: {
28
+ treeData: {
29
+ type: Array,
30
+ default: () => []
31
+ },
32
+ replaceFields: {
33
+ type: Object,
34
+ default: () => ({
35
+ title: 'title',
36
+ key: 'id',
37
+ children: 'children'
38
+ })
39
+ },
40
+ defaultExpandedKeys: {
41
+ type: Array
42
+ },
43
+ defaultSelectedKeys: {
44
+ type: Array
45
+ },
46
+ showIcon: {
47
+ type: Boolean,
48
+ default: true
49
+ }
50
+ },
51
+ data () {
52
+ return {}
53
+ },
54
+ computed: {
55
+ innerTreeData () {
56
+ return this.treeData
57
+ // return [
58
+ // {
59
+ // title: 'parent 1',
60
+ // key: 1,
61
+ // scopedSlots: {
62
+ // icon: 'custom',
63
+ // iconName: 'smile-o'
64
+ // },
65
+ // children: [
66
+ // {
67
+ // title: '2',
68
+ // key: 2,
69
+ // scopedSlots: {
70
+ // icon: 'custom',
71
+ // iconName: 'frown-o'
72
+ // }
73
+ // }
74
+ // ]
75
+ // }
76
+ // ]
77
+ }
78
+ },
79
+ methods: {
80
+ refreshTreeStatus (props = {}) {},
81
+ selectTreeNode (selectedKeys, e) {
82
+ this.$emit('select', selectedKeys, e)
83
+ }
84
+ }
85
+ }
86
+ </script>
87
+
88
+ <style lang="scss" scoped>
89
+ .g-tree__wrapper {
90
+ overflow: hidden;
91
+ ::v-deep .ant-tree {
92
+ .ant-tree-node-content-wrapper {
93
+ text-overflow: ellipsis;
94
+ overflow: hidden;
95
+ white-space: nowrap;
96
+ }
97
+ .ant-tree-node-selected {
98
+ color: #fff;
99
+ }
100
+ }
101
+ }
97
102
  </style>
@@ -1,5 +1,5 @@
1
- import EleTreeTableModel from './src/index.vue'
2
-
3
- EleTreeTableModel.install = Vue => Vue.component(EleTreeTableModel.name, EleTreeTableModel)
4
-
1
+ import EleTreeTableModel from './src/index.vue'
2
+
3
+ EleTreeTableModel.install = Vue => Vue.component(EleTreeTableModel.name, EleTreeTableModel)
4
+
5
5
  export default EleTreeTableModel