ct-component-plus 0.0.42 → 0.0.43

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 (91) hide show
  1. package/package.json +36 -36
  2. package/packages/components/button/index.js +8 -8
  3. package/packages/components/button/src/button.vue +171 -171
  4. package/packages/components/cascader/index.js +7 -7
  5. package/packages/components/cascader/src/cascader.vue +247 -247
  6. package/packages/components/cascader/src/ct-cascader.vue +260 -260
  7. package/packages/components/cascader/src/index.js +50 -50
  8. package/packages/components/checkbox/index.js +7 -7
  9. package/packages/components/checkbox/src/checkbox.vue +51 -51
  10. package/packages/components/checkbox/src/index.js +12 -12
  11. package/packages/components/date-picker/index.js +8 -8
  12. package/packages/components/date-picker/src/clear-icon.vue +2 -2
  13. package/packages/components/date-picker/src/date-icon.vue +2 -2
  14. package/packages/components/date-picker/src/date-picker.vue +77 -77
  15. package/packages/components/date-picker/src/index.js +33 -33
  16. package/packages/components/dialog/index.js +8 -8
  17. package/packages/components/dialog/src/dialog.vue +103 -103
  18. package/packages/components/empty/index.js +8 -8
  19. package/packages/components/empty/src/empty.vue +97 -97
  20. package/packages/components/index.js +81 -81
  21. package/packages/components/input/index.js +7 -7
  22. package/packages/components/input/src/index.js +13 -13
  23. package/packages/components/input/src/input.vue +106 -106
  24. package/packages/components/input-range/index.js +7 -7
  25. package/packages/components/input-range/src/index.js +29 -29
  26. package/packages/components/input-range/src/input-range.vue +233 -233
  27. package/packages/components/loading/index.js +7 -7
  28. package/packages/components/loading/src/CtLoading.vue +74 -74
  29. package/packages/components/loading/src/beating.vue +71 -71
  30. package/packages/components/loading/src/progress.vue +120 -120
  31. package/packages/components/loading/src/spinner.vue +38 -38
  32. package/packages/components/menu/index.js +7 -7
  33. package/packages/components/menu/src/item.vue +46 -46
  34. package/packages/components/menu/src/link.vue +28 -28
  35. package/packages/components/menu/src/logo.vue +25 -25
  36. package/packages/components/menu/src/menu-item.vue +103 -103
  37. package/packages/components/menu/src/menu.vue +191 -191
  38. package/packages/components/menu/src/utils/index.js +4 -4
  39. package/packages/components/message/icon/ErrorIcon.vue +25 -25
  40. package/packages/components/message/icon/InfoIcon.vue +25 -25
  41. package/packages/components/message/icon/SuccessIcon.vue +25 -25
  42. package/packages/components/message/icon/WarningIcon.vue +25 -25
  43. package/packages/components/message/index.js +8 -8
  44. package/packages/components/message/src/method.js +54 -54
  45. package/packages/components/message-box/index.js +7 -7
  46. package/packages/components/message-box/src/message-box.vue +107 -107
  47. package/packages/components/page/index.js +7 -7
  48. package/packages/components/page/src/modules/DownloadButton.vue +21 -21
  49. package/packages/components/page/src/modules/TableTitle.vue +151 -151
  50. package/packages/components/page/src/page.vue +382 -382
  51. package/packages/components/pagination/index.js +7 -7
  52. package/packages/components/pagination/src/pagination.vue +36 -36
  53. package/packages/components/radio/index.js +7 -7
  54. package/packages/components/radio/src/index.js +12 -12
  55. package/packages/components/radio/src/radio.vue +47 -47
  56. package/packages/components/search-box/index.js +24 -24
  57. package/packages/components/search-box/src/index.js +29 -29
  58. package/packages/components/search-box/src/search-box.vue +250 -251
  59. package/packages/components/search-box/src/slot.vue +4 -4
  60. package/packages/components/select/index.js +7 -7
  61. package/packages/components/select/src/arrow-down.vue +2 -2
  62. package/packages/components/select/src/clear-icon.vue +2 -2
  63. package/packages/components/select/src/empty.vue +13 -13
  64. package/packages/components/select/src/index.js +51 -51
  65. package/packages/components/select/src/select.vue +380 -380
  66. package/packages/components/table/index.js +7 -7
  67. package/packages/components/table/src/TableSort.vue +179 -179
  68. package/packages/components/table/src/index.js +70 -66
  69. package/packages/components/table/src/table.vue +287 -287
  70. package/packages/components/tabs/index.js +7 -7
  71. package/packages/components/tabs/src/tabs.vue +225 -225
  72. package/packages/components/year-select/index.js +7 -7
  73. package/packages/components/year-select/src/index.js +44 -44
  74. package/packages/components/year-select/src/year-select.vue +273 -273
  75. package/packages/echarts/bar/index.js +63 -63
  76. package/packages/echarts/base.js +99 -99
  77. package/packages/echarts/line/index.js +106 -106
  78. package/packages/hooks/index.js +5 -5
  79. package/packages/hooks/use-buried/index.js +46 -46
  80. package/packages/hooks/use-checked-all/index.js +37 -37
  81. package/packages/hooks/use-echarts/index.js +1 -1
  82. package/packages/hooks/use-echarts/use-bar/index.js +72 -72
  83. package/packages/hooks/use-echarts/use-line/index.js +88 -88
  84. package/packages/hooks/use-namespace/index.js +65 -65
  85. package/packages/hooks/use-search-component/index.js +28 -28
  86. package/packages/style/element.less +725 -725
  87. package/packages/style/index.js +2 -2
  88. package/packages/style/init.less +114 -114
  89. package/packages/utils/index.js +1 -1
  90. package/packages/utils/operate.js +77 -77
  91. package/packages/utils/types.js +35 -35
