@cloudbase/weda-ui 0.2.10 → 0.2.14

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 (111) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/package.json +61 -40
  3. package/src/.DS_Store +0 -0
  4. package/src/configs/.DS_Store +0 -0
  5. package/src/configs/components/button.json +7 -3
  6. package/src/configs/components/form/richText.json +1 -1
  7. package/src/configs/components/form/uploader.json +29 -1
  8. package/src/configs/components/form/uploaderFile.json +158 -0
  9. package/src/configs/components/image.json +12 -3
  10. package/src/configs/components/link.json +3 -3
  11. package/src/configs/components/richtextview.json +2 -2
  12. package/src/configs/components/scrollVeiw.json +5 -5
  13. package/src/configs/components/swiper.json +6 -6
  14. package/src/configs/components/tabs.json +3 -3
  15. package/src/configs/components/text.json +39 -4
  16. package/src/configs/index.js +5 -3
  17. package/src/mp/.gitignore +10 -0
  18. package/src/mp/components/button/index.js +1 -0
  19. package/src/mp/components/button/index.wxss +8 -0
  20. package/src/mp/components/form/select/index.js +18 -0
  21. package/src/mp/components/form/uploader/index.js +26 -29
  22. package/src/mp/components/form/uploaderFile/index.js +233 -0
  23. package/src/mp/components/form/uploaderFile/index.json +9 -0
  24. package/src/mp/components/form/uploaderFile/index.wxml +46 -0
  25. package/src/mp/components/form/uploaderFile/index.wxss +105 -0
  26. package/src/mp/components/text/index.js +33 -0
  27. package/src/mp/components/text/index.wxml +1 -1
  28. package/src/mp/components/text/index.wxss +18 -0
  29. package/src/mp/index.json +1 -0
  30. package/src/mp/utils/platform.js +20 -0
  31. package/src/mp/utils/tcb.js +11 -0
  32. package/src/web/.DS_Store +0 -0
  33. package/src/web/actions/showModal/{index.jsx → index.tsx} +53 -3
  34. package/src/web/components/auth/index.js +2 -2
  35. package/src/web/components/button/index.css +9 -0
  36. package/src/web/components/button/{index.jsx → index.tsx} +27 -41
  37. package/src/web/components/container/{index.jsx → index.tsx} +6 -10
  38. package/src/web/components/drawer/index.tsx +57 -0
  39. package/src/web/components/form/checkbox/{index.jsx → index.tsx} +24 -48
  40. package/src/web/components/form/enumSelect/MultipleSelect.jsx +1 -6
  41. package/src/web/components/form/enumSelect/{NormalSelect.jsx → NormalSelect.tsx} +3 -14
  42. package/src/web/components/form/form/index.tsx +48 -0
  43. package/src/web/components/form/formcell/{index.jsx → index.tsx} +6 -13
  44. package/src/web/components/form/input/index.css +39 -0
  45. package/src/web/components/form/input/{index.jsx → index.tsx} +33 -67
  46. package/src/web/components/form/radio/{index.jsx → index.tsx} +19 -42
  47. package/src/web/components/form/{renderDecorator.jsx → renderDecorator.tsx} +1 -3
  48. package/src/web/components/form/select/{h5.jsx → h5.tsx} +18 -62
  49. package/src/web/components/form/select/{index.jsx → index.tsx} +51 -94
  50. package/src/web/components/form/select/region/{cities.js → cities.ts} +1 -1
  51. package/src/web/components/form/select/region/{index.js → index.ts} +3 -3
  52. package/src/web/components/form/select/region/{provinces.js → provinces.ts} +1 -1
  53. package/src/web/components/form/select/region/{regions.js → regions.ts} +1 -1
  54. package/src/web/components/form/select/time.jsx +2 -2
  55. package/src/web/components/form/switch/{index.jsx → index.tsx} +30 -47
  56. package/src/web/components/form/textarea/{index.jsx → index.tsx} +22 -55
  57. package/src/web/components/form/tips/{index.jsx → index.tsx} +8 -22
  58. package/src/web/components/form/types.d.ts +12 -0
  59. package/src/web/components/form/uploader/{index.jsx → index.tsx} +16 -14
  60. package/src/web/components/form/uploader/{uploader.h5.jsx → uploader.h5.tsx} +67 -57
  61. package/src/web/components/form/uploader/{uploader.pc.jsx → uploader.pc.tsx} +26 -43
  62. package/src/web/components/form/uploaderFile/fail.svg +12 -0
  63. package/src/web/components/form/uploaderFile/index.css +423 -0
  64. package/src/web/components/form/uploaderFile/index.jsx +30 -0
  65. package/src/web/components/form/uploaderFile/pending.svg +18 -0
  66. package/src/web/components/form/uploaderFile/success.svg +12 -0
  67. package/src/web/components/form/uploaderFile/uploadFile.h5.tsx +578 -0
  68. package/src/web/components/form/uploaderFile/uploadFile.pc.tsx +507 -0
  69. package/src/web/components/image/{image.jsx → image.tsx} +8 -21
  70. package/src/web/components/image/{index.jsx → index.tsx} +22 -37
  71. package/src/web/components/index.js +36 -1
  72. package/src/web/components/link/{index.jsx → index.tsx} +19 -36
  73. package/src/web/components/modal/{index.jsx → index.tsx} +22 -9
  74. package/src/web/components/picker/{datePicker.jsx → datePicker.tsx} +11 -12
  75. package/src/web/components/picker/{picker.jsx → picker.tsx} +7 -10
  76. package/src/web/components/picker/{timePicker.jsx → timePicker.tsx} +8 -16
  77. package/src/web/components/richText/{const.js → const.ts} +0 -0
  78. package/src/web/components/richText/index.jsx +5 -2
  79. package/src/web/components/richTextView/index.tsx +67 -0
  80. package/src/web/components/scrollView/{index.jsx → index.tsx} +18 -33
  81. package/src/web/components/slot/{index.jsx → index.tsx} +8 -9
  82. package/src/web/components/swiper/index.css +1 -1
  83. package/src/web/components/swiper/{index.jsx → index.tsx} +73 -78
  84. package/src/web/components/tabs/index.tsx +33 -0
  85. package/src/web/components/tabs/{tabs.h5.jsx → tabs.h5.tsx} +4 -33
  86. package/src/web/components/tabs/{tabs.pc.jsx → tabs.pc.tsx} +5 -39
  87. package/src/web/components/text/index.css +18 -0
  88. package/src/web/components/text/index.tsx +69 -0
  89. package/src/web/components/uploaderFileView/index.css +11 -0
  90. package/src/web/components/uploaderFileView/index.jsx +75 -0
  91. package/src/web/components/uploaderView/{index.jsx → index.tsx} +12 -15
  92. package/src/web/types.d.ts +20 -0
  93. package/src/web/utils/constant.js +2 -0
  94. package/src/web/utils/loading-fallback.tsx +2 -0
  95. package/src/web/utils/platform.js +77 -6
  96. package/src/web/utils/tcb.js +0 -8
  97. package/src/web/utils/useSetState.ts +14 -0
  98. package/src/web/utils/useSyncValue.ts +17 -0
  99. package/src/web/wedatheme/.git +1 -0
  100. package/src/web/wedatheme/.gitignore +5 -0
  101. package/src/web/wedatheme/.npmrc +1 -0
  102. package/src/web/wedatheme/package-lock.json +14335 -0
  103. package/src/configs/components/button.svg +0 -18
  104. package/src/web/components/drawer/index.jsx +0 -64
  105. package/src/web/components/form/enumSelect/hooks/index.js +0 -49
  106. package/src/web/components/form/form/index.jsx +0 -76
  107. package/src/web/components/link/test/__snapshots__/storybook.test.js.snap +0 -754
  108. package/src/web/components/richTextView/index.jsx +0 -89
  109. package/src/web/components/tabs/index.jsx +0 -10
  110. package/src/web/components/text/index.jsx +0 -71
  111. package/src/web/utils/useSyncValue.js +0 -14
