vdesign-ui 0.1.24-beta → 0.1.25

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 (58) hide show
  1. package/dist/components/activityviews/index.vue +11 -13
  2. package/dist/components/button/index.vue +1 -1
  3. package/dist/components/dropdown/index.vue +31 -43
  4. package/dist/components/empty/index.vue +2 -30
  5. package/dist/components/empty/style.less +4 -0
  6. package/dist/components/footer/index.vue +1 -1
  7. package/dist/components/footnav/footnav-item/index.vue +6 -2
  8. package/dist/components/icon/font/iconfont.css +949 -59
  9. package/dist/components/icon/font/iconfont.js +1 -1
  10. package/dist/components/input/index.vue +8 -31
  11. package/dist/components/input/style.less +1 -0
  12. package/dist/components/loading/index.vue +3 -4
  13. package/dist/components/loading/loading.png +0 -0
  14. package/dist/components/loading/refresh.png +0 -0
  15. package/dist/components/loading/style.less +1 -1
  16. package/dist/components/mixins/clickoutside.js +1 -1
  17. package/dist/components/mixins/dom.js +41 -41
  18. package/dist/components/mixins/outlineConfigPlugin.js +40 -40
  19. package/dist/components/mixins/router-link.js +22 -22
  20. package/dist/components/pagebreak/index.vue +5 -11
  21. package/dist/components/radio/style.css +213 -213
  22. package/dist/components/result/completed-dark.png +0 -0
  23. package/dist/components/result/completed.png +0 -0
  24. package/dist/components/result/error-dark.png +0 -0
  25. package/dist/components/result/error.png +0 -0
  26. package/dist/components/result/index.vue +2 -1
  27. package/dist/components/result/style.less +2 -1
  28. package/dist/components/result/wait-dark.png +0 -0
  29. package/dist/components/result/wait.png +0 -0
  30. package/dist/components/selector/index.vue +31 -49
  31. package/dist/components/selector/style.less +0 -10
  32. package/dist/token.css +2940 -2948
  33. package/dist/vdesign-ui.common.js +444 -621
  34. package/dist/vdesign-ui.css +1 -1
  35. package/dist/vdesign-ui.umd.js +444 -621
  36. package/dist/vdesign-ui.umd.min.js +3 -3
  37. package/package.json +1 -1
  38. package/dist/components/empty/nocoupons-dark.png +0 -0
  39. package/dist/components/empty/nocoupons.png +0 -0
  40. package/dist/components/empty/nomargin-dark.png +0 -0
  41. package/dist/components/empty/nomargin.png +0 -0
  42. package/dist/components/empty/nonotice-dark.png +0 -0
  43. package/dist/components/empty/nonotice.png +0 -0
  44. package/dist/components/empty/noocomments-dark.png +0 -0
  45. package/dist/components/empty/noocomments.png +0 -0
  46. package/dist/components/empty/noorders-dark.png +0 -0
  47. package/dist/components/empty/noorders.png +0 -0
  48. package/dist/components/empty/noposition-dark.png +0 -0
  49. package/dist/components/empty/noposition.png +0 -0
  50. package/dist/components/empty/nosearch-dark.png +0 -0
  51. package/dist/components/empty/nosearch.png +0 -0
  52. package/dist/components/loading/img_status_loading_white_ani.svg +0 -155
  53. package/dist/components/loading/img_status_refresh_ani.svg +0 -158
  54. package/dist/img/completed-dark.4183a8a8.png +0 -0
  55. package/dist/img/error-dark.b80857da.png +0 -0
  56. package/dist/img/img_status_loading_white_ani.b56fcfae.svg +0 -155
  57. package/dist/img/img_status_refresh_ani.d0e59f12.svg +0 -158
  58. package/dist/img/wait-dark.6aa28731.png +0 -0
