|
3 | 3 | import MdAppInternalDrawer from './MdAppInternalDrawer'
|
4 | 4 |
|
5 | 5 | const componentTypes = [
|
6 |
| - 'md-toolbar', |
7 |
| - 'md-drawer', |
8 |
| - 'md-content' |
| 6 | + 'md-app-toolbar', |
| 7 | + 'md-app-drawer', |
| 8 | + 'md-app-content' |
9 | 9 | ]
|
10 | 10 |
|
11 | 11 | function buildSlots (children, context, functionalContext, options) {
|
|
21 | 21 | child.context = context
|
22 | 22 | child.functionalContext = functionalContext
|
23 | 23 |
|
24 |
| - if (opts.tag === 'md-content') { |
25 |
| - child.data.staticClass = 'md-flex' |
26 |
| - } |
27 |
| -
|
28 | 24 | slots.push(child)
|
29 | 25 | }
|
30 | 26 | })
|
|
35 | 31 |
|
36 | 32 | function getDrawer (children) {
|
37 | 33 | const drawerVnode = children.filter(child => {
|
38 |
| - return child.componentOptions.tag === 'md-drawer' |
| 34 | + return child.componentOptions.tag === 'md-app-drawer' |
39 | 35 | })
|
40 | 36 |
|
41 | 37 | return drawerVnode && drawerVnode[0]
|
42 | 38 | }
|
43 | 39 |
|
44 |
| - function isInternal (props) { |
45 |
| - return props.mdPermanent && (props.mdPermanent === 'clipped' || props.mdPermanent === 'card') |
| 40 | + function hasInternalDrawer (attrs) { |
| 41 | + const mdPermanent = attrs && attrs['md-permanent'] |
| 42 | +
|
| 43 | + return mdPermanent && (mdPermanent === 'clipped' || mdPermanent === 'card') |
46 | 44 | }
|
47 | 45 |
|
48 | 46 | export default {
|
49 | 47 | name: 'MdApp',
|
50 | 48 | functional: true,
|
51 |
| - render (createElement, { children, injections }) { |
| 49 | + render (createElement, { children, props }) { |
52 | 50 | let appComponent = MdAppSideDrawer
|
53 | 51 | const { context, functionalContext, componentOptions } = createElement(appComponent)
|
54 | 52 | const slots = buildSlots(children, context, functionalContext, componentOptions)
|
55 | 53 | const drawer = getDrawer(slots)
|
56 | 54 |
|
57 |
| - if (drawer && isInternal(drawer.componentOptions.propsData)) { |
| 55 | + if (drawer && hasInternalDrawer(drawer.data.attrs)) { |
58 | 56 | appComponent = MdAppInternalDrawer
|
59 | 57 | }
|
60 | 58 |
|
61 |
| - return createElement(appComponent, slots) |
| 59 | + return createElement(appComponent, { |
| 60 | + attrs: props |
| 61 | + }, slots) |
62 | 62 | }
|
63 | 63 | }
|
64 | 64 | </script>
|
|
72 | 72 | position: relative;
|
73 | 73 | transition: .3s $md-transition-default-timing;
|
74 | 74 |
|
75 |
| - .md-drawer { |
76 |
| - &.md-permanent-card + .md-content { |
77 |
| - @include md-layout-small-and-up { |
78 |
| - padding-left: 0; |
79 |
| - border-left: none; |
80 |
| - } |
| 75 | + &.md-fixed { |
| 76 | + .md-app-scroller { |
| 77 | + overflow: auto; |
81 | 78 | }
|
82 | 79 | }
|
83 | 80 |
|
84 |
| - .md-content { |
85 |
| - padding: 16px; |
86 |
| - overflow: auto; |
| 81 | + &.md-reveal { |
| 82 | + transform: translate3d(0, 0, 0); |
| 83 | +
|
| 84 | + .md-app-container { |
| 85 | + padding-top: 64px; |
| 86 | + } |
| 87 | +
|
| 88 | + .md-app-toolbar { |
| 89 | + position: fixed; |
| 90 | + top: 0; |
| 91 | + } |
| 92 | + } |
| 93 | + } |
87 | 94 |
|
| 95 | + .md-app-drawer { |
| 96 | + &.md-permanent-card + .md-content { |
88 | 97 | @include md-layout-small-and-up {
|
89 |
| - border-left: 1px solid transparent; |
| 98 | + padding-left: 0; |
| 99 | + border-left: none; |
| 100 | + } |
| 101 | + } |
| 102 | + } |
| 103 | +
|
| 104 | + .md-app-content { |
| 105 | + padding: 16px; |
| 106 | +
|
| 107 | + @include md-layout-small-and-up { |
| 108 | + border-left: 1px solid transparent; |
| 109 | + } |
| 110 | +
|
| 111 | + > p { |
| 112 | + &:first-child { |
| 113 | + margin-top: 0; |
| 114 | + } |
| 115 | +
|
| 116 | + &:last-child { |
| 117 | + margin-bottom: 0; |
90 | 118 | }
|
91 | 119 | }
|
92 | 120 | }
|
93 | 121 |
|
94 | 122 | .md-app-container {
|
| 123 | + overflow: auto; |
95 | 124 | transform: translate3D(0, 0, 0);
|
96 | 125 | transition: padding-left .4s $md-transition-default-timing;
|
97 | 126 | will-change: padding-left;
|
|
0 commit comments