1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/open-hand-choerodon-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
wrapPicker.tsx 4.3 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
HughHzWu Отправлено 6 лет назад 951db21
import React, { Component, ComponentClass, FocusEventHandler } from 'react';
import classNames from 'classnames';
import LocaleReceiver from '../locale-provider/LocaleReceiver';
import { generateShowHourMinuteSecond } from '../time-picker';
import enUS from './locale/en_US';
import TimePickerPanel from '../rc-components/time-picker/Panel';
import { Size } from '../_util/enum';
import { getPrefixCls } from '../configure';
function getColumns({ showHour, showMinute, showSecond, use12Hours }: any) {
let column = 0;
if (showHour) {
column += 1;
}
if (showMinute) {
column += 1;
}
if (showSecond) {
column += 1;
}
if (use12Hours) {
column += 1;
}
return column;
}
export default function wrapPicker(Picker: ComponentClass<any>, defaultFormat?: string): any {
return class PickerWrapper extends Component<any, any> {
static displayName = 'PickerWrapper';
static defaultProps = {
format: defaultFormat || 'YYYY-MM-DD',
transitionName: 'slide-up',
popupStyle: {},
onChange() {},
onOk() {},
onOpenChange() {},
locale: {},
prefixCls: getPrefixCls('calendar'),
inputPrefixCls: getPrefixCls('input'),
border: true,
};
private picker: any;
componentDidMount() {
const { autoFocus, disabled } = this.props;
if (autoFocus && !disabled) {
this.focus();
}
}
handleOpenChange = (open: boolean) => {
const { onOpenChange } = this.props;
onOpenChange(open);
};
handleFocus = (e: FocusEventHandler<HTMLInputElement>) => {
const { onFocus } = this.props;
if (onFocus) {
onFocus(e);
}
};
handleBlur = (e: FocusEventHandler<HTMLInputElement>) => {
const { onBlur } = this.props;
if (onBlur) {
onBlur(e);
}
};
focus() {
this.picker.focus();
}
blur() {
this.picker.blur();
}
savePicker = (node: any) => {
this.picker = node;
};
getDefaultLocale = () => {
const { locale } = this.props;
const result = {
...enUS,
...locale,
};
result.lang = {
...result.lang,
...(locale || {}).lang,
};
return result;
};
renderPicker = (locale: any, localeCode: string) => {
const props = this.props;
const { prefixCls, inputPrefixCls } = props;
const pickerClass = classNames(`${prefixCls}-picker`, {
[`${prefixCls}-picker-${props.size}`]: !!props.size,
});
const pickerInputClass = classNames(`${prefixCls}-picker-input`, inputPrefixCls, {
[`${inputPrefixCls}-lg`]: props.size === Size.large,
[`${inputPrefixCls}-sm`]: props.size === Size.small,
[`${inputPrefixCls}-disabled`]: props.disabled,
});
const pickerWrapperInputClass = classNames(`${inputPrefixCls}-wrapper`, {
[`${inputPrefixCls}-disabled`]: props.disabled,
[`${inputPrefixCls}-has-border`]: props.border,
});
const timeFormat = (props.showTime && props.showTime.format) || 'HH:mm:ss';
const rcTimePickerProps = {
...generateShowHourMinuteSecond(timeFormat),
format: timeFormat,
use12Hours: props.showTime && props.showTime.use12Hours,
};
const columns = getColumns(rcTimePickerProps);
const timePickerCls = `${prefixCls}-time-picker-column-${columns}`;
const timePicker = props.showTime ? (
<TimePickerPanel
{...rcTimePickerProps}
{...props.showTime}
prefixCls={`${prefixCls}-time-picker`}
className={timePickerCls}
placeholder={locale.timePickerLocale.placeholder}
transitionName="slide-up"
/>
) : null;
return (
<Picker
{...props}
ref={this.savePicker}
pickerClass={pickerClass}
pickerInputClass={pickerInputClass}
pickerWrapperInputClass={pickerWrapperInputClass}
locale={locale}
localeCode={localeCode}
timePicker={timePicker}
onOpenChange={this.handleOpenChange}
onFocus={this.handleFocus}
onBlur={this.handleBlur}
/>
);
};
render() {
return (
<LocaleReceiver componentName="DatePicker" defaultLocale={this.getDefaultLocale}>
{this.renderPicker}
</LocaleReceiver>
);
}
};
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/open-hand-choerodon-ui.git
git@gitlife.ru:oschina-mirror/open-hand-choerodon-ui.git
oschina-mirror
open-hand-choerodon-ui
open-hand-choerodon-ui
1.4.1