glib-web 2.6.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/action.js +39 -17
  2. package/actions/analytics/logEvent.js +2 -2
  3. package/actions/auth/saveCsrfToken.js +6 -0
  4. package/actions/cables/push.js +4 -4
  5. package/actions/commands/enqueue.js +17 -0
  6. package/actions/fields/reset.js +2 -2
  7. package/actions/http/get.js +15 -27
  8. package/actions/panels/scrollTo.js +1 -1
  9. package/actions/panels/scrollToBottom.js +1 -1
  10. package/actions/popovers/close.js +5 -0
  11. package/actions/popovers/open.js +9 -0
  12. package/actions/windows/closeWithReload.js +1 -1
  13. package/actions/windows/refreshState.js +3 -1
  14. package/actions/ws/push.js +5 -3
  15. package/app.vue +59 -27
  16. package/components/_badge.vue +1 -6
  17. package/components/_button.vue +30 -30
  18. package/components/_chip.vue +27 -29
  19. package/components/_dropdownMenu.vue +10 -23
  20. package/components/_icon.vue +5 -5
  21. package/components/_responsive.vue +7 -21
  22. package/components/avatar.vue +11 -15
  23. package/components/banners/alert.vue +2 -7
  24. package/components/banners/select.vue +18 -30
  25. package/components/button.vue +4 -5
  26. package/components/component.vue +112 -133
  27. package/components/datetime.vue +2 -0
  28. package/components/fields/_patternText.vue +8 -19
  29. package/components/fields/_select.vue +9 -27
  30. package/components/fields/autocomplete.vue +8 -21
  31. package/components/fields/check.vue +5 -12
  32. package/components/fields/checkGroup.vue +3 -13
  33. package/components/fields/country/field.vue +9 -27
  34. package/components/fields/date.vue +5 -5
  35. package/components/fields/datetime.vue +6 -11
  36. package/components/fields/dynamicSelect.vue +8 -29
  37. package/components/fields/file.vue +10 -29
  38. package/components/fields/newRichText.vue +67 -54
  39. package/components/fields/otpField.vue +11 -31
  40. package/components/fields/phone/field.vue +60 -78
  41. package/components/fields/radio.vue +8 -44
  42. package/components/fields/radioGroup.vue +17 -19
  43. package/components/fields/rating.vue +9 -16
  44. package/components/fields/richText.vue +27 -45
  45. package/components/fields/select.vue +10 -7
  46. package/components/fields/stripe/stripeFields.vue +9 -2
  47. package/components/fields/stripe/stripeIndividualFields.vue +9 -7
  48. package/components/fields/stripeExternalAccount.vue +10 -24
  49. package/components/fields/text.vue +26 -50
  50. package/components/fields/textarea.vue +14 -27
  51. package/components/fields/timeZone.vue +9 -6
  52. package/components/fields/timer.vue +5 -11
  53. package/components/image.vue +12 -23
  54. package/components/label.vue +10 -18
  55. package/components/markdown.vue +45 -23
  56. package/components/mixins/events.js +24 -25
  57. package/components/mixins/generic.js +7 -4
  58. package/components/mixins/inputVariant.js +16 -0
  59. package/components/mixins/list/autoload.js +7 -5
  60. package/components/mixins/styles.js +16 -16
  61. package/components/mixins/table/autoload.js +6 -4
  62. package/components/mixins/ws/actionCable.js +6 -5
  63. package/components/mixins/ws/phoenixSocket.js +11 -9
  64. package/components/p.vue +10 -0
  65. package/components/panels/column.vue +8 -19
  66. package/components/panels/custom.vue +9 -13
  67. package/components/panels/flow.vue +19 -13
  68. package/components/panels/form.vue +26 -34
  69. package/components/panels/grid.vue +15 -9
  70. package/components/panels/horizontal.vue +58 -54
  71. package/components/panels/list.vue +37 -72
  72. package/components/panels/responsive.vue +2 -33
  73. package/components/panels/scroll.vue +3 -0
  74. package/components/panels/split.vue +2 -2
  75. package/components/panels/table.vue +32 -63
  76. package/components/panels/timeline.vue +20 -30
  77. package/components/panels/vertical.vue +8 -13
  78. package/components/popover.vue +39 -0
  79. package/components/progressCircle.vue +2 -8
  80. package/components/progressbar.vue +4 -14
  81. package/components/shareButton.vue +24 -30
  82. package/components/tabBar.vue +29 -28
  83. package/index.js +60 -94
  84. package/nav/appbar.vue +8 -6
  85. package/nav/dialog.vue +30 -49
  86. package/nav/drawer.vue +39 -51
  87. package/nav/drawerButton.vue +5 -7
  88. package/nav/drawerLabel.vue +2 -3
  89. package/nav/sheet.vue +21 -22
  90. package/nav/snackbar.vue +19 -30
  91. package/package.json +13 -16
  92. package/plugins/driverCustomBehavior.js +1 -1
  93. package/plugins/updatableComponent.js +2 -2
  94. package/plugins/vuetify.js +26 -0
  95. package/store.js +16 -0
  96. package/templates/comment.vue +42 -19
  97. package/templates/featured.vue +8 -9
  98. package/templates/thumbnail-old.vue +188 -0
  99. package/templates/thumbnail.vue +3 -208
  100. package/tsconfig.json +1 -1
  101. package/utils/component.js +18 -18
  102. package/utils/constant.js +4 -0
  103. package/utils/eventBus.js +9 -2
  104. package/utils/history.js +12 -8
  105. package/utils/http.js +29 -71
  106. package/utils/launch.js +89 -52
  107. package/utils/private/ws.js +5 -3
  108. package/utils/public.js +6 -0
  109. package/utils/queue.js +102 -0
  110. package/utils/settings.js +3 -9
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <common-responsive :style="floatingStyles" v-if="toggle" :spec="spec" />
3
+ </template>
4
+
5
+ <script>
6
+ import bus from "../utils/eventBus";
7
+
8
+ export default {
9
+ props: {
10
+ spec: { type: Object, required: true }
11
+ },
12
+ data() {
13
+ return {
14
+ toggle: true,
15
+ floatingStyles: {},
16
+ floatingSpec: {}
17
+ }
18
+ },
19
+ methods: {
20
+ $mounted() {
21
+ bus.$once(`popover/close-${this.spec.key}`, (options) => {
22
+ document.removeEventListener('click', this.handleClose)
23
+ this.toggle = false;
24
+ })
25
+ document.addEventListener('click', this.handleClose)
26
+ },
27
+ handleClose(event) {
28
+ const isClickInside = this.$el.contains(event.target)
29
+
30
+ if (!isClickInside) {
31
+ this.toggle = false;
32
+ }
33
+ }
34
+ }
35
+ };
36
+ </script>
37
+
38
+ <style scoped></style>
39
+
@@ -1,12 +1,6 @@
1
1
  <template>
