-
-
diff --git a/components/dialog/index.js b/components/dialog/index.js
deleted file mode 100644
index 5d10a6377..000000000
--- a/components/dialog/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// import Vue from 'vue'
-// import * as VueTransferDom from 'vue-transfer-dom'
-// Vue.use(VueTransferDom /*, {name: 'transferDom'}*/)
-import Dialog from './DialogWrap.vue'
-export default Dialog
-
diff --git a/components/index.js b/components/index.js
index e295c878f..6b22f7e23 100644
--- a/components/index.js
+++ b/components/index.js
@@ -92,4 +92,5 @@ export { default as AutoComplete } from './auto-complete'
export { default as Affix } from './affix'
export { default as Cascader } from './cascader'
+export { default as BackTop } from './back-top'
diff --git a/components/style.js b/components/style.js
index 17336063d..dc38a8430 100644
--- a/components/style.js
+++ b/components/style.js
@@ -26,3 +26,4 @@ import './switch/style'
import './auto-complete/style'
import './affix/style'
import './cascader/style'
+import './back-top/style'
diff --git a/components/vc-dialog/Dialog.vue b/components/vc-dialog/Dialog.vue
new file mode 100644
index 000000000..b0d8f8a5f
--- /dev/null
+++ b/components/vc-dialog/Dialog.vue
@@ -0,0 +1,403 @@
+
diff --git a/components/vc-dialog/DialogWrap.vue b/components/vc-dialog/DialogWrap.vue
new file mode 100644
index 000000000..d63a60014
--- /dev/null
+++ b/components/vc-dialog/DialogWrap.vue
@@ -0,0 +1,77 @@
+
diff --git a/components/vc-dialog/IDialogPropTypes.js b/components/vc-dialog/IDialogPropTypes.js
new file mode 100644
index 000000000..64b148c99
--- /dev/null
+++ b/components/vc-dialog/IDialogPropTypes.js
@@ -0,0 +1,38 @@
+import PropTypes from '../_util/vue-types'
+
+function IDialogPropTypes () {
+ return {
+ keyboard: PropTypes.bool,
+ mask: PropTypes.bool,
+ afterClose: PropTypes.func,
+ // onClose: PropTypes. (e: SyntheticEvent) =>any,
+ closable: PropTypes.bool,
+ maskClosable: PropTypes.bool,
+ visible: PropTypes.bool,
+ destroyOnClose: PropTypes.bool,
+ mousePosition: PropTypes.shape({
+ x: PropTypes.number,
+ y: PropTypes.number,
+ }).loose,
+ title: PropTypes.any,
+ footer: PropTypes.any,
+ transitionName: PropTypes.string,
+ maskTransitionName: PropTypes.string,
+ animation: PropTypes.any,
+ maskAnimation: PropTypes.any,
+ wrapStyle: PropTypes.object,
+ bodyStyle: PropTypes.object,
+ maskStyle: PropTypes.object,
+ prefixCls: PropTypes.string,
+ wrapClassName: PropTypes.string,
+ width: PropTypes.number,
+ height: PropTypes.number,
+ zIndex: PropTypes.number,
+ bodyProps: PropTypes.any,
+ maskProps: PropTypes.any,
+ wrapProps: PropTypes.any,
+ getContainer: PropTypes.func,
+ }
+}
+
+export default IDialogPropTypes
diff --git a/components/vc-dialog/LazyRenderBox.vue b/components/vc-dialog/LazyRenderBox.vue
new file mode 100644
index 000000000..0ce1427fe
--- /dev/null
+++ b/components/vc-dialog/LazyRenderBox.vue
@@ -0,0 +1,21 @@
+
+
diff --git a/components/vc-dialog/assets/bootstrap.less b/components/vc-dialog/assets/bootstrap.less
new file mode 100644
index 000000000..44c84faa5
--- /dev/null
+++ b/components/vc-dialog/assets/bootstrap.less
@@ -0,0 +1,3 @@
+@prefixCls: rc-dialog;
+@import "./bootstrap/Dialog.less";
+@import "./index/Mask.less";
diff --git a/components/vc-dialog/assets/bootstrap/Dialog.less b/components/vc-dialog/assets/bootstrap/Dialog.less
new file mode 100644
index 000000000..8f685b2c5
--- /dev/null
+++ b/components/vc-dialog/assets/bootstrap/Dialog.less
@@ -0,0 +1,133 @@
+@import "./variables.less";
+
+.clearfix() {
+ &:before,
+ &:after {
+ content: " "; // 1
+ display: table; // 2
+ }
+ &:after {
+ clear: both;
+ }
+}
+
+.@{prefixCls} {
+ // Container that the rc-dialog scrolls within
+ &-wrap {
+ position: fixed;
+ overflow: auto;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: @zindex-modal;
+ -webkit-overflow-scrolling: touch;
+
+ // Prevent Chrome on Windows from adding a focus outline. For details, see
+ // https://github.com/twbs/bootstrap/pull/10951.
+ outline: 0;
+ }
+
+ // Shell div to position the rc-dialog with bottom padding
+ position: relative;
+ width: auto;
+ margin: 10px;
+
+ // Actual rc-dialog
+ &-content {
+ position: relative;
+ background-color: @modal-content-bg;
+ border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
+ border: 1px solid @modal-content-border-color;
+ border-radius: @border-radius-large;
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ background-clip: padding-box;
+ // Remove focus outline from opened rc-dialog
+ outline: 0;
+ }
+
+ // Modal header
+ // Top section of the rc-dialog w/ title and dismiss
+ &-header {
+ padding: @modal-title-padding;
+ border-bottom: 1px solid @modal-header-border-color;
+ &:extend(.clearfix all);
+ }
+
+ &-close {
+ cursor: pointer;
+ border: 0;
+ background: transparent;
+ font-size: 21px;
+ position: absolute;
+ right: 20px;
+ top: 12px;
+ font-weight: 700;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ filter: alpha(opacity=20);
+ opacity: .2;
+ text-decoration: none;
+
+ &-x:after {
+ content: '×'
+ }
+
+ &:hover {
+ opacity: 1;
+ filter: alpha(opacity=100);
+ text-decoration: none;
+ }
+ }
+
+ // Title text within header
+ &-title {
+ margin: 0;
+ line-height: @modal-title-line-height;
+ }
+
+ // Modal body
+ // Where all rc-dialog content resides (sibling of &-header and &-footer)
+ &-body {
+ position: relative;
+ padding: @modal-inner-padding;
+ }
+
+ // Footer (for actions)
+ &-footer {
+ padding: @modal-inner-padding;
+ text-align: right; // right align buttons
+ border-top: 1px solid @modal-footer-border-color;
+ &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons
+
+ // Properly space out buttons
+ .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
+ }
+ // but override that for button groups
+ .btn-group .btn + .btn {
+ margin-left: -1px;
+ }
+ // and override it for block buttons as well
+ .btn-block + .btn-block {
+ margin-left: 0;
+ }
+ }
+}
+
+// Scale up the rc-dialog
+@media (min-width: @screen-sm-min) {
+ .@{prefixCls} {
+ // Automatically set rc-dialog's width for larger viewports
+ width: @modal-md;
+ margin: 30px auto;
+
+ &-content {
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ }
+ }
+}
+
+@import "./effect.less";
diff --git a/components/vc-dialog/assets/bootstrap/effect.less b/components/vc-dialog/assets/bootstrap/effect.less
new file mode 100644
index 000000000..0671387bc
--- /dev/null
+++ b/components/vc-dialog/assets/bootstrap/effect.less
@@ -0,0 +1,42 @@
+.@{prefixCls} {
+ &-slide-fade-enter,
+ &-slide-fade-appear {
+ transform: translate(0, -25%);
+ }
+
+ &-slide-fade-enter,
+ &-slide-fade-appear,
+ &-slide-fade-leave {
+ animation-duration: .3s;
+ animation-fill-mode: both;
+ animation-timing-function: ease-out;
+ animation-play-state: paused;
+ }
+
+ &-slide-fade-enter&-slide-fade-enter-active, &-slide-fade-appear&-slide-fade-appear-active {
+ animation-name: rcDialogSlideFadeIn;
+ animation-play-state: running;
+ }
+
+ &-slide-fade-leave&-slide-fade-leave-active {
+ animation-name: rcDialogSlideFadeOut;
+ animation-play-state: running;
+ }
+
+ @keyframes rcDialogSlideFadeIn {
+ 0% {
+ transform: translate(0, -25%);
+ }
+ 100% {
+ transform: translate(0, 0);
+ }
+ }
+ @keyframes rcDialogSlideFadeOut {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(0, -25%);
+ }
+ }
+}
diff --git a/components/vc-dialog/assets/bootstrap/variables.less b/components/vc-dialog/assets/bootstrap/variables.less
new file mode 100644
index 000000000..1959c3425
--- /dev/null
+++ b/components/vc-dialog/assets/bootstrap/variables.less
@@ -0,0 +1,869 @@
+//
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+@gray-base: #000;
+@gray-darker: lighten(@gray-base, 13.5%); // #222
+@gray-dark: lighten(@gray-base, 20%); // #333
+@gray: lighten(@gray-base, 33.5%); // #555
+@gray-light: lighten(@gray-base, 46.7%); // #777
+@gray-lighter: lighten(@gray-base, 93.5%); // #eee
+
+@brand-primary: darken(#428bca, 6.5%); // #337ab7
+@brand-success: #5cb85c;
+@brand-info: #5bc0de;
+@brand-warning: #f0ad4e;
+@brand-danger: #d9534f;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for ``.
+@body-bg: #fff;
+//** Global text color on ``.
+@text-color: @gray-dark;
+
+//** Global textual link color.
+@link-color: @brand-primary;
+//** Link hover color set via `darken()` function.
+@link-hover-color: darken(@link-color, 15%);
+//** Link hover decoration.
+@link-hover-decoration: underline;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-family-serif: Georgia, "Times New Roman", Times, serif;
+//** Default monospace fonts for ``, ``, and `
`.
+@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
+@font-family-base: @font-family-sans-serif;
+
+@font-size-base: 14px;
+@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
+
+@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
+@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
+@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
+@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-h5: @font-size-base;
+@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+@line-height-base: 1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+@headings-font-family: inherit;
+@headings-font-weight: 500;
+@headings-line-height: 1.1;
+@headings-color: inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+@icon-font-path: "../fonts/";
+//** File name for all font files.
+@icon-font-name: "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+@icon-font-svg-id: "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+@padding-base-vertical: 6px;
+@padding-base-horizontal: 12px;
+
+@padding-large-vertical: 10px;
+@padding-large-horizontal: 16px;
+
+@padding-small-vertical: 5px;
+@padding-small-horizontal: 10px;
+
+@padding-xs-vertical: 1px;
+@padding-xs-horizontal: 5px;
+
+@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
+@line-height-small: 1.5;
+
+@border-radius-base: 4px;
+@border-radius-large: 6px;
+@border-radius-small: 3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+@component-active-color: #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+@component-active-bg: @brand-primary;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+@caret-width-base: 4px;
+//** Carets increase slightly in size for larger components.
+@caret-width-large: 5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `
`s and `
`s.
+@table-cell-padding: 8px;
+//** Padding for cells in `.table-condensed`.
+@table-condensed-cell-padding: 5px;
+
+//** Default background color used for all tables.
+@table-bg: transparent;
+//** Background color used for `.table-striped`.
+@table-bg-accent: #f9f9f9;
+//** Background color used for `.table-hover`.
+@table-bg-hover: #f5f5f5;
+@table-bg-active: @table-bg-hover;
+
+//** Border color for table and cell borders.
+@table-border-color: #ddd;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+@btn-font-weight: normal;
+
+@btn-default-color: #333;
+@btn-default-bg: #fff;
+@btn-default-border: #ccc;
+
+@btn-primary-color: #fff;
+@btn-primary-bg: @brand-primary;
+@btn-primary-border: darken(@btn-primary-bg, 5%);
+
+@btn-success-color: #fff;
+@btn-success-bg: @brand-success;
+@btn-success-border: darken(@btn-success-bg, 5%);
+
+@btn-info-color: #fff;
+@btn-info-bg: @brand-info;
+@btn-info-border: darken(@btn-info-bg, 5%);
+
+@btn-warning-color: #fff;
+@btn-warning-bg: @brand-warning;
+@btn-warning-border: darken(@btn-warning-bg, 5%);
+
+@btn-danger-color: #fff;
+@btn-danger-bg: @brand-danger;
+@btn-danger-border: darken(@btn-danger-bg, 5%);
+
+@btn-link-disabled-color: @gray-light;
+
+// Allows for customizing button radius independently from global border radius
+@btn-border-radius-base: @border-radius-base;
+@btn-border-radius-large: @border-radius-large;
+@btn-border-radius-small: @border-radius-small;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+@input-bg: #fff;
+//** `` background color
+@input-bg-disabled: @gray-lighter;
+
+//** Text color for ``s
+@input-color: @gray;
+//** `` border color
+@input-border: #ccc;
+
+// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `