vxe-pc-ui 4.14.5 → 4.14.7

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 (201) hide show
  1. package/README.md +2 -2
  2. package/es/checkbox/src/button.js +26 -5
  3. package/es/checkbox/src/checkbox.js +26 -5
  4. package/es/checkbox/src/group.js +23 -3
  5. package/es/checkbox/style.css +6 -3
  6. package/es/checkbox/style.min.css +1 -1
  7. package/es/language/ar-EG.js +4 -0
  8. package/es/language/de-DE.js +4 -0
  9. package/es/language/en-US.js +4 -0
  10. package/es/language/es-ES.js +4 -0
  11. package/es/language/fr-FR.js +4 -0
  12. package/es/language/hu-HU.js +4 -0
  13. package/es/language/hy-AM.js +4 -0
  14. package/es/language/id-ID.js +4 -0
  15. package/es/language/it-IT.js +4 -0
  16. package/es/language/ja-JP.js +4 -0
  17. package/es/language/ko-KR.js +4 -0
  18. package/es/language/ms-MY.js +4 -0
  19. package/es/language/nb-NO.js +4 -0
  20. package/es/language/pt-BR.js +4 -0
  21. package/es/language/ru-RU.js +4 -0
  22. package/es/language/th-TH.js +4 -0
  23. package/es/language/ug-CN.js +4 -0
  24. package/es/language/uk-UA.js +4 -0
  25. package/es/language/uz-UZ.js +4 -0
  26. package/es/language/vi-VN.js +4 -0
  27. package/es/language/zh-CHT.js +4 -0
  28. package/es/language/zh-CN.js +4 -0
  29. package/es/radio/src/button.js +27 -5
  30. package/es/radio/src/group.js +17 -2
  31. package/es/radio/src/radio.js +27 -5
  32. package/es/radio/style.css +5 -3
  33. package/es/radio/style.min.css +1 -1
  34. package/es/style.css +1 -1
  35. package/es/style.min.css +1 -1
  36. package/es/switch/src/switch.js +19 -11
  37. package/es/tree/src/tree.js +31 -2
  38. package/es/tree/style.css +11 -6
  39. package/es/tree/style.min.css +1 -1
  40. package/es/tree-select/src/tree-select.js +2 -0
  41. package/es/ui/index.js +1 -1
  42. package/es/ui/src/log.js +1 -1
  43. package/es/vxe-checkbox/style.css +6 -3
  44. package/es/vxe-checkbox/style.min.css +1 -1
  45. package/es/vxe-radio/style.css +5 -3
  46. package/es/vxe-radio/style.min.css +1 -1
  47. package/es/vxe-tree/style.css +11 -6
  48. package/es/vxe-tree/style.min.css +1 -1
  49. package/lib/checkbox/src/button.js +26 -3
  50. package/lib/checkbox/src/button.min.js +1 -1
  51. package/lib/checkbox/src/checkbox.js +26 -3
  52. package/lib/checkbox/src/checkbox.min.js +1 -1
  53. package/lib/checkbox/src/group.js +25 -3
  54. package/lib/checkbox/src/group.min.js +1 -1
  55. package/lib/checkbox/style/style.css +6 -3
  56. package/lib/checkbox/style/style.min.css +1 -1
  57. package/lib/index.umd.js +205 -33
  58. package/lib/index.umd.min.js +1 -1
  59. package/lib/language/ar-EG.js +4 -0
  60. package/lib/language/ar-EG.min.js +1 -1
  61. package/lib/language/ar-EG.umd.js +4 -0
  62. package/lib/language/de-DE.js +4 -0
  63. package/lib/language/de-DE.min.js +1 -1
  64. package/lib/language/de-DE.umd.js +4 -0
  65. package/lib/language/en-US.js +4 -0
  66. package/lib/language/en-US.min.js +1 -1
  67. package/lib/language/en-US.umd.js +4 -0
  68. package/lib/language/es-ES.js +4 -0
  69. package/lib/language/es-ES.min.js +1 -1
  70. package/lib/language/es-ES.umd.js +4 -0
  71. package/lib/language/fr-FR.js +4 -0
  72. package/lib/language/fr-FR.min.js +1 -1
  73. package/lib/language/fr-FR.umd.js +4 -0
  74. package/lib/language/hu-HU.js +4 -0
  75. package/lib/language/hu-HU.min.js +1 -1
  76. package/lib/language/hu-HU.umd.js +4 -0
  77. package/lib/language/hy-AM.js +4 -0
  78. package/lib/language/hy-AM.min.js +1 -1
  79. package/lib/language/hy-AM.umd.js +4 -0
  80. package/lib/language/id-ID.js +4 -0
  81. package/lib/language/id-ID.min.js +1 -1
  82. package/lib/language/id-ID.umd.js +4 -0
  83. package/lib/language/it-IT.js +4 -0
  84. package/lib/language/it-IT.min.js +1 -1
  85. package/lib/language/it-IT.umd.js +4 -0
  86. package/lib/language/ja-JP.js +4 -0
  87. package/lib/language/ja-JP.min.js +1 -1
  88. package/lib/language/ja-JP.umd.js +4 -0
  89. package/lib/language/ko-KR.js +4 -0
  90. package/lib/language/ko-KR.min.js +1 -1
  91. package/lib/language/ko-KR.umd.js +4 -0
  92. package/lib/language/ms-MY.js +4 -0
  93. package/lib/language/ms-MY.min.js +1 -1
  94. package/lib/language/ms-MY.umd.js +4 -0
  95. package/lib/language/nb-NO.js +4 -0
  96. package/lib/language/nb-NO.min.js +1 -1
  97. package/lib/language/nb-NO.umd.js +4 -0
  98. package/lib/language/pt-BR.js +4 -0
  99. package/lib/language/pt-BR.min.js +1 -1
  100. package/lib/language/pt-BR.umd.js +4 -0
  101. package/lib/language/ru-RU.js +4 -0
  102. package/lib/language/ru-RU.min.js +1 -1
  103. package/lib/language/ru-RU.umd.js +4 -0
  104. package/lib/language/th-TH.js +4 -0
  105. package/lib/language/th-TH.min.js +1 -1
  106. package/lib/language/th-TH.umd.js +4 -0
  107. package/lib/language/ug-CN.js +4 -0
  108. package/lib/language/ug-CN.min.js +1 -1
  109. package/lib/language/ug-CN.umd.js +4 -0
  110. package/lib/language/uk-UA.js +4 -0
  111. package/lib/language/uk-UA.min.js +1 -1
  112. package/lib/language/uk-UA.umd.js +4 -0
  113. package/lib/language/uz-UZ.js +4 -0
  114. package/lib/language/uz-UZ.min.js +1 -1
  115. package/lib/language/uz-UZ.umd.js +4 -0
  116. package/lib/language/vi-VN.js +4 -0
  117. package/lib/language/vi-VN.min.js +1 -1
  118. package/lib/language/vi-VN.umd.js +4 -0
  119. package/lib/language/zh-CHT.js +4 -0
  120. package/lib/language/zh-CHT.min.js +1 -1
  121. package/lib/language/zh-CHT.umd.js +4 -0
  122. package/lib/language/zh-CN.js +4 -0
  123. package/lib/language/zh-CN.min.js +1 -1
  124. package/lib/language/zh-CN.umd.js +4 -0
  125. package/lib/radio/src/button.js +27 -3
  126. package/lib/radio/src/button.min.js +1 -1
  127. package/lib/radio/src/group.js +19 -2
  128. package/lib/radio/src/group.min.js +1 -1
  129. package/lib/radio/src/radio.js +27 -3
  130. package/lib/radio/src/radio.min.js +1 -1
  131. package/lib/radio/style/style.css +5 -3
  132. package/lib/radio/style/style.min.css +1 -1
  133. package/lib/style.css +1 -1
  134. package/lib/style.min.css +1 -1
  135. package/lib/switch/src/switch.js +18 -10
  136. package/lib/switch/src/switch.min.js +1 -1
  137. package/lib/tree/src/tree.js +27 -2
  138. package/lib/tree/src/tree.min.js +1 -1
  139. package/lib/tree/style/style.css +11 -6
  140. package/lib/tree/style/style.min.css +1 -1
  141. package/lib/tree-select/src/tree-select.js +2 -0
  142. package/lib/tree-select/src/tree-select.min.js +1 -1
  143. package/lib/ui/index.js +1 -1
  144. package/lib/ui/index.min.js +1 -1
  145. package/lib/ui/src/log.js +1 -1
  146. package/lib/ui/src/log.min.js +1 -1
  147. package/lib/vxe-checkbox/style/style.css +6 -3
  148. package/lib/vxe-checkbox/style/style.min.css +1 -1
  149. package/lib/vxe-radio/style/style.css +5 -3
  150. package/lib/vxe-radio/style/style.min.css +1 -1
  151. package/lib/vxe-tree/style/style.css +11 -6
  152. package/lib/vxe-tree/style/style.min.css +1 -1
  153. package/package.json +2 -2
  154. package/packages/checkbox/src/button.ts +26 -5
  155. package/packages/checkbox/src/checkbox.ts +27 -5
  156. package/packages/checkbox/src/group.ts +24 -3
  157. package/packages/input/src/input.ts +1 -1
  158. package/packages/language/ar-EG.ts +4 -0
  159. package/packages/language/de-DE.ts +4 -0
  160. package/packages/language/en-US.ts +4 -0
  161. package/packages/language/es-ES.ts +4 -0
  162. package/packages/language/fr-FR.ts +4 -0
  163. package/packages/language/hu-HU.ts +4 -0
  164. package/packages/language/hy-AM.ts +4 -0
  165. package/packages/language/id-ID.ts +4 -0
  166. package/packages/language/it-IT.ts +4 -0
  167. package/packages/language/ja-JP.ts +4 -0
  168. package/packages/language/ko-KR.ts +4 -0
  169. package/packages/language/ms-MY.ts +4 -0
  170. package/packages/language/nb-NO.ts +4 -0
  171. package/packages/language/pt-BR.ts +4 -0
  172. package/packages/language/ru-RU.ts +4 -0
  173. package/packages/language/th-TH.ts +4 -0
  174. package/packages/language/ug-CN.ts +4 -0
  175. package/packages/language/uk-UA.ts +4 -0
  176. package/packages/language/uz-UZ.ts +4 -0
  177. package/packages/language/vi-VN.ts +4 -0
  178. package/packages/language/zh-CHT.ts +4 -0
  179. package/packages/language/zh-CN.ts +4 -0
  180. package/packages/radio/src/button.ts +27 -5
  181. package/packages/radio/src/group.ts +18 -2
  182. package/packages/radio/src/radio.ts +28 -5
  183. package/packages/switch/src/switch.ts +19 -11
  184. package/packages/tree/src/tree.ts +32 -2
  185. package/packages/tree-select/src/tree-select.ts +2 -0
  186. package/styles/helpers/baseMixin.scss +12 -3
  187. package/types/components/checkbox-group.d.ts +3 -0
  188. package/types/components/radio-group.d.ts +3 -0
  189. package/types/components/tree.d.ts +10 -0
  190. /package/es/icon/{iconfont.1778223333608.ttf → iconfont.1778465063324.ttf} +0 -0
  191. /package/es/icon/{iconfont.1778223333608.woff → iconfont.1778465063324.woff} +0 -0
  192. /package/es/icon/{iconfont.1778223333608.woff2 → iconfont.1778465063324.woff2} +0 -0
  193. /package/es/{iconfont.1778223333608.ttf → iconfont.1778465063324.ttf} +0 -0
  194. /package/es/{iconfont.1778223333608.woff → iconfont.1778465063324.woff} +0 -0
  195. /package/es/{iconfont.1778223333608.woff2 → iconfont.1778465063324.woff2} +0 -0
  196. /package/lib/icon/style/{iconfont.1778223333608.ttf → iconfont.1778465063324.ttf} +0 -0
  197. /package/lib/icon/style/{iconfont.1778223333608.woff → iconfont.1778465063324.woff} +0 -0
  198. /package/lib/icon/style/{iconfont.1778223333608.woff2 → iconfont.1778465063324.woff2} +0 -0
  199. /package/lib/{iconfont.1778223333608.ttf → iconfont.1778465063324.ttf} +0 -0
  200. /package/lib/{iconfont.1778223333608.woff → iconfont.1778465063324.woff} +0 -0
  201. /package/lib/{iconfont.1778223333608.woff2 → iconfont.1778465063324.woff2} +0 -0
