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,248 +1,248 @@
1
- <template>
2
- <el-cascader
3
- ref="cascaderRef"
4
- :class="[
5
- ns.b(),
6
- ns.is('disabled', disabled),
7
- ns.is('filterable', filterable),
8
- ]"
9
- v-model="showValue"
10
- :props="propsShow"
11
- :options="optionsShow"
12
- :show-all-levels="showAllLevels"
13
- :filterable="filterable"
14
- :clearable="clearable"
15
- :disabled="disabled"
16
- :popper-class="popperClassShow"
17
- v-bind="{ ...$attrs, ...rawAttr }"
18
- />
19
- <!-- <Teleport :to="appendPanelDom">
20
- <span>大写的六</span>
21
- </Teleport> -->
22
- </template>
23
-
24
- <script setup>
25
- import {
26
- onMounted,
27
- computed,
28
- ref,
29
- watch,
30
- inject,
31
- watchEffect,
32
- nextTick,
33
- } from "vue";
34
- import { cascaderEmits, cascaderProps } from "./index";
35
- import { useNamespace, useBuriedParams } from "../../../hooks";
36
- import { isArray, isFunction } from "../../../utils";
37
- const props = defineProps(cascaderProps);
38
- const emit = defineEmits(cascaderEmits);
39
- const baseDao = inject("$ctBaseDao");
40
- const serviceConfig = inject("$ctServiceConfig");
41
-
42
- const ns = useNamespace("cascader");
43
- const cascaderRef = ref(null);
44
- const checkedText = ref("");
45
- const propsShow = computed(() => {
46
- return {
47
- emitPath: false,
48
- ...(props.props || {}),
49
- multiple: props.multiple || props.props?.multiple || false,
50
- label: props.mapObj?.label || "label",
51
- value: props.mapObj?.value || "value",
52
- children: props.mapObj?.children || "children",
53
- };
54
- });
55
- const optionsByApi = ref([]);
56
- const optionsShow = computed(() => {
57
- return optionsByApi.value.length ? optionsByApi.value : props.options;
58
- });
59
- const showValue = computed({
60
- get() {
61
- return props.modelValue;
62
- },
63
- set(newValue) {
64
- emit("update:modelValue", newValue);
65
- },
66
- });
67
- watch(showValue, async (newValue) => {
68
- if (isFunction(props.cbs.change)) {
69
- await nextTick(); //这里得等一个nextTick,否则会拿不到最新选中的值
70
- const checkedNodes = cascaderRef.value?.getCheckedNodes() || [];
71
- const dataList = checkedNodes.map((item) => {
72
- return item.data;
73
- });
74
- props.cbs.change(dataList, cascaderRef.value);
75
- }
76
- });
77
- const popperClassShow = computed(() => {
78
- let popperClass = ns.e("dropdown");
79
- popperClass += props.popperClass || "";
80
- if (propsShow.value.multiple) {
81
- popperClass += " " + ns.is("multiple");
82
- }
83
- return popperClass;
84
- });
85
- watch(
86
- () => props.modelValue,
87
- (newValue) => {
88
- getCheckedText();
89
- }
90
- );
91
- const appendPanelDom = document.createElement("div");
92
-
93
- const getCheckedText = () => {
94
- const getCheckedNodes = cascaderRef.value?.getCheckedNodes;
95
- if (getCheckedNodes) {
96
- const textArr = getCheckedNodes();
97
- if (props.showAllLevels)
98
- checkedText.value = textArr
99
- .map((item) => {
100
- if (isArray(item.pathLabels))
101
- return item.pathLabels.join(props.separator);
102
- return item.label;
103
- })
104
- .join(props.separatorMultiple);
105
- else {
106
- checkedText.value = textArr
107
- .map((item) => item.label)
108
- .join(props.separatorMultiple);
109
- }
110
- }
111
- };
112
-
113
- const appendDom2Panel = () => {
114
- const dom = cascaderRef.value?.contentRef;
115
- if (dom) {
116
- const referenceNode = dom?.children[0];
117
- // appendPanelDom = document.createElement("div");
118
- appendPanelDom.setAttribute("id", "cascader-panel-append");
119
- dom.insertBefore(appendPanelDom, referenceNode);
120
- // dom.appendChild(div);
121
- }
122
- };
123
- useBuriedParams(props, emit);
124
- watchEffect(async () => {
125
- // 通过api获取数据,会监听api以及serviceParams的改变(收集到的依赖改变)都会触发重新查询
126
- const cbs = props.cbs || {};
127
- if (props.api && baseDao) {
128
- try {
129
- const method = props.serviceMethod || serviceConfig.defaultMethod;
130
- let params = props.serviceParams || {};
131
- if (isFunction(cbs.beforeSearch)) {
132
- const paramsHandle = await cbs.beforeSearch(params);
133
- if (paramsHandle === false) return;
134
- params = paramsHandle || params;
135
- }
136
-
137
- baseDao[method](props.api, params).then((res) => {
138
- const mapObj = props.mapObj || {};
139
- const { list } = mapObj; //其他参数放入propsShow
140
- let data = [];
141
- if (list) {
142
- data = res[list];
143
- } else {
144
- data = res;
145
- }
146
-
147
- optionsByApi.value = data;
148
- if (isFunction(cbs.afterSearch)) {
149
- cbs.afterSearch(res, optionsByApi, showValue);
150
- }
151
- });
152
- } catch (error) {}
153
- }
154
- if (isFunction(cbs.defineSearch)) {
155
- try {
156
- const defineSearchHandle = await cbs.defineSearch(
157
- optionsByApi,
158
- showValue
159
- );
160
- if (defineSearchHandle === false) return;
161
- if (defineSearchHandle) {
162
- optionsByApi.value = defineSearchHandle;
163
- }
164
- } catch (error) {}
165
- }
166
- });
167
-
168
- defineExpose({
169
- ref: cascaderRef,
170
- });
171
- onMounted(() => {
172
- appendDom2Panel();
173
- });
174
- </script>
175
- <style lang='less'>
176
- .ct-cascader {
177
- width: var(--ct-component-width);
178
- --ct-cascader-inner-height: var(--ct-component-inner-height);
179
- &.is-filterable {
180
- .el-cascader__tags {
181
- &:focus-within {
182
- .el-tag {
183
- display: none;
184
- }
185
- }
186
- }
187
- }
188
- .el-cascader__tags {
189
- display: inline-flex;
190
- // display: inline-block;
191
- align-items: center;
192
- flex-wrap: nowrap;
193
- height: var(--ct-cascader-inner-height);
194
- padding-left: var(--ct-component-inner-padding);
195
- text-overflow: ellipsis;
196
- overflow: hidden;
197
- white-space: nowrap;
198
- .el-tag {
199
- display: inline;
200
- height: auto;
201
- padding: 0;
202
- margin: 0;
203
- background-color: inherit;
204
- font-size: var(--ct-font-size);
205
- color: var(--ct-color-black);
206
- &:not(:last-of-type)::after {
207
- content: "、";
208
- }
209
- }
210
- .el-tag__close {
211
- display: none;
212
- }
213
- }
214
- &__dropdown {
215
- &:not(.is-multiple) {
216
- .el-cascader__suggestion-item {
217
- &.is-checked {
218
- .el-icon {
219
- display: none;
220
- }
221
- }
222
- }
223
- }
224
- }
225
- .el-cascader__search-input {
226
- position: absolute;
227
- left: var(--ct-component-inner-padding);
228
- top: 50%;
229
- transform: translateY(-50%);
230
- height: var(--ct-cascader-inner-height);
231
- width: calc(100% - var(--ct-component-inner-padding));
232
- font-size: var(--ct-font-size);
233
- margin: 0;
234
- }
235
- .el-input__wrapper {
236
- position: relative;
237
- .el-input__inner {
238
- height: var(--ct-cascader-inner-height) !important;
239
- }
240
- &::after {
241
- position: absolute;
242
- content: v-bind(checkedText);
243
- // content: "11111";
244
- left: var(--ct-component-inner-padding);
245
- }
246
- }
247
- }
1
+ <template>
2
+ <el-cascader
3
+ ref="cascaderRef"
4
+ :class="[
5
+ ns.b(),
6
+ ns.is('disabled', disabled),
7
+ ns.is('filterable', filterable),
8
+ ]"
9
+ v-model="showValue"
10
+ :props="propsShow"
11
+ :options="optionsShow"
12
+ :show-all-levels="showAllLevels"
13
+ :filterable="filterable"
14
+ :clearable="clearable"
15
+ :disabled="disabled"
16
+ :popper-class="popperClassShow"
17
+ v-bind="{ ...$attrs, ...rawAttr }"
18
+ />
19
+ <!-- <Teleport :to="appendPanelDom">
20
+ <span>大写的六</span>
21
+ </Teleport> -->
22
+ </template>
23
+
24
+ <script setup>
25
+ import {
26
+ onMounted,
27
+ computed,
28
+ ref,
29
+ watch,
30
+ inject,
31
+ watchEffect,
32
+ nextTick,
33
+ } from "vue";
34
+ import { cascaderEmits, cascaderProps } from "./index";
35
+ import { useNamespace, useBuriedParams } from "../../../hooks";
36
+ import { isArray, isFunction } from "../../../utils";
37
+ const props = defineProps(cascaderProps);
38
+ const emit = defineEmits(cascaderEmits);
39
+ const baseDao = inject("$ctBaseDao");
40
+ const serviceConfig = inject("$ctServiceConfig");
41
+
42
+ const ns = useNamespace("cascader");
43
+ const cascaderRef = ref(null);
44
+ const checkedText = ref("");
45
+ const propsShow = computed(() => {
46
+ return {
47
+ emitPath: false,
48
+ ...(props.props || {}),
49
+ multiple: props.multiple || props.props?.multiple || false,
50
+ label: props.mapObj?.label || "label",
51
+ value: props.mapObj?.value || "value",
52
+ children: props.mapObj?.children || "children",
53
+ };
54
+ });
55
+ const optionsByApi = ref([]);
56
+ const optionsShow = computed(() => {
57
+ return optionsByApi.value.length ? optionsByApi.value : props.options;
58
+ });
59
+ const showValue = computed({
60
+ get() {
61
+ return props.modelValue;
62
+ },
63
+ set(newValue) {
64
+ emit("update:modelValue", newValue);
65
+ },
66
+ });
67
+ watch(showValue, async (newValue) => {
68
+ if (isFunction(props.cbs.change)) {
69
+ await nextTick(); //这里得等一个nextTick,否则会拿不到最新选中的值
70
+ const checkedNodes = cascaderRef.value?.getCheckedNodes() || [];
71
+ const dataList = checkedNodes.map((item) => {
72
+ return item.data;
73
+ });
74
+ props.cbs.change(dataList, cascaderRef.value);
75
+ }
76
+ });
77
+ const popperClassShow = computed(() => {
78
+ let popperClass = ns.e("dropdown");
79
+ popperClass += props.popperClass || "";
80
+ if (propsShow.value.multiple) {
81
+ popperClass += " " + ns.is("multiple");
82
+ }
83
+ return popperClass;
84
+ });
85
+ watch(
86
+ () => props.modelValue,
87
+ (newValue) => {
88
+ getCheckedText();
89
+ }
90
+ );
91
+ const appendPanelDom = document.createElement("div");
92
+
93
+ const getCheckedText = () => {
94
+ const getCheckedNodes = cascaderRef.value?.getCheckedNodes;
95
+ if (getCheckedNodes) {
96
+ const textArr = getCheckedNodes();
97
+ if (props.showAllLevels)
98
+ checkedText.value = textArr
99
+ .map((item) => {
100
+ if (isArray(item.pathLabels))
101
+ return item.pathLabels.join(props.separator);
102
+ return item.label;
103
+ })
104
+ .join(props.separatorMultiple);
105
+ else {
106
+ checkedText.value = textArr
107
+ .map((item) => item.label)
108
+ .join(props.separatorMultiple);
109
+ }
110
+ }
111
+ };
112
+
113
+ const appendDom2Panel = () => {
114
+ const dom = cascaderRef.value?.contentRef;
115
+ if (dom) {
116
+ const referenceNode = dom?.children[0];
117
+ // appendPanelDom = document.createElement("div");
118
+ appendPanelDom.setAttribute("id", "cascader-panel-append");
119
+ dom.insertBefore(appendPanelDom, referenceNode);
120
+ // dom.appendChild(div);
121
+ }
122
+ };
123
+ useBuriedParams(props, emit);
124
+ watchEffect(async () => {
125
+ // 通过api获取数据,会监听api以及serviceParams的改变(收集到的依赖改变)都会触发重新查询
126
+ const cbs = props.cbs || {};
127
+ if (props.api && baseDao) {
128
+ try {
129
+ const method = props.serviceMethod || serviceConfig.defaultMethod;
130
+ let params = props.serviceParams || {};
131
+ if (isFunction(cbs.beforeSearch)) {
132
+ const paramsHandle = await cbs.beforeSearch(params);
133
+ if (paramsHandle === false) return;
134
+ params = paramsHandle || params;
135
+ }
136
+
137
+ baseDao[method](props.api, params).then((res) => {
138
+ const mapObj = props.mapObj || {};
139
+ const { list } = mapObj; //其他参数放入propsShow
140
+ let data = [];
141
+ if (list) {
142
+ data = res[list];
143
+ } else {
144
+ data = res;
145
+ }
146
+
147
+ optionsByApi.value = data;
148
+ if (isFunction(cbs.afterSearch)) {
149
+ cbs.afterSearch(res, optionsByApi, showValue);
150
+ }
151
+ });
152
+ } catch (error) {}
153
+ }
154
+ if (isFunction(cbs.defineSearch)) {
155
+ try {
156
+ const defineSearchHandle = await cbs.defineSearch(
157
+ optionsByApi,
158
+ showValue
159
+ );
160
+ if (defineSearchHandle === false) return;
161
+ if (defineSearchHandle) {
162
+ optionsByApi.value = defineSearchHandle;
163
+ }
164
+ } catch (error) {}
165
+ }
166
+ });
167
+
168
+ defineExpose({
169
+ ref: cascaderRef,
170
+ });
171
+ onMounted(() => {
172
+ appendDom2Panel();
173
+ });
174
+ </script>
175
+ <style lang='less'>
176
+ .ct-cascader {
177
+ width: var(--ct-component-width);
178
+ --ct-cascader-inner-height: var(--ct-component-inner-height);
179
+ &.is-filterable {
180
+ .el-cascader__tags {
181
+ &:focus-within {
182
+ .el-tag {
183
+ display: none;
184
+ }
185
+ }
186
+ }
187
+ }
188
+ .el-cascader__tags {
189
+ display: inline-flex;
190
+ // display: inline-block;
191
+ align-items: center;
192
+ flex-wrap: nowrap;
193
+ height: var(--ct-cascader-inner-height);
194
+ padding-left: var(--ct-component-inner-padding);
195
+ text-overflow: ellipsis;
196
+ overflow: hidden;
197
+ white-space: nowrap;
198
+ .el-tag {
199
+ display: inline;
200
+ height: auto;
201
+ padding: 0;
202
+ margin: 0;
203
+ background-color: inherit;
204
+ font-size: var(--ct-font-size);
205
+ color: var(--ct-color-black);
206
+ &:not(:last-of-type)::after {
207
+ content: "、";
208
+ }
209
+ }
210
+ .el-tag__close {
211
+ display: none;
212
+ }
213
+ }
214
+ &__dropdown {
215
+ &:not(.is-multiple) {
216
+ .el-cascader__suggestion-item {
217
+ &.is-checked {
218
+ .el-icon {
219
+ display: none;
220
+ }
221
+ }
222
+ }
223
+ }
224
+ }
225
+ .el-cascader__search-input {
226
+ position: absolute;
227
+ left: var(--ct-component-inner-padding);
228
+ top: 50%;
229
+ transform: translateY(-50%);
230
+ height: var(--ct-cascader-inner-height);
231
+ width: calc(100% - var(--ct-component-inner-padding));
232
+ font-size: var(--ct-font-size);
233
+ margin: 0;
234
+ }
235
+ .el-input__wrapper {
236
+ position: relative;
237
+ .el-input__inner {
238
+ height: var(--ct-cascader-inner-height) !important;
239
+ }
240
+ &::after {
241
+ position: absolute;
242
+ content: v-bind(checkedText);
243
+ // content: "11111";
244
+ left: var(--ct-component-inner-padding);
245
+ }
246
+ }
247
+ }
248
248
  </style>