amis 1.5.2 → 1.5.6-beta.0

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 (171) hide show
  1. package/README.md +5 -0
  2. package/lib/RootRenderer.d.ts +1 -1
  3. package/lib/RootRenderer.js +4 -3
  4. package/lib/RootRenderer.js.map +2 -2
  5. package/lib/components/Card.d.ts +96 -0
  6. package/lib/components/Card.js +85 -0
  7. package/lib/components/Card.js.map +13 -0
  8. package/lib/components/Collapse.js +1 -1
  9. package/lib/components/Collapse.js.map +2 -2
  10. package/lib/components/DatePicker.d.ts +179 -84
  11. package/lib/components/DatePicker.js +25 -4
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.d.ts +84 -84
  14. package/lib/components/MonthRangePicker.d.ts +84 -84
  15. package/lib/components/Picker.d.ts +503 -0
  16. package/lib/components/Picker.js +65 -0
  17. package/lib/components/Picker.js.map +13 -0
  18. package/lib/components/PickerColumn.d.ts +29 -459
  19. package/lib/components/PickerColumn.js +35 -44
  20. package/lib/components/PickerColumn.js.map +2 -2
  21. package/lib/components/Progress.js +1 -1
  22. package/lib/components/Progress.js.map +2 -2
  23. package/lib/components/Select.d.ts +238 -238
  24. package/lib/components/Select.js +9 -2
  25. package/lib/components/Select.js.map +2 -2
  26. package/lib/components/Selection.js +1 -4
  27. package/lib/components/Selection.js.map +2 -2
  28. package/lib/components/Switch.d.ts +6 -6
  29. package/lib/components/Switch.js.map +2 -2
  30. package/lib/components/calendar/Calendar.d.ts +8 -0
  31. package/lib/components/calendar/Calendar.js +19 -1
  32. package/lib/components/calendar/Calendar.js.map +2 -2
  33. package/lib/components/calendar/DaysView.d.ts +8 -0
  34. package/lib/components/calendar/DaysView.js +71 -0
  35. package/lib/components/calendar/DaysView.js.map +2 -2
  36. package/lib/components/calendar/TimeView.d.ts +10 -0
  37. package/lib/components/calendar/TimeView.js +55 -2
  38. package/lib/components/calendar/TimeView.js.map +2 -2
  39. package/lib/components/calendar/YearsView.d.ts +9 -0
  40. package/lib/components/calendar/YearsView.js +19 -0
  41. package/lib/components/calendar/YearsView.js.map +2 -2
  42. package/lib/index.js +1 -1
  43. package/lib/renderers/CRUD.d.ts +1 -1
  44. package/lib/renderers/CRUD.js +4 -3
  45. package/lib/renderers/CRUD.js.map +2 -2
  46. package/lib/renderers/Card.d.ts +81 -13
  47. package/lib/renderers/Card.js +178 -81
  48. package/lib/renderers/Card.js.map +2 -2
  49. package/lib/renderers/Dialog.d.ts +2 -2
  50. package/lib/renderers/Dialog.js +7 -7
  51. package/lib/renderers/Dialog.js.map +2 -2
  52. package/lib/renderers/Drawer.js +2 -2
  53. package/lib/renderers/Drawer.js.map +2 -2
  54. package/lib/renderers/Form/DiffEditor.d.ts +145 -37
  55. package/lib/renderers/Form/Editor.d.ts +144 -36
  56. package/lib/renderers/Form/Formula.js +5 -5
  57. package/lib/renderers/Form/Formula.js.map +2 -2
  58. package/lib/renderers/Form/InputCity.d.ts +84 -84
  59. package/lib/renderers/Form/InputDate.d.ts +25 -0
  60. package/lib/renderers/Form/InputDate.js +48 -3
  61. package/lib/renderers/Form/InputDate.js.map +2 -2
  62. package/lib/renderers/Form/InputFile.js +3 -3
  63. package/lib/renderers/Form/InputFile.js.map +2 -2
  64. package/lib/renderers/Form/InputImage.js +1 -1
  65. package/lib/renderers/Form/InputImage.js.map +2 -2
  66. package/lib/renderers/Form/Item.d.ts +1 -1
  67. package/lib/renderers/Form/Item.js +4 -3
  68. package/lib/renderers/Form/Item.js.map +2 -2
  69. package/lib/renderers/Form/index.d.ts +1 -1
  70. package/lib/renderers/Form/index.js +13 -2
  71. package/lib/renderers/Form/index.js.map +2 -2
  72. package/lib/renderers/Form/wrapControl.js +3 -2
  73. package/lib/renderers/Form/wrapControl.js.map +2 -2
  74. package/lib/renderers/Page.d.ts +3 -3
  75. package/lib/renderers/Page.js +4 -3
  76. package/lib/renderers/Page.js.map +2 -2
  77. package/lib/renderers/Status.js +1 -1
  78. package/lib/renderers/Status.js.map +2 -2
  79. package/lib/renderers/Wizard.d.ts +1 -1
  80. package/lib/renderers/Wizard.js +93 -36
  81. package/lib/renderers/Wizard.js.map +2 -2
  82. package/lib/store/combo.d.ts +160 -40
  83. package/lib/store/form.d.ts +64 -16
  84. package/lib/store/formItem.d.ts +4 -2
  85. package/lib/store/formItem.js +11 -6
  86. package/lib/store/formItem.js.map +2 -2
  87. package/lib/store/table.d.ts +128 -32
  88. package/lib/themes/ang-ie11.css +255 -31
  89. package/lib/themes/ang.css +255 -31
  90. package/lib/themes/ang.css.map +1 -1
  91. package/lib/themes/antd-ie11.css +255 -32
  92. package/lib/themes/antd.css +255 -32
  93. package/lib/themes/antd.css.map +1 -1
  94. package/lib/themes/cxd-ie11.css +263 -31
  95. package/lib/themes/cxd.css +263 -31
  96. package/lib/themes/cxd.css.map +1 -1
  97. package/lib/themes/dark-ie11.css +255 -31
  98. package/lib/themes/dark.css +255 -31
  99. package/lib/themes/dark.css.map +1 -1
  100. package/lib/themes/default.css +263 -31
  101. package/lib/themes/default.css.map +1 -1
  102. package/lib/utils/helper.d.ts +7 -0
  103. package/lib/utils/helper.js +33 -1
  104. package/lib/utils/helper.js.map +2 -2
  105. package/package.json +2 -2
  106. package/schema.json +209 -20
  107. package/scss/_properties.scss +14 -3
  108. package/scss/components/_calendar.scss +81 -0
  109. package/scss/components/_card.scss +155 -15
  110. package/scss/components/_nav.scss +1 -1
  111. package/scss/components/_picker-columns.scss +20 -14
  112. package/scss/components/_toast.scss +3 -0
  113. package/scss/components/form/_file.scss +2 -2
  114. package/scss/components/form/_selection.scss +4 -0
  115. package/scss/components/form/_switch.scss +6 -0
  116. package/scss/themes/_antd-variables.scss +0 -2
  117. package/scss/themes/_common.scss +1 -0
  118. package/scss/themes/_cxd-variables.scss +9 -0
  119. package/sdk/ang-ie11.css +296 -33
  120. package/sdk/ang.css +306 -33
  121. package/sdk/antd-ie11.css +295 -32
  122. package/sdk/antd.css +306 -34
  123. package/sdk/charts.js +13 -13
  124. package/sdk/color-picker.js +65 -65
  125. package/sdk/cropperjs.js +2 -2
  126. package/sdk/cxd-ie11.css +296 -33
  127. package/sdk/cxd.css +314 -33
  128. package/sdk/dark-ie11.css +296 -33
  129. package/sdk/dark.css +306 -33
  130. package/sdk/exceljs.js +1 -1
  131. package/sdk/markdown.js +69 -69
  132. package/sdk/papaparse.js +1 -1
  133. package/sdk/renderers/Form/CityDB.js +1 -1
  134. package/sdk/rest.js +18 -18
  135. package/sdk/rich-text.js +62 -62
  136. package/sdk/sdk-ie11.css +296 -33
  137. package/sdk/sdk.css +314 -33
  138. package/sdk/sdk.js +1190 -1186
  139. package/sdk/thirds/hls.js/hls.js +1 -1
  140. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  141. package/sdk/tinymce.js +57 -57
  142. package/src/RootRenderer.tsx +3 -3
  143. package/src/components/Card.tsx +203 -0
  144. package/src/components/Collapse.tsx +1 -1
  145. package/src/components/DatePicker.tsx +44 -3
  146. package/src/components/Picker.tsx +145 -0
  147. package/src/components/PickerColumn.tsx +58 -95
  148. package/src/components/Progress.tsx +1 -1
  149. package/src/components/Select.tsx +17 -12
  150. package/src/components/Selection.tsx +1 -4
  151. package/src/components/Switch.tsx +7 -7
  152. package/src/components/calendar/Calendar.tsx +30 -1
  153. package/src/components/calendar/DaysView.tsx +91 -0
  154. package/src/components/calendar/TimeView.tsx +80 -5
  155. package/src/components/calendar/YearsView.tsx +44 -1
  156. package/src/renderers/CRUD.tsx +3 -3
  157. package/src/renderers/Card.tsx +299 -191
  158. package/src/renderers/Dialog.tsx +8 -8
  159. package/src/renderers/Drawer.tsx +2 -2
  160. package/src/renderers/Form/Formula.tsx +7 -5
  161. package/src/renderers/Form/InputDate.tsx +83 -2
  162. package/src/renderers/Form/InputFile.tsx +7 -3
  163. package/src/renderers/Form/InputImage.tsx +1 -1
  164. package/src/renderers/Form/Item.tsx +2 -2
  165. package/src/renderers/Form/index.tsx +14 -2
  166. package/src/renderers/Form/wrapControl.tsx +5 -2
  167. package/src/renderers/Page.tsx +11 -10
  168. package/src/renderers/Status.tsx +3 -1
  169. package/src/renderers/Wizard.tsx +52 -12
  170. package/src/store/formItem.ts +12 -6
  171. package/src/utils/helper.ts +34 -0