2
- <v-progress-circular
3
- :class="$classes()"
4
- :rotate="spec.rotate || 270"
5
- :size="spec.size || 100"
6
- :width="spec.width || 20"
7
- :color="spec.color"
8
- :value="spec.value"
9
- >
2
+ <v-progress-circular :class="$classes()" :rotate="spec.rotate || 0" :size="spec.size || 100" :width="spec.width || 20"
3
+ :color="spec.color" :model-value="spec.value">
10
4
  <span class="grey--text text--lighten-1 text-h5">{{ spec.text }}</span>
11
5
  </v-progress-circular>
12
6
  </template>
@@ -1,18 +1,8 @@
1
1
  <template>
2
- <v-progress-linear
3
- :class="$classes()"
4
- :height="spec.height || 25"
5
- :color="spec.color"
6
- :background-color="spec.backgroundColor"
7
- :disabled="true"
8
- :value="value_in_percentage"
9
- :striped="$classes().includes('striped')"
10
- :reverse="spec.reversed || false"
11
- rounded
12
- >
13
- <strong v-if="!$classes().includes('no-text')"
14
- >{{ Math.ceil(value_in_percentage) }}%</strong
15
- >
2
+ <v-progress-linear :class="$classes()" :height="spec.height || 25" :color="spec.color"
3
+ :background-color="spec.backgroundColor" :disabled="true" :model-value="value_in_percentage"
4
+ :striped="$classes().includes('striped')" :reverse="spec.reversed || false" rounded>
5
+ <strong v-if="!$classes().includes('no-text')">{{ Math.ceil(value_in_percentage) }}%</strong>
16
6
  </v-progress-linear>