@@ -1,8 +1,8 @@
1
- import CtTable from './src/table.vue';
2
-
3
- /* istanbul ignore next */
4
- CtTable.install = function (Vue) {
5
- Vue.component('CtTable', CtTable);
6
- };
7
-
1
+ import CtTable from './src/table.vue';
2
+
3
+ /* istanbul ignore next */
4
+ CtTable.install = function (Vue) {
5
+ Vue.component('CtTable', CtTable);
6
+ };
7
+
8
8
  export default CtTable;
@@ -1,180 +1,180 @@
1
- <template>
2
- <div :class="ns.b()">
3
- <el-popover
4
- placement="bottom-start"
5
- :popper-class="ns.e('popover')"
6
- trigger="click"
7
- >
8
- <template #reference>
9
- <div :class="ns.e('btn')">
10
- <ct-icon name="sort2-down_line" size="16"></ct-icon>
11
- 排序
12
- </div>
13
- </template>
14
- <div :class="ns.e('content')">
15
- <div :class="ns.e('order')">
16
- <div
17
- :class="[
18
- ns.em('order', 'item'),
19
- ns.e('item'),
20
- ns.is('active', sortOrder === item.value),
21
- ]"
22
- v-for="item in popover.orderList"
23
- :key="item.value"
24
- @click="handleOrder(item)"
25
- >
26
- <ct-icon name="check_line" :class="ns.em('item', 'icon')"></ct-icon>
27
- {{ item.label }}
28
- </div>
29
- </div>
30
- <div :class="ns.e('list')">
31
- <div
32
- :class="[
33
- ns.em('list', 'item'),
34
- ns.e('item'),
35
- ns.is('active', sortProp === item.value),
36
- ]"
37
- v-for="item in sortList"
38
- :key="item.value"
39
- @click="handleProp(item)"
40
- >
41
- <ct-icon name="check_line" :class="ns.em('item', 'icon')"></ct-icon>
42
- {{ item.label }}
43
- </div>
44
- </div>
45
- </div>
46
- </el-popover>
47
- </div>
48
- </template>
49
-
50
- <script setup>
51
- import { ref, reactive, onMounted, computed } from "vue";
52
- import { useNamespace } from "../../../hooks";
53
-
54
- const ns = useNamespace("table-sort");
55
- const props = defineProps({
56
- sortList: {
57
- //需要排序的字段列表
58
- type: Array,
59
- },
60
- sortObj: {
61
- //双向绑定的排序参数对象
62
- type: Object,
63
- default: () => {
64
- return {};
65
- },
66
- },
67
- });
68
- const emit = defineEmits(["update:sortObj"]);
69
-
70
- const popover = reactive({
71
- visible: false,
72
- orderList: [
73
- { label: "升序", value: "ascending" },
74
- { label: "降序", value: "descending" },
75
- ],
76
- });
77
- const sortOrder = computed({
78
- get() {
79
- return props.sortObj.order;
80
- },
81
- set(val) {
82
- const newSortObj = {
83
- ...props.sortObj,
84
- order: val,
85
- };
86
- emit("update:sortObj", newSortObj);
87
- },
88
- });
89
- const handleOrder = (item) => {
90
- if (sortOrder.value !== item.value) {
91
- sortOrder.value = item.value;
92
- }
93
- };
94
- const sortProp = computed({
95
- get() {
96
- return props.sortObj.prop;
97
- },
98
- set(val) {
99
- const newSortObj = {
100
- ...props.sortObj,
101
- prop: val,
102
- };
103
- emit("update:sortObj", newSortObj);
104
- },
105
- });
106
- const handleProp = (item) => {
107
- if (sortProp.value !== item.value) {
108
- sortProp.value = item.value;
109
- }
110
- };
111
- </script>
112
-
113
- <style scoped lang='less'>
114
- .ct-table-sort {
115
- @R:.ct-table-sort;
116
- width: fit-content;
117
- &__btn {
118
- color: var(--ct-color-sub-blue);
119
- line-height: 18px;
120
- display: flex;
121
- align-items: center;
122
- width: fit-content;
123
- cursor: pointer;
124
- }
125
- &__content {
126
- @{R}__item{
127
- line-height: 20px;
128
- padding: 5px 16px;
129
- border-radius: 4px;
130
- cursor: pointer;
131
- display: flex;
132
- align-items: center;
133
- &:not(:last-child){
134
- margin-bottom: 2px;
135
- }
136
- &--icon{
137
- margin-right: 6px;
138
- height: 14px;
139
- color:#fff;
140
- }
141
- &.is-active{
142
- @R:.ct-table-sort__item;
143
- background: var(--ct-component-hover-color);
144
- color: var(--ct-color-sub-blue);
145
- @{R}--icon{
146
- color: var(--ct-color-sub-blue);
147
- }
148
- }
149
- &:hover{
150
- color: var(--ct-color-sub-blue);
151
- }
152
- }
153
- @{R}__order{
154
- border-bottom: var(--ct-border-color-light) solid 1px;
155
- }
156
- @{R}__order--item{
157
- &:last-child{
158
- margin-bottom: 9px;
159
- }
160
- }
161
- @{R}__list{
162
- margin-top: 8px;
163
- max-height: 300px;
164
- overflow-y: auto;
165
- }
166
- @{R}__list--item{
167
-
168
- }
169
- }
170
- }
171
- </style>
172
-
173
- <style lang="less">
174
- .el-popover.el-popper.ct-table-sort__popover {
175
- padding: 11px 6px;
176
- min-width: 134px;
177
- box-shadow: 0px 4px 14px 0px rgba(102, 114, 144, 0.1);
178
- border-radius: 4px;
179
- }
1
+ <template>
2
+ <div :class="ns.b()">
3
+ <el-popover
4
+ placement="bottom-start"
5
+ :popper-class="ns.e('popover')"
6
+ trigger="click"
7
+ >
8
+ <template #reference>
9
+ <div :class="ns.e('btn')">
10
+ <ct-icon name="sort2-down_line" size="16"></ct-icon>
11
+ 排序
12
+ </div>
13
+ </template>
14
+ <div :class="ns.e('content')">
15
+ <div :class="ns.e('order')">
16
+ <div
17
+ :class="[
18
+ ns.em('order', 'item'),
19
+ ns.e('item'),
20
+ ns.is('active', sortOrder === item.value),
21
+ ]"
22
+ v-for="item in popover.orderList"
23
+ :key="item.value"
24
+ @click="handleOrder(item)"
25
+ >
26
+ <ct-icon name="check_line" :class="ns.em('item', 'icon')"></ct-icon>
27
+ {{ item.label }}
28
+ </div>
29
+ </div>
30
+ <div :class="ns.e('list')">
31
+ <div
32
+ :class="[
33
+ ns.em('list', 'item'),
34
+ ns.e('item'),
35
+ ns.is('active', sortProp === item.value),
36
+ ]"
37
+ v-for="item in sortList"
38
+ :key="item.value"
39
+ @click="handleProp(item)"
40
+ >
41
+ <ct-icon name="check_line" :class="ns.em('item', 'icon')"></ct-icon>
42
+ {{ item.label }}
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </el-popover>
47
+ </div>
48
+ </template>
49
+
50
+ <script setup>
51
+ import { ref, reactive, onMounted, computed } from "vue";
52
+ import { useNamespace } from "../../../hooks";
53
+
54
+ const ns = useNamespace("table-sort");
55
+ const props = defineProps({
56
+ sortList: {
57
+ //需要排序的字段列表
58
+ type: Array,
59
+ },
60
+ sortObj: {
61
+ //双向绑定的排序参数对象
62
+ type: Object,
63
+ default: () => {
64
+ return {};
65
+ },
66
+ },
67
+ });
68
+ const emit = defineEmits(["update:sortObj"]);
69
+
70
+ const popover = reactive({
71
+ visible: false,
72
+ orderList: [
73
+ { label: "升序", value: "ascending" },
74
+ { label: "降序", value: "descending" },
75
+ ],
76
+ });
77
+ const sortOrder = computed({
78
+ get() {
79
+ return props.sortObj.order;
80
+ },
81
+ set(val) {
82
+ const newSortObj = {
83
+ ...props.sortObj,
84
+ order: val,
85
+ };
86
+ emit("update:sortObj", newSortObj);
87
+ },
88
+ });
89
+ const handleOrder = (item) => {
90
+ if (sortOrder.value !== item.value) {
91
+ sortOrder.value = item.value;
92
+ }
93
+ };
94
+ const sortProp = computed({
95
+ get() {
96
+ return props.sortObj.prop;
97
+ },
98
+ set(val) {
99
+ const newSortObj = {
100
+ ...props.sortObj,
101
+ prop: val,
102
+ };
103
+ emit("update:sortObj", newSortObj);
104
+ },
105
+ });
106
+ const handleProp = (item) => {
107
+ if (sortProp.value !== item.value) {
108
+ sortProp.value = item.value;
109
+ }
110
+ };
111
+ </script>
112
+
113
+ <style scoped lang='less'>
114
+ .ct-table-sort {
115
+ @R:.ct-table-sort;
116
+ width: fit-content;
117
+ &__btn {
118
+ color: var(--ct-color-sub-blue);
119
+ line-height: 18px;
120
+ display: flex;
121
+ align-items: center;
122
+ width: fit-content;
123
+ cursor: pointer;
124
+ }
125
+ &__content {
126
+ @{R}__item{
127
+ line-height: 20px;
128
+ padding: 5px 16px;
129
+ border-radius: 4px;
130
+ cursor: pointer;
131
+ display: flex;
132
+ align-items: center;
133
+ &:not(:last-child){
134
+ margin-bottom: 2px;
135
+ }
136
+ &--icon{
137
+ margin-right: 6px;
138
+ height: 14px;
139
+ color:#fff;
140
+ }
141
+ &.is-active{
142
+ @R:.ct-table-sort__item;
143
+ background: var(--ct-component-hover-color);
144
+ color: var(--ct-color-sub-blue);
145
+ @{R}--icon{
146
+ color: var(--ct-color-sub-blue);
147
+ }
148
+ }
149
+ &:hover{
150
+ color: var(--ct-color-sub-blue);
151
+ }
152
+ }
153
+ @{R}__order{
154
+ border-bottom: var(--ct-border-color-light) solid 1px;
155
+ }
156
+ @{R}__order--item{
157
+ &:last-child{
158
+ margin-bottom: 9px;
159
+ }
160
+ }
161
+ @{R}__list{
162
+ margin-top: 8px;
163
+ max-height: 300px;
164
+ overflow-y: auto;
165
+ }
166
+ @{R}__list--item{
167
+
168
+ }
169
+ }
170
+ }
171
+ </style>
172
+
173
+ <style lang="less">
174
+ .el-popover.el-popper.ct-table-sort__popover {
175
+ padding: 11px 6px;
176
+ min-width: 134px;
177
+ box-shadow: 0px 4px 14px 0px rgba(102, 114, 144, 0.1);
178
+ border-radius: 4px;
179
+ }
180
180
  </style>