@@ -1,213 +1,213 @@
1
- .vd-radio {
2
- position: relative;
3
- cursor: pointer;
4
- display: flex;
5
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
6
- }
7
- .vd-radio__input {
8
- position: relative;
9
- margin-inline-end: calc(var(--spacing-check_radio-icon-margin_right) * 1px);
10
- width: calc(var(--icon-check_radio-sizing) * 1px);
11
- height: calc(var(--icon-check_radio-sizing) * 1px);
12
- }
13
- .vd-radio__label {
14
- flex: 1;
15
- }
16
- .vd-radio__text {
17
- color: var(--color-check_radio-text-default);
18
- font-size: calc(var(--en-single-f-d-r-fontSize) * 1px);
19
- font-weight: var(--en-single-f-d-r-fontWeight);
20
- }
21
- .vd-radio__description {
22
- line-height: 1;
23
- margin-top: calc(var(--spacing-check_radio-text-margin_top) * 1px);
24
- color: var(--color-check_radio-text_describe-default);
25
- font-size: calc(var(--en-single-f-b-r-fontSize) * 1px);
26
- font-weight: var(--en-single-f-b-r-fontWeight);
27
- }
28
- .vd-radio .vd-radio__icon {
29
- display: block;
30
- width: calc(var(--icon-check_radio-sizing) * 1px);
31
- height: calc(var(--icon-check_radio-sizing) * 1px);
32
- position: relative;
33
- }
34
- .vd-radio .vd-radio__icon::before {
35
- position: absolute;
36
- box-sizing: border-box;
37
- content: ' ';
38
- pointer-events: none;
39
- top: -50%;
40
- right: -50%;
41
- bottom: -50%;
42
- left: -50%;
43
- border: 0 solid var(--color-check_radio-default);
44
- -webkit-transform: scale(0.5);
45
- transform: scale(0.5);
46
- border-width: 3px;
47
- border-radius: 50%;
48
- }
49
- .vd-radio__original {
50
- width: 100%;
51
- height: 100%;
52
- position: absolute;
53
- top: 0;
54
- bottom: 0;
55
- left: 0;
56
- right: 0;
57
- z-index: 1;
58
- cursor: pointer;
59
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
60
- opacity: 0;
61
- }
62
- .vd-radio--checked .vd-radio__text {
63
- font-size: calc(var(--en-single-f-d-s-fontSize) * 1px);
64
- font-weight: var(--en-single-f-d-s-fontWeight);
65
- }
66
- .vd-radio--checked .vd-radio__icon::before {
67
- border: 0 solid var(--color-check_radio-active);
68
- border-width: 3px;
69
- }
70
- .vd-radio--checked .vd-radio__icon::after {
71
- position: absolute;
72
- width: 8px;
73
- height: 8px;
74
- left: 50%;
75
- top: 50%;
76
- transform: translate(-50%, -50%);
77
- border-radius: 50%;
78
- display: table;
79
- border-top: 0;
80
- border-left: 0;
81
- content: " ";
82
- background-color: var(--color-check_radio-active);
83
- }
84
- .vd-radio--disabled {
85
- cursor: not-allowed;
86
- }
87
- .vd-radio--disabled .vd-radio__text {
88
- color: var(--color-check_radio-text-disable);
89
- }
90
- .vd-radio--disabled .vd-radio__description {
91
- color: var(--color-check_radio-text_describe-disable);
92
- }
93
- .vd-radio--disabled .vd-radio__icon::before {
94
- border-color: var(--color-check_radio-disable);
95
- }
96
- .vd-radio--checked.vd-radio--disabled .vd-radio__icon::before {
97
- border-color: var(--color-check_radio-active-disable);
98
- }
99
- .vd-radio--checked.vd-radio--disabled .vd-radio__icon::after {
100
- background-color: var(--color-check_radio-active-disable);
101
- }
102
- .vd-radio-group {
103
- display: flex;
104
- flex-direction: column;
105
- gap: calc(var(--spacing-check_radio-group-margin_x)*1px);
106
- }
107
- .vd-radio-group-card {
108
- display: flex;
109
- flex-wrap: wrap;
110
- flex-direction: row;
111
- gap: 12px;
112
- }
113
- .vd-radio-group-card .vd-radio-button-cell {
114
- flex: 1;
115
- }
116
- .vd-radio-button {
117
- position: relative;
118
- display: inline-flex;
119
- align-items: center;
120
- flex-direction: column;
121
- justify-content: center;
122
- line-height: 1;
123
- width: 100%;
124
- }
125
- .vd-radio-button::after {
126
- position: absolute;
127
- box-sizing: border-box;
128
- content: ' ';
129
- pointer-events: none;
130
- top: -50%;
131
- right: -50%;
132
- bottom: -50%;
133
- left: -50%;
134
- border: 0 solid var(--color-check_radio-radio_border-default);
135
- -webkit-transform: scale(0.5);
136
- transform: scale(0.5);
137
- border-width: 1px;
138
- }
139
- .vd-radio-button--large {
140
- height: calc(var(--height-check_radio-radio_button_l) * 1px);
141
- }
142
- .vd-radio-button--large .vd-radio-button-text {
143
- color: var(--color-check_radio-radio_button_text-default);
144
- font-size: calc(var(--en-single-f-d-r-fontSize) * 1px);
145
- font-weight: var(--en-single-f-d-r-fontWeight);
146
- }
147
- .vd-radio-button--large::after {
148
- border-radius: calc(var(--radius-check_radio-radio_l) * 2px);
149
- }
150
- .vd-radio-button--medium {
151
- height: calc(var(--height-check_radio-radio_button_m) * 1px);
152
- }
153
- .vd-radio-button--medium .vd-radio-button-text {
154
- color: var(--color-check_radio-radio_button_text-default);
155
- font-size: calc(var(--en-single-f-c-r-fontSize) * 1px);
156
- font-weight: var(--en-single-f-c-r-fontWeight);
157
- }
158
- .vd-radio-button--medium::after {
159
- border-radius: calc(var(--radius-check_radio-m) * 2px);
160
- }
161
- .vd-radio-button--small {
162
- height: calc(var(--height-check_radio-radio_button_s) * 1px);
163
- }
164
- .vd-radio-button--small .vd-radio-button-text {
165
- color: var(--color-check_radio-radio_button_text-default);
166
- font-size: calc(var(--en-single-f-c-r-fontSize) * 1px);
167
- font-weight: var(--en-single-f-c-r-fontWeight);
168
- }
169
- .vd-radio-button--small::after {
170
- border-radius: calc(var(--radius-check_radio-s) * 2px);
171
- }
172
- .vd-radio-button--checked {
173
- background-color: var(--color-check_radio-radio_button_bg-active);
174
- }
175
- .vd-radio-button--checked::after {
176
- border-color: var(--color-check_radio-radio_border-active);
177
- border-width: 2px;
178
- }
179
- .vd-radio-button--checked .vd-radio-button-text {
180
- color: var(--color-check_radio-radio_button_text-active);
181
- }
182
- .vd-radio-button--checked.vd-radio-button--large .vd-radio-button-text {
183
- font-size: calc(var(--en-single-f-d-s-fontSize) * 1px);
184
- font-weight: var(--en-single-f-d-s-fontWeight);
185
- }
186
- .vd-radio-button--checked.vd-radio-button--medium .vd-radio-button-text {
187
- font-size: calc(var(--en-single-f-c-s-fontSize) * 1px);
188
- font-weight: var(--en-single-f-c-s-fontWeight);
189
- }
190
- .vd-radio-button--checked.vd-radio-button--small .vd-radio-button-text {
191
- font-size: calc(var(--en-single-f-c-s-fontSize) * 1px);
192
- font-weight: var(--en-single-f-c-s-fontWeight);
193
- }
194
- .vd-radio-button--disabled {
195
- cursor: not-allowed;
196
- }
197
- .vd-radio-button--disabled .vd-radio-button-text {
198
- color: var(--color-check_radio-radio_button_text-disable);
199
- }
200
- .vd-radio-group {
201
- display: flex;
202
- flex-direction: column;
203
- gap: calc(var(--spacing-check_radio-group-margin_x)*1px);
204
- }
205
- .vd-radio-group__card {
206
- display: flex;
207
- flex-direction: row;
208
- flex-wrap: wrap;
209
- gap: 12px;
210
- }
211
- .vd-radio-group .vd-radio-button {
212
- flex: 1;
213
- }
1
+ .vd-radio {
2
+ position: relative;
3
+ cursor: pointer;
4
+ display: flex;
5
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
6
+ }
7
+ .vd-radio__input {
8
+ position: relative;
9
+ margin-inline-end: calc(var(--spacing-check_radio-icon-margin_right) * 1px);
10
+ width: calc(var(--icon-check_radio-sizing) * 1px);
11
+ height: calc(var(--icon-check_radio-sizing) * 1px);
12
+ }
13
+ .vd-radio__label {
14
+ flex: 1;
15
+ }
16
+ .vd-radio__text {
17
+ color: var(--color-check_radio-text-default);
18
+ font-size: calc(var(--en-single-f-d-r-fontSize) * 1px);
19
+ font-weight: var(--en-single-f-d-r-fontWeight);
20
+ }
21
+ .vd-radio__description {
22
+ line-height: 1;
23
+ margin-top: calc(var(--spacing-check_radio-text-margin_top) * 1px);
24
+ color: var(--color-check_radio-text_describe-default);
25
+ font-size: calc(var(--en-single-f-b-r-fontSize) * 1px);
26
+ font-weight: var(--en-single-f-b-r-fontWeight);
27
+ }
28
+ .vd-radio .vd-radio__icon {
29
+ display: block;
30
+ width: calc(var(--icon-check_radio-sizing) * 1px);
31
+ height: calc(var(--icon-check_radio-sizing) * 1px);
32
+ position: relative;
33
+ }
34
+ .vd-radio .vd-radio__icon::before {
35
+ position: absolute;
36
+ box-sizing: border-box;
37
+ content: ' ';
38
+ pointer-events: none;
39
+ top: -50%;
40
+ right: -50%;
41
+ bottom: -50%;
42
+ left: -50%;
43
+ border: 0 solid var(--color-check_radio-default);
44
+ -webkit-transform: scale(0.5);
45
+ transform: scale(0.5);
46
+ border-width: 3px;
47
+ border-radius: 50%;
48
+ }
49
+ .vd-radio__original {
50
+ width: 100%;
51
+ height: 100%;
52
+ position: absolute;
53
+ top: 0;
54
+ bottom: 0;
55
+ left: 0;
56
+ right: 0;
57
+ z-index: 1;
58
+ cursor: pointer;
59
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
60
+ opacity: 0;
61
+ }
62
+ .vd-radio--checked .vd-radio__text {
63
+ font-size: calc(var(--en-single-f-d-s-fontSize) * 1px);
64
+ font-weight: var(--en-single-f-d-s-fontWeight);
65
+ }
66
+ .vd-radio--checked .vd-radio__icon::before {
67
+ border: 0 solid var(--color-check_radio-active);
68
+ border-width: 3px;
69
+ }
70
+ .vd-radio--checked .vd-radio__icon::after {
71
+ position: absolute;
72
+ width: 8px;
73
+ height: 8px;
74
+ left: 50%;
75
+ top: 50%;
76
+ transform: translate(-50%, -50%);
77
+ border-radius: 50%;
78
+ display: table;
79
+ border-top: 0;
80
+ border-left: 0;
81
+ content: " ";
82
+ background-color: var(--color-check_radio-active);
83
+ }
84
+ .vd-radio--disabled {
85
+ cursor: not-allowed;
86
+ }
87
+ .vd-radio--disabled .vd-radio__text {
88
+ color: var(--color-check_radio-text-disable);
89
+ }
90
+ .vd-radio--disabled .vd-radio__description {
91
+ color: var(--color-check_radio-text_describe-disable);
92
+ }
93
+ .vd-radio--disabled .vd-radio__icon::before {
94
+ border-color: var(--color-check_radio-disable);
95
+ }
96
+ .vd-radio--checked.vd-radio--disabled .vd-radio__icon::before {
97
+ border-color: var(--color-check_radio-active-disable);
98
+ }
99
+ .vd-radio--checked.vd-radio--disabled .vd-radio__icon::after {
100
+ background-color: var(--color-check_radio-active-disable);
101
+ }
102
+ .vd-radio-group {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: calc(var(--spacing-check_radio-group-margin_x)*1px);
106
+ }
107
+ .vd-radio-group-card {
108
+ display: flex;
109
+ flex-wrap: wrap;
110
+ flex-direction: row;
111
+ gap: 12px;
112
+ }
113
+ .vd-radio-group-card .vd-radio-button-cell {
114
+ flex: 1;
115
+ }
116
+ .vd-radio-button {
117
+ position: relative;
118
+ display: inline-flex;
119
+ align-items: center;
120
+ flex-direction: column;
121
+ justify-content: center;
122
+ line-height: 1;
123
+ width: 100%;
124
+ }
125
+ .vd-radio-button::after {
126
+ position: absolute;
127
+ box-sizing: border-box;
128
+ content: ' ';
129
+ pointer-events: none;
130
+ top: -50%;
131
+ right: -50%;
132
+ bottom: -50%;
133
+ left: -50%;
134
+ border: 0 solid var(--color-check_radio-radio_border-default);
135
+ -webkit-transform: scale(0.5);
136
+ transform: scale(0.5);
137
+ border-width: 1px;
138
+ }
139
+ .vd-radio-button--large {
140
+ height: calc(var(--height-check_radio-radio_button_l) * 1px);
141
+ }
142
+ .vd-radio-button--large .vd-radio-button-text {
143
+ color: var(--color-check_radio-radio_button_text-default);
144
+ font-size: calc(var(--en-single-f-d-r-fontSize) * 1px);
145
+ font-weight: var(--en-single-f-d-r-fontWeight);
146
+ }
147
+ .vd-radio-button--large::after {
148
+ border-radius: calc(var(--radius-check_radio-radio_l) * 2px);
149
+ }
150
+ .vd-radio-button--medium {
151
+ height: calc(var(--height-check_radio-radio_button_m) * 1px);
152
+ }
153
+ .vd-radio-button--medium .vd-radio-button-text {
154
+ color: var(--color-check_radio-radio_button_text-default);
155
+ font-size: calc(var(--en-single-f-c-r-fontSize) * 1px);
156
+ font-weight: var(--en-single-f-c-r-fontWeight);
157
+ }
158
+ .vd-radio-button--medium::after {
159
+ border-radius: calc(var(--radius-check_radio-m) * 2px);
160
+ }
161
+ .vd-radio-button--small {
162
+ height: calc(var(--height-check_radio-radio_button_s) * 1px);
163
+ }
164
+ .vd-radio-button--small .vd-radio-button-text {
165
+ color: var(--color-check_radio-radio_button_text-default);
166
+ font-size: calc(var(--en-single-f-c-r-fontSize) * 1px);
167
+ font-weight: var(--en-single-f-c-r-fontWeight);
168
+ }
169
+ .vd-radio-button--small::after {
170
+ border-radius: calc(var(--radius-check_radio-s) * 2px);
171
+ }
172
+ .vd-radio-button--checked {
173
+ background-color: var(--color-check_radio-radio_button_bg-active);
174
+ }
175
+ .vd-radio-button--checked::after {
176
+ border-color: var(--color-check_radio-radio_border-active);
177
+ border-width: 2px;
178
+ }
179
+ .vd-radio-button--checked .vd-radio-button-text {
180
+ color: var(--color-check_radio-radio_button_text-active);
181
+ }
182
+ .vd-radio-button--checked.vd-radio-button--large .vd-radio-button-text {
183
+ font-size: calc(var(--en-single-f-d-s-fontSize) * 1px);
184
+ font-weight: var(--en-single-f-d-s-fontWeight);
185
+ }
186
+ .vd-radio-button--checked.vd-radio-button--medium .vd-radio-button-text {
187
+ font-size: calc(var(--en-single-f-c-s-fontSize) * 1px);
188
+ font-weight: var(--en-single-f-c-s-fontWeight);
189
+ }
190
+ .vd-radio-button--checked.vd-radio-button--small .vd-radio-button-text {
191
+ font-size: calc(var(--en-single-f-c-s-fontSize) * 1px);
192
+ font-weight: var(--en-single-f-c-s-fontWeight);
193
+ }
194
+ .vd-radio-button--disabled {
195
+ cursor: not-allowed;
196
+ }
197
+ .vd-radio-button--disabled .vd-radio-button-text {
198
+ color: var(--color-check_radio-radio_button_text-disable);
199
+ }
200
+ .vd-radio-group {
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: calc(var(--spacing-check_radio-group-margin_x)*1px);
204
+ }
205
+ .vd-radio-group__card {
206
+ display: flex;
207
+ flex-direction: row;
208
+ flex-wrap: wrap;
209
+ gap: 12px;
210
+ }
211
+ .vd-radio-group .vd-radio-button {
212
+ flex: 1;
213
+ }
Binary file
@@ -2,9 +2,10 @@
2
2
  <div class="vd-result">
