diff --git a/components/index.js b/components/index.js index e69195d65..c4a39dcf3 100644 --- a/components/index.js +++ b/components/index.js @@ -9,3 +9,5 @@ export { default as Radio } from './radio' export { default as Grid } from './grid' export { default as Rate } from './rate' + +export { default as ToolTip } from './tooltip' diff --git a/components/pagination/index.js b/components/pagination/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/components/pagination/pagination.vue b/components/pagination/pagination.vue new file mode 100644 index 000000000..e69de29bb diff --git a/components/pagination/style/index.js b/components/pagination/style/index.js new file mode 100644 index 000000000..cf31ed80f --- /dev/null +++ b/components/pagination/style/index.js @@ -0,0 +1,2 @@ +import '../../style/index.less' +import './index.less' diff --git a/components/pagination/style/index.less b/components/pagination/style/index.less new file mode 100644 index 000000000..5b8e0ddab --- /dev/null +++ b/components/pagination/style/index.less @@ -0,0 +1,333 @@ +@import "../../style/themes/default"; +@import "../../style/mixins/index"; +@import "../../input/style/mixin"; + +@pagination-prefix-cls: ~"@{ant-prefix}-pagination"; + +.@{pagination-prefix-cls} { + font-size: @font-size-base; + + &:after { + content: " "; + display: block; + height: 0; + clear: both; + overflow: hidden; + visibility: hidden; + } + + &-total-text { + display: inline-block; + vertical-align: middle; + height: 28px; + line-height: 28px; + margin-right: 8px; + } + + &-item { + cursor: pointer; + border-radius: @border-radius-base; + user-select: none; + min-width: 28px; + height: 28px; + line-height: 28px; + text-align: center; + list-style: none; + display: inline-block; + vertical-align: middle; + border: @border-width-base @border-style-base @border-color-base; + background-color: @component-background; + margin-right: 8px; + font-family: Arial; + outline: 0; + + a { + text-decoration: none; + color: @text-color; + transition: none; + margin: 0 6px; + } + + &:focus, + &:hover { + transition: all .3s; + border-color: @primary-color; + a { + color: @primary-color; + } + } + + &-active { + background-color: @primary-color; + border-color: @primary-color; + + &:focus, + &:hover { + background-color: @primary-5; + border-color: @primary-5; + } + + a, + &:focus a, + &:hover a { + color: #fff; + } + } + } + + &-jump-prev, + &-jump-next { + outline: 0; + + &:after { + content: "•••"; + display: block; + letter-spacing: 2px; + color: @disabled-color; + text-align: center; + } + + &:focus, + &:hover { + &:after { + color: @primary-color; + .iconfont-size-under-12px(8px); + letter-spacing: -1px; + font-family: "anticon"; + } + } + } + + &-jump-prev { + &:focus, + &:hover { + &:after { + content: "\e620\e620"; + } + } + } + + &-jump-next { + &:focus, + &:hover { + &:after { + content: "\e61f\e61f"; + } + } + } + + &-prev, + &-jump-prev, + &-jump-next { + margin-right: 8px; + } + &-prev, + &-next, + &-jump-prev, + &-jump-next { + font-family: Arial; + cursor: pointer; + color: @text-color; + border-radius: @border-radius-base; + list-style: none; + min-width: 28px; + height: 28px; + line-height: 28px; + text-align: center; + transition: all .3s; + display: inline-block; + vertical-align: middle; + } + + &-prev, + &-next { + outline: 0; + + a { + color: @text-color; + user-select: none; + } + + &:hover a { + color: @primary-color; + } + + .@{pagination-prefix-cls}-item-link { + border: @border-width-base @border-style-base @border-color-base; + background-color: @component-background; + border-radius: @border-radius-base; + outline: none; + display: block; + transition: all .3s; + + &:after { + .iconfont-size-under-12px(8px); + display: block; + height: 26px; + line-height: 26px; + font-family: "anticon"; + text-align: center; + font-weight: 500; + } + } + + &:focus .@{pagination-prefix-cls}-item-link, + &:hover .@{pagination-prefix-cls}-item-link { + border-color: @primary-color; + color: @primary-color; + } + } + + &-prev { + .@{pagination-prefix-cls}-item-link:after { + content: "\e620"; + display: block; + } + } + + &-next { + .@{pagination-prefix-cls}-item-link:after { + content: "\e61f"; + display: block; + } + } + + &-disabled { + &, + &:hover, + &:focus { + cursor: not-allowed; + a, + .@{pagination-prefix-cls}-item-link { + border-color: @border-color-base; + color: @disabled-color; + cursor: not-allowed; + } + } + } + + &-slash { + margin: 0 10px 0 5px; + } + + &-options { + display: inline-block; + vertical-align: middle; + margin-left: 16px; + + &-size-changer { + display: inline-block; + margin-right: 8px; + } + + &-quick-jumper { + display: inline-block; + height: @input-height-base; + line-height: @input-height-base; + + input { + .input; + margin: 0 8px; + width: 50px; + } + } + } + + &-simple &-prev, + &-simple &-next { + height: 24px; + line-height: 24px; + vertical-align: top; + .@{pagination-prefix-cls}-item-link { + border: 0; + height: 24px; + &:after { + line-height: 24px; + } + } + } + + &-simple &-simple-pager { + display: inline-block; + margin-right: 8px; + height: 24px; + + input { + margin-right: 8px; + box-sizing: border-box; + background-color: @component-background; + border-radius: @border-radius-base; + border: @border-width-base @border-style-base @border-color-base; + outline: none; + padding: 0 6px; + height: 100%; + text-align: center; + transition: border-color .3s; + + &:hover { + border-color: @primary-color; + } + } + } +} + +.@{pagination-prefix-cls} { + &.mini &-total-text, + &.mini &-simple-pager { + height: 20px; + line-height: 20px; + } + + &.mini &-item { + border: 0; + margin: 0; + min-width: 20px; + height: 20px; + line-height: 20px; + } + + &.mini &-prev, + &.mini &-next { + margin: 0; + min-width: 20px; + height: 20px; + line-height: 20px; + } + + &.mini &-prev &-item-link, + &.mini &-next &-item-link { + border: 0; + &:after { + height: 20px; + line-height: 20px; + } + } + + &.mini &-jump-prev, + &.mini &-jump-next { + height: 20px; + line-height: 20px; + } + + &.mini &-options { + margin-left: 8px; + &-quick-jumper { + height: 20px; + line-height: 20px; + + input { + .input-sm; + width: 44px; + } + } + } +} + +@media only screen and (max-width: 1024px) { + .@{pagination-prefix-cls}-item { + &-after-jump-prev, + &-before-jump-next { + display: none; + } + } +} diff --git a/components/tooltip/index.js b/components/tooltip/index.js new file mode 100644 index 000000000..4b5f7d8bc --- /dev/null +++ b/components/tooltip/index.js @@ -0,0 +1,3 @@ +import ToolTip from './tooltip.vue' +export default ToolTip + diff --git a/components/tooltip/style/index.js b/components/tooltip/style/index.js new file mode 100644 index 000000000..cf31ed80f --- /dev/null +++ b/components/tooltip/style/index.js @@ -0,0 +1,2 @@ +import '../../style/index.less' +import './index.less' diff --git a/components/tooltip/style/index.less b/components/tooltip/style/index.less new file mode 100644 index 000000000..a5377f0d3 --- /dev/null +++ b/components/tooltip/style/index.less @@ -0,0 +1,207 @@ +@import "../../style/themes/default"; +@import "../../style/mixins/index"; + +@tooltip-prefix-cls: ~"@{ant-prefix}-tooltip"; + +// Base class +.@{tooltip-prefix-cls} { + position: absolute; + z-index: @zindex-tooltip; + display: block; + visibility: visible; + font-size: @font-size-base; + line-height: @line-height-base; + + &-hidden { + display: none; + } + + &-placement-top, + &-placement-topLeft, + &-placement-topRight { + padding-bottom: @tooltip-distance; + } + &-placement-right, + &-placement-rightTop, + &-placement-rightBottom { + padding-left: @tooltip-distance; + } + &-placement-bottom, + &-placement-bottomLeft, + &-placement-bottomRight { + padding-top: @tooltip-distance; + } + &-placement-left, + &-placement-leftTop, + &-placement-leftBottom { + padding-right: @tooltip-distance; + } +} + +// Wrapper for the tooltip content +.@{tooltip-prefix-cls}-inner { + max-width: @tooltip-max-width; + padding: 8px 10px; + color: @tooltip-color; + text-align: left; + text-decoration: none; + background-color: @tooltip-bg; + border-radius: @border-radius-base; + box-shadow: @box-shadow-base; + min-height: 34px; +} + +// Arrows +.@{tooltip-prefix-cls}-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.@{tooltip-prefix-cls} { + &-placement-top &-arrow, + &-placement-topLeft &-arrow, + &-placement-topRight &-arrow { + bottom: @tooltip-distance - @tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width 0; + border-top-color: @tooltip-arrow-color; + } + + &-placement-top &-arrow { + left: 50%; + margin-left: -@tooltip-arrow-width; + } + + &-placement-topLeft &-arrow { + left: 16px; + } + + &-placement-topRight &-arrow { + right: 16px; + } + + &-placement-right &-arrow, + &-placement-rightTop &-arrow, + &-placement-rightBottom &-arrow { + left: @tooltip-distance - @tooltip-arrow-width; + border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; + border-right-color: @tooltip-arrow-color; + } + + &-placement-right &-arrow { + top: 50%; + margin-top: -@tooltip-arrow-width; + } + + &-placement-rightTop &-arrow { + top: 8px; + } + + &-placement-rightBottom &-arrow { + bottom: 8px; + } + + &-placement-left &-arrow, + &-placement-leftTop &-arrow, + &-placement-leftBottom &-arrow { + right: @tooltip-distance - @tooltip-arrow-width; + border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; + border-left-color: @tooltip-arrow-color; + } + + &-placement-left &-arrow { + top: 50%; + margin-top: -@tooltip-arrow-width; + } + + &-placement-leftTop &-arrow { + top: 8px; + } + + &-placement-leftBottom &-arrow { + bottom: 8px; + } + + &-placement-bottom &-arrow, + &-placement-bottomLeft &-arrow, + &-placement-bottomRight &-arrow { + top: @tooltip-distance - @tooltip-arrow-width; + border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; + border-bottom-color: @tooltip-arrow-color; + } + + &-placement-bottom &-arrow { + left: 50%; + margin-left: -@tooltip-arrow-width; + } + + &-placement-bottomLeft &-arrow { + left: 16px; + } + + &-placement-bottomRight &-arrow { + right: 16px; + } +} + + +/** +modified part ,remove these if needed + */ + +.vc-fade-enter-active, .vc-fade-leave-active { + transition: all 3s; +} +.vc-fade-enter, .vc-fade-leave-to /* .fade-leave-active in below version 2.1.8 */ { + opacity: 0; +} + +.box { + background: red; + width: 100px; + height: 100px; +} +.fade-enter { + opacity: 0; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2); + animation-play-state: paused; +} + +.fade-leave { + animation-duration: 0.3s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2); + animation-play-state: paused; +} + +.fade-enter.fade-enter-active { + animation-name: rcDialogFadeIn; + animation-play-state: running; +} + +.fade-leave.fade-leave-active { + animation-name: rcDialogFadeOut; + animation-play-state: running; +} + +@keyframes rcDialogFadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes rcDialogFadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/components/tooltip/tooltip.vue b/components/tooltip/tooltip.vue new file mode 100644 index 000000000..2ca384638 --- /dev/null +++ b/components/tooltip/tooltip.vue @@ -0,0 +1,179 @@ + diff --git a/examples/index.js b/examples/index.js index fee4bf6c9..4048dc6cc 100644 --- a/examples/index.js +++ b/examples/index.js @@ -1,6 +1,5 @@ import './index.less' import Vue from 'vue' -import VueMarkdown from 'vue-markdown' import VueRouter from 'vue-router' import routes from './routes' Vue.use(VueRouter) @@ -9,7 +8,6 @@ const router = new VueRouter({ mode: 'history', routes, }) -Vue.component('vue-markdown', VueMarkdown) new Vue({ el: '#app', router, diff --git a/examples/rate.vue b/examples/rate.vue index d09d36a37..fa48d073d 100644 --- a/examples/rate.vue +++ b/examples/rate.vue @@ -27,7 +27,7 @@ {{hoverValueAH}}stars
自定义 - + + + diff --git a/utils/ant-transition.vue b/utils/ant-transition.vue new file mode 100644 index 000000000..e87ff117c --- /dev/null +++ b/utils/ant-transition.vue @@ -0,0 +1,32 @@ + + +