glib-web 2.4.1 → 3.0.0-beta1

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 (100) hide show
  1. package/LICENSE +0 -0
  2. package/action.js +6 -1
  3. package/actions/auth/restart.js +0 -0
  4. package/actions/commands/enqueue.js +17 -0
  5. package/actions/components/update.js +13 -14
  6. package/actions/dialogs/oauth.js +0 -0
  7. package/actions/dialogs/options.js +0 -0
  8. package/app.vue +25 -26
  9. package/components/_button.vue +21 -28
  10. package/components/_chip.vue +14 -19
  11. package/components/_dropdownMenu.vue +10 -23
  12. package/components/_icon.vue +5 -5
  13. package/components/_message.vue +0 -0
  14. package/components/_responsive.vue +7 -21
  15. package/components/avatar.vue +11 -15
  16. package/components/banners/alert.vue +2 -7
  17. package/components/banners/select.vue +18 -30
  18. package/components/button.vue +5 -5
  19. package/components/component.vue +97 -100
  20. package/components/datetime.vue +0 -0
  21. package/components/fab.vue +0 -0
  22. package/components/fields/_patternText.vue +5 -19
  23. package/components/fields/_select.vue +7 -28
  24. package/components/fields/autocomplete.vue +5 -21
  25. package/components/fields/check.vue +19 -11
  26. package/components/fields/country/countries.js +0 -0
  27. package/components/fields/country/field.vue +9 -27
  28. package/components/fields/country/regions.js +0 -0
  29. package/components/fields/date.vue +5 -5
  30. package/components/fields/datetime.vue +5 -5
  31. package/components/fields/dynamicSelect.vue +8 -29
  32. package/components/fields/newRichText.vue +66 -53
  33. package/components/fields/otpField.vue +90 -0
  34. package/components/fields/phone/field.vue +60 -78
  35. package/components/fields/radio.vue +16 -23
  36. package/components/fields/rating.vue +9 -16
  37. package/components/fields/richText.vue +8 -28
  38. package/components/fields/select.vue +10 -7
  39. package/components/fields/stripeExternalAccount.vue +10 -24
  40. package/components/fields/text.vue +24 -40
  41. package/components/fields/textarea.vue +13 -27
  42. package/components/fields/timeZone.vue +9 -6
  43. package/components/fields/timer.vue +3 -10
  44. package/components/hr.vue +0 -0
  45. package/components/html.vue +0 -0
  46. package/components/image.vue +13 -20
  47. package/components/map.vue +115 -29
  48. package/components/markdown.vue +15 -8
  49. package/components/mixins/events.js +17 -6
  50. package/components/mixins/longClick.js +0 -0
  51. package/components/mixins/scrolling.js +0 -0
  52. package/components/mixins/styles.js +18 -15
  53. package/components/mixins/table/export.js +0 -0
  54. package/components/mixins/table/import.js +0 -0
  55. package/components/p.vue +0 -0
  56. package/components/panels/column.vue +5 -5
  57. package/components/panels/custom.vue +15 -15
  58. package/components/panels/flow.vue +19 -13
  59. package/components/panels/form.vue +17 -28
  60. package/components/panels/grid.vue +15 -9
  61. package/components/panels/horizontal.vue +149 -18
  62. package/components/panels/list.vue +63 -70
  63. package/components/panels/responsive.vue +13 -33
  64. package/components/panels/split.vue +2 -2
  65. package/components/panels/table.vue +27 -61
  66. package/components/panels/timeline.vue +20 -30
  67. package/components/panels/vertical.vue +9 -14
  68. package/components/tabBar.vue +27 -19
  69. package/index.js +68 -72
  70. package/keys.js +0 -0
  71. package/nav/appbar.vue +4 -4
  72. package/nav/dialog.vue +24 -34
  73. package/nav/drawer.vue +39 -51
  74. package/nav/drawerButton.vue +5 -7
  75. package/nav/drawerLabel.vue +2 -3
  76. package/nav/sheet.vue +18 -24
  77. package/nav/snackbar.vue +16 -26
  78. package/package.json +10 -11
  79. package/plugins/driverCustomBehavior.js +1 -1
  80. package/plugins/updatableComponent.js +1 -7
  81. package/plugins/vuetify.js +27 -0
  82. package/settings.json.example +0 -0
  83. package/styles/test.sass +0 -0
  84. package/styles/test.scss +0 -0
  85. package/templates/comment.vue +42 -19
  86. package/templates/featured.vue +8 -9
  87. package/templates/thumbnail-old.vue +188 -0
  88. package/templates/thumbnail.vue +5 -188
  89. package/templates/unsupported.vue +0 -0
  90. package/tsconfig.json +1 -1
  91. package/utils/dom.js +0 -0
  92. package/utils/eventBus.js +9 -2
  93. package/utils/history.js +7 -4
  94. package/utils/http.js +7 -2
  95. package/utils/launch.js +43 -51
  96. package/utils/public.js +6 -0
  97. package/utils/queue.js +110 -0
  98. package/utils/settings.js +3 -1
  99. package/utils/storage.js +0 -0
  100. package/utils/url.js +0 -0
