@liuzengwei/element-ui 2.15.5-xn.47 → 2.15.5-xn.49

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 (53) hide show
  1. package/lib/affix.js +2 -2
  2. package/lib/autocomplete.js +2 -2
  3. package/lib/avatar.js +2 -2
  4. package/lib/calendar.js +2 -2
  5. package/lib/carousel.js +2 -2
  6. package/lib/cascader-panel.js +2 -2
  7. package/lib/cascader.js +8 -8
  8. package/lib/col.js +2 -2
  9. package/lib/color-picker.js +2 -2
  10. package/lib/date-picker.js +5 -5
  11. package/lib/descriptions-item.js +2 -2
  12. package/lib/descriptions.js +10 -10
  13. package/lib/dialog.js +2 -2
  14. package/lib/drawer.js +2 -2
  15. package/lib/dropdown.js +4 -4
  16. package/lib/element-ui.common.js +318 -18
  17. package/lib/image.js +5 -5
  18. package/lib/index.js +1 -1
  19. package/lib/infinite-scroll.js +10 -10
  20. package/lib/loading.js +2 -2
  21. package/lib/message-box.js +4 -4
  22. package/lib/message.js +5 -5
  23. package/lib/notification.js +2 -2
  24. package/lib/popconfirm.js +2 -2
  25. package/lib/rate.js +2 -2
  26. package/lib/row.js +2 -2
  27. package/lib/scrollbar.js +10 -10
  28. package/lib/segmented.js +523 -0
  29. package/lib/select.js +4 -4
  30. package/lib/submenu.js +2 -2
  31. package/lib/table-column.js +2 -2
  32. package/lib/table.js +8 -8
  33. package/lib/tabs.js +2 -2
  34. package/lib/tag.js +2 -2
  35. package/lib/theme-chalk/index.css +1 -1
  36. package/lib/theme-chalk/segmented.css +1 -0
  37. package/lib/time-picker.js +2 -2
  38. package/lib/time-select.js +2 -2
  39. package/lib/timeline.js +2 -2
  40. package/lib/tooltip.js +2 -2
  41. package/lib/transfer.js +2 -2
  42. package/lib/trigger.js +8 -8
  43. package/package.json +1 -1
  44. package/packages/segmented/index.js +8 -0
  45. package/packages/segmented/src/main.vue +183 -0
  46. package/packages/theme-chalk/lib/index.css +1 -1
  47. package/packages/theme-chalk/lib/segmented.css +1 -0
  48. package/packages/theme-chalk/src/common/var.scss +1 -1
  49. package/packages/theme-chalk/src/index.scss +1 -0
  50. package/packages/theme-chalk/src/segmented.scss +165 -0
  51. package/src/index.js +5 -2
  52. package/types/element-ui.d.ts +4 -0
  53. package/types/segmented.d.ts +51 -0