@@ -184,12 +184,12 @@ export class RootRenderer extends React.Component<RootRendererProps> {
184
184
  return;
185
185
  }
186
186
 
187
- store.closeDialog();
187
+ store.closeDialog(true);
188
188
  }
189
189
 
190
- handleDialogClose() {
190
+ handleDialogClose(confirmed = false) {
191
191
  const store = this.store;
192
- store.closeDialog();
192
+ store.closeDialog(confirmed);
193
193
  }
194
194
 
195
195
  handleDrawerConfirm(values: object[], action: Action, ...args: Array<any>) {
@@ -0,0 +1,203 @@
1
+ import React from 'react';
2
+ import {isClickOnInput} from '../utils/helper';
3
+ import {ClassNamesFn, themeable, ThemeProps} from '../theme';
4
+ export interface CardProps extends ThemeProps {
5
+ className?: string;
6
+ headerClassName?: string;
7
+ titleClassName?: string;
8
+ subTitleClassName?: string;
9
+ descriptionClassName?: string;
10
+ avatarTextStyle?: object;
11
+ avatarTextClassName?: string;
12
+ avatarClassName?: string;
13
+ secondaryClassName?: string;
14
+ imageClassName?: string;
15
+ bodyClassName?: string;
16
+ footerClassName?: string;
17
+ media?: React.ReactNode;
18
+ mediaPosition?: 'top' | 'left' | 'right' | 'bottom';
19
+ toolbar?: React.ReactNode;
20
+ children?: React.ReactNode;
21
+ actions?: React.ReactNode;
22
+ title?: string | JSX.Element;
23
+ subTitle?: string | JSX.Element;
24
+ subTitlePlaceholder?: string | JSX.Element;
25
+ description?: string | JSX.Element;
26
+ descriptionPlaceholder?: string | JSX.Element;
27
+ avatar?: string;
28
+ avatarText?: string | JSX.Element;
29
+ secondary?: string | JSX.Element;
30
+ onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
31
+ classnames: ClassNamesFn;
32
+ }
33
+
34
+ export class Card extends React.Component<CardProps> {
35
+ static defaultProps: Partial<CardProps> = {
36
+ className: '',
37
+ avatarClassName: '',
38
+ headerClassName: '',
39
+ footerClassName: '',
40
+ secondaryClassName: '',
41
+ avatarTextClassName: '',
42
+ bodyClassName: '',
43
+ titleClassName: '',
44
+ subTitleClassName: '',
45
+ descriptionClassName: '',
46
+ imageClassName: '',
47
+ mediaPosition: 'left'
48
+ };
49
+
50
+ constructor(props: CardProps) {
51
+ super(props);
52
+ this.handleClick = this.handleClick.bind(this);
53
+ }
54
+
55
+ handleClick(e: React.MouseEvent<HTMLDivElement>) {
56
+ if (isClickOnInput(e)) {
57
+ return;
58
+ }
59
+
60
+ this.props.onClick && this.props.onClick(e);
61
+ }
62
+
63
+ render() {
64
+ const {
65
+ classnames: cx,
66
+ className,
67
+ headerClassName,
68
+ bodyClassName,
69
+ titleClassName,
70
+ subTitleClassName,
71
+ descriptionClassName,
72
+ avatarClassName,
73
+ avatarTextStyle,
74
+ imageClassName,
75
+ avatarTextClassName,
76
+ secondaryClassName,
77
+ footerClassName,
78
+ media,
79
+ mediaPosition,
80
+ actions,
81
+ children,
82
+ onClick,
83
+ toolbar,
84
+ title,
85
+ subTitle,
86
+ subTitlePlaceholder,
87
+ description,
88
+ descriptionPlaceholder,
89
+ secondary,
90
+ avatar,
91
+ avatarText
92
+ } = this.props;
93
+
94
+ let heading = null;
95
+ const isShowHeading =
96
+ avatar ||
97
+ avatarText ||
98
+ title ||
99
+ subTitle ||
100
+ subTitlePlaceholder ||
101
+ description ||
102
+ descriptionPlaceholder ||
103
+ toolbar;
104
+ if (isShowHeading) {
105
+ heading = (
106
+ <div className={cx('Card-heading', headerClassName)}>
107
+ {avatar ? (
108
+ <span className={cx('Card-avtar', avatarClassName)}>
109
+ <img className={cx('Card-img', imageClassName)} src={avatar} />
110
+ </span>
111
+ ) : avatarText ? (
112
+ <span
113
+ className={cx('Card-avtarText', avatarTextClassName)}
114
+ style={avatarTextStyle}
115
+ >
116
+ {avatarText}
117
+ </span>
118
+ ) : null}
119
+ <div className={cx('Card-meta')}>
120
+ {title ? (
121
+ <div className={cx('Card-title', titleClassName)}>{title}</div>
122
+ ) : null}
123
+ {subTitle || subTitlePlaceholder ? (
124
+ <div className={cx('Card-subTitle', subTitleClassName)}>
125
+ {subTitle
126
+ ? subTitle
127
+ : subTitlePlaceholder
128
+ ? subTitlePlaceholder
129
+ : null}
130
+ </div>
131
+ ) : null}
132
+ {description || descriptionPlaceholder ? (
133
+ <div className={cx('Card-desc', descriptionClassName)}>
134
+ {description
135
+ ? description
136
+ : descriptionPlaceholder
137
+ ? descriptionPlaceholder
138
+ : null}
139
+ </div>
140
+ ) : null}
141
+ </div>
142
+ {toolbar}
143
+ </div>
144
+ );
145
+ }
146
+
147
+ const body = children;
148
+
149
+ return (
150
+ <div
151
+ onClick={this.handleClick}
152
+ className={cx('Card', className, {
153
+ 'Card--link': onClick
154
+ })}
155
+ >
156
+ {media ? (
157
+ <div className={cx(`Card-multiMedia--${mediaPosition}`)}>
158
+ {media}
159
+ <div className={cx('Card-multiMedia-flex')}>
160
+ {heading}
161
+ {body ? (
162
+ <div className={cx('Card-body', bodyClassName)}>{body}</div>
163
+ ) : null}
164
+ {secondary || actions ? (
165
+ <div className={cx('Card-footer-wrapper', footerClassName)}>
166
+ {secondary ? (
167
+ <div className={cx('Card-secondary', secondaryClassName)}>
168
+ {secondary}
169
+ </div>
170
+ ) : null}
171
+ {actions ? (
172
+ <div className={cx('Card-actions-wrapper')}>{actions}</div>
173
+ ) : null}
174
+ </div>
175
+ ) : null}
176
+ </div>
177
+ </div>
178
+ ) : (
179
+ <div>
180
+ {heading}
181
+ {body ? (
182
+ <div className={cx('Card-body', bodyClassName)}>{body}</div>
183
+ ) : null}
184
+ {secondary || actions ? (
185
+ <div className={cx('Card-footer-wrapper', footerClassName)}>
186
+ {secondary ? (
187
+ <div className={cx('Card-secondary', secondaryClassName)}>
188
+ {secondary}
189
+ </div>
190
+ ) : null}
191
+ {actions ? (
192
+ <div className={cx('Card-actions-wrapper')}>{actions}</div>
193
+ ) : null}
194
+ </div>
195
+ ) : null}
196
+ </div>
197
+ )}
198
+ </div>
199
+ );
200
+ }
201
+ }
202
+
203
+ export default themeable(Card);
@@ -227,7 +227,7 @@ export class Collapse extends React.Component<CollapseProps, CollapseState> {
227
227
  {
228
228
  'is-active': !this.state.collapsed,
229
229
  [`Collapse--${size}`]: size,
230
- 'Collapse--disabled': disabled || collapsable === false,
230
+ 'Collapse--disabled': disabled,
231
231
  'Collapse--title-bottom': headerPosition === 'bottom'
232
232
  },
233
233
  className
@@ -278,6 +278,17 @@ export interface DateProps extends LocaleProps, ThemeProps {
278
278
  borderMode?: 'full' | 'half' | 'none';
279
279
  // 是否为内嵌模式,如果开启就不是 picker 了,直接页面点选。
280
280
  embed?: boolean;
281
+ schedules?: Array<{
282
+ startTime: Date,
283
+ endTime: Date,
284
+ content: any,
285
+ className?: string
286
+ }>;
287
+ scheduleClassNames?: Array<string>;
288
+ largeMode?: boolean;
289
+ onScheduleClick?: (scheduleData: any) => void;
290
+
291
+ useMobileUI?: boolean;
281
292
 
282
293
  // 下面那个千万不要写,写了就会导致 keyof DateProps 得到的结果是 string | number;
283
294
  // [propName: string]: any;
@@ -302,7 +313,8 @@ export class DatePicker extends React.Component<DateProps, DatePickerState> {
302
313
  viewMode: 'days' as 'years' | 'months' | 'days' | 'time',
303
314
  shortcuts: '',
304
315
  closeOnSelect: true,
305
- overlayPlacement: 'auto'
316
+ overlayPlacement: 'auto',
317
+ scheduleClassNames: ['bg-warning', 'bg-danger', 'bg-success', 'bg-info', 'bg-secondary']
306
318
  };
307
319
  state: DatePickerState = {
308
320
  isOpened: false,
@@ -546,20 +558,46 @@ export class DatePicker extends React.Component<DateProps, DatePickerState> {
546
558
  format,
547
559
  borderMode,
548
560
  embed,
549
- minDate
561
+ minDate,
562
+ schedules,
563
+ largeMode,
564
+ scheduleClassNames,
565
+ onScheduleClick
550
566
  } = this.props;
551
567
 
552
568
  const __ = this.props.translate;
553
569
  const isOpened = this.state.isOpened;
554
570
  let date: moment.Moment | undefined = this.state.value;
555
571
 
572
+
556
573
  if (embed) {
574
+ let schedulesData: DateProps['schedules'] = undefined;
575
+ if (schedules && Array.isArray(schedules)) {
576
+ // 设置日程颜色
577
+ let index = 0;
578
+ schedulesData = schedules.map((schedule: any) => {
579
+ let className = schedule.className;
580
+ if (!className && scheduleClassNames) {
581
+ className = scheduleClassNames[index];
582
+ index++;
583
+ if (index >= scheduleClassNames.length) {
584
+ index = 0;
585
+ }
586
+ }
587
+ return {
588
+ ...schedule,
589
+ className
590
+ };
591
+ });
592
+ }
557
593
  return (
558
594
  <div
559
595
  className={cx(
560
596
  `DateCalendar`,
561
597
  {
562
- 'is-disabled': disabled
598
+ 'is-disabled': disabled,
599
+ 'ScheduleCalendar': schedulesData,
600
+ 'ScheduleCalendar-large': largeMode
563
601
  },
564
602
  className
565
603
  )}
@@ -578,6 +616,9 @@ export class DatePicker extends React.Component<DateProps, DatePickerState> {
578
616
  locale={locale}
579
617
  minDate={minDate}
580
618
  // utc={utc}
619
+ schedules={schedulesData}
620
+ largeMode={largeMode}
621
+ onScheduleClick={onScheduleClick}
581
622
  />
582
623
  </div>
583
624
  );
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @file Picker
3
+ * @description 移动端列滚动选择器
4
+ */
5
+ import React, {
6
+ memo,
7
+ ReactNode,
8
+ useState
9
+ } from 'react';
10
+ import {uncontrollable} from 'uncontrollable';
11
+
12
+ import {themeable, ThemeProps} from '../theme';
13
+ import {localeable, LocaleProps} from '../locale';
14
+
15
+ import Button from './Button';
16
+ import {PickerColumnItem, default as Column} from './PickerColumn';
17
+
18
+ export type PickerValue = string | number;
19
+
20
+ export interface PickerProps extends ThemeProps, LocaleProps {
21
+ title?: String | ReactNode,
22
+ labelField?: string;
23
+ className?: string;
24
+ showToolbar?: boolean;
25
+ defaultValue?: PickerValue[];
26
+ value?: PickerValue[];
27
+ swipeDuration?: number;
28
+ visibleItemCount?: number;
29
+ itemHeight?: number;
30
+ columns: PickerColumnItem[] | PickerColumnItem;
31
+ onChange?: (
32
+ value?: PickerValue[],
33
+ index?: number,
34
+ confirm?: boolean
35
+ ) => void;
36
+ onClose?: (
37
+ value?: PickerValue[]
38
+ ) => void;
39
+ onConfirm?: (
40
+ value?: PickerValue[]
41
+ ) => void;
42
+ }
43
+
44
+ function fixToArray(data: any) {
45
+ if (!Array.isArray(data)) {
46
+ return [data];
47
+ }
48
+ return data;
49
+ }
50
+
51
+ const Picker = memo<PickerProps>((props) => {
52
+ const {
53
+ labelField,
54
+ visibleItemCount = 5,
55
+ value = [],
56
+ swipeDuration = 1000,
57
+ columns = [],
58
+ itemHeight = 30,
59
+ showToolbar = true,
60
+ className='',
61
+ classnames: cx,
62
+ classPrefix: ns,
63
+ translate: __
64
+ } = props;
65
+
66
+ const _columns = fixToArray(columns);
67
+ const [innerValue, setInnerValue] = useState<PickerValue[]>(
68
+ fixToArray(props.value === undefined ? props.defaultValue || [] : value )
69
+ );
70
+
71
+ const close = () => {
72
+ if (props.onClose) {
73
+ props.onClose(innerValue);
74
+ }
75
+ };
76
+
77
+ const confirm = () => {
78
+ if (props.onConfirm) {
79
+ props.onConfirm(innerValue);
80
+ }
81
+ };
82
+
83
+ const onChange = (itemValue: PickerValue, columnIndex: number, confirm?: boolean) => {
84
+ const nextInnerValue = [...innerValue];
85
+ nextInnerValue[columnIndex] = itemValue;
86
+ setInnerValue(nextInnerValue);
87
+ if (props.onChange) {
88
+ props.onChange(nextInnerValue, columnIndex, confirm);
89
+ }
90
+ };
91
+
92
+ const renderColumnItem = (item: PickerColumnItem, index: number) => {
93
+ return (
94
+ <Column
95
+ {...item}
96
+ classnames={cx}
97
+ classPrefix={ns}
98
+ labelField={labelField}
99
+ itemHeight={itemHeight}
100
+ swipeDuration={swipeDuration}
101
+ visibleItemCount={visibleItemCount}
102
+ value={innerValue[index]}
103
+ onChange={(val: string | number, i, confirm) => {
104
+ onChange(val, index, confirm);
105
+ }}
106
+ />)
107
+ };
108
+
109
+ const wrapHeight = itemHeight * +visibleItemCount;
110
+ const frameStyle = {height: `${itemHeight}px`};
111
+ const columnsStyle = {height: `${wrapHeight}px`};
112
+ const maskStyle = {
113
+ backgroundSize: `100% ${(wrapHeight - itemHeight) / 2}px`
114
+ };
115
+
116
+ return (
117
+ <div
118
+ className={cx(className, 'PickerColumns', 'PickerColumns-popOver')}
119
+ >
120
+ {showToolbar && <div className={cx('PickerColumns-toolbar')}>
121
+ <Button className="PickerColumns-cancel" level="default" onClick={close}>
122
+ {__('cancel')}
123
+ </Button>
124
+ <Button className="PickerColumns-confirm" level="primary" onClick={confirm}>
125
+ {__('confirm')}
126
+ </Button>
127
+ </div>}
128
+ <div className={cx('PickerColumns-columns')} style={columnsStyle}>
129
+ {
130
+ _columns.map((column: PickerColumnItem, index: number) => renderColumnItem(column, index))
131
+ }
132
+ <div className={cx('PickerColumns-mask')} style={maskStyle}></div>
133
+ <div className={cx('PickerColumns-frame')} style={frameStyle}></div>
134
+ </div>
135
+ </div>
136
+ );
137
+ });
138
+
139
+ export default themeable(
140
+ localeable(
141
+ uncontrollable(Picker, {
142
+ value: 'onChange'
143
+ })
144
+ )
145
+ );