@bildvitta/quasar-ui-asteroid 3.0.0 → 3.1.0-beta.2

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 (32) hide show
  1. package/dist/api/QasFormGenerator.json +5 -0
  2. package/dist/api/QasNestedFields.json +22 -1
  3. package/dist/asteroid.cjs.css +1 -1
  4. package/dist/asteroid.cjs.js +257 -175
  5. package/dist/asteroid.cjs.min.js +2 -2
  6. package/dist/asteroid.esm.css +1 -1
  7. package/dist/asteroid.esm.js +257 -175
  8. package/dist/asteroid.esm.min.js +2 -2
  9. package/dist/asteroid.umd.css +1 -1
  10. package/dist/asteroid.umd.js +260 -179
  11. package/dist/asteroid.umd.min.js +2 -2
  12. package/dist/vetur/asteroid-attributes.json +12 -0
  13. package/dist/vetur/asteroid-tags.json +3 -0
  14. package/package.json +2 -1
  15. package/src/components/app-bar/QasAppBar.vue +2 -2
  16. package/src/components/box/QasBox.vue +1 -1
  17. package/src/components/card/QasCard.vue +1 -1
  18. package/src/components/delete/QasDelete.vue +6 -1
  19. package/src/components/filters/QasFilters.vue +15 -9
  20. package/src/components/form-generator/QasFormGenerator.vue +6 -2
  21. package/src/components/form-generator/QasFormGenerator.yml +5 -0
  22. package/src/components/form-view/QasFormView.vue +11 -2
  23. package/src/components/grid-generator/QasGridGenerator.vue +2 -2
  24. package/src/components/list-items/QasListItems.vue +5 -3
  25. package/src/components/list-view/QasListView.vue +8 -3
  26. package/src/components/nested-fields/QasNestedFields.vue +31 -5
  27. package/src/components/nested-fields/QasNestedFields.yml +16 -1
  28. package/src/components/single-view/QasSingleView.vue +7 -2
  29. package/src/components/sortable/QasSortable.vue +8 -3
  30. package/src/css/variables/index.scss +0 -1
  31. package/src/mixins/search-filter.js +12 -7
  32. package/src/css/variables/shadow.scss +0 -33
@@ -335,6 +335,10 @@
335
335
  "description": "Colunas do grid de cada campo.",
336
336
  "type": "array|string|object"
337
337
  },
338
+ "qas-form-generator/disable": {
339
+ "description": "Deixa os campos desabilitados enviando a prop \"disable\" para cada campo.",
340
+ "type": "boolean"
341
+ },
338
342
  "qas-form-generator/error": {
339
343
  "description": "Objeto contendo propriedades contendo a mensagem de erro.",
340
344
  "type": "object"
@@ -671,6 +675,10 @@
671
675
  "description": "Quando excluímos uma \"row\" e propriedade \"useRemoveOnDestroy\" for \"false\", adicionamos uma propriedade para saber que é para ser deletada, com esta prop você escolhe como se chamará essa chave.",
672
676
  "type": "string"
673
677
  },
678
+ "qas-nested-fields/disabled-rows": {
679
+ "description": "Com esta propriedade é possível desabilitar rows (linhas) especificas passando um array com chaves identificadoras, ou caso queira desativar todas passando um boolean \"true\" (isto vai remover todos os botões da linha, duplicar e excluir).",
680
+ "type": "array|boolean"
681
+ },
674
682
  "qas-nested-fields/errors": {
675
683
  "description": "Propriedade de erros para mostrar nos campos gerados.",
676
684
  "type": "array|object"
@@ -707,6 +715,10 @@
707
715
  "description": "Objeto contendo valores iniciais do model de cada linha (row).",
708
716
  "type": "object"
709
717
  },
