From 9aef4b315f8a64106b9a47d8427f77e8aecc1746 Mon Sep 17 00:00:00 2001 From: Marcos Moura Date: Mon, 18 Jul 2016 22:27:25 -0300 Subject: [PATCH] Create sidenav --- src/components/mdBottomBar/mdBottomBar.vue | 2 +- src/components/mdSidenav/index.js | 8 ++++ src/components/mdSidenav/mdSidenav.scss | 50 ++++++++++++++++++++++ src/components/mdSidenav/mdSidenav.theme | 9 ++++ src/components/mdSidenav/mdSidenav.vue | 44 +++++++++++++++++++ src/components/mdTheme/index.js | 2 +- src/docs.vue | 40 ++++++++++++++--- src/main.js | 6 ++- 8 files changed, 151 insertions(+), 10 deletions(-) create mode 100644 src/components/mdSidenav/index.js create mode 100644 src/components/mdSidenav/mdSidenav.scss create mode 100644 src/components/mdSidenav/mdSidenav.theme create mode 100644 src/components/mdSidenav/mdSidenav.vue diff --git a/src/components/mdBottomBar/mdBottomBar.vue b/src/components/mdBottomBar/mdBottomBar.vue index 7946455..9567906 100644 --- a/src/components/mdBottomBar/mdBottomBar.vue +++ b/src/components/mdBottomBar/mdBottomBar.vue @@ -1,5 +1,5 @@ diff --git a/src/components/mdSidenav/index.js b/src/components/mdSidenav/index.js new file mode 100644 index 0000000..2a63f54 --- /dev/null +++ b/src/components/mdSidenav/index.js @@ -0,0 +1,8 @@ +import mdSidenav from './mdSidenav.vue'; +import mdSidenavTheme from './mdSidenav.theme'; + +export default function install(Vue) { + Vue.component('md-sidenav', Vue.extend(mdSidenav)); + + window.VueMaterial.styles.push(mdSidenavTheme); +} diff --git a/src/components/mdSidenav/mdSidenav.scss b/src/components/mdSidenav/mdSidenav.scss new file mode 100644 index 0000000..ba7be2a --- /dev/null +++ b/src/components/mdSidenav/mdSidenav.scss @@ -0,0 +1,50 @@ +@import '../../core/variables.scss'; + +.md-sidenav { + &.md-left .md-sidenav-content { + left: 0; + transform: translate3d(-100%, 0, 0); + } + + &.md-right .md-sidenav-content { + right: 0; + transform: translate3d(100%, 0, 0); + } + + .md-sidenav-content { + width: 320px; + position: absolute; + top: 0; + bottom: 0; + z-index: 2; + pointer-events: none; + opacity: .7; + transition: $swift-ease-out; + + &.md-active { + opacity: 1; + pointer-events: auto; + box-shadow: $material-shadow-16dp; + transform: translate3d(0, 0, 0); + } + } + + .md-backdrop { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: none; + background-color: rgba(#000, .54); + transform: translate3d(0, 0, 0); + opacity: 0; + transition: $swift-ease-in-out; + + &.md-active { + opacity: 1; + pointer-events: auto; + } + } +} diff --git a/src/components/mdSidenav/mdSidenav.theme b/src/components/mdSidenav/mdSidenav.theme new file mode 100644 index 0000000..ae64635 --- /dev/null +++ b/src/components/mdSidenav/mdSidenav.theme @@ -0,0 +1,9 @@ +.THEME_NAME { + .md-sidenav, + &.md-sidenav { + .md-sidenav-content { + background-color: BACKGROUND-COLOR-50; + color: BACKGROUND-CONTRAST; + } + } +} diff --git a/src/components/mdSidenav/mdSidenav.vue b/src/components/mdSidenav/mdSidenav.vue new file mode 100644 index 0000000..fc485a2 --- /dev/null +++ b/src/components/mdSidenav/mdSidenav.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/mdTheme/index.js b/src/components/mdTheme/index.js index ea59065..4588333 100644 --- a/src/components/mdTheme/index.js +++ b/src/components/mdTheme/index.js @@ -22,7 +22,7 @@ const createNewStyleElement = (style, name) => { newTag.id = styleId; newTag.textContent = style; - document.head.appendChild(newTag); + head.appendChild(newTag); } }; diff --git a/src/docs.vue b/src/docs.vue index e5b782d..6b02c77 100644 --- a/src/docs.vue +++ b/src/docs.vue @@ -3,12 +3,12 @@

Buttons

- Button - Primary + Button + Primary Raised Accent Warn - Disabled + Disabled Dense
@@ -229,6 +229,30 @@ + +
+

Toolbar

+ +
+ + + menu + + +

Toggle Sidenav

+
+ + + +
+

Sidenav content

+
+
+ +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi cupiditate esse necessitatibus beatae nobis, deserunt ut est fugit, tempora deleniti, eligendi commodi doloribus. Nemo, assumenda possimus, impedit inventore perferendis iusto!

+
+
+
@@ -238,12 +262,16 @@ export default { data() { return { - disabled: false + buttonDisabled: false, + sidenavVisible: false }; }, methods: { - clickAction() { - this.disabled = !this.disabled; + disableButton() { + this.buttonDisabled = !this.buttonDisabled; + }, + toggleSidenav() { + this.sidenavVisible = !this.sidenavVisible; } } }; diff --git a/src/main.js b/src/main.js index 211a0af..3a6e580 100644 --- a/src/main.js +++ b/src/main.js @@ -7,14 +7,16 @@ import MdButton from './components/mdButton'; import MdButtonToggle from './components/mdButtonToggle'; import MdIcon from './components/mdIcon'; import MdBottomBar from './components/mdBottomBar'; -import mdToolbar from './components/mdToolbar'; +import MdToolbar from './components/mdToolbar'; +import MdSidenav from './components/mdSidenav'; Vue.use(MdInkRipple); Vue.use(MdButton); Vue.use(MdButtonToggle); Vue.use(MdIcon); Vue.use(MdBottomBar); -Vue.use(mdToolbar); +Vue.use(MdToolbar); +Vue.use(MdSidenav); Vue.use(MdTheme, { 'bottom-bar': {