├── .gitattributes ├── .gitignore ├── .npmignore ├── .stylelintrc ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README-cn.md ├── README.md ├── commitlint.config.js ├── components ├── Alert │ ├── Alert.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── AutoComplete │ ├── AutoComplete.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Avatar │ ├── Avatar.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── BackTop │ ├── Backtop.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── assist.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Badge │ ├── Badge.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Breadcrumb │ ├── Breadcrumb.tsx │ ├── BreadcrumbItem.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Button │ ├── Button.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Card │ ├── Card.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Carousel │ ├── Carousel.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Checkbox │ ├── Checkbox.tsx │ ├── CheckboxGroup.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Collapse │ ├── Collapse.tsx │ ├── Panel.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── DatePicker │ ├── DatePicker.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Divider │ ├── Divider.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Drawer │ ├── Drawer.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Form │ ├── Form.tsx │ ├── Validator.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Grid │ ├── Col.tsx │ ├── Row.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── grid.less │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Helpers │ ├── ClickOutside.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Icon │ ├── Icon.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── iconName.js │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Input │ ├── Input.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── InputNumber │ ├── InputNumber.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Loading │ ├── Loading.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ ├── loadSvg.ts │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Menu │ ├── Menu.tsx │ ├── MenuItem.tsx │ ├── MenuItemGroup.tsx │ ├── SubMenu.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── horizontal.less │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ ├── var.less │ │ └── vertical.less ├── Message │ ├── Message.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Modal │ ├── Modal.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Notification │ ├── Notification.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Pagination │ ├── Pagination.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Pop │ ├── Pop.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── PopOver │ ├── PopOver.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Progress │ ├── Progress.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Radio │ ├── Radio.tsx │ ├── RadioGroup.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Rate │ ├── Rate.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Ripple │ ├── Ripple.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ ├── rippleJs.d.ts │ ├── rippleJs.js │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Select │ ├── OptGroup.tsx │ ├── Option.tsx │ ├── Select.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Skeleton │ ├── Skeleton.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Slider │ ├── Slider.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Steps │ ├── Steps.tsx │ ├── StepsItem.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Switch │ ├── Switch.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Table │ ├── Table.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Tabs │ ├── Pane.tsx │ ├── Tabs.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── card.less │ │ ├── horizontal.less │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ ├── panel.less │ │ ├── var.less │ │ └── vertical.less ├── Tag │ ├── Tag.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── TimePicker │ ├── TimePanel.tsx │ ├── TimePicker.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Timeline │ ├── Timeline.tsx │ ├── TimelineItem.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Tooltip │ ├── Tooltip.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── Transitions │ ├── Expand.tsx │ ├── Scale.tsx │ ├── Slide.tsx │ ├── __tests__ │ │ ├── e2e.test.tsx │ │ └── props.test.tsx │ ├── index.tsx │ └── style │ │ ├── index.js │ │ ├── index.less │ │ ├── less.js │ │ └── var.less ├── global.d.ts ├── index.tsx ├── styles │ ├── animation │ │ ├── fade.less │ │ ├── index.less │ │ ├── progress.less │ │ └── rotate.less │ ├── common │ │ ├── common.less │ │ ├── index.less │ │ └── reset.less │ ├── components.less │ ├── index.less │ ├── mixins │ │ ├── clearfix.less │ │ └── index.less │ └── var.less ├── template │ └── component.tsx ├── tsconfig.json └── utils │ ├── colorFormat.tsx │ ├── contain.tsx │ ├── customTransition.tsx │ ├── dialog.tsx │ ├── index.tsx │ ├── isNumberCode.tsx │ ├── mask.tsx │ ├── renderInRootDom.tsx │ └── valueTransition.tsx ├── config ├── devServer.js └── production.js ├── docs ├── App.tsx ├── components │ ├── ApiBox │ │ ├── index.less │ │ └── index.tsx │ ├── CodeBox │ │ ├── index.less │ │ └── index.tsx │ └── Markdown │ │ ├── index.less │ │ └── index.tsx ├── effects.md ├── entry.tsx ├── favicon.ico ├── index.html ├── index.less ├── index.tsx ├── intro.md ├── modules.d.ts ├── pages │ ├── components │ │ ├── Alert │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── alertCustom.md │ │ │ │ ├── alertCustom.tsx │ │ │ │ ├── alertDemo.md │ │ │ │ └── alertDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── AutoComplete │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── autoCompleteDemo.md │ │ │ │ ├── autoCompleteDemo.tsx │ │ │ │ ├── autoCompleteFilter.md │ │ │ │ └── autoCompleteFilter.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Avatar │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── avatarCustom.md │ │ │ │ ├── avatarCustom.tsx │ │ │ │ ├── avatarDemo.md │ │ │ │ └── avatarDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── BackTop │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── backTopCustom.md │ │ │ │ ├── backTopCustom.tsx │ │ │ │ ├── backTopDemo.md │ │ │ │ ├── backTopDemo.tsx │ │ │ │ └── fire.png │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Badge │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── badgeCustom.md │ │ │ │ ├── badgeCustom.tsx │ │ │ │ ├── badgeDemo.md │ │ │ │ └── badgeDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Breadcrumb │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── breadcrumbCustom.md │ │ │ │ ├── breadcrumbCustom.tsx │ │ │ │ ├── breadcrumbDemo.md │ │ │ │ └── breadcrumbDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Button │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── buttonDisabled.md │ │ │ │ ├── buttonDisabled.tsx │ │ │ │ ├── buttonGhost.md │ │ │ │ ├── buttonGhost.tsx │ │ │ │ ├── buttonIcon.md │ │ │ │ ├── buttonIcon.tsx │ │ │ │ ├── buttonLoading.md │ │ │ │ ├── buttonLoading.tsx │ │ │ │ ├── buttonType.md │ │ │ │ └── buttonType.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Card │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── cardBorder.md │ │ │ │ ├── cardBorder.tsx │ │ │ │ ├── cardCustom.md │ │ │ │ ├── cardCustom.tsx │ │ │ │ ├── cardDemo.md │ │ │ │ └── cardDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Carousel │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── carouselCustom.md │ │ │ │ ├── carouselCustom.tsx │ │ │ │ ├── carouselDemo.md │ │ │ │ └── carouselDemo.tsx │ │ │ ├── index.less │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── CheckBox │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── checkBoxControl.md │ │ │ │ ├── checkBoxControl.tsx │ │ │ │ ├── checkBoxDemo.md │ │ │ │ ├── checkBoxDemo.tsx │ │ │ │ ├── checkBoxGroup.md │ │ │ │ └── checkBoxGroup.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Collapse │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── collapseCustom.md │ │ │ │ ├── collapseCustom.tsx │ │ │ │ ├── collapseDemo.md │ │ │ │ └── collapseDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Color │ │ │ ├── color.md │ │ │ ├── color.ts │ │ │ ├── colorManipulator.d.ts │ │ │ ├── colorManipulator.js │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ └── intro.md │ │ ├── DatePicker │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── datePickerCustom.md │ │ │ │ ├── datePickerCustom.tsx │ │ │ │ ├── datePickerDemo.md │ │ │ │ ├── datePickerDemo.tsx │ │ │ │ ├── datePickerTime.md │ │ │ │ └── datePickerTime.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Divider │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── dividerCustom.md │ │ │ │ ├── dividerCustom.tsx │ │ │ │ ├── dividerDemo.md │ │ │ │ └── dividerDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Drawer │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── drawerCustom.md │ │ │ │ ├── drawerCustom.tsx │ │ │ │ ├── drawerDemo.md │ │ │ │ └── drawerDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── FAQ │ │ │ ├── faq.md │ │ │ ├── index.tsx │ │ │ └── yoshino.jpg │ │ ├── Form │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── formCustom.md │ │ │ │ ├── formCustom.tsx │ │ │ │ ├── formDemo.md │ │ │ │ └── formDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Grid │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── gridConfig.md │ │ │ │ ├── gridConfig.tsx │ │ │ │ ├── gridCustom.md │ │ │ │ ├── gridCustom.tsx │ │ │ │ ├── gridDemo.md │ │ │ │ ├── gridDemo.tsx │ │ │ │ ├── gridFlex.md │ │ │ │ ├── gridFlex.tsx │ │ │ │ ├── gridFlexOrder.md │ │ │ │ ├── gridFlexOrder.tsx │ │ │ │ ├── gridFlexVertical.md │ │ │ │ ├── gridFlexVertical.tsx │ │ │ │ ├── gridOrder.md │ │ │ │ ├── gridOrder.tsx │ │ │ │ ├── gridOther.md │ │ │ │ └── gridOther.tsx │ │ │ ├── index.less │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Helpers │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── helpersCustom.md │ │ │ │ ├── helpersCustom.tsx │ │ │ │ ├── helpersDemo.md │ │ │ │ ├── helpersDemo.tsx │ │ │ │ └── index.less │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Icon │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── iconDemo.md │ │ │ │ ├── iconDemo.tsx │ │ │ │ ├── iconSearch.md │ │ │ │ └── iconSearch.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Input │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── inputCustom.md │ │ │ │ ├── inputCustom.tsx │ │ │ │ ├── inputDemo.md │ │ │ │ ├── inputDemo.tsx │ │ │ │ ├── inputDisabled.md │ │ │ │ └── inputDisabled.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── InputNumber │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── inputNumberDemo.md │ │ │ │ └── inputNumberDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Loading │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── loadingContainer.md │ │ │ │ ├── loadingContainer.tsx │ │ │ │ ├── loadingCustom.md │ │ │ │ ├── loadingCustom.tsx │ │ │ │ ├── loadingDemo.md │ │ │ │ └── loadingDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Logs │ │ │ ├── index.less │ │ │ ├── index.tsx │ │ │ ├── logs.md │ │ │ └── logs │ │ │ │ └── logs.md │ │ ├── Menu │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── menuCustom.md │ │ │ │ ├── menuCustom.tsx │ │ │ │ ├── menuDemo.md │ │ │ │ └── menuDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Message │ │ │ ├── api.tsx │ │ │ ├── config.md │ │ │ ├── demo │ │ │ │ ├── messageCustom.md │ │ │ │ ├── messageCustom.tsx │ │ │ │ ├── messageDemo.md │ │ │ │ └── messageDemo.tsx │ │ │ ├── global.md │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Modal │ │ │ ├── api.tsx │ │ │ ├── config.md │ │ │ ├── demo │ │ │ │ ├── modalCustom.md │ │ │ │ ├── modalCustom.tsx │ │ │ │ ├── modalDemo.md │ │ │ │ ├── modalDemo.tsx │ │ │ │ ├── modalInner.md │ │ │ │ └── modalInner.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Notification │ │ │ ├── api.tsx │ │ │ ├── config.md │ │ │ ├── demo │ │ │ │ ├── notificationCustom.md │ │ │ │ ├── notificationCustom.tsx │ │ │ │ ├── notificationDemo.md │ │ │ │ └── notificationDemo.tsx │ │ │ ├── global.md │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Pagination │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── paginationCustom.md │ │ │ │ ├── paginationCustom.tsx │ │ │ │ ├── paginationDemo.md │ │ │ │ └── paginationDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Progress │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── progressCircle.md │ │ │ │ ├── progressCircle.tsx │ │ │ │ ├── progressDemo.md │ │ │ │ └── progressDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Radio │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── radioCustom.md │ │ │ │ ├── radioCustom.tsx │ │ │ │ ├── radioDemo.md │ │ │ │ └── radioDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Rate │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── rateCustom.md │ │ │ │ ├── rateCustom.tsx │ │ │ │ ├── rateDemo.md │ │ │ │ └── rateDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Ripple │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── rippleCustom.md │ │ │ │ ├── rippleCustom.tsx │ │ │ │ ├── rippleDemo.md │ │ │ │ └── rippleDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Select │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── selectCustom.md │ │ │ │ ├── selectCustom.tsx │ │ │ │ ├── selectDemo.md │ │ │ │ └── selectDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Skeleton │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── skeletonCustom.md │ │ │ │ ├── skeletonCustom.tsx │ │ │ │ ├── skeletonDemo.md │ │ │ │ └── skeletonDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Slider │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── sliderCustom.md │ │ │ │ ├── sliderCustom.tsx │ │ │ │ ├── sliderDemo.md │ │ │ │ ├── sliderDemo.tsx │ │ │ │ ├── sliderDisabled.md │ │ │ │ └── sliderDisabled.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Start │ │ │ ├── index.tsx │ │ │ └── start.md │ │ ├── Steps │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── stepsCustom.md │ │ │ │ ├── stepsCustom.tsx │ │ │ │ ├── stepsDemo.md │ │ │ │ ├── stepsDemo.tsx │ │ │ │ ├── stepsError.md │ │ │ │ ├── stepsError.tsx │ │ │ │ ├── stepsVertical.md │ │ │ │ └── stepsVertical.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Switch │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── switchCustom.md │ │ │ │ ├── switchCustom.tsx │ │ │ │ ├── switchDemo.md │ │ │ │ └── switchDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Table │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── tableCustom.md │ │ │ │ ├── tableCustom.tsx │ │ │ │ ├── tableDemo.md │ │ │ │ ├── tableDemo.tsx │ │ │ │ ├── tableSortDemo.md │ │ │ │ └── tableSortDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Tabs │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── tabsCustom.md │ │ │ │ ├── tabsCustom.tsx │ │ │ │ ├── tabsDemo.md │ │ │ │ └── tabsDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Tag │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── tagCustom.md │ │ │ │ ├── tagCustom.tsx │ │ │ │ ├── tagDemo.md │ │ │ │ └── tagDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Theme │ │ │ ├── index.tsx │ │ │ └── theme.md │ │ ├── TimePicker │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── timePickerCustom.md │ │ │ │ ├── timePickerCustom.tsx │ │ │ │ ├── timePickerDemo.md │ │ │ │ └── timePickerDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Timeline │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── timelineCustom.md │ │ │ │ ├── timelineCustom.tsx │ │ │ │ ├── timelineDemo.md │ │ │ │ └── timelineDemo.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Tooltip │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── tooltipCustom.md │ │ │ │ ├── tooltipCustom.tsx │ │ │ │ ├── tooltipDemo.md │ │ │ │ ├── tooltipDemo.tsx │ │ │ │ ├── tooltipState.md │ │ │ │ ├── tooltipState.tsx │ │ │ │ ├── tooltipTrigger.md │ │ │ │ └── tooltipTrigger.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Transitions │ │ │ ├── api.tsx │ │ │ ├── demo │ │ │ │ ├── index.less │ │ │ │ ├── transitionsCustom.md │ │ │ │ ├── transitionsCustom.tsx │ │ │ │ ├── transitionsDemo.md │ │ │ │ ├── transitionsDemo.tsx │ │ │ │ ├── transitionsScale.md │ │ │ │ └── transitionsScale.tsx │ │ │ ├── index.md │ │ │ └── index.tsx │ │ ├── Yoshino │ │ │ ├── index.tsx │ │ │ └── intro.md │ │ ├── index.tsx │ │ ├── pageMenu.tsx │ │ └── routes.tsx │ ├── index.less │ ├── index.tsx │ └── themes │ │ ├── index.less │ │ ├── index.tsx │ │ ├── screenshot │ │ └── yoshion-theme-template.png │ │ └── themes.ts └── tsconfig.json ├── package-lock.json ├── package.json ├── postcss.config.js ├── scripts ├── allComponents.js ├── build.js ├── components.js ├── gulpLess.js ├── jest.setup.js ├── new-component.js ├── new-docs.js └── updateEntry.js ├── styleguide.config.js ├── tsconfig.json ├── tslint.json └── webpack.config.js /.gitattributes: -------------------------------------------------------------------------------- 1 | *.less linguist-language=TypeScript -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* 22 | 23 | styleguide 24 | 25 | /dist 26 | 27 | /lib 28 | /es6 -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build/ 2 | node_modules/ 3 | scripts/ 4 | styleguide/ 5 | config/ 6 | docs/ 7 | .*.swp 8 | .*.swp 9 | ._* 10 | .DS_Store 11 | .git 12 | .hg 13 | .lock-wscript 14 | .svn 15 | .wafpickle-* 16 | tsconfig.json 17 | tslint.json 18 | webpack.config.js 19 | .gitattributes 20 | .gitignore 21 | .stylelintrc 22 | LICENSE 23 | postcss.config.js 24 | styleguide.confgi.js 25 | 26 | components/**/*.tsx 27 | components/**/__test__/ 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "stylelint-config-standard" 4 | ], 5 | "rules": { 6 | "block-no-empty": null, 7 | "no-duplicate-selectors": null, 8 | "unit-blacklist": ["rem"], 9 | "unit-whitelist": ["px", "em", "deg", "%", "s", "vw", "vh"], 10 | }, 11 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | os: osx 3 | node_js: 4 | - 8.11.3 5 | 6 | cache: 7 | directories: 8 | - "node_modules" 9 | 10 | install: 11 | - npm install 12 | 13 | script: 14 | - npm run lint 15 | - npm run build -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-angular'], 3 | rules: { 4 | 'subject-case': [0], 5 | } 6 | }; -------------------------------------------------------------------------------- /components/Alert/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Alert from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as Alert; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/Alert/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import Alert from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/Alert/index.tsx: -------------------------------------------------------------------------------- 1 | import Alert from './Alert'; 2 | 3 | export default Alert; 4 | -------------------------------------------------------------------------------- /components/Alert/style/index.js: -------------------------------------------------------------------------------- 1 | import '../../Icon/style/'; 2 | import './index.css'; -------------------------------------------------------------------------------- /components/Alert/style/less.js: -------------------------------------------------------------------------------- 1 | import '../../Icon/style/less.js'; 2 | import './index.less'; -------------------------------------------------------------------------------- /components/Alert/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | -------------------------------------------------------------------------------- /components/AutoComplete/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import AutoComplete from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as AutoComplete; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/AutoComplete/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import AutoComplete from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/AutoComplete/index.tsx: -------------------------------------------------------------------------------- 1 | import AutoComplete from './AutoComplete'; 2 | 3 | export default AutoComplete; 4 | -------------------------------------------------------------------------------- /components/AutoComplete/style/index.js: -------------------------------------------------------------------------------- 1 | import '../../Input/style/'; 2 | import '../../Pop/style/'; 3 | import './index.css'; -------------------------------------------------------------------------------- /components/AutoComplete/style/less.js: -------------------------------------------------------------------------------- 1 | import '../../Input/style/less.js'; 2 | import '../../Pop/style/less.js'; 3 | import '../../Transitions/style/less.js'; 4 | import './index.less'; 5 | -------------------------------------------------------------------------------- /components/AutoComplete/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | -------------------------------------------------------------------------------- /components/Avatar/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Avatar from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as Avatar; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/Avatar/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import Avatar from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/Avatar/index.tsx: -------------------------------------------------------------------------------- 1 | import Avatar from './Avatar'; 2 | 3 | export default Avatar; 4 | -------------------------------------------------------------------------------- /components/Avatar/style/index.js: -------------------------------------------------------------------------------- 1 | import './index.css'; 2 | -------------------------------------------------------------------------------- /components/Avatar/style/less.js: -------------------------------------------------------------------------------- 1 | import './index.less'; 2 | -------------------------------------------------------------------------------- /components/Avatar/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | 4 | // avatar 5 | @avatar-size-small: 24px; 6 | @avatar-size-default: 32px; 7 | @avatar-size-large: 40px; 8 | @avatar-bgColor-default: #ccc; 9 | @avatar-fontSize-small: 14px; 10 | @avatar-fontSize-default: 18px; 11 | @avatar-fontSize-large: 24px; 12 | @avatar-square-radius: 5px; 13 | -------------------------------------------------------------------------------- /components/BackTop/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Backtop from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as Backtop; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/BackTop/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import Backtop from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/BackTop/assist.tsx: -------------------------------------------------------------------------------- 1 | export const backTop = (durations: number, callback?: () => void | undefined) => { 2 | let dom: HTMLElement; 3 | if (document.documentElement.scrollTop) { 4 | dom = document.documentElement; 5 | } else { 6 | dom = document.body; 7 | } 8 | const scrollTop = dom.scrollTop; 9 | // tslint:disable 10 | for (let i = 60; i >= 0; i--) { 11 | setTimeout(((i) => { 12 | return () => { 13 | dom.scrollTop = scrollTop * i / 60; 14 | if (i === 0 && typeof callback === 'function') { 15 | callback(); 16 | } 17 | }; 18 | })(i), durations * (1 - i / 60)); 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /components/BackTop/index.tsx: -------------------------------------------------------------------------------- 1 | import Backtop from './Backtop'; 2 | 3 | export default Backtop; 4 | -------------------------------------------------------------------------------- /components/BackTop/style/index.js: -------------------------------------------------------------------------------- 1 | import '../../Icon/style/'; 2 | import './index.css'; -------------------------------------------------------------------------------- /components/BackTop/style/index.less: -------------------------------------------------------------------------------- 1 | @import './var.less'; 2 | 3 | @backtop-prefix-cls: ~"@{css-prefix}-backtop"; 4 | 5 | .@{backtop-prefix-cls} { 6 | position: fixed; 7 | cursor: pointer; 8 | display: block; 9 | border-radius: 4px; 10 | 11 | &-default { 12 | background-color: @primary-color; 13 | border-radius: @border-radius-base; 14 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); 15 | transition: all 0.2s ease-in-out; 16 | display: block; 17 | 18 | :hover { 19 | background-color: @primary-color-hover; 20 | } 21 | } 22 | 23 | i { 24 | color: #fff; 25 | font-size: 24px; 26 | padding: 8px 12px; 27 | display: inline-block; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /components/BackTop/style/less.js: -------------------------------------------------------------------------------- 1 | import '../../Icon/style/less.js'; 2 | import './index.less'; -------------------------------------------------------------------------------- /components/BackTop/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | 4 | -------------------------------------------------------------------------------- /components/Badge/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Badge from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as Badge; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/Badge/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import Badge from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/Badge/index.tsx: -------------------------------------------------------------------------------- 1 | import Badge from './Badge'; 2 | 3 | export default Badge; 4 | -------------------------------------------------------------------------------- /components/Badge/style/index.js: -------------------------------------------------------------------------------- 1 | import './index.css'; 2 | -------------------------------------------------------------------------------- /components/Badge/style/index.less: -------------------------------------------------------------------------------- 1 | @import './var.less'; 2 | 3 | @badge-prefix-cls: ~"@{css-prefix}-badge"; 4 | 5 | .@{badge-prefix-cls} { 6 | display: inline-block; 7 | position: relative; 8 | 9 | span { 10 | display: inline-block; 11 | background-color: @badge-bgColor; 12 | border-radius: @badge-dot-size; 13 | border: 1px solid white; 14 | font-size: @font-size-small; 15 | color: white; 16 | } 17 | 18 | &-position { 19 | position: absolute; 20 | right: 0; 21 | top: 0; 22 | transform: translateX(50%) translateY(-40%); 23 | } 24 | 25 | &-dot { 26 | width: @badge-dot-size; 27 | height: @badge-dot-size; 28 | } 29 | 30 | &-count { 31 | padding: 0 6px; 32 | height: 20px; 33 | line-height: 20px; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /components/Badge/style/less.js: -------------------------------------------------------------------------------- 1 | import './index.less'; 2 | -------------------------------------------------------------------------------- /components/Badge/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | 4 | // badge 5 | @badge-dot-size: 8px; 6 | @badge-bgColor: #f44336; 7 | -------------------------------------------------------------------------------- /components/Breadcrumb/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Breadcrumb from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 | , 10 | ) as Breadcrumb; 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /components/Breadcrumb/__tests__/props.test.tsx: -------------------------------------------------------------------------------- 1 | import * as renderer from 'react-test-renderer'; 2 | import * as React from 'react'; 3 | import Breadcrumb from '../index'; 4 | 5 | describe('Props', () => { 6 | 7 | test('默认', () => { 8 | const component = renderer.create( 9 | , 10 | ); 11 | const tree = component.toJSON(); 12 | expect(tree).toMatchSnapshot(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /components/Breadcrumb/index.tsx: -------------------------------------------------------------------------------- 1 | import Breadcrumb from './Breadcrumb'; 2 | import BreadcrumbItem from './BreadcrumbItem'; 3 | 4 | Breadcrumb.Item = BreadcrumbItem; 5 | export default Breadcrumb; 6 | -------------------------------------------------------------------------------- /components/Breadcrumb/style/index.js: -------------------------------------------------------------------------------- 1 | import './index.css'; 2 | -------------------------------------------------------------------------------- /components/Breadcrumb/style/index.less: -------------------------------------------------------------------------------- 1 | @import './var.less'; 2 | 3 | @breadcrumb-prefix-cls: ~"@{css-prefix}-breadcrumb"; 4 | 5 | .@{breadcrumb-prefix-cls} { 6 | &-separator { 7 | margin: 0 8px; 8 | } 9 | 10 | span:last-child { 11 | span:last-child { 12 | display: none; 13 | } 14 | } 15 | } 16 | 17 | .@{breadcrumb-prefix-cls}-item { 18 | } 19 | -------------------------------------------------------------------------------- /components/Breadcrumb/style/less.js: -------------------------------------------------------------------------------- 1 | import './index.less'; 2 | -------------------------------------------------------------------------------- /components/Breadcrumb/style/var.less: -------------------------------------------------------------------------------- 1 | @import '../../styles/var.less'; 2 | @import '../../styles/common/reset.less'; 3 | -------------------------------------------------------------------------------- /components/Button/__tests__/e2e.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {Simulate, renderIntoDocument, scryRenderedComponentsWithType} from 'react-dom/test-utils'; 3 | import {findDOMNode} from 'react-dom'; 4 | import Button from '../index'; 5 | 6 | describe('多选', () => { 7 | test('点击其中一个选项后可通过 onChange 拿到最新的值', () => { 8 | const component = renderIntoDocument( 9 |