@bildvitta/quasar-ui-asteroid 3.0.0-beta.2 → 3.0.0-beta.20
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.
- package/dist/api/QasActionsMenu.json +15 -15
- package/dist/api/QasAppBar.json +4 -8
- package/dist/api/QasAppMenu.json +11 -7
- package/dist/api/QasBtn.json +8 -4
- package/dist/api/QasCard.json +17 -13
- package/dist/api/QasCheckboxGroup.json +8 -8
- package/dist/api/QasCopy.json +4 -4
- package/dist/api/QasDateTimeInput.json +16 -16
- package/dist/api/QasDelete.json +17 -17
- package/dist/api/QasDialog.json +24 -20
- package/dist/api/QasFilters.json +14 -14
- package/dist/api/QasFormGenerator.json +57 -26
- package/dist/api/QasFormView.json +115 -87
- package/dist/api/QasGallery.json +4 -4
- package/dist/api/QasGridGenerator.json +40 -39
- package/dist/api/QasInput.json +13 -13
- package/dist/api/QasListItems.json +18 -17
- package/dist/api/QasListView.json +67 -53
- package/dist/api/QasNestedFields.json +45 -35
- package/dist/api/QasNumericInput.json +31 -12
- package/dist/api/QasPageHeader.json +7 -7
- package/dist/api/QasPasswordInput.json +13 -13
- package/dist/api/QasPasswordStrengthChecker.json +12 -12
- package/dist/api/QasProfile.json +5 -5
- package/dist/api/QasResizer.json +11 -11
- package/dist/api/QasSearchBox.json +90 -8
- package/dist/api/QasSelect.json +92 -25
- package/dist/api/QasSelectList.json +16 -14
- package/dist/api/QasSignaturePad.json +1 -1
- package/dist/api/QasSignatureUploader.json +9 -9
- package/dist/api/QasSingleView.json +52 -43
- package/dist/api/QasSortable.json +20 -20
- package/dist/api/QasTableGenerator.json +5 -5
- package/dist/api/QasTabsGenerator.json +5 -2
- package/dist/api/QasTransfer.json +9 -9
- package/dist/api/QasUploader.json +22 -17
- package/dist/asteroid.cjs.css +1 -1
- package/dist/asteroid.cjs.js +3904 -3102
- package/dist/asteroid.cjs.min.js +2 -2
- package/dist/asteroid.esm.css +1 -1
- package/dist/asteroid.esm.js +3908 -3106
- package/dist/asteroid.esm.min.js +2 -2
- package/dist/asteroid.umd.css +1 -1
- package/dist/asteroid.umd.js +3907 -3106
- package/dist/asteroid.umd.min.js +2 -2
- package/dist/vetur/asteroid-attributes.json +387 -303
- package/dist/vetur/asteroid-tags.json +129 -108
- package/package.json +1 -1
- package/src/assets/gear.svg +27 -0
- package/src/components/actions/QasActions.vue +1 -5
- package/src/components/actions-menu/QasActionsMenu.vue +4 -10
- package/src/components/actions-menu/QasActionsMenu.yml +15 -15
- package/src/components/app-bar/QasAppBar.vue +18 -14
- package/src/components/app-bar/QasAppBar.yml +4 -8
- package/src/components/app-menu/QasAppMenu.vue +8 -7
- package/src/components/app-menu/QasAppMenu.yml +11 -7
- package/src/components/avatar/QasAvatar.vue +0 -4
- package/src/components/box/QasBox.vue +1 -1
- package/src/components/btn/QasBtn.vue +11 -15
- package/src/components/btn/QasBtn.yml +7 -3
- package/src/components/card/QasCard.vue +18 -9
- package/src/components/card/QasCard.yml +17 -13
- package/src/components/checkbox-group/QasCheckboxGroup.yml +9 -8
- package/src/components/copy/QasCopy.vue +1 -1
- package/src/components/copy/QasCopy.yml +4 -3
- package/src/components/date-time-input/QasDateTimeInput.vue +39 -41
- package/src/components/date-time-input/QasDateTimeInput.yml +16 -16
- package/src/components/delete/QasDelete.vue +15 -1
- package/src/components/delete/QasDelete.yml +15 -15
- package/src/components/dialog/QasDialog.vue +28 -9
- package/src/components/dialog/QasDialog.yml +22 -18
- package/src/components/dialog-router/QasDialogRouter.vue +1 -1
- package/src/components/field/QasField.vue +15 -14
- package/src/components/filters/QasFilters.vue +30 -13
- package/src/components/filters/QasFilters.yml +14 -14
- package/src/components/form-generator/QasFormGenerator.vue +87 -12
- package/src/components/form-generator/QasFormGenerator.yml +32 -18
- package/src/components/form-view/QasFormView.vue +142 -60
- package/src/components/form-view/QasFormView.yml +91 -67
- package/src/components/gallery/QasGallery.vue +4 -8
- package/src/components/gallery/QasGallery.yml +4 -4
- package/src/components/grid-generator/QasGridGenerator.vue +23 -7
- package/src/components/grid-generator/QasGridGenerator.yml +29 -27
- package/src/components/input/QasInput.vue +37 -21
- package/src/components/input/QasInput.yml +13 -13
- package/src/components/layout/QasLayout.vue +4 -0
- package/src/components/list-items/QasListItems.vue +16 -24
- package/src/components/list-items/QasListItems.yml +14 -15
- package/src/components/list-view/QasListView.vue +48 -20
- package/src/components/list-view/QasListView.yml +58 -46
- package/src/components/map/QasMap.vue +5 -5
- package/src/components/nested-fields/QasNestedFields.vue +29 -21
- package/src/components/nested-fields/QasNestedFields.yml +35 -28
- package/src/components/numeric-input/QasNumericInput.vue +45 -27
- package/src/components/numeric-input/QasNumericInput.yml +26 -12
- package/src/components/page-header/QasPageHeader.vue +14 -11
- package/src/components/page-header/QasPageHeader.yml +4 -4
- package/src/components/password-input/QasPasswordInput.vue +17 -16
- package/src/components/password-input/QasPasswordInput.yml +11 -11
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.yml +10 -10
- package/src/components/profile/QasProfile.vue +3 -6
- package/src/components/profile/QasProfile.yml +5 -5
- package/src/components/resizer/QasResizer.vue +1 -1
- package/src/components/resizer/QasResizer.yml +6 -5
- package/src/components/search-box/QasSearchBox.vue +138 -42
- package/src/components/search-box/QasSearchBox.yml +74 -7
- package/src/components/select/QasSelect.vue +63 -53
- package/src/components/select/QasSelect.yml +68 -17
- package/src/components/select-list/QasSelectList.vue +13 -32
- package/src/components/select-list/QasSelectList.yml +13 -14
- package/src/components/signature-pad/QasSignaturePad.vue +1 -1
- package/src/components/signature-pad/QasSignaturePad.yml +1 -1
- package/src/components/signature-uploader/QasSignatureUploader.vue +13 -14
- package/src/components/signature-uploader/QasSignatureUploader.yml +9 -9
- package/src/components/single-view/QasSingleView.vue +24 -8
- package/src/components/single-view/QasSingleView.yml +45 -38
- package/src/components/sortable/QasSortable.yml +17 -17
- package/src/components/table-generator/QasTableGenerator.vue +14 -6
- package/src/components/table-generator/QasTableGenerator.yml +5 -5
- package/src/components/tabs-generator/QasTabsGenerator.vue +2 -2
- package/src/components/tabs-generator/QasTabsGenerator.yml +2 -2
- package/src/components/text-truncate/QasTextTruncate.vue +2 -5
- package/src/components/transfer/QasTransfer.vue +5 -7
- package/src/components/transfer/QasTransfer.yml +9 -9
- package/src/components/uploader/QasUploader.vue +63 -16
- package/src/components/uploader/QasUploader.yml +17 -12
- package/src/composables/index.js +1 -1
- package/src/composables/{useHistory.js → use-history.js} +0 -0
- package/src/css/components/base.scss +3 -0
- package/src/css/components/field.scss +4 -0
- package/src/css/components/index.scss +4 -0
- package/src/css/components/radio.scss +3 -0
- package/src/css/components/tabs.scss +3 -0
- package/src/css/mixins/index.scss +1 -0
- package/src/css/{set-brand.scss → mixins/set-brand.scss} +0 -0
- package/src/css/{background.scss → utils/background.scss} +0 -0
- package/src/css/{border-radius.scss → utils/border-radius.scss} +0 -0
- package/src/css/{border.scss → utils/border.scss} +0 -0
- package/src/css/{container.scss → utils/container.scss} +0 -0
- package/src/css/{fonts.scss → utils/fonts.scss} +0 -0
- package/src/css/utils/index.scss +9 -0
- package/src/css/{line-height.scss → utils/line-height.scss} +0 -0
- package/src/css/{opacity.scss → utils/opacity.scss} +0 -0
- package/src/css/{text.scss → utils/text.scss} +0 -0
- package/src/css/{unset.scss → utils/unset.scss} +0 -0
- package/src/css/variables/button.scss +3 -0
- package/src/css/variables/index.scss +3 -0
- package/src/css/variables/shadow.scss +33 -0
- package/src/css/variables/typography.scss +139 -0
- package/src/helpers/camelize-fields-name.js +15 -0
- package/src/helpers/filters.js +2 -0
- package/src/helpers/get-normalized-options.js +20 -0
- package/src/helpers/handle-process.js +13 -0
- package/src/helpers/index.js +3 -0
- package/src/index.scss +11 -12
- package/src/mixins/generator.js +10 -2
- package/src/mixins/index.js +3 -3
- package/src/mixins/search-filter.js +227 -0
- package/src/mixins/view.js +35 -13
- package/src/pages/ErrorComponent.vue +56 -0
- package/src/pages/Forbidden.vue +21 -5
- package/src/pages/NotFound.vue +21 -5
- package/src/pages/ServerError.vue +25 -0
- package/src/pages/Unauthorized.vue +28 -0
- package/src/plugins/index.js +4 -2
- package/src/plugins/logger/Logger.js +44 -0
- package/src/plugins/logger/Logger.yml +9 -0
- package/src/plugins/screen/Screen.js +5 -0
- package/src/vue-plugin.js +6 -3
- package/src/assets/logo-modular.svg +0 -1
- package/src/css/design-system.scss +0 -18
- package/src/css/shadow.scss +0 -7
- package/src/mixins/screen.js +0 -34
|
@@ -4,25 +4,29 @@ meta:
|
|
|
4
4
|
desc: Componente para C.R.U.D. responsável pela parte de listagem (Read).
|
|
5
5
|
|
|
6
6
|
props:
|
|
7
|
+
before-fetch:
|
|
8
|
+
desc: Callback para controlar como funciona o comportamento do fetchList.
|
|
9
|
+
default: null
|
|
10
|
+
type: Function
|
|
11
|
+
examples: ['beforeFetch({ payload, resolve, done })']
|
|
12
|
+
|
|
7
13
|
entity:
|
|
8
14
|
desc: Entidade da store, por exemplo se tiver que trabalhar com modulo de usuários, teremos o model "users" na store, que vai ser nossa "entity".
|
|
9
15
|
required: true
|
|
10
16
|
type: String
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
type: String
|
|
18
|
+
errors:
|
|
19
|
+
model: true
|
|
20
|
+
desc: Model de errors, utilizado para recuperar os errors fora do template.
|
|
21
|
+
default: {}
|
|
22
|
+
type: Object
|
|
23
|
+
examples: [v-model:errors="errors"]
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
fetching:
|
|
21
26
|
model: true
|
|
22
|
-
desc: Model de
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
examples: [v-model:results="results"]
|
|
27
|
+
desc: Model de fetching, utilizado para saber se o componente está fazendo fetching de dados.
|
|
28
|
+
type: Boolean
|
|
29
|
+
examples: [v-model:fetching="isFetching"]
|
|
26
30
|
|
|
27
31
|
fields:
|
|
28
32
|
model: true
|
|
@@ -31,12 +35,10 @@ props:
|
|
|
31
35
|
type: Object
|
|
32
36
|
examples: [v-model:fields="fields"]
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
desc: Model de errors, utilizado para recuperar os errors fora do template.
|
|
38
|
+
filters-props:
|
|
39
|
+
desc: Repassa as props para o componente "QasFilters".
|
|
37
40
|
default: {}
|
|
38
41
|
type: Object
|
|
39
|
-
examples: [v-model:errors="errors"]
|
|
40
42
|
|
|
41
43
|
metadata:
|
|
42
44
|
model: true
|
|
@@ -45,14 +47,20 @@ props:
|
|
|
45
47
|
type: Object
|
|
46
48
|
examples: [v-model:metadata="metadata"]
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
results:
|
|
49
51
|
model: true
|
|
50
|
-
desc: Model de
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
desc: Model de results, utilizado para recuperar a lista retornada pelo componente.
|
|
53
|
+
default: []
|
|
54
|
+
type: Array
|
|
55
|
+
examples: [v-model:results="results"]
|
|
56
|
+
|
|
57
|
+
url:
|
|
58
|
+
desc: Envia como parâmetro para a action "fetchList" do modulo correspondente a "entity".
|
|
59
|
+
type: String
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
desc:
|
|
61
|
+
use-boundary:
|
|
62
|
+
desc: Controla o limite que o FormView terá, quando é "false", a tag pai deixa de ser um "QPage" para ser uma "div" e é removido as classes "container" e "spaced", comumente utilizando quando precisa usar o QasFormView dentro de um dialog.
|
|
63
|
+
default: true
|
|
56
64
|
type: Boolean
|
|
57
65
|
|
|
58
66
|
use-filter:
|
|
@@ -60,28 +68,46 @@ props:
|
|
|
60
68
|
default: true
|
|
61
69
|
type: Boolean
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
desc:
|
|
65
|
-
default:
|
|
66
|
-
type:
|
|
67
|
-
|
|
68
|
-
slots:
|
|
69
|
-
header:
|
|
70
|
-
desc: 'Slot para acessar o header.'
|
|
71
|
+
use-refresh:
|
|
72
|
+
desc: Controla o [pull-to-refresh](https://quasar.dev/vue-components/pull-to-refresh#basic).
|
|
73
|
+
default: true
|
|
74
|
+
type: Boolean
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
desc:
|
|
76
|
+
use-results-area-only:
|
|
77
|
+
desc: Controla se irá sempre ser exibido os resultados independente se não há nenhum resultado a ser exibido.
|
|
78
|
+
type: Boolean
|
|
74
79
|
|
|
80
|
+
slots:
|
|
75
81
|
default:
|
|
76
82
|
desc: 'Slot para ter o conteúdo principal (dentro do main).'
|
|
77
83
|
|
|
78
84
|
empty-results:
|
|
79
85
|
desc: 'Slot acessar quando a listagem está vazia.'
|
|
80
86
|
|
|
87
|
+
filter:
|
|
88
|
+
desc: 'Slot para acessar o filtro.'
|
|
89
|
+
|
|
81
90
|
footer:
|
|
82
91
|
desc: 'Slot para acessar o footer.'
|
|
83
92
|
|
|
93
|
+
header:
|
|
94
|
+
desc: 'Slot para acessar o header.'
|
|
95
|
+
|
|
84
96
|
events:
|
|
97
|
+
'@fetch-success -> function(value)':
|
|
98
|
+
desc: Dispara quando a action "fetchList" é executada com sucesso.
|
|
99
|
+
params:
|
|
100
|
+
value:
|
|
101
|
+
desc: Retorna todos os dados "cru" respondido pelo fetch.
|
|
102
|
+
type: Object
|
|
103
|
+
|
|
104
|
+
'@fetch-error -> function(value)':
|
|
105
|
+
desc: Dispara quando a action "fetchList" cai em uma exceção.
|
|
106
|
+
params:
|
|
107
|
+
value:
|
|
108
|
+
desc: Retorna todos os dados "cru" respondido na exceção do fetch.
|
|
109
|
+
type: Object
|
|
110
|
+
|
|
85
111
|
'@update:results -> function(value)':
|
|
86
112
|
desc: Dispara quando a action "fetchList" é executada com sucesso, é chamado antes do evento "fetch-success".
|
|
87
113
|
params:
|
|
@@ -116,17 +142,3 @@ events:
|
|
|
116
142
|
value:
|
|
117
143
|
desc: Retorna se está ou não fazendo fetching de dados.
|
|
118
144
|
type: Boolean
|
|
119
|
-
|
|
120
|
-
'@fetch-success -> function(value)':
|
|
121
|
-
desc: Dispara quando a action "fetchList" é executada com sucesso.
|
|
122
|
-
params:
|
|
123
|
-
value:
|
|
124
|
-
desc: Retorna todos os dados "cru" respondido pelo fetch.
|
|
125
|
-
type: Object
|
|
126
|
-
|
|
127
|
-
'@fetch-error -> function(value)':
|
|
128
|
-
desc: Dispara quando a action "fetchList" cai em uma exceção.
|
|
129
|
-
params:
|
|
130
|
-
value:
|
|
131
|
-
desc: Retorna todos os dados "cru" respondido na exceção do fetch.
|
|
132
|
-
type: Object
|
|
@@ -26,13 +26,13 @@ export default {
|
|
|
26
26
|
default: () => []
|
|
27
27
|
},
|
|
28
28
|
|
|
29
|
-
usePopup: {
|
|
30
|
-
type: Boolean
|
|
31
|
-
},
|
|
32
|
-
|
|
33
29
|
zoom: {
|
|
34
30
|
type: Number,
|
|
35
31
|
default: 17
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
usePopup: {
|
|
35
|
+
type: Boolean
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
|
|
@@ -70,7 +70,7 @@ export default {
|
|
|
70
70
|
<style lang="scss">
|
|
71
71
|
.qas-map {
|
|
72
72
|
&__draw {
|
|
73
|
-
height: 300px;
|
|
73
|
+
height: 300px !important;
|
|
74
74
|
width: 100%;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
<div v-if="!row[destroyKey]" :key="index" class="col-12 q-mt-md">
|
|
11
11
|
<div>
|
|
12
12
|
<div class="flex items-center justify-between q-py-xs">
|
|
13
|
-
<qas-label v-if="!useSingleLabel" :label="
|
|
13
|
+
<qas-label v-if="!useSingleLabel" :label="getRowLabel(index)" />
|
|
14
14
|
|
|
15
15
|
<div v-if="!useInlineActions" class="q-gutter-x-sm">
|
|
16
|
-
<qas-btn v-if="useDuplicate" v-bind="
|
|
17
|
-
<qas-btn v-if="showDestroyBtn" v-bind="
|
|
16
|
+
<qas-btn v-if="useDuplicate" v-bind="buttonDuplicateProps" @click="add(row)" />
|
|
17
|
+
<qas-btn v-if="showDestroyBtn" v-bind="buttonDestroyProps" @click="destroy(index, row)" />
|
|
18
18
|
</div>
|
|
19
19
|
</div>
|
|
20
20
|
|
|
@@ -75,7 +75,6 @@ import { TransitionGroup } from 'vue'
|
|
|
75
75
|
|
|
76
76
|
import { constructObject } from '../../helpers'
|
|
77
77
|
import { extend } from 'quasar'
|
|
78
|
-
import { camelize } from 'humps'
|
|
79
78
|
|
|
80
79
|
export default {
|
|
81
80
|
name: 'QasNestedFields',
|
|
@@ -96,7 +95,7 @@ export default {
|
|
|
96
95
|
default: 'Inserir novo campo'
|
|
97
96
|
},
|
|
98
97
|
|
|
99
|
-
|
|
98
|
+
buttonDestroyProps: {
|
|
100
99
|
type: Object,
|
|
101
100
|
default: () => {
|
|
102
101
|
return {
|
|
@@ -108,14 +107,14 @@ export default {
|
|
|
108
107
|
}
|
|
109
108
|
},
|
|
110
109
|
|
|
111
|
-
|
|
110
|
+
buttonDuplicateProps: {
|
|
112
111
|
type: Object,
|
|
113
112
|
default: () => {
|
|
114
113
|
return {
|
|
115
114
|
label: 'Duplicar',
|
|
116
115
|
icon: 'o_content_copy',
|
|
117
116
|
flat: true,
|
|
118
|
-
|
|
117
|
+
useLabelOnSmallScreen: false,
|
|
119
118
|
dense: true
|
|
120
119
|
}
|
|
121
120
|
}
|
|
@@ -160,6 +159,11 @@ export default {
|
|
|
160
159
|
}
|
|
161
160
|
},
|
|
162
161
|
|
|
162
|
+
identifierItemKey: {
|
|
163
|
+
type: String,
|
|
164
|
+
default: 'uuid'
|
|
165
|
+
},
|
|
166
|
+
|
|
163
167
|
rowLabel: {
|
|
164
168
|
type: String,
|
|
165
169
|
default: ''
|
|
@@ -225,13 +229,7 @@ export default {
|
|
|
225
229
|
},
|
|
226
230
|
|
|
227
231
|
children () {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
for (const key in field?.children) {
|
|
231
|
-
field.children[key].name = camelize(field?.children[key].name)
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return field?.children
|
|
232
|
+
return this.field?.children
|
|
235
233
|
},
|
|
236
234
|
|
|
237
235
|
showDestroyBtn () {
|
|
@@ -258,8 +256,7 @@ export default {
|
|
|
258
256
|
|
|
259
257
|
return {
|
|
260
258
|
tag: 'div',
|
|
261
|
-
enterActiveClass: 'animated slideInDown'
|
|
262
|
-
leaveActiveClass: 'animated slideOutUp'
|
|
259
|
+
enterActiveClass: 'animated slideInDown'
|
|
263
260
|
}
|
|
264
261
|
}
|
|
265
262
|
},
|
|
@@ -272,9 +269,9 @@ export default {
|
|
|
272
269
|
immediate: true
|
|
273
270
|
},
|
|
274
271
|
|
|
275
|
-
|
|
272
|
+
rowObject: {
|
|
276
273
|
handler () {
|
|
277
|
-
!this.
|
|
274
|
+
if (!this.nested.length) return this.setDefaultNestedValue()
|
|
278
275
|
},
|
|
279
276
|
immediate: true
|
|
280
277
|
}
|
|
@@ -282,13 +279,22 @@ export default {
|
|
|
282
279
|
|
|
283
280
|
methods: {
|
|
284
281
|
add (row = {}) {
|
|
285
|
-
|
|
282
|
+
const payload = { ...this.rowObject, ...row }
|
|
283
|
+
const hasIdentifierKey = payload[this.identifierItemKey]
|
|
284
|
+
|
|
285
|
+
if (hasIdentifierKey) {
|
|
286
|
+
delete payload[this.identifierItemKey]
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
this.nested.push(payload)
|
|
286
290
|
|
|
287
291
|
this.$nextTick(() => {
|
|
288
292
|
this.useAnimation && this.setScroll()
|
|
289
293
|
this.setFocus()
|
|
290
294
|
})
|
|
291
295
|
|
|
296
|
+
this.$qas.logger.group('QasNestedFields - add', [payload])
|
|
297
|
+
|
|
292
298
|
return this.updateModelValue()
|
|
293
299
|
},
|
|
294
300
|
|
|
@@ -304,10 +310,12 @@ export default {
|
|
|
304
310
|
},
|
|
305
311
|
|
|
306
312
|
destroy (index, row) {
|
|
307
|
-
this.useRemoveOnDestroy
|
|
313
|
+
!row[this.identifierItemKey] && this.useRemoveOnDestroy
|
|
308
314
|
? this.nested.splice(index, 1)
|
|
309
315
|
: this.nested.splice(index, 1, { [this.destroyKey]: true, ...row })
|
|
310
316
|
|
|
317
|
+
this.$qas.logger.group('QasNestedFields - destroy', [{ index, row }])
|
|
318
|
+
|
|
311
319
|
return this.updateModelValue()
|
|
312
320
|
},
|
|
313
321
|
|
|
@@ -333,7 +341,7 @@ export default {
|
|
|
333
341
|
})
|
|
334
342
|
},
|
|
335
343
|
|
|
336
|
-
|
|
344
|
+
getRowLabel (rowKey) {
|
|
337
345
|
if (this.rowLabel) {
|
|
338
346
|
return this.useIndexLabel ? `${this.rowLabel} ${rowKey + 1}` : this.rowLabel
|
|
339
347
|
}
|
|
@@ -9,15 +9,15 @@ props:
|
|
|
9
9
|
default: Inserir novo campo
|
|
10
10
|
type: Boolean
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
button-destroy-props:
|
|
13
13
|
desc: Props do botão de excluir linha contendo os campos.
|
|
14
14
|
default: "{ label: 'Remover', o_cancel, flat: true, dense: true }"
|
|
15
15
|
debugger: true
|
|
16
16
|
type: Object
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
button-duplicate-props:
|
|
19
19
|
desc: Props do botão de duplicar linha contendo os campos.
|
|
20
|
-
default: "{ label: 'Duplicar', o_content_copy, flat: true, dense: true,
|
|
20
|
+
default: "{ label: 'Duplicar', o_content_copy, flat: true, dense: true, useLabelOnSmallScreen: false }"
|
|
21
21
|
debugger: true
|
|
22
22
|
type: Object
|
|
23
23
|
|
|
@@ -26,13 +26,6 @@ props:
|
|
|
26
26
|
default: destroyed
|
|
27
27
|
type: String
|
|
28
28
|
|
|
29
|
-
model-value:
|
|
30
|
-
desc: Model do componente
|
|
31
|
-
default: []
|
|
32
|
-
type: Array
|
|
33
|
-
examples: [v-model="value"]
|
|
34
|
-
model: true
|
|
35
|
-
|
|
36
29
|
errors:
|
|
37
30
|
desc: Propriedade de erros para mostrar nos campos gerados.
|
|
38
31
|
default: {}
|
|
@@ -63,6 +56,19 @@ props:
|
|
|
63
56
|
type: String
|
|
64
57
|
examples: [xs, sm, md, lg, xl]
|
|
65
58
|
|
|
59
|
+
identifier-item-key:
|
|
60
|
+
desc: Define um identificador para o item. O identificador será utilizado para validar exclusão do item, por exemplo.
|
|
61
|
+
default: uuid
|
|
62
|
+
type: String
|
|
63
|
+
examples: [id, uuid, slug]
|
|
64
|
+
|
|
65
|
+
model-value:
|
|
66
|
+
desc: Model do componente
|
|
67
|
+
default: []
|
|
68
|
+
type: Array
|
|
69
|
+
examples: [v-model="value"]
|
|
70
|
+
model: true
|
|
71
|
+
|
|
66
72
|
row-label:
|
|
67
73
|
desc: Rótulo entre cada linha (row).
|
|
68
74
|
type: String
|
|
@@ -105,8 +111,16 @@ props:
|
|
|
105
111
|
type: Boolean
|
|
106
112
|
|
|
107
113
|
slots:
|
|
108
|
-
|
|
109
|
-
desc:
|
|
114
|
+
add-input:
|
|
115
|
+
desc: Slot para acessar campo de adicionar.
|
|
116
|
+
scope:
|
|
117
|
+
'add -> function(row)':
|
|
118
|
+
desc: Função para adicionar novos campos no model.
|
|
119
|
+
type: Function
|
|
120
|
+
examples: ["add({ name: 'novo valor' })"]
|
|
121
|
+
|
|
122
|
+
custom-fields:
|
|
123
|
+
desc: Slot para adicionar um campo customizado.
|
|
110
124
|
scope:
|
|
111
125
|
fields:
|
|
112
126
|
desc: Campos atuais.
|
|
@@ -126,9 +140,14 @@ slots:
|
|
|
126
140
|
type: Function
|
|
127
141
|
examples: ["updateValue({ name: 'novo valor' }, 2)"]
|
|
128
142
|
|
|
129
|
-
|
|
130
|
-
desc:
|
|
143
|
+
fields:
|
|
144
|
+
desc: Substitui o "QasFormGenerator".
|
|
131
145
|
scope:
|
|
146
|
+
fields:
|
|
147
|
+
desc: Campos atuais.
|
|
148
|
+
default: {}
|
|
149
|
+
type: Object
|
|
150
|
+
|
|
132
151
|
index:
|
|
133
152
|
desc: Index atual dos campos
|
|
134
153
|
type: Number
|
|
@@ -142,14 +161,9 @@ slots:
|
|
|
142
161
|
type: Function
|
|
143
162
|
examples: ["updateValue({ name: 'novo valor' }, 2)"]
|
|
144
163
|
|
|
145
|
-
|
|
146
|
-
desc:
|
|
164
|
+
'field-[nome-da-chave]':
|
|
165
|
+
desc: Repassa todos os slots e escopos do "QasFormGenerator".
|
|
147
166
|
scope:
|
|
148
|
-
fields:
|
|
149
|
-
desc: Campos atuais.
|
|
150
|
-
default: {}
|
|
151
|
-
type: Object
|
|
152
|
-
|
|
153
167
|
index:
|
|
154
168
|
desc: Index atual dos campos
|
|
155
169
|
type: Number
|
|
@@ -163,13 +177,6 @@ slots:
|
|
|
163
177
|
type: Function
|
|
164
178
|
examples: ["updateValue({ name: 'novo valor' }, 2)"]
|
|
165
179
|
|
|
166
|
-
add-input:
|
|
167
|
-
desc: Slot para acessar campo de adicionar.
|
|
168
|
-
scope:
|
|
169
|
-
'add -> function(row)':
|
|
170
|
-
desc: Função para adicionar novos campos no model.
|
|
171
|
-
type: Function
|
|
172
|
-
examples: ["add({ name: 'novo valor' })"]
|
|
173
180
|
|
|
174
181
|
events:
|
|
175
182
|
'@update:model-value -> function (value)':
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<q-field
|
|
3
|
-
<template #control="{
|
|
4
|
-
<input v-show="floatingLabel" :id="id" ref="input" class="q-field__input"
|
|
2
|
+
<q-field :model-value="modelValue" outlined>
|
|
3
|
+
<template #control="{ floatingLabel, id }">
|
|
4
|
+
<input v-show="floatingLabel" :id="id" ref="input" class="q-field__input" @blur="emitValue" @click="setSelect" @input="emitUpdateModel($event.target.value)">
|
|
5
5
|
</template>
|
|
6
6
|
</q-field>
|
|
7
7
|
</template>
|
|
@@ -20,17 +20,7 @@ export default {
|
|
|
20
20
|
name: 'QasNumericInput',
|
|
21
21
|
|
|
22
22
|
props: {
|
|
23
|
-
|
|
24
|
-
default: true,
|
|
25
|
-
type: Boolean
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
allowPositive: {
|
|
29
|
-
default: true,
|
|
30
|
-
type: Boolean
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
autonumericProps: {
|
|
23
|
+
autonumericOptions: {
|
|
34
24
|
default: () => ({}),
|
|
35
25
|
type: Object
|
|
36
26
|
},
|
|
@@ -62,10 +52,23 @@ export default {
|
|
|
62
52
|
preset: {
|
|
63
53
|
default: false,
|
|
64
54
|
type: [Boolean, String]
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
useNegative: {
|
|
58
|
+
default: true,
|
|
59
|
+
type: Boolean
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
usePositive: {
|
|
63
|
+
default: true,
|
|
64
|
+
type: Boolean
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
|
|
68
|
-
emits: [
|
|
68
|
+
emits: [
|
|
69
|
+
'update:modelValue',
|
|
70
|
+
'update-model'
|
|
71
|
+
],
|
|
69
72
|
|
|
70
73
|
data () {
|
|
71
74
|
return {
|
|
@@ -76,15 +79,13 @@ export default {
|
|
|
76
79
|
computed: {
|
|
77
80
|
defaultMode () {
|
|
78
81
|
return defaultModes[this.mode]
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
model: {
|
|
82
|
-
get () {
|
|
83
|
-
return this.modelValue
|
|
84
|
-
},
|
|
82
|
+
}
|
|
83
|
+
},
|
|
85
84
|
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
watch: {
|
|
86
|
+
modelValue (value) {
|
|
87
|
+
if (this.autoNumeric) {
|
|
88
|
+
this.autoNumeric.set(value)
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
},
|
|
@@ -104,11 +105,11 @@ export default {
|
|
|
104
105
|
Object.assign(options, autoNumericPredefinedOptions[value])
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
if (!this.
|
|
108
|
+
if (!this.useNegative) {
|
|
108
109
|
options.minimumValue = 0
|
|
109
110
|
}
|
|
110
111
|
|
|
111
|
-
if (!this.
|
|
112
|
+
if (!this.usePositive) {
|
|
112
113
|
options.maximumValue = 0
|
|
113
114
|
}
|
|
114
115
|
|
|
@@ -116,16 +117,33 @@ export default {
|
|
|
116
117
|
options.decimalPlaces = this.decimalPlaces
|
|
117
118
|
}
|
|
118
119
|
|
|
119
|
-
Object.assign(options, this.
|
|
120
|
+
Object.assign(options, this.autonumericOptions)
|
|
120
121
|
|
|
121
122
|
this.$nextTick(() => {
|
|
122
|
-
this.$refs.input.value = this.modelValue
|
|
123
123
|
this.autoNumeric = new AutoNumeric(this.$refs.input, options)
|
|
124
|
+
this.autoNumeric.set(this.modelValue)
|
|
124
125
|
})
|
|
125
126
|
},
|
|
126
127
|
|
|
127
128
|
beforeUnmount () {
|
|
128
129
|
this.autoNumeric.remove()
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
methods: {
|
|
133
|
+
setSelect () {
|
|
134
|
+
this.$refs?.input?.select()
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
emitValue () {
|
|
138
|
+
this.$emit('update:modelValue', this.autoNumeric.getNumber())
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
emitUpdateModel (value) {
|
|
142
|
+
this.$emit('update-model', {
|
|
143
|
+
value,
|
|
144
|
+
raw: this.autoNumeric.getNumber()
|
|
145
|
+
})
|
|
146
|
+
}
|
|
129
147
|
}
|
|
130
148
|
}
|
|
131
149
|
</script>
|
|
@@ -7,16 +7,6 @@ meta:
|
|
|
7
7
|
desc: Componente de input para decimal, inteiro, dinheiro e porcentagem.
|
|
8
8
|
|
|
9
9
|
props:
|
|
10
|
-
allow-negative:
|
|
11
|
-
desc: Controla se pode ou não números negativos.
|
|
12
|
-
default: true
|
|
13
|
-
type: Boolean
|
|
14
|
-
|
|
15
|
-
allow-positive:
|
|
16
|
-
desc: Controla se pode ou não números positivos.
|
|
17
|
-
default: true
|
|
18
|
-
type: Boolean
|
|
19
|
-
|
|
20
10
|
autonumeric-props:
|
|
21
11
|
desc: Opções do autonumeric (http://autonumeric.org/guide).
|
|
22
12
|
default: {}
|
|
@@ -43,9 +33,33 @@ props:
|
|
|
43
33
|
desc: Propriedade preset serve para usar configuração de predefinição/nacionalidade da moeda pré setada pelo autonumeric (Brasil é o padrão).
|
|
44
34
|
type: [Boolean, String]
|
|
45
35
|
|
|
36
|
+
use-negative:
|
|
37
|
+
desc: Controla se pode ou não números negativos.
|
|
38
|
+
default: true
|
|
39
|
+
type: Boolean
|
|
40
|
+
|
|
41
|
+
use-positive:
|
|
42
|
+
desc: Controla se pode ou não números positivos.
|
|
43
|
+
default: true
|
|
44
|
+
type: Boolean
|
|
45
|
+
|
|
46
46
|
events:
|
|
47
47
|
'@update:model-value -> function (value)':
|
|
48
|
-
desc: Dispara toda vez que o model é atualizado, também utilizado para v-model.
|
|
48
|
+
desc: Dispara toda vez que o model é atualizado (após o blur do input), também utilizado para v-model.
|
|
49
49
|
params:
|
|
50
50
|
value:
|
|
51
|
-
desc: Novo valor do v-model
|
|
51
|
+
desc: Novo valor do v-model.
|
|
52
|
+
|
|
53
|
+
'@update-model -> function (payload)':
|
|
54
|
+
desc: Dispara toda vez que o model é atualizado, diferente do "update:model-value", é disparado sempre que acontece um novo input. Também utilizado para v-model.
|
|
55
|
+
params:
|
|
56
|
+
payload:
|
|
57
|
+
type: Object
|
|
58
|
+
desc: Objeto contendo informações atualizadas.
|
|
59
|
+
params:
|
|
60
|
+
value:
|
|
61
|
+
type: String,
|
|
62
|
+
desc: Valor formato.
|
|
63
|
+
raw:
|
|
64
|
+
type: Number
|
|
65
|
+
desc: Valor sem formatação.
|
|
@@ -17,23 +17,27 @@
|
|
|
17
17
|
<script>
|
|
18
18
|
import { castArray } from 'lodash-es'
|
|
19
19
|
import { useHistory } from '../../composables'
|
|
20
|
+
import { createMetaMixin } from 'quasar'
|
|
20
21
|
|
|
21
22
|
const { hasPreviousRoute, history, getPreviousRoute } = useHistory()
|
|
22
23
|
|
|
23
24
|
export default {
|
|
24
25
|
name: 'QasPageHeader',
|
|
25
26
|
|
|
27
|
+
mixins: [
|
|
28
|
+
createMetaMixin(function () {
|
|
29
|
+
return {
|
|
30
|
+
title: this.title
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
],
|
|
34
|
+
|
|
26
35
|
props: {
|
|
27
36
|
breadcrumbs: {
|
|
28
37
|
default: '',
|
|
29
38
|
type: [Array, String]
|
|
30
39
|
},
|
|
31
40
|
|
|
32
|
-
useBreadcrumbs: {
|
|
33
|
-
default: true,
|
|
34
|
-
type: Boolean
|
|
35
|
-
},
|
|
36
|
-
|
|
37
41
|
root: {
|
|
38
42
|
default: '',
|
|
39
43
|
type: [Object, String]
|
|
@@ -42,6 +46,11 @@ export default {
|
|
|
42
46
|
title: {
|
|
43
47
|
default: '',
|
|
44
48
|
type: String
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
useBreadcrumbs: {
|
|
52
|
+
default: true,
|
|
53
|
+
type: Boolean
|
|
45
54
|
}
|
|
46
55
|
},
|
|
47
56
|
|
|
@@ -85,12 +94,6 @@ export default {
|
|
|
85
94
|
|
|
86
95
|
return lastIndex === index ? 'text-grey-7' : 'text-primary'
|
|
87
96
|
}
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
meta () {
|
|
91
|
-
return {
|
|
92
|
-
title: this.title
|
|
93
|
-
}
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
</script>
|
|
@@ -11,10 +11,6 @@ props:
|
|
|
11
11
|
desc: Configurações do QBreadcrumbs (https://quasar.dev/vue-components/breadcrumbs#introduction).
|
|
12
12
|
type: [Array, String]
|
|
13
13
|
|
|
14
|
-
use-breadcrumbs:
|
|
15
|
-
desc: Habilita ou não o breadcrumbs.
|
|
16
|
-
type: [Array, String]
|
|
17
|
-
|
|
18
14
|
title:
|
|
19
15
|
desc: Título do cabeçalho.
|
|
20
16
|
type: String
|
|
@@ -22,3 +18,7 @@ props:
|
|
|
22
18
|
root:
|
|
23
19
|
desc: Rota raiz do breadcrumbs.
|
|
24
20
|
type: [Object, String]
|
|
21
|
+
|
|
22
|
+
use-breadcrumbs:
|
|
23
|
+
desc: Habilita ou não o breadcrumbs.
|
|
24
|
+
type: [Array, String]
|