@bildvitta/quasar-ui-asteroid 2.16.0 → 3.0.0-alpha.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.
- 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 +8 -4
- 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 -59
- 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,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="classes">
|
|
3
|
+
<div class="col-12 col-sm-auto">
|
|
4
|
+
<slot name="secondary" />
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<div class="col-12 col-sm-auto">
|
|
8
|
+
<slot name="primary" />
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script>
|
|
14
|
+
import { screenMixin } from '../../mixins'
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
name: 'QasActions',
|
|
18
|
+
|
|
19
|
+
mixins: [screenMixin],
|
|
20
|
+
|
|
21
|
+
props: {
|
|
22
|
+
align: {
|
|
23
|
+
default: 'end',
|
|
24
|
+
type: String,
|
|
25
|
+
validator: value => ['start', 'around', 'between', 'center', 'end'].includes(value)
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
gutter: {
|
|
29
|
+
default: 'md',
|
|
30
|
+
type: String,
|
|
31
|
+
validator: value => ['xs', 'sm', 'md', 'lg', 'xl'].includes(value)
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
computed: {
|
|
36
|
+
classes () {
|
|
37
|
+
return [
|
|
38
|
+
`justify-${this.align}`,
|
|
39
|
+
`q-col-gutter-${this.gutter}`,
|
|
40
|
+
this.mx_isSmall ? 'column reverse' : 'row'
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
</script>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Área de ações para páginas que lidam com botões primários e secundários, como um formulário ou caixa de diálogo.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
align:
|
|
8
|
+
desc: Alinhamento dos elementos.
|
|
9
|
+
default: end
|
|
10
|
+
type: String
|
|
11
|
+
examples: [start, end, between, around, center]
|
|
12
|
+
|
|
13
|
+
gutter:
|
|
14
|
+
desc: Espaçamento entre os elementos.
|
|
15
|
+
default: md
|
|
16
|
+
type: String
|
|
17
|
+
examples: ['xs', 'sm', 'md', 'lg', 'xl']
|
|
18
|
+
|
|
19
|
+
slots:
|
|
20
|
+
primary:
|
|
21
|
+
desc: 'Slot para ação primaria (ex: botão de salvar), em telas menores que sm, se torna o primeiro elemento.'
|
|
22
|
+
|
|
23
|
+
secondary:
|
|
24
|
+
desc: 'Slot para ação secundaria (ex: botão de cancelar), em telas menores que sm, se torna o segundo elemento.'
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<qas-btn class="qas-actions-menu" color="primary"
|
|
2
|
+
<qas-btn class="qas-actions-menu" color="primary" hide-label-on-small-screen :icon="icon" :label="label" outline>
|
|
3
|
+
<span>{{ label }}</span>
|
|
4
|
+
|
|
3
5
|
<q-menu class="qas-actions-menu__menu">
|
|
4
6
|
<q-list class="qas-actions-menu__list" separator>
|
|
5
7
|
<slot v-for="(item, key) in list" :item="item" :name="key">
|
|
@@ -12,13 +14,22 @@
|
|
|
12
14
|
</q-item-section>
|
|
13
15
|
</q-item>
|
|
14
16
|
</slot>
|
|
17
|
+
|
|
18
|
+
<qas-delete v-if="hasDelete" v-bind="deleteProps" class="text-negative" clickable tag="q-item" @success="onDeleteSuccess">
|
|
19
|
+
<q-item-section>
|
|
20
|
+
<div class="flex items-center justify-center q-gutter-x-sm text-bold">
|
|
21
|
+
<q-icon :name="deleteIcon" />
|
|
22
|
+
<div>{{ deleteLabel }}</div>
|
|
23
|
+
</div>
|
|
24
|
+
</q-item-section>
|
|
25
|
+
</qas-delete>
|
|
15
26
|
</q-list>
|
|
16
27
|
</q-menu>
|
|
17
28
|
</qas-btn>
|
|
18
29
|
</template>
|
|
19
30
|
|
|
20
31
|
<script>
|
|
21
|
-
import QasBtn from '../btn/QasBtn'
|
|
32
|
+
import QasBtn from '../btn/QasBtn.vue'
|
|
22
33
|
|
|
23
34
|
export default {
|
|
24
35
|
name: 'QasActionsMenu',
|
|
@@ -28,8 +39,13 @@ export default {
|
|
|
28
39
|
},
|
|
29
40
|
|
|
30
41
|
props: {
|
|
42
|
+
icon: {
|
|
43
|
+
default: 'o_settings',
|
|
44
|
+
type: String
|
|
45
|
+
},
|
|
46
|
+
|
|
31
47
|
label: {
|
|
32
|
-
default: '
|
|
48
|
+
default: 'Configurações',
|
|
33
49
|
type: String
|
|
34
50
|
},
|
|
35
51
|
|
|
@@ -38,13 +54,27 @@ export default {
|
|
|
38
54
|
type: Object
|
|
39
55
|
},
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
type:
|
|
57
|
+
deleteLabel: {
|
|
58
|
+
type: String,
|
|
59
|
+
default: 'Excluir'
|
|
43
60
|
},
|
|
44
61
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
62
|
+
deleteIcon: {
|
|
63
|
+
type: String,
|
|
64
|
+
default: 'o_delete'
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
deleteProps: {
|
|
68
|
+
default: () => ({}),
|
|
69
|
+
type: Object
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
emits: ['delete-success'],
|
|
74
|
+
|
|
75
|
+
computed: {
|
|
76
|
+
hasDelete () {
|
|
77
|
+
return !!Object.keys(this.deleteProps).length
|
|
48
78
|
}
|
|
49
79
|
},
|
|
50
80
|
|
|
@@ -54,12 +84,10 @@ export default {
|
|
|
54
84
|
const { handler, ...filtered } = item
|
|
55
85
|
item.handler(filtered)
|
|
56
86
|
}
|
|
57
|
-
}
|
|
58
|
-
},
|
|
87
|
+
},
|
|
59
88
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return this.hideLabel ? '' : this.label
|
|
89
|
+
onDeleteSuccess () {
|
|
90
|
+
this.$emit('delete-success')
|
|
63
91
|
}
|
|
64
92
|
}
|
|
65
93
|
}
|
|
@@ -70,7 +98,6 @@ export default {
|
|
|
70
98
|
&__list {
|
|
71
99
|
width: 265px;
|
|
72
100
|
z-index: 1;
|
|
73
|
-
|
|
74
101
|
}
|
|
75
102
|
}
|
|
76
103
|
</style>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para abrir um menu de ação a partir de um botão, muito utilizado em tela de edição.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
icon:
|
|
8
|
+
desc: Ícone do botão.
|
|
9
|
+
default: o_settings
|
|
10
|
+
type: String
|
|
11
|
+
examples: [start, end, between, around, center]
|
|
12
|
+
|
|
13
|
+
label:
|
|
14
|
+
desc: Rotulo do botão.
|
|
15
|
+
default: Configurações
|
|
16
|
+
type: String
|
|
17
|
+
|
|
18
|
+
list:
|
|
19
|
+
desc: Lista de items que vão ser criados dentro do menu de ações.
|
|
20
|
+
default: '{}'
|
|
21
|
+
type: Object
|
|
22
|
+
examples: [
|
|
23
|
+
"{
|
|
24
|
+
delete: {
|
|
25
|
+
icon: 'o_visibility',
|
|
26
|
+
label: 'Visualizar',
|
|
27
|
+
handler: () => alert('handler ativado')
|
|
28
|
+
}
|
|
29
|
+
}"
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
delete-label:
|
|
33
|
+
desc: Rótulo do botão de deletar.
|
|
34
|
+
default: Excluir
|
|
35
|
+
type: String
|
|
36
|
+
|
|
37
|
+
delete-icon:
|
|
38
|
+
desc: Ícone do botão de deletar.
|
|
39
|
+
default: o_delete
|
|
40
|
+
type: String
|
|
41
|
+
|
|
42
|
+
delete-props:
|
|
43
|
+
desc: Props para repassar para o componente "QasDelete", caso seja um objeto vazio, o componente não vai adicionar a opção de deletar por padrão.
|
|
44
|
+
default: {}
|
|
45
|
+
type: Object
|
|
46
|
+
|
|
47
|
+
slots:
|
|
48
|
+
'[nome-da-chave]':
|
|
49
|
+
desc: 'Slot dinâmico gerado a partir das chaves dentro do objeto da prop "list"'
|
|
50
|
+
tag: Escopo
|
|
51
|
+
scope:
|
|
52
|
+
item:
|
|
53
|
+
desc: Escopo que retorna o item atual, valor depende do que foi passado na prop list.
|
|
54
|
+
default: '{}'
|
|
55
|
+
type: Object
|
|
56
|
+
examples: [
|
|
57
|
+
"
|
|
58
|
+
{
|
|
59
|
+
icon: 'o_delete',
|
|
60
|
+
label: 'Delete',
|
|
61
|
+
}
|
|
62
|
+
"
|
|
63
|
+
]
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="model" class="q-pa-lg qas-alert relative-position rounded-borders" :class="classes">
|
|
3
|
+
<qas-btn class="absolute-top-right q-mr-md q-mt-sm" :color="color" dense flat icon="o_close" rounded @click="close" />
|
|
4
|
+
|
|
5
|
+
<div class="q-gutter-md q-mr-lg">
|
|
6
|
+
<slot name="header">
|
|
7
|
+
<h5 v-if="title" class="text-bold text-h5">{{ title }}</h5>
|
|
8
|
+
</slot>
|
|
9
|
+
|
|
10
|
+
<slot>
|
|
11
|
+
<qas-breakline tag="p" :text="text" />
|
|
12
|
+
</slot>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import QasBreakline from '../breakline/QasBreakline.vue'
|
|
19
|
+
import QasBtn from '../btn/QasBtn.vue'
|
|
20
|
+
|
|
21
|
+
export default {
|
|
22
|
+
name: 'QasAlert',
|
|
23
|
+
|
|
24
|
+
components: {
|
|
25
|
+
QasBreakline,
|
|
26
|
+
QasBtn
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
props: {
|
|
30
|
+
modelValue: {
|
|
31
|
+
default: true,
|
|
32
|
+
type: Boolean
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
text: {
|
|
36
|
+
default: '',
|
|
37
|
+
type: String
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
color: {
|
|
41
|
+
type: String,
|
|
42
|
+
default: 'primary'
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
title: {
|
|
46
|
+
default: '',
|
|
47
|
+
type: String
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
emits: ['update:modelValue'],
|
|
52
|
+
|
|
53
|
+
data () {
|
|
54
|
+
return {
|
|
55
|
+
model: true
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
computed: {
|
|
60
|
+
classes () {
|
|
61
|
+
return {
|
|
62
|
+
[`text-${this.color}`]: true,
|
|
63
|
+
[`bg-${this.color}-contrast`]: ['primary', 'secondary'].includes(this.color)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
watch: {
|
|
69
|
+
modelValue: {
|
|
70
|
+
handler (value) {
|
|
71
|
+
this.model = value
|
|
72
|
+
},
|
|
73
|
+
immediate: true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
methods: {
|
|
78
|
+
close () {
|
|
79
|
+
this.$emit('update:modelValue', false)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<style lang="scss">
|
|
86
|
+
.qas-alert {
|
|
87
|
+
border-style: solid;
|
|
88
|
+
border-width: 0 10px;
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Cria um seção para alertar sobre um conteúdo.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
model-value:
|
|
8
|
+
desc: Model do componente, controla se o componente aparece ou não.
|
|
9
|
+
default: true
|
|
10
|
+
type: Boolean
|
|
11
|
+
|
|
12
|
+
title:
|
|
13
|
+
desc: Título do componente.
|
|
14
|
+
type: String
|
|
15
|
+
|
|
16
|
+
text:
|
|
17
|
+
desc: Texto do componente.
|
|
18
|
+
type: String
|
|
19
|
+
|
|
20
|
+
slots:
|
|
21
|
+
default:
|
|
22
|
+
desc: 'Slot para acessar o conteúdo gerado pela prop "text"'
|
|
23
|
+
|
|
24
|
+
header:
|
|
25
|
+
desc: 'Slot para acessar o conteúdo gerado pela prop "title"'
|
|
26
|
+
|
|
27
|
+
events:
|
|
28
|
+
'@update:model-value -> function(value)':
|
|
29
|
+
desc: Dispara quando o model-value altera, também usado para v-model.
|
|
30
|
+
params:
|
|
31
|
+
value:
|
|
32
|
+
desc: Novo valor do model.
|
|
33
|
+
type: Boolean
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<q-header
|
|
3
|
-
<q-toolbar class="qas-
|
|
2
|
+
<q-header class="bg-white qas-app-bar shadow-primary" height-hint="70">
|
|
3
|
+
<q-toolbar class="qas-app-bar__toolbar" color="bg-white">
|
|
4
4
|
<q-ajax-bar color="white" position="top" size="2px" />
|
|
5
5
|
|
|
6
6
|
<q-btn color="grey-7" dense flat icon="o_menu" round @click="toggleMenuDrawer" />
|
|
7
7
|
|
|
8
8
|
<q-toolbar-title class="flex">
|
|
9
9
|
<div class="cursor-pointer" @click="goToRoot">
|
|
10
|
-
<img v-if="brand" :alt="title" class="q-mr-sm qas-
|
|
10
|
+
<img v-if="brand" :alt="title" class="q-mr-sm qas-app-bar__brand" :src="brand">
|
|
11
11
|
<span v-if="showTitle" class="text-bold text-grey-9 text-subtitle1 text-uppercase">{{ title }}</span>
|
|
12
12
|
<q-badge v-if="hasDevelopmentBadge" align="middle" class="q-ml-sm" color="negative" :label="developmentBadgeLabel" />
|
|
13
13
|
</div>
|
|
14
14
|
</q-toolbar-title>
|
|
15
15
|
|
|
16
|
-
<!-- TODO: Notificações. -->
|
|
17
16
|
<div v-if="hasNotifications" class="q-mr-md">
|
|
18
17
|
<q-btn class="q-mr-md" dense icon="o_notifications" round unelevated>
|
|
19
18
|
<q-badge v-if="notifications" color="red" floating>{{ notifications.count }}</q-badge>
|
|
@@ -23,16 +22,16 @@
|
|
|
23
22
|
<div class="items-center no-wrap q-gutter-md row">
|
|
24
23
|
<slot name="tools" />
|
|
25
24
|
|
|
26
|
-
<div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-
|
|
25
|
+
<div v-if="isAuth" class="cursor-pointer items-center q-mr-sm qas-app-bar__user rounded-borders row text-grey-9" :title="user.name || user.givenName">
|
|
27
26
|
<qas-avatar class="rounded-borders-left" color="white" dark :image="user.photo" rounded size="42px" text-color="primary" :title="user.name || user.givenName" />
|
|
28
27
|
|
|
29
|
-
<div class="q-px-sm qas-
|
|
28
|
+
<div class="q-px-sm qas-app-bar__user-data qs-lh-lg text-caption">
|
|
30
29
|
<div class="ellipsis">{{ user.name || user.givenName }}</div>
|
|
31
30
|
<div class="ellipsis text-bold">{{ user.email }}</div>
|
|
32
31
|
</div>
|
|
33
32
|
|
|
34
|
-
<q-menu anchor="bottom end"
|
|
35
|
-
<div class="qas-
|
|
33
|
+
<q-menu anchor="bottom end" class="shadow-primary" max-height="400px" :offset="[0, 5]" self="top end">
|
|
34
|
+
<div class="qas-app-bar__user-menu">
|
|
36
35
|
<div class="q-pa-lg text-center">
|
|
37
36
|
<button class="unset" @click="goToProfile">
|
|
38
37
|
<qas-avatar :image="user.photo" size="145px" :title="user.name || user.givenName" />
|
|
@@ -60,8 +59,8 @@
|
|
|
60
59
|
</template>
|
|
61
60
|
|
|
62
61
|
<script>
|
|
63
|
-
import QasAvatar from '../avatar/QasAvatar'
|
|
64
|
-
import QasBtn from '../btn/QasBtn'
|
|
62
|
+
import QasAvatar from '../avatar/QasAvatar.vue'
|
|
63
|
+
import QasBtn from '../btn/QasBtn.vue'
|
|
65
64
|
|
|
66
65
|
export default {
|
|
67
66
|
name: 'QasAppBar',
|
|
@@ -98,6 +97,8 @@ export default {
|
|
|
98
97
|
}
|
|
99
98
|
},
|
|
100
99
|
|
|
100
|
+
emits: ['sign-out', 'toggle-menu'],
|
|
101
|
+
|
|
101
102
|
data () {
|
|
102
103
|
return {
|
|
103
104
|
menuDrawer: true
|
|
@@ -157,12 +158,14 @@ export default {
|
|
|
157
158
|
</script>
|
|
158
159
|
|
|
159
160
|
<style lang="scss">
|
|
160
|
-
.qas-
|
|
161
|
-
|
|
161
|
+
.qas-app-bar {
|
|
162
|
+
&__toolbar {
|
|
163
|
+
height: 70px;
|
|
164
|
+
}
|
|
162
165
|
|
|
163
166
|
&__brand {
|
|
164
167
|
height: 24px;
|
|
165
|
-
margin-right:
|
|
168
|
+
margin-right: 8px;
|
|
166
169
|
position: relative;
|
|
167
170
|
top: 4px;
|
|
168
171
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Cria um seção para alertar sobre um conteúdo.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
is-auth:
|
|
8
|
+
desc: Controla se mostra ou não o menu de usuário.
|
|
9
|
+
type: Boolean
|
|
10
|
+
|
|
11
|
+
title:
|
|
12
|
+
desc: Título do header, normalmente usado como título da aplicação.
|
|
13
|
+
type: String
|
|
14
|
+
|
|
15
|
+
notifications:
|
|
16
|
+
desc: Ícone de notificação que fica ao lado do menu de usuário.
|
|
17
|
+
type: Object
|
|
18
|
+
default: {}
|
|
19
|
+
|
|
20
|
+
user:
|
|
21
|
+
desc: Informações de usuário para ser usado no menu.
|
|
22
|
+
type: Object
|
|
23
|
+
default: {}
|
|
24
|
+
examples: [
|
|
25
|
+
"
|
|
26
|
+
{
|
|
27
|
+
photo: 'minha-img',
|
|
28
|
+
name: 'Eduardo Lima',
|
|
29
|
+
email: 'eduardolima@gmail.com'
|
|
30
|
+
}
|
|
31
|
+
"
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
slots:
|
|
35
|
+
user:
|
|
36
|
+
desc: Slot para acessar o menu de usuário
|
|
37
|
+
scope:
|
|
38
|
+
user:
|
|
39
|
+
desc: Informações de usuário para ser usado no menu, valor vai depender da prop "user".
|
|
40
|
+
type: Object
|
|
41
|
+
default: {}
|
|
42
|
+
|
|
43
|
+
tools:
|
|
44
|
+
desc: Slot para acessar o header após o elemento de notificações.
|
|
45
|
+
|
|
46
|
+
events:
|
|
47
|
+
'@sign-out -> function()':
|
|
48
|
+
desc: Dispara quando o botão de "sair" é clicado.
|
|
49
|
+
|
|
50
|
+
'@toggle-menu -> function()':
|
|
51
|
+
desc: Dispara quando o botão de "hambúrguer" é clicado para abrir o menu lateral.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230"
|
|
2
|
+
<q-drawer v-model="model" class="qas-app-menu" :mini="miniMode" :width="230" @before-hide="beforeHide" @mini-state="setMiniState">
|
|
3
3
|
<div class="column flex full-height justify-between no-wrap overflow-x-hidden">
|
|
4
4
|
<div>
|
|
5
5
|
<div v-if="displayModuleSection" class="q-ma-md">
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
Você está no modulo:
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
<qas-select v-model="module" :options="defaultModules" @
|
|
10
|
+
<qas-select v-model="module" :options="defaultModules" @update:model-value="redirectHandler(currentModelOption)" />
|
|
11
11
|
</div>
|
|
12
12
|
|
|
13
13
|
<q-list class="text-grey-9 text-weight-medium">
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
<div class="q-mx-md">
|
|
39
|
-
|
|
39
|
+
<!-- TODO: O Modular não é o Asteroid, então não podemos manter esse logo aqui. -->
|
|
40
|
+
<img v-if="!isMini" alt="Modular" class="block q-mb-md q-mx-auto" src="../../assets/logo-modular.svg">
|
|
40
41
|
</div>
|
|
41
42
|
</div>
|
|
42
43
|
</q-drawer>
|
|
@@ -52,17 +53,12 @@ export default {
|
|
|
52
53
|
mixins: [screenMixin],
|
|
53
54
|
|
|
54
55
|
props: {
|
|
55
|
-
itemClass: {
|
|
56
|
-
default: '',
|
|
57
|
-
type: [Array, Object, String]
|
|
58
|
-
},
|
|
59
|
-
|
|
60
56
|
items: {
|
|
61
57
|
default: () => [],
|
|
62
58
|
type: Array
|
|
63
59
|
},
|
|
64
60
|
|
|
65
|
-
|
|
61
|
+
modelValue: {
|
|
66
62
|
default: true,
|
|
67
63
|
type: Boolean
|
|
68
64
|
},
|
|
@@ -78,6 +74,8 @@ export default {
|
|
|
78
74
|
}
|
|
79
75
|
},
|
|
80
76
|
|
|
77
|
+
emits: ['update:modelValue'],
|
|
78
|
+
|
|
81
79
|
data () {
|
|
82
80
|
return {
|
|
83
81
|
miniMode: false,
|
|
@@ -113,11 +111,11 @@ export default {
|
|
|
113
111
|
|
|
114
112
|
model: {
|
|
115
113
|
get () {
|
|
116
|
-
return this.
|
|
114
|
+
return this.modelValue
|
|
117
115
|
},
|
|
118
116
|
|
|
119
117
|
set (value) {
|
|
120
|
-
return this.$emit('
|
|
118
|
+
return this.$emit('update:modelValue', value)
|
|
121
119
|
}
|
|
122
120
|
},
|
|
123
121
|
|
|
@@ -155,7 +153,7 @@ export default {
|
|
|
155
153
|
},
|
|
156
154
|
|
|
157
155
|
beforeHide () {
|
|
158
|
-
if (this
|
|
156
|
+
if (this.mx_isLarge) {
|
|
159
157
|
this.model = true
|
|
160
158
|
this.miniMode = !this.miniMode
|
|
161
159
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Menu lateral.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
model-value:
|
|
8
|
+
desc: Model do componente, controla quando o menu lateral é aberto e fechado.
|
|
9
|
+
default: true
|
|
10
|
+
type: Boolean
|
|
11
|
+
|
|
12
|
+
items:
|
|
13
|
+
desc: Itens do menu.
|
|
14
|
+
type: Array
|
|
15
|
+
default: []
|
|
16
|
+
|
|
17
|
+
title:
|
|
18
|
+
desc: Título que vai ficar no label do select de módulos.
|
|
19
|
+
type: String
|
|
20
|
+
|
|
21
|
+
modules:
|
|
22
|
+
desc: Lista de módulos que o usuário tem acesso para navegar.
|
|
23
|
+
type: Array
|
|
24
|
+
default: []
|
|
25
|
+
|
|
26
|
+
events:
|
|
27
|
+
'@update:model-value -> function(value)':
|
|
28
|
+
desc: Dispara quando o model-value altera, também usado para v-model.
|
|
29
|
+
params:
|
|
30
|
+
value:
|
|
31
|
+
desc: Novo valor do model.
|
|
32
|
+
type: Boolean
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<q-avatar class="text-bold" :class="
|
|
2
|
+
<q-avatar class="text-bold" :class="avatarClass" rounded>
|
|
3
3
|
<q-img v-if="hasImage" :alt="title" :ratio="1" spinner-color="primary" spinner-size="16px" :src="image" @error="onImageLoadedError" />
|
|
4
4
|
<template v-else-if="hasTitle">{{ firstLetter }}</template>
|
|
5
5
|
<q-icon v-else :name="icon" />
|
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
10
|
export default {
|
|
11
|
+
name: 'QasAvatar',
|
|
12
|
+
|
|
11
13
|
props: {
|
|
12
14
|
color: {
|
|
13
|
-
default: '
|
|
15
|
+
default: '',
|
|
14
16
|
type: String
|
|
15
17
|
},
|
|
16
18
|
|
|
@@ -29,7 +31,7 @@ export default {
|
|
|
29
31
|
},
|
|
30
32
|
|
|
31
33
|
textColor: {
|
|
32
|
-
default: '',
|
|
34
|
+
default: 'primary',
|
|
33
35
|
type: String
|
|
34
36
|
},
|
|
35
37
|
|
|
@@ -46,20 +48,26 @@ export default {
|
|
|
46
48
|
},
|
|
47
49
|
|
|
48
50
|
computed: {
|
|
49
|
-
|
|
50
|
-
if (this.hasImage)
|
|
51
|
+
avatarClass () {
|
|
52
|
+
if (this.hasImage) {
|
|
53
|
+
return null
|
|
54
|
+
}
|
|
51
55
|
|
|
52
|
-
const contrastColor = this.
|
|
56
|
+
const contrastColor = this.color ? this.color : this.contrastColor
|
|
57
|
+
// const contrastColor = this.textColor ? this.textColor : this.contrastColor
|
|
53
58
|
|
|
54
59
|
return [
|
|
55
60
|
this.dark
|
|
56
|
-
? `bg-${this.
|
|
57
|
-
: `bg-${contrastColor} text-${this.
|
|
61
|
+
? `bg-${this.textColor} text-${contrastColor}`
|
|
62
|
+
: `bg-${contrastColor} text-${this.textColor}`
|
|
63
|
+
// ? `bg-${this.color} text-${contrastColor}`
|
|
64
|
+
// : `bg-${contrastColor} text-${this.color}`
|
|
58
65
|
]
|
|
59
66
|
},
|
|
60
67
|
|
|
61
68
|
contrastColor () {
|
|
62
|
-
return `${this.
|
|
69
|
+
return `${this.textColor}-contrast`
|
|
70
|
+
// return `${this.color}-contrast`
|
|
63
71
|
},
|
|
64
72
|
|
|
65
73
|
firstLetter () {
|