@bildvitta/quasar-ui-asteroid 2.17.0 → 3.0.0-alpha.3
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/QasActions.json +40 -0
- package/dist/api/QasActionsMenu.json +64 -0
- package/dist/api/QasAlert.json +40 -0
- package/dist/api/QasAppBar.json +52 -0
- package/dist/api/QasAppMenu.json +38 -0
- package/dist/api/QasAvatar.json +44 -0
- package/dist/api/QasBox.json +16 -0
- package/dist/api/QasBreakline.json +32 -0
- package/dist/api/QasBtn.json +16 -0
- package/dist/api/QasCard.json +52 -0
- package/dist/api/QasCheckboxGroup.json +38 -0
- package/dist/api/QasCopy.json +29 -0
- package/dist/api/QasDateTimeInput.json +60 -0
- package/dist/api/QasDebugger.json +13 -0
- package/dist/api/QasDelete.json +64 -0
- package/dist/api/QasDialog.json +109 -0
- package/dist/api/QasDialogRouter.json +31 -0
- package/dist/api/QasField.json +56 -0
- package/dist/api/QasFilters.json +111 -0
- package/dist/api/QasFormGenerator.json +92 -0
- package/dist/api/QasFormView.json +228 -0
- package/dist/api/QasGallery.json +54 -0
- package/dist/api/QasGridGenerator.json +108 -0
- package/dist/api/QasInput.json +40 -0
- package/dist/api/QasLabel.json +40 -0
- package/dist/api/QasLayout.json +47 -0
- package/dist/api/QasListItems.json +72 -0
- package/dist/api/QasListView.json +161 -0
- package/dist/api/QasMap.json +41 -0
- package/dist/api/QasNestedFields.json +223 -0
- package/dist/api/QasNumericInput.json +68 -0
- package/dist/api/QasPageHeader.json +36 -0
- package/dist/api/QasPasswordInput.json +121 -0
- package/dist/api/QasPasswordStrengthChecker.json +126 -0
- package/dist/api/QasProfile.json +74 -0
- package/dist/api/QasResizer.json +34 -0
- package/dist/api/QasSearchBox.json +91 -0
- package/dist/api/QasSelect.json +88 -0
- package/dist/api/QasSelectList.json +134 -0
- package/dist/api/QasSignaturePad.json +63 -0
- package/dist/api/QasSignatureUploader.json +41 -0
- package/dist/api/QasSingleView.json +147 -0
- package/dist/api/QasSortable.json +80 -0
- package/dist/api/QasTableGenerator.json +56 -0
- package/dist/api/QasTabsGenerator.json +90 -0
- package/dist/api/QasTextTruncate.json +38 -0
- package/dist/api/QasTransfer.json +70 -0
- package/dist/api/QasUploader.json +143 -0
- package/dist/asteroid.cjs.css +1 -0
- package/dist/asteroid.cjs.js +9307 -0
- package/dist/asteroid.cjs.min.js +6 -0
- package/dist/asteroid.esm.css +1 -0
- package/dist/asteroid.esm.js +9298 -0
- package/dist/asteroid.esm.min.js +6 -0
- package/dist/asteroid.umd.css +1 -0
- package/dist/asteroid.umd.js +9301 -0
- package/dist/asteroid.umd.min.js +6 -0
- package/dist/vetur/asteroid-attributes.json +1178 -0
- package/dist/vetur/asteroid-tags.json +535 -0
- package/package.json +41 -56
- package/src/assets/logo-modular.svg +1 -1
- package/src/asteroid.js +1 -0
- package/src/components/actions/QasActions.vue +45 -0
- package/src/components/actions/QasActions.yml +24 -0
- package/src/components/actions-menu/QasActionsMenu.vue +41 -14
- package/src/components/actions-menu/QasActionsMenu.yml +63 -0
- package/src/components/alert/QasAlert.vue +90 -0
- package/src/components/alert/QasAlert.yml +33 -0
- package/src/components/app-bar/QasAppBar.vue +16 -13
- package/src/components/app-bar/QasAppBar.yml +51 -0
- package/src/components/app-menu/QasAppMenu.vue +10 -12
- package/src/components/app-menu/QasAppMenu.yml +32 -0
- package/src/components/avatar/QasAvatar.vue +17 -9
- package/src/components/avatar/QasAvatar.yml +38 -0
- package/src/components/box/QasBox.vue +12 -4
- package/src/components/box/QasBox.yml +13 -0
- package/src/components/breakline/QasBreakline.vue +37 -0
- package/src/components/breakline/QasBreakline.yml +25 -0
- package/src/components/btn/QasBtn.vue +27 -24
- package/src/components/btn/QasBtn.yml +13 -0
- package/src/components/card/QasCard.vue +32 -33
- package/src/components/card/QasCard.yml +42 -0
- package/src/components/checkbox-group/QasCheckboxGroup.vue +50 -17
- package/src/components/checkbox-group/QasCheckboxGroup.yml +30 -0
- package/src/components/copy/QasCopy.vue +22 -11
- package/src/components/copy/QasCopy.yml +20 -0
- package/src/components/date-time-input/QasDateTimeInput.vue +18 -26
- package/src/components/date-time-input/QasDateTimeInput.yml +54 -0
- package/src/components/debugger/QasDebugger.vue +2 -0
- package/src/components/debugger/QasDebugger.yml +10 -0
- package/src/components/delete/QasDelete.vue +43 -16
- package/src/components/delete/QasDelete.yml +52 -0
- package/src/components/dialog/QasDialog.vue +63 -67
- package/src/components/dialog/QasDialog.yml +86 -0
- package/src/components/dialog-router/QasDialogRouter.vue +14 -4
- package/src/components/dialog-router/QasDialogRouter.yml +23 -0
- package/src/components/field/QasField.vue +21 -24
- package/src/components/field/QasField.yml +31 -0
- package/src/components/filters/QasFilters.vue +33 -26
- package/src/components/filters/QasFilters.yml +91 -0
- package/src/components/form-generator/QasFormGenerator.vue +13 -15
- package/src/components/form-generator/QasFormGenerator.yml +64 -0
- package/src/components/form-view/QasFormView.vue +129 -69
- package/src/components/form-view/QasFormView.yml +179 -0
- package/src/components/gallery/QasGallery.vue +47 -30
- package/src/components/gallery/QasGallery.yml +51 -0
- package/src/components/grid-generator/QasGridGenerator.vue +15 -7
- package/src/components/grid-generator/QasGridGenerator.yml +73 -0
- package/src/components/index.js +0 -0
- package/src/components/input/QasInput.vue +43 -36
- package/src/components/input/QasInput.yml +32 -0
- package/src/components/label/QasLabel.vue +14 -15
- package/src/components/label/QasLabel.yml +28 -0
- package/src/components/layout/QasLayout.vue +13 -21
- package/src/components/layout/QasLayout.yml +38 -0
- package/src/components/list-items/QasListItems.vue +15 -12
- package/src/components/list-items/QasListItems.yml +57 -0
- package/src/components/list-view/QasListView.vue +57 -31
- package/src/components/list-view/QasListView.yml +132 -0
- package/src/components/map/QasMap.vue +15 -31
- package/src/components/map/QasMap.yml +33 -0
- package/src/components/nested-fields/QasNestedFields.vue +57 -47
- package/src/components/nested-fields/QasNestedFields.yml +180 -0
- package/src/components/numeric-input/QasNumericInput.vue +31 -22
- package/src/components/numeric-input/QasNumericInput.yml +51 -0
- package/src/components/page-header/QasPageHeader.vue +20 -11
- package/src/components/page-header/QasPageHeader.yml +24 -0
- package/src/components/password-input/QasPasswordInput.vue +24 -21
- package/src/components/password-input/QasPasswordInput.yml +103 -0
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.vue +51 -34
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.yml +103 -0
- package/src/components/profile/QasProfile.vue +15 -13
- package/src/components/profile/QasProfile.yml +60 -0
- package/src/components/resizer/QasResizer.vue +3 -3
- package/src/components/resizer/QasResizer.yml +23 -0
- package/src/components/search-box/QasSearchBox.vue +50 -21
- package/src/components/search-box/QasSearchBox.yml +76 -0
- package/src/components/select/QasSelect.vue +51 -50
- package/src/components/select/QasSelect.yml +62 -0
- package/src/components/select-list/QasSelectList.vue +72 -53
- package/src/components/select-list/QasSelectList.yml +116 -0
- package/src/components/signature-pad/QasSignaturePad.vue +60 -40
- package/src/components/signature-pad/QasSignaturePad.yml +53 -0
- package/src/components/signature-uploader/QasSignatureUploader.vue +19 -17
- package/src/components/signature-uploader/QasSignatureUploader.yml +36 -0
- package/src/components/single-view/QasSingleView.vue +41 -22
- package/src/components/single-view/QasSingleView.yml +116 -0
- package/src/components/sortable/QasSortable.vue +51 -30
- package/src/components/sortable/QasSortable.yml +65 -0
- package/src/components/table-generator/QasTableGenerator.vue +112 -21
- package/src/components/table-generator/QasTableGenerator.yml +46 -0
- package/src/components/tabs-generator/QasTabsGenerator.vue +37 -25
- package/src/components/tabs-generator/QasTabsGenerator.yml +67 -0
- package/src/components/text-truncate/QasTextTruncate.vue +25 -17
- package/src/components/text-truncate/QasTextTruncate.yml +32 -0
- package/src/components/transfer/QasTransfer.vue +48 -49
- package/src/components/transfer/QasTransfer.yml +59 -0
- package/src/components/uploader/QasUploader.vue +169 -48
- package/src/components/uploader/QasUploader.yml +117 -0
- package/src/css/background.scss +1 -1
- package/src/css/border.scss +7 -6
- package/src/css/design-system.scss +0 -43
- package/src/css/fonts.scss +2 -28
- package/src/css/opacity.scss +0 -4
- package/src/css/set-brand.scss +15 -0
- package/src/css/transitions.scss +1 -1
- package/src/helpers/add-counter-suffix.js +3 -0
- package/src/helpers/{base64ToBlob.js → base-64-to-blob.js} +0 -0
- package/src/helpers/{constructObject.js → construct-object.js} +0 -0
- package/src/helpers/filter-object.js +8 -6
- package/src/helpers/filters.js +7 -9
- package/src/helpers/{greatestCommonDivisor.js → get-greatest-common-divisor.js} +0 -0
- package/src/helpers/get-slot-children-text.js +15 -0
- package/src/helpers/images.js +28 -0
- package/src/helpers/index.js +11 -61
- package/src/helpers/{isLocalDevelopment.js → is-local-development.js} +0 -0
- package/src/helpers/set-scroll-on-grab.js +61 -0
- package/src/index.cjs.js +1 -0
- package/src/index.esm.js +4 -0
- package/src/index.scss +19 -21
- package/src/index.umd.js +2 -0
- package/src/mixins/context.js +1 -1
- package/src/mixins/dialog-router.js +17 -0
- package/src/mixins/form.js +4 -12
- package/src/mixins/generator.js +14 -14
- package/src/mixins/index.js +2 -8
- package/src/mixins/password.js +73 -11
- package/src/mixins/screen.js +8 -6
- package/src/mixins/view.js +62 -22
- package/src/plugins/dialog/Dialog.js +14 -0
- package/src/plugins/dialog/Dialog.yml +10 -0
- package/src/plugins/index.js +4 -2
- package/src/plugins/{NotifyError.js → notify-error/NotifyError.js} +0 -0
- package/src/plugins/notify-error/NotifyError.yml +11 -0
- package/src/plugins/{NotifySuccess.js → notify-success/NotifySuccess.js} +3 -3
- package/src/plugins/notify-success/NotifySuccess.yml +11 -0
- package/src/store/history.js +43 -0
- package/src/store/index.js +1 -0
- package/src/vue-plugin.js +185 -0
- package/.babelrc +0 -12
- package/.storybook/main.js +0 -35
- package/.storybook/preview.js +0 -26
- package/debug.log +0 -1
- package/index.js +0 -4
- package/jest-setup.js +0 -1
- package/jest.config.json +0 -22
- package/postcss.config.js +0 -5
- package/src/components/Introduction.stories.mdx +0 -12
- package/src/components/actions-menu/QasActionsMenu.stories.js +0 -73
- package/src/components/app-bar/QasAppBar.stories.js +0 -84
- package/src/components/app-menu/QasAppMenu.stories.js +0 -66
- package/src/components/apps-menu/QasAppsMenu.spec.js +0 -58
- package/src/components/apps-menu/QasAppsMenu.stories.js +0 -54
- package/src/components/apps-menu/QasAppsMenu.vue +0 -48
- package/src/components/avatar/QasAvatar.spec.js +0 -14
- package/src/components/avatar/QasAvatar.stories.js +0 -52
- package/src/components/box/QasBox.spec.js +0 -18
- package/src/components/box/QasBox.stories.js +0 -35
- package/src/components/break-line/QasBreakLine.stories.js +0 -57
- package/src/components/break-line/QasBreakLine.vue +0 -52
- package/src/components/btn/QasBtn.stories.js +0 -45
- package/src/components/btn-actions/QasBtnActions.stories.js +0 -77
- package/src/components/btn-actions/QasBtnActions.vue +0 -54
- package/src/components/card/QasCard.stories.js +0 -126
- package/src/components/checkbox-group/QasCheckboxGroup.stories.js +0 -59
- package/src/components/copy/QasCopy.stories.js +0 -41
- package/src/components/date-time-input/QasDateTimeInput.stories.js +0 -67
- package/src/components/debugger/QasDebugger.stories.js +0 -33
- package/src/components/delete/QasDelete.stories.js +0 -80
- package/src/components/dialog/QasDialog.stories.js +0 -139
- package/src/components/dialog-router/QasDialogRouter.stories.js +0 -38
- package/src/components/field/QasField.stories.js +0 -181
- package/src/components/filters/QasFilters.stories.js +0 -121
- package/src/components/form-generator/QasFormGenerator.stories.js +0 -115
- package/src/components/form-view/QasFormView.stories.js +0 -236
- package/src/components/gallery/QasGallery.stories.js +0 -91
- package/src/components/grid-generator/QasGridGenerator.stories.js +0 -142
- package/src/components/input/QasInput.stories.js +0 -78
- package/src/components/label/QasLabel.stories.js +0 -60
- package/src/components/layout/QasLayout.stories.js +0 -104
- package/src/components/list-items/QasListItems.stories.js +0 -135
- package/src/components/list-view/QasListView.stories.js +0 -168
- package/src/components/map/QasMap.stories.js +0 -75
- package/src/components/nested-fields/QasNestedFields.stories.js +0 -255
- package/src/components/numeric-input/QasNumericInput.stories.js +0 -92
- package/src/components/page-header/QasPageHeader.stories.js +0 -61
- package/src/components/password-input/QasPasswordInput.stories.js +0 -76
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.stories.js +0 -54
- package/src/components/profile/QasProfile.stories.js +0 -131
- package/src/components/resizer/QasResizer.stories.js +0 -43
- package/src/components/search-box/QasSearchBox.stories.js +0 -111
- package/src/components/select/QasSelect.stories.js +0 -113
- package/src/components/select-list/QasSelectList.stories.js +0 -153
- package/src/components/signature-pad/QasSignaturePad.stories.js +0 -51
- package/src/components/signature-uploader/QasSignatureUploader.stories.js +0 -69
- package/src/components/single-view/QasSingleView.stories.js +0 -130
- package/src/components/sortable/QasSortable.stories.js +0 -80
- package/src/components/table-generator/QasTableGenerator.stories.js +0 -120
- package/src/components/tabs-generator/QasTabsGenerator.stories.js +0 -145
- package/src/components/text-truncate/QasTextTruncate.stories.js +0 -55
- package/src/components/tip/QasTip.stories.js +0 -57
- package/src/components/tip/QasTip.vue +0 -68
- package/src/components/tooltip/QasTooltip.stories.js +0 -63
- package/src/components/tooltip/QasTooltip.vue +0 -81
- package/src/components/transfer/QasTransfer.stories.js +0 -118
- package/src/components/uploader/QasCustomUploader.vue +0 -120
- package/src/components/uploader/QasUploader.stories.js +0 -139
- package/src/directives/Test.js +0 -13
- package/src/helpers/historyHandler.js +0 -52
- package/src/helpers/label.js +0 -3
- package/src/index.js +0 -249
- package/src/mixins/map-markers.js +0 -26
- package/src/mixins/unsaved-changes.js +0 -24
- package/src/mixins/uploader.js +0 -30
- package/src/mocks/json/user.json +0 -27
- package/src/mocks/json/users-new.json +0 -23
- package/src/mocks/json/users.json +0 -97
- package/src/mocks/storeModule.js +0 -71
- package/src/pages/Forbidden.vue +0 -6
- package/src/pages/NotFound.vue +0 -6
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente de layout que engloba o "QasAppBar" e "QasAppMenu".
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
app-bar-props:
|
|
8
|
+
desc: Propriedades do "QasAppBar".
|
|
9
|
+
default: {}
|
|
10
|
+
type: Object
|
|
11
|
+
|
|
12
|
+
app-menu-props:
|
|
13
|
+
desc: Propriedades do "QasAppMenu".
|
|
14
|
+
default: { animation: 500 }
|
|
15
|
+
type: Object
|
|
16
|
+
|
|
17
|
+
model-value:
|
|
18
|
+
desc: Model do componente, responsável por abrir/fechar menu lateral.
|
|
19
|
+
default: true
|
|
20
|
+
type: Boolean
|
|
21
|
+
|
|
22
|
+
slots:
|
|
23
|
+
app-bar:
|
|
24
|
+
desc: Slot para substituir o "QasAppBar".
|
|
25
|
+
|
|
26
|
+
app-menu:
|
|
27
|
+
desc: Slot para substituir o "QasAppMenu".
|
|
28
|
+
|
|
29
|
+
default:
|
|
30
|
+
desc: Slot para substituir o "QPageContainer".
|
|
31
|
+
|
|
32
|
+
events:
|
|
33
|
+
'@update:model-value -> function(value)':
|
|
34
|
+
desc: Dispara quando o model-value altera, também usado para v-model.
|
|
35
|
+
params:
|
|
36
|
+
value:
|
|
37
|
+
desc: Valor do mode-value.
|
|
38
|
+
type: Boolean
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="qas-list-items shadow-primary">
|
|
3
3
|
<q-list bordered class="rounded-borders" separator>
|
|
4
|
-
<q-item v-for="(item, index) in list" :key="index" v-ripple :clickable="!
|
|
4
|
+
<q-item v-for="(item, index) in list" :key="index" v-ripple :clickable="!redirectOnIcon" :to="redirect(item)">
|
|
5
5
|
<slot :index="index" :item="item" name="item">
|
|
6
6
|
<q-item-section>
|
|
7
7
|
<slot :index="index" :item="item" name="item-section-left" />
|
|
8
8
|
</q-item-section>
|
|
9
9
|
|
|
10
|
-
<q-item-section side>
|
|
10
|
+
<q-item-section v-if="useSectionActions" side>
|
|
11
11
|
<slot :index="index" :item="item" name="item-section-side">
|
|
12
12
|
<qas-btn flat round :to="getRedirectPayload(item)">
|
|
13
13
|
<q-icon v-bind="iconProps" />
|
|
@@ -24,13 +24,15 @@
|
|
|
24
24
|
import QasBtn from '../btn/QasBtn.vue'
|
|
25
25
|
|
|
26
26
|
export default {
|
|
27
|
+
name: 'QasListItems',
|
|
28
|
+
|
|
27
29
|
components: {
|
|
28
30
|
QasBtn
|
|
29
31
|
},
|
|
30
32
|
|
|
31
33
|
props: {
|
|
32
34
|
iconProps: {
|
|
33
|
-
default: () => ({
|
|
35
|
+
default: () => ({ color: 'primary', name: 'o_chevron_right' }),
|
|
34
36
|
type: Object
|
|
35
37
|
},
|
|
36
38
|
|
|
@@ -44,9 +46,9 @@ export default {
|
|
|
44
46
|
type: String
|
|
45
47
|
},
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
default:
|
|
49
|
-
type:
|
|
49
|
+
redirectOnIcon: {
|
|
50
|
+
default: true,
|
|
51
|
+
type: Boolean
|
|
50
52
|
},
|
|
51
53
|
|
|
52
54
|
to: {
|
|
@@ -54,21 +56,22 @@ export default {
|
|
|
54
56
|
type: Object
|
|
55
57
|
},
|
|
56
58
|
|
|
57
|
-
|
|
59
|
+
useSectionActions: {
|
|
60
|
+
default: true,
|
|
58
61
|
type: Boolean
|
|
59
62
|
}
|
|
60
63
|
},
|
|
61
64
|
|
|
62
65
|
methods: {
|
|
63
|
-
redirect (item) {
|
|
64
|
-
return this.useIconRedirect ? undefined : this.getRedirectPayload(item)
|
|
65
|
-
},
|
|
66
|
-
|
|
67
66
|
getRedirectPayload (item) {
|
|
68
67
|
return {
|
|
69
|
-
params: { [this.
|
|
68
|
+
params: { [this.redirectKey]: item[this.redirectKey] },
|
|
70
69
|
...this.to
|
|
71
70
|
}
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
redirect (item) {
|
|
74
|
+
return this.redirectOnIcon ? undefined : this.getRedirectPayload(item)
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
77
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para listagem.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
icon-props:
|
|
8
|
+
desc: Props do [QIcon](https://quasar.dev/vue-components/icon#introduction)
|
|
9
|
+
default: { color: 'primary', name: 'o_chevron_right' }
|
|
10
|
+
type: Object
|
|
11
|
+
|
|
12
|
+
list:
|
|
13
|
+
desc: Lista para ser selecionada.
|
|
14
|
+
default: []
|
|
15
|
+
type: Array
|
|
16
|
+
|
|
17
|
+
redirect-key:
|
|
18
|
+
desc: Você pode enviar qualquer chave/valor dentro do array de objeto da prop "list", esta prop serve para você identificar qual vai ser a chave que vai redirecionar ao clicar no botão.
|
|
19
|
+
default: uuid
|
|
20
|
+
type: String
|
|
21
|
+
|
|
22
|
+
redirect-on-icon:
|
|
23
|
+
desc: Controla se o redirecionamento vai acontecer quando clicar no item inteiro ou somente no icon.
|
|
24
|
+
default: true
|
|
25
|
+
type: Boolean
|
|
26
|
+
|
|
27
|
+
to:
|
|
28
|
+
desc: Configuração passada para o vue-router.
|
|
29
|
+
default: {}
|
|
30
|
+
type: Object
|
|
31
|
+
examples: ["{ name: 'Root' }"]
|
|
32
|
+
|
|
33
|
+
use-section-actions:
|
|
34
|
+
desc: Controla se exibe ou não seção de actions, onde fica o Ícone de redirecionamento.
|
|
35
|
+
default: true
|
|
36
|
+
type: Boolean
|
|
37
|
+
|
|
38
|
+
slots:
|
|
39
|
+
item-section-left:
|
|
40
|
+
desc: Slot para acessar seção da esquerda.
|
|
41
|
+
scope:
|
|
42
|
+
item:
|
|
43
|
+
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
44
|
+
type: Object
|
|
45
|
+
index:
|
|
46
|
+
desc: Posição do item na lista.
|
|
47
|
+
type: Number
|
|
48
|
+
|
|
49
|
+
item-section-side:
|
|
50
|
+
desc: Slot para acessar seção da direita, onde fica o Ícone.
|
|
51
|
+
scope:
|
|
52
|
+
item:
|
|
53
|
+
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
54
|
+
type: Object
|
|
55
|
+
index:
|
|
56
|
+
desc: Posição do item na lista.
|
|
57
|
+
type: Number
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<component :is="
|
|
2
|
+
<component :is="mx_componentTag" :class="mx_componentClass">
|
|
3
3
|
<q-pull-to-refresh :disable="disableRefresh" @refresh="refresh">
|
|
4
4
|
<header v-if="hasHeaderSlot">
|
|
5
|
-
<slot
|
|
5
|
+
<slot name="header" />
|
|
6
6
|
</header>
|
|
7
7
|
|
|
8
|
-
<slot v-if="
|
|
8
|
+
<slot v-if="useFilter" name="filter">
|
|
9
9
|
<qas-filters v-bind="filtersProps" :entity="entity" />
|
|
10
10
|
</slot>
|
|
11
11
|
|
|
12
12
|
<main class="relative-position">
|
|
13
13
|
<div v-if="hasResults">
|
|
14
|
-
<slot
|
|
14
|
+
<slot />
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
|
-
<div v-else-if="!
|
|
18
|
-
<slot
|
|
17
|
+
<div v-else-if="!mx_isFetching">
|
|
18
|
+
<slot name="empty-results">
|
|
19
19
|
<div class="q-my-xl text-center">
|
|
20
20
|
<q-icon class="q-mb-sm text-center" color="grey-6" name="o_search" size="38px" />
|
|
21
21
|
<div class="text-grey-6">Nenhum item encontrado.</div>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<q-pagination v-model="page" boundary-links class="flex-center" direction-links :input="$q.screen.lt.sm" :max="totalPages" :max-pages="6" @click="changePage" />
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
|
-
<q-inner-loading :showing="hasResults &&
|
|
34
|
+
<q-inner-loading :showing="hasResults && mx_isFetching">
|
|
35
35
|
<q-spinner color="grey" size="3em" />
|
|
36
36
|
</q-inner-loading>
|
|
37
37
|
</main>
|
|
@@ -42,10 +42,9 @@
|
|
|
42
42
|
</template>
|
|
43
43
|
|
|
44
44
|
<script>
|
|
45
|
-
import contextMixin from '../../mixins
|
|
46
|
-
import viewMixin from '../../mixins/view.js'
|
|
47
|
-
|
|
45
|
+
import { viewMixin, contextMixin } from '../../mixins'
|
|
48
46
|
import QasFilters from '../filters/QasFilters.vue'
|
|
47
|
+
import { extend } from 'quasar'
|
|
49
48
|
|
|
50
49
|
export default {
|
|
51
50
|
components: {
|
|
@@ -59,17 +58,29 @@ export default {
|
|
|
59
58
|
type: Boolean
|
|
60
59
|
},
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
default:
|
|
61
|
+
useFilter: {
|
|
62
|
+
default: true,
|
|
64
63
|
type: Boolean
|
|
65
64
|
},
|
|
66
65
|
|
|
67
66
|
filtersProps: {
|
|
68
67
|
default: () => ({}),
|
|
69
68
|
type: Object
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
results: {
|
|
72
|
+
default: () => [],
|
|
73
|
+
type: Array
|
|
70
74
|
}
|
|
71
75
|
},
|
|
72
76
|
|
|
77
|
+
emits: [
|
|
78
|
+
'fetch-success',
|
|
79
|
+
'fetch-error',
|
|
80
|
+
'update:errors',
|
|
81
|
+
'update:results'
|
|
82
|
+
],
|
|
83
|
+
|
|
73
84
|
data () {
|
|
74
85
|
return {
|
|
75
86
|
page: 1
|
|
@@ -77,13 +88,8 @@ export default {
|
|
|
77
88
|
},
|
|
78
89
|
|
|
79
90
|
computed: {
|
|
80
|
-
context () {
|
|
81
|
-
const { limit, ordering, page, search, ...filters } = this.$route.query
|
|
82
|
-
return { filters, limit, ordering, page: page ? parseInt(page) : 1, search }
|
|
83
|
-
},
|
|
84
|
-
|
|
85
91
|
hasHeaderSlot () {
|
|
86
|
-
return !!
|
|
92
|
+
return !!this.$slots.header
|
|
87
93
|
},
|
|
88
94
|
|
|
89
95
|
hasPages () {
|
|
@@ -91,10 +97,10 @@ export default {
|
|
|
91
97
|
},
|
|
92
98
|
|
|
93
99
|
hasResults () {
|
|
94
|
-
return !!(this.
|
|
100
|
+
return !!(this.resultsModel || []).length
|
|
95
101
|
},
|
|
96
102
|
|
|
97
|
-
|
|
103
|
+
resultsModel () {
|
|
98
104
|
return this.$store.getters[`${this.entity}/list`]
|
|
99
105
|
},
|
|
100
106
|
|
|
@@ -104,9 +110,18 @@ export default {
|
|
|
104
110
|
},
|
|
105
111
|
|
|
106
112
|
watch: {
|
|
107
|
-
$route () {
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
$route (to, from) {
|
|
114
|
+
if (to.name === from.name) {
|
|
115
|
+
this.fetchList()
|
|
116
|
+
this.setCurrentPage()
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
resultsModel: {
|
|
121
|
+
handler (value) {
|
|
122
|
+
this.$emit('update:results', extend([], true, value))
|
|
123
|
+
},
|
|
124
|
+
immediate: true
|
|
110
125
|
}
|
|
111
126
|
},
|
|
112
127
|
|
|
@@ -121,23 +136,34 @@ export default {
|
|
|
121
136
|
this.$router.push({ query })
|
|
122
137
|
},
|
|
123
138
|
|
|
124
|
-
async fetchList () {
|
|
125
|
-
this.
|
|
139
|
+
async fetchList (filters = {}) {
|
|
140
|
+
this.mx_isFetching = true
|
|
126
141
|
|
|
127
142
|
try {
|
|
128
|
-
const response = await this.$store.dispatch(
|
|
143
|
+
const response = await this.$store.dispatch(
|
|
144
|
+
`${this.entity}/fetchList`,
|
|
145
|
+
{ ...this.mx_context, url: this.url, filters }
|
|
146
|
+
)
|
|
147
|
+
|
|
129
148
|
const { errors, fields, metadata } = response.data
|
|
130
149
|
|
|
131
|
-
this.
|
|
132
|
-
this.
|
|
133
|
-
this.
|
|
150
|
+
this.mx_setErrors(errors)
|
|
151
|
+
this.mx_setFields(fields)
|
|
152
|
+
this.mx_setMetadata(metadata)
|
|
153
|
+
|
|
154
|
+
this.mx_updateModels({
|
|
155
|
+
errors: this.mx_errors,
|
|
156
|
+
fields: this.mx_fields,
|
|
157
|
+
metadata: this.mx_metadata
|
|
158
|
+
})
|
|
134
159
|
|
|
135
160
|
this.$emit('fetch-success', response)
|
|
136
161
|
} catch (error) {
|
|
137
|
-
this.
|
|
162
|
+
this.mx_fetchError(error)
|
|
163
|
+
this.$emit('update:errors', error)
|
|
138
164
|
this.$emit('fetch-error', error)
|
|
139
165
|
} finally {
|
|
140
|
-
this.
|
|
166
|
+
this.mx_isFetching = false
|
|
141
167
|
}
|
|
142
168
|
},
|
|
143
169
|
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para C.R.U.D. responsável pela parte de listagem (Read).
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
entity:
|
|
8
|
+
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
|
+
required: true
|
|
10
|
+
type: String
|
|
11
|
+
|
|
12
|
+
dialog:
|
|
13
|
+
desc: Este componente pode ser utilizado dentro de um dialog, neste caso o componente pai não pode ser um "QPage" e sim uma "div", esta prop cuida disto.
|
|
14
|
+
type: Boolean
|
|
15
|
+
|
|
16
|
+
url:
|
|
17
|
+
desc: Envia como parâmetro para a action "fetchList" do modulo correspondente a "entity".
|
|
18
|
+
type: String
|
|
19
|
+
|
|
20
|
+
results:
|
|
21
|
+
model: true
|
|
22
|
+
desc: Model de results, utilizado para recuperar a lista retornada pelo componente.
|
|
23
|
+
default: []
|
|
24
|
+
type: Array
|
|
25
|
+
examples: [v-model:results="results"]
|
|
26
|
+
|
|
27
|
+
fields:
|
|
28
|
+
model: true
|
|
29
|
+
desc: Model de fields, utilizado para recuperar os fields fora do template.
|
|
30
|
+
default: {}
|
|
31
|
+
type: Object
|
|
32
|
+
examples: [v-model:fields="fields"]
|
|
33
|
+
|
|
34
|
+
errors:
|
|
35
|
+
model: true
|
|
36
|
+
desc: Model de errors, utilizado para recuperar os errors fora do template.
|
|
37
|
+
default: {}
|
|
38
|
+
type: Object
|
|
39
|
+
examples: [v-model:errors="errors"]
|
|
40
|
+
|
|
41
|
+
metadata:
|
|
42
|
+
model: true
|
|
43
|
+
desc: Model de metadata, utilizado para recuperar os metadata fora do template.
|
|
44
|
+
default: {}
|
|
45
|
+
type: Object
|
|
46
|
+
examples: [v-model:metadata="metadata"]
|
|
47
|
+
|
|
48
|
+
fetching:
|
|
49
|
+
model: true
|
|
50
|
+
desc: Model de fetching, utilizado para saber se o componente está fazendo fetching de dados.
|
|
51
|
+
type: Boolean
|
|
52
|
+
examples: [v-model:fetching="isFetching"]
|
|
53
|
+
|
|
54
|
+
disable-refresh:
|
|
55
|
+
desc: Desabilita o [pull-to-refresh](https://quasar.dev/vue-components/pull-to-refresh#basic).
|
|
56
|
+
type: Boolean
|
|
57
|
+
|
|
58
|
+
use-filter:
|
|
59
|
+
desc: Controla se o componente vai usar ou não o componente "QasFilters".
|
|
60
|
+
default: true
|
|
61
|
+
type: Boolean
|
|
62
|
+
|
|
63
|
+
filters-props:
|
|
64
|
+
desc: Repassa as props para o componente "QasFilters".
|
|
65
|
+
default: {}
|
|
66
|
+
type: Object
|
|
67
|
+
|
|
68
|
+
slots:
|
|
69
|
+
header:
|
|
70
|
+
desc: 'Slot para acessar o header.'
|
|
71
|
+
|
|
72
|
+
filter:
|
|
73
|
+
desc: 'Slot para acessar o filtro.'
|
|
74
|
+
|
|
75
|
+
default:
|
|
76
|
+
desc: 'Slot para ter o conteúdo principal (dentro do main).'
|
|
77
|
+
|
|
78
|
+
empty-results:
|
|
79
|
+
desc: 'Slot acessar quando a listagem está vazia.'
|
|
80
|
+
|
|
81
|
+
footer:
|
|
82
|
+
desc: 'Slot para acessar o footer.'
|
|
83
|
+
|
|
84
|
+
events:
|
|
85
|
+
'@update:results -> function(value)':
|
|
86
|
+
desc: Dispara quando a action "fetchList" é executada com sucesso, é chamado antes do evento "fetch-success".
|
|
87
|
+
params:
|
|
88
|
+
value:
|
|
89
|
+
desc: lista retornada no "fetchList".
|
|
90
|
+
type: Array
|
|
91
|
+
|
|
92
|
+
'@update:fields -> function(value)':
|
|
93
|
+
desc: Dispara quando a action "fetchList" é executada com sucesso, é chamado antes do evento "fetch-success".
|
|
94
|
+
params:
|
|
95
|
+
value:
|
|
96
|
+
desc: fields.
|
|
97
|
+
type: Object
|
|
98
|
+
|
|
99
|
+
'@update:errors -> function(value)':
|
|
100
|
+
desc: Dispara quando a action "fetchList" é chamada.
|
|
101
|
+
params:
|
|
102
|
+
value:
|
|
103
|
+
desc: Errors durante o fetch.
|
|
104
|
+
type: Object
|
|
105
|
+
|
|
106
|
+
'@update:metadata -> function(value)':
|
|
107
|
+
desc: Dispara quando a action "fetchList" acontece com sucesso, é chamado antes do evento "fetch-success".
|
|
108
|
+
params:
|
|
109
|
+
value:
|
|
110
|
+
desc: metadata.
|
|
111
|
+
type: Object
|
|
112
|
+
|
|
113
|
+
'@update:fetching -> function(value)':
|
|
114
|
+
desc: Dispara logo antes da action "fetchList" e ao cair no bloco "finally", ou seja, quando começar o fetching e após terminar.
|
|
115
|
+
params:
|
|
116
|
+
value:
|
|
117
|
+
desc: Retorna se está ou não fazendo fetching de dados.
|
|
118
|
+
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
|
|
@@ -1,37 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="qas-map">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<q-icon color="primary" name="o_search" size="24px" />
|
|
7
|
-
</div> -->
|
|
8
|
-
<gmap-map :center="centerPosition" class="qas-map__draw" :zoom="zoom">
|
|
9
|
-
<gmap-marker v-for="(marker, index) in markers" :key="index" :draggable="marker.draggable" :icon="marker.icon" :position="marker.position" @dragend="getPosition" @mouseout="closePopup" @mouseover="openPopup(marker, index)">
|
|
10
|
-
<gmap-info-window :opened="canShowPopup(index)">
|
|
3
|
+
<g-map-map :center="centerPosition" class="qas-map__draw" :zoom="zoom">
|
|
4
|
+
<g-map-marker v-for="(marker, index) in markers" :key="index" :draggable="marker.draggable" :icon="marker.icon" :position="marker.position" @dragend="updatePosition" @mouseout="closePopup" @mouseover="openPopup(marker, index)">
|
|
5
|
+
<g-map-info-window :opened="canShowPopup(index)">
|
|
11
6
|
<div class="text-weight-bold">{{ marker.title }}</div>
|
|
12
7
|
<div>{{ marker.description }}</div>
|
|
13
|
-
</
|
|
14
|
-
</
|
|
15
|
-
</
|
|
8
|
+
</g-map-info-window>
|
|
9
|
+
</g-map-marker>
|
|
10
|
+
</g-map-map>
|
|
16
11
|
</div>
|
|
17
12
|
</template>
|
|
18
13
|
|
|
19
14
|
<script>
|
|
20
|
-
import formMixin from '../../mixins/form.js'
|
|
21
|
-
|
|
22
15
|
export default {
|
|
23
|
-
|
|
24
|
-
formMixin
|
|
25
|
-
],
|
|
16
|
+
name: 'QasMap',
|
|
26
17
|
|
|
27
18
|
props: {
|
|
28
19
|
centerPosition: {
|
|
29
20
|
type: Object,
|
|
30
|
-
default: () => {}
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
hasSearch: {
|
|
34
|
-
type: Boolean
|
|
21
|
+
default: () => ({})
|
|
35
22
|
},
|
|
36
23
|
|
|
37
24
|
markers: {
|
|
@@ -39,7 +26,7 @@ export default {
|
|
|
39
26
|
default: () => []
|
|
40
27
|
},
|
|
41
28
|
|
|
42
|
-
|
|
29
|
+
usePopup: {
|
|
43
30
|
type: Boolean
|
|
44
31
|
},
|
|
45
32
|
|
|
@@ -49,11 +36,13 @@ export default {
|
|
|
49
36
|
}
|
|
50
37
|
},
|
|
51
38
|
|
|
39
|
+
emits: ['update-position'],
|
|
40
|
+
|
|
52
41
|
data () {
|
|
53
42
|
return {
|
|
54
43
|
isPopupDisplayed: false,
|
|
55
44
|
currentPlace: null,
|
|
56
|
-
indexMarker:
|
|
45
|
+
indexMarker: null
|
|
57
46
|
}
|
|
58
47
|
},
|
|
59
48
|
|
|
@@ -64,28 +53,23 @@ export default {
|
|
|
64
53
|
},
|
|
65
54
|
|
|
66
55
|
canShowPopup (index) {
|
|
67
|
-
return this.isPopupDisplayed && this.
|
|
56
|
+
return this.isPopupDisplayed && this.usePopup && index === this.indexMarker
|
|
68
57
|
},
|
|
69
58
|
|
|
70
59
|
closePopup () {
|
|
71
60
|
this.isPopupDisplayed = false
|
|
72
61
|
},
|
|
73
62
|
|
|
74
|
-
|
|
63
|
+
updatePosition (mouseEvent) {
|
|
75
64
|
this.$emit('update-position', mouseEvent.latLng.toJSON())
|
|
76
65
|
}
|
|
77
|
-
|
|
78
|
-
// TODO descomentar quando implementar o input de pesquisa
|
|
79
|
-
// setPlace (place) {
|
|
80
|
-
// this.currentPlace = place
|
|
81
|
-
// }
|
|
82
66
|
}
|
|
83
67
|
}
|
|
84
68
|
</script>
|
|
85
69
|
|
|
86
70
|
<style lang="scss">
|
|
87
71
|
.qas-map {
|
|
88
|
-
&__draw{
|
|
72
|
+
&__draw {
|
|
89
73
|
height: 300px;
|
|
90
74
|
width: 100%;
|
|
91
75
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para gerar google maps.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
center-position:
|
|
8
|
+
desc: Opções de localização onde o mapa vai ser centralizado.
|
|
9
|
+
default: {}
|
|
10
|
+
type: Object
|
|
11
|
+
examples: ["{ lat: -21.17663, lng: -47.820839 }"]
|
|
12
|
+
|
|
13
|
+
markers:
|
|
14
|
+
desc: Marcadores (pin) do mapa.
|
|
15
|
+
default: []
|
|
16
|
+
type: Array
|
|
17
|
+
|
|
18
|
+
use-popup:
|
|
19
|
+
desc: Controla se os markers vai ter popup ou não.
|
|
20
|
+
type: Boolean
|
|
21
|
+
|
|
22
|
+
zoom:
|
|
23
|
+
desc: Zoom do mapa.
|
|
24
|
+
default: 17
|
|
25
|
+
type: Number
|
|
26
|
+
|
|
27
|
+
events:
|
|
28
|
+
'@update-position -> function(value)':
|
|
29
|
+
desc: Dispara muda a posição do marker.
|
|
30
|
+
params:
|
|
31
|
+
value:
|
|
32
|
+
desc: Nova posição.
|
|
33
|
+
type: Object
|