@@ -1,13 +1,16 @@
1
1
  import * as React from 'react';
2
- import * as PropTypes from 'prop-types';
3
- import dayjs from 'dayjs';
2
+ import * as _moment from 'moment';
4
3
 
5
4
  import weui from '../../../utils/weui';
6
5
  import classNames from '../../../utils/classnames';
7
6
  import isObjectEqual from '../../../utils/isObjectEqual';
8
7
  import { timePicker } from './time';
9
8
  import { regionPicker } from './region';
9
+ import {PropsType} from './index';
10
+ import { defaultProps } from './index';
10
11
 
12
+ // @ts-expect-error TODO: fix 与plugin构建阶段效果不同
13
+ const moment = (typeof _moment === 'function' ? _moment : _moment.default) as _moment.moment;
11
14
  export default function Select({
12
15
  // 系统属性
13
16
  events,
@@ -18,7 +21,7 @@ export default function Select({
18
21
  mode,
19
22
  disabled = false,
20
23
  // selector mode
21
- range,
24
+ range = defaultProps.range,
22
25
  defaultValue,
23
26
  // date mode
24
27
  startDate,
@@ -31,7 +34,7 @@ export default function Select({
31
34
  // region mode
32
35
  defaultRegion,
33
36
  separator,
34
- }) {
37
+ }: PropsType) {
35
38
  const [date, setDate] = React.useState(
36
39
  decodeIsoDatetime(defaultDate, 'date')
37
40
  );
@@ -44,7 +47,7 @@ export default function Select({
44
47
  const [selectedValue, setSelectedValue] = React.useState(defaultValue);
45
48
 
46
49
  // 两次默认值不同, 需要刷新
47
- const prevDefaultRef = React.useRef({});
50
+ const prevDefaultRef = React.useRef<any>({});
48
51
  React.useEffect(() => {
49
52
  let hasChange = false;
50
53
  if (prevDefaultRef.current?.defaultValue !== defaultValue) {
@@ -82,7 +85,7 @@ export default function Select({
82
85
  });
83
86
 
84
87
  const onDateclick = function () {
85
- const options = {
88
+ const options: Record<string, any> = {
86
89
  className: 'weda-ui weda-picker',
87
90
  };
88
91
  !!date && (options.defaultDate = date);
@@ -92,7 +95,7 @@ export default function Select({
92
95
  weui.datePicker({
93
96
  ...options,
94
97
  onConfirm(result) {
95
- const value = dayjs()
98
+ const value = moment()
96
99
  .year(result[0].value)
97
100
  .month(result[1].value - 1)
98
101
  .date(result[2].value)
@@ -104,7 +107,7 @@ export default function Select({
104
107
  };
105
108
 
106
109
  const onTimeClick = function () {
107
- const options = {
110
+ const options: Record<string, any> = {
108
111
  className: 'weda-ui weda-picker',
109
112
  };
110
113
  !!time && (options.defaultTime = time);
@@ -114,7 +117,7 @@ export default function Select({
114
117
  timePicker({
115
118
  ...options,
116
119
  onConfirm(result) {
117
- const date = dayjs().hour(result[0].value).minute(result[1].value);
120
+ const date = moment().hour(result[0].value).minute(result[1].value);
118
121
  const value = date.format('HH:mm');
119
122
  setTime(value);
120
123
  events.change({
@@ -181,7 +184,7 @@ export default function Select({
181
184
 
182
185
  const result = React.useMemo(() => {
183
186
  return {
184
- selector: range.find((item) => item.value === selectedValue)?.label,
187
+ selector: (range ?? []).find((item) => item.value === selectedValue)?.label,
185
188
  date: date,
186
189
  time: time,
187
190
  region: (region || []).join(separator), // region 有可能是空串
@@ -207,53 +210,6 @@ export default function Select({
207
210
  );
208
211
  }
209
212
 
210
- Select.propTypes = {
211
- // 系统属性
212
- className: PropTypes.string,
213
- style: PropTypes.string,
214
- events: PropTypes.objectOf(PropTypes.func),
215
- // 组件属性
216
- name: PropTypes.string,
217
- placeholder: PropTypes.string,
218
- layout: PropTypes.string,
219
- mode: PropTypes.string,
220
- disabled: PropTypes.bool,
221
- // selector mode
222
- range: PropTypes.array,
223
- defaultValue: PropTypes.string,
224
- // date mode
225
- startDate: PropTypes.string,
226
- endDate: PropTypes.string,
227
- defaultDate: PropTypes.string,
228
- // time mode
229
- startTime: PropTypes.string,
230
- endTime: PropTypes.string,
231
- defaultTime: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
232
- // region mode
233
- defaultRegion: PropTypes.array,
234
- separator: PropTypes.string,
235
- };
236
-
237
- Select.defaultProps = {
238
- // 系统属性
239
- events: {},
240
- // 组件属性
241
- label: '标题',
242
- labelVisible: true,
243
- name: 'formSelect',
244
- placeholder: '请选择',
245
- layout: 'horizontal',
246
- mode: 'selector',
247
- disabled: false,
248
- requiredFlag: false,
249
- // selector mode
250
- range: [
251
- { name: '选项一', value: 'first' },
252
- { name: '选项二', value: 'second' },
253
- ],
254
- // region mode
255
- separator: ',',
256
- };
257
213
 
258
214
  export function decodeIsoDatetime(isoStringOrTimesnap, type) {
259
215
  if (!isoStringOrTimesnap) {
@@ -275,22 +231,22 @@ export function decodeIsoDatetime(isoStringOrTimesnap, type) {
275
231
  isoStringOrTimesnap.match &&
276
232
  isoStringOrTimesnap.match(/^(\d{2}):(\d{2})$/);
277
233
  if (time && time[1] < 24 && time[2] < 60) {
278
- return dayjs().hour(time[1]).minute(time[2]).format('HH:mm');
234
+ return moment().hour(time[1]).minute(time[2]).format('HH:mm');
279
235
  } else if (typeof isoStringOrTimesnap === 'number') {
280
236
  const timeSnap = Number(isoStringOrTimesnap);
281
237
  let day;
282
238
  try {
283
- day = dayjs()
239
+ day = moment()
284
240
  .hour(Math.floor(timeSnap / 3600000) % 24)
285
241
  .minute(Math.floor((timeSnap % 3600000) / 60000));
286
242
  } catch (e) {
287
- day = dayjs(timeSnap);
243
+ day = moment(timeSnap);
288
244
  }
289
245
  return day.format('HH:mm');
290
246
  } else {
291
- return dayjs(isoStringOrTimesnap).format('HH:mm');
247
+ return moment(isoStringOrTimesnap).format('HH:mm');
292
248
  }
293
249
  } else {
294
- return dayjs(isoStringOrTimesnap).format('YYYY-MM-DD');
250
+ return moment(isoStringOrTimesnap).format('YYYY-MM-DD');
295
251
  }
296
252
  }
@@ -1,24 +1,26 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
+ import * as _moment from 'moment';
2
3
  import { usePlatform } from '../../../utils/platform';
3
4
  import SelectH5, { decodeIsoDatetime } from './h5';
4
5
  import classNames from '../../../utils/classnames';
5
- import * as PropTypes from 'prop-types';
6
6
  import {Select as TeaSelect, DatePicker, TimePicker, Cascader, ConfigProvider} from 'tea-component';
7
- import moment from 'moment';
8
7
  import isObjectEqual from '../../../utils/isObjectEqual';
9
8
  import { getRegionTree } from './region';
10
9
  import { renderDecorator } from '../renderDecorator';
10
+ import { CommonFormPropsType } from '../types';
11
11
 
12
+ // @ts-expect-error TODO: fix 与plugin构建阶段效果不同
13
+ const moment = (typeof _moment === 'function' ? _moment : _moment.default) as _moment.moment;
12
14
  export default function Select(props) {
13
15
  const {
14
16
  id,
15
17
  style,
16
18
  className,
17
- label,
18
- labelVisible,
19
- layout,
20
- requiredFlag,
21
- size,
19
+ label = '标题',
20
+ labelVisible = true,
21
+ layout = 'horizontal',
22
+ requiredFlag = false,
23
+ size = 'l',
22
24
  decorator
23
25
  } = props;
24
26
  const platform = usePlatform();
@@ -47,101 +49,56 @@ export default function Select(props) {
47
49
  }
48
50
  );
49
51
  }
50
-
51
- SelectPc.propTypes = {
52
- // 系统属性
53
- className: PropTypes.string,
54
- events: PropTypes.objectOf(PropTypes.func),
55
- // 组件属性
56
- label: PropTypes.string,
57
- labelVisible: PropTypes.bool,
58
- name: PropTypes.string,
59
- placeholder: PropTypes.string,
60
- layout: PropTypes.string,
61
- mode: PropTypes.string,
62
- disabled: PropTypes.bool,
52
+ export interface PropsType extends CommonFormPropsType {
53
+ size: 's' | 'm' | 'l' | 'full';
54
+ placeholder: string;
55
+ mode: 'selector' | 'date' | 'time' | 'region';
63
56
  // selector mode
64
- range: PropTypes.array,
65
- defaultValue: PropTypes.string,
57
+ range?: any[];
58
+ defaultValue?: string;
66
59
  // date mode
67
- startDate: PropTypes.string,
68
- endDate: PropTypes.string,
69
- defaultDate: PropTypes.string,
60
+ startDate?: string;
61
+ endDate?: string;
62
+ defaultDate?: string;
70
63
  // time mode
71
- startTime: PropTypes.string,
72
- endTime: PropTypes.string,
73
- defaultTime: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
64
+ startTime?: string;
65
+ endTime?: string;
66
+ defaultTime?: string | number;
74
67
  // region mode
75
- defaultRegion: PropTypes.array,
76
- separator: PropTypes.string,
77
- size: PropTypes.oneOf(['s', 'm', 'l', 'full'])
78
- };
79
-
68
+ defaultRegion?: any[];
69
+ separator?: string;
70
+ requiredFlag?: boolean;
71
+ }
80
72
 
81
- Select.propTypes = {
73
+ export const defaultProps = {
82
74
  // 系统属性
83
- id: PropTypes.string,
84
- className: PropTypes.string,
85
- style: PropTypes.string,
86
- size: PropTypes.oneOf(['s', 'm', 'l', 'full']),
87
- events: PropTypes.objectOf(PropTypes.func),
75
+ events: {},
88
76
  // 组件属性
89
- label: PropTypes.string,
90
- labelVisible: PropTypes.bool,
91
- name: PropTypes.string,
92
- placeholder: PropTypes.string,
93
- layout: PropTypes.string,
94
- mode: PropTypes.string,
95
- disabled: PropTypes.bool,
96
- decorator: PropTypes.oneOfType([PropTypes.array, PropTypes.node]),
77
+ label: '标题',
78
+ size: 'l' as const,
79
+ labelVisible: true,
80
+ name: 'formSelect',
81
+ placeholder: '请选择',
82
+ layout: 'horizontal',
83
+ mode: 'selector',
84
+ disabled: false,
85
+ requiredFlag: false,
97
86
  // selector mode
98
- range: PropTypes.array,
99
- defaultValue: PropTypes.string,
100
- // date mode
101
- startDate: PropTypes.string,
102
- endDate: PropTypes.string,
103
- defaultDate: PropTypes.string,
104
- // time mode
105
- startTime: PropTypes.string,
106
- endTime: PropTypes.string,
107
- defaultTime: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
87
+ range: [
88
+ { name: '选项一', value: 'first' },
89
+ { name: '选项二', value: 'second' },
90
+ ],
108
91
  // region mode
109
- defaultRegion: PropTypes.array,
110
- separator: PropTypes.string,
111
- requiredFlag: PropTypes.bool,
92
+ separator: ',',
112
93
  };
113
94
 
114
-
115
- Select.defaultProps = {
116
- // 系统属性
117
- events: {},
118
- // 组件属性
119
- label: '标题',
120
- size: 'l',
121
- labelVisible: true,
122
- name: 'formSelect',
123
- placeholder: '请选择',
124
- layout: 'horizontal',
125
- mode: 'selector',
126
- disabled: false,
127
- requiredFlag: false,
128
- // selector mode
129
- range: [
130
- { name: '选项一', value: 'first' },
131
- { name: '选项二', value: 'second' },
132
- ],
133
- // region mode
134
- separator: ',',
135
- };
136
-
137
-
138
95
  function SelectPc({
139
96
  defaultValue,
140
- placeholder,
141
- mode,
142
- events,
143
- disabled,
144
- range,
97
+ placeholder = '请选择',
98
+ mode = 'selector',
99
+ events = {},
100
+ disabled = false,
101
+ range = defaultProps.range,
145
102
  startDate,
146
103
  endDate,
147
104
  defaultDate,
@@ -149,12 +106,12 @@ function SelectPc({
149
106
  startTime,
150
107
  endTime,
151
108
  defaultRegion,
152
- separator,
153
- size
154
- }) {
109
+ separator = defaultProps.separator,
110
+ size = defaultProps.size,
111
+ }: PropsType) {
155
112
 
156
113
  // 两次默认值不同, 需要刷新
157
- const prevDefaultRef = React.useRef();
114
+ const prevDefaultRef = React.useRef<any>();
158
115
  const [date, setDate] = React.useState(
159
116
  decodeIsoDatetime(defaultDate, 'date')
160
117
  );
@@ -2407,4 +2407,4 @@ export const cities = [
2407
2407
  "parent_code": "65",
2408
2408
  "en": "County-level administrative divisions directly under the Central Government"
2409
2409
  }
2410
- ];
2410
+ ] as const;
@@ -1,7 +1,7 @@
1
1
  // 暂时把地区信息打包在本地, 后续移到COS桶内
2
- import {provinces} from './provinces.js';
3
- import {cities} from './cities.js';
4
- import {regions} from './regions.js';
2
+ import {provinces} from './provinces';
3
+ import {cities} from './cities';
4
+ import {regions} from './regions';
5
5
  import weui from '../../../../utils/weui';
6
6
 
7
7
  let tree;
@@ -237,4 +237,4 @@ export const provinces = [
237
237
  "parent_code": "",
238
238
  "en": "Taiwan"
239
239
  }
240
- ];
240
+ ] as const;
@@ -20642,4 +20642,4 @@ export const regions = [
20642
20642
  "parent_code": "620201",
20643
20643
  "en": "Changcheng District"
20644
20644
  }
20645
- ];
20645
+ ] as const;
@@ -18,8 +18,8 @@ export function timePicker(options) {
18
18
  ).split(':');
19
19
  const initTime = parseInt(initHour) * 60 + parseInt(initMin);
20
20
  const fixInitTime = Math.max(startTime, Math.min(endTime, initTime));
21
- const fixInitHour = parseInt(fixInitTime / 60);
22
- const fixInitMin = parseInt(fixInitTime % 60);
21
+ const fixInitHour = Math.floor(fixInitTime / 60);
22
+ const fixInitMin = Math.floor(fixInitTime % 60);
23
23
 
24
24
  const hours = [];
25
25
  for (let hour = 0; hour < 24; hour++) {
@@ -1,27 +1,28 @@
1
1
  import * as React from 'react';
2
- import * as PropTypes from 'prop-types';
3
2
 
4
3
  import classNames from '../../../utils/classnames';
5
4
  import getLocalCounter from '../../../utils/getLocalCounter';
6
5
  import {usePlatform} from '../../../utils/platform';
7
- import {Switch as TeaSwitch} from 'tea-component';
6
+ import {ConfigProvider, Switch as TeaSwitch} from 'tea-component';
8
7
  import { renderDecorator } from '../renderDecorator';
9
8
  import { useSyncValue } from '../../../utils/useSyncValue';
9
+ import { CommonFormPropsType } from '../types';
10
+
10
11
  export default function Switch({
11
12
  // 系统属性
12
13
  id,
13
14
  className,
14
15
  style,
15
- events,
16
+ events = {},
16
17
  // 组件属性
17
- label,
18
- labelVisible,
18
+ label = '标题',
19
+ labelVisible = true,
19
20
  checked: defaultChecked,
20
- layout,
21
- disabled,
22
- requiredFlag,
21
+ layout = 'horizontal',
22
+ disabled = false,
23
+ requiredFlag = false,
23
24
  decorator
24
- }) {
25
+ }: PropsType) {
25
26
  const isFlex = layout !== 'vertical';
26
27
  const cls = classNames({
27
28
  'weda-ui': true,
@@ -40,10 +41,6 @@ export default function Switch({
40
41
  // 两次默认值不同时, 需要刷新
41
42
  const [checked, setChecked] = useSyncValue(defaultChecked);
42
43
 
43
- const onChange = function (e) {
44
- setChecked(e.target.checked);
45
- events.change({ value: e.target.checked }, { originEvent: e });
46
- };
47
44
 
48
45
  // 现在低码组件往源码组件传入的id不唯一, 暂时使用hashcode替代
49
46
  const hashcode = getLocalCounter();
@@ -60,7 +57,11 @@ export default function Switch({
60
57
  type="checkbox"
61
58
  checked={checked}
62
59
  disabled={disabled}
63
- onChange={onChange}
60
+ onChange={(ev) => {
61
+ const value = ev.target.checked;
62
+ setChecked(value);
63
+ events.change({ value }, {orgianalEvent: ev});
64
+ }}
64
65
  />
65
66
  <div className="weui-switch-cp__box"></div>
66
67
  </label>
@@ -68,12 +69,18 @@ export default function Switch({
68
69
  </div>
69
70
  ) :
70
71
  (
71
- <TeaSwitch
72
- id={_id}
73
- value={checked}
74
- disabled={disabled}
75
- onChange={onChange}
76
- />
72
+ <ConfigProvider classPrefix="wedatea2td">
73
+ <TeaSwitch
74
+ id={_id}
75
+ value={checked}
76
+ disabled={disabled}
77
+ onChange={(value, context) => {
78
+ const originEvent = context.event;
79
+ setChecked(value);
80
+ events.change({ value }, {originEvent});
81
+ }}
82
+ />
83
+ </ConfigProvider>
77
84
  );
78
85
 
79
86
  return renderDecorator(switchElement, decorator)({
@@ -88,30 +95,6 @@ export default function Switch({
88
95
  });
89
96
  }
90
97
 
91
- Switch.propTypes = {
92
- // 系统属性
93
- id: PropTypes.string,
94
- className: PropTypes.string,
95
- style: PropTypes.string,
96
- events: PropTypes.objectOf(PropTypes.func),
97
- // 组件属性
98
- label: PropTypes.string,
99
- labelVisible: PropTypes.bool,
100
- disabled: PropTypes.bool,
101
- checked: PropTypes.bool,
102
- layout: PropTypes.string,
103
- requiredFlag: PropTypes.bool,
104
- decorator: PropTypes.oneOfType([PropTypes.array, PropTypes.node])
105
- };
106
-
107
- Switch.defaultProps = {
108
- // 系统属性
109
- events: {},
110
- // 组件属性
111
- label: '标题',
112
- labelVisible: true,
113
- disabled: false,
114
- checked: false,
115
- layout: PropTypes.string,
116
- requiredFlag: false,
117
- };
98
+ export interface PropsType extends CommonFormPropsType {
99
+ checked?: boolean;
100
+ }
@@ -1,34 +1,33 @@
1
1
  import * as React from 'react';
2
- import * as PropTypes from 'prop-types';
3
2
 
4
3
  import classNames from '../../../utils/classnames';
5
- import FormCell from '../formcell';
6
4
  import './index.css';
7
5
  import { ConfigProvider, Input } from 'tea-component';
8
6
  import { usePlatform } from '../../../utils/platform';
9
7
  import { renderDecorator } from '../renderDecorator';
10
8
  import { useSyncValue } from '../../../utils/useSyncValue';
9
+ import { CommonFormPropsType } from '../types';
11
10
 
12
11
  export default function Textarea({
13
12
  // 系统属性
14
13
  id,
15
14
  className,
16
15
  style,
17
- events,
16
+ events = {},
18
17
  // 组件属性
19
- label,
20
- labelVisible,
21
- defaultValue,
22
- placeholder,
23
- maxLength,
24
- disabled,
25
- focus: autoFocus,
26
- layout,
27
- requiredFlag,
28
- counterVisible,
29
- size,
18
+ label = '标题',
19
+ labelVisible = true,
20
+ defaultValue = '',
21
+ placeholder = '请输入',
22
+ maxLength = 140,
23
+ disabled = false,
24
+ focus: autoFocus = false,
25
+ layout = 'horizontal',
26
+ requiredFlag = false,
27
+ counterVisible = true,
28
+ size = 'l',
30
29
  decorator
31
- }) {
30
+ }: PropsType) {
32
31
  const platform = usePlatform();
33
32
 
34
33
  const cls = classNames({
@@ -105,43 +104,11 @@ export default function Textarea({
105
104
  }
106
105
  );
107
106
  }
108
-
109
- Textarea.propTypes = {
110
- // 系统属性
111
- id: PropTypes.string,
112
- style: PropTypes.string,
113
- className: PropTypes.string,
114
- events: PropTypes.object,
115
- // 组件属性
116
- label: PropTypes.string,
117
- labelVisible: PropTypes.bool,
118
- name: PropTypes.string,
119
- defaultValue: PropTypes.string,
120
- placeholder: PropTypes.string,
121
- maxLength: PropTypes.number,
122
- disabled: PropTypes.bool,
123
- focus: PropTypes.bool,
124
- layout: PropTypes.oneOf(['horizontal', 'vertical']),
125
- requiredFlag: PropTypes.bool,
126
- counterVisible: PropTypes.bool,
127
- size: PropTypes.oneOf(['s', 'm', 'l', 'full']),
128
- decorator: PropTypes.oneOfType([PropTypes.array, PropTypes.node])
129
- };
130
-
131
- Textarea.defaultProps = {
132
- // 系统属性
133
- events: {},
134
- // 组件属性
135
- label: '标题',
136
- labelVisible: true,
137
- nane: 'formTextarea',
138
- defaultValue: '',
139
- placeholder: '请输入',
140
- maxLength: 140,
141
- disabled: false,
142
- focus: false,
143
- layout: 'horizontal',
144
- requiredFlag: false,
145
- counterVisible: true,
146
- size: 'l'
147
- };
107
+ export interface PropsType extends CommonFormPropsType {
108
+ defaultValue?: string;
109
+ placeholder?: string;
110
+ maxLength?: number;
111
+ focus?: boolean;
112
+ counterVisible?: boolean;
113
+ size?: 's' | 'm' | 'l' | 'full';
114
+ }
@@ -1,17 +1,17 @@
1
1
  import * as React from 'react';
2
- import * as PropTypes from 'prop-types';
3
2
 
4
3
  import classNames from '../../../utils/classnames';
4
+ import { CommonPropsType } from '../../../types';
5
5
 
6
6
  export default function Tips({
7
7
  // 系统属性
8
8
  className,
9
9
  // 组件属性
10
- tips,
11
- type,
10
+ tips = '表单提示',
11
+ type = 'normal',
12
12
  id,
13
13
  style
14
- }) {
14
+ }: PropsType) {
15
15
  const cls = classNames({
16
16
  'weda-ui': true,
17
17
  'weda-tips': true,
@@ -27,21 +27,7 @@ export default function Tips({
27
27
  );
28
28
  }
29
29
 
30
- Tips.propTypes = {
31
- // 系统属性
32
- id: PropTypes.string,
33
- className: PropTypes.string,
34
- events: PropTypes.objectOf(PropTypes.func),
35
- // 组件属性
36
- tips: PropTypes.string,
37
- type: PropTypes.oneOf(['normal', 'warn']),
38
- style: PropTypes.object
39
- };
40
-
41
- Tips.defaultProps = {
42
- // 系统属性
43
- events: {},
44
- // 组件属性
45
- tips: '表单提示',
46
- type: 'normal',
47
- };
30
+ export interface PropsType extends CommonPropsType {
31
+ tips?: string;
32
+ type?: 'warn' | 'normal';
33
+ }
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { CommonPropsType } from "../../types";
3
+
4
+ export interface CommonFormPropsType extends CommonPropsType {
5
+ name?: string;
6
+ label?: string;
7
+ labelVisible?: boolean;
8
+ layout?: "horizontal" | "vertical";
9
+ disabled?: boolean;
10
+ requiredFlag?: boolean;
11
+ decorator?: React.FC<any>;
12
+ }