├── .eslintignore ├── .npmignore ├── tests └── jest │ ├── mock.js │ ├── config.js │ └── polyfill.js ├── src ├── tag │ ├── index.js │ ├── __test__ │ │ └── Tag_test.jsx │ └── Tag.jsx ├── tree │ ├── index.js │ └── model │ │ └── util.js ├── card │ ├── index.js │ ├── Card.jsx │ └── __test__ │ │ └── Card_test.jsx ├── icon │ ├── index.js │ └── Icon.jsx ├── rate │ ├── index.js │ └── __test__ │ │ └── rate_test.jsx ├── alert │ ├── index.js │ └── __test__ │ │ └── Alert_test.jsx ├── badge │ ├── index.js │ └── Badge.jsx ├── input │ ├── index.js │ └── __test__ │ │ └── Input_test.jsx ├── switch │ └── index.js ├── slider │ └── index.js ├── upload │ ├── index.js │ ├── Types.js │ ├── Cover.jsx │ └── ajax.js ├── loading │ └── index.js ├── message │ ├── index.js │ └── Message.jsx ├── popover │ └── index.js ├── tooltip │ └── index.js ├── cascader │ └── index.js ├── pagination │ └── index.js ├── progress │ └── index.js ├── transfer │ └── index.js ├── color-picker │ ├── index.js │ ├── draggable.js │ └── Types.js ├── input-number │ ├── index.js │ └── util.js ├── auto-complete │ └── index.js ├── notification │ ├── index.js │ └── NotificationCenter.jsx ├── layout │ ├── index.js │ └── Row.jsx ├── steps │ └── index.js ├── tabs │ ├── index.js │ └── TabPane.jsx ├── form │ └── index.js ├── button │ ├── index.js │ ├── ButtonGroup.jsx │ ├── Button.jsx │ └── __test__ │ │ └── Button_test.jsx ├── table │ ├── index.js │ └── TableColumn.js ├── carousel │ └── index.js ├── collapse │ ├── index.js │ ├── CollapseItem.jsx │ └── Collapse.jsx ├── date-picker │ ├── basic │ │ └── index.js │ ├── index.js │ ├── __test__ │ │ └── utils.js │ ├── panel │ │ └── PopperBase.js │ ├── MountBody.jsx │ ├── DatePicker.jsx │ ├── DateRangePicker.jsx │ ├── TimeRangePicker.jsx │ ├── TimeSelect.jsx │ └── TimePicker.jsx ├── breadcrumb │ ├── index.js │ ├── BreadcrumbItem.jsx │ ├── Breadcrumb.jsx │ └── __test__ │ │ └── Breadcrumb_test.jsx ├── radio │ ├── index.js │ ├── RadioGroup.jsx │ └── RadioButton.jsx ├── select │ ├── index.js │ └── OptionGroup.jsx ├── dialog │ ├── index.js │ ├── DialogBody.jsx │ └── DialogFooter.jsx ├── scrollbar │ ├── index.js │ ├── scrollbar-width.js │ └── util.js ├── dropdown │ ├── index.js │ ├── DropdownItem.jsx │ └── DropdownMenu.jsx ├── checkbox │ ├── index.js │ └── CheckBoxButton.jsx ├── menu │ ├── index.js │ ├── MixinComponent.jsx │ ├── MenuItem.jsx │ └── MenuItemGroup.jsx ├── locale │ ├── index.js │ └── format.js ├── message-box │ └── index.js └── index.js ├── libs ├── internal │ ├── index.js │ └── EventRegister.jsx ├── animate │ ├── index.js │ └── transition.jsx ├── utils │ ├── IDGenerator.js │ ├── react.js │ ├── assert.js │ ├── style.js │ ├── errors.js │ └── dom.js ├── props │ ├── index.js │ ├── regex.js │ └── range.js ├── index.js ├── component │ └── index.js ├── pureComponent │ └── index.js ├── view │ └── index.js ├── editor │ ├── style.scss │ └── index.jsx └── markdown │ └── index.jsx ├── site ├── pages │ ├── alert │ │ ├── style.scss │ │ └── index.jsx │ ├── select │ │ ├── style.scss │ │ └── index.jsx │ ├── card │ │ ├── hamburger.png │ │ ├── index.jsx │ │ └── style.scss │ ├── collapse │ │ ├── style.scss │ │ └── index.jsx │ ├── message │ │ ├── style.scss │ │ └── index.jsx │ ├── message-box │ │ ├── style.scss │ │ └── index.jsx │ ├── time-picker │ │ ├── style.scss │ │ └── index.jsx │ ├── notification │ │ ├── style.scss │ │ └── index.jsx │ ├── input-number │ │ ├── style.scss │ │ └── index.jsx │ ├── radio │ │ ├── style.scss │ │ └── index.jsx │ ├── i18n │ │ ├── style.scss │ │ └── index.jsx │ ├── checkbox │ │ ├── style.scss │ │ └── index.jsx │ ├── table │ │ ├── style.scss │ │ └── index.jsx │ ├── loading │ │ ├── style.scss │ │ └── index.jsx │ ├── progress │ │ ├── style.scss │ │ └── index.jsx │ ├── steps │ │ └── index.jsx │ ├── tabs │ │ └── index.jsx │ ├── transfer │ │ └── index.jsx │ ├── breadcrumb │ │ └── index.jsx │ ├── custom-theme │ │ └── index.jsx │ ├── popover │ │ ├── style.scss │ │ └── index.jsx │ ├── quick-start │ │ └── index.jsx │ ├── installation │ │ └── index.jsx │ ├── form │ │ ├── index.jsx │ │ └── style.scss │ ├── menu │ │ ├── index.jsx │ │ └── style.scss │ ├── rate │ │ ├── index.jsx │ │ └── style.scss │ ├── tag │ │ ├── index.jsx │ │ └── style.scss │ ├── tree │ │ ├── index.jsx │ │ └── style.scss │ ├── badge │ │ ├── index.jsx │ │ └── style.scss │ ├── button │ │ ├── index.jsx │ │ └── style.scss │ ├── color │ │ └── index.jsx │ ├── date-picker │ │ ├── index.jsx │ │ └── style.scss │ ├── dialog │ │ ├── index.jsx │ │ └── style.scss │ ├── layout │ │ ├── index.jsx │ │ └── style.scss │ ├── slider │ │ ├── index.jsx │ │ └── style.scss │ ├── switch │ │ ├── index.jsx │ │ └── style.scss │ ├── upload │ │ ├── index.jsx │ │ └── style.scss │ ├── tooltip │ │ ├── index.jsx │ │ └── style.scss │ ├── carousel │ │ └── index.jsx │ ├── cascader │ │ ├── index.jsx │ │ └── style.scss │ ├── datetime-picker │ │ ├── index.jsx │ │ └── style.scss │ ├── dropdown │ │ ├── index.jsx │ │ └── style.scss │ ├── pagination │ │ ├── index.jsx │ │ └── style.scss │ ├── color-picker │ │ ├── index.jsx │ │ └── style.scss │ ├── icon │ │ ├── index.jsx │ │ ├── iconList.js │ │ └── style.scss │ ├── input │ │ ├── index.jsx │ │ ├── custom-item.jsx │ │ └── style.scss │ ├── typography │ │ ├── index.jsx │ │ └── style.scss │ └── index.jsx ├── assets │ ├── favicon.ico │ └── github.png ├── locales │ ├── index.js │ ├── en-US.js │ └── zh-CN.js ├── index.html ├── docs │ ├── zh-CN │ │ ├── quick-start.md │ │ ├── icon.md │ │ ├── breadcrumb.md │ │ ├── i18n.md │ │ ├── color-picker.md │ │ ├── custom-theme.md │ │ ├── typography.md │ │ └── progress.md │ └── en-US │ │ ├── quick-start.md │ │ ├── icon.md │ │ ├── breadcrumb.md │ │ ├── color-picker.md │ │ ├── i18n.md │ │ └── typography.md ├── index.jsx └── run.js ├── .flowconfig ├── .gitignore ├── .editorconfig ├── typings └── typing-tests │ ├── tsconfig.json │ ├── Icon.tsx │ ├── Loading.tsx │ ├── ColorPicker.tsx │ ├── Card.tsx │ ├── Badge.tsx │ ├── InputNumber.tsx │ ├── Breadcrumb.tsx │ ├── Progress.tsx │ ├── Pagination.tsx │ ├── Timepicker.tsx │ ├── Tag.tsx │ ├── Slider.tsx │ ├── Switch.tsx │ ├── Collapse.tsx │ ├── AutoComplete.tsx │ ├── Alert.tsx │ ├── Input.tsx │ ├── Rate.tsx │ ├── Tabs.tsx │ ├── Upload.tsx │ ├── Select.tsx │ ├── Table.tsx │ ├── Checkbox.tsx │ ├── Dialog.tsx │ └── Transfer.tsx ├── .travis.yml ├── .github ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE.md ├── flow └── modules.js ├── .babelrc ├── CONTRIBUTING.md ├── LICENSE └── .eslintrc.json /.eslintignore: -------------------------------------------------------------------------------- 1 | build 2 | tests 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | tests 3 | site 4 | .* 5 | -------------------------------------------------------------------------------- /tests/jest/mock.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = 'test-file-stub'; 3 | -------------------------------------------------------------------------------- /src/tag/index.js: -------------------------------------------------------------------------------- 1 | import Tag from './Tag' 2 | 3 | export default Tag 4 | -------------------------------------------------------------------------------- /src/tree/index.js: -------------------------------------------------------------------------------- 1 | import Tree from './Tree'; 2 | 3 | export default Tree; -------------------------------------------------------------------------------- /libs/internal/index.js: -------------------------------------------------------------------------------- 1 | export {default as EventRegister} from './EventRegister' -------------------------------------------------------------------------------- /src/card/index.js: -------------------------------------------------------------------------------- 1 | import Card from './Card'; 2 | 3 | export default Card; 4 | -------------------------------------------------------------------------------- /src/icon/index.js: -------------------------------------------------------------------------------- 1 | import Icon from './Icon'; 2 | 3 | export default Icon; 4 | -------------------------------------------------------------------------------- /src/rate/index.js: -------------------------------------------------------------------------------- 1 | import Rate from './Rate'; 2 | 3 | export default Rate; 4 | -------------------------------------------------------------------------------- /src/alert/index.js: -------------------------------------------------------------------------------- 1 | import Alert from './Alert'; 2 | 3 | export default Alert; 4 | -------------------------------------------------------------------------------- /src/badge/index.js: -------------------------------------------------------------------------------- 1 | import Badge from './Badge' 2 | 3 | export default Badge 4 | -------------------------------------------------------------------------------- /src/input/index.js: -------------------------------------------------------------------------------- 1 | import Input from './Input'; 2 | 3 | export default Input; 4 | -------------------------------------------------------------------------------- /src/switch/index.js: -------------------------------------------------------------------------------- 1 | import Switch from './Switch'; 2 | 3 | export default Switch; -------------------------------------------------------------------------------- /src/slider/index.js: -------------------------------------------------------------------------------- 1 | import Slider from './Slider'; 2 | 3 | export default Slider; 4 | -------------------------------------------------------------------------------- /src/upload/index.js: -------------------------------------------------------------------------------- 1 | import Upload from './Upload'; 2 | 3 | export default Upload; 4 | -------------------------------------------------------------------------------- /src/loading/index.js: -------------------------------------------------------------------------------- 1 | import Loading from './Loading'; 2 | 3 | export default Loading; 4 | -------------------------------------------------------------------------------- /src/message/index.js: -------------------------------------------------------------------------------- 1 | import Message from './Message'; 2 | 3 | export default Message; 4 | -------------------------------------------------------------------------------- /src/popover/index.js: -------------------------------------------------------------------------------- 1 | import Popover from './Popover'; 2 | 3 | export default Popover; 4 | -------------------------------------------------------------------------------- /src/tooltip/index.js: -------------------------------------------------------------------------------- 1 | import Tooltip from './Tooltip'; 2 | 3 | export default Tooltip; 4 | -------------------------------------------------------------------------------- /site/pages/alert/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-alert .el-alert { 2 | margin-bottom: 20px; 3 | } 4 | -------------------------------------------------------------------------------- /src/cascader/index.js: -------------------------------------------------------------------------------- 1 | import Cascader from './Cascader'; 2 | 3 | export default Cascader; 4 | -------------------------------------------------------------------------------- /src/pagination/index.js: -------------------------------------------------------------------------------- 1 | import Pagination from './Pagination'; 2 | 3 | export default Pagination; -------------------------------------------------------------------------------- /src/progress/index.js: -------------------------------------------------------------------------------- 1 | import Progress from './Progress'; 2 | 3 | export default Progress; 4 | -------------------------------------------------------------------------------- /src/transfer/index.js: -------------------------------------------------------------------------------- 1 | import Transfer from './Transfer'; 2 | 3 | export default Transfer; 4 | -------------------------------------------------------------------------------- /libs/animate/index.js: -------------------------------------------------------------------------------- 1 | import Transition from './transition' 2 | 3 | export default { Transition } 4 | -------------------------------------------------------------------------------- /site/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ElemeFE/element-react/HEAD/site/assets/favicon.ico -------------------------------------------------------------------------------- /site/assets/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ElemeFE/element-react/HEAD/site/assets/github.png -------------------------------------------------------------------------------- /src/color-picker/index.js: -------------------------------------------------------------------------------- 1 | import ColorPicker from './ColorPicker'; 2 | 3 | export default ColorPicker; 4 | -------------------------------------------------------------------------------- /src/input-number/index.js: -------------------------------------------------------------------------------- 1 | import InputNumber from './InputNumber'; 2 | 3 | export default InputNumber; 4 | -------------------------------------------------------------------------------- /site/pages/select/style.scss: -------------------------------------------------------------------------------- 1 | .demo-select .el-select { 2 | display: inline-block; 3 | width: 240px; 4 | } 5 | -------------------------------------------------------------------------------- /src/auto-complete/index.js: -------------------------------------------------------------------------------- 1 | import AutoComplete from './AutoComplete'; 2 | 3 | export default AutoComplete; 4 | -------------------------------------------------------------------------------- /site/pages/card/hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ElemeFE/element-react/HEAD/site/pages/card/hamburger.png -------------------------------------------------------------------------------- /site/locales/index.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | 'zh-CN': require('./zh-CN'), 4 | 'en-US': require('./en-US') 5 | } 6 | -------------------------------------------------------------------------------- /site/pages/collapse/style.scss: -------------------------------------------------------------------------------- 1 | .demo-collapse .el-collapse-item__header .header-icon { 2 | margin-left: 5px; 3 | } 4 | -------------------------------------------------------------------------------- /src/notification/index.js: -------------------------------------------------------------------------------- 1 | import NotificationCenter from './NotificationCenter'; 2 | 3 | export default NotificationCenter; 4 | -------------------------------------------------------------------------------- /site/pages/message/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-message { 2 | .el-button + .el-button { 3 | margin-left: 10px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/layout/index.js: -------------------------------------------------------------------------------- 1 | import Row from './Row'; 2 | import Col from './Col'; 3 | 4 | export default { 5 | Row, 6 | Col 7 | } 8 | -------------------------------------------------------------------------------- /site/pages/message-box/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-message { 2 | .el-button + .el-button { 3 | margin-left: 10px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /site/pages/time-picker/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box { 2 | .el-date-editor + .el-date-editor { 3 | margin-left: 10px; 4 | } 5 | } -------------------------------------------------------------------------------- /site/pages/notification/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-notification { 2 | .el-button + .el-button { 3 | margin-left: 10px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/steps/index.js: -------------------------------------------------------------------------------- 1 | import Steps from './Steps'; 2 | import Step from './Step'; 3 | 4 | Steps.Step = Step; 5 | 6 | export default Steps; 7 | -------------------------------------------------------------------------------- /src/tabs/index.js: -------------------------------------------------------------------------------- 1 | import Tabs from './Tabs' 2 | import TabPane from './TabPane' 3 | 4 | Tabs.Pane = TabPane; 5 | 6 | export default Tabs; 7 | -------------------------------------------------------------------------------- /src/form/index.js: -------------------------------------------------------------------------------- 1 | import Form from './Form'; 2 | import FormItem from './FormItem'; 3 | 4 | Form.Item = FormItem; 5 | 6 | export default Form; 7 | -------------------------------------------------------------------------------- /site/pages/input-number/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-inputnumber { 2 | .el-input-number+.el-input-number { 3 | margin-left: 10px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /site/pages/radio/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-radio { 2 | .el-radio-group:nth-of-type(2) { 3 | display: block; 4 | margin: 15px 0; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | .*/node_modules/.* 3 | 4 | [include] 5 | 6 | [libs] 7 | flow 8 | 9 | [options] 10 | esproposal.class_static_fields=enable 11 | -------------------------------------------------------------------------------- /libs/utils/IDGenerator.js: -------------------------------------------------------------------------------- 1 | export class IDGenerator { 2 | constructor(){ 3 | this.id = 0 4 | } 5 | 6 | next(){ 7 | return this.id++ & 0xffff 8 | } 9 | } -------------------------------------------------------------------------------- /src/button/index.js: -------------------------------------------------------------------------------- 1 | import Button from './Button'; 2 | import ButtonGroup from './ButtonGroup'; 3 | 4 | Button.Group = ButtonGroup; 5 | 6 | export default Button; 7 | -------------------------------------------------------------------------------- /src/table/index.js: -------------------------------------------------------------------------------- 1 | import Table from './TableStore'; 2 | import TableColumn from './TableColumn'; 3 | 4 | Table.Column = TableColumn; 5 | 6 | export default Table; -------------------------------------------------------------------------------- /site/pages/i18n/style.scss: -------------------------------------------------------------------------------- 1 | ul.language-list { 2 | color: #5e6d82; 3 | font-size: 14px; 4 | padding-left: 20px; 5 | li { 6 | line-height: 1.8 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /site/pages/checkbox/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-checkbox { 2 | .checkbox { 3 | margin-right: 5px; 4 | & + .checkbox { 5 | margin-left: 10px; 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /src/carousel/index.js: -------------------------------------------------------------------------------- 1 | import Carousel from './Carousel'; 2 | import CarouselItem from './CarouselItem'; 3 | 4 | Carousel.Item = CarouselItem; 5 | 6 | export default Carousel; 7 | -------------------------------------------------------------------------------- /src/collapse/index.js: -------------------------------------------------------------------------------- 1 | import Collapse from './Collapse'; 2 | import CollapseItem from './CollapseItem'; 3 | 4 | Collapse.Item = CollapseItem; 5 | 6 | export default Collapse; 7 | -------------------------------------------------------------------------------- /src/date-picker/basic/index.js: -------------------------------------------------------------------------------- 1 | export {default as DateTable} from './DateTable' 2 | export {default as MonthTable} from './MonthTable' 3 | export {default as YearTable} from './YearTable' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | .idea 4 | 5 | npm-debug.log 6 | node_modules 7 | 8 | /dist 9 | /next.js 10 | 11 | .vscode 12 | Makefile 13 | yarn.lock 14 | package-lock.json 15 | -------------------------------------------------------------------------------- /src/breadcrumb/index.js: -------------------------------------------------------------------------------- 1 | import Breadcrumb from './Breadcrumb'; 2 | import BreadcrumbItem from './BreadcrumbItem'; 3 | 4 | Breadcrumb.Item = BreadcrumbItem; 5 | 6 | export default Breadcrumb; 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | 7 | [README.md] 8 | indent_style = space 9 | indent_size = 4 10 | 11 | [Makefile] 12 | indent_style = tab 13 | -------------------------------------------------------------------------------- /site/pages/table/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-table { 2 | .el-table .info-row { 3 | background: #c9e5f5; 4 | } 5 | 6 | .el-table .positive-row { 7 | background: #e2f0e4; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/loading/style.scss: -------------------------------------------------------------------------------- 1 | .demo-loading { 2 | .el-loading-demo { 3 | border-radius: 4px; 4 | overflow: hidden; 5 | } 6 | 7 | .el-loading-mask { 8 | height: 100px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /site/pages/progress/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-progress { 2 | .el-progress--line { 3 | margin-bottom: 15px; 4 | width: 350px; 5 | } 6 | .el-progress--circle { 7 | margin-right: 15px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/steps/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class Steps extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/steps.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /site/pages/tabs/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class Tabs extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/tabs.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /libs/utils/react.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | 4 | function firstChild(props) { 5 | const childrenArray = React.Children.toArray(props.children); 6 | return childrenArray[0] || null; 7 | } 8 | 9 | export {firstChild} -------------------------------------------------------------------------------- /site/pages/transfer/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class Tooltip extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/transfer.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/radio/index.js: -------------------------------------------------------------------------------- 1 | import Radio from './Radio'; 2 | import RadioButton from './RadioButton'; 3 | import RadioGroup from './RadioGroup'; 4 | 5 | Radio.Button = RadioButton; 6 | Radio.Group = RadioGroup; 7 | 8 | export default Radio; 9 | -------------------------------------------------------------------------------- /src/select/index.js: -------------------------------------------------------------------------------- 1 | import Select from './Select'; 2 | import Option from './Option'; 3 | import OptionGroup from './OptionGroup'; 4 | 5 | Select.Option = Option; 6 | Select.OptionGroup = OptionGroup; 7 | 8 | export default Select; 9 | -------------------------------------------------------------------------------- /site/pages/breadcrumb/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class Breadcrumb extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/breadcrumb.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /site/pages/custom-theme/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class CustomTheme extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/custom-theme.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /site/pages/popover/style.scss: -------------------------------------------------------------------------------- 1 | .demo-box.demo-popover { 2 | .el-popover + .el-popover { 3 | margin-left: 10px; 4 | } 5 | .el-input { 6 | width: 360px; 7 | } 8 | .el-button { 9 | margin-left: 10px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /site/pages/quick-start/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class QuickStart extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/quick-start.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/dialog/index.js: -------------------------------------------------------------------------------- 1 | import DialogBody from './DialogBody'; 2 | import DialogFooter from './DialogFooter'; 3 | import Dialog from './Dialog'; 4 | 5 | Dialog.Body = DialogBody; 6 | Dialog.Footer = DialogFooter; 7 | 8 | export default Dialog; 9 | -------------------------------------------------------------------------------- /site/pages/installation/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | export default class Installation extends Markdown { 4 | document(locale) { 5 | return require(`../../docs/${locale}/installation.md`); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/jest/config.js: -------------------------------------------------------------------------------- 1 | require('./polyfill'); 2 | 3 | const Enzyme = require('enzyme'); 4 | const EnzymeAdapter = require('enzyme-adapter-react-16'); 5 | 6 | // Setup enzyme's react adapter 7 | Enzyme.configure({ adapter: new EnzymeAdapter() }); 8 | -------------------------------------------------------------------------------- /libs/props/index.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | 3 | import rangeType from './range'; 4 | import regexType from './regex'; 5 | 6 | PropTypes.range = rangeType; 7 | PropTypes.regex = regexType; 8 | 9 | export default PropTypes; 10 | -------------------------------------------------------------------------------- /src/scrollbar/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | this is trimmed version compared to the version in vue-element lib. 3 | native functionality are leftout. 4 | 5 | revision version: 6 | 48996c6658300b7f9f01b9b4011a531f17e30b75 7 | */ 8 | export {Scrollbar} from './Scrollbar' -------------------------------------------------------------------------------- /src/dropdown/index.js: -------------------------------------------------------------------------------- 1 | import Dropdown from './Dropdown'; 2 | import DropdownMenu from './DropdownMenu'; 3 | import DropdownItem from './DropdownItem'; 4 | 5 | Dropdown.Item = DropdownItem; 6 | Dropdown.Menu = DropdownMenu; 7 | 8 | export default Dropdown; 9 | -------------------------------------------------------------------------------- /site/pages/form/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Form extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/form.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/i18n/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class i18n extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/i18n.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/menu/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Menu extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/menu.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/rate/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Rate extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/rate.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/tag/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Tag extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/tag.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/tree/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Tree extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/tree.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/tree/style.scss: -------------------------------------------------------------------------------- 1 | .demo-tree { 2 | .leaf { 3 | width: 20px; 4 | background: #ddd; 5 | } 6 | 7 | .folder { 8 | width: 20px; 9 | background: #888; 10 | } 11 | 12 | .buttons { 13 | margin-top: 20px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /typings/typing-tests/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "module": "es2015", 5 | "noEmit": true, 6 | "jsx": "react" 7 | }, 8 | "include": [ 9 | "../index.d.ts", 10 | "." 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /site/pages/alert/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Alert extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/alert.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/badge/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Badge extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/badge.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/button/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Button extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/button.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/color/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Color extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/color.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/date-picker/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | import './style.scss'; 3 | 4 | export default class DatePicker extends Markdown { 5 | document(locale) { 6 | return require(`../../docs/${locale}/date-picker.md`); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /site/pages/dialog/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Dialog extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/dialog.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/layout/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Layout extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/layout.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/radio/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Radio extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/radio.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/select/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Select extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/select.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/slider/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Slider extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/slider.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/switch/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Switch extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/switch.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/table/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Table extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/table.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/upload/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Upload extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/upload.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/checkbox/index.js: -------------------------------------------------------------------------------- 1 | import Checkbox from './CheckBox'; 2 | import CheckboxGroup from './CheckBoxGroup'; 3 | import CheckboxButton from './CheckBoxButton'; 4 | 5 | Checkbox.Group = CheckboxGroup; 6 | Checkbox.Button = CheckboxButton; 7 | 8 | export default Checkbox; 9 | -------------------------------------------------------------------------------- /src/table/TableColumn.js: -------------------------------------------------------------------------------- 1 | // import * as React from 'react'; 2 | // import { Component, PropTypes } from '../../libs'; 3 | 4 | function TableColumn() { 5 | return null; 6 | } 7 | 8 | TableColumn.typeName = 'TableColumn'; 9 | 10 | export default TableColumn; -------------------------------------------------------------------------------- /site/pages/loading/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Loading extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/loading.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/message/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Message extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/message.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/popover/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Popover extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/popover.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/tooltip/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Tooltip extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/tooltip.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/carousel/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Carousel extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/carousel.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/cascader/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Cascader extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/cascader.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/checkbox/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Checkbox extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/checkbox.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/collapse/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Collapse extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/collapse.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/datetime-picker/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | import './style.scss'; 3 | 4 | export default class DatePicker extends Markdown { 5 | document(locale) { 6 | return require(`../../docs/${locale}/datetime-picker.md`); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /site/pages/dropdown/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Dropdown extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/dropdown.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/progress/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Progress extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/progress.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/message-box/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class MessageBox extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/message-box.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/pagination/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Pagination extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/pagination.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/time-picker/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class TimePicker extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/time-picker.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/color-picker/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class ColorPicker extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/color-picker.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/input-number/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class InputNumber extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/input-number.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /site/pages/notification/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Notification extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/notification.md`); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/menu/index.js: -------------------------------------------------------------------------------- 1 | import Menu from './Menu'; 2 | import SubMenu from './SubMenu'; 3 | import MenuItem from './MenuItem'; 4 | import MenuItemGroup from './MenuItemGroup'; 5 | 6 | Menu.SubMenu = SubMenu; 7 | Menu.Item = MenuItem; 8 | Menu.ItemGroup = MenuItemGroup; 9 | 10 | export default Menu; 11 | -------------------------------------------------------------------------------- /tests/jest/polyfill.js: -------------------------------------------------------------------------------- 1 | global.document.createRange = () => ({ 2 | setStart: f => f, 3 | setEnd: f => f, 4 | commonAncestorContainer: { 5 | nodeName: "BODY", 6 | ownerDocument: document, 7 | }, 8 | }) 9 | 10 | global.requestAnimationFrame = (cb) => { 11 | setTimeout(cb, 0) 12 | } 13 | -------------------------------------------------------------------------------- /site/pages/icon/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Icon extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/icon.md`); 8 | } 9 | } 10 | 11 | Icon.defaultProps = { 12 | iconList: require('./iconList') 13 | }; 14 | -------------------------------------------------------------------------------- /libs/props/regex.js: -------------------------------------------------------------------------------- 1 | import { createPropType } from '../utils'; 2 | 3 | export default createPropType((props, propName, componentName) => { 4 | const value = props[propName]; 5 | 6 | if (!(value instanceof RegExp)) { 7 | return new Error(`Invalid prop ${propName} of ${componentName}, should be valid regex.`); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /site/pages/card/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Card extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/card.md`); 8 | } 9 | } 10 | 11 | Card.defaultProps = { 12 | imgSrc: require('./hamburger.png') 13 | } 14 | -------------------------------------------------------------------------------- /site/pages/input/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Input extends Markdown { 6 | document(locale) { 7 | return require(`../../docs/${locale}/input.md`); 8 | } 9 | } 10 | 11 | Input.defaultProps = { 12 | customItem: require('./custom-item') 13 | } 14 | -------------------------------------------------------------------------------- /site/pages/typography/index.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from '../../../libs/markdown'; 2 | 3 | import './style.scss'; 4 | 5 | export default class Typography extends Markdown { 6 | documentShouldTransform() { 7 | return false; 8 | } 9 | 10 | document(locale) { 11 | return require(`../../docs/${locale}/typography.md`); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 || 主标题 | 47 |用 Element 快速搭建页面 | 48 |20px Extra large | 49 |
| 标题 | 52 |用 Element 快速搭建页面 | 53 |18px large | 54 |
| 小标题 | 57 |用 Element 快速搭建页面 | 58 |16px Medium | 59 |
| 正文 | 62 |用 Element 快速搭建页面 | 63 |14px Small | 64 |
| 正文(小) | 67 |用 Element 快速搭建页面 | 68 |13px Extra Small | 69 |
| 辅助文字 | 72 |用 Element 快速搭建页面 | 73 |12px Extra Extra Small | 74 |
| Main Title | 47 |Build with Element | 48 |20px Extra large | 49 |
| Title | 52 |Build with Element | 53 |18px large | 54 |
| Small Title | 57 |Build with Element | 58 |16px Medium | 59 |
| Body | 62 |Build with Element | 63 |14px Small | 64 |
| Body (small) | 67 |Build with Element | 68 |13px Extra Small | 69 |
| Supplementary text | 72 |Build with Element | 73 |12px Extra Extra Small | 74 |