718
+ "qas-nested-fields/use-add": {
719
+ "description": "Controla quando vai ter seção de \"adicionar\" novas rows (linhas).",
720
+ "type": "boolean"
721
+ },
710
722
  "qas-nested-fields/use-animation": {
711
723
  "description": "Controla a animação na hora de setar o scroll.",
712
724
  "type": "boolean"
@@ -179,6 +179,7 @@
179
179
  "qas-form-generator": {
180
180
  "attributes": [
181
181
  "columns",
182
+ "disable",
182
183
  "error",
183
184
  "fields-props",
184
185
  "fields",
@@ -313,6 +314,7 @@
313
314
  "button-destroy-props",
314
315
  "button-duplicate-props",
315
316
  "destroy-key",
317
+ "disabled-rows",
316
318
  "errors",
317
319
  "field",
318
320
  "fields-props",
@@ -322,6 +324,7 @@
322
324
  "model-value",
323
325
  "row-label",
324
326
  "row-object",
327
+ "use-add",
325
328
  "use-animation",
326
329
  "use-destroy-always",
327
330
  "use-duplicate",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bildvitta/quasar-ui-asteroid",
3
3
  "description": "Asteroid",
4
- "version": "3.0.0",
4
+ "version": "3.1.0-beta.2",
5
5
  "author": "Bild & Vitta <systemteam@bild.com.br>",
6
6
  "license": "MIT",
7
7
  "main": "dist/asteroid.cjs.min.js",
@@ -45,6 +45,7 @@
45
45
  "sass": "^1.49.0"
46
46
  },
47
47
  "dependencies": {
48
+ "@bildvitta/store-adapter": "^1.0.0-beta.22",
48
49
  "@fawmi/vue-google-maps": "^0.9.4",
49
50
  "autonumeric": "^4.6.0",
50
51
  "axios": "^0.21.1",
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <q-header class="bg-white qas-app-bar shadow-14" height-hint="70">
2
+ <q-header class="bg-white qas-app-bar shadow-2" height-hint="70">
3
3
  <q-toolbar class="qas-app-bar__toolbar" color="bg-white">
4
4
  <q-ajax-bar color="white" position="top" size="2px" />
5
5
 
@@ -30,7 +30,7 @@
30
30
  <div class="ellipsis text-bold">{{ user.email }}</div>
31
31
  </div>
32
32
 
33
- <q-menu anchor="bottom end" class="shadow-14" max-height="400px" :offset="[0, 5]" self="top end">
33
+ <q-menu anchor="bottom end" class="shadow-2" max-height="400px" :offset="[0, 5]" self="top end">
34
34
  <div class="qas-app-bar__user-menu">
35
35
  <div class="q-pa-lg text-center">
36
36
  <button class="unset" @click="goToProfile">
@@ -22,7 +22,7 @@ export default {
22
22
  boxClass () {
23
23
  return {
24
24
  'border-primary-contrast': this.outlined,
25
- 'shadow-14': !this.unelevated
25
+ 'shadow-2': !this.unelevated
26
26
  }
27
27
  }
28
28
  }
@@ -76,7 +76,7 @@ export default {
76
76
 
77
77
  cardClasses () {
78
78
  return {
79
- 'shadow-14': !this.unelevated,
79
+ 'shadow-2': !this.unelevated,
80
80
  'border-primary': this.outlined,
81
81
  'no-shadow': this.outlined,
82
82
  'bg-white': this.outlined
@@ -10,6 +10,7 @@
10
10
 
11
11
  <script>
12
12
  import { Loading } from 'quasar'
13
+ import { getAction } from '@bildvitta/store-adapter'
13
14
  import { NotifyError, NotifySuccess } from '../../plugins'
14
15
  import { useHistory } from '../../composables'
15
16
 
@@ -112,7 +113,11 @@ export default {
112
113
  `QasDelete - destroy -> Payload do parâmetro do ${this.entity}/destroy`, [payload]
113
114
  )
114
115
 
115
- await this.$store.dispatch(`${this.entity}/destroy`, payload)
116
+ await getAction.call(this, {
117
+ entity: this.entity,
118
+ key: 'destroy',
119
+ payload
120
+ })
116
121
 
117
122
  NotifySuccess('Item deletado com sucesso!')
118
123
 
@@ -4,7 +4,7 @@
4
4
  <div v-if="showSearch" class="col">
5
5
  <slot :filter="filter" name="search">
6
6
  <q-form v-if="useSearch" @submit.prevent="filter()">
7
- <qas-input v-model="search" :debounce="debounce" dense hide-bottom-space :outlined="false" :placeholder="searchPlaceholder" type="search">
7
+ <qas-input v-model="search" data-cy="filters-search-input" :debounce="debounce" dense hide-bottom-space :outlined="false" :placeholder="searchPlaceholder" type="search">
8
8
  <template #append>
9
9
  <qas-btn v-if="hasSearch" color="grey-9" flat icon="o_clear" unelevated @click="clearSearch" />
10
10
  <qas-btn v-if="!debounce" color="grey-9" flat icon="o_search" type="submit" unelevated @click="filter()" />
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
 
17
17
  <slot v-if="showFilterButton" :filter="filter" name="filter-button">
18
- <qas-btn v-if="useFilterButton" :color="filterButtonColor" flat icon="o_filter_list" :label="filterButtonLabel">
18
+ <qas-btn v-if="useFilterButton" :color="filterButtonColor" data-cy="filters-btn" flat icon="o_filter_list" :label="filterButtonLabel">
19
19
  <q-menu class="full-width" max-width="240px">
20
20
  <div v-if="isFetching" class="q-pa-xl text-center">
21
21
  <q-spinner color="grey" size="2em" />
@@ -27,12 +27,12 @@
27
27
 
28
28
  <q-form v-else class="q-gutter-y-md q-pa-md" @submit.prevent="filter()">
29
29
  <div v-for="(field, index) in fields" :key="index">
30
- <qas-field v-model="filters[field.name]" dense :field="field" />
30
+ <qas-field v-model="filters[field.name]" :data-cy="`filters-${field.name}-field`" dense :field="field" />
31
31
  </div>
32
32
 
33
33
  <div class="text-right">
34
- <qas-btn class="q-mr-sm" flat label="Limpar" :no-caps="false" size="12px" unelevated @click="clearFilters" />
35
- <qas-btn color="primary" label="Filtrar" :no-caps="false" size="12px" type="submit" unelevated />
34
+ <qas-btn class="q-mr-sm" data-cy="filters-clear-btn" flat label="Limpar" :no-caps="false" size="12px" unelevated @click="clearFilters" />
35
+ <qas-btn color="primary" data-cy="filters-submit-btn" label="Filtrar" :no-caps="false" size="12px" type="submit" unelevated />
36
36
  </div>
37
37
  </q-form>
38
38
  </q-menu>
@@ -41,7 +41,7 @@
41
41
  </div>
42
42
 
43
43
  <div v-if="useChip && hasActiveFilters" class="q-mt-md">
44
- <q-chip v-for="(filterItem, key) in activeFilters" :key="key" color="primary" dense removable size="md" text-color="white" @remove="removeFilter(filterItem)">{{ filterItem.label }} = "{{ getChipValue(filterItem.value) }}"</q-chip>
44
+ <q-chip v-for="(filterItem, key) in activeFilters" :key="key" color="primary" :data-cy="`filters-${filterItem.value}-chip`" dense removable size="md" text-color="white" @remove="removeFilter(filterItem)">{{ filterItem.label }} = "{{ getChipValue(filterItem.value) }}"</q-chip>
45
45
  </div>
46
46
 
47
47
  <slot :context="mx_context" :filter="filter" :filters="activeFilters" :remove-filter="removeFilter" />
@@ -55,6 +55,7 @@ import QasBtn from '../btn/QasBtn.vue'
55
55
  import { camelize, camelizeKeys } from 'humps'
56
56
  import { humanize, parseValue } from '../../helpers/filters.js'
57
57
  import contextMixin from '../../mixins/context.js'
58
+ import { getState, getAction } from '@bildvitta/store-adapter'
58
59
 
59
60
  export default {
60
61
  name: 'QasFilters',
@@ -148,7 +149,7 @@ export default {
148
149
  },
149
150
 
150
151
  fields () {
151
- return this.$store.getters[`${this.entity}/filters`]
152
+ return getState.call(this, { entity: this.entity, key: 'filters' })
152
153
  },
153
154
 
154
155
  filterButtonColor () {
@@ -164,7 +165,7 @@ export default {
164
165
  },
165
166
 
166
167
  hasFields () {
167
- return !!Object.keys(this.fields).length
168
+ return !!Object.keys(this.fields || {}).length
168
169
  },
169
170
 
170
171
  hasSearch () {
@@ -246,7 +247,12 @@ export default {
246
247
  [{ url: this.url }]
247
248
  )
248
249
 
249
- const response = await this.$store.dispatch(`${this.entity}/fetchFilters`, { url: this.url })
250
+ const response = await getAction.call(this, {
251
+ entity: this.entity,
252
+ key: 'fetchFilters',
253
+ payload: { url: this.url }
254
+ })
255
+
250
256
  this.$emit('fetch-success', response)
251
257
 
252
258
  this.$qas.logger.group(
@@ -9,14 +9,14 @@
9
9
  <div :class="mx_classes">
10
10
  <div v-for="(field, key) in fieldsetItem.fields.visible" :key="key" :class="mx_getFieldClass(key)">
11
11
  <slot :field="field" :name="`field-${field.name}`">
12
- <qas-field v-bind="fieldsProps[field.name]" :error="errors[key]" :field="field" :model-value="modelValue[field.name]" @update:model-value="updateModelValue(field.name, $event)" />
12
+ <qas-field :disable="disable" v-bind="fieldsProps[field.name]" :error="errors[key]" :field="field" :model-value="modelValue[field.name]" @update:model-value="updateModelValue(field.name, $event)" />
13
13
  </slot>
14
14
  </div>
15
15
  </div>
16
16
 
17
17
  <div v-for="(field, key) in fieldsetItem.fields.hidden" :key="key">
18
18
  <slot :field="field" :name="`field-${field.name}`">
19
- <qas-field v-bind="fieldsProps[field.name]" :field="field" :model-value="modelValue[field.name]" @update:model-value="updateModelValue(field.name, $event)" />
19
+ <qas-field :disable="disable" v-bind="fieldsProps[field.name]" :field="field" :model-value="modelValue[field.name]" @update:model-value="updateModelValue(field.name, $event)" />
20
20
  </slot>
21
21
  </div>
22
22
  </div>
@@ -70,6 +70,10 @@ export default {
70
70
  validator: value => {
71
71
  return typeof value === 'boolean' || ['xs', 'sm', 'md', 'lg', 'xl'].includes(value)
72
72
  }
73
+ },
74
+
75
+ disable: {
76
+ type: Boolean
73
77
  }
74
78
  },
75
79
 
@@ -10,6 +10,11 @@ props:
10
10
  type: [Array, String, Object]
11
11
  examples: ["{ name: { sm: 6, md: 12 } }", "[{ sm: 6, md: 12 }]"]
12
12
 
13
+ disable:
14
+ desc: Deixa os campos desabilitados enviando a prop "disable" para cada campo.
15
+ default: "false"
16
+ type: Boolean
17
+
13
18
  error:
14
19
  desc: Objeto contendo propriedades contendo a mensagem de erro.
15
20
  default: {}
@@ -34,6 +34,7 @@
34
34
 
35
35
  <script>
36
36
  import { isEqualWith } from 'lodash-es'
37
+ import { getAction } from '@bildvitta/store-adapter'
37
38
  import { extend } from 'quasar'
38
39
  import { onBeforeRouteLeave } from 'vue-router'
39
40
 
@@ -269,7 +270,11 @@ export default {
269
270
  `QasFormView - fetchSingle -> payload do parâmetro do ${this.entity}/fetchSingle`, [payload]
270
271
  )
271
272
 
272
- const response = await this.$store.dispatch(`${this.entity}/fetchSingle`, payload)
273
+ const response = await getAction.call(this, {
274
+ entity: this.entity,
275
+ key: 'fetchSingle',
276
+ payload
277
+ })
273
278
 
274
279
  const { errors, fields, metadata, result } = response.data
275
280
 
@@ -404,7 +409,11 @@ export default {
404
409
  `QasFormView - submit -> payload do ${this.entity}/${this.mode}`, [payload]
405
410
  )
406
411
 
407
- const response = await this.$store.dispatch(`${this.entity}/${this.mode}`, payload)
412
+ const response = await getAction.call(this, {
413
+ entity: this.entity,
414
+ key: this.mode,
415
+ payload
416
+ })
408
417
 
409
418
  if (this.useDialogOnUnsavedChanges) {
410
419
  this.cachedResult = extend(true, {}, this.modelValue)
@@ -3,11 +3,11 @@
3
3
  <div v-for="(field, key) in formattedFields" :key="key" :class="mx_getFieldClass(key, true)">
4
4
  <slot :field="slotValue[key]" :name="`field-${field.name}`">
5
5
  <slot :field="slotValue[key]" name="header">
6
- <header :class="headerClass">{{ field.label }}</header>
6
+ <header :class="headerClass" :data-cy="`grid-generator-${field.name}-field`">{{ field.label }}</header>
7
7
  </slot>
8
8
 
9
9
  <slot :field="slotValue[key]" name="content">
10
- <div :class="contentClass">{{ resultsByFields[key] }}</div>
10
+ <div :class="contentClass" :data-cy="`grid-generator-${field.name}-result`">{{ resultsByFields[key] }}</div>
11
11
  </slot>
12
12
  </slot>
13
13
  </div>
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="qas-list-items shadow-14">
3
- <q-list bordered class="rounded-borders" separator>
2
+ <qas-box class="qas-list-items">
3
+ <q-list separator>
4
4
  <q-item v-for="(item, index) in list" :key="index" v-ripple :clickable="useClickableItem" @click="onClick({ item, index }, true)">
5
5
  <slot :index="index" :item="item" name="item">
6
6
  <q-item-section>
@@ -17,16 +17,18 @@
17
17
  </slot>
18
18
  </q-item>
19
19
  </q-list>
20
- </div>
20
+ </qas-box>
21
21
  </template>
22
22
 
23
23
  <script>
24
24
  import QasBtn from '../btn/QasBtn.vue'
25
+ import QasBox from '../box/QasBox.vue'
25
26
 
26
27
  export default {
27
28
  name: 'QasListItems',
28
29
 
29
30
  components: {
31
+ QasBox,
30
32
  QasBtn
31
33
  },
32
34
 
@@ -45,6 +45,7 @@
45
45
  import { viewMixin, contextMixin } from '../../mixins'
46
46
  import QasFilters from '../filters/QasFilters.vue'
47
47
  import { extend } from 'quasar'
48
+ import { getState, getAction } from '@bildvitta/store-adapter'
48
49
 
49
50
  export default {
50
51
  components: {
@@ -106,11 +107,11 @@ export default {
106
107
  },
107
108
 
108
109
  resultsModel () {
109
- return this.$store.getters[`${this.entity}/list`]
110
+ return getState.call(this, { entity: this.entity, key: 'list' })
110
111
  },
111
112
 
112
113
  totalPages () {
113
- return this.$store.getters[`${this.entity}/totalPages`]
114
+ return getState.call(this, { entity: this.entity, key: 'totalPages' })
114
115
  },
115
116
 
116
117
  showResults () {
@@ -161,7 +162,11 @@ export default {
161
162
  `QasListView - fetchList -> Payload do parâmetro do ${this.entity}/fetchList`, [payload]
162
163
  )
163
164
 
164
- const response = await this.$store.dispatch(`${this.entity}/fetchList`, payload)
165
+ const response = await getAction.call(this, {
166
+ entity: this.entity,
167
+ key: 'fetchList',
168
+ payload
169
+ })
165
170
 
166
171
  const { errors, fields, metadata } = response.data
167
172
 
@@ -12,7 +12,7 @@
12
12
  <div class="flex items-center justify-between q-py-xs">
13
13
  <qas-label v-if="!useSingleLabel" :label="getRowLabel(index)" />
14
14
 
15
- <div v-if="!useInlineActions" class="q-gutter-x-sm">
15
+ <div v-if="hasBlockActions(row)" class="q-gutter-x-sm">
16
16
  <qas-btn v-if="useDuplicate" v-bind="buttonDuplicateProps" @click="add(row)" />
17
17
  <qas-btn v-if="showDestroyBtn" v-bind="buttonDestroyProps" @click="destroy(index, row)" />
18
18
  </div>
@@ -20,14 +20,14 @@
20
20
 
21
21
  <div ref="formGenerator" class="col-12 justify-between q-col-gutter-x-md row">
22
22
  <slot :errors="transformedErrors" :fields="children" :index="index" name="fields" :update-value="updateValuesFromInput">
23
- <qas-form-generator v-model="nested[index]" :class="formClasses" :columns="formColumns" :errors="transformedErrors[index]" :fields="children" :fields-props="fieldsProps" @update:model-value="updateValuesFromInput($event, index)">
23
+ <qas-form-generator v-model="nested[index]" :class="formClasses" :columns="formColumns" :disable="isDisabledRow(row)" :errors="transformedErrors[index]" :fields="children" :fields-props="fieldsProps" @update:model-value="updateValuesFromInput($event, index)">
24
24
  <template v-for="(slot, key) in $slots" #[key]="scope">
25
- <slot v-bind="scope" :errors="transformedErrors" :index="index" :name="key" />
25
+ <slot v-bind="scope" :disabled="isDisabledRow(row)" :errors="transformedErrors" :index="index" :name="key" />
26
26
  </template>
27
27
  </qas-form-generator>
28
28
  </slot>
29
29
 
30
- <div v-if="useInlineActions" class="flex items-center qas-nested-fields__actions">
30
+ <div v-if="hasInlineActions(row)" class="flex items-center qas-nested-fields__actions">
31
31
  <div class="col-auto">
32
32
  <qas-btn v-if="useDuplicate" color="primary" flat icon="o_content_copy" round @click="add(row)" />
33
33
  </div>
@@ -45,7 +45,7 @@
45
45
  </div>
46
46
  </component>
47
47
 
48
- <div class="q-mt-md">
48
+ <div v-if="useAdd" class="q-mt-md">
49
49
  <slot :add="add" name="add-input">
50
50
  <div v-if="useInlineActions" class="cursor-pointer items-center q-col-gutter-x-md q-mt-md row" @click="add()">
51
51
  <div class="col">
@@ -125,6 +125,11 @@ export default {
125
125
  default: 'destroyed'
126
126
  },
127
127
 
128
+ disabledRows: {
129
+ type: [Array, Boolean],
130
+ default: false
131
+ },
132
+
128
133
  errors: {
129
134
  type: [Array, Object],
130
135
  default: () => ({})
@@ -174,6 +179,11 @@ export default {
174
179
  default: () => ({})
175
180
  },
176
181
 
182
+ useAdd: {
183
+ type: Boolean,
184
+ default: true
185
+ },
186
+
177
187
  useAnimation: {
178
188
  type: Boolean,
179
189
  default: true
@@ -347,6 +357,22 @@ export default {
347
357
  }
348
358
 
349
359
  return this.fieldLabel
360
+ },
361
+
362
+ isDisabledRow (row) {
363
+ if (!this.disabledRows) return false
364
+
365
+ if (typeof this.disabledRows === 'boolean') return true
366
+
367
+ return this.disabledRows.includes(row[this.identifierItemKey])
368
+ },
369
+
370
+ hasBlockActions (row) {
371
+ return !this.useInlineActions && !this.isDisabledRow(row)
372
+ },
373
+
374
+ hasInlineActions (row) {
375
+ return this.useInlineActions && !this.isDisabledRow(row)
350
376
  }
351
377
  }
352
378
  }
@@ -26,6 +26,12 @@ props:
26
26
  default: destroyed
27
27
  type: String
28
28
 
29
+ disabled-rows:
30
+ desc: Com esta propriedade é possível desabilitar rows (linhas) especificas passando um array com chaves identificadoras, ou caso queira desativar todas passando um boolean "true" (isto vai remover todos os botões da linha, duplicar e excluir).
31
+ default: "false"
32
+ type: [Array, Boolean]
33
+ examples: ["['my-uuid-from-row-1']", true]
34
+
29
35
  errors:
30
36
  desc: Propriedade de erros para mostrar nos campos gerados.
31
37
  default: {}
@@ -79,6 +85,11 @@ props:
79
85
  type: Object
80
86
  examples: ["{ name: '', cities: [] }"]
81
87
 
88
+ use-add:
89
+ desc: Controla quando vai ter seção de "adicionar" novas rows (linhas).
90
+ default: true
91
+ type: Boolean
92
+
82
93
  use-animation:
83
94
  desc: Controla a animação na hora de setar o scroll.
84
95
  default: true
@@ -164,12 +175,16 @@ slots:
164
175
  'field-[nome-da-chave]':
165
176
  desc: Repassa todos os slots e escopos do "QasFormGenerator".
166
177
  scope:
178
+ disabled:
179
+ desc: Retorna se a linha esta desabilitada
180
+ type: boolean
181
+
167
182
  index:
168
183
  desc: Index atual dos campos
169
184
  type: Number
170
185
 
171
186
  errors:
172
- desc: Index atual dos campos
187
+ desc: Erros dos campos
173
188
  type: Number
174
189
 
175
190
  'updateValue -> function(value, index)':
@@ -26,6 +26,7 @@
26
26
  <script>
27
27
  import viewMixin from '../../mixins/view'
28
28
  import { markRaw } from 'vue'
29
+ import { getGetter, getAction } from '@bildvitta/store-adapter'
29
30
 
30
31
  export default {
31
32
  name: 'QasSingleView',
@@ -60,7 +61,7 @@ export default {
60
61
  },
61
62
 
62
63
  resultModel () {
63
- return this.$store.getters[`${this.entity}/byId`](this.id) || {}
64
+ return getGetter.call(this, { entity: this.entity, key: 'byId' })(this.id) || {}
64
65
  }
65
66
  },
66
67
 
@@ -92,7 +93,11 @@ export default {
92
93
  [payload]
93
94
  )
94
95
 
95
- const response = await this.$store.dispatch(`${this.entity}/fetchSingle`, payload)
96
+ const response = await getAction.call(this, {
97
+ entity: this.entity,
98
+ key: 'fetchSingle',
99
+ payload
100
+ })
96
101
 
97
102
  const { errors, fields, metadata } = response.data
98
103
 
@@ -7,6 +7,7 @@
7
7
  <script>
8
8
  import { Loading, extend } from 'quasar'
9
9
  import Sortable from 'sortablejs'
10
+ import { getAction } from '@bildvitta/store-adapter'
10
11
 
11
12
  import { NotifyError } from '../../plugins'
12
13
 
@@ -109,9 +110,13 @@ export default {
109
110
  Loading.show()
110
111
 
111
112
  try {
112
- const response = await this.$store.dispatch(`${this.entity}/replace`, {
113
- payload: { order: this.identifiers },
114
- url: this.url || `${this.entity}/sort`
113
+ const response = await getAction.call(this, {
114
+ entity: this.entity,
115
+ key: 'replace',
116
+ payload: {
117
+ payload: { order: this.identifiers },
118
+ url: this.url || `${this.entity}/sort`
119
+ }
115
120
  })
116
121
 
117
122
  this.$emit('success', response)
@@ -1,3 +1,2 @@
1
1
  @import './button';
2
- @import './shadow';
3
2
  @import './typography';
@@ -1,6 +1,7 @@
1
1
  import { decamelize } from 'humps'
2
2
  import { isEqual } from 'lodash'
3
3
  import { getNormalizedOptions } from '../helpers'
4
+ import { getAction } from '@bildvitta/store-adapter'
4
5
 
5
6
  export default {
6
7
  props: {
@@ -148,13 +149,17 @@ export default {
148
149
 
149
150
  const { url, params, decamelizeFieldName } = this.mx_defaultLazyLoadingProps
150
151
 
151
- const { data } = await this.$store.dispatch(`${this.entity}/fetchFieldOptions`, {
152
- url,
153
- field: decamelizeFieldName ? decamelize(this.name, { separator: '-' }) : this.name,
154
- params: {
155
- ...params,
156
- search: this.mx_search,
157
- offset: (this.mx_pagination.page - 1) * params.limit
152
+ const { data } = await getAction.call(this, {
153
+ entity: this.entity,
154
+ key: 'fetchFieldOptions',
155
+ payload: {
156
+ url,
157
+ field: decamelizeFieldName ? decamelize(this.name, { separator: '-' }) : this.name,
158
+ params: {
159
+ ...params,
160
+ search: this.mx_search,
161
+ offset: (this.mx_pagination.page - 1) * params.limit
162
+ }
158
163
  }
159
164
  })
160
165
 
@@ -1,33 +0,0 @@
1
- $shadow-color: $accent;
2
-
3
- $elevation-umbra: $shadow-color;
4
- $elevation-penumbra: $shadow-color;
5
- $elevation-ambient: $shadow-color;
6
-
7
- // Embossed
8
- $shadow-2: (
9
- 0 1px 5px $elevation-umbra,
10
- 0 2px 2px $elevation-penumbra,
11
- 0 3px 1px -2px $elevation-ambient
12
- );
13
-
14
- // Shallow
15
- $shadow-6: (
16
- 0 3px 5px -1px $elevation-umbra,
17
- 0 6px 10px $elevation-penumbra,
18
- 0 1px 18px $elevation-ambient
19
- );
20
-
21
- // Overhead
22
- $shadow-14: (
23
- 0 7px 9px -4px $elevation-umbra,
24
- 0 14px 21px 2px $elevation-penumbra,
25
- 0 5px 26px 4px $elevation-ambient
26
- );
27
-
28
- // levite
29
- $shadow-20: (
30
- 0 10px 13px -6px $elevation-umbra,
31
- 0 20px 31px 3px $elevation-penumbra,
32
- 0 8px 38px 7px $elevation-ambient
33
- );