@@ -0,0 +1 @@
1
+ .el-segmented{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;padding:0;background-color:transparent;border-radius:2px;position:relative}.el-segmented.is-disabled{opacity:.6;cursor:not-allowed}.el-segmented--block{width:100%}.el-segmented--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:auto}.el-segmented--large .el-segmented__item{padding:12px 15px;font-size:14px}.el-segmented--small .el-segmented__item{padding:8px 12px;font-size:13px}.el-segmented__item{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:10px;cursor:pointer;border-radius:0;-webkit-transition:all .2s cubic-bezier(.645,.045,.355,1);transition:all .2s cubic-bezier(.645,.045,.355,1);font-size:14px;line-height:20px;color:#86909C;position:relative;background-color:#FFF;border:1px solid #F2F2F2}.el-segmented__item:not(:first-child){border-left:none}.el-segmented__item:first-child{border-radius:2px 0 0 2px}.el-segmented__item:last-child{border-radius:0 2px 2px 0}.el-segmented__item:first-child:last-child{border-radius:2px}.el-segmented__item:hover{background-color:rgba(72,133,248,.1)}.el-segmented__item.is-selected{background-color:#4885F8;color:#FFF;border-color:#4885F8;z-index:1}.el-segmented__item.is-selected:hover{background-color:#4885F8}.el-segmented__item.is-disabled{cursor:not-allowed;color:#86909C;background-color:#F5F7FA}.el-segmented__item.is-disabled:hover{background-color:#F5F7FA}.el-segmented__item.is-disabled.is-selected{background-color:#F5F7FA;color:#86909C;border-color:#F2F2F2}.el-segmented__item-input{position:absolute;opacity:0;pointer-events:none}.el-segmented__item-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.el-segmented.el-segmented--block .el-segmented__item{min-width:0}.el-segmented.el-segmented--stretch{width:100%;background-color:#FFF;border:1px solid #F2F2F2;border-radius:2px}.el-segmented.el-segmented--stretch .el-segmented__item{-webkit-box-flex:0;-ms-flex:none;flex:none;border:none;border-right:1px solid #F2F2F2}.el-segmented.el-segmented--vertical{width:auto}.el-segmented.el-segmented--vertical .el-segmented__item{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;width:100%}.el-segmented.el-segmented--vertical .el-segmented__item:not(:first-child){border-top:none;border-left:1px solid #F2F2F2}.el-segmented.el-segmented--vertical .el-segmented__item:first-child{border-radius:2px 2px 0 0}.el-segmented.el-segmented--vertical .el-segmented__item:last-child{border-radius:0 0 2px 2px}.el-segmented.el-segmented--vertical .el-segmented__item:first-child:last-child{border-radius:2px}
@@ -210,7 +210,7 @@ module.exports = require("@liuzengwei/element-ui/lib/utils/clickoutside");
210
210
 
211
211
  /***/ }),
212
212
 
213
- /***/ 16:
213
+ /***/ 17:
214
214
  /***/ (function(module, exports) {
215
215
 
216
216
  module.exports = require("@liuzengwei/element-ui/lib/scrollbar");
@@ -2131,7 +2131,7 @@ render._withStripped = true
2131
2131
  var date_util_ = __webpack_require__(1);
2132
2132
 
2133
2133
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/scrollbar"
2134
- var scrollbar_ = __webpack_require__(16);
2134
+ var scrollbar_ = __webpack_require__(17);
2135
2135
  var scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);
2136
2136
 
2137
2137
  // EXTERNAL MODULE: ./src/directives/repeat-click.js
@@ -210,7 +210,7 @@ module.exports = require("@liuzengwei/element-ui/lib/utils/clickoutside");
210
210
 
211
211
  /***/ }),
212
212
 
213
- /***/ 16:
213
+ /***/ 17:
214
214
  /***/ (function(module, exports) {
215
215
 
216
216
  module.exports = require("@liuzengwei/element-ui/lib/scrollbar");
@@ -1496,7 +1496,7 @@ render._withStripped = true
1496
1496
  // CONCATENATED MODULE: ./packages/date-picker/src/panel/time-select.vue?vue&type=template&id=51ab9320&
1497
1497
 
1498
1498
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/scrollbar"
1499
- var scrollbar_ = __webpack_require__(16);
1499
+ var scrollbar_ = __webpack_require__(17);
1500
1500
  var scrollbar_default = /*#__PURE__*/__webpack_require__.n(scrollbar_);
1501
1501
 
1502
1502
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/utils/scroll-into-view"
package/lib/timeline.js CHANGED
@@ -82,7 +82,7 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 144);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 145);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
@@ -189,7 +189,7 @@ function normalizeComponent (
189
189
 
190
190
  /***/ }),
191
191
 
192
- /***/ 144:
192
+ /***/ 145:
193
193
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
194
194
 
195
195
  "use strict";
package/lib/tooltip.js CHANGED
@@ -82,12 +82,12 @@ module.exports =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 148);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 149);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ({
89
89
 
90
- /***/ 148:
90
+ /***/ 149:
91
91
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
92
92
 
93
93
  "use strict";
package/lib/transfer.js CHANGED
@@ -203,7 +203,7 @@ module.exports = require("@liuzengwei/element-ui/lib/mixins/migrating");
203
203
 
204
204
  /***/ }),