3
3
  <div class="vd-result-img" v-if="currentImg"><img :src="currentImg" alt="img"></div>
4
4
  <div class="vd-result-title" v-if="title">{{ title }}</div>
5
- <div class="vd-result-txt" v-if="text">{{ text }}</div>
5
+ <p class="vd-result-txt" v-if="text">{{ text }}</p>
6
6
  <div class="vd-result-footer">
7
7
  <slot name="btnp"></slot>
8
+
8
9
  <div class="vd-result-footer-btnx" v-if="$slots.btnt">
9
10
  <slot name="btnt"></slot>
10
11
  </div>
@@ -11,7 +11,8 @@
11
11
  margin: 0 auto;
12
12
  width: 160px;
13
13
  img{
14
- max-width: 100%;
14
+ width: 100%;
15
+ height: 100%;
15
16
  }
16
17
  }
17
18
 
Binary file
@@ -1,6 +1,7 @@
1
1
  <template>
2
- <div v-clickoutside="close" class="vd-selector" :class="wrapClasses" :tabindex="disabled ? -1 : 0">
3
- <div class="vd-selector__inner" @click.stop="handlerClick">
2
+ <div class="vd-selector" :class="wrapClasses" :tabindex="disabled ? -1 : 0" @keyup.enter="handlerClick"
3
+ @click.stop="handlerClick">
4
+ <div class="vd-selector__inner">
4
5
  <div :contenteditable="contenteditable" class="vd-selector__left">
