@aloudata/aloudata-design 0.4.7 → 0.4.8-beta.2

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.
@@ -12,9 +12,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
12
12
 
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
14
 
15
- import React, { createContext, useRef } from 'react';
16
- import useMergedState from 'rc-util/lib/hooks/useMergedState';
17
15
  import classNames from 'classnames';
16
+ import useMergedState from 'rc-util/lib/hooks/useMergedState';
17
+ import React, { createContext, useRef } from 'react';
18
18
  export var RadioGroupContext = /*#__PURE__*/createContext({});
19
19
  export default function RadioGroup(props) {
20
20
  var children = props.children,
@@ -24,7 +24,9 @@ export default function RadioGroup(props) {
24
24
  size = _props$size === void 0 ? 'middle' : _props$size,
25
25
  _props$type = props.type,
26
26
  type = _props$type === void 0 ? 'radio' : _props$type,
27
- className = props.className; // 滑块的ref
27
+ className = props.className,
28
+ _props$disabled = props.disabled,
29
+ disabled = _props$disabled === void 0 ? false : _props$disabled; // 滑块的ref
28
30
 
29
31
  var sliderRef = useRef(null); // 该hooks与useState相同,但是当props中有value值时,优先使用value的值
30
32
 
@@ -63,7 +65,8 @@ export default function RadioGroup(props) {
63
65
  radioGroupStyle: radioGroupStyle,
64
66
  size: size,
65
67
  type: type,
66
- sliderRef: sliderRef
68
+ sliderRef: sliderRef,
69
+ disabled: disabled
67
70
  }
68
71
  }, /*#__PURE__*/React.createElement("div", {
69
72
  className: getWrapperClass()
@@ -5,10 +5,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
7
  import classNames from 'classnames';
8
- import React, { useContext, useEffect, useRef } from 'react';
9
8
  import _ from 'lodash';
10
- import { RadioGroupContext } from "../Group";
9
+ import React, { useContext, useEffect, useRef } from 'react';
11
10
  import { getUUID } from "../../../_utils/hooks/useId";
11
+ import { RadioGroupContext } from "../Group";
12
12
  export default function Radio(props) {
13
13
  var groupContext = useContext(RadioGroupContext);
14
14
  var labelRef = useRef(null);
@@ -17,7 +17,7 @@ export default function Radio(props) {
17
17
  var radioProps = _objectSpread({}, props);
18
18
 
19
19
  if (!_.isEmpty(groupContext)) {
20
- radioProps.disabled = props.disabled;
20
+ radioProps.disabled = groupContext.disabled || props.disabled;
21
21
  radioProps.checked = !props.disabled && groupContext.value === props.value;
22
22
  } else {
23
23
  radioProps.checked = !('checked' in props) ? props.defaultChecked : radioProps.checked;
@@ -35,8 +35,10 @@ export default function Radio(props) {
35
35
  if (groupContext.type === 'button') {
36
36
  if (groupContext.radioGroupStyle === 'filled') {
37
37
  otherClass = 'ald-radio-button-wrapper-filled';
38
- } else {
38
+ } else if (groupContext.radioGroupStyle === 'border') {
39
39
  otherClass = 'ald-radio-button-wrapper-border';
40
+ } else {
41
+ otherClass = 'ald-radio-button-wrapper-border-primary';
40
42
  }
41
43
  } else if (groupContext.type === 'iconButton') {
42
44
  if (groupContext.radioGroupStyle === 'filled') {
@@ -67,7 +69,6 @@ export default function Radio(props) {
67
69
 
68
70
  var onChange = function onChange() {
69
71
  if (groupContext !== null && groupContext !== void 0 && groupContext.onChange) {
70
- // console.log(e);
71
72
  // input事件的value会被toString,所以此处进行一个覆盖
72
73
  groupContext.onChange(props.value);
73
74
  }
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- export declare type TRadioGroupStyle = 'border' | 'filled';
2
+ export declare type TRadioGroupStyle = 'border' | 'filled' | 'borderPrimary';
3
3
  export declare type TRadioSize = 'large' | 'middle' | 'small' | 'default';
4
4
  export declare type TRadioType = 'radio' | 'button' | 'iconButton';
5
5
  export interface IRadioGroupProps {
@@ -13,6 +13,11 @@ export interface IRadioGroupProps {
13
13
  * @default -
14
14
  */
15
15
  defaultValue?: any;
16
+ /**
17
+ * @description 整组禁用
18
+ * @default false
19
+ */
20
+ disabled?: boolean;
16
21
  /**
17
22
  * @description 设置按钮组的大小,有'large' | 'middle'('default') | 'small
18
23
  * @default 'middle'
@@ -7,11 +7,14 @@
7
7
  @radio-group-height-middle: 32px;
8
8
  @radio-group-height-small: 28px;
9
9
  @radio-button-padding: 12px;
10
+ @radio-button-padding-large: 14px;
11
+ @radio-button-padding-small: 10px;
12
+ @radio-button-padding-middle: 12px;
10
13
 
11
14
  // Radio组件基础样式
12
15
  .ald-radio-wrapper {
13
16
  display: inline-flex;
14
- gap: 8px;
17
+ gap: 4px;
15
18
  align-items: center;
16
19
  justify-content: start;
17
20
  height: 20px;
@@ -41,9 +44,10 @@
41
44
  .ald-radio-inner {
42
45
  position: relative;
43
46
  display: inline-block;
44
- width: 17px;
45
- height: 17px;
46
- border: 1px solid @NL90;
47
+ width: 15px;
48
+ height: 15px;
49
+ border: 1px solid @BG60;
50
+ background-color: @BG100;
47
51
  border-radius: 50%;
48
52
  }
49
53
 
@@ -54,57 +58,79 @@
54
58
  justify-content: center;
55
59
  color: @NL0;
56
60
  font-weight: 400;
61
+ font-size: 13px;
62
+ line-height: 20px;
63
+ user-select: none;
57
64
  }
58
65
  // 绘制选中时的圆圈样式
59
66
  .ald-radio-checked > .ald-radio-inner {
60
- background-color: @B60;
61
- border: 0;
67
+ border: 1px solid @B40;
68
+ background: @B95;
62
69
  transform: background 0.5s ease;
63
70
 
64
71
  &::after {
65
72
  position: absolute;
66
73
  top: 50%;
67
74
  left: 50%;
68
- width: 6px;
69
- height: 6px;
70
- background-color: @ND0;
75
+ width: 7px;
76
+ height: 7px;
77
+ background-color: @B40;
71
78
  border-radius: 50%;
72
79
  transform: translate(-50%, -50%);
73
80
  content: '';
74
81
  }
75
82
  }
83
+
76
84
  // 禁用状态下的样式
77
85
  .ald-radio-disabled > .ald-radio-inner {
78
86
  background-color: @NL90;
79
- border: 0;
87
+ border: 1px solid @BG60;
80
88
  }
81
89
 
82
- .ald-radio-disabled.ald-radio-checked > .ald-radio-inner::after {
83
- position: absolute;
84
- top: 50%;
85
- left: 50%;
86
- width: 6px;
87
- height: 6px;
88
- background: @NL90;
89
- border-radius: 50%;
90
- transform: translate(-50%, -50%);
91
- content: '';
90
+ .ald-radio-disabled.ald-radio-checked > .ald-radio-inner {
91
+ border: 1px solid @B40;
92
+ background: @B95;
93
+
94
+ &::after {
95
+ position: absolute;
96
+ top: 50%;
97
+ left: 50%;
98
+ width: 7px;
99
+ height: 7px;
100
+ background: @B40;
101
+ border-radius: 50%;
102
+ transform: translate(-50%, -50%);
103
+ content: '';
104
+ }
92
105
  }
93
106
  // 禁用的样式
94
107
  .ald-radio-label.ald-radio-wrapper-disabled {
95
108
  cursor: default;
109
+ opacity: 0.5;
96
110
 
97
111
  .ald-radio-desc {
98
112
  color: @NL60;
99
113
  }
100
114
  }
115
+
116
+ .ald-radio-button-wrapper-border-primary,
117
+ .ald-radio-button-wrapper-border {
118
+ &.ald-radio-label.ald-radio-wrapper-disabled {
119
+ opacity: 0.5;
120
+
121
+ .ald-radio-desc {
122
+ color: @NL20;
123
+ }
124
+ }
125
+ }
126
+
101
127
  // RadioGroup基础样式
102
128
  .ald-radio-group {
103
129
  position: relative;
104
130
 
105
131
  .ald-radio-label .ald-radio-desc {
106
132
  color: @NL30;
107
- font-weight: 500;
133
+ font-weight: 600;
108
134
  font-size: @font-size-middle;
109
135
  font-style: normal;
110
136
  }
@@ -128,9 +154,9 @@
128
154
  left: 0;
129
155
  z-index: 1;
130
156
  width: 0;
131
- height: 100%;
157
+ height: calc(100% - 2px);
132
158
  background: @BG100;
133
- border: 1px solid @NL90;
159
+ border: 1px solid @BG60;
134
160
  border-radius: @border-radius-middle;
135
161
  transition: width, left, height 0.3s, 0.3s, 0.3s ease;
136
162
  }
@@ -156,21 +182,26 @@
156
182
  color: @NL80;
157
183
  }
158
184
  }
185
+
159
186
  // border的样式
160
- .ald-radio-button-wrapper-border {
187
+ .ald-radio-button-wrapper-border,
188
+ .ald-radio-button-wrapper-border-primary {
161
189
  padding: 0 @radio-button-padding - 1;
162
190
  }
163
191
 
164
192
  .ald-radio-button-wrapper-border,
193
+ .ald-radio-button-wrapper-border-primary,
165
194
  .ald-radio-icon-button-wrapper-border {
166
195
  position: relative;
167
196
  display: flex;
168
197
  align-items: center;
169
198
  justify-content: center;
170
- height: 100%;
199
+ height: calc(100% - 2px);
171
200
  background: @BG100;
172
- border: 1px solid @NL90;
173
- border-right: 1px solid transparent;
201
+ border-top: 1px solid @BG60;
202
+ border-left: 1px solid @BG60;
203
+ border-bottom: 1px solid @BG60;
204
+ overflow: hidden;
174
205
  cursor: pointer;
175
206
 
176
207
  &:first-child {
@@ -178,7 +209,7 @@
178
209
  }
179
210
 
180
211
  &:last-child {
181
- border-right: 1px solid @NL90;
212
+ border-right: 1px solid @BG60;
182
213
  border-radius: 0 6px 6px 0;
183
214
  }
184
215
 
@@ -199,8 +230,9 @@
199
230
 
200
231
  // button选中状态下的样式
201
232
  .ald-radio-wrapper-checked.ald-radio-button-wrapper-border,
233
+ .ald-radio-wrapper-checked.ald-radio-button-wrapper-border-primary,
202
234
  .ald-radio-wrapper-checked.ald-radio-icon-button-wrapper-border {
203
- background: @B98;
235
+ background: @BG80;
204
236
  transition: background 0.5s ease;
205
237
 
206
238
  .ald-radio-desc {
@@ -210,6 +242,17 @@
210
242
  }
211
243
  }
212
244
 
245
+ .ald-radio-wrapper-checked.ald-radio-button-wrapper-border-primary {
246
+ background: @B40;
247
+ transition: background 0.5s ease;
248
+
249
+ .ald-radio-desc {
250
+ position: relative;
251
+ color: @ND0;
252
+ transition: text-shadow 0.5s ease;
253
+ }
254
+ }
255
+
213
256
  // filled样式的button
214
257
  .ald-radio-button-wrapper-filled {
215
258
  padding: 0 @radio-button-padding;
@@ -246,6 +289,10 @@
246
289
  .ald-radio-checked > .ald-radio-inner::after {
247
290
  width: 0;
248
291
  }
292
+
293
+ .ald-radio-desc {
294
+ font-weight: 400;
295
+ }
249
296
  }
250
297
 
251
298
  .ald-radio-wrapper-checked.ald-radio-button-wrapper-filled,
@@ -254,6 +301,7 @@
254
301
 
255
302
  .ald-radio-desc {
256
303
  position: relative;
304
+ font-weight: 400;
257
305
  z-index: 2;
258
306
  color: @NL0;
259
307
  }
@@ -266,6 +314,11 @@
266
314
  padding: 0 @radio-icon-button-padding-middle;
267
315
  }
268
316
 
317
+ .ald-radio-button-wrapper-border,
318
+ .ald-radio-button-wrapper-border-primary {
319
+ padding: 0 @radio-button-padding-middle - 1;
320
+ }
321
+
269
322
  .ald-radio-icon-button-wrapper-border {
270
323
  padding: 0 @radio-icon-button-padding-middle - 1;
271
324
  }
@@ -284,6 +337,11 @@
284
337
  padding: 0 @radio-icon-button-padding-small;
285
338
  }
286
339
 
340
+ .ald-radio-button-wrapper-border,
341
+ .ald-radio-button-wrapper-border-primary {
342
+ padding: 0 @radio-button-padding-small - 1;
343
+ }
344
+
287
345
  .ald-radio-icon-button-wrapper-border {
288
346
  padding: 0 @radio-icon-button-padding-small - 1;
289
347
  }
@@ -296,6 +354,7 @@
296
354
 
297
355
  .ald-radio-button-wrapper-border,
298
356
  .ald-radio-icon-button-wrapper-border,
357
+ .ald-radio-button-wrapper-border-primary,
299
358
  .ald-radio-button-wrapper-filled,
300
359
  .ald-radio-icon-button-wrapper-filled {
301
360
  &:first-of-type {
@@ -319,6 +378,11 @@
319
378
  padding: 0 @radio-icon-button-padding-large;
320
379
  }
321
380
 
381
+ .ald-radio-button-wrapper-border,
382
+ .ald-radio-button-wrapper-border-primary {
383
+ padding: 0 @radio-button-padding-large - 1;
384
+ }
385
+
322
386
  .ald-radio-icon-button-wrapper-border {
323
387
  padding: 0 @radio-icon-button-padding-large - 1;
324
388
  }
@@ -331,6 +395,7 @@
331
395
 
332
396
  .ald-radio-button-wrapper-border,
333
397
  .ald-radio-icon-button-wrapper-border,
398
+ .ald-radio-button-wrapper-border-primary,
334
399
  .ald-radio-button-wrapper-filled,
335
400
  .ald-radio-icon-button-wrapper-filled {
336
401
  &:first-of-type {
@@ -135,7 +135,10 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
135
135
  });
136
136
  }
137
137
 
138
- setSelectedOptions(newOptions);
138
+ if (typeof value === 'undefined') {
139
+ setSelectedOptions(newOptions);
140
+ }
141
+
139
142
  onChange === null || onChange === void 0 ? void 0 : onChange(newOptions.map(function (item) {
140
143
  return item.value;
141
144
  }), newOptions);
@@ -154,9 +157,7 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
154
157
  option: option,
155
158
  disabled: option.disabled,
156
159
  onChange: function onChange(selected) {
157
- if (typeof value === 'undefined') {
158
- onMultipleOptionChange(option, selected);
159
- }
160
+ onMultipleOptionChange(option, selected);
160
161
  }
161
162
  });
162
163
  }));
@@ -165,7 +166,10 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
165
166
  var onSingleOptionChange = function onSingleOptionChange(option) {
166
167
  var _props$onSelect2;
167
168
 
168
- setSelectedOptions([option]);
169
+ if (typeof value === 'undefined') {
170
+ setSelectedOptions([option]);
171
+ }
172
+
169
173
  onChange === null || onChange === void 0 ? void 0 : onChange(option.value, option);
170
174
  (_props$onSelect2 = props.onSelect) === null || _props$onSelect2 === void 0 ? void 0 : _props$onSelect2.call(props, option.value, option);
171
175
  setIsOpen(false);
@@ -184,9 +188,7 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
184
188
  option: option,
185
189
  disabled: option.disabled,
186
190
  onChange: function onChange() {
187
- if (typeof value === 'undefined') {
188
- onSingleOptionChange(option);
189
- }
191
+ onSingleOptionChange(option);
190
192
  }
191
193
  });
192
194
  }));
@@ -194,7 +196,18 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
194
196
 
195
197
  var getDropdownRender = function getDropdownRender() {
196
198
  if (dropdownRender) {
197
- return dropdownRender;
199
+ if (isMultiple) {
200
+ var menu = multipleRender();
201
+ return function () {
202
+ return dropdownRender(menu);
203
+ };
204
+ } else {
205
+ var _menu = singleRender();
206
+
207
+ return function () {
208
+ return dropdownRender(_menu);
209
+ };
210
+ }
198
211
  } else if (Array.isArray(options) && options.length > 0) {
199
212
  if (!isMultiple) {
200
213
  return singleRender;
@@ -243,7 +256,7 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
243
256
  };
244
257
 
245
258
  useEffect(function () {
246
- getSelectedOptionsFromValue(isMultiple, options, value);
259
+ setSelectedOptions(getSelectedOptionsFromValue(isMultiple, options, value));
247
260
  }, [value]);
248
261
  return /*#__PURE__*/React.createElement("div", {
249
262
  className: classNames('ald-select', className, {
@@ -272,6 +285,7 @@ var Select = /*#__PURE__*/forwardRef(function (props, ref) {
272
285
  maxTagCount: "responsive",
273
286
  ref: ref,
274
287
  tagRender: tagRender,
288
+ onChange: onChange,
275
289
  popupClassName: classNames('ald-select-popup', popupClassName),
276
290
  maxTagPlaceholder: maxTagPlaceholder,
277
291
  className: classNames({
@@ -1,36 +1,36 @@
1
1
  @import './themeColor.module.less';
2
- @font-family:Inter, -apple-system, PingFang SC, BlinkMacSystemFont,"Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol";
2
+ /* stylelint-disable-next-line at-rule-no-unknown */
3
+ @font-family:inter, -apple-system, PingFang SC, BlinkMacSystemFont,"Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji","Segoe UI Emoji", "Segoe UI Symbol";
3
4
  @ald-prefix: ant;
4
5
 
5
-
6
6
  // base 不分大小写情况
7
7
  @border-radius-base: 8px;
8
- @line-height-base:20px;
9
- @font-size-base:14px;
8
+ @line-height-base: 20px;
9
+ @font-size-base: 14px;
10
10
 
11
11
  // large
12
- @font-size-large:16px;
13
- @line-height-large:24px;
14
- @padding-top-large:6px;
15
- @padding-bottom-large:6px;
16
- @padding-left-large:12px;
17
- @padding-right-large:12px;
18
- @border-radius-large:8px;
12
+ @font-size-large: 16px;
13
+ @line-height-large: 24px;
14
+ @padding-top-large: 6px;
15
+ @padding-bottom-large: 6px;
16
+ @padding-left-large: 12px;
17
+ @padding-right-large: 12px;
18
+ @border-radius-large: 6px;
19
19
 
20
20
  // middle
21
- @font-size-middle:14px;
22
- @line-height-middle:20px;
23
- @padding-top-middle:6px;
24
- @padding-bottom-middle:6px;
25
- @padding-left-middle:12px;
26
- @padding-right-middle:12px;
27
- @border-radius-middle:6px;
21
+ @font-size-middle: 13px;
22
+ @line-height-middle: 20px;
23
+ @padding-top-middle: 6px;
24
+ @padding-bottom-middle: 6px;
25
+ @padding-left-middle: 12px;
26
+ @padding-right-middle: 12px;
27
+ @border-radius-middle: 4px;
28
28
 
29
29
  // small
30
- @font-size-small:12px;
31
- @line-height-small:16px;
32
- @padding-top-small:6px;
33
- @padding-bottom-small:6px;
34
- @padding-left-small:8px;
35
- @padding-right-small:8px;
36
- @border-radius-small:4px;
30
+ @font-size-small: 12px;
31
+ @line-height-small: 16px;
32
+ @padding-top-small: 6px;
33
+ @padding-bottom-small: 6px;
34
+ @padding-left-small: 8px;
35
+ @padding-right-small: 8px;
36
+ @border-radius-small: 4px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aloudata/aloudata-design",
3
- "version": "0.4.7",
3
+ "version": "0.4.8-beta.2",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",
@@ -50,8 +50,8 @@
50
50
  ]
51
51
  },
52
52
  "dependencies": {
53
- "@aloudata/icons-react": "^0.1.3",
54
- "@aloudata/icons-svg": "^0.1.3",
53
+ "@aloudata/icons-react": "0.1.5",
54
+ "@aloudata/icons-svg": "0.1.5",
55
55
  "antd": "5.2.0",
56
56
  "memoize-one": "^6.0.0",
57
57
  "rc-menu": "^9.8.0",