diff --git a/src/core/components/mdInkRipple/index.js b/src/core/components/mdInkRipple/index.js index 0f754e0..0746349 100644 --- a/src/core/components/mdInkRipple/index.js +++ b/src/core/components/mdInkRipple/index.js @@ -1,5 +1,5 @@ import 'scopedQuerySelectorShim/dist/scopedQuerySelectorShim'; -import './mdInkRipple.vue'; +import mdInkRipple from './mdInkRipple.vue'; export default function install(Vue) { let rippleParentClass = 'md-ink-ripple'; @@ -116,31 +116,5 @@ export default function install(Vue) { }); }); - Vue.component('md-ink-ripple', { - props: { - mdDisabled: Boolean - }, - render(createElement) { - return createElement('div', { - staticClass: 'md-ink-ripple' - }); - }, - watch: { - mdDisabled() { - if (this.mdDisabled) { - unregisterMouseEvent(this.$el.parentNode); - } else { - createRipple(this.$el.parentNode, this.$el); - } - } - }, - mounted() { - if (!this.mdDisabled) { - createRipple(this.$el.parentNode, this.$el); - } - }, - destroyed() { - unregisterMouseEvent(this.$el.parentNode); - } - }); + Vue.component('md-ink-ripple', Vue.extend(mdInkRipple)); } diff --git a/src/core/components/mdInkRipple/mdInkRipple.scss b/src/core/components/mdInkRipple/mdInkRipple.scss index a7bf4e4..9891b0b 100644 --- a/src/core/components/mdInkRipple/mdInkRipple.scss +++ b/src/core/components/mdInkRipple/mdInkRipple.scss @@ -8,25 +8,32 @@ right: 0; bottom: 0; left: 0; - mask-image: radial-gradient(circle, white 100%, black 100%); + -webkit-mask-image: radial-gradient(circle, white 100%, black 100%); transition: $swift-ease-in; } .md-ripple { position: absolute; - transform: scale(0); background-color: currentColor; - opacity: .26; border-radius: 50%; + opacity: .2; + transform: scale(0) translateZ(0); + transition: none; + will-change: background-color, opacity, transform, width, height, top, left; + + &.md-fadeout { + opacity: 0; + transition: $swift-ease-out; + transition-duration: .6s; + } &.md-active { - animation: ripple 1s $swift-ease-out-timing-function; + animation: ripple 1s $swift-ease-out-timing-function forwards; } } @keyframes ripple { to { - transform: scale(1.5); - opacity: 0; + transform: scale(2.2) translateZ(0); } } diff --git a/src/core/components/mdInkRipple/mdInkRipple.vue b/src/core/components/mdInkRipple/mdInkRipple.vue index 2932212..f8e5c2e 100644 --- a/src/core/components/mdInkRipple/mdInkRipple.vue +++ b/src/core/components/mdInkRipple/mdInkRipple.vue @@ -1 +1,179 @@ + + + + diff --git a/src/core/components/mdTheme/index.js b/src/core/components/mdTheme/index.js index 212b3bd..8279483 100644 --- a/src/core/components/mdTheme/index.js +++ b/src/core/components/mdTheme/index.js @@ -121,7 +121,8 @@ export default function install(Vue) { Vue.material = new Vue({ data: () => ({ styles: [], - currentTheme: null + currentTheme: null, + inkRipple: true }), methods: { registerTheme(name, spec) {