@bildvitta/quasar-ui-asteroid 3.5.0-beta.9 → 3.6.0-beta.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 (69) hide show
  1. package/package.json +1 -1
  2. package/src/components/actions/QasActions.vue +32 -6
  3. package/src/components/actions/QasActions.yml +11 -1
  4. package/src/components/actions-menu/QasActionsMenu.vue +28 -11
  5. package/src/components/actions-menu/QasActionsMenu.yml +13 -4
  6. package/src/components/alert/QasAlert.vue +1 -1
  7. package/src/components/app-bar/QasAppBar.vue +7 -3
  8. package/src/components/app-menu/QasAppMenu.vue +55 -10
  9. package/src/components/app-user/QasAppUser.vue +8 -4
  10. package/src/components/avatar/QasAvatar.vue +1 -1
  11. package/src/components/avatar/QasAvatar.yml +1 -1
  12. package/src/components/badge/QasBadge.vue +34 -0
  13. package/src/components/badge/QasBadge.yml +28 -0
  14. package/src/components/card/QasCard.vue +2 -2
  15. package/src/components/copy/QasCopy.vue +1 -1
  16. package/src/components/copy/QasCopy.yml +1 -1
  17. package/src/components/date-time-input/QasDateTimeInput.vue +92 -10
  18. package/src/components/delete/QasDelete.vue +0 -1
  19. package/src/components/dialog/QasDialog.vue +56 -28
  20. package/src/components/dialog/QasDialog.yml +0 -9
  21. package/src/components/filters/QasFilters.vue +82 -67
  22. package/src/components/form-view/QasFormView.vue +0 -1
  23. package/src/components/gallery/QasGallery.vue +3 -3
  24. package/src/components/gallery/private/PvGalleryCarouselDialog.vue +3 -3
  25. package/src/components/header-actions/QasHeaderActions.vue +62 -0
  26. package/src/components/header-actions/QasHeaderActions.yml +26 -0
  27. package/src/components/list-items/QasListItems.vue +1 -1
  28. package/src/components/list-items/QasListItems.yml +1 -1
  29. package/src/components/nested-fields/QasNestedFields.vue +4 -4
  30. package/src/components/nested-fields/QasNestedFields.yml +2 -2
  31. package/src/components/numeric-input/QasNumericInput.vue +9 -0
  32. package/src/components/page-header/QasPageHeader.vue +92 -17
  33. package/src/components/page-header/QasPageHeader.yml +19 -1
  34. package/src/components/pagination/QasPagination.vue +12 -1
  35. package/src/components/password-input/QasPasswordInput.vue +1 -1
  36. package/src/components/search-box/QasSearchBox.vue +3 -4
  37. package/src/components/search-box/QasSearchBox.yml +1 -1
  38. package/src/components/select/QasSelect.vue +6 -6
  39. package/src/components/select/QasSelect.yml +1 -1
  40. package/src/components/select-list/QasSelectList.vue +1 -1
  41. package/src/components/signature-pad/QasSignaturePad.vue +1 -1
  42. package/src/components/signature-uploader/QasSignatureUploader.vue +7 -8
  43. package/src/components/single-view/QasSingleView.vue +1 -1
  44. package/src/components/status/QasStatus.vue +32 -0
  45. package/src/components/status/QasStatus.yml +10 -0
  46. package/src/components/table-generator/QasTableGenerator.vue +29 -4
  47. package/src/components/tabs-generator/QasTabsGenerator.vue +140 -37
  48. package/src/components/tabs-generator/QasTabsGenerator.yml +4 -24
  49. package/src/components/text-truncate/QasTextTruncate.vue +24 -10
  50. package/src/components/transfer/QasTransfer.vue +2 -2
  51. package/src/components/tree-generator/QasTreeGenerator.vue +4 -5
  52. package/src/components/uploader/QasUploader.vue +8 -8
  53. package/src/components/welcome/QasWelcome.vue +108 -0
  54. package/src/components/welcome/QasWelcome.yml +14 -0
  55. package/src/components/welcome/private/PvWelcomeShortcutCard.vue +58 -0
  56. package/src/css/components/base.scss +8 -0
  57. package/src/css/components/item.scss +8 -3
  58. package/src/css/mixins/index.scss +1 -0
  59. package/src/css/mixins/set-typography.scss +8 -0
  60. package/src/css/variables/index.scss +1 -0
  61. package/src/css/variables/shadow.scss +3 -0
  62. package/src/css/variables/spacing.scss +15 -0
  63. package/src/css/variables/typography.scss +12 -12
  64. package/src/index.scss +1 -1
  65. package/src/mixins/delete.js +0 -1
  66. package/src/plugins/notify-error/NotifyError.js +1 -1
  67. package/src/plugins/notify-success/NotifySuccess.js +1 -1
  68. package/src/shared/date-config.js +26 -0
  69. package/src/vue-plugin.js +12 -0