package/LICENSE CHANGED
File without changes
package/action.js CHANGED
@@ -50,11 +50,14 @@ import ActionsAnalyticsLogEvent from "./actions/analytics/logEvent";
50
50
 
51
51
  import ActionCommandsCopy from "./actions/commands/copy";
52
52
  import ActionCommandsCustom from "./actions/commands/custom";
53
+ import ActionCommandsEnqueue from "./actions/commands/enqueue";
53
54
 
54
55
  import ActionToursStart from "./actions/tours/start";
55
56
 
56
57
  import ActionComponentsUpdate from "./actions/components/update";
57
58
 
59
+ import eventBus from "./utils/eventBus";
60
+
58
61
  const actions = {
59
62
  runMultiple: ActionsRunMultiple,
60
63
 
@@ -106,6 +109,7 @@ const actions = {
106
109
 
107
110
  "commands/copy": ActionCommandsCopy,
108
111
  "commands/custom": ActionCommandsCustom,
112
+ "commands/enqueue": ActionCommandsEnqueue,
109
113
 
110
114
  "tours/start": ActionToursStart,
111
115
  "components/update": ActionComponentsUpdate
@@ -180,7 +184,8 @@ export default class Action {
180
184
  // TODO: The execution should be in the following order: onResponse, page render, onLoad
181
185
  if (response.header || response.body || response.footer) {
182
186
  Utils.http.forceComponentUpdate(() => {
183
- window.vueApp.page = response;
187
+ // window.vueApp.page = response;
188
+ eventBus.$emit('app/updatePage', response)
184
189
  });
185
190
  }
186
191
 
File without changes
@@ -0,0 +1,17 @@
1
+ // import Hash from "../../utils/hash";
2
+
3
+ export default class {
4
+ // async executeJob(spec, component) {
5
+ // console.log("Waiting for next job1...");
6
+ // GLib.action.execute(spec.onExecute, component);
7
+ // await this.sleep(2000);
8
+ // console.log("Waiting for next job2...");
9
+ // }
10
+ execute(spec, component) {
11
+ GLib.queue.enqueue(() => {
12
+ GLib.action.execute(spec.onExecute, component);
13
+ // console.log("Waiting for next job0...");
14
+ // this.executeJob(spec, component);
15
+ });
16
+ }
17
+ }
@@ -1,29 +1,28 @@
1
- import Vue from "vue";
1
+ import { Vue } from "../../index";
2
2
 
3
3
  export default class {
4
4
  execute(spec, component) {
5
5
  if (!spec.views.length > 1) {
6
6
  console.warn("Make sure views only have 1 child!");
7
7
  }
8
- // const target = component.updatables[spec.targetId];
9
- // if (!target) console.error("no component found :" + spec.targetId);
10
8
 
11
9
  const target = GLib.component.findById(spec.targetId);
12
10
  if (target) {
13
11
  Object.assign(target.spec, spec.views[0]);
14
- this.updateComponent(target);
12
+ target.$recursiveUpdate();
15
13
  }
16
14
  }
17
15
 
18
- updateComponent(component) {
19
- component.$ready();
20
- component.$forceUpdate();
16
+ // // TODO: Use $recursiveUpdate(). See mixins/events
17
+ // updateComponent(component) {
18
+ // component.$ready();
19
+ // component.$forceUpdate();
21
20
 
22
- // Execute on next tick to ensure that the child has received the updated spec.
23
- Vue.nextTick(() => {
24
- component.$children.find(child => {
25
- this.updateComponent(child);
26
- });
27
- });
28
- }
21
+ // // Execute on next tick to ensure that the child has received the updated spec.
22
+ // Vue.nextTick(() => {
23
+ // component.$children.find(child => {
24
+ // this.updateComponent(child);
25
+ // });
26
+ // });
27
+ // }
29
28
  }
File without changes
File without changes
package/app.vue CHANGED
@@ -1,25 +1,14 @@
1
1
  <template>
2
2
  <v-app :class="page.styleClasses">
3
- <component
4
- :is="containerComponent"
5
- :spec="formSpec"
6
- :style="'height: 100%;'"
7
- >
3
+ <component :is="containerComponent" :spec="formSpec" :style="'height: 100%;'">
8
4
  <nav-appbar ref="appBar" :page="page" />
9
5
 
10
- <v-progress-linear
11
- v-if="$root.vueApp.indicator"
12
- :indeterminate="true"
13
- height="5"
14
- style="position: fixed; z-index: 4;"
15
- >
6
+ <v-progress-linear v-if="$root.vueApp.indicator" :indeterminate="true" height="5"
7
+ style="position: fixed; z-index: 4;">
16
8
  </v-progress-linear>
17
9
 
18
10
  <v-main :style="`height: ${mainHeight}px;`">
19
- <v-container
20
- :fluid="page.template == 'fullWidth'"
21
- :class="containerClasses"
22
- >
11
+ <v-container :fluid="page.template == 'fullWidth'" :class="containerClasses">
23
12
  <div class="pages-header">
24
13
  <panels-responsive :spec="header" />
25
14
  </div>
@@ -38,25 +27,25 @@
38
27
  </template>
39
28
 
40
29
  <script>
41
- import NavAppBar from "./nav/appbar";
30
+ import NavAppBar from "./nav/appbar.vue";
42
31
  import Utils from "./utils/helper";
43
32
  import phoenixSocketMixin from "./components/mixins/ws/phoenixSocket.js";
44
33
  import actionCableMixin from "./components/mixins/ws/actionCable.js";
45
- import FormPanel from "./components/panels/form";
34
+ import FormPanel from "./components/panels/form.vue";
46
35
 
47
36
  export default {
48
37
  components: {
49
38
  "nav-appbar": NavAppBar,
50
- "panels-form": FormPanel
39
+ "panels-form": FormPanel,
51
40
  },
52
41
  mixins: [phoenixSocketMixin, actionCableMixin],
53
42
  props: {
54
- page: { type: Object, required: true }
43
+ page: { type: Object, required: true },
55
44
  },
56
45
  data() {
57
46
  return {
58
47
  title: "...",
59
- mainHeight: 0
48
+ mainHeight: 0,
60
49
  };
61
50
  },
62
51
  computed: {
@@ -83,10 +72,10 @@ export default {
83
72
  // Use computed to ensure that the spec gets updated when the user navigates to another page.
84
73
  formSpec() {
85
74
  return this.page.fullPageForm;
86
- }
75
+ },
87
76
  },
88
77
  watch: {
89
- "$root.indicator": function(val, oldVal) {
78
+ "$root.indicator": function (val, oldVal) {
90
79
  document.title = val ? "..." : this.page.title;
91
80
  }
92
81
  },
@@ -102,7 +91,7 @@ export default {
102
91
  $mounted() {
103
92
  window.addEventListener(
104
93
  "resize",
105
- event => {
94
+ (event) => {
106
95
  this.updateMainHeight();
107
96
  },
108
97
  true
@@ -118,7 +107,7 @@ export default {
118
107
  if (!Utils.settings.isDev) {
119
108
  console.log(`Tracking analytics: ${window.location}`);
120
109
  this.$gtag.pageview({
121
- page_location: window.location
110
+ page_location: window.location,
122
111
  });
123
112
  }
124
113
  } else {
@@ -146,8 +135,8 @@ export default {
146
135
  updateMainHeight() {
147
136
  console.debug("Setting body height");
148
137
  this.mainHeight = window.innerHeight - this.$refs.appBar.$el.offsetHeight;
149
- }
150
- }
138
+ },
139
+ },
151
140
  };
152
141
  </script>
153
142
 
@@ -165,6 +154,7 @@ export default {
165
154
  body {
166
155
  // Hide superfluous scrollbar (Edge)
167
156
  -ms-overflow-style: none;
157
+
168
158
  * {
169
159
  -ms-overflow-style: initial;
170
160
  }
@@ -174,6 +164,7 @@ body {
174
164
  display: none;
175
165
  }
176
166
  }
167
+
177
168
  html {
178
169
  // Hide superfluous scrollbar (Firefox)
179
170
  scrollbar-width: none;
@@ -185,15 +176,22 @@ body,
185
176
  #app {
186
177
  height: 100%;
187
178
  }
179
+
188
180
  /******/
189
181
 
190
182
  /*** panels/scrollTo support ***/
191
183
  .glib-scrollto {
192
184
  transition: background 0.5s;
193
185
  }
186
+
194
187
  .glib-scrollto--highlighted {
195
188
  background: yellow !important;
196
189
  }
190
+
191
+ .glib-clickable {
192
+ cursor: pointer;
193
+ }
194
+
197
195
  /******/
198
196
  </style>
199
197
 
@@ -212,5 +210,6 @@ body,
212
210
  /* overflow-y: auto; */
213
211
  overflow-y: overlay;
214
212
  }
213
+
215
214
  /******/
216
215
  </style>
@@ -1,32 +1,19 @@
1
1
  <template>
2
- <common-badge :spec="spec">
3
- <!-- Use `click.prevent` to prevent bubbling when clicking a dropdown button that is
2
+ <!-- <common-badge :spec="spec"> -->
3
+ <!-- Use `click.prevent` to prevent bubbling when clicking a dropdown button that is
4
4
  located in a list row that has href. -->
5
- <v-btn
6
- :type="type"
7
- :disabled="disabled || $isBusy || spec.disabled"
8
- :style="styles()"
9
- :class="$classes()"
10
- :href="$href()"
11
- :rel="$rel()"
12
- :text="linkStyling || $classes().includes('text')"
13
- :small="linkStyling"
14
- :icon="$classes().includes('icon')"
15
- :outlined="$classes().includes('outlined')"
16
- :tile="$classes().includes('tile')"
17
- :rounded="$classes().includes('rounded')"
18
- :depressed="$classes().includes('depressed')"
19
- @click.prevent="
20
- type == 'submit' ? $dispatchEvent('forms/submit') : $onClick()
21
- "
22
- v-on="eventHandlers"
23
- >
24
- <span><common-icon :spec="spec.icon || {}"/></span>
25
- <div :class="hideTextOnXs && spec.icon ? 'd-none d-sm-flex' : null">
26
- {{ spec.text }}
27
- </div>
28
- </v-btn>
29
- </common-badge>
5
+ <v-btn :type="type" :disabled="disabled || $isBusy || spec.disabled" :style="styles()" :class="$classes()"
6
+ :href="$href()" :rel="$rel()" :small="linkStyling || null" :icon="$classes().includes('icon')"
7
+ :outlined="$classes().includes('outlined') || null" :tile="$classes().includes('tile') || null"
8
+ :rounded="$classes().includes('rounded')" :depressed="$classes().includes('depressed') || null" @click.prevent="
9
+ type == 'submit' ? $dispatchEvent('forms/submit') : $onClick()
10
+ ">
11
+ <span><common-icon :spec="spec.icon || {}" /></span>
12
+ <div :class="hideTextOnXs && spec.icon ? 'd-none d-sm-flex' : null">
13
+ {{ spec.text }}
14
+ </div>
15
+ </v-btn>
16
+ <!-- </common-badge> -->
30
17
  </template>
31
18
 
32
19
  <script>
@@ -38,7 +25,7 @@ export default {
38
25
  hideTextOnXs: { type: Boolean },
39
26
  eventHandlers: { type: Object, default: null }
40
27
  },
41
- data: function() {
28
+ data: function () {
42
29
  return {
43
30
  linkStyling: false
44
31
  };
@@ -79,6 +66,7 @@ button {
79
66
  min-width: 0;
80
67
  margin: 0;
81
68
  }
69
+
82
70
  .v-btn {
83
71
  &.link {
84
72
  text-transform: none !important;
@@ -93,17 +81,21 @@ button {
93
81
  min-width: auto;
94
82
  }
95
83
  }
84
+
96
85
  .v-btn--rounded {
97
86
  // Override .v-application.rounded
98
87
  border-radius: 28px !important;
99
88
  }
89
+
100
90
  .v-banner__wrapper .v-btn:not(.v-btn--round).v-size--default {
101
91
  min-width: 0;
102
92
  padding: 0;
103
93
  }
94
+
104
95
  .v-banner__wrapper .v-btn.v-size--default {
105
96
  font-size: 12px;
106
97
  }
98
+
107
99
  .breadcrumbs .v-btn.link {
108
100
  display: inline-table;
109
101
  justify-content: left;
@@ -114,6 +106,7 @@ button {
114
106
  .v-banner__wrapper.v-btn.v-size--default {
115
107
  font-size: 0.875rem;
116
108
  }
109
+
117
110
  .v-banner__wrapper.v-btn:not(.v-btn--round).v-size--default {
118
111
  min-width: 64px;
119
112
  padding: 0 16px;
@@ -1,23 +1,18 @@
1
1
  <template>
2
- <common-tooltip :spec="spec">
3
- <template v-slot:activator="{ on }">
4
- <common-badge :spec="spec">
5
- <v-chip
6
- v-if="spec.onClick"
7
- :style="genericStyles()"
8
- :class="$classes()"
9
- :href="$href()"
10
- @click="$onClick()"
11
- v-on="on"
12
- >
13
- {{ spec.text }}
14
- </v-chip>
15
- <v-chip v-else :style="genericStyles()" :class="$classes()" v-on="on">
16
- {{ spec.text }}
17
- </v-chip>
18
- </common-badge>
19
- </template>
20
- </common-tooltip>
2
+ <!-- <common-tooltip :spec="spec"> -->
3
+ <!-- <template v-slot:activator="{ on }"> -->
4
+ <!-- <common-badge :spec="spec"> -->
5
+ <div>
6
+ <v-chip v-if="spec.onClick" :style="genericStyles()" :class="$classes()" :href="$href()" @click="$onClick()">
7
+ {{ spec.text }}
8
+ </v-chip>
9
+ <v-chip v-else :style="genericStyles()" :class="$classes()">
10
+ {{ spec.text }}
11
+ </v-chip>
12
+ </div>
13
+ <!-- </common-badge> -->
14
+ <!-- </template> -->
15
+ <!-- </common-tooltip> -->
21
16
  </template>
22
17
 
23
18
  <script>
@@ -1,30 +1,16 @@
1
1
  <template>
2
2
  <v-menu left bottom>
3
- <template v-slot:activator="{ on, attrs }">
4
- <v-btn
5
- :icon="iconStyling"
6
- :text="textStyling"
7
- v-bind="attrs"
8
- style="color: inherit;"
9
- v-on="on"
10
- @click.stop.prevent=""
11
- >
12
- <span v-if="spec.icon" :class="[textStyling ? 'padder' : '']"
13
- ><common-icon :spec="spec.icon || {}"
14
- /></span>
3
+ <template v-slot:activator="{ props }">
4
+ <v-btn :icon="iconStyling" :text="textStyling || null" v-bind="props" style="color: inherit;"
5
+ @click.stop.prevent="">
6
+ <span v-if="spec.icon" :class="[textStyling ? 'padder' : '']"><common-icon :spec="spec.icon || {}" /></span>
15
7
  {{ spec.text }}
16
8
  </v-btn>
17
9
  </template>
18
10
 
19
11
  <v-list>
20
- <v-list-item
21
- v-for="(childItem, childIndex) in spec.childButtons"
22
- :key="childIndex"
23
- >
24
- <common-button
25
- :spec="buttonSpec(childItem)"
26
- :disabled="childItem.disabled || $isBusy"
27
- />
12
+ <v-list-item v-for="(childItem, childIndex) in spec.childButtons" :key="childIndex">
13
+ <common-button :spec="buttonSpec(childItem)" :disabled="childItem.disabled || $isBusy" />
28
14
  </v-list-item>
29
15
  </v-list>
30
16
  </v-menu>
@@ -35,7 +21,7 @@ export default {
35
21
  props: {
36
22
  spec: { type: Object, required: true }
37
23
  },
38
- data: function() {
24
+ data: function () {
39
25
  return {
40
26
  iconStyling: false,
41
27
  textStyling: false
@@ -63,13 +49,14 @@ export default {
63
49
  .v-list-item {
64
50
  padding: 0 8px 0 8px;
65
51
 
66
- > a,
67
- > button {
52
+ >a,
53
+ >button {
68
54
  width: 100%;
69
55
  min-height: 48px;
70
56
  justify-content: flex-start;
71
57
  }
72
58
  }
59
+
73
60
  .padder {
74
61
  margin-right: 8px;
75
62
  }
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <common-badge :spec="spec">
3
- <v-icon :style="genericStyles()" :size="size" :color="color">{{
4
- value
5
- }}</v-icon>
6
- </common-badge>
2
+ <!-- <common-badge :spec="spec"> -->
3
+ <v-icon :style="genericStyles()" :size="size" :color="color">{{
4
+ value
5
+ }}</v-icon>
6
+ <!-- </common-badge> -->
7
7
  </template>
8
8
 
9
9
  <script>
File without changes
@@ -1,25 +1,9 @@
1
1
  <template>
2
- <component
3
- :is="componentName"
4
- :class="cssClasses"
5
- :style="$styles()"
6
- :href="$href()"
7
- @click="$onClick()"
8
- v-on="eventHandlers"
9
- >
2
+ <component :is="componentName" :class="cssClasses" :style="$styles()" :href="$href()" @click="$onClick()">
10
3
  <v-row no-gutters class="full-height">
11
4
  <template v-for="(item, index) in spec.childViews">
12
- <glib-component
13
- v-if="isColumn(item)"
14
- :key="viewKey(item, index)"
15
- :spec="item"
16
- />
17
- <div
18
- v-else
19
- :key="viewKey(item, index)"
20
- class="full-width"
21
- :style="innerStyles"
22
- >
5
+ <glib-component v-if="isColumn(item)" :key="viewKey(item, index)" :spec="item" />
6
+ <div v-else :key="'else-' + viewKey(item, index)" class="full-width" :style="innerStyles">
23
7
  <glib-component :spec="item" />
24
8
  </div>
25
9
  </template>
@@ -28,7 +12,6 @@
28
12
  </template>
29
13
 
30
14
  <script>
31
- import Vue from "vue";
32
15
 
33
16
  export default {
34
17
  props: {
@@ -62,7 +45,7 @@ export default {
62
45
  default:
63
46
  align = "flex-start";
64
47
  }
65
- Vue.set(this.innerStyles, "align-items", align);
48
+ Object.assign(this.innerStyles, { 'align-items': align })
66
49
  },
67
50
  isColumn(item) {
68
51
  return item.view == "panels/column-v1";
@@ -80,16 +63,19 @@ export default {
80
63
  margin-left: 0;
81
64
  margin-right: 0;
82
65
  }
66
+
83
67
  .full-width {
84
68
  width: 100%;
85
69
  flex: 0 0 100%;
86
70
  display: flex;
87
71
  flex-direction: column;
88
72
  }
73
+
89
74
  // Needed to ensure that split's sub panels have the same height
90
75
  .full-height {
91
76
  height: 100%;
92
77
  }
78
+
93
79
  a.panels-responsive {
94
80
  color: inherit;
95
81
  text-decoration: inherit;
@@ -1,19 +1,15 @@
1
1
  <template>
2
- <common-tooltip :spec="spec">
3
- <template v-slot:activator="{ on }">
4
- <common-badge :spec="spec">
5
- <v-avatar :size="spec.size">
6
- <!-- Use `img` instead of `v-img` otherwise the rounded border will not work. -->
7
- <img
8
- :style="$styles()"
9
- :src="spec.url || spec.base64Data"
10
- @click="$onClick()"
11
- v-on="on"
12
- />
13
- </v-avatar>
14
- </common-badge>
15
- </template>
16
- </common-tooltip>
2
+ <!-- <common-tooltip :spec="spec"> -->
3
+ <!-- <template v-slot:activator="{ on }"> -->
4
+ <!-- <common-badge :spec="spec"> -->
5
+ <v-avatar :size="spec.size">
6
+ <!-- Use `img` instead of `v-img` otherwise the rounded border will not work. -->
7
+ <img :style="$styles()" :src="spec.url || spec.base64Data" @click="$onClick()" />
8
+ </v-avatar>
9
+ <!-- </common-badge> -->
10
+ <!-- </template> -->
11
+ <!-- </common-tooltip>
12
+ -->
17
13
  </template>
18
14
 
19
15
  <script>
@@ -1,11 +1,6 @@
1
1
  <template>
2
- <v-alert
3
- :style="genericStyles()"
4
- :class="$classes()"
5
- :value="true"
6
- :color="color"
7
- :outlined="!$classes().includes('frameless')"
8
- >
2
+ <v-alert :style="genericStyles()" :class="$classes()" :value="true" :color="color"
3
+ :outlined="!$classes().includes('frameless') || null">
9
4
  <!-- <span class="padder" v-if="spec.icon"><common-icon :spec="spec.icon || {}" /></span> -->
10
5
  <!-- <common-icon :spec="spec.icon || {}" /> -->
11
6
  <common-message :spec="spec" />
@@ -1,34 +1,21 @@
1
1
  <template>
2
- <v-banner
3
- :style="genericStyles()"
4
- :class="$classes()"
5
- :color="spec.color || color"
6
- :dark="dark"
7
- single-line
8
- :outlined="!$classes().includes('frameless')"
9
- >
10
- <common-icon v-if="spec.icon" slot="icon" :spec="spec.icon" />
2
+ <div :style="genericStyles()" :class="$classes()" :color="spec.color || color">
3
+ <v-banner>
11
4
 
12
- <common-message :spec="spec" />
13
-
14
- <template v-slot:actions>
15
- <template v-for="(item, index) in spec.buttons">
16
- <common-dropdownMenu
17
- v-if="item.childButtons"
18
- :key="index"
19
- :spec="item"
20
- :disabled="$isBusy"
21
- />
22
- <common-button
23
- v-else
24
- :key="index"
25
- :spec="buttonSpec(item)"
26
- :disabled="$isBusy"
27
- :hide-text-on-xs="true"
28
- />
5
+ <template v-if="spec.icon" v-slot:prepend>
6
+ <common-icon slot="icon" :spec="spec.icon" />
29
7
  </template>
30
- </template>
31
- </v-banner>
8
+
9
+ <v-banner-text>{{ spec.message }}</v-banner-text>
10
+
11
+ <v-banner-actions>
12
+ <template v-for="(item, index) in spec.buttons">
13
+ <common-dropdownMenu v-if="item.childButtons" :key="'left-' + index" :spec="item" :disabled="$isBusy" />
14
+ <common-button v-else :key="index" :spec="buttonSpec(item)" :disabled="$isBusy" :hide-text-on-xs="true" />
15
+ </template>
16
+ </v-banner-actions>
17
+ </v-banner>
18
+ </div>
32
19
  </template>
33
20
 
34
21
  <script>
@@ -68,11 +55,12 @@ export default {
68
55
  .frameless {
69
56
  padding: 0;
70
57
  }
58
+
71
59
  .v-list-item {
72
60
  padding: 0 8px 0 8px;
73
61
 
74
- > a,
75
- > button {
62
+ >a,
63
+ >button {
76
64
  width: 100%;
77
65
  min-height: 48px;
78
66
  justify-content: flex-start;
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <common-tooltip ref="tooltip" :spec="spec">
3
- <template v-slot:activator="{ on }">
4
- <common-button :spec="spec" :disabled="$isBusy" :event-handlers="on" />
5
- </template>
6
- </common-tooltip>
2
+ <!-- <common-tooltip ref="tooltip" :spec="spec"> -->
3
+ <!-- <template v-slot:activator="{ on }"> -->
4
+ <common-button :spec="spec" :disabled="$isBusy" />
5
+ <!-- </template> -->
6
+ <!-- </common-tooltip> -->
7
7
  </template>
8
8
 
9
9
  <script>