ant-design/components/locale-provider/injectLocale.tsx
Benjy Cui 8f81594f91 Refactor: introduce injectLocale (#5289)
* refactor: extract injectLocale and refactor Pagination, ref: #5103

* refactor: use injectLocale in Popconfirm, ref: #5103

* refactor: use injectLocale in TimePicker

* refactor: use injectLocale in Transfer

* refactor: use injectLocale in TreeSelect

* refactor: remove useless code in AutoComplete

* test: update snapshot
2017-03-17 15:23:25 +08:00

33 lines
828 B
TypeScript

import React, { PropTypes } from 'react';
export interface ComponentProps {
locale?: any;
}
export interface ComponentContext {
antLocale?: { [key: string]: any };
}
export default (componentName: string, defaultLocale) => (
function<P>(Component: typeof React.Component): React.ComponentClass<P> {
return class extends Component<P & ComponentProps, any> {
static contextTypes = {
antLocale: PropTypes.object,
};
context: ComponentContext;
getLocale() {
const { antLocale } = this.context;
const localeFromContext = antLocale && antLocale[componentName];
const localeFromProps: any = this.props.locale || {};
return {
...defaultLocale,
...(localeFromContext || {}),
...localeFromProps,
};
}
};
}
);