5
6
  <vd-icon v-if="icon" :name="icon" svg :class="iconClasses"></vd-icon>
6
7
  <div :class="titleClasses">
@@ -11,73 +12,73 @@
11
12
  </div>
12
13
  <vd-icon v-if="arrow" :name="arrow" :class="arrowClasses"></vd-icon>
13
14
  </div>
14
- <div class="vd-selector--slot">
15
- <slot name="dropdown"></slot>
16
- </div>
15
+ <slot v-if="showMenu"></slot>
17
16
  </div>
18
17
  </template>
19
18
 
20
19
  <script>
21
- import clickoutside from "../mixins/clickoutside.js";
22
20
  const prefixCls = 'vd-selector';
23
21
 
24
22
  export default {
25
23
  name: 'vd-selector',
26
- directives: {
27
- clickoutside
28
- },
29
24
  props: {
25
+ // 图标名称
30
26
  icon: {
31
27
  type: String,
32
28
  default: ''
33
29
  },
30
+ // 箭头图标名称或布尔值(是否显示箭头)
34
31
  arrow: {
35
- type: String,
32
+ type: [String, Boolean],
36
33
  default: 'icon_btn_moredown'
37
34
  },
35
+ // 组件类型(用于自定义样式)
38
36
  type: {
39
37
  type: String,
40
- default: '',
41
- validator: value => ['', 'form'].includes(value)
38
+ default: '' // form
42
39
  },
40
+ // 组件尺寸
43
41
  size: {
44
42
  type: String,
45
43
  default: 'm',
46
44
  validator: value => ['s', 'm', 'l', 'xl'].includes(value)
47
45
  },
46
+ // 组件内容
48
47
  content: {
49
- type: String,
48
+ type: [String, Array],
50
49
  default: ''
51
50
  },
51
+ // 是否禁用组件
52
52
  disabled: {
53
53
  type: Boolean,
54
54
  default: false
55
55
  },
56
+ // 是否激活组件
56
57
  active: {
57
58
  type: Boolean,
58
59
  default: false
59
60
  },
61
+ // 是否允许编辑内容
60
62
  contenteditable: {
61
63
  type: Boolean,
62
64
  default: false
63
65
  },
66
+ // 是否显示子菜单
64
67
  value: {
65
68
  type: Boolean,
66
69
  default: false
67
- },
68
- name: {
69
- type: String,
70
- default: ''
71
- },
72
- },
73
- watch: {
74
- value(val) {
75
- this.showMenu = val;
76
70
  }
77
71
  },
78
72
  data() {
79
73
  return {
80
- showMenu: this.value
74
+ // 是否显示子菜单
75
+ showMenu: false
76
+ }
77
+ },
78
+ watch: {
79
+ // 监听 value 属性变化,同步更新 showMenu
80
+ value(newVal) {
81
+ this.showMenu = newVal;
81
82
  }
82
83
  },
83
84
  computed: {
@@ -116,38 +117,19 @@ export default {
116
117
  },
117
118
  },
118
119
  methods: {
119
- generateClasses(suffix = '', extra = '') {
120
- return {
121
- [`${prefixCls}-${this.type}${suffix}`]: this.type,
122
- [`${prefixCls}-${this.size}${suffix}`]: this.size,
123
- [`${prefixCls}${extra}`]: extra,
124
- [`${prefixCls}--disabled`]: this.disabled,
125
- [`${prefixCls}--active`]: this.showMenu || this.active,
126
- [`${prefixCls}-${this.size}${suffix}--active`]: this.showMenu && this.arrow,
127
- };
128
- },
120
+ // 关闭子菜单
129
121
  close() {
130
- if (this.showMenu) {
131
- // this.showMenu = false;
132
- // this.$emit('close');
133
- // 传了下拉菜单才执行
134
- if (this.$scopedSlots.dropdown) {
135
- console.log('has dropdown')
136
- this.$emit('input', false);
137
- }
138
- }
122
+ this.showMenu = false;
123
+ this.$emit('close', false);
124
+ this.$emit('input', false);
139
125
  },
126
+ // 处理点击事件
140
127
  handlerClick() {
141
128
  if (this.disabled) return;
142
- console.log('showMenu:1:', this.showMenu);
143
- // 更新showMenu的值
144
129
  this.showMenu = !this.showMenu;
145
- console.log('showMenu:2:', this.showMenu);
146
- // 使用$emit来更新v-model绑定的值
147
- this.$emit('input', this.showMenu);
148
- this.$emit('click');
130
+ // this.$emit('input', this.showMenu);
131
+ this.$emit('click', this.showMenu);
149
132
  }
150
-
151
133
  }
152
134
  };
153
135
  </script>
@@ -298,12 +298,6 @@
298
298
  }
299
299
  }
300
300
 
301
- &--slot {
302
- position: absolute;
303
- top: 100%;
304
- display: none;
305
- }
306
-
307
301
  &--active {
308
302
  .@{selector-prefix-cls}-xl {
309
303
 
@@ -378,10 +372,6 @@
378
372
  transition: transform .3s;
379
373
  }
380
374
  }
381
-
382
- .@{selector-prefix-cls}--slot {
383
- display: block;
384
- }
385
375
  }
386
376
 
387
377
  &--disabled {