@afeefa/vue-app 0.0.179 → 0.0.181

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- 0.0.179
1
+ 0.0.181
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@afeefa/vue-app",
3
- "version": "0.0.179",
3
+ "version": "0.0.181",
4
4
  "description": "",
5
5
  "author": "Afeefa Kollektiv <kollektiv@afeefa.de>",
6
6
  "license": "MIT",
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <v-alert
3
3
  v-bind="$attrs"
4
+ :type="type"
4
5
  :style="{display: inline ? 'inline-block' : 'block'}"
5
6
  :class="['a-info', {xSmall}]"
6
7
  dense
@@ -17,7 +18,7 @@
17
18
  import { Component, Vue } from '@a-vue'
18
19
 
19
20
  @Component({
20
- props: [{inline: true, xSmall: false}]
21
+ props: [{inline: true, xSmall: false, type: 'info'}]
21
22
  })
22
23
  export default class AInfo extends Vue {
23
24
  }
@@ -30,8 +30,6 @@ export default class ATabs extends Vue {
30
30
  currentIndex = 0
31
31
 
32
32
  mounted () {
33
- console.log(this.$children)
34
-
35
33
  this.titles = this.$children.map(c => c.title)
36
34
 
37
35
  this.$children[this.currentIndex].show()
@@ -52,7 +50,7 @@ export default class ATabs extends Vue {
52
50
 
53
51
  <style lang="scss" scoped>
54
52
  .menuContainer {
55
- border-bottom: 2px solid #EEEEEE;
53
+ border-bottom: 3px solid #DDDDDD;
56
54
  margin: 2rem 0;
57
55
 
58
56
  &.first {
@@ -64,29 +62,26 @@ export default class ATabs extends Vue {
64
62
  position: relative;
65
63
  display: flex;
66
64
  justify-content: center;
67
- margin-bottom: -2px;
68
65
 
69
66
  .label {
70
- padding: .6rem 1.5rem .5rem;
71
- border-bottom: 2px solid #EEEEEE;
72
- // border-top-left-radius: 6px;
73
- // border-top-right-radius: 6px;
67
+ padding: .5rem 1rem .7rem;
74
68
  background: white;
75
69
  cursor: pointer;
76
70
 
77
71
  text-transform: uppercase;
78
72
  letter-spacing: 5px;
79
- color: #CCCCCC;
73
+ color: #BBBBBB;
80
74
  font-size: .8rem;
81
75
  white-space: nowrap;
82
76
 
83
- &.selected {
84
- padding-top: .3rem;
77
+ &:hover {
78
+ background: #F4F4F4;
79
+ color: #AAAAAA;
80
+ }
85
81
 
86
- border-left: 2px solid #EEEEEE;
87
- border-top: 2px solid #EEEEEE;
88
- border-right: 2px solid #EEEEEE;
89
- border-bottom: none;
82
+ &.selected {
83
+ background: #DDDDDD;
84
+ color: #666666;
90
85
  }
91
86
  }
92
87
  }
@@ -3,6 +3,7 @@
3
3
  v-show="visible"
4
4
  id="information-bar"
5
5
  :class="{mobile, rail}"
6
+ :style="widthStyle"
6
7
  >
7
8
  <div :class="['toggleButton', {rail}]">
8
9
  <v-app-bar-nav-icon
@@ -40,6 +41,8 @@ export default class InformationBar extends Vue {
40
41
  visible = false
41
42
  mobile = false
42
43
  rail = false
44
+ defaultWidth = 300
45
+ width = this.defaultWidth
43
46
 
44
47
  created () {
45
48
  this.$events.on(SidebarEvent.STATUS, ({payload: {information, informationRailed, mobile}}) => {
@@ -69,15 +72,15 @@ export default class InformationBar extends Vue {
69
72
 
70
73
  const elTop = document.createElement('div')
71
74
  document.body.appendChild(elTop)
72
- moveChildren(this.$el.querySelector('#information-bar__children .top'), elTop)
75
+ moveChildren(this.getTopContainer(), elTop)
73
76
 
74
77
  const elBottom = document.createElement('div')
75
78
  document.body.appendChild(elBottom)
76
- moveChildren(this.$el.querySelector('#information-bar__children .bottom'), elBottom)
79
+ moveChildren(this.getBottomContainer(), elBottom)
77
80
 
78
81
  this.$nextTick(() => {
79
- moveChildren(elTop, document.querySelector('#information-bar__children .top'))
80
- moveChildren(elBottom, document.querySelector('#information-bar__children .bottom'))
82
+ moveChildren(elTop, this.getTopContainer())
83
+ moveChildren(elBottom, this.getBottomContainer())
81
84
  this.$nextTick(() => {
82
85
  this.$events.dispatch(new SidebarEvent(SidebarEvent.STATUS, new SidebarState(sidebarService)))
83
86
  })
@@ -86,18 +89,30 @@ export default class InformationBar extends Vue {
86
89
 
87
90
  @Watch('rail')
88
91
  railChanged () {
89
- this.$el.style.marginRight = this.rail ? '-240px' : 0
92
+ this.setRailMargin()
90
93
  }
91
94
 
92
95
  toggleRail () {
93
96
  sidebarService.setRailInformation(!this.rail)
94
97
  }
95
98
 
99
+ setRailMargin () {
100
+ if (this.rail) {
101
+ const right = `calc(-${this.width}px - 3rem + 60px)`
102
+ this.$el.style.marginRight = right
103
+ } else {
104
+ this.$el.style.marginRight = 0
105
+ }
106
+ }
107
+
96
108
  domChanged () {
97
109
  const old = this.visible
98
110
  const visible = this.hasSidebarItems()
99
111
 
100
112
  if (visible && !old) {
113
+ this.width = this.getWidthFromItems() || this.defaultWidth
114
+ this.setRailMargin()
115
+
101
116
  sidebarService.setInformation(true)
102
117
  }
103
118
 
@@ -110,6 +125,14 @@ export default class InformationBar extends Vue {
110
125
  return this.$el.querySelector('#information-bar__children')
111
126
  }
112
127
 
128
+ getTopContainer () {
129
+ return document.querySelector('#information-bar__children .top')
130
+ }
131
+
132
+ getBottomContainer () {
133
+ return document.querySelector('#information-bar__children .bottom')
134
+ }
135
+
113
136
  hasSidebarItems () {
114
137
  return !!(this.$el.querySelector('#information-bar__children .top').children.length +
115
138
  this.$el.querySelector('#information-bar__children .bottom').children.length)
@@ -118,6 +141,33 @@ export default class InformationBar extends Vue {
118
141
  hideSidebar () {
119
142
  sidebarService.setInformation(false)
120
143
  }
144
+
145
+ getWidthFromItems () {
146
+ let width = 0
147
+
148
+ Array.from(this.getTopContainer().children).forEach(c => {
149
+ if (c.style.width !== 'auto') {
150
+ const w = parseInt(c.style.width)
151
+ width = Math.max(width, w)
152
+ }
153
+ })
154
+
155
+ Array.from(this.getBottomContainer().children).forEach(c => {
156
+ if (c.style.width !== 'auto') {
157
+ const w = parseInt(c.style.width)
158
+ width = Math.max(width, w)
159
+ }
160
+ })
161
+
162
+ return width
163
+ }
164
+
165
+ get widthStyle () {
166
+ return {
167
+ flex: `0 0 calc(${this.width}px + 3rem)`,
168
+ width: `calc(${this.width}px + 3rem)`
169
+ }
170
+ }
121
171
  }
122
172
  </script>
123
173
 
@@ -126,8 +176,6 @@ export default class InformationBar extends Vue {
126
176
  #information-bar {
127
177
  position: relative;
128
178
 
129
- flex: 0 0 300px;
130
- width: 300px;
131
179
  height: 100vh;
132
180
  overflow-x: hidden;
133
181
  overflow-y: auto;