@@ -1,67 +1,71 @@
1
- import { ref } from "vue";
2
-
3
- export const tableEmits = ["update:multiSelect", "update:defaultSort"];
4
- export const tableProps = {
5
- tableProps: {
6
- type: Object,
7
- default() {
8
- return {
9
- tableData: [],
10
- columnData: [],
11
- };
12
- },
13
- validator(value) {
14
- // 必须有 tableData和columnData 字段
15
- const keys = Object.keys(value);
16
- return ["tableData", "columnData"].every(
17
- (key) => keys.indexOf(key) !== -1
18
- );
19
- },
20
- },
21
- columnWidth: {
22
- type: Array,
23
- default: () => {
24
- return []
25
- }
26
- },
27
- isMultiSelect: {//是否开启多选
28
- type: Boolean,
29
- default: false
30
- },
31
- multiSelect: {//多选数组
32
- type: Array,
33
- default: [],
34
- },
35
- multiSelectAttr: {
36
- type: Object,
37
- default: () => {
38
- return {
39
- width: '88'
40
- }
41
- }
42
- },
43
- selectableFn: {
44
- //判断每行是否可选
45
- type: Function
46
- },
47
- teleportDom: {
48
- type: [String, Object],
49
- },
50
- defaultSort: {
51
- type: Object,
52
- default: () => {
53
- return {}
54
- }
55
- },
56
- pagination: {
57
- type: [Number, String],
58
- },
59
- emptyText: {
60
- type: String,
61
- default: "暂无数据",
62
- },
63
- mergeList: Array,
64
- alignLeftKeys: Array,
65
- alignRightKeys: Array,
66
- rowKey: String,
1
+ import { ref } from "vue";
2
+
3
+ export const tableEmits = ["update:multiSelect", "update:defaultSort"];
4
+ export const tableProps = {
5
+ tableProps: {
6
+ type: Object,
7
+ default() {
8
+ return {
9
+ tableData: [],
10
+ columnData: [],
11
+ };
12
+ },
13
+ validator(value) {
14
+ // 必须有 tableData和columnData 字段
15
+ const keys = Object.keys(value);
16
+ return ["tableData", "columnData"].every(
17
+ (key) => keys.indexOf(key) !== -1
18
+ );
19
+ },
20
+ },
21
+ columnWidth: {
22
+ type: Array,
23
+ default: () => {
24
+ return []
25
+ }
26
+ },
27
+ isMultiSelect: {//是否开启多选
28
+ type: Boolean,
29
+ default: false
30
+ },
31
+ multiSelect: {//多选数组
32
+ type: Array,
33
+ default: [],
34
+ },
35
+ multiSelectAttr: {
36
+ type: Object,
37
+ default: () => {
38
+ return {
39
+ width: '88'
40
+ }
41
+ }
42
+ },
43
+ selectableFn: {
44
+ //判断每行是否可选
45
+ type: Function
46
+ },
47
+ teleportDom: {
48
+ type: [String, Object],
49
+ },
50
+ defaultSort: {
51
+ type: Object,
52
+ default: () => {
53
+ return {}
54
+ }
55
+ },
56
+ pagination: {
57
+ type: [Number, String],
58
+ },
59
+ emptyText: {
60
+ type: String,
61
+ default: "暂无数据",
62
+ },
63
+ mergeList: Array,
64
+ alignLeftKeys: Array,
65
+ alignRightKeys: Array,
66
+ rowKey: String,
67
+ showOverflowTooltip: {
68
+ type: Boolean,
69
+ default: true
70
+ }
67
71
  }