17
7
  </template>
18
8
 
@@ -1,16 +1,9 @@
1
1
  <template>
2
- <ShareNetwork
3
- :style="styles()"
4
- :network="spec.network"
5
- :url="spec.url"
6
- :title="spec.title"
7
- :description="spec.description"
8
- :quote="spec.facebookQuote"
9
- :hashtags="spec.hashtags"
10
- :twitter-user="spec.twitterUser"
11
- >
12
- <i :class="config[spec.network].icon"></i>
13
- <!-- <v-icon dark class="fah">facebook</v-icon> -->
2
+ <ShareNetwork :style="styles()" :network="network" :url="spec.url" :title="spec.title" :description="spec.description"
3
+ :quote="spec.facebookQuote" :hashtags="spec.hashtags" :twitter-user="spec.twitterUser">
4
+ <div class="fah">
5
+ <i class="material-icons v-icon">{{ config[spec.network].icon }}</i>
6
+ </div>
14
7
  <span v-if="spec.text">{{ spec.text }}</span>
15
8
  </ShareNetwork>
16
9
  </template>
@@ -24,69 +17,70 @@ export default {
24
17
  },
25
18
  data() {
26
19
  return {
20
+ network: this.spec.network !== 'copy' ? this.spec.network : 'facebook',
27
21
  config: {
28
22
  copy: {
29
- icon: "far fah fa-lg fa-copy",
23
+ icon: "content_copy",
30
24
  color: "#183153"
31
25
  },
32
26
  email: {
33
- icon: "far fah fa-lg fa-envelope",
27
+ icon: "envelope",
34
28
  color: "#333333"
35
29
  },
36
30
  facebook: {
37
- icon: "fab fah fa-lg fa-facebook-f",
31
+ icon: "facebook",
38
32
  color: "#1877f2"
39
33
  },
40
34
  hackernews: {
41
- icon: "fab fah fa-lg fa-hacker-news",
35
+ icon: "hacker-news",
42
36
  color: "#ff4000"
43
37
  },
44
38
  instapaper: {
45
- icon: "fas fah fa-lg fa-italic",
39
+ icon: "instapaper",
46
40
  color: "#428bca"
47
41
  },
48
42
  line: {
49
- icon: "fab fah fa-lg fa-line",
43
+ icon: "line",
50
44
  color: "#00c300"
51
45
  },
52
46
  linkedin: {
53
- icon: "fab fah fa-lg fa-linkedin",
47
+ icon: "work",
54
48
  color: "#007bb5"
55
49
  },
56
50
  messenger: {
57
- icon: "fab fah fa-lg fa-facebook-messenger",
51
+ icon: "facebook",
58
52
  color: "#0084ff"
59
53
  },
60
54
  pinterest: {
61
- icon: "fab fah fa-lg fa-pinterest",
55
+ icon: "pinterest",
62
56
  color: "#bd081c"
63
57
  },
64
58
  reddit: {
65
- icon: "fab fah fa-lg fa-reddit-alien",
59
+ icon: "reddit",
66
60
  color: "#ff4500"
67
61
  },
68
62
  telegram: {
69
- icon: "fab fah fa-lg fa-telegram-plane",
63
+ icon: "telegram",
70
64
  color: "#0088cc"
71
65
  },
72
66
  tumblr: {
73
- icon: "fab fah fa-lg fa-tumblr",
67
+ icon: "tumblr",
74
68
  color: "#35465c"
75
69
  },
76
70
  twitter: {
77
- icon: "fab fah fa-lg fa-twitter",
71
+ icon: "twitter",
78
72
  color: "#1da1f2"
79
73
  },
80
74
  weibo: {
81
- icon: "fab fah fa-lg fa-weibo",
75
+ icon: "weibo",
82
76
  color: "#e9152d"
83
77
  },
84
78
  whatsapp: {
85
- icon: "fab fah fa-lg fa-whatsapp",
79
+ icon: "whatsapp",
86
80
  color: "#25d366"
87
81
  },
88
82
  wordpress: {
89
- icon: "fab fah fa-lg fa-wordpress",
83
+ icon: "wordpress",
90
84
  color: "#21759b"
91
85
  }
92
86
  }
@@ -136,12 +130,12 @@ a[class^="share-network-"] {
136
130
 
137
131
  a[class^="share-network-"] .fah {
138
132
  background-color: rgba(0, 0, 0, 0.2);
139
- padding: 10px;
133
+ padding: 6px;
140
134
  flex: 0 1 auto;
141
135
  }
142
136
 
143
137
  a[class^="share-network-"] span {
144
- padding: 0 10px;
138
+ padding: 0 6px;
145
139
  flex: 1 1 0%;
146
140
  font-weight: 500;
147
141
  }
@@ -1,31 +1,21 @@
1
1
  <template>
2
2
  <div :style="'width: 100%'" :class="$classes()">
3
- <v-tabs
4
- v-model="tab"
5
- :background-color="spec.backgroundColor"
6
- :slider-color="spec.color"
7
- show-arrows
8
- :height="spec.height || 60"
9
- :grow="$classes().includes('no-grow') ? false : true"
10
- >
11
- <v-tab
12
- v-for="(item, index) in spec.buttons"
13
- :key="index"
14
- height="100%"
15
- :href="$href(item)"
16
- @click="$onClick($event, item)"
17
- >
18
- <common-badge :spec="item">
19
- <common-icon v-if="item.icon" :spec="item.icon" />
20
- <span :style="{ color: spec.color }">{{ item.text }}</span>
21
- </common-badge>
3
+ <v-tabs v-model="tab" :bg-color="spec.backgroundColor || 'white'" slider-color="primary" color="primary" show-arrows
4
+ :height="spec.height || 60" :grow="$classes().includes('no-grow') ? false : true">
5
+ <v-tab v-for="(item, index) in spec.buttons " :key="index" height="100%" :value="index">
6
+ <common-icon :class="index == spec.activeIndex ? 'text-primary' : null" :spec="item.icon" v-if="item.icon" />
7
+ <span :style="{ marginLeft: '2px' }" :class="index == spec.activeIndex ? 'text-primary' : null">{{ item.text
8
+ }}</span>
9
+
22
10
  </v-tab>
23
11
  </v-tabs>
24
- <v-divider />
12
+ <v-divider></v-divider>
25
13
  </div>
26
14
  </template>
27
15
 
28
16
  <script>
17
+ import Action from '../action';
18
+
29
19
  export default {
30
20
  props: {
31
21
  spec: { type: Object, required: true }
@@ -36,8 +26,25 @@ export default {
36
26
  buttons: null
37
27
  };
38
28
  },
29
+ watch: {
30
+ tab: function (val, oldVal) {
31
+ if (val == oldVal && oldVal == null) return null;
32
+
33
+ this.$nextTick(function () {
34
+ const activeTab = this.buttons[val]
35
+ const onClick = activeTab?.onClick
36
+
37
+ if (onClick) {
38
+ Action.execute(onClick, this)
39
+ }
40
+ })
41
+ }
42
+ },
39
43
  methods: {
40
44
  $ready() {
45
+ if (this.spec.activeIndex) {
46
+ this.tab = this.spec.activeIndex;
47
+ }
41
48
  this.buttons = this.spec.tabButtons || this.spec.buttons;
42
49
  for (const [index, button] of this.buttons.entries()) {
43
50
  if (button.disabled) {
@@ -49,20 +56,14 @@ export default {
49
56
  };
50
57
  </script>
51
58
  <style lang="scss" scoped>
52
- .full-width-divider .v-divider {
53
- position: absolute;
54
- left: 0;
55
- width: 100%;
56
- }
57
- .no-divider .v-divider {
58
- display: none;
59
- }
60
59
  .v-tab .v-badge span {
61
60
  // Make sure tab label is middle aligned.
62
61
  margin: auto 0;
63
62
  }
63
+
64
64
  /* .v-badge {
65
65
  top: 50%;
66
66
  transform: translate(0, -50%);
67
67
  } */
68
68
  </style>
69
+
package/index.js CHANGED
@@ -1,36 +1,49 @@
1
- import Vue from "vue";
2
- export { Vue };
3
-
1
+ import { createApp, h } from "vue";
2
+ import vuetify from "./plugins/vuetify";
4
3
  import App from "./app.vue";
4
+ import { settings } from "./utils/settings";
5
+ import { useTheme } from "vuetify";
6
+
7
+ import '@vueup/vue-quill/dist/vue-quill.snow.css';
5
8
 
6
- import * as VueGoogleMaps from "vue2-google-maps";
7
- Vue.use(VueGoogleMaps, {
8
- load: {
9
- key: process.env.GMAPS_API_KEY,
10
- libraries: "places"
9
+ // lib for deep merge
10
+ import merge from 'lodash.merge'
11
+
12
+ const Vue = createApp({
13
+ data() {
14
+ return {
15
+ vueApp,
16
+ themeConfig: useTheme()
17
+ }
18
+ },
19
+ created() {
20
+ this.themeConfig.themes = merge(this.themeConfig.themes, settings.themes)
21
+ },
22
+ render: function () {
23
+ return h(App, { page: this.$data.vueApp.page });
11
24
  }
12
- });
25
+ })
26
+
27
+
28
+ Vue.use(vuetify)
29
+
30
+ // import * as VueGoogleMaps from "vue2-google-maps";
31
+ // Vue.use(VueGoogleMaps, {
32
+ // load: {
33
+ // key: process.env.GMAPS_API_KEY,
34
+ // libraries: "places"
35
+ // }
36
+ // });
13
37
 
14
38
  import "./styles/test.scss";
15
39
  import "./styles/test.sass";
16
40
 
17
- import Vuetify from "vuetify";
18
- import "vuetify/dist/vuetify.min.css";
19
- // Only used for social media icons
20
- import "@fortawesome/fontawesome-free/css/all.css";
21
- // import "material-design-icons-iconfont/dist/material-design-icons.css";
22
- // import "@mdi/font/css/materialdesignicons.css";
23
- Vue.use(Vuetify);
24
41
 
25
- import Chartkick from "vue-chartkick";
26
- import Chart from "chart.js";
27
- import annotationPlugin from "chartjs-plugin-annotation";
28
- Chart.plugins.register(annotationPlugin);
29
- Vue.use(Chartkick.use(Chart));
30
-
31
- // TODO: make this opt-in
32
- import VueYoutube from "vue-youtube";
33
- Vue.use(VueYoutube);
42
+ // import Chartkick from "vue-chartkick";
43
+ // import Chart from "chart.js";
44
+ // import annotationPlugin from "chartjs-plugin-annotation";
45
+ // Chart.plugins.register(annotationPlugin);
46
+ // Vue.use(Chartkick.use(Chart));
34
47
 
35
48
  // import VueAnalytics from 'vue-analytics'
36
49
  // // TODO: Avoid hardcoding
@@ -45,25 +58,25 @@ import "./extensions/string.js";
45
58
  import "./extensions/array.js";
46
59
 
47
60
  // Recursive components must be global
48
- import VerticalPanel from "./components/panels/vertical";
49
- import ResponsivePanel from "./components/panels/responsive";
50
- import Component from "./components/component";
51
- import CommonIcon from "./components/_icon";
52
- import CommonBadge from "./components/_badge";
53
- import CommonTooltip from "./components/_tooltip";
54
- import CommonButton from "./components/_button";
55
- import CommonChip from "./components/_chip";
56
- import CommonMessage from "./components/_message";
57
- import CommonDropdownMenu from "./components/_dropdownMenu";
58
- import CommonResponsive from "./components/_responsive";
59
- import CommonTemplateMenu from "./templates/_menu";
60
- import RichButton from "./components/button";
61
+ import VerticalPanel from "./components/panels/vertical.vue";
62
+ import ResponsivePanel from "./components/panels/responsive.vue";
63
+ import Component from "./components/component.vue";
64
+ import CommonIcon from "./components/_icon.vue";
65
+ import CommonBadge from "./components/_badge.vue";
66
+ // import CommonTooltip from "./components/_tooltip.vue";
67
+ import CommonButton from "./components/_button.vue";
68
+ import CommonChip from "./components/_chip.vue";
69
+ import CommonMessage from "./components/_message.vue";
70
+ import CommonDropdownMenu from "./components/_dropdownMenu.vue";
71
+ import CommonResponsive from "./components/_responsive.vue";
72
+ import CommonTemplateMenu from "./templates/_menu.vue";
73
+ import RichButton from "./components/button.vue";
61
74
  Vue.component("panels-vertical", VerticalPanel);
62
75
  Vue.component("panels-responsive", ResponsivePanel);
63
76
  Vue.component("common-button", CommonButton);
64
77
  Vue.component("common-icon", CommonIcon);
65
78
  Vue.component("common-badge", CommonBadge);
66
- Vue.component("common-tooltip", CommonTooltip);
79
+ // Vue.component("common-tooltip", CommonTooltip);
67
80
  Vue.component("common-chip", CommonChip);
68
81
  Vue.component("common-message", CommonMessage);
69
82
  Vue.component("common-dropdownMenu", CommonDropdownMenu);
@@ -91,7 +104,7 @@ Vue.mixin(scrollingMixin);
91
104
  import datasetMixins from "./components/mixins/dataset.js";
92
105
  Vue.mixin(datasetMixins);
93
106
 
94
- Vue.prototype.extension = {};
107
+ Vue.config.globalProperties.extension = {};
95
108
  import extension from "./components/mixins/extension.js";
96
109
  Vue.mixin(extension);
97
110
 
@@ -102,8 +115,8 @@ Vue.directive("longclick", window.longClickInstance);
102
115
  // TODO: Deprecate
103
116
  import TypeUtils from "./utils/type";
104
117
  Vue.use({
105
- install: function(Vue, options) {
106
- Vue.prototype.$type = {
118
+ install: function (Vue, options) {
119
+ Vue.config.globalProperties.$type = {
107
120
  isObject: TypeUtils.isObject,
108
121
  isString: TypeUtils.isString,
109
122
  isNumber: TypeUtils.isNumber,
@@ -123,9 +136,6 @@ window.Utils = Utils;
123
136
  import Framework from "./utils/public";
124
137
  window.GLib = Framework;
125
138
 
126
- import { settings } from "./utils/settings";
127
- export { settings };
128
-
129
139
  import driverCustomBehavior from "./plugins/driverCustomBehavior";
130
140
  Vue.use(driverCustomBehavior);
131
141
 
@@ -140,59 +150,15 @@ Vue.use(updatableComponent);
140
150
  // require(['./my-async-component'], resolve)
141
151
  // })
142
152
 
143
- import VueGtag from "vue-gtag";
144
153
 
145
- document.addEventListener("DOMContentLoaded", () => {
146
- const gtagId = settings.gtagId;
147
- if (gtagId) {
148
- Vue.use(VueGtag, {
149
- config: {
150
- id: settings.gtagId,
151
- params: {
152
- send_page_view: false
153
- }
154
- }
155
- });
156
- }
154
+ import { vueApp } from "./store";
157
155
 
158
- window.vueApp = {
159
- vuetify: new Vuetify({
160
- icons: {
161
- iconfont: "md"
162
- },
163
- theme: {
164
- themes: Utils.settings.themes
165
- },
166
- breakpoint: {
167
- smAndDown: true
168
- }
169
- }),
170
- page: window.__page,
171
- indicator: false,
172
- // Rename to isPageStale
173
- isStale: false,
174
- /// Dirty form handling
175
- isFormSubmitted: false,
176
- isFormDirty: false,
177
- ///
178
- stateUpdatedAt: null,
179
- webSocket: { channels: {}, header: {} },
180
- actionCable: { channels: {} },
181
- registeredComponents: [],
182
- temp: {}
183
- };
184
- new Vue({
185
- el: "#app",
186
- vuetify: window.vueApp.vuetify,
187
- data: {
188
- vueApp: window.vueApp
189
- },
190
- render: function(createElement) {
191
- return createElement(App, { props: { page: this.$data.vueApp.page } });
192
- }
193
- });
156
+ document.addEventListener("DOMContentLoaded", () => {
157
+ Vue.mount("#app")
194
158
  });
195
159
 
160
+ export { Vue, settings }
161
+
196
162
  // The above code uses Vue without the compiler, which means you cannot
197
163
  // use Vue to target elements in your existing html templates. You would
198
164
  // need to always use single file components.
package/nav/appbar.vue CHANGED
@@ -5,7 +5,7 @@
5
5
  <v-toolbar v-if="navBar.height" :style="style" :height="navBar.height" :class="cssClasses()">
6
6
  <v-app-bar-nav-icon v-if="page.leftDrawer && !isPermanent" style="color: inherit;"
7
7
  @click="drawerTrigger = new Date()"></v-app-bar-nav-icon>
8
- <v-progress-circular v-if="$root.vueApp.indicator" indeterminate></v-progress-circular>
8
+ <v-progress-circular v-if="vueApp.indicator" indeterminate></v-progress-circular>
9
9
  <div v-else>
10
10
  <panels-responsive v-if="navBar.logo" :spec="navBar.logo" />
11
11
  <v-toolbar-title v-else-if="navBar.showTitle">{{
@@ -34,8 +34,9 @@
34
34
  </template>
35
35
 
36
36
  <script>
37
- import NavDrawer from "./drawer";
38
- import ViewsAvatar from "../components/avatar";
37
+ import NavDrawer from "./drawer.vue";
38
+ import ViewsAvatar from "../components/avatar.vue";
39
+ import { vueApp } from "../store";
39
40
 
40
41
  export default {
41
42
  components: {
@@ -49,7 +50,8 @@ export default {
49
50
  return {
50
51
  drawerTrigger: null,
51
52
  navBar: {},
52
- rightButtons: []
53
+ rightButtons: [],
54
+ vueApp
53
55
  // on: false
54
56
  };
55
57
  },
@@ -59,7 +61,7 @@ export default {
59
61
  },
60
62
  // We could've used the `app` attribute on `v-toolbar` if it didn't conflict with our header-footer css.
61
63
  leftPadding: function () {
62
- switch (this.$vuetify.breakpoint.name) {
64
+ switch (this.$vuetify.display.name) {
63
65
  case "lg":
64
66
  case "xl":
65
67
  return { "padding-left": "270px" };
@@ -71,7 +73,7 @@ export default {
71
73
  return this.leftPadding !== null;
72
74
  },
73
75
  showMobileMenu() {
74
- return this.rightButtons.length > 0 && this.$vuetify.breakpoint.smAndDown;
76
+ return this.rightButtons.length > 0 && this.$vuetify.display.smAndDown;
75
77
  },
76
78
  mobileMenu() {
77
79
  return {