@@ -34,7 +34,7 @@ export default {
34
34
 
35
35
  props: {
36
36
  iconProps: {
37
- default: () => ({ color: 'primary', name: 'o_chevron_right' }),
37
+ default: () => ({ color: 'primary', name: 'sym_r_chevron_right' }),
38
38
  type: Object
39
39
  },
40
40
 
@@ -6,7 +6,7 @@ meta:
6
6
  props:
7
7
  icon-props:
8
8
  desc: Props do [QIcon](https://quasar.dev/vue-components/icon#introduction)
9
- default: { color: 'primary', name: 'o_chevron_right' }
9
+ default: { color: 'primary', name: 'sym_r_chevron_right' }
10
10
  type: Object
11
11
 
12
12
  list:
@@ -48,12 +48,12 @@
48
48
  </div>
49
49
 
50
50
  <div class="col-auto">
51
- <qas-btn color="dark" flat icon="o_add_circle_outline" round />
51
+ <qas-btn color="dark" flat icon="sym_r_add_circle_outline" round />
52
52
  </div>
53
53
  </div>
54
54
 
55
55
  <div v-else class="text-left">
56
- <qas-btn class="q-px-sm" color="dark" flat icon="o_add" @click="add()">{{ addInputLabel }}</qas-btn>
56
+ <qas-btn class="q-px-sm" color="dark" flat icon="sym_r_add" @click="add()">{{ addInputLabel }}</qas-btn>
57
57
  </div>
58
58
  </slot>
59
59
  </div>
@@ -107,7 +107,7 @@ export default {
107
107
  default: () => {
108
108
  return {
109
109
  label: 'Excluir',
110
- icon: 'o_delete',
110
+ icon: 'sym_r_delete',
111
111
  flat: true,
112
112
  dense: true
113
113
  }
@@ -119,7 +119,7 @@ export default {
119
119
  default: () => {
120
120
  return {
121
121
  label: 'Duplicar',
122
- icon: 'o_content_copy',
122
+ icon: 'sym_r_content_copy',
123
123
  flat: true,
124
124
  useLabelOnSmallScreen: false,
125
125
  dense: true
@@ -21,13 +21,13 @@ props:
21
21
 
22
22
  button-destroy-props:
23
23
  desc: Props do botão de excluir linha contendo os campos.
24
- default: "{ label: 'Excluir', icon: 'o_delete', flat: true, dense: true }"
24
+ default: "{ label: 'Excluir', icon: 'sym_r_delete', flat: true, dense: true }"
25
25
  debugger: true
26
26
  type: Object
27
27
 
28
28
  button-duplicate-props:
29
29
  desc: Props do botão de duplicar linha contendo os campos.
30
- default: "{ label: 'Duplicar', o_content_copy, flat: true, dense: true, useLabelOnSmallScreen: false }"
30
+ default: "{ label: 'Duplicar', sym_r_content_copy, flat: true, dense: true, useLabelOnSmallScreen: false }"
31
31
  debugger: true
32
32
  type: Object
33
33
 
@@ -117,6 +117,15 @@ export default {
117
117
  options.decimalPlaces = this.decimalPlaces
118
118
  }
119
119
 
120
+ if (this.mode === 'money') {
121
+ // TODO
122
+ /*
123
+ * adicionado manualmente por conta do espaçamento, neste formato não esta preparado para
124
+ * outras linguas, teria que adaptar no futuro, o que não é um problema no momento
125
+ */
126
+ options.currencySymbol = 'R$ '
127
+ }
128
+
120
129
  Object.assign(options, this.autonumericOptions)
121
130
 
122
131
  this.$nextTick(() => {
@@ -1,19 +1,32 @@
1
1
  <template>
2
- <q-toolbar class="justify-between q-mb-xl q-px-none">
3
- <div class="ellipsis">
4
- <q-toolbar-title v-if="title" class="text-bold text-h5">
5
- {{ title }}
6
- </q-toolbar-title>
7
-
8
- <q-breadcrumbs v-if="useBreadcrumbs" class="text-caption" separator-color="grey-7">
9
- <q-breadcrumbs-el v-for="(item, index) in transformedBreadcrumbs" :key="item.label" :class="getBreadcrumbsClass(index)" :label="item.label" :to="item.route" />
10
- </q-breadcrumbs>
2
+ <div>
3
+ <q-toolbar class="justify-between q-mb-xl q-px-none qas-page-header">
4
+ <div class="ellipsis">
5
+ <q-toolbar-title v-if="title" class="text-grey-9 text-h3">
6
+ {{ title }}
7
+ </q-toolbar-title>
8
+
9
+ <q-breadcrumbs v-if="useBreadcrumbs" class="text-caption" gutter="xs" separator-color="grey-8">
10
+ <q-breadcrumbs-el v-if="useHomeIcon" class="qas-page-header__breadcrumbs-el text-grey-8" icon="sym_r_home" :to="homeRoute" />
11
+
12
+ <q-breadcrumbs-el v-for="(item, index) in normalizedBreadcrumbs" :key="index" class="qas-page-header__breadcrumbs-el" :label="item.label" :to="item.route" />
13
+ </q-breadcrumbs>
14
+ </div>
15
+
16
+ <slot />
17
+ </q-toolbar>
18
+
19
+ <div>
20
+ <slot name="bottom">
21
+ <qas-header-actions v-if="hasHeaderActions" v-bind="headerActionsProps" />
22
+ </slot>
11
23
  </div>
12
- <slot />
13
- </q-toolbar>
24
+ </div>
14
25
  </template>
15
26
 
16
27
  <script>
28
+ import QasHeaderActions from '../header-actions/QasHeaderActions.vue'
29
+
17
30
  import { castArray } from 'lodash-es'
18
31
  import { useHistory } from '../../composables'
19
32
  import { createMetaMixin } from 'quasar'
@@ -23,6 +36,10 @@ const { history } = useHistory()
23
36
  export default {
24
37
  name: 'QasPageHeader',
25
38
 
39
+ components: {
40
+ QasHeaderActions
41
+ },
42
+
26
43
  mixins: [
27
44
  createMetaMixin(function () {
28
45
  return {
@@ -37,6 +54,11 @@ export default {
37
54
  type: [Array, String]
38
55
  },
39
56
 
57
+ headerActionsProps: {
58
+ default: () => ({}),
59
+ type: Object
60
+ },
61
+
40
62
  root: {
41
63
  default: '',
42
64
  type: [Object, String]
@@ -50,6 +72,11 @@ export default {
50
72
  useBreadcrumbs: {
51
73
  default: true,
52
74
  type: Boolean
75
+ },
76
+
77
+ useHomeIcon: {
78
+ default: true,
79
+ type: Boolean
53
80
  }
54
81
  },
55
82
 
@@ -76,15 +103,63 @@ export default {
76
103
 
77
104
  return item
78
105
  })
79
- }
80
- },
106
+ },
107
+
108
+ normalizedBreadcrumbs () {
109
+ const breadcrumbsSize = this.transformedBreadcrumbs.length
110
+
111
+ if (breadcrumbsSize < 5) return this.transformedBreadcrumbs
112
+
113
+ const [first, second] = this.transformedBreadcrumbs
114
+ const last = this.transformedBreadcrumbs.at(-1)
115
+
116
+ const beforeLast = {
117
+ ...this.transformedBreadcrumbs.at(-2),
118
+ label: '...'
119
+ }
120
+
121
+ return [
122
+ first,
123
+ second,
124
+ beforeLast,
125
+ last
126
+ ]
127
+ },
128
+
129
+ hasHeaderActions () {
130
+ return !!Object.keys(this.headerActionsProps).length
131
+ },
81
132
 
82
- methods: {
83
- getBreadcrumbsClass (index) {
84
- const lastIndex = this.transformedBreadcrumbs.length - 1
133
+ homeRoute () {
134
+ const hasRoot = this.$router.hasRoute('Root')
85
135
 
86
- return lastIndex === index ? 'text-grey-7' : 'text-primary'
136
+ return hasRoot ? { name: 'Root' } : '/'
87
137
  }
88
138
  }
89
139
  }
90
140
  </script>
141
+
142
+ <style lang="scss">
143
+ .qas-page-header {
144
+ &__breadcrumbs-el {
145
+ transition: color var(--qas-generic-transition);
146
+
147
+ &.q-breadcrumbs__el:not(.q-router-link--exact-active):hover {
148
+ color: var(--qas-primary-contrast) !important;
149
+ }
150
+
151
+ .q-breadcrumbs__el-icon {
152
+ font-size: 16px;
153
+ }
154
+ }
155
+
156
+ // aplica cor "grey-8" a todos os .q-breadcrumbs__el que não uma classe .q-breadcrumbs--last como pai
157
+ .q-breadcrumbs__el:not(.q-breadcrumbs--last .q-breadcrumbs__el) {
158
+ color: $grey-8;
159
+ }
160
+
161
+ .q-breadcrumbs--last {
162
+ color: var(--q-primary);
163
+ }
164
+ }
165
+ </style>
@@ -15,10 +15,28 @@ props:
15
15
  desc: Título do cabeçalho.
16
16
  type: String
17
17
 
18
+ header-actions-props:
19
+ desc: Propriedades do QasHeaderActions.
20
+ default: {}
21
+ type: Object
22
+
18
23
  root:
19
24
  desc: Rota raiz do breadcrumbs.
20
25
  type: [Object, String]
21
26
 
22
27
  use-breadcrumbs:
23
28
  desc: Habilita ou não o breadcrumbs.
24
- type: [Array, String]
29
+ default: true
30
+ type: Boolean
31
+
32
+ use-home-icon:
33
+ desc: Habilita o ícone de início como primeiro nível do breadcrumbs.
34
+ default: true
35
+ type: Boolean
36
+
37
+ slots:
38
+ bottom:
39
+ desc: slot para acessar abaixo do titulo e breadcrumbs.
40
+
41
+ default:
42
+ desc: slot para acessar lado direito do titulo e breadcrumbs.
@@ -14,8 +14,11 @@ export default {
14
14
  activeColor: 'primary',
15
15
  activeDesign: 'flat',
16
16
  boundaryNumbers: true,
17
- color: 'grey-7',
17
+ class: 'qas-pagination',
18
+ color: 'grey-8',
18
19
  directionLinks: true,
20
+ iconNext: 'sym_r_chevron_right',
21
+ iconPrev: 'sym_r_chevron_left',
19
22
  maxPages: modelValue < 3 ? 3 : 6,
20
23
  modelValue,
21
24
 
@@ -25,3 +28,11 @@ export default {
25
28
  }
26
29
  }
27
30
  </script>
31
+
32
+ <style lang="scss">
33
+ .qas-pagination {
34
+ .q-icon {
35
+ color: $grey-9;
36
+ }
37
+ }
38
+ </style>
@@ -58,7 +58,7 @@ export default {
58
58
 
59
59
  computed: {
60
60
  icon () {
61
- return this.toggleType ? 'o_visibility_off' : 'o_visibility'
61
+ return this.toggleType ? 'sym_r_visibility_off' : 'sym_r_visibility'
62
62
  },
63
63
 
64
64
  model: {
@@ -2,7 +2,7 @@
2
2
  <qas-box>
3
3
  <qas-input v-bind="attributes" ref="search" v-model="mx_search">
4
4
  <template #append>
5
- <q-icon color="primary" name="o_search" />
5
+ <q-icon color="primary" name="sym_r_search" />
6
6
  </template>
7
7
  </qas-input>
8
8
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  <slot v-if="showEmptyResult" name="empty-result">
21
21
  <div class="absolute-center text-center">
22
- <q-icon class="q-mb-sm text-center" color="primary" name="o_search" size="38px" />
22
+ <q-icon class="q-mb-sm text-center" color="primary" name="sym_r_search" size="38px" />
23
23
  <div>{{ emptyResultText }}</div>
24
24
  </div>
25
25
  </slot>
@@ -112,7 +112,7 @@ export default {
112
112
  return {
113
113
  clearable: true,
114
114
  disable: this.isDisabled,
115
- debounce: this.useLazyLoading ? 800 : 0,
115
+ debounce: this.useLazyLoading ? 1200 : 0,
116
116
  outlined: true,
117
117
  placeholder: this.placeholder,
118
118
  hideBottomSpace: true,
@@ -153,7 +153,6 @@ export default {
153
153
 
154
154
  defaultFuseOptions () {
155
155
  return {
156
- threshold: 0.1,
157
156
  ignoreLocation: true,
158
157
 
159
158
  ...this.fuseOptions
@@ -34,7 +34,7 @@ props:
34
34
  examples: ["{ keys: ['label'] }"]
35
35
  default:
36
36
  ignoreLocation: true
37
- threshold: 0.1
37
+ threshold: 0.6
38
38
 
39
39
  height:
40
40
  desc: Define altura do box quando a lista não está vazia.
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <q-select v-model="model" v-bind="attributes">
3
3
  <template v-if="isSearchable" #prepend>
4
- <q-icon name="o_search" />
4
+ <q-icon name="sym_r_search" />
5
5
  </template>
6
6
 
7
7
  <template #no-option>
@@ -91,12 +91,13 @@ export default {
91
91
  outlined: true,
92
92
  ...this.$attrs,
93
93
 
94
- options: this.mx_filteredOptions,
95
- useInput: this.isSearchable,
96
94
  error: this.hasError,
95
+ inputDebounce: this.useLazyLoading ? 1200 : 0,
97
96
  loading: this.hasLoading,
98
- ...(this.useLazyLoading && { onVirtualScroll: this.mx_onVirtualScroll }),
99
- ...(this.isSearchable && { onFilter: this.onFilter })
97
+ options: this.mx_filteredOptions,
98
+ useInput: this.isSearchable,
99
+ ...(this.isSearchable && { onFilter: this.onFilter }),
100
+ ...(this.useLazyLoading && { onVirtualScroll: this.mx_onVirtualScroll })
100
101
  }
101
102
  },
102
103
 
@@ -104,7 +105,6 @@ export default {
104
105
  return {
105
106
  ignoreLocation: true,
106
107
  keys: ['label', 'value'],
107
- threshold: 0.1,
108
108
 
109
109
  ...this.fuseOptions
110
110
  }
@@ -27,7 +27,7 @@ props:
27
27
  default:
28
28
  ignoreLocation: true
29
29
  keys: [label, value]
30
- threshold: 0.1
30
+ threshold: 0.6
31
31
 
32
32
  label-key:
33
33
  desc: O componente internamente espera receber na propriedade "options" um array de objeto contendo "label" e "value", caso o seu objeto não tenha "label" mas um "name" por exemplo, você pode definir esta prop "label-key" como "name".
@@ -130,7 +130,7 @@ export default {
130
130
  return {
131
131
  dense: this.$qas.screen.isSmall,
132
132
  useLabelOnSmallScreen: false,
133
- icon: !this.$qas.screen.isSmall ? undefined : isSelected ? 'o_close' : 'o_add',
133
+ icon: !this.$qas.screen.isSmall ? undefined : isSelected ? 'sym_r_close' : 'sym_r_add',
134
134
  label: isSelected ? 'Remover' : 'Adicionar',
135
135
  outline: isSelected,
136
136
  size: 'sm'
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div ref="signatureContainer" class="qas-signature-pad relative-position">
3
3
  <canvas :id="canvasId" :ref="$attrs.ref" class="qas-signature-pad__canvas rounded-borders vertical-bottom" :height="height" />
4
- <qas-btn v-if="!empty" class="absolute-bottom-right q-mb-sm q-mr-sm" color="primary" dense icon="o_delete" round @click="clearSignature" />
4
+ <qas-btn v-if="!empty" class="absolute-bottom-right q-mb-sm q-mr-sm" color="primary" dense icon="sym_r_delete" round @click="clearSignature" />
5
5
  </div>
6
6
 
7
7
  <div>
@@ -1,13 +1,13 @@
1
1
  <template>
2
2
  <div>
3
- <qas-uploader ref="uploader" v-model="model" :label="uploadLabel" :readonly="readonly" :use-resize="false" v-bind="$attrs">
3
+ <qas-uploader ref="uploader" v-model="model" :label="uploadLabel" v-bind="$attrs" :readonly="readonly" :use-resize="false">
4
4
  <template #header="{ scope }">
5
5
  <div class="cursor-pointer flex flex-center full-width justify-between no-border no-wrap q-gutter-xs text-white transparent" :class="headerClass" @click="openDialog">
6
6
  <div class="col column items-start justify-center">
7
7
  <div v-if="uploadLabel" class="q-uploader__title">{{ uploadLabel }}</div>
8
8
  </div>
9
9
 
10
- <qas-btn v-if="!readonly" color="white" dense flat icon="o_add" round @click="openDialog" />
10
+ <qas-btn v-if="!readonly" color="white" dense flat icon="sym_r_add" round @click="openDialog" />
11
11
 
12
12
  <qas-btn ref="forceUpload" class="hidden" @click="upload(scope)" />
13
13
  <qas-btn ref="buttonCleanFiles" class="hidden" @click="scope.removeUploadedFiles" />
@@ -25,11 +25,6 @@
25
25
  <qas-signature-pad ref="signaturePadModal" v-model:empty="isEmpty" :height="signaturePadHeight" />
26
26
  </div>
27
27
  </template>
28
-
29
- <template #actions>
30
- <qas-btn class="full-width" color="primary" :disable="isEmpty" label="Salvar" no-caps @click="getSignatureData" />
31
- <qas-btn class="full-width q-mt-sm" color="primary" flat label="Cancelar" no-caps @click="closeSignature" />
32
- </template>
33
28
  </qas-dialog>
34
29
  </div>
35
30
  </template>
@@ -111,7 +106,11 @@ export default {
111
106
  defaultDialogProps () {
112
107
  return {
113
108
  maxWidth: '620px',
114
- ...this.dialogProps
109
+ ...this.dialogProps,
110
+ ok: {
111
+ label: 'Salvar',
112
+ onClick: () => this.getSignatureData()
113
+ }
115
114
  }
116
115
  },
117
116
 
@@ -9,7 +9,7 @@
9
9
  </template>
10
10
 
11
11
  <div v-else-if="!mx_isFetching" class="q-my-xl text-center">
12
- <q-icon class="q-mb-sm text-center" color="grey-7" name="o_search" size="38px" />
12
+ <q-icon class="q-mb-sm text-center" color="grey-7" name="sym_r_search" size="38px" />
13
13
  <div class="text-grey-7">Nenhum item encontrado.</div>
14
14
  </div>
15
15
 
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <div aria-live="polite" class="qas-status" :class="backgroundClass" role="status" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ name: 'QasStatus',
8
+
9
+ inheritAttrs: false,
10
+
11
+ props: {
12
+ color: {
13
+ type: String,
14
+ default: 'light-blue-2'
15
+ }
16
+ },
17
+
18
+ computed: {
19
+ backgroundClass () {
20
+ return `bg-${this.color}`
21
+ }
22
+ }
23
+ }
24
+ </script>
25
+
26
+ <style lang="scss">
27
+ .qas-status {
28
+ border-radius: 100%;
29
+ height: 16px;
30
+ width: 16px;
31
+ }
32
+ </style>
@@ -0,0 +1,10 @@
1
+ type: component
2
+
3
+ meta:
4
+ desc: Componente que gera um status circular com a cor do status.
5
+
6
+ props:
7
+ color:
8
+ desc: cor dos status.
9
+ default: light-blue-2
10
+ type: String
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <qas-box class="q-px-lg q-py-md">
3
- <q-table ref="table" class="bg-transparent qas-table-generator" :class="tableClass" v-bind="attributes">
3
+ <q-table ref="table" class="bg-white qas-table-generator text-grey-8" :class="tableClass" v-bind="attributes">
4
4
  <template v-for="(_, name) in $slots" #[name]="context">
5
5
  <slot v-if="hasBodySlot" name="body" :props="context" />
6
6
 
@@ -94,7 +94,7 @@ export default {
94
94
  field: name,
95
95
  label,
96
96
  name,
97
- headerClasses: 'text-primary'
97
+ headerClasses: 'text-grey-9'
98
98
  })
99
99
  }
100
100
 
@@ -246,8 +246,33 @@ export default {
246
246
 
247
247
  <style lang="scss">
248
248
  .qas-table-generator {
249
- .q-table th {
250
- font-weight: bold;
249
+ .q-table {
250
+ th {
251
+ @include set-typography($subtitle1);
252
+ }
253
+
254
+ td,
255
+ th,
256
+ thead,
257
+ tr {
258
+ border-color: $grey-4;
259
+ }
260
+
261
+ td {
262
+ @include set-typography($body1);
263
+ }
264
+
265
+ tr {
266
+ transition: background-color var(--qas-generic-transition);
267
+
268
+ &:hover {
269
+ background-color: $grey-2;
270
+ }
271
+ }
272
+
273
+ thead tr:hover {
274
+ background-color: white;
275
+ }
251
276
  }
252
277
 
253
278
  &--mobile {