package/README.md CHANGED
@@ -23,10 +23,10 @@
23
23
 
24
24
  * 版本说明
25
25
  * **V4**
26
- * [x] v4.7 拆分 [vxe-design](https://github.com/x-extends/vxe-design) 可视化组件和基础组件库
26
+ * [x] v4.7 基于 xe-utils@4.0+,拆分 [vxe-design](https://github.com/x-extends/vxe-design) 可视化组件和基础组件库
27
27
  * [x] v4.0 基于 vue3.2~2.7,只支持现代浏览器,不支持 IE
28
28
  * **V3**
29
- * [x] v3.7 拆分 [vxe-design](https://github.com/x-extends/vxe-design) 可视化组件和基础组件库
29
+ * [x] v3.7 基于 xe-utils@4.0+,拆分 [vxe-design](https://github.com/x-extends/vxe-design) 可视化组件和基础组件库
30
30
  * [x] v3.0 基于 vue2.6~2.7,只支持现代浏览器,不支持 IE
31
31
  * **V2**
32
32
  * [x] ~~v2.0 基于 vue2.6~2.7,停止维护~~
@@ -2,7 +2,7 @@ import { h, computed, reactive, inject } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { getFuncText } from '../../ui/src/utils';
5
- import { getConfig, createEvent, useSize } from '../../ui';
5
+ import { getConfig, createEvent, useSize, renderEmptyElement } from '../../ui';
6
6
  export default defineVxeComponent({
7
7
  name: 'VxeCheckboxButton',
8
8
  props: {
@@ -59,10 +59,11 @@ export default defineVxeComponent({
59
59
  const isChecked = computeIsChecked.value;
60
60
  if (disabled === null) {
61
61
  if ($xeCheckboxGroup) {
62
- const { computeIsDisabled: computeIsGroupDisabled, computeIsMaximize: computeIsGroupMaximize } = $xeCheckboxGroup.getComputeMaps();
62
+ const { computeIsDisabled: computeIsGroupDisabled, computeIsReadonly: computeIsGroupReadonly, computeIsMaximize: computeIsGroupMaximize } = $xeCheckboxGroup.getComputeMaps();
63
63
  const isGroupDisabled = computeIsGroupDisabled.value;
64
+ const isGroupReadonly = computeIsGroupReadonly.value;
64
65
  const isGroupMaximize = computeIsGroupMaximize.value;
65
- return isGroupDisabled || (isGroupMaximize && !isChecked);
66
+ return isGroupDisabled || isGroupReadonly || (isGroupMaximize && !isChecked);
66
67
  }
67
68
  }
68
69
  return disabled;
@@ -95,10 +96,30 @@ export default defineVxeComponent({
95
96
  const checkboxButtonPrivateMethods = {};
96
97
  Object.assign($xeCheckboxButton, checkboxButtonMethods, checkboxButtonPrivateMethods);
97
98
  const renderVN = () => {
98
- const { label } = props;
99
+ const { label, content } = props;
99
100
  const vSize = computeSize.value;
100
101
  const isDisabled = computeIsDisabled.value;
101
102
  const isChecked = computeIsChecked.value;
103
+ const defaultSlot = slots.default;
104
+ if ($xeCheckboxGroup) {
105
+ const { computeIsReadonly: computeIsGroupReadonly } = $xeCheckboxGroup.getComputeMaps();
106
+ const isGroupReadonly = computeIsGroupReadonly.value;
107
+ if (isGroupReadonly) {
108
+ if (isChecked) {
109
+ return h('label', {
110
+ class: ['vxe-checkbox vxe-checkbox--button-view', {
111
+ [`size--${vSize}`]: vSize,
112
+ 'is--readonly': isGroupReadonly
113
+ }]
114
+ }, [
115
+ h('span', {
116
+ class: 'vxe-checkbox--label'
117
+ }, defaultSlot ? defaultSlot({}) : getFuncText(content))
118
+ ]);
119
+ }
120
+ return renderEmptyElement($xeCheckboxButton);
121
+ }
122
+ }
102
123
  return h('label', {
103
124
  key: label,
104
125
  class: ['vxe-checkbox vxe-checkbox--button', {
@@ -116,7 +137,7 @@ export default defineVxeComponent({
116
137
  }),
117
138
  h('span', {
118
139
  class: 'vxe-checkbox--label'
119
- }, slots.default ? slots.default({}) : getFuncText(props.content))
140
+ }, slots.default ? slots.default({}) : getFuncText(content))
120
141
  ]);
121
142
  };
122
143
  $xeCheckboxButton.renderVN = renderVN;
@@ -2,7 +2,7 @@ import { h, computed, inject, reactive } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { getFuncText } from '../../ui/src/utils';
5
- import { getConfig, createEvent, useSize, getIcon } from '../../ui';
5
+ import { getConfig, createEvent, useSize, getIcon, renderEmptyElement } from '../../ui';
6
6
  export default defineVxeComponent({
7
7
  name: 'VxeCheckbox',
8
8
  props: {
@@ -61,10 +61,11 @@ export default defineVxeComponent({
61
61
  const isChecked = computeIsChecked.value;
62
62
  if (disabled === null) {
63
63
  if ($xeCheckboxGroup) {
64
- const { computeIsDisabled: computeIsGroupDisabled, computeIsMaximize: computeIsGroupMaximize } = $xeCheckboxGroup.getComputeMaps();
64
+ const { computeIsDisabled: computeIsGroupDisabled, computeIsReadonly: computeIsGroupReadonly, computeIsMaximize: computeIsGroupMaximize } = $xeCheckboxGroup.getComputeMaps();
65
65
  const isGroupDisabled = computeIsGroupDisabled.value;
66
+ const isGroupReadonly = computeIsGroupReadonly.value;
66
67
  const isGroupMaximize = computeIsGroupMaximize.value;
67
- return isGroupDisabled || (isGroupMaximize && !isChecked);
68
+ return isGroupDisabled || isGroupReadonly || (isGroupMaximize && !isChecked);
68
69
  }
69
70
  }
70
71
  return disabled;
@@ -97,11 +98,31 @@ export default defineVxeComponent({
97
98
  };
98
99
  Object.assign($xeCheckbox, checkboxMethods);
99
100
  const renderVN = () => {
100
- const { label } = props;
101
+ const { label, content } = props;
101
102
  const vSize = computeSize.value;
102
103
  const isDisabled = computeIsDisabled.value;
103
104
  const isChecked = computeIsChecked.value;
104
105
  const indeterminate = !isChecked && props.indeterminate;
106
+ const defaultSlot = slots.default;
107
+ if ($xeCheckboxGroup) {
108
+ const { computeIsReadonly: computeIsGroupReadonly } = $xeCheckboxGroup.getComputeMaps();
109
+ const isGroupReadonly = computeIsGroupReadonly.value;
110
+ if (isGroupReadonly) {
111
+ if (isChecked) {
112
+ return h('label', {
113
+ class: ['vxe-checkbox vxe-checkbox--view', {
114
+ [`size--${vSize}`]: vSize,
115
+ 'is--readonly': isGroupReadonly
116
+ }]
117
+ }, [
118
+ h('span', {
119
+ class: 'vxe-checkbox--label'
120
+ }, defaultSlot ? defaultSlot({}) : getFuncText(content))
121
+ ]);
122
+ }
123
+ return renderEmptyElement($xeCheckbox);
124
+ }
125
+ }
105
126
  return h('label', {
106
127
  key: label,
107
128
  class: ['vxe-checkbox vxe-checkbox--default', {
@@ -124,7 +145,7 @@ export default defineVxeComponent({
124
145
  }),
125
146
  h('span', {
126
147
  class: 'vxe-checkbox--label'
127
- }, slots.default ? slots.default({}) : getFuncText(props.content))
148
+ }, defaultSlot ? defaultSlot({}) : getFuncText(content))
128
149
  ]);
129
150
  };
130
151
  $xeCheckbox.renderVN = renderVN;
@@ -14,6 +14,10 @@ export default defineVxeComponent({
14
14
  modelValue: Array,
15
15
  options: Array,
16
16
  optionProps: Object,
17
+ readonly: {
18
+ type: Boolean,
19
+ default: null
20
+ },
17
21
  disabled: {
18
22
  type: Boolean,
19
23
  default: null
@@ -40,11 +44,21 @@ export default defineVxeComponent({
40
44
  const xID = XEUtils.uniqueId();
41
45
  const reactData = reactive({});
42
46
  const internalData = createInternalData();
47
+ const computeIsReadonly = computed(() => {
48
+ const { readonly } = props;
49
+ if (readonly === null) {
50
+ if ($xeForm) {
51
+ return $xeForm.props.readonly;
52
+ }
53
+ return false;
54
+ }
55
+ return readonly;
56
+ });
43
57
  const computeIsDisabled = computed(() => {
44
58
  const { disabled } = props;
45
59
  if (disabled === null) {
46
60
  if ($xeForm) {
47
- return $xeForm.props.readonly || $xeForm.props.disabled;
61
+ return $xeForm.props.disabled;
48
62
  }
49
63
  return false;
50
64
  }
@@ -77,7 +91,8 @@ export default defineVxeComponent({
77
91
  });
78
92
  const computeMaps = {
79
93
  computeIsMaximize,
80
- computeIsDisabled
94
+ computeIsDisabled,
95
+ computeIsReadonly
81
96
  };
82
97
  const $xeCheckboxGroup = {
83
98
  xID,
@@ -155,8 +170,13 @@ export default defineVxeComponent({
155
170
  const valueField = computeValueField.value;
156
171
  const labelField = computeLabelField.value;
157
172
  const disabledField = computeDisabledField.value;
173
+ const isReadonly = computeIsReadonly.value;
174
+ const isDisabled = computeIsDisabled.value;
158
175
  return h('div', {
159
- class: 'vxe-checkbox-group'
176
+ class: ['vxe-checkbox-group', {
177
+ 'is--readonly': isReadonly,
178
+ 'is--disabled': isDisabled
179
+ }]
160
180
  }, defaultSlot
161
181
  ? defaultSlot({})
162
182
  : (options
@@ -21,6 +21,9 @@
21
21
  white-space: nowrap;
22
22
  line-height: 1;
23
23
  }
24
+ .vxe-checkbox {
25
+ cursor: pointer;
26
+ }
24
27
  .vxe-checkbox .vxe-checkbox--icon {
25
28
  font-size: 1.22em;
26
29
  }
@@ -38,15 +41,15 @@
38
41
  .vxe-checkbox.is--checked .vxe-checkbox--icon, .vxe-checkbox.is--indeterminate .vxe-checkbox--icon {
39
42
  color: var(--vxe-ui-font-primary-color);
40
43
  }
41
- .vxe-checkbox:not(.is--disabled) {
42
- cursor: pointer;
43
- }
44
44
  .vxe-checkbox:not(.is--disabled):hover .vxe-checkbox--icon {
45
45
  color: var(--vxe-ui-font-primary-color);
46
46
  }
47
47
  .vxe-checkbox.is--hidden {
48
48
  cursor: default;
49
49
  }
50
+ .vxe-checkbox.is--readonly {
51
+ cursor: auto;
52
+ }
50
53
  .vxe-checkbox.is--disabled {
51
54
  color: var(--vxe-ui-font-disabled-color);
52
55
  cursor: not-allowed;
@@ -1 +1 @@
1
- .vxe-checkbox-group{display:inline-flex;vertical-align:middle;line-height:1}.vxe-checkbox-slots{display:none}.vxe-checkbox--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-checkbox{display:inline-flex;vertical-align:middle;white-space:nowrap;line-height:1}.vxe-checkbox .vxe-checkbox--icon{font-size:1.22em}.vxe-checkbox .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-checkbox.is--checked,.vxe-checkbox.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox.is--checked .vxe-checkbox--icon,.vxe-checkbox.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox:not(.is--disabled){cursor:pointer}.vxe-checkbox:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox.is--hidden{cursor:default}.vxe-checkbox.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-checkbox.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-checkbox .vxe-checkbox--label{padding-left:.5em;vertical-align:middle}.vxe-checkbox>input[type=checkbox]{position:absolute;width:0;height:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vxe-checkbox:not(.is--disabled)>input:focus+.vxe-checkbox--icon{color:var(--vxe-ui-font-primary-darken-color)}.vxe-checkbox .vxe-checkbox--label{padding-left:.5em;vertical-align:middle;display:inline-block;max-width:50em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-checkbox{font-size:var(--vxe-ui-font-size-default)}.vxe-checkbox.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-checkbox.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-checkbox.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-checkbox--default,.vxe-checkbox-group{margin-right:var(--vxe-ui-base-margin-gap-default)}.vxe-checkbox--default.size--medium,.vxe-checkbox-group.size--medium{margin-right:var(--vxe-ui-base-margin-gap-medium)}.vxe-checkbox--default.size--small,.vxe-checkbox-group.size--small{margin-right:var(--vxe-ui-base-margin-gap-small)}.vxe-checkbox--default.size--mini,.vxe-checkbox-group.size--mini{margin-right:var(--vxe-ui-base-margin-gap-mini)}.vxe-checkbox--default:last-of-type,.vxe-checkbox-group:last-of-type{margin-right:0}
1
+ .vxe-checkbox-group{display:inline-flex;vertical-align:middle;line-height:1}.vxe-checkbox-slots{display:none}.vxe-checkbox--readonly{color:var(--vxe-ui-font-color);display:inline-flex}.vxe-checkbox{display:inline-flex;vertical-align:middle;white-space:nowrap;line-height:1}.vxe-checkbox{cursor:pointer}.vxe-checkbox .vxe-checkbox--icon{font-size:1.22em}.vxe-checkbox .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-checkbox.is--checked,.vxe-checkbox.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox.is--checked .vxe-checkbox--icon,.vxe-checkbox.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-checkbox.is--hidden{cursor:default}.vxe-checkbox.is--readonly{cursor:auto}.vxe-checkbox.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-checkbox.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-checkbox .vxe-checkbox--label{padding-left:.5em;vertical-align:middle}.vxe-checkbox>input[type=checkbox]{position:absolute;width:0;height:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vxe-checkbox:not(.is--disabled)>input:focus+.vxe-checkbox--icon{color:var(--vxe-ui-font-primary-darken-color)}.vxe-checkbox .vxe-checkbox--label{padding-left:.5em;vertical-align:middle;display:inline-block;max-width:50em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-checkbox{font-size:var(--vxe-ui-font-size-default)}.vxe-checkbox.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-checkbox.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-checkbox.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-checkbox--default,.vxe-checkbox-group{margin-right:var(--vxe-ui-base-margin-gap-default)}.vxe-checkbox--default.size--medium,.vxe-checkbox-group.size--medium{margin-right:var(--vxe-ui-base-margin-gap-medium)}.vxe-checkbox--default.size--small,.vxe-checkbox-group.size--small{margin-right:var(--vxe-ui-base-margin-gap-small)}.vxe-checkbox--default.size--mini,.vxe-checkbox-group.size--mini{margin-right:var(--vxe-ui-base-margin-gap-mini)}.vxe-checkbox--default:last-of-type,.vxe-checkbox-group:last-of-type{margin-right:0}
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: 'Loading'
558
558
  },
559
+ switch: {
560
+ onText: 'On',
561
+ offText: 'Off'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -556,6 +556,10 @@ export default {
556
556
  contextMenu: {
557
557
  loadingText: '加载中...'
558
558
  },
559
+ switch: {
560
+ onText: '打开',
561
+ offText: '关闭'
562
+ },
559
563
  gantt: {
560
564
  tFullFormat: {
561
565
  year: '{yyyy}年',
@@ -2,7 +2,7 @@ import { h, computed, reactive, inject } from 'vue';
2
2
  import { defineVxeComponent } from '../../ui/src/comp';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { getFuncText } from '../../ui/src/utils';
5
- import { getConfig, createEvent, useSize } from '../../ui';
5
+ import { getConfig, createEvent, useSize, renderEmptyElement } from '../../ui';
6
6
  export default defineVxeComponent({
7
7
  name: 'VxeRadioButton',
8
8
  props: {
@@ -55,8 +55,10 @@ export default defineVxeComponent({
55
55
  const { disabled } = props;
56
56
  if (disabled === null) {
57
57
  if ($xeRadioGroup) {
58
- const { computeIsDisabled } = $xeRadioGroup.getComputeMaps();
59
- return computeIsDisabled.value;
58
+ const { computeIsDisabled: computeIsGroupDisabled, computeIsReadonly: computeIsGroupReadonly } = $xeRadioGroup.getComputeMaps();
59
+ const isGroupDisabled = computeIsGroupDisabled.value;
60
+ const isGroupReadonly = computeIsGroupReadonly.value;
61
+ return isGroupDisabled || isGroupReadonly;
60
62
  }
61
63
  }
62
64
  return disabled;
@@ -114,12 +116,32 @@ export default defineVxeComponent({
114
116
  }
115
117
  };
116
118
  const renderVN = () => {
117
- const { label, checkedValue } = props;
119
+ const { label, content, checkedValue } = props;
118
120
  const radioValue = XEUtils.isUndefined(checkedValue) ? label : checkedValue;
119
121
  const vSize = computeSize.value;
120
122
  const isDisabled = computeIsDisabled.value;
121
123
  const name = computeName.value;
122
124
  const isChecked = computeChecked.value;
125
+ const defaultSlot = slots.default;
126
+ if ($xeRadioGroup) {
127
+ const { computeIsReadonly: computeIsGroupReadonly } = $xeRadioGroup.getComputeMaps();
128
+ const isGroupReadonly = computeIsGroupReadonly.value;
129
+ if (isGroupReadonly) {
130
+ if (isChecked) {
131
+ return h('label', {
132
+ class: ['vxe-radio vxe-radio--button-view', {
133
+ [`size--${vSize}`]: vSize,
134
+ 'is--readonly': isGroupReadonly
135
+ }]
136
+ }, [
137
+ h('span', {
138
+ class: 'vxe-checkbox--label'
139
+ }, defaultSlot ? defaultSlot({}) : getFuncText(content))
140
+ ]);
141
+ }
142
+ return renderEmptyElement($xeRadioButton);
143
+ }
144
+ }
123
145
  return h('label', {
124
146
  key: radioValue,
125
147
  class: ['vxe-radio vxe-radio--button', {
@@ -139,7 +161,7 @@ export default defineVxeComponent({
139
161
  }),
140
162
  h('span', {
141
163
  class: 'vxe-radio--label'
142
- }, slots.default ? slots.default({}) : getFuncText(props.content))
164
+ }, defaultSlot ? defaultSlot({}) : getFuncText(content))
143
165
  ]);
144
166
  };
145
167
  $xeRadioButton.renderVN = renderVN;
@@ -17,6 +17,10 @@ export default defineVxeComponent({
17
17
  type: Boolean,
18
18
  default: null
19
19
  },
20
+ readonly: {
21
+ type: Boolean,
22
+ default: null
23
+ },
20
24
  type: String,
21
25
  options: Array,
22
26
  optionProps: Object,
@@ -43,11 +47,21 @@ export default defineVxeComponent({
43
47
  const { computeSize } = useSize(props);
44
48
  const reactData = reactive({});
45
49
  const internalData = createInternalData();
50
+ const computeIsReadonly = computed(() => {
51
+ const { readonly } = props;
52
+ if (readonly === null) {
53
+ if ($xeForm) {
54
+ return $xeForm.props.readonly;
55
+ }
56
+ return false;
57
+ }
58
+ return readonly;
59
+ });
46
60
  const computeIsDisabled = computed(() => {
47
61
  const { disabled } = props;
48
62
  if (disabled === null) {
49
63
  if ($xeForm) {
50
- return $xeForm.props.readonly || $xeForm.props.disabled;
64
+ return $xeForm.props.disabled;
51
65
  }
52
66
  return false;
53
67
  }
@@ -57,7 +71,8 @@ export default defineVxeComponent({
57
71
  return Object.assign({}, props.defaultConfig);
58
72
  });
59
73
  const computeMaps = {
60
- computeIsDisabled
74
+ computeIsDisabled,
75
+ computeIsReadonly
61
76
  };
62
77
  const $xeRadioGroup = {
63
78
  xID,