205
205
 
206
- /***/ 15:
206
+ /***/ 16:
207
207
  /***/ (function(module, exports) {
208
208
 
209
209
  module.exports = require("@liuzengwei/element-ui/lib/button");
@@ -361,7 +361,7 @@ render._withStripped = true
361
361
  // CONCATENATED MODULE: ./packages/transfer/src/main.vue?vue&type=template&id=5c654dd8&
362
362
 
363
363
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/button"
364
- var button_ = __webpack_require__(15);
364
+ var button_ = __webpack_require__(16);
365
365
  var button_default = /*#__PURE__*/__webpack_require__.n(button_);
366
366
 
367
367
  // EXTERNAL MODULE: external "@liuzengwei/element-ui/lib/mixins/emitter"
package/lib/trigger.js CHANGED
@@ -187,13 +187,6 @@ function normalizeComponent (
187
187
  }
188
188
 
189
189
 
190
- /***/ }),
191
-
192
- /***/ 13:
193
- /***/ (function(module, exports) {
194
-
195
- module.exports = require("@liuzengwei/element-ui/lib/utils/popup");
196
-
197
190
  /***/ }),
198
191
 
199
192
  /***/ 138:
@@ -687,7 +680,7 @@ var stop = function stop(e) {
687
680
 
688
681
  // 动态导入 PopupManager 避免 SSR 问题
689
682
  if (!external_vue_default.a.prototype.$isServer) {
690
- var _require = __webpack_require__(13),
683
+ var _require = __webpack_require__(14),
691
684
  PopupManager = _require.PopupManager;
692
685
 
693
686
  this.popperJS._popper.style.zIndex = PopupManager.nextZIndex();
@@ -893,6 +886,13 @@ main.install = function (Vue) {
893
886
 
894
887
  /***/ }),
895
888
 
889
+ /***/ 14:
890
+ /***/ (function(module, exports) {
891
+
892
+ module.exports = require("@liuzengwei/element-ui/lib/utils/popup");
893
+
894
+ /***/ }),
895
+
896
896
  /***/ 2:
897
897
  /***/ (function(module, exports) {
898
898
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liuzengwei/element-ui",
3
- "version": "2.15.5-xn.47",
3
+ "version": "2.15.5-xn.49",
4
4
  "description": "A Component Library for Vue.js (Fork of Element UI).",
5
5
  "main": "lib/element-ui.common.js",
6
6
  "files": [
@@ -0,0 +1,8 @@
1
+ import Segmented from './src/main';
2
+
3
+ /* istanbul ignore next */
4
+ Segmented.install = function(Vue) {
5
+ Vue.component(Segmented.name, Segmented);
6
+ };
7
+
8
+ export default Segmented;
@@ -0,0 +1,183 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ 'el-segmented',
5
+ {
6
+ 'el-segmented--block': block,
7
+ 'el-segmented--stretch': stretch,
8
+ 'el-segmented--vertical': direction === 'vertical',
9
+ 'is-disabled': segmentedDisabled
10
+ },
11
+ segmentedSize ? `el-segmented--${segmentedSize}` : ''
12
+ ]"
13
+ role="radiogroup"
14
+ :aria-label="ariaLabel"
15
+ :id="id"
16
+ >
17
+ <div
18
+ v-for="(item, index) in normalizedOptions"
19
+ :key="getItemKey(item, index)"
20
+ :class="[
21
+ 'el-segmented__item',
22
+ {
23
+ 'is-selected': isItemSelected(item),
24
+ 'is-disabled': isItemDisabled(item)
25
+ }
26
+ ]"
27
+ @click="handleItemClick(item)"
28
+ >
29
+ <input
30
+ :name="name"
31
+ :value="getItemValue(item)"
32
+ :disabled="isItemDisabled(item)"
33
+ :checked="isItemSelected(item)"
34
+ type="radio"
35
+ class="el-segmented__item-input"
36
+ @change="handleChange(item)"
37
+ >
38
+ <div class="el-segmented__item-label">
39
+ <slot :item="item">
40
+ {{ getItemLabel(item) }}
41
+ </slot>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </template>
46
+
47
+ <script>
48
+ import { isObject } from 'element-ui/src/utils/types';
49
+ import emitter from 'element-ui/src/mixins/emitter';
50
+
51
+ export default {
52
+ name: 'ElSegmented',
53
+
54
+ componentName: 'ElSegmented',
55
+
56
+ mixins: [emitter],
57
+
58
+ inject: {
59
+ elForm: {
60
+ default: ''
61
+ },
62
+ elFormItem: {
63
+ default: ''
64
+ }
65
+ },
66
+
67
+ props: {
68
+ value: {
69
+ type: [String, Number, Boolean],
70
+ default: ''
71
+ },
72
+ options: {
73
+ type: Array,
74
+ default() {
75
+ return [];
76
+ }
77
+ },
78
+ props: {
79
+ type: Object,
80
+ default() {
81
+ return {
82
+ value: 'value',
83
+ label: 'label',
84
+ disabled: 'disabled'
85
+ };
86
+ }
87
+ },
88
+ size: String,
89
+ block: {
90
+ type: Boolean,
91
+ default: false
92
+ },
93
+ stretch: {
94
+ type: Boolean,
95
+ default: false
96
+ },
97
+ disabled: {
98
+ type: Boolean,
99
+ default: false
100
+ },
101
+ validateEvent: {
102
+ type: Boolean,
103
+ default: true
104
+ },
105
+ name: String,
106
+ id: String,
107
+ ariaLabel: String,
108
+ direction: {
109
+ type: String,
110
+ default: 'horizontal',
111
+ validator(val) {
112
+ return ['horizontal', 'vertical'].indexOf(val) !== -1;
113
+ }
114
+ }
115
+ },
116
+
117
+ computed: {
118
+ normalizedOptions() {
119
+ return this.options.map(option => {
120
+ if (isObject(option)) {
121
+ return option;
122
+ }
123
+ return {
124
+ [this.props.value]: option,
125
+ [this.props.label]: option
126
+ };
127
+ });
128
+ },
129
+
130
+ segmentedSize() {
131
+ return this.size || (this.elFormItem || {}).elFormItemSize || (this.$ELEMENT || {}).size;
132
+ },
133
+
134
+ segmentedDisabled() {
135
+ return this.disabled || (this.elForm || {}).disabled;
136
+ }
137
+ },
138
+
139
+ methods: {
140
+ getItemKey(item, index) {
141
+ return this.getItemValue(item) || index;
142
+ },
143
+
144
+ getItemValue(item) {
145
+ return isObject(item) ? item[this.props.value] : item;
146
+ },
147
+
148
+ getItemLabel(item) {
149
+ return isObject(item) ? item[this.props.label] : item;
150
+ },
151
+
152
+ isItemSelected(item) {
153
+ return this.getItemValue(item) === this.value;
154
+ },
155
+
156
+ isItemDisabled(item) {
157
+ if (this.segmentedDisabled) return true;
158
+ return isObject(item) ? item[this.props.disabled] : false;
159
+ },
160
+
161
+ handleItemClick(item) {
162
+ if (this.isItemDisabled(item)) return;
163
+
164
+ const value = this.getItemValue(item);
165
+ if (value !== this.value) {
166
+ this.$emit('input', value);
167
+ this.$nextTick(() => {
168
+ this.$emit('change', value);
169
+ });
170
+ }
171
+ },
172
+
173
+ handleChange(item) {
174
+ // 处理 input change 事件,确保表单验证等功能正常
175
+ if (this.validateEvent) {
176
+ this.$nextTick(() => {
177
+ this.dispatch('ElFormItem', 'el.form.change', [this.value]);
178
+ });
179
+ }
180
+ }
181
+ }
182
+ };
183
+ </script>