From 7c1a14bb5ee4605c449aca9b089a21ea84c38e66 Mon Sep 17 00:00:00 2001
From: tanjinzhou <415800467@qq.com>
Date: Fri, 12 Mar 2021 15:48:30 +0800
Subject: [PATCH] chore: opensource v1-doc
---
.github/workflows/codecov.yml | 8 -
.gitmodules | 3 -
antdv-demo/.babelrc | 14 +
antdv-demo/.editorconfig | 11 +
antdv-demo/.eslintignore | 8 +
antdv-demo/.eslintrc | 53 ++
antdv-demo/.gitignore | 109 ++++
antdv-demo/.huskyrc | 7 +
antdv-demo/.prettierignore | 29 +
antdv-demo/.prettierrc | 14 +
antdv-demo/.stylelintrc | 23 +
antdv-demo/.umirc.mock.js | 3 +
antdv-demo/build.sh | 5 +
antdv-demo/build/config.js | 5 +
antdv-demo/build/dev.js | 213 ++++++++
antdv-demo/build/getBabelCommonConfig.js | 45 ++
antdv-demo/build/lessLoaderConfig.js | 166 ++++++
antdv-demo/build/webpack.base.conf.js | 226 ++++++++
antdv-demo/build/webpack.dev.conf.js | 59 ++
antdv-demo/build/webpack.site.conf.js | 64 +++
antdv-demo/components/CarbonAds.vue | 124 +++++
antdv-demo/components/GoogleAds.vue | 36 ++
antdv-demo/components/GoogleAds1.vue | 35 ++
antdv-demo/components/GoogleAds2.vue | 35 ++
antdv-demo/components/GoogleAdsMin.vue | 34 ++
antdv-demo/components/GoogleAdsTop.vue | 35 ++
antdv-demo/components/api.vue | 28 +
antdv-demo/components/demoBox.vue | 230 ++++++++
antdv-demo/components/demoContainer.vue | 82 +++
antdv-demo/components/demoSort.jsx | 49 ++
antdv-demo/components/footer.vue | 136 +++++
antdv-demo/components/geektime.vue | 41 ++
antdv-demo/components/geektime_ads.vue | 60 ++
antdv-demo/components/header.vue | 322 +++++++++++
antdv-demo/components/iframe.vue | 30 +
antdv-demo/components/layout.vue | 374 +++++++++++++
antdv-demo/components/md.vue | 51 ++
antdv-demo/components/right_bottom_ad.vue | 57 ++
antdv-demo/components/sponsors.vue | 66 +++
antdv-demo/components/top_ad.vue | 56 ++
antdv-demo/docs/affix/demo/basic.md | 38 ++
antdv-demo/docs/affix/demo/index.vue | 44 ++
antdv-demo/docs/affix/demo/on-change.md | 26 +
antdv-demo/docs/affix/demo/target.md | 34 ++
antdv-demo/docs/affix/index.en-US.md | 29 +
antdv-demo/docs/affix/index.zh-CN.md | 29 +
antdv-demo/docs/alert/demo/banner.md | 27 +
antdv-demo/docs/alert/demo/basic.md | 15 +
antdv-demo/docs/alert/demo/closable.md | 38 ++
antdv-demo/docs/alert/demo/close-text.md | 15 +
antdv-demo/docs/alert/demo/custom-icon.md | 63 +++
antdv-demo/docs/alert/demo/description.md | 36 ++
antdv-demo/docs/alert/demo/icon.md | 44 ++
antdv-demo/docs/alert/demo/index.vue | 61 +++
antdv-demo/docs/alert/demo/smooth-closed.md | 37 ++
antdv-demo/docs/alert/demo/style.md | 20 +
antdv-demo/docs/alert/index.en-US.md | 19 +
antdv-demo/docs/alert/index.zh-CN.md | 19 +
antdv-demo/docs/anchor/demo/basic.md | 27 +
.../docs/anchor/demo/customizeHighlight.md | 31 ++
antdv-demo/docs/anchor/demo/index.vue | 61 +++
antdv-demo/docs/anchor/demo/onChange.md | 31 ++
antdv-demo/docs/anchor/demo/onClick.md | 32 ++
antdv-demo/docs/anchor/demo/static.md | 22 +
antdv-demo/docs/anchor/demo/targetOffset.md | 34 ++
antdv-demo/docs/anchor/index.en-US.md | 31 ++
antdv-demo/docs/anchor/index.zh-CN.md | 31 ++
antdv-demo/docs/auto-complete/demo/basic.md | 49 ++
.../auto-complete/demo/certain-category.md | 149 +++++
antdv-demo/docs/auto-complete/demo/custom.md | 47 ++
antdv-demo/docs/auto-complete/demo/index.vue | 51 ++
.../auto-complete/demo/non-case-sensitive.md | 36 ++
antdv-demo/docs/auto-complete/demo/options.md | 41 ++
.../auto-complete/demo/uncertain-category.md | 120 ++++
antdv-demo/docs/auto-complete/index.en-US.md | 41 ++
antdv-demo/docs/auto-complete/index.zh-CN.md | 41 ++
antdv-demo/docs/avatar/demo/badge.md | 22 +
antdv-demo/docs/avatar/demo/basic.md | 29 +
antdv-demo/docs/avatar/demo/dynamic.md | 49 ++
antdv-demo/docs/avatar/demo/index.vue | 47 ++
antdv-demo/docs/avatar/demo/type.md | 27 +
antdv-demo/docs/avatar/index.en-US.md | 11 +
antdv-demo/docs/avatar/index.zh-CN.md | 11 +
antdv-demo/docs/back-top/demo/basic.md | 20 +
antdv-demo/docs/back-top/demo/custom.md | 39 ++
antdv-demo/docs/back-top/demo/index.vue | 43 ++
antdv-demo/docs/back-top/index.en-US.md | 16 +
antdv-demo/docs/back-top/index.zh-CN.md | 16 +
antdv-demo/docs/badge/demo/basic.md | 26 +
antdv-demo/docs/badge/demo/change.md | 57 ++
antdv-demo/docs/badge/demo/colors.md | 60 ++
antdv-demo/docs/badge/demo/dot.md | 34 ++
antdv-demo/docs/badge/demo/index.vue | 74 +++
antdv-demo/docs/badge/demo/link.md | 19 +
antdv-demo/docs/badge/demo/no-wrapper.md | 27 +
antdv-demo/docs/badge/demo/overflow.md | 28 +
antdv-demo/docs/badge/demo/status.md | 31 ++
antdv-demo/docs/badge/demo/title.md | 31 ++
antdv-demo/docs/badge/index.en_US.md | 24 +
antdv-demo/docs/badge/index.zh-CN.md | 24 +
antdv-demo/docs/breadcrumb/demo/basic.md | 20 +
antdv-demo/docs/breadcrumb/demo/index.vue | 58 ++
antdv-demo/docs/breadcrumb/demo/overlay.md | 39 ++
antdv-demo/docs/breadcrumb/demo/router.md | 66 +++
.../breadcrumb/demo/separator-indepent.md | 27 +
antdv-demo/docs/breadcrumb/demo/separator.md | 38 ++
antdv-demo/docs/breadcrumb/demo/withIcon.md | 26 +
antdv-demo/docs/breadcrumb/index.en-US.md | 76 +++
antdv-demo/docs/breadcrumb/index.zh-CN.md | 97 ++++
antdv-demo/docs/button/demo/basic.md | 37 ++
antdv-demo/docs/button/demo/block.md | 31 ++
antdv-demo/docs/button/demo/button-group.md | 70 +++
antdv-demo/docs/button/demo/disabled.md | 49 ++
antdv-demo/docs/button/demo/ghost.md | 31 ++
antdv-demo/docs/button/demo/icon.md | 37 ++
antdv-demo/docs/button/demo/index.vue | 74 +++
antdv-demo/docs/button/demo/loading.md | 51 ++
antdv-demo/docs/button/demo/multiple.md | 43 ++
antdv-demo/docs/button/demo/size.md | 76 +++
antdv-demo/docs/button/index.en-US.md | 29 +
antdv-demo/docs/button/index.zh-CN.md | 31 ++
antdv-demo/docs/calendar/demo/basic.md | 24 +
antdv-demo/docs/calendar/demo/card.md | 26 +
.../docs/calendar/demo/customize-header.vue | 98 ++++
antdv-demo/docs/calendar/demo/index.vue | 59 ++
.../docs/calendar/demo/notice-calendar.md | 90 +++
antdv-demo/docs/calendar/demo/select.md | 61 +++
antdv-demo/docs/calendar/index.en-US.md | 40 ++
antdv-demo/docs/calendar/index.zh-CN.md | 37 ++
antdv-demo/docs/card/demo/basic.md | 31 ++
antdv-demo/docs/card/demo/border-less.md | 21 +
antdv-demo/docs/card/demo/flexible-content.md | 26 +
antdv-demo/docs/card/demo/grid-card.md | 40 ++
antdv-demo/docs/card/demo/in-column.md | 33 ++
antdv-demo/docs/card/demo/index.vue | 61 +++
antdv-demo/docs/card/demo/inner.md | 27 +
antdv-demo/docs/card/demo/loading.md | 36 ++
antdv-demo/docs/card/demo/meta.md | 32 ++
antdv-demo/docs/card/demo/simple.md | 19 +
antdv-demo/docs/card/demo/tabs.md | 91 ++++
antdv-demo/docs/card/index.en-US.md | 37 ++
antdv-demo/docs/card/index.zh-CN.md | 37 ++
antdv-demo/docs/carousel/demo/autoplay.md | 37 ++
antdv-demo/docs/carousel/demo/basic.md | 43 ++
antdv-demo/docs/carousel/demo/customArrows.md | 63 +++
antdv-demo/docs/carousel/demo/customPaging.md | 65 +++
antdv-demo/docs/carousel/demo/fade.md | 37 ++
antdv-demo/docs/carousel/demo/index.vue | 58 ++
antdv-demo/docs/carousel/demo/position.md | 59 ++
antdv-demo/docs/carousel/index.en-US.md | 18 +
antdv-demo/docs/carousel/index.zh-CN.md | 22 +
antdv-demo/docs/cascader/demo/basic.md | 62 +++
.../docs/cascader/demo/change-on-select.md | 62 +++
.../docs/cascader/demo/custom-render.md | 84 +++
.../docs/cascader/demo/custom-trigger.md | 68 +++
.../docs/cascader/demo/default-value.md | 66 +++
.../docs/cascader/demo/disabled-option.md | 63 +++
antdv-demo/docs/cascader/demo/fields-name.md | 68 +++
antdv-demo/docs/cascader/demo/hover.md | 71 +++
antdv-demo/docs/cascader/demo/index.vue | 71 +++
antdv-demo/docs/cascader/demo/lazy.md | 68 +++
antdv-demo/docs/cascader/demo/search.md | 77 +++
antdv-demo/docs/cascader/demo/size.md | 66 +++
antdv-demo/docs/cascader/demo/suffix.md | 78 +++
antdv-demo/docs/cascader/index.en-US.md | 54 ++
antdv-demo/docs/cascader/index.zh-CN.md | 56 ++
antdv-demo/docs/checkbox/demo/basic.md | 26 +
antdv-demo/docs/checkbox/demo/check-all.md | 50 ++
antdv-demo/docs/checkbox/demo/controller.md | 56 ++
antdv-demo/docs/checkbox/demo/disabled.md | 19 +
antdv-demo/docs/checkbox/demo/group.md | 64 +++
antdv-demo/docs/checkbox/demo/index.vue | 54 ++
antdv-demo/docs/checkbox/demo/layout.md | 52 ++
antdv-demo/docs/checkbox/index.en-US.md | 44 ++
antdv-demo/docs/checkbox/index.zh-CN.md | 44 ++
antdv-demo/docs/collapse/demo/accordion.md | 36 ++
antdv-demo/docs/collapse/demo/basic.md | 42 ++
antdv-demo/docs/collapse/demo/borderless.md | 36 ++
antdv-demo/docs/collapse/demo/custom.md | 41 ++
antdv-demo/docs/collapse/demo/extra.md | 62 +++
antdv-demo/docs/collapse/demo/index.vue | 62 +++
antdv-demo/docs/collapse/demo/mix.md | 45 ++
antdv-demo/docs/collapse/demo/noarrow.md | 42 ++
antdv-demo/docs/collapse/index.en-US.md | 30 +
antdv-demo/docs/collapse/index.zh-CN.md | 30 +
antdv-demo/docs/color-picker/demo/alpha.md | 24 +
antdv-demo/docs/color-picker/demo/basic.md | 34 ++
antdv-demo/docs/color-picker/demo/colors.md | 44 ++
antdv-demo/docs/color-picker/demo/hue.md | 24 +
antdv-demo/docs/color-picker/demo/index.vue | 51 ++
antdv-demo/docs/color-picker/demo/size.md | 36 ++
antdv-demo/docs/color-picker/index.en-US.md | 27 +
antdv-demo/docs/color-picker/index.zh-CN.md | 27 +
antdv-demo/docs/comment/demo/basic.md | 78 +++
antdv-demo/docs/comment/demo/editor.md | 87 +++
antdv-demo/docs/comment/demo/index.vue | 50 ++
antdv-demo/docs/comment/demo/list.md | 62 +++
antdv-demo/docs/comment/demo/nested.md | 66 +++
antdv-demo/docs/comment/index.en-US.md | 9 +
antdv-demo/docs/comment/index.zh-CN.md | 9 +
.../docs/config-provider/demo/index.vue | 36 ++
.../docs/config-provider/demo/locale.md | 156 ++++++
.../docs/config-provider/index.en-US.md | 71 +++
.../docs/config-provider/index.zh-CN.md | 70 +++
antdv-demo/docs/date-picker/demo/basic.md | 32 ++
.../docs/date-picker/demo/date-render.md | 51 ++
.../docs/date-picker/demo/disabled-date.md | 77 +++
antdv-demo/docs/date-picker/demo/disabled.md | 36 ++
.../docs/date-picker/demo/extra-footer.md | 41 ++
antdv-demo/docs/date-picker/demo/format.md | 44 ++
antdv-demo/docs/date-picker/demo/index.vue | 68 +++
antdv-demo/docs/date-picker/demo/mode.md | 59 ++
.../docs/date-picker/demo/presetted-ranges.md | 45 ++
antdv-demo/docs/date-picker/demo/size.md | 45 ++
antdv-demo/docs/date-picker/demo/start-end.md | 80 +++
antdv-demo/docs/date-picker/demo/suffix.md | 48 ++
antdv-demo/docs/date-picker/demo/text.md | 48 ++
antdv-demo/docs/date-picker/demo/time.md | 38 ++
antdv-demo/docs/date-picker/index.en-US.md | 165 ++++++
antdv-demo/docs/date-picker/index.zh-CN.md | 165 ++++++
.../docs/date-picker/locale/example.json | 39 ++
antdv-demo/docs/descriptions/demo/basic.md | 31 ++
antdv-demo/docs/descriptions/demo/border.md | 55 ++
antdv-demo/docs/descriptions/demo/index.vue | 53 ++
.../docs/descriptions/demo/responsive.md | 53 ++
antdv-demo/docs/descriptions/demo/size.md | 99 ++++
.../docs/descriptions/demo/vertical-border.md | 56 ++
antdv-demo/docs/descriptions/demo/vertical.md | 31 ++
antdv-demo/docs/descriptions/index.en-US.md | 21 +
antdv-demo/docs/descriptions/index.zh-CN.md | 21 +
.../docs/divider/demo/customize-style.md | 20 +
antdv-demo/docs/divider/demo/horizontal.md | 35 ++
antdv-demo/docs/divider/demo/index.vue | 46 ++
antdv-demo/docs/divider/demo/vertical.md | 21 +
antdv-demo/docs/divider/demo/with-text.md | 39 ++
antdv-demo/docs/divider/index.en-US.md | 9 +
antdv-demo/docs/divider/index.zh-CN.md | 7 +
antdv-demo/docs/drawer/demo/basic-right.md | 51 ++
.../docs/drawer/demo/descriptionItem.vue | 19 +
antdv-demo/docs/drawer/demo/form-in-drawer.md | 190 +++++++
antdv-demo/docs/drawer/demo/index.vue | 66 +++
.../docs/drawer/demo/multi-level-drawer.md | 85 +++
antdv-demo/docs/drawer/demo/placement.md | 65 +++
.../docs/drawer/demo/render-in-current.md | 64 +++
antdv-demo/docs/drawer/demo/user-profile.md | 161 ++++++
antdv-demo/docs/drawer/index.en-US.md | 30 +
antdv-demo/docs/drawer/index.zh-CN.md | 30 +
antdv-demo/docs/dropdown/demo/basic.md | 30 +
antdv-demo/docs/dropdown/demo/context-menu.md | 38 ++
.../docs/dropdown/demo/dropdown-button.md | 62 +++
antdv-demo/docs/dropdown/demo/event.md | 40 ++
antdv-demo/docs/dropdown/demo/index.vue | 55 ++
antdv-demo/docs/dropdown/demo/item.md | 31 ++
.../docs/dropdown/demo/overlay-visible.md | 47 ++
antdv-demo/docs/dropdown/demo/placement.md | 55 ++
antdv-demo/docs/dropdown/demo/sub-menu.md | 31 ++
antdv-demo/docs/dropdown/demo/trigger.md | 31 ++
antdv-demo/docs/dropdown/index.en-US.md | 46 ++
antdv-demo/docs/dropdown/index.zh-CN.md | 46 ++
antdv-demo/docs/empty/demo/basic.md | 15 +
antdv-demo/docs/empty/demo/config-provider.md | 78 +++
antdv-demo/docs/empty/demo/customize.md | 25 +
antdv-demo/docs/empty/demo/description.md | 15 +
antdv-demo/docs/empty/demo/index.vue | 58 ++
antdv-demo/docs/empty/demo/simple.md | 23 +
antdv-demo/docs/empty/index.en-US.md | 23 +
antdv-demo/docs/empty/index.zh-CN.md | 23 +
antdv-demo/docs/form-model/demo/basic.md | 100 ++++
.../docs/form-model/demo/custom-validation.md | 110 ++++
.../docs/form-model/demo/dynamic-form-item.md | 130 +++++
.../docs/form-model/demo/horizontal-login.md | 52 ++
antdv-demo/docs/form-model/demo/index.vue | 105 ++++
antdv-demo/docs/form-model/demo/layout.md | 72 +++
antdv-demo/docs/form-model/demo/validation.md | 143 +++++
antdv-demo/docs/form-model/index.en-US.md | 89 +++
antdv-demo/docs/form-model/index.zh-CN.md | 89 +++
antdv-demo/docs/form/demo/advanced-search.vue | 123 +++++
antdv-demo/docs/form/demo/coordinated.vue | 68 +++
.../form/demo/customized-form-controls.vue | 115 ++++
.../docs/form/demo/dynamic-form-item.vue | 145 +++++
antdv-demo/docs/form/demo/dynamic-rule.vue | 86 +++
antdv-demo/docs/form/demo/form-in-modal.vue | 101 ++++
antdv-demo/docs/form/demo/global-state.vue | 103 ++++
.../docs/form/demo/horizontal-login.vue | 82 +++
antdv-demo/docs/form/demo/index.vue | 177 ++++++
antdv-demo/docs/form/demo/layout.vue | 84 +++
antdv-demo/docs/form/demo/normal-login.vue | 94 ++++
antdv-demo/docs/form/demo/register.vue | 282 ++++++++++
.../docs/form/demo/time-related-controls.vue | 104 ++++
antdv-demo/docs/form/demo/validate-other.vue | 236 ++++++++
antdv-demo/docs/form/demo/validate-static.vue | 124 +++++
antdv-demo/docs/form/demo/vuex.vue | 86 +++
.../docs/form/demo/without-form-create.vue | 58 ++
antdv-demo/docs/form/index.en-US.md | 208 +++++++
antdv-demo/docs/form/index.zh-CN.md | 213 ++++++++
antdv-demo/docs/grid/demo/basic.md | 51 ++
antdv-demo/docs/grid/demo/flex-align.md | 87 +++
antdv-demo/docs/grid/demo/flex-fill.md | 37 ++
antdv-demo/docs/grid/demo/flex-order.md | 31 ++
antdv-demo/docs/grid/demo/flex.md | 96 ++++
antdv-demo/docs/grid/demo/gutter.md | 54 ++
antdv-demo/docs/grid/demo/index.vue | 120 ++++
antdv-demo/docs/grid/demo/offset.md | 38 ++
antdv-demo/docs/grid/demo/playfround.md | 125 +++++
antdv-demo/docs/grid/demo/responsive-more.md | 27 +
antdv-demo/docs/grid/demo/responsive.md | 25 +
antdv-demo/docs/grid/demo/sort.md | 25 +
antdv-demo/docs/grid/index.en-US.md | 35 ++
antdv-demo/docs/grid/index.zh-CN.md | 35 ++
antdv-demo/docs/icon/demo/basic.md | 28 +
antdv-demo/docs/icon/demo/custom.md | 75 +++
antdv-demo/docs/icon/demo/iconfont.md | 37 ++
antdv-demo/docs/icon/demo/index.vue | 45 ++
antdv-demo/docs/icon/demo/old-icons.md | 316 +++++++++++
antdv-demo/docs/icon/demo/two-tone.md | 25 +
antdv-demo/docs/icon/index.en-US.md | 124 +++++
antdv-demo/docs/icon/index.zh-CN.md | 120 ++++
antdv-demo/docs/input-number/demo/basic.md | 32 ++
antdv-demo/docs/input-number/demo/digit.md | 24 +
antdv-demo/docs/input-number/demo/disabled.md | 36 ++
.../docs/input-number/demo/formatter.md | 39 ++
antdv-demo/docs/input-number/demo/index.vue | 49 ++
antdv-demo/docs/input-number/demo/size.md | 33 ++
antdv-demo/docs/input-number/index.en-US.md | 30 +
antdv-demo/docs/input-number/index.zh-CN.md | 32 ++
antdv-demo/docs/input/demo/addon.md | 50 ++
antdv-demo/docs/input/demo/allowClear.md | 29 +
.../docs/input/demo/autosize-textarea.md | 39 ++
antdv-demo/docs/input/demo/basic.md | 15 +
antdv-demo/docs/input/demo/group.md | 180 ++++++
antdv-demo/docs/input/demo/index.vue | 63 +++
antdv-demo/docs/input/demo/password-input.md | 15 +
antdv-demo/docs/input/demo/presuffix.md | 41 ++
.../docs/input/demo/search-input-loading.md | 20 +
antdv-demo/docs/input/demo/search-input.md | 42 ++
antdv-demo/docs/input/demo/size.md | 25 +
antdv-demo/docs/input/demo/textarea-resize.md | 29 +
antdv-demo/docs/input/demo/textarea.md | 15 +
antdv-demo/docs/input/demo/tooltip.md | 85 +++
antdv-demo/docs/input/index.en-US.md | 79 +++
antdv-demo/docs/input/index.zh-CN.md | 79 +++
antdv-demo/docs/layout/demo/basic.md | 79 +++
antdv-demo/docs/layout/demo/custom-trigger.md | 75 +++
antdv-demo/docs/layout/demo/fixed-sider.md | 83 +++
antdv-demo/docs/layout/demo/fixed.md | 57 ++
antdv-demo/docs/layout/demo/index.vue | 175 ++++++
antdv-demo/docs/layout/demo/responsive.md | 75 +++
antdv-demo/docs/layout/demo/side.md | 89 +++
antdv-demo/docs/layout/demo/top-side-2.md | 122 +++++
antdv-demo/docs/layout/demo/top-side.md | 114 ++++
antdv-demo/docs/layout/demo/top.md | 61 +++
antdv-demo/docs/layout/index.en-US.md | 64 +++
antdv-demo/docs/layout/index.zh-CN.md | 64 +++
antdv-demo/docs/list/demo/basic.md | 51 ++
antdv-demo/docs/list/demo/grid.md | 45 ++
antdv-demo/docs/list/demo/index.vue | 59 ++
antdv-demo/docs/list/demo/infinite-load.md | 98 ++++
.../list/demo/infinite-virtualized-load.md | 100 ++++
antdv-demo/docs/list/demo/loadmore.md | 95 ++++
antdv-demo/docs/list/demo/resposive.md | 52 ++
antdv-demo/docs/list/demo/simple.md | 80 +++
antdv-demo/docs/list/demo/vertical.md | 70 +++
antdv-demo/docs/list/index.en-US.md | 58 ++
antdv-demo/docs/list/index.zh-CN.md | 58 ++
antdv-demo/docs/locale-provider/demo/all.md | 158 ++++++
antdv-demo/docs/locale-provider/demo/basic.md | 28 +
.../docs/locale-provider/demo/index.vue | 42 ++
.../docs/locale-provider/index.en-US.md | 54 ++
.../docs/locale-provider/index.zh-CN.md | 54 ++
antdv-demo/docs/mentions/demo/async.md | 65 +++
antdv-demo/docs/mentions/demo/basic.md | 42 ++
antdv-demo/docs/mentions/demo/form.md | 103 ++++
antdv-demo/docs/mentions/demo/index.vue | 50 ++
antdv-demo/docs/mentions/demo/placement.md | 25 +
antdv-demo/docs/mentions/demo/prefix.md | 44 ++
antdv-demo/docs/mentions/demo/readonly.md | 37 ++
antdv-demo/docs/mentions/index.en-US.md | 39 ++
antdv-demo/docs/mentions/index.zh-CN.md | 39 ++
antdv-demo/docs/menu/demo/horizontal.md | 55 ++
antdv-demo/docs/menu/demo/index.vue | 57 ++
antdv-demo/docs/menu/demo/inline-collapsed.md | 86 +++
antdv-demo/docs/menu/demo/inline.md | 99 ++++
antdv-demo/docs/menu/demo/sider-current.md | 85 +++
antdv-demo/docs/menu/demo/switch-mode.md | 87 +++
antdv-demo/docs/menu/demo/template.md | 117 ++++
antdv-demo/docs/menu/demo/theme.md | 93 ++++
antdv-demo/docs/menu/demo/vertical.md | 67 +++
antdv-demo/docs/menu/index.en-US.md | 79 +++
antdv-demo/docs/menu/index.zh-CN.md | 77 +++
antdv-demo/docs/message/demo/duration.md | 29 +
antdv-demo/docs/message/demo/index.vue | 51 ++
antdv-demo/docs/message/demo/info.md | 26 +
antdv-demo/docs/message/demo/loading.md | 27 +
antdv-demo/docs/message/demo/other.md | 40 ++
antdv-demo/docs/message/demo/thenable.md | 29 +
antdv-demo/docs/message/demo/update.md | 30 +
antdv-demo/docs/message/index.en-US.md | 65 +++
antdv-demo/docs/message/index.zh-CN.md | 65 +++
antdv-demo/docs/modal/demo/async.md | 57 ++
antdv-demo/docs/modal/demo/basic.md | 42 ++
antdv-demo/docs/modal/demo/button-props.md | 52 ++
antdv-demo/docs/modal/demo/confirm-promise.md | 36 ++
antdv-demo/docs/modal/demo/confirm-router.md | 45 ++
antdv-demo/docs/modal/demo/confirm.md | 78 +++
antdv-demo/docs/modal/demo/footer.md | 63 +++
antdv-demo/docs/modal/demo/index.vue | 70 +++
antdv-demo/docs/modal/demo/info.md | 73 +++
antdv-demo/docs/modal/demo/locale.md | 54 ++
antdv-demo/docs/modal/demo/manual.md | 40 ++
antdv-demo/docs/modal/demo/position.md | 59 ++
antdv-demo/docs/modal/index.en-US.md | 102 ++++
antdv-demo/docs/modal/index.zh-CN.md | 103 ++++
antdv-demo/docs/notification/demo/basic.md | 33 ++
.../docs/notification/demo/custom-icon.md | 31 ++
.../docs/notification/demo/custom-style.md | 34 ++
antdv-demo/docs/notification/demo/duration.md | 33 ++
antdv-demo/docs/notification/demo/index.vue | 62 +++
.../docs/notification/demo/placement.md | 47 ++
antdv-demo/docs/notification/demo/update.md | 38 ++
antdv-demo/docs/notification/demo/with-btn.md | 53 ++
.../docs/notification/demo/with-icon.md | 41 ++
antdv-demo/docs/notification/index.en-US.md | 51 ++
antdv-demo/docs/notification/index.zh-CN.md | 59 ++
antdv-demo/docs/page-header/demo/actions.md | 87 +++
antdv-demo/docs/page-header/demo/basic.md | 20 +
.../docs/page-header/demo/breadcrumb.md | 42 ++
antdv-demo/docs/page-header/demo/ghost.md | 56 ++
antdv-demo/docs/page-header/demo/index.vue | 59 ++
.../docs/page-header/demo/responsive.md | 107 ++++
antdv-demo/docs/page-header/index.en-US.md | 19 +
antdv-demo/docs/page-header/index.zh-CN.md | 19 +
antdv-demo/docs/pagination/demo/basic.md | 24 +
antdv-demo/docs/pagination/demo/changer.md | 54 ++
antdv-demo/docs/pagination/demo/controlled.md | 29 +
.../docs/pagination/demo/custom-changer.md | 44 ++
antdv-demo/docs/pagination/demo/index.vue | 69 +++
antdv-demo/docs/pagination/demo/itemRender.md | 29 +
antdv-demo/docs/pagination/demo/jump.md | 35 ++
antdv-demo/docs/pagination/demo/mini.md | 24 +
antdv-demo/docs/pagination/demo/more.md | 15 +
antdv-demo/docs/pagination/demo/simple.md | 15 +
antdv-demo/docs/pagination/demo/total.md | 29 +
antdv-demo/docs/pagination/index.en-US.md | 31 ++
antdv-demo/docs/pagination/index.zh-CN.md | 30 +
antdv-demo/docs/popconfirm/demo/basic.md | 37 ++
.../docs/popconfirm/demo/dynamic-trigger.md | 68 +++
antdv-demo/docs/popconfirm/demo/icon.md | 18 +
antdv-demo/docs/popconfirm/demo/index.vue | 59 ++
antdv-demo/docs/popconfirm/demo/local.md | 17 +
antdv-demo/docs/popconfirm/demo/placement.md | 134 +++++
antdv-demo/docs/popconfirm/index.en-US.md | 24 +
antdv-demo/docs/popconfirm/index.zh-CN.md | 24 +
.../popover/demo/arrow-point-at-center.md | 32 ++
antdv-demo/docs/popover/demo/basic.md | 23 +
antdv-demo/docs/popover/demo/control.md | 36 ++
.../docs/popover/demo/hover-with-click.md | 61 +++
antdv-demo/docs/popover/demo/index.vue | 61 +++
antdv-demo/docs/popover/demo/placement.md | 163 ++++++
antdv-demo/docs/popover/demo/triggerType.md | 43 ++
antdv-demo/docs/popover/index.en-US.md | 12 +
antdv-demo/docs/popover/index.zh-CN.md | 12 +
.../docs/progress/demo/circle-dynamic.md | 46 ++
antdv-demo/docs/progress/demo/circle-mini.md | 26 +
antdv-demo/docs/progress/demo/circle.md | 26 +
antdv-demo/docs/progress/demo/dashboard.md | 17 +
antdv-demo/docs/progress/demo/dynamic.md | 46 ++
antdv-demo/docs/progress/demo/format.md | 30 +
.../docs/progress/demo/gradient-line.md | 47 ++
antdv-demo/docs/progress/demo/index.vue | 67 +++
antdv-demo/docs/progress/demo/line-mini.md | 20 +
antdv-demo/docs/progress/demo/line.md | 21 +
antdv-demo/docs/progress/demo/linecap.md | 19 +
antdv-demo/docs/progress/demo/segment.md | 25 +
antdv-demo/docs/progress/index.en-US.md | 38 ++
antdv-demo/docs/progress/index.zh-CN.md | 38 ++
antdv-demo/docs/radio/demo/basic.md | 15 +
antdv-demo/docs/radio/demo/disabled.md | 42 ++
antdv-demo/docs/radio/demo/index.vue | 64 +++
.../docs/radio/demo/radioButton-solid.md | 48 ++
antdv-demo/docs/radio/demo/radioButton.md | 78 +++
antdv-demo/docs/radio/demo/radioGroup-more.md | 48 ++
.../docs/radio/demo/radioGroup-options.md | 57 ++
.../docs/radio/demo/radioGroup-with-name.md | 28 +
antdv-demo/docs/radio/demo/radioGroup.md | 44 ++
antdv-demo/docs/radio/demo/size.md | 64 +++
antdv-demo/docs/radio/index.en-US.md | 40 ++
antdv-demo/docs/radio/index.zh-CN.md | 39 ++
antdv-demo/docs/rate/demo/basic.md | 24 +
antdv-demo/docs/rate/demo/character.md | 24 +
antdv-demo/docs/rate/demo/clear.md | 21 +
antdv-demo/docs/rate/demo/disabled.md | 15 +
antdv-demo/docs/rate/demo/half.md | 15 +
antdv-demo/docs/rate/demo/index.vue | 60 ++
antdv-demo/docs/rate/demo/text.md | 28 +
antdv-demo/docs/rate/index.en-US.md | 30 +
antdv-demo/docs/rate/index.zh-CN.md | 30 +
antdv-demo/docs/result/demo/403.md | 28 +
antdv-demo/docs/result/demo/404.md | 28 +
antdv-demo/docs/result/demo/500.md | 28 +
antdv-demo/docs/result/demo/customIcon.md | 31 ++
antdv-demo/docs/result/demo/error.md | 54 ++
antdv-demo/docs/result/demo/index.vue | 62 +++
antdv-demo/docs/result/demo/info.md | 28 +
antdv-demo/docs/result/demo/success.md | 35 ++
antdv-demo/docs/result/demo/warning.md | 28 +
antdv-demo/docs/result/index.en-US.md | 9 +
antdv-demo/docs/result/index.zh-CN.md | 9 +
.../select/demo/automatic-tokenization.md | 28 +
antdv-demo/docs/select/demo/basic.md | 49 ++
antdv-demo/docs/select/demo/coordinate.md | 51 ++
.../docs/select/demo/custom-dropdown-menu.md | 48 ++
antdv-demo/docs/select/demo/hide-selected.md | 45 ++
antdv-demo/docs/select/demo/index.vue | 75 +++
antdv-demo/docs/select/demo/label-in-value.md | 38 ++
antdv-demo/docs/select/demo/multiple.md | 34 ++
antdv-demo/docs/select/demo/optgroup.md | 39 ++
.../docs/select/demo/option-label-prop.md | 60 ++
antdv-demo/docs/select/demo/options.md | 52 ++
antdv-demo/docs/select/demo/search-box.md | 87 +++
antdv-demo/docs/select/demo/search.md | 54 ++
antdv-demo/docs/select/demo/select-users.md | 75 +++
antdv-demo/docs/select/demo/size.md | 77 +++
antdv-demo/docs/select/demo/suffix.md | 46 ++
antdv-demo/docs/select/demo/tags.md | 28 +
antdv-demo/docs/select/index.en-US.md | 94 ++++
antdv-demo/docs/select/index.zh-CN.md | 95 ++++
antdv-demo/docs/skeleton/demo/active.md | 15 +
antdv-demo/docs/skeleton/demo/basic.md | 15 +
antdv-demo/docs/skeleton/demo/children.md | 54 ++
antdv-demo/docs/skeleton/demo/complex.md | 15 +
antdv-demo/docs/skeleton/demo/index.vue | 64 +++
antdv-demo/docs/skeleton/demo/list.md | 79 +++
antdv-demo/docs/skeleton/index.en-US.md | 31 ++
antdv-demo/docs/skeleton/index.zh-CN.md | 31 ++
antdv-demo/docs/slider/demo/basic.md | 38 ++
antdv-demo/docs/slider/demo/event.md | 47 ++
antdv-demo/docs/slider/demo/icon-slider.md | 72 +++
antdv-demo/docs/slider/demo/index.vue | 57 ++
antdv-demo/docs/slider/demo/input-number.md | 53 ++
antdv-demo/docs/slider/demo/mark.md | 65 +++
antdv-demo/docs/slider/demo/reverse.md | 33 ++
antdv-demo/docs/slider/demo/show-tooltip.md | 15 +
antdv-demo/docs/slider/demo/tip-formatter.md | 32 ++
antdv-demo/docs/slider/demo/vertical.md | 54 ++
antdv-demo/docs/slider/index.en-US.md | 35 ++
antdv-demo/docs/slider/index.zh-CN.md | 35 ++
antdv-demo/docs/space/demo/align.md | 66 +++
antdv-demo/docs/space/demo/base.md | 27 +
antdv-demo/docs/space/demo/customize.md | 34 ++
antdv-demo/docs/space/demo/index.vue | 53 ++
antdv-demo/docs/space/demo/size.md | 40 ++
antdv-demo/docs/space/demo/vertical.md | 29 +
antdv-demo/docs/space/index.en-US.md | 7 +
antdv-demo/docs/space/index.zh-CN.md | 7 +
antdv-demo/docs/spin/demo/basic.md | 17 +
antdv-demo/docs/spin/demo/custom-indicator.md | 29 +
antdv-demo/docs/spin/demo/delayAndDebounce.md | 45 ++
antdv-demo/docs/spin/demo/index.vue | 58 ++
antdv-demo/docs/spin/demo/inside.md | 27 +
antdv-demo/docs/spin/demo/nested.md | 43 ++
antdv-demo/docs/spin/demo/size.md | 19 +
antdv-demo/docs/spin/demo/tip.md | 28 +
antdv-demo/docs/spin/index.en-US.md | 30 +
antdv-demo/docs/spin/index.zh-CN.md | 30 +
antdv-demo/docs/statistic/demo/basic.md | 18 +
antdv-demo/docs/statistic/demo/card.md | 50 ++
antdv-demo/docs/statistic/demo/countdown.md | 49 ++
antdv-demo/docs/statistic/demo/index.vue | 48 ++
antdv-demo/docs/statistic/demo/unit.md | 30 +
antdv-demo/docs/statistic/index.en-US.md | 32 ++
antdv-demo/docs/statistic/index.zh-CN.md | 32 ++
antdv-demo/docs/steps/demo/clickable.md | 42 ++
.../steps/demo/customized-progress-dot.md | 28 +
antdv-demo/docs/steps/demo/error.md | 19 +
antdv-demo/docs/steps/demo/icon.md | 28 +
antdv-demo/docs/steps/demo/index.vue | 68 +++
antdv-demo/docs/steps/demo/nav.md | 61 +++
antdv-demo/docs/steps/demo/progress-dot.md | 29 +
antdv-demo/docs/steps/demo/simple.md | 25 +
antdv-demo/docs/steps/demo/small-size.md | 19 +
antdv-demo/docs/steps/demo/step-next.md | 83 +++
antdv-demo/docs/steps/demo/vertical-small.md | 19 +
antdv-demo/docs/steps/demo/vertical.md | 19 +
antdv-demo/docs/steps/index.en-US.md | 33 ++
antdv-demo/docs/steps/index.zh-CN.md | 33 ++
antdv-demo/docs/switch/demo/basic.md | 29 +
antdv-demo/docs/switch/demo/disabled.md | 35 ++
antdv-demo/docs/switch/demo/index.vue | 57 ++
antdv-demo/docs/switch/demo/loading.md | 19 +
antdv-demo/docs/switch/demo/size.md | 19 +
antdv-demo/docs/switch/demo/text.md | 24 +
antdv-demo/docs/switch/index.en-US.md | 26 +
antdv-demo/docs/switch/index.zh-CN.md | 26 +
antdv-demo/docs/table/demo/ajax.md | 100 ++++
antdv-demo/docs/table/demo/basic.md | 98 ++++
antdv-demo/docs/table/demo/bordered.md | 79 +++
antdv-demo/docs/table/demo/colspan-rowspan.md | 142 +++++
.../docs/table/demo/custom-filter-panel.md | 194 +++++++
antdv-demo/docs/table/demo/edit-cell.md | 188 +++++++
antdv-demo/docs/table/demo/edit-row.md | 140 +++++
antdv-demo/docs/table/demo/ellipsis.md | 92 ++++
antdv-demo/docs/table/demo/expand-children.md | 127 +++++
antdv-demo/docs/table/demo/expand.md | 61 +++
.../docs/table/demo/fixed-columns-header.md | 61 +++
antdv-demo/docs/table/demo/fixed-columns.md | 66 +++
antdv-demo/docs/table/demo/fixed-header.md | 59 ++
.../docs/table/demo/grouping-columns.md | 130 +++++
antdv-demo/docs/table/demo/head.md | 127 +++++
antdv-demo/docs/table/demo/index.vue | 105 ++++
antdv-demo/docs/table/demo/nested-table.md | 99 ++++
antdv-demo/docs/table/demo/reset-filter.md | 146 +++++
.../docs/table/demo/resizable-column.vue | 142 +++++
.../table/demo/row-selection-and-operation.md | 87 +++
.../docs/table/demo/row-selection-custom.md | 105 ++++
antdv-demo/docs/table/demo/row-selection.md | 86 +++
antdv-demo/docs/table/demo/size.md | 70 +++
antdv-demo/docs/table/demo/template.md | 79 +++
antdv-demo/docs/table/index.en-US.md | 174 ++++++
antdv-demo/docs/table/index.zh-CN.md | 174 ++++++
antdv-demo/docs/tabs/demo/basic.md | 39 ++
antdv-demo/docs/tabs/demo/card-top.md | 75 +++
antdv-demo/docs/tabs/demo/card.md | 37 ++
.../docs/tabs/demo/custom-add-trigger.md | 79 +++
antdv-demo/docs/tabs/demo/custom-tab-bar.md | 48 ++
antdv-demo/docs/tabs/demo/disabled.md | 25 +
antdv-demo/docs/tabs/demo/editable-card.md | 71 +++
antdv-demo/docs/tabs/demo/extra.md | 28 +
antdv-demo/docs/tabs/demo/icon.md | 30 +
antdv-demo/docs/tabs/demo/index.vue | 79 +++
antdv-demo/docs/tabs/demo/nest.md | 78 +++
antdv-demo/docs/tabs/demo/position.md | 55 ++
antdv-demo/docs/tabs/demo/size.md | 47 ++
antdv-demo/docs/tabs/demo/slide.md | 47 ++
antdv-demo/docs/tabs/index.en-US.md | 34 ++
antdv-demo/docs/tabs/index.zh-CN.md | 34 ++
antdv-demo/docs/tag/demo/basic.md | 37 ++
antdv-demo/docs/tag/demo/checkable.md | 43 ++
antdv-demo/docs/tag/demo/colorful.md | 59 ++
antdv-demo/docs/tag/demo/control.md | 83 +++
antdv-demo/docs/tag/demo/controlled.md | 32 ++
antdv-demo/docs/tag/demo/hot-tags.md | 49 ++
antdv-demo/docs/tag/demo/index.vue | 65 +++
antdv-demo/docs/tag/index.en-US.md | 28 +
antdv-demo/docs/tag/index.zh-CN.md | 29 +
antdv-demo/docs/test/demo/index.vue | 46 ++
antdv-demo/docs/time-picker/demo/12hours.md | 28 +
antdv-demo/docs/time-picker/demo/addon.md | 47 ++
antdv-demo/docs/time-picker/demo/basic.md | 26 +
antdv-demo/docs/time-picker/demo/disabled.md | 23 +
.../docs/time-picker/demo/hide-column.md | 23 +
antdv-demo/docs/time-picker/demo/index.vue | 58 ++
.../docs/time-picker/demo/interval-options.md | 15 +
antdv-demo/docs/time-picker/demo/size.md | 27 +
antdv-demo/docs/time-picker/demo/suffix.md | 28 +
antdv-demo/docs/time-picker/demo/value.md | 43 ++
antdv-demo/docs/time-picker/index.en-US.md | 45 ++
antdv-demo/docs/time-picker/index.zh-CN.md | 45 ++
antdv-demo/docs/timeline/demo/alternate.md | 34 ++
antdv-demo/docs/timeline/demo/basic.md | 20 +
antdv-demo/docs/timeline/demo/color.md | 42 ++
antdv-demo/docs/timeline/demo/custom.md | 23 +
antdv-demo/docs/timeline/demo/index.vue | 53 ++
antdv-demo/docs/timeline/demo/pending.md | 39 ++
antdv-demo/docs/timeline/demo/right.md | 23 +
antdv-demo/docs/timeline/index.en-US.md | 31 ++
antdv-demo/docs/timeline/index.zh-CN.md | 31 ++
.../tooltip/demo/arrow-point-at-center.md | 22 +
.../docs/tooltip/demo/auto-adjust-overflow.md | 49 ++
antdv-demo/docs/tooltip/demo/basic.md | 20 +
antdv-demo/docs/tooltip/demo/index.vue | 56 ++
antdv-demo/docs/tooltip/demo/placement.md | 114 ++++
antdv-demo/docs/tooltip/index.en-US.md | 35 ++
antdv-demo/docs/tooltip/index.zh-CN.md | 35 ++
antdv-demo/docs/transfer/demo/advanced.md | 76 +++
antdv-demo/docs/transfer/demo/basic.md | 79 +++
antdv-demo/docs/transfer/demo/custom-item.md | 73 +++
antdv-demo/docs/transfer/demo/index.vue | 67 +++
antdv-demo/docs/transfer/demo/large-data.md | 58 ++
antdv-demo/docs/transfer/demo/search.md | 66 +++
.../docs/transfer/demo/table-transfer.md | 142 +++++
.../docs/transfer/demo/tree-transfer.md | 116 ++++
antdv-demo/docs/transfer/index.en-US.md | 89 +++
antdv-demo/docs/transfer/index.zh-CN.md | 89 +++
antdv-demo/docs/tree-select/demo/async.md | 69 +++
antdv-demo/docs/tree-select/demo/basic.md | 46 ++
antdv-demo/docs/tree-select/demo/checkable.md | 74 +++
antdv-demo/docs/tree-select/demo/index.vue | 54 ++
antdv-demo/docs/tree-select/demo/multiple.md | 61 +++
antdv-demo/docs/tree-select/demo/suffix.md | 46 ++
antdv-demo/docs/tree-select/demo/treeData.md | 69 +++
antdv-demo/docs/tree-select/index.en-US.md | 76 +++
antdv-demo/docs/tree-select/index.zh-CN.md | 70 +++
antdv-demo/docs/tree/demo/basic-controlled.md | 103 ++++
antdv-demo/docs/tree/demo/basic.md | 65 +++
antdv-demo/docs/tree/demo/customized-icon.md | 53 ++
antdv-demo/docs/tree/demo/directory.md | 36 ++
antdv-demo/docs/tree/demo/draggable.md | 123 +++++
antdv-demo/docs/tree/demo/dynamic.md | 47 ++
antdv-demo/docs/tree/demo/index.vue | 62 +++
antdv-demo/docs/tree/demo/line.md | 78 +++
antdv-demo/docs/tree/demo/replaceFields.md | 68 +++
antdv-demo/docs/tree/demo/search.md | 122 +++++
antdv-demo/docs/tree/demo/switcher-icon.md | 40 ++
antdv-demo/docs/tree/index.en-US.md | 78 +++
antdv-demo/docs/tree/index.zh-CN.md | 78 +++
antdv-demo/docs/upload/demo/avatar.md | 89 +++
antdv-demo/docs/upload/demo/basic copy 3.md | 46 ++
antdv-demo/docs/upload/demo/basic.md | 46 ++
.../docs/upload/demo/defaultFileList.md | 57 ++
antdv-demo/docs/upload/demo/directory.md | 17 +
antdv-demo/docs/upload/demo/drag.md | 52 ++
antdv-demo/docs/upload/demo/fileList.md | 62 +++
antdv-demo/docs/upload/demo/index.vue | 71 +++
antdv-demo/docs/upload/demo/picture-card.md | 109 ++++
antdv-demo/docs/upload/demo/picture-style.md | 72 +++
antdv-demo/docs/upload/demo/preview-file.md | 39 ++
antdv-demo/docs/upload/demo/transform-file.md | 47 ++
.../docs/upload/demo/upload-manually.md | 76 +++
antdv-demo/docs/upload/index.en-US.md | 64 +++
antdv-demo/docs/upload/index.zh-CN.md | 64 +++
antdv-demo/layouts/BaseLayout.vue | 29 +
antdv-demo/layouts/UserLayout.less | 71 +++
antdv-demo/layouts/UserLayout.vue | 29 +
antdv-demo/locale/en-US.js | 28 +
antdv-demo/locale/zh-CN.js | 33 ++
antdv-demo/mock/user.js | 52 ++
antdv-demo/package.json | 173 ++++++
antdv-demo/postcss.config.js | 3 +
antdv-demo/public/404.html | 97 ++++
antdv-demo/public/ant-design-vue.svg | 11 +
antdv-demo/public/index.html | 83 +++
antdv-demo/public/logo.png | Bin 0 -> 158274 bytes
antdv-demo/public/logo.svg | 29 +
antdv-demo/scripts/gulpfile.js | 127 +++++
antdv-demo/scripts/prettier.js | 84 +++
antdv-demo/scripts/run.js | 48 ++
antdv-demo/services/login.js | 12 +
antdv-demo/services/user.js | 13 +
antdv-demo/site/components.js | 242 +++++++++
antdv-demo/site/demo.js | 405 ++++++++++++++
antdv-demo/site/demoRoutes.js | 514 ++++++++++++++++++
antdv-demo/site/i18n.js | 17 +
antdv-demo/site/index.js | 72 +++
antdv-demo/site/index.less | 193 +++++++
antdv-demo/site/otherRoutes.js | 56 ++
antdv-demo/site/router.js | 119 ++++
antdv-demo/store/index.js | 63 +++
antdv-demo/store/user.js | 41 ++
antdv-demo/theme/en-US.js | 109 ++++
antdv-demo/theme/static/colors.less | 180 ++++++
antdv-demo/theme/static/common.less | 144 +++++
antdv-demo/theme/static/demo.less | 283 ++++++++++
antdv-demo/theme/static/docsearch.less | 23 +
antdv-demo/theme/static/footer.less | 80 +++
antdv-demo/theme/static/header.less | 307 +++++++++++
antdv-demo/theme/static/highlight.less | 153 ++++++
antdv-demo/theme/static/home.less | 408 ++++++++++++++
antdv-demo/theme/static/icons.less | 79 +++
antdv-demo/theme/static/index.less | 23 +
antdv-demo/theme/static/markdown.less | 394 ++++++++++++++
antdv-demo/theme/static/mock-browser.less | 53 ++
antdv-demo/theme/static/motion.less | 39 ++
.../theme/static/new-version-info-modal.less | 23 +
antdv-demo/theme/static/not-found.less | 35 ++
antdv-demo/theme/static/nprogress.less | 14 +
antdv-demo/theme/static/page-nav.less | 63 +++
antdv-demo/theme/static/preview-img.less | 199 +++++++
antdv-demo/theme/static/resource.less | 83 +++
antdv-demo/theme/static/responsive.less | 348 ++++++++++++
antdv-demo/theme/static/theme.less | 4 +
antdv-demo/theme/static/toc.less | 64 +++
.../theme/template/IconDisplay/Category.jsx | 47 ++
.../template/IconDisplay/CopyableIcon.vue | 38 ++
.../theme/template/IconDisplay/fields.js | 208 +++++++
.../theme/template/IconDisplay/index.jsx | 110 ++++
.../theme/template/IconDisplay/themeIcons.jsx | 44 ++
antdv-demo/theme/zh-CN.js | 106 ++++
antdv-demo/utils/request.js | 56 ++
antdv-demo/utils/util.js | 3 +
antdv-demo/views/jobs.vue | 167 ++++++
.../views/user/login/components/Login.vue | 96 ++++
.../views/user/login/components/LoginItem.jsx | 43 ++
.../user/login/components/LoginSubmit.vue | 21 +
.../views/user/login/components/LoginTab.vue | 37 ++
.../user/login/components/WrapFormItem.vue | 93 ++++
.../views/user/login/components/index.js | 12 +
.../views/user/login/components/index.less | 53 ++
.../views/user/login/components/map.jsx | 83 +++
antdv-demo/views/user/login/index.vue | 97 ++++
antdv-demo/views/user/login/locales/en-US.js | 77 +++
antdv-demo/views/user/login/locales/zh-CN.js | 74 +++
antdv-demo/views/user/login/model.js | 44 ++
antdv-demo/views/user/login/service.js | 12 +
antdv-demo/views/user/login/style.less | 36 ++
antdv-demo/views/user/login/utils/utils.js | 10 +
.../views/user/register-result/index.vue | 59 ++
.../user/register-result/locales/en-US.js | 23 +
.../user/register-result/locales/zh-CN.js | 22 +
.../views/user/register-result/style.less | 21 +
antdv-demo/views/user/register/index.vue | 248 +++++++++
.../views/user/register/locales/en-US.js | 78 +++
.../views/user/register/locales/zh-CN.js | 74 +++
antdv-demo/views/user/register/model.js | 24 +
antdv-demo/views/user/register/service.js | 8 +
antdv-demo/views/user/register/style.less | 52 ++
antdv-demo/views/vip.vue | 6 +
antdv-demo/vueDocs/customize-theme.en-US.md | 157 ++++++
antdv-demo/vueDocs/customize-theme.zh-CN.md | 135 +++++
antdv-demo/vueDocs/download.en-US.md | 89 +++
antdv-demo/vueDocs/download.zh-CN.md | 77 +++
antdv-demo/vueDocs/faq.en-US.md | 57 ++
antdv-demo/vueDocs/faq.zh-CN.md | 55 ++
antdv-demo/vueDocs/getting-started.en-US.md | 139 +++++
antdv-demo/vueDocs/getting-started.zh-CN.md | 141 +++++
antdv-demo/vueDocs/i18n.en-US.md | 70 +++
antdv-demo/vueDocs/i18n.zh-CN.md | 70 +++
antdv-demo/vueDocs/introduce.en-US.md | 145 +++++
antdv-demo/vueDocs/introduce.zh-CN.md | 147 +++++
antdv-demo/vueDocs/sponsor.en-US.md | 71 +++
antdv-demo/vueDocs/sponsor.zh-CN.md | 75 +++
antdv-demo/vueDocs/use-with-vue-cli.en-US.md | 170 ++++++
antdv-demo/vueDocs/use-with-vue-cli.zh-CN.md | 169 ++++++
822 files changed, 49777 insertions(+), 11 deletions(-)
delete mode 100644 .gitmodules
create mode 100644 antdv-demo/.babelrc
create mode 100644 antdv-demo/.editorconfig
create mode 100644 antdv-demo/.eslintignore
create mode 100644 antdv-demo/.eslintrc
create mode 100644 antdv-demo/.gitignore
create mode 100644 antdv-demo/.huskyrc
create mode 100644 antdv-demo/.prettierignore
create mode 100644 antdv-demo/.prettierrc
create mode 100644 antdv-demo/.stylelintrc
create mode 100644 antdv-demo/.umirc.mock.js
create mode 100644 antdv-demo/build.sh
create mode 100644 antdv-demo/build/config.js
create mode 100644 antdv-demo/build/dev.js
create mode 100644 antdv-demo/build/getBabelCommonConfig.js
create mode 100644 antdv-demo/build/lessLoaderConfig.js
create mode 100644 antdv-demo/build/webpack.base.conf.js
create mode 100644 antdv-demo/build/webpack.dev.conf.js
create mode 100644 antdv-demo/build/webpack.site.conf.js
create mode 100644 antdv-demo/components/CarbonAds.vue
create mode 100644 antdv-demo/components/GoogleAds.vue
create mode 100644 antdv-demo/components/GoogleAds1.vue
create mode 100644 antdv-demo/components/GoogleAds2.vue
create mode 100644 antdv-demo/components/GoogleAdsMin.vue
create mode 100644 antdv-demo/components/GoogleAdsTop.vue
create mode 100644 antdv-demo/components/api.vue
create mode 100644 antdv-demo/components/demoBox.vue
create mode 100644 antdv-demo/components/demoContainer.vue
create mode 100644 antdv-demo/components/demoSort.jsx
create mode 100644 antdv-demo/components/footer.vue
create mode 100644 antdv-demo/components/geektime.vue
create mode 100644 antdv-demo/components/geektime_ads.vue
create mode 100644 antdv-demo/components/header.vue
create mode 100644 antdv-demo/components/iframe.vue
create mode 100644 antdv-demo/components/layout.vue
create mode 100644 antdv-demo/components/md.vue
create mode 100644 antdv-demo/components/right_bottom_ad.vue
create mode 100644 antdv-demo/components/sponsors.vue
create mode 100644 antdv-demo/components/top_ad.vue
create mode 100644 antdv-demo/docs/affix/demo/basic.md
create mode 100644 antdv-demo/docs/affix/demo/index.vue
create mode 100644 antdv-demo/docs/affix/demo/on-change.md
create mode 100644 antdv-demo/docs/affix/demo/target.md
create mode 100644 antdv-demo/docs/affix/index.en-US.md
create mode 100644 antdv-demo/docs/affix/index.zh-CN.md
create mode 100644 antdv-demo/docs/alert/demo/banner.md
create mode 100644 antdv-demo/docs/alert/demo/basic.md
create mode 100644 antdv-demo/docs/alert/demo/closable.md
create mode 100644 antdv-demo/docs/alert/demo/close-text.md
create mode 100644 antdv-demo/docs/alert/demo/custom-icon.md
create mode 100644 antdv-demo/docs/alert/demo/description.md
create mode 100644 antdv-demo/docs/alert/demo/icon.md
create mode 100644 antdv-demo/docs/alert/demo/index.vue
create mode 100644 antdv-demo/docs/alert/demo/smooth-closed.md
create mode 100644 antdv-demo/docs/alert/demo/style.md
create mode 100644 antdv-demo/docs/alert/index.en-US.md
create mode 100644 antdv-demo/docs/alert/index.zh-CN.md
create mode 100644 antdv-demo/docs/anchor/demo/basic.md
create mode 100644 antdv-demo/docs/anchor/demo/customizeHighlight.md
create mode 100644 antdv-demo/docs/anchor/demo/index.vue
create mode 100644 antdv-demo/docs/anchor/demo/onChange.md
create mode 100644 antdv-demo/docs/anchor/demo/onClick.md
create mode 100644 antdv-demo/docs/anchor/demo/static.md
create mode 100644 antdv-demo/docs/anchor/demo/targetOffset.md
create mode 100644 antdv-demo/docs/anchor/index.en-US.md
create mode 100644 antdv-demo/docs/anchor/index.zh-CN.md
create mode 100644 antdv-demo/docs/auto-complete/demo/basic.md
create mode 100644 antdv-demo/docs/auto-complete/demo/certain-category.md
create mode 100644 antdv-demo/docs/auto-complete/demo/custom.md
create mode 100644 antdv-demo/docs/auto-complete/demo/index.vue
create mode 100644 antdv-demo/docs/auto-complete/demo/non-case-sensitive.md
create mode 100644 antdv-demo/docs/auto-complete/demo/options.md
create mode 100644 antdv-demo/docs/auto-complete/demo/uncertain-category.md
create mode 100644 antdv-demo/docs/auto-complete/index.en-US.md
create mode 100644 antdv-demo/docs/auto-complete/index.zh-CN.md
create mode 100644 antdv-demo/docs/avatar/demo/badge.md
create mode 100644 antdv-demo/docs/avatar/demo/basic.md
create mode 100644 antdv-demo/docs/avatar/demo/dynamic.md
create mode 100644 antdv-demo/docs/avatar/demo/index.vue
create mode 100644 antdv-demo/docs/avatar/demo/type.md
create mode 100644 antdv-demo/docs/avatar/index.en-US.md
create mode 100644 antdv-demo/docs/avatar/index.zh-CN.md
create mode 100644 antdv-demo/docs/back-top/demo/basic.md
create mode 100644 antdv-demo/docs/back-top/demo/custom.md
create mode 100644 antdv-demo/docs/back-top/demo/index.vue
create mode 100644 antdv-demo/docs/back-top/index.en-US.md
create mode 100644 antdv-demo/docs/back-top/index.zh-CN.md
create mode 100644 antdv-demo/docs/badge/demo/basic.md
create mode 100644 antdv-demo/docs/badge/demo/change.md
create mode 100644 antdv-demo/docs/badge/demo/colors.md
create mode 100644 antdv-demo/docs/badge/demo/dot.md
create mode 100644 antdv-demo/docs/badge/demo/index.vue
create mode 100644 antdv-demo/docs/badge/demo/link.md
create mode 100644 antdv-demo/docs/badge/demo/no-wrapper.md
create mode 100644 antdv-demo/docs/badge/demo/overflow.md
create mode 100644 antdv-demo/docs/badge/demo/status.md
create mode 100644 antdv-demo/docs/badge/demo/title.md
create mode 100644 antdv-demo/docs/badge/index.en_US.md
create mode 100644 antdv-demo/docs/badge/index.zh-CN.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/basic.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/index.vue
create mode 100644 antdv-demo/docs/breadcrumb/demo/overlay.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/router.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/separator-indepent.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/separator.md
create mode 100644 antdv-demo/docs/breadcrumb/demo/withIcon.md
create mode 100644 antdv-demo/docs/breadcrumb/index.en-US.md
create mode 100644 antdv-demo/docs/breadcrumb/index.zh-CN.md
create mode 100644 antdv-demo/docs/button/demo/basic.md
create mode 100644 antdv-demo/docs/button/demo/block.md
create mode 100644 antdv-demo/docs/button/demo/button-group.md
create mode 100644 antdv-demo/docs/button/demo/disabled.md
create mode 100644 antdv-demo/docs/button/demo/ghost.md
create mode 100644 antdv-demo/docs/button/demo/icon.md
create mode 100644 antdv-demo/docs/button/demo/index.vue
create mode 100644 antdv-demo/docs/button/demo/loading.md
create mode 100644 antdv-demo/docs/button/demo/multiple.md
create mode 100644 antdv-demo/docs/button/demo/size.md
create mode 100644 antdv-demo/docs/button/index.en-US.md
create mode 100644 antdv-demo/docs/button/index.zh-CN.md
create mode 100644 antdv-demo/docs/calendar/demo/basic.md
create mode 100644 antdv-demo/docs/calendar/demo/card.md
create mode 100644 antdv-demo/docs/calendar/demo/customize-header.vue
create mode 100644 antdv-demo/docs/calendar/demo/index.vue
create mode 100644 antdv-demo/docs/calendar/demo/notice-calendar.md
create mode 100644 antdv-demo/docs/calendar/demo/select.md
create mode 100644 antdv-demo/docs/calendar/index.en-US.md
create mode 100644 antdv-demo/docs/calendar/index.zh-CN.md
create mode 100644 antdv-demo/docs/card/demo/basic.md
create mode 100644 antdv-demo/docs/card/demo/border-less.md
create mode 100644 antdv-demo/docs/card/demo/flexible-content.md
create mode 100644 antdv-demo/docs/card/demo/grid-card.md
create mode 100644 antdv-demo/docs/card/demo/in-column.md
create mode 100644 antdv-demo/docs/card/demo/index.vue
create mode 100644 antdv-demo/docs/card/demo/inner.md
create mode 100644 antdv-demo/docs/card/demo/loading.md
create mode 100644 antdv-demo/docs/card/demo/meta.md
create mode 100644 antdv-demo/docs/card/demo/simple.md
create mode 100644 antdv-demo/docs/card/demo/tabs.md
create mode 100644 antdv-demo/docs/card/index.en-US.md
create mode 100644 antdv-demo/docs/card/index.zh-CN.md
create mode 100644 antdv-demo/docs/carousel/demo/autoplay.md
create mode 100644 antdv-demo/docs/carousel/demo/basic.md
create mode 100644 antdv-demo/docs/carousel/demo/customArrows.md
create mode 100644 antdv-demo/docs/carousel/demo/customPaging.md
create mode 100644 antdv-demo/docs/carousel/demo/fade.md
create mode 100644 antdv-demo/docs/carousel/demo/index.vue
create mode 100644 antdv-demo/docs/carousel/demo/position.md
create mode 100644 antdv-demo/docs/carousel/index.en-US.md
create mode 100644 antdv-demo/docs/carousel/index.zh-CN.md
create mode 100644 antdv-demo/docs/cascader/demo/basic.md
create mode 100644 antdv-demo/docs/cascader/demo/change-on-select.md
create mode 100644 antdv-demo/docs/cascader/demo/custom-render.md
create mode 100644 antdv-demo/docs/cascader/demo/custom-trigger.md
create mode 100644 antdv-demo/docs/cascader/demo/default-value.md
create mode 100644 antdv-demo/docs/cascader/demo/disabled-option.md
create mode 100644 antdv-demo/docs/cascader/demo/fields-name.md
create mode 100644 antdv-demo/docs/cascader/demo/hover.md
create mode 100644 antdv-demo/docs/cascader/demo/index.vue
create mode 100644 antdv-demo/docs/cascader/demo/lazy.md
create mode 100644 antdv-demo/docs/cascader/demo/search.md
create mode 100644 antdv-demo/docs/cascader/demo/size.md
create mode 100644 antdv-demo/docs/cascader/demo/suffix.md
create mode 100644 antdv-demo/docs/cascader/index.en-US.md
create mode 100644 antdv-demo/docs/cascader/index.zh-CN.md
create mode 100644 antdv-demo/docs/checkbox/demo/basic.md
create mode 100644 antdv-demo/docs/checkbox/demo/check-all.md
create mode 100644 antdv-demo/docs/checkbox/demo/controller.md
create mode 100644 antdv-demo/docs/checkbox/demo/disabled.md
create mode 100644 antdv-demo/docs/checkbox/demo/group.md
create mode 100644 antdv-demo/docs/checkbox/demo/index.vue
create mode 100644 antdv-demo/docs/checkbox/demo/layout.md
create mode 100644 antdv-demo/docs/checkbox/index.en-US.md
create mode 100644 antdv-demo/docs/checkbox/index.zh-CN.md
create mode 100644 antdv-demo/docs/collapse/demo/accordion.md
create mode 100644 antdv-demo/docs/collapse/demo/basic.md
create mode 100644 antdv-demo/docs/collapse/demo/borderless.md
create mode 100644 antdv-demo/docs/collapse/demo/custom.md
create mode 100644 antdv-demo/docs/collapse/demo/extra.md
create mode 100644 antdv-demo/docs/collapse/demo/index.vue
create mode 100644 antdv-demo/docs/collapse/demo/mix.md
create mode 100644 antdv-demo/docs/collapse/demo/noarrow.md
create mode 100644 antdv-demo/docs/collapse/index.en-US.md
create mode 100644 antdv-demo/docs/collapse/index.zh-CN.md
create mode 100644 antdv-demo/docs/color-picker/demo/alpha.md
create mode 100644 antdv-demo/docs/color-picker/demo/basic.md
create mode 100644 antdv-demo/docs/color-picker/demo/colors.md
create mode 100644 antdv-demo/docs/color-picker/demo/hue.md
create mode 100644 antdv-demo/docs/color-picker/demo/index.vue
create mode 100644 antdv-demo/docs/color-picker/demo/size.md
create mode 100644 antdv-demo/docs/color-picker/index.en-US.md
create mode 100644 antdv-demo/docs/color-picker/index.zh-CN.md
create mode 100644 antdv-demo/docs/comment/demo/basic.md
create mode 100644 antdv-demo/docs/comment/demo/editor.md
create mode 100644 antdv-demo/docs/comment/demo/index.vue
create mode 100644 antdv-demo/docs/comment/demo/list.md
create mode 100644 antdv-demo/docs/comment/demo/nested.md
create mode 100644 antdv-demo/docs/comment/index.en-US.md
create mode 100644 antdv-demo/docs/comment/index.zh-CN.md
create mode 100644 antdv-demo/docs/config-provider/demo/index.vue
create mode 100644 antdv-demo/docs/config-provider/demo/locale.md
create mode 100644 antdv-demo/docs/config-provider/index.en-US.md
create mode 100644 antdv-demo/docs/config-provider/index.zh-CN.md
create mode 100644 antdv-demo/docs/date-picker/demo/basic.md
create mode 100644 antdv-demo/docs/date-picker/demo/date-render.md
create mode 100644 antdv-demo/docs/date-picker/demo/disabled-date.md
create mode 100644 antdv-demo/docs/date-picker/demo/disabled.md
create mode 100644 antdv-demo/docs/date-picker/demo/extra-footer.md
create mode 100644 antdv-demo/docs/date-picker/demo/format.md
create mode 100644 antdv-demo/docs/date-picker/demo/index.vue
create mode 100644 antdv-demo/docs/date-picker/demo/mode.md
create mode 100644 antdv-demo/docs/date-picker/demo/presetted-ranges.md
create mode 100644 antdv-demo/docs/date-picker/demo/size.md
create mode 100644 antdv-demo/docs/date-picker/demo/start-end.md
create mode 100644 antdv-demo/docs/date-picker/demo/suffix.md
create mode 100644 antdv-demo/docs/date-picker/demo/text.md
create mode 100644 antdv-demo/docs/date-picker/demo/time.md
create mode 100644 antdv-demo/docs/date-picker/index.en-US.md
create mode 100644 antdv-demo/docs/date-picker/index.zh-CN.md
create mode 100644 antdv-demo/docs/date-picker/locale/example.json
create mode 100644 antdv-demo/docs/descriptions/demo/basic.md
create mode 100644 antdv-demo/docs/descriptions/demo/border.md
create mode 100644 antdv-demo/docs/descriptions/demo/index.vue
create mode 100644 antdv-demo/docs/descriptions/demo/responsive.md
create mode 100644 antdv-demo/docs/descriptions/demo/size.md
create mode 100644 antdv-demo/docs/descriptions/demo/vertical-border.md
create mode 100644 antdv-demo/docs/descriptions/demo/vertical.md
create mode 100644 antdv-demo/docs/descriptions/index.en-US.md
create mode 100644 antdv-demo/docs/descriptions/index.zh-CN.md
create mode 100644 antdv-demo/docs/divider/demo/customize-style.md
create mode 100644 antdv-demo/docs/divider/demo/horizontal.md
create mode 100644 antdv-demo/docs/divider/demo/index.vue
create mode 100644 antdv-demo/docs/divider/demo/vertical.md
create mode 100644 antdv-demo/docs/divider/demo/with-text.md
create mode 100644 antdv-demo/docs/divider/index.en-US.md
create mode 100644 antdv-demo/docs/divider/index.zh-CN.md
create mode 100644 antdv-demo/docs/drawer/demo/basic-right.md
create mode 100644 antdv-demo/docs/drawer/demo/descriptionItem.vue
create mode 100644 antdv-demo/docs/drawer/demo/form-in-drawer.md
create mode 100644 antdv-demo/docs/drawer/demo/index.vue
create mode 100644 antdv-demo/docs/drawer/demo/multi-level-drawer.md
create mode 100644 antdv-demo/docs/drawer/demo/placement.md
create mode 100644 antdv-demo/docs/drawer/demo/render-in-current.md
create mode 100644 antdv-demo/docs/drawer/demo/user-profile.md
create mode 100644 antdv-demo/docs/drawer/index.en-US.md
create mode 100644 antdv-demo/docs/drawer/index.zh-CN.md
create mode 100644 antdv-demo/docs/dropdown/demo/basic.md
create mode 100644 antdv-demo/docs/dropdown/demo/context-menu.md
create mode 100644 antdv-demo/docs/dropdown/demo/dropdown-button.md
create mode 100644 antdv-demo/docs/dropdown/demo/event.md
create mode 100644 antdv-demo/docs/dropdown/demo/index.vue
create mode 100644 antdv-demo/docs/dropdown/demo/item.md
create mode 100644 antdv-demo/docs/dropdown/demo/overlay-visible.md
create mode 100644 antdv-demo/docs/dropdown/demo/placement.md
create mode 100644 antdv-demo/docs/dropdown/demo/sub-menu.md
create mode 100644 antdv-demo/docs/dropdown/demo/trigger.md
create mode 100644 antdv-demo/docs/dropdown/index.en-US.md
create mode 100644 antdv-demo/docs/dropdown/index.zh-CN.md
create mode 100644 antdv-demo/docs/empty/demo/basic.md
create mode 100644 antdv-demo/docs/empty/demo/config-provider.md
create mode 100644 antdv-demo/docs/empty/demo/customize.md
create mode 100644 antdv-demo/docs/empty/demo/description.md
create mode 100644 antdv-demo/docs/empty/demo/index.vue
create mode 100644 antdv-demo/docs/empty/demo/simple.md
create mode 100644 antdv-demo/docs/empty/index.en-US.md
create mode 100644 antdv-demo/docs/empty/index.zh-CN.md
create mode 100644 antdv-demo/docs/form-model/demo/basic.md
create mode 100644 antdv-demo/docs/form-model/demo/custom-validation.md
create mode 100644 antdv-demo/docs/form-model/demo/dynamic-form-item.md
create mode 100644 antdv-demo/docs/form-model/demo/horizontal-login.md
create mode 100644 antdv-demo/docs/form-model/demo/index.vue
create mode 100644 antdv-demo/docs/form-model/demo/layout.md
create mode 100644 antdv-demo/docs/form-model/demo/validation.md
create mode 100644 antdv-demo/docs/form-model/index.en-US.md
create mode 100644 antdv-demo/docs/form-model/index.zh-CN.md
create mode 100644 antdv-demo/docs/form/demo/advanced-search.vue
create mode 100644 antdv-demo/docs/form/demo/coordinated.vue
create mode 100644 antdv-demo/docs/form/demo/customized-form-controls.vue
create mode 100644 antdv-demo/docs/form/demo/dynamic-form-item.vue
create mode 100644 antdv-demo/docs/form/demo/dynamic-rule.vue
create mode 100644 antdv-demo/docs/form/demo/form-in-modal.vue
create mode 100644 antdv-demo/docs/form/demo/global-state.vue
create mode 100644 antdv-demo/docs/form/demo/horizontal-login.vue
create mode 100644 antdv-demo/docs/form/demo/index.vue
create mode 100644 antdv-demo/docs/form/demo/layout.vue
create mode 100644 antdv-demo/docs/form/demo/normal-login.vue
create mode 100644 antdv-demo/docs/form/demo/register.vue
create mode 100644 antdv-demo/docs/form/demo/time-related-controls.vue
create mode 100644 antdv-demo/docs/form/demo/validate-other.vue
create mode 100644 antdv-demo/docs/form/demo/validate-static.vue
create mode 100644 antdv-demo/docs/form/demo/vuex.vue
create mode 100644 antdv-demo/docs/form/demo/without-form-create.vue
create mode 100644 antdv-demo/docs/form/index.en-US.md
create mode 100644 antdv-demo/docs/form/index.zh-CN.md
create mode 100644 antdv-demo/docs/grid/demo/basic.md
create mode 100644 antdv-demo/docs/grid/demo/flex-align.md
create mode 100644 antdv-demo/docs/grid/demo/flex-fill.md
create mode 100644 antdv-demo/docs/grid/demo/flex-order.md
create mode 100644 antdv-demo/docs/grid/demo/flex.md
create mode 100644 antdv-demo/docs/grid/demo/gutter.md
create mode 100644 antdv-demo/docs/grid/demo/index.vue
create mode 100644 antdv-demo/docs/grid/demo/offset.md
create mode 100644 antdv-demo/docs/grid/demo/playfround.md
create mode 100644 antdv-demo/docs/grid/demo/responsive-more.md
create mode 100644 antdv-demo/docs/grid/demo/responsive.md
create mode 100644 antdv-demo/docs/grid/demo/sort.md
create mode 100644 antdv-demo/docs/grid/index.en-US.md
create mode 100644 antdv-demo/docs/grid/index.zh-CN.md
create mode 100644 antdv-demo/docs/icon/demo/basic.md
create mode 100644 antdv-demo/docs/icon/demo/custom.md
create mode 100644 antdv-demo/docs/icon/demo/iconfont.md
create mode 100644 antdv-demo/docs/icon/demo/index.vue
create mode 100644 antdv-demo/docs/icon/demo/old-icons.md
create mode 100644 antdv-demo/docs/icon/demo/two-tone.md
create mode 100644 antdv-demo/docs/icon/index.en-US.md
create mode 100644 antdv-demo/docs/icon/index.zh-CN.md
create mode 100644 antdv-demo/docs/input-number/demo/basic.md
create mode 100644 antdv-demo/docs/input-number/demo/digit.md
create mode 100644 antdv-demo/docs/input-number/demo/disabled.md
create mode 100644 antdv-demo/docs/input-number/demo/formatter.md
create mode 100644 antdv-demo/docs/input-number/demo/index.vue
create mode 100644 antdv-demo/docs/input-number/demo/size.md
create mode 100644 antdv-demo/docs/input-number/index.en-US.md
create mode 100644 antdv-demo/docs/input-number/index.zh-CN.md
create mode 100644 antdv-demo/docs/input/demo/addon.md
create mode 100644 antdv-demo/docs/input/demo/allowClear.md
create mode 100644 antdv-demo/docs/input/demo/autosize-textarea.md
create mode 100644 antdv-demo/docs/input/demo/basic.md
create mode 100644 antdv-demo/docs/input/demo/group.md
create mode 100644 antdv-demo/docs/input/demo/index.vue
create mode 100644 antdv-demo/docs/input/demo/password-input.md
create mode 100644 antdv-demo/docs/input/demo/presuffix.md
create mode 100644 antdv-demo/docs/input/demo/search-input-loading.md
create mode 100644 antdv-demo/docs/input/demo/search-input.md
create mode 100644 antdv-demo/docs/input/demo/size.md
create mode 100644 antdv-demo/docs/input/demo/textarea-resize.md
create mode 100644 antdv-demo/docs/input/demo/textarea.md
create mode 100644 antdv-demo/docs/input/demo/tooltip.md
create mode 100644 antdv-demo/docs/input/index.en-US.md
create mode 100644 antdv-demo/docs/input/index.zh-CN.md
create mode 100644 antdv-demo/docs/layout/demo/basic.md
create mode 100644 antdv-demo/docs/layout/demo/custom-trigger.md
create mode 100644 antdv-demo/docs/layout/demo/fixed-sider.md
create mode 100644 antdv-demo/docs/layout/demo/fixed.md
create mode 100644 antdv-demo/docs/layout/demo/index.vue
create mode 100644 antdv-demo/docs/layout/demo/responsive.md
create mode 100644 antdv-demo/docs/layout/demo/side.md
create mode 100644 antdv-demo/docs/layout/demo/top-side-2.md
create mode 100644 antdv-demo/docs/layout/demo/top-side.md
create mode 100644 antdv-demo/docs/layout/demo/top.md
create mode 100644 antdv-demo/docs/layout/index.en-US.md
create mode 100644 antdv-demo/docs/layout/index.zh-CN.md
create mode 100644 antdv-demo/docs/list/demo/basic.md
create mode 100644 antdv-demo/docs/list/demo/grid.md
create mode 100644 antdv-demo/docs/list/demo/index.vue
create mode 100644 antdv-demo/docs/list/demo/infinite-load.md
create mode 100644 antdv-demo/docs/list/demo/infinite-virtualized-load.md
create mode 100644 antdv-demo/docs/list/demo/loadmore.md
create mode 100644 antdv-demo/docs/list/demo/resposive.md
create mode 100644 antdv-demo/docs/list/demo/simple.md
create mode 100644 antdv-demo/docs/list/demo/vertical.md
create mode 100644 antdv-demo/docs/list/index.en-US.md
create mode 100644 antdv-demo/docs/list/index.zh-CN.md
create mode 100644 antdv-demo/docs/locale-provider/demo/all.md
create mode 100644 antdv-demo/docs/locale-provider/demo/basic.md
create mode 100644 antdv-demo/docs/locale-provider/demo/index.vue
create mode 100644 antdv-demo/docs/locale-provider/index.en-US.md
create mode 100644 antdv-demo/docs/locale-provider/index.zh-CN.md
create mode 100644 antdv-demo/docs/mentions/demo/async.md
create mode 100644 antdv-demo/docs/mentions/demo/basic.md
create mode 100644 antdv-demo/docs/mentions/demo/form.md
create mode 100644 antdv-demo/docs/mentions/demo/index.vue
create mode 100644 antdv-demo/docs/mentions/demo/placement.md
create mode 100644 antdv-demo/docs/mentions/demo/prefix.md
create mode 100644 antdv-demo/docs/mentions/demo/readonly.md
create mode 100644 antdv-demo/docs/mentions/index.en-US.md
create mode 100644 antdv-demo/docs/mentions/index.zh-CN.md
create mode 100644 antdv-demo/docs/menu/demo/horizontal.md
create mode 100644 antdv-demo/docs/menu/demo/index.vue
create mode 100644 antdv-demo/docs/menu/demo/inline-collapsed.md
create mode 100644 antdv-demo/docs/menu/demo/inline.md
create mode 100644 antdv-demo/docs/menu/demo/sider-current.md
create mode 100644 antdv-demo/docs/menu/demo/switch-mode.md
create mode 100644 antdv-demo/docs/menu/demo/template.md
create mode 100644 antdv-demo/docs/menu/demo/theme.md
create mode 100644 antdv-demo/docs/menu/demo/vertical.md
create mode 100644 antdv-demo/docs/menu/index.en-US.md
create mode 100644 antdv-demo/docs/menu/index.zh-CN.md
create mode 100644 antdv-demo/docs/message/demo/duration.md
create mode 100644 antdv-demo/docs/message/demo/index.vue
create mode 100644 antdv-demo/docs/message/demo/info.md
create mode 100644 antdv-demo/docs/message/demo/loading.md
create mode 100644 antdv-demo/docs/message/demo/other.md
create mode 100644 antdv-demo/docs/message/demo/thenable.md
create mode 100644 antdv-demo/docs/message/demo/update.md
create mode 100644 antdv-demo/docs/message/index.en-US.md
create mode 100644 antdv-demo/docs/message/index.zh-CN.md
create mode 100644 antdv-demo/docs/modal/demo/async.md
create mode 100644 antdv-demo/docs/modal/demo/basic.md
create mode 100644 antdv-demo/docs/modal/demo/button-props.md
create mode 100644 antdv-demo/docs/modal/demo/confirm-promise.md
create mode 100644 antdv-demo/docs/modal/demo/confirm-router.md
create mode 100644 antdv-demo/docs/modal/demo/confirm.md
create mode 100644 antdv-demo/docs/modal/demo/footer.md
create mode 100644 antdv-demo/docs/modal/demo/index.vue
create mode 100644 antdv-demo/docs/modal/demo/info.md
create mode 100644 antdv-demo/docs/modal/demo/locale.md
create mode 100644 antdv-demo/docs/modal/demo/manual.md
create mode 100644 antdv-demo/docs/modal/demo/position.md
create mode 100644 antdv-demo/docs/modal/index.en-US.md
create mode 100644 antdv-demo/docs/modal/index.zh-CN.md
create mode 100644 antdv-demo/docs/notification/demo/basic.md
create mode 100644 antdv-demo/docs/notification/demo/custom-icon.md
create mode 100644 antdv-demo/docs/notification/demo/custom-style.md
create mode 100644 antdv-demo/docs/notification/demo/duration.md
create mode 100644 antdv-demo/docs/notification/demo/index.vue
create mode 100644 antdv-demo/docs/notification/demo/placement.md
create mode 100644 antdv-demo/docs/notification/demo/update.md
create mode 100644 antdv-demo/docs/notification/demo/with-btn.md
create mode 100644 antdv-demo/docs/notification/demo/with-icon.md
create mode 100644 antdv-demo/docs/notification/index.en-US.md
create mode 100644 antdv-demo/docs/notification/index.zh-CN.md
create mode 100644 antdv-demo/docs/page-header/demo/actions.md
create mode 100644 antdv-demo/docs/page-header/demo/basic.md
create mode 100644 antdv-demo/docs/page-header/demo/breadcrumb.md
create mode 100644 antdv-demo/docs/page-header/demo/ghost.md
create mode 100644 antdv-demo/docs/page-header/demo/index.vue
create mode 100644 antdv-demo/docs/page-header/demo/responsive.md
create mode 100644 antdv-demo/docs/page-header/index.en-US.md
create mode 100644 antdv-demo/docs/page-header/index.zh-CN.md
create mode 100644 antdv-demo/docs/pagination/demo/basic.md
create mode 100644 antdv-demo/docs/pagination/demo/changer.md
create mode 100644 antdv-demo/docs/pagination/demo/controlled.md
create mode 100644 antdv-demo/docs/pagination/demo/custom-changer.md
create mode 100644 antdv-demo/docs/pagination/demo/index.vue
create mode 100644 antdv-demo/docs/pagination/demo/itemRender.md
create mode 100644 antdv-demo/docs/pagination/demo/jump.md
create mode 100644 antdv-demo/docs/pagination/demo/mini.md
create mode 100644 antdv-demo/docs/pagination/demo/more.md
create mode 100644 antdv-demo/docs/pagination/demo/simple.md
create mode 100644 antdv-demo/docs/pagination/demo/total.md
create mode 100644 antdv-demo/docs/pagination/index.en-US.md
create mode 100644 antdv-demo/docs/pagination/index.zh-CN.md
create mode 100644 antdv-demo/docs/popconfirm/demo/basic.md
create mode 100644 antdv-demo/docs/popconfirm/demo/dynamic-trigger.md
create mode 100644 antdv-demo/docs/popconfirm/demo/icon.md
create mode 100644 antdv-demo/docs/popconfirm/demo/index.vue
create mode 100644 antdv-demo/docs/popconfirm/demo/local.md
create mode 100644 antdv-demo/docs/popconfirm/demo/placement.md
create mode 100644 antdv-demo/docs/popconfirm/index.en-US.md
create mode 100644 antdv-demo/docs/popconfirm/index.zh-CN.md
create mode 100644 antdv-demo/docs/popover/demo/arrow-point-at-center.md
create mode 100644 antdv-demo/docs/popover/demo/basic.md
create mode 100644 antdv-demo/docs/popover/demo/control.md
create mode 100644 antdv-demo/docs/popover/demo/hover-with-click.md
create mode 100644 antdv-demo/docs/popover/demo/index.vue
create mode 100644 antdv-demo/docs/popover/demo/placement.md
create mode 100644 antdv-demo/docs/popover/demo/triggerType.md
create mode 100644 antdv-demo/docs/popover/index.en-US.md
create mode 100644 antdv-demo/docs/popover/index.zh-CN.md
create mode 100644 antdv-demo/docs/progress/demo/circle-dynamic.md
create mode 100644 antdv-demo/docs/progress/demo/circle-mini.md
create mode 100644 antdv-demo/docs/progress/demo/circle.md
create mode 100644 antdv-demo/docs/progress/demo/dashboard.md
create mode 100644 antdv-demo/docs/progress/demo/dynamic.md
create mode 100644 antdv-demo/docs/progress/demo/format.md
create mode 100644 antdv-demo/docs/progress/demo/gradient-line.md
create mode 100644 antdv-demo/docs/progress/demo/index.vue
create mode 100644 antdv-demo/docs/progress/demo/line-mini.md
create mode 100644 antdv-demo/docs/progress/demo/line.md
create mode 100644 antdv-demo/docs/progress/demo/linecap.md
create mode 100644 antdv-demo/docs/progress/demo/segment.md
create mode 100644 antdv-demo/docs/progress/index.en-US.md
create mode 100644 antdv-demo/docs/progress/index.zh-CN.md
create mode 100644 antdv-demo/docs/radio/demo/basic.md
create mode 100644 antdv-demo/docs/radio/demo/disabled.md
create mode 100644 antdv-demo/docs/radio/demo/index.vue
create mode 100644 antdv-demo/docs/radio/demo/radioButton-solid.md
create mode 100644 antdv-demo/docs/radio/demo/radioButton.md
create mode 100644 antdv-demo/docs/radio/demo/radioGroup-more.md
create mode 100644 antdv-demo/docs/radio/demo/radioGroup-options.md
create mode 100644 antdv-demo/docs/radio/demo/radioGroup-with-name.md
create mode 100644 antdv-demo/docs/radio/demo/radioGroup.md
create mode 100644 antdv-demo/docs/radio/demo/size.md
create mode 100644 antdv-demo/docs/radio/index.en-US.md
create mode 100644 antdv-demo/docs/radio/index.zh-CN.md
create mode 100644 antdv-demo/docs/rate/demo/basic.md
create mode 100644 antdv-demo/docs/rate/demo/character.md
create mode 100644 antdv-demo/docs/rate/demo/clear.md
create mode 100644 antdv-demo/docs/rate/demo/disabled.md
create mode 100644 antdv-demo/docs/rate/demo/half.md
create mode 100644 antdv-demo/docs/rate/demo/index.vue
create mode 100644 antdv-demo/docs/rate/demo/text.md
create mode 100644 antdv-demo/docs/rate/index.en-US.md
create mode 100644 antdv-demo/docs/rate/index.zh-CN.md
create mode 100644 antdv-demo/docs/result/demo/403.md
create mode 100644 antdv-demo/docs/result/demo/404.md
create mode 100644 antdv-demo/docs/result/demo/500.md
create mode 100644 antdv-demo/docs/result/demo/customIcon.md
create mode 100644 antdv-demo/docs/result/demo/error.md
create mode 100644 antdv-demo/docs/result/demo/index.vue
create mode 100644 antdv-demo/docs/result/demo/info.md
create mode 100644 antdv-demo/docs/result/demo/success.md
create mode 100644 antdv-demo/docs/result/demo/warning.md
create mode 100644 antdv-demo/docs/result/index.en-US.md
create mode 100644 antdv-demo/docs/result/index.zh-CN.md
create mode 100644 antdv-demo/docs/select/demo/automatic-tokenization.md
create mode 100644 antdv-demo/docs/select/demo/basic.md
create mode 100644 antdv-demo/docs/select/demo/coordinate.md
create mode 100644 antdv-demo/docs/select/demo/custom-dropdown-menu.md
create mode 100644 antdv-demo/docs/select/demo/hide-selected.md
create mode 100644 antdv-demo/docs/select/demo/index.vue
create mode 100644 antdv-demo/docs/select/demo/label-in-value.md
create mode 100644 antdv-demo/docs/select/demo/multiple.md
create mode 100644 antdv-demo/docs/select/demo/optgroup.md
create mode 100644 antdv-demo/docs/select/demo/option-label-prop.md
create mode 100644 antdv-demo/docs/select/demo/options.md
create mode 100644 antdv-demo/docs/select/demo/search-box.md
create mode 100644 antdv-demo/docs/select/demo/search.md
create mode 100644 antdv-demo/docs/select/demo/select-users.md
create mode 100644 antdv-demo/docs/select/demo/size.md
create mode 100644 antdv-demo/docs/select/demo/suffix.md
create mode 100644 antdv-demo/docs/select/demo/tags.md
create mode 100644 antdv-demo/docs/select/index.en-US.md
create mode 100644 antdv-demo/docs/select/index.zh-CN.md
create mode 100644 antdv-demo/docs/skeleton/demo/active.md
create mode 100644 antdv-demo/docs/skeleton/demo/basic.md
create mode 100644 antdv-demo/docs/skeleton/demo/children.md
create mode 100644 antdv-demo/docs/skeleton/demo/complex.md
create mode 100644 antdv-demo/docs/skeleton/demo/index.vue
create mode 100644 antdv-demo/docs/skeleton/demo/list.md
create mode 100644 antdv-demo/docs/skeleton/index.en-US.md
create mode 100644 antdv-demo/docs/skeleton/index.zh-CN.md
create mode 100644 antdv-demo/docs/slider/demo/basic.md
create mode 100644 antdv-demo/docs/slider/demo/event.md
create mode 100644 antdv-demo/docs/slider/demo/icon-slider.md
create mode 100644 antdv-demo/docs/slider/demo/index.vue
create mode 100644 antdv-demo/docs/slider/demo/input-number.md
create mode 100644 antdv-demo/docs/slider/demo/mark.md
create mode 100644 antdv-demo/docs/slider/demo/reverse.md
create mode 100644 antdv-demo/docs/slider/demo/show-tooltip.md
create mode 100644 antdv-demo/docs/slider/demo/tip-formatter.md
create mode 100644 antdv-demo/docs/slider/demo/vertical.md
create mode 100644 antdv-demo/docs/slider/index.en-US.md
create mode 100644 antdv-demo/docs/slider/index.zh-CN.md
create mode 100644 antdv-demo/docs/space/demo/align.md
create mode 100644 antdv-demo/docs/space/demo/base.md
create mode 100644 antdv-demo/docs/space/demo/customize.md
create mode 100644 antdv-demo/docs/space/demo/index.vue
create mode 100644 antdv-demo/docs/space/demo/size.md
create mode 100644 antdv-demo/docs/space/demo/vertical.md
create mode 100644 antdv-demo/docs/space/index.en-US.md
create mode 100644 antdv-demo/docs/space/index.zh-CN.md
create mode 100644 antdv-demo/docs/spin/demo/basic.md
create mode 100644 antdv-demo/docs/spin/demo/custom-indicator.md
create mode 100644 antdv-demo/docs/spin/demo/delayAndDebounce.md
create mode 100644 antdv-demo/docs/spin/demo/index.vue
create mode 100644 antdv-demo/docs/spin/demo/inside.md
create mode 100644 antdv-demo/docs/spin/demo/nested.md
create mode 100644 antdv-demo/docs/spin/demo/size.md
create mode 100644 antdv-demo/docs/spin/demo/tip.md
create mode 100644 antdv-demo/docs/spin/index.en-US.md
create mode 100644 antdv-demo/docs/spin/index.zh-CN.md
create mode 100644 antdv-demo/docs/statistic/demo/basic.md
create mode 100644 antdv-demo/docs/statistic/demo/card.md
create mode 100644 antdv-demo/docs/statistic/demo/countdown.md
create mode 100644 antdv-demo/docs/statistic/demo/index.vue
create mode 100644 antdv-demo/docs/statistic/demo/unit.md
create mode 100644 antdv-demo/docs/statistic/index.en-US.md
create mode 100644 antdv-demo/docs/statistic/index.zh-CN.md
create mode 100644 antdv-demo/docs/steps/demo/clickable.md
create mode 100644 antdv-demo/docs/steps/demo/customized-progress-dot.md
create mode 100644 antdv-demo/docs/steps/demo/error.md
create mode 100644 antdv-demo/docs/steps/demo/icon.md
create mode 100644 antdv-demo/docs/steps/demo/index.vue
create mode 100644 antdv-demo/docs/steps/demo/nav.md
create mode 100644 antdv-demo/docs/steps/demo/progress-dot.md
create mode 100644 antdv-demo/docs/steps/demo/simple.md
create mode 100644 antdv-demo/docs/steps/demo/small-size.md
create mode 100644 antdv-demo/docs/steps/demo/step-next.md
create mode 100644 antdv-demo/docs/steps/demo/vertical-small.md
create mode 100644 antdv-demo/docs/steps/demo/vertical.md
create mode 100644 antdv-demo/docs/steps/index.en-US.md
create mode 100644 antdv-demo/docs/steps/index.zh-CN.md
create mode 100644 antdv-demo/docs/switch/demo/basic.md
create mode 100644 antdv-demo/docs/switch/demo/disabled.md
create mode 100644 antdv-demo/docs/switch/demo/index.vue
create mode 100644 antdv-demo/docs/switch/demo/loading.md
create mode 100644 antdv-demo/docs/switch/demo/size.md
create mode 100644 antdv-demo/docs/switch/demo/text.md
create mode 100644 antdv-demo/docs/switch/index.en-US.md
create mode 100644 antdv-demo/docs/switch/index.zh-CN.md
create mode 100644 antdv-demo/docs/table/demo/ajax.md
create mode 100644 antdv-demo/docs/table/demo/basic.md
create mode 100644 antdv-demo/docs/table/demo/bordered.md
create mode 100644 antdv-demo/docs/table/demo/colspan-rowspan.md
create mode 100644 antdv-demo/docs/table/demo/custom-filter-panel.md
create mode 100644 antdv-demo/docs/table/demo/edit-cell.md
create mode 100644 antdv-demo/docs/table/demo/edit-row.md
create mode 100644 antdv-demo/docs/table/demo/ellipsis.md
create mode 100644 antdv-demo/docs/table/demo/expand-children.md
create mode 100644 antdv-demo/docs/table/demo/expand.md
create mode 100644 antdv-demo/docs/table/demo/fixed-columns-header.md
create mode 100644 antdv-demo/docs/table/demo/fixed-columns.md
create mode 100644 antdv-demo/docs/table/demo/fixed-header.md
create mode 100644 antdv-demo/docs/table/demo/grouping-columns.md
create mode 100644 antdv-demo/docs/table/demo/head.md
create mode 100644 antdv-demo/docs/table/demo/index.vue
create mode 100644 antdv-demo/docs/table/demo/nested-table.md
create mode 100644 antdv-demo/docs/table/demo/reset-filter.md
create mode 100755 antdv-demo/docs/table/demo/resizable-column.vue
create mode 100644 antdv-demo/docs/table/demo/row-selection-and-operation.md
create mode 100644 antdv-demo/docs/table/demo/row-selection-custom.md
create mode 100644 antdv-demo/docs/table/demo/row-selection.md
create mode 100644 antdv-demo/docs/table/demo/size.md
create mode 100644 antdv-demo/docs/table/demo/template.md
create mode 100644 antdv-demo/docs/table/index.en-US.md
create mode 100644 antdv-demo/docs/table/index.zh-CN.md
create mode 100644 antdv-demo/docs/tabs/demo/basic.md
create mode 100644 antdv-demo/docs/tabs/demo/card-top.md
create mode 100644 antdv-demo/docs/tabs/demo/card.md
create mode 100644 antdv-demo/docs/tabs/demo/custom-add-trigger.md
create mode 100644 antdv-demo/docs/tabs/demo/custom-tab-bar.md
create mode 100644 antdv-demo/docs/tabs/demo/disabled.md
create mode 100644 antdv-demo/docs/tabs/demo/editable-card.md
create mode 100644 antdv-demo/docs/tabs/demo/extra.md
create mode 100644 antdv-demo/docs/tabs/demo/icon.md
create mode 100644 antdv-demo/docs/tabs/demo/index.vue
create mode 100644 antdv-demo/docs/tabs/demo/nest.md
create mode 100644 antdv-demo/docs/tabs/demo/position.md
create mode 100644 antdv-demo/docs/tabs/demo/size.md
create mode 100644 antdv-demo/docs/tabs/demo/slide.md
create mode 100644 antdv-demo/docs/tabs/index.en-US.md
create mode 100644 antdv-demo/docs/tabs/index.zh-CN.md
create mode 100644 antdv-demo/docs/tag/demo/basic.md
create mode 100644 antdv-demo/docs/tag/demo/checkable.md
create mode 100644 antdv-demo/docs/tag/demo/colorful.md
create mode 100644 antdv-demo/docs/tag/demo/control.md
create mode 100644 antdv-demo/docs/tag/demo/controlled.md
create mode 100644 antdv-demo/docs/tag/demo/hot-tags.md
create mode 100644 antdv-demo/docs/tag/demo/index.vue
create mode 100644 antdv-demo/docs/tag/index.en-US.md
create mode 100644 antdv-demo/docs/tag/index.zh-CN.md
create mode 100644 antdv-demo/docs/test/demo/index.vue
create mode 100644 antdv-demo/docs/time-picker/demo/12hours.md
create mode 100644 antdv-demo/docs/time-picker/demo/addon.md
create mode 100644 antdv-demo/docs/time-picker/demo/basic.md
create mode 100644 antdv-demo/docs/time-picker/demo/disabled.md
create mode 100644 antdv-demo/docs/time-picker/demo/hide-column.md
create mode 100644 antdv-demo/docs/time-picker/demo/index.vue
create mode 100644 antdv-demo/docs/time-picker/demo/interval-options.md
create mode 100644 antdv-demo/docs/time-picker/demo/size.md
create mode 100644 antdv-demo/docs/time-picker/demo/suffix.md
create mode 100644 antdv-demo/docs/time-picker/demo/value.md
create mode 100644 antdv-demo/docs/time-picker/index.en-US.md
create mode 100644 antdv-demo/docs/time-picker/index.zh-CN.md
create mode 100644 antdv-demo/docs/timeline/demo/alternate.md
create mode 100644 antdv-demo/docs/timeline/demo/basic.md
create mode 100644 antdv-demo/docs/timeline/demo/color.md
create mode 100644 antdv-demo/docs/timeline/demo/custom.md
create mode 100644 antdv-demo/docs/timeline/demo/index.vue
create mode 100644 antdv-demo/docs/timeline/demo/pending.md
create mode 100644 antdv-demo/docs/timeline/demo/right.md
create mode 100644 antdv-demo/docs/timeline/index.en-US.md
create mode 100644 antdv-demo/docs/timeline/index.zh-CN.md
create mode 100644 antdv-demo/docs/tooltip/demo/arrow-point-at-center.md
create mode 100644 antdv-demo/docs/tooltip/demo/auto-adjust-overflow.md
create mode 100644 antdv-demo/docs/tooltip/demo/basic.md
create mode 100644 antdv-demo/docs/tooltip/demo/index.vue
create mode 100644 antdv-demo/docs/tooltip/demo/placement.md
create mode 100644 antdv-demo/docs/tooltip/index.en-US.md
create mode 100644 antdv-demo/docs/tooltip/index.zh-CN.md
create mode 100644 antdv-demo/docs/transfer/demo/advanced.md
create mode 100644 antdv-demo/docs/transfer/demo/basic.md
create mode 100644 antdv-demo/docs/transfer/demo/custom-item.md
create mode 100644 antdv-demo/docs/transfer/demo/index.vue
create mode 100644 antdv-demo/docs/transfer/demo/large-data.md
create mode 100644 antdv-demo/docs/transfer/demo/search.md
create mode 100644 antdv-demo/docs/transfer/demo/table-transfer.md
create mode 100644 antdv-demo/docs/transfer/demo/tree-transfer.md
create mode 100644 antdv-demo/docs/transfer/index.en-US.md
create mode 100644 antdv-demo/docs/transfer/index.zh-CN.md
create mode 100644 antdv-demo/docs/tree-select/demo/async.md
create mode 100644 antdv-demo/docs/tree-select/demo/basic.md
create mode 100644 antdv-demo/docs/tree-select/demo/checkable.md
create mode 100644 antdv-demo/docs/tree-select/demo/index.vue
create mode 100644 antdv-demo/docs/tree-select/demo/multiple.md
create mode 100644 antdv-demo/docs/tree-select/demo/suffix.md
create mode 100644 antdv-demo/docs/tree-select/demo/treeData.md
create mode 100644 antdv-demo/docs/tree-select/index.en-US.md
create mode 100644 antdv-demo/docs/tree-select/index.zh-CN.md
create mode 100644 antdv-demo/docs/tree/demo/basic-controlled.md
create mode 100644 antdv-demo/docs/tree/demo/basic.md
create mode 100644 antdv-demo/docs/tree/demo/customized-icon.md
create mode 100644 antdv-demo/docs/tree/demo/directory.md
create mode 100644 antdv-demo/docs/tree/demo/draggable.md
create mode 100644 antdv-demo/docs/tree/demo/dynamic.md
create mode 100644 antdv-demo/docs/tree/demo/index.vue
create mode 100644 antdv-demo/docs/tree/demo/line.md
create mode 100644 antdv-demo/docs/tree/demo/replaceFields.md
create mode 100644 antdv-demo/docs/tree/demo/search.md
create mode 100644 antdv-demo/docs/tree/demo/switcher-icon.md
create mode 100644 antdv-demo/docs/tree/index.en-US.md
create mode 100644 antdv-demo/docs/tree/index.zh-CN.md
create mode 100644 antdv-demo/docs/upload/demo/avatar.md
create mode 100644 antdv-demo/docs/upload/demo/basic copy 3.md
create mode 100644 antdv-demo/docs/upload/demo/basic.md
create mode 100644 antdv-demo/docs/upload/demo/defaultFileList.md
create mode 100644 antdv-demo/docs/upload/demo/directory.md
create mode 100644 antdv-demo/docs/upload/demo/drag.md
create mode 100644 antdv-demo/docs/upload/demo/fileList.md
create mode 100644 antdv-demo/docs/upload/demo/index.vue
create mode 100644 antdv-demo/docs/upload/demo/picture-card.md
create mode 100644 antdv-demo/docs/upload/demo/picture-style.md
create mode 100644 antdv-demo/docs/upload/demo/preview-file.md
create mode 100644 antdv-demo/docs/upload/demo/transform-file.md
create mode 100644 antdv-demo/docs/upload/demo/upload-manually.md
create mode 100644 antdv-demo/docs/upload/index.en-US.md
create mode 100644 antdv-demo/docs/upload/index.zh-CN.md
create mode 100644 antdv-demo/layouts/BaseLayout.vue
create mode 100755 antdv-demo/layouts/UserLayout.less
create mode 100644 antdv-demo/layouts/UserLayout.vue
create mode 100644 antdv-demo/locale/en-US.js
create mode 100644 antdv-demo/locale/zh-CN.js
create mode 100644 antdv-demo/mock/user.js
create mode 100644 antdv-demo/package.json
create mode 100644 antdv-demo/postcss.config.js
create mode 100644 antdv-demo/public/404.html
create mode 100644 antdv-demo/public/ant-design-vue.svg
create mode 100644 antdv-demo/public/index.html
create mode 100644 antdv-demo/public/logo.png
create mode 100644 antdv-demo/public/logo.svg
create mode 100644 antdv-demo/scripts/gulpfile.js
create mode 100644 antdv-demo/scripts/prettier.js
create mode 100644 antdv-demo/scripts/run.js
create mode 100644 antdv-demo/services/login.js
create mode 100644 antdv-demo/services/user.js
create mode 100644 antdv-demo/site/components.js
create mode 100644 antdv-demo/site/demo.js
create mode 100644 antdv-demo/site/demoRoutes.js
create mode 100644 antdv-demo/site/i18n.js
create mode 100644 antdv-demo/site/index.js
create mode 100644 antdv-demo/site/index.less
create mode 100644 antdv-demo/site/otherRoutes.js
create mode 100644 antdv-demo/site/router.js
create mode 100644 antdv-demo/store/index.js
create mode 100644 antdv-demo/store/user.js
create mode 100644 antdv-demo/theme/en-US.js
create mode 100644 antdv-demo/theme/static/colors.less
create mode 100644 antdv-demo/theme/static/common.less
create mode 100644 antdv-demo/theme/static/demo.less
create mode 100644 antdv-demo/theme/static/docsearch.less
create mode 100644 antdv-demo/theme/static/footer.less
create mode 100644 antdv-demo/theme/static/header.less
create mode 100644 antdv-demo/theme/static/highlight.less
create mode 100644 antdv-demo/theme/static/home.less
create mode 100644 antdv-demo/theme/static/icons.less
create mode 100644 antdv-demo/theme/static/index.less
create mode 100644 antdv-demo/theme/static/markdown.less
create mode 100644 antdv-demo/theme/static/mock-browser.less
create mode 100644 antdv-demo/theme/static/motion.less
create mode 100644 antdv-demo/theme/static/new-version-info-modal.less
create mode 100644 antdv-demo/theme/static/not-found.less
create mode 100644 antdv-demo/theme/static/nprogress.less
create mode 100644 antdv-demo/theme/static/page-nav.less
create mode 100644 antdv-demo/theme/static/preview-img.less
create mode 100644 antdv-demo/theme/static/resource.less
create mode 100644 antdv-demo/theme/static/responsive.less
create mode 100644 antdv-demo/theme/static/theme.less
create mode 100644 antdv-demo/theme/static/toc.less
create mode 100644 antdv-demo/theme/template/IconDisplay/Category.jsx
create mode 100644 antdv-demo/theme/template/IconDisplay/CopyableIcon.vue
create mode 100644 antdv-demo/theme/template/IconDisplay/fields.js
create mode 100644 antdv-demo/theme/template/IconDisplay/index.jsx
create mode 100644 antdv-demo/theme/template/IconDisplay/themeIcons.jsx
create mode 100644 antdv-demo/theme/zh-CN.js
create mode 100644 antdv-demo/utils/request.js
create mode 100644 antdv-demo/utils/util.js
create mode 100644 antdv-demo/views/jobs.vue
create mode 100644 antdv-demo/views/user/login/components/Login.vue
create mode 100644 antdv-demo/views/user/login/components/LoginItem.jsx
create mode 100644 antdv-demo/views/user/login/components/LoginSubmit.vue
create mode 100644 antdv-demo/views/user/login/components/LoginTab.vue
create mode 100644 antdv-demo/views/user/login/components/WrapFormItem.vue
create mode 100644 antdv-demo/views/user/login/components/index.js
create mode 100644 antdv-demo/views/user/login/components/index.less
create mode 100644 antdv-demo/views/user/login/components/map.jsx
create mode 100644 antdv-demo/views/user/login/index.vue
create mode 100644 antdv-demo/views/user/login/locales/en-US.js
create mode 100644 antdv-demo/views/user/login/locales/zh-CN.js
create mode 100644 antdv-demo/views/user/login/model.js
create mode 100644 antdv-demo/views/user/login/service.js
create mode 100644 antdv-demo/views/user/login/style.less
create mode 100644 antdv-demo/views/user/login/utils/utils.js
create mode 100644 antdv-demo/views/user/register-result/index.vue
create mode 100644 antdv-demo/views/user/register-result/locales/en-US.js
create mode 100644 antdv-demo/views/user/register-result/locales/zh-CN.js
create mode 100644 antdv-demo/views/user/register-result/style.less
create mode 100644 antdv-demo/views/user/register/index.vue
create mode 100644 antdv-demo/views/user/register/locales/en-US.js
create mode 100644 antdv-demo/views/user/register/locales/zh-CN.js
create mode 100644 antdv-demo/views/user/register/model.js
create mode 100644 antdv-demo/views/user/register/service.js
create mode 100644 antdv-demo/views/user/register/style.less
create mode 100644 antdv-demo/views/vip.vue
create mode 100644 antdv-demo/vueDocs/customize-theme.en-US.md
create mode 100644 antdv-demo/vueDocs/customize-theme.zh-CN.md
create mode 100644 antdv-demo/vueDocs/download.en-US.md
create mode 100644 antdv-demo/vueDocs/download.zh-CN.md
create mode 100644 antdv-demo/vueDocs/faq.en-US.md
create mode 100644 antdv-demo/vueDocs/faq.zh-CN.md
create mode 100644 antdv-demo/vueDocs/getting-started.en-US.md
create mode 100644 antdv-demo/vueDocs/getting-started.zh-CN.md
create mode 100644 antdv-demo/vueDocs/i18n.en-US.md
create mode 100644 antdv-demo/vueDocs/i18n.zh-CN.md
create mode 100644 antdv-demo/vueDocs/introduce.en-US.md
create mode 100644 antdv-demo/vueDocs/introduce.zh-CN.md
create mode 100644 antdv-demo/vueDocs/sponsor.en-US.md
create mode 100644 antdv-demo/vueDocs/sponsor.zh-CN.md
create mode 100644 antdv-demo/vueDocs/use-with-vue-cli.en-US.md
create mode 100644 antdv-demo/vueDocs/use-with-vue-cli.zh-CN.md
diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 135820499..45dcb53e6 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -44,14 +44,6 @@ jobs:
with:
token: ${{ secrets.ACCESS_TOKEN }}
- - name: Checkout submodules
- uses: actions/checkout@v2
- with:
- repository: tangjinzhou/antdv-demo
- token: ${{ secrets.ACCESS_TOKEN }}
- path: antdv-demo
- submodules: true
-
- name: restore cache from package-lock.json
uses: actions/cache@v1
with:
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 7f234816c..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "antdv-demo"]
- path = antdv-demo
- url = git@github.com:tangjinzhou/antdv-demo.git
diff --git a/antdv-demo/.babelrc b/antdv-demo/.babelrc
new file mode 100644
index 000000000..1321e4c34
--- /dev/null
+++ b/antdv-demo/.babelrc
@@ -0,0 +1,14 @@
+{
+ "env": {
+ "test": {
+ "presets": [["env", { "targets": { "node": "current" } }]],
+ "plugins": [
+ "transform-vue-jsx",
+ "transform-object-assign",
+ "transform-object-rest-spread",
+ "transform-class-properties",
+ "transform-runtime"
+ ]
+ }
+ }
+}
diff --git a/antdv-demo/.editorconfig b/antdv-demo/.editorconfig
new file mode 100644
index 000000000..4c7f8a8ef
--- /dev/null
+++ b/antdv-demo/.editorconfig
@@ -0,0 +1,11 @@
+# 🎨 editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+insert_final_newline = true
\ No newline at end of file
diff --git a/antdv-demo/.eslintignore b/antdv-demo/.eslintignore
new file mode 100644
index 000000000..de421fd3e
--- /dev/null
+++ b/antdv-demo/.eslintignore
@@ -0,0 +1,8 @@
+node_modules/
+**/*.spec.*
+**/style/
+*.html
+/components/test/*
+_site/
+dist/
+package.json
diff --git a/antdv-demo/.eslintrc b/antdv-demo/.eslintrc
new file mode 100644
index 000000000..6d1be14cc
--- /dev/null
+++ b/antdv-demo/.eslintrc
@@ -0,0 +1,53 @@
+{
+ "root": true,
+ "env": {
+ "browser": true,
+ "node": true,
+ "jasmine": true,
+ "jest": true,
+ "es6": true
+ },
+ "parserOptions": {
+ "parser": "babel-eslint"
+ },
+ "extends": ["plugin:vue/recommended", "prettier"],
+ "plugins": ["markdown"],
+ "overrides": [
+ {
+ "files": ["**/demo/*.md"],
+ "processor": "markdown/markdown",
+ "rules": {
+ "no-console": "off"
+ }
+ }
+ ],
+ "rules": {
+ "comma-dangle": [2, "always-multiline"],
+ "no-var": "error",
+ "no-console": [2, { "allow": ["warn", "error"] }],
+ "object-shorthand": 2,
+ "no-unused-vars": [2, { "ignoreRestSiblings": true, "argsIgnorePattern": "^h$" }],
+ "no-undef": 2,
+ "camelcase": "off",
+ "no-extra-boolean-cast": "off",
+ "semi": ["error", "always"],
+ "vue/require-prop-types": "off",
+ "vue/require-default-prop": "off",
+ "vue/no-reserved-keys": "off",
+ "vue/comment-directive": "off",
+ "vue/prop-name-casing": "off",
+ "vue/max-attributes-per-line": [
+ 2,
+ {
+ "singleline": 20,
+ "multiline": {
+ "max": 1,
+ "allowFirstLine": false
+ }
+ }
+ ]
+ },
+ "globals": {
+ "h": true
+ }
+}
diff --git a/antdv-demo/.gitignore b/antdv-demo/.gitignore
new file mode 100644
index 000000000..1b91ad56b
--- /dev/null
+++ b/antdv-demo/.gitignore
@@ -0,0 +1,109 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# Next.js build output
+.next
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and *not* Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+site/dev.js
+_site/
+package-lock.json
+testDemo/
diff --git a/antdv-demo/.huskyrc b/antdv-demo/.huskyrc
new file mode 100644
index 000000000..1a7c5875b
--- /dev/null
+++ b/antdv-demo/.huskyrc
@@ -0,0 +1,7 @@
+{
+ "hooks": {
+ "pre-commit": "pretty-quick --staged",
+ "pre-publish": "npm run lint",
+ "commit-msg": "commitlint -x @commitlint/config-conventional -e $GIT_PARAMS"
+ }
+}
diff --git a/antdv-demo/.prettierignore b/antdv-demo/.prettierignore
new file mode 100644
index 000000000..6a0eec280
--- /dev/null
+++ b/antdv-demo/.prettierignore
@@ -0,0 +1,29 @@
+**/*.svg
+package.json
+lib/
+es/
+dist/
+_site/
+coverage/
+CNAME
+LICENSE
+yarn.lock
+netlify.toml
+yarn-error.log
+*.sh
+*.snap
+.gitignore
+.npmignore
+.prettierignore
+.DS_Store
+.editorconfig
+.eslintignore
+**/*.yml
+components/style/color/*.less
+**/assets
+.gitattributes
+.stylelintrc
+.vcmrc
+.png
+.npmrc.template
+.huskyrc
diff --git a/antdv-demo/.prettierrc b/antdv-demo/.prettierrc
new file mode 100644
index 000000000..84d393d19
--- /dev/null
+++ b/antdv-demo/.prettierrc
@@ -0,0 +1,14 @@
+{
+ "singleQuote": true,
+ "trailingComma": "all",
+ "printWidth": 100,
+ "proseWrap": "never",
+ "overrides": [
+ {
+ "files": ".prettierrc",
+ "options": {
+ "parser": "json"
+ }
+ }
+ ]
+}
diff --git a/antdv-demo/.stylelintrc b/antdv-demo/.stylelintrc
new file mode 100644
index 000000000..9d422fb7c
--- /dev/null
+++ b/antdv-demo/.stylelintrc
@@ -0,0 +1,23 @@
+{
+ "extends": ["stylelint-config-standard", "stylelint-config-prettier"],
+ "rules": {
+ "comment-empty-line-before": null,
+ "declaration-empty-line-before": null,
+ "function-comma-newline-after": null,
+ "function-name-case": null,
+ "function-parentheses-newline-inside": null,
+ "function-max-empty-lines": null,
+ "function-whitespace-after": null,
+ "indentation": null,
+ "number-leading-zero": null,
+ "number-no-trailing-zeros": null,
+ "rule-empty-line-before": null,
+ "selector-combinator-space-after": null,
+ "selector-list-comma-newline-after": null,
+ "selector-pseudo-element-colon-notation": null,
+ "unit-no-unknown": null,
+ "value-list-max-empty-lines": null,
+ "font-family-no-missing-generic-family-keyword": null,
+ "no-descending-specificity": null
+ }
+}
diff --git a/antdv-demo/.umirc.mock.js b/antdv-demo/.umirc.mock.js
new file mode 100644
index 000000000..5174e0e9d
--- /dev/null
+++ b/antdv-demo/.umirc.mock.js
@@ -0,0 +1,3 @@
+module.exports = {
+ ...require('./mock/user'),
+};
diff --git a/antdv-demo/build.sh b/antdv-demo/build.sh
new file mode 100644
index 000000000..2f07b2403
--- /dev/null
+++ b/antdv-demo/build.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+rm -rf dist
+mkdir dist
+./node_modules/.bin/webpack --config webpack.site.config.js
+cp dist/index.html index.html
diff --git a/antdv-demo/build/config.js b/antdv-demo/build/config.js
new file mode 100644
index 000000000..e54a2e102
--- /dev/null
+++ b/antdv-demo/build/config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ dev: {
+ componentName: 'form', // dev components
+ },
+};
diff --git a/antdv-demo/build/dev.js b/antdv-demo/build/dev.js
new file mode 100644
index 000000000..d8f76f867
--- /dev/null
+++ b/antdv-demo/build/dev.js
@@ -0,0 +1,213 @@
+process.env.ENTRY_INDEX = 'dev';
+
+const fs = require('fs');
+const path = require('path');
+const chokidar = require('chokidar');
+const importFresh = require('import-fresh');
+const replace = require('json-templater/string');
+const webpack = require('webpack');
+const WebpackDevServer = require('webpack-dev-server');
+const devWebpack = require('./webpack.dev.conf');
+
+const configPath = path.join(__dirname, './config.js');
+
+/**
+ * a-bc-d --> aBcD
+ * @param {string} s
+ */
+const camelize = s => s.replace(/-(\w)/g, ($, $1) => $1.toUpperCase());
+
+/**
+ * radio-group --> radio
+ * @param {string} s
+ */
+const getUpper = s => s.replace(/(-[a-z]*)/g, '');
+
+let { componentName } = require('./config').dev;
+
+const componentsInPrototype = ['Modal', 'message', 'notification'];
+
+const MAIN_TEMPLATE = `import 'babel-polyfill';
+import Vue from 'vue';
+import Vuex from 'vuex';
+import VueI18n from 'vue-i18n';
+import VueRouter from 'vue-router';
+import VueClipboard from 'vue-clipboard2';
+import Md from '../components/md';
+import Api from '../components/api';
+import demoBox from '../components/demoBox';
+import demoSort from '../components/demoSort';
+import demoContainer from '../components/demoContainer';
+import { message, notification } from 'ant-design-vue';
+{{importComponents}}
+{{importStyles}}
+import 'ant-design-vue/es/message/style';
+import 'ant-design-vue/es/notification/style';
+import Test from '../docs/{{name}}/demo/index.vue';
+import zhCN from '../theme/zh-CN';
+import enUS from '../theme/en-US';
+import './index.less';
+
+Vue.use(Vuex);
+Vue.use(VueClipboard);
+Vue.use(VueRouter);
+Vue.use(VueI18n);
+Vue.component(Md.name, Md);
+Vue.component(Api.name, Api);
+Vue.component('demo-box', demoBox);
+Vue.component('demo-sort', demoSort);
+Vue.component('demo-container', demoContainer);
+
+Vue.prototype.$message = message;
+Vue.prototype.$notification = notification;
+Vue.prototype.$info = Modal.info;
+Vue.prototype.$success = Modal.success;
+Vue.prototype.$error = Modal.error;
+Vue.prototype.$warning = Modal.warning;
+Vue.prototype.$confirm = Modal.confirm;
+Vue.prototype.$destroyAll = Modal.destroyAll;
+Vue.prototype.$form = Form;
+
+Vue.use(Modal);
+{{install}}
+
+const i18n = new VueI18n({
+ locale: enUS.locale,
+ messages: {
+ [enUS.locale]: { message: enUS.messages },
+ [zhCN.locale]: { message: zhCN.messages },
+ },
+});
+
+const router = new VueRouter({
+ mode: 'history',
+ routes: [{
+ path: '/test',
+ component: () => import('../testDemo/index.vue'),
+ }, {
+ path: '/*', component: Test
+ }],
+});
+
+const store = new Vuex.Store({
+ state: {
+ username: 'zeka',
+ },
+ mutations: {
+ update(state, payload) {
+ state.username = payload.username;
+ },
+ },
+});
+new Vue({
+ el: '#app',
+ i18n,
+ router,
+ store,
+});
+`;
+
+const OUTPUT_PATH = path.join(__dirname, '../site/dev.js');
+
+const generateEntry = components =>
+ Object.keys(components)
+ .map(component => `import ${component} from 'ant-design-vue/es/${components[component]}';`)
+ .join('\n');
+
+const generateStyles = components =>
+ Object.keys(components)
+ .map(component => `import 'ant-design-vue/es/${components[component]}/style';`)
+ .join('\n');
+
+const generateInstall = components =>
+ Object.keys(components)
+ .map(component => `Vue.use(${component});`)
+ .join('\n');
+
+const renderTemplate = name => {
+ const components = {
+ Tooltip: 'tooltip', // for DemoBox
+ Icon: 'icon', // Basic
+ Form: 'form',
+ Modal: 'modal',
+ };
+
+ const demoPaths = fs
+ .readdirSync(path.join(__dirname, `../docs/${name}/demo`))
+ .map(p => `../docs/${name}/demo/${p}`);
+ const testPaths = fs
+ .readdirSync(path.join(__dirname, `../testDemo`))
+ .map(p => `../testDemo/${p}`);
+ [...demoPaths, ...testPaths].forEach(demoPath => {
+ const demo = fs.readFileSync(path.join(__dirname, demoPath)).toString();
+
+ const componentsInDemo = demo.match(/a-(\w+(-\w+)*)/g) || [];
+ componentsInDemo.forEach(name => {
+ const dirName = name.replace(/^a-/, '');
+ const componentName = camelize(name).replace(/^a/, '');
+ const upperComponentDir = getUpper(dirName);
+ const upperComponentName = upperComponentDir.replace(/^[a-z]/, $ => $.toUpperCase());
+
+ const componentPath = path.join(__dirname, `../../components/${dirName}`);
+ if (fs.existsSync(componentPath)) {
+ if (componentsInPrototype.includes(componentName)) {
+ return;
+ }
+ components[componentName] = dirName;
+ } else if (fs.existsSync(path.join(__dirname, `../../components/${upperComponentDir}`))) {
+ components[upperComponentName] = upperComponentDir;
+ }
+ });
+ });
+
+ const importComponents = generateEntry(components);
+ const importStyles = generateStyles(components);
+ const install = generateInstall(components);
+ const template = replace(MAIN_TEMPLATE, {
+ importComponents,
+ importStyles,
+ install,
+ name,
+ });
+ fs.writeFileSync(OUTPUT_PATH, template);
+};
+
+function fsExistsSync(path) {
+ try {
+ fs.accessSync(path, fs.F_OK);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
+
+if (!fsExistsSync(path.join(__dirname, '../testDemo/index.vue'))) {
+ if (!fsExistsSync(path.join(__dirname, '../testDemo'))) {
+ fs.mkdirSync(path.join(__dirname, '../testDemo'));
+ }
+ fs.writeFileSync(path.join(__dirname, '../testDemo/index.vue'), ` `);
+}
+
+let demoWatcher;
+
+chokidar.watch(configPath, { ignoreInitial: true }).on('change', async () => {
+ ({ componentName } = importFresh(configPath).dev);
+
+ demoWatcher && (await demoWatcher.close());
+
+ demoWatcher = chokidar.watch(path.join(__dirname, `../docs/${componentName}/demo`));
+ demoWatcher.on('change', () => {
+ renderTemplate(componentName);
+ });
+
+ renderTemplate(componentName);
+});
+
+renderTemplate(componentName);
+
+const compiler = webpack(devWebpack);
+
+const configuration = devWebpack.devServer;
+
+const server = new WebpackDevServer(compiler, configuration);
+server.listen(configuration.port);
diff --git a/antdv-demo/build/getBabelCommonConfig.js b/antdv-demo/build/getBabelCommonConfig.js
new file mode 100644
index 000000000..6f392971a
--- /dev/null
+++ b/antdv-demo/build/getBabelCommonConfig.js
@@ -0,0 +1,45 @@
+'use strict';
+
+module.exports = function(modules) {
+ const plugins = [
+ require.resolve('babel-plugin-transform-vue-jsx'),
+ require.resolve('babel-plugin-inline-import-data-uri'),
+ require.resolve('babel-plugin-transform-es3-member-expression-literals'),
+ require.resolve('babel-plugin-transform-es3-property-literals'),
+ require.resolve('babel-plugin-transform-object-assign'),
+ require.resolve('babel-plugin-transform-object-rest-spread'),
+ require.resolve('babel-plugin-transform-class-properties'),
+ ];
+ plugins.push([
+ require.resolve('babel-plugin-transform-runtime'),
+ {
+ polyfill: false,
+ },
+ ]);
+ return {
+ presets: [
+ [
+ require.resolve('babel-preset-env'),
+ {
+ modules,
+ targets: {
+ browsers: [
+ 'last 2 versions',
+ 'Firefox ESR',
+ '> 1%',
+ 'ie >= 9',
+ 'iOS >= 8',
+ 'Android >= 4',
+ ],
+ },
+ },
+ ],
+ ],
+ plugins,
+ env: {
+ test: {
+ plugins: [require.resolve('babel-plugin-istanbul')],
+ },
+ },
+ };
+};
diff --git a/antdv-demo/build/lessLoaderConfig.js b/antdv-demo/build/lessLoaderConfig.js
new file mode 100644
index 000000000..6529ba420
--- /dev/null
+++ b/antdv-demo/build/lessLoaderConfig.js
@@ -0,0 +1,166 @@
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+module.exports = function(env) {
+ const isDev = env === 'development';
+ return {
+ test: /\.less$/,
+ oneOf: [
+ /* config.module.rule('less').oneOf('vue-modules') */
+ {
+ resourceQuery: /module/,
+ use: [
+ isDev
+ ? {
+ loader: 'vue-style-loader',
+ options: {
+ sourceMap: isDev,
+ shadowMode: false,
+ },
+ }
+ : MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap: isDev,
+ importLoaders: 2,
+ modules: {
+ localIdentName: '[name]_[local]_[hash:base64:5]',
+ },
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: isDev,
+ },
+ },
+ {
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ sourceMap: isDev,
+ modifyVars: {},
+ javascriptEnabled: true,
+ },
+ },
+ },
+ ],
+ },
+ /* config.module.rule('less').oneOf('vue') */
+ {
+ resourceQuery: /\?vue/,
+ use: [
+ isDev
+ ? {
+ loader: 'vue-style-loader',
+ options: {
+ sourceMap: isDev,
+ shadowMode: false,
+ },
+ }
+ : MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap: isDev,
+ importLoaders: 2,
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: isDev,
+ },
+ },
+ {
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ sourceMap: isDev,
+ modifyVars: {},
+ javascriptEnabled: true,
+ },
+ },
+ },
+ ],
+ },
+ /* config.module.rule('less').oneOf('normal-modules') */
+ {
+ test: /\.module\.\w+$/,
+ use: [
+ isDev
+ ? {
+ loader: 'vue-style-loader',
+ options: {
+ sourceMap: isDev,
+ shadowMode: false,
+ },
+ }
+ : MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap: isDev,
+ importLoaders: 2,
+ modules: {
+ localIdentName: '[name]_[local]_[hash:base64:5]',
+ },
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: isDev,
+ },
+ },
+ {
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ sourceMap: isDev,
+ modifyVars: {},
+ javascriptEnabled: true,
+ },
+ },
+ },
+ ],
+ },
+ /* config.module.rule('less').oneOf('normal') */
+ {
+ use: [
+ isDev
+ ? {
+ loader: 'vue-style-loader',
+ options: {
+ sourceMap: isDev,
+ shadowMode: false,
+ },
+ }
+ : MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ sourceMap: isDev,
+ importLoaders: 2,
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: isDev,
+ },
+ },
+ {
+ loader: 'less-loader',
+ options: {
+ lessOptions: {
+ sourceMap: isDev,
+ modifyVars: {},
+ javascriptEnabled: true,
+ },
+ },
+ },
+ ],
+ },
+ ],
+ };
+};
diff --git a/antdv-demo/build/webpack.base.conf.js b/antdv-demo/build/webpack.base.conf.js
new file mode 100644
index 000000000..c7417d03d
--- /dev/null
+++ b/antdv-demo/build/webpack.base.conf.js
@@ -0,0 +1,226 @@
+const path = require('path');
+const webpack = require('webpack');
+const Prism = require('prismjs');
+require('prismjs/components/prism-jsx.min.js');
+require('prismjs/components/prism-bash.min.js');
+require('prismjs/components/prism-json.min.js');
+require('prismjs/components/prism-diff.min.js');
+require('prismjs/components/prism-less.min.js');
+const Token = require('markdown-it/lib/token');
+const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
+const cheerio = require('cheerio');
+const WebpackBar = require('webpackbar');
+const VueLoaderPlugin = require('vue-loader/lib/plugin');
+const getBabelCommonConfig = require('./getBabelCommonConfig');
+const babelConfig = getBabelCommonConfig(false);
+
+babelConfig.plugins.push(require.resolve('babel-plugin-syntax-dynamic-import'));
+
+const fetch = (str, tag, scoped) => {
+ const $ = cheerio.load(str, {
+ decodeEntities: false,
+ xmlMode: true,
+ });
+ if (!tag) {
+ return str;
+ }
+ if (tag === 'style') {
+ return scoped
+ ? $(`${tag}[scoped]`).html()
+ : $(`${tag}`)
+ .not(`${tag}[scoped]`)
+ .html();
+ }
+ return $(tag).html();
+};
+
+/**
+ * `{{ }}` => `{{ }} `
+ * @param {string} str
+ * @return {string}
+ */
+const replaceDelimiters = function(str) {
+ return str.replace(/({{|}})/g, '$1 ');
+};
+
+/**
+ * renderHighlight
+ * @param {string} str
+ * @param {string} lang
+ */
+
+const renderHighlight = function(str, lang) {
+ if (!(lang && Prism.languages[lang])) {
+ return '';
+ }
+
+ try {
+ return replaceDelimiters(Prism.highlight(str, Prism.languages[lang], lang));
+ } catch (err) {}
+};
+
+const md = require('markdown-it')('default', {
+ html: true,
+ breaks: true,
+ highlight: renderHighlight,
+}).use(require('markdown-it-anchor'), {
+ level: 2,
+ slugify: string =>
+ string
+ .trim()
+ .split(' ')
+ .join('-'),
+ permalink: true,
+ // renderPermalink: (slug, opts, state, permalink) => {},
+ permalinkClass: 'anchor',
+ permalinkSymbol: '#',
+ permalinkBefore: false,
+});
+// md.renderer.rules.fence = wrap(md.renderer.rules.fence)
+const cnReg = new RegExp('<(cn)(?:[^<]|<)+\\1>', 'g');
+const usReg = new RegExp('<(us)(?:[^<]|<)+\\1>', 'g');
+md.core.ruler.push('update_template', function replace({ tokens }) {
+ let cn = '';
+ let us = '';
+ let template = '';
+ let script = '';
+ let style = '';
+ let scopedStyle = '';
+ let code = '';
+ let sourceCode = '';
+ tokens.forEach(token => {
+ if (token.type === 'html_block') {
+ if (token.content.match(cnReg)) {
+ cn = fetch(token.content, 'cn');
+ token.content = '';
+ }
+ if (token.content.match(usReg)) {
+ us = fetch(token.content, 'us');
+ token.content = '';
+ }
+ }
+ if (token.type === 'fence' && token.info === 'vue' && token.markup === '```') {
+ sourceCode = token.content;
+ code = '```html\n' + token.content + '```';
+ template = fetch(token.content, 'template');
+ script = fetch(token.content, 'script');
+ style = fetch(token.content, 'style');
+ scopedStyle = fetch(token.content, 'style', true);
+ token.content = '';
+ token.type = 'html_block';
+ }
+ });
+ if (template) {
+ let jsfiddle = {
+ us,
+ cn,
+ sourceCode: Buffer.from(sourceCode).toString('base64'),
+ };
+ jsfiddle = md.utils.escapeHtml(JSON.stringify(jsfiddle));
+ const codeHtml = code ? md.render(code.replace(/@/g, '__at__')).replace(/__at__/g, '@') : '';
+ const cnHtml = cn ? md.render(cn) : '';
+ let newContent = `
+
+
+ ${template}
+ ${cnHtml}
+ ${us ? md.render(us) : ''}
+ ${Buffer.from(codeHtml).toString('base64')}
+
+ `;
+ newContent += script
+ ? `
+
+ `
+ : '';
+ newContent += style ? `` : '';
+ newContent += scopedStyle ? `` : '';
+ const t = new Token('html_block', '', 0);
+ t.content = newContent;
+ tokens.push(t);
+ }
+});
+const vueLoaderOptions = {
+ loaders: {
+ js: [
+ {
+ loader: 'babel-loader',
+ options: {
+ presets: ['env'],
+ plugins: ['transform-vue-jsx', 'transform-object-rest-spread'],
+ },
+ },
+ ],
+ },
+};
+module.exports = {
+ mode: 'production',
+ entry: {
+ index: [`./site/${process.env.ENTRY_INDEX || 'index'}.js`],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.md$/,
+ use: [
+ {
+ loader: 'vue-loader',
+ options: vueLoaderOptions,
+ },
+ {
+ loader: 'vue-antd-md-loader',
+ options: Object.assign(md, {
+ wrapper: 'div',
+ raw: true,
+ }),
+ },
+ ],
+ },
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ options: vueLoaderOptions,
+ },
+ {
+ test: /\.(js|jsx)$/,
+ loader: 'babel-loader',
+ exclude: /node_modules/,
+ options: babelConfig,
+ },
+ {
+ test: /\.(png|jpg|gif|svg)$/,
+ loader: 'file-loader',
+ options: {
+ name: '[name].[ext]?[hash]',
+ },
+ },
+ ],
+ },
+ resolve:
+ process.env.NODE_ENV === 'development'
+ ? {
+ modules: ['node_modules', path.join(__dirname, '../node_modules')],
+ extensions: ['.js', '.jsx', '.vue', '.md'],
+ alias: {
+ vue$: 'vue/dist/vue.esm.js',
+ 'ant-design-vue$': path.join(__dirname, '../../components/index.js'),
+ 'ant-design-vue/es': path.join(__dirname, '../../components'),
+ 'ant-design-vue/lib': path.join(__dirname, '../../components'),
+ },
+ }
+ : {
+ modules: ['node_modules'],
+ extensions: ['.js', '.jsx', '.vue', '.md'],
+ alias: {
+ vue$: 'vue/dist/vue.esm.js',
+ },
+ },
+ plugins: [
+ new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
+ new VueLoaderPlugin(),
+ new WebpackBar(),
+ new HardSourceWebpackPlugin(),
+ ],
+};
diff --git a/antdv-demo/build/webpack.dev.conf.js b/antdv-demo/build/webpack.dev.conf.js
new file mode 100644
index 000000000..3f4b5ae2a
--- /dev/null
+++ b/antdv-demo/build/webpack.dev.conf.js
@@ -0,0 +1,59 @@
+const path = require('path');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const merge = require('webpack-merge');
+const baseWebpackConfig = require('./webpack.base.conf');
+const lessLoaderConfig = require('./lessLoaderConfig');
+const { createMockMiddleware } = require('umi-mock-middleware');
+
+module.exports = merge(baseWebpackConfig, {
+ mode: 'development',
+ output: {
+ path: path.resolve(__dirname, '../dist'),
+ publicPath: '/',
+ filename: 'build.js',
+ },
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: ['vue-style-loader', 'css-loader'],
+ },
+ lessLoaderConfig('development'),
+ ],
+ },
+ devServer: {
+ port: process.env.PORT || 3000,
+ host: '0.0.0.0',
+ historyApiFallback: {
+ rewrites: [{ from: /./, to: '/index.html' }],
+ },
+ disableHostCheck: true,
+ hot: true,
+ open: true,
+ headers: { 'Access-Control-Allow-Origin': '*' },
+ // 解析body,对接真实服务端环境需要注释掉
+ before(app) {
+ // var bodyParser = require("body-parser");
+ // app.use(bodyParser.json());
+ if (process.env.MOCK !== 'none') {
+ app.use(createMockMiddleware());
+ }
+ },
+ proxy: {
+ '/api': {
+ target: 'http://localhost:3000',
+ },
+ },
+ },
+ performance: {
+ hints: false,
+ },
+ devtool: '#source-map',
+ plugins: [
+ new HtmlWebpackPlugin({
+ template: 'public/index.html',
+ filename: 'index.html',
+ inject: true,
+ }),
+ ],
+});
diff --git a/antdv-demo/build/webpack.site.conf.js b/antdv-demo/build/webpack.site.conf.js
new file mode 100644
index 000000000..7ced9e45b
--- /dev/null
+++ b/antdv-demo/build/webpack.site.conf.js
@@ -0,0 +1,64 @@
+const path = require('path');
+const webpack = require('webpack');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const TerserJSPlugin = require('terser-webpack-plugin');
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const merge = require('webpack-merge');
+const baseWebpackConfig = require('./webpack.base.conf');
+let lessLoaderConfig = require('./lessLoaderConfig')('production');
+
+module.exports = merge(baseWebpackConfig, {
+ output: {
+ path: path.resolve(__dirname, '../_site'),
+ publicPath: 'https://alicdn.antdv.com/v1/',
+ filename: '[name].[contenthash:8].js',
+ chunkFilename: '[contenthash:8].async.js',
+ },
+ module: {
+ rules: [
+ lessLoaderConfig,
+ {
+ test: /\.css$/,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'],
+ },
+ ],
+ },
+ optimization: {
+ splitChunks: {
+ cacheGroups: {
+ vendors: {
+ name: `chunk-vendors`,
+ test: /[\\/]node_modules[\\/]/,
+ priority: -10,
+ chunks: 'initial',
+ },
+ common: {
+ name: `chunk-common`,
+ minChunks: 2,
+ priority: -20,
+ chunks: 'initial',
+ reuseExistingChunk: true,
+ },
+ },
+ },
+ minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': {
+ NODE_ENV: '"production"',
+ },
+ }),
+ new HtmlWebpackPlugin({
+ template: './public/index.html',
+ inject: true,
+ production: true,
+ }),
+ new MiniCssExtractPlugin({
+ filename: '[name].[contenthash:8].css',
+ chunkFilename: '[id].[contenthash:8].css',
+ }),
+ ],
+});
diff --git a/antdv-demo/components/CarbonAds.vue b/antdv-demo/components/CarbonAds.vue
new file mode 100644
index 000000000..b6e6a2840
--- /dev/null
+++ b/antdv-demo/components/CarbonAds.vue
@@ -0,0 +1,124 @@
+
+
diff --git a/antdv-demo/components/GoogleAds.vue b/antdv-demo/components/GoogleAds.vue
new file mode 100644
index 000000000..170ec7688
--- /dev/null
+++ b/antdv-demo/components/GoogleAds.vue
@@ -0,0 +1,36 @@
+
diff --git a/antdv-demo/components/GoogleAds1.vue b/antdv-demo/components/GoogleAds1.vue
new file mode 100644
index 000000000..4d5438639
--- /dev/null
+++ b/antdv-demo/components/GoogleAds1.vue
@@ -0,0 +1,35 @@
+
diff --git a/antdv-demo/components/GoogleAds2.vue b/antdv-demo/components/GoogleAds2.vue
new file mode 100644
index 000000000..860157067
--- /dev/null
+++ b/antdv-demo/components/GoogleAds2.vue
@@ -0,0 +1,35 @@
+
diff --git a/antdv-demo/components/GoogleAdsMin.vue b/antdv-demo/components/GoogleAdsMin.vue
new file mode 100644
index 000000000..f691fe0b0
--- /dev/null
+++ b/antdv-demo/components/GoogleAdsMin.vue
@@ -0,0 +1,34 @@
+
diff --git a/antdv-demo/components/GoogleAdsTop.vue b/antdv-demo/components/GoogleAdsTop.vue
new file mode 100644
index 000000000..46bb509b7
--- /dev/null
+++ b/antdv-demo/components/GoogleAdsTop.vue
@@ -0,0 +1,35 @@
+
diff --git a/antdv-demo/components/api.vue b/antdv-demo/components/api.vue
new file mode 100644
index 000000000..62e8ec56c
--- /dev/null
+++ b/antdv-demo/components/api.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/components/demoBox.vue b/antdv-demo/components/demoBox.vue
new file mode 100644
index 000000000..523c988fd
--- /dev/null
+++ b/antdv-demo/components/demoBox.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
diff --git a/antdv-demo/components/demoContainer.vue b/antdv-demo/components/demoContainer.vue
new file mode 100644
index 000000000..baa52157d
--- /dev/null
+++ b/antdv-demo/components/demoContainer.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ codeStr }}
+
+
+
+
+
+
diff --git a/antdv-demo/components/demoSort.jsx b/antdv-demo/components/demoSort.jsx
new file mode 100644
index 000000000..802930c90
--- /dev/null
+++ b/antdv-demo/components/demoSort.jsx
@@ -0,0 +1,49 @@
+import { Col, Row } from '../../components/grid';
+import '../../components/grid/style';
+function isEmptyElement(c) {
+ return !(c.tag || (c.text && c.text.trim() !== ''));
+}
+
+function filterEmpty(children = []) {
+ return children.filter(c => !isEmptyElement(c));
+}
+export default {
+ props: {
+ cols: {
+ type: [Number, String],
+ default: 2,
+ },
+ },
+ inject: {
+ demoContext: { default: {} },
+ },
+ render() {
+ const { cols, $slots } = this;
+ const isSingleCol = cols === 1;
+ const leftChildren = [];
+ const rightChildren = [];
+ const children = filterEmpty($slots.default);
+ children.forEach((demo, index) => {
+ if (index % 2 === 0 || isSingleCol) {
+ leftChildren.push(demo);
+ } else {
+ rightChildren.push(demo);
+ }
+ });
+ return (
+
+
+ {leftChildren}
+
+ {isSingleCol ? null : (
+
+ {rightChildren}
+
+ )}
+
+ );
+ },
+};
diff --git a/antdv-demo/components/footer.vue b/antdv-demo/components/footer.vue
new file mode 100644
index 000000000..33bcf7203
--- /dev/null
+++ b/antdv-demo/components/footer.vue
@@ -0,0 +1,136 @@
+
diff --git a/antdv-demo/components/geektime.vue b/antdv-demo/components/geektime.vue
new file mode 100644
index 000000000..9e3b5a58c
--- /dev/null
+++ b/antdv-demo/components/geektime.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
diff --git a/antdv-demo/components/geektime_ads.vue b/antdv-demo/components/geektime_ads.vue
new file mode 100644
index 000000000..c21d16d80
--- /dev/null
+++ b/antdv-demo/components/geektime_ads.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
diff --git a/antdv-demo/components/header.vue b/antdv-demo/components/header.vue
new file mode 100644
index 000000000..1234179ed
--- /dev/null
+++ b/antdv-demo/components/header.vue
@@ -0,0 +1,322 @@
+
+
+
diff --git a/antdv-demo/components/iframe.vue b/antdv-demo/components/iframe.vue
new file mode 100644
index 000000000..34e94dd29
--- /dev/null
+++ b/antdv-demo/components/iframe.vue
@@ -0,0 +1,30 @@
+
diff --git a/antdv-demo/components/layout.vue b/antdv-demo/components/layout.vue
new file mode 100644
index 000000000..2a73869fb
--- /dev/null
+++ b/antdv-demo/components/layout.vue
@@ -0,0 +1,374 @@
+
diff --git a/antdv-demo/components/md.vue b/antdv-demo/components/md.vue
new file mode 100644
index 000000000..a2493e178
--- /dev/null
+++ b/antdv-demo/components/md.vue
@@ -0,0 +1,51 @@
+
+
+
+
diff --git a/antdv-demo/components/right_bottom_ad.vue b/antdv-demo/components/right_bottom_ad.vue
new file mode 100644
index 000000000..6df499112
--- /dev/null
+++ b/antdv-demo/components/right_bottom_ad.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/components/sponsors.vue b/antdv-demo/components/sponsors.vue
new file mode 100644
index 000000000..6619c158a
--- /dev/null
+++ b/antdv-demo/components/sponsors.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ 如果您有品牌推广、活动推广、招聘推广、社区合作等需求,欢迎联系我们,成为赞助商。
+ 您的广告将出现在 And Design Vue 文档所有子页面及 GitHub Readme 等页面。
+ 咨询邮箱:antdv@foxmail.com
+
+
+
+
diff --git a/antdv-demo/components/top_ad.vue b/antdv-demo/components/top_ad.vue
new file mode 100644
index 000000000..23d45db59
--- /dev/null
+++ b/antdv-demo/components/top_ad.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/affix/demo/basic.md b/antdv-demo/docs/affix/demo/basic.md
new file mode 100644
index 000000000..ea983b857
--- /dev/null
+++ b/antdv-demo/docs/affix/demo/basic.md
@@ -0,0 +1,38 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### basic
+The simplest usage.
+
+
+```vue
+
+
+
+
+ Affix top
+
+
+
+
+
+ Affix bottom
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/affix/demo/index.vue b/antdv-demo/docs/affix/demo/index.vue
new file mode 100644
index 000000000..6240d9681
--- /dev/null
+++ b/antdv-demo/docs/affix/demo/index.vue
@@ -0,0 +1,44 @@
+
diff --git a/antdv-demo/docs/affix/demo/on-change.md b/antdv-demo/docs/affix/demo/on-change.md
new file mode 100644
index 000000000..ea8571c12
--- /dev/null
+++ b/antdv-demo/docs/affix/demo/on-change.md
@@ -0,0 +1,26 @@
+
+#### 固定状态改变的回调
+可以获得是否固定的状态。
+
+
+
+#### Callback
+Callback with affixed state.
+
+
+```vue
+
+
+ 120px to affix top
+
+
+
+```
diff --git a/antdv-demo/docs/affix/demo/target.md b/antdv-demo/docs/affix/demo/target.md
new file mode 100644
index 000000000..f387de30d
--- /dev/null
+++ b/antdv-demo/docs/affix/demo/target.md
@@ -0,0 +1,34 @@
+
+#### 滚动容器
+用 `target` 设置 `Affix` 需要监听其滚动事件的元素,默认为 `window`。
+
+
+
+#### Container to scroll.
+Set a `target` for 'Affix', which is listen to scroll event of target element (default is `window`).
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/affix/index.en-US.md b/antdv-demo/docs/affix/index.en-US.md
new file mode 100644
index 000000000..a61b3a615
--- /dev/null
+++ b/antdv-demo/docs/affix/index.en-US.md
@@ -0,0 +1,29 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| offsetBottom | Offset from the bottom of the viewport (in pixels) | number | - | |
+| offsetTop | Offset from the top of the viewport (in pixels) | number | 0 | |
+| target | Specifies the scrollable area DOM node | () => HTMLElement | () => window | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | ---------------------------------------- | ----------------- | ------- |
+| change | Callback for when Affix state is changed | Function(affixed) |
+
+**Note:** Children of `Affix` must not have the property `position: absolute`, but you can set `position: absolute` on `Affix` itself:
+
+```html
+
+ ...
+
+```
+
+## FAQ
+
+### Affix bind container with `target`, sometime move out of container.
+
+We don't listen window scroll for performance consideration.
+
+Related issues:[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)
diff --git a/antdv-demo/docs/affix/index.zh-CN.md b/antdv-demo/docs/affix/index.zh-CN.md
new file mode 100644
index 000000000..d6c926ad1
--- /dev/null
+++ b/antdv-demo/docs/affix/index.zh-CN.md
@@ -0,0 +1,29 @@
+## API
+
+| 成员 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | | |
+| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | | |
+| target | 设置 `Affix` 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | () => HTMLElement | () => window | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | ---------------------------- | ----------------- | ---- |
+| change | 固定状态改变时触发的回调函数 | Function(affixed) | 无 | |
+
+**注意:**`Affix` 内的元素不要使用绝对定位,如需要绝对定位的效果,可以直接设置 `Affix` 为绝对定位:
+
+```html
+
+ ...
+
+```
+
+## FAQ
+
+### Affix 使用 `target` 绑定容器时,元素会跑到容器外。
+
+从性能角度考虑,我们只监听容器滚动事件。
+
+相关 issue:[#3938](https://github.com/ant-design/ant-design/issues/3938) [#5642](https://github.com/ant-design/ant-design/issues/5642) [#16120](https://github.com/ant-design/ant-design/issues/16120)
diff --git a/antdv-demo/docs/alert/demo/banner.md b/antdv-demo/docs/alert/demo/banner.md
new file mode 100644
index 000000000..9baadf112
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/banner.md
@@ -0,0 +1,27 @@
+
+#### 顶部公告
+页面顶部通告形式,默认有图标且`type` 为 'warning'。
+
+
+
+#### Banner
+Display Alert as a banner at top of page.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/basic.md b/antdv-demo/docs/alert/demo/basic.md
new file mode 100644
index 000000000..27ed6c37e
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/basic.md
@@ -0,0 +1,15 @@
+
+#### 基本
+最简单的用法,适用于简短的警告提示。
+
+
+
+#### basic
+The simplest usage for short messages.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/closable.md b/antdv-demo/docs/alert/demo/closable.md
new file mode 100644
index 000000000..70d17f81b
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/closable.md
@@ -0,0 +1,38 @@
+
+#### 可关闭的警告提示
+显示关闭按钮,点击可关闭警告提示。
+
+
+
+#### Closable
+To show close button.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/close-text.md b/antdv-demo/docs/alert/demo/close-text.md
new file mode 100644
index 000000000..194fdd4de
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/close-text.md
@@ -0,0 +1,15 @@
+
+#### 自定义关闭
+可以自定义关闭,自定义的文字会替换原先的关闭 `Icon`。
+
+
+
+#### Customized Close Text
+Replace the default icon with customized text.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/custom-icon.md b/antdv-demo/docs/alert/demo/custom-icon.md
new file mode 100644
index 000000000..b5dfce298
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/custom-icon.md
@@ -0,0 +1,63 @@
+
+#### 自定义图标
+可口的图标让信息类型更加醒目。
+
+
+
+#### Custom Icon
+Decent icon make information more clear and more friendly.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/description.md b/antdv-demo/docs/alert/demo/description.md
new file mode 100644
index 000000000..381911e0d
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/description.md
@@ -0,0 +1,36 @@
+
+#### 含有辅助性文字介绍
+含有辅助性文字介绍的警告提示。
+
+
+
+#### Description
+Additional description for alert message.
+
+
+```vue
+
+
+
+
+ Success Description Success Description Success Description
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/icon.md b/antdv-demo/docs/alert/demo/icon.md
new file mode 100644
index 000000000..0f1d6b90a
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/icon.md
@@ -0,0 +1,44 @@
+
+#### 图标
+可口的图标让信息类型更加醒目。
+
+
+
+#### Icon
+Decent icon make information more clear and more friendly.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/index.vue b/antdv-demo/docs/alert/demo/index.vue
new file mode 100644
index 000000000..543c7d84f
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/index.vue
@@ -0,0 +1,61 @@
+
+
diff --git a/antdv-demo/docs/alert/demo/smooth-closed.md b/antdv-demo/docs/alert/demo/smooth-closed.md
new file mode 100644
index 000000000..e7baf9f50
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/smooth-closed.md
@@ -0,0 +1,37 @@
+
+#### 平滑地卸载
+平滑、自然的卸载提示。
+
+
+
+#### Smoothly Unmount
+Smoothly and unaffectedly unmount Alert.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/alert/demo/style.md b/antdv-demo/docs/alert/demo/style.md
new file mode 100644
index 000000000..b64deca99
--- /dev/null
+++ b/antdv-demo/docs/alert/demo/style.md
@@ -0,0 +1,20 @@
+
+#### 四种样式
+共有四种样式 `success`、`info`、`warning`、`error`。
+
+
+
+#### More types
+There are 4 types of Alert: `success`, `info`, `warning`, `error`.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/alert/index.en-US.md b/antdv-demo/docs/alert/index.en-US.md
new file mode 100644
index 000000000..182f31f9b
--- /dev/null
+++ b/antdv-demo/docs/alert/index.en-US.md
@@ -0,0 +1,19 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| afterClose | Called when close animation is finished | () => void | - | - |
+| banner | Whether to show as banner | boolean | false | - |
+| closable | Whether Alert can be closed | boolean | - | - |
+| closeText | Close text to show | string\|slot | - | - |
+| description | Additional content of Alert | string\|slot | - | - |
+| icon | Custom icon, effective when `showIcon` is `true` | vnode \| slot | - | - |
+| message | Content of Alert | string\|slot | - | - |
+| showIcon | Whether to show icon | boolean | false, in `banner` mode default is true | - |
+| type | Type of Alert styles, options: `success`, `info`, `warning`, `error` | string | `info`, in `banner` mode default is `warning` | - |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | ----------------------------- | ----------------------- | ------- |
+| close | Callback when Alert is closed | (e: MouseEvent) => void | - |
diff --git a/antdv-demo/docs/alert/index.zh-CN.md b/antdv-demo/docs/alert/index.zh-CN.md
new file mode 100644
index 000000000..e4461ea1a
--- /dev/null
+++ b/antdv-demo/docs/alert/index.zh-CN.md
@@ -0,0 +1,19 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| afterClose | 关闭动画结束后触发的回调函数 | () => void | - | - |
+| banner | 是否用作顶部公告 | boolean | false | - |
+| closable | 默认不显示关闭按钮 | boolean | 无 | - |
+| closeText | 自定义关闭按钮 | string\|slot | 无 | - |
+| description | 警告提示的辅助性文字介绍 | string\|slot | 无 | - |
+| icon | 自定义图标,`showIcon` 为 `true` 时有效 | vnode \| slot | - | - |
+| message | 警告提示内容 | string\|slot | 无 | - |
+| showIcon | 是否显示辅助图标 | boolean | false,`banner` 模式下默认值为 true | - |
+| type | 指定警告提示的样式,有四种选择 `success`、`info`、`warning`、`error` | string | `info`,`banner` 模式下默认值为 `warning` | - |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | -------------------- | ----------------------- | ---- |
+| close | 关闭时触发的回调函数 | (e: MouseEvent) => void | - |
diff --git a/antdv-demo/docs/anchor/demo/basic.md b/antdv-demo/docs/anchor/demo/basic.md
new file mode 100644
index 000000000..111f14d46
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/basic.md
@@ -0,0 +1,27 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### basic
+The simplest usage.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/demo/customizeHighlight.md b/antdv-demo/docs/anchor/demo/customizeHighlight.md
new file mode 100644
index 000000000..8f9bfe1b5
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/customizeHighlight.md
@@ -0,0 +1,31 @@
+
+#### 自定义锚点高亮
+自定义锚点高亮。
+
+
+
+#### Customize the anchor highlight
+Customize the anchor highlight.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/demo/index.vue b/antdv-demo/docs/anchor/demo/index.vue
new file mode 100644
index 000000000..c2551b7aa
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/index.vue
@@ -0,0 +1,61 @@
+
+
diff --git a/antdv-demo/docs/anchor/demo/onChange.md b/antdv-demo/docs/anchor/demo/onChange.md
new file mode 100644
index 000000000..218f82651
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/onChange.md
@@ -0,0 +1,31 @@
+
+#### 监听锚点链接改变
+监听锚点链接改变
+
+
+
+#### Listening for anchor link change
+Listening for anchor link change.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/demo/onClick.md b/antdv-demo/docs/anchor/demo/onClick.md
new file mode 100644
index 000000000..8e8bce6a0
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/onClick.md
@@ -0,0 +1,32 @@
+
+#### 自定义 click 事件
+点击锚点不记录历史。
+
+
+
+#### Customize the click event
+Clicking on an anchor does not record history.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/demo/static.md b/antdv-demo/docs/anchor/demo/static.md
new file mode 100644
index 000000000..b7028e447
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/static.md
@@ -0,0 +1,22 @@
+
+#### 静态位置
+不浮动,状态不随页面滚动变化。
+
+
+
+#### Static
+Do not change state when page is scrolling.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/demo/targetOffset.md b/antdv-demo/docs/anchor/demo/targetOffset.md
new file mode 100644
index 000000000..d69f55020
--- /dev/null
+++ b/antdv-demo/docs/anchor/demo/targetOffset.md
@@ -0,0 +1,34 @@
+
+#### 设置锚点滚动偏移量
+锚点目标滚动到屏幕正中间。
+
+
+
+#### Set Anchor scroll offset
+Anchor target scroll to screen center.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/anchor/index.en-US.md b/antdv-demo/docs/anchor/index.en-US.md
new file mode 100644
index 000000000..0cf559ad1
--- /dev/null
+++ b/antdv-demo/docs/anchor/index.en-US.md
@@ -0,0 +1,31 @@
+## API
+
+### Anchor Props
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| affix | Fixed mode of Anchor | boolean | true | |
+| bounds | Bounding distance of anchor area | number | 5(px) | |
+| getContainer | Scrolling container | () => HTMLElement | () => window | |
+| offsetBottom | Pixels to offset from bottom when calculating position of scroll | number | - | |
+| offsetTop | Pixels to offset from top when calculating position of scroll | number | 0 | |
+| showInkInFixed | Whether show ink-balls in Fixed mode | boolean | false | |
+| wrapperClass | The class name of the container | string | - | |
+| wrapperStyle | The style of the container | object | - | |
+| getCurrentAnchor | Customize the anchor highlight | () => string | - | 1.5.0 |
+| targetOffset | Anchor scroll offset, default as `offsetTop`, [example](#components-anchor-demo-targetOffset) | number | `offsetTop` | 1.5.0 |
+
+### Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| click | set the handler to handle `click` event | Function(e: Event, link: Object) | |
+| change | Listening for anchor link change | (currentActiveLink: string) => void | | 1.5.0 |
+
+### Link Props
+
+| Property | Description | Type | Default | Version |
+| -------- | ----------------------------------------- | ------------ | ------- | ------- |
+| href | target of hyperlink | string | | |
+| title | content of hyperlink | string\|slot | | |
+| target | Specifies where to display the linked URL | string | | 1.5.0 |
diff --git a/antdv-demo/docs/anchor/index.zh-CN.md b/antdv-demo/docs/anchor/index.zh-CN.md
new file mode 100644
index 000000000..70843fc01
--- /dev/null
+++ b/antdv-demo/docs/anchor/index.zh-CN.md
@@ -0,0 +1,31 @@
+## API
+
+### Anchor Props
+
+| 成员 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| affix | 固定模式 | boolean | true | |
+| bounds | 锚点区域边界 | number | 5(px) | |
+| getContainer | 指定滚动的容器 | () => HTMLElement | () => window | |
+| offsetBottom | 距离窗口底部达到指定偏移量后触发 | number | | |
+| offsetTop | 距离窗口顶部达到指定偏移量后触发 | number | | |
+| showInkInFixed | 固定模式是否显示小圆点 | boolean | false | |
+| wrapperClass | 容器的类名 | string | - | |
+| wrapperStyle | 容器样式 | object | - | |
+| getCurrentAnchor | 自定义高亮的锚点 | () => string | - | 1.5.0 |
+| targetOffset | 锚点滚动偏移量,默认与 offsetTop 相同,[例子](#components-anchor-demo-targetOffset) | number | `offsetTop` | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | ---------------------- | ----------------------------------- | ---- |
+| click | `click` 事件的 handler | Function(e: Event, link: Object) | |
+| change | 监听锚点链接改变 | (currentActiveLink: string) => void | | 1.5.0 |
+
+### Link Props
+
+| 成员 | 说明 | 类型 | 默认值 | 版本 |
+| ------ | -------------------------------- | ------------ | ------ | ----- |
+| href | 锚点链接 | string | | |
+| title | 文字内容 | string\|slot | | |
+| target | 该属性指定在何处显示链接的资源。 | string | | 1.5.0 |
diff --git a/antdv-demo/docs/auto-complete/demo/basic.md b/antdv-demo/docs/auto-complete/demo/basic.md
new file mode 100644
index 000000000..08b6b7a03
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/basic.md
@@ -0,0 +1,49 @@
+
+#### 基本使用
+基本使用。通过 dataSource 设置自动完成的数据源
+
+
+
+#### Basic Usage
+Basic Usage, set datasource of autocomplete with `dataSource` property.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/demo/certain-category.md b/antdv-demo/docs/auto-complete/demo/certain-category.md
new file mode 100644
index 000000000..dd5fc770b
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/certain-category.md
@@ -0,0 +1,149 @@
+
+#### 查询模式 - 确定类目
+查询模式 - 确定类目
+
+
+
+#### Lookup-Patterns - Certain Category
+Lookup-Patterns - Certain Category
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/demo/custom.md b/antdv-demo/docs/auto-complete/demo/custom.md
new file mode 100644
index 000000000..e0c6c7f47
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/custom.md
@@ -0,0 +1,47 @@
+
+#### 自定义输入组件
+自定义输入组件。
+
+
+
+#### Customize Input Component
+Customize Input Component
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/demo/index.vue b/antdv-demo/docs/auto-complete/demo/index.vue
new file mode 100644
index 000000000..729682312
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/index.vue
@@ -0,0 +1,51 @@
+
diff --git a/antdv-demo/docs/auto-complete/demo/non-case-sensitive.md b/antdv-demo/docs/auto-complete/demo/non-case-sensitive.md
new file mode 100644
index 000000000..2b6791c83
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/non-case-sensitive.md
@@ -0,0 +1,36 @@
+
+#### 不区分大小写
+不区分大小写的 AutoComplete
+
+
+
+#### Non-case-sensitive AutoComplete
+A non-case-sensitive AutoComplete
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/demo/options.md b/antdv-demo/docs/auto-complete/demo/options.md
new file mode 100644
index 000000000..0170a86fc
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/options.md
@@ -0,0 +1,41 @@
+
+#### 自定义选项
+也可以直接传递slot="dataSource"的Option
+
+
+
+#### Customized
+You could pass `slot="dataSource` as children of `AutoComplete`, instead of using `dataSource`。
+
+
+```vue
+
+
+
+
+ {{ email }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/demo/uncertain-category.md b/antdv-demo/docs/auto-complete/demo/uncertain-category.md
new file mode 100644
index 000000000..c32408473
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/demo/uncertain-category.md
@@ -0,0 +1,120 @@
+
+#### 查询模式 - 不确定类目
+查询模式 - 不确定类目
+
+
+
+#### Lookup-Patterns - Uncertain Category
+Lookup-Patterns - Uncertain Category
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/auto-complete/index.en-US.md b/antdv-demo/docs/auto-complete/index.en-US.md
new file mode 100644
index 000000000..4a459568d
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/index.en-US.md
@@ -0,0 +1,41 @@
+## API
+
+```html
+
+```
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| allowClear | Show clear button, effective in multiple mode only. | boolean | false | |
+| autoFocus | get focus when component mounted | boolean | false | |
+| backfill | backfill selected item the input when using keyboard | boolean | false | |
+| slot="default" (for customize input element) | customize input element | HTMLInputElement / HTMLTextAreaElement | ` ` | |
+| dataSource | Data source for autocomplete | slot \| [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
+| dropdownMenuStyle | additional style applied to dropdown menu | object | | 1.5.0 |
+| defaultActiveFirstOption | Whether active first option by default | boolean | true | |
+| defaultValue | Initial selected option. | string\|string\[]\| - | |
+| disabled | Whether disabled select | boolean | false | |
+| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | boolean or function(inputValue, option) | true | |
+| optionLabelProp | Which prop value of option will render as content of select. | string | `children` | |
+| placeholder | placeholder of input | string | - | |
+| value(v-model) | selected option | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | - | |
+| defaultOpen | Initial open state of dropdown | boolean | - | |
+| open | Controlled open state of dropdown | boolean | - | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | Called when select an option or input value change, or value of input is changed | function(value) | |
+| blur | Called when leaving the component. | function() | |
+| focus | Called when entering the component | function() | |
+| search | Called when searching items. | function(value) | - | |
+| select | Called when a option is selected. param is option's value and option instance. | function(value, option) | |
+| dropdownVisibleChange | Call when dropdown open | function(open) | |
+
+## Methods
+
+| Name | Description | Version |
+| ------- | ------------ | ------- |
+| blur() | remove focus | |
+| focus() | get focus | |
diff --git a/antdv-demo/docs/auto-complete/index.zh-CN.md b/antdv-demo/docs/auto-complete/index.zh-CN.md
new file mode 100644
index 000000000..d5efaf39f
--- /dev/null
+++ b/antdv-demo/docs/auto-complete/index.zh-CN.md
@@ -0,0 +1,41 @@
+## API
+
+```html
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| allowClear | 支持清除, 单选模式有效 | boolean | false | |
+| autoFocus | 自动获取焦点 | boolean | false | |
+| backfill | 使用键盘选择选项的时候把选中项回填到输入框中 | boolean | false | |
+| slot="default" (自定义输入框) | 自定义输入框 | HTMLInputElement / HTMLTextAreaElement | ` ` | |
+| dataSource | 自动完成的数据源 | slot \| [DataSourceItemType](https://github.com/vueComponent/ant-design-vue/blob/724d53b907e577cf5880c1e6742d4c3f924f8f49/components/auto-complete/index.vue#L9)\[] | | |
+| dropdownMenuStyle | dropdown 菜单自定义样式 | object | | 1.5.0 |
+| defaultActiveFirstOption | 是否默认高亮第一个选项。 | boolean | true | |
+| defaultValue | 指定默认选中的条目 | string\|string\[]\| 无 | |
+| disabled | 是否禁用 | boolean | false | |
+| filterOption | 是否根据输入项进行筛选。当其为一个函数时,会接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | boolean or function(inputValue, option) | true | |
+| optionLabelProp | 回填到选择框的 Option 的属性值,默认是 Option 的子元素。比如在子元素需要高亮效果时,此值可以设为 `value`。 | string | `children` | |
+| placeholder | 输入框提示 | string \| slot | - | |
+| value(v-model) | 指定当前选中的条目 | string\|string\[]\|{ key: string, label: string\|vNodes }\|Array<{ key: string, label: string\|vNodes }> | 无 | |
+| defaultOpen | 是否默认展开下拉菜单 | boolean | - | |
+| open | 是否展开下拉菜单 | boolean | - | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| --- | --- | --- | --- |
+| change | 选中 option,或 input 的 value 变化时,调用此函数 | function(value) |
+| blur | 失去焦点时的回调 | function() |
+| focus | 获得焦点时的回调 | function() |
+| search | 搜索补全项的时候调用 | function(value) |
+| select | 被选中时调用,参数为选中项的 value 值 | function(value, option) |
+| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) |
+
+## 方法
+
+| 名称 | 描述 | 版本 |
+| ------- | -------- | ---- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/avatar/demo/badge.md b/antdv-demo/docs/avatar/demo/badge.md
new file mode 100644
index 000000000..f5b66b89a
--- /dev/null
+++ b/antdv-demo/docs/avatar/demo/badge.md
@@ -0,0 +1,22 @@
+
+#### 带徽标的头像
+通常用于消息提示。
+
+
+
+#### With Badge
+Usually used for reminders and notifications.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/avatar/demo/basic.md b/antdv-demo/docs/avatar/demo/basic.md
new file mode 100644
index 000000000..44f51066e
--- /dev/null
+++ b/antdv-demo/docs/avatar/demo/basic.md
@@ -0,0 +1,29 @@
+
+#### 基本
+头像有三种尺寸,两种形状可选。
+
+
+
+#### basic
+Three sizes and two shapes are available.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/avatar/demo/dynamic.md b/antdv-demo/docs/avatar/demo/dynamic.md
new file mode 100644
index 000000000..11223803c
--- /dev/null
+++ b/antdv-demo/docs/avatar/demo/dynamic.md
@@ -0,0 +1,49 @@
+
+#### 自动调整字符大小
+对于字符型的头像,当字符串较长时,字体大小可以根据头像宽度自动调整。
+
+
+
+#### Autoset Font Size
+For letter type Avatar, when the letters are too long to display, the font size can be automatically adjusted according to the width of the Avatar.
+
+
+```vue
+
+
+
+ {{ avatarValue }}
+
+
+ 改变
+
+
+
+
+```
diff --git a/antdv-demo/docs/avatar/demo/index.vue b/antdv-demo/docs/avatar/demo/index.vue
new file mode 100644
index 000000000..cac81649d
--- /dev/null
+++ b/antdv-demo/docs/avatar/demo/index.vue
@@ -0,0 +1,47 @@
+
diff --git a/antdv-demo/docs/avatar/demo/type.md b/antdv-demo/docs/avatar/demo/type.md
new file mode 100644
index 000000000..2ce75111c
--- /dev/null
+++ b/antdv-demo/docs/avatar/demo/type.md
@@ -0,0 +1,27 @@
+
+#### 类型
+支持三种类型:图片、Icon 以及字符,其中 Icon 和字符型可以自定义图标颜色及背景色。
+
+
+
+#### Type
+Image, Icon and letter are supported, and the latter two kinds avatar can have custom colors and background colors.
+
+
+```vue
+
+
+
+
+
+
+
U
+
USER
+
+
+ U
+
+
+
+
+```
diff --git a/antdv-demo/docs/avatar/index.en-US.md b/antdv-demo/docs/avatar/index.en-US.md
new file mode 100644
index 000000000..83cd2d5cb
--- /dev/null
+++ b/antdv-demo/docs/avatar/index.en-US.md
@@ -0,0 +1,11 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| icon | the `Icon` type for an icon avatar, see `Icon` Component | string | - |
+| shape | the shape of avatar | `circle` \| `square` | `circle` |
+| size | the size of the avatar | number \| string: `large` `small` `default` | `default` |
+| src | the address of the image for an image avatar | string | - |
+| srcSet | a list of sources to use for different screen resolutions | string | - |
+| alt | This attribute defines the alternative text describing the image | string | - |
+| loadError | handler when img load error, return false to prevent default fallback behavior | () => boolean | - |
diff --git a/antdv-demo/docs/avatar/index.zh-CN.md b/antdv-demo/docs/avatar/index.zh-CN.md
new file mode 100644
index 000000000..394e5538d
--- /dev/null
+++ b/antdv-demo/docs/avatar/index.zh-CN.md
@@ -0,0 +1,11 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| icon | 设置头像的图标类型,可设为 Icon 的 `type` 或 VNode | string \| VNode \| slot | - |
+| shape | 指定头像的形状 | Enum{ 'circle', 'square' } | `circle` |
+| size | 设置头像的大小 | number \| Enum{ 'large', 'small', 'default' } | `default` |
+| src | 图片类头像的资源地址 | string | - |
+| srcSet | 设置图片类头像响应式资源地址 | string | - |
+| alt | 图像无法显示时的替代文本 | string | - |
+| loadError | 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为 | () => boolean | - |
diff --git a/antdv-demo/docs/back-top/demo/basic.md b/antdv-demo/docs/back-top/demo/basic.md
new file mode 100644
index 000000000..a1f3d64f3
--- /dev/null
+++ b/antdv-demo/docs/back-top/demo/basic.md
@@ -0,0 +1,20 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### basic
+The most basic usage.
+
+
+```vue
+
+
+
+ Scroll down to see the bottom-right
+
gray
+ button.
+
+
+```
diff --git a/antdv-demo/docs/back-top/demo/custom.md b/antdv-demo/docs/back-top/demo/custom.md
new file mode 100644
index 000000000..f138410b3
--- /dev/null
+++ b/antdv-demo/docs/back-top/demo/custom.md
@@ -0,0 +1,39 @@
+
+#### 自定义样式
+可以自定义回到顶部按钮的样式,限制宽高:`40px * 40px`。
+
+
+
+#### Custom style
+You can customize the style of the button, just note the size limit: no more than `40px * 40px`.
+
+
+```vue
+
+
+
+
+ UP
+
+
+ Scroll down to see the bottom-right
+
blue
+ button.
+
+
+
+```
diff --git a/antdv-demo/docs/back-top/demo/index.vue b/antdv-demo/docs/back-top/demo/index.vue
new file mode 100644
index 000000000..8e65a68f6
--- /dev/null
+++ b/antdv-demo/docs/back-top/demo/index.vue
@@ -0,0 +1,43 @@
+
diff --git a/antdv-demo/docs/back-top/index.en-US.md b/antdv-demo/docs/back-top/index.en-US.md
new file mode 100644
index 000000000..166e7481d
--- /dev/null
+++ b/antdv-demo/docs/back-top/index.en-US.md
@@ -0,0 +1,16 @@
+## API
+
+> The distance to the bottom is set to `50px` by default, which is overridable.
+>
+> If you decide to use custom styles, please note the size limit: no more than `40px * 40px`.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| target | specifies the scrollable area dom node | () => HTMLElement | () => window | |
+| visibilityHeight | the `BackTop` button will not show until the scroll height reaches this value | number | 400 | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| click | a callback function, which can be executed when you click the button | Function | |
diff --git a/antdv-demo/docs/back-top/index.zh-CN.md b/antdv-demo/docs/back-top/index.zh-CN.md
new file mode 100644
index 000000000..87c97b9ff
--- /dev/null
+++ b/antdv-demo/docs/back-top/index.zh-CN.md
@@ -0,0 +1,16 @@
+## API
+
+> 有默认样式,距离底部 `50px`,可覆盖。
+>
+> 自定义样式宽高不大于 40px \* 40px。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| target | 设置需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 | Function | () => window | |
+| visibilityHeight | 滚动高度达到此参数值才出现 `BackTop` | number | 400 | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | ------------------ | -------- | ---- |
+| click | 点击按钮的回调函数 | Function | |
diff --git a/antdv-demo/docs/badge/demo/basic.md b/antdv-demo/docs/badge/demo/basic.md
new file mode 100644
index 000000000..d11415b2d
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/basic.md
@@ -0,0 +1,26 @@
+
+#### 基本
+简单的徽章展示,当 `count` 为 `0` 时,默认不显示,但是可以使用 `showZero` 修改为显示。
+
+
+
+#### basic
+Simplest Usage. Badge will be hidden when `count` is `0`, but we can use `showZero` to show it.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/change.md b/antdv-demo/docs/badge/demo/change.md
new file mode 100644
index 000000000..ca5ef0aae
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/change.md
@@ -0,0 +1,57 @@
+
+#### 动态
+ 展示动态变化的效果。
+
+
+
+#### Dynamic
+ The count will be animated as it changes.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/colors.md b/antdv-demo/docs/badge/demo/colors.md
new file mode 100644
index 000000000..effb821f7
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/colors.md
@@ -0,0 +1,60 @@
+
+#### 多彩徽标
+1.5.0 后新增。我们添加了多种预设色彩的徽标样式,用作不同场景使用。如果预设值不能满足你的需求,可以设置为具体的色值。
+
+
+
+#### Colorful Badge
+New feature after 3.16.0. We preset a series of colorful Badge styles for use in different situations. You can also set it to a hex color string for custom color.
+
+
+```vue
+
+
+
+ Presets:
+
+
+
+ Custom:
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/dot.md b/antdv-demo/docs/badge/demo/dot.md
new file mode 100644
index 000000000..9d00c9ca2
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/dot.md
@@ -0,0 +1,34 @@
+
+#### 讨嫌的小红点
+没有具体的数字。
+
+
+
+#### Red badge
+This will simply display a red badge, without a specific count.
+If count equals 0, it won't display the dot.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/index.vue b/antdv-demo/docs/badge/demo/index.vue
new file mode 100644
index 000000000..cd46ead83
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/index.vue
@@ -0,0 +1,74 @@
+
+
+
diff --git a/antdv-demo/docs/badge/demo/link.md b/antdv-demo/docs/badge/demo/link.md
new file mode 100644
index 000000000..35df6419c
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/link.md
@@ -0,0 +1,19 @@
+
+#### 可点击
+ 用 a 标签进行包裹即可。
+
+
+
+#### Clickable
+ The badge can be wrapped with `a` tag to make it linkable.
+
+
+```vue
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/no-wrapper.md b/antdv-demo/docs/badge/demo/no-wrapper.md
new file mode 100644
index 000000000..915450cf7
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/no-wrapper.md
@@ -0,0 +1,27 @@
+
+#### 独立使用
+不包裹任何元素即是独立使用,可自定样式展现。
+在右上角的 badge 则限定为红色。
+
+
+
+#### Standalone
+Used in standalone when children is empty.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/overflow.md b/antdv-demo/docs/badge/demo/overflow.md
new file mode 100644
index 000000000..aad78484f
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/overflow.md
@@ -0,0 +1,28 @@
+
+#### 封顶数字
+超过 `overflowCount` 的会显示为 `${overflowCount}+`,默认的 `overflowCount` 为 `99`。
+
+
+
+#### Overflow Count
+`${overflowCount}+` is displayed when count is larger than `overflowCount`. The default value of `overflowCount` is `99`.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/status.md b/antdv-demo/docs/badge/demo/status.md
new file mode 100644
index 000000000..a25ce3b6c
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/status.md
@@ -0,0 +1,31 @@
+
+#### 状态点
+ 用于表示状态的小圆点。
+
+
+
+#### Status
+ Standalone badge with status.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/demo/title.md b/antdv-demo/docs/badge/demo/title.md
new file mode 100644
index 000000000..a116d0ca0
--- /dev/null
+++ b/antdv-demo/docs/badge/demo/title.md
@@ -0,0 +1,31 @@
+
+#### 自定义标题
+ 设置鼠标放在状态点上时显示的文字
+
+
+
+#### Title
+ The badge will display `title` when hovered over, instead of `count`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/badge/index.en_US.md b/antdv-demo/docs/badge/index.en_US.md
new file mode 100644
index 000000000..72dc6f3c8
--- /dev/null
+++ b/antdv-demo/docs/badge/index.en_US.md
@@ -0,0 +1,24 @@
+## API
+
+```html
+
+
+
+```
+
+```html
+
+```
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| color | Customize Badge dot color | string | - | 1.5.0 |
+| count | Number to show in badge | number\|string \| slot | | |
+| dot | Whether to display a red dot instead of `count` | boolean | `false` | |
+| offset | set offset of the badge dot, like [x, y] | [number\|string, number\|string] | - | |
+| overflowCount | Max count to show | number | 99 | |
+| showZero | Whether to show badge when `count` is zero | boolean | `false` | |
+| status | Set Badge as a status dot | `success` \| `processing` \| `default` \| `error` \| `warning` | `''` | |
+| text | If `status` is set, `text` sets the display text of the status `dot` | string | `''` | |
+| numberStyle | sets the display style of the status `dot` | object | '' | |
+| title | Text to show when hovering over the badge | string | `count` | |
diff --git a/antdv-demo/docs/badge/index.zh-CN.md b/antdv-demo/docs/badge/index.zh-CN.md
new file mode 100644
index 000000000..f4fcb665e
--- /dev/null
+++ b/antdv-demo/docs/badge/index.zh-CN.md
@@ -0,0 +1,24 @@
+## API
+
+```html
+
+
+
+```
+
+```html
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| color | 自定义小圆点的颜色 | string | - | 1.5.0 |
+| count | 展示的数字,大于 overflowCount 时显示为 `${overflowCount}+`,为 0 时隐藏 | number \| string \| slot | | |
+| dot | 不展示数字,只有一个小红点 | boolean | false | |
+| offset | 设置状态点的位置偏移,格式为 [x, y] | [number\|string, number\|string] | - | |
+| overflowCount | 展示封顶的数字值 | number | 99 | |
+| showZero | 当数值为 0 时,是否展示 Badge | boolean | false | |
+| status | 设置 Badge 为状态点 | Enum{ 'success', 'processing, 'default', 'error', 'warning' } | '' | |
+| text | 在设置了 `status` 的前提下有效,设置状态点的文本 | string | '' | |
+| numberStyle | 设置状态点的样式 | object | '' | |
+| title | 设置鼠标放在状态点上时显示的文字 | string | `count` | |
diff --git a/antdv-demo/docs/breadcrumb/demo/basic.md b/antdv-demo/docs/breadcrumb/demo/basic.md
new file mode 100644
index 000000000..a0d6babb1
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/basic.md
@@ -0,0 +1,20 @@
+
+ #### 基本
+ 最简单的用法
+
+
+
+ #### Basic usage
+ The simplest use
+
+
+```vue
+
+
+ Home
+ Application Center
+ Application List
+ An Application
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/demo/index.vue b/antdv-demo/docs/breadcrumb/demo/index.vue
new file mode 100644
index 000000000..b9eff4340
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/index.vue
@@ -0,0 +1,58 @@
+
diff --git a/antdv-demo/docs/breadcrumb/demo/overlay.md b/antdv-demo/docs/breadcrumb/demo/overlay.md
new file mode 100644
index 000000000..b945aef2e
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/overlay.md
@@ -0,0 +1,39 @@
+
+ #### 带下拉菜单的面包屑
+ 面包屑支持下拉菜单。
+
+
+
+ #### Bread crumbs with drop down menu
+ Breadcrumbs support drop down menu.
+
+
+```vue
+
+
+ Ant Design Vue
+ Component
+
+ General
+
+
+
+ General
+
+
+
+
+ Layout
+
+
+
+
+ Navigation
+
+
+
+
+ Button
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/demo/router.md b/antdv-demo/docs/breadcrumb/demo/router.md
new file mode 100644
index 000000000..64beb46fa
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/router.md
@@ -0,0 +1,66 @@
+
+ #### vue-router
+和 `vue-router` 进行结合使用。
+
+
+
+ #### Vue Router Integration
+Used together with `vue-router`
+
+
+```vue
+
+
+
+
+
+ {{ route.breadcrumbName }}
+
+
+ {{ route.breadcrumbName }}
+
+
+
+
+ {{ $route.path }}
+
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/demo/separator-indepent.md b/antdv-demo/docs/breadcrumb/demo/separator-indepent.md
new file mode 100644
index 000000000..97f1b3bdd
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/separator-indepent.md
@@ -0,0 +1,27 @@
+
+ #### 分隔符
+ 使用 `Breadcrumb.Separator` 可以自定义分隔符。
+
+
+
+ #### Configuring the Separator
+ The separator can be customized by setting the separator property: `Breadcrumb.Separator`
+
+
+```vue
+
+
+ Location
+ :
+
+ Application Center
+
+
+
+ Application List
+
+
+ An Application
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/demo/separator.md b/antdv-demo/docs/breadcrumb/demo/separator.md
new file mode 100644
index 000000000..a3d950af9
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/separator.md
@@ -0,0 +1,38 @@
+
+ #### 分隔符
+ 使用` separator=">" `可以自定义分隔符,或者使用slot="separator"自定义更复杂的分隔符
+
+
+
+ #### Configuring the Separator
+ The separator can be customized by setting the separator preperty: separator=">" or use
+ slot="separator"
+
+
+```vue
+
+
+
+ Home
+
+ Application Center
+
+
+ Application List
+
+ An Application
+
+
+ >
+ Home
+
+ Application Center
+
+
+ Application List
+
+ An Application
+
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/demo/withIcon.md b/antdv-demo/docs/breadcrumb/demo/withIcon.md
new file mode 100644
index 000000000..68cb92b61
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/demo/withIcon.md
@@ -0,0 +1,26 @@
+
+ #### 带有图标的
+ 图标放在文字前面
+
+
+
+ #### With an Icon
+ The icon should be placed in front of the text
+
+
+```vue
+
+
+
+
+
+
+
+ Application List
+
+
+ Application
+
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/index.en-US.md b/antdv-demo/docs/breadcrumb/index.en-US.md
new file mode 100644
index 000000000..89a6261f9
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/index.en-US.md
@@ -0,0 +1,76 @@
+## API
+
+| Property | Description | Type | Optional | Default | Version |
+| --- | --- | --- | --- | --- | --- |
+| itemRender | Custom item renderer, slot="itemRender" and slot-scope="{route, params, routes, paths}" | ({route, params, routes, paths, h}) => vNode | | - | |
+| params | Routing parameters | object | | - | |
+| routes | The routing stack information of router | [routes\[\]](#routes) | | - | |
+| separator | Custom separator | string\|slot | | `/` | |
+
+### routes
+
+```ts
+interface Route {
+ path: string;
+ breadcrumbName: string;
+ children: Array<{
+ path: string;
+ breadcrumbName: string;
+ }>;
+}
+```
+
+### Use with browserHistory
+
+The link of Breadcrumb item targets `#` by default, you can use `itemRender` to make a `browserHistory` Link.
+
+```html
+
+
+
+
+ {{route.breadcrumbName}}
+
+
+ {{route.breadcrumbName}}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/breadcrumb/index.zh-CN.md b/antdv-demo/docs/breadcrumb/index.zh-CN.md
new file mode 100644
index 000000000..ce15c621d
--- /dev/null
+++ b/antdv-demo/docs/breadcrumb/index.zh-CN.md
@@ -0,0 +1,97 @@
+## API
+
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| --- | --- | --- | --- | --- |
+| itemRender | 自定义链接函数,和 vue-router 配置使用, 也可使用 slot="itemRender" 和 slot-scope="props" | ({route, params, routes, paths, h}) => vNode | | - |
+| params | 路由的参数 | object | | - |
+| routes | router 的路由栈信息 | [routes\[\]](#routes) | | - |
+| separator | 分隔符自定义 | string\|slot | | '/' |
+
+### Breadcrumb.Item
+
+| 参数 | 参数 | 类型 | 默认值 | 版本 |
+| ------- | -------------- | -------------------------------------- | ------ | ----- |
+| href | 链接的目的地 | string | - | 1.5.0 |
+| overlay | 下拉菜单的内容 | [Menu](/components/menu) \| () => Menu | - | 1.5.0 |
+
+#### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | -------- | -------------------- | ---- |
+| click | 单击事件 | (e:MouseEvent)=>void | - | 1.5.0 |
+
+### Breadcrumb.Separator `3.21.0`
+
+| 参数 | 参数 | 类型 | 默认值 | 版本 |
+| ---- | ---- | ---- | ------ | ---- |
+
+
+> 注意:在使用 `Breadcrumb.Separator` 时,其父组件的分隔符必须设置为 `separator=""`,否则会出现父组件默认的分隔符。
+
+### routes
+
+```ts
+interface Route {
+ path: string;
+ breadcrumbName: string;
+ children: Array<{
+ path: string;
+ breadcrumbName: string;
+ }>;
+}
+```
+
+### 和 browserHistory 配合
+
+和 vue-router 一起使用时,默认生成的 url 路径是带有 `#` 的,如果和 browserHistory 一起使用的话,你可以使用 `itemRender` 属性定义面包屑链接。
+
+```html
+
+
+
+
+ {{route.breadcrumbName}}
+
+
+ {{route.breadcrumbName}}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/basic.md b/antdv-demo/docs/button/demo/basic.md
new file mode 100644
index 000000000..c52472838
--- /dev/null
+++ b/antdv-demo/docs/button/demo/basic.md
@@ -0,0 +1,37 @@
+
+#### 按钮类型
+按钮有五种类型:主按钮、次按钮、虚线按钮、危险按钮和链接按钮。主按钮在同一个操作区域最多出现一次。
+
+
+
+#### Type
+There are `primary` button, `default` button, `dashed` button , `danger` button and `link` button in antd.
+
+
+```vue
+
+
+
+ Primary
+
+
Default
+
+ Dashed
+
+
+ Danger
+
+
+
+ 按钮
+
+
+
+ 按钮
+
+
+ Link
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/block.md b/antdv-demo/docs/button/demo/block.md
new file mode 100644
index 000000000..435663a50
--- /dev/null
+++ b/antdv-demo/docs/button/demo/block.md
@@ -0,0 +1,31 @@
+
+#### block 按钮
+`block`属性将使按钮适合其父宽度。
+
+
+
+#### block Button
+`block` property will make the button fit to its parent width.
+
+
+```vue
+
+
+
+ Primary
+
+
+ Default
+
+
+ Dashed
+
+
+ Danger
+
+
+ Link
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/button-group.md b/antdv-demo/docs/button/demo/button-group.md
new file mode 100644
index 000000000..841f3986b
--- /dev/null
+++ b/antdv-demo/docs/button/demo/button-group.md
@@ -0,0 +1,70 @@
+
+#### 按钮组合
+可以将多个 `Button` 放入 `Button.Group` 的容器中。
+通过设置 `size` 为 `large` `small` 分别把按钮组合设为大、小尺寸。若不设置 `size`,则尺寸为中。
+
+
+
+#### Button Group
+Buttons can be grouped by placing multiple `Button` components into a `Button.Group`.
+The `size` can be set to `large`, `small` or left unset resulting in a default size.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/disabled.md b/antdv-demo/docs/button/demo/disabled.md
new file mode 100644
index 000000000..7876ba6ac
--- /dev/null
+++ b/antdv-demo/docs/button/demo/disabled.md
@@ -0,0 +1,49 @@
+
+#### 不可用状态
+添加 `disabled` 属性即可让按钮处于不可用状态,同时按钮样式也会改变。
+
+
+
+#### Disabled
+To mark a button as disabled, add the `disabled` property to the `Button`.
+
+
+```vue
+
+
+
+ Primary
+
+
+ Primary(disabled)
+
+
+
Default
+
+ Default(disabled)
+
+
+
+ Dashed
+
+
+ Dashed(disabled)
+
+
+
+ Link
+
+
+ Link(disabled)
+
+
+
+ Ghost
+
+
+ Ghost(disabled)
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/ghost.md b/antdv-demo/docs/button/demo/ghost.md
new file mode 100644
index 000000000..ee3c8d467
--- /dev/null
+++ b/antdv-demo/docs/button/demo/ghost.md
@@ -0,0 +1,31 @@
+
+#### 幽灵按钮
+幽灵按钮将其他按钮的内容反色,背景变为透明,常用在有色背景上。
+
+
+
+#### Ghost Button
+`ghost` property will make button's background transparent, it is common used in colored background.
+
+
+```vue
+
+
+
+ Primary
+
+
+ Default
+
+
+ Dashed
+
+
+ Danger
+
+
+ Link
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/icon.md b/antdv-demo/docs/button/demo/icon.md
new file mode 100644
index 000000000..488e53bbe
--- /dev/null
+++ b/antdv-demo/docs/button/demo/icon.md
@@ -0,0 +1,37 @@
+
+#### 图标按钮
+当需要在 `Button` 内嵌入 `Icon` 时,可以设置 `icon` 属性,或者直接在 `Button` 内使用 `Icon` 组件。
+如果想控制 `Icon` 具体的位置,只能直接使用 `Icon` 组件,而非 `icon` 属性。
+
+
+
+#### Icon
+`Button` components can contain an `Icon`. This is done by setting the `icon` property or placing an `Icon` component within the `Button`
+If you want specific control over the positioning and placement of the `Icon`, then that should be done by placing the `Icon` component within the `Button` rather than using the `icon` property.
+
+
+```vue
+
+
+
+
+ A
+
+
+ Search
+
+
+
+ Search
+
+
+
+ Search
+
+
+
+ Search
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/index.vue b/antdv-demo/docs/button/demo/index.vue
new file mode 100644
index 000000000..30bddaf2b
--- /dev/null
+++ b/antdv-demo/docs/button/demo/index.vue
@@ -0,0 +1,74 @@
+
+
diff --git a/antdv-demo/docs/button/demo/loading.md b/antdv-demo/docs/button/demo/loading.md
new file mode 100644
index 000000000..3d54c5af6
--- /dev/null
+++ b/antdv-demo/docs/button/demo/loading.md
@@ -0,0 +1,51 @@
+
+#### 加载中状态
+添加 `loading` 属性即可让按钮处于加载状态,最后两个按钮演示点击后进入加载状态。
+
+
+
+#### Loading
+A loading indicator can be added to a button by setting the `loading` property on the `Button`.
+
+
+```vue
+
+
+
+ Loading
+
+
+ Loading
+
+
+
+ mouseenter me!
+
+
+ 延迟1s
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/multiple.md b/antdv-demo/docs/button/demo/multiple.md
new file mode 100644
index 000000000..a2163a6cb
--- /dev/null
+++ b/antdv-demo/docs/button/demo/multiple.md
@@ -0,0 +1,43 @@
+
+#### 多个按钮组合
+按钮组合使用时,推荐使用1个主操作 + n 个次操作,3个以上操作时把更多操作放到 `Dropdown.Button` 中组合使用。
+
+
+
+#### Multiple Buttons
+If you need several buttons, we recommend that you use 1 primary button + n secondary buttons, and if there are more than three operations, you can group some of them into `Dropdown.Button`.
+
+
+```vue
+
+
+
+ Primary
+
+
secondary
+
+
+
+ 1st item
+
+
+ 2nd item
+
+
+ 3rd item
+
+
+ Actions
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/demo/size.md b/antdv-demo/docs/button/demo/size.md
new file mode 100644
index 000000000..db15c3dae
--- /dev/null
+++ b/antdv-demo/docs/button/demo/size.md
@@ -0,0 +1,76 @@
+
+#### 按钮尺寸
+按钮有大、中、小三种尺寸。
+通过设置 `size` 为 `large` `small` 分别把按钮设为大、小尺寸。若不设置 `size`,则尺寸为中。
+
+
+
+#### Size
+Ant Design supports a default button size as well as a large and small size.
+If a large or small button is desired, set the `size` property to either `large` or `small` respectively. Omit the `size` property for a button with the default size.
+
+
+```vue
+
+
+
+
+ Large
+
+
+ Default
+
+
+ Small
+
+
+
+
+ Primary
+
+
+ Normal
+
+
+ Dashed
+
+
+ Danger
+
+
+ Link
+
+
+
+
+
Download
+
+
+ Download
+
+
+
+
+ Backward
+
+
+ Forward
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/button/index.en-US.md b/antdv-demo/docs/button/index.en-US.md
new file mode 100644
index 000000000..7e1a13308
--- /dev/null
+++ b/antdv-demo/docs/button/index.en-US.md
@@ -0,0 +1,29 @@
+## API
+
+To get a customized button, just set `type`/`shape`/`size`/`loading`/`disabled`.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| disabled | disabled state of button | boolean | `false` | |
+| ghost | make background transparent and invert text and border colors, added in 2.7 | boolean | false | |
+| htmlType | set the original html `type` of `button`, see: [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button` | |
+| icon | set the icon of button, see: Icon component | string | - | |
+| loading | set the loading status of button | boolean \| { delay: number } | false | |
+| shape | can be set to `circle`, `round` or omitted | string | - | |
+| size | can be set to `small` `large` or omitted | string | `default` | |
+| type | can be set to `primary` `ghost` `dashed` `danger` `link` or omitted (meaning `default`) | string | `default` | |
+| block | option to fit button width to its parent width | boolean | `false` | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | --------------------------------------- | --------------- | ------- |
+| click | set the handler to handle `click` event | (event) => void | |
+
+It accepts all props which native buttons support.
+
+## FAQ
+
+### How to remove space between 2 chinese characters
+
+Use [ConfigProvider](/components/config-provider/#API) to set `autoInsertSpaceInButton` as `false`.
diff --git a/antdv-demo/docs/button/index.zh-CN.md b/antdv-demo/docs/button/index.zh-CN.md
new file mode 100644
index 000000000..dce399379
--- /dev/null
+++ b/antdv-demo/docs/button/index.zh-CN.md
@@ -0,0 +1,31 @@
+## API
+
+通过设置 Button 的属性来产生不同的按钮样式,推荐顺序为:`type` -> `shape` -> `size` -> `loading` -> `disabled`。
+
+按钮的属性说明如下:
+
+| 属性 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| disabled | 按钮失效状态 | boolean | `false` | |
+| ghost | 幽灵属性,使按钮背景透明 | boolean | false | |
+| htmlType | 设置 `button` 原生的 `type` 值,可选值请参考 [HTML 标准](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type) | string | `button` | |
+| icon | 设置按钮的图标类型 | string | - | |
+| loading | 设置按钮载入状态 | boolean \| { delay: number } | `false` | |
+| shape | 设置按钮形状,可选值为 `circle`、 `round` 或者不设 | string | - | |
+| size | 设置按钮大小,可选值为 `small` `large` 或者不设 | string | `default` | |
+| type | 设置按钮类型,可选值为 `primary` `dashed` `danger` `link` 或者不设 | string | `default` | |
+| block | 将按钮宽度调整为其父宽度的选项 | boolean | `false` | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | ---------------- | --------------- | ---- |
+| click | 点击按钮时的回调 | (event) => void | |
+
+支持原生 button 的其他所有属性。
+
+## FAQ
+
+### 如何移除 2 个汉字之间的空格
+
+设置 [ConfigProvider](/components/config-provider/#API) 的 `autoInsertSpaceInButton` 为 `false`。
diff --git a/antdv-demo/docs/calendar/demo/basic.md b/antdv-demo/docs/calendar/demo/basic.md
new file mode 100644
index 000000000..04c2a3aab
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/basic.md
@@ -0,0 +1,24 @@
+
+#### 基本
+一个通用的日历面板,支持年/月切换。
+
+
+
+#### basic
+A basic calendar component with Year/Month switch.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/calendar/demo/card.md b/antdv-demo/docs/calendar/demo/card.md
new file mode 100644
index 000000000..45c8eb746
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/card.md
@@ -0,0 +1,26 @@
+
+#### 卡片模式
+用于嵌套在空间有限的容器中。
+
+
+
+#### Card
+Nested inside a container element for rendering in limited space.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/calendar/demo/customize-header.vue b/antdv-demo/docs/calendar/demo/customize-header.vue
new file mode 100644
index 000000000..0d0712d52
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/customize-header.vue
@@ -0,0 +1,98 @@
+
+#### 自定义头部
+自定义日历头部内容。
+
+
+
+#### Customize Header
+Customize Calendar header content.
+
+
+
+
+
+
diff --git a/antdv-demo/docs/calendar/demo/index.vue b/antdv-demo/docs/calendar/demo/index.vue
new file mode 100644
index 000000000..1f07f219d
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/index.vue
@@ -0,0 +1,59 @@
+
diff --git a/antdv-demo/docs/calendar/demo/notice-calendar.md b/antdv-demo/docs/calendar/demo/notice-calendar.md
new file mode 100644
index 000000000..943de15f9
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/notice-calendar.md
@@ -0,0 +1,90 @@
+
+#### 通知事项日历
+一个复杂的应用示例,用 `dateCellRender` 和 `monthCellRender` 函数来自定义需要渲染的数据。
+
+
+
+#### Notice Calendar
+This component can be rendered by using `dateCellRender` and `monthCellRender` with the data you need.
+
+
+```vue
+
+
+
+
+
+ {{ getMonthData(value) }}
+ Backlog number
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/calendar/demo/select.md b/antdv-demo/docs/calendar/demo/select.md
new file mode 100644
index 000000000..66a40260c
--- /dev/null
+++ b/antdv-demo/docs/calendar/demo/select.md
@@ -0,0 +1,61 @@
+
+#### 选择功能
+一个通用的日历面板,支持年/月切换。
+
+
+
+#### Selectable Calendar
+A basic calendar component with Year/Month switch.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/calendar/index.en-US.md b/antdv-demo/docs/calendar/index.en-US.md
new file mode 100644
index 000000000..d90373918
--- /dev/null
+++ b/antdv-demo/docs/calendar/index.en-US.md
@@ -0,0 +1,40 @@
+## API
+
+**Note:** Part of the Calendar's locale is read from `value`. So, please set the locale of `moment` correctly.
+
+```html
+// The default locale is en-US, if you want to use other locale, just set locale in entry file
+globally. // import moment from 'moment'; // import 'moment/locale/zh-cn'; //
+moment.locale('zh-cn');
+
+
+
+
+
+```
+
+customize the progress dot by setting a scoped slot
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| dateCellRender | Customize the display of the date cell by setting a scoped slot, the returned content will be appended to the cell | function(date: moment) | - | |
+| dateFullCellRender | Customize the display of the date cell by setting a scoped slot, the returned content will override the cell | function(date: moment) | - | |
+| defaultValue | The date selected by default | [moment](http://momentjs.com/) | default date | |
+| disabledDate | Function that specifies the dates that cannot be selected | (currentDate: moment) => boolean | - |
+| fullscreen | Whether to display in full-screen | boolean | `true` | |
+| locale | The calendar's locale | object | [default](https://github.com/vueComponent/ant-design-vue/blob/master/components/date-picker/locale/example.json) | |
+| mode | The display mode of the calendar | `month` \| `year` | `month` | |
+| monthCellRender | Customize the display of the month cell by setting a scoped slot, the returned content will be appended to the cell | function(date: moment) | - | |
+| monthFullCellRender | Customize the display of the month cell by setting a scoped slot, the returned content will override the cell | function(date: moment) | - | |
+| validRange | to set valid range | \[[moment](http://momentjs.com/), [moment](http://momentjs.com/)] | - | |
+| value(v-model) | The current selected date | [moment](http://momentjs.com/) | current date | |
+| headerRender | render custom header in panel | function(object:{value: moment, type: string, onChange: f(), onTypeChange: f()}) \| slot-scope | - | 1.5.0 |
+| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string,[date formats](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| panelChange | Callback for when panel changes | function(date: moment \| string, mode: string) | - | |
+| select | Callback for when a date is selected | function(date: moment \| string) | - | |
+| change | Callback for when value change | function(date: moment \| string) | - | |
diff --git a/antdv-demo/docs/calendar/index.zh-CN.md b/antdv-demo/docs/calendar/index.zh-CN.md
new file mode 100644
index 000000000..6b7cc2dcb
--- /dev/null
+++ b/antdv-demo/docs/calendar/index.zh-CN.md
@@ -0,0 +1,37 @@
+## API
+
+**注意:**Calendar 部分 locale 是从 value 中读取,所以请先正确设置 moment 的 locale。
+
+```html
+// 默认语言为 en-US,所以如果需要使用其他语言,推荐在入口文件全局设置 locale // import moment from
+'moment'; // import 'moment/locale/zh-cn'; // moment.locale('zh-cn');
+
+
+
+
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| dateCellRender | 作用域插槽,用来自定义渲染日期单元格,返回内容会被追加到单元格, | function(date: moment) | 无 | |
+| dateFullCellRender | 作用域插槽,自定义渲染日期单元格,返回内容覆盖单元格 | function(date: moment) | 无 | |
+| defaultValue | 默认展示的日期 | [moment](http://momentjs.com/) | 默认日期 | |
+| disabledDate | 不可选择的日期 | (currentDate: moment) => boolean | 无 | |
+| fullscreen | 是否全屏显示 | boolean | true | |
+| locale | 国际化配置 | object | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/master/components/date-picker/locale/example.json) | |
+| mode | 初始模式,`month/year` | string | month | |
+| monthCellRender | 作用域插槽,自定义渲染月单元格,返回内容会被追加到单元格 | function(date: moment) | 无 | |
+| monthFullCellRender | 作用域插槽,自定义渲染月单元格,返回内容覆盖单元格 | function(date: moment) | 无 | |
+| validRange | 设置可以显示的日期 | \[[moment](http://momentjs.com/), [moment](http://momentjs.com/)] | 无 | |
+| value(v-model) | 展示日期 | [moment](http://momentjs.com/) | 当前日期 | |
+| headerRender | 自定义头部内容 | function(object:{value: moment, type: string, onChange: f(), onTypeChange: f()}) \| slot-scope | - | 1.5.0 |
+| valueFormat | 可选,绑定值的格式,对 value、defaultValue 起作用。不指定则绑定值为 moment 对象 | string,[具体格式](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| panelChange | 日期面板变化回调 | function(date: moment \| string, mode: string) | 无 |
+| select | 点击选择日期回调 | function(date: moment \| string) | 无 |
+| change | 日期变化时的回调, 面板变化有可能导致日期变化 | function(date: moment \| string) | 无 |
diff --git a/antdv-demo/docs/card/demo/basic.md b/antdv-demo/docs/card/demo/basic.md
new file mode 100644
index 000000000..849ff2b7a
--- /dev/null
+++ b/antdv-demo/docs/card/demo/basic.md
@@ -0,0 +1,31 @@
+
+#### 典型卡片
+包含标题、内容、操作区域。
+可通过设置size为`default`或者`small`,控制尺寸
+
+
+
+#### Basic card
+A basic card containing a title, content and an extra corner content.
+Supports two sizes: `default` and `small`.
+
+
+```vue
+
+
+
+ more
+ card content
+ card content
+ card content
+
+
+
+ more
+ card content
+ card content
+ card content
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/border-less.md b/antdv-demo/docs/card/demo/border-less.md
new file mode 100644
index 000000000..1e6222607
--- /dev/null
+++ b/antdv-demo/docs/card/demo/border-less.md
@@ -0,0 +1,21 @@
+
+ #### 无边框
+ 在灰色背景上使用无边框的卡片
+
+
+
+ #### No border
+ A borderless card on a gray background.
+
+
+```vue
+
+
+
+ Card content
+ Card content
+ Card content
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/flexible-content.md b/antdv-demo/docs/card/demo/flexible-content.md
new file mode 100644
index 000000000..af3621e48
--- /dev/null
+++ b/antdv-demo/docs/card/demo/flexible-content.md
@@ -0,0 +1,26 @@
+
+ #### 更灵活的内容展示
+ 可以利用 `Card.Meta` 支持更灵活的内容
+
+
+
+ #### Customized content
+ You can use `Card.Meta` to support more flexible content.
+
+
+```vue
+
+
+
+
+
+ www.instagram.com
+
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/grid-card.md b/antdv-demo/docs/card/demo/grid-card.md
new file mode 100644
index 000000000..42560d201
--- /dev/null
+++ b/antdv-demo/docs/card/demo/grid-card.md
@@ -0,0 +1,40 @@
+
+#### 网格型内嵌卡片
+一种常见的卡片内容区隔模式。
+
+
+
+#### Grid card
+Grid style card content.
+
+
+```vue
+
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+ Content
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/in-column.md b/antdv-demo/docs/card/demo/in-column.md
new file mode 100644
index 000000000..5081c2800
--- /dev/null
+++ b/antdv-demo/docs/card/demo/in-column.md
@@ -0,0 +1,33 @@
+
+ #### 栅格卡片
+ 在系统概览页面常常和栅格进行配合。
+
+
+
+ #### Card in column
+ Cards usually cooperate with grid column layout in overview page.
+
+
+```vue
+
+
+
+
+
+ card content
+
+
+
+
+ card content
+
+
+
+
+ card content
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/index.vue b/antdv-demo/docs/card/demo/index.vue
new file mode 100644
index 000000000..ff13bda48
--- /dev/null
+++ b/antdv-demo/docs/card/demo/index.vue
@@ -0,0 +1,61 @@
+
diff --git a/antdv-demo/docs/card/demo/inner.md b/antdv-demo/docs/card/demo/inner.md
new file mode 100644
index 000000000..8f1353dbe
--- /dev/null
+++ b/antdv-demo/docs/card/demo/inner.md
@@ -0,0 +1,27 @@
+
+ #### 内部卡片
+ 可以放在普通卡片内部,展示多层级结构的信息
+
+
+
+ #### Inner card
+ It can be placed inside the ordinary card to display the information of the multilevel structure
+
+
+```vue
+
+
+
+ Group title
+
+
+ More
+ Inner Card content
+
+
+ More
+ Inner Card content
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/loading.md b/antdv-demo/docs/card/demo/loading.md
new file mode 100644
index 000000000..0345a2dc0
--- /dev/null
+++ b/antdv-demo/docs/card/demo/loading.md
@@ -0,0 +1,36 @@
+
+ #### 预加载的卡片
+ 数据读入前会有文本块样式
+
+
+
+ #### Loading card
+ Shows a loading indirector while the contents of the card is being featched
+
+
+```vue
+
+
+
+ whatever content
+
+
+ Toggle loading
+
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/meta.md b/antdv-demo/docs/card/demo/meta.md
new file mode 100644
index 000000000..80ff58f3f
--- /dev/null
+++ b/antdv-demo/docs/card/demo/meta.md
@@ -0,0 +1,32 @@
+
+ #### 支持更多内容配置
+ 一种支持封面、头像、标题和描述信息的卡片。
+
+
+
+ #### Support more content configuration
+ A Card that supports `cover`, `avatar`, `title` and `description`.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/card/demo/simple.md b/antdv-demo/docs/card/demo/simple.md
new file mode 100644
index 000000000..7a416486a
--- /dev/null
+++ b/antdv-demo/docs/card/demo/simple.md
@@ -0,0 +1,19 @@
+
+#### 简洁卡片
+只包含内容区域。
+
+
+
+#### Simple card
+A simple card only containing a content area.
+
+
+```vue
+
+
+ Card content
+ Card content
+ Card content
+
+
+```
diff --git a/antdv-demo/docs/card/demo/tabs.md b/antdv-demo/docs/card/demo/tabs.md
new file mode 100644
index 000000000..9976ae088
--- /dev/null
+++ b/antdv-demo/docs/card/demo/tabs.md
@@ -0,0 +1,91 @@
+
+ #### 带页签的卡片
+ 可承载更多内容
+
+
+
+ #### With tabs
+ More content can be hosted
+
+
+```vue
+
+
+
onTabChange(key, 'key')"
+ >
+ {{ item.key }}
+ More
+ {{ contentList[key] }}
+
+
+
onTabChange(key, 'noTitleKey')"
+ >
+
+ article content
+
+
+ app content
+
+
+ project content
+
+ More
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/card/index.en-US.md b/antdv-demo/docs/card/index.en-US.md
new file mode 100644
index 000000000..bac67a524
--- /dev/null
+++ b/antdv-demo/docs/card/index.en-US.md
@@ -0,0 +1,37 @@
+## API
+
+### Card
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| actions | The action list, shows at the bottom of the Card. | slots | - | |
+| activeTabKey | Current TabPane's key | string | - | |
+| headStyle | Inline style to apply to the card head | object | - | |
+| bodyStyle | Inline style to apply to the card content | object | - | |
+| bordered | Toggles rendering of the border around the card | boolean | `true` | |
+| cover | Card cover | slot | - | |
+| defaultActiveTabKey | Initial active TabPane's key, if `activeTabKey` is not set. | string | - | |
+| extra | Content to render in the top-right corner of the card | string\|slot | - | |
+| hoverable | Lift up when hovering card | boolean | false | |
+| loading | Shows a loading indicator while the contents of the card are being fetched | boolean | false | |
+| tabList | List of TabPane's head, Custom tabs can be created with the scopedSlots property | Array<{key: string, tab: any, scopedSlots: {tab: 'XXX'}}> | - | |
+| tabBarExtraContent | Extra content in tab bar | slot | - | 1.5.0 |
+| size | Size of card | `default` \| `small` | `default` | |
+| title | Card title | string\|slot | - | |
+| type | Card style type, can be set to `inner` or not set | string | - | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | ----------------------------- | ------------- | ------- |
+| tabChange | Callback when tab is switched | (key) => void | - | |
+
+### Card.Grid
+
+### Card.Meta
+
+| Property | Description | Type | Default | Version |
+| ----------- | ------------------- | ------------ | ------- | ------- |
+| avatar | avatar or icon | slot | - | |
+| description | description content | string\|slot | - | |
+| title | title content | string\|slot | - | |
diff --git a/antdv-demo/docs/card/index.zh-CN.md b/antdv-demo/docs/card/index.zh-CN.md
new file mode 100644
index 000000000..94e7b5e38
--- /dev/null
+++ b/antdv-demo/docs/card/index.zh-CN.md
@@ -0,0 +1,37 @@
+## API
+
+### Card
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| actions | 卡片操作组,位置在卡片底部 | slots | - | |
+| activeTabKey | 当前激活页签的 key | string | - | |
+| headStyle | 自定义标题区域样式 | object | - | |
+| bodyStyle | 内容区域自定义样式 | object | - | |
+| bordered | 是否有边框 | boolean | true | |
+| cover | 卡片封面 | slot | - | |
+| defaultActiveTabKey | 初始化选中页签的 key,如果没有设置 activeTabKey | string | 第一个页签 | |
+| extra | 卡片右上角的操作区域 | string\|slot | - | |
+| hoverable | 鼠标移过时可浮起 | boolean | false | |
+| loading | 当卡片内容还在加载中时,可以用 loading 展示一个占位 | boolean | false | |
+| tabList | 页签标题列表, 可以通过 scopedSlots 属性自定义 tab | Array<{key: string, tab: any, scopedSlots: {tab: 'XXX'}}> | - | |
+| tabBarExtraContent | tab bar 上额外的元素 | slot | 无 | 1.5.0 |
+| size | card 的尺寸 | `default` \| `small` | `default` | |
+| title | 卡片标题 | string\|slot | - | |
+| type | 卡片类型,可设置为 `inner` 或 不设置 | string | - | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| --------- | -------------- | ------------- | ---- |
+| tabChange | 页签切换的回调 | (key) => void | - | |
+
+### Card.Grid
+
+### Card.Meta
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| ----------- | --------- | ------------ | ------ | ---- |
+| avatar | 头像/图标 | slot | - | |
+| description | 描述内容 | string\|slot | - | |
+| title | 标题内容 | string\|slot | - | |
diff --git a/antdv-demo/docs/carousel/demo/autoplay.md b/antdv-demo/docs/carousel/demo/autoplay.md
new file mode 100644
index 000000000..c0b8ca05d
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/autoplay.md
@@ -0,0 +1,37 @@
+
+#### 自动切换
+定时切换下一张。
+
+
+
+#### Scroll automatically
+Timing of scrolling to the next card/picture.
+
+
+```vue
+
+
+
1
+
2
+
3
+
4
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/demo/basic.md b/antdv-demo/docs/carousel/demo/basic.md
new file mode 100644
index 000000000..38c0170f2
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/basic.md
@@ -0,0 +1,43 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### Basic
+Basic usage.
+
+
+```vue
+
+
+
1
+
2
+
3
+
4
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/demo/customArrows.md b/antdv-demo/docs/carousel/demo/customArrows.md
new file mode 100644
index 000000000..0292f5ea5
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/customArrows.md
@@ -0,0 +1,63 @@
+
+#### 自定义箭头
+自定义箭头展示。
+
+
+
+#### Custom Arrows
+Custom arrows display
+
+
+```vue
+
+
+
+
+
1
+
2
+
3
+
4
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/demo/customPaging.md b/antdv-demo/docs/carousel/demo/customPaging.md
new file mode 100644
index 000000000..3b79d9ef5
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/customPaging.md
@@ -0,0 +1,65 @@
+
+#### 自定义分页
+自定义分页展示。
+
+
+
+#### Custom Paging
+Custom paging display
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/demo/fade.md b/antdv-demo/docs/carousel/demo/fade.md
new file mode 100644
index 000000000..0b8fb932c
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/fade.md
@@ -0,0 +1,37 @@
+
+#### 渐显
+切换效果为渐显。
+
+
+
+#### Fade in
+Slides use fade for transition.
+
+
+```vue
+
+
+
1
+
2
+
3
+
4
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/demo/index.vue b/antdv-demo/docs/carousel/demo/index.vue
new file mode 100644
index 000000000..087a28c01
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/index.vue
@@ -0,0 +1,58 @@
+
diff --git a/antdv-demo/docs/carousel/demo/position.md b/antdv-demo/docs/carousel/demo/position.md
new file mode 100644
index 000000000..4ac925eba
--- /dev/null
+++ b/antdv-demo/docs/carousel/demo/position.md
@@ -0,0 +1,59 @@
+
+#### 位置
+位置有 4 个方向。
+
+
+
+#### Position
+There are 4 position options available.
+
+
+```vue
+
+
+
+
+ Top
+
+
+ Bottom
+
+
+ Left
+
+
+ Right
+
+
+
+
1
+
2
+
3
+
4
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/carousel/index.en-US.md b/antdv-demo/docs/carousel/index.en-US.md
new file mode 100644
index 000000000..ec54998ca
--- /dev/null
+++ b/antdv-demo/docs/carousel/index.en-US.md
@@ -0,0 +1,18 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| afterChange | Callback function called after the current index changes | function(current) | - | |
+| autoplay | Whether to scroll automatically | boolean | `false` | |
+| beforeChange | Callback function called before the current index changes | function(from, to) | - | |
+| dots | Whether to show the dots at the bottom of the gallery | boolean | `true` | |
+| dotPosition | The position of the dots, which can be one of `top` `bottom` `left` `right` | string | bottom | 1.5.0 |
+| dotsClass | Class name of the dots | string | `slick-dots` | |
+| easing | Transition interpolation function name | string | `linear` | |
+| effect | Transition effect | `scrollx` \| `fade` | `scrollx` | |
+
+## Methods
+
+| Name | Description | Version | | --- | --- | --- | Version | | goTo(slideNumber, dontAnimate) | Go to slide index, if dontAnimate=true, it happens without animation | | | next() | Change current slide to next slide | | | prev() | Change current slide to previous slide | |
+
+For more info on the parameters, refer to the [vc-slick props](https://github.com/vueComponent/ant-design-vue/blob/master/components/vc-slick/src/default-props.js#L3)
diff --git a/antdv-demo/docs/carousel/index.zh-CN.md b/antdv-demo/docs/carousel/index.zh-CN.md
new file mode 100644
index 000000000..add985487
--- /dev/null
+++ b/antdv-demo/docs/carousel/index.zh-CN.md
@@ -0,0 +1,22 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| afterChange | 切换面板的回调 | function(current) | 无 | |
+| autoplay | 是否自动切换 | boolean | false | |
+| beforeChange | 切换面板的回调 | function(from, to) | 无 | |
+| dotPosition | 面板指示点位置,可选 `top` `bottom` `left` `right` | string | bottom | 1.5.0 |
+| dots | 是否显示面板指示点 | boolean | true | |
+| dotsClass | 面板指示点类名 | string | `slick-dots` | |
+| easing | 动画效果 | string | linear | |
+| effect | 动画效果函数,可取 scrollx, fade | string | scrollx | |
+
+## 方法
+
+| 名称 | 描述 | 版本 |
+| ------------------------------ | ------------------------------------------------- | ---- |
+| goTo(slideNumber, dontAnimate) | 切换到指定面板, dontAnimate = true 时,不使用动画 | |
+| next() | 切换到下一面板 | |
+| prev() | 切换到上一面板 | |
+
+更多参数可参考:[vc-slick props](https://github.com/vueComponent/ant-design-vue/blob/master/components/vc-slick/src/default-props.js#L3)
diff --git a/antdv-demo/docs/cascader/demo/basic.md b/antdv-demo/docs/cascader/demo/basic.md
new file mode 100644
index 000000000..90f1b60b9
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/basic.md
@@ -0,0 +1,62 @@
+
+#### 基本
+省市区级联。
+
+
+
+#### Basic
+Cascade selection box for selecting province/city/district.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/change-on-select.md b/antdv-demo/docs/cascader/demo/change-on-select.md
new file mode 100644
index 000000000..fe7f8bd4e
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/change-on-select.md
@@ -0,0 +1,62 @@
+
+#### 选择即改变
+这种交互允许只选中父级选项。
+
+
+
+#### Change on select
+Allow only select parent options.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/custom-render.md b/antdv-demo/docs/cascader/demo/custom-render.md
new file mode 100644
index 000000000..96f129f0f
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/custom-render.md
@@ -0,0 +1,84 @@
+
+#### 自定义已选项
+例如给最后一项加上邮编链接。
+
+
+
+#### Custom render
+For instance, add an external link after the selected value.
+
+
+```vue
+
+
+
+
+
+ {{ label }} ( handleAreaClick(e, label, selectedOptions[index])">{{
+ selectedOptions[index].code
+ }} )
+
+ {{ label }} /
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/custom-trigger.md b/antdv-demo/docs/cascader/demo/custom-trigger.md
new file mode 100644
index 000000000..4d051c076
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/custom-trigger.md
@@ -0,0 +1,68 @@
+
+#### 可以自定义显示
+切换按钮和结果分开。
+
+
+
+#### Custom trigger
+Separate trigger button and result.
+
+
+```vue
+
+
+ {{ text }}
+
+ Change city
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/default-value.md b/antdv-demo/docs/cascader/demo/default-value.md
new file mode 100644
index 000000000..51267909e
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/default-value.md
@@ -0,0 +1,66 @@
+
+#### 默认值
+默认值通过数组的方式指定。
+
+
+
+#### Default value
+Specifies default value by an array.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/disabled-option.md b/antdv-demo/docs/cascader/demo/disabled-option.md
new file mode 100644
index 000000000..1b6c280fd
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/disabled-option.md
@@ -0,0 +1,63 @@
+
+#### 禁用选项
+通过指定 options 里的 `disabled` 字段。
+
+
+
+#### Disabled option
+Disable option by specifying the `disabled` property in `options`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/fields-name.md b/antdv-demo/docs/cascader/demo/fields-name.md
new file mode 100644
index 000000000..987c11a85
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/fields-name.md
@@ -0,0 +1,68 @@
+
+#### 自定义字段名
+自定义字段名。
+
+
+
+#### Custom Field Names
+Custom Field Names.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/hover.md b/antdv-demo/docs/cascader/demo/hover.md
new file mode 100644
index 000000000..545d673a9
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/hover.md
@@ -0,0 +1,71 @@
+
+#### 移入展开
+通过移入展开下级菜单,点击完成选择。
+
+
+
+#### Hover
+Hover to expand sub menu, click to select option.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/index.vue b/antdv-demo/docs/cascader/demo/index.vue
new file mode 100644
index 000000000..10899f4d9
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/index.vue
@@ -0,0 +1,71 @@
+
+
diff --git a/antdv-demo/docs/cascader/demo/lazy.md b/antdv-demo/docs/cascader/demo/lazy.md
new file mode 100644
index 000000000..2e030c07b
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/lazy.md
@@ -0,0 +1,68 @@
+
+#### 动态加载选项
+使用 `loadData` 实现动态加载选项。
+> 注意:`loadData` 与 `showSearch` 无法一起使用。
+
+
+
+#### Load Options Lazily
+Load options lazily with `loadData`.
+> Note: `loadData` cannot work with `showSearch`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/search.md b/antdv-demo/docs/cascader/demo/search.md
new file mode 100644
index 000000000..2a4ee0181
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/search.md
@@ -0,0 +1,77 @@
+
+#### 搜索
+可以直接搜索选项并选择。
+> `Cascader[showSearch]` 暂不支持服务端搜索,更多信息见 [#5547](https://github.com/ant-design/ant-design/issues/5547)
+
+
+
+#### Search
+Search and select options directly.
+> Now, `Cascader[showSearch]` doesn't support search on server, more info [#5547](https://github.com/ant-design/ant-design/issues/5547)
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/size.md b/antdv-demo/docs/cascader/demo/size.md
new file mode 100644
index 000000000..14dce6d26
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/size.md
@@ -0,0 +1,66 @@
+
+#### 大小
+不同大小的级联选择器。
+
+
+
+#### Size
+Cascade selection box of different sizes.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/demo/suffix.md b/antdv-demo/docs/cascader/demo/suffix.md
new file mode 100644
index 000000000..1d7448a42
--- /dev/null
+++ b/antdv-demo/docs/cascader/demo/suffix.md
@@ -0,0 +1,78 @@
+
+#### 后缀图标
+省市区级联。
+
+
+
+#### Suffix
+Cascade selection box for selecting province/city/district.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/cascader/index.en-US.md b/antdv-demo/docs/cascader/index.en-US.md
new file mode 100644
index 000000000..09fcff68e
--- /dev/null
+++ b/antdv-demo/docs/cascader/index.en-US.md
@@ -0,0 +1,54 @@
+## API
+
+```html
+
+```
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| allowClear | whether allow clear | boolean | true |
+| autoFocus | get focus when component mounted | boolean | false |
+| changeOnSelect | change value on each selection if set to true, see above demo for details | boolean | false |
+| defaultValue | initial selected value | string\[] \| number\[] | \[] |
+| disabled | whether disabled select | boolean | false |
+| displayRender | render function of displaying selected options, you can use slot="displayRender" and slot-scope="{labels, selectedOptions}" | `({labels, selectedOptions}) => vNode` | `labels => labels.join(' / ')` |
+| expandTrigger | expand current item when click or hover, one of 'click' 'hover' | string | 'click' |
+| fieldNames | custom field name for label and value and children | object | `{ label: 'label', value: 'value', children: 'children' }` |
+| getPopupContainer | Parent Node which the selector should be rendered to. Default to `body`. When position issues happen, try to modify it into scrollable content and position it relative. | Function(triggerNode) | () => document.body |
+| loadData | To load option lazily, and it cannot work with `showSearch` | `(selectedOptions) => void` | - |
+| notFoundContent | Specify content to show when no result matches. | string | 'Not Found' |
+| options | data options of cascade | object | - |
+| placeholder | input placeholder | string | 'Please select' |
+| popupClassName | additional className of popup overlay | string | - |
+| popupStyle | additional style of popup overlay | object | {} |
+| popupPlacement | use preset popup align config from builtinPlacements:`bottomLeft` `bottomRight` `topLeft` `topRight` | string | `bottomLeft` |
+| popupVisible | set visible of cascader popup | boolean | - |
+| showSearch | Whether show search input in single mode. | boolean\|object | false |
+| size | input size, one of `large` `default` `small` | string | `default` |
+| suffixIcon | The custom suffix icon | string \| VNode \| slot | - |
+| value(v-model) | selected value | string\[] \| number\[] | - |
+
+Fields in `showSearch`:
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| filter | The function will receive two arguments, inputValue and option, if the function returns true, the option will be included in the filtered set; Otherwise, it will be excluded. | `function(inputValue, path): boolean` | |
+| limit | Set the count of filtered items | number \| false | 50 |
+| matchInputWidth | Whether the width of result list equals to input's | boolean | |
+| render | Used to render filtered options, you can use slot="showSearchRender" and slot-scope="{inputValue, path}" | `function({inputValue, path}): vNode` | |
+| sort | Used to sort filtered options. | `function(a, b, inputValue)` | |
+
+### events
+
+| Events Name | Description | Arguments | version |
+| --- | --- | --- | --- |
+| change | callback when finishing cascader select | `(value, selectedOptions) => void` | - | |
+| popupVisibleChange | callback when popup shown or hidden | `(value) => void` | - | |
+| search | callback when input value change | `(value) => void` | - | 1.5.4 |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/cascader/index.zh-CN.md b/antdv-demo/docs/cascader/index.zh-CN.md
new file mode 100644
index 000000000..2456001f6
--- /dev/null
+++ b/antdv-demo/docs/cascader/index.zh-CN.md
@@ -0,0 +1,56 @@
+## API
+
+```html
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| allowClear | 是否支持清除 | boolean | true |
+| autoFocus | 自动获取焦点 | boolean | false |
+| changeOnSelect | 当此项为 true 时,点选每级菜单选项值都会发生变化,具体见上面的演示 | boolean | false |
+| defaultValue | 默认的选中项 | string\[] \| number\[] | \[] |
+| disabled | 禁用 | boolean | false |
+| displayRender | 选择后展示的渲染函数,可使用 slot="displayRender" 和 slot-scope="{labels, selectedOptions}" | `({labels, selectedOptions}) => vNode` | `labels => labels.join(' / ')` |
+| expandTrigger | 次级菜单的展开方式,可选 'click' 和 'hover' | string | 'click' |
+| fieldNames | 自定义 options 中 label name children 的字段 | object | `{ label: 'label', value: 'value', children: 'children' }` |
+| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | Function(triggerNode) | () => document.body |
+| loadData | 用于动态加载选项,无法与 `showSearch` 一起使用 | `(selectedOptions) => void` | - |
+| notFoundContent | 当下拉列表为空时显示的内容 | string | 'Not Found' |
+| options | 可选项数据源 | object | - |
+| placeholder | 输入框占位文本 | string | '请选择' |
+| popupClassName | 自定义浮层类名 | string | - |
+| popupStyle | 自定义浮层样式 | object | {} |
+| popupPlacement | 浮层预设位置:`bottomLeft` `bottomRight` `topLeft` `topRight` | Enum | `bottomLeft` |
+| popupVisible | 控制浮层显隐 | boolean | - |
+| showSearch | 在选择框中显示搜索框 | boolean | false |
+| size | 输入框大小,可选 `large` `default` `small` | string | `default` |
+| suffixIcon | 自定义的选择框后缀图标 | string \| VNode \| slot | - |
+| value(v-model) | 指定选中项 | string\[] \| number\[] | - |
+
+`showSearch` 为对象时,其中的字段:
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| filter | 接收 `inputValue` `path` 两个参数,当 `path` 符合筛选条件时,应返回 true,反之则返回 false。 | `function(inputValue, path): boolean` | |
+| limit | 搜索结果展示数量 | number \| false | 50 |
+| matchInputWidth | 搜索结果列表是否与输入框同宽 | boolean | |
+| render | 用于渲染 filter 后的选项,可使用 slot="showSearchRender" 和 slot-scope="{inputValue, path}" | `function({inputValue, path}): vNode` | |
+| sort | 用于排序 filter 后的选项 | `function(a, b, inputValue)` | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| ------------------ | ------------------- | ---------------------------------- | ---- |
+| change | 选择完成后的回调 | `(value, selectedOptions) => void` | - | |
+| popupVisibleChange | 显示/隐藏浮层的回调 | `(value) => void` | - | |
+| search | 输入框变化时的回调 | `(value) => void` | - | 1.5.4 |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
+
+> 注意,如果需要获得中国省市区数据,可以参考 react 组件的实现 [china-division](https://gist.github.com/afc163/7582f35654fd03d5be7009444345ea17)。
diff --git a/antdv-demo/docs/checkbox/demo/basic.md b/antdv-demo/docs/checkbox/demo/basic.md
new file mode 100644
index 000000000..fea59b697
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/basic.md
@@ -0,0 +1,26 @@
+
+#### 基本用法
+简单的checkbox
+
+
+
+#### Basic
+Basic usage of checkbox
+
+
+```vue
+
+
+ Checkbox
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/demo/check-all.md b/antdv-demo/docs/checkbox/demo/check-all.md
new file mode 100644
index 000000000..4493028d4
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/check-all.md
@@ -0,0 +1,50 @@
+
+#### 全选
+在实现全选效果时,你可能会用到`indeterminate`属性
+
+
+
+#### Check all
+The `indeterminate` property can help you to achieve a 'check all' effect.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/demo/controller.md b/antdv-demo/docs/checkbox/demo/controller.md
new file mode 100644
index 000000000..52179beb1
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/controller.md
@@ -0,0 +1,56 @@
+
+#### 受控的checkbox
+联动checkbox
+
+
+
+#### Controlled Checkbox
+Communicated with other components
+
+
+```vue
+
+
+
+
+ {{ label }}
+
+
+
+
+ {{ !checked ? 'Check' : 'Uncheck' }}
+
+
+ {{ !disabled ? 'Disable' : 'Enable' }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/demo/disabled.md b/antdv-demo/docs/checkbox/demo/disabled.md
new file mode 100644
index 000000000..c17aec56d
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/disabled.md
@@ -0,0 +1,19 @@
+
+#### 不可用
+checkbox 不可用
+
+
+
+#### Disabled
+Disabled checkbox
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/demo/group.md b/antdv-demo/docs/checkbox/demo/group.md
new file mode 100644
index 000000000..fe1f8c4cf
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/group.md
@@ -0,0 +1,64 @@
+
+#### Checkbox组
+方便的从数组生成checkbox
+
+
+
+#### Checkbox group
+Generate a group of checkboxes from an array
+
+
+```vue
+
+
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/demo/index.vue b/antdv-demo/docs/checkbox/demo/index.vue
new file mode 100644
index 000000000..39b2092ca
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/index.vue
@@ -0,0 +1,54 @@
+
diff --git a/antdv-demo/docs/checkbox/demo/layout.md b/antdv-demo/docs/checkbox/demo/layout.md
new file mode 100644
index 000000000..6187e91da
--- /dev/null
+++ b/antdv-demo/docs/checkbox/demo/layout.md
@@ -0,0 +1,52 @@
+
+#### 布局
+Checkbox.Group内嵌Checkbox并与Grid组件一起使用,可以实现灵活的布局
+
+
+
+#### Use with grid
+We can use Checkbox and Grid Checkbox.group, to implement complex layout
+
+
+```vue
+
+
+
+
+
+ A
+
+
+
+
+ B
+
+
+
+
+ C
+
+
+
+
+ D
+
+
+
+
+ E
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/checkbox/index.en-US.md b/antdv-demo/docs/checkbox/index.en-US.md
new file mode 100644
index 000000000..631c64deb
--- /dev/null
+++ b/antdv-demo/docs/checkbox/index.en-US.md
@@ -0,0 +1,44 @@
+## API
+
+### Props
+
+#### Checkbox
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| autoFocus | get focus when component mounted | boolean | false | |
+| checked | Specifies whether the checkbox is selected. | boolean | false | |
+| defaultChecked | Specifies the initial state: whether or not the checkbox is selected. | boolean | false | |
+| disabled | Disable checkbox | boolean | false | |
+| indeterminate | indeterminate checked state of checkbox | boolean | false | |
+
+#### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | The callback function that is triggered when the state changes. | Function(e:Event) | |
+
+#### Checkbox Group
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| defaultValue | Default selected value | string\[] | \[] | |
+| disabled | Disable all checkboxes | boolean | false | |
+| name | The `name` property of all `input[type="checkbox"]` children | string | - | 1.5.0 |
+| options | Specifies options, you can customize `label` with slot = "label" slot-scope="option" | string\[] \| Array<{ label: string value: string disabled?: boolean, indeterminate?: boolean, onChange?: function }> | \[] | |
+| value | Used for setting the currently selected value. | string\[] | \[] | |
+
+#### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | The callback function that is triggered when the state changes. | Function(checkedValue) | |
+
+### Methods
+
+#### Checkbox
+
+| Name | Description | Version |
+| ------- | ------------ | ------- |
+| blur() | remove focus | |
+| focus() | get focus | |
diff --git a/antdv-demo/docs/checkbox/index.zh-CN.md b/antdv-demo/docs/checkbox/index.zh-CN.md
new file mode 100644
index 000000000..122243413
--- /dev/null
+++ b/antdv-demo/docs/checkbox/index.zh-CN.md
@@ -0,0 +1,44 @@
+## API
+
+### 属性
+
+#### Checkbox
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| -------------- | --------------------------------------- | ------- | ------ | ---- |
+| autoFocus | 自动获取焦点 | boolean | false | |
+| checked | 指定当前是否选中 | boolean | false | |
+| defaultChecked | 初始是否选中 | boolean | false | |
+| disabled | 失效状态 | boolean | false | |
+| indeterminate | 设置 indeterminate 状态,只负责样式控制 | boolean | false | |
+
+#### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | -------------- | ----------------- | ---- |
+| change | 变化时回调函数 | Function(e:Event) | - | |
+
+#### Checkbox Group
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| defaultValue | 默认选中的选项 | string\[] | \[] | |
+| disabled | 整组失效 | boolean | false | |
+| name | CheckboxGroup 下所有 `input[type="checkbox"]` 的 `name` 属性 | string | - | 1.5.0 |
+| options | 指定可选项,可以通过 slot="label" slot-scope="option" 定制`label` | string\[] \| Array<{ label: string value: string disabled?: boolean, indeterminate?: boolean, onChange?: function }> | \[] | |
+| value | 指定选中的选项 | string\[] | \[] | |
+
+#### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | -------------- | ---------------------- | ---- |
+| change | 变化时回调函数 | Function(checkedValue) | - | |
+
+### 方法
+
+#### Checkbox
+
+| 名称 | 描述 | 版本 |
+| ------- | -------- | ---- |
+| blur() | 移除焦点 | |
+| focus() | 获取焦点 | |
diff --git a/antdv-demo/docs/collapse/demo/accordion.md b/antdv-demo/docs/collapse/demo/accordion.md
new file mode 100644
index 000000000..891c44501
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/accordion.md
@@ -0,0 +1,36 @@
+
+#### 手风琴
+手风琴,每次只打开一个 tab。
+
+
+
+#### Accordion
+In accordion mode, only one panel can be expanded at a time.
+
+
+```vue
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/basic.md b/antdv-demo/docs/collapse/demo/basic.md
new file mode 100644
index 000000000..7319df15b
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/basic.md
@@ -0,0 +1,42 @@
+
+#### 折叠面板
+可以同时展开多个面板,这个例子默认展开了第一个。
+
+
+
+#### Collapse
+By default, any number of panels can be expanded at a time. The first panel is expanded in this example.
+
+
+```vue
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/borderless.md b/antdv-demo/docs/collapse/demo/borderless.md
new file mode 100644
index 000000000..2a83ac5d1
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/borderless.md
@@ -0,0 +1,36 @@
+
+#### 简洁风格
+一套没有边框的简洁样式。
+
+
+
+#### Borderless
+A borderless style of Collapse.
+
+
+```vue
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/custom.md b/antdv-demo/docs/collapse/demo/custom.md
new file mode 100644
index 000000000..7cdfbd309
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/custom.md
@@ -0,0 +1,41 @@
+
+#### 自定义面板
+自定义各个面板的背景色、圆角、边距和图标。
+
+
+
+#### Custom Panel
+Customize the background, border and margin styles and icon for each panel.
+
+
+```vue
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/extra.md b/antdv-demo/docs/collapse/demo/extra.md
new file mode 100644
index 000000000..8646a1697
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/extra.md
@@ -0,0 +1,62 @@
+
+#### 额外节点
+可以同时展开多个面板,这个例子默认展开了第一个。
+
+
+
+#### Extra node
+More than one panel can be expanded at a time, the first panel is initialized to be active in this case.
+
+
+```vue
+
+
+
+
+ {{ text }}
+
+
+
+ {{ text }}
+
+
+
+ {{ text }}
+
+
+
+
+
Expand Icon Position:
+
+
+ left
+
+
+ right
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/index.vue b/antdv-demo/docs/collapse/demo/index.vue
new file mode 100644
index 000000000..d8a708df0
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/index.vue
@@ -0,0 +1,62 @@
+
diff --git a/antdv-demo/docs/collapse/demo/mix.md b/antdv-demo/docs/collapse/demo/mix.md
new file mode 100644
index 000000000..749520427
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/mix.md
@@ -0,0 +1,45 @@
+
+#### 面板嵌套
+嵌套折叠面板。
+
+
+
+#### Nested panel
+`Collapse` is nested inside the `Collapse`.
+
+
+```vue
+
+
+
+
+
+
+ {{ text }}
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/demo/noarrow.md b/antdv-demo/docs/collapse/demo/noarrow.md
new file mode 100644
index 000000000..2caccf3cf
--- /dev/null
+++ b/antdv-demo/docs/collapse/demo/noarrow.md
@@ -0,0 +1,42 @@
+
+#### 隐藏箭头
+你可以通过 `:showArrow="false"` 隐藏 `a-collapse-panel` 组件的箭头图标。
+
+
+
+#### No arrow
+You can hide the arrow icon by passing `showArrow={false}` to `CollapsePanel` component.
+
+
+```vue
+
+
+
+
+ {{ text }}
+
+
+ {{ text }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/collapse/index.en-US.md b/antdv-demo/docs/collapse/index.en-US.md
new file mode 100644
index 000000000..6b4ddce97
--- /dev/null
+++ b/antdv-demo/docs/collapse/index.en-US.md
@@ -0,0 +1,30 @@
+## API
+
+### Collapse
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| activeKey | Key of the active panel | string\[]\|string | No default value. In `accordion` mode, it's the key of the first panel. | |
+| defaultActiveKey | Key of the initial active panel | string | - | |
+| bordered | Toggles rendering of the border around the collapse block | boolean | `true` | |
+| accordion | If `true`, `Collapse` renders as `Accordion` | boolean | `false` | |
+| expandIcon | allow to customize collapse icon | Function(props):VNode \| slot="expandIcon" slot-scope="props"\|v-slot:expandIcon="props" | |
+| expandIconPosition | Set expand icon position: `left`, `right` | `left` | - | 1.5.0 |
+| destroyInactivePanel | Destroy Inactive Panel | boolean | `false` | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | ------------------------------------------------------- | ------------- | ------- |
+| change | Callback function executed when active panel is changed | function(key) | |
+
+### Collapse.Panel
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| disabled | If `true`, panel cannot be opened or closed | boolean | `false` | |
+| forceRender | Forced render of content on panel, instead of lazy rending after clicking on header | boolean | `false` | |
+| header | Title of the panel | string | - | |
+| key | Unique key identifying the panel from among its siblings | string | - | |
+| showArrow | If `false`, panel will not show arrow icon | boolean | `true` | |
+| extra | extra element in the corner | VNode \| slot | - | 1.5.0 |
diff --git a/antdv-demo/docs/collapse/index.zh-CN.md b/antdv-demo/docs/collapse/index.zh-CN.md
new file mode 100644
index 000000000..33fe66ff3
--- /dev/null
+++ b/antdv-demo/docs/collapse/index.zh-CN.md
@@ -0,0 +1,30 @@
+## API
+
+### Collapse
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| activeKey(v-model) | 当前激活 tab 面板的 key | string\[]\|string | 默认无,accordion 模式下默认第一个元素 | |
+| defaultActiveKey | 初始化选中面板的 key | string | 无 | |
+| bordered | 带边框风格的折叠面板 | boolean | `true` | |
+| accordion | 手风琴模式 | boolean | `false` | |
+| expandIcon | 自定义切换图标 | Function(props):VNode \| slot="expandIcon" slot-scope="props"\|v-slot:expandIcon="props" | |
+| expandIconPosition | 设置图标位置: `left`, `right` | `left` | - | 1.5.0 |
+| destroyInactivePanel | 销毁折叠隐藏的面板 | boolean | `false` | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | -------------- | ------------- | ---- |
+| change | 切换面板的回调 | function(key) | |
+
+### Collapse.Panel
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| ----------- | ------------------------------------------ | ------------- | ------ | ----- |
+| disabled | 禁用后的面板展开与否将无法通过用户交互改变 | boolean | false | |
+| forceRender | 被隐藏时是否渲染 DOM 结构 | boolean | false | |
+| header | 面板头内容 | string\|slot | 无 | |
+| key | 对应 activeKey | string | 无 | |
+| showArrow | 是否展示当前面板上的箭头 | boolean | `true` | |
+| extra | 自定义渲染每个面板右上角的内容 | VNode \| slot | - | 1.5.0 |
diff --git a/antdv-demo/docs/color-picker/demo/alpha.md b/antdv-demo/docs/color-picker/demo/alpha.md
new file mode 100644
index 000000000..181412876
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/alpha.md
@@ -0,0 +1,24 @@
+
+#### 透明度
+开启属性 `alpha`,可以选择带 Alpha 通道的颜色。
+
+
+
+#### Alpha
+Set the property `alpha` true, to select a color with alpha channel.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/color-picker/demo/basic.md b/antdv-demo/docs/color-picker/demo/basic.md
new file mode 100644
index 000000000..1f25f7136
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/basic.md
@@ -0,0 +1,34 @@
+
+#### 基础用法
+基本用法,可以使用 v-model 实现数据的双向绑定。
+
+
+
+#### Basic
+Basic usage. You can use v-model to enable a two-way bingding on data.
+
+
+```vue
+
+
+
+ 有默认值
+
+
+
+ 无默认值
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/color-picker/demo/colors.md b/antdv-demo/docs/color-picker/demo/colors.md
new file mode 100644
index 000000000..5609088c3
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/colors.md
@@ -0,0 +1,44 @@
+
+#### 颜色预设
+可以通过`config.swatches`设置,来自定义预设颜色
+更多配置
+
+
+
+#### Color Presets
+Set `config.swatches ` to customize the default color presets.
+More config settings
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/color-picker/demo/hue.md b/antdv-demo/docs/color-picker/demo/hue.md
new file mode 100644
index 000000000..4d4bd2c1b
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/hue.md
@@ -0,0 +1,24 @@
+
+#### 色彩
+设置属性 `hue` 为 false,可以禁用色彩选项。
+
+
+
+#### Hue
+Set property `hue` to false, can hide hue slider.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/color-picker/demo/index.vue b/antdv-demo/docs/color-picker/demo/index.vue
new file mode 100644
index 000000000..82c6d42d2
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/index.vue
@@ -0,0 +1,51 @@
+
diff --git a/antdv-demo/docs/color-picker/demo/size.md b/antdv-demo/docs/color-picker/demo/size.md
new file mode 100644
index 000000000..469d428c0
--- /dev/null
+++ b/antdv-demo/docs/color-picker/demo/size.md
@@ -0,0 +1,36 @@
+
+#### 尺寸
+选择器有三种尺寸:大、默认(中)、小。
+
+
+
+#### Size
+There are three size of ColorPicker: large, medium(default), small.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/color-picker/index.en-US.md b/antdv-demo/docs/color-picker/index.en-US.md
new file mode 100644
index 000000000..07c8771c7
--- /dev/null
+++ b/antdv-demo/docs/color-picker/index.en-US.md
@@ -0,0 +1,27 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| defaultValue | default color | string | - |
+| config | pickr config | [pickr options](https://github.com/Simonwep/pickr) | - |
+| value | color value | string | - |
+| locale | locale package | [default setting](https://github.com/vueComponent/ant-design-vue/blob/master/components/color-picker/locale) | - |
+| colorRounded | precision of color | number | 0 |
+| size | size of pickr | 'large'\|'small'\|'default' | 'default' |
+| getPopupContainer | to set the container of the floating layer, while the default is to create a div element in body | Function(triggerNode) | () => document.body |
+| disabled | whether disabled picker | boolean | false |
+| format | Color format | 'HEXA' \|'RGBA' \|'HSVA' \|'HSLA' \|'CMYK' | 'HEXA' |
+
+### Event
+
+| Event | Description | Arguments |
+| --- | --- | --- |
+| `init` | Initialization done - pickr can be used | `PickrInstance` |
+| `hide` | Pickr got closed | `PickrInstance` |
+| `show` | Pickr got opened | `PickrInstance` |
+| `save` | User clicked the save / clear button. Also fired on clear with `null` as color. | `HSVaColorObject or null, PickrInstance` |
+| `clear` | User cleared the color. | `PickrInstance` |
+| `change` | Color has changed (but not saved). Also fired on `swatchselect` | `HSVaColorObject, PickrInstance` |
+| `changestop` | User stopped to change the color | `PickrInstance` |
+| `cancel` | User clicked the cancel button (return to previous color). | `PickrInstance` |
+| `swatchselect` | User clicked one of the swatches | `HSVaColorObject, PickrInstance` |
diff --git a/antdv-demo/docs/color-picker/index.zh-CN.md b/antdv-demo/docs/color-picker/index.zh-CN.md
new file mode 100644
index 000000000..830e3e9c1
--- /dev/null
+++ b/antdv-demo/docs/color-picker/index.zh-CN.md
@@ -0,0 +1,27 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultValue | 默认颜色 | string | - |
+| config | pickr 配置项 | [pickr options](https://github.com/Simonwep/pickr) | - |
+| value | 颜色值 | string | - |
+| locale | 语言包 | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/master/components/color-picker/locale) | - |
+| colorRounded | 颜色数值精度 | number | 0 |
+| size | 取色器尺寸 | 'large'\|'small'\|'default' | 'default' |
+| getPopupContainer | 浮层渲染父节点,默认渲染到 body 上 | Function(triggerNode) | () => document.body |
+| disabled | 是否禁用 | boolean | false |
+| format | 定义返回的颜色格式 | 'HEXA' \|'RGBA' \|'HSVA' \|'HSLA' \|'CMYK' | 'HEXA' |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| `init` | 初始化完成,可以使用 pickr | `PickrInstance` |
+| `hide` | Pickr 关闭时 | `PickrInstance` |
+| `show` | Pickr 开启时 | `PickrInstance` |
+| `save` | 用户点击保存/清空按钮时 | `HSVaColorObject or null, PickrInstance` |
+| `clear` | 清空颜色时 | `PickrInstance` |
+| `change` | 颜色值发生变更时(非保存).`swatchselect`也会触发 | `HSVaColorObject, PickrInstance` |
+| `changestop` | 用户不再改变颜色时 | `PickrInstance` |
+| `cancel` | 用户点击取消时(颜色返回至上个颜色) | `PickrInstance` |
+| `swatchselect` | 用户切换了色板 | `HSVaColorObject, PickrInstance` |
diff --git a/antdv-demo/docs/comment/demo/basic.md b/antdv-demo/docs/comment/demo/basic.md
new file mode 100644
index 000000000..7c192b83a
--- /dev/null
+++ b/antdv-demo/docs/comment/demo/basic.md
@@ -0,0 +1,78 @@
+
+#### 基本评论
+一个基本的评论组件,带有作者、头像、时间和操作。
+
+
+
+#### Basic comment
+A basic comment with author, avatar, time and actions.
+
+
+```vue
+
+
+
+
+
+
+
+
+ {{ likes }}
+
+
+
+
+
+
+
+ {{ dislikes }}
+
+
+ Reply to
+
+ Han Solo
+
+
+ We supply a series of design principles, practical patterns and high quality design resources
+ (Sketch and Axure), to help people create their product prototypes beautifully and
+ efficiently.
+
+
+ {{ moment().fromNow() }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/comment/demo/editor.md b/antdv-demo/docs/comment/demo/editor.md
new file mode 100644
index 000000000..7db2f4c8c
--- /dev/null
+++ b/antdv-demo/docs/comment/demo/editor.md
@@ -0,0 +1,87 @@
+
+#### 回复框
+评论编辑器组件提供了相同样式的封装以支持自定义评论编辑器。
+
+
+
+#### Reply Editor
+Comment can be used as editor, user can customize the editor component.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add Comment
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/comment/demo/index.vue b/antdv-demo/docs/comment/demo/index.vue
new file mode 100644
index 000000000..3cb56ba41
--- /dev/null
+++ b/antdv-demo/docs/comment/demo/index.vue
@@ -0,0 +1,50 @@
+
diff --git a/antdv-demo/docs/comment/demo/list.md b/antdv-demo/docs/comment/demo/list.md
new file mode 100644
index 000000000..9384c7eca
--- /dev/null
+++ b/antdv-demo/docs/comment/demo/list.md
@@ -0,0 +1,62 @@
+
+#### 配合 List 组件
+配合 List 组件展现评论列表。
+
+
+
+#### Usage with list
+Displaying a series of comments using the `antd` List Component.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/comment/demo/nested.md b/antdv-demo/docs/comment/demo/nested.md
new file mode 100644
index 000000000..295adcbd5
--- /dev/null
+++ b/antdv-demo/docs/comment/demo/nested.md
@@ -0,0 +1,66 @@
+
+#### 嵌套评论
+评论可以嵌套。
+
+
+
+#### Nested comments
+Comments can be nested.
+
+
+```vue
+
+
+ Reply to
+ Han Solo
+
+
+ We supply a series of design principles, practical patterns and high quality design resources
+ (Sketch and Axure).
+
+
+ Reply to
+ Han Solo
+
+
+ We supply a series of design principles, practical patterns and high quality design
+ resources (Sketch and Axure).
+
+
+ Reply to
+ Han Solo
+
+
+ We supply a series of design principles, practical patterns and high quality design
+ resources (Sketch and Axure).
+
+
+
+ Reply to
+ Han Solo
+
+
+ We supply a series of design principles, practical patterns and high quality design
+ resources (Sketch and Axure).
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/comment/index.en-US.md b/antdv-demo/docs/comment/index.en-US.md
new file mode 100644
index 000000000..2fbbfac53
--- /dev/null
+++ b/antdv-demo/docs/comment/index.en-US.md
@@ -0,0 +1,9 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| actions | List of action items rendered below the comment content | Array \| slot | - |
+| author | The element to display as the comment author | string\|slot | - |
+| avatar | The element to display as the comment avatar - generally an antd `Avatar` or src | string\|slot | - |
+| content | The main content of the comment | string\|slot | - |
+| datetime | A datetime element containing the time to be displayed | string\|slot | - |
diff --git a/antdv-demo/docs/comment/index.zh-CN.md b/antdv-demo/docs/comment/index.zh-CN.md
new file mode 100644
index 000000000..fce746308
--- /dev/null
+++ b/antdv-demo/docs/comment/index.zh-CN.md
@@ -0,0 +1,9 @@
+## API
+
+| Property | Description | Type | Default |
+| -------- | ------------------------------------------------------ | ------------ | ------- |
+| actions | 在评论内容下面呈现的操作项列表 | Array\|slot | - |
+| author | 要显示为注释作者的元素 | string\|slot | - |
+| avatar | 要显示为评论头像的元素 - 通常是 antd `Avatar` 或者 src | string\|slot | - |
+| content | 评论的主要内容 | string\|slot | - |
+| datetime | 展示时间描述 | string\|slot | - |
diff --git a/antdv-demo/docs/config-provider/demo/index.vue b/antdv-demo/docs/config-provider/demo/index.vue
new file mode 100644
index 000000000..3ad614979
--- /dev/null
+++ b/antdv-demo/docs/config-provider/demo/index.vue
@@ -0,0 +1,36 @@
+
diff --git a/antdv-demo/docs/config-provider/demo/locale.md b/antdv-demo/docs/config-provider/demo/locale.md
new file mode 100644
index 000000000..593c45617
--- /dev/null
+++ b/antdv-demo/docs/config-provider/demo/locale.md
@@ -0,0 +1,156 @@
+
+#### 国际化
+此处列出 Ant Design Vue 中需要国际化支持的组件,你可以在演示里切换语言。
+
+
+
+#### Locale
+Components which need localization support are listed here, you can toggle the language in the demo.
+
+
+```vue
+
+
+
+
Change locale of components:
+
+
+ English
+
+
+ 中文
+
+
+
+
+
+
+
+
+
+ jack
+
+
+ lucy
+
+
+
+
+
+
+
+
+
+
+
+ Locale Modal
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/config-provider/index.en-US.md b/antdv-demo/docs/config-provider/index.en-US.md
new file mode 100644
index 000000000..230cf430d
--- /dev/null
+++ b/antdv-demo/docs/config-provider/index.en-US.md
@@ -0,0 +1,71 @@
+## Usage
+
+This component provides a configuration to all Vue components underneath itself via the [provide / inject](https://vuejs.org/v2/api/#provide-inject), In the render tree all components will have access to the provided config.
+
+```html
+
+
+
+
+
+
+```
+
+### Content Security Policy
+
+Some components use dynamic style to support wave effect. You can config `csp` prop if Content Security Policy (CSP) is enabled:
+
+```html
+
+ My Button
+
+```
+
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| autoInsertSpaceInButton | Set `false` to remove space between 2 chinese characters on Button | boolean | true | |
+| csp | Set [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) config | { nonce: string } | - | |
+| renderEmpty | set empty content of components. Ref [Empty](/components/empty/) | slot-scope \| Function(componentName: string): ReactNode | - | |
+| getPopupContainer | to set the container of the popup element. The default is to create a `div` element in `body`. | Function(triggerNode, dialogContext) | `() => document.body` | |
+| locale | language package setting, you can find the packages in [ant-design-vue/es/locale](http://unpkg.com/ant-design-vue/es/locale/) | object | - | 1.5.0 |
+| prefixCls | set prefix class | string | ant | |
+| pageHeader | Unify the ghost of pageHeader ,Ref [pageHeader](<(/components/page-header)> | { ghost:boolean } | 'true' | 1.5.0 |
+| transformCellText | Table data can be changed again before rendering. The default configuration of general user empty data. | Function({ text, column, record, index }) => any | - | 1.5.4 | |
+
+## FAQ
+
+#### Does the locale problem still exist in DatePicker even if ConfigProvider `locale` is used?
+
+Please make sure you set moment locale by `moment.locale('zh-cn')` or that you don't have two different versions of moment.
+
+#### Modal throw error when setting `getPopupContainer`?
+
+When you config `getPopupContainer` to parentNode globally, Modal will throw error of `triggerNode is undefined` because it did not have a triggerNode.
+
+```diff
+ triggerNode.parentNode}
++ getPopupContainer={node => {
++ if (node) {
++ return node.parentNode;
++ }
++ return document.body;
++ }}
+ >
+
+
+```
diff --git a/antdv-demo/docs/config-provider/index.zh-CN.md b/antdv-demo/docs/config-provider/index.zh-CN.md
new file mode 100644
index 000000000..58baea1e1
--- /dev/null
+++ b/antdv-demo/docs/config-provider/index.zh-CN.md
@@ -0,0 +1,70 @@
+## 使用
+
+ConfigProvider 使用 Vue 的 [provide / inject](https://vuejs.org/v2/api/#provide-inject) 特性,只需在应用外围包裹一次即可全局生效。
+
+```html
+
+
+
+
+
+
+```
+
+### Content Security Policy
+
+部分组件为了支持波纹效果,使用了动态样式。如果开启了 Content Security Policy (CSP),你可以通过 `csp` 属性来进行配置:
+
+```html
+
+ My Button
+
+```
+
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| autoInsertSpaceInButton | 设置为 `false` 时,移除按钮中 2 个汉字之间的空格 | boolean | true | |
+| csp | 设置 [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) 配置 | { nonce: string } | - | |
+| renderEmpty | 自定义组件空状态。参考 [空状态](/components/empty/) | slot-scope \| Function(componentName: string): VNode | - | |
+| getPopupContainer | 弹出框(Select, Tooltip, Menu 等等)渲染父节点,默认渲染到 body 上。 | Function(triggerNode, dialogContext) | () => document.body | |
+| locale | 语言包配置,语言包可到 [ant-design-vue/es/locale](http://unpkg.com/ant-design-vue/es/locale/) 目录下寻找 | object | - | 1.5.0 |
+| pageHeader | 统一设置 pageHeader 的 ghost,参考 [pageHeader](<(/components/page-header)>) | { ghost: boolean } | 'true' | 1.5.0 |
+| transformCellText | Table 数据渲染前可以再次改变,一般用户空数据的默认配置 | Function({ text, column, record, index }) => any | - | 1.5.4 | |
+
+## FAQ
+
+#### 为什么我使用了 ConfigProvider `locale`,时间类组件的国际化还有问题?
+
+请检查是否设置了 `moment.locale('zh-cn')`,或者是否有两个版本的 moment 共存。
+
+#### 配置 `getPopupContainer` 导致 Modal 报错?
+
+当如下全局设置 `getPopupContainer` 为触发节点的 parentNode 时,由于 Modal 的用法不存在 `triggerNode`,这样会导致 `triggerNode is undefined` 的报错,需要增加一个判断条件。
+
+```diff
+ triggerNode.parentNode}
++ getPopupContainer={node => {
++ if (node) {
++ return node.parentNode;
++ }
++ return document.body;
++ }}
+ >
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/basic.md b/antdv-demo/docs/date-picker/demo/basic.md
new file mode 100644
index 000000000..73804fa12
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/basic.md
@@ -0,0 +1,32 @@
+
+#### 基本
+最简单的用法,在浮层中可以选择或者输入日期。
+
+
+
+#### Basic
+Basic use case. Users can select or input a date in panel.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/date-render.md b/antdv-demo/docs/date-picker/demo/date-render.md
new file mode 100644
index 000000000..cfde66231
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/date-render.md
@@ -0,0 +1,51 @@
+
+#### 定制日期单元格
+使用 `dateRender` 可以自定义日期单元格的内容和样式。
+
+
+
+#### Customized Date Rendering
+We can customize the rendering of date cells in the calendar by providing a `dateRender` function to `DatePicker`.
+
+
+```vue
+
+
+
+
+
+ {{ current.date() }}
+
+
+
+
+
+
+ {{ current.date() }}
+
+
+
+
+
+
+ {{ current.date() }}
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/disabled-date.md b/antdv-demo/docs/date-picker/demo/disabled-date.md
new file mode 100644
index 000000000..849a193ad
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/disabled-date.md
@@ -0,0 +1,77 @@
+
+#### 不可选择日期和时间
+可用 `disabledDate` 和 `disabledTime` 分别禁止选择部分日期和时间,其中 `disabledTime` 需要和 `showTime` 一起使用。
+
+
+
+#### Disabled Date & Time
+Disabled part of dates and time by `disabledDate` and `disabledTime` respectively, and `disabledTime` only works with `showTime`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/disabled.md b/antdv-demo/docs/date-picker/demo/disabled.md
new file mode 100644
index 000000000..4245d30e7
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/disabled.md
@@ -0,0 +1,36 @@
+
+#### 禁用
+选择框的不可用状态。
+
+
+
+#### Disabled
+A disabled state of the `DatePicker`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/extra-footer.md b/antdv-demo/docs/date-picker/demo/extra-footer.md
new file mode 100644
index 000000000..12cc12bd1
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/extra-footer.md
@@ -0,0 +1,41 @@
+
+#### 额外的页脚
+在浮层中加入额外的页脚,以满足某些定制信息的需求。
+
+
+
+#### Extra Footer
+Render extra footer in panel for customized requirements.
+
+
+```vue
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/format.md b/antdv-demo/docs/date-picker/demo/format.md
new file mode 100644
index 000000000..f90607d63
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/format.md
@@ -0,0 +1,44 @@
+
+#### 日期格式
+使用 `format` 属性,可以自定义日期显示格式。
+
+
+
+#### Date Format
+We can set the date format by `format`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/index.vue b/antdv-demo/docs/date-picker/demo/index.vue
new file mode 100644
index 000000000..6760f3940
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/index.vue
@@ -0,0 +1,68 @@
+
+
diff --git a/antdv-demo/docs/date-picker/demo/mode.md b/antdv-demo/docs/date-picker/demo/mode.md
new file mode 100644
index 000000000..d9360b3ab
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/mode.md
@@ -0,0 +1,59 @@
+
+#### 受控面板
+通过组合 `mode` 与 `onPanelChange` 控制要展示的面板。
+
+
+
+#### Controlled Panels
+Determing which panel to show with `mode` and `onPanelChange`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/presetted-ranges.md b/antdv-demo/docs/date-picker/demo/presetted-ranges.md
new file mode 100644
index 000000000..7dfd23718
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/presetted-ranges.md
@@ -0,0 +1,45 @@
+
+#### 预设范围
+可以预设常用的日期范围以提高用户体验。
+
+
+
+#### Preset Ranges
+We can set presetted ranges to RangePicker to improve user experience.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/size.md b/antdv-demo/docs/date-picker/demo/size.md
new file mode 100644
index 000000000..0f078f93d
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/size.md
@@ -0,0 +1,45 @@
+
+#### 三种大小
+三种大小的输入框,若不设置,则为 `default`。
+
+
+
+#### Three Sizes
+The input box comes in three sizes. `default` will be used if `size` is omitted.
+
+
+```vue
+
+
+
+
+ Large
+
+
+ Default
+
+
+ Small
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/start-end.md b/antdv-demo/docs/date-picker/demo/start-end.md
new file mode 100644
index 000000000..086bcfefd
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/start-end.md
@@ -0,0 +1,80 @@
+
+#### 自定义日期范围选择
+当 `RangePicker` 无法满足业务需求时,可以使用两个 `DatePicker` 实现类似的功能。
+> - 通过设置 `disabledDate` 方法,来约束开始和结束日期。
+> - 通过 `open` `openChange` 来优化交互。
+
+
+
+#### Customized Range Picker
+When `RangePicker` does not satisfied your requirements, try to implement similar functionality with two `DatePicker`.
+> - Use the `disabledDate` property to limit the start and end dates.
+> - Improve user experience with `open` and `openChange`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/suffix.md b/antdv-demo/docs/date-picker/demo/suffix.md
new file mode 100644
index 000000000..f079aa61c
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/suffix.md
@@ -0,0 +1,48 @@
+
+#### 后缀图标
+最简单的用法,在浮层中可以选择或者输入日期。
+
+
+
+#### Suffix
+Basic use case. Users can select or input a date in panel.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/text.md b/antdv-demo/docs/date-picker/demo/text.md
new file mode 100644
index 000000000..a6b920cf4
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/text.md
@@ -0,0 +1,48 @@
+
+#### 自定义渲染
+增加自定义渲染功能,在默认 `slot` 中,你可以设置任何你想渲染的组件。
+
+
+
+#### Custum Time
+Added custom rendering function, in the default `slot', you can set any component you want to render..
+
+
+```vue
+
+
+
+ {{ time1 ? time1 : 'SelectTime' }}
+
+
+
+
+ {{ time2 ? time2 : '请选择' }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/demo/time.md b/antdv-demo/docs/date-picker/demo/time.md
new file mode 100644
index 000000000..ca540b682
--- /dev/null
+++ b/antdv-demo/docs/date-picker/demo/time.md
@@ -0,0 +1,38 @@
+
+#### 日期时间选择
+增加选择时间功能,当 `showTime` 为一个对象时,其属性会传递给内建的 `TimePicker`。
+
+
+
+#### Choose Time
+This property provide an additional time selection. When `showTime` is an Object, its properties will be passed on to built-in `TimePicker`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/date-picker/index.en-US.md b/antdv-demo/docs/date-picker/index.en-US.md
new file mode 100644
index 000000000..3ee22242b
--- /dev/null
+++ b/antdv-demo/docs/date-picker/index.en-US.md
@@ -0,0 +1,165 @@
+## API
+
+There are four kinds of picker:
+
+- DatePicker
+- MonthPicker
+- RangePicker
+- WeekPicker
+
+### Localization
+
+The default locale is en-US, if you need to use other languages, recommend to use internationalized components provided by us at the entrance. Look at: [ConfigProvider](http://antdv.com/components/config-provider/).
+
+If there are special needs (only modifying single component language), Please use the property: local. Example: [default](https://github.com/vueComponent/ant-design-vue/blob/master/components/date-picker/locale/example.json).
+
+```html
+
+
+
+
+```
+
+**Note:** Part of locale of DatePicker, MonthPicker, RangePicker, WeekPicker is read from value. So, please set the locale of moment correctly.
+
+```html
+
+
+
+
+```
+
+### Common API
+
+The following APIs are shared by DatePicker, MonthPicker, RangePicker, WeekPicker.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| allowClear | Whether to show clear button | boolean | true | |
+| autoFocus | get focus when component mounted | boolean | false | |
+| dateRender | custom rendering function for date cells by setting a scoped slot | slot="dateRender" slot-scope="current, today" | - | |
+| disabled | determine whether the DatePicker is disabled | boolean | false | |
+| disabledDate | specify the date that cannot be selected | (currentDate: moment) => boolean | - | |
+| getCalendarContainer | to set the container of the floating layer, while the default is to create a `div` element in `body` | function(trigger) | - | |
+| locale | localization configuration | object | [default](https://github.com/vueComponent/ant-design-vue/blob/master/components/date-picker/locale/example.json) | |
+| mode | picker panel mode([Cannot select year or month anymore?](/docs/vue/faq#When-set-mode-to-DatePicker/RangePicker,-cannot-select-year-or-month-anymore?) | `time|date|month|year` | 'date' | |
+| open | open state of picker | boolean | - | |
+| placeholder | placeholder of date input | string\|RangePicker\[] | - | |
+| popupStyle | to customize the style of the popup calendar | object | {} | |
+| dropdownClassName | to customize the className of the popup calendar | string | - | |
+| size | determine the size of the input box, the height of `large` and `small`, are 40px and 24px respectively, while default size is 32px | string | - | |
+| suffixIcon | The custom suffix icon | VNode \| slot | - | |
+| inputReadOnly | Set the readonly attribute of the input tag (avoids virtual keyboard on touch devices) | boolean | - | 1.5.4 |
+| align | this value will be merged into placement's config, please refer to the settings [dom-align](https://github.com/yiminghe/dom-align) | Object | - | 1.5.4 |
+| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string,[date formats](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### Common Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| openChange | a callback function, can be executed whether the popup calendar is popped up or closed | function(status) | |
+| panelChange | callback when picker panel mode is changed | function(value, mode) | |
+
+### Common Methods
+
+| Name | Description | Version |
+| ------- | ------------ | ------- |
+| blur() | remove focus | |
+| focus() | get focus | |
+
+### DatePicker
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| defaultValue | to set default date | [moment](http://momentjs.com/) | - | |
+| defaultPickerValue | to set default picker date | [moment](http://momentjs.com/) | - | |
+| disabledTime | to specify the time that cannot be selected | function(date) | - | |
+| format | to set the date format, refer to [moment.js](http://momentjs.com/) | string | "YYYY-MM-DD" | |
+| renderExtraFooter | render extra footer in panel by setting a scoped slot | slot="renderExtraFooter" slot-scope="mode" | - | |
+| showTime | to provide an additional time selection | object\|boolean | [TimePicker Options](/components/time-picker/#API) | |
+| showTime.defaultValue | to set default time of selected date | [moment](http://momentjs.com/) | moment() | |
+| showToday | whether to show "Today" button | boolean | true | |
+| value(v-model) | to set date | [moment](http://momentjs.com/) | - | |
+
+### DatePicker Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | a callback function, can be executed when the selected time is changing | function(date: moment \| string, dateString: string) | |
+| ok | callback when click ok button | function() | |
+
+### MonthPicker
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| defaultValue | to set default date | [moment](http://momentjs.com/) | - |
+| defaultPickerValue | to set default picker date | [moment](http://momentjs.com/) | - | |
+| format | to set the date format. When an array is provided, all values are used for parsing and first value for display. refer to [moment.js](http://momentjs.com/) | string \| string[] | "YYYY-MM" | |
+| monthCellContentRender | Custom month cell content render method by setting a scoped slot | slot="monthCellContentRender" slot-scope="date, locale" | - | |
+| renderExtraFooter | render extra footer in panel by setting a scoped slot | slot="renderExtraFooter" slot-scope="mode" | - | |
+| value(v-model) | to set date | [moment](http://momentjs.com/) | - | |
+
+### MonthPicker Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | a callback function, can be executed when the selected time is changing | function(date: moment \| string, dateString: string) | |
+
+### WeekPicker
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| defaultValue | to set default date | [moment](http://momentjs.com/) | - | |
+| defaultPickerValue | to set default picker date | [moment](http://momentjs.com/) | - | |
+| format | to set the date format, refer to [moment.js](http://momentjs.com/) | string | "YYYY-wo" | |
+| value(v-model) | to set date | [moment](http://momentjs.com/) | - | |
+| renderExtraFooter | render extra footer in panel by setting a scoped slot | slot="renderExtraFooter" slot-scope="mode" | - | |
+
+### WeekPicker Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | a callback function, can be executed when the selected time is changing | function(date: moment \| string, dateString: string) | |
+
+### RangePicker
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| defaultValue | to set default date | [moment](http://momentjs.com/)\[] | - | |
+| defaultPickerValue | to set default picker date | [moment](http://momentjs.com/)\[] | - | |
+| disabledTime | to specify the time that cannot be selected | function(dates: \[moment, moment\], partial: `'start'|'end'`) | - | |
+| format | to set the date format | string | "YYYY-MM-DD HH:mm:ss" | |
+| ranges | preseted ranges for quick selection | { \[range: string]: [moment](http://momentjs.com/)\[] } \| { \[range: string]: () => [moment](http://momentjs.com/)\[] } | - | |
+| renderExtraFooter | render extra footer in panel by setting a scoped slot | slot="renderExtraFooter" slot-scope="mode" | - | |
+| separator | set separator between inputs | string | '~' | 1.5.0 |
+| showTime | to provide an additional time selection | object\|boolean | [TimePicker Options](/components/time-picker/#API) | |
+| showTime.defaultValue | to set default time of selected date, [demo](https://antdv.com/components/date-picker/#components-date-picker-demo-disabled-date) | [moment](http://momentjs.com/)\[] | \[moment(), moment()] | |
+| value(v-model) | to set date | \[[moment](http://momentjs.com/), [moment](http://momentjs.com/)] | - | |
+
+### RangePicker Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| calendarChange | a callback function, can be executed when the start time or the end time of the range is changing | function(dates: \[moment, moment\] \| \[string, string\], dateStrings: \[string, string\]) | |
+| change | a callback function, can be executed when the selected time is changing | function(dates: \[moment, moment\] \| \[string, string\], dateStrings: \[string, string\]) | |
+| ok | callback when click ok button | function(dates: \[moment, moment\] \| \[string, string\]) | |
diff --git a/antdv-demo/docs/date-picker/index.zh-CN.md b/antdv-demo/docs/date-picker/index.zh-CN.md
new file mode 100644
index 000000000..0fd861e02
--- /dev/null
+++ b/antdv-demo/docs/date-picker/index.zh-CN.md
@@ -0,0 +1,165 @@
+## API
+
+日期类组件包括以下四种形式。
+
+- DatePicker
+- MonthPicker
+- RangePicker
+- WeekPicker
+
+### 国际化配置
+
+默认配置为 en-US,如果你需要设置其他语言,推荐在入口处使用我们提供的国际化组件,详见:[ConfigProvider 国际化](http://ant.design/components/config-provider-cn/)。
+
+如有特殊需求(仅修改单一组件的语言),请使用 locale 参数,参考:[默认配置](https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json)。
+
+```html
+
+
+
+
+```
+
+**注意:**DatePicker、MonthPicker、RangePicker、WeekPicker 部分 locale 是从 value 中读取,所以请先正确设置 moment 的 locale。
+
+```html
+
+
+
+
+```
+
+### 共同的 API
+
+以下 API 为 DatePicker、MonthPicker、RangePicker, WeekPicker 共享的 API。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| allowClear | 是否显示清除按钮 | boolean | true | - |
+| autoFocus | 自动获取焦点 | boolean | false | - |
+| dateRender | 作用域插槽,自定义日期单元格的内容 | slot="dateRender" slot-scope="current, today" | - | - |
+| disabled | 禁用 | boolean | false | - |
+| disabledDate | 不可选择的日期 | (currentDate: moment) => boolean | 无 | - |
+| getCalendarContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | 无 | - |
+| locale | 国际化配置 | object | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/master/components/date-picker/locale/example.json) | - |
+| mode | 日期面板的状态([设置后无法选择年份/月份?](/docs/vue/faq#当我指定了-DatePicker/RangePicker-的-mode-属性后,点击后无法选择年份/月份?)) | `time|date|month|year|decade` | 'date' | - |
+| open | 控制弹层是否展开 | boolean | - | - |
+| placeholder | 输入框提示文字 | string\|RangePicker\[] | - | - |
+| popupStyle | 额外的弹出日历样式 | object | {} | - |
+| dropdownClassName | 额外的弹出日历 className | string | - | - |
+| size | 输入框大小,`large` 高度为 40px,`small` 为 24px,默认是 32px | string | 无 | - |
+| suffixIcon | 自定义的选择框后缀图标 | VNode \| slot | - | - |
+| inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | - | 1.5.4 |
+| align | 该值将合并到 placement 的配置中,设置参考 [dom-align](https://github.com/yiminghe/dom-align) | Object | 无 | 1.5.4 |
+| valueFormat | 可选,绑定值的格式,对 value、defaultValue、defaultPickerValue 起作用。不指定则绑定值为 moment 对象 | string,[具体格式](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### 共有的事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ----------- | ------------------------ | --------------------- |
+| openChange | 弹出日历和关闭日历的回调 | function(status) |
+| panelChange | 日期面板变化时的回调 | function(value, mode) | - |
+
+### 共同的方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
+
+### DatePicker
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultValue | 默认日期 | [moment](http://momentjs.com/) | 无 |
+| defaultPickerValue | 默认面板日期 | [moment](http://momentjs.com/) | 无 |
+| disabledTime | 不可选择的时间 | function(date) | 无 |
+| format | 设置日期格式,为数组时支持多格式匹配,展示以第一个为准。配置参考 [moment.js](http://momentjs.com/) | string \| string[] | "YYYY-MM-DD" |
+| renderExtraFooter | 在面板中添加额外的页脚 | slot="renderExtraFooter" slot-scope="mode" | - |
+| showTime | 增加时间选择功能 | Object\|boolean | [TimePicker Options](/components/time-picker-cn/#API) |
+| showTime.defaultValue | 设置用户选择日期时默认的时分秒 | [moment](http://momentjs.com/) | moment() |
+| showToday | 是否展示“今天”按钮 | boolean | true |
+| value(v-model) | 日期 | [moment](http://momentjs.com/) | 无 |
+
+### DatePicker 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ------------------ | ---------------------------------------------------- |
+| change | 时间发生变化的回调 | function(date: moment \| string, dateString: string) |
+| ok | 点击确定按钮的回调 | function() |
+
+### MonthPicker
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultValue | 默认日期 | [moment](http://momentjs.com/) | 无 |
+| defaultPickerValue | 默认面板日期 | [moment](http://momentjs.com/) | 无 |
+| format | 展示的日期格式,配置参考 [moment.js](http://momentjs.com/) | string | "YYYY-MM" |
+| monthCellContentRender | 自定义的月份内容渲染方法 | slot="monthCellContentRender" slot-scope="date, locale" | - |
+| renderExtraFooter | 在面板中添加额外的页脚 | slot="renderExtraFooter" slot-scope="mode" | - |
+| value(v-model) | 日期 | [moment](http://momentjs.com/) | 无 |
+
+### MonthPicker 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| change | 时间发生变化的回调,发生在用户选择时间时 | function(date: moment \| string, dateString: string) |
+
+### WeekPicker
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultValue | 默认日期 | [moment](http://momentjs.com/) | - |
+| defaultPickerValue | 默认面板日期 | [moment](http://momentjs.com/) | 无 |
+| format | 展示的日期格式,配置参考 [moment.js](http://momentjs.com/) | string | "YYYY-wo" |
+| value(v-model) | 日期 | [moment](http://momentjs.com/) | - |
+| renderExtraFooter | 在面板中添加额外的页脚 | slot="renderExtraFooter" slot-scope="mode" | - |
+
+### WeekPicker 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| change | 时间发生变化的回调,发生在用户选择时间时 | function(date: moment \| string, dateString: string) |
+
+### RangePicker
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| defaultValue | 默认日期 | [moment](http://momentjs.com/)\[] | 无 | |
+| defaultPickerValue | 默认面板日期 | [moment](http://momentjs.com/)\[] | 无 | |
+| disabledTime | 不可选择的时间 | function(dates: \[moment, moment\], partial: `'start'|'end'`) | 无 | |
+| format | 展示的日期格式 | string | "YYYY-MM-DD HH:mm:ss" | |
+| ranges | 预设时间范围快捷选择 | { \[range: string]: [moment](http://momentjs.com/)\[] } \| { \[range: string]: () => [moment](http://momentjs.com/)\[] } | 无 | |
+| renderExtraFooter | 在面板中添加额外的页脚 | slot="renderExtraFooter" slot-scope="mode" | - | |
+| separator | 设置分隔符 | string | '~' | 1.5.0 |
+| showTime | 增加时间选择功能 | Object\|boolean | [TimePicker Options](/components/time-picker-cn/#API) | |
+| showTime.defaultValue | 设置用户选择日期时默认的时分秒 | [moment](http://momentjs.com/)\[] | \[moment(), moment()] | |
+| value(v-model) | 日期 | [moment](http://momentjs.com/)\[] | 无 | |
+
+### RangePicker 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| calendarChange | 待选日期发生变化的回调 | function(dates: \[moment, moment\] \| \[string, string\], dateStrings: \[string, string\]) |
+| change | 日期范围发生变化的回调 | function(dates: \[moment, moment\] \| \[string, string\], dateStrings: \[string, string\]) |
+| ok | 点击确定按钮的回调 | function(dates: \[moment, moment\] \| \[string, string\]) |
diff --git a/antdv-demo/docs/date-picker/locale/example.json b/antdv-demo/docs/date-picker/locale/example.json
new file mode 100644
index 000000000..4c260f922
--- /dev/null
+++ b/antdv-demo/docs/date-picker/locale/example.json
@@ -0,0 +1,39 @@
+{
+ "lang": {
+ "placeholder": "Select date",
+ "rangePlaceholder": ["Start date", "End date"],
+ "today": "Today",
+ "now": "Now",
+ "backToToday": "Back to today",
+ "ok": "Ok",
+ "clear": "Clear",
+ "month": "Month",
+ "year": "Year",
+ "timeSelect": "Select time",
+ "dateSelect": "Select date",
+ "monthSelect": "Choose a month",
+ "yearSelect": "Choose a year",
+ "decadeSelect": "Choose a decade",
+ "yearFormat": "YYYY",
+ "dateFormat": "M/D/YYYY",
+ "dayFormat": "D",
+ "dateTimeFormat": "M/D/YYYY HH:mm:ss",
+ "monthFormat": "MMMM",
+ "monthBeforeYear": true,
+ "previousMonth": "Previous month (PageUp)",
+ "nextMonth": "Next month (PageDown)",
+ "previousYear": "Last year (Control + left)",
+ "nextYear": "Next year (Control + right)",
+ "previousDecade": "Last decade",
+ "nextDecade": "Next decade",
+ "previousCentury": "Last century",
+ "nextCentury": "Next century"
+ },
+ "timePickerLocale": {
+ "placeholder": "Select time"
+ },
+ "dateFormat": "YYYY-MM-DD",
+ "dateTimeFormat": "YYYY-MM-DD HH:mm:ss",
+ "weekFormat": "YYYY-wo",
+ "monthFormat": "YYYY-MM"
+}
diff --git a/antdv-demo/docs/descriptions/demo/basic.md b/antdv-demo/docs/descriptions/demo/basic.md
new file mode 100644
index 000000000..77eaf97bc
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/basic.md
@@ -0,0 +1,31 @@
+
+#### 基本
+简单的展示。
+
+
+
+#### Basic
+Simplest Usage.
+
+
+```vue
+
+
+
+ Zhou Maomao
+
+
+ 1810000000
+
+
+ Hangzhou, Zhejiang
+
+
+ empty
+
+
+ No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/demo/border.md b/antdv-demo/docs/descriptions/demo/border.md
new file mode 100644
index 000000000..fdd52f8eb
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/border.md
@@ -0,0 +1,55 @@
+
+#### 带边框的
+
+
+
+#### border
+Descriptions with border and background color.
+
+
+```vue
+
+
+
+ Cloud Database
+
+
+ Prepaid
+
+
+ YES
+
+
+ 2018-04-24 18:00:00
+
+
+ 2019-04-24 18:00:00
+
+
+
+
+
+ $80.00
+
+
+ $20.00
+
+
+ $60.00
+
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/demo/index.vue b/antdv-demo/docs/descriptions/demo/index.vue
new file mode 100644
index 000000000..d7fe4331c
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/index.vue
@@ -0,0 +1,53 @@
+
diff --git a/antdv-demo/docs/descriptions/demo/responsive.md b/antdv-demo/docs/descriptions/demo/responsive.md
new file mode 100644
index 000000000..c47a48e68
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/responsive.md
@@ -0,0 +1,53 @@
+
+#### 响应式
+通过响应式的配置可以实现在小屏幕设备上的完美呈现。
+
+
+
+#### responsive
+通过响应式的配置可以实现在小屏幕设备上的完美呈现。
+
+
+```vue
+
+
+
+
+ Cloud Database
+
+
+ Prepaid
+
+
+ 18:00:00
+
+
+ $80.00
+
+
+ $20.00
+
+
+ $60.00
+
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/demo/size.md b/antdv-demo/docs/descriptions/demo/size.md
new file mode 100644
index 000000000..0375b8ad6
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/size.md
@@ -0,0 +1,99 @@
+
+#### 自定义尺寸
+自定义尺寸,适应在各种容器中展示。
+
+
+
+#### Custom size
+Custom sizes to fit in a variety of containers.
+
+
+```vue
+
+
+
+
+ default
+
+
+ middle
+
+
+ small
+
+
+
+
+
+
+ Cloud Database
+
+
+ Prepaid
+
+
+ 18:00:00
+
+
+ $80.00
+
+
+ $20.00
+
+
+ $60.00
+
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+
+
+
+
+ Cloud Database
+
+
+ Prepaid
+
+
+ 18:00:00
+
+
+ $80.00
+
+
+ $20.00
+
+
+ $60.00
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/demo/vertical-border.md b/antdv-demo/docs/descriptions/demo/vertical-border.md
new file mode 100644
index 000000000..1c6aebdb2
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/vertical-border.md
@@ -0,0 +1,56 @@
+
+#### 垂直带边框的
+垂直带边框和背景颜色的列表。
+
+
+
+#### Vertical border
+Descriptions with border and background color.
+
+
+```vue
+
+
+
+ Cloud Database
+
+
+ Prepaid
+
+
+ YES
+
+
+ 2018-04-24 18:00:00
+
+
+ 2019-04-24 18:00:00
+
+
+
+
+
+ $80.00
+
+
+ $20.00
+
+
+ $60.00
+
+
+ Data disk type: MongoDB
+
+ Database version: 3.4
+
+ Package: dds.mongo.mid
+
+ Storage space: 10 GB
+
+ Replication factor: 3
+
+ Region: East China 1
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/demo/vertical.md b/antdv-demo/docs/descriptions/demo/vertical.md
new file mode 100644
index 000000000..8e60a2002
--- /dev/null
+++ b/antdv-demo/docs/descriptions/demo/vertical.md
@@ -0,0 +1,31 @@
+
+#### 垂直
+垂直的列表。
+
+
+
+#### Vertical
+Simplest Usage.
+
+
+```vue
+
+
+
+ Zhou Maomao
+
+
+ 1810000000
+
+
+ Hangzhou, Zhejiang
+
+
+ No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China
+
+
+ empty
+
+
+
+```
diff --git a/antdv-demo/docs/descriptions/index.en-US.md b/antdv-demo/docs/descriptions/index.en-US.md
new file mode 100644
index 000000000..7e745e809
--- /dev/null
+++ b/antdv-demo/docs/descriptions/index.en-US.md
@@ -0,0 +1,21 @@
+## API
+
+### Descriptions props
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| title | The title of the description list, placed at the top | string \| VNode \| v-slot:title | - |
+| bordered | whether to display the border | boolean | false |
+| column | the number of `DescriptionItems` in a row,could be a number or a object like `{ xs: 8, sm: 16, md: 24}`,(Only set `bordered={true}` to take effect) | number | 3 |
+| size | set the size of the list. Can be set to `middle`,`small`, or not filled | `default | middle | small` | `default` |
+| layout | Define description layout | `horizontal | vertical` | `horizontal` |
+| colon | change default props `colon` value of `Descriptions.Item` | boolean | true |
+
+### Item props
+
+| Property | Description | Type | Default |
+| -------- | ------------------------------ | ------------------------------- | ------- |
+| label | description of the content | string \| VNode \| v-slot:label | - |
+| span | The number of columns included | number | 1 |
+
+> The number of span Descriptions.Item. span={2} takes up the width of two DescriptionsItems.
diff --git a/antdv-demo/docs/descriptions/index.zh-CN.md b/antdv-demo/docs/descriptions/index.zh-CN.md
new file mode 100644
index 000000000..85bd87ead
--- /dev/null
+++ b/antdv-demo/docs/descriptions/index.zh-CN.md
@@ -0,0 +1,21 @@
+## API
+
+### Descriptions props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| title | 描述列表的标题,显示在最顶部 | string \| VNode \| v-slot:title | - |
+| bordered | 是否展示边框 | boolean | false |
+| column | 一行的 `DescriptionItems` 数量,可以写成像素值或支持响应式的对象写法 `{ xs: 8, sm: 16, md: 24}` | number | 3 |
+| size | 设置列表的大小。可以设置为 `middle` 、`small`, 或不填(只有设置 `bordered={true}` 生效) | `default | middle | small` | `default` |
+| layout | 描述布局 | `horizontal | vertical` | `horizontal` |
+| colon | 配置 `Descriptions.Item` 的 `colon` 的默认值 | boolean | true |
+
+### Item props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----- | ------------ | ------------------------------- | ------ |
+| label | 内容的描述 | string \| VNode \| v-slot:label | - |
+| span | 包含列的数量 | number | 1 |
+
+> span 是 Descriptions.Item 的数量。 span={2} 会占用两个 DescriptionsItem 的宽度。
diff --git a/antdv-demo/docs/divider/demo/customize-style.md b/antdv-demo/docs/divider/demo/customize-style.md
new file mode 100644
index 000000000..eb087ce7e
--- /dev/null
+++ b/antdv-demo/docs/divider/demo/customize-style.md
@@ -0,0 +1,20 @@
+
+#### 样式自定义
+测试一些 `style` 修改样式的行为。
+
+
+
+#### Style Customization
+Use `style` to change default style.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/divider/demo/horizontal.md b/antdv-demo/docs/divider/demo/horizontal.md
new file mode 100644
index 000000000..64fed58d7
--- /dev/null
+++ b/antdv-demo/docs/divider/demo/horizontal.md
@@ -0,0 +1,35 @@
+
+#### 水平分割线
+默认为水平分割线,可在中间加入文字。
+
+
+
+#### Horizontal
+Divider is `horizontal` by default. You can add text within Divider.
+
+
+```vue
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
With Text
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+```
diff --git a/antdv-demo/docs/divider/demo/index.vue b/antdv-demo/docs/divider/demo/index.vue
new file mode 100644
index 000000000..88a54ef00
--- /dev/null
+++ b/antdv-demo/docs/divider/demo/index.vue
@@ -0,0 +1,46 @@
+
diff --git a/antdv-demo/docs/divider/demo/vertical.md b/antdv-demo/docs/divider/demo/vertical.md
new file mode 100644
index 000000000..17d1ddf6c
--- /dev/null
+++ b/antdv-demo/docs/divider/demo/vertical.md
@@ -0,0 +1,21 @@
+
+#### 垂直分割线
+使用 `type="vertical"` 设置为行内的垂直分割线。
+
+
+
+#### Vertical
+Use `type="vertical"` make it vertical.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/divider/demo/with-text.md b/antdv-demo/docs/divider/demo/with-text.md
new file mode 100644
index 000000000..e27e25704
--- /dev/null
+++ b/antdv-demo/docs/divider/demo/with-text.md
@@ -0,0 +1,39 @@
+
+#### 带文字的分割线
+分割线中带有文字,可以用 `orientation` 指定文字位置。
+
+
+
+#### Divider with title
+Divider with inner title, set `orientation="left/right"` to align it.
+
+
+```vue
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
Text
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+ Left Text
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+ Right Text
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nonne merninisti licere mihi ista
+ probare, quae sunt a te dicta? Refert tamen, quo modo.
+
+
+
+```
diff --git a/antdv-demo/docs/divider/index.en-US.md b/antdv-demo/docs/divider/index.en-US.md
new file mode 100644
index 000000000..fee77c29e
--- /dev/null
+++ b/antdv-demo/docs/divider/index.en-US.md
@@ -0,0 +1,9 @@
+## API
+
+### Divider
+
+| Property | Description | Type | Default |
+| ----------- | -------------------------------- | ----------------------------- | ------------ |
+| dashed | whether line is dashed | Boolean | false |
+| orientation | position of title inside divider | enum: `left` `right` `center` | `center` |
+| type | direction type of divider | enum: `horizontal` `vertical` | `horizontal` |
diff --git a/antdv-demo/docs/divider/index.zh-CN.md b/antdv-demo/docs/divider/index.zh-CN.md
new file mode 100644
index 000000000..dd8234fd9
--- /dev/null
+++ b/antdv-demo/docs/divider/index.zh-CN.md
@@ -0,0 +1,7 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----------- | ---------------- | ----------------------------- | ------------ |
+| dashed | 是否虚线 | Boolean | false |
+| orientation | 分割线标题的位置 | enum: `left` `right` | `center` |
+| type | 水平还是垂直类型 | enum: `horizontal` `vertical` | `horizontal` |
diff --git a/antdv-demo/docs/drawer/demo/basic-right.md b/antdv-demo/docs/drawer/demo/basic-right.md
new file mode 100644
index 000000000..85f0187e3
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/basic-right.md
@@ -0,0 +1,51 @@
+
+#### 基础抽屉
+基础抽屉,点击触发按钮抽屉从右滑出,点击遮罩区关闭
+
+
+
+#### Basic
+Basic drawer.
+
+
+```vue
+
+
+
+ Open
+
+
+ Some contents...
+ Some contents...
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/demo/descriptionItem.vue b/antdv-demo/docs/drawer/demo/descriptionItem.vue
new file mode 100644
index 000000000..9fce3eec0
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/descriptionItem.vue
@@ -0,0 +1,19 @@
+
+
+
+ {{ title }}
+
+
+ {{ content }}
+
+
+
+
+
diff --git a/antdv-demo/docs/drawer/demo/form-in-drawer.md b/antdv-demo/docs/drawer/demo/form-in-drawer.md
new file mode 100644
index 000000000..9723367b2
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/form-in-drawer.md
@@ -0,0 +1,190 @@
+
+#### 抽屉表单
+在抽屉中使用表单。
+
+
+
+#### Submit form in drawer
+Use form in drawer with submit button.
+
+
+```vue
+
+
+
New account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Xiaoxiao Fu
+
+
+ Maomao Zhou
+
+
+
+
+
+
+
+
+ Private
+
+
+ Public
+
+
+
+
+
+
+
+
+
+
+ Jack Ma
+
+
+ Tom Liu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Submit
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/demo/index.vue b/antdv-demo/docs/drawer/demo/index.vue
new file mode 100644
index 000000000..455e30342
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/index.vue
@@ -0,0 +1,66 @@
+
diff --git a/antdv-demo/docs/drawer/demo/multi-level-drawer.md b/antdv-demo/docs/drawer/demo/multi-level-drawer.md
new file mode 100644
index 000000000..0be36988a
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/multi-level-drawer.md
@@ -0,0 +1,85 @@
+
+#### 多层抽屉
+在抽屉内打开新的抽屉,用以解决多分支任务的复杂状况。
+
+
+
+#### Multi-level drawer
+Open a new drawer on top of an existing drawer to handle multi branch tasks.
+
+
+```vue
+
+
+
+ Open
+
+
+
+ Two-level drawer
+
+
+
+ This is two-level drawer
+
+
+
+
+ Cancel
+
+
+ Submit
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/demo/placement.md b/antdv-demo/docs/drawer/demo/placement.md
new file mode 100644
index 000000000..2c0df3553
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/placement.md
@@ -0,0 +1,65 @@
+
+#### 自定义位置
+自定义位置,点击触发按钮抽屉从相应的位置滑出,点击遮罩区关闭
+
+
+
+#### Custom Placement
+The Drawer can appear from any edge of the screen.
+
+
+```vue
+
+
+
+
+ top
+
+
+ right
+
+
+ bottom
+
+
+ left
+
+
+
+ Open
+
+
+ Some contents...
+ Some contents...
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/demo/render-in-current.md b/antdv-demo/docs/drawer/demo/render-in-current.md
new file mode 100644
index 000000000..39861072a
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/render-in-current.md
@@ -0,0 +1,64 @@
+
+#### 渲染在当前 DOM
+渲染在当前 dom 里。自定义容器,查看 getContainer。
+
+
+
+#### Render in current dom
+Render in current dom. custom container, check getContainer.
+
+
+```vue
+
+
+ Render in this
+
+
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/demo/user-profile.md b/antdv-demo/docs/drawer/demo/user-profile.md
new file mode 100644
index 000000000..78b91a335
--- /dev/null
+++ b/antdv-demo/docs/drawer/demo/user-profile.md
@@ -0,0 +1,161 @@
+
+#### 信息预览抽屉
+需要快速预览对象概要时使用,点击遮罩区关闭。
+
+
+
+#### Preview drawer
+Use Drawer to quickly preview details of an object, such as those in a list.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/drawer/index.en-US.md b/antdv-demo/docs/drawer/index.en-US.md
new file mode 100644
index 000000000..bcc37ac38
--- /dev/null
+++ b/antdv-demo/docs/drawer/index.en-US.md
@@ -0,0 +1,30 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| closable | Whether a close (x) button is visible on top right of the Drawer dialog or not. | boolean | true | |
+| destroyOnClose | Whether to unmount child components on closing drawer or not. | boolean | false | |
+| getContainer | Return the mounted node for Drawer. | HTMLElement \| `() => HTMLElement` \| Selectors | 'body' | |
+| mask | Whether to show mask or not. | Boolean | true | |
+| maskClosable | Clicking on the mask (area outside the Drawer) to close the Drawer or not. | boolean | true | |
+| maskStyle | Style for Drawer's mask element. | object | {} | |
+| title | The title for Drawer. | string\|slot | - | |
+| visible | Whether the Drawer dialog is visible or not. | boolean | false | |
+| wrapClassName | The class name of the container of the Drawer dialog. | string | - | |
+| wrapStyle | Style of wrapper element which **contains mask** compare to `drawerStyle` | object | - | |
+| drawerStyle | Style of the popup layer element | object | - | 1.4.11 |
+| headerStyle | Style of the drawer header part | object | - | 1.5.0 |
+| bodyStyle | Style of the drawer content part | object | - | |
+| width | Width of the Drawer dialog. | string\|number | 256 | |
+| height | placement is `top` or `bottom`, height of the Drawer dialog. | string\|number | - | |
+| zIndex | The `z-index` of the Drawer. | Number | 1000 | |
+| placement | The placement of the Drawer. | 'top' \| 'right' \| 'bottom' \| 'left' | 'right' | |
+| handle | After setting, the drawer is directly mounted on the DOM, and you can control the drawer to open or close through this `handle`. | VNode \| slot | - | |
+| afterVisibleChange | Callback after the animation ends when switching drawers. | function(visible) | - | 1.5.0 |
+| keyboard | Whether support press esc to close | Boolean | true | 1.5.0 |
+
+## Methods
+
+| Name | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| close | Specify a callback that will be called when a user clicks mask, close button or Cancel button. | function(e) | - | |
diff --git a/antdv-demo/docs/drawer/index.zh-CN.md b/antdv-demo/docs/drawer/index.zh-CN.md
new file mode 100644
index 000000000..5f6cbc8d5
--- /dev/null
+++ b/antdv-demo/docs/drawer/index.zh-CN.md
@@ -0,0 +1,30 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| closable | 是否显示右上角的关闭按钮 | boolean | true | |
+| destroyOnClose | 关闭时销毁 Drawer 里的子元素 | boolean | false | |
+| getContainer | 指定 Drawer 挂载的 HTML 节点 | HTMLElement \| `() => HTMLElement` \| Selectors | 'body' | |
+| maskClosable | 点击蒙层是否允许关闭 | boolean | true | |
+| mask | 是否展示遮罩 | Boolean | true | |
+| maskStyle | 遮罩样式 | object | {} | |
+| title | 标题 | string \| slot | - | |
+| visible | Drawer 是否可见 | boolean | - | |
+| wrapClassName | 对话框外层容器的类名 | string | - | |
+| wrapStyle | 可用于设置 Drawer 最外层容器的样式,和 `drawerStyle` 的区别是作用节点包括 `mask` | object | - | |
+| drawerStyle | 用于设置 Drawer 弹出层的样式 | object | - | 1.4.11 |
+| headerStyle | 用于设置 Drawer 头部的样式 | object | - | 1.5.0 |
+| bodyStyle | 可用于设置 Drawer 内容部分的样式 | object | - | |
+| width | 宽度 | string \| number | 256 | |
+| height | 高度, 在 `placement` 为 `top` 或 `bottom` 时使用 | string \| number | 256 | |
+| zIndex | 设置 Drawer 的 `z-index` | Number | 1000 | |
+| placement | 抽屉的方向 | 'top' \| 'right' \| 'bottom' \| 'left' | 'right' | |
+| handle | 设置后抽屉直接挂载到 DOM 上,你可以通过该 handle 控制抽屉打开关闭 | VNode \| slot | - | |
+| afterVisibleChange | 切换抽屉时动画结束后的回调 | function(visible) | 无 | 1.5.0 |
+| keyboard | 是否支持键盘 esc 关闭 | boolean | true | 1.5.0 |
+
+## 方法
+
+| 名称 | 描述 | 类型 | 默认值 | 版本 |
+| ----- | ------------------------------------ | ----------- | ------ | ---- |
+| close | 点击遮罩层或右上角叉或取消按钮的回调 | function(e) | 无 | |
diff --git a/antdv-demo/docs/dropdown/demo/basic.md b/antdv-demo/docs/dropdown/demo/basic.md
new file mode 100644
index 000000000..56cb9f43f
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/basic.md
@@ -0,0 +1,30 @@
+
+#### 基本
+最简单的下拉菜单。
+
+
+
+#### Basic
+The most basic dropdown menu.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Hover me
+
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+ 3rd menu item
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/context-menu.md b/antdv-demo/docs/dropdown/demo/context-menu.md
new file mode 100644
index 000000000..36c9e3249
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/context-menu.md
@@ -0,0 +1,38 @@
+
+#### 右键菜单
+默认是移入触发菜单,可以点击鼠标右键触发。
+
+
+
+#### Context Menu
+The default trigger mode is `hover`, you can change it to `contextMenu`.
+
+
+```vue
+
+
+
+ Right Click on here
+
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+ 3rd menu item
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/dropdown-button.md b/antdv-demo/docs/dropdown/demo/dropdown-button.md
new file mode 100644
index 000000000..5219a9ec6
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/dropdown-button.md
@@ -0,0 +1,62 @@
+
+#### 带下拉框的按钮
+左边是按钮,右边是额外的相关功能菜单。可设置 `icon` 属性来修改右边的图标。
+
+
+
+#### Button with dropdown menu
+A button is on the left, and a related functional menu is on the right. You can set the icon property to modify the icon of right.
+
+
+```vue
+
+
+
+ Dropdown
+
+ 1st menu item
+ 2nd menu item
+ 3rd item
+
+
+
+ Dropdown
+
+ 1st menu item
+ 2nd menu item
+ 3rd item
+
+
+
+
+ Dropdown
+
+ 1st menu item
+ 2nd menu item
+ 3rd item
+
+
+
+
+ 1st menu item
+ 2nd menu item
+ 3rd item
+
+ Button
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/event.md b/antdv-demo/docs/dropdown/demo/event.md
new file mode 100644
index 000000000..0868b40f1
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/event.md
@@ -0,0 +1,40 @@
+
+#### 触发事件
+点击菜单项后会触发事件,用户可以通过相应的菜单项 key 进行不同的操作。
+
+
+
+#### Click event
+An event will be triggered when you click menu items, in which you can make different operations according to item's key.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Hover me, Click menu item
+
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+ 3rd menu item
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/index.vue b/antdv-demo/docs/dropdown/demo/index.vue
new file mode 100644
index 000000000..331aaf7fe
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/index.vue
@@ -0,0 +1,55 @@
+
diff --git a/antdv-demo/docs/dropdown/demo/item.md b/antdv-demo/docs/dropdown/demo/item.md
new file mode 100644
index 000000000..dd68c0eb4
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/item.md
@@ -0,0 +1,31 @@
+
+#### 其他元素
+分割线和不可用菜单项。
+
+
+
+#### Other elements
+Divider and disabled menu item.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Hover me
+
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+
+ 3rd menu item(disabled)
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/overlay-visible.md b/antdv-demo/docs/dropdown/demo/overlay-visible.md
new file mode 100644
index 000000000..e9592b21d
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/overlay-visible.md
@@ -0,0 +1,47 @@
+
+#### 菜单隐藏方式
+默认是点击关闭菜单,可以关闭此功能。
+
+
+
+#### The way of hiding menu.
+The default is to close the menu when you click on menu items, this feature can be turned off.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Hover me
+
+
+
+ Clicking me will not close the menu.
+
+
+ Clicking me will not close the menu also.
+
+
+ Clicking me will close the menu
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/placement.md b/antdv-demo/docs/dropdown/demo/placement.md
new file mode 100644
index 000000000..e2acbf757
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/placement.md
@@ -0,0 +1,55 @@
+
+#### 弹出位置
+支持 6 个弹出位置。
+
+
+
+#### Placement
+Support 6 placements.
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/sub-menu.md b/antdv-demo/docs/dropdown/demo/sub-menu.md
new file mode 100644
index 000000000..8342499ee
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/sub-menu.md
@@ -0,0 +1,31 @@
+
+#### 多级菜单
+传入的菜单里有多个层级。
+
+
+
+#### Cascading menu
+The menu has multiple levels.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Cascading menu
+
+
+ 1st menu item
+ 2nd menu item
+
+ 3rd menu item
+ 4th menu item
+
+
+ 5d menu item
+ 6th menu item
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/demo/trigger.md b/antdv-demo/docs/dropdown/demo/trigger.md
new file mode 100644
index 000000000..866f63fe1
--- /dev/null
+++ b/antdv-demo/docs/dropdown/demo/trigger.md
@@ -0,0 +1,31 @@
+
+#### 触发方式
+默认是移入触发菜单,可以点击触发。
+
+
+
+#### Trigger mode
+The default trigger mode is `hover`, you can change it to `click`.
+
+
+```vue
+
+
+ e.preventDefault()">
+ Click me
+
+
+
+ 1st menu item
+
+
+ 2nd menu item
+
+
+
+ 3rd menu item
+
+
+
+
+```
diff --git a/antdv-demo/docs/dropdown/index.en-US.md b/antdv-demo/docs/dropdown/index.en-US.md
new file mode 100644
index 000000000..1c7a78fd0
--- /dev/null
+++ b/antdv-demo/docs/dropdown/index.en-US.md
@@ -0,0 +1,46 @@
+## API
+
+### Dropdown
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| disabled | whether the dropdown menu is disabled | boolean | - |
+| getPopupContainer | to set the container of the dropdown menu. The default is to create a `div` element in `body`, you can reset it to the scrolling area and make a relative reposition. [example](https://codepen.io/afc163/pen/zEjNOy?editors=0010) | Function(triggerNode) | `() => document.body` |
+| overlay(slot-scope) | the dropdown menu | [Menu](/components/menu) | - |
+| overlayClassName | Class name of the dropdown root element | string | - |
+| overlayStyle | Style of the dropdown root element | object | - |
+| placement | placement of pop menu: `bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` |
+| trigger | the trigger mode which executes the drop-down action, hover doesn't work on mobile device | Array<`click`\|`hover`\|`contextmenu`> | `['hover']` |
+| visible(v-model) | whether the dropdown menu is visible | boolean | - |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| visibleChange | a callback function takes an argument: `visible`, is executed when the visible state is changed | function(visible) |
+
+You should use [Menu](/components/menu/) as `overlay`. The menu items and dividers are also available by using `Menu.Item` and `Menu.Divider`.
+
+> Warning: You must set a unique `key` for `Menu.Item`.
+>
+> Menu of Dropdown is unselectable by default, you can make it selectable via ``.
+
+### Dropdown.Button
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| disabled | whether the dropdown menu is disabled | boolean | - | |
+| icon | Icon (appears on the right) | vNode \| slot | - | 1.5.0 |
+| overlay(slot-scope) | the dropdown menu | [Menu](/components/menu) | - | |
+| placement | placement of pop menu: `bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` | |
+| size | size of the button, the same as [Button](/components/button) | string | `default` | |
+| trigger | the trigger mode which executes the drop-down action | Array<`click`\|`hover`\|`contextmenu`> | `['hover']` | |
+| type | type of the button, the same as [Button](/components/button) | string | `default` | |
+| visible | whether the dropdown menu is visible | boolean | - | |
+
+### Dropdown.Button events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| click | a callback function, the same as [Button](/components/button), which will be executed when you click the button on the left | Function |
+| visibleChange | a callback function takes an argument: `visible`, is executed when the visible state is changed | Function |
diff --git a/antdv-demo/docs/dropdown/index.zh-CN.md b/antdv-demo/docs/dropdown/index.zh-CN.md
new file mode 100644
index 000000000..9856b669d
--- /dev/null
+++ b/antdv-demo/docs/dropdown/index.zh-CN.md
@@ -0,0 +1,46 @@
+## API
+
+属性如下
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| disabled | 菜单是否禁用 | boolean | - |
+| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | Function(triggerNode) | `() => document.body` |
+| overlay(slot-scope) | 菜单 | [Menu](/components/menu-cn) | - |
+| overlayClassName | 下拉根元素的类名称 | string | - |
+| overlayStyle | 下拉根元素的样式 | object | - |
+| placement | 菜单弹出位置:`bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` |
+| trigger | 触发下拉的行为, 移动端不支持 hover | Array<`click`\|`hover`\|`contextmenu`> | `['hover']` |
+| visible(v-model) | 菜单是否显示 | boolean | - |
+
+`overlay` 菜单使用 [Menu](/components/menu-cn/),还包括菜单项 `Menu.Item`,分割线 `Menu.Divider`。
+
+> 注意: Menu.Item 必须设置唯一的 key 属性。
+>
+> Dropdown 下的 Menu 默认不可选中。如果需要菜单可选中,可以指定 ``.
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ------------- | -------------------------------------- | ----------------- |
+| visibleChange | 菜单显示状态改变时调用,参数为 visible | function(visible) |
+
+### Dropdown.Button
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| disabled | 菜单是否禁用 | boolean | - | |
+| icon | 右侧的 icon | VNode \| slot | - | 1.5.0 |
+| overlay(slot-scope) | 菜单 | [Menu](/components/menu-cn/) | - | |
+| placement | 菜单弹出位置:`bottomLeft` `bottomCenter` `bottomRight` `topLeft` `topCenter` `topRight` | String | `bottomLeft` | |
+| size | 按钮大小,和 [Button](/components/button-cn/) 一致 | string | 'default' | |
+| trigger | 触发下拉的行为 | Array<`click`\|`hover`\|`contextmenu`> | `['hover']` | |
+| type | 按钮类型,和 [Button](/components/button-cn/) 一致 | string | 'default' | |
+| visible(v-model) | 菜单是否显示 | boolean | - | |
+
+### Dropdown.Button 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ------------- | ------------------------------------------------------------ | ----------------- |
+| click | 点击左侧按钮的回调,和 [Button](/components/button-cn/) 一致 | Function |
+| visibleChange | 菜单显示状态改变时调用,参数为 visible | function(visible) |
diff --git a/antdv-demo/docs/empty/demo/basic.md b/antdv-demo/docs/empty/demo/basic.md
new file mode 100644
index 000000000..cb050cffa
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/basic.md
@@ -0,0 +1,15 @@
+
+#### 基本
+简单的展示。
+
+
+
+#### Basic
+Simplest Usage.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/empty/demo/config-provider.md b/antdv-demo/docs/empty/demo/config-provider.md
new file mode 100644
index 000000000..2c15802f2
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/config-provider.md
@@ -0,0 +1,78 @@
+
+#### 全局化配置
+自定义全局组件的 Empty 样式。
+
+
+
+#### ConfigProvider
+Use ConfigProvider set global Empty style.
+
+
+```vue
+
+
+
(customize = val)"
+ />
+
+
+
+
+
+
+
+
Select
+
+
+
TreeSelect
+
+
+
Cascader
+
+
+
Transfer
+
+
+
Table
+
+
List
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/empty/demo/customize.md b/antdv-demo/docs/empty/demo/customize.md
new file mode 100644
index 000000000..515c2198c
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/customize.md
@@ -0,0 +1,25 @@
+
+#### 自定义
+自定义图片、描述、附属内容。
+
+
+
+#### Customize
+Customize image, description and extra content.
+
+
+```vue
+
+
+ Customize Description
+
+ Create Now
+
+
+
+```
diff --git a/antdv-demo/docs/empty/demo/description.md b/antdv-demo/docs/empty/demo/description.md
new file mode 100644
index 000000000..922857a62
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/description.md
@@ -0,0 +1,15 @@
+
+#### 无描述
+无描述展示。
+
+
+
+#### No description
+Simplest Usage with no description.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/empty/demo/index.vue b/antdv-demo/docs/empty/demo/index.vue
new file mode 100644
index 000000000..a20f70f94
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/index.vue
@@ -0,0 +1,58 @@
+
diff --git a/antdv-demo/docs/empty/demo/simple.md b/antdv-demo/docs/empty/demo/simple.md
new file mode 100644
index 000000000..ea20ee1d0
--- /dev/null
+++ b/antdv-demo/docs/empty/demo/simple.md
@@ -0,0 +1,23 @@
+
+#### 选择图片
+可以通过设置 `image` 为 `Empty.PRESENTED_IMAGE_SIMPLE` 选择另一种风格的图片。
+
+
+
+#### Chose image
+You can choose another style of `image` by setting image to `Empty.PRESENTED_IMAGE_SIMPLE`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/empty/index.en-US.md b/antdv-demo/docs/empty/index.en-US.md
new file mode 100644
index 000000000..cbac00e29
--- /dev/null
+++ b/antdv-demo/docs/empty/index.en-US.md
@@ -0,0 +1,23 @@
+## API
+
+```jsx
+
+ Create
+
+```
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| description | Customize description | string \| v-slot | - | |
+| imageStyle | style of image | CSSProperties | - | 1.5.0 |
+| image | Customize image. Will tread as image url when string provided | string \| v-slot | false | |
+
+## Built-in images
+
+- Empty.PRESENTED_IMAGE_SIMPLE
+
+
+
+- Empty.PRESENTED_IMAGE_DEFAULT
+
+
diff --git a/antdv-demo/docs/empty/index.zh-CN.md b/antdv-demo/docs/empty/index.zh-CN.md
new file mode 100644
index 000000000..fced9a031
--- /dev/null
+++ b/antdv-demo/docs/empty/index.zh-CN.md
@@ -0,0 +1,23 @@
+## API
+
+```jsx
+
+ 创建
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| ----------- | -------------------------------------------- | ---------------- | ------ | ----- |
+| description | 自定义描述内容 | string \| v-slot | - | |
+| imageStyle | 图片样式 | CSSProperties | - | 1.5.0 |
+| image | 设置显示图片,为 string 时表示自定义图片地址 | string \| v-slot | false | |
+
+## 内置图片 (1.5.0 以上版本)
+
+- Empty.PRESENTED_IMAGE_SIMPLE
+
+
+
+- Empty.PRESENTED_IMAGE_DEFAULT
+
+
diff --git a/antdv-demo/docs/form-model/demo/basic.md b/antdv-demo/docs/form-model/demo/basic.md
new file mode 100644
index 000000000..b7eed2af8
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/basic.md
@@ -0,0 +1,100 @@
+
+#### 典型表单
+在 `Form` 组件中,每一个表单域由一个 `FormItem` 组件构成,表单域中可以放置各种类型的表单控件,比如输入框、选择器、开关、单选框、多选框等。
+
+
+
+#### Basic form
+It includes all kinds of input items, such as `input`, `select`, `radio` and `checkbox`.
+In each `form` component, you need a `form-item` field to be the container of your input item.
+
+
+```vue
+
+
+
+
+
+
+
+
+ Zone one
+
+
+ Zone two
+
+
+
+
+
+
+
+
+
+
+
+
+ Online
+
+
+ Promotion
+
+
+ Offline
+
+
+
+
+
+
+ Sponsor
+
+
+ Venue
+
+
+
+
+
+
+
+
+ Create
+
+
+ Cancel
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/demo/custom-validation.md b/antdv-demo/docs/form-model/demo/custom-validation.md
new file mode 100644
index 000000000..756b15c14
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/custom-validation.md
@@ -0,0 +1,110 @@
+
+#### 自定义校验规则
+这个例子中展示了如何使用自定义验证规则来完成密码的二次验证。本例还使用 `has-feedback` 属性为输入框添加了表示校验结果的反馈图标。
+自定义校验 callback 必须被调用。 更多高级用法可参考 [async-validator](https://github.com/yiminghe/async-validator)
+
+
+
+#### Custom validation rules
+This example shows how to customize your own validation rules to finish a two-factor password verification.
+You can use `has-feedback` to reflect validation result as an icon.
+Custom validate callback function must be called. See more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+ Reset
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/demo/dynamic-form-item.md b/antdv-demo/docs/form-model/demo/dynamic-form-item.md
new file mode 100644
index 000000000..dd15eff54
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/dynamic-form-item.md
@@ -0,0 +1,130 @@
+
+#### 动态增减表单项
+动态增加、减少表单项。
+
+
+
+#### Dynamic Form Item
+Add or remove form items dynamically.
+
+
+```vue
+
+
+
+
+
+
+
+
+ Add field
+
+
+
+
+ Submit
+
+
+ Reset
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/demo/horizontal-login.md b/antdv-demo/docs/form-model/demo/horizontal-login.md
new file mode 100644
index 000000000..51996fb94
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/horizontal-login.md
@@ -0,0 +1,52 @@
+
+#### 内联登录栏
+水平登录栏,常用在顶部导航栏中。
+
+
+
+#### Inline Login Form
+Inline login form is often used in navigation bar.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Log in
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/demo/index.vue b/antdv-demo/docs/form-model/demo/index.vue
new file mode 100644
index 000000000..9dbd781af
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/index.vue
@@ -0,0 +1,105 @@
+
+
diff --git a/antdv-demo/docs/form-model/demo/layout.md b/antdv-demo/docs/form-model/demo/layout.md
new file mode 100644
index 000000000..66fee32f5
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/layout.md
@@ -0,0 +1,72 @@
+
+#### 表单布局
+表单有三种布局。
+
+
+
+#### Form Layout
+There are three layout for form: `horizontal`, `vertical`, `inline`.
+
+
+```vue
+
+
+
+
+
+ Horizontal
+
+
+ Vertical
+
+
+ Inline
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/demo/validation.md b/antdv-demo/docs/form-model/demo/validation.md
new file mode 100644
index 000000000..9dac971f8
--- /dev/null
+++ b/antdv-demo/docs/form-model/demo/validation.md
@@ -0,0 +1,143 @@
+
+#### 表单验证
+Form 组件提供了表单验证的功能,只需要通过 `rules` 属性传入约定的验证规则,并将 `FormItem` 的 `prop` 属性设置为需校验的字段名即可。校验规则参见 [async-validator](https://github.com/yiminghe/async-validator)
+
+
+
+#### Validation
+Just add the `rules` attribute for `Form` component, pass validation rules, and set `prop` attribute for `FormItem` as a specific key that needs to be validated. See more information at [async-validator](https://github.com/yiminghe/async-validator).
+
+
+```vue
+
+
+
+ {
+ $refs.name.onFieldBlur();
+ }
+ "
+ />
+
+
+
+
+ Zone one
+
+
+ Zone two
+
+
+
+
+
+
+
+
+
+
+
+
+ Online
+
+
+ Promotion
+
+
+ Offline
+
+
+
+
+
+
+ Sponsor
+
+
+ Venue
+
+
+
+
+
+
+
+
+ Create
+
+
+ Reset
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/form-model/index.en-US.md b/antdv-demo/docs/form-model/index.en-US.md
new file mode 100644
index 000000000..cd19132ae
--- /dev/null
+++ b/antdv-demo/docs/form-model/index.en-US.md
@@ -0,0 +1,89 @@
+## API
+
+### Form
+
+| Property | Description | Type | Default Value | Version |
+| --- | --- | --- | --- | --- |
+| model | data of form component | object | | |
+| rules | validation rules of form | object | | |
+| hideRequiredMark | Hide required mark of all form items | Boolean | false | |
+| layout | Define form layout | 'horizontal'\|'vertical'\|'inline' | 'horizontal' | |
+| labelAlign | text align of label of all items | 'left' \| 'right' | 'right' | |
+| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with ` ` | [object](/components/grid/#Col) | | |
+| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#Col) | | |
+| colon | change default props colon value of Form.Item (only effective when prop layout is horizontal) | boolean | true | |
+| validateOnRuleChange | whether to trigger validation when the `rules` prop is changed | boolean | true | |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| submit | Defines a function will be called if form data validation is successful. | Function(e:Event) |
+| validate | triggers after a form item is validated | prop name of the form item being validated, whether validation is passed and the error message if not |
+
+### Methods
+
+| Method | Description | Parameters |
+| --- | --- | --- |
+| validate | validate the whole form. Takes a callback as a param. After validation, the callback will be executed with two params: a boolean indicating if the validation has passed, and an object containing all fields that fail the validation. Returns a promise if callback is omitted | Function(callback: Function(boolean, object)) |
+| validateField | validate one or several form items | Function(props: string \| array, callback: Function(errorMessage: string)) |
+| resetFields | reset all the fields and remove validation result | — |
+| clearValidate | clear validation message for certain fields. The parameter is prop name or an array of prop names of the form items whose validation messages will be removed. When omitted, all fields' validation messages will be cleared | Function(props: string \| array) |
+
+### Form.Item
+
+| Property | Description | Type | Default Value | Version |
+| --- | --- | --- | --- | --- |
+| prop | a key of `model`. In the use of validate and resetFields method, the attribute is required | string | | |
+| rules | validation rules of form | object \| array | | |
+| autoLink | Whether to automatically associate form fields. In most cases, you can use automatic association. If the conditions for automatic association are not met, you can manually associate them. See the notes below. | boolean | true | |
+| colon | Used with `label`, whether to display `:` after label text. | boolean | true | |
+| extra | The extra prompt message. It is similar to help. Usage example: to display error message and prompt message at the same time. | string\|slot | | |
+| hasFeedback | Used with `validateStatus`, this option specifies the validation status icon. Recommended to be used only with `Input`. | boolean | false | |
+| help | The prompt message. If not provided, the prompt message will be generated by the validation rule. | string\|slot | | |
+| htmlFor | Set sub label `htmlFor`. | string | | |
+| label | Label text | string\|slot | | |
+| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with ` ` | [object](/components/grid/#Col) | | |
+| labelAlign | text align of label | 'left' \| 'right' | 'right' | |
+| required | Whether provided or not, it will be generated by the validation rule. | boolean | false | |
+| validateStatus | The validation status. If not provided, it will be generated by validation rule. options: 'success' 'warning' 'error' 'validating' | string | | |
+| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#Col) | | |
+
+#### Note
+
+Form.Item will hijack the only child element and listen to the `blur` and`change` events to achieve the purpose of automatic verification, so please ensure that the form field is not wrapped by other elements. If there are multiple child elements, only the first child element will be monitored for changes.
+
+If the form field to be monitored does not meet the conditions for automatic monitoring, you can associate the form field as follows:
+
+```html
+
+
+ hahha
+
+
{$refs.name.onFieldBlur()}"
+ @change="() => {$refs.name.onFieldChange()}"
+ />
+
+
+```
+
+### Validation Rules
+
+| Property | Description | Type | Default Value |
+| --- | --- | --- | --- |
+| trigger | When to validate the value of children node. | 'blur' \| 'change' \| `['change', 'blur']` | - |
+| enum | validate a value from a list of possible values | string | - |
+| len | validate an exact length of a field | number | - |
+| max | validate a max length of a field | number | - |
+| message | validation error message | string | - |
+| min | validate a min length of a field | number | - |
+| pattern | validate from a regular expression | RegExp | - |
+| required | indicates whether field is required | boolean | `false` |
+| transform | transform a value before validation | function(value) => transformedValue:any | - |
+| type | built-in validation type, [available options](https://github.com/yiminghe/async-validator#type) | string | 'string' |
+| validator | custom validate function (Note: [callback must be called](https://github.com/ant-design/ant-design/issues/5155)) | function(rule, value, callback) | - |
+| whitespace | treat required fields that only contain whitespace as errors | boolean | `false` |
+
+See more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).
diff --git a/antdv-demo/docs/form-model/index.zh-CN.md b/antdv-demo/docs/form-model/index.zh-CN.md
new file mode 100644
index 000000000..2d6636558
--- /dev/null
+++ b/antdv-demo/docs/form-model/index.zh-CN.md
@@ -0,0 +1,89 @@
+## API
+
+### Form
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| model | 表单数据对象 | object | | |
+| rules | 表单验证规则 | object | | |
+| hideRequiredMark | 隐藏所有表单项的必选标记 | Boolean | false | |
+| labelAlign | label 标签的文本对齐方式 | 'left' \| 'right' | 'right' | |
+| layout | 表单布局 | 'horizontal'\|'vertical'\|'inline' | 'horizontal' | |
+| labelCol | label 标签布局,同 ` ` 组件,设置 `span` `offset` 值,如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#Col) | | |
+| wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object](/components/grid-cn/#Col) | | |
+| colon | 配置 Form.Item 的 colon 的默认值 (只有在属性 layout 为 horizontal 时有效) | boolean | true | |
+| validateOnRuleChange | 是否在 rules 属性改变后立即触发一次验证 | boolean | true | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ---------------------- | ---------------------------------------------------------- |
+| submit | 数据验证成功后回调事件 | Function(e:Event) |
+| validate | 任一表单项被校验后触发 | 被校验的表单项 prop 值,校验是否通过,错误消息(如果存在) |
+
+### 方法
+
+| 方法名 | 说明 | 参数 |
+| --- | --- | --- |
+| validate | 对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个 promise | Function(callback: Function(boolean, object)) |
+| validateField | 对部分表单字段进行校验的方法 | Function(props: array \| string, callback: Function(errorMessage: string)) |
+| resetFields | 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果 | — |
+| clearValidate | 移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果 | Function(props: array \| string) |
+
+### Form.Item
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| prop | 表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的 | string | | |
+| rules | 表单验证规则 | object \| array | | |
+| autoLink | 是否自动关联表单域,对于大部分情况都可以使用自动关联,如果不满足自动关联的条件,可以手动关联,参见下方注意事项 | boolean | true | |
+| colon | 配合 label 属性使用,表示是否显示 label 后面的冒号 | boolean | true | |
+| extra | 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 | string\|slot | | |
+| hasFeedback | 配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用 | boolean | false | |
+| help | 提示信息,如不设置,则会根据校验规则自动生成 | string\|slot | | |
+| htmlFor | 设置子元素 label `htmlFor` 属性 | string | | |
+| label | label 标签的文本 | string\|slot | | |
+| labelCol | label 标签布局,同 ` ` 组件,设置 `span` `offset` 值,如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#Col) | | |
+| labelAlign | 标签文本对齐方式 | 'left' \| 'right' | 'right' | |
+| required | 是否必填,如不设置,则会根据校验规则自动生成 | boolean | false | |
+| validateStatus | 校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating' | string | | |
+| wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object](/components/grid-cn/#Col) | | |
+
+#### 注意:
+
+Form.Item 会对唯一子元素进行劫持,并监听 `blur` 和 `change` 事件,来达到自动校验的目的,所以请确保表单域没有其它元素包裹。如果有多个子元素,将只会监听第一个子元素的变化。
+
+如果要监听的表单域不满足自动监听的条件,可以通过如下方式关联表单域:
+
+```html
+
+
+ hahha
+
+
{$refs.name.onFieldBlur()}"
+ @change="() => {$refs.name.onFieldChange()}"
+ />
+
+
+```
+
+### 校验规则
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| trigger | 校验触发的时机 | 'blur' \| 'change' \| `['change', 'blur']` | - |
+| enum | 枚举类型 | string | - |
+| len | 字段长度 | number | - |
+| max | 最大长度 | number | - |
+| message | 校验文案 | string | - |
+| min | 最小长度 | number | - |
+| pattern | 正则表达式校验 | RegExp | - |
+| required | 是否必选 | boolean | `false` |
+| transform | 校验前转换字段值 | function(value) => transformedValue:any | - |
+| type | 内建校验类型,[可选项](https://github.com/yiminghe/async-validator#type) | string | 'string' |
+| validator | 自定义校验(注意,[callback 必须被调用](https://github.com/ant-design/ant-design/issues/5155)) | function(rule, value, callback) | - |
+| whitespace | 必选时,空格是否会被视为错误 | boolean | `false` |
+
+更多高级用法可研究 [async-validator](https://github.com/yiminghe/async-validator)。
diff --git a/antdv-demo/docs/form/demo/advanced-search.vue b/antdv-demo/docs/form/demo/advanced-search.vue
new file mode 100644
index 000000000..2de0aa9f0
--- /dev/null
+++ b/antdv-demo/docs/form/demo/advanced-search.vue
@@ -0,0 +1,123 @@
+
+#### 高级搜索
+三列栅格式的表单排列方式,常用于数据表格的高级搜索。
+有部分定制的样式代码,由于输入标签长度不确定,需要根据具体情况自行调整。
+
+
+
+#### Advanced search
+Three columns layout is often used for advanced searching of data table.
+Because the width of label is not fixed, you may need to adjust it by customizing its style.
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/coordinated.vue b/antdv-demo/docs/form/demo/coordinated.vue
new file mode 100644
index 000000000..0569d0ae3
--- /dev/null
+++ b/antdv-demo/docs/form/demo/coordinated.vue
@@ -0,0 +1,68 @@
+
+#### 表单联动
+使用 `setFieldsValue` 来动态设置其他控件的值。
+
+
+
+#### Coordinated Controls
+Use `setFieldsValue` to set other control's value programmaticly.
+
+
+
+
+
+
+
+
+
+
+ male
+
+
+ female
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/customized-form-controls.vue b/antdv-demo/docs/form/demo/customized-form-controls.vue
new file mode 100644
index 000000000..a45f195b2
--- /dev/null
+++ b/antdv-demo/docs/form/demo/customized-form-controls.vue
@@ -0,0 +1,115 @@
+
+#### 自定义表单控件
+自定义或第三方的表单控件,也可以与 Form 组件一起使用。只要该组件遵循以下的约定:
+> - 提供受控属性 `value` 或其它与 [`valuePropName`](/components/form-cn/#getFieldDecorator(id,-options)-参数) 的值同名的属性。
+> - 提供 `onChange` 事件或 [`trigger`](/components/form-cn/#getFieldDecorator(id,-options)-参数) 的值同名的事件。
+> - 不能是函数式组件。
+
+
+
+#### Customized Form Controls
+Customized or third-party form controls can be used in Form, too. Controls must follow these conventions:
+> - It has a controlled property `value` or other name which is equal to the value of [`valuePropName`](/components/form/#getFieldDecorator(id,-options)-parameters).
+> - It has event `onChange` or an event which name is equal to the value of [`trigger`](/components/form/#getFieldDecorator(id,-options)-parameters).
+> - It must be a class component.
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/dynamic-form-item.vue b/antdv-demo/docs/form/demo/dynamic-form-item.vue
new file mode 100644
index 000000000..868744b20
--- /dev/null
+++ b/antdv-demo/docs/form/demo/dynamic-form-item.vue
@@ -0,0 +1,145 @@
+
+#### 动态增减表单项
+动态增加、减少表单项。
+
+
+
+#### Dynamic Form Item
+Add or remove form items dynamically.
+
+
+
+
+
+
+ remove(k)"
+ />
+
+
+
+ Add field
+
+
+
+
+ Submit
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/dynamic-rule.vue b/antdv-demo/docs/form/demo/dynamic-rule.vue
new file mode 100644
index 000000000..c172fae11
--- /dev/null
+++ b/antdv-demo/docs/form/demo/dynamic-rule.vue
@@ -0,0 +1,86 @@
+
+#### 动态校验规则
+根据不同情况执行不同的校验规则。
+
+
+
+#### Dynamic Rules
+Perform different check rules according to different situations.
+
+
+
+
+
+
+
+
+
+
+
+
+ Nickname is required
+
+
+
+
+ Check
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/form-in-modal.vue b/antdv-demo/docs/form/demo/form-in-modal.vue
new file mode 100644
index 000000000..1efb79348
--- /dev/null
+++ b/antdv-demo/docs/form/demo/form-in-modal.vue
@@ -0,0 +1,101 @@
+
+#### 弹出层中的新建表单
+当用户访问一个展示了某个列表的页面,想新建一项但又不想跳转页面时,可以用 Modal 弹出一个表单,用户填写必要信息后创建新的项。
+
+
+
+#### Form in Modal to Create
+When user visit a page with a list of items, and want to create a new item. The page can popup a form in Modal, then let user fill in the form to create an item.
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/global-state.vue b/antdv-demo/docs/form/demo/global-state.vue
new file mode 100644
index 000000000..356190fd3
--- /dev/null
+++ b/antdv-demo/docs/form/demo/global-state.vue
@@ -0,0 +1,103 @@
+
+#### 表单数据存储于上层组件
+通过使用 `onFieldsChange` 与 `mapPropsToFields`,可以把表单的数据存储到上层组件。
+**注意:**
+`mapPropsToFields` 里面返回的表单域数据必须使用 `Form.createFormField` 包装。
+如果你使用`Form.create`,上层组件传递的属性,必须在`Form.create({ props: ...})`的props中声明。
+如果使用`this.$form.createForm`,你可以使用任何数据,不仅仅局限于上层组件的属性。
+
+
+
+#### Store Form Data into Upper Component
+We can store form data into upper component.
+**Note:**
+If you use `Form.create`. You must wrap field data with `Form.createFormField` in `mapPropsToFields`.
+The properties passed by the upper component must be declared in the props of `Form.create({ props: ...})`.
+But if you use `this.$form.createForm`, You can use any data, not just the properties of the upper components.
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/horizontal-login.vue b/antdv-demo/docs/form/demo/horizontal-login.vue
new file mode 100644
index 000000000..fd9c6d537
--- /dev/null
+++ b/antdv-demo/docs/form/demo/horizontal-login.vue
@@ -0,0 +1,82 @@
+
+#### 内联登录栏
+水平登录栏,常用在顶部导航栏中。
+
+
+
+#### Inline Login Form
+Inline login form is often used in navigation bar.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Log in
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/index.vue b/antdv-demo/docs/form/demo/index.vue
new file mode 100644
index 000000000..4e708214d
--- /dev/null
+++ b/antdv-demo/docs/form/demo/index.vue
@@ -0,0 +1,177 @@
+
+
diff --git a/antdv-demo/docs/form/demo/layout.vue b/antdv-demo/docs/form/demo/layout.vue
new file mode 100644
index 000000000..8bedc1c48
--- /dev/null
+++ b/antdv-demo/docs/form/demo/layout.vue
@@ -0,0 +1,84 @@
+
+#### 表单布局
+表单有三种布局。
+
+
+
+#### Form Layout
+There are three layout for form: `horizontal`, `vertical`, `inline`.
+
+
+
+
+
+
+
+ Horizontal
+
+
+ Vertical
+
+
+ Inline
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/normal-login.vue b/antdv-demo/docs/form/demo/normal-login.vue
new file mode 100644
index 000000000..38af1774a
--- /dev/null
+++ b/antdv-demo/docs/form/demo/normal-login.vue
@@ -0,0 +1,94 @@
+
+#### 登录框
+普通的登录框,可以容纳更多的元素。
+
+
+
+#### Login Form
+Normal login form which can contain more elements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Remember me
+
+
+ Forgot password
+
+
+ Log in
+
+ Or
+
+ register now!
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/register.vue b/antdv-demo/docs/form/demo/register.vue
new file mode 100644
index 000000000..36c463736
--- /dev/null
+++ b/antdv-demo/docs/form/demo/register.vue
@@ -0,0 +1,282 @@
+
+#### 注册新用户
+用户填写必须的信息以注册新用户。
+
+
+
+#### Registration
+Fill in this form to create a new account for you.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nickname
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +86
+
+
+ +87
+
+
+
+
+
+
+
+
+ {{ website }}
+
+
+
+
+
+
+
+
+
+
+
+ Get captcha
+
+
+
+
+
+ I have read the
+
+ agreement
+
+
+
+
+
+ Register
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/time-related-controls.vue b/antdv-demo/docs/form/demo/time-related-controls.vue
new file mode 100644
index 000000000..31d853066
--- /dev/null
+++ b/antdv-demo/docs/form/demo/time-related-controls.vue
@@ -0,0 +1,104 @@
+
+#### 时间类控件
+时间类组件的 `value` 类型为 `moment` 对象,所以在提交服务器前需要预处理。
+
+
+
+#### Time-related Controls
+The `value` of time-related components is a `moment` object, which we need to pre-process it before we submit to server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/validate-other.vue b/antdv-demo/docs/form/demo/validate-other.vue
new file mode 100644
index 000000000..38e03320e
--- /dev/null
+++ b/antdv-demo/docs/form/demo/validate-other.vue
@@ -0,0 +1,236 @@
+
+#### 校验其他组件
+以上演示没有出现的表单控件对应的校验演示。
+
+
+
+#### Other Form Controls
+Demonstration of validation configuration for form controls which are not shown in the demos above.
+
+
+
+
+
+
+ China
+
+
+
+
+
+ China
+
+
+ U.S.A
+
+
+
+
+
+
+
+ Red
+
+
+ Green
+
+
+ Blue
+
+
+
+
+
+
+
+ machines
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ item 1
+
+
+ item 2
+
+
+ item 3
+
+
+
+
+
+
+
+ item 1
+
+
+ item 2
+
+
+ item 3
+
+
+
+
+
+
+
+
+
+ A
+
+
+
+
+ B
+
+
+
+
+ C
+
+
+
+
+ D
+
+
+
+
+ E
+
+
+
+
+
+
+
+
+
+
+
+
+ Click to upload
+
+
+
+
+
+
+
+
+
+
+ Click or drag file to this area to upload
+
+
+ Support for a single or bulk upload.
+
+
+
+
+
+
+
+ Submit
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/validate-static.vue b/antdv-demo/docs/form/demo/validate-static.vue
new file mode 100644
index 000000000..b89885b46
--- /dev/null
+++ b/antdv-demo/docs/form/demo/validate-static.vue
@@ -0,0 +1,124 @@
+
+#### 自定义校验
+我们提供了 `validateStatus` `help` `hasFeedback` 等属性,你可以不需要使用 `Form.create` 和 `getFieldDecorator`,自己定义校验的时机和内容。
+1. `validateStatus`: 校验状态,可选 'success', 'warning', 'error', 'validating'。
+2. `hasFeedback`:用于给输入框添加反馈图标。
+3. `help`:设置校验文案。
+
+
+
+#### Customized Validation
+We provide properties like `validateStatus` `help` `hasFeedback` to customize your own validate status and message, without using `Form.create` and `getFieldDecorator`.
+1. `validateStatus`: validate status of form components which could be 'success', 'warning', 'error', 'validating'.
+2. `hasFeedback`: display feed icon of input control
+3. `help`: display validate message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option 1
+
+
+ Option 2
+
+
+ Option 3
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/vuex.vue b/antdv-demo/docs/form/demo/vuex.vue
new file mode 100644
index 000000000..878e621e2
--- /dev/null
+++ b/antdv-demo/docs/form/demo/vuex.vue
@@ -0,0 +1,86 @@
+
+#### 表单数据存储于 Vuex Store 中
+通过使用 onFieldsChange 与 mapPropsToFields,可以把表单的数据存储到 Vuex 中。
+**注意:**
+`mapPropsToFields` 里面返回的表单域数据必须使用 `Form.createFormField` 包装。
+
+
+
+#### Store Form Data into Vuex Store
+We can store form data into Vuex Store.
+**Note:**
+You must wrap field data with `Form.createFormField` in `mapPropsToFields`.
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/demo/without-form-create.vue b/antdv-demo/docs/form/demo/without-form-create.vue
new file mode 100644
index 000000000..c3c15d3cc
--- /dev/null
+++ b/antdv-demo/docs/form/demo/without-form-create.vue
@@ -0,0 +1,58 @@
+
+#### 自行处理表单数据
+使用 `Form.create` 处理后的表单具有自动收集数据并校验的功能,但如果您不需要这个功能,或者默认的行为无法满足业务需求,可以选择不使用 `Form.create` 并自行处理数据。
+
+
+
+#### Handle Form Data Manually
+`Form.create` will collect and validate form data automatically. But if you don't need this feature or the default behaviour cannot satisfy your business, you can drop `Form.create` and handle form data manually.
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/form/index.en-US.md b/antdv-demo/docs/form/index.en-US.md
new file mode 100644
index 000000000..7c4512288
--- /dev/null
+++ b/antdv-demo/docs/form/index.en-US.md
@@ -0,0 +1,208 @@
+## API
+
+### Form
+
+| Property | Description | Type | Default Value | Version |
+| --- | --- | --- | --- | --- |
+| form | Decorated by `Form.create()` will be automatically set `this.form` property, so just pass to form. If you use the template syntax, you can use `this.$form.createForm(this, options)` | object | n/a | |
+| hideRequiredMark | Hide required mark of all form items | Boolean | false | |
+| layout | Define form layout | 'horizontal'\|'vertical'\|'inline' | 'horizontal' | |
+| labelAlign | text align of label of all items | 'left' \| 'right' | 'right' | 1.5.0 |
+| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with ` ` | [object](/components/grid/#Col) | | |
+| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#Col) | | |
+| autoFormCreate(deprecated) | Automate Form.create, Recommended for use under the `template` component, and cannot be used with `Form.create()`. You should use `$form.createForm` to instead it after 1.1.9. | Function(form) | | |
+| options(deprecated) | The `options` corresponding to `Form.create(options)`. You should use `$form.createForm` to instead it after 1.1.9. | Object | {} | 1.1.9 |
+| colon | change default props colon value of Form.Item (only effective when prop layout is horizontal) | boolean | true | 1.5.0 |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| submit | Defines a function will be called if form data validation is successful. | Function(e:Event) |
+
+### Form.create(options) \| this.\$form.createForm(this, options)
+
+How to use:
+
+#### Used in jsx, the usage is consistent with the React version of antd
+
+```jsx
+const CustomizedForm = {};
+
+CustomizedForm = Form.create({})(CustomizedForm);
+```
+
+Maintain an ref for wrapped component instance, use `wrappedComponentRef`.
+
+#### Single file template usage
+
+```html
+
+
+
+
+```
+
+The following `options` are available:
+
+| Property | Description | Type |
+| --- | --- | --- |
+| props | Only supports the use of Form.create({})(CustomizedForm). declare props on form(和[like vue props](https://vuejs.org/v2/api/#props)) | {} |
+| mapPropsToFields | Convert props to field value(e.g. reading the values from Redux store). And you must mark returned fields with [`Form.createFormField`](#Form.createFormField). If you use `$form.createForm` to create a collector, you can map any data to the Field without being bound by the parent component. | (props) => Object{ fieldName: FormField { value } } |
+| name | Set the id prefix of fields under form | - |
+| validateMessages | Default validate message. And its format is similar with [newMessages](https://github.com/yiminghe/async-validator/blob/master/src/messages.js)'s returned value | Object { [nested.path]: String } |
+| onFieldsChange | Specify a function that will be called when the value a `Form.Item` gets changed. Usage example: saving the field's value to Redux store. | Function(props, fields) |
+| onValuesChange | A handler while value of any field is changed | (props, values) => void |
+
+If the form has been decorated by `Form.create` then it has `this.form` property. `this.form` provides some APIs as follows:
+
+> Note: Before using `getFieldsValue` `getFieldValue` `setFieldsValue` and so on, please make sure that corresponding field had been registered with `getFieldDecorator` or `v-decorator`.
+
+| Method | Description | Type |
+| --- | --- | --- |
+| getFieldDecorator | Two-way binding for form, single file template can be bound using the directive `v-decorator`. please read below for details. | |
+| getFieldError | Get the error of a field. | Function(name) |
+| getFieldsError | Get the specified fields' error. If you don't specify a parameter, you will get all fields' error. | Function(\[names: string\[]]) |
+| getFieldsValue | Get the specified fields' values. If you don't specify a parameter, you will get all fields' values. | Function(\[fieldNames: string\[]]) |
+| getFieldValue | Get the value of a field. | Function(fieldName: string) |
+| isFieldsTouched | Check whether any of fields is touched by `getFieldDecorator`'s or `v-decorator`'s `options.trigger` event | (names?: string\[]) => boolean |
+| isFieldTouched | Check whether a field is touched by `getFieldDecorator`'s or `v-decorator`'s `options.trigger` event | (name: string) => boolean |
+| isFieldValidating | Check if the specified field is being validated. | Function(name) |
+| resetFields | Reset the specified fields' value(to `initialValue`) and status. If you don't specify a parameter, all the fields will be reset. | Function(\[names: string\[]]) |
+| setFields | Set value and error state of fields. | ({ \[fieldName\]: {value: any, errors: \[Error\] } }) => void |
+| setFieldsValue | Set the value of a field. | Function({ [fieldName]: value }) |
+| validateFields | Validate the specified fields and get theirs values and errors. If you don't specify the parameter of fieldNames, you will validate all fields. | ( \[fieldNames: string\[]], \[options: object\], callback(errors, values) ) => void |
+| validateFieldsAndScroll | This function is similar to `validateFields`, but after validation, if the target field is not in visible area of form, form will be automatically scrolled to the target field area. | same as `validateFields` |
+
+### validateFields/validateFieldsAndScroll
+
+```jsx
+const {
+ form: { validateFields },
+} = this;
+validateFields((errors, values) => {
+ // ...
+});
+validateFields(['field1', 'field2'], (errors, values) => {
+ // ...
+});
+validateFields(['field1', 'field2'], options, (errors, values) => {
+ // ...
+});
+```
+
+| Method | Description | Type | Default |
+| --- | --- | --- | --- |
+| options.first | If `true`, every field will stop validation at first failed rule | boolean | false |
+| options.firstFields | Those fields will stop validation at first failed rule | String\[] | \[] |
+| options.force | Should validate validated field again when `validateTrigger` is been triggered again | boolean | false |
+| options.scroll | Config scroll behavior of `validateFieldsAndScroll`, more: [dom-scroll-into-view's config](https://github.com/yiminghe/dom-scroll-into-view#function-parameter) | Object | {} |
+
+#### Callback arguments example of validateFields
+
+- `errors`:
+
+ ```js
+ {
+ "userName": {
+ "errors": [
+ {
+ "message": "Please input your username!",
+ "field": "userName"
+ }
+ ]
+ },
+ "password": {
+ "errors": [
+ {
+ "message": "Please input your Password!",
+ "field": "password"
+ }
+ ]
+ }
+ }
+ ```
+
+- `values`:
+
+ ```js
+ {
+ "userName": "username",
+ "password": "password",
+ }
+ ```
+
+### Form.createFormField
+
+To mark the returned fields data in `mapPropsToFields`, [demo](#components-form-demo-global-state).
+
+### this.form.getFieldDecorator(id, options) and v-decorator="[id, options]"
+
+After wrapped by `getFieldDecorator` or `v-decorator`, `value`(or other property defined by `valuePropName`) `onChange`(or other property defined by `trigger`) props will be added to form controls,the flow of form data will be handled by Form which will cause:
+
+1. You shouldn't use `onChange` to collect data, but you still can listen to `onChange`(and so on) events.
+2. You cannot set value of form control via `value` `defaultValue` prop, and you should set default value with `initialValue` in `getFieldDecorator` or `v-decorator` instead.
+3. You shouldn't call `v-model` manually, please use `this.form.setFieldsValue` to change value programmatically.
+
+#### Special attention
+
+1. `getFieldDecorator` and `v-decorator` can not be used to decorate stateless component.
+2. you can't use `getFieldDecorator` and `v-decorator` in stateless component:
+
+#### getFieldDecorator(id, options) and v-decorator="[id, options]" parameters
+
+| Property | Description | Type | Default Value |
+| --- | --- | --- | --- |
+| id | The unique identifier is required. support [nested fields format](https://github.com/react-component/form/pull/48). | string | |
+| options.getValueFromEvent | Specify how to get value from event or other onChange arguments | function(..args) | [reference](https://github.com/react-component/form#option-object) |
+| options.getValueProps | Get the component props according to field value. | function(value): any | [reference](https://github.com/react-component/form#option-object) |
+| options.initialValue | You can specify initial value, type, optional value of children node. (Note: Because `Form` will test equality with `===` internally, we recommend to use variable as `initialValue`, instead of literal) | | n/a |
+| options.normalize | Normalize value to form component, [a select-all example](https://codesandbox.io/s/kw4l2vqqmv) | function(value, prevValue, allValues): any | - |
+| options.preserve | Keep the field even if field removed | boolean | false |
+| options.rules | Includes validation rules. Please refer to "Validation Rules" part for details. | object\[] | n/a |
+| options.trigger | When to collect the value of children node | string | 'change' |
+| options.validateFirst | Whether stop validate on first rule of error for this field. | boolean | false |
+| options.validateTrigger | When to validate the value of children node. | string\|string\[] | 'change' |
+| options.valuePropName | Props of children node, for example, the prop of Switch is 'checked'. | string | 'value' |
+
+### Form.Item
+
+Note: If Form.Item has multiple children that had been decorated by `getFieldDecorator` or `v-decorator`, `help` and `required` and `validateStatus` can't be generated automatically.
+
+| Property | Description | Type | Default Value | Version |
+| --- | --- | --- | --- | --- |
+| colon | Used with `label`, whether to display `:` after label text. | boolean | true | |
+| extra | The extra prompt message. It is similar to help. Usage example: to display error message and prompt message at the same time. | string\|slot | | |
+| hasFeedback | Used with `validateStatus`, this option specifies the validation status icon. Recommended to be used only with `Input`. | boolean | false | |
+| help | The prompt message. If not provided, the prompt message will be generated by the validation rule. | string\|slot | | |
+| htmlFor | Set sub label `htmlFor`. | string | | 1.5.0 |
+| label | Label text | string\|slot | | |
+| labelCol | The layout of label. You can set `span` `offset` to something like `{span: 3, offset: 12}` or `sm: {span: 3, offset: 12}` same as with ` ` | [object](/components/grid/#Col) | | |
+| labelAlign | text align of label | 'left' \| 'right' | 'right' | 1.5.0 |
+| required | Whether provided or not, it will be generated by the validation rule. | boolean | false | |
+| validateStatus | The validation status. If not provided, it will be generated by validation rule. options: 'success' 'warning' 'error' 'validating' | string | | |
+| wrapperCol | The layout for input controls, same as `labelCol` | [object](/components/grid/#Col) | | |
+
+### Validation Rules
+
+| Property | Description | Type | Default Value |
+| --- | --- | --- | --- |
+| enum | validate a value from a list of possible values | string | - |
+| len | validate an exact length of a field | number | - |
+| max | validate a max length of a field | number | - |
+| message | validation error message | string | - |
+| min | validate a min length of a field | number | - |
+| pattern | validate from a regular expression | RegExp | - |
+| required | indicates whether field is required | boolean | `false` |
+| transform | transform a value before validation | function(value) => transformedValue:any | - |
+| type | built-in validation type, [available options](https://github.com/yiminghe/async-validator#type) | string | 'string' |
+| validator | custom validate function (Note: [callback must be called](https://github.com/ant-design/ant-design/issues/5155)) | function(rule, value, callback) | - |
+| whitespace | treat required fields that only contain whitespace as errors | boolean | `false` |
+
+See more advanced usage at [async-validator](https://github.com/yiminghe/async-validator).
diff --git a/antdv-demo/docs/form/index.zh-CN.md b/antdv-demo/docs/form/index.zh-CN.md
new file mode 100644
index 000000000..9202559e5
--- /dev/null
+++ b/antdv-demo/docs/form/index.zh-CN.md
@@ -0,0 +1,213 @@
+## API
+
+### Form
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| form | 经 `Form.create()` 包装过的组件会自带 `this.form` 属性,如果使用 template 语法,可以使用 this.\$form.createForm(this, options) | object | 无 | |
+| hideRequiredMark | 隐藏所有表单项的必选标记 | Boolean | false | |
+| labelAlign | label 标签的文本对齐方式 | 'left' \| 'right' | 'right' | 1.5.0 |
+| layout | 表单布局 | 'horizontal'\|'vertical'\|'inline' | 'horizontal' | |
+| labelCol | label 标签布局,同 ` ` 组件,设置 `span` `offset` 值,如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#Col) | | |
+| wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object](/components/grid-cn/#Col) | | |
+| selfUpdate | 自定义字段更新逻辑,说明[见下](/components/form-cn/#selfUpdate),需 1.3.17 版本以上 | boolean | false | 1.3.17 |
+| colon | 配置 Form.Item 的 colon 的默认值 (只有在属性 layout 为 horizontal 时有效) | boolean | true | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ---------------------- | ----------------- |
+| submit | 数据验证成功后回调事件 | Function(e:Event) |
+
+### Form.create(options) \| this.\$form.createForm(this, options)
+
+使用方式如下:
+
+#### jsx 使用方式,使用方式和 React 版 antd 一致
+
+```jsx
+const CustomizedForm = {};
+
+CustomizedForm = Form.create({})(CustomizedForm);
+```
+
+如果需要为包装组件实例维护一个 ref,可以使用`wrappedComponentRef`。
+
+#### 单文件 template 使用方式
+
+```html
+
+
+
+
+```
+
+`options` 的配置项如下。
+
+| 参数 | 说明 | 类型 |
+| --- | --- | --- |
+| props | 仅仅支持 Form.create({})(CustomizedForm)的使用方式,父组件需要映射到表单项上的属性声明(和[vue 组件 props 一致](https://vuejs.org/v2/api/#props)) | {} |
+| mapPropsToFields | 把父组件的属性映射到表单项上(如:把 Redux store 中的值读出),需要对返回值中的表单域数据用 [`Form.createFormField`](#Form.createFormField) 标记,如果使用\$form.createForm 创建收集器,你可以将任何数据映射到 Field 中,不受父组件约束 | (props) => ({ \[fieldName\]: FormField { value } }) |
+| name | 设置表单域内字段 id 的前缀 | - |
+| validateMessages | 默认校验信息,可用于把默认错误信息改为中文等,格式与 [newMessages](https://github.com/yiminghe/async-validator/blob/master/src/messages.js) 返回值一致 | Object { [nested.path]: String } |
+| onFieldsChange | 当 `Form.Item` 子节点的值发生改变时触发,可以把对应的值转存到 Redux store | Function(props, fields) |
+| onValuesChange | 任一表单域的值发生改变时的回调 | (props, values) => void |
+
+经过 `Form.create` 包装的组件将会自带 `this.form` 属性,`this.form` 提供的 API 如下:
+
+> 注意:使用 `getFieldsValue` `getFieldValue` `setFieldsValue` 等时,应确保对应的 field 已经用 `getFieldDecorator` 或 `v-decorator` 注册过了。
+
+| 方法 | 说明 | 类型 |
+| --- | --- | --- |
+| getFieldDecorator | 用于和表单进行双向绑定,单文件 template 可以使用指令`v-decorator`进行绑定,详见下方描述 | |
+| getFieldError | 获取某个输入控件的 Error | Function(name) |
+| getFieldsError | 获取一组输入控件的 Error ,如不传入参数,则获取全部组件的 Error | Function(\[names: string\[]]) |
+| getFieldsValue | 获取一组输入控件的值,如不传入参数,则获取全部组件的值 | Function(\[fieldNames: string\[]]) |
+| getFieldValue | 获取一个输入控件的值 | Function(fieldName: string) |
+| isFieldsTouched | 判断是否任一输入控件经历过 `getFieldDecorator` 或 `v-decorator` 的值收集时机 `options.trigger` | (names?: string\[]) => boolean |
+| isFieldTouched | 判断一个输入控件是否经历过 `getFieldDecorator` 或 `v-decorator` 的值收集时机 `options.trigger` | (name: string) => boolean |
+| isFieldValidating | 判断一个输入控件是否在校验状态 | Function(name) |
+| resetFields | 重置一组输入控件的值(为 `initialValue`)与状态,如不传入参数,则重置所有组件 | Function(\[names: string\[]]) |
+| setFields | 设置一组输入控件的值与错误状态。 | Function({ [fieldName]: { value: any, errors: [Error] } }) |
+| setFieldsValue | 设置一组输入控件的值 | Function({ [fieldName]: value }) |
+| validateFields | 校验并获取一组输入域的值与 Error,若 fieldNames 参数为空,则校验全部组件 | Function(\[fieldNames: string\[]], [options: object], callback: Function(errors, values)) |
+| validateFieldsAndScroll | 与 `validateFields` 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围 | 参考 `validateFields` |
+
+### validateFields/validateFieldsAndScroll
+
+```jsx
+const {
+ form: { validateFields },
+} = this;
+validateFields((errors, values) => {
+ // ...
+});
+validateFields(['field1', 'field2'], (errors, values) => {
+ // ...
+});
+validateFields(['field1', 'field2'], options, (errors, values) => {
+ // ...
+});
+```
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| options.first | 若为 true,则每一表单域的都会在碰到第一个失败了的校验规则后停止校验 | boolean | false |
+| options.firstFields | 指定表单域会在碰到第一个失败了的校验规则后停止校验 | String\[] | \[] |
+| options.force | 对已经校验过的表单域,在 validateTrigger 再次被触发时是否再次校验 | boolean | false |
+| options.scroll | 定义 validateFieldsAndScroll 的滚动行为,详细配置见 [dom-scroll-into-view config](https://github.com/yiminghe/dom-scroll-into-view#function-parameter) | Object | {} |
+
+#### validateFields 的 callback 参数示例
+
+- `errors`:
+
+ ```js
+ {
+ "userName": {
+ "errors": [
+ {
+ "message": "Please input your username!",
+ "field": "userName"
+ }
+ ]
+ },
+ "password": {
+ "errors": [
+ {
+ "message": "Please input your Password!",
+ "field": "password"
+ }
+ ]
+ }
+ }
+ ```
+
+- `values`:
+
+ ```js
+ {
+ "userName": "username",
+ "password": "password",
+ }
+ ```
+
+### Form.createFormField
+
+用于标记 `mapPropsToFields` 返回的表单域数据,[例子](#components-form-demo-global-state)。
+
+### this.form.getFieldDecorator(id, options) 和 v-decorator="[id, options]"
+
+经过 `getFieldDecorator`或`v-decorator` 包装的控件,表单控件会自动添加 `value`(或 `valuePropName` 指定的其他属性) `onChange`(或 `trigger` 指定的其他属性),数据同步将被 Form 接管,这会导致以下结果:
+
+1. 你**不再需要也不应该**用 `onChange` 来做同步,但还是可以继续监听 `onChange` 等事件。
+2. 你不能用控件的 `value` `defaultValue` 等属性来设置表单域的值,默认值可以用 `getFieldDecorator` 或 `v-decorator` 里的 `initialValue`。
+3. 你不应该用 `v-model`,可以使用 `this.form.setFieldsValue` 来动态改变表单值。
+
+#### 特别注意
+
+1. `getFieldDecorator` 和 `v-decorator` 不能用于装饰纯函数组件。
+2. `getFieldDecorator` 和 `v-decorator` 调用不能位于纯函数组件中 。
+
+#### getFieldDecorator(id, options) 和 v-decorator="[id, options]" 参数
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| id | 必填输入控件唯一标志。支持嵌套式的写法。 | string | |
+| options.getValueFromEvent | 可以把 onChange 的参数(如 event)转化为控件的值 | function(..args) | [reference](https://github.com/react-component/form#option-object) |
+| options.initialValue | 子节点的初始值,类型、可选值均由子节点决定(注意:由于内部校验时使用 `===` 判断是否变化,建议使用变量缓存所需设置的值而非直接使用字面量) | | |
+| options.normalize | 转换默认的 value 给控件,[一个选择全部的例子](https://codesandbox.io/s/kw4l2vqqmv) | function(value, prevValue, allValues): any | - |
+| options.preserve | 即便字段不再使用,也保留该字段的值 | boolean | false |
+| options.rules | 校验规则,参考下方文档 | object\[] | |
+| options.trigger | 收集子节点的值的时机 | string | 'change' |
+| options.validateFirst | 当某一规则校验不通过时,是否停止剩下的规则的校验 | boolean | false |
+| options.validateTrigger | 校验子节点值的时机 | string\|string\[] | 'change' |
+| options.valuePropName | 子节点的值的属性,如 Switch 的是 'checked' | string | 'value' |
+
+### Form.Item
+
+注意:一个 Form.Item 建议只放一个被 getFieldDecorator 或 v-decorator 装饰过的 child,当有多个被装饰过的 child 时,`help` `required` `validateStatus` 无法自动生成。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| colon | 配合 label 属性使用,表示是否显示 label 后面的冒号 | boolean | true | |
+| extra | 额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 | string\|slot | | |
+| hasFeedback | 配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用 | boolean | false | |
+| help | 提示信息,如不设置,则会根据校验规则自动生成 | string\|slot | | |
+| htmlFor | 设置子元素 label `htmlFor` 属性 | string | | 1.5.0 |
+| label | label 标签的文本 | string\|slot | | |
+| labelCol | label 标签布局,同 ` ` 组件,设置 `span` `offset` 值,如 `{span: 3, offset: 12}` 或 `sm: {span: 3, offset: 12}` | [object](/components/grid-cn/#Col) | | |
+| labelAlign | 标签文本对齐方式 | 'left' \| 'right' | 'right' | 1.5.0 |
+| required | 是否必填,如不设置,则会根据校验规则自动生成 | boolean | false | |
+| validateStatus | 校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating' | string | | |
+| wrapperCol | 需要为输入控件设置布局样式时,使用该属性,用法同 labelCol | [object](/components/grid-cn/#Col) | | |
+| selfUpdate | 自定义字段更新逻辑,你可以通过 Form 的 selfUpdate 进行统一设置。当和 Form 同时设置时,以 Item 为准。 说明[见下](/components/form-cn/#selfUpdate) 需 1.3.17 版本以上 | boolean | false | 1.3.17 |
+
+### 校验规则
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| enum | 枚举类型 | string | - |
+| len | 字段长度 | number | - |
+| max | 最大长度 | number | - |
+| message | 校验文案 | string | - |
+| min | 最小长度 | number | - |
+| pattern | 正则表达式校验 | RegExp | - |
+| required | 是否必选 | boolean | `false` |
+| transform | 校验前转换字段值 | function(value) => transformedValue:any | - |
+| type | 内建校验类型,[可选项](https://github.com/yiminghe/async-validator#type) | string | 'string' |
+| validator | 自定义校验(注意,[callback 必须被调用](https://github.com/ant-design/ant-design/issues/5155)) | function(rule, value, callback) | - |
+| whitespace | 必选时,空格是否会被视为错误 | boolean | `false` |
+
+更多高级用法可研究 [async-validator](https://github.com/yiminghe/async-validator)。
+
+### selfUpdate
+
+设置 `selfUpdate` 为 `true` 后,`Form` 通过增量方式更新,只更新被修改的字段。大部分场景下,你只需要编写代码即可。而在某些特定场景,例如修改某个字段值后出现新的字段选项、或者纯粹希望表单任意变化都需要进行渲染。你可以通过修改 Form.Item 取消 selfUpdate,或者在 `change` / `onValuesChange` 回调中手动调用 `this.$forceUpdate()` 更新组件。[示例]()
+
+如果你并不精通 Vue,并不建议使用 selfUpdate,如果出现性能问题,可以尝试这把 Form 相关的业务独立到一个单独的组件中,减少组件渲染的消耗。
diff --git a/antdv-demo/docs/grid/demo/basic.md b/antdv-demo/docs/grid/demo/basic.md
new file mode 100644
index 000000000..7fb071349
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/basic.md
@@ -0,0 +1,51 @@
+
+#### 基础栅格
+从堆叠到水平排列。
+使用单一的一组 `Row` 和 `Col` 栅格组件,就可以创建一个基本的栅格系统,所有列(Col)必须放在 `Row` 内。
+
+
+
+#### Basic Grid
+From the stack to the horizontal arrangement.
+You can create a basic grid system by using a single set of `Row` and `Col` grid assembly, all of the columns (Col) must be placed in `Row`.
+
+
+```vue
+
+
+
+
+ col-12
+
+
+ col-12
+
+
+
+
+ col-8
+
+
+ col-8
+
+
+ col-8
+
+
+
+
+ col-6
+
+
+ col-6
+
+
+ col-6
+
+
+ col-6
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/flex-align.md b/antdv-demo/docs/grid/demo/flex-align.md
new file mode 100644
index 000000000..29eb9b437
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/flex-align.md
@@ -0,0 +1,87 @@
+
+#### Flex 对齐
+Flex 子元素垂直对齐。
+
+
+
+#### Flex Alignment
+Flex child elements vertically aligned.
+
+
+```vue
+
+
+
Align Top
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+
Align Center
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+
Align Bottom
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+ col-4
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/flex-fill.md b/antdv-demo/docs/grid/demo/flex-fill.md
new file mode 100644
index 000000000..f4251bc3d
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/flex-fill.md
@@ -0,0 +1,37 @@
+
+#### Flex 填充
+Col 提供 `flex` 属性以支持填充。
+
+
+
+#### Flex fill
+Col provides `flex` prop to support fill rest.
+
+
+```vue
+
+
+
+ Percentage columns
+
+
+ 2 / 5
+ 3 / 5
+
+
+ Fill rest
+
+
+ 100px
+ auto
+
+
+ Raw flex style
+
+
+ 1 1 200px
+ 0 1 300px
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/flex-order.md b/antdv-demo/docs/grid/demo/flex-order.md
new file mode 100644
index 000000000..c0f7f37c7
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/flex-order.md
@@ -0,0 +1,31 @@
+
+#### Flex 排序
+从堆叠到水平排列。
+通过 Flex 布局的 Order 来改变元素的排序。
+
+
+
+#### Flex Order
+To change the element sort by Flex layout order.
+
+
+```vue
+
+
+
+
+ 1 col-order-4
+
+
+ 2 col-order-3
+
+
+ 3 col-order-2
+
+
+ 4 col-order-1
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/flex.md b/antdv-demo/docs/grid/demo/flex.md
new file mode 100644
index 000000000..edabbb11f
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/flex.md
@@ -0,0 +1,96 @@
+
+#### Flex 布局
+Flex 布局基础。
+使用 `row-flex` 定义 `flex` 布局,其子元素根据不同的值 `start`,`center`,`end`,`space-between`,`space-around`,分别定义其在父节点里面的排版方式。
+
+
+
+#### Flex Layout
+Use `row-flex` define `flex` layout, its child elements depending on the value of the `start`,` center`, `end`,` space-between`, `space-around`, which are defined in its parent node layout mode.
+
+
+```vue
+
+
+
sub-element align left
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+
+
sub-element align center
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+
+
sub-element align right
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+
+
sub-element monospaced arrangement
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+
+
sub-element align full
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+ col-4
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/gutter.md b/antdv-demo/docs/grid/demo/gutter.md
new file mode 100644
index 000000000..dda28564f
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/gutter.md
@@ -0,0 +1,54 @@
+
+#### 区块间隔
+栅格常常需要和间隔进行配合,你可以使用 `Row` 的 `gutter` 属性,我们推荐使用 `(16+8n)px` 作为栅格间隔。(n 是自然数)
+如果要支持响应式,可以写成 `{ xs: 8, sm: 16, md: 24, lg: 32 }`。
+如果需要垂直间距,可以写成数组形式 `[水平间距, 垂直间距]` `[16, { xs: 8, sm: 16, md: 24, lg: 32 }]`。
+> 数组形式垂直间距在 `1.5.0` 之后支持。
+
+
+
+#### Grid Gutter
+You can use the `gutter` property of `Row` as grid spacing, we recommend set it to `(16 + 8n) px`. (`n` stands for natural number.)
+You can set it to a object like `{ xs: 8, sm: 16, md: 24, lg: 32 }` for responsive design.
+You can use a array to set vertical spacing, `[horizontal, vertical]` `[16, { xs: 8, sm: 16, md: 24, lg: 32 }]`.
+> vertical gutter was supported after `1.5.0`.
+
+
+```vue
+
+
+
+
+
+ col-6
+
+
+
+
+ col-6
+
+
+
+
+ col-6
+
+
+
+
+ col-6
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/index.vue b/antdv-demo/docs/grid/demo/index.vue
new file mode 100644
index 000000000..1395850f7
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/index.vue
@@ -0,0 +1,120 @@
+
diff --git a/antdv-demo/docs/grid/demo/offset.md b/antdv-demo/docs/grid/demo/offset.md
new file mode 100644
index 000000000..cbd887619
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/offset.md
@@ -0,0 +1,38 @@
+
+#### 左右偏移
+列偏移。
+使用 `offset` 可以将列向右侧偏。例如,`:offset="4"` 将元素向右侧偏移了 4 个列(column)的宽度。
+
+
+
+#### a-column offset
+`Offset` can set the column to the right side. For example, using `offset = {4}` can set the element shifted to the right four columns width.
+
+
+```vue
+
+
+
+
+ col-8
+
+
+ col-8
+
+
+
+
+ col-6 col-offset-6
+
+
+ col-6 col-offset-6
+
+
+
+
+ col-12 col-offset-6
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/playfround.md b/antdv-demo/docs/grid/demo/playfround.md
new file mode 100644
index 000000000..cb8344f82
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/playfround.md
@@ -0,0 +1,125 @@
+
+#### 栅格配置器
+可以简单配置几种等分栅格和间距。
+
+
+
+#### Playground
+A simple playground for column count and gutter.
+
+
+```vue
+
+
+
+
Horizontal Gutter (px):
+
+
Vertical Gutter (px):
+
+
Column Count:
+
+
+
+
+ Column
+
+
+
+
+ Column
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/responsive-more.md b/antdv-demo/docs/grid/demo/responsive-more.md
new file mode 100644
index 000000000..d4878ecd4
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/responsive-more.md
@@ -0,0 +1,27 @@
+
+#### 其他属性的响应式
+`span` `pull` `push` `offset` `order` 属性可以通过内嵌到 `xs` `sm` `md` `lg` `xl` `xxl` 属性中来使用。
+其中 `:xs="6"` 相当于 `:xs="{ span: 6 }"`。
+
+
+
+#### More responsive
+`span` `pull` `push` `offset` `order` property can be embedded into `xs` `sm` `md` `lg` `xl` properties to use,
+where `:xs="6"` is equivalent to `:xs="{span: 6}"`.
+
+
+```vue
+
+
+
+ Col
+
+
+ Col
+
+
+ Col
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/responsive.md b/antdv-demo/docs/grid/demo/responsive.md
new file mode 100644
index 000000000..6e59303f8
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/responsive.md
@@ -0,0 +1,25 @@
+
+#### 响应式布局
+参照 Bootstrap 的 [响应式设计](http://getbootstrap.com/css/#grid-media-queries),预设六个响应尺寸:`xs` `sm` `md` `lg` `xl` `xxl`。
+
+
+
+#### 响应式布局
+Referring to the Bootstrap [responsive design] (http://getbootstrap.com/css/#grid-media-queries), here preset six dimensions: `xs` `sm` `md` `lg` `xl`.
+
+
+```vue
+
+
+
+ Col
+
+
+ Col
+
+
+ Col
+
+
+
+```
diff --git a/antdv-demo/docs/grid/demo/sort.md b/antdv-demo/docs/grid/demo/sort.md
new file mode 100644
index 000000000..c877eb86f
--- /dev/null
+++ b/antdv-demo/docs/grid/demo/sort.md
@@ -0,0 +1,25 @@
+
+#### 栅格排序
+列排序。
+通过使用 `push` 和 `pull` 类就可以很容易的改变列(column)的顺序。
+
+
+
+#### Grid sort
+By using `push` and` pull` class you can easily change column order.
+
+
+```vue
+
+
+
+
+ col-18 col-push-6
+
+
+ col-6 col-pull-18
+
+
+
+
+```
diff --git a/antdv-demo/docs/grid/index.en-US.md b/antdv-demo/docs/grid/index.en-US.md
new file mode 100644
index 000000000..5e29c8765
--- /dev/null
+++ b/antdv-demo/docs/grid/index.en-US.md
@@ -0,0 +1,35 @@
+## API
+
+### Row
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| align | the vertical alignment of the flex layout: `top` `middle` `bottom` | string | `top` |
+| gutter | spacing between grids, could be a number or a object like `{ xs: 8, sm: 16, md: 24}`. or you can use array to make horizontal and vertical spacing work at the same time `[horizontal, vertical]` (supported after `1.5.0`) | number/object/array | 0 |
+| justify | horizontal arrangement of the flex layout: `start` `end` `center` `space-around` `space-between` | string | `start` |
+| type | layout mode, optional `flex`, [browser support](http://caniuse.com/#search=flex) | string | |
+
+### Col
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| flex | the layout fill of flex | string\|number | - |
+| offset | the number of cells to offset Col from the left | number | 0 |
+| order | raster order, used in `flex` layout mode | number | 0 |
+| pull | the number of cells that raster is moved to the left | number | 0 |
+| push | the number of cells that raster is moved to the right | number | 0 |
+| span | raster number of cells to occupy, 0 corresponds to `display: none` | number | none |
+| xs | `<576px` and also default setting, could be a `span` value or an object containing above props | number\|object | - |
+| sm | `≥576px`, could be a `span` value or an object containing above props | number\|object | - |
+| md | `≥768px`, could be a `span` value or an object containing above props | number\|object | - |
+| lg | `≥992px`, could be a `span` value or an object containing above props | number\|object | - |
+| xl | `≥1200px`, could be a `span` value or an object containing above props | number\|object | - |
+| xxl | `≥1600px`, could be a `span` value or an object containing above props | number\|object | - |
+
+The breakpoints of responsive grid follow [BootStrap 4 media queries rules](https://getbootstrap.com/docs/4.0/layout/overview/#responsive-breakpoints)(not including `occasionally part`).
+
+## FAQ
+
+### How to support IE9 when using responsive?
+
+You can use [matchMedia polyfill](https://github.com/paulirish/matchMedia.js/) to handle this.
diff --git a/antdv-demo/docs/grid/index.zh-CN.md b/antdv-demo/docs/grid/index.zh-CN.md
new file mode 100644
index 000000000..bb2481eec
--- /dev/null
+++ b/antdv-demo/docs/grid/index.zh-CN.md
@@ -0,0 +1,35 @@
+## API
+
+### Row
+
+| 成员 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| align | flex 布局下的垂直对齐方式:`top` `middle` `bottom` | string | `top` |
+| gutter | 栅格间隔,可以写成像素值或支持响应式的对象写法来设置水平间隔 `{ xs: 8, sm: 16, md: 24}`。或者使用数组形式同时设置 `[水平间距, 垂直间距]`(`1.5.0 后支持`)。 | number/object/array | 0 |
+| justify | flex 布局下的水平排列方式:`start` `end` `center` `space-around` `space-between` | string | `start` |
+| type | 布局模式,可选 `flex`,[现代浏览器](http://caniuse.com/#search=flex) 下有效 | string | |
+
+### Col
+
+| 成员 | 说明 | 类型 | 默认值 |
+| ------ | -------------------------------------------------------- | -------------- | ------ |
+| flex | flex 布局填充 | string\|number | - |
+| offset | 栅格左侧的间隔格数,间隔内不可以有栅格 | number | 0 |
+| order | 栅格顺序,`flex` 布局模式下有效 | number | 0 |
+| pull | 栅格向左移动格数 | number | 0 |
+| push | 栅格向右移动格数 | number | 0 |
+| span | 栅格占位格数,为 0 时相当于 `display: none` | number | - |
+| xs | `<576px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+| sm | `≥576px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+| md | `≥768px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+| lg | `≥992px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+| xl | `≥1200px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+| xxl | `≥1600px` 响应式栅格,可为栅格数或一个包含其他属性的对象 | number\|object | - |
+
+响应式栅格的断点扩展自 [BootStrap 4 的规则](https://getbootstrap.com/docs/4.0/layout/overview/#responsive-breakpoints)(不包含链接里 `occasionally` 的部分)。
+
+## FAQ
+
+### IE9 响应式不工作怎么办?
+
+可以引入 [matchMedia polyfill](https://github.com/paulirish/matchMedia.js/) 添加支持。
diff --git a/antdv-demo/docs/icon/demo/basic.md b/antdv-demo/docs/icon/demo/basic.md
new file mode 100644
index 000000000..37a9bd6b1
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/basic.md
@@ -0,0 +1,28 @@
+
+#### 基本用法
+使用 ` ` 标签声明组件,指定图标对应的 `type` 属性。可以通过 `theme` 属性来设置不同的主题风格的图标,也可以通过设置 `spin` 属性来实现动画旋转效果。
+
+
+
+#### Basic
+Use tag ` ` to create an icon and set its type in the `type` prop. Specific the `spin` property to show spinning animation and the `theme` property to switch different themes.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/icon/demo/custom.md b/antdv-demo/docs/icon/demo/custom.md
new file mode 100644
index 000000000..4f84cfe13
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/custom.md
@@ -0,0 +1,75 @@
+
+#### 自定义图标
+利用 `Icon` 组件封装一个可复用的自定义图标。可以通过 `component` 属性传入一个组件来渲染最终的图标,以满足特定的需求。
+
+
+
+#### Custom Icon
+Create a reusable Vue component by using ` `. The property `component` takes a Vue component that renders to `svg` element.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/icon/demo/iconfont.md b/antdv-demo/docs/icon/demo/iconfont.md
new file mode 100644
index 000000000..bdbc64293
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/iconfont.md
@@ -0,0 +1,37 @@
+
+#### 使用 iconfont.cn
+对于使用 [iconfont.cn](http://iconfont.cn/) 的用户,通过设置 `createFromIconfontCN` 方法参数对象中的 `scriptUrl` 字段, 即可轻松地使用已有项目中的图标。
+
+
+
+#### Use iconfont.cn
+If you are using [iconfont.cn](http://iconfont.cn/), you can use the icons in your project gracefully.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/icon/demo/index.vue b/antdv-demo/docs/icon/demo/index.vue
new file mode 100644
index 000000000..0c8614410
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/index.vue
@@ -0,0 +1,45 @@
+
diff --git a/antdv-demo/docs/icon/demo/old-icons.md b/antdv-demo/docs/icon/demo/old-icons.md
new file mode 100644
index 000000000..f3503ebe4
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/old-icons.md
@@ -0,0 +1,316 @@
+
+#### 老版图标
+测试 1.2.0 之前的老图标。
+
+
+
+#### Test old icons
+Test old icons before `1.2.0`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/icon/demo/two-tone.md b/antdv-demo/docs/icon/demo/two-tone.md
new file mode 100644
index 000000000..15dee53de
--- /dev/null
+++ b/antdv-demo/docs/icon/demo/two-tone.md
@@ -0,0 +1,25 @@
+
+#### 多色图标
+可以通过设置 `theme` 属性为 `twoTone` 来渲染双色图标,并且可以设置主题色。
+
+
+
+#### Two-tone icon and colorful icon
+Specify the property `theme` to `twoTone` to render two-tone icons. You can also set the primary color.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/icon/index.en-US.md b/antdv-demo/docs/icon/index.en-US.md
new file mode 100644
index 000000000..c6619c3bb
--- /dev/null
+++ b/antdv-demo/docs/icon/index.en-US.md
@@ -0,0 +1,124 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| type | Type of the ant design icon | string | - |
+| style | Style properties of icon, like `fontSize` and `color` | CSSProperties | - |
+| theme | Theme variant of the icon | 'filled' \| 'outlined' \| 'twoTone' | 'outlined' |
+| spin | Rotate icon with animation | boolean | false |
+| rotate | Rotate degrees (added in 1.4.0, not working in IE9) | number | - |
+| component | The component used for the root node. This will override the **`type`** property. | ComponentType | - |
+| twoToneColor | Only support the two-tone icon. Specific the primary color. | string (hex color) | - |
+
+> Note: icon rendering priority of the Icon component is component > children > type. When props is passed, the higher priority item will work, and the lower priority item will be invalid.
+
+### SVG icons
+
+We introduced SVG icons in version `1.2.0`, replacing font icons. This has the following benefits:
+
+- Complete offline usage of icons, without dependency on a CDN-hosted font icon file (No more empty square during downloading and no need to deploy icon font files locally either!)
+- Much more display accuracy on lower-resolution screens
+- The ability to choose icon color
+- No need to change built-in icons with overriding styles by providing more props in component
+
+More discussion of SVG icon reference at [#10353](https://github.com/ant-design/ant-design/issues/10353).
+
+> ⚠️ Given the extra bundle size caused by all SVG icons imported in 1.2.0, we will provide a new API to allow developers to import icons as needed, you can track [#12011](https://github.com/ant-design/ant-design/issues/12011) for updates.
+>
+> While you wait, you can use [webpack plugin](https://github.com/Beven91/webpack-ant-icon-loader) from the community to chunk the icon file.
+
+The properties `theme`, `component` and `twoToneColor` were added in `1.2.0`. The best practice is to pass the property `theme` to every ` ` component.
+
+```html
+
+```
+
+All the icons will render to ``. You can still set `style` and `class` for size and color of icons.
+
+```html
+
+```
+
+### Set TwoTone Color
+
+When using the two-tone icons, you can use the static methods `Icon.getTwoToneColor()` and `Icon.setTwoToneColor(colorString)` to spicify the primary color.
+
+```jsx
+import { Icon } from 'ant-design-vue';
+
+Icon.setTwoToneColor('#eb2f96');
+Icon.getTwoToneColor(); // #eb2f96
+```
+
+### Custom Font Icon
+
+We added a `createFromIconfontCN` function to help developer using their own icons deployed at [iconfont.cn](http://iconfont.cn/) in a convenient way.
+
+> This method is specified for [iconfont.cn](http://iconfont.cn/).
+
+```js
+const MyIcon = Icon.createFromIconfontCN({
+ scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // generated by iconfont.cn
+});
+
+new Vue({
+ el: '#app',
+ components: {
+ 'my-icon': MyIcon,
+ },
+ template: ' ',
+});
+```
+
+It create a component that uses SVG sprites in essence.
+
+The following options are available:
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| scriptUrl | The URL generated by [iconfont.cn](http://iconfont.cn/) project. | string | - |
+| extraCommonProps | Define extra properties to the component | `{ class, attrs, props, on, style }` | {} |
+
+The property `scriptUrl` should be set to import the SVG sprite symbols.
+
+See [iconfont.cn documents](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) to learn about how to generate `scriptUrl`.
+
+### Custom SVG Icon
+
+You can import SVG icon as an vue component by using `vue cli 3` and [`vue-svg-loader`](https://www.npmjs.com/package/vue-svg-loader). `vue-svg-loader`'s `options` [reference](https://github.com/visualfanatic/vue-svg-loader).
+
+```js
+// vue.config.js
+module.exports = {
+ chainWebpack: config => {
+ const svgRule = config.module.rule('svg');
+
+ svgRule.uses.clear();
+
+ svgRule.use('vue-svg-loader').loader('vue-svg-loader');
+ },
+};
+```
+
+```jsx
+import { Icon } from 'ant-design-vue';
+import MessageSvg from 'path/to/message.svg'; // path to your '*.svg' file.
+
+new Vue({
+ el: '#app',
+ components: {
+ 'my-icon': MyIcon,
+ },
+ template: ' ',
+});
+```
+
+The following properties are available for the component:
+
+| Property | Description | Type | Default |
+| -------- | ------------------------------------------------ | ---------------- | -------------- |
+| width | The width of the `svg` element | string \| number | '1em' |
+| height | The height of the `svg` element | string \| number | '1em' |
+| fill | Define the color used to paint the `svg` element | string | 'currentColor' |
+| class | The computed class name of the `svg` element | string | - |
+| style | The computed style of the `svg` element | CSSProperties | - |
diff --git a/antdv-demo/docs/icon/index.zh-CN.md b/antdv-demo/docs/icon/index.zh-CN.md
new file mode 100644
index 000000000..096637e38
--- /dev/null
+++ b/antdv-demo/docs/icon/index.zh-CN.md
@@ -0,0 +1,120 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| type | 图标类型。遵循图标的命名规范 | string | - |
+| style | 设置图标的样式,例如 `fontSize` 和 `color` | CSSProperties | - |
+| theme | 图标主题风格。可选实心、描线、双色等主题风格,适用于官方图标 | 'filled' \| 'outlined' \| 'twoTone' | 'outlined' |
+| spin | 是否有旋转动画 | boolean | false |
+| rotate | 图标旋转角度(1.4.0 后新增,IE9 无效) | number | - |
+| component | 控制如何渲染图标,通常是一个渲染根标签为 `` 的 `Vue` 组件,**会使 `type` 属性失效** | ComponentType | - |
+| twoToneColor | 仅适用双色图标。设置双色图标的主要颜色 | string (十六进制颜色) | - |
+
+> 注意:Icon 组件中图标渲染的优先级为 component > children > type, 传入 props 时,优先级高的直接生效,优先级低的则失效。
+
+### SVG 图标
+
+在 `1.2.0` 之后,我们使用了 SVG 图标替换了原先的 font 图标,从而带来了以下优势:
+
+- 完全离线化使用,不需要从 CDN 下载字体文件,图标不会因为网络问题呈现方块,也无需字体文件本地部署。
+- 在低端设备上 SVG 有更好的清晰度。
+- 支持多色图标。
+- 对于内建图标的更换可以提供更多 API,而不需要进行样式覆盖。
+
+更多讨论可参考:[#10353](https://github.com/ant-design/ant-design/issues/10353)。
+
+> ⚠️ 1.2.0 之后我们全量引入了所有图标,导致 ant-design-vue 默认的包体积有一定增加,我们会在不远的未来增加新的 API 来实现图标的按需使用,更多相关讨论可关注:[#12011](https://github.com/ant-design/ant-design/issues/12011)。在此之前,你可以通过来自社区同学的 [webpack 插件](https://github.com/Beven91/webpack-ant-icon-loader)将图标文件拆分。
+
+其中 `theme`, `component`, `twoToneColor` 是 `1.2.x` 版本新增加的属性。最佳实践是给使用的 ` ` 组件传入属性 `theme` 以明确图标的主题风格。例如:
+
+```html
+
+```
+
+所有的图标都会以 `` 标签渲染,可以使用 `style` 和 `class` 设置图标的大小和单色图标的颜色。例如:
+
+```html
+
+```
+
+### 双色图标主色
+
+对于双色图标,可以通过使用 `Icon.getTwoToneColor()` 和 `Icon.setTwoToneColor(colorString)` 来全局设置图标主色。
+
+```jsx
+import { Icon } from 'ant-design-vue';
+
+Icon.setTwoToneColor('#eb2f96');
+Icon.getTwoToneColor(); // #eb2f96
+```
+
+### 自定义 font 图标
+
+在 `1.2.0` 之后,我们提供了一个 `createFromIconfontCN` 方法,方便开发者调用在 [iconfont.cn](http://iconfont.cn/) 上自行管理的图标。
+
+```js
+const MyIcon = Icon.createFromIconfontCN({
+ scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js', // 在 iconfont.cn 上生成
+});
+new Vue({
+ el: '#app',
+ components: {
+ 'my-icon': MyIcon,
+ },
+ template: ' ',
+});
+```
+
+其本质上是创建了一个使用 `` 标签来渲染图标的组件。
+
+`options` 的配置项如下:
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| scriptUrl | [iconfont.cn](http://iconfont.cn/) 项目在线生成的 `js` 地址 | string | - |
+| extraCommonProps | 给所有的 `svg` 图标 ` ` 组件设置额外的属性 | `{ class, attrs, props, on, style }` | {} |
+
+在 `scriptUrl` 都设置有效的情况下,组件在渲染前会自动引入 [iconfont.cn](http://iconfont.cn/) 项目中的图标符号集,无需手动引入。
+
+见 [iconfont.cn 使用帮助](http://iconfont.cn/help/detail?spm=a313x.7781069.1998910419.15&helptype=code) 查看如何生成 `js` 地址。
+
+### 自定义 SVG 图标
+
+如果使用 `vue cli 3`,可以通过配置 [vue-svg-loader](https://www.npmjs.com/package/vue-svg-loader) 来将 `svg` 图标作为 `Vue` 组件导入。更多`vue-svg-loader` 的使用方式请参阅 [文档](https://github.com/visualfanatic/vue-svg-loader)。
+
+```js
+// vue.config.js
+module.exports = {
+ chainWebpack: config => {
+ const svgRule = config.module.rule('svg');
+
+ svgRule.uses.clear();
+
+ svgRule.use('vue-svg-loader').loader('vue-svg-loader');
+ },
+};
+```
+
+```jsx
+import MessageSvg from 'path/to/message.svg'; // path to your '*.svg' file.
+
+new Vue({
+ el: '#app',
+ data() {
+ return {
+ MessageSvg,
+ };
+ },
+ template: ' ',
+});
+```
+
+`Icon` 中的 `component` 组件的接受的属性如下:
+
+| 字段 | 说明 | 类型 | 只读值 |
+| ------ | ----------------------- | ---------------- | -------------- |
+| width | `svg` 元素宽度 | string \| number | '1em' |
+| height | `svg` 元素高度 | string \| number | '1em' |
+| fill | `svg` 元素填充的颜色 | string | 'currentColor' |
+| class | 计算后的 `svg` 类名 | string | - |
+| style | 计算后的 `svg` 元素样式 | CSSProperties | - |
diff --git a/antdv-demo/docs/input-number/demo/basic.md b/antdv-demo/docs/input-number/demo/basic.md
new file mode 100644
index 000000000..fb47cdc9e
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/basic.md
@@ -0,0 +1,32 @@
+
+#### 基本
+数字输入框。
+
+
+
+#### Basic
+Numeric-only input box.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input-number/demo/digit.md b/antdv-demo/docs/input-number/demo/digit.md
new file mode 100644
index 000000000..b08fa11ad
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/digit.md
@@ -0,0 +1,24 @@
+
+#### 小数
+和原生的数字输入框一样,value 的精度由 step 的小数位数决定。
+
+
+
+#### Decimals
+A numeric-only input box whose values can be increased or decreased using a decimal step. The number of decimals (also known as precision) is determined by the step prop.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input-number/demo/disabled.md b/antdv-demo/docs/input-number/demo/disabled.md
new file mode 100644
index 000000000..ee99e36ec
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/disabled.md
@@ -0,0 +1,36 @@
+
+#### 不可用
+点击按钮切换可用状态。
+
+
+
+#### Disabled
+Click the button to toggle between available and disabled states.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input-number/demo/formatter.md b/antdv-demo/docs/input-number/demo/formatter.md
new file mode 100644
index 000000000..beae10941
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/formatter.md
@@ -0,0 +1,39 @@
+
+#### 格式化展示
+通过 `formatter` 格式化数字,以展示具有具体含义的数据,往往需要配合 `parser` 一起使用。
+
+
+
+#### Formatter
+Display value within it's situation with `formatter`, and we usually use `parser` at the same time.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input-number/demo/index.vue b/antdv-demo/docs/input-number/demo/index.vue
new file mode 100644
index 000000000..78b16a1c5
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/index.vue
@@ -0,0 +1,49 @@
+
diff --git a/antdv-demo/docs/input-number/demo/size.md b/antdv-demo/docs/input-number/demo/size.md
new file mode 100644
index 000000000..8364f4404
--- /dev/null
+++ b/antdv-demo/docs/input-number/demo/size.md
@@ -0,0 +1,33 @@
+
+#### 三种大小
+三种大小的数字输入框,当 size 分别为 `large` 和 `small` 时,输入框高度为 `40px` 和 `24px` ,默认高度为 `32px`。
+
+
+
+#### Sizes
+There are three sizes available to a numeric input box. By default, the size is `32px`. The two additional sizes are `large` and `small` which means `40px` and `24px`, respectively.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input-number/index.en-US.md b/antdv-demo/docs/input-number/index.en-US.md
new file mode 100644
index 000000000..5e9609a58
--- /dev/null
+++ b/antdv-demo/docs/input-number/index.en-US.md
@@ -0,0 +1,30 @@
+## API
+
+| property | description | type | default |
+| --- | --- | --- | --- |
+| autoFocus | get focus when component mounted | boolean | false |
+| defaultValue | initial value | number | |
+| disabled | disable the input | boolean | false |
+| formatter | Specifies the format of the value presented | function(value: number \| string): string | - |
+| max | max value | number | Infinity |
+| min | min value | number | -Infinity |
+| parser | Specifies the value extracted from formatter | function( string): number | - |
+| precision | precision of input value | number | - |
+| decimalSeparator | decimal separator | string | - |
+| size | height of input box | string | - |
+| step | The number to which the current value is increased or decreased. It can be an integer or decimal. | number\|string | 1 |
+| value(v-model) | current value | number | |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | The callback triggered when the value is changed. | function(value: number \| string) | | |
+| pressEnter | The callback function that is triggered when Enter key is pressed. | function(e) | | 1.5.0 |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/input-number/index.zh-CN.md b/antdv-demo/docs/input-number/index.zh-CN.md
new file mode 100644
index 000000000..a6bd5d3c9
--- /dev/null
+++ b/antdv-demo/docs/input-number/index.zh-CN.md
@@ -0,0 +1,32 @@
+## API
+
+属性如下
+
+| 成员 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| autoFocus | 自动获取焦点 | boolean | false |
+| defaultValue | 初始值 | number | |
+| disabled | 禁用 | boolean | false |
+| formatter | 指定输入框展示值的格式 | function(value: number \| string): string | - |
+| max | 最大值 | number | Infinity |
+| min | 最小值 | number | -Infinity |
+| parser | 指定从 formatter 里转换回数字的方式,和 formatter 搭配使用 | function( string): number | - |
+| precision | 数值精度 | number | - |
+| decimalSeparator | 小数点 | string | - |
+| size | 输入框大小 | string | 无 |
+| step | 每次改变步数,可以为小数 | number\|string | 1 |
+| value(v-model) | 当前值 | number | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| ---------- | -------------- | --------------------------------- | ---- |
+| change | 变化回调 | Function(value: number \| string) | |
+| pressEnter | 按下回车的回调 | function(e) | |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/input/demo/addon.md b/antdv-demo/docs/input/demo/addon.md
new file mode 100644
index 000000000..003bb35b2
--- /dev/null
+++ b/antdv-demo/docs/input/demo/addon.md
@@ -0,0 +1,50 @@
+
+#### 前置/后置标签
+用于配置一些固定组合。
+
+
+
+#### Pre / Post tab
+Using pre & post tabs example.
+
+
+```vue
+
+
+
+
+
+
+
+ Http://
+
+
+ Https://
+
+
+
+
+ .com
+
+
+ .jp
+
+
+ .cn
+
+
+ .org
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/allowClear.md b/antdv-demo/docs/input/demo/allowClear.md
new file mode 100644
index 000000000..7437ce225
--- /dev/null
+++ b/antdv-demo/docs/input/demo/allowClear.md
@@ -0,0 +1,29 @@
+
+#### 带移除图标
+带移除图标的输入框,点击图标删除所有内容。
+
+
+
+#### With clear icon
+Input type of password.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/autosize-textarea.md b/antdv-demo/docs/input/demo/autosize-textarea.md
new file mode 100644
index 000000000..865c30f9c
--- /dev/null
+++ b/antdv-demo/docs/input/demo/autosize-textarea.md
@@ -0,0 +1,39 @@
+
+#### 适应文本高度的文本域
+属性适用于 `textarea` 节点,并且只有高度会自动变化。另外 `autoSize` 可以设定为一个对象,指定最小行数和最大行数。
+> `1.5.0` 后 `autosize` 被废弃,请使用 `autoSize`。
+
+
+
+#### Autosizing the height to fit the content
+`autoSize` prop for a `textarea` type of `Input` makes the height to automatically adjust based on the content. An options object can be provided to `autoSize` to specify the minimum and maximum number of lines the textarea will automatically adjust.
+> `autosize` is deprecated after `1.5.0`, please use `autoSize`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/basic.md b/antdv-demo/docs/input/demo/basic.md
new file mode 100644
index 000000000..4a3f66407
--- /dev/null
+++ b/antdv-demo/docs/input/demo/basic.md
@@ -0,0 +1,15 @@
+
+#### 基本使用
+基本使用。
+
+
+
+#### Basic usage
+Basic usage example.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/group.md b/antdv-demo/docs/input/demo/group.md
new file mode 100644
index 000000000..ff0390bdc
--- /dev/null
+++ b/antdv-demo/docs/input/demo/group.md
@@ -0,0 +1,180 @@
+
+#### 输入框组合
+输入框的组合展现。
+注意:使用 `compact` 模式时,不需要通过 `Col` 来控制宽度。
+
+
+
+#### Input Group
+Input.Group example
+Note: You don't need `Col` to control the width in the `compact` mode.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zhejiang
+
+
+ Jiangsu
+
+
+
+
+
+
+
+
+ Option1
+
+
+ Option2
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Option1-1
+
+
+ Option1-2
+
+
+
+
+ Option2-1
+
+
+ Option2-2
+
+
+
+
+
+
+
+ Between
+
+
+ Except
+
+
+
+
+
+
+
+
+
+
+ Sign Up
+
+
+ Sign In
+
+
+
+
+
+
+
+
+ Home
+
+
+ Company
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/index.vue b/antdv-demo/docs/input/demo/index.vue
new file mode 100644
index 000000000..42e7b5695
--- /dev/null
+++ b/antdv-demo/docs/input/demo/index.vue
@@ -0,0 +1,63 @@
+
+
diff --git a/antdv-demo/docs/input/demo/password-input.md b/antdv-demo/docs/input/demo/password-input.md
new file mode 100644
index 000000000..50c7e9f11
--- /dev/null
+++ b/antdv-demo/docs/input/demo/password-input.md
@@ -0,0 +1,15 @@
+
+#### 密码框
+密码框,版本 1.4.0 中新增。
+
+
+
+#### Password box
+Input type of password and added in 1.4.0.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/presuffix.md b/antdv-demo/docs/input/demo/presuffix.md
new file mode 100644
index 000000000..a53f7d8e8
--- /dev/null
+++ b/antdv-demo/docs/input/demo/presuffix.md
@@ -0,0 +1,41 @@
+
+#### 前缀和后缀
+在输入框上添加前缀或后缀图标。
+
+
+
+#### prefix and suffix
+Add prefix or suffix icons inside input.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/search-input-loading.md b/antdv-demo/docs/input/demo/search-input-loading.md
new file mode 100644
index 000000000..f766055b1
--- /dev/null
+++ b/antdv-demo/docs/input/demo/search-input-loading.md
@@ -0,0 +1,20 @@
+
+#### 搜索框 loading
+用于 `onSearch` 的时候展示 `loading`。
+
+
+
+#### Search box with loading
+Search loading when onSearch.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/search-input.md b/antdv-demo/docs/input/demo/search-input.md
new file mode 100644
index 000000000..1e2232916
--- /dev/null
+++ b/antdv-demo/docs/input/demo/search-input.md
@@ -0,0 +1,42 @@
+
+#### 搜索框
+带有搜索按钮的输入框。
+
+
+
+#### Search box
+Example of creating a search box by grouping a standard input with a search button.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+ Custom
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/size.md b/antdv-demo/docs/input/demo/size.md
new file mode 100644
index 000000000..82b578d19
--- /dev/null
+++ b/antdv-demo/docs/input/demo/size.md
@@ -0,0 +1,25 @@
+
+#### 三种大小
+我们为 ` ` 输入框定义了三种尺寸(大、默认、小),高度分别为 `40px`、`32px` 和 `24px`。
+
+
+
+#### Three sizes of Input
+There are three sizes of an Input box: `large` (40px)、`default` (32px) and `small` (24px).
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/textarea-resize.md b/antdv-demo/docs/input/demo/textarea-resize.md
new file mode 100644
index 000000000..c3b46584c
--- /dev/null
+++ b/antdv-demo/docs/input/demo/textarea-resize.md
@@ -0,0 +1,29 @@
+
+#### 文本域
+用于多行输入。
+
+
+
+#### TextArea
+For multi-line input.
+
+
+```vue
+
+
+
(this.autoResize = !autoResize)">
+ Auto Resize: {{ String(autoResize) }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/textarea.md b/antdv-demo/docs/input/demo/textarea.md
new file mode 100644
index 000000000..28fea035d
--- /dev/null
+++ b/antdv-demo/docs/input/demo/textarea.md
@@ -0,0 +1,15 @@
+
+#### 文本域
+用于多行输入。
+
+
+
+#### TextArea
+For multi-line input.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/input/demo/tooltip.md b/antdv-demo/docs/input/demo/tooltip.md
new file mode 100644
index 000000000..c6f2f95b5
--- /dev/null
+++ b/antdv-demo/docs/input/demo/tooltip.md
@@ -0,0 +1,85 @@
+
+#### 输入时格式化展示
+结合 [Tooltip](/components/tooltip-cn/) 组件,实现一个数值输入框,方便内容超长时的全量展现。
+
+
+
+#### Format Tooltip Input
+You can use the Input in conjunction with [Tooltip](/components/tooltip/) component to create a Numeric Input, which can provide a good experience for extra-long content display.
+
+
+```vue
+
+
+
+ {{ value !== '-' ? formatNumber(value) : '-' }}
+
+
+ Input a number
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/input/index.en-US.md b/antdv-demo/docs/input/index.en-US.md
new file mode 100644
index 000000000..d2f6f476d
--- /dev/null
+++ b/antdv-demo/docs/input/index.en-US.md
@@ -0,0 +1,79 @@
+## API
+
+### Input
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| addonAfter | The label text displayed after (on the right side of) the input field. | string\|slot | | |
+| addonBefore | The label text displayed before (on the left side of) the input field. | string\|slot | | |
+| defaultValue | The initial input content | string | | |
+| disabled | Whether the input is disabled. | boolean | false | |
+| id | The ID for input | string | | |
+| maxLength | max length | number | | 1.5.0 |
+| prefix | The prefix icon for the Input. | string\|slot | | |
+| size | The size of the input box. Note: in the context of a form, the `large` size is used. Available: `large` `default` `small` | string | `default` | |
+| suffix | The suffix icon for the Input. | string\|slot | | |
+| type | The type of input, see: [MDN](https://developer.mozilla.org/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types)(use `Input.TextArea` instead of `type="textarea"`) | string | `text` | |
+| value(v-model) | The input content value | string | | |
+| allowClear | allow to remove input content with clear icon | boolean | | |
+
+### Input Events
+
+| Events Name | Description | Arguments |
+| ----------- | ------------------------------------------------------------------ | ----------- |
+| change | callback when user input | function(e) | |
+| pressEnter | The callback function that is triggered when Enter key is pressed. | function(e) |
+
+> When `Input` is used in a `Form.Item` context, if the `Form.Item` has the `id` and `options` props defined then `value`, `defaultValue`, and `id` props of `Input` are automatically set.
+
+### Input.TextArea
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| autosize | Height autosize feature, can be set to `true|false` or an object `{ minRows: 2, maxRows: 6 }` | boolean\|object | false | |
+| defaultValue | The initial input content | string | | |
+| value(v-model) | The input content value | string | | |
+| allowClear | allow to remove input content with clear icon | boolean | | 1.5.0 |
+
+### Input.TextArea Events
+
+| Events Name | Description | Arguments |
+| ----------- | ------------------------------------------------------------------ | ----------- |
+| pressEnter | The callback function that is triggered when Enter key is pressed. | function(e) |
+
+The rest of the props of `Input.TextArea` are the same as the original [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea).
+
+#### Input.Search
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| enterButton | to show an enter button after input. This prop is conflict with addon. | boolean\|slot | false |
+
+### Input.Search Events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| search | The callback function that is triggered when you click on the search-icon or press Enter key. | function(value, event) | |
+| loading | Search box with loading. | boolean | | |
+
+Supports all props of `Input`.
+
+#### Input.Group
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| compact | Whether use compact style | boolean | false |
+| size | The size of `Input.Group` specifies the size of the included `Input` fields. Available: `large` `default` `small` | string | `default` |
+
+```html
+
+
+
+
+```
+
+#### Input.Password (Added in 1.14.0)
+
+| Property | Description | Type | Default |
+| ---------------- | -------------------------- | ------- | ------- |
+| visibilityToggle | Whether show toggle button | boolean | true |
diff --git a/antdv-demo/docs/input/index.zh-CN.md b/antdv-demo/docs/input/index.zh-CN.md
new file mode 100644
index 000000000..de4432e68
--- /dev/null
+++ b/antdv-demo/docs/input/index.zh-CN.md
@@ -0,0 +1,79 @@
+## API
+
+### Input
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| addonAfter | 带标签的 input,设置后置标签 | string\|slot | | |
+| addonBefore | 带标签的 input,设置前置标签 | string\|slot | | |
+| defaultValue | 输入框默认内容 | string | | |
+| disabled | 是否禁用状态,默认为 false | boolean | false | |
+| id | 输入框的 id | string | | |
+| maxLength | 最大长度 | number | | 1.5.0 |
+| prefix | 带有前缀图标的 input | string\|slot | | |
+| size | 控件大小。注:标准表单内的输入框大小限制为 `large`。可选 `large` `default` `small` | string | `default` | |
+| suffix | 带有后缀图标的 input | string\|slot | | |
+| type | 声明 input 类型,同原生 input 标签的 type 属性,见:[MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#属性)(请直接使用 `Input.TextArea` 代替 `type="textarea"`)。 | string | `text` | |
+| value(v-model) | 输入框内容 | string | | |
+| allowClear | 可以点击清除图标删除内容 | boolean | | |
+
+### Input 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | ---------------------- | ----------- |
+| change | 输入框内容变化时的回调 | function(e) | |
+| pressEnter | 按下回车的回调 | function(e) |
+
+> 如果 `Input` 在 `Form.Item` 内,并且 `Form.Item` 设置了 `id` 和 `options` 属性,则 `value` `defaultValue` 和 `id` 属性会被自动设置。
+
+### Input.TextArea
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| autosize | 自适应内容高度,可设置为 `true|false` 或对象:`{ minRows: 2, maxRows: 6 }` | boolean\|object | false | |
+| defaultValue | 输入框默认内容 | string | | |
+| value(v-model) | 输入框内容 | string | | |
+| allowClear | 可以点击清除图标删除内容 | boolean | | 1.5.0 |
+
+### Input.TextArea 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | -------------- | ----------- |
+| pressEnter | 按下回车的回调 | function(e) |
+
+`Input.TextArea` 的其他属性和浏览器自带的 [textarea](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) 一致。
+
+#### Input.Search
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| enterButton | 是否有确认按钮,可设为按钮文字。该属性会与 addon 冲突。 | boolean\|slot | false | |
+| loading | 搜索 loading | boolean | | 1.5.0 |
+
+### Input.Search 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ---------------------------- | ---------------------- |
+| search | 点击搜索或按下回车键时的回调 | function(value, event) |
+
+其余属性和 Input 一致。
+
+#### Input.Group
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| compact | 是否用紧凑模式 | boolean | false |
+| size | `Input.Group` 中所有的 `Input` 的大小,可选 `large` `default` `small` | string | `default` |
+
+```html
+
+
+
+
+```
+
+#### Input.Password (1.14.0 中新增)
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ---------------- | ---------------- | ------- | ------ |
+| visibilityToggle | 是否显示切换按钮 | boolean | true |
diff --git a/antdv-demo/docs/layout/demo/basic.md b/antdv-demo/docs/layout/demo/basic.md
new file mode 100644
index 000000000..bfbd7d5d6
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/basic.md
@@ -0,0 +1,79 @@
+
+#### 基本结构
+典型的页面布局。
+
+
+
+#### Basic Structure
+Classic page layouts.
+
+
+```vue
+
+
+
+ Header
+ Content
+ Footer
+
+
+
+ Header
+
+ Sider
+ Content
+
+ Footer
+
+
+
+ Header
+
+ Content
+ Sider
+
+ Footer
+
+
+
+ Sider
+
+ Header
+ Content
+ Footer
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/custom-trigger.md b/antdv-demo/docs/layout/demo/custom-trigger.md
new file mode 100644
index 000000000..d8ce23a43
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/custom-trigger.md
@@ -0,0 +1,75 @@
+
+#### 自定义触发器
+要使用自定义触发器,可以设置 `:trigger="null"` 来隐藏默认设定。
+
+
+
+#### Custom trigger
+If you want to use a customized trigger, you can hide the default one by setting `:trigger="null"`.
+
+
+```vue
+
+
+
+
+
+
+
+ nav 1
+
+
+
+ nav 2
+
+
+
+ nav 3
+
+
+
+
+
+ (collapsed = !collapsed)"
+ />
+
+
+ Content
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/fixed-sider.md b/antdv-demo/docs/layout/demo/fixed-sider.md
new file mode 100644
index 000000000..d94382b32
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/fixed-sider.md
@@ -0,0 +1,83 @@
+
+#### 固定侧边栏
+当内容较长时,使用固定侧边栏可以提供更好的体验。
+
+
+
+#### Fixed Sider
+When dealing with long content, a fixed sider can provide a better user experience.
+
+
+```vue
+
+
+
+
+
+
+
+ nav 1
+
+
+
+ nav 2
+
+
+
+ nav 3
+
+
+
+ nav 4
+
+
+
+ nav 5
+
+
+
+ nav 6
+
+
+
+ nav 7
+
+
+
+ nav 8
+
+
+
+
+
+
+
+ ...
+
+ Really
+ ... ... ...
+ long
+ ... ... ... ... ... ...
+ ... ... ... ... ... ...
+ ... ... ... ... ... ...
+ ... ... ... ... ... ...
+ ... ... ... ... ... ...
+ ... ... ... ... ... ...
+ ... ... ... ... ...
+ content
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/fixed.md b/antdv-demo/docs/layout/demo/fixed.md
new file mode 100644
index 000000000..6c0060b61
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/fixed.md
@@ -0,0 +1,57 @@
+
+#### 固定头部
+一般用于固定顶部导航,方便页面切换。
+
+
+
+#### Fixed Header
+Fixed Header is generally used to fix the top navigation to facilitate page switching.
+
+
+```vue
+
+
+
+
+
+
+ nav 1
+
+
+ nav 2
+
+
+ nav 3
+
+
+
+
+
+ Home
+ List
+ App
+
+
+ Content
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/index.vue b/antdv-demo/docs/layout/demo/index.vue
new file mode 100644
index 000000000..818a82dbb
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/index.vue
@@ -0,0 +1,175 @@
+
diff --git a/antdv-demo/docs/layout/demo/responsive.md b/antdv-demo/docs/layout/demo/responsive.md
new file mode 100644
index 000000000..2cf60f3f0
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/responsive.md
@@ -0,0 +1,75 @@
+
+#### 响应式布局
+Layout.Sider 支持响应式布局。
+> 说明:配置 `breakpoint` 属性即生效,视窗宽度小于 `breakpoint` 时 Sider 缩小为 `collapsedWidth` 宽度,若将 `collapsedWidth` 设置为零,会出现特殊 trigger。
+
+
+
+#### Responsive
+Layout.Sider supports responsive layout.
+> Note: You can get a responsive layout by setting `breakpoint`, the Sider will collapse to the width of `collapsedWidth` when window width is below the `breakpoint`. And a special trigger will appear if the `collapsedWidth` is set to `0`.
+
+
+```vue
+
+
+
+
+
+
+
+ nav 1
+
+
+
+ nav 2
+
+
+
+ nav 3
+
+
+
+ nav 4
+
+
+
+
+
+
+
+ content
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/side.md b/antdv-demo/docs/layout/demo/side.md
new file mode 100644
index 000000000..4d318b0ba
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/side.md
@@ -0,0 +1,89 @@
+
+#### 侧边布局
+侧边两列式布局。页面横向空间有限时,侧边导航可收起。
+侧边导航在页面布局上采用的是左右的结构,一般主导航放置于页面的左侧固定位置,辅助菜单放置于工作区顶部。内容根据浏览器终端进行自适应,能提高横向空间的使用率,但是整个页面排版不稳定。侧边导航的模式层级扩展性强,一、二、三级导航项目可以更为顺畅且具关联性的被展示,同时侧边导航可以固定,使得用户在操作和浏览中可以快速的定位和切换当前位置,有很高的操作效率。但这类导航横向页面内容的空间会被牺牲一部份。
+
+
+
+#### Sider
+Two-columns layout. The sider menu can be collapsed when horizontal space is limited.
+Generally, the mainnav is placed on the left side of the page, and the secondary menu is placed on the top of the working area. Contents will adapt the layout to the viewing area to improve the horizontal space usage, while the layout of the whole page is not stable.
+The level of the aside navigation is scalable. The first, second, and third level navigations could be present more fluently and relevantly, and aside navigation can be fixed, allowing the user to quickly switch and spot the current position, improving the user experience. However, this navigation occupies some horizontal space of the contents
+
+
+```vue
+
+
+
+
+
+
+
+ Option 1
+
+
+
+ Option 2
+
+
+ User
+
+ Tom
+
+
+ Bill
+
+
+ Alex
+
+
+
+ Team
+
+ Team 1
+
+
+ Team 2
+
+
+
+
+ File
+
+
+
+
+
+
+
+ User
+ Bill
+
+
+ Bill is a cat.
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/top-side-2.md b/antdv-demo/docs/layout/demo/top-side-2.md
new file mode 100644
index 000000000..52359f700
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/top-side-2.md
@@ -0,0 +1,122 @@
+
+#### 顶部-侧边布局-通栏
+同样拥有顶部导航及侧边栏,区别是两边未留边距,多用于应用型的网站。
+
+
+
+#### Header Sider 2
+Both the top navigation and the sidebar, commonly used in application site.
+
+
+```vue
+
+
+
+
+
+
+
+ subnav 1
+
+ option1
+
+
+ option2
+
+
+ option3
+
+
+ option4
+
+
+
+ subnav 2
+
+ option5
+
+
+ option6
+
+
+ option7
+
+
+ option8
+
+
+
+ subnav 3
+
+ option9
+
+
+ option10
+
+
+ option11
+
+
+ option12
+
+
+
+
+
+
+ Home
+ List
+ App
+
+
+ Content
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/top-side.md b/antdv-demo/docs/layout/demo/top-side.md
new file mode 100644
index 000000000..3cebc1b53
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/top-side.md
@@ -0,0 +1,114 @@
+
+#### 顶部-侧边布局
+拥有顶部导航及侧边栏的页面,多用于展示类网站。
+
+
+
+#### Header-Sider
+Both the top navigation and the sidebar, commonly used in documentation site.
+
+
+```vue
+
+
+
+
+
+ Home
+ List
+ App
+
+
+
+
+
+ subnav 1
+
+ option1
+
+
+ option2
+
+
+ option3
+
+
+ option4
+
+
+
+ subnav 2
+
+ option5
+
+
+ option6
+
+
+ option7
+
+
+ option8
+
+
+
+ subnav 3
+
+ option9
+
+
+ option10
+
+
+ option11
+
+
+ option12
+
+
+
+
+
+ Content
+
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/demo/top.md b/antdv-demo/docs/layout/demo/top.md
new file mode 100644
index 000000000..d05a06b8a
--- /dev/null
+++ b/antdv-demo/docs/layout/demo/top.md
@@ -0,0 +1,61 @@
+
+#### 上中下布局
+最基本的『上-中-下』布局。
+一般主导航放置于页面的顶端,从左自右依次为:logo、一级导航项、辅助菜单(用户、设置、通知等)。通常将内容放在固定尺寸(例如:1200px)内,整个页面排版稳定,不受用户终端显示器影响;上下级的结构符合用户上下浏览的习惯,也是较为经典的网站导航模式。页面上下切分的方式提高了主工作区域的信息展示效率,但在纵向空间上会有一些牺牲。此外,由于导航栏水平空间的限制,不适合那些一级导航项很多的信息结构。
+
+
+
+#### Header-Content-Footer
+The most basic "header-content-footer" layout.
+Generally, the mainnav is placed at the top of the page, and includes the logo, the first level navigation, and the secondary menu (users, settings, notifications) from left to right in it.
+We always put contents in a fixed size navigation (eg: `1200px`), the layout of the whole page is stable, it's not affected by viewing area.
+Top-bottom structure is conform with the top-bottom viewing habit, it's a classical navigation pattern of websites. This pattern demonstrates efficiency in the main workarea, while using some vertical space. And because the horizontal space of the navigation is limited, this pattern is not suitable for cases when the first level navigation contains many elements or links
+
+
+```vue
+
+
+
+
+
+
+ nav 1
+
+
+ nav 2
+
+
+ nav 3
+
+
+
+
+
+ Home
+ List
+ App
+
+
+ Content
+
+
+
+ Ant Design ©2018 Created by Ant UED
+
+
+
+
+```
diff --git a/antdv-demo/docs/layout/index.en-US.md b/antdv-demo/docs/layout/index.en-US.md
new file mode 100644
index 000000000..6bd204093
--- /dev/null
+++ b/antdv-demo/docs/layout/index.en-US.md
@@ -0,0 +1,64 @@
+## API
+
+```jsx
+
+
+
+ left sidebar
+ main content
+ right sidebar
+
+
+
+```
+
+### Layout
+
+The wrapper.
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| class | container className | string | - |
+| style | to customize the styles | object\|string | - |
+| hasSider | whether contain Sider in children, don't have to assign it normally. Useful in ssr avoid style flickering | boolean | - |
+
+> APIs of `Layout.Header` `Layout.Footer` `Layout.Content` are the same as that of `Layout`.
+
+### Layout.Sider
+
+The sidebar.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| breakpoint | [breakpoints](/ant-desing-vue/components/grid#api) of the responsive layout | Enum { 'xs', 'sm', 'md', 'lg', 'xl', 'xxl' } | - | |
+| class | container className | string | - | |
+| collapsed(v-model) | to set the current status | boolean | - | |
+| collapsedWidth | width of the collapsed sidebar, by setting to `0` a special trigger will appear | number | 80 | |
+| collapsible | whether can be collapsed | boolean | false | |
+| defaultCollapsed | to set the initial status | boolean | false | |
+| reverseArrow | reverse direction of arrow, for a sider that expands from the right | boolean | false | |
+| style | to customize the styles | object\|string | - | |
+| theme | color theme of the sidebar | string: `light` `dark` | `dark` | |
+| trigger | specify the customized trigger, set to null to hide the trigger | string\|slot | - | |
+| width | width of the sidebar | number\|string | 200 | |
+| zeroWidthTriggerStyle | to customize the styles of the special trigger that appears when `collapsedWidth` is 0 | object | - | 1.5.0 |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| collapse | the callback function, executed by clicking the trigger or activating the responsive layout | (collapsed, type) => {} |
+| breakpoint | the callback function, executed when [breakpoints](/ant-desing-vue/components/grid#api) changed | (broken) => {} | - |
+
+#### breakpoint width
+
+```js
+{
+ xs: '480px',
+ sm: '576px',
+ md: '768px',
+ lg: '992px',
+ xl: '1200px',
+ xxl: '1600px',
+}
+```
diff --git a/antdv-demo/docs/layout/index.zh-CN.md b/antdv-demo/docs/layout/index.zh-CN.md
new file mode 100644
index 000000000..107de06bc
--- /dev/null
+++ b/antdv-demo/docs/layout/index.zh-CN.md
@@ -0,0 +1,64 @@
+## API
+
+```jsx
+
+
+
+ left sidebar
+ main content
+ right sidebar
+
+
+
+```
+
+### Layout
+
+布局容器。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------- | ------------------------------------------------------------------ | ------- | ------ |
+| class | 容器 class | string | - |
+| style | 指定样式 | object | - |
+| hasSider | 表示子元素里有 Sider,一般不用指定。可用于服务端渲染时避免样式闪动 | boolean | - |
+
+> `Layout.Header` `Layout.Footer` `Layout.Content` API 与 `Layout` 相同
+
+### Layout.Sider
+
+侧边栏。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| breakpoint | 触发响应式布局的[断点](/components/grid#API) | Enum { 'xs', 'sm', 'md', 'lg', 'xl', 'xxl' } | - | |
+| class | 容器 class | string | - | |
+| collapsed(v-model) | 当前收起状态 | boolean | - | |
+| collapsedWidth | 收缩宽度,设置为 0 会出现特殊 trigger | number | 80 | |
+| collapsible | 是否可收起 | boolean | false | |
+| defaultCollapsed | 是否默认收起 | boolean | false | |
+| reverseArrow | 翻转折叠提示箭头的方向,当 Sider 在右边时可以使用 | boolean | false | |
+| style | 指定样式 | object\|string | - | |
+| theme | 主题颜色 | string: `light` `dark` | `dark` | |
+| trigger | 自定义 trigger,设置为 null 时隐藏 trigger | string\|slot | - |
+| width | 宽度 | number\|string | 200 | |
+| zeroWidthTriggerStyle | 指定当 `collapsedWidth` 为 0 时出现的特殊 trigger 的样式 | object | - | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| collapse | 展开-收起时的回调函数,有点击 trigger 以及响应式反馈两种方式可以触发 | (collapsed, type) => {} |
+| breakpoint | 触发响应式布局[断点](/components/grid#api)时的回调 | (broken) => {} |
+
+#### breakpoint width
+
+```js
+{
+ xs: '480px',
+ sm: '576px',
+ md: '768px',
+ lg: '992px',
+ xl: '1200px',
+ xxl: '1600px',
+}
+```
diff --git a/antdv-demo/docs/list/demo/basic.md b/antdv-demo/docs/list/demo/basic.md
new file mode 100644
index 000000000..239c73b5f
--- /dev/null
+++ b/antdv-demo/docs/list/demo/basic.md
@@ -0,0 +1,51 @@
+
+#### 基础列表
+基础列表。
+
+
+
+#### Basic list
+Basic list.
+
+
+```vue
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/grid.md b/antdv-demo/docs/list/demo/grid.md
new file mode 100644
index 000000000..579c85c38
--- /dev/null
+++ b/antdv-demo/docs/list/demo/grid.md
@@ -0,0 +1,45 @@
+
+#### 栅格列表
+可以通过设置 `List` 的 `grid` 属性来实现栅格列表,`column` 可设置期望显示的列数。
+
+
+
+#### Grid
+Creating a grid list by setting the `grid` property of List
+
+
+```vue
+
+
+
+
+ Card content
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/index.vue b/antdv-demo/docs/list/demo/index.vue
new file mode 100644
index 000000000..2e272ecec
--- /dev/null
+++ b/antdv-demo/docs/list/demo/index.vue
@@ -0,0 +1,59 @@
+
diff --git a/antdv-demo/docs/list/demo/infinite-load.md b/antdv-demo/docs/list/demo/infinite-load.md
new file mode 100644
index 000000000..c800892c4
--- /dev/null
+++ b/antdv-demo/docs/list/demo/infinite-load.md
@@ -0,0 +1,98 @@
+
+#### 滚动加载
+结合 [vue-infinite-scroll](https://github.com/ElemeFE/vue-infinite-scroll) 实现滚动自动加载列表。
+
+
+
+#### Scrolling loaded
+The example of infinite load with [vue-infinite-scroll](https://github.com/ElemeFE/vue-infinite-scroll).
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/infinite-virtualized-load.md b/antdv-demo/docs/list/demo/infinite-virtualized-load.md
new file mode 100644
index 000000000..f1f06c0b5
--- /dev/null
+++ b/antdv-demo/docs/list/demo/infinite-virtualized-load.md
@@ -0,0 +1,100 @@
+
+#### 滚动加载无限长列表
+结合 [vue-virtual-scroller](https://github.com/Akryum/vue-virtual-scroller) 实现滚动加载无限长列表,带有虚拟化([virtualization](https://blog.jscrambler.com/optimizing-react-rendering-through-virtualization/))功能,能够提高数据量大时候长列表的性能。
+可以结合 [vue-infinite-scroll](https://github.com/ElemeFE/vue-infinite-scroll) 实现滚动自动加载无限长列表。
+`virtualized` 是在大数据列表中应用的一种技术,主要是为了减少不可见区域不必要的渲染从而提高性能,特别是数据量在成千上万条效果尤为明显。
+
+
+
+#### Infinite & virtualized
+An example of infinite list & virtualized loading using [vue-virtual-scroller](https://github.com/Akryum/vue-virtual-scroller).
+`Virtualized` rendering is a technique to mount big sets of data. It reduces the amount of rendered DOM nodes by tracking and hiding whatever isn't currently visible.
+
+
+```vue
+
+
+
+
+
+ {{ item.name.last }}
+
+
+ Content {{ item.index }}
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/loadmore.md b/antdv-demo/docs/list/demo/loadmore.md
new file mode 100644
index 000000000..811021e79
--- /dev/null
+++ b/antdv-demo/docs/list/demo/loadmore.md
@@ -0,0 +1,95 @@
+
+#### 加载更多
+可通过 `loadMore` 属性实现加载更多功能。
+
+
+
+#### Load more
+Load more list with `loadMore` property.
+
+
+```vue
+
+
+
+
+ edit
+ more
+
+ {{ item.name.last }}
+
+
+ content
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/resposive.md b/antdv-demo/docs/list/demo/resposive.md
new file mode 100644
index 000000000..d06e0d2c6
--- /dev/null
+++ b/antdv-demo/docs/list/demo/resposive.md
@@ -0,0 +1,52 @@
+
+#### 响应式的栅格列表
+响应式的栅格列表。尺寸与 [Layout Grid](https://www.antdv.com/components/grid-cn/#Col) 保持一致。
+
+
+
+#### Responsive grid list
+Responsive grid list. The size property is as same as [Layout Grid](https://www.antdv.com/components/grid/#Col).
+
+
+```vue
+
+
+
+
+ Card content
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/simple.md b/antdv-demo/docs/list/demo/simple.md
new file mode 100644
index 000000000..af25de77b
--- /dev/null
+++ b/antdv-demo/docs/list/demo/simple.md
@@ -0,0 +1,80 @@
+
+#### 简单列表
+列表拥有大、中、小三种尺寸。
+通过设置 `size` 为 `large` `small` 分别把按钮设为大、小尺寸。若不设置 `size`,则尺寸为中。
+可通过设置 `header` 和 `footer`,来自定义列表头部和尾部。
+
+
+
+#### Simple list
+Ant Design supports a default list size as well as a large and small size.
+If a large or small list is desired, set the size property to either large or small respectively. Omit the size property for a list with the default size.
+Customizing the header and footer of list by setting `header` and `footer` property.
+
+
+```vue
+
+
+
+ Default Size
+
+
+
+ {{ item }}
+
+
+ Header
+
+
+ Footer
+
+
+
+ Small Size
+
+
+
+ {{ item }}
+
+
+ Header
+
+
+ Footer
+
+
+
+ Large Size
+
+
+
+ {{ item }}
+
+
+ Header
+
+
+ Footer
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/demo/vertical.md b/antdv-demo/docs/list/demo/vertical.md
new file mode 100644
index 000000000..3c318636a
--- /dev/null
+++ b/antdv-demo/docs/list/demo/vertical.md
@@ -0,0 +1,70 @@
+
+#### 竖排列表样式
+通过设置 `itemLayout` 属性为 `vertical` 可实现竖排列表样式。
+
+
+
+#### Vertical
+Setting `itemLayout` property with `vertical` to create a vertical list.
+
+
+```vue
+
+
+ ant design vue footer part
+
+
+
+
+ {{ text }}
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.content }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/list/index.en-US.md b/antdv-demo/docs/list/index.en-US.md
new file mode 100644
index 000000000..039505a79
--- /dev/null
+++ b/antdv-demo/docs/list/index.en-US.md
@@ -0,0 +1,58 @@
+## API
+
+### List
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| bordered | Toggles rendering of the border around the list | boolean | false | |
+| footer | List footer renderer | string\|slot | - | |
+| grid | The grid type of list. You can set grid to something like {gutter: 16, column: 4} | object | - | |
+| header | List header renderer | string\|slot | - | |
+| itemLayout | The layout of list, default is `horizontal`, If a vertical list is desired, set the itemLayout property to `vertical` | string | - | |
+| rowKey | Item's unique key, could be a string or function that returns a string | string\|Function(record):string | `key` | |
+| loading | Shows a loading indicator while the contents of the list are being fetched | boolean\|[object](https://www.antdv.com/components/spin/#API) | false | |
+| loadMore | Shows a load more content | string\|slot | - | |
+| locale | i18n text including empty text | object | emptyText: 'No Data' | |
+| pagination | Pagination [config](https://www.antdv.com/components/pagination/#API), hide it by setting it to false | boolean \| object | false | |
+| split | Toggles rendering of the split under the list item | boolean | true | |
+| dataSource | dataSource array for list | any[] | - | 3.20.1 |
+| renderItem | Custom item renderer, slot="renderItem" and slot-scope="item, index" | (item, index) => vNode | | - | |
+
+### pagination
+
+Properties for pagination.
+
+| Property | Description | Type | Default |
+| -------- | ------------------------------------ | --------------------------- | -------- |
+| position | specify the position of `Pagination` | 'top' \| 'bottom' \| 'both' | 'bottom' |
+
+More about pagination, please check [`Pagination`](https://www.antdv.com/components/pagination/#API).
+
+### List grid props
+
+| Property | Description | Type | Default |
+| -------- | ------------------------ | ---------------------------------------- | --------- |
+| column | column of grid | number oneOf [ 1, 2, 3, 4, 6, 8, 12, 24] | - |
+| gutter | spacing between grid | number | 0 |
+| size | Size of list | `default` \| `middle` \| `small` | `default` |
+| xs | `<576px` column of grid | number | - |
+| sm | `≥576px` column of grid | number | - |
+| md | `≥768px` column of grid | number | - |
+| lg | `≥992px` column of grid | number | - |
+| xl | `≥1200px` column of grid | number | - |
+| xxl | `≥1600px` column of grid | number | - |
+
+### List.Item
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| actions | The actions content of list item. If `itemLayout` is `vertical`, shows the content on bottom, otherwise shows content on the far right. | Array\\|slot | - |
+| extra | The extra content of list item. If `itemLayout` is `vertical`, shows the content on right, otherwise shows content on the far right. | string\|slot | - |
+
+### List.Item.Meta
+
+| Property | Description | Type | Default |
+| ----------- | ---------------------------- | ------------ | ------- |
+| avatar | The avatar of list item | slot | - |
+| description | The description of list item | string\|slot | - |
+| title | The title of list item | string\|slot | - |
diff --git a/antdv-demo/docs/list/index.zh-CN.md b/antdv-demo/docs/list/index.zh-CN.md
new file mode 100644
index 000000000..09caea566
--- /dev/null
+++ b/antdv-demo/docs/list/index.zh-CN.md
@@ -0,0 +1,58 @@
+## API
+
+### List
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| bordered | 是否展示边框 | boolean | false | |
+| footer | 列表底部 | string\|slot | - | |
+| grid | 列表栅格配置 | object | - | |
+| header | 列表头部 | string\|slot | - | |
+| itemLayout | 设置 `List.Item` 布局, 设置成 `vertical` 则竖直样式显示, 默认横排 | string | - | |
+| loading | 当卡片内容还在加载中时,可以用 `loading` 展示一个占位 | boolean\|[object](https://www.antdv.com/components/spin-cn/#API) | false | |
+| loadMore | 加载更多 | string\|slot | - | |
+| locale | 默认文案设置,目前包括空数据文案 | object | emptyText: '暂无数据' | |
+| pagination | 对应的 `pagination` [配置](https://www.antdv.com/components/pagination-cn/#API), 设置 `false` 不显示 | boolean\|object | false | |
+| size | list 的尺寸 | `default` \| `middle` \| `small` | `default` | |
+| split | 是否展示分割线 | boolean | true | |
+| dataSource | 列表数据源 | any[] | - | 1.5.0 |
+| renderItem | 自定义`Item`函数,也可使用 slot="renderItem" 和 slot-scope="item, index" | (item, index) => vNode | | - | |
+| rowKey | 各项 key 的取值,可以是字符串或一个函数 | item => string\|number | | |
+
+### pagination
+
+分页的配置项。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------- | ------------------ | --------------------------- | -------- |
+| position | 指定分页显示的位置 | 'top' \| 'bottom' \| 'both' | 'bottom' |
+
+更多配置项,请查看 [`Pagination`](https://www.antdv.com/components/pagination-cn/#API)。
+
+### List grid props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ------ | -------------------- | ---------------------------------------- | ------ |
+| column | 列数 | number oneOf [ 1, 2, 3, 4, 6, 8, 12, 24] | - |
+| gutter | 栅格间隔 | number | 0 |
+| xs | `<576px` 展示的列数 | number | - |
+| sm | `≥576px` 展示的列数 | number | - |
+| md | `≥768px` 展示的列数 | number | - |
+| lg | `≥992px` 展示的列数 | number | - |
+| xl | `≥1200px` 展示的列数 | number | - |
+| xxl | `≥1600px` 展示的列数 | number | - |
+
+### List.Item
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| actions | 列表操作组,根据 `itemLayout` 的不同, 位置在卡片底部或者最右侧 | Array\/ | slot | - |
+| extra | 额外内容, 通常用在 `itemLayout` 为 `vertical` 的情况下, 展示右侧内容; `horizontal` 展示在列表元素最右侧 | string\|slot | - |
+
+### List.Item.Meta
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----------- | ------------------ | ------------ | ------ |
+| avatar | 列表元素的图标 | slot | - |
+| description | 列表元素的描述内容 | string\|slot | - |
+| title | 列表元素的标题 | string\|slot | - |
diff --git a/antdv-demo/docs/locale-provider/demo/all.md b/antdv-demo/docs/locale-provider/demo/all.md
new file mode 100644
index 000000000..eedb7f560
--- /dev/null
+++ b/antdv-demo/docs/locale-provider/demo/all.md
@@ -0,0 +1,158 @@
+
+#### 所有组件
+此处列出 Ant Design 中需要国际化支持的组件,你可以在演示里切换语言。
+
+
+
+#### All components
+Components which need localization support are listed here, you can toggle the language in the demo.
+
+
+```vue
+
+
+
+
Change locale of components:
+
+
+ English
+
+
+ 中文
+
+
+
+
+
+
+
+
+
+
+ jack
+
+
+ lucy
+
+
+
+
+
+
+
+
+
+
+ Locale Modal
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/locale-provider/demo/basic.md b/antdv-demo/docs/locale-provider/demo/basic.md
new file mode 100644
index 000000000..cca06b369
--- /dev/null
+++ b/antdv-demo/docs/locale-provider/demo/basic.md
@@ -0,0 +1,28 @@
+
+#### 国际化
+用 `LocaleProvider` 包裹你的应用,并引用对应的语言包。
+
+
+
+#### Localization
+Wrap your app with `LocaleProvider`, and apply the corresponding language package.
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/locale-provider/demo/index.vue b/antdv-demo/docs/locale-provider/demo/index.vue
new file mode 100644
index 000000000..ac10903fc
--- /dev/null
+++ b/antdv-demo/docs/locale-provider/demo/index.vue
@@ -0,0 +1,42 @@
+
diff --git a/antdv-demo/docs/locale-provider/index.en-US.md b/antdv-demo/docs/locale-provider/index.en-US.md
new file mode 100644
index 000000000..5c886f963
--- /dev/null
+++ b/antdv-demo/docs/locale-provider/index.en-US.md
@@ -0,0 +1,54 @@
+# LocaleProvider
+
+`LocaleProvider` provides a uniform localization support for built-in text of components.
+
+## Usage
+
+`LocaleProvider` takes use of [provide/inject](https://vuejs.org/v2/api/#provide-inject), a feature of Vue, to accomplish global effectiveness by wrapping the app only once.
+
+```html
+
+
+
+
+
+
+```
+
+We provide some locale like English, Chinese, Russian, German, French and etc, all locale packages can be found in [here](https://github.com/vueComponent/ant-design-vue/tree/master/components/locale-provider).
+
+Note: if you need to use antd's UMD dist file, please use `ant-design-vue/dist/antd-with-locales.js` and corresponding moment locale:
+
+```html
+
+
+
+
+
+
+```
+
+### Add a new language
+
+If you can't find your language, you are welcome to create a locale package based on [en_US](https://github.com/vueComponent/ant-design-vue/blob/master/components/locale-provider/en_US.js) and send us a pull request.
+
+### Other localization needs
+
+This component aims for localization of the built-in text, if you want to support other documents, we recommend using [vue-i18n](https://github.com/kazupon/vue-i18n).
+
+## Examples
diff --git a/antdv-demo/docs/locale-provider/index.zh-CN.md b/antdv-demo/docs/locale-provider/index.zh-CN.md
new file mode 100644
index 000000000..3433cdd2c
--- /dev/null
+++ b/antdv-demo/docs/locale-provider/index.zh-CN.md
@@ -0,0 +1,54 @@
+# LocaleProvider 国际化
+
+为组件内建文案提供统一的国际化支持。
+
+## 使用
+
+LocaleProvider 使用 Vue 的 [provide/inject](https://cn.vuejs.org/v2/api/#provide-inject) 特性,只需在应用外围包裹一次即可全局生效。
+
+```html
+
+
+
+
+
+
+```
+
+我们提供了英语,中文,俄语,法语,德语等多种语言支持,所有语言包可以在 [这里](https://github.com/vueComponent/ant-design-vue/tree/master/components/locale-provider) 找到。
+
+注意:如果你需要使用 UMD 版的 dist 文件,应该引入 `ant-design-vue/dist/antd-with-locales.js`,同时引入 moment 对应的 locale,然后按以下方式使用:
+
+```html
+
+
+
+
+
+
+```
+
+### 增加语言包
+
+如果你找不到你需要的语言包,欢迎你在 [英文语言包](https://github.com/vueComponent/ant-design-vue/blob/master/components/locale-provider/en_US.js) 的基础上创建一个新的语言包,并给我们 Pull Request。
+
+### 其他国际化需求
+
+本模块仅用于组件的内建文案,若有业务文案的国际化需求,建议使用 [vue-i18n](https://github.com/kazupon/vue-i18n)
+
+## 代码演示
diff --git a/antdv-demo/docs/mentions/demo/async.md b/antdv-demo/docs/mentions/demo/async.md
new file mode 100644
index 000000000..1974beb3d
--- /dev/null
+++ b/antdv-demo/docs/mentions/demo/async.md
@@ -0,0 +1,65 @@
+
+#### 异步加载
+匹配内容列表为异步返回时。
+
+
+
+#### Asynchronous loading
+async.
+
+
+```vue
+
+
+
+
+ {{ login }}
+
+
+
+
+
+
diff --git a/antdv-demo/docs/menu/demo/inline-collapsed.md b/antdv-demo/docs/menu/demo/inline-collapsed.md
new file mode 100644
index 000000000..4ec00048c
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/inline-collapsed.md
@@ -0,0 +1,86 @@
+
+#### 缩起内嵌菜单
+内嵌菜单可以被缩起/展开。
+
+
+
+#### Collapsed inline menu
+Inline menu could be collapsed.
+
+
+```vue
+
+
+
+
+
+
+
+
+ Option 1
+
+
+
+ Option 2
+
+
+
+ Option 3
+
+
+ Navigation One
+
+ Option 5
+
+
+ Option 6
+
+
+ Option 7
+
+
+ Option 8
+
+
+
+ Navigation Two
+
+ Option 9
+
+
+ Option 10
+
+
+
+ Option 11
+
+
+ Option 12
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/inline.md b/antdv-demo/docs/menu/demo/inline.md
new file mode 100644
index 000000000..db08507c7
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/inline.md
@@ -0,0 +1,99 @@
+
+#### 内嵌菜单
+垂直菜单,子菜单内嵌在菜单区域。
+
+
+
+#### Inline menu
+Vertical menu with inline submenus.
+
+
+```vue
+
+
+
+
+ Navigation One
+
+ Item 1
+
+ Option 1
+
+
+ Option 2
+
+
+
+
+ Option 3
+
+
+ Option 4
+
+
+
+
+ Navigation Two
+
+ Option 5
+
+
+ Option 6
+
+
+
+ Option 7
+
+
+ Option 8
+
+
+
+
+ Navigation Three
+
+ Option 9
+
+
+ Option 10
+
+
+ Option 11
+
+
+ Option 12
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/sider-current.md b/antdv-demo/docs/menu/demo/sider-current.md
new file mode 100644
index 000000000..35b1053f0
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/sider-current.md
@@ -0,0 +1,85 @@
+
+#### 只展开当前父级菜单
+点击菜单,收起其他展开的所有菜单,保持菜单聚焦简洁。
+
+
+
+#### Open current submenu only
+Click the menu and you will see that all the other menus gets collapsed to keep the entire menu compact.
+
+
+```vue
+
+
+
+
+ Navigation One
+
+ Option 1
+
+
+ Option 2
+
+
+ Option 3
+
+
+ Option 4
+
+
+
+ Navigation Two
+
+ Option 5
+
+
+ Option 6
+
+
+
+ Option 7
+
+
+ Option 8
+
+
+
+
+ Navigation Three
+
+ Option 9
+
+
+ Option 10
+
+
+ Option 11
+
+
+ Option 12
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/switch-mode.md b/antdv-demo/docs/menu/demo/switch-mode.md
new file mode 100644
index 000000000..08eb77499
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/switch-mode.md
@@ -0,0 +1,87 @@
+
+#### 切换菜单类型
+展示动态切换模式。
+
+
+
+#### Switch the menu type
+Show the dynamic switching mode (between 'inline' and 'vertical').
+
+
+```vue
+
+
+
Change Mode
+
+
Change Theme
+
+
+
+
+
+ Navigation One
+
+
+
+ Navigation Two
+
+
+ Navigation Three
+
+ Option 3
+
+
+ Option 4
+
+
+
+ Option 5
+
+
+ Option 6
+
+
+
+
+ Navigation Four
+
+ Option 7
+
+
+ Option 8
+
+
+ Option 9
+
+
+ Option 10
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/template.md b/antdv-demo/docs/menu/demo/template.md
new file mode 100644
index 000000000..9f49f434a
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/template.md
@@ -0,0 +1,117 @@
+
+#### 单文件递归菜单
+使用单文件方式递归生成菜单。
+Before v2.0, 因组件内部会动态更改`a-sub-menu`的属性,如果拆分成单文件,无法将属性挂载到`a-sub-menu`上,你需要自行声明属性并挂载。为了方便,避免属性的声明,我们推荐使用函数式组件。
+
+
+
+#### Single file recursive menu
+Use the single file method to recursively generate menus.
+Before v2.0, The properties of `a-sub-menu` are dynamically changed inside the component. If you split the file into a single file and you cannot mount the `props` to `a-sub-menu`, you need to declare the `props` and mount it yourself. For convenience, to avoid the declaration of attributes, we recommend using functional components.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/theme.md b/antdv-demo/docs/menu/demo/theme.md
new file mode 100644
index 000000000..19a3f38f7
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/theme.md
@@ -0,0 +1,93 @@
+
+#### 主题
+内建了两套主题 `light|dark`,默认 `light`。
+
+
+
+#### Menu Themes
+There are two built-in themes: 'light' and 'dark'. The default value is 'light'.
+
+
+```vue
+
+
+
+
+
+
+
+
+ Navigation One
+
+
+
+ Navigation Two
+
+
+ Navigation Three
+
+ Option 3
+
+
+ Option 4
+
+
+
+ Option 5
+
+
+ Option 6
+
+
+
+
+ Navigation Four
+
+ Option 7
+
+
+ Option 8
+
+
+ Option 9
+
+
+ Option 10
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/demo/vertical.md b/antdv-demo/docs/menu/demo/vertical.md
new file mode 100644
index 000000000..c04823eb6
--- /dev/null
+++ b/antdv-demo/docs/menu/demo/vertical.md
@@ -0,0 +1,67 @@
+
+#### 垂直菜单
+子菜单是弹出的形式。
+
+
+
+#### Vertical menu
+Submenus open as pop-ups.
+
+
+```vue
+
+
+
+
+
+ Navigation One
+
+
+
+ Navigation Two
+
+
+ Navigation Three
+
+ Option 3
+
+
+ Option 4
+
+
+
+ Option 5
+
+
+ Option 6
+
+
+
+
+ Navigation Four
+
+ Option 7
+
+
+ Option 8
+
+
+ Option 9
+
+
+ Option 10
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/menu/index.en-US.md b/antdv-demo/docs/menu/index.en-US.md
new file mode 100644
index 000000000..bfcd6bfa0
--- /dev/null
+++ b/antdv-demo/docs/menu/index.en-US.md
@@ -0,0 +1,79 @@
+## API
+
+```html
+
+
+ 菜单项
+
+ 子菜单项
+
+
+
+```
+
+### Menu
+
+| Param | Description | Type | Default value |
+| --- | --- | --- | --- |
+| defaultOpenKeys | array with the keys of default opened sub menus | | |
+| defaultSelectedKeys | array with the keys of default selected menu items | string\[] | |
+| forceSubMenuRender | render submenu into DOM before it shows | boolean | false |
+| inlineCollapsed | specifies the collapsed status when menu is inline mode | boolean | - |
+| inlineIndent | indent px of inline menu item on each level | number | 24 |
+| mode | type of the menu; `vertical`, `horizontal`, and `inline` modes are supported | string: `vertical` \| `vertical-right` \| `horizontal` \| `inline` | `vertical` |
+| multiple | Allow selection of multiple items | boolean | false |
+| openKeys(.sync) | array with the keys of currently opened sub menus | string\[] | |
+| selectable | allow selecting menu items | boolean | true |
+| selectedKeys(v-model) | array with the keys of currently selected menu items | string\[] | |
+| style | style of the root node | object | |
+| subMenuCloseDelay | delay time to hide submenu when mouse leave, unit: second | number | 0.1 |
+| subMenuOpenDelay | delay time to show submenu when mouse enter, unit: second | number | 0 |
+| theme | color theme of the menu | string: `light` `dark` | `light` |
+| overflowedIndicator | Customized icon when menu is collapsed | DOM | `··· ` |
+
+### Menu Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| click | callback executed when a menu item is clicked | function({ item, key, keyPath }) |
+| deselect | callback executed when a menu item is deselected, only supported for multiple mode | function({ item, key, selectedKeys }) |
+| openChange | called when open/close sub menu | function(openKeys: string\[]) |
+| select | callback executed when a menu item is selected | function({ item, key, selectedKeys }) |
+
+### Menu.Item
+
+| Param | Description | Type | Default value |
+| -------- | ------------------------------------ | ------- | ------------- |
+| disabled | whether menu item is disabled or not | boolean | false |
+| key | unique id of the menu item | string | |
+| title | set display title for collapsed item | string | |
+
+### Menu.SubMenu
+
+| Param | Description | Type | Default value | Version |
+| -------------- | ----------------------------------- | ------------ | ------------- | ------- |
+| popupClassName | Sub-menu class name | string | | 1.5.0 |
+| disabled | whether sub menu is disabled or not | boolean | false | |
+| key | Unique ID of the sub menu | string | | |
+| title | title of the sub menu | string\|slot | | |
+
+The children of Menu.SubMenu must be `MenuItem` or `SubMenu`.
+
+### Menu.SubMenu Events
+
+| Events Name | Description | Arguments |
+| ----------- | ---------------------------------------------------- | --------------------------- |
+| titleClick | callback executed when the sub menu title is clicked | function({ key, domEvent }) |
+
+### Menu.ItemGroup
+
+| Param | Description | Type | Default value |
+| -------- | ------------------ | ------------ | ------------- |
+| children | sub-menu items | MenuItem\[] | |
+| title | title of the group | string\|slot | |
+
+The children of Menu.ItemGroup must be `MenuItem`.
+
+### Menu.Divider
+
+Divider line in between menu items, only used in vertical popup Menu or Dropdown Menu.
diff --git a/antdv-demo/docs/menu/index.zh-CN.md b/antdv-demo/docs/menu/index.zh-CN.md
new file mode 100644
index 000000000..e52d5aa1d
--- /dev/null
+++ b/antdv-demo/docs/menu/index.zh-CN.md
@@ -0,0 +1,77 @@
+## API
+
+```html
+
+
+ 菜单项
+
+ 子菜单项
+
+
+
+```
+
+### Menu
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultOpenKeys | 初始展开的 SubMenu 菜单项 key 数组 | | |
+| defaultSelectedKeys | 初始选中的菜单项 key 数组 | string\[] | |
+| forceSubMenuRender | 在子菜单展示之前就渲染进 DOM | boolean | false |
+| inlineCollapsed | inline 时菜单是否收起状态 | boolean | - |
+| inlineIndent | inline 模式的菜单缩进宽度 | number | 24 |
+| mode | 菜单类型,现在支持垂直、水平、和内嵌模式三种 | string: `vertical` `vertical-right` `horizontal` `inline` | `vertical` |
+| multiple | 是否允许多选 | boolean | false |
+| openKeys(.sync) | 当前展开的 SubMenu 菜单项 key 数组 | string\[] | |
+| selectable | 是否允许选中 | boolean | true |
+| selectedKeys(v-model) | 当前选中的菜单项 key 数组 | string\[] | |
+| subMenuCloseDelay | 用户鼠标离开子菜单后关闭延时,单位:秒 | number | 0.1 |
+| subMenuOpenDelay | 用户鼠标进入子菜单后开启延时,单位:秒 | number | 0 |
+| theme | 主题颜色 | string: `light` `dark` | `light` |
+| overflowedIndicator | 自定义 Menu 折叠时的图标 | DOM | `··· ` |
+
+### Menu 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | ---------------------------------- | ------------------------------------- |
+| click | 点击 MenuItem 调用此函数 | function({ item, key, keyPath }) |
+| deselect | 取消选中时调用,仅在 multiple 生效 | function({ item, key, selectedKeys }) |
+| openChange | SubMenu 展开/关闭的回调 | function(openKeys: string\[]) |
+| select | 被选中时调用 | function({ item, key, selectedKeys }) |
+
+### Menu.Item
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------- | ------------------------ | ------- | ------ |
+| disabled | 是否禁用 | boolean | false |
+| key | item 的唯一标志 | string | |
+| title | 设置收缩时展示的悬浮标题 | string | |
+
+### Menu.SubMenu
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| -------------- | ---------- | ------------ | ------ | ----- |
+| popupClassName | 子菜单样式 | string | | 1.5.0 |
+| disabled | 是否禁用 | boolean | false | |
+| key | 唯一标志 | string | | |
+| title | 子菜单项值 | string\|slot | | |
+
+Menu.SubMenu 的子元素必须是 `MenuItem` 或者 `SubMenu`.
+
+### SubMenu 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | -------------- | ------------------- |
+| titleClick | 点击子菜单标题 | ({ key, domEvent }) |
+
+### Menu.ItemGroup
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----- | -------- | ------------------------ | ------ |
+| title | 分组标题 | string\|\|function\|slot | |
+
+Menu.ItemGroup 的子元素必须是 `MenuItem`.
+
+### Menu.Divider
+
+菜单项分割线,只用在弹出菜单内。
diff --git a/antdv-demo/docs/message/demo/duration.md b/antdv-demo/docs/message/demo/duration.md
new file mode 100644
index 000000000..d7c5aca91
--- /dev/null
+++ b/antdv-demo/docs/message/demo/duration.md
@@ -0,0 +1,29 @@
+
+#### 修改延时
+自定义时长 `10s`,默认时长为 `3s`。
+
+
+
+#### Customize duration
+Customize message display duration from default `3s` to `10s`.
+
+
+```vue
+
+
+ Customized display duration
+
+
+
+```
diff --git a/antdv-demo/docs/message/demo/index.vue b/antdv-demo/docs/message/demo/index.vue
new file mode 100644
index 000000000..d1be6120e
--- /dev/null
+++ b/antdv-demo/docs/message/demo/index.vue
@@ -0,0 +1,51 @@
+
diff --git a/antdv-demo/docs/message/demo/info.md b/antdv-demo/docs/message/demo/info.md
new file mode 100644
index 000000000..9cfc35eea
--- /dev/null
+++ b/antdv-demo/docs/message/demo/info.md
@@ -0,0 +1,26 @@
+
+#### 普通提示
+信息提醒反馈。
+
+
+
+#### Normal prompt
+Normal message for information.
+
+
+```vue
+
+
+ Display normal message
+
+
+
+```
diff --git a/antdv-demo/docs/message/demo/loading.md b/antdv-demo/docs/message/demo/loading.md
new file mode 100644
index 000000000..5a12308ee
--- /dev/null
+++ b/antdv-demo/docs/message/demo/loading.md
@@ -0,0 +1,27 @@
+
+#### 加载中
+进行全局 loading,异步自行移除。
+
+
+
+#### Message with loading indicator
+Display a global loading indicator, which is dismissed by itself asynchronously.
+
+
+```vue
+
+
+ Display a loading indicator
+
+
+
+```
diff --git a/antdv-demo/docs/message/demo/other.md b/antdv-demo/docs/message/demo/other.md
new file mode 100644
index 000000000..c61708e87
--- /dev/null
+++ b/antdv-demo/docs/message/demo/other.md
@@ -0,0 +1,40 @@
+
+#### 其他提示类型
+包括成功、失败、警告。
+
+
+
+#### Other types of message
+Messages of success, error and warning types.
+
+
+```vue
+
+
+
+ Success
+
+
+ Error
+
+
+ Warning
+
+
+
+
+```
diff --git a/antdv-demo/docs/message/demo/thenable.md b/antdv-demo/docs/message/demo/thenable.md
new file mode 100644
index 000000000..0a0df5d23
--- /dev/null
+++ b/antdv-demo/docs/message/demo/thenable.md
@@ -0,0 +1,29 @@
+
+#### Promise 接口
+可以通过 then 接口在关闭后运行 callback 。以上用例将在每个 message 将要结束时通过 then 显示新的 message 。
+
+
+
+#### Promise interface
+`message` provides promise interface for `onClose`. The above example will display a new message when old message is about to finish.
+
+
+```vue
+
+
+ Display a sequence of message
+
+
+
+```
diff --git a/antdv-demo/docs/message/demo/update.md b/antdv-demo/docs/message/demo/update.md
new file mode 100644
index 000000000..a1f7c332d
--- /dev/null
+++ b/antdv-demo/docs/message/demo/update.md
@@ -0,0 +1,30 @@
+
+#### 更新消息内容
+可以通过唯一的 `key` 来更新内容。
+
+
+
+#### Update Message Content
+Update message content with unique `key`.
+
+
+```vue
+
+
+ Open the message box
+
+
+
+```
diff --git a/antdv-demo/docs/message/index.en-US.md b/antdv-demo/docs/message/index.en-US.md
new file mode 100644
index 000000000..d1390e6b2
--- /dev/null
+++ b/antdv-demo/docs/message/index.en-US.md
@@ -0,0 +1,65 @@
+## API
+
+This components provides some static methods, with usage and arguments as following:
+
+- `message.success(content, [duration], onClose)`
+- `message.error(content, [duration], onClose)`
+- `message.info(content, [duration], onClose)`
+- `message.warning(content, [duration], onClose)`
+- `message.warn(content, [duration], onClose)` // alias of warning
+- `message.loading(content, [duration], onClose)`
+
+| Argument | Description | Type | Default |
+| --- | --- | --- | --- |
+| content | content of the message | string\| VNode \|(h) => VNode | - |
+| duration | time(seconds) before auto-dismiss, don't dismiss if set to 0 | number | 1.5 |
+| onClose | Specify a function that will be called when the message is closed | Function | - |
+
+`afterClose` can be called in then-able interface:
+
+- `message[level](content, [duration]).then(afterClose)`
+- `message[level](content, [duration], onClose).then(afterClose)`
+
+where `level` refers one static methods of `message`. The result of `then` method will be a Promise.
+
+- `message.open(config)`
+- `message.success(config)`
+- `message.error(config)`
+- `message.info(config)`
+- `message.warning(config)`
+- `message.warn(config)` // alias of warning
+- `message.loading(config)`
+
+The properties of config are as follows:
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| content | content of the message | string\| VNode \|(h) => VNode | - | |
+| duration | time(seconds) before auto-dismiss, don't dismiss if set to 0 | number | 3 | |
+| onClose | Specify a function that will be called when the message is closed | function | - | |
+| icon | Customized Icon | string\| VNode \|(h) => VNode | - | |
+| key | The unique identifier of the Message | string\|number | - | 1.5.0 |
+
+### Global static methods
+
+Methods for global configuration and destruction are also provided:
+
+- `message.config(options)`
+- `message.destroy()`
+
+#### message.config
+
+```js
+message.config({
+ top: '100px',
+ duration: 2,
+ maxCount: 3,
+});
+```
+
+| Argument | Description | Type | Default |
+| --- | --- | --- | --- |
+| duration | time before auto-dismiss, in seconds | number | 1.5 |
+| getContainer | Return the mount node for Message | () => HTMLElement | () => document.body |
+| maxCount | max message show, drop oldest if exceed limit | number | - |
+| top | distance from top | string | `24px` |
diff --git a/antdv-demo/docs/message/index.zh-CN.md b/antdv-demo/docs/message/index.zh-CN.md
new file mode 100644
index 000000000..773970896
--- /dev/null
+++ b/antdv-demo/docs/message/index.zh-CN.md
@@ -0,0 +1,65 @@
+## API
+
+组件提供了一些静态方法,使用方式和参数如下:
+
+- `message.success(content, [duration], onClose)`
+- `message.error(content, [duration], onClose)`
+- `message.info(content, [duration], onClose)`
+- `message.warning(content, [duration], onClose)`
+- `message.warn(content, [duration], onClose)` // alias of warning
+- `message.loading(content, [duration], onClose)`
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| content | 提示内容 | string\| VNode \|(h) => VNode | - |
+| duration | 自动关闭的延时,单位秒。设为 0 时不自动关闭。 | number | 3 |
+| onClose | 关闭时触发的回调函数 | Function | - |
+
+组件同时提供 promise 接口
+
+- `message[level](content, [duration]).then(afterClose)`
+- `message[level](content, [duration], onClose).then(afterClose)`
+
+其中`message[level]` 是组件已经提供的静态方法。`then` 接口返回值是 Promise 。
+
+也可以对象的形式传递参数:
+
+- `message.open(config)`
+- `message.success(config)`
+- `message.error(config)`
+- `message.info(config)`
+- `message.warning(config)`
+- `message.warn(config)` // alias of warning
+- `message.loading(config)`
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| content | 提示内容 | string\| VNode \|(h) => VNode | - | |
+| duration | 自动关闭的延时,单位秒。设为 0 时不自动关闭。 | number | 3 | |
+| onClose | 关闭时触发的回调函数 | Function | - | |
+| icon | 自定义图标 | string\| VNode \|(h) => VNode | - | |
+| key | 当前提示的唯一标志 | string\|number | - | 1.5.0 |
+
+### 全局方法
+
+还提供了全局配置和全局销毁方法:
+
+- `message.config(options)`
+- `message.destroy()`
+
+#### message.config
+
+```js
+message.config({
+ top: `100px`,
+ duration: 2,
+ maxCount: 3,
+});
+```
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| duration | 默认自动关闭延时,单位秒 | number | 3 |
+| getContainer | 配置渲染节点的输出位置 | () => HTMLElement | () => document.body |
+| maxCount | 最大显示数, 超过限制时,最早的消息会被自动关闭 | number | - |
+| top | 消息距离顶部的位置 | string | `24px` |
diff --git a/antdv-demo/docs/modal/demo/async.md b/antdv-demo/docs/modal/demo/async.md
new file mode 100644
index 000000000..ec1d926fb
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/async.md
@@ -0,0 +1,57 @@
+
+#### 异步关闭
+点击确定后异步关闭对话框,例如提交表单。
+
+
+
+#### Asynchronously close
+Asynchronously close a modal dialog when a user clicked OK button, for example,
+you can use this pattern when you submit a form.
+
+
+```vue
+
+
+
+ Open Modal with async logic
+
+
+ {{ ModalText }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/basic.md b/antdv-demo/docs/modal/demo/basic.md
new file mode 100644
index 000000000..f26707c56
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/basic.md
@@ -0,0 +1,42 @@
+
+#### 基本
+第一个对话框。
+
+
+
+#### Basic
+Basic modal.
+
+
+```vue
+
+
+
+ Open Modal
+
+
+ Some contents...
+ Some contents...
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/button-props.md b/antdv-demo/docs/modal/demo/button-props.md
new file mode 100644
index 000000000..df09cfb48
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/button-props.md
@@ -0,0 +1,52 @@
+
+#### 自定义页脚按钮属性
+传入 `okButtonProps` 和 `cancelButtonProps` 可分别自定义确定按钮和取消按钮的 props。
+
+
+
+#### Customize footer buttons props
+Passing `okButtonProps` and `cancelButtonProps` can customize the ok button and cancel button props.
+
+
+```vue
+
+
+
+ Open Modal with customized button props
+
+
+ Some contents...
+ Some contents...
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/confirm-promise.md b/antdv-demo/docs/modal/demo/confirm-promise.md
new file mode 100644
index 000000000..50e49c7f2
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/confirm-promise.md
@@ -0,0 +1,36 @@
+
+#### 确认对话框(promise)
+使用 `confirm()` 可以快捷地弹出确认框。onCancel/onOk 返回 promise 可以延迟关闭
+
+
+
+#### Confirmation modal dialog use promise
+To use `confirm()` to popup confirmation modal dialog. Let onCancel/onOk function return a promise object to
+delay closing the dialog.
+
+
+```vue
+
+
+ Confirm
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/confirm-router.md b/antdv-demo/docs/modal/demo/confirm-router.md
new file mode 100644
index 000000000..f9a8ea525
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/confirm-router.md
@@ -0,0 +1,45 @@
+
+#### 销毁确认对话框
+使用 `Modal.destroyAll()` 可以销毁弹出的确认窗。通常用于路由监听当中,处理路由前进、后退不能销毁确认对话框的问题。
+
+
+
+#### destroy confirmation modal dialog
+`Modal.destroyAll()` could destroy all confirmation modal dialogs. Usually, you can use it in router change event to destroy confirm modal dialog automatically
+
+
+```vue
+
+
+ Confirm
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/confirm.md b/antdv-demo/docs/modal/demo/confirm.md
new file mode 100644
index 000000000..99429d8a2
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/confirm.md
@@ -0,0 +1,78 @@
+
+#### 确认对话框
+使用 `confirm()` 可以快捷地弹出确认框。
+
+
+
+#### Confirmation modal dialog
+To use `confirm()` to show a confirmation modal dialog.
+
+
+```vue
+
+
+
+ Confirm
+
+
+ Delete
+
+
+ With extra props
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/footer.md b/antdv-demo/docs/modal/demo/footer.md
new file mode 100644
index 000000000..0e6de5e3b
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/footer.md
@@ -0,0 +1,63 @@
+
+#### 自定义页脚
+更复杂的例子,自定义了页脚的按钮,点击提交后进入 loading 状态,完成后关闭。
+不需要默认确定取消按钮时,你可以把 `footer` 设为 `null`。
+
+
+
+#### Customized Footer
+A more complex example which define a customized footer button bar,
+the dialog will change to loading state after clicking submit button, when the loading is over,
+the modal dialog will be closed.
+You could set `footer` to `null` if you don't need default footer buttons.
+
+
+```vue
+
+
+
+ Open Modal with customized footer
+
+
+
+
+ Return
+
+
+ Submit
+
+
+ Some contents...
+ Some contents...
+ Some contents...
+ Some contents...
+ Some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/index.vue b/antdv-demo/docs/modal/demo/index.vue
new file mode 100644
index 000000000..37c146c53
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/index.vue
@@ -0,0 +1,70 @@
+
+
+
diff --git a/antdv-demo/docs/modal/demo/info.md b/antdv-demo/docs/modal/demo/info.md
new file mode 100644
index 000000000..9e96ea0d0
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/info.md
@@ -0,0 +1,73 @@
+
+#### 信息提示
+各种类型的信息提示,只提供一个按钮用于关闭。
+
+
+
+#### Information modal dialog
+In the various types of information modal dialog, only one button to close dialog is provided.
+
+
+```vue
+
+
+
+ Info
+
+
+ Success
+
+
+ Error
+
+
+ Warning
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/locale.md b/antdv-demo/docs/modal/demo/locale.md
new file mode 100644
index 000000000..6f33308ab
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/locale.md
@@ -0,0 +1,54 @@
+
+#### 国际化
+设置 `okText` 与 `cancelText` 以自定义按钮文字。
+
+
+
+#### Internationalization
+To customize the text of the buttons, you need to set `okText` and `cancelText` props.
+
+
+```vue
+
+
+
+ Modal
+
+
+ Bla bla ...
+ Bla bla ...
+ Bla bla ...
+
+
+
+
+ Confirm
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/manual.md b/antdv-demo/docs/modal/demo/manual.md
new file mode 100644
index 000000000..dbc8d15b4
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/manual.md
@@ -0,0 +1,40 @@
+
+#### 手动更新和移除
+手动更新和关闭 `Modal.method` 方式创建的对话框。
+
+
+
+#### Manual to update destroy
+Manually updating and destroying a modal from `Modal.method`.
+
+
+```vue
+
+
+ Open modal to close in 5s
+
+
+
+```
diff --git a/antdv-demo/docs/modal/demo/position.md b/antdv-demo/docs/modal/demo/position.md
new file mode 100644
index 000000000..6bc05a157
--- /dev/null
+++ b/antdv-demo/docs/modal/demo/position.md
@@ -0,0 +1,59 @@
+
+#### 自定义位置
+使用 `centered` 或类似 `dialogStyle.top` 的样式来设置对话框位置。
+
+
+
+#### To customize the position of modal
+You can use `centered`,`dialogStyle.top` or other styles to set position of modal dialog.
+
+
+```vue
+
+
+
setModal1Visible(true)">
+ Display a modal dialog at 20px to Top
+
+
setModal1Visible(false)"
+ @cancel="() => setModal1Visible(false)"
+ >
+ some contents...
+ some contents...
+ some contents...
+
+
+
(modal2Visible = true)">
+ Vertically centered modal dialog
+
+
(modal2Visible = false)"
+ >
+ some contents...
+ some contents...
+ some contents...
+
+
+
+
+```
diff --git a/antdv-demo/docs/modal/index.en-US.md b/antdv-demo/docs/modal/index.en-US.md
new file mode 100644
index 000000000..f7a843260
--- /dev/null
+++ b/antdv-demo/docs/modal/index.en-US.md
@@ -0,0 +1,102 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| afterClose | Specify a function that will be called when modal is closed completely. | function | - | |
+| bodyStyle | Body style for modal body element. Such as height, padding etc. | object | {} | |
+| cancelText | Text of the Cancel button | string\|slot | `Cancel` | |
+| centered | Centered Modal | Boolean | `false` | |
+| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | true | |
+| closeIcon | custom close icon | VNode \| slot | - | 1.5.0 |
+| confirmLoading | Whether to apply loading visual effect for OK button or not | boolean | false | |
+| destroyOnClose | Whether to unmount child components on onClose | boolean | false | |
+| footer | Footer content, set as `:footer="null"` when you don't need default buttons | string\|slot | OK and Cancel buttons | |
+| forceRender | Force render Modal | boolean | false | |
+| getContainer | Return the mount node for Modal | (instance): HTMLElement | () => document.body | |
+| mask | Whether show mask or not. | Boolean | true | |
+| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | boolean | true | |
+| maskStyle | Style for modal's mask element. | object | {} | |
+| okText | Text of the OK button | string\|slot | `OK` | |
+| okType | Button `type` of the OK button | string | `primary` | |
+| okButtonProps | The ok button props, follow jsx [rules](https://github.com/vuejs/babel-plugin-transform-vue-jsx#difference-from-react-jsx) | {props: [ButtonProps](/components/button/#API), on: {}} | - | |
+| cancelButtonProps | The cancel button props, follow jsx [rules](https://github.com/vuejs/babel-plugin-transform-vue-jsx#difference-from-react-jsx) | {props: [ButtonProps](/components/button/#API), on: {}} | - | |
+| title | The modal dialog's title | string\|slot | - | |
+| visible | Whether the modal dialog is visible or not | boolean | false | |
+| width | Width of the modal dialog | string\|number | 520 | |
+| wrapClassName | The class name of the container of the modal dialog | string | - | |
+| zIndex | The `z-index` of the Modal | Number | 1000 | |
+| dialogStyle | Style of floating layer, typically used at least for adjusting the position. | object | - | 1.6.1 |
+| dialogClass | className of floating layer. | string | - | 1.6.1 |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| cancel | Specify a function that will be called when a user clicks mask, close button on top right or Cancel button | function(e) |
+| ok | Specify a function that will be called when a user clicks the OK button | function(e) |
+
+#### Note
+
+> The state of Modal will be preserved at it's component lifecycle by default, if you wish to open it with a brand new state everytime, set `destroyOnClose` on it.
+
+### Modal.method()
+
+There are five ways to display the information based on the content's nature:
+
+- `Modal.info`
+- `Modal.success`
+- `Modal.error`
+- `Modal.warning`
+- `Modal.confirm`
+
+The items listed above are all functions, expecting a settings object as parameter. The properties of the object are follows:
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| autoFocusButton | Specify which button to autofocus | null\|string: `ok` `cancel` | `ok` | |
+| cancelText | Text of the Cancel button | string | `Cancel` | |
+| centered | Centered Modal | Boolean | `false` | |
+| closable | Whether a close (x) button is visible on top right of the modal dialog or not | boolean | `false` | |
+| class | class of container | string | - | |
+| content | Content | string\|vNode \|function(h) | - | |
+| icon | custom icon (`Added in 1.14.0`) | string\|()=>VNode | `` | |
+| iconType | Icon `type` of the Icon component (deperated after `1.14.0`) | string | `question-circle` | |
+| keyboard | Whether support press esc to close | Boolean | true | |
+| mask | Whether show mask or not. | Boolean | true | |
+| maskClosable | Whether to close the modal dialog when the mask (area outside the modal) is clicked | Boolean | `false` | |
+| okText | Text of the OK button | string | `OK` | |
+| okType | Button `type` of the OK button | string | `primary` | |
+| okButtonProps | The ok button props | [ButtonProps](/components/button) | - | |
+| cancelButtonProps | The cancel button props | [ButtonProps](/components/button) | - | |
+| title | Title | string\|vNode \|function(h) | - | |
+| width | Width of the modal dialog | string\|number | 416 | |
+| zIndex | The `z-index` of the Modal | Number | 1000 | |
+| onCancel | Specify a function that will be called when the user clicks the Cancel button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | |
+| onOk | Specify a function that will be called when the user clicks the OK button. The parameter of this function is a function whose execution should include closing the dialog. You can also just return a promise and when the promise is resolved, the modal dialog will also be closed | function | - | |
+| parentContext | The parent context of the popup is generally used to get the parent provider, such as the configuration of `ConfigProvider` | vue instance | - | 1.4.11 |
+
+All the `Modal.method`s will return a reference, and then we can update and close the modal dialog by the reference.
+
+```jsx
+const modal = Modal.info();
+
+modal.update({
+ title: 'Updated title',
+ content: 'Updated content',
+});
+
+modal.destroy();
+```
+
+- `Modal.destroyAll`
+
+`Modal.destroyAll()` could destroy all confirmation modal dialogs(Modal.info/Modal.success/Modal.error/Modal.warning/Modal.confirm). Usually, you can use it in router change event to destroy confirm modal dialog automatically without use modal reference to close( it's too complex to use for all modal dialogs)
+
+```jsx
+const router = new VueRouter({ ... })
+
+// router change
+router.beforeEach((to, from, next) => {
+ Modal.destroyAll();
+})
+```
diff --git a/antdv-demo/docs/modal/index.zh-CN.md b/antdv-demo/docs/modal/index.zh-CN.md
new file mode 100644
index 000000000..8fb37a573
--- /dev/null
+++ b/antdv-demo/docs/modal/index.zh-CN.md
@@ -0,0 +1,103 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| afterClose | Modal 完全关闭后的回调 | function | 无 | |
+| bodyStyle | Modal body 样式 | object | {} | |
+| cancelText | 取消按钮文字 | string\| slot | 取消 | |
+| centered | 垂直居中展示 Modal | Boolean | `false` | |
+| closable | 是否显示右上角的关闭按钮 | boolean | true | |
+| closeIcon | 自定义关闭图标 | VNode \| slot | - | 1.5.0 |
+| confirmLoading | 确定按钮 loading | boolean | 无 | |
+| destroyOnClose | 关闭时销毁 Modal 里的子元素 | boolean | false | |
+| footer | 底部内容,当不需要默认底部按钮时,可以设为 `:footer="null"` | string\|slot | 确定取消按钮 | |
+| forceRender | 强制渲染 Modal | boolean | false | |
+| getContainer | 指定 Modal 挂载的 HTML 节点 | (instance): HTMLElement | () => document.body | |
+| keyboard | 是否支持键盘 esc 关闭 | boolean | true | |
+| mask | 是否展示遮罩 | Boolean | true | |
+| maskClosable | 点击蒙层是否允许关闭 | boolean | true | |
+| maskStyle | 遮罩样式 | object | {} | |
+| okText | 确认按钮文字 | string\|slot | 确定 | |
+| okType | 确认按钮类型 | string | primary | |
+| okButtonProps | ok 按钮 props, 遵循 jsx[规范](https://github.com/vuejs/babel-plugin-transform-vue-jsx#difference-from-react-jsx) | {props: [ButtonProps](/components/button/#API), on: {}} | - | |
+| cancelButtonProps | cancel 按钮 props, 遵循 jsx[规范](https://github.com/vuejs/babel-plugin-transform-vue-jsx#difference-from-react-jsx) | {props: [ButtonProps](/components/button/#API), on: {}} | - | |
+| title | 标题 | string\|slot | 无 | |
+| visible(v-model) | 对话框是否可见 | boolean | 无 | |
+| width | 宽度 | string\|number | 520 | |
+| wrapClassName | 对话框外层容器的类名 | string | - | |
+| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | |
+| dialogStyle | 可用于设置浮层的样式,调整浮层位置等 | object | - | 1.6.1 |
+| dialogClass | 可用于设置浮层的类名 | string | - | 1.6.1 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ------------------------------------ | ----------- |
+| cancel | 点击遮罩层或右上角叉或取消按钮的回调 | function(e) |
+| ok | 点击确定回调 | function(e) |
+
+#### 注意
+
+> ` ` 默认关闭后状态不会自动清空, 如果希望每次打开都是新内容,请设置 `destroyOnClose`。
+
+### Modal.method()
+
+包括:
+
+- `Modal.info`
+- `Modal.success`
+- `Modal.error`
+- `Modal.warning`
+- `Modal.confirm`
+
+以上均为一个函数,参数为 object,具体属性如下:
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| autoFocusButton | 指定自动获得焦点的按钮 | null\|string: `ok` `cancel` | `ok` | |
+| cancelText | 取消按钮文字 | string | 取消 | |
+| centered | 垂直居中展示 Modal | Boolean | `false` | |
+| closable | 是否显示右上角的关闭按钮 | boolean | `false` | |
+| class | 容器类名 | string | - | |
+| content | 内容 | string \|vNode \|function(h) | 无 | |
+| icon | 自定义图标(1.14.0 新增) | string\|()=>VNode | `` | |
+| iconType | 图标类型(1.14.0 后废弃,请使用 `icon`) | string | `question-circle` | |
+| mask | 是否展示遮罩 | Boolean | true | |
+| maskClosable | 点击蒙层是否允许关闭 | Boolean | `false` | |
+| keyboard | 是否支持键盘 esc 关闭 | boolean | true | |
+| okText | 确认按钮文字 | string | 确定 | |
+| okType | 确认按钮类型 | string | primary | |
+| okButtonProps | ok 按钮 props | [ButtonProps](/components/button) | - | |
+| cancelButtonProps | cancel 按钮 props | [ButtonProps](/components/button) | - | |
+| title | 标题 | string\|vNode \|function(h) | 无 | |
+| width | 宽度 | string\|number | 416 | |
+| zIndex | 设置 Modal 的 `z-index` | Number | 1000 | |
+| onCancel | 取消回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | |
+| onOk | 点击确定回调,参数为关闭函数,返回 promise 时 resolve 后自动关闭 | function | 无 | |
+| parentContext | 弹窗的父级上下文,一般用于获取父级 provider, 如获取 `ConfigProvider` 的配置 | vue instance | - | 1.4.11 |
+
+以上函数调用后,会返回一个引用,可以通过该引用更新和关闭弹窗。
+
+```jsx
+const modal = Modal.info();
+
+modal.update({
+ title: '修改的标题',
+ content: '修改的内容',
+});
+
+modal.destroy();
+```
+
+- `Modal.destroyAll`
+
+使用 `Modal.destroyAll()` 可以销毁弹出的确认窗(即上述的 Modal.info、Modal.success、Modal.error、Modal.warning、Modal.confirm)。通常用于路由监听当中,处理路由前进、后退不能销毁确认对话框的问题,而不用各处去使用实例的返回值进行关闭(modal.destroy() 适用于主动关闭,而不是路由这样被动关闭)
+
+```jsx
+const router = new VueRouter({ ... })
+
+// router change
+router.beforeEach((to, from, next) => {
+ Modal.destroyAll();
+})
+```
diff --git a/antdv-demo/docs/notification/demo/basic.md b/antdv-demo/docs/notification/demo/basic.md
new file mode 100644
index 000000000..4c9a63cea
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/basic.md
@@ -0,0 +1,33 @@
+
+#### 基本
+最简单的用法,4.5 秒后自动关闭。
+
+
+
+#### Basic
+The simplest usage that close the notification box after 4.5s.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/custom-icon.md b/antdv-demo/docs/notification/demo/custom-icon.md
new file mode 100644
index 000000000..38e26ec40
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/custom-icon.md
@@ -0,0 +1,31 @@
+
+#### 自定义图标
+图标可以被自定义。
+
+
+
+#### Customized Icon
+The icon can be customized to any vue node or (h) => vue node.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/custom-style.md b/antdv-demo/docs/notification/demo/custom-style.md
new file mode 100644
index 000000000..f925546c4
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/custom-style.md
@@ -0,0 +1,34 @@
+
+#### 自定义样式
+使用 style 和 className 来定义样式。
+
+
+
+#### Customized style
+The style and className are available to customize Notification.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/duration.md b/antdv-demo/docs/notification/demo/duration.md
new file mode 100644
index 000000000..378591d2e
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/duration.md
@@ -0,0 +1,33 @@
+
+#### 自动关闭的延时
+自定义通知框自动关闭的延时,默认`4.5s`,取消自动关闭只要将该值设为 `0` 即可。
+
+
+
+#### Duration after which the notification box is closed
+`Duration` can be used to specify how long the notification stays open. After the duration time elapses,
+the notification closes automatically. If not specified, default value is 4.5 seconds. If you set the value to 0,
+the notification box will never close automatically.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/index.vue b/antdv-demo/docs/notification/demo/index.vue
new file mode 100644
index 000000000..3b3e5b344
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/index.vue
@@ -0,0 +1,62 @@
+
diff --git a/antdv-demo/docs/notification/demo/placement.md b/antdv-demo/docs/notification/demo/placement.md
new file mode 100644
index 000000000..a0983c1c2
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/placement.md
@@ -0,0 +1,47 @@
+
+#### 位置
+可以设置通知从右上角、右下角、左下角、左上角弹出。
+
+
+
+#### Placement
+A notification box can pop up from `topRight` or `bottomRight` or `bottomLeft` or `topLeft`.
+
+
+```vue
+
+
+
+
+ topLeft
+
+
+
+ topRight
+
+
+
+
+ bottomLeft
+
+
+
+ bottomRight
+
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/update.md b/antdv-demo/docs/notification/demo/update.md
new file mode 100644
index 000000000..8d52426ba
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/update.md
@@ -0,0 +1,38 @@
+
+#### 更新消息内容
+可以通过唯一的 key 来更新内容。
+
+
+
+#### Update Message Content
+Update content with unique key.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/with-btn.md b/antdv-demo/docs/notification/demo/with-btn.md
new file mode 100644
index 000000000..6f6bc7dc8
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/with-btn.md
@@ -0,0 +1,53 @@
+
+#### 自定义按钮
+自定义关闭按钮的样式和文字。
+
+
+
+#### Custom close button
+To customize the style or font of the close button.
+
+
+```vue
+
+
+ Open the notification box
+
+
+
+```
diff --git a/antdv-demo/docs/notification/demo/with-icon.md b/antdv-demo/docs/notification/demo/with-icon.md
new file mode 100644
index 000000000..27a5b73ef
--- /dev/null
+++ b/antdv-demo/docs/notification/demo/with-icon.md
@@ -0,0 +1,41 @@
+
+#### 带有图标的通知提醒框
+通知提醒框左侧有图标。
+
+
+
+#### Notification with icon
+A notification box with a icon at the left side.
+
+
+```vue
+
+
+
openNotificationWithIcon('success')">
+ Success
+
+
openNotificationWithIcon('info')">
+ Info
+
+
openNotificationWithIcon('warning')">
+ Warning
+
+
openNotificationWithIcon('error')">
+ Error
+
+
+
+
+```
diff --git a/antdv-demo/docs/notification/index.en-US.md b/antdv-demo/docs/notification/index.en-US.md
new file mode 100644
index 000000000..1544f5668
--- /dev/null
+++ b/antdv-demo/docs/notification/index.en-US.md
@@ -0,0 +1,51 @@
+## API
+
+- `notification.success(config)`
+- `notification.error(config)`
+- `notification.info(config)`
+- `notification.warning(config)`
+- `notification.warn(config)`
+- `notification.open(config)`
+- `notification.close(key: String)`
+- `notification.destroy()`
+
+The properties of config are as follows:
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels). | string | `24px` | 1.5.0 |
+| btn | Customized close button | vueNode \|function(h) | - | |
+| class | Customized CSS class | string | - | |
+| description | The content of notification box (required) | string\| vueNode \|function(h) | - | |
+| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 | |
+| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body | |
+| icon | Customized icon | vueNode \|function(h) | - | |
+| key | The unique identifier of the Notification | string | - | |
+| message | The title of notification box (required) | string\|vueNode \|function(h) | - | |
+| placement | Position of Notification, can be one of `topLeft` `topRight` `bottomLeft` `bottomRight` | string | `topRight` | |
+| style | Customized inline style | Object \| string | - | |
+| onClose | Specify a function that will be called when the close button is clicked | Function | - | |
+| onClick | Specify a function that will be called when the notification is clicked | Function | - | |
+| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels). | string | `24px` | 1.5.0 |
+| closeIcon | custom close icon | VNode \| function(h) | - | 1.5.0 |
+
+`notification` also provides a global `config()` method that can be used for specifying the default options. Once this method is used, all the notification boxes will take into account these globally defined options when displaying.
+
+- `notification.config(options)`
+
+```js
+notification.config({
+ placement: 'bottomRight',
+ bottom: '50px',
+ duration: 3,
+});
+```
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels). | string | `24px` | |
+| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 | |
+| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body | |
+| placement | Position of Notification, can be one of `topLeft` `topRight` `bottomLeft` `bottomRight` | string | `topRight` | |
+| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels). | string | `24px` | |
+| closeIcon | custom close icon | VNode \| function(h) | - | 1.5.0 |
diff --git a/antdv-demo/docs/notification/index.zh-CN.md b/antdv-demo/docs/notification/index.zh-CN.md
new file mode 100644
index 000000000..75659342d
--- /dev/null
+++ b/antdv-demo/docs/notification/index.zh-CN.md
@@ -0,0 +1,59 @@
+## 何时使用
+
+在系统四个角显示通知提醒信息。经常用于以下情况:
+
+- 较为复杂的通知内容。
+- 带有交互的通知,给出用户下一步的行动点。
+- 系统主动推送。
+
+## API
+
+- `notification.success(config)`
+- `notification.error(config)`
+- `notification.info(config)`
+- `notification.warning(config)`
+- `notification.warn(config)`
+- `notification.open(config)`
+- `notification.close(key: String)`
+- `notification.destroy()`
+
+config 参数如下:
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| btn | 自定义关闭按钮 | vueNode \|function(h) | - | |
+| bottom | 消息从底部弹出时,距离底部的位置,单位像素。 | string | `24px` | 1.5.0 |
+| class | 自定义 CSS class | string | - | |
+| description | 通知提醒内容,必选 | string \|vueNode \|function(h) | - | |
+| duration | 默认 4.5 秒后自动关闭,配置为 null 则不自动关闭 | number | 4.5 | |
+| getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body | |
+| icon | 自定义图标 | vueNode \|function(h) | - | |
+| key | 当前通知唯一标志 | string | - | |
+| message | 通知提醒标题,必选 | string \|vueNode \|function(h) | - | |
+| placement | 弹出位置,可选 `topLeft` `topRight` `bottomLeft` `bottomRight` | string | topRight | |
+| style | 自定义内联样式 | Object \| string | - | |
+| onClose | 点击默认关闭按钮时触发的回调函数 | Function | - | |
+| onClick | 点击通知时触发的回调函数 | Function | - | |
+| top | 消息从顶部弹出时,距离顶部的位置,单位像素。 | string | `24px` | 1.5.0 |
+| closeIcon | 自定义关闭图标 | VNode \| function(h) | - | 1.5.0 |
+
+还提供了一个全局配置方法,在调用前提前配置,全局一次生效。
+
+- `notification.config(options)`
+
+```js
+notification.config({
+ placement: 'bottomRight',
+ bottom: '50px',
+ duration: 3,
+});
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| bottom | 消息从底部弹出时,距离底部的位置,单位像素。 | string | `24px` | |
+| duration | 默认自动关闭延时,单位秒 | number | 4.5 | |
+| getContainer | 配置渲染节点的输出位置 | () => HTMLNode | () => document.body | |
+| placement | 弹出位置,可选 `topLeft` `topRight` `bottomLeft` `bottomRight` | string | topRight | |
+| top | 消息从顶部弹出时,距离顶部的位置,单位像素。 | string | `24px` | |
+| closeIcon | 自定义关闭图标 | VNode \| function(h) | - | 1.5.0 |
diff --git a/antdv-demo/docs/page-header/demo/actions.md b/antdv-demo/docs/page-header/demo/actions.md
new file mode 100644
index 000000000..3d62c3ca1
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/actions.md
@@ -0,0 +1,87 @@
+
+#### 多种形态的 PageHeader
+使用操作区,并自定义子节点,适合使用在需要展示一些复杂的信息,帮助用户快速了解这个页面的信息和操作。
+
+
+
+#### Various forms of PageHeader
+Use the operating area and customize the sub-nodes, suitable for use in the need to display some complex information to help users quickly understand the information and operations of this page.
+
+
+```vue
+
+
+
$router.go(-1)"
+ >
+
+
+ Operation
+
+
+ Operation
+
+
+ Primary
+
+
+
+
+ Lili Qu
+
+
+ 421421
+
+
+ 2017-01-10
+
+
+ 2017-10-10
+
+
+ Gonghu Road, Xihu District, Hangzhou, Zhejiang, China
+
+
+
+
+
$router.go(-1)">
+
+
+ Running
+
+
+
+
+ Operation
+
+
+ Operation
+
+
+ Primary
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/page-header/demo/basic.md b/antdv-demo/docs/page-header/demo/basic.md
new file mode 100644
index 000000000..ef7ae43e3
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/basic.md
@@ -0,0 +1,20 @@
+
+#### 标准样式
+标准页头,适合使用在需要简单描述的场景。
+
+
+
+#### Basic Page Header
+Standard header, suitable for use in scenarios that require a brief description.
+
+
+```vue
+
+ null"
+ />
+
+```
diff --git a/antdv-demo/docs/page-header/demo/breadcrumb.md b/antdv-demo/docs/page-header/demo/breadcrumb.md
new file mode 100644
index 000000000..827d60ea3
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/breadcrumb.md
@@ -0,0 +1,42 @@
+
+#### 带面包屑页头
+带面包屑页头,适合层级比较深的页面,让用户可以快速导航。
+
+
+
+#### Use with breadcrumbs
+With breadcrumbs, it is suitable for deeper pages, allowing users to navigate quickly.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/page-header/demo/ghost.md b/antdv-demo/docs/page-header/demo/ghost.md
new file mode 100644
index 000000000..90fa6854a
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/ghost.md
@@ -0,0 +1,56 @@
+
+#### 白底模式
+默认 PageHeader 是透明底色的。在某些情况下,PageHeader 需要自己的背景颜色。
+
+
+
+#### white background mode
+The default PageHeader is a transparent background. In some cases, PageHeader needs its own background color.
+
+
+```vue
+
+
+
$router.go(-1)"
+ >
+
+
+ Operation
+
+
+ Operation
+
+
+ Primary
+
+
+
+
+ Lili Qu
+
+
+ 421421
+
+
+ 2017-01-10
+
+
+ 2017-10-10
+
+
+ Gonghu Road, Xihu District, Hangzhou, Zhejiang, China
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/page-header/demo/index.vue b/antdv-demo/docs/page-header/demo/index.vue
new file mode 100644
index 000000000..36656619b
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/index.vue
@@ -0,0 +1,59 @@
+
diff --git a/antdv-demo/docs/page-header/demo/responsive.md b/antdv-demo/docs/page-header/demo/responsive.md
new file mode 100644
index 000000000..596114239
--- /dev/null
+++ b/antdv-demo/docs/page-header/demo/responsive.md
@@ -0,0 +1,107 @@
+
+#### 响应式
+在不同大小的屏幕下,应该有不同的表现
+
+
+
+#### responsive
+Under different screen sizes, there should be different performance
+
+
+```vue
+
+
+
$router.go(-1)"
+ >
+
+
+ Operation
+
+
+ Operation
+
+
+ Primary
+
+
+
+
+
+
+
+
+
+
+
+
+ Lili Qu
+
+
+ 421421
+
+
+ 2017-01-10
+
+
+ 2017-10-10
+
+
+ Gonghu Road, Xihu District, Hangzhou, Zhejiang, China
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/page-header/index.en-US.md b/antdv-demo/docs/page-header/index.en-US.md
new file mode 100644
index 000000000..fc7b2f369
--- /dev/null
+++ b/antdv-demo/docs/page-header/index.en-US.md
@@ -0,0 +1,19 @@
+## API
+
+| Param | Description | Type | Default value |
+| --- | --- | --- | --- |
+| title | custom title text | string\|slot | - |
+| subTitle | custom subTitle text | string\|slot | - |
+| ghost | PageHeader type, will change background color | boolean | true |
+| avatar | Avatar next to the title bar | [avatar props](/components/avatar/) | - |
+| backIcon | custom back icon, if false the back icon will not be displayed | string\|slot | ` ` |
+| tags | Tag list next to title | [Tag](/components/tag/)[] \| [Tag](/components/tag/) | - |
+| extra | Operating area, at the end of the line of the title line | string\|slot | - |
+| breadcrumb | Breadcrumb configuration | [breadcrumb](/components/breadcrumb/) | - |
+| footer | PageHeader's footer, generally used to render TabBar | string\|slot | - |
+
+### Events
+
+| Events Name | Description | Arguments |
+| ----------- | --------------------- | ----------- |
+| back | back icon click event | function(e) |
diff --git a/antdv-demo/docs/page-header/index.zh-CN.md b/antdv-demo/docs/page-header/index.zh-CN.md
new file mode 100644
index 000000000..ad224f9e2
--- /dev/null
+++ b/antdv-demo/docs/page-header/index.zh-CN.md
@@ -0,0 +1,19 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| title | 自定义标题文字 | string\|slot | - |
+| subTitle | 自定义的二级标题文字 | string\|slot | - |
+| ghost | pageHeader 的类型,将会改变背景颜色 | boolean | true |
+| avatar | 标题栏旁的头像 | [avatar props](/components/avatar-cn/) | - |
+| backIcon | 自定义 back icon ,如果为 false 不渲染 back icon | string\|slot | ` ` |
+| tags | title 旁的 tag 列表 | [Tag](/components/tag-cn/)[] \| [Tag](/components/tag-cn/) | - |
+| extra | 操作区,位于 title 行的行尾 | string\|slot | - |
+| breadcrumb | 面包屑的配置 | [breadcrumb](/components/breadcrumb-cn/) | - |
+| footer | PageHeader 的页脚,一般用于渲染 TabBar | string\|slot | - |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ------------------ | ----------- |
+| back | 返回按钮的点击事件 | function(e) |
diff --git a/antdv-demo/docs/pagination/demo/basic.md b/antdv-demo/docs/pagination/demo/basic.md
new file mode 100644
index 000000000..627d21d19
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/basic.md
@@ -0,0 +1,24 @@
+
+#### 基本
+基础分页。
+
+
+
+#### Basic
+Basic pagination.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/changer.md b/antdv-demo/docs/pagination/demo/changer.md
new file mode 100644
index 000000000..7b2ed06b1
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/changer.md
@@ -0,0 +1,54 @@
+
+#### 改变
+改变每页显示条目数。
+
+
+
+#### Changer
+Change `pageSize`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/controlled.md b/antdv-demo/docs/pagination/demo/controlled.md
new file mode 100644
index 000000000..b4ae1a465
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/controlled.md
@@ -0,0 +1,29 @@
+
+#### 受控
+受控制的页码。
+
+
+
+#### Controlled
+Controlled page number.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/custom-changer.md b/antdv-demo/docs/pagination/demo/custom-changer.md
new file mode 100644
index 000000000..8e64c1066
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/custom-changer.md
@@ -0,0 +1,44 @@
+
+#### 自定义下拉选项
+自定义下拉选项,例如添加全部选项
+
+
+
+#### Custom dropdown options
+Customize dropdown options such as adding all options
+
+
+```vue
+
+
+
+ {{ props.value }}条/页
+ 全部
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/index.vue b/antdv-demo/docs/pagination/demo/index.vue
new file mode 100644
index 000000000..5cb914459
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/index.vue
@@ -0,0 +1,69 @@
+
diff --git a/antdv-demo/docs/pagination/demo/itemRender.md b/antdv-demo/docs/pagination/demo/itemRender.md
new file mode 100644
index 000000000..208fb9eda
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/itemRender.md
@@ -0,0 +1,29 @@
+
+#### 上一步和下一步
+修改上一步和下一步为文字链接。
+
+
+
+#### Prev and next
+Use text link for prev and next button.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/jump.md b/antdv-demo/docs/pagination/demo/jump.md
new file mode 100644
index 000000000..a63fed49e
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/jump.md
@@ -0,0 +1,35 @@
+
+#### 跳转
+快速跳转到某一页。
+
+
+
+#### Jumper
+Jump to a page directly.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/mini.md b/antdv-demo/docs/pagination/demo/mini.md
new file mode 100644
index 000000000..bf6e8639c
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/mini.md
@@ -0,0 +1,24 @@
+
+#### 迷你
+迷你版本。
+
+
+
+#### Mini size
+Mini size pagination.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/more.md b/antdv-demo/docs/pagination/demo/more.md
new file mode 100644
index 000000000..b305217c1
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/more.md
@@ -0,0 +1,15 @@
+
+#### 更多
+更多分页。
+
+
+
+#### more
+Mode pages.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/simple.md b/antdv-demo/docs/pagination/demo/simple.md
new file mode 100644
index 000000000..77ac5a4c9
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/simple.md
@@ -0,0 +1,15 @@
+
+#### 简洁
+简单的翻页。
+
+
+
+#### Simple mode
+Simple mode.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/demo/total.md b/antdv-demo/docs/pagination/demo/total.md
new file mode 100644
index 000000000..f6a16e9c2
--- /dev/null
+++ b/antdv-demo/docs/pagination/demo/total.md
@@ -0,0 +1,29 @@
+
+#### 总数
+通过设置 `showTotal` 展示总共有多少数据。
+
+
+
+#### Total number
+You can show the total number of data by setting `showTotal`.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/pagination/index.en-US.md b/antdv-demo/docs/pagination/index.en-US.md
new file mode 100644
index 000000000..d38734190
--- /dev/null
+++ b/antdv-demo/docs/pagination/index.en-US.md
@@ -0,0 +1,31 @@
+## API
+
+```html
+
+```
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| current(v-model) | current page number | number | - | |
+| defaultCurrent | default initial page number | number | 1 | |
+| defaultPageSize | default number of data items per page | number | 10 | |
+| disabled | Disable pagination | boolean | - | 1.5.0 |
+| hideOnSinglePage | Whether to hide pager on single page | boolean | false | |
+| itemRender | to customize item innerHTML | (page, type: 'page' \| 'prev' \| 'next', originalElement) => vNode | - | |
+| pageSize(.sync) | number of data items per page | number | - | |
+| pageSizeOptions | specify the sizeChanger options | string\[] | \['10', '20', '30', '40'] | |
+| showLessItems | Show less page items | boolean | false | 1.5.0 |
+| showQuickJumper | determine whether you can jump to pages directly | boolean | false | |
+| showSizeChanger | determine whether `pageSize` can be changed | boolean | false | |
+| showTitle | Show page item's title | boolean | true | 1.5.0 |
+| showTotal | to display the total number and range | Function(total, range) | - | |
+| simple | whether to use simple mode | boolean | - | |
+| size | specify the size of `Pagination`, can be set to `small` | string | "" | |
+| total | total number of data items | number | 0 | |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | a callback function, executed when the page number is changed, and it takes the resulting page number and pageSize as its arguments | Function(page, pageSize) | noop |
+| showSizeChange | a callback function, executed when `pageSize` is changed | Function(current, size) | noop |
diff --git a/antdv-demo/docs/pagination/index.zh-CN.md b/antdv-demo/docs/pagination/index.zh-CN.md
new file mode 100644
index 000000000..625b71a57
--- /dev/null
+++ b/antdv-demo/docs/pagination/index.zh-CN.md
@@ -0,0 +1,30 @@
+## API
+
+```html
+
+```
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| current(v-model) | 当前页数 | number | - | |
+| defaultCurrent | 默认的当前页数 | number | 1 | |
+| defaultPageSize | 默认的每页条数 | number | 10 | |
+| disabled | 禁用分页 | boolean | - | 1.5.0 |
+| hideOnSinglePage | 只有一页时是否隐藏分页器 | boolean | false | |
+| itemRender | 用于自定义页码的结构,可用于优化 SEO | (page, type: 'page' \| 'prev' \| 'next', originalElement) => vNode | - | |
+| pageSize(.sync) | 每页条数 | number | - | |
+| pageSizeOptions | 指定每页可以显示多少条 | string\[] | \['10', '20', '30', '40'] | |
+| showLessItems | show less page items | boolean | false | 1.5.0 |
+| showQuickJumper | 是否可以快速跳转至某页 | boolean | false | |
+| showSizeChanger | 是否可以改变 pageSize | boolean | false | |
+| showTotal | 用于显示数据总量和当前数据顺序 | Function(total, range) | - | |
+| simple | 当添加该属性时,显示为简单分页 | boolean | - | |
+| size | 当为「small」时,是小尺寸分页 | string | "" | |
+| total | 数据总数 | number | 0 | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------------- | -------------------------------------------- | ------------------------ |
+| change | 页码改变的回调,参数是改变后的页码及每页条数 | Function(page, pageSize) | noop |
+| showSizeChange | pageSize 变化的回调 | Function(current, size) | noop |
diff --git a/antdv-demo/docs/popconfirm/demo/basic.md b/antdv-demo/docs/popconfirm/demo/basic.md
new file mode 100644
index 000000000..67542a8fd
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/basic.md
@@ -0,0 +1,37 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### Basic
+The basic example.
+
+
+```vue
+
+
+ Delete
+
+
+
+```
diff --git a/antdv-demo/docs/popconfirm/demo/dynamic-trigger.md b/antdv-demo/docs/popconfirm/demo/dynamic-trigger.md
new file mode 100644
index 000000000..db64f9018
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/dynamic-trigger.md
@@ -0,0 +1,68 @@
+
+#### 条件触发
+可以判断是否需要弹出。
+
+
+
+#### Conditional trigger
+Make it pop up under some conditions.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/popconfirm/demo/icon.md b/antdv-demo/docs/popconfirm/demo/icon.md
new file mode 100644
index 000000000..5e61a789a
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/icon.md
@@ -0,0 +1,18 @@
+
+#### 自定义 Icon 图标
+使用 `icon` 自定义提示 `icon`。
+
+
+
+#### Customize icon
+Set `icon` props to customize the icon.
+
+
+```vue
+
+
+
+ Delete
+
+
+```
diff --git a/antdv-demo/docs/popconfirm/demo/index.vue b/antdv-demo/docs/popconfirm/demo/index.vue
new file mode 100644
index 000000000..be463e362
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/index.vue
@@ -0,0 +1,59 @@
+
diff --git a/antdv-demo/docs/popconfirm/demo/local.md b/antdv-demo/docs/popconfirm/demo/local.md
new file mode 100644
index 000000000..fce20b47e
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/local.md
@@ -0,0 +1,17 @@
+
+#### 国际化
+使用 `okText` 和 `cancelText` 自定义按钮文字。
+
+
+
+#### Locale text
+Set `okText` and `cancelText` props to customize the button's labels.
+
+
+```vue
+
+
+ Delete
+
+
+```
diff --git a/antdv-demo/docs/popconfirm/demo/placement.md b/antdv-demo/docs/popconfirm/demo/placement.md
new file mode 100644
index 000000000..f4a0fab18
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/demo/placement.md
@@ -0,0 +1,134 @@
+
+#### 位置
+位置有十二个方向。如需箭头指向目标元素中心,可以设置 `arrowPointAtCenter`。
+
+
+
+#### Placement
+There are 12 `placement` options available. Use `arrowPointAtCenter` if you want arrow point at the center of target.
+
+
+```vue
+
+
+
+
+
+ {{ text }}
+ {{ text }}
+
+ TL
+
+
+
+ {{ text }}
+ {{ text }}
+
+ Top
+
+
+
+ {{ text }}
+ {{ text }}
+
+ TR
+
+
+
+
+
+ {{ text }}
+ {{ text }}
+
+ LT
+
+
+
+ {{ text }}
+ {{ text }}
+
+ Left
+
+
+
+ {{ text }}
+ {{ text }}
+
+ LB
+
+
+
+
+
+ {{ text }}
+ {{ text }}
+
+ RT
+
+
+
+ {{ text }}
+ {{ text }}
+
+ Right
+
+
+
+ {{ text }}
+ {{ text }}
+
+ RB
+
+
+
+
+
+ {{ text }}
+ {{ text }}
+
+ BL
+
+
+
+ {{ text }}
+ {{ text }}
+
+ Bottom
+
+
+
+ {{ text }}
+ {{ text }}
+
+ BR
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/popconfirm/index.en-US.md b/antdv-demo/docs/popconfirm/index.en-US.md
new file mode 100644
index 000000000..5bd6b32db
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/index.en-US.md
@@ -0,0 +1,24 @@
+## API
+
+| Param | Description | Type | Default value | Version |
+| --- | --- | --- | --- | --- |
+| cancelText | text of the Cancel button | string\|slot | `Cancel` | |
+| okText | text of the Confirm button | string\|slot | `Confirm` | |
+| okType | Button `type` of the Confirm button | string | `primary` | |
+| title | title of the confirmation box | string\|slot | - | |
+| icon | customize icon of confirmation | vNode\|slot | <Icon type="exclamation-circle" /> | |
+| disabled | is show popconfirm when click its childrenNode | boolean | false | 1.5.0 |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| cancel | callback of cancel | function(e) | - |
+| confirm | callback of confirmation | function(e) | - |
+| visibleChange | Callback executed when visibility of the tooltip card is changed | function(visible) | - |
+
+Consult [Tooltip's documentation](/components/tooltip/#API) to find more APIs.
+
+## Note
+
+Please ensure that the child node of `Popconfirm` accepts `mouseenter`, `mouseleave`, `focus`, `click` events.
diff --git a/antdv-demo/docs/popconfirm/index.zh-CN.md b/antdv-demo/docs/popconfirm/index.zh-CN.md
new file mode 100644
index 000000000..557fc5383
--- /dev/null
+++ b/antdv-demo/docs/popconfirm/index.zh-CN.md
@@ -0,0 +1,24 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| cancelText | 取消按钮文字 | string\|slot | 取消 | |
+| okText | 确认按钮文字 | string\|slot | 确定 | |
+| okType | 确认按钮类型 | string | primary | |
+| title | 确认框的描述 | string\|slot | 无 | |
+| icon | 自定义弹出气泡 Icon 图标 | vNode | <Icon type="exclamation-circle" /> | |
+| disabled | 点击 Popconfirm 子元素是否弹出气泡确认框 | boolean | false | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ------------- | -------------- | ----------------- |
+| cancel | 点击取消的回调 | function(e) |
+| confirm | 点击确认的回调 | function(e) |
+| visibleChange | 显示隐藏的回调 | function(visible) |
+
+更多属性请参考 [Tooltip](/components/tooltip-cn/#API)。
+
+## 注意
+
+请确保 `Popconfirm` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。
diff --git a/antdv-demo/docs/popover/demo/arrow-point-at-center.md b/antdv-demo/docs/popover/demo/arrow-point-at-center.md
new file mode 100644
index 000000000..c1bad218a
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/arrow-point-at-center.md
@@ -0,0 +1,32 @@
+
+#### 箭头指向
+设置了 `arrowPointAtCenter` 后,箭头将指向目标元素的中心。
+
+
+
+#### Arrow pointing
+The arrow points to the center of the target element, which set `arrowPointAtCenter`.
+
+
+```vue
+
+
+
+
+ Content
+ Content
+
+ Title
+ Align edge / 边缘对齐
+
+
+
+ Content
+ Content
+
+ Title
+ Arrow points to center / 箭头指向中心
+
+
+
+```
diff --git a/antdv-demo/docs/popover/demo/basic.md b/antdv-demo/docs/popover/demo/basic.md
new file mode 100644
index 000000000..7e83ee485
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/basic.md
@@ -0,0 +1,23 @@
+
+#### 基本
+最简单的用法,浮层的大小由内容区域决定。
+
+
+
+#### Basic
+The most basic example. The size of the floating layer depends on the contents region.
+
+
+```vue
+
+
+
+ Content
+ Content
+
+
+ Hover me
+
+
+
+```
diff --git a/antdv-demo/docs/popover/demo/control.md b/antdv-demo/docs/popover/demo/control.md
new file mode 100644
index 000000000..f997d5c90
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/control.md
@@ -0,0 +1,36 @@
+
+#### 从浮层内关闭
+使用 `visible` 属性控制浮层显示。
+
+
+
+#### Controlling the close of the dialog
+Use `visible` prop to control the display of the card.
+
+
+```vue
+
+
+ Close
+
+ Click me
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/popover/demo/hover-with-click.md b/antdv-demo/docs/popover/demo/hover-with-click.md
new file mode 100644
index 000000000..3811bc2a9
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/hover-with-click.md
@@ -0,0 +1,61 @@
+
+#### 悬停点击弹出窗口
+以下示例显示如何创建可悬停和单击的弹出窗口。
+
+
+
+#### Hover with click popover
+The following example shows how to create a popover which can be hovered and clicked.
+
+
+```vue
+
+
+
+ This is hover content.
+
+
+
+
This is click content.
+
Close
+
+ Hover and click / 悬停并单击
+
+
+
+
+```
diff --git a/antdv-demo/docs/popover/demo/index.vue b/antdv-demo/docs/popover/demo/index.vue
new file mode 100644
index 000000000..c3c067c40
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/index.vue
@@ -0,0 +1,61 @@
+
diff --git a/antdv-demo/docs/popover/demo/placement.md b/antdv-demo/docs/popover/demo/placement.md
new file mode 100644
index 000000000..d667b3bd4
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/placement.md
@@ -0,0 +1,163 @@
+
+#### 位置
+位置有十二个方向。
+
+
+
+#### Placement
+There are 12 `placement` options available.
+
+
+```vue
+
+
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ TL
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ Top
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ TR
+
+
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ LT
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ Left
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ LB
+
+
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ RT
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ Right
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ RB
+
+
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ BL
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ Bottom
+
+
+
+ Content
+ Content
+
+
+ Title
+
+ BR
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/popover/demo/triggerType.md b/antdv-demo/docs/popover/demo/triggerType.md
new file mode 100644
index 000000000..0c8478067
--- /dev/null
+++ b/antdv-demo/docs/popover/demo/triggerType.md
@@ -0,0 +1,43 @@
+
+#### 三种触发方式
+鼠标移入、聚集、点击。
+
+
+
+#### Three ways to trigger
+Mouse to click, focus and move in.
+
+
+```vue
+
+
+
+
+ Content
+ Content
+
+
+ Hover me
+
+
+
+
+ Content
+ Content
+
+
+ Focus me
+
+
+
+
+ Content
+ Content
+
+
+ Click me
+
+
+
+
+```
diff --git a/antdv-demo/docs/popover/index.en-US.md b/antdv-demo/docs/popover/index.en-US.md
new file mode 100644
index 000000000..d165379c4
--- /dev/null
+++ b/antdv-demo/docs/popover/index.en-US.md
@@ -0,0 +1,12 @@
+## API
+
+| Param | Description | Type | Default value |
+| ------- | ------------------- | ------------------- | ------------- |
+| content | Content of the card | string\|slot\|vNode | - |
+| title | Title of the card | string\|slot\|VNode | - |
+
+Consult [Tooltip's documentation](/components/tooltip/#API) to find more APIs.
+
+## Note
+
+Please ensure that the child node of `Popover` accepts `onMouseenter`, `onMouseleave`, `onFocus`, `onClick` events.
diff --git a/antdv-demo/docs/popover/index.zh-CN.md b/antdv-demo/docs/popover/index.zh-CN.md
new file mode 100644
index 000000000..0ca9376a1
--- /dev/null
+++ b/antdv-demo/docs/popover/index.zh-CN.md
@@ -0,0 +1,12 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ------- | -------- | ------------------- | ------ |
+| content | 卡片内容 | string\|slot\|VNode | 无 |
+| title | 卡片标题 | string\|slot\|VNode | 无 |
+
+更多属性请参考 [Tooltip](/components/tooltip-cn/#API)。
+
+## 注意
+
+请确保 `Popover` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。
diff --git a/antdv-demo/docs/progress/demo/circle-dynamic.md b/antdv-demo/docs/progress/demo/circle-dynamic.md
new file mode 100644
index 000000000..2609add06
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/circle-dynamic.md
@@ -0,0 +1,46 @@
+
+#### 进度圈动态展示
+会动的进度条才是好进度条。
+
+
+
+#### Dynamic circular progress bar
+A dynamic progress bar is better.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/circle-mini.md b/antdv-demo/docs/progress/demo/circle-mini.md
new file mode 100644
index 000000000..97424c811
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/circle-mini.md
@@ -0,0 +1,26 @@
+
+#### 小型进度圈
+小一号的圈形进度。
+
+
+
+#### Mini size circular progress bar
+A smaller circular progress bar.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/circle.md b/antdv-demo/docs/progress/demo/circle.md
new file mode 100644
index 000000000..dff13ae0d
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/circle.md
@@ -0,0 +1,26 @@
+
+#### 进度圈
+圈形的进度。
+
+
+
+#### Circular progress bar
+A circular progress bar.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/dashboard.md b/antdv-demo/docs/progress/demo/dashboard.md
new file mode 100644
index 000000000..09f9398a9
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/dashboard.md
@@ -0,0 +1,17 @@
+
+#### 仪表盘
+By setting `type=dashboard`, you can get a dashboard style of progress easily.
+
+
+
+#### Dashboard
+A standard progress bar.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/dynamic.md b/antdv-demo/docs/progress/demo/dynamic.md
new file mode 100644
index 000000000..ae1fc237d
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/dynamic.md
@@ -0,0 +1,46 @@
+
+#### 动态展示
+会动的进度条才是好进度条。
+
+
+
+#### Dynamic
+A dynamic progress bar is better.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/format.md b/antdv-demo/docs/progress/demo/format.md
new file mode 100644
index 000000000..6712ceb8a
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/format.md
@@ -0,0 +1,30 @@
+
+#### 自定义文字格式
+`format` 属性指定格式。
+
+
+
+#### Custom text format
+You can set a custom text by setting the `format` prop.
+
+
+```vue
+
+
+
+
+
+
+ {{ percent }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/gradient-line.md b/antdv-demo/docs/progress/demo/gradient-line.md
new file mode 100644
index 000000000..996e37faa
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/gradient-line.md
@@ -0,0 +1,47 @@
+
+#### 自定义进度条渐变色
+`linear-gradient` 的封装。推荐只传两种颜色。
+
+
+
+#### Custom line gradient
+A package of `linear-gradient`. It is recommended to only pass two colors.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/index.vue b/antdv-demo/docs/progress/demo/index.vue
new file mode 100644
index 000000000..586d3fab2
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/index.vue
@@ -0,0 +1,67 @@
+
diff --git a/antdv-demo/docs/progress/demo/line-mini.md b/antdv-demo/docs/progress/demo/line-mini.md
new file mode 100644
index 000000000..23585bcc6
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/line-mini.md
@@ -0,0 +1,20 @@
+
+#### 小型进度条
+适合放在较狭窄的区域内。
+
+
+
+#### Mini size progress bar
+Appropriate for a narrow area.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/line.md b/antdv-demo/docs/progress/demo/line.md
new file mode 100644
index 000000000..cb51160ab
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/line.md
@@ -0,0 +1,21 @@
+
+#### 进度条
+标准的进度条。
+
+
+
+#### Progress bar
+A standard progress bar.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/linecap.md b/antdv-demo/docs/progress/demo/linecap.md
new file mode 100644
index 000000000..065149a12
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/linecap.md
@@ -0,0 +1,19 @@
+
+#### 圆角/方角边缘
+`strokeLinecap="square|round"` 可以调整进度条边缘的形状。
+
+
+
+#### Square linecaps
+`strokeLinecap="square|round"` 可以调整进度条边缘的形状。
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/demo/segment.md b/antdv-demo/docs/progress/demo/segment.md
new file mode 100644
index 000000000..f6ac96c96
--- /dev/null
+++ b/antdv-demo/docs/progress/demo/segment.md
@@ -0,0 +1,25 @@
+
+#### 分段进度条
+标准的进度条。
+
+
+
+#### Progress bar with success segment
+A standard progress bar.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/progress/index.en-US.md b/antdv-demo/docs/progress/index.en-US.md
new file mode 100644
index 000000000..665e33f04
--- /dev/null
+++ b/antdv-demo/docs/progress/index.en-US.md
@@ -0,0 +1,38 @@
+## API
+
+Properties that shared by all types.
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| type | to set the type, options: `line` `circle` `dashboard` | string | `line` |
+| format | template function of the content | function(percent, successPercent) \| v-slot:format="percent, successPercent" | `percent => percent + '%'` |
+| percent | to set the completion percentage | number | 0 |
+| showInfo | whether to display the progress value and the status icon | boolean | true |
+| status | to set the status of the Progress, options: `success` `exception` `normal` `active`(line only) | string | - |
+| strokeLinecap | to set the style of the progress linecap | Enum{ 'round', 'square' } | `round` |
+| strokeColor | color of progress bar | string | - |
+| successPercent | segmented success percent | number | 0 |
+
+### `type="line"`
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| strokeWidth | to set the width of the progress bar, unit: `px` | number | 10 | |
+| strokeColor | color of progress bar, render `linear-gradient` when passing an object | string \| { from: string; to: string; direction: string } | - | 1.5.0 |
+
+### `type="circle"`
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| width | to set the canvas width of the circular progress, unit: `px` | number | 132 | |
+| strokeWidth | to set the width of the circular progress, unit: percentage of the canvas width | number | 6 | |
+| strokeColor | color of circular progress, render `linear-gradient` when passing an object | string \| object | - | 1.5.0 |
+
+### `type="dashboard"`
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| width | to set the canvas width of the dashboard progress, unit: `px` | number | 132 |
+| strokeWidth | to set the width of the dashboard progress, unit: percentage of the canvas width | number | 6 |
+| gapDegree | the gap degree of half circle, 0 ~ 360 | number | 0 |
+| gapPosition | the gap position, options: `top` `bottom` `left` `right` | string | `top` |
diff --git a/antdv-demo/docs/progress/index.zh-CN.md b/antdv-demo/docs/progress/index.zh-CN.md
new file mode 100644
index 000000000..be31e02c4
--- /dev/null
+++ b/antdv-demo/docs/progress/index.zh-CN.md
@@ -0,0 +1,38 @@
+## API
+
+各类型共用的属性。
+
+| 属性 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| type | 类型,可选 `line` `circle` `dashboard` | string | `line` |
+| format | 内容的模板函数 | function(percent, successPercent) \| v-slot:format="percent, successPercent" | `percent => percent + '%'` |
+| percent | 百分比 | number | 0 |
+| showInfo | 是否显示进度数值或状态图标 | boolean | true |
+| status | 状态,可选:`success` `exception` `normal` `active`(仅限 line) | string | - |
+| strokeLinecap | | Enum{ 'round', 'square' } | `round` |
+| strokeColor | 进度条的色彩 | string | - |
+| successPercent | 已完成的分段百分比 | number | 0 |
+
+### `type="line"`
+
+| 属性 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| strokeWidth | 进度条线的宽度,单位 px | number | 10 | |
+| strokeColor | 进度条的色彩,传入 object 时为渐变 | string \| { from: string; to: string; direction: string } | - | 1.5.0 |
+
+### `type="circle"`
+
+| 属性 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| width | 圆形进度条画布宽度,单位 px | number | 132 | |
+| strokeWidth | 圆形进度条线的宽度,单位是进度条画布宽度的百分比 | number | 6 | |
+| strokeColor | 圆形进度条线的色彩,传入 object 时为渐变 | string \| object | - | 1.5.0 |
+
+### `type="dashboard"`
+
+| 属性 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| width | 仪表盘进度条画布宽度,单位 px | number | 132 |
+| strokeWidth | 仪表盘进度条线的宽度,单位是进度条画布宽度的百分比 | number | 6 |
+| gapDegree | 仪表盘进度条缺口角度,可取值 0 ~ 360 | number | 0 |
+| gapPosition | 仪表盘进度条缺口位置 | Enum{ 'top', 'bottom', 'left', 'right' } | `top` |
diff --git a/antdv-demo/docs/radio/demo/basic.md b/antdv-demo/docs/radio/demo/basic.md
new file mode 100644
index 000000000..aaa96f145
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/basic.md
@@ -0,0 +1,15 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### Basic
+The simplest use.
+
+
+```vue
+
+ Radio
+
+```
diff --git a/antdv-demo/docs/radio/demo/disabled.md b/antdv-demo/docs/radio/demo/disabled.md
new file mode 100644
index 000000000..0e3216448
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/disabled.md
@@ -0,0 +1,42 @@
+
+#### 不可用
+Radio 不可用。
+
+
+
+#### disabled
+Radio unavailable.
+
+
+```vue
+
+
+
+ Disabled
+
+
+
+ Disabled
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/index.vue b/antdv-demo/docs/radio/demo/index.vue
new file mode 100644
index 000000000..1a0f22f7f
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/index.vue
@@ -0,0 +1,64 @@
+
diff --git a/antdv-demo/docs/radio/demo/radioButton-solid.md b/antdv-demo/docs/radio/demo/radioButton-solid.md
new file mode 100644
index 000000000..67f603a0f
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioButton-solid.md
@@ -0,0 +1,48 @@
+
+#### 填底的按钮样式
+实色填底的单选按钮样式。
+
+
+
+#### Solid radio button
+Solid radio button style.
+
+
+```vue
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/radioButton.md b/antdv-demo/docs/radio/demo/radioButton.md
new file mode 100644
index 000000000..27c3fb24c
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioButton.md
@@ -0,0 +1,78 @@
+
+#### 按钮样式
+按钮样式的单选组合。
+
+
+
+#### radio style
+The combination of radio button style.
+
+
+```vue
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/radioGroup-more.md b/antdv-demo/docs/radio/demo/radioGroup-more.md
new file mode 100644
index 000000000..1c98b9463
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioGroup-more.md
@@ -0,0 +1,48 @@
+
+#### RadioGroup 垂直
+垂直的 RadioGroup,配合更多输入框选项。
+
+
+
+#### Vertical RadioGroup
+Vertical RadioGroup, with more radios.
+
+
+```vue
+
+
+
+ Option A
+
+
+ Option B
+
+
+ Option C
+
+
+ More...
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/radioGroup-options.md b/antdv-demo/docs/radio/demo/radioGroup-options.md
new file mode 100644
index 000000000..f4dc8f1af
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioGroup-options.md
@@ -0,0 +1,57 @@
+
+#### RadioGroup 组合 - 配置方式
+通过配置 `options` 参数来渲染单选框。
+
+
+
+#### RadioGroup group - optional
+Render radios by configuring `options`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/radioGroup-with-name.md b/antdv-demo/docs/radio/demo/radioGroup-with-name.md
new file mode 100644
index 000000000..dfd7800f5
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioGroup-with-name.md
@@ -0,0 +1,28 @@
+
+#### 单选组合 - 配合 name 使用
+可以为 Radio.Group 配置 `name` 参数,为组合内的 input 元素赋予相同的 `name` 属性,使浏览器把 Radio.Group 下的 Radio 真正看作是一组(例如可以通过方向键始终**在同一组内**更改选项)。
+
+
+
+#### Radio.Group with name
+Passing the `name` property to all `input[type="radio"]` that are in the same Radio.Group. It is usually used to let the browser see your Radio.Group as a real "group" and keep the default behavior. For example, using left/right keyboard arrow to change your selection that in the same Radio.Group.
+
+
+```vue
+
+
+
+ A
+
+
+ B
+
+
+ C
+
+
+ D
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/radioGroup.md b/antdv-demo/docs/radio/demo/radioGroup.md
new file mode 100644
index 000000000..4c2fdd0b5
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/radioGroup.md
@@ -0,0 +1,44 @@
+
+#### 单选组合
+一组互斥的 Radio 配合使用。
+
+
+
+#### Radio Group
+A group of radio components.
+
+
+```vue
+
+
+
+
+ A
+
+
+ B
+
+
+ C
+
+
+ D
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/demo/size.md b/antdv-demo/docs/radio/demo/size.md
new file mode 100644
index 000000000..89a0c9669
--- /dev/null
+++ b/antdv-demo/docs/radio/demo/size.md
@@ -0,0 +1,64 @@
+
+#### 大小
+大中小三种组合,可以和表单输入框进行对应配合。
+
+
+
+#### size
+There are three sizes available: large, medium, and small. It can coordinate with input box.
+
+
+```vue
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+
+ Hangzhou
+
+
+ Shanghai
+
+
+ Beijing
+
+
+ Chengdu
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/radio/index.en-US.md b/antdv-demo/docs/radio/index.en-US.md
new file mode 100644
index 000000000..f178ac4f0
--- /dev/null
+++ b/antdv-demo/docs/radio/index.en-US.md
@@ -0,0 +1,40 @@
+## API
+
+### Radio
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| autoFocus | get focus when component mounted | boolean | false |
+| checked | Specifies whether the radio is selected. | boolean | - |
+| defaultChecked | Specifies the initial state: whether or not the radio is selected. | boolean | | false |
+| disabled | Disable radio | boolean | false |
+| value | According to value for comparison, to determine whether the selected | any | - |
+
+### RadioGroup
+
+Radio group can wrap a group of `Radio`。
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| defaultValue | Default selected value | any | - |
+| disabled | Disable all radio buttons | boolean | false |
+| name | The `name` property of all `input[type="radio"]` children | string | - |
+| options | set children optional | string\[] \| Array<{ label: string value: string disabled?: boolean }> | - |
+| size | size for radio button style | `large` \| `default` \| `small` | `default` |
+| value(v-model) | Used for setting the currently selected value. | any | - |
+| buttonStyle | style type of radio button | `outline` \| `solid` | `outline` |
+
+### RadioGroup Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | The callback function that is triggered when the state changes. | Function(e:Event) |
+
+## Methods
+
+### Radio
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/radio/index.zh-CN.md b/antdv-demo/docs/radio/index.zh-CN.md
new file mode 100644
index 000000000..32f33fd99
--- /dev/null
+++ b/antdv-demo/docs/radio/index.zh-CN.md
@@ -0,0 +1,39 @@
+## API
+
+### Radio
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------------- | --------------------------------- | ------- | ------ |
+| autoFocus | 自动获取焦点 | boolean | false |
+| checked | 指定当前是否选中 | boolean | false |
+| defaultChecked | 初始是否选中 | boolean | false |
+| value | 根据 value 进行比较,判断是否选中 | any | - |
+
+### RadioGroup
+
+单选框组合,用于包裹一组 `Radio`。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| defaultValue | 默认选中的值 | any | - |
+| disabled | 禁选所有子单选器 | boolean | false |
+| name | RadioGroup 下所有 `input[type="radio"]` 的 `name` 属性 | string | - |
+| options | 以配置形式设置子元素 | string\[] \| Array<{ label: string value: string disabled?: boolean }> | - |
+| size | 大小,只对按钮样式生效 | `large` \| `default` \| `small` | `default` |
+| value(v-model) | 用于设置当前选中的值 | any | - |
+| buttonStyle | RadioButton 的风格样式,目前有描边和填色两种风格 | `outline` \| `solid` | `outline` |
+
+### RadioGroup 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | -------------------- | ----------------- |
+| change | 选项变化时的回调函数 | Function(e:Event) |
+
+## 方法
+
+### Radio
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/rate/demo/basic.md b/antdv-demo/docs/rate/demo/basic.md
new file mode 100644
index 000000000..7102d1f4f
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/basic.md
@@ -0,0 +1,24 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### Basic
+The simplest usage.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/rate/demo/character.md b/antdv-demo/docs/rate/demo/character.md
new file mode 100644
index 000000000..709218a85
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/character.md
@@ -0,0 +1,24 @@
+
+#### 其他字符
+可以将星星替换为其他字符,比如字母,数字,字体图标甚至中文。
+
+
+
+#### Other Character
+Replace the default star to other character like alphabet, digit, iconfont or even Chinese word.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/rate/demo/clear.md b/antdv-demo/docs/rate/demo/clear.md
new file mode 100644
index 000000000..5b80fd732
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/clear.md
@@ -0,0 +1,21 @@
+
+#### 清除
+支持允许或者禁用清除。
+
+
+
+#### Clear star
+Support set allow to clear star when click again.
+
+
+```vue
+
+
+
+
allowClear: true
+
+
+
allowClear: false
+
+
+```
diff --git a/antdv-demo/docs/rate/demo/disabled.md b/antdv-demo/docs/rate/demo/disabled.md
new file mode 100644
index 000000000..0cf792718
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/disabled.md
@@ -0,0 +1,15 @@
+
+#### 只读
+只读,无法进行鼠标交互。
+
+
+
+#### Read only
+Read only, can't use mouse to interact.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/rate/demo/half.md b/antdv-demo/docs/rate/demo/half.md
new file mode 100644
index 000000000..e234e9d47
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/half.md
@@ -0,0 +1,15 @@
+
+#### 半星
+支持选中半星。
+
+
+
+#### Half star
+Support select half star.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/rate/demo/index.vue b/antdv-demo/docs/rate/demo/index.vue
new file mode 100644
index 000000000..24f4e51c1
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/index.vue
@@ -0,0 +1,60 @@
+
diff --git a/antdv-demo/docs/rate/demo/text.md b/antdv-demo/docs/rate/demo/text.md
new file mode 100644
index 000000000..d7d1ed36b
--- /dev/null
+++ b/antdv-demo/docs/rate/demo/text.md
@@ -0,0 +1,28 @@
+
+#### 文案展现
+给评分组件加上文案展示。
+
+
+
+#### Show copywriting
+Add copywriting in rate components.
+
+
+```vue
+
+
+
+ {{ desc[value - 1] }}
+
+
+
+```
diff --git a/antdv-demo/docs/rate/index.en-US.md b/antdv-demo/docs/rate/index.en-US.md
new file mode 100644
index 000000000..e362a77c2
--- /dev/null
+++ b/antdv-demo/docs/rate/index.en-US.md
@@ -0,0 +1,30 @@
+## API
+
+| Property | Description | type | Default |
+| --- | --- | --- | --- |
+| allowClear | whether to allow clear when click again | boolean | true |
+| allowHalf | whether to allow semi selection | boolean | false |
+| autoFocus | get focus when component mounted | boolean | false |
+| character | custom character of rate | String or slot="character" | ` ` |
+| count | star count | number | 5 |
+| defaultValue | default value | number | 0 |
+| disabled | read only, unable to interact | boolean | false |
+| tooltips | Customize tooltip by each character | string\[] | - |
+| value(v-model) | current value | number | - |
+
+### events
+
+| Events Name | Description | Arguments |
+| ----------- | ---------------------------------- | ----------------------- |
+| blur | callback when component lose focus | Function() | - |
+| change | callback when select value | Function(value: number) | - |
+| focus | callback when component get focus | Function() | - |
+| hoverChange | callback when hover item | Function(value: number) | - |
+| keydown | callback when keydown on component | Function(event) | - |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/rate/index.zh-CN.md b/antdv-demo/docs/rate/index.zh-CN.md
new file mode 100644
index 000000000..55c843a75
--- /dev/null
+++ b/antdv-demo/docs/rate/index.zh-CN.md
@@ -0,0 +1,30 @@
+## API
+
+| 属性 | 说明 | 类型 | 默认值 |
+| -------------- | ---------------------- | -------------------------- | ---------------------- |
+| allowClear | 是否允许再次点击后清除 | boolean | true |
+| allowHalf | 是否允许半选 | boolean | false |
+| autoFocus | 自动获取焦点 | boolean | false |
+| character | 自定义字符 | String or slot="character" | ` ` |
+| count | star 总数 | number | 5 |
+| defaultValue | 默认值 | number | 0 |
+| disabled | 只读,无法进行交互 | boolean | false |
+| tooltips | 自定义每项的提示信息 | string\[] | - |
+| value(v-model) | 当前数,受控值 | number | - |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ----------- | ------------------------ | ----------------------- |
+| blur | 失去焦点时的回调 | Function() | - |
+| change | 选择时的回调 | Function(value: number) | - |
+| focus | 获取焦点时的回调 | Function() | - |
+| hoverChange | 鼠标经过时数值变化的回调 | Function(value: number) | - |
+| keydown | 按键回调 | Function(event) | - |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/result/demo/403.md b/antdv-demo/docs/result/demo/403.md
new file mode 100644
index 000000000..2175d0f27
--- /dev/null
+++ b/antdv-demo/docs/result/demo/403.md
@@ -0,0 +1,28 @@
+
+#### 403
+你没有此页面的访问权限。
+
+
+
+#### 403
+you are not authorized to access this page.
+
+
+```vue
+
+
+
+
+ Back Home
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/404.md b/antdv-demo/docs/result/demo/404.md
new file mode 100644
index 000000000..b85b71ecb
--- /dev/null
+++ b/antdv-demo/docs/result/demo/404.md
@@ -0,0 +1,28 @@
+
+#### 404
+此页面未找到。
+
+
+
+#### 404
+The page you visited does not exist.
+
+
+```vue
+
+
+
+
+ Back Home
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/500.md b/antdv-demo/docs/result/demo/500.md
new file mode 100644
index 000000000..038fef17e
--- /dev/null
+++ b/antdv-demo/docs/result/demo/500.md
@@ -0,0 +1,28 @@
+
+#### 500
+服务器发生了错误。
+
+
+
+#### 500
+The server is wrong.
+
+
+```vue
+
+
+
+
+ Back Home
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/customIcon.md b/antdv-demo/docs/result/demo/customIcon.md
new file mode 100644
index 000000000..80a53c491
--- /dev/null
+++ b/antdv-demo/docs/result/demo/customIcon.md
@@ -0,0 +1,31 @@
+
+#### 自定义 icon
+自定义 icon。
+
+
+
+#### Custom icon
+Custom icon.
+
+
+```vue
+
+
+
+
+
+
+
+ Next
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/error.md b/antdv-demo/docs/result/demo/error.md
new file mode 100644
index 000000000..ed713c717
--- /dev/null
+++ b/antdv-demo/docs/result/demo/error.md
@@ -0,0 +1,54 @@
+
+#### Error
+复杂的错误反馈。
+
+
+
+#### Error
+Complex error feedback.
+
+
+```vue
+
+
+
+
+ Go Console
+
+
+ Buy Again
+
+
+
+
+
+ The content you submitted has the following error:
+
+
+ Your account has been frozen
+ Thaw immediately >
+
+
+ Your account is not yet eligible to
+ apply Apply Unlock >
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/index.vue b/antdv-demo/docs/result/demo/index.vue
new file mode 100644
index 000000000..5fb70c67e
--- /dev/null
+++ b/antdv-demo/docs/result/demo/index.vue
@@ -0,0 +1,62 @@
+
diff --git a/antdv-demo/docs/result/demo/info.md b/antdv-demo/docs/result/demo/info.md
new file mode 100644
index 000000000..131cda1b6
--- /dev/null
+++ b/antdv-demo/docs/result/demo/info.md
@@ -0,0 +1,28 @@
+
+#### Info
+展示处理结果。
+
+
+
+#### Info
+Show processing results.
+
+
+```vue
+
+
+
+
+ Go Console
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/success.md b/antdv-demo/docs/result/demo/success.md
new file mode 100644
index 000000000..bdc76156f
--- /dev/null
+++ b/antdv-demo/docs/result/demo/success.md
@@ -0,0 +1,35 @@
+
+#### Success
+成功的结果。
+
+
+
+#### Success
+Show successful results.
+
+
+```vue
+
+
+
+
+ Go Console
+
+
+ Buy Again
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/demo/warning.md b/antdv-demo/docs/result/demo/warning.md
new file mode 100644
index 000000000..6d231103e
--- /dev/null
+++ b/antdv-demo/docs/result/demo/warning.md
@@ -0,0 +1,28 @@
+
+#### Warning
+警告类型的结果。
+
+
+
+#### Warning
+The result of the warning.
+
+
+```vue
+
+
+
+
+ Go Console
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/result/index.en-US.md b/antdv-demo/docs/result/index.en-US.md
new file mode 100644
index 000000000..a8fce58e8
--- /dev/null
+++ b/antdv-demo/docs/result/index.en-US.md
@@ -0,0 +1,9 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| title | title string | string \| VNode \| v-slot:title | - |
+| subTitle | subTitle string | string \| VNode \| v-slot:subTitle | - |
+| status | result status,decide icons and colors | `'success' | 'error' | 'info' | 'warning'| '404' | '403' | '500'` | 'info' |
+| icon | custom back icon | v-slot:icon | - |
+| extra | operating area | v-slot:extra | - |
diff --git a/antdv-demo/docs/result/index.zh-CN.md b/antdv-demo/docs/result/index.zh-CN.md
new file mode 100644
index 000000000..efca7124a
--- /dev/null
+++ b/antdv-demo/docs/result/index.zh-CN.md
@@ -0,0 +1,9 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| title | title 文字 | string \| VNode \| v-slot:title | - |
+| subTitle | subTitle 文字 | string \| VNode \| v-slot:subTitle | - |
+| status | 结果的状态,决定图标和颜色 | `'success' | 'error' | 'info' | 'warning'| '404' | '403' | '500'` | 'info' |
+| icon | 自定义 icon | v-slot:icon | - |
+| extra | 操作区 | v-slot:extra | - |
diff --git a/antdv-demo/docs/select/demo/automatic-tokenization.md b/antdv-demo/docs/select/demo/automatic-tokenization.md
new file mode 100644
index 000000000..c977b10d2
--- /dev/null
+++ b/antdv-demo/docs/select/demo/automatic-tokenization.md
@@ -0,0 +1,28 @@
+
+#### 自动分词
+试下复制 `露西,杰克` 到输入框里。只在 tags 和 multiple 模式下可用。
+
+
+
+#### Automatic tokenization
+Try to copy `Lucy,Jack` to the input. Only available in tags and multiple mode.
+
+
+```vue
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/basic.md b/antdv-demo/docs/select/demo/basic.md
new file mode 100644
index 000000000..5cb58d908
--- /dev/null
+++ b/antdv-demo/docs/select/demo/basic.md
@@ -0,0 +1,49 @@
+
+#### 基本使用
+基本使用。
+
+
+
+#### Basic Usage
+Basic Usage
+
+
+```vue
+
+
+
+
+ Jack
+
+
+ Lucy
+
+
+ Disabled
+
+
+ yiminghe
+
+
+
+
+ Lucy
+
+
+
+
+ Lucy
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/coordinate.md b/antdv-demo/docs/select/demo/coordinate.md
new file mode 100644
index 000000000..8af5554ee
--- /dev/null
+++ b/antdv-demo/docs/select/demo/coordinate.md
@@ -0,0 +1,51 @@
+
+#### 联动
+省市联动是典型的例子。
+推荐使用 [Cascader](/components/cascader-cn/) 组件。
+
+
+
+#### coordinate
+Coordinating the selection of provinces and cities is a common use case and demonstrates how selection can be coordinated.
+Using the [Cascader](/components/cascader) component is strongly recommended instead as it is more flexible and capable.
+
+
+```vue
+
+
+
+
+ {{ province }}
+
+
+
+
+ {{ city }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/custom-dropdown-menu.md b/antdv-demo/docs/select/demo/custom-dropdown-menu.md
new file mode 100644
index 000000000..318702706
--- /dev/null
+++ b/antdv-demo/docs/select/demo/custom-dropdown-menu.md
@@ -0,0 +1,48 @@
+
+#### 扩展菜单
+使用 `dropdownRender` 对下拉菜单进行自由扩展。
+
+
+
+#### Custom dropdown
+Customize the dropdown menu via `dropdownRender`.
+
+
+```vue
+
+
+
+
+
+
e.preventDefault()"
+ @click="addItem"
+ >
+
Add item
+
+
+
+ {{ item }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/hide-selected.md b/antdv-demo/docs/select/demo/hide-selected.md
new file mode 100644
index 000000000..a61ed581a
--- /dev/null
+++ b/antdv-demo/docs/select/demo/hide-selected.md
@@ -0,0 +1,45 @@
+
+#### 隐藏已选择选项
+隐藏下拉列表中已选择的选项。
+
+
+
+#### Hide Already Selected
+Hide already selected options in the dropdown.
+
+
+```vue
+
+
+
+ {{ item }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/index.vue b/antdv-demo/docs/select/demo/index.vue
new file mode 100644
index 000000000..4506a1481
--- /dev/null
+++ b/antdv-demo/docs/select/demo/index.vue
@@ -0,0 +1,75 @@
+
+
+>
diff --git a/antdv-demo/docs/select/demo/label-in-value.md b/antdv-demo/docs/select/demo/label-in-value.md
new file mode 100644
index 000000000..7197c4124
--- /dev/null
+++ b/antdv-demo/docs/select/demo/label-in-value.md
@@ -0,0 +1,38 @@
+
+#### 获得选项的文本
+默认情况下 `onChange` 里只能拿到 value,如果需要拿到选中的节点文本 label,可以使用 `labelInValue` 属性。
+选中项的 label 会被包装到 value 中传递给 `onChange` 等函数,此时 value 是一个对象。
+
+
+
+#### Get value of selected item
+As a default behavior, the onChange callback can only get the value of the selected item. The labelInValue prop can be used to get the label property of the selected item.
+The label of the selected item will be packed as an object for passing to the onChange callback.
+
+
+```vue
+
+
+
+ Jack (100)
+
+
+ Lucy (101)
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/multiple.md b/antdv-demo/docs/select/demo/multiple.md
new file mode 100644
index 000000000..327cab12c
--- /dev/null
+++ b/antdv-demo/docs/select/demo/multiple.md
@@ -0,0 +1,34 @@
+
+#### 多选
+多选,从已有条目中选择(scroll the menu)
+
+
+
+#### multiple selection
+Multiple selection, selecting from existing items (scroll the menu).
+
+
+```vue
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/optgroup.md b/antdv-demo/docs/select/demo/optgroup.md
new file mode 100644
index 000000000..30a96586e
--- /dev/null
+++ b/antdv-demo/docs/select/demo/optgroup.md
@@ -0,0 +1,39 @@
+
+#### 分组
+用 `OptGroup` 进行选项分组。
+
+
+
+#### Option Group
+Using `OptGroup` to group the options.
+
+
+```vue
+
+
+
+ Manager
+
+ Jack
+
+
+ Lucy
+
+
+
+
+ yiminghe
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/option-label-prop.md b/antdv-demo/docs/select/demo/option-label-prop.md
new file mode 100644
index 000000000..5e2986552
--- /dev/null
+++ b/antdv-demo/docs/select/demo/option-label-prop.md
@@ -0,0 +1,60 @@
+
+#### 定制回填内容
+使用 `optionLabelProp` 指定回填到选择框的 `Option` 属性。
+
+
+
+#### Custom selection render
+Spacified the prop name of Option which will be rendered in select box.
+
+
+```vue
+
+
+
+
+ 🇨🇳
+
+ China (中国)
+
+
+
+ 🇺🇸
+
+ USA (美国)
+
+
+
+ 🇯🇵
+
+ Japan (日本)
+
+
+
+ 🇰🇷
+
+ Korea (韩国)
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/options.md b/antdv-demo/docs/select/demo/options.md
new file mode 100644
index 000000000..7082062d8
--- /dev/null
+++ b/antdv-demo/docs/select/demo/options.md
@@ -0,0 +1,52 @@
+
+#### 从数据直接生成
+使用 `options` 把 JSON 数据直接生成选择列表。
+
+
+
+#### Generate form options
+The select list can be populated using `options` property. This is a quick and easy way to provide the select content.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/search-box.md b/antdv-demo/docs/select/demo/search-box.md
new file mode 100644
index 000000000..8f4aaac2b
--- /dev/null
+++ b/antdv-demo/docs/select/demo/search-box.md
@@ -0,0 +1,87 @@
+
+#### 搜索框
+搜索和远程数据结合。
+
+
+
+#### Search Box
+Search with remote data.
+
+
+```vue
+
+
+
+ {{ d.text }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/search.md b/antdv-demo/docs/select/demo/search.md
new file mode 100644
index 000000000..91920af5e
--- /dev/null
+++ b/antdv-demo/docs/select/demo/search.md
@@ -0,0 +1,54 @@
+
+#### 带搜索框
+展开后可对选项进行搜索。
+
+
+
+#### Select with search field
+Search the options while expanded.
+
+
+```vue
+
+
+
+ Jack
+
+
+ Lucy
+
+
+ Tom
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/select-users.md b/antdv-demo/docs/select/demo/select-users.md
new file mode 100644
index 000000000..608a177ae
--- /dev/null
+++ b/antdv-demo/docs/select/demo/select-users.md
@@ -0,0 +1,75 @@
+
+#### 搜索用户
+一个带有远程搜索,节流控制,请求时序控制,加载状态的多选示例。
+
+
+
+#### Search and Select Users
+A complete multiple select sample with remote search, debounce fetch, ajax callback order flow, and loading state.
+
+
+```vue
+
+
+
+
+ {{ d.text }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/size.md b/antdv-demo/docs/select/demo/size.md
new file mode 100644
index 000000000..faf9f1fe0
--- /dev/null
+++ b/antdv-demo/docs/select/demo/size.md
@@ -0,0 +1,77 @@
+
+#### 三种大小
+三种大小的选择框,当 size 分别为 `large` 和 `small` 时,输入框高度为 `40px` 和 `24px` ,默认高度为 `32px`。
+
+
+
+#### Sizes
+The height of the input field for the select defaults to 32px. If size is set to large, the height will be 40px, and if set to small, 24px.
+
+
+```vue
+
+
+
+
+ Large
+
+
+ Default
+
+
+ Small
+
+
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/suffix.md b/antdv-demo/docs/select/demo/suffix.md
new file mode 100644
index 000000000..52fda8f5e
--- /dev/null
+++ b/antdv-demo/docs/select/demo/suffix.md
@@ -0,0 +1,46 @@
+
+#### 后缀图标
+基本使用。
+
+
+
+#### Suffix
+Basic Usage
+
+
+```vue
+
+
+
+
+
+ Jack
+
+
+ Lucy
+
+
+ Disabled
+
+
+ yiminghe
+
+
+
+
+
+ Lucy
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/demo/tags.md b/antdv-demo/docs/select/demo/tags.md
new file mode 100644
index 000000000..975767cbe
--- /dev/null
+++ b/antdv-demo/docs/select/demo/tags.md
@@ -0,0 +1,28 @@
+
+#### 标签
+tags select,随意输入的内容(scroll the menu)
+
+
+
+#### Tags
+Select with tags, transform input to tag (scroll the menu)
+
+
+```vue
+
+
+
+ {{ (i + 9).toString(36) + i }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/select/index.en-US.md b/antdv-demo/docs/select/index.en-US.md
new file mode 100644
index 000000000..9f3b77e61
--- /dev/null
+++ b/antdv-demo/docs/select/index.en-US.md
@@ -0,0 +1,94 @@
+## API
+
+```html
+
+ lucy
+
+```
+
+### Select props
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| allowClear | Show clear button. | boolean | false |
+| autoClearSearchValue | Whether the current search will be cleared on selecting an item. Only applies when `mode` is set to `multiple` or `tags`. | boolean | true |
+| autoFocus | Get focus by default | boolean | false |
+| defaultActiveFirstOption | Whether active first option by default | boolean | true |
+| defaultValue | Initial selected option. | string\|string\[] number\|number\[] | - |
+| disabled | Whether disabled select | boolean | false |
+| dropdownClassName | className of dropdown menu | string | - |
+| dropdownMatchSelectWidth | Whether dropdown's width is same with select. | boolean | true |
+| dropdownRender | Customize dropdown content | (menuNode: VNode, props) => VNode | - |
+| dropdownStyle | style of dropdown menu | object | - |
+| dropdownMenuStyle | additional style applied to dropdown menu | object | - |
+| filterOption | If true, filter options by input, if function, filter options against it. The function will receive two arguments, `inputValue` and `option`, if the function returns `true`, the option will be included in the filtered set; Otherwise, it will be excluded. | boolean or function(inputValue, option) | true |
+| firstActiveValue | Value of action option by default | string\|string\[] | - |
+| getPopupContainer | Parent Node which the selector should be rendered to. Default to `body`. When position issues happen, try to modify it into scrollable content and position it relative. | function(triggerNode) | () => document.body |
+| labelInValue | whether to embed label in value, turn the format of value from `string` to `{key: string, label: vNodes}` | boolean | false |
+| maxTagCount | Max tag count to show | number | - |
+| maxTagPlaceholder | Placeholder for not showing tags | slot/function(omittedValues) | - |
+| maxTagTextLength | Max text length to show | number | - |
+| mode | Set mode of Select | 'default' \| 'multiple' \| 'tags' | 'default' |
+| notFoundContent | Specify content to show when no result matches.. | string\|slot | 'Not Found' |
+| optionFilterProp | Which prop value of option will be used for filter if filterOption is true | string | value |
+| optionLabelProp | Which prop value of option will render as content of select. | string | `value` for `combobox`, `children` for other modes |
+| placeholder | Placeholder of select | string\|slot | - |
+| showSearch | Whether show search input in single mode. | boolean | false |
+| showArrow | Whether to show the drop-down arrow | boolean | true |
+| size | Size of Select input. `default` `large` `small` | string | default |
+| suffixIcon | The custom suffix icon | VNode \| slot | - |
+| removeIcon | The custom remove icon | VNode \| slot | - |
+| clearIcon | The custom clear icon | VNode \| slot | - |
+| menuItemSelectedIcon | The custom menuItemSelected icon | VNode \| slot | - |
+| tokenSeparators | Separator used to tokenize on tag/multiple mode | string\[] | |
+| value(v-model) | Current selected option. | string\|number\|string\[]\|number\[] | - |
+| options | Data of the selectOption, manual construction work is no longer needed if this property has been set | array<{value, label, [disabled, key, title]}> | \[] |
+| defaultOpen | Initial open state of dropdown | boolean | - |
+| open | Controlled open state of dropdown | boolean | - |
+| loading | indicate loading state | Boolean | false |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| blur | Called when blur | function |
+| change | Called when select an option or input value change, or value of input is changed in combobox mode | function(value, option:Option/Array<Option>) |
+| deselect | Called when a option is deselected, the params are option's value (or key) . only called for multiple or tags, effective in multiple or tags mode only. | function(value, option:Option) |
+| focus | Called when focus | function |
+| inputKeydown | Called when key pressed | function |
+| mouseenter | Called when mouse enter | function |
+| mouseleave | Called when mouse leave | function |
+| popupScroll | Called when dropdown scrolls | function |
+| search | Callback function that is fired when input changed. | function(value: string) |
+| select | Called when a option is selected, the params are option's value (or key) and option instance. | function(value, option:Option) |
+| dropdownVisibleChange | Call when dropdown open | function(open) |
+
+### Select Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | Remove focus |
+| focus() | Get focus |
+
+### Option props
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| disabled | Disable this option | boolean | false |
+| key | Same usage as `value`. If Vue request you to set this property, you can set it to value of option, and then omit value property. | string | |
+| title | `title` of Select after select this Option | string | - |
+| value | default to filter with this property | string\|number | - |
+| class | additional class to option | string | - |
+
+### OptGroup props
+
+| Property | Description | Type | Default |
+| -------- | ----------- | ------------ | ------- |
+| key | | string | - |
+| label | Group label | string\|slot | - |
+
+## FAQ
+
+### The dropdown is closed when click `dropdownRender` area?
+
+See the [dropdownRender example](/components/select/#components-select-demo-custom-dropdown).
diff --git a/antdv-demo/docs/select/index.zh-CN.md b/antdv-demo/docs/select/index.zh-CN.md
new file mode 100644
index 000000000..e7fdd3131
--- /dev/null
+++ b/antdv-demo/docs/select/index.zh-CN.md
@@ -0,0 +1,95 @@
+## API
+
+```html
+
+ lucy
+
+```
+
+### Select props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| allowClear | 支持清除 | boolean | false |
+| autoClearSearchValue | 是否在选中项后清空搜索框,只在 `mode` 为 `multiple` 或 `tags` 时有效。 | boolean | true |
+| autoFocus | 默认获取焦点 | boolean | false |
+| defaultActiveFirstOption | 是否默认高亮第一个选项。 | boolean | true |
+| defaultValue | 指定默认选中的条目 | string\|string\[]\|number\|number\[] | - |
+| disabled | 是否禁用 | boolean | false |
+| dropdownClassName | 下拉菜单的 className 属性 | string | - |
+| dropdownMatchSelectWidth | 下拉菜单和选择器同宽 | boolean | true |
+| dropdownRender | 自定义下拉框内容 | (menuNode: VNode, props) => VNode | - |
+| dropdownStyle | 下拉菜单的 style 属性 | object | - |
+| dropdownMenuStyle | dropdown 菜单自定义样式 | object | - |
+| filterOption | 是否根据输入项进行筛选。当其为一个函数时,会接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | boolean or function(inputValue, option) | true |
+| firstActiveValue | 默认高亮的选项 | string\|string\[] | - |
+| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | Function(triggerNode) | () => document.body |
+| labelInValue | 是否把每个选项的 label 包装到 value 中,会把 Select 的 value 类型从 `string` 变为 `{key: string, label: vNodes}` 的格式 | boolean | false |
+| maxTagCount | 最多显示多少个 tag | number | - |
+| maxTagPlaceholder | 隐藏 tag 时显示的内容 | slot/function(omittedValues) | - |
+| maxTagTextLength | 最大显示的 tag 文本长度 | number | - |
+| mode | 设置 Select 的模式为多选或标签 | 'default' \| 'multiple' \| 'tags' \| 'combobox' | - |
+| notFoundContent | 当下拉列表为空时显示的内容 | string\|slot | 'Not Found' |
+| optionFilterProp | 搜索时过滤对应的 option 属性,如设置为 children 表示对内嵌内容进行搜索 | string | value |
+| optionLabelProp | 回填到选择框的 Option 的属性值,默认是 Option 的子元素。比如在子元素需要高亮效果时,此值可以设为 `value`。 | string | `children` (combobox 模式下为 `value`) |
+| placeholder | 选择框默认文字 | string\|slot | - |
+| showSearch | 使单选模式可搜索 | boolean | false |
+| showArrow | 是否显示下拉小箭头 | boolean | true |
+| size | 选择框大小,可选 `large` `small` | string | default |
+| suffixIcon | 自定义的选择框后缀图标 | VNode \| slot | - |
+| removeIcon | 自定义的多选框清除图标 | VNode \| slot | - |
+| clearIcon | 自定义的多选框清空图标 | VNode \| slot | - |
+| menuItemSelectedIcon | 自定义当前选中的条目图标 | VNode \| slot | - |
+| tokenSeparators | 在 tags 和 multiple 模式下自动分词的分隔符 | string\[] | |
+| value(v-model) | 指定当前选中的条目 | string\|string\[]\|number\|number\[] | - |
+| options | options 数据,如果设置则不需要手动构造 selectOption 节点 | array<{value, label, [disabled, key, title]}> | \[] |
+| defaultOpen | 是否默认展开下拉菜单 | boolean | - |
+| open | 是否展开下拉菜单 | boolean | - |
+
+> 注意,如果发现下拉菜单跟随页面滚动,或者需要在其他弹层中触发 Select,请尝试使用 `getPopupContainer={triggerNode => triggerNode.parentNode}` 将下拉弹层渲染节点固定在触发器的父元素中。
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| blur | 失去焦点的时回调 | function |
+| change | 选中 option,或 input 的 value 变化(combobox 模式下)时,调用此函数 | function(value, option:Option/Array<Option>) |
+| deselect | 取消选中时调用,参数为选中项的 value (或 key) 值,仅在 multiple 或 tags 模式下生效 | function(value,option:Option) |
+| focus | 获得焦点时回调 | function |
+| inputKeydown | 键盘按下时回调 | function |
+| mouseenter | 鼠标移入时回调 | function |
+| mouseleave | 鼠标移出时回调 | function |
+| popupScroll | 下拉列表滚动时的回调 | function |
+| search | 文本框值变化时回调 | function(value: string) |
+| select | 被选中时调用,参数为选中项的 value (或 key) 值 | function(value, option:Option) |
+| dropdownVisibleChange | 展开下拉菜单的回调 | function(open) |
+
+### Select Methods
+
+| 名称 | 说明 |
+| ------- | -------- |
+| blur() | 取消焦点 |
+| focus() | 获取焦点 |
+
+### Option props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| disabled | 是否禁用 | boolean | false |
+| key | 和 value 含义一致。如果 Vue 需要你设置此项,此项值与 value 的值相同,然后可以省略 value 设置 | string | |
+| title | 选中该 Option 后,Select 的 title | string | - |
+| value | 默认根据此属性值进行筛选 | string\|number | - |
+| class | Option 器类名 | string | - |
+
+### OptGroup props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----- | ---- | --------------------------- | ------ |
+| key | | string | - |
+| label | 组名 | string\|\|function(h)\|slot | 无 |
+
+## FAQ
+
+### 点击 `dropdownRender` 里的内容浮层关闭怎么办?
+
+看下 [dropdownRender 例子](/components/select-cn/#components-select-demo-custom-dropdown) 里的说明。
diff --git a/antdv-demo/docs/skeleton/demo/active.md b/antdv-demo/docs/skeleton/demo/active.md
new file mode 100644
index 000000000..6ea612683
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/active.md
@@ -0,0 +1,15 @@
+
+#### 动画效果
+显示动画效果。
+
+
+
+#### Active Animation
+Display active animation.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/skeleton/demo/basic.md b/antdv-demo/docs/skeleton/demo/basic.md
new file mode 100644
index 000000000..a4c1a9245
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/basic.md
@@ -0,0 +1,15 @@
+
+#### 基本
+最简单的占位效果。
+
+
+
+#### Basic
+Simplest Skeleton usage.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/skeleton/demo/children.md b/antdv-demo/docs/skeleton/demo/children.md
new file mode 100644
index 000000000..63aa9bb32
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/children.md
@@ -0,0 +1,54 @@
+
+#### 包含子组件
+加载占位图包含子组件。
+
+
+
+#### Contains sub component
+Skeleton contains sub component.
+
+
+```vue
+
+
+
+
+
Ant Design Vue, a design language
+
+ We supply a series of design principles, practical patterns and high quality design
+ resources (Sketch and Axure), to help people create their product prototypes beautifully
+ and efficiently.
+
+
+
+
+ Show Skeleton
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/skeleton/demo/complex.md b/antdv-demo/docs/skeleton/demo/complex.md
new file mode 100644
index 000000000..8042f0446
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/complex.md
@@ -0,0 +1,15 @@
+
+#### 复杂的组合
+更复杂的组合。
+
+
+
+#### Complex combination
+Complex combination with avatar and multiple paragraphs.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/skeleton/demo/index.vue b/antdv-demo/docs/skeleton/demo/index.vue
new file mode 100644
index 000000000..88f01a46c
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/index.vue
@@ -0,0 +1,64 @@
+
diff --git a/antdv-demo/docs/skeleton/demo/list.md b/antdv-demo/docs/skeleton/demo/list.md
new file mode 100644
index 000000000..08d4132a6
--- /dev/null
+++ b/antdv-demo/docs/skeleton/demo/list.md
@@ -0,0 +1,79 @@
+
+#### 列表
+在列表组件中使用加载占位符。
+
+
+
+#### List
+Use skeleton in list component.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.content }}
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/skeleton/index.en-US.md b/antdv-demo/docs/skeleton/index.en-US.md
new file mode 100644
index 000000000..6227c7425
--- /dev/null
+++ b/antdv-demo/docs/skeleton/index.en-US.md
@@ -0,0 +1,31 @@
+## API
+
+### Skeleton
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| active | Show animation effect | boolean | false |
+| avatar | Show avatar placeholder | boolean \| [SkeletonAvatarProps](#SkeletonAvatarProps) | false |
+| loading | Display the skeleton when `true` | boolean | - |
+| paragraph | Show paragraph placeholder | boolean \| [SkeletonParagraphProps](#SkeletonParagraphProps) | true |
+| title | Show title placeholder | boolean \| [SkeletonTitleProps](#SkeletonTitleProps) | true |
+
+### SkeletonAvatarProps
+
+| Property | Description | Type | Default |
+| -------- | ----------------------- | --------------------------------------------- | ------- |
+| size | Set the size of avatar | number \| Enum{ 'large', 'small', 'default' } | - |
+| shape | Set the shape of avatar | Enum{ 'circle', 'square' } | - |
+
+### SkeletonTitleProps
+
+| Property | Description | Type | Default |
+| -------- | ---------------------- | ---------------- | ------- |
+| width | Set the width of title | number \| string | - |
+
+### SkeletonParagraphProps
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| rows | Set the row count of paragraph | number | - |
+| width | Set the width of paragraph. When width is an Array, it can set the width of each row. Otherwise only set the last row width | number \| string \| Array | - |
diff --git a/antdv-demo/docs/skeleton/index.zh-CN.md b/antdv-demo/docs/skeleton/index.zh-CN.md
new file mode 100644
index 000000000..396643d45
--- /dev/null
+++ b/antdv-demo/docs/skeleton/index.zh-CN.md
@@ -0,0 +1,31 @@
+## API
+
+### Skeleton
+
+| 属性 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| active | 是否展示动画效果 | boolean | false |
+| avatar | 是否显示头像占位图 | boolean \| [SkeletonAvatarProps](#SkeletonAvatarProps) | false |
+| loading | 为 `true` 时,显示占位图。反之则直接展示子组件 | boolean | - |
+| paragraph | 是否显示段落占位图 | boolean \| [SkeletonParagraphProps](#SkeletonParagraphProps) | true |
+| title | 是否显示标题占位图 | boolean \| [SkeletonTitleProps](#SkeletonTitleProps) | true |
+
+### SkeletonAvatarProps
+
+| 属性 | 说明 | 类型 | 默认值 |
+| ----- | -------------------- | --------------------------------------------- | ------ |
+| size | 设置头像占位图的大小 | number \| Enum{ 'large', 'small', 'default' } | - |
+| shape | 指定头像的形状 | Enum{ 'circle', 'square' } | - |
+
+### SkeletonTitleProps
+
+| 属性 | 说明 | 类型 | 默认值 |
+| ----- | -------------------- | ---------------- | ------ |
+| width | 设置标题占位图的宽度 | number \| string | - |
+
+### SkeletonParagraphProps
+
+| 属性 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| rows | 设置段落占位图的行数 | number | - |
+| width | 设置段落占位图的宽度,若为数组时则为对应的每行宽度,反之则是最后一行的宽度 | number \| string \| Array | - |
diff --git a/antdv-demo/docs/slider/demo/basic.md b/antdv-demo/docs/slider/demo/basic.md
new file mode 100644
index 000000000..a3ed6b5d5
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/basic.md
@@ -0,0 +1,38 @@
+
+#### 基本
+基本滑动条。当 `range` 为 `true` 时,渲染为双滑块。当 `disabled` 为 `true` 时,滑块处于不可用状态。
+
+
+
+#### Basic
+Basic slider. When `range` is `true`, display as dual thumb mode. When `disable` is `true`, the slider will not be interactable.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/event.md b/antdv-demo/docs/slider/demo/event.md
new file mode 100644
index 000000000..6e1421b03
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/event.md
@@ -0,0 +1,47 @@
+
+#### 事件
+当 Slider 的值发生改变时,会触发 `onChange` 事件,并把改变后的值作为参数传入。在 `onmouseup` 时,会触发 `onAfterChange` 事件,并把当前值作为参数传入。
+
+
+
+#### Event
+The `onChange` callback function will fire when the user changes the slider's value.
+The `onAfterChange` callback function will fire when `onmouseup` fired.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/icon-slider.md b/antdv-demo/docs/slider/demo/icon-slider.md
new file mode 100644
index 000000000..5aa1a3c06
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/icon-slider.md
@@ -0,0 +1,72 @@
+
+#### 带 icon 的滑块
+滑块左右可以设置图标来表达业务含义。
+
+
+
+#### Slider with icon
+You can add an icon beside the slider to make it meaningful.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/index.vue b/antdv-demo/docs/slider/demo/index.vue
new file mode 100644
index 000000000..b1ebca209
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/index.vue
@@ -0,0 +1,57 @@
+
diff --git a/antdv-demo/docs/slider/demo/input-number.md b/antdv-demo/docs/slider/demo/input-number.md
new file mode 100644
index 000000000..f59f1511d
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/input-number.md
@@ -0,0 +1,53 @@
+
+#### 带输入框的滑块
+和 [数字输入框](/components/input-number-cn/) 组件保持同步。
+
+
+
+#### Slider with InputNumber
+Synchronize with [InputNumber](/components/input-number/) component.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/mark.md b/antdv-demo/docs/slider/demo/mark.md
new file mode 100644
index 000000000..20c1e9a53
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/mark.md
@@ -0,0 +1,65 @@
+
+#### 带标签的滑块
+使用 `marks` 属性标注分段式滑块,使用 `value` / `defaultValue` 指定滑块位置。当 `included=false` 时,表明不同标记间为并列关系。当 `step=null` 时,Slider 的可选值仅有 `marks` 标出来的部分。
+
+
+
+#### Graduated slider
+Using `marks` property to mark a graduated slider, use `value` or `defaultValue` to specify the position of thumb.
+When `included` is false, means that different thumbs are coordinative.
+when `step` is null, users can only slide the thumbs onto marks.
+
+
+```vue
+
+
+
included=true
+
+
+
+
included=false
+
+
+
marks & step
+
+
+
step=null
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/reverse.md b/antdv-demo/docs/slider/demo/reverse.md
new file mode 100644
index 000000000..f9ad85354
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/reverse.md
@@ -0,0 +1,33 @@
+
+#### 反向
+设置 `reverse` 可以将滑动条置反。
+
+
+
+#### Reverse
+Using `reverse` to render slider reversely.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/show-tooltip.md b/antdv-demo/docs/slider/demo/show-tooltip.md
new file mode 100644
index 000000000..67bb2036a
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/show-tooltip.md
@@ -0,0 +1,15 @@
+
+#### 控制 ToolTip 的显示
+当 `tooltipVisible` 为 `true` 时,将始终显示ToolTip;反之则始终不显示,即使在拖动、移入时也是如此。
+
+
+
+#### Control visible of ToolTip
+When `tooltipVisible` is `true`, ToolTip will show always, or ToolTip will not show anyway, even if dragging or hovering.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/tip-formatter.md b/antdv-demo/docs/slider/demo/tip-formatter.md
new file mode 100644
index 000000000..faf417412
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/tip-formatter.md
@@ -0,0 +1,32 @@
+
+#### 自定义提示
+使用 `tipFormatter` 可以格式化 `Tooltip` 的内容,设置 `tipFormatter={null}`,则隐藏 `Tooltip`。
+
+
+
+#### Customize tooltip
+Use `tipFormatter` to format content of `Toolip`. If `tipFormatter` is null, hide it.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/demo/vertical.md b/antdv-demo/docs/slider/demo/vertical.md
new file mode 100644
index 000000000..0549384c8
--- /dev/null
+++ b/antdv-demo/docs/slider/demo/vertical.md
@@ -0,0 +1,54 @@
+
+#### 垂直
+垂直方向的 Slider。
+
+
+
+#### Vertical
+The vertical Slider.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/slider/index.en-US.md b/antdv-demo/docs/slider/index.en-US.md
new file mode 100644
index 000000000..65a104f78
--- /dev/null
+++ b/antdv-demo/docs/slider/index.en-US.md
@@ -0,0 +1,35 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| autoFocus | get focus when component mounted | boolean | false | |
+| defaultValue | The default value of slider. When `range` is `false`, use `number`, otherwise, use `[number, number]` | number\|number\[] | 0 or \[0, 0] | |
+| disabled | If true, the slider will not be interactable. | boolean | false | |
+| dots | Whether the thumb can drag over tick only. | boolean | false | |
+| included | Make effect when `marks` not null,`true` means containment and `false` means coordinative | boolean | true | |
+| marks | Tick mark of Slider, type of key must be `number`, and must in closed interval \[min, max], each mark can declare its own style. | object | { number: string\|VNode } or { number: { style: object, label: string\|VNode } } or { number: () => VNode } | |
+| max | The maximum value the slider can slide to | number | 100 | |
+| min | The minimum value the slider can slide to. | number | 0 | |
+| range | dual thumb mode | boolean | false | |
+| reverse | reverse the component | boolean | false | 1.5.0 |
+| step | The granularity the slider can step through values. Must greater than 0, and be divided by (max - min) . When `marks` no null, `step` can be `null`. | number\|null | 1 | |
+| tipFormatter | Slider will pass its value to `tipFormatter`, and display its value in Tooltip, and hide Tooltip when return value is null. | Function\|null | IDENTITY | |
+| value(v-model) | The value of slider. When `range` is `false`, use `number`, otherwise, use `[number, number]` | number\|number\[] | | |
+| vertical | If true, the slider will be vertical. | Boolean | false |
+| tooltipPlacement | Set Tooltip display position. Ref [`Tooltip`](/components/tooltip/). | string | | 1.5.0 |
+| tooltipVisible | If true, Tooltip will show always, or it will not show anyway, even if dragging or hovering. | Boolean | | |
+| getTooltipPopupContainer | The DOM container of the Tooltip, the default behavior is to create a div element in body. | Function | () => document.body | 1.5.0 |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| afterChange | Fire when `mouseup` is fired. | Function(value) | NOOP |
+| change | Callback function that is fired when the user changes the slider's value. | Function(value) | NOOP |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/slider/index.zh-CN.md b/antdv-demo/docs/slider/index.zh-CN.md
new file mode 100644
index 000000000..887a63d71
--- /dev/null
+++ b/antdv-demo/docs/slider/index.zh-CN.md
@@ -0,0 +1,35 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| autoFocus | 自动获取焦点 | boolean | false | |
+| defaultValue | 设置初始取值。当 `range` 为 `false` 时,使用 `number`,否则用 `[number, number]` | number\|number\[] | 0 or \[0, 0] | |
+| disabled | 值为 `true` 时,滑块为禁用状态 | boolean | false | |
+| dots | 是否只能拖拽到刻度上 | boolean | false | |
+| included | `marks` 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列 | boolean | true | |
+| marks | 刻度标记,key 的类型必须为 `number` 且取值在闭区间 \[min, max] 内,每个标签可以单独设置样式 | object | { number: string\|VNode } or { number: { style: object, label: string\|VNode } } or { number: () => VNode } | |
+| max | 最大值 | number | 100 | |
+| min | 最小值 | number | 0 | |
+| range | 双滑块模式 | boolean | false | |
+| reverse | 反向坐标轴 | boolean | false | 1.5.0 |
+| step | 步长,取值必须大于 0,并且可被 (max - min) 整除。当 `marks` 不为空对象时,可以设置 `step` 为 `null`,此时 Slider 的可选值仅有 marks 标出来的部分。 | number\|null | 1 | |
+| tipFormatter | Slider 会把当前值传给 `tipFormatter`,并在 Tooltip 中显示 `tipFormatter` 的返回值,若为 null,则隐藏 Tooltip。 | Function\|null | IDENTITY | |
+| value(v-model) | 设置当前取值。当 `range` 为 `false` 时,使用 `number`,否则用 `[number, number]` | number\|number\[] | | |
+| vertical | 值为 `true` 时,Slider 为垂直方向 | Boolean | false | |
+| tooltipPlacement | 设置 Tooltip 展示位置。参考 [`Tooltip`](/components/tooltip/)。 | string | | 1.5.0 |
+| tooltipVisible | 值为`true`时,Tooltip 将会始终显示;否则始终不显示,哪怕在拖拽及移入时。 | Boolean | | |
+| getTooltipPopupContainer | Tooltip 渲染父节点,默认渲染到 body 上。 | Function | () => document.body | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| afterChange | 与 `mouseup` 触发时机一致,把当前值作为参数传入。 | Function(value) | NOOP |
+| change | 当 Slider 的值发生改变时,会触发 change 事件,并把改变后的值作为参数传入。 | Function(value) | NOOP |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/space/demo/align.md b/antdv-demo/docs/space/demo/align.md
new file mode 100644
index 000000000..fcba6a7f4
--- /dev/null
+++ b/antdv-demo/docs/space/demo/align.md
@@ -0,0 +1,66 @@
+
+#### 对齐
+设置对齐模式。
+
+
+
+#### Align
+Config item align.
+
+
+```vue
+
+
+
+
+ center
+ Primary
+ Block
+
+
+
+
+ start
+ Primary
+ Block
+
+
+
+
+ end
+ Primary
+ Block
+
+
+
+
+ baseline
+ Primary
+ Block
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/space/demo/base.md b/antdv-demo/docs/space/demo/base.md
new file mode 100644
index 000000000..da6544502
--- /dev/null
+++ b/antdv-demo/docs/space/demo/base.md
@@ -0,0 +1,27 @@
+
+#### 基本用法
+相邻组件水平间距。
+
+
+
+#### Basic Usage
+Crowded components horizontal spacing.
+
+
+```vue
+
+
+ Space
+ Button
+
+ Click to Upload
+
+
+ Confirm
+
+
+
+
+```
diff --git a/antdv-demo/docs/space/demo/customize.md b/antdv-demo/docs/space/demo/customize.md
new file mode 100644
index 000000000..c221a3fe8
--- /dev/null
+++ b/antdv-demo/docs/space/demo/customize.md
@@ -0,0 +1,34 @@
+
+#### 自定义尺寸
+自定义间距大小。
+
+
+
+#### Customize Size
+Custom spacing size.
+
+
+```vue
+
+
+
+
+
+
+ Primary
+ Default
+ Dashed
+ Link
+
+
+
+
+```
diff --git a/antdv-demo/docs/space/demo/index.vue b/antdv-demo/docs/space/demo/index.vue
new file mode 100644
index 000000000..6cd9c0fe6
--- /dev/null
+++ b/antdv-demo/docs/space/demo/index.vue
@@ -0,0 +1,53 @@
+
+
+
diff --git a/antdv-demo/docs/space/demo/size.md b/antdv-demo/docs/space/demo/size.md
new file mode 100644
index 000000000..a8aee5e0d
--- /dev/null
+++ b/antdv-demo/docs/space/demo/size.md
@@ -0,0 +1,40 @@
+
+#### 间距大小
+间距预设大、中、小三种大小。
+通过设置 `size` 为 `large` `middle` 分别把间距设为大、中间距。若不设置 `size`,则间距为小。
+
+
+
+#### Space Size
+`large`, `middle` and `small` preset sizes.
+Set the size to `large` and `middle` by setting size to large and middle respectively. If `size` is not set, the spacing is `small`.
+
+
+```vue
+
+
+
+ Small
+ Middle
+ Large
+
+
+
+
+ Primary
+ Default
+ Dashed
+ Link
+
+
+
+
+```
diff --git a/antdv-demo/docs/space/demo/vertical.md b/antdv-demo/docs/space/demo/vertical.md
new file mode 100644
index 000000000..c0e15b79c
--- /dev/null
+++ b/antdv-demo/docs/space/demo/vertical.md
@@ -0,0 +1,29 @@
+
+#### 垂直间距
+相邻组件垂直间距。
+可以设置 `width: 100%` 独占一行。
+
+
+
+#### Vertical Space
+Crowded components vertical spacing.
+Can set `width: 100%` fill a row.
+
+
+```vue
+
+
+
+ Card content
+ Card content
+
+
+ Card content
+ Card content
+
+
+
+
+```
diff --git a/antdv-demo/docs/space/index.en-US.md b/antdv-demo/docs/space/index.en-US.md
new file mode 100644
index 000000000..2f8640a97
--- /dev/null
+++ b/antdv-demo/docs/space/index.en-US.md
@@ -0,0 +1,7 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| align | Align items | `start` \| `end` \|`center` \|`baseline` | - | 1.6.5 |
+| direction | The space direction | `vertical` \| `horizontal` | `horizontal` | 1.6.5 |
+| size | The space size | `small` \| `middle` \| `large` \| `number` | `small` | 1.6.5 |
diff --git a/antdv-demo/docs/space/index.zh-CN.md b/antdv-demo/docs/space/index.zh-CN.md
new file mode 100644
index 000000000..571e5992b
--- /dev/null
+++ b/antdv-demo/docs/space/index.zh-CN.md
@@ -0,0 +1,7 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --------- | -------- | ------------------------------------------ | ------------ | ----- |
+| align | 对齐方式 | `start` \| `end` \|`center` \|`baseline` | - | 1.6.5 |
+| direction | 间距方向 | `vertical` \| `horizontal` | `horizontal` | 1.6.5 |
+| size | 间距大小 | `small` \| `middle` \| `large` \| `number` | `small` | 1.6.5 |
diff --git a/antdv-demo/docs/spin/demo/basic.md b/antdv-demo/docs/spin/demo/basic.md
new file mode 100644
index 000000000..b1508ffc4
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/basic.md
@@ -0,0 +1,17 @@
+
+#### 基本用法
+一个简单的 loading 状态。
+
+
+
+#### basic Usage
+A simple loading status.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/custom-indicator.md b/antdv-demo/docs/spin/demo/custom-indicator.md
new file mode 100644
index 000000000..6cb016164
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/custom-indicator.md
@@ -0,0 +1,29 @@
+
+#### 自定义指示符
+使用自定义指示符。
+
+
+
+#### Custom spinning indicator
+Use custom loading indicator.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/delayAndDebounce.md b/antdv-demo/docs/spin/demo/delayAndDebounce.md
new file mode 100644
index 000000000..f72164101
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/delayAndDebounce.md
@@ -0,0 +1,45 @@
+
+#### 延迟
+延迟显示 loading 效果。当 spinning 状态在 `delay` 时间内结束,则不显示 loading 状态。
+
+
+
+#### delay
+Specifies a delay for loading state. If `spinning` ends during delay, loading status won't appear.
+
+
+```vue
+
+
+
+
+
+ 可以点击‘切换’按钮,延迟显示 loading 效果。当 spinning 状态在 `delay` 时间内结束,则不显示
+ loading 状态。
+
+
+ Loading state:
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/index.vue b/antdv-demo/docs/spin/demo/index.vue
new file mode 100644
index 000000000..a73253ac3
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/index.vue
@@ -0,0 +1,58 @@
+
diff --git a/antdv-demo/docs/spin/demo/inside.md b/antdv-demo/docs/spin/demo/inside.md
new file mode 100644
index 000000000..d4402cade
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/inside.md
@@ -0,0 +1,27 @@
+
+#### 容器
+放入一个容器中。
+
+
+
+#### Inside a container
+Spin in a container.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/nested.md b/antdv-demo/docs/spin/demo/nested.md
new file mode 100644
index 000000000..9fe75b901
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/nested.md
@@ -0,0 +1,43 @@
+
+#### 卡片加载中
+可以直接把内容内嵌到 `Spin` 中,将现有容器变为加载状态。
+
+
+
+#### Embedded mode
+Embedding content into `Spin` will alter it into loading state.
+
+
+```vue
+
+
+
+
+
+ 可以点击‘切换’按钮,控制本区域的spin展示。
+
+
+ Loading state:
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/size.md b/antdv-demo/docs/spin/demo/size.md
new file mode 100644
index 000000000..75b6ba3d1
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/size.md
@@ -0,0 +1,19 @@
+
+#### 各种大小
+小的用于文本加载,默认用于卡片容器级加载,大的用于**页面级**加载。
+
+
+
+#### Size
+A small `Spin` use in loading text, default `Spin` use in loading card-level block, and large `Spin` use in loading **page**.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/spin/demo/tip.md b/antdv-demo/docs/spin/demo/tip.md
new file mode 100644
index 000000000..5f27af1c6
--- /dev/null
+++ b/antdv-demo/docs/spin/demo/tip.md
@@ -0,0 +1,28 @@
+
+#### 自定义描述文案
+自定义描述文案。
+
+
+
+#### Customized description
+Customized description content.
+
+
+```vue
+
+
+
+
+
+ 我的描述文案是自定义的。。。
+
+
+
+
+```
diff --git a/antdv-demo/docs/spin/index.en-US.md b/antdv-demo/docs/spin/index.en-US.md
new file mode 100644
index 000000000..66ff7bbd6
--- /dev/null
+++ b/antdv-demo/docs/spin/index.en-US.md
@@ -0,0 +1,30 @@
+## API
+
+| Property | Description | Type | Default Value |
+| --- | --- | --- | --- |
+| delay | specifies a delay in milliseconds for loading state (prevent flush) | number (milliseconds) | - |
+| indicator | vue node of the spinning indicator | vNode \|slot | - |
+| size | size of Spin, options: `small`, `default` and `large` | string | `default` |
+| spinning | whether Spin is spinning | boolean | true |
+| tip | customize description content when Spin has children | string | - |
+| wrapperClassName | className of wrapper when Spin has children | string | - |
+
+### Static Method
+
+- `Spin.setDefaultIndicator({indicator})` As `indicator`, you can define the global default spin element
+
+```jsx
+Spin.setDefaultIndicator({
+ indicator: h => {
+ return ;
+ },
+});
+or;
+Spin.setDefaultIndicator({
+ indicator: {
+ render() {
+ return ;
+ },
+ },
+});
+```
diff --git a/antdv-demo/docs/spin/index.zh-CN.md b/antdv-demo/docs/spin/index.zh-CN.md
new file mode 100644
index 000000000..e791436ed
--- /dev/null
+++ b/antdv-demo/docs/spin/index.zh-CN.md
@@ -0,0 +1,30 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ---------------- | -------------------------------------------- | ------------- | --------- |
+| delay | 延迟显示加载效果的时间(防止闪烁) | number (毫秒) | - |
+| indicator | 加载指示符 | vNode \| slot | - |
+| size | 组件大小,可选值为 `small` `default` `large` | string | 'default' |
+| spinning | 是否为加载中状态 | boolean | true |
+| tip | 当作为包裹元素时,可以自定义描述文案 | string | - |
+| wrapperClassName | 包装器的类属性 | string | - |
+
+### 静态方法
+
+- `Spin.setDefaultIndicator({indicator})` 同上 `indicator`,你可以自定义全局默认元素
+
+ ```jsx
+ Spin.setDefaultIndicator({
+ indicator: h => {
+ return ;
+ },
+ });
+ 或者;
+ Spin.setDefaultIndicator({
+ indicator: {
+ render() {
+ return ;
+ },
+ },
+ });
+ ```
diff --git a/antdv-demo/docs/statistic/demo/basic.md b/antdv-demo/docs/statistic/demo/basic.md
new file mode 100644
index 000000000..84825264d
--- /dev/null
+++ b/antdv-demo/docs/statistic/demo/basic.md
@@ -0,0 +1,18 @@
+
+#### 基本
+简单展示
+
+
+
+#### Basic
+Simplest Usage.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/statistic/demo/card.md b/antdv-demo/docs/statistic/demo/card.md
new file mode 100644
index 000000000..424e9e36c
--- /dev/null
+++ b/antdv-demo/docs/statistic/demo/card.md
@@ -0,0 +1,50 @@
+
+#### 在卡片中使用
+在卡片中展示统计数值。
+
+
+
+#### In Card
+Display statistic data in Card.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/statistic/demo/countdown.md b/antdv-demo/docs/statistic/demo/countdown.md
new file mode 100644
index 000000000..93a308833
--- /dev/null
+++ b/antdv-demo/docs/statistic/demo/countdown.md
@@ -0,0 +1,49 @@
+
+#### 倒计时
+倒计时组件。
+
+
+
+#### Countdown
+Countdown component.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/statistic/demo/index.vue b/antdv-demo/docs/statistic/demo/index.vue
new file mode 100644
index 000000000..4e4a87c95
--- /dev/null
+++ b/antdv-demo/docs/statistic/demo/index.vue
@@ -0,0 +1,48 @@
+
diff --git a/antdv-demo/docs/statistic/demo/unit.md b/antdv-demo/docs/statistic/demo/unit.md
new file mode 100644
index 000000000..98df45430
--- /dev/null
+++ b/antdv-demo/docs/statistic/demo/unit.md
@@ -0,0 +1,30 @@
+
+#### 单位
+通过前缀和后缀添加单位。
+
+
+
+#### Unit
+Add unit through `prefix` and `suffix`.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+ / 100
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/statistic/index.en-US.md b/antdv-demo/docs/statistic/index.en-US.md
new file mode 100644
index 000000000..79c17b319
--- /dev/null
+++ b/antdv-demo/docs/statistic/index.en-US.md
@@ -0,0 +1,32 @@
+## API
+
+### Statistic
+
+| Property | Description | Type | Default |
+| ---------------- | ----------------------------- | ------------------------------ | ------- |
+| decimalSeparator | decimal separator | string | . |
+| formatter | customize value display logic | v-slot \|({h, value}) => VNode | - |
+| groupSeparator | group separator | string | , |
+| precision | precision of input value | number | - |
+| prefix | prefix node of value | string \| v-slot | - |
+| suffix | suffix node of value | string \| v-slot | - |
+| title | Display title | string \| v-slot | - |
+| value | Display value | string \| number | - |
+| valueStyle | Set value css style | style | - |
+
+### Statistic.Countdown
+
+| Property | Description | Type | Default |
+| ---------- | ---------------------------------------- | ---------------- | ---------- |
+| format | Format as [moment](http://momentjs.com/) | string | 'HH:mm:ss' |
+| prefix | prefix node of value | string \| v-slot | - |
+| suffix | suffix node of value | string \| v-slot | - |
+| title | Display title | string \| v-slot | - |
+| value | Set target countdown time | number \| moment | - |
+| valueStyle | Set value css style | style | - |
+
+#### Statistic.Countdown Events
+
+| Events Name | Description | Arguments |
+| ----------- | ---------------------- | ---------- |
+| finish | Trigger when time's up | () => void | - |
diff --git a/antdv-demo/docs/statistic/index.zh-CN.md b/antdv-demo/docs/statistic/index.zh-CN.md
new file mode 100644
index 000000000..d69b3f400
--- /dev/null
+++ b/antdv-demo/docs/statistic/index.zh-CN.md
@@ -0,0 +1,32 @@
+## API
+
+### Statistic
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ---------------- | ---------------- | ------------------------------- | ------ |
+| decimalSeparator | 设置小数点 | string | . |
+| formatter | 自定义数值展示 | v-slot \| ({h, value}) => VNode | - |
+| groupSeparator | 设置千分位标识符 | string | , |
+| precision | 数值精度 | number | - |
+| prefix | 设置数值的前缀 | string \| v-slot | - |
+| suffix | 设置数值的后缀 | string \| v-slot | - |
+| title | 数值的标题 | string \| v-slot | - |
+| value | 数值内容 | string \| number | - |
+| valueStyle | 设置数值的样式 | style | - |
+
+### Statistic.Countdown
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| format | 格式化倒计时展示,参考 [moment](http://momentjs.com/) | string | 'HH:mm:ss' |
+| prefix | 设置数值的前缀 | string \| v-slot | - |
+| suffix | 设置数值的后缀 | string \| v-slot | - |
+| title | 数值的标题 | string \| v-slot | - |
+| value | 数值内容 | number \| moment | - |
+| valueStyle | 设置数值的样式 | style | - |
+
+#### Statistic.Countdown 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ---------------- | ---------- |
+| finish | 倒计时完成时触发 | () => void |
diff --git a/antdv-demo/docs/steps/demo/clickable.md b/antdv-demo/docs/steps/demo/clickable.md
new file mode 100644
index 000000000..a3b5557fa
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/clickable.md
@@ -0,0 +1,42 @@
+
+#### 可点击
+设置 `@change` 后,Steps 变为可点击状态。
+
+
+
+#### Clickable
+Setting `@change` makes Steps clickable.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/customized-progress-dot.md b/antdv-demo/docs/steps/demo/customized-progress-dot.md
new file mode 100644
index 000000000..2509c57ec
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/customized-progress-dot.md
@@ -0,0 +1,28 @@
+
+#### 自定义点状步骤条
+为点状步骤条增加自定义展示。
+
+
+
+#### Customized Dot Style
+You can customize the display for Steps with progress dot style.
+
+
+```vue
+
+
+
+
+
+ step {{ index }} status: {{ status }}
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/error.md b/antdv-demo/docs/steps/demo/error.md
new file mode 100644
index 000000000..8e9b379ea
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/error.md
@@ -0,0 +1,19 @@
+
+#### 步骤运行错误
+使用 Steps 的 `status` 属性来指定当前步骤的状态。
+
+
+
+#### Error status
+By using `status` of `Steps`, you can specify the state for current step.
+
+
+```vue
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/icon.md b/antdv-demo/docs/steps/demo/icon.md
new file mode 100644
index 000000000..c24630417
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/icon.md
@@ -0,0 +1,28 @@
+
+#### 带图标的步骤条
+通过设置 `Steps.Step` 的 `icon` 属性,可以启用自定义图标。
+
+
+
+#### With icon
+You can use your own custom icons by setting the property `icon` for `Steps.Step`.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/index.vue b/antdv-demo/docs/steps/demo/index.vue
new file mode 100644
index 000000000..3e14d6e62
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/index.vue
@@ -0,0 +1,68 @@
+
diff --git a/antdv-demo/docs/steps/demo/nav.md b/antdv-demo/docs/steps/demo/nav.md
new file mode 100644
index 000000000..c008a6fca
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/nav.md
@@ -0,0 +1,61 @@
+
+#### 导航步骤
+导航类型的步骤条。
+
+
+
+#### Navigation Steps
+Navigation steps.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/progress-dot.md b/antdv-demo/docs/steps/demo/progress-dot.md
new file mode 100644
index 000000000..0083e6a59
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/progress-dot.md
@@ -0,0 +1,29 @@
+
+#### 点状步骤条
+包含步骤点的进度条。
+
+
+
+#### Dot Style
+Steps with progress dot style.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/simple.md b/antdv-demo/docs/steps/demo/simple.md
new file mode 100644
index 000000000..499fd2300
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/simple.md
@@ -0,0 +1,25 @@
+
+#### 基本用法
+简单的步骤条。
+
+
+
+#### Basic
+The most basic step bar.
+
+
+```vue
+
+
+
+
+
+ Finished
+
+ This is a description.
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/small-size.md b/antdv-demo/docs/steps/demo/small-size.md
new file mode 100644
index 000000000..b7fc83c29
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/small-size.md
@@ -0,0 +1,19 @@
+
+#### 迷你版
+迷你版的步骤条,通过设置 `` 启用。
+
+
+
+#### Mini version
+By setting like this: ``, you can get a mini version.
+
+
+```vue
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/step-next.md b/antdv-demo/docs/steps/demo/step-next.md
new file mode 100644
index 000000000..2bf2b1218
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/step-next.md
@@ -0,0 +1,83 @@
+
+#### 步骤切换
+通常配合内容及按钮使用,表示一个流程的处理进度。
+
+
+
+#### Switch Step
+Cooperate with the content and buttons, to represent the progress of a process.
+
+
+```vue
+
+
+
+
+
+
+ {{ steps[current].content }}
+
+
+
+ Next
+
+
+ Done
+
+
+ Previous
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/vertical-small.md b/antdv-demo/docs/steps/demo/vertical-small.md
new file mode 100644
index 000000000..13ec6e5a3
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/vertical-small.md
@@ -0,0 +1,19 @@
+
+#### 竖直方向的小型步骤条
+简单的竖直方向的小型步骤条。
+
+
+
+#### Vertical mini version
+A simple mini version step bar in the vertical direction.
+
+
+```vue
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/demo/vertical.md b/antdv-demo/docs/steps/demo/vertical.md
new file mode 100644
index 000000000..c63e3a6b1
--- /dev/null
+++ b/antdv-demo/docs/steps/demo/vertical.md
@@ -0,0 +1,19 @@
+
+#### 竖直方向的步骤条
+简单的竖直方向的步骤条。
+
+
+
+#### Vertical
+A simple step bar in the vertical direction.
+
+
+```vue
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/steps/index.en-US.md b/antdv-demo/docs/steps/index.en-US.md
new file mode 100644
index 000000000..d34ac3951
--- /dev/null
+++ b/antdv-demo/docs/steps/index.en-US.md
@@ -0,0 +1,33 @@
+### Steps
+
+The whole of the step bar.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| current(v-model) | to set the current step, counting from 0. You can overwrite this state by using `status` of `Step`, support v-model after 1.5.0 | number | 0 | |
+| type | Type of steps, can be set to one of the following values: `default`, `navigation` | string | `default` | 1.5.0 |
+| direction | to specify the direction of the step bar, `horizontal` and `vertical` are currently supported | string | `horizontal` | |
+| labelPlacement | support vertial title and description | string | `horizontal` | |
+| progressDot | Steps with progress dot style, customize the progress dot by setting a scoped slot. labelPlacement will be `vertical` | Boolean or slot="progressDot" slot-scope="{index, status, title, description, prefixCls})" | false | |
+| size | to specify the size of the step bar, `default` and `small` are currently supported | string | `default` | |
+| status | to specify the status of current step, can be set to one of the following values: `wait` `process` `finish` `error` | string | `process` | |
+| initial | set the initial step, counting from 0 | number | 0 | |
+
+#### Steps Events
+
+| Events Name | Description | Arguments | Version |
+| ----------- | ---------------------------- | ----------------- | ------- |
+| change | Trigger when Step is changed | (current) => void | - | 1.5.0 |
+
+### Steps.Step
+
+A single step in the step bar.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| description | description of the step, optional property | string\|slot | - | |
+| icon | icon of the step, optional property | string\|slot | - | |
+| status | to specify the status. It will be automatically set by `current` of `Steps` if not configured. Optional values are: `wait` `process` `finish` `error` | string | `wait` | |
+| title | title of the step | string\|slot | - | |
+| subTitle | Subtitle of the step | string\|slot | - | 1.5.0 |
+| disabled | Disable click | boolean | false | 1.5.0 |
diff --git a/antdv-demo/docs/steps/index.zh-CN.md b/antdv-demo/docs/steps/index.zh-CN.md
new file mode 100644
index 000000000..74648e22b
--- /dev/null
+++ b/antdv-demo/docs/steps/index.zh-CN.md
@@ -0,0 +1,33 @@
+### Steps
+
+整体步骤条。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| type | 步骤条类型,有 `default` 和 `navigation` 两种 | string | `default` | 1.5.0 |
+| current (v-model) | 指定当前步骤,从 0 开始记数。在子 Step 元素中,可以通过 `status` 属性覆盖状态, 1.5.0 后支持 v-model | number | 0 | |
+| direction | 指定步骤条方向。目前支持水平(`horizontal`)和竖直(`vertical`)两种方向 | string | horizontal | |
+| labelPlacement | 指定标签放置位置,默认水平放图标右侧,可选`vertical`放图标下方 | string | `horizontal` | |
+| progressDot | 点状步骤条,可以设置为一个 作用域插槽,labelPlacement 将强制为`vertical` | Boolean or slot="progressDot" slot-scope="{index, status, title, description, prefixCls})" | false | |
+| size | 指定大小,目前支持普通(`default`)和迷你(`small`) | string | default | |
+| status | 指定当前步骤的状态,可选 `wait` `process` `finish` `error` | string | process | |
+| initial | 起始序号,从 0 开始记数 | number | 0 | |
+
+#### Steps 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| -------- | ------------------ | ----------------- | ---- |
+| change | 点击切换步骤时触发 | (current) => void | - | 1.5.0 |
+
+### Steps.Step
+
+步骤条内的每一个步骤。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| description | 步骤的详情描述,可选 | string \| slot | - | |
+| icon | 步骤图标的类型,可选 | string \| slot | - | |
+| status | 指定状态。当不配置该属性时,会使用 Steps 的 `current` 来自动指定状态。可选:`wait` `process` `finish` `error` | string | wait | |
+| title | 标题 | string \| slot | - | |
+| subTitle | 子标题 | string \| slot | - | 1.5.0 |
+| disabled | 禁用点击 | boolean | false | 1.5.0 |
diff --git a/antdv-demo/docs/switch/demo/basic.md b/antdv-demo/docs/switch/demo/basic.md
new file mode 100644
index 000000000..2c6fb9dbd
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/basic.md
@@ -0,0 +1,29 @@
+
+#### 基本用法
+最简单的用法。
+
+
+
+#### basic Usage
+The most basic usage.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/switch/demo/disabled.md b/antdv-demo/docs/switch/demo/disabled.md
new file mode 100644
index 000000000..3b5185cf3
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/disabled.md
@@ -0,0 +1,35 @@
+
+#### 不可用
+Switch 失效状态。
+
+
+
+#### Disabled
+Disabled state of `Switch`.
+
+
+```vue
+
+
+
+
+
+ Toggle disabled
+
+
+
+
+```
diff --git a/antdv-demo/docs/switch/demo/index.vue b/antdv-demo/docs/switch/demo/index.vue
new file mode 100644
index 000000000..297eb6a71
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/index.vue
@@ -0,0 +1,57 @@
+
diff --git a/antdv-demo/docs/switch/demo/loading.md b/antdv-demo/docs/switch/demo/loading.md
new file mode 100644
index 000000000..00a5c3e85
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/loading.md
@@ -0,0 +1,19 @@
+
+#### 加载中
+标识开关操作仍在执行中。
+
+
+
+#### Loading
+Mark a pending state of switch.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/switch/demo/size.md b/antdv-demo/docs/switch/demo/size.md
new file mode 100644
index 000000000..dde5b0b68
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/size.md
@@ -0,0 +1,19 @@
+
+#### 两种大小
+`size="small"` 表示小号开关。
+
+
+
+#### Two sizes
+`size="small"` represents a small sized switch.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/switch/demo/text.md b/antdv-demo/docs/switch/demo/text.md
new file mode 100644
index 000000000..818927cfc
--- /dev/null
+++ b/antdv-demo/docs/switch/demo/text.md
@@ -0,0 +1,24 @@
+
+#### 文字和图标
+带有文字和图标。
+
+
+
+#### Text & icon
+With text and icon.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/switch/index.en-US.md b/antdv-demo/docs/switch/index.en-US.md
new file mode 100644
index 000000000..d0ca594a6
--- /dev/null
+++ b/antdv-demo/docs/switch/index.en-US.md
@@ -0,0 +1,26 @@
+## API
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| autoFocus | get focus when component mounted | boolean | false |
+| checked(v-model) | determine whether the `Switch` is checked | boolean | false |
+| checkedChildren | content to be shown when the state is checked | string\|slot | |
+| defaultChecked | to set the initial state | boolean | false |
+| disabled | Disable switch | boolean | false |
+| loading | loading state of switch | boolean | false |
+| size | the size of the `Switch`, options: `default` `small` | string | default |
+| unCheckedChildren | content to be shown when the state is unchecked | string\|slot | |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | trigger when the checked state is changing | Function(checked: boolean, event: Event) | |
+| click | trigger when clicked | Function(checked: boolean, event: Event) | |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/switch/index.zh-CN.md b/antdv-demo/docs/switch/index.zh-CN.md
new file mode 100644
index 000000000..f02b7c4ce
--- /dev/null
+++ b/antdv-demo/docs/switch/index.zh-CN.md
@@ -0,0 +1,26 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----------------- | ----------------------------------- | ------------ | ------- |
+| autoFocus | 组件自动获取焦点 | boolean | false |
+| checked(v-model) | 指定当前是否选中 | boolean | false |
+| checkedChildren | 选中时的内容 | string\|slot | |
+| defaultChecked | 初始是否选中 | boolean | false |
+| disabled | 是否禁用 | boolean | false |
+| loading | 加载中的开关 | boolean | false |
+| size | 开关大小,可选值:`default` `small` | string | default |
+| unCheckedChildren | 非选中时的内容 | string\|slot | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | -------------- | ---------------------------------------- |
+| change | 变化时回调函数 | Function(checked:Boolean, event: Event) |
+| click | 点击时回调函数 | Function(checked: boolean, event: Event) | |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/table/demo/ajax.md b/antdv-demo/docs/table/demo/ajax.md
new file mode 100644
index 000000000..fafbe93d0
--- /dev/null
+++ b/antdv-demo/docs/table/demo/ajax.md
@@ -0,0 +1,100 @@
+
+#### 远程加载数据
+这个例子通过简单的 ajax 读取方式,演示了如何从服务端读取并展现数据,具有筛选、排序等功能以及页面 loading 效果。开发者可以自行接入其他数据处理方式。
+另外,本例也展示了筛选排序功能如何交给服务端实现,列不需要指定具体的 `onFilter` 和 `sorter` 函数,而是在把筛选和排序的参数发到服务端来处理。
+**注意,此示例使用 [模拟接口](https://randomuser.me),展示数据可能不准确,请打开网络面板查看请求。**
+
+
+
+#### Ajax
+This example shows how to fetch and present data from a remote server, and how to implement filtering and sorting in server side by sending related parameters to server.
+**Note, this example use [Mock API](https://randomuser.me) that you can look up in Network Console.**
+
+
+```vue
+
+
+ {{ name.first }} {{ name.last }}
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/basic.md b/antdv-demo/docs/table/demo/basic.md
new file mode 100644
index 000000000..98d1f0e70
--- /dev/null
+++ b/antdv-demo/docs/table/demo/basic.md
@@ -0,0 +1,98 @@
+
+#### 基本用法
+简单的表格,最后一列是各种操作。
+
+
+
+#### basic Usage
+Simple table with actions.
+
+
+```vue
+
+
+ {{ text }}
+ Name
+
+
+ {{ tag.toUpperCase() }}
+
+
+
+ Invite 一 {{ record.name }}
+
+ Delete
+
+ More actions
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/bordered.md b/antdv-demo/docs/table/demo/bordered.md
new file mode 100644
index 000000000..0ecbb9f69
--- /dev/null
+++ b/antdv-demo/docs/table/demo/bordered.md
@@ -0,0 +1,79 @@
+
+#### 带边框
+添加表格边框线,页头和页脚。
+
+
+
+#### border, title and footer
+Add border, title and footer for table.
+
+
+```vue
+
+
+
+ {{ text }}
+
+
+ Header
+
+
+ Footer
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/colspan-rowspan.md b/antdv-demo/docs/table/demo/colspan-rowspan.md
new file mode 100644
index 000000000..c08ab01c9
--- /dev/null
+++ b/antdv-demo/docs/table/demo/colspan-rowspan.md
@@ -0,0 +1,142 @@
+
+#### 表格行/列合并
+表头只支持列合并,使用 column 里的 colSpan 进行设置。
+表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。
+
+
+
+#### colSpan and rowSpan
+Table column title supports `colSpan` that set in `column`.
+Table cell supports `colSpan` and `rowSpan` that set in render return object. When each of them is set to `0`, the cell will not be rendered.
+
+
+```vue
+
+
+
+ {{ text }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/custom-filter-panel.md b/antdv-demo/docs/table/demo/custom-filter-panel.md
new file mode 100644
index 000000000..ce63a09f0
--- /dev/null
+++ b/antdv-demo/docs/table/demo/custom-filter-panel.md
@@ -0,0 +1,194 @@
+
+#### 自定义筛选菜单
+通过 `filterDropdown` 定义自定义的列筛选功能,并实现一个搜索列的示例。
+
+
+
+#### Customized filter panel
+Implement a customized column search example via `filterDropdown`.
+
+
+```vue
+
+
+
+
setSelectedKeys(e.target.value ? [e.target.value] : [])"
+ @pressEnter="() => handleSearch(selectedKeys, confirm, column.dataIndex)"
+ />
+ handleSearch(selectedKeys, confirm, column.dataIndex)"
+ >
+ Search
+
+ handleReset(clearFilters)">
+ Reset
+
+
+
+
+
+
+ {{ fragment }}
+ {{ fragment }}
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/edit-cell.md b/antdv-demo/docs/table/demo/edit-cell.md
new file mode 100644
index 000000000..b47c6d9f9
--- /dev/null
+++ b/antdv-demo/docs/table/demo/edit-cell.md
@@ -0,0 +1,188 @@
+
+#### 可编辑单元格
+带单元格编辑功能的表格。
+
+
+
+#### Editable Cells
+Table with editable cells.
+
+
+```vue
+
+
+
+ Add
+
+
+
+
+
+
+ onDelete(record.key)"
+ >
+ Delete
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/edit-row.md b/antdv-demo/docs/table/demo/edit-row.md
new file mode 100644
index 000000000..ec55649aa
--- /dev/null
+++ b/antdv-demo/docs/table/demo/edit-row.md
@@ -0,0 +1,140 @@
+
+#### 可编辑行
+带行编辑功能的表格。
+
+
+
+#### Editable Rows
+Table with editable rows.
+
+
+```vue
+
+
+
+
+
handleChange(e.target.value, record.key, col)"
+ />
+
+ {{ text }}
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/ellipsis.md b/antdv-demo/docs/table/demo/ellipsis.md
new file mode 100644
index 000000000..102bdc8e5
--- /dev/null
+++ b/antdv-demo/docs/table/demo/ellipsis.md
@@ -0,0 +1,92 @@
+
+#### 单元格自动省略
+设置 `column.ellipsis` 可以让单元格内容根据宽度自动省略。
+> 列头缩略暂不支持和排序筛选一起使用。
+
+
+
+#### ellipsis column
+Ellipsize cell content via setting `column.ellipsis`.
+> Cannot ellipsize table header with sorters and filters for now.
+
+
+```vue
+
+
+ {{ text }}
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/expand-children.md b/antdv-demo/docs/table/demo/expand-children.md
new file mode 100644
index 000000000..b87b091ef
--- /dev/null
+++ b/antdv-demo/docs/table/demo/expand-children.md
@@ -0,0 +1,127 @@
+
+#### 树形数据展示
+表格支持树形数据的展示,当数据中有 `children` 字段时会自动展示为树形表格,如果不需要或配置为其他字段可以用 `childrenColumnName` 进行配置。
+可以通过设置 `indentSize` 以控制每一层的缩进宽度。
+> 注:暂不支持父子数据递归关联选择。
+
+
+
+#### Tree data
+Display tree structure data in Table when there is field key `children` in dataSource, try to customize `childrenColumnName` property to avoid tree table structure.
+You can control the indent width by setting `indentSize`.
+> Note, no support for recursive selection of tree structure data table yet.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/expand.md b/antdv-demo/docs/table/demo/expand.md
new file mode 100644
index 000000000..1bc1b8b5b
--- /dev/null
+++ b/antdv-demo/docs/table/demo/expand.md
@@ -0,0 +1,61 @@
+
+#### 可展开
+当表格内容较多不能一次性完全展示时。
+
+
+
+#### Expandable Row
+When there's too much information to show and the table can't display all at once.
+
+
+```vue
+
+
+ Delete
+
+ {{ record.description }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/fixed-columns-header.md b/antdv-demo/docs/table/demo/fixed-columns-header.md
new file mode 100644
index 000000000..e5f8f388c
--- /dev/null
+++ b/antdv-demo/docs/table/demo/fixed-columns-header.md
@@ -0,0 +1,61 @@
+
+#### 固定头和列
+适合同时展示有大量数据和数据列。
+> 若列头与内容不对齐或出现列重复,请指定**固定列**的宽度 `width`。如果指定 `width` 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局。
+> 建议指定 `scroll.x` 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 `scroll.x`。
+
+
+
+#### Fixed Columns and Header
+A Solution for displaying large amounts of data with long columns.
+> Specify the width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.
+> A fixed value which is greater than table width for `scroll.x` is recommended. The sum of unfixed columns should not greater than `scroll.x`.
+
+
+```vue
+
+
+ action
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/fixed-columns.md b/antdv-demo/docs/table/demo/fixed-columns.md
new file mode 100644
index 000000000..06eacb4e2
--- /dev/null
+++ b/antdv-demo/docs/table/demo/fixed-columns.md
@@ -0,0 +1,66 @@
+
+#### 固定列
+对于列数很多的数据,可以固定前后的列,横向滚动查看其它数据,需要和 `scroll.x` 配合使用。
+> 若列头与内容不对齐或出现列重复,请指定**固定列**的宽度 `width`。如果指定 `width` 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局。
+> 建议指定 `scroll.x` 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 `scroll.x`。
+
+
+
+#### Fixed Columns
+To fix some columns and scroll inside other columns, and you must set `scroll.x` meanwhile.
+> Specify the width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.
+> A fixed value which is greater than table width for `scroll.x` is recommended. The sum of unfixed columns should not greater than `scroll.x`.
+
+
+```vue
+
+
+ action
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/fixed-header.md b/antdv-demo/docs/table/demo/fixed-header.md
new file mode 100644
index 000000000..947166e52
--- /dev/null
+++ b/antdv-demo/docs/table/demo/fixed-header.md
@@ -0,0 +1,59 @@
+
+#### 固定表头
+方便一页内展示大量数据。
+> 需要指定 column 的 `width` 属性,否则列头和内容可能不对齐。如果指定 `width` 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局。
+
+
+
+#### Fixed Header
+Display large amounts of data in scrollable view.
+> Specify width of columns if header and cell do not align properly. If specified width is not working or have gutter between columns, please try to leave one column at least without width to fit fluid layout, or make sure no long word to break table layout.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/grouping-columns.md b/antdv-demo/docs/table/demo/grouping-columns.md
new file mode 100644
index 000000000..6959abb92
--- /dev/null
+++ b/antdv-demo/docs/table/demo/grouping-columns.md
@@ -0,0 +1,130 @@
+
+#### 表头分组
+`columns[n]` 可以内嵌 `children`,以渲染分组表头。
+
+
+
+#### Grouping table head
+Group table head with `columns[n].children`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/head.md b/antdv-demo/docs/table/demo/head.md
new file mode 100644
index 000000000..efdb78be8
--- /dev/null
+++ b/antdv-demo/docs/table/demo/head.md
@@ -0,0 +1,127 @@
+
+#### 筛选和排序
+对某一列数据进行筛选,使用列的 `filters` 属性来指定需要筛选菜单的列,`onFilter` 用于筛选当前数据,`filterMultiple` 用于指定多选和单选。
+对某一列数据进行排序,通过指定列的 `sorter` 函数即可启动排序按钮。`sorter: function(rowA, rowB) { ... }`, rowA、rowB 为比较的两个行数据。
+`sortDirections: ['ascend' | 'descend']`改变每列可用的排序方式,切换排序时按数组内容依次切换,设置在 table props 上时对所有列生效。
+使用 `defaultSortOrder` 属性,设置列的默认排序顺序。
+
+
+
+#### Filter and sorter
+Use `filters` to generate filter menu in columns, `onFilter` to determine filtered result, and `filterMultiple` to indicate whether it's multiple or single selection.
+Uses `defaultFilteredValue` to make a column filtered by default.
+Use `sorter` to make a column sortable. `sorter` can be a function of the type `function(a, b) { ... }` for sorting data locally.
+`sortDirections: ['ascend' | 'descend']` defines available sort methods for each columns, effective for all columns when set on table props.
+Uses `defaultSortOrder` to make a column sorted by default.
+If a `sortOrder` or `defaultSortOrder` is specified with the value `ascend` or `descend`, you can access this value from within the function passed to the `sorter` as explained above. Such a function can take the form: `function(a, b, sortOrder) { ... }`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/index.vue b/antdv-demo/docs/table/demo/index.vue
new file mode 100644
index 000000000..2d96a1925
--- /dev/null
+++ b/antdv-demo/docs/table/demo/index.vue
@@ -0,0 +1,105 @@
+
diff --git a/antdv-demo/docs/table/demo/nested-table.md b/antdv-demo/docs/table/demo/nested-table.md
new file mode 100644
index 000000000..b18735d63
--- /dev/null
+++ b/antdv-demo/docs/table/demo/nested-table.md
@@ -0,0 +1,99 @@
+
+#### 嵌套子表格
+展示每行数据更详细的信息。
+
+
+
+#### Nested tables
+Showing more detailed info of every row.
+
+
+```vue
+
+
+ Publish
+
+ Finished
+
+ Pause
+ Stop
+
+
+
+ Action 1
+
+
+ Action 2
+
+
+ More
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/reset-filter.md b/antdv-demo/docs/table/demo/reset-filter.md
new file mode 100644
index 000000000..4e1967251
--- /dev/null
+++ b/antdv-demo/docs/table/demo/reset-filter.md
@@ -0,0 +1,146 @@
+
+#### 可控的筛选和排序
+使用受控属性对筛选和排序状态进行控制。
+> 1. columns 中定义了 filteredValue 和 sortOrder 属性即视为受控模式。
+> 2. 只支持同时对一列进行排序,请保证只有一列的 sortOrder 属性是生效的。
+> 3. 务必指定 `column.key`。
+
+
+
+#### Reset filters and sorters
+Control filters and sorters by `filteredValue` and `sortOrder`.
+> 1. Defining `filteredValue` or `sortOrder` means that it is in the controlled mode.
+> 2. Make sure `sortOrder` is assigned for only one column.
+> 3. `column.key` is required.
+
+
+```vue
+
+
+
+
+ Sort age
+
+
+ Clear filters
+
+
+ Clear filters and sorters
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/resizable-column.vue b/antdv-demo/docs/table/demo/resizable-column.vue
new file mode 100755
index 000000000..448ac7dc5
--- /dev/null
+++ b/antdv-demo/docs/table/demo/resizable-column.vue
@@ -0,0 +1,142 @@
+
+#### 可伸缩列
+集成 [vue-draggable-resizable](https://github.com/mauricius/vue-draggable-resizable) 来实现可伸缩列。
+
+
+
+#### Resizable column
+Implement resizable column by integrate with [vue-draggable-resizable](https://github.com/mauricius/vue-draggable-resizable).
+
+
+
+
+
+ Delete
+
+
+
+
+
+
diff --git a/antdv-demo/docs/table/demo/row-selection-and-operation.md b/antdv-demo/docs/table/demo/row-selection-and-operation.md
new file mode 100644
index 000000000..3f889d089
--- /dev/null
+++ b/antdv-demo/docs/table/demo/row-selection-and-operation.md
@@ -0,0 +1,87 @@
+
+#### 选择和操作
+选择后进行操作,完成后清空选择,通过 `rowSelection.selectedRowKeys` 来控制选中项。
+
+
+
+#### Selection and operation
+To perform operations and clear selections after selecting some rows, use `rowSelection.selectedRowKeys` to control selected rows.
+
+
+```vue
+
+
+
+
+ Reload
+
+
+
+ {{ `Selected ${selectedRowKeys.length} items` }}
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/row-selection-custom.md b/antdv-demo/docs/table/demo/row-selection-custom.md
new file mode 100644
index 000000000..04c84b07a
--- /dev/null
+++ b/antdv-demo/docs/table/demo/row-selection-custom.md
@@ -0,0 +1,105 @@
+
+#### 自定义选择项
+通过 `rowSelection.selections` 自定义选择项,默认不显示下拉选项,设为 `true` 时显示默认选择项。
+
+
+
+#### Custom selection
+Use `rowSelection.selections` custom selections, default no select dropdown, show default selections via setting to `true`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/row-selection.md b/antdv-demo/docs/table/demo/row-selection.md
new file mode 100644
index 000000000..8455c796d
--- /dev/null
+++ b/antdv-demo/docs/table/demo/row-selection.md
@@ -0,0 +1,86 @@
+
+#### 可选择
+第一列是联动的选择框。
+> 默认点击 checkbox 触发选择行为
+
+
+
+#### selection
+Rows can be selectable by making first column as a selectable column.
+> selection happens when clicking checkbox defaultly.
+
+
+```vue
+
+
+ {{ text }}
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/size.md b/antdv-demo/docs/table/demo/size.md
new file mode 100644
index 000000000..54c2b9027
--- /dev/null
+++ b/antdv-demo/docs/table/demo/size.md
@@ -0,0 +1,70 @@
+
+#### 紧凑型
+两种紧凑型的列表,小型列表只用于对话框内。
+
+
+
+#### size
+There are two compacted table sizes: `middle` and `small`. The `small` size is used in Modals only.
+
+
+```vue
+
+
+
Middle size table
+
+
Small size table
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/demo/template.md b/antdv-demo/docs/table/demo/template.md
new file mode 100644
index 000000000..f139e83f5
--- /dev/null
+++ b/antdv-demo/docs/table/demo/template.md
@@ -0,0 +1,79 @@
+
+#### template 风格的 API
+使用 template 风格的 API
+> 这个只是一个描述 `columns` 的语法糖,所以你不能用其他组件去包裹 `Column` 和 `ColumnGroup`。
+
+
+
+#### template style API
+Using template style API
+> Since this is just a syntax sugar for the prop `columns`, so that you can't compose `Column` and `ColumnGroup` with other Components.
+
+
+```vue
+
+
+
+ Name
+
+ First Name
+
+
+
+
+
+
+
+
+ {{ tag }}
+
+
+
+
+
+
+ Action 一 {{ record.firstName }}
+
+ Delete
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/table/index.en-US.md b/antdv-demo/docs/table/index.en-US.md
new file mode 100644
index 000000000..948ed9e92
--- /dev/null
+++ b/antdv-demo/docs/table/index.en-US.md
@@ -0,0 +1,174 @@
+## API
+
+### Table
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| tableLayout | [table-layout](https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout) attribute of table element | - \| 'auto' \| 'fixed' | - `fixed` when header/columns are fixed, or using `column.ellipsis` | 1.5.0 |
+| bordered | Whether to show all table borders | boolean | `false` | |
+| childrenColumnName | The column contains children to display | string\[] | children | |
+| columns | Columns of table [config](#Column) | array | - | |
+| components | Override default table elements | object | - | |
+| dataSource | Data record array to be displayed | any\[] | - | |
+| defaultExpandAllRows | Expand all rows initially | boolean | `false` | |
+| defaultExpandedRowKeys | Initial expanded row keys | string\[] | - | |
+| expandedRowKeys | Current expanded row keys | string\[] | - | |
+| expandedRowRender | Expanded container render for each row | Function(record, index, indent, expanded):VNode\|slot-scope | - | |
+| expandIcon | Customize row expand Icon. | Function(props):VNode \| slot="expandIcon" slot-scope="props" | - | |
+| expandRowByClick | Whether to expand row by clicking anywhere in the whole row | boolean | `false` | |
+| expandIconColumnIndex | The index of `expandIcon` which column will be inserted when `expandIconAsCell` is false | 0 | |
+| footer | Table footer renderer | Function(currentPageData)\|slot-scope | |
+| indentSize | Indent size in pixels of tree data | number | 15 | |
+| loading | Loading status of table | boolean\|[object](/components/spin) | `false` |
+| locale | i18n text including filter, sort, empty text, etc | object | filterConfirm: 'Ok' filterReset: 'Reset' emptyText: 'No Data' | |
+| pagination | Config of pagination. You can ref table pagination [config](#pagination) or full [`pagination`](/components/pagination/) document, hide it by setting it to `false` | object | | |
+| rowClassName | Row's className | Function(record, index):string | - | |
+| rowKey | Row's unique key, could be a string or function that returns a string | string\|Function(record, index):string | `key` | |
+| rowSelection | Row selection [config](#rowSelection) | object | null | |
+| scroll | Set horizontal or vertical scrolling, can also be used to specify the width and height of the scroll area. It is recommended to set a number for `x`, if you want to set it to `true`, you need to add style `.ant-table td { white-space: nowrap; }`. | { x: number \| true, y: number } | - | |
+| showHeader | Whether to show table header | boolean | `true` | |
+| size | Size of table | `default` \| `middle` \| `small` \| `large` | `default` |
+| title | Table title renderer | Function(currentPageData)\|slot-scope | | |
+| customHeaderRow | Set props on per header row | Function(column, index) | - | |
+| customRow | Set props on per row | Function(record, index) | - | |
+| getPopupContainer | the render container of dropdowns in table | (triggerNode) => HTMLElement | `() => TableHtmlElement` | 1.5.0 |
+| transformCellText | Data can be changed again before rendering. The default configuration of general user empty data. You can configured globally through [ConfigProvider](/components/config-provider-cn/) | Function({ text, column, record, index }) => any | - | 1.5.4 | |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | Callback executed when pagination, filters or sorter is changed | Function(pagination, filters, sorter, { currentDataSource }) | |
+| expand | Callback executed when the row expand icon is clicked | Function(expanded, record) | |
+| expandedRowsChange | Callback executed when the expanded rows change | Function(expandedRows) | |
+
+#### customRow usage
+
+Same as `customRow` `customHeaderRow` `customCell` `customHeaderCell`. Follow [Vue jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx) syntax。
+
+```jsx
+ {
+ return {
+ props: {
+ xxx...
+ },
+ on: {
+ click: (event) => {}, // click row
+ dblclick: (event) => {}, // double click row
+ contextmenu: (event) => {} // right button click row
+ mouseenter: (event) => {} // mouse enter row
+ mouseleave: (event) => {} // mouse leave row
+ },
+ };
+ )}
+ customHeaderRow={(column) => {
+ return {
+ on: {
+ click: () => {}, // click header row
+ },
+ };
+ )}
+/>
+```
+
+### Column
+
+One of the Table `columns` prop for describing the table's columns, Column has the same API.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| align | specify how content is aligned | 'left' \| 'right' \| 'center' | 'left' | |
+| ellipsis | ellipsize cell content, not working with sorter and filters for now. tableLayout would be `fixed` when `ellipsis` is true. | boolean | false | 1.5.0 |
+| colSpan | Span of this column's title | number | | |
+| dataIndex | Display field of the data record, could be set like `a.b.c` | string | - | |
+| defaultFilteredValue | Default filtered values | string\[] | - | 1.5.0 |
+| defaultSortOrder | Default order of sorted values: `'ascend'` `'descend'` `null` | string | - | |
+| filterDropdown | Customized filter overlay | slot \| slot-scope | - | |
+| filterDropdownVisible | Whether `filterDropdown` is visible | boolean | - | |
+| filtered | Whether the `dataSource` is filtered | boolean | `false` | |
+| filteredValue | Controlled filtered value, filter icon will highlight | string\[] | - | |
+| filterIcon | Customized filter icon | slot \| slot-scope \| (filtered: boolean, column: Column) | `false` | |
+| filterMultiple | Whether multiple filters can be selected | boolean | `true` | |
+| filters | Filter menu config | object\[] | - | |
+| fixed | Set column to be fixed: `true`(same as left) `'left'` `'right'` | boolean\|string | `false` | |
+| key | Unique key of this column, you can ignore this prop if you've set a unique `dataIndex` | string | - | |
+| customRender | Renderer of the table cell. The return value should be a VNode, or an object for colSpan/rowSpan config | Function(text, record, index) {}\|slot-scope | - | |
+| sorter | Sort function for local sort, see [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)'s compareFunction. If you need sort buttons only, set to `true` | Function\|boolean | - | |
+| sortOrder | Order of sorted values: `'ascend'` `'descend'` `false` | boolean\|string | - | |
+| sortDirections | supported sort way, could be `'ascend'`, `'descend'` | Array | `['ascend', 'descend']` | 1.5.0 |
+| title | Title of this column | string\|slot | - | |
+| width | Width of this column | string\|number | - | |
+| customCell | Set props on per cell | Function(record, rowIndex) | - | |
+| customHeaderCell | Set props on per header cell | Function(column) | - | |
+| onFilter | Callback executed when the confirm filter button is clicked, Use as a `filter` event when using template or jsx | Function | - | |
+| onFilterDropdownVisibleChange | Callback executed when `filterDropdownVisible` is changed, Use as a `filterDropdownVisible` event when using template or jsx | function(visible) {} | - | |
+| slots | When using columns, you can use this property to configure the properties that support the slot, such as `slots: { filterIcon: 'XXX'}` | object | - | |
+| scopedSlots | When using columns, you can use this property to configure the properties that support the slot-scope, such as `scopedSlots: { customRender: 'XXX'}` | object | - | |
+
+### ColumnGroup
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| title | Title of the column group | string\|slot | - |
+| slots | When using columns, you can use this property to configure the properties that support the slot, such as `slots: { title: 'XXX'}` | object | - |
+
+### pagination
+
+Properties for pagination.
+
+| Property | Description | Type | Default |
+| -------- | ------------------------------------ | --------------------------- | -------- |
+| position | specify the position of `Pagination` | 'top' \| 'bottom' \| 'both' | 'bottom' |
+
+More about pagination, please check [`Pagination`](/components/pagination/).
+
+### rowSelection
+
+Properties for row selection.
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| columnWidth | Set the width of the selection column | string\|number | - |
+| columnTitle | Set the title of the selection column | string\|VNode | - |
+| fixed | Fixed selection column on the left | boolean | - |
+| getCheckboxProps | Get Checkbox or Radio props | Function(record) | - |
+| hideDefaultSelections | Remove the default `Select All` and `Select Invert` selections | boolean | `false` |
+| selectedRowKeys | Controlled selected row keys | string\[] | \[] |
+| selections | Custom selection config, only displays default selections when set to `true` | object\[]\|boolean | - |
+| type | `checkbox` or `radio` | `checkbox` \| `radio` | `checkbox` |
+| onChange | Callback executed when selected rows change | Function(selectedRowKeys, selectedRows) | - |
+| onSelect | Callback executed when select/deselect one row | Function(record, selected, selectedRows, nativeEvent) | - |
+| onSelectAll | Callback executed when select/deselect all rows | Function(selected, selectedRows, changeRows) | - |
+| onSelectInvert | Callback executed when row selection is inverted | Function(selectedRows) | - |
+
+### scroll
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| x | Set horizontal scrolling, can also be used to specify the width and height of the scroll area, could be number, percent value, true and ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | number \| true | - | |
+| y | Set vertical scrolling, can also be used to specify the width and height of the scroll area, could be number, percent value, true and ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | number \| true | - | |
+| scrollToFirstRowOnChange | Whether to scroll to the top of the table when paging, sorting, filtering changes | boolean | - | 1.5.0 |
+
+### selection
+
+Custom selection config
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| key | Unique key of this selection | string | - |
+| text | Display text of this selection | string\|VNode | - |
+| onSelect | Callback executed when this selection is clicked | Function(changeableRowKeys) | - |
+
+## Note
+
+The values inside `dataSource` and `columns` should follow this in Table, and `dataSource[i].key` would be treated as key value default for `dataSource`.
+
+If `dataSource[i].key` is not provided, then you should specify the primary key of dataSource value via `rowKey`. If not, warnings will show in browser console.
+
+```jsx
+// primary key is uid
+return ;
+// or
+return record.uid} />;
+```
diff --git a/antdv-demo/docs/table/index.zh-CN.md b/antdv-demo/docs/table/index.zh-CN.md
new file mode 100644
index 000000000..bf6582b58
--- /dev/null
+++ b/antdv-demo/docs/table/index.zh-CN.md
@@ -0,0 +1,174 @@
+## API
+
+### Table
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| tableLayout | 表格元素的 [table-layout](https://developer.mozilla.org/zh-CN/docs/Web/CSS/table-layout) 属性,设为 `fixed` 表示内容不会影响列的布局 | - \| 'auto' \| 'fixed' | 无 固定表头/列或使用了 `column.ellipsis` 时,默认值为 `fixed` | 1.5.0 |
+| bordered | 是否展示外边框和列边框 | boolean | false | |
+| childrenColumnName | 指定树形结构的列名 | string\[] | children | |
+| columns | 表格列的配置描述,具体项见[下表](#Column) | array | - | |
+| components | 覆盖默认的 table 元素 | object | - | |
+| dataSource | 数据数组 | any\[] | | |
+| defaultExpandAllRows | 初始时,是否展开所有行 | boolean | false | |
+| defaultExpandedRowKeys | 默认展开的行 | string\[] | - | |
+| expandedRowKeys | 展开的行,控制属性 | string\[] | - | |
+| expandedRowRender | 额外的展开行 | Function(record, index, indent, expanded):VNode \| slot="expandedRowRender" slot-scope="record, index, indent, expanded" | - | |
+| expandIcon | 自定义展开图标 | Function(props):VNode \| slot="expandIcon" slot-scope="props" | - | |
+| expandRowByClick | 通过点击行来展开子行 | boolean | `false` | |
+| expandIconColumnIndex | 展开的图标显示在哪一列,如果没有 `rowSelection`,默认显示在第一列,否则显示在选择框后面 | `number` | |
+| footer | 表格尾部 | Function(currentPageData)\|slot-scope | | |
+| indentSize | 展示树形数据时,每层缩进的宽度,以 px 为单位 | number | 15 | |
+| loading | 页面是否加载中 | boolean\|[object](/components/spin-cn) | false | |
+| locale | 默认文案设置,目前包括排序、过滤、空数据文案 | object | filterConfirm: '确定' filterReset: '重置' emptyText: '暂无数据' | |
+| pagination | 分页器,参考[配置项](#pagination)或 [pagination](/components/pagination-cn/)文档,设为 false 时不展示和进行分页 | object | | |
+| rowClassName | 表格行的类名 | Function(record, index):string | - | |
+| rowKey | 表格行 key 的取值,可以是字符串或一个函数 | string\|Function(record):string | 'key' | |
+| rowSelection | 列表项是否可选择,[配置项](#rowSelection) | object | null | |
+| scroll | 设置横向或纵向滚动,也可用于指定滚动区域的宽和高,建议为 `x` 设置一个数字,如果要设置为 `true`,需要配合样式 `.ant-table td { white-space: nowrap; }` | { x: number \| true, y: number } | - | |
+| showHeader | 是否显示表头 | boolean | true | |
+| size | 表格大小 | default \| middle \| small | default | |
+| title | 表格标题 | Function(currentPageData)\|slot-scope | | |
+| customHeaderRow | 设置头部行属性 | Function(column, index) | - | |
+| customRow | 设置行属性 | Function(record, index) | - | |
+| getPopupContainer | 设置表格内各类浮层的渲染节点,如筛选菜单 | (triggerNode) => HTMLElement | `() => TableHtmlElement` | 1.5.0 |
+| transformCellText | 数据渲染前可以再次改变,一般用户空数据的默认配置,可以通过 [ConfigProvider](/components/config-provider-cn/) 全局统一配置 | Function({ text, column, record, index }) => any | - | 1.5.4 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| expandedRowsChange | 展开的行变化时触发 | Function(expandedRows) |
+| change | 分页、排序、筛选变化时触发 | Function(pagination, filters, sorter, { currentDataSource }) |
+| expand | 点击展开图标时触发 | Function(expanded, record) |
+
+#### customRow 用法
+
+适用于 `customRow` `customHeaderRow` `customCell` `customHeaderCell`。遵循[Vue jsx](https://github.com/vuejs/babel-plugin-transform-vue-jsx)语法。
+
+```jsx
+ {
+ return {
+ props: {
+ xxx... //属性
+ },
+ on: { // 事件
+ click: (event) => {}, // 点击行
+ dblclick: (event) => {},
+ contextmenu: (event) => {},
+ mouseenter: (event) => {}, // 鼠标移入行
+ mouseleave: (event) => {}
+ },
+
+ };
+ )}
+ customHeaderRow={(column) => {
+ return {
+ on: {
+ click: () => {}, // 点击表头行
+ }
+ };
+ )}
+/>
+```
+
+### Column
+
+列描述数据对象,是 columns 中的一项,Column 使用相同的 API。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| align | 设置列内容的对齐方式 | 'left' \| 'right' \| 'center' | 'left' | |
+| ellipsis | 超过宽度将自动省略,暂不支持和排序筛选一起使用。 设置为 `true` 时,表格布局将变成 `tableLayout="fixed"`。 | boolean | false | 1.5.0 |
+| colSpan | 表头列合并,设置为 0 时,不渲染 | number | | |
+| dataIndex | 列数据在数据项中对应的 key,支持 `a.b.c` 的嵌套写法 | string | - | |
+| defaultFilteredValue | 默认筛选值 | string\[] | - | 1.5.0 |
+| filterDropdown | 可以自定义筛选菜单,此函数只负责渲染图层,需要自行编写各种交互 | VNode \| slot-scope | - | |
+| filterDropdownVisible | 用于控制自定义筛选菜单是否可见 | boolean | - | |
+| filtered | 标识数据是否经过过滤,筛选图标会高亮 | boolean | false | |
+| filteredValue | 筛选的受控属性,外界可用此控制列的筛选状态,值为已筛选的 value 数组 | string\[] | - | |
+| filterIcon | 自定义 filter 图标。 | VNode \| (filtered: boolean, column: Column) => vNode \|slot \|slot-scope | false | |
+| filterMultiple | 是否多选 | boolean | true | |
+| filters | 表头的筛选菜单项 | object\[] | - | |
+| fixed | 列是否固定,可选 `true`(等效于 left) `'left'` `'right'` | boolean\|string | false | |
+| key | Vue 需要的 key,如果已经设置了唯一的 `dataIndex`,可以忽略这个属性 | string | - | |
+| customRender | 生成复杂数据的渲染函数,参数分别为当前行的值,当前行数据,行索引,@return 里面可以设置表格行/列合并,可参考 demo 表格行/列合并 | Function(text, record, index) {}\|slot-scope | - | |
+| sorter | 排序函数,本地排序使用一个函数(参考 [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) 的 compareFunction),需要服务端排序可设为 true | Function\|boolean | - | |
+| sortOrder | 排序的受控属性,外界可用此控制列的排序,可设置为 `'ascend'` `'descend'` `false` | boolean\|string | - | |
+| sortDirections | 支持的排序方式,取值为 `'ascend'` `'descend'` | Array | `['ascend', 'descend']` | 1.5.0 |
+| title | 列头显示文字 | string\|slot | - | |
+| width | 列宽度 | string\|number | - | |
+| customCell | 设置单元格属性 | Function(record, rowIndex) | - | |
+| customHeaderCell | 设置头部单元格属性 | Function(column) | - | |
+| onFilter | 本地模式下,确定筛选的运行函数, 使用 template 或 jsx 时作为`filter`事件使用 | Function | - | |
+| onFilterDropdownVisibleChange | 自定义筛选菜单可见变化时调用,使用 template 或 jsx 时作为`filterDropdownVisibleChange`事件使用 | function(visible) {} | - | |
+| slots | 使用 columns 时,可以通过该属性配置支持 slot 的属性,如 `slots: { filterIcon: 'XXX'}` | object | - | |
+| scopedSlots | 使用 columns 时,可以通过该属性配置支持 slot-scope 的属性,如 `scopedSlots: { customRender: 'XXX'}` | object | - | |
+
+### ColumnGroup
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| title | 列头显示文字 | string\|slot | - |
+| slots | 使用 columns 时,可以通过该属性配置支持 slot 的属性,如 `slots: { title: 'XXX'}` | object | - |
+
+### pagination
+
+分页的配置项。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------- | ------------------ | --------------------------- | -------- |
+| position | 指定分页显示的位置 | 'top' \| 'bottom' \| 'both' | 'bottom' |
+
+更多配置项,请查看 [`Pagination`](/components/pagination/)。
+
+### rowSelection
+
+选择功能的配置。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| columnWidth | 自定义列表选择框宽度 | string\|number | - |
+| columnTitle | 自定义列表选择框标题 | string\|VNode | - |
+| fixed | 把选择框列固定在左边 | boolean | - |
+| getCheckboxProps | 选择框的默认属性配置 | Function(record) | - |
+| hideDefaultSelections | 去掉『全选』『反选』两个默认选项 | boolean | false |
+| selectedRowKeys | 指定选中项的 key 数组,需要和 onChange 进行配合 | string\[] | \[] |
+| selections | 自定义选择配置项, 设为 `true` 时使用默认选择项 | object\[]\|boolean | true |
+| type | 多选/单选,`checkbox` or `radio` | string | `checkbox` |
+| onChange | 选中项发生变化时的回调 | Function(selectedRowKeys, selectedRows) | - |
+| onSelect | 用户手动选择/取消选择某列的回调 | Function(record, selected, selectedRows, nativeEvent) | - |
+| onSelectAll | 用户手动选择/取消选择所有列的回调 | Function(selected, selectedRows, changeRows) | - |
+| onSelectInvert | 用户手动选择反选的回调 | Function(selectedRows) | - |
+
+### scroll
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| x | 设置横向滚动,也可用于指定滚动区域的宽和高,可以设置为像素值,百分比,true 和 ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | number \| true | - | |
+| y | 设置纵向滚动,也可用于指定滚动区域的宽和高,可以设置为像素值,百分比,true 和 ['max-content'](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width#max-content) | number \| true | - | |
+| scrollToFirstRowOnChange | 当分页、排序、筛选变化后是否滚动到表格顶部 | boolean | - | 1.5.0 |
+
+### selection
+
+自定义选择配置项
+
+| 参数 | 说明 | 类型 | 默认值 |
+| -------- | ------------------------ | --------------------------- | ------ |
+| key | Vue 需要的 key,建议设置 | string | - |
+| text | 选择项显示的文字 | string\|VNode | - |
+| onSelect | 选择项点击回调 | Function(changeableRowKeys) | - |
+
+## 注意
+
+在 Table 中,`dataSource` 和 `columns` 里的数据值都需要指定 `key` 值。对于 `dataSource` 默认将每列数据的 `key` 属性作为唯一的标识。
+
+如果你的数据没有这个属性,务必使用 `rowKey` 来指定数据列的主键。若没有指定,控制台会出现缺少 key 的提示,表格组件也会出现各类奇怪的错误。
+
+```jsx
+// 比如你的数据主键是 uid
+return ;
+// 或
+return record.uid} />;
+```
diff --git a/antdv-demo/docs/tabs/demo/basic.md b/antdv-demo/docs/tabs/demo/basic.md
new file mode 100644
index 000000000..c894a4049
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/basic.md
@@ -0,0 +1,39 @@
+
+#### 基本用法
+默认选中第一项。
+
+
+
+#### basic Usage
+Default activate first tab.
+
+
+```vue
+
+
+
+
+ Content of Tab Pane 1
+
+
+ Content of Tab Pane 2
+
+
+ Content of Tab Pane 3
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/card-top.md b/antdv-demo/docs/tabs/demo/card-top.md
new file mode 100644
index 000000000..eaa7ffc4f
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/card-top.md
@@ -0,0 +1,75 @@
+
+#### 卡片式页签容器
+用于容器顶部,需要一点额外的样式覆盖。
+
+
+
+#### Container of card type Tab
+Should be used at the top of container, needs to override styles.
+
+
+```vue
+
+
+
+
+ Content of Tab Pane 1
+ Content of Tab Pane 1
+ Content of Tab Pane 1
+
+
+ Content of Tab Pane 2
+ Content of Tab Pane 2
+ Content of Tab Pane 2
+
+
+ Content of Tab Pane 3
+ Content of Tab Pane 3
+ Content of Tab Pane 3
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/card.md b/antdv-demo/docs/tabs/demo/card.md
new file mode 100644
index 000000000..2274bcb68
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/card.md
@@ -0,0 +1,37 @@
+
+#### 卡片式页签
+另一种样式的页签,不提供对应的垂直样式。
+
+
+
+#### Card type tab
+Another type Tabs, which doesn't support vertical mode.
+
+
+```vue
+
+
+
+ Content of Tab Pane 1
+
+
+ Content of Tab Pane 2
+
+
+ Content of Tab Pane 3
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/custom-add-trigger.md b/antdv-demo/docs/tabs/demo/custom-add-trigger.md
new file mode 100644
index 000000000..ce4e32818
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/custom-add-trigger.md
@@ -0,0 +1,79 @@
+
+#### 自定义新增页签触发器
+隐藏默认的页签增加图标,给自定义触发器绑定事件。
+
+
+
+#### Customized trigger of new tab
+Hide default plus icon, and bind event for customized trigger.
+
+
+```vue
+
+
+
+
+
+ {{ pane.content }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/custom-tab-bar.md b/antdv-demo/docs/tabs/demo/custom-tab-bar.md
new file mode 100644
index 000000000..5f2ba2fab
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/custom-tab-bar.md
@@ -0,0 +1,48 @@
+
+#### 自定义页签头
+自定义页签头
+
+
+
+#### Customized bar of tab
+Customized bar of tab.
+
+
+```vue
+
+
+
+
+ Content of Tab Pane 1
+
+
+ Content of Tab Pane 2
+
+
+ Content of Tab Pane 3
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/disabled.md b/antdv-demo/docs/tabs/demo/disabled.md
new file mode 100644
index 000000000..f4b86f62d
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/disabled.md
@@ -0,0 +1,25 @@
+
+#### 禁用
+禁用某一项。
+
+
+
+#### Disabled
+Disabled a tab.
+
+
+```vue
+
+
+
+ Tab 1
+
+
+ Tab 2
+
+
+ Tab 3
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/editable-card.md b/antdv-demo/docs/tabs/demo/editable-card.md
new file mode 100644
index 000000000..472c69147
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/editable-card.md
@@ -0,0 +1,71 @@
+
+#### 新增和关闭页签
+只有卡片样式的页签支持新增和关闭选项。
+使用 `closable={false}` 禁止关闭。
+
+
+
+#### Add & close tab
+Only card type Tabs support adding & closable.
++Use `closable={false}` to disable close.
+
+
+```vue
+
+
+
+ {{ pane.content }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/extra.md b/antdv-demo/docs/tabs/demo/extra.md
new file mode 100644
index 000000000..536e662a0
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/extra.md
@@ -0,0 +1,28 @@
+
+#### 附加内容
+可以在页签右边添加附加操作。
+
+
+
+#### Extra content
+You can add extra actions to the right of Tabs.
+
+
+```vue
+
+
+
+ Content of tab 1
+
+
+ Content of tab 2
+
+
+ Content of tab 3
+
+
+ Extra Action
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/icon.md b/antdv-demo/docs/tabs/demo/icon.md
new file mode 100644
index 000000000..448b26e95
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/icon.md
@@ -0,0 +1,30 @@
+
+#### 图标
+有图标的标签。
+
+
+
+#### Icon
+The Tab with Icon.
+
+
+```vue
+
+
+
+
+
+ Tab 1
+
+ Tab 1
+
+
+
+
+ Tab 2
+
+ Tab 2
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/index.vue b/antdv-demo/docs/tabs/demo/index.vue
new file mode 100644
index 000000000..c7ab6a50c
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/index.vue
@@ -0,0 +1,79 @@
+
diff --git a/antdv-demo/docs/tabs/demo/nest.md b/antdv-demo/docs/tabs/demo/nest.md
new file mode 100644
index 000000000..6caf41137
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/nest.md
@@ -0,0 +1,78 @@
+
+#### 基本
+默认选中第一项。
+
+
+
+#### Nest
+Default activate first tab.
+
+
+```vue
+
+
+
+
+ Parent - {{ pos }}
+
+
+
+
+ Child - {{ pos }}
+
+
+
+
+
+ Parent - line
+
+
+ Parent - card
+
+
+
+
+
+ Child - line
+
+
+ Child - card
+
+
+
+
+
+
+
+ TTTT {{ key }}
+
+
+
+
+ Content of Tab Pane 2
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/position.md b/antdv-demo/docs/tabs/demo/position.md
new file mode 100644
index 000000000..55f956ca7
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/position.md
@@ -0,0 +1,55 @@
+
+#### 位置
+有四个位置,`tabPosition="left|right|top|bottom"`。
+
+
+
+#### Position
+Tab's position: left, right, top or bottom.
+
+
+```vue
+
+
+
+
+ top
+
+
+ bottom
+
+
+ left
+
+
+ right
+
+
+
+
+ Content of Tab 1
+
+
+ Content of Tab 2
+
+
+ Content of Tab 3
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/size.md b/antdv-demo/docs/tabs/demo/size.md
new file mode 100644
index 000000000..a2797908d
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/size.md
@@ -0,0 +1,47 @@
+
+#### 大小
+大号页签用在页头区域,小号用在弹出框等较狭窄的容器内。
+
+
+
+#### Size
+Large size tabs are usally used in page header, and small size could be used in Modal.
+
+
+```vue
+
+
+
+
+ Small
+
+
+ Default
+
+
+ Large
+
+
+
+
+ Content of tab 1
+
+
+ Content of tab 2
+
+
+ Content of tab 3
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/demo/slide.md b/antdv-demo/docs/tabs/demo/slide.md
new file mode 100644
index 000000000..74db9a892
--- /dev/null
+++ b/antdv-demo/docs/tabs/demo/slide.md
@@ -0,0 +1,47 @@
+
+#### 滑动
+可以左右、上下滑动,容纳更多标签。
+
+
+
+#### Slide
+In order to fit in more tabs, they can slide left and right (or up and down).
+
+
+```vue
+
+
+
+
+ Horizontal
+
+
+ Vertical
+
+
+
+ Content of tab {{ i }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/tabs/index.en-US.md b/antdv-demo/docs/tabs/index.en-US.md
new file mode 100644
index 000000000..7a51ed2cf
--- /dev/null
+++ b/antdv-demo/docs/tabs/index.en-US.md
@@ -0,0 +1,34 @@
+## API
+
+### Tabs
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| activeKey(v-model) | Current TabPane's key | string | - |
+| animated | Whether to change tabs with animation. Only works while `tabPosition="top"\|"bottom"` | boolean \| {inkBar:boolean, tabPane:boolean} | `true`, `false` when `type="card"` |
+| defaultActiveKey | Initial active TabPane's key, if `activeKey` is not set. | string | - |
+| hideAdd | Hide plus icon or not. Only works while `type="editable-card"` | boolean | `false` |
+| size | preset tab bar size | `large` \| `default` \| `small` | `default` |
+| tabBarExtraContent | Extra content in tab bar | slot | - |
+| tabBarStyle | Tab bar style object | object | - |
+| tabPosition | Position of tabs | `top` \| `right` \| `bottom` \| `left` | `top` |
+| type | Basic style of tabs | `line` \| `card` \| `editable-card` | `line` |
+| tabBarGutter | The gap between tabs | number | - |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | Callback executed when active tab is changed | Function(activeKey) {} |
+| edit | Callback executed when tab is added or removed. Only works while `type="editable-card"` | (targetKey, action): void |
+| nextClick | Callback executed when next button is clicked | Function |
+| prevClick | Callback executed when prev button is clicked | Function |
+| tabClick | Callback executed when tab is clicked | Function |
+
+### Tabs.TabPane
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| forceRender | Forced render of content in tabs, not lazy render after clicking on tabs | boolean | false |
+| key | TabPane's key | string | - |
+| tab | Show text in TabPane's head | string\|slot | - |
diff --git a/antdv-demo/docs/tabs/index.zh-CN.md b/antdv-demo/docs/tabs/index.zh-CN.md
new file mode 100644
index 000000000..191b79f71
--- /dev/null
+++ b/antdv-demo/docs/tabs/index.zh-CN.md
@@ -0,0 +1,34 @@
+## API
+
+### Tabs
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| activeKey(v-model) | 当前激活 tab 面板的 key | string | 无 |
+| animated | 是否使用动画切换 Tabs,在 `tabPosition=top|bottom` 时有效 | boolean \| {inkBar:boolean, tabPane:boolean} | true, 当 type="card" 时为 false |
+| defaultActiveKey | 初始化选中面板的 key,如果没有设置 activeKey | string | 第一个面板 |
+| hideAdd | 是否隐藏加号图标,在 `type="editable-card"` 时有效 | boolean | false |
+| size | 大小,提供 `large` `default` 和 `small` 三种大小 | string | 'default' |
+| tabBarExtraContent | tab bar 上额外的元素 | slot | 无 |
+| tabBarStyle | tab bar 的样式对象 | object | - |
+| tabPosition | 页签位置,可选值有 `top` `right` `bottom` `left` | string | 'top' |
+| type | 页签的基本样式,可选 `line`、`card` `editable-card` 类型 | string | 'line' |
+| tabBarGutter | tabs 之间的间隙 | number | 无 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --------- | ------------------------------------------------------ | ------------------------- |
+| change | 切换面板的回调 | Function(activeKey) {} |
+| edit | 新增和删除页签的回调,在 `type="editable-card"` 时有效 | (targetKey, action): void |
+| nextClick | next 按钮被点击的回调 | Function |
+| prevClick | prev 按钮被点击的回调 | Function |
+| tabClick | tab 被点击的回调 | Function |
+
+### Tabs.TabPane
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----------- | ------------------------- | ------------ | ------ |
+| forceRender | 被隐藏时是否渲染 DOM 结构 | boolean | false |
+| key | 对应 activeKey | string | 无 |
+| tab | 选项卡头显示文字 | string\|slot | 无 |
diff --git a/antdv-demo/docs/tag/demo/basic.md b/antdv-demo/docs/tag/demo/basic.md
new file mode 100644
index 000000000..db641fde3
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/basic.md
@@ -0,0 +1,37 @@
+
+#### 基本用法
+基本标签的用法,可以通过添加 `closable` 变为可关闭标签。可关闭标签具有 `close` 两个事件。
+
+
+
+#### basic Usage
+Usage of basic Tag, and it could be closable by set `closable` property. Closable Tag supports `close` events.
+
+
+```vue
+
+
+
Tag 1
+
Link
+
+ Tag 2
+
+
+ Prevent Default
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/checkable.md b/antdv-demo/docs/tag/demo/checkable.md
new file mode 100644
index 000000000..6bdcf31e7
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/checkable.md
@@ -0,0 +1,43 @@
+
+#### 可选择
+可通过 `CheckableTag` 实现类似 Checkbox 的效果,点击切换选中效果。
+> 该组件为完全受控组件,不支持非受控用法。
+
+
+
+#### Checkable
+`CheckableTag` works like Checkbox, click it to toggle checked state.
+> it is an absolute controlled component and has no uncontrolled mode.
+
+
+```vue
+
+
+
+ Tag1
+
+
+ Tag2
+
+
+ Tag3
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/colorful.md b/antdv-demo/docs/tag/demo/colorful.md
new file mode 100644
index 000000000..820c6b695
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/colorful.md
@@ -0,0 +1,59 @@
+
+#### 多彩标签
+我们添加了多种预设色彩的标签样式,用作不同场景使用。如果预设值不能满足你的需求,可以设置为具体的色值。
+
+
+
+#### Colorful Tag
+We preset a series of colorful tag styles for use in different situations. You can also set it to a hex color string for custom color.
+
+
+```vue
+
+
+
+ Presets:
+
+
+
+ pink
+
+
+ red
+
+
+ orange
+
+
+ green
+
+
+ cyan
+
+
+ blue
+
+
+ purple
+
+
+
+ Custom:
+
+
+
+ #f50
+
+
+ #2db7f5
+
+
+ #87d068
+
+
+ #108ee9
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/control.md b/antdv-demo/docs/tag/demo/control.md
new file mode 100644
index 000000000..6ce73aedc
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/control.md
@@ -0,0 +1,83 @@
+
+#### 动态添加和删除
+用数组生成一组标签,可以动态添加和删除。
+
+
+
+#### Add & Remove Dynamically
+Generating a set of Tags by array, you can add and remove dynamically.
+
+
+```vue
+
+
+
+
+ handleClose(tag)">
+ {{ `${tag.slice(0, 20)}...` }}
+
+
+ handleClose(tag)">
+ {{ tag }}
+
+
+
+
+ New Tag
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/controlled.md b/antdv-demo/docs/tag/demo/controlled.md
new file mode 100644
index 000000000..bad922980
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/controlled.md
@@ -0,0 +1,32 @@
+
+#### 控制关闭状态
+通过 `visible` 属性控制关闭状态。
+
+
+
+#### Controlled
+By using the `visible` prop, you can control the close state of Tag.
+
+
+```vue
+
+
+
+ Movies
+
+
+
+ Toggle
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/hot-tags.md b/antdv-demo/docs/tag/demo/hot-tags.md
new file mode 100644
index 000000000..33a2efac8
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/hot-tags.md
@@ -0,0 +1,49 @@
+
+#### 热门标签
+选择你感兴趣的话题。
+
+
+
+#### Hot Tags
+Select your favourite topics.
+
+
+```vue
+
+
+
Categories:
+
+ handleChange(tag, checked)"
+ >
+ {{ tag }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tag/demo/index.vue b/antdv-demo/docs/tag/demo/index.vue
new file mode 100644
index 000000000..4335d1082
--- /dev/null
+++ b/antdv-demo/docs/tag/demo/index.vue
@@ -0,0 +1,65 @@
+
+
diff --git a/antdv-demo/docs/tag/index.en-US.md b/antdv-demo/docs/tag/index.en-US.md
new file mode 100644
index 000000000..1e8bac8bc
--- /dev/null
+++ b/antdv-demo/docs/tag/index.en-US.md
@@ -0,0 +1,28 @@
+## API
+
+### Tag
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| afterClose | Callback executed when close animation is completed, please use `close` event, we will remove this in the next version | () => void | - | |
+| closable | Whether the Tag can be closed | boolean | `false` |
+| color | Color of the Tag | string | - |
+| visible(v-model) | Whether the Tag is closed or not | boolean | `true` |
+
+### Tag Events
+
+| Events Name | Description | Arguments |
+| ----------- | ------------------------------------ | ----------- |
+| close | Callback executed when tag is closed | (e) => void |
+
+### Tag.CheckableTag
+
+| Property | Description | Type | Default |
+| ---------------- | --------------------- | ------- | ------- |
+| checked(v-model) | Checked status of Tag | boolean | `false` |
+
+### Tag.CheckableTag Events
+
+| Events Name | Description | Arguments |
+| ----------- | ----------------------------------------------- | ----------------- |
+| change | Callback executed when Tag is checked/unchecked | (checked) => void |
diff --git a/antdv-demo/docs/tag/index.zh-CN.md b/antdv-demo/docs/tag/index.zh-CN.md
new file mode 100644
index 000000000..1c56e04c1
--- /dev/null
+++ b/antdv-demo/docs/tag/index.zh-CN.md
@@ -0,0 +1,29 @@
+## API
+
+### Tag
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| afterClose | 关闭动画完成后的回调,请使用 `close` 事件, 我们将在下个版本删除此项 | () => void | - |
+| afterClose | 关闭动画完成后的回调 | () => void | - |
+| closable | 标签是否可以关闭 | boolean | false |
+| color | 标签色 | string | - |
+| visible(v-model) | 是否显示标签 | boolean | `true` |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | ------------ | ----------- |
+| close | 关闭时的回调 | (e) => void |
+
+### Tag.CheckableTag
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ---------------- | ------------------ | ------- | ------ |
+| checked(v-model) | 设置标签的选中状态 | boolean | false |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| -------- | -------------------- | ----------------- |
+| change | 点击标签时触发的回调 | (checked) => void |
diff --git a/antdv-demo/docs/test/demo/index.vue b/antdv-demo/docs/test/demo/index.vue
new file mode 100644
index 000000000..22c5f44dc
--- /dev/null
+++ b/antdv-demo/docs/test/demo/index.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/docs/time-picker/demo/12hours.md b/antdv-demo/docs/time-picker/demo/12hours.md
new file mode 100644
index 000000000..0a6a31d19
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/12hours.md
@@ -0,0 +1,28 @@
+
+#### 12 小时制
+12 小时制的时间选择器,默认的 format 为 `h:mm:ss a`。
+
+
+
+#### 12 hours
+TimePicker of 12 hours format, with default format `h:mm:ss a`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/addon.md b/antdv-demo/docs/time-picker/demo/addon.md
new file mode 100644
index 000000000..8107ba827
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/addon.md
@@ -0,0 +1,47 @@
+
+#### 附加内容
+在 TimePicker 选择框底部显示自定义的内容。
+
+
+
+#### Addon
+Render addon contents to timepicker panel's bottom.
+
+
+```vue
+
+
+
+
+ Ok {{ panel.prefixCls }}
+
+
+
+
+ Ok
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/basic.md b/antdv-demo/docs/time-picker/demo/basic.md
new file mode 100644
index 000000000..ff136cabb
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/basic.md
@@ -0,0 +1,26 @@
+
+#### 基本
+点击 TimePicker,然后可以在浮层中选择或者输入某一时间。
+
+
+
+#### Basic
+Click `TimePicker`, and then we could select or input a time in panel.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/disabled.md b/antdv-demo/docs/time-picker/demo/disabled.md
new file mode 100644
index 000000000..891ff2126
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/disabled.md
@@ -0,0 +1,23 @@
+
+#### 禁用
+禁用时间选择。
+
+
+
+#### disabled
+A disabled state of the `TimePicker`.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/hide-column.md b/antdv-demo/docs/time-picker/demo/hide-column.md
new file mode 100644
index 000000000..a8db50795
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/hide-column.md
@@ -0,0 +1,23 @@
+
+#### 选择时分
+TimePicker 浮层中的列会随着 `format` 变化,当略去 `format` 中的某部分时,浮层中对应的列也会消失。
+
+
+
+#### Hour and minute
+While part of `format` is omitted, the corresponding column in panel will disappear, too.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/index.vue b/antdv-demo/docs/time-picker/demo/index.vue
new file mode 100644
index 000000000..66395dd38
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/index.vue
@@ -0,0 +1,58 @@
+
+
diff --git a/antdv-demo/docs/time-picker/demo/interval-options.md b/antdv-demo/docs/time-picker/demo/interval-options.md
new file mode 100644
index 000000000..f6753f1de
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/interval-options.md
@@ -0,0 +1,15 @@
+
+#### 步长选项
+可以使用 `hourStep` `minuteStep` `secondStep` 按步长展示可选的时分秒。
+
+
+
+#### interval option
+Show stepped options by `hourStep` `minuteStep` `secondStep`.
+
+
+```vue
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/size.md b/antdv-demo/docs/time-picker/demo/size.md
new file mode 100644
index 000000000..93f68260d
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/size.md
@@ -0,0 +1,27 @@
+
+#### 三种大小
+三种大小的输入框,大的用在表单中,中的为默认。
+
+
+
+#### Three Sizes
+The input box comes in three sizes. large is used in the form, while the medium size is the default.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/suffix.md b/antdv-demo/docs/time-picker/demo/suffix.md
new file mode 100644
index 000000000..9ae106a91
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/suffix.md
@@ -0,0 +1,28 @@
+
+#### 后缀图标
+点击 TimePicker,然后可以在浮层中选择或者输入某一时间。
+
+
+
+#### Suffix
+Click `TimePicker`, and then we could select or input a time in panel.
+
+
+```vue
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/demo/value.md b/antdv-demo/docs/time-picker/demo/value.md
new file mode 100644
index 000000000..61789dde9
--- /dev/null
+++ b/antdv-demo/docs/time-picker/demo/value.md
@@ -0,0 +1,43 @@
+
+#### 受控组件
+value 和 onChange 需要配合使用。也可以直接使用v-model。
+
+
+
+#### Under Control
+`value` and `@change` should be used together or use v-model.
+
+
+```vue
+
+
+
use value and @change
+
+
+
+
v-model
+
+
+
+
Do not change
+
+
+
+
+```
diff --git a/antdv-demo/docs/time-picker/index.en-US.md b/antdv-demo/docs/time-picker/index.en-US.md
new file mode 100644
index 000000000..3802e80da
--- /dev/null
+++ b/antdv-demo/docs/time-picker/index.en-US.md
@@ -0,0 +1,45 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| addon | some addon to timepicker panel bottom | slot \| slot-scope | - | |
+| allowClear | allow clearing text | boolean | true | |
+| autoFocus | get focus when component mounted | boolean | false | |
+| clearText | clear tooltip of icon | string | clear | |
+| defaultOpenValue | default open panel value, used to set utcOffset,locale if value/defaultValue absent | [moment](http://momentjs.com/) | moment() | |
+| defaultValue | to set default time | [moment](http://momentjs.com/) | - | |
+| disabled | determine whether the TimePicker is disabled | boolean | false | |
+| disabledHours | to specify the hours that cannot be selected | function() | - | |
+| disabledMinutes | to specify the minutes that cannot be selected | function(selectedHour) | - | |
+| disabledSeconds | to specify the seconds that cannot be selected | function(selectedHour, selectedMinute) | - | |
+| format | to set the time format | string | "HH:mm:ss" | |
+| getPopupContainer | to set the container of the floating layer, while the default is to create a div element in body | function(trigger) | - | |
+| hideDisabledOptions | hide the options that can not be selected | boolean | false | |
+| hourStep | interval between hours in picker | number | 1 | |
+| inputReadOnly | Set the `readonly` attribute of the input tag (avoids virtual keyboard on touch devices) | boolean | false | |
+| minuteStep | interval between minutes in picker | number | 1 | |
+| open(.sync) | whether to popup panel | boolean | false | |
+| placeholder | display when there's no value | string | "Select a time" | |
+| popupClassName | className of panel | string | '' | |
+| popupStyle | style of panel | object | - | |
+| secondStep | interval between seconds in picker | number | 1 | |
+| suffixIcon | The custom suffix icon | string \| VNode \| slot | - | |
+| clearIcon | The custom clear icon | string \| VNode \| slot | - | 1.5.0 |
+| use12Hours | display as 12 hours format, with default format `h:mm:ss a` | boolean | false | |
+| value(v-model) | to set time | [moment](http://momentjs.com/) | - | |
+| align | this value will be merged into placement's config, please refer to the settings [dom-align](https://github.com/yiminghe/dom-align) | Object | - | 1.5.4 |
+| valueFormat | optional, format of binding value. If not specified, the binding value will be a Date object | string,[date formats](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | a callback function, can be executed when the selected time is changing | function(time: moment \| string, timeString: string): void |
+| openChange | a callback function which will be called while panel opening/closing | (open: boolean): void |
+
+## Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
diff --git a/antdv-demo/docs/time-picker/index.zh-CN.md b/antdv-demo/docs/time-picker/index.zh-CN.md
new file mode 100644
index 000000000..89f9528e9
--- /dev/null
+++ b/antdv-demo/docs/time-picker/index.zh-CN.md
@@ -0,0 +1,45 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| addon | 选择框底部显示自定义的内容 | slot \| slot-scope | 无 | |
+| allowClear | 是否展示清除按钮 | boolean | true | |
+| autoFocus | 自动获取焦点 | boolean | false | |
+| clearText | 清除按钮的提示文案 | string | clear | |
+| defaultOpenValue | 当 defaultValue/value 不存在时,可以设置面板打开时默认选中的值 | [moment](http://momentjs.com/) | moment() | |
+| defaultValue | 默认时间 | [moment](http://momentjs.com/) | 无 | |
+| disabled | 禁用全部操作 | boolean | false | |
+| disabledHours | 禁止选择部分小时选项 | function() | 无 | |
+| disabledMinutes | 禁止选择部分分钟选项 | function(selectedHour) | 无 | |
+| disabledSeconds | 禁止选择部分秒选项 | function(selectedHour, selectedMinute) | 无 | |
+| format | 展示的时间格式 | string | "HH:mm:ss" | |
+| getPopupContainer | 定义浮层的容器,默认为 body 上新建 div | function(trigger) | 无 | |
+| hideDisabledOptions | 隐藏禁止选择的选项 | boolean | false | |
+| hourStep | 小时选项间隔 | number | 1 | |
+| inputReadOnly | 设置输入框为只读(避免在移动设备上打开虚拟键盘) | boolean | false | |
+| minuteStep | 分钟选项间隔 | number | 1 | |
+| open(.sync) | 面板是否打开 | boolean | false | |
+| placeholder | 没有值的时候显示的内容 | string | "请选择时间" | |
+| popupClassName | 弹出层类名 | string | '' | |
+| popupStyle | 弹出层样式对象 | object | - | |
+| secondStep | 秒选项间隔 | number | 1 | |
+| suffixIcon | 自定义的选择框后缀图标 | string \| VNode \| slot | - | |
+| clearIcon | 自定义的清除图标 | string \| VNode \| slot | - | 1.5.0 |
+| use12Hours | 使用 12 小时制,为 true 时 `format` 默认为 `h:mm:ss a` | boolean | false | |
+| value(v-model) | 当前时间 | [moment](http://momentjs.com/) | 无 | |
+| align | 该值将合并到 placement 的配置中,设置参考 [dom-align](https://github.com/yiminghe/dom-align) | Object | 无 | 1.5.4 |
+| valueFormat | 可选,绑定值的格式,对 value、defaultValue 起作用。不指定则绑定值为 moment 对象 | string,[具体格式](https://momentjs.com/docs/#/displaying/format/) | - | 1.5.4 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | --------------------- | ---------------------------------------------------------- |
+| change | 时间发生变化的回调 | function(time: moment \| string, timeString: string): void |
+| openChange | 面板打开/关闭时的回调 | (open: boolean): void |
+
+## 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
diff --git a/antdv-demo/docs/timeline/demo/alternate.md b/antdv-demo/docs/timeline/demo/alternate.md
new file mode 100644
index 000000000..e523526f3
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/alternate.md
@@ -0,0 +1,34 @@
+
+#### 交替展现
+内容在时间轴两侧轮流出现。
+
+
+
+#### Alternate
+Alternate timeline.
+
+
+```vue
+
+
+ Create a services site 2015-09-01
+
+ Solve initial network problems 2015-09-01
+
+
+
+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque
+ laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto
+ beatae vitae dicta sunt explicabo.
+
+
+ Network problems being solved 2015-09-01
+
+ Create a services site 2015-09-01
+
+
+ Technical testing 2015-09-01
+
+
+
+```
diff --git a/antdv-demo/docs/timeline/demo/basic.md b/antdv-demo/docs/timeline/demo/basic.md
new file mode 100644
index 000000000..b37a6af1f
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/basic.md
@@ -0,0 +1,20 @@
+
+#### 基本用法
+基本的时间轴。
+
+
+
+#### Basic
+Basic timeline.
+
+
+```vue
+
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-01
+ Technical testing 2015-09-01
+ Network problems being solved 2015-09-01
+
+
+```
diff --git a/antdv-demo/docs/timeline/demo/color.md b/antdv-demo/docs/timeline/demo/color.md
new file mode 100644
index 000000000..bf1976e86
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/color.md
@@ -0,0 +1,42 @@
+
+#### 圆圈颜色
+圆圈颜色,绿色用于已完成、成功状态,红色表示告警或错误状态,蓝色可表示正在进行或其他默认状态。
+
+
+
+#### Color
+Set the color of circles. `green` means completed or success status, `red` means warning or error, and `blue` means ongoing or other default status.
+
+
+```vue
+
+
+
+ Create a services site 2015-09-01
+
+
+ Create a services site 2015-09-01
+
+
+ Solve initial network problems 1
+ Solve initial network problems 2
+ Solve initial network problems 3 2015-09-01
+
+
+ Technical testing 1
+ Technical testing 2
+ Technical testing 3 2015-09-01
+
+
+ Technical testing 1
+ Technical testing 2
+ Technical testing 3 2015-09-01
+
+
+ Technical testing 1
+ Technical testing 2
+ Technical testing 3 2015-09-01
+
+
+
+```
diff --git a/antdv-demo/docs/timeline/demo/custom.md b/antdv-demo/docs/timeline/demo/custom.md
new file mode 100644
index 000000000..875bd3bb0
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/custom.md
@@ -0,0 +1,23 @@
+
+#### 自定义时间轴点
+基本的时间轴。
+
+
+
+#### Custom
+Set a node as an icon or other custom element.
+
+
+```vue
+
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-01
+
+
+ Technical testing 2015-09-01
+
+ Network problems being solved 2015-09-01
+
+
+```
diff --git a/antdv-demo/docs/timeline/demo/index.vue b/antdv-demo/docs/timeline/demo/index.vue
new file mode 100644
index 000000000..518dbb3b1
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/index.vue
@@ -0,0 +1,53 @@
+
diff --git a/antdv-demo/docs/timeline/demo/pending.md b/antdv-demo/docs/timeline/demo/pending.md
new file mode 100644
index 000000000..1af1f030e
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/pending.md
@@ -0,0 +1,39 @@
+
+#### 最后一个及排序
+当任务状态正在发生,还在记录过程中,可用幽灵节点来表示当前的时间节点,当 pending 为真值时展示幽灵节点,如果 pending 是 React 元素可用于定制该节点内容,同时 pendingDot 将可以用于定制其轴点。reverse 属性用于控制节点排序,为 false 时按正序排列,为 true 时按倒序排列。
+
+
+
+#### Last node
+When the timeline is incomplete and ongoing, put a ghost node at last. Set `pending` as truthy value to enable displaying pending item. You can customize the pending content by passing a React Element. Meanwhile, `slot="pendingDot"` is used to customize the dot of the pending item.
+`reverse={true}` is used for reversing nodes.
+
+
+```vue
+
+
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-01
+ Technical testing 2015-09-01
+
+
+ Toggle Reverse
+
+
+
+
+```
diff --git a/antdv-demo/docs/timeline/demo/right.md b/antdv-demo/docs/timeline/demo/right.md
new file mode 100644
index 000000000..d70fc496a
--- /dev/null
+++ b/antdv-demo/docs/timeline/demo/right.md
@@ -0,0 +1,23 @@
+
+#### 右侧时间轴点
+时间轴点可以在内容的右边。
+
+
+
+#### Right alternate
+Right alternate timeline.
+
+
+```vue
+
+
+ Create a services site 2015-09-01
+ Solve initial network problems 2015-09-01
+
+
+ Technical testing 2015-09-01
+
+ Network problems being solved 2015-09-01
+
+
+```
diff --git a/antdv-demo/docs/timeline/index.en-US.md b/antdv-demo/docs/timeline/index.en-US.md
new file mode 100644
index 000000000..f88cd77ec
--- /dev/null
+++ b/antdv-demo/docs/timeline/index.en-US.md
@@ -0,0 +1,31 @@
+## API
+
+```html
+
+ step1 2015-09-01
+ step2 2015-09-01
+ step3 2015-09-01
+ step4 2015-09-01
+
+```
+
+### Timeline
+
+Timeline
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| pending | Set the last ghost node's existence or its content | boolean\|string\|slot | `false` |
+| pendingDot | Set the dot of the last ghost node when pending is true | string\|slot | ` ` |
+| reverse | reverse nodes or not | boolean | false |
+| mode | By sending `alternate` the timeline will distribute the nodes to the left and right. | `left` \| `alternate` \| `right` | `left` |
+
+### Timeline.Item
+
+Node of timeline
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| color | Set the circle's color to `blue`, `red`, `green` or other custom colors | string | `blue` | |
+| dot | Customize timeline dot | string\|slot | - | |
+| position | Customize node position | `left` \| `right` | - | 1.5.0 |
diff --git a/antdv-demo/docs/timeline/index.zh-CN.md b/antdv-demo/docs/timeline/index.zh-CN.md
new file mode 100644
index 000000000..6fee12608
--- /dev/null
+++ b/antdv-demo/docs/timeline/index.zh-CN.md
@@ -0,0 +1,31 @@
+## API
+
+```html
+
+ 创建服务现场 2015-09-01
+ 初步排除网络异常 2015-09-01
+ 技术测试异常 2015-09-01
+ 网络异常正在修复 2015-09-01
+
+```
+
+### Timeline
+
+时间轴。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| pending | 指定最后一个幽灵节点是否存在或内容 | boolean\|string\|slot | false |
+| pendingDot | 当最后一个幽灵节点存在時,指定其时间图点 | string\|slot | ` ` |
+| reverse | 节点排序 | boolean | false |
+| mode | 通过设置 `mode` 可以改变时间轴和内容的相对位置 | `left` \| `alternate` \| `right` |
+
+### Timeline.Item
+
+时间轴的每一个节点。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| -------- | ----------------------------------------------- | ----------------- | ------ | ----- |
+| color | 指定圆圈颜色 `blue, red, green`,或自定义的色值 | string | blue | |
+| dot | 自定义时间轴点 | string\|slot | - | |
+| position | 自定义节点位置 | `left` \| `right` | - | 1.5.0 |
diff --git a/antdv-demo/docs/tooltip/demo/arrow-point-at-center.md b/antdv-demo/docs/tooltip/demo/arrow-point-at-center.md
new file mode 100644
index 000000000..760d2aa7c
--- /dev/null
+++ b/antdv-demo/docs/tooltip/demo/arrow-point-at-center.md
@@ -0,0 +1,22 @@
+
+#### 箭头指向
+设置了 `arrowPointAtCenter` 后,箭头将指向目标元素的中心。
+
+
+
+#### Arrow pointing at the center
+By specifying `arrowPointAtCenter` prop, the arrow will point to the center of the target element.
+
+
+```vue
+
+
+
+ Align edge / 边缘对齐
+
+
+ Arrow points to center / 箭头指向中心
+
+
+
+```
diff --git a/antdv-demo/docs/tooltip/demo/auto-adjust-overflow.md b/antdv-demo/docs/tooltip/demo/auto-adjust-overflow.md
new file mode 100644
index 000000000..69ee5981c
--- /dev/null
+++ b/antdv-demo/docs/tooltip/demo/auto-adjust-overflow.md
@@ -0,0 +1,49 @@
+
+#### 自动调整位置
+气泡框不可见时自动调整位置
+
+
+
+#### Adjust placement automatically
+Adjust popup placement automatically when popup is invisible
+
+
+```vue
+
+
+
+ Adjust automatically / 自动调整
+
+
+
+ Ingore / 不处理
+
+
+
+
+```
diff --git a/antdv-demo/docs/tooltip/demo/basic.md b/antdv-demo/docs/tooltip/demo/basic.md
new file mode 100644
index 000000000..b890a5458
--- /dev/null
+++ b/antdv-demo/docs/tooltip/demo/basic.md
@@ -0,0 +1,20 @@
+
+#### 基本
+最简单的用法。
+
+
+
+#### Basic
+The simplest usage.
+
+
+```vue
+
+
+
+ prompt text
+
+ Tooltip will show when mouse enter.
+
+
+```
diff --git a/antdv-demo/docs/tooltip/demo/index.vue b/antdv-demo/docs/tooltip/demo/index.vue
new file mode 100644
index 000000000..837e70c3e
--- /dev/null
+++ b/antdv-demo/docs/tooltip/demo/index.vue
@@ -0,0 +1,56 @@
+
diff --git a/antdv-demo/docs/tooltip/demo/placement.md b/antdv-demo/docs/tooltip/demo/placement.md
new file mode 100644
index 000000000..f6e6890b0
--- /dev/null
+++ b/antdv-demo/docs/tooltip/demo/placement.md
@@ -0,0 +1,114 @@
+
+#### 位置
+位置有 12 个方向。
+
+
+
+#### Placement
+There are 12 placement options available.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tooltip/index.en-US.md b/antdv-demo/docs/tooltip/index.en-US.md
new file mode 100644
index 000000000..3a2f9cb81
--- /dev/null
+++ b/antdv-demo/docs/tooltip/index.en-US.md
@@ -0,0 +1,35 @@
+## API
+
+| Property | Description | Type | Default |
+| -------- | ----------------------------- | ------------ | ------- |
+| title | The text shown in the tooltip | string\|slot | - |
+
+### Common API
+
+The following APIs are shared by Tooltip, Popconfirm, Popover.
+
+| Property | Description | Type | Default |
+| --- | --- | --- | --- |
+| arrowPointAtCenter | Whether the arrow is pointed at the center of target | boolean | `false` |
+| autoAdjustOverflow | Whether to adjust popup placement automatically when popup is off screen | boolean | `true` |
+| defaultVisible | Whether the floating tooltip card is visible by default | boolean | `false` |
+| getPopupContainer | The DOM container of the tip, the default behavior is to create a `div` element in `body`. | Function(triggerNode) | () => document.body |
+| mouseEnterDelay | Delay in seconds, before tooltip is shown on mouse enter | number | 0 |
+| mouseLeaveDelay | Delay in seconds, before tooltip is hidden on mouse leave | number | 0.1 |
+| overlayClassName | Class name of the tooltip card | string | - |
+| overlayStyle | Style of the tooltip card | object | - |
+| placement | The position of the tooltip relative to the target, which can be one of `top` `left` `right` `bottom` `topLeft` `topRight` `bottomLeft` `bottomRight` `leftTop` `leftBottom` `rightTop` `rightBottom` | string | `top` |
+| trigger | Tooltip trigger mode | `hover` \| `focus` \| `click` \| `contextmenu` | `hover` |
+| visible(v-model) | Whether the floating tooltip card is visible or not | boolean | `false` |
+| destroyTooltipOnHide | Whether to destroy tooltip on hide | boolean | false |
+| align | this value will be merged into placement's config, please refer to the settings [dom-align](https://github.com/yiminghe/dom-align) | Object | - |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| visibleChange | Callback executed when visibility of the tooltip card is changed | (visible) => void | - |
+
+## Note
+
+Please ensure that the child node of `Tooltip` accepts `mouseenter`, `mouseleave`, `focus`, `click` events.
diff --git a/antdv-demo/docs/tooltip/index.zh-CN.md b/antdv-demo/docs/tooltip/index.zh-CN.md
new file mode 100644
index 000000000..a0af98d03
--- /dev/null
+++ b/antdv-demo/docs/tooltip/index.zh-CN.md
@@ -0,0 +1,35 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ----- | -------- | ------------ | ------ |
+| title | 提示文字 | string\|slot | 无 |
+
+### 共同的 API
+
+以下 API 为 Tooltip、Popconfirm、Popover 共享的 API。
+
+| 参数 | 说明 | 类型 | 默认值 |
+| --- | --- | --- | --- |
+| arrowPointAtCenter | 箭头是否指向目标元素中心 | boolean | `false` |
+| autoAdjustOverflow | 气泡被遮挡时自动调整位置 | boolean | `true` |
+| defaultVisible | 默认是否显隐 | boolean | false |
+| getPopupContainer | 浮层渲染父节点,默认渲染到 body 上 | Function(triggerNode) | () => document.body |
+| mouseEnterDelay | 鼠标移入后延时多少才显示 Tooltip,单位:秒 | number | 0 |
+| mouseLeaveDelay | 鼠标移出后延时多少才隐藏 Tooltip,单位:秒 | number | 0.1 |
+| overlayClassName | 卡片类名 | string | 无 |
+| overlayStyle | 卡片样式 | object | 无 |
+| placement | 气泡框位置,可选 `top` `left` `right` `bottom` `topLeft` `topRight` `bottomLeft` `bottomRight` `leftTop` `leftBottom` `rightTop` `rightBottom` | string | top |
+| trigger | 触发行为,可选 `hover/focus/click/contextmenu` | string | hover |
+| visible(v-model) | 用于手动控制浮层显隐 | boolean | false |
+| destroyTooltipOnHide | 隐藏后是否销毁 tooltip | boolean | false |
+| align | 该值将合并到 placement 的配置中,设置参考 [dom-align](https://github.com/yiminghe/dom-align) | Object | 无 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ------------- | -------------- | ----------------- |
+| visibleChange | 显示隐藏的回调 | (visible) => void |
+
+## 注意
+
+请确保 `Tooltip` 的子元素能接受 `mouseenter`、`mouseleave`、`focus`、`click` 事件。
diff --git a/antdv-demo/docs/transfer/demo/advanced.md b/antdv-demo/docs/transfer/demo/advanced.md
new file mode 100644
index 000000000..ce41cbbca
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/advanced.md
@@ -0,0 +1,76 @@
+
+#### 高级用法
+穿梭框高级用法,可配置操作文案,可定制宽高,可对底部进行自定义渲染。
+
+
+
+#### Advanced
+You can customize the labels of the transfer buttons, the width and height of the columns, and what should be displayed in the footer.
+
+
+```vue
+
+
+
+ reload
+
+
+ 没数据
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/basic.md b/antdv-demo/docs/transfer/demo/basic.md
new file mode 100644
index 000000000..30390dac3
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/basic.md
@@ -0,0 +1,79 @@
+
+#### 基本用法
+最基本的用法,展示了 `dataSource`、`targetKeys`、每行的渲染函数 `render` 以及回调函数 `change` `selectChange` `scroll` 的用法。
+
+
+
+#### Basic
+The most basic usage of `Transfer` involves providing the source data and target keys arrays, plus the rendering and some callback functions.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/custom-item.md b/antdv-demo/docs/transfer/demo/custom-item.md
new file mode 100644
index 000000000..417aa5703
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/custom-item.md
@@ -0,0 +1,73 @@
+
+#### 自定义渲染行数据
+自定义渲染每一个 Transfer Item,可用于渲染复杂数据。
+
+
+
+#### Custom datasource
+Custom each Transfer Item, and in this way you can render a complex datasource.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/index.vue b/antdv-demo/docs/transfer/demo/index.vue
new file mode 100644
index 000000000..e413a767d
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/index.vue
@@ -0,0 +1,67 @@
+
diff --git a/antdv-demo/docs/transfer/demo/large-data.md b/antdv-demo/docs/transfer/demo/large-data.md
new file mode 100644
index 000000000..3c137fc39
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/large-data.md
@@ -0,0 +1,58 @@
+
+#### 大数据性能测试
+2000 条数据。
+
+
+
+#### Performance Test
+2000 items.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/search.md b/antdv-demo/docs/transfer/demo/search.md
new file mode 100644
index 000000000..49555c77f
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/search.md
@@ -0,0 +1,66 @@
+
+#### 带搜索框
+带搜索框的穿梭框,可以自定义搜索函数。
+
+
+
+#### Search
+Transfer with a search box.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/table-transfer.md b/antdv-demo/docs/transfer/demo/table-transfer.md
new file mode 100644
index 000000000..9c84b5679
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/table-transfer.md
@@ -0,0 +1,142 @@
+
+#### 表格穿梭框
+使用 Table 组件作为自定义渲染列表。
+
+
+
+#### Table Transfer
+Customize render list with Table component.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/demo/tree-transfer.md b/antdv-demo/docs/transfer/demo/tree-transfer.md
new file mode 100644
index 000000000..cd8a9b06d
--- /dev/null
+++ b/antdv-demo/docs/transfer/demo/tree-transfer.md
@@ -0,0 +1,116 @@
+
+#### 树穿梭框
+使用 Tree 组件作为自定义渲染列表。
+
+
+
+#### Tree Transfer
+Customize render list with Tree component.
+
+
+```vue
+
+
+
+
+ {
+ onChecked(_, props, [...selectedKeys, ...targetKeys], itemSelect);
+ }
+ "
+ @select="
+ (_, props) => {
+ onChecked(_, props, [...selectedKeys, ...targetKeys], itemSelect);
+ }
+ "
+ />
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/transfer/index.en-US.md b/antdv-demo/docs/transfer/index.en-US.md
new file mode 100644
index 000000000..6f870432f
--- /dev/null
+++ b/antdv-demo/docs/transfer/index.en-US.md
@@ -0,0 +1,89 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| dataSource | Used for setting the source data. The elements that are part of this array will be present the left column. Except the elements whose keys are included in `targetKeys` prop. | \[{key: string.isRequired,title: string.isRequired,description: string,disabled: bool}\] | \[] | |
+| disabled | Whether disabled transfer | boolean | false | |
+| filterOption | A function to determine whether an item should show in search result list | (inputValue, option): boolean | | |
+| footer | customize the progress dot by setting a scoped slot | slot="footer" slot-scope="props" | | |
+| lazy | property of vc-lazy-load for lazy rendering items. Turn off it by set to `false`. | object\|boolean | `{ height: 32, offset: 32 }` | |
+| listStyle | A custom CSS style used for rendering the transfer columns. | object | | |
+| locale | i18n text including filter, empty text, item unit, etc | object | `{ itemUnit: 'item', itemsUnit: 'items', notFoundContent: 'The list is empty', searchPlaceholder: 'Search here' }` | |
+| operations | A set of operations that are sorted from top to bottom. | string\[] | \['>', '<'] | |
+| render | The function to generate the item shown on a column. Based on an record (element of the dataSource array), this function should return a element which is generated from that record. Also, it can return a plain object with `value` and `label`, `label` is a element and `value` is for title | Function(record) | | |
+| selectedKeys | A set of keys of selected items. | string\[] | \[] | |
+| showSearch | If included, a search box is shown on each column. | boolean | false | |
+| showSelectAll | Show select all checkbox on the header | boolean | true | 1.5.0 |
+| targetKeys | A set of keys of elements that are listed on the right column. | string\[] | \[] | |
+| titles | A set of titles that are sorted from left to right. | string\[] | - | |
+
+### events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | A callback function that is executed when the transfer between columns is complete. | (targetKeys, direction, moveKeys): void | |
+| scroll | A callback function which is executed when scroll options list | (direction, event): void | |
+| search | A callback function which is executed when search field are changed | (direction: 'left'\|'right', value: string): void | - |
+| selectChange | A callback function which is executed when selected items are changed. | (sourceSelectedKeys, targetSelectedKeys): void | |
+
+### Render Props
+
+New in 1.5.0. Transfer accept `children` to customize render list, using follow props:
+
+```json
+{
+ "props": {
+ "direction": String,
+ "disabled": Boolean,
+ "filteredItems": Array,
+ "selectedKeys": Array
+ },
+ "on": {
+ "itemSelect": Function,
+ "itemSelectAll": Function
+ }
+}
+```
+
+| Property | Description | Type | Version |
+| --------------- | ----------------------- | ----------------------------------- | ------- |
+| direction | List render direction | 'left' \| 'right' | 1.5.0 |
+| disabled | Disable list or not | boolean | 1.5.0 |
+| filteredItems | Filtered items | TransferItem[] | 1.5.0 |
+| onItemSelect | Select item | (key: string, selected: boolean) | 1.5.0 |
+| onItemSelectAll | Select a group of items | (keys: string[], selected: boolean) | 1.5.0 |
+| selectedKeys | Selected items | string[] | 1.5.0 |
+
+#### example
+
+```html
+
+
+
+
+
+```
+
+## Warning
+
+According the standard of Vue, the key should always be supplied directly to the elements in the array. In Transfer, the keys should be set on the elements included in `dataSource` array. By default, `key` property is used as an unique identifier.
+
+If there's no `key` in your data, you should use `rowKey` to specify the key that will be used for uniquely identify each element.
+
+```jsx
+// eg. your primary key is `uid`
+return ;
+```
diff --git a/antdv-demo/docs/transfer/index.zh-CN.md b/antdv-demo/docs/transfer/index.zh-CN.md
new file mode 100644
index 000000000..2bbdef096
--- /dev/null
+++ b/antdv-demo/docs/transfer/index.zh-CN.md
@@ -0,0 +1,89 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| dataSource | 数据源,其中的数据将会被渲染到左边一栏中,`targetKeys` 中指定的除外。 | \[{key: string.isRequired,title: string.isRequired,description: string,disabled: bool}\]\[] | \[] | |
+| disabled | 是否禁用 | boolean | false | |
+| filterOption | 接收 `inputValue` `option` 两个参数,当 `option` 符合筛选条件时,应返回 `true`,反之则返回 `false`。 | (inputValue, option): boolean | | |
+| footer | 可以设置为一个 作用域插槽 | slot="footer" slot-scope="props" | | |
+| lazy | Transfer 使用了 [vc-lazy-load]优化性能,这里可以设置相关参数。设为 `false` 可以关闭懒加载。 | object\|boolean | `{ height: 32, offset: 32 }` | |
+| listStyle | 两个穿梭框的自定义样式 | object | | |
+| locale | 各种语言 | object | `{ itemUnit: '项', itemsUnit: '项', notFoundContent: '列表为空', searchPlaceholder: '请输入搜索内容' }` | |
+| operations | 操作文案集合,顺序从上至下 | string\[] | \['>', '<'] | |
+| render | 每行数据渲染函数,该函数的入参为 `dataSource` 中的项,返回值为 element。或者返回一个普通对象,其中 `label` 字段为 element,`value` 字段为 title | Function(record) | | |
+| selectedKeys | 设置哪些项应该被选中 | string\[] | \[] | |
+| showSearch | 是否显示搜索框 | boolean | false | |
+| showSelectAll | 是否展示全选勾选框 | boolean | true | 1.5.0 |
+| targetKeys | 显示在右侧框数据的 key 集合 | string\[] | \[] | |
+| titles | 标题集合,顺序从左至右 | string\[] | \['', ''] | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| change | 选项在两栏之间转移时的回调函数 | (targetKeys, direction, moveKeys): void | |
+| scroll | 选项列表滚动时的回调函数 | (direction, event): void | |
+| search | 搜索框内容时改变时的回调函数 | (direction: 'left'\|'right', value: string): void | - |
+| selectChange | 选中项发生改变时的回调函数 | (sourceSelectedKeys, targetSelectedKeys): void | |
+
+### Render Props
+
+1.5.0 新增。Transfer 支持接收 `children` 自定义渲染列表,并返回以下参数:
+
+```json
+{
+ "props": {
+ "direction": String,
+ "disabled": Boolean,
+ "filteredItems": Array,
+ "selectedKeys": Array
+ },
+ "on": {
+ "itemSelect": Function,
+ "itemSelectAll": Function
+ }
+}
+```
+
+| 参数 | 说明 | 类型 | 版本 |
+| ------------- | -------------- | ----------------------------------- | ----- |
+| direction | 渲染列表的方向 | 'left' \| 'right' | 1.5.0 |
+| disabled | 是否禁用列表 | boolean | 1.5.0 |
+| filteredItems | 过滤后的数据 | TransferItem[] | 1.5.0 |
+| selectedKeys | 选中的条目 | string[] | 1.5.0 |
+| itemSelect | 勾选条目 | (key: string, selected: boolean) | 1.5.0 |
+| itemSelectAll | 勾选一组条目 | (keys: string[], selected: boolean) | 1.5.0 |
+
+#### 参考示例
+
+```html
+
+
+
+
+
+```
+
+## 注意
+
+按照 Vue 最新的规范,所有的组件数组最好绑定 key。在 Transfer 中,`dataSource`里的数据值需要指定 `key` 值。对于 `dataSource` 默认将每列数据的 `key` 属性作为唯一的标识。
+
+如果你的数据没有这个属性,务必使用 `rowKey` 来指定数据列的主键。
+
+```jsx
+// 比如你的数据主键是 uid
+return ;
+```
diff --git a/antdv-demo/docs/tree-select/demo/async.md b/antdv-demo/docs/tree-select/demo/async.md
new file mode 100644
index 000000000..656c3276d
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/async.md
@@ -0,0 +1,69 @@
+
+#### 异步加载
+异步加载树节点。
+
+
+
+#### Asynchronous loading
+Asynchronous loading tree node.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/demo/basic.md b/antdv-demo/docs/tree-select/demo/basic.md
new file mode 100644
index 000000000..fc8c670bd
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/basic.md
@@ -0,0 +1,46 @@
+
+#### 基本用法
+最简单的用法。
+
+
+
+#### Basic
+The most basic usage.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+ sss
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/demo/checkable.md b/antdv-demo/docs/tree-select/demo/checkable.md
new file mode 100644
index 000000000..0be0c9b31
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/checkable.md
@@ -0,0 +1,74 @@
+
+#### 可勾选
+使用勾选框实现多选功能。
+
+
+
+#### Checkable
+Multiple and checkable.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/demo/index.vue b/antdv-demo/docs/tree-select/demo/index.vue
new file mode 100644
index 000000000..7e9e1174f
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/index.vue
@@ -0,0 +1,54 @@
+
diff --git a/antdv-demo/docs/tree-select/demo/multiple.md b/antdv-demo/docs/tree-select/demo/multiple.md
new file mode 100644
index 000000000..54133328d
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/multiple.md
@@ -0,0 +1,61 @@
+
+#### 多选
+多选的树选择。
+
+
+
+#### Multiple Selection
+Multiple selection usage.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+ sss
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/demo/suffix.md b/antdv-demo/docs/tree-select/demo/suffix.md
new file mode 100644
index 000000000..b435b4a96
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/suffix.md
@@ -0,0 +1,46 @@
+
+#### 后缀图标
+最简单的用法。
+
+
+
+#### Suffix
+The most basic usage.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+ sss
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/demo/treeData.md b/antdv-demo/docs/tree-select/demo/treeData.md
new file mode 100644
index 000000000..8b0b3b86e
--- /dev/null
+++ b/antdv-demo/docs/tree-select/demo/treeData.md
@@ -0,0 +1,69 @@
+
+#### 从数据直接生成
+使用 `treeData` 把 JSON 数据直接生成树结构。
+
+
+
+#### Generate form tree data
+The tree structure can be populated using `treeData` property. This is a quick and easy way to provide the tree content.
+
+
+```vue
+
+
+
+ Child Node1 {{ value }}
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree-select/index.en-US.md b/antdv-demo/docs/tree-select/index.en-US.md
new file mode 100644
index 000000000..d803b0ff1
--- /dev/null
+++ b/antdv-demo/docs/tree-select/index.en-US.md
@@ -0,0 +1,76 @@
+## API
+
+### Tree props
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| allowClear | Whether allow clear | boolean | false | |
+| defaultValue | To set the initial selected treeNode(s). | string\|string\[] | - | |
+| disabled | Disabled or not | boolean | false | |
+| dropdownClassName | className of dropdown menu | string | - | |
+| dropdownMatchSelectWidth | Determine whether the dropdown menu and the select input are the same width | boolean | true | |
+| dropdownStyle | To set the style of the dropdown menu | object | - | |
+| filterTreeNode | Whether to filter treeNodes by input value. The value of `treeNodeFilterProp` is used for filtering by default. | boolean\|Function(inputValue: string, treeNode: TreeNode) (should return boolean) | Function | |
+| getPopupContainer | To set the container of the dropdown menu. The default is to create a `div` element in `body`, you can reset it to the scrolling area and make a relative reposition. | Function(triggerNode) | () => document.body | |
+| labelInValue | whether to embed label in value, turn the format of value from `string` to `{value: string, label: VNode, halfChecked: string[]}` | boolean | false | |
+| loadData | Load data asynchronously. | function(node) | - | |
+| maxTagCount | Max tag count to show | number | - | |
+| maxTagPlaceholder | Placeholder for not showing tags | slot/function(omittedValues) | - | |
+| multiple | Support multiple or not, will be `true` when enable `treeCheckable`. | boolean | false | |
+| placeholder | Placeholder of the select input | string\|slot | - | |
+| searchPlaceholder | Placeholder of the search input | string\|slot | - | |
+| searchValue(.sync) | work with `search` event to make search value controlled. | string | - | |
+| treeIcon | Shows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to `true` | boolean | false | |
+| showCheckedStrategy | The way show selected item in box. **Default:** just show child nodes. **`TreeSelect.SHOW_ALL`:** show all checked treeNodes (include parent treeNode). **`TreeSelect.SHOW_PARENT`:** show checked treeNodes (just show parent treeNode). | enum { TreeSelect.SHOW_ALL, TreeSelect.SHOW_PARENT, TreeSelect.SHOW_CHILD } | TreeSelect.SHOW_CHILD | |
+| showSearch | Whether to display a search input in the dropdown menu(valid only in the single mode) | boolean | false | |
+| size | To set the size of the select input, options: `large` `small` | string | 'default' | |
+| suffixIcon | The custom suffix icon | VNode \| slot | - | |
+| treeCheckable | Whether to show checkbox on the treeNodes | boolean | false | |
+| treeCheckStrictly | Whether to check nodes precisely (in the `checkable` mode), means parent and child nodes are not associated, and it will make `labelInValue` be true | boolean | false | |
+| treeData | Data of the treeNodes, manual construction work is no longer needed if this property has been set(ensure the Uniqueness of each value) | array\<{ value, title, children, \[disabled, disableCheckbox, selectable] }> | \[] | |
+| replaceFields | Replace the title,value, key and children fields in treeNode with the corresponding fields in treeData | object | { children:'children', title:'title', key:'key', value: 'value' } | | 1.6.1 |
+| treeDataSimpleMode | Enable simple mode of treeData. Changes the `treeData` schema to: \[{id:1, pId:0, value:'1', title:"test1",...},...] where pId is parent node's id). It is possible to replace the default `id` and `pId` keys by providing object to `treeDataSimpleMode` | false\|object\<{ id: string, pId: string, rootPId: null }> | false | |
+| treeDefaultExpandAll | Whether to expand all treeNodes by default | boolean | false | |
+| treeDefaultExpandedKeys | Default expanded treeNodes | string\[] \| number\[] | - | |
+| treeExpandedKeys(.sync) | Set expanded keys | string\[] \| number\[] | - | |
+| treeNodeFilterProp | Will be used for filtering if `filterTreeNode` returns true | string | 'value' | |
+| treeNodeLabelProp | Will render as content of select | string | 'title' | |
+| value(v-model) | To set the current selected treeNode(s). | string\|string\[] | - | |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| change | A callback function, can be executed when selected treeNodes or input value change | function(value, label, extra) |
+| search | A callback function, can be executed when the search input changes. | function(value: string) |
+| select | A callback function, can be executed when you select a treeNode. | function(value, node, extra) |
+| treeExpand | A callback function, can be executed when treeNode expanded | function(expandedKeys) |
+
+### Tree Methods
+
+| Name | Description |
+| ------- | ------------ |
+| blur() | remove focus |
+| focus() | get focus |
+
+### TreeNode props
+
+> We recommend you to use `treeData` rather than `TreeNode`, to avoid the trouble of manual construction.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| selectable | can be selected | boolean | true | |
+| checkable | When Tree is checkable, set TreeNode display Checkbox or not | boolean | - | 1.5.0 |
+| disableCheckbox | Disables the checkbox of the treeNode | boolean | false | |
+| disabled | Disabled or not | boolean | false | |
+| isLeaf | Leaf node or not | boolean | false | |
+| key | Required property, should be unique in the tree | string \| number | - | |
+| title | Content showed on the treeNodes | string\|slot | '---' | |
+| value | Will be treated as `treeNodeFilterProp` by default, should be unique in the tree | string | - | |
+| scopedSlots | When using treeNodes, you can use this property to configure the properties that support the slot, such as `scopedSlots: { title: 'XXX'}` | object | - | |
+
+## FAQ
+
+### How to get parent node in onChange?
+
+We don't provide this since performance consideration.
diff --git a/antdv-demo/docs/tree-select/index.zh-CN.md b/antdv-demo/docs/tree-select/index.zh-CN.md
new file mode 100644
index 000000000..e976a11d1
--- /dev/null
+++ b/antdv-demo/docs/tree-select/index.zh-CN.md
@@ -0,0 +1,70 @@
+## API
+
+### Tree props
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| allowClear | 显示清除按钮 | boolean | false | |
+| defaultValue | 指定默认选中的条目 | string/string\[] | - | |
+| disabled | 是否禁用 | boolean | false | |
+| dropdownClassName | 下拉菜单的 className 属性 | string | - | |
+| dropdownMatchSelectWidth | 下拉菜单和选择器同宽 | boolean | true | |
+| dropdownStyle | 下拉菜单的样式 | object | - | |
+| filterTreeNode | 是否根据输入项进行筛选,默认用 treeNodeFilterProp 的值作为要筛选的 TreeNode 的属性值 | boolean\|Function(inputValue: string, treeNode: TreeNode) (函数需要返回 bool 值) | Function | |
+| getPopupContainer | 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。 | Function(triggerNode) | () => document.body | |
+| labelInValue | 是否把每个选项的 label 包装到 value 中,会把 value 类型从 `string` 变为 `{value: string, label: VNode, halfChecked(treeCheckStrictly 时有效): string[] }` 的格式 | boolean | false | |
+| loadData | 异步加载数据 | function(node) | - | |
+| maxTagCount | 最多显示多少个 tag | number | - | |
+| maxTagPlaceholder | 隐藏 tag 时显示的内容 | slot/function(omittedValues) | - | |
+| multiple | 支持多选(当设置 treeCheckable 时自动变为 true) | boolean | false | |
+| placeholder | 选择框默认文字 | string\|slot | - | |
+| searchPlaceholder | 搜索框默认文字 | string\|slot | - | |
+| searchValue(.sync) | 搜索框的值,可以通过 `search` 事件获取用户输入 | string | - | |
+| treeIcon | 是否展示 TreeNode title 前的图标,没有默认样式,如设置为 true,需要自行定义图标相关样式 | boolean | false | |
+| showCheckedStrategy | 定义选中项回填的方式。`TreeSelect.SHOW_ALL`: 显示所有选中节点(包括父节点). `TreeSelect.SHOW_PARENT`: 只显示父节点(当父节点下所有子节点都选中时). 默认只显示子节点. | enum{TreeSelect.SHOW_ALL, TreeSelect.SHOW_PARENT, TreeSelect.SHOW_CHILD } | TreeSelect.SHOW_CHILD | |
+| showSearch | 在下拉中显示搜索框(仅在单选模式下生效) | boolean | false | |
+| size | 选择框大小,可选 `large` `small` | string | 'default' | |
+| suffixIcon | 自定义的选择框后缀图标 | VNode \| slot | - | |
+| treeCheckable | 显示 checkbox | boolean | false | |
+| treeCheckStrictly | checkable 状态下节点选择完全受控(父子节点选中状态不再关联),会使得 `labelInValue` 强制为 true | boolean | false | |
+| treeData | treeNodes 数据,如果设置则不需要手动构造 TreeNode 节点(value 在整个树范围内唯一) | array<{value, label, children, [disabled, disableCheckbox, selectable]}> | \[] | |
+| replaceFields | 替换 treeNode 中 title,value,key,children 字段为 treeData 中对应的字段 | object | {children:'children', title:'title', key:'key', value: 'value' } | | 1.6.1 |
+| treeDataSimpleMode | 使用简单格式的 treeData,具体设置参考可设置的类型 (此时 treeData 应变为这样的数据结构: \[{id:1, pId:0, value:'1', label:"test1",...},...], `pId` 是父节点的 id) | false\|Array<{ id: string, pId: string, rootPId: null }> | false | |
+| treeDefaultExpandAll | 默认展开所有树节点 | boolean | false | |
+| treeDefaultExpandedKeys | 默认展开的树节点 | string\[] \| number\[] | - | |
+| treeExpandedKeys(.sync) | 设置展开的树节点 | string\[] \| number\[] | - | |
+| treeNodeFilterProp | 输入项过滤对应的 treeNode 属性 | string | 'value' | |
+| treeNodeLabelProp | 作为显示的 prop 设置 | string | 'title' | |
+| value(v-model) | 指定当前选中的条目 | string/string\[] | - | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| ---------- | ---------------------- | ----------------------------- |
+| change | 选中树节点时调用此函数 | function(value, label, extra) |
+| search | 文本框值变化时回调 | function(value: string) |
+| select | 被选中时调用 | function(value, node, extra) |
+| treeExpand | 展开节点时调用 | function(expandedKeys) |
+
+### Tree 方法
+
+| 名称 | 描述 |
+| ------- | -------- |
+| blur() | 移除焦点 |
+| focus() | 获取焦点 |
+
+### TreeNode props
+
+> 建议使用 treeData 来代替 TreeNode,免去手工构造麻烦
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| selectable | 是否可选 | boolean | true | |
+| checkable | 当树为 checkable 时,设置独立节点是否展示 Checkbox | boolean | - | 1.5.0 |
+| disableCheckbox | 禁掉 checkbox | boolean | false | |
+| disabled | 是否禁用 | boolean | false | |
+| isLeaf | 是否是叶子节点 | boolean | false | |
+| key | 此项必须设置(其值在整个树范围内唯一) | string \| number | - | |
+| title | 树节点显示的内容 | string\|slot | '---' | |
+| value | 默认根据此属性值进行筛选(其值在整个树范围内唯一) | string | - | |
+| scopedSlots | 使用 treeData 时,可以通过该属性配置支持 slot 的属性,如 `scopedSlots: { title: 'XXX'}` | object | - | |
diff --git a/antdv-demo/docs/tree/demo/basic-controlled.md b/antdv-demo/docs/tree/demo/basic-controlled.md
new file mode 100644
index 000000000..6cdc999bd
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/basic-controlled.md
@@ -0,0 +1,103 @@
+
+#### 受控操作示例
+受控操作示例
+
+
+
+#### Controlled Tree
+Controlled mode lets parent nodes reflect the status of child nodes more intelligently.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/basic.md b/antdv-demo/docs/tree/demo/basic.md
new file mode 100644
index 000000000..c3a928e6d
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/basic.md
@@ -0,0 +1,65 @@
+
+#### 基本用法
+最简单的用法,展示可勾选,可选中,禁用,默认展开等功能。
+
+
+
+#### Basic
+The most basic usage, tell you how to use checkable, selectable, disabled, defaultExpandKeys, and etc.
+
+
+```vue
+
+
+ sss
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/customized-icon.md b/antdv-demo/docs/tree/demo/customized-icon.md
new file mode 100644
index 000000000..0905285d6
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/customized-icon.md
@@ -0,0 +1,53 @@
+
+#### 自定义图标
+可以针对不同的节点定制图标。
+
+
+
+#### Customize Icon
+You can customize icons for different nodes.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/directory.md b/antdv-demo/docs/tree/demo/directory.md
new file mode 100644
index 000000000..5289f4584
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/directory.md
@@ -0,0 +1,36 @@
+
+#### 目录
+内置的目录树,`multiple` 模式支持 `ctrl(Windows)` / `command(Mac)` 复选。
+
+
+
+#### Directory
+Built-in directory tree. `multiple` support `ctrl(Windows)` / `command(Mac)` selection.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/draggable.md b/antdv-demo/docs/tree/demo/draggable.md
new file mode 100644
index 000000000..2b2f0efe7
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/draggable.md
@@ -0,0 +1,123 @@
+
+#### 拖动示例
+将节点拖拽到其他节点内部或前后。
+
+
+
+#### draggable
+Drag treeNode to insert after the other treeNode or insert into the other parent TreeNode.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/dynamic.md b/antdv-demo/docs/tree/demo/dynamic.md
new file mode 100644
index 000000000..2761fc3f7
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/dynamic.md
@@ -0,0 +1,47 @@
+
+#### 异步数据加载
+点击展开节点,动态加载数据。
+
+
+
+#### load data asynchronously
+To load data asynchronously when click to expand a treeNode.
+
+
+```vue
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/index.vue b/antdv-demo/docs/tree/demo/index.vue
new file mode 100644
index 000000000..2e9aef6c0
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/index.vue
@@ -0,0 +1,62 @@
+
diff --git a/antdv-demo/docs/tree/demo/line.md b/antdv-demo/docs/tree/demo/line.md
new file mode 100644
index 000000000..d5c0ac22a
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/line.md
@@ -0,0 +1,78 @@
+
+#### 连接线
+带连接线的树。
+
+
+
+#### Tree With Line
+Tree With Line
+
+
+```vue
+
+
+
+ showLine:
+
+
+ showIcon:
+
+
+
+
+
+ parent 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/replaceFields.md b/antdv-demo/docs/tree/demo/replaceFields.md
new file mode 100644
index 000000000..ea85cd452
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/replaceFields.md
@@ -0,0 +1,68 @@
+
+#### 自定义TreeNode字段
+替换treeNode中 title,key,children字段为treeData中对应的字段
+
+
+
+#### ReplaceFields
+Replace the title,key and children fields in treeNode with the corresponding fields in treeData.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/search.md b/antdv-demo/docs/tree/demo/search.md
new file mode 100644
index 000000000..260e5fe26
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/search.md
@@ -0,0 +1,122 @@
+
+#### 可搜索
+可搜索的树。
+
+
+
+#### Searchable
+Searchable Tree.
+
+
+```vue
+
+
+
+
+
+
+ {{ title.substr(0, title.indexOf(searchValue)) }}
+ {{ searchValue }}
+ {{ title.substr(title.indexOf(searchValue) + searchValue.length) }}
+
+ {{ title }}
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/demo/switcher-icon.md b/antdv-demo/docs/tree/demo/switcher-icon.md
new file mode 100644
index 000000000..81d767a79
--- /dev/null
+++ b/antdv-demo/docs/tree/demo/switcher-icon.md
@@ -0,0 +1,40 @@
+
+#### 自定义展开/折叠图标
+自定义展开/折叠图标。
+
+
+
+#### Customize collapse/expand icon
+customize collapse/expand icon of tree node
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/tree/index.en-US.md b/antdv-demo/docs/tree/index.en-US.md
new file mode 100644
index 000000000..ced2344de
--- /dev/null
+++ b/antdv-demo/docs/tree/index.en-US.md
@@ -0,0 +1,78 @@
+## API
+
+### Tree props
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| treeData | treeNode of tree, please use `treeNodes` before v1.1.4 | array | - | |
+| replaceFields | Replace the title,key and children fields in treeNode with the corresponding fields in treeData | object | { children:'children', title:'title', key:'key' } | |
+| autoExpandParent | Whether to automatically expand a parent treeNode | boolean | true | |
+| blockNode | Whether treeNode fill remaining horizontal space | boolean | false | 1.5.0 |
+| checkable | Adds a `Checkbox` before the treeNodes | boolean | false | |
+| checkedKeys(v-model) | (Controlled) Specifies the keys of the checked treeNodes (PS: When this specifies the key of a treeNode which is also a parent treeNode, all the children treeNodes of will be checked; and vice versa, when it specifies the key of a treeNode which is a child treeNode, its parent treeNode will also be checked. When `checkable` and `checkStrictly` is true, its object has `checked` and `halfChecked` property. Regardless of whether the child or parent treeNode is checked, they won't impact each other. | string\[] \| number\[] \| {checked: string\[] \| number\[], halfChecked: string\[] \| number\[]} | \[] | |
+| checkStrictly | Check treeNode precisely; parent treeNode and children treeNodes are not associated | boolean | false | |
+| defaultCheckedKeys | Specifies the keys of the default checked treeNodes | string\[] \| number\[] | \[] | |
+| defaultExpandAll | Whether to expand all treeNodes by default | boolean | false | |
+| defaultExpandedKeys | Specify the keys of the default expanded treeNodes | string\[] \| number\[] | \[] | |
+| defaultExpandParent | auto expand parent treeNodes when init | bool | true | |
+| defaultSelectedKeys | Specifies the keys of the default selected treeNodes | string\[] \| number\[] | \[] | |
+| disabled | whether disabled the tree | bool | false | |
+| draggable | Specifies whether this Tree is draggable (IE > 8) | boolean | false | |
+| expandedKeys(.sync) | (Controlled) Specifies the keys of the expanded treeNodes | string\[] \| number\[] | \[] | |
+| filterTreeNode | Defines a function to filter (highlight) treeNodes. When the function returns `true`, the corresponding treeNode will be highlighted | function(node) | - | |
+| loadData | Load data asynchronously | function(node) | - | |
+| loadedKeys | (Controlled) Set loaded tree nodes. Need work with `loadData` | string\[] \| number\[] | \[] | |
+| multiple | Allows selecting multiple treeNodes | boolean | false | |
+| selectable | whether can be selected | boolean | true | |
+| selectedKeys(.sync) | (Controlled) Specifies the keys of the selected treeNodes | string\[] \| number\[] | - | |
+| showIcon | Shows the icon before a TreeNode's title. There is no default style; you must set a custom style for it if set to `true` | boolean | false | |
+| switcherIcon | customize collapse/expand icon of tree node | slot | - | |
+| showLine | Shows a connecting line | boolean | false | |
+
+### Events
+
+| Events Name | Description | Arguments |
+| --- | --- | --- |
+| check | Callback function for when the onCheck event occurs | function(checkedKeys, e:{checked: bool, checkedNodes, node, event}) |
+| dragend | Callback function for when the onDragEnd event occurs | function({event, node}) |
+| dragenter | Callback function for when the onDragEnter event occurs | function({event, node, expandedKeys}) |
+| dragleave | Callback function for when the onDragLeave event occurs | function({event, node}) |
+| dragover | Callback function for when the onDragOver event occurs | function({event, node}) |
+| dragstart | Callback function for when the onDragStart event occurs | function({event, node}) |
+| drop | Callback function for when the onDrop event occurs | function({event, node, dragNode, dragNodesKeys}) |
+| expand | Callback function for when a treeNode is expanded or collapsed | function(expandedKeys, {expanded: bool, node}) |
+| load | Callback function for when a treeNode is loaded | function(loadedKeys, {event, node}) |
+| rightClick | Callback function for when the user right clicks a treeNode | function({event, node}) |
+| select | Callback function for when the user clicks a treeNode | function(selectedKeys, e:{selected: bool, selectedNodes, node, event}) |
+
+### TreeNode props
+
+One of the Tree `treeNode` prop for describing the tree's node, TreeNode has the same API.
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| class | className | string | - | |
+| style | style | string\|object | - | |
+| checkable | When Tree is checkable, set TreeNode display Checkbox or not | boolean | - | 1.5.0 |
+| disableCheckbox | Disables the checkbox of the treeNode | boolean | false | |
+| disabled | Disables the treeNode | boolean | false | |
+| icon | customize icon. When you pass component, whose render will receive full TreeNode props as component props | slot\|slot-scope | - | |
+| isLeaf | Determines if this is a leaf node(effective when `loadData` is specified) | boolean | false | |
+| key | Used with (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys. P.S.: It must be unique in all of treeNodes of the tree! | string \| number | internal calculated position of treeNode | |
+| selectable | Set whether the treeNode can be selected | boolean | true | |
+| title | Title | string\|slot\|slot-scope | '---' | |
+| slots | When using treeNodes, you can use this property to configure the properties that support the slot, such as `slots: { title: 'XXX'}` | object | - | |
+| scopedSlots | When using treeNodes, you can use this property to configure the properties that support the slot-scope, such as `scopedSlots: { title: 'XXX'}` | object | - | |
+| on | When using treeNodes, you can use this property to configure the events, such as `on: { click: () => {}}` | object | - | |
+
+### DirectoryTree props
+
+| Property | Description | Type | Default |
+| ------------ | ------------------------------------------------------------- | ------ | ------- |
+| expandAction | Directory open logic, optional `false` `'click'` `'dblclick'` | string | click |
+
+## FAQ
+
+### How to hide file icon when use showLine?
+
+File icon realize by using switcherIcon. You can overwrite the style to hide it
diff --git a/antdv-demo/docs/tree/index.zh-CN.md b/antdv-demo/docs/tree/index.zh-CN.md
new file mode 100644
index 000000000..e4a7a0867
--- /dev/null
+++ b/antdv-demo/docs/tree/index.zh-CN.md
@@ -0,0 +1,78 @@
+## API
+
+### Tree props
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| blockNode | 是否节点占据一行 | boolean | false | 1.5.0 |
+| treeData | treeNodes 数据,如果设置则不需要手动构造 TreeNode 节点(key 在整个树范围内唯一) | array\<{key, title, children, \[disabled, selectable]}> | -- | |
+| replaceFields | 替换 treeNode 中 title,key,children 字段为 treeData 中对应的字段 | object | {children:'children', title:'title', key:'key' } | |
+| autoExpandParent | 是否自动展开父节点 | boolean | true | |
+| checkable | 节点前添加 Checkbox 复选框 | boolean | false | |
+| checkedKeys(v-model) | (受控)选中复选框的树节点(注意:父子节点有关联,如果传入父节点 key,则子节点自动选中;相应当子节点 key 都传入,父节点也自动选中。当设置`checkable`和`checkStrictly`,它是一个有`checked`和`halfChecked`属性的对象,并且父子节点的选中与否不再关联 | string\[] \| number\[] \| {checked: string\[] \| number\[], halfChecked: string\[] \| number\[]} | \[] | |
+| checkStrictly | checkable 状态下节点选择完全受控(父子节点选中状态不再关联) | boolean | false | |
+| defaultCheckedKeys | 默认选中复选框的树节点 | string\[] \| number\[] | \[] | |
+| defaultExpandAll | 默认展开所有树节点 | boolean | false | |
+| defaultExpandedKeys | 默认展开指定的树节点 | string\[] \| number\[] | \[] | |
+| defaultExpandParent | 默认展开父节点 | bool | true | |
+| defaultSelectedKeys | 默认选中的树节点 | string\[] \| number\[] | \[] | |
+| disabled | 将树禁用 | bool | false | |
+| draggable | 设置节点可拖拽 | boolean | false | |
+| expandedKeys(.sync) | (受控)展开指定的树节点 | string\[] \| number\[] | \[] | |
+| filterTreeNode | 按需筛选树节点(高亮),返回 true | function(node) | - | |
+| loadData | 异步加载数据 | function(node) | - | |
+| loadedKeys | (受控)已经加载的节点,需要配合 `loadData` 使用 | string\[] \| number\[] | \[] | |
+| multiple | 支持点选多个节点(节点本身) | boolean | false | |
+| selectable | 是否可选中 | boolean | true | | |
+| selectedKeys(.sync) | (受控)设置选中的树节点 | string\[] \| number\[] | - | |
+| showIcon | 是否展示 TreeNode title 前的图标,没有默认样式,如设置为 true,需要自行定义图标相关样式 | boolean | false | |
+| switcherIcon | 自定义树节点的展开/折叠图标 | slot | - | |
+| showLine | 是否展示连接线 | boolean | false | |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 |
+| --- | --- | --- |
+| check | 点击复选框触发 | function(checkedKeys, e:{checked: bool, checkedNodes, node, event}) |
+| dragend | dragend 触发时调用 | function({event, node}) |
+| dragenter | dragenter 触发时调用 | function({event, node, expandedKeys}) |
+| dragleave | dragleave 触发时调用 | function({event, node}) |
+| dragover | dragover 触发时调用 | function({event, node}) |
+| dragstart | 开始拖拽时调用 | function({event, node}) |
+| drop | drop 触发时调用 | function({event, node, dragNode, dragNodesKeys}) |
+| expand | 展开/收起节点时触发 | function(expandedKeys, {expanded: bool, node}) |
+| load | 节点加载完毕时触发 | function(loadedKeys, {event, node}) |
+| rightClick | 响应右键点击 | function({event, node}) |
+| select | 点击树节点触发 | function(selectedKeys, e:{selected: bool, selectedNodes, node, event}) |
+
+### TreeNode props
+
+结点描述数据对象,是 treeNodes 中的一项,TreeNode 使用相同的 API。
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| class | 节点的 class | string | - | |
+| style | 节点的 style | string\|object | - | |
+| checkable | 当树为 checkable 时,设置独立节点是否展示 Checkbox | boolean | - | 1.5.0 |
+| disableCheckbox | 禁掉 checkbox | boolean | false | |
+| disabled | 禁掉响应 | boolean | false | |
+| icon | 自定义图标。可接收组件,props 为当前节点 props | slot\|slot-scope | - | |
+| isLeaf | 设置为叶子节点(设置了`loadData`时有效) | boolean | false | |
+| key | 被树的 (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys 属性所用。注意:整个树范围内的所有节点的 key 值不能重复! | string \| number | 内部计算出的节点位置 | |
+| selectable | 设置节点是否可被选中 | boolean | true | |
+| title | 标题 | string\|slot\|slot-scope | '---' | |
+| slots | 使用 treeNodes 时,可以通过该属性配置支持 slot 的属性,如 `slots: { title: 'XXX'}` | object | - | |
+| scopedSlots | 使用 columns 时,可以通过该属性配置支持 slot-scope 的属性,如 `scopedSlots: { title: 'XXX'}` | object | - | |
+| on | 事件对象,仅在 treeNodes 使用方式中生效,如`{click: () => {}}` | object | '---' | |
+
+### DirectoryTree props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ------------ | ------------------------------------------------- | ------ | ------ |
+| expandAction | 目录展开逻辑,可选 `false` `'click'` `'dblclick'` | string | click |
+
+## FAQ
+
+### 在 showLine 时,如何隐藏子节点图标?
+
+文件图标通过 switcherIcon 来实现,如果不需要你可以覆盖对应的样式
diff --git a/antdv-demo/docs/upload/demo/avatar.md b/antdv-demo/docs/upload/demo/avatar.md
new file mode 100644
index 000000000..e0802cb89
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/avatar.md
@@ -0,0 +1,89 @@
+
+#### 用户头像
+点击上传用户头像,并使用 `beforeUpload` 限制用户上传的图片格式和大小。
+`beforeUpload` 的返回值可以是一个 Promise 以支持异步处理,如服务端校验等
+
+
+
+#### Avatar
+Click to upload user's avatar, and validate size and format of picture with `beforeUpload`.
+The return value of function `beforeUpload` can be a Promise to check asynchronously.
+
+
+```vue
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/basic copy 3.md b/antdv-demo/docs/upload/demo/basic copy 3.md
new file mode 100644
index 000000000..da17378f8
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/basic copy 3.md
@@ -0,0 +1,46 @@
+
+#### 点击上传
+经典款式,用户点击按钮弹出文件选择框。
+
+
+
+#### Upload by clicking
+Classic mode. File selection dialog pops up when upload button is clicked.
+
+
+```vue
+
+
+ Click to Upload
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/basic.md b/antdv-demo/docs/upload/demo/basic.md
new file mode 100644
index 000000000..da17378f8
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/basic.md
@@ -0,0 +1,46 @@
+
+#### 点击上传
+经典款式,用户点击按钮弹出文件选择框。
+
+
+
+#### Upload by clicking
+Classic mode. File selection dialog pops up when upload button is clicked.
+
+
+```vue
+
+
+ Click to Upload
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/defaultFileList.md b/antdv-demo/docs/upload/demo/defaultFileList.md
new file mode 100644
index 000000000..f36a4408e
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/defaultFileList.md
@@ -0,0 +1,57 @@
+
+#### 已上传的文件列表
+使用 `defaultFileList` 设置已上传的内容。
+
+
+
+#### Default Files
+Use `defaultFileList` for uploaded files when page init.
+
+
+```vue
+
+
+ Upload
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/directory.md b/antdv-demo/docs/upload/demo/directory.md
new file mode 100644
index 000000000..40a20d449
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/directory.md
@@ -0,0 +1,17 @@
+
+#### 文件夹上传
+支持上传一个文件夹里的所有文件。
+
+
+
+#### Upload directory
+You can select and upload a whole directory.
+
+
+```vue
+
+
+ Upload Directory
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/drag.md b/antdv-demo/docs/upload/demo/drag.md
new file mode 100644
index 000000000..6ada6be2f
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/drag.md
@@ -0,0 +1,52 @@
+
+#### 拖拽上传
+把文件拖入指定区域,完成上传,同样支持点击上传。
+设置 `multiple` 后,在 `IE10+` 可以一次上传多个文件。
+
+
+
+#### Drag and Drop
+Classic mode. File selection dialog pops up when upload button is clicked.
+
+
+```vue
+
+
+
+
+
+
+ Click or drag file to this area to upload
+
+
+ Support for a single or bulk upload. Strictly prohibit from uploading company data or other
+ band files
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/fileList.md b/antdv-demo/docs/upload/demo/fileList.md
new file mode 100644
index 000000000..ad02e771b
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/fileList.md
@@ -0,0 +1,62 @@
+
+#### 完全控制的上传列表
+使用 `fileList` 对列表进行完全控制,可以实现各种自定义功能,以下演示三种情况:
+1) 上传列表数量的限制。
+2) 读取远程路径并显示链接。
+
+
+
+#### Complete control over file list
+You can gain full control over filelist by configuring `fileList`. You can accomplish all kinds of customed functions. The following shows three circumstances:
+1) limit the number of uploaded files.
+2) read from response and show file link.
+
+
+```vue
+
+
+ Upload
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/index.vue b/antdv-demo/docs/upload/demo/index.vue
new file mode 100644
index 000000000..3afcdd216
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/index.vue
@@ -0,0 +1,71 @@
+
diff --git a/antdv-demo/docs/upload/demo/picture-card.md b/antdv-demo/docs/upload/demo/picture-card.md
new file mode 100644
index 000000000..38ef618df
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/picture-card.md
@@ -0,0 +1,109 @@
+
+#### 照片墙
+用户可以上传图片并在列表中显示缩略图。当上传照片数到达限制后,上传按钮消失。
+
+
+
+#### Pictures Wall
+After users upload picture, the thumbnail will be shown in list. The upload button will disappear when count meets limitation.
+
+
+```vue
+
+
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/picture-style.md b/antdv-demo/docs/upload/demo/picture-style.md
new file mode 100644
index 000000000..a5434bf26
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/picture-style.md
@@ -0,0 +1,72 @@
+
+#### 图片列表样式
+上传文件为图片,可展示本地缩略图。`IE8/9` 不支持浏览器本地缩略图展示([Ref](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL)),可以写 `thumbUrl` 属性来代替。
+
+
+
+#### Pictures with list style
+If uploaded file is a picture, the thumbnail can be shown. `IE8/9` do not support local thumbnail show. Please use `thumbUrl` instead.
+
+
+```vue
+
+
+
+ upload
+
+
+
+
+ upload
+
+
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/preview-file.md b/antdv-demo/docs/upload/demo/preview-file.md
new file mode 100644
index 000000000..1d183f42c
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/preview-file.md
@@ -0,0 +1,39 @@
+
+#### 自定义预览
+自定义本地预览,用于处理非图片格式文件(例如视频文件)。
+
+
+
+#### Customize preview file
+Customize local preview. Can handle with non-image format files such as video.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/transform-file.md b/antdv-demo/docs/upload/demo/transform-file.md
new file mode 100644
index 000000000..0e9c5e496
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/transform-file.md
@@ -0,0 +1,47 @@
+
+#### 上传前转换文件
+使用 `transformFile` 转换上传的文件(例如添加水印)。
+
+
+
+#### Transform file before request
+Use `transformFile` for transform file before request such as add a watermark.
+
+
+```vue
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/demo/upload-manually.md b/antdv-demo/docs/upload/demo/upload-manually.md
new file mode 100644
index 000000000..8b57fec86
--- /dev/null
+++ b/antdv-demo/docs/upload/demo/upload-manually.md
@@ -0,0 +1,76 @@
+
+#### 手动上传
+`beforeUpload` 返回 `false` 后,手动上传文件。
+
+
+
+#### Upload manually
+Upload files manually after `beforeUpload` returns `false`.
+
+
+```vue
+
+
+
+ Select File
+
+
+ {{ uploading ? 'Uploading' : 'Start Upload' }}
+
+
+
+
+```
diff --git a/antdv-demo/docs/upload/index.en-US.md b/antdv-demo/docs/upload/index.en-US.md
new file mode 100644
index 000000000..76f42b0d6
--- /dev/null
+++ b/antdv-demo/docs/upload/index.en-US.md
@@ -0,0 +1,64 @@
+## API
+
+| Property | Description | Type | Default | Version |
+| --- | --- | --- | --- | --- |
+| accept | File types that can be accepted. See [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept) | string | - | |
+| action | Uploading URL | string\|(file) => `Promise` | - | |
+| method | http method of upload request | string | 'post' | 1.5.0 |
+| directory | support upload whole directory ([caniuse](https://caniuse.com/#feat=input-file-directory)) | boolean | false | |
+| beforeUpload | Hook function which will be executed before uploading. Uploading will be stopped with `false` or a rejected Promise returned. **Warning:this function is not supported in IE9**。 | (file, fileList) => `boolean | Promise` | - | |
+| customRequest | override for the default xhr behavior allowing for additional customization and ability to implement your own XMLHttpRequest | Function | - | |
+| data | Uploading params or function which can return uploading params. | object\|function(file) | - | |
+| defaultFileList | Default list of files that have been uploaded. | object\[] | - | |
+| disabled | disable upload button | boolean | false | |
+| fileList | List of files that have been uploaded (controlled). Here is a common issue [#2423](https://github.com/ant-design/ant-design/issues/2423) when using it | object\[] | - | |
+| headers | Set request headers, valid above IE10. | object | - | |
+| listType | Built-in stylesheets, support for three types: `text`, `picture` or `picture-card` | string | 'text' | |
+| multiple | Whether to support selected multiple file. `IE10+` supported. You can select multiple files with CTRL holding down while multiple is set to be true | boolean | false | |
+| name | The name of uploading file | string | 'file' | |
+| previewFile | Customize preview file logic | (file: File \| Blob) => Promise | - | 1.5.0 |
+| showUploadList | Whether to show default upload list, could be an object to specify `showPreviewIcon` and `showRemoveIcon` individually | Boolean or { showPreviewIcon?: boolean, showRemoveIcon?: boolean } | true | |
+| supportServerRender | Need to be turned on while the server side is rendering. | boolean | false | |
+| withCredentials | ajax upload with cookie sent | boolean | false | |
+| openFileDialogOnClick | click open file dialog | boolean | true | |
+| remove | A callback function, will be executed when removing file button is clicked, remove event will be prevented when return value is `false` or a Promise which resolve(false) or reject. | Function(file): `boolean | Promise` | - | |
+| transformFile | Customize transform file before request | Function(file): `string | Blob | File | Promise` | - | 1.5.0 |
+
+### events
+
+| Events Name | Description | Arguments | Version |
+| --- | --- | --- | --- |
+| change | A callback function, can be executed when uploading state is changing. See [change](#change) | Function | - | |
+| preview | A callback function, will be executed when file link or preview icon is clicked. | Function(file) | - | |
+| download | Click the method to download the file, pass the method to perform the method logic, do not pass the default jump to the new TAB. | Function(file): void | Jump to new TAB | 1.5.0 |
+| reject | A callback function, will be executed when drop files is not accept. | Function(fileList) | - | |
+
+### change
+
+> The function will be called when uploading is in progress, completed or failed
+
+When uploading state change, it returns:
+
+```js
+{
+ file: { /* ... */ },
+ fileList: [ /* ... */ ],
+ event: { /* ... */ },
+}
+```
+
+1. `file` File object for the current operation.
+
+ ```js
+ {
+ uid: 'uid', // unique identifier, negative is recommend, to prevent interference with internal generated id
+ name: 'xx.png', // file name
+ status: 'done', // options:uploading, done, error, removed
+ response: '{"status": "success"}', // response from server
+ linkProps: '{"download": "image"}', // additional html props of file link
+ xhr: 'XMLHttpRequest{ ... }', // XMLHttpRequest Header
+ }
+ ```
+
+2. `fileList` current list of files
+3. `event` response from server, including uploading progress, supported by advanced browsers.
diff --git a/antdv-demo/docs/upload/index.zh-CN.md b/antdv-demo/docs/upload/index.zh-CN.md
new file mode 100644
index 000000000..7d4c7d670
--- /dev/null
+++ b/antdv-demo/docs/upload/index.zh-CN.md
@@ -0,0 +1,64 @@
+## API
+
+| 参数 | 说明 | 类型 | 默认值 | 版本 |
+| --- | --- | --- | --- | --- |
+| accept | 接受上传的文件类型, 详见 [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept) | string | 无 | |
+| action | 上传的地址 | string\|(file) => `Promise` | 无 | |
+| method | 上传请求的 http method | string | 'post' | 1.5.0 |
+| directory | 支持上传文件夹([caniuse](https://caniuse.com/#feat=input-file-directory)) | boolean | false | |
+| beforeUpload | 上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传。支持返回一个 Promise 对象,Promise 对象 reject 时则停止上传,resolve 时开始上传( resolve 传入 `File` 或 `Blob` 对象则上传 resolve 传入对象)。**注意:IE9 不支持该方法**。 | (file, fileList) => `boolean | Promise` | 无 | |
+| customRequest | 通过覆盖默认的上传行为,可以自定义自己的上传实现 | Function | 无 | |
+| data | 上传所需参数或返回上传参数的方法 | object\|(file) => object | 无 | |
+| defaultFileList | 默认已经上传的文件列表 | object\[] | 无 | |
+| disabled | 是否禁用 | boolean | false | |
+| fileList | 已经上传的文件列表(受控) | object\[] | 无 | |
+| headers | 设置上传的请求头部,IE10 以上有效 | object | 无 | |
+| listType | 上传列表的内建样式,支持三种基本样式 `text`, `picture` 和 `picture-card` | string | 'text' | |
+| multiple | 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件。 | boolean | false | |
+| name | 发到后台的文件参数名 | string | 'file' | |
+| previewFile | 自定义文件预览逻辑 | (file: File \| Blob) => Promise | 无 | 1.5.0 |
+| showUploadList | 是否展示 uploadList, 可设为一个对象,用于单独设定 showPreviewIcon 和 showRemoveIcon | Boolean or { showPreviewIcon?: boolean, showRemoveIcon?: boolean } | true | |
+| supportServerRender | 服务端渲染时需要打开这个 | boolean | false | |
+| withCredentials | 上传请求时是否携带 cookie | boolean | false | |
+| openFileDialogOnClick | 点击打开文件对话框 | boolean | true | |
+| remove | 点击移除文件时的回调,返回值为 false 时不移除。支持返回一个 Promise 对象,Promise 对象 resolve(false) 或 reject 时不移除。 | Function(file): `boolean | Promise` | 无 | |
+| transformFile | 在上传之前转换文件。支持返回一个 Promise 对象 | Function(file): `string | Blob | File | Promise` | 无 | 1.5.0 |
+
+### 事件
+
+| 事件名称 | 说明 | 回调参数 | 版本 |
+| --- | --- | --- | --- |
+| change | 上传文件改变时的状态,详见 [change](#change) | Function | 无 | |
+| preview | 点击文件链接或预览图标时的回调 | Function(file) | 无 | |
+| download | 点击下载文件时的回调,如果没有指定,则默认跳转到文件 url 对应的标签页。 | Function(file): void | 跳转新标签页 | 1.5.0 |
+| reject | 拖拽文件不符合 accept 类型时的回调 | Function(fileList) | 无 | |
+
+### change
+
+> 上传中、完成、失败都会调用这个函数。
+
+文件状态改变的回调,返回为:
+
+```js
+{
+ file: { /* ... */ },
+ fileList: [ /* ... */ ],
+ event: { /* ... */ },
+}
+```
+
+1. `file` 当前操作的文件对象。
+
+ ```js
+ {
+ uid: 'uid', // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
+ name: 'xx.png', // 文件名
+ status: 'done', // 状态有:uploading done error removed
+ response: '{"status": "success"}', // 服务端响应内容
+ linkProps: '{"download": "image"}', // 下载链接额外的 HTML 属性
+ xhr: 'XMLHttpRequest{ ... }', // XMLHttpRequest Header
+ }
+ ```
+
+2. `fileList` 当前的文件列表。
+3. `event` 上传中的服务端响应内容,包含了上传进度等信息,高级浏览器支持。
diff --git a/antdv-demo/layouts/BaseLayout.vue b/antdv-demo/layouts/BaseLayout.vue
new file mode 100644
index 000000000..516f575de
--- /dev/null
+++ b/antdv-demo/layouts/BaseLayout.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/antdv-demo/layouts/UserLayout.less b/antdv-demo/layouts/UserLayout.less
new file mode 100755
index 000000000..93be8a9fb
--- /dev/null
+++ b/antdv-demo/layouts/UserLayout.less
@@ -0,0 +1,71 @@
+@import '../../components/style/themes/default.less';
+
+.container {
+ display: flex;
+ flex-direction: column;
+ height: 100vh;
+ overflow: auto;
+ background: @layout-body-background;
+}
+
+.lang {
+ width: 100%;
+ height: 40px;
+ line-height: 44px;
+ text-align: right;
+ :global(.ant-dropdown-trigger) {
+ margin-right: 24px;
+ }
+}
+
+.content {
+ flex: 1;
+ padding: 32px 0;
+}
+
+@media (min-width: @screen-md-min) {
+ .container {
+ background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
+ background-repeat: no-repeat;
+ background-position: center 110px;
+ background-size: 100%;
+ }
+
+ .content {
+ padding: 32px 0 24px 0;
+ }
+}
+
+.top {
+ text-align: center;
+}
+
+.header {
+ height: 44px;
+ line-height: 44px;
+ a {
+ text-decoration: none;
+ }
+}
+
+.logo {
+ height: 44px;
+ margin-right: 16px;
+ vertical-align: top;
+}
+
+.title {
+ position: relative;
+ top: 2px;
+ color: @heading-color;
+ font-weight: 600;
+ font-size: 33px;
+ font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
+}
+
+.desc {
+ margin-top: 12px;
+ margin-bottom: 40px;
+ color: @text-color-secondary;
+ font-size: @font-size-base;
+}
diff --git a/antdv-demo/layouts/UserLayout.vue b/antdv-demo/layouts/UserLayout.vue
new file mode 100644
index 000000000..38a14a075
--- /dev/null
+++ b/antdv-demo/layouts/UserLayout.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
diff --git a/antdv-demo/locale/en-US.js b/antdv-demo/locale/en-US.js
new file mode 100644
index 000000000..d38c0b623
--- /dev/null
+++ b/antdv-demo/locale/en-US.js
@@ -0,0 +1,28 @@
+import login from '../views/user/login/locales/en-US';
+import register from '../views/user/register/locales/en-US';
+import registerResult from '../views/user/register-result/locales/en-US';
+import theme from '../theme/en-US';
+export default {
+ ...theme,
+ 'navBar.lang': 'Languages',
+ 'layout.user.link.help': 'Help',
+ 'layout.user.link.privacy': 'Privacy',
+ 'layout.user.link.terms': 'Terms',
+ 'app.preview.down.block': 'Download this page to your local project',
+ 'app.welcome.link.fetch-blocks': 'Get all block',
+ 'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development',
+ 'app.docs.components.icon.search.placeholder': 'Search icon here, click icon to copy code',
+ 'app.docs.components.icon.outlined': 'Outlined',
+ 'app.docs.components.icon.filled': 'Filled',
+ 'app.docs.components.icon.two-tone': 'Two Tone',
+ 'app.docs.components.icon.category.direction': 'Directional Icons',
+ 'app.docs.components.icon.category.suggestion': 'Suggested Icons',
+ 'app.docs.components.icon.category.editor': 'Editor Icons',
+ 'app.docs.components.icon.category.data': 'Data Icons',
+ 'app.docs.components.icon.category.other': 'Application Icons',
+ 'app.docs.components.icon.category.logo': 'Brand and Logos',
+ 'app.docs.components.icon.pic-searcher.intro': 'AI Search by image is online, welcome to use! 🎉',
+ ...login,
+ ...register,
+ ...registerResult,
+};
diff --git a/antdv-demo/locale/zh-CN.js b/antdv-demo/locale/zh-CN.js
new file mode 100644
index 000000000..897bf4d4b
--- /dev/null
+++ b/antdv-demo/locale/zh-CN.js
@@ -0,0 +1,33 @@
+import login from '../views/user/login/locales/zh-CN';
+import register from '../views/user/register/locales/zh-CN';
+import registerResult from '../views/user/register-result/locales/zh-CN';
+import theme from '../theme/zh-CN';
+
+export default {
+ ...theme,
+ 'navBar.lang': '语言',
+ 'layout.user.link.help': '帮助',
+ 'layout.user.link.privacy': '隐私',
+ 'layout.user.link.terms': '条款',
+ 'app.preview.down.block': '下载此页面到本地项目',
+ 'app.welcome.link.fetch-blocks': '获取全部区块',
+ 'app.welcome.link.block-list': '基于 block 开发,快速构建标准页面',
+ 'app.docs.components.icon.search.placeholder': '在此搜索图标,点击图标可复制代码',
+ 'app.docs.components.icon.outlined': '线框风格',
+ 'app.docs.components.icon.filled': '实底风格',
+ 'app.docs.components.icon.two-tone': '双色风格',
+ 'app.docs.components.icon.category.direction': '方向性图标',
+ 'app.docs.components.icon.category.suggestion': '提示建议性图标',
+ 'app.docs.components.icon.category.editor': '编辑类图标',
+ 'app.docs.components.icon.category.data': '数据类图标',
+ 'app.docs.components.icon.category.other': '网站通用图标',
+ 'app.docs.components.icon.category.logo': '品牌和标识',
+ 'app.docs.components.icon.pic-searcher.intro': 'AI 截图搜索上线了,快来体验吧!🎉',
+ 'app.docs.components.icon.pic-searcher.title': '上传图片搜索图标',
+ 'app.docs.components.icon.pic-searcher.upload-text': '点击/拖拽/粘贴上传图片',
+ 'app.docs.components.icon.pic-searcher.upload-hint':
+ '我们会通过上传的图片进行匹配,得到最相似的图标',
+ ...login,
+ ...register,
+ ...registerResult,
+};
diff --git a/antdv-demo/mock/user.js b/antdv-demo/mock/user.js
new file mode 100644
index 000000000..345cf155d
--- /dev/null
+++ b/antdv-demo/mock/user.js
@@ -0,0 +1,52 @@
+// 代码中会兼容本地 service mock 以及部署站点的静态数据
+module.exports = {
+ // 支持值为 Object 和 Array
+ 'GET /api/currentUser': {
+ name: 'Serati Ma',
+ avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
+ userid: '00000001',
+ email: 'antdesign@alipay.com',
+ signature: '海纳百川,有容乃大',
+ title: '交互专家',
+ group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
+ },
+ // GET POST 可省略
+ 'GET /api/users': [
+ {
+ key: '1',
+ name: 'John Brown',
+ age: 32,
+ address: 'New York No. 1 Lake Park',
+ },
+ {
+ key: '2',
+ name: 'Jim Green',
+ age: 42,
+ address: 'London No. 1 Lake Park',
+ },
+ {
+ key: '3',
+ name: 'Joe Black',
+ age: 32,
+ address: 'Sidney No. 1 Lake Park',
+ },
+ ],
+ 'POST /api/login/account': (req, res) => {
+ const { password, userName, type } = req.body;
+ if (password === 'antdv' && userName === 'admin') {
+ res.send({ status: 'ok', type });
+ return;
+ }
+ if (password === 'antdv' && userName === 'user') {
+ res.send({ status: 'ok', type });
+ return;
+ }
+ res.send({ status: 'error', type });
+ },
+ 'GET /api/login/captcha': (req, res) => {
+ return res.json('captcha-xxx');
+ },
+ 'POST /api/register': (req, res) => {
+ res.send({ status: 'ok' });
+ },
+};
diff --git a/antdv-demo/package.json b/antdv-demo/package.json
new file mode 100644
index 000000000..75c3b2e5e
--- /dev/null
+++ b/antdv-demo/package.json
@@ -0,0 +1,173 @@
+{
+ "name": "ant-design-vue-site",
+ "title": "Ant Design Vue",
+ "description": "An enterprise-class UI design language and Vue-based implementation",
+ "scripts": {
+ "dev": "node --max_old_space_size=4096 build/dev.js",
+ "start": "cross-env PORT=3001 NODE_ENV=development node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js --config build/webpack.dev.conf.js",
+ "site": "node --max_old_space_size=4096 scripts/run.js _site",
+ "copy": "node scripts/run.js copy-html",
+ "prettier": "prettier -c --write '**/*'",
+ "pretty-quick": "pretty-quick"
+ },
+ "peerDependencies": {
+ "vue": ">=2.6.0",
+ "vue-template-compiler": ">=2.6.0"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^8.0.0",
+ "@commitlint/config-conventional": "^8.0.0",
+ "@octokit/rest": "^16.0.0",
+ "@vue/cli-plugin-eslint": "^4.0.0",
+ "@vue/server-test-utils": "1.0.0-beta.16",
+ "@vue/test-utils": "1.0.0-beta.16",
+ "acorn": "^7.0.0",
+ "autoprefixer": "^9.6.0",
+ "axios": "^0.19.0",
+ "babel-cli": "^6.26.0",
+ "babel-core": "^6.26.0",
+ "babel-eslint": "^10.0.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.3",
+ "babel-jest": "^23.6.0",
+ "babel-loader": "^7.1.2",
+ "babel-plugin-import": "^1.1.1",
+ "babel-plugin-inline-import-data-uri": "^1.0.1",
+ "babel-plugin-istanbul": "^6.0.0",
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-decorators": "^6.24.1",
+ "babel-plugin-transform-decorators-legacy": "^1.3.4",
+ "babel-plugin-transform-es3-member-expression-literals": "^6.22.0",
+ "babel-plugin-transform-es3-property-literals": "^6.22.0",
+ "babel-plugin-transform-object-assign": "^6.22.0",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-plugin-transform-runtime": "~6.23.0",
+ "babel-plugin-transform-vue-jsx": "^3.7.0",
+ "babel-polyfill": "^6.26.0",
+ "babel-preset-env": "^1.6.1",
+ "case-sensitive-paths-webpack-plugin": "^2.1.2",
+ "chalk": "^3.0.0",
+ "cheerio": "^1.0.0-rc.2",
+ "codecov": "^3.0.0",
+ "colorful": "^2.1.0",
+ "commander": "^4.0.0",
+ "compare-versions": "^3.3.0",
+ "cross-env": "^7.0.0",
+ "css-loader": "^3.4.2",
+ "deep-assign": "^2.0.0",
+ "docsearch.js": "^2.6.3",
+ "enquire-js": "^0.2.1",
+ "eslint": "^6.0.0",
+ "eslint-config-prettier": "^6.0.0",
+ "eslint-plugin-html": "^6.0.0",
+ "eslint-plugin-markdown": "^2.0.0-alpha.0",
+ "eslint-plugin-vue": "^6.0.0",
+ "fetch-jsonp": "^1.1.3",
+ "file-loader": "^5.1.0",
+ "fs-extra": "^8.0.0",
+ "glob": "^7.1.2",
+ "gulp": "^4.0.1",
+ "gulp-babel": "^7.0.0",
+ "gulp-strip-code": "^0.1.4",
+ "hard-source-webpack-plugin": "^0.13.1",
+ "html-webpack-plugin": "^3.2.0",
+ "husky": "^4.0.0",
+ "istanbul-instrumenter-loader": "^3.0.0",
+ "jest": "^24.0.0",
+ "jest-serializer-vue": "^2.0.0",
+ "jest-transform-stub": "^2.0.0",
+ "js-base64": "^2.4.8",
+ "json-templater": "^1.2.0",
+ "jsonp": "^0.2.1",
+ "less-loader": "^6.0.0",
+ "less-plugin-npm-import": "^2.1.0",
+ "lint-staged": "^10.0.0",
+ "markdown-it": "^10.0.0",
+ "markdown-it-anchor": "^5.0.0",
+ "marked": "0.3.18",
+ "merge2": "^1.2.1",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "mockdate": "^2.0.2",
+ "nprogress": "^0.2.0",
+ "optimize-css-assets-webpack-plugin": "^5.0.3",
+ "postcss": "^7.0.6",
+ "postcss-loader": "^3.0.0",
+ "prettier": "^1.18.2",
+ "pretty-quick": "^2.0.0",
+ "querystring": "^0.2.0",
+ "raw-loader": "^4.0.0",
+ "reqwest": "^2.0.5",
+ "rimraf": "^3.0.0",
+ "rucksack-css": "^1.0.2",
+ "selenium-server": "^3.0.1",
+ "semver": "^7.0.0",
+ "style-loader": "^1.0.0",
+ "stylelint": "^13.0.0",
+ "stylelint-config-prettier": "^8.0.0",
+ "stylelint-config-standard": "^19.0.0",
+ "terser-webpack-plugin": "^3.0.3",
+ "through2": "^3.0.0",
+ "umi-mock-middleware": "^1.0.0",
+ "url-loader": "^3.0.0",
+ "vue": "^2.6.11",
+ "vue-antd-md-loader": "^1.2.0",
+ "vue-clipboard2": "0.3.1",
+ "vue-draggable-resizable": "^2.1.0",
+ "vue-eslint-parser": "^7.0.0",
+ "vue-i18n": "^8.15.5",
+ "vue-infinite-scroll": "^2.0.2",
+ "vue-jest": "^2.5.0",
+ "vue-loader": "^15.6.2",
+ "vue-router": "^3.0.1",
+ "vue-server-renderer": "^2.6.11",
+ "vue-style-loader": "^4.1.2",
+ "vue-template-compiler": "^2.6.11",
+ "vue-virtual-scroller": "^1.0.0",
+ "vuex": "^3.1.3",
+ "webpack": "^4.28.4",
+ "webpack-cli": "^3.2.1",
+ "webpack-dev-server": "^3.1.14",
+ "webpack-merge": "^4.1.1",
+ "webpackbar": "^4.0.0",
+ "xhr-mock": "^2.5.1"
+ },
+ "dependencies": {
+ "@ant-design/icons": "^2.1.1",
+ "@ant-design/icons-vue": "^2.0.0",
+ "add-dom-event-listener": "^1.0.2",
+ "ant-design-vue": "^1.7.2",
+ "array-tree-filter": "^2.1.0",
+ "async-validator": "^3.2.4",
+ "babel-helper-vue-jsx-merge-props": "^2.0.3",
+ "babel-runtime": "6.x",
+ "classnames": "^2.2.5",
+ "component-classes": "^1.2.6",
+ "dom-align": "^1.10.4",
+ "dom-closest": "^0.2.0",
+ "dom-scroll-into-view": "^2.0.0",
+ "enquire.js": "^2.1.6",
+ "intersperse": "^1.0.0",
+ "is-mobile": "^2.2.1",
+ "is-negative-zero": "^2.0.0",
+ "ismobilejs": "^1.0.0",
+ "json2mq": "^0.2.0",
+ "lodash": "^4.17.5",
+ "moment": "^2.29.1",
+ "mutationobserver-shim": "^0.3.2",
+ "node-emoji": "^1.10.0",
+ "omit.js": "^1.0.0",
+ "prismjs": "^1.19.0",
+ "qs": "^6.9.1",
+ "query-string": "^6.11.1",
+ "raf": "^3.4.0",
+ "resize-observer-polyfill": "^1.5.1",
+ "shallow-equal": "^1.0.0",
+ "shallowequal": "^1.0.2",
+ "umi-request": "^1.2.19",
+ "vue-ref": "^1.0.4",
+ "warning": "^4.0.0"
+ }
+}
diff --git a/antdv-demo/postcss.config.js b/antdv-demo/postcss.config.js
new file mode 100644
index 000000000..a0fa32b9c
--- /dev/null
+++ b/antdv-demo/postcss.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ plugins: [require('autoprefixer')],
+};
diff --git a/antdv-demo/public/404.html b/antdv-demo/public/404.html
new file mode 100644
index 000000000..2687f6e43
--- /dev/null
+++ b/antdv-demo/public/404.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+ Ant Design Vue
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/public/ant-design-vue.svg b/antdv-demo/public/ant-design-vue.svg
new file mode 100644
index 000000000..4fe899edc
--- /dev/null
+++ b/antdv-demo/public/ant-design-vue.svg
@@ -0,0 +1,11 @@
+
+
+
+ Ant Design Vue Copy 5
+ Created with Sketch.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/antdv-demo/public/index.html b/antdv-demo/public/index.html
new file mode 100644
index 000000000..ef026a4f8
--- /dev/null
+++ b/antdv-demo/public/index.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+ Ant Design Vue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/antdv-demo/public/logo.png b/antdv-demo/public/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6305e2f82facb9997163e9734e1ade330d1b0ad
GIT binary patch
literal 158274
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