@bildvitta/quasar-ui-asteroid 3.17.0-beta.20 → 3.17.0-beta.21
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/package.json +1 -1
- package/src/assets/sounds/nave-notification.mp3 +0 -0
- package/src/asteroid.js +4 -4
- package/src/components/actions/QasActions.vue +81 -81
- package/src/components/actions/QasActions.yml +34 -34
- package/src/components/actions-menu/QasActionsMenu.vue +251 -251
- package/src/components/actions-menu/QasActionsMenu.yml +89 -89
- package/src/components/actions-menu/composables/use-delete.js +30 -30
- package/src/components/actions-menu/composables/use-double-split-actions.js +42 -42
- package/src/components/actions-menu/composables/use-options-actions.js +27 -27
- package/src/components/actions-menu/composables/use-single-action.js +17 -17
- package/src/components/actions-menu/composables/use-single-split-actions.js +35 -35
- package/src/components/actions-menu/composables/use-tooltips.js +43 -43
- package/src/components/actions-menu/utils/get-label.js +3 -3
- package/src/components/actions-menu/utils/set-click-handler.js +6 -6
- package/src/components/alert/QasAlert.test.js +43 -43
- package/src/components/alert/QasAlert.vue +110 -110
- package/src/components/alert/QasAlert.yml +39 -39
- package/src/components/app-bar/QasAppBar.vue +119 -119
- package/src/components/app-bar/QasAppBar.yml +44 -44
- package/src/components/app-menu/QasAppMenu.vue +392 -392
- package/src/components/app-menu/QasAppMenu.yml +73 -73
- package/src/components/app-menu/composables/use-app-menu-dropdown.js +71 -71
- package/src/components/app-menu/composables/use-app-user.js +49 -49
- package/src/components/app-menu/composables/use-development-badge.js +23 -23
- package/src/components/app-menu/private/PvAppMenuDropdown.vue +71 -71
- package/src/components/app-menu/private/PvAppMenuHelpChat.vue +222 -222
- package/src/components/app-user/QasAppUser.vue +281 -281
- package/src/components/app-user/QasAppUser.yml +56 -56
- package/src/components/avatar/QasAvatar.vue +95 -95
- package/src/components/avatar/QasAvatar.yml +38 -38
- package/src/components/avatar/enums/AvatarColors.js +10 -10
- package/src/components/badge/QasBadge.vue +87 -87
- package/src/components/badge/QasBadge.yml +55 -55
- package/src/components/board-generator/QasBoardGenerator.vue +712 -712
- package/src/components/board-generator/QasBoardGenerator.yml +167 -167
- package/src/components/box/QasBox.vue +51 -51
- package/src/components/box/QasBox.yml +29 -29
- package/src/components/breakline/QasBreakline.vue +38 -38
- package/src/components/breakline/QasBreakline.yml +25 -25
- package/src/components/btn/QasBtn.vue +148 -148
- package/src/components/btn/QasBtn.yml +48 -48
- package/src/components/btn-dropdown/QasBtnDropdown.vue +146 -146
- package/src/components/btn-dropdown/QasBtnDropdown.yml +59 -59
- package/src/components/card/QasCard.vue +132 -132
- package/src/components/card/QasCard.yml +44 -44
- package/src/components/card-image/QasCardImage.vue +95 -95
- package/src/components/card-image/QasCardImage.yml +48 -48
- package/src/components/chart-view/QasChartView.vue +441 -441
- package/src/components/chart-view/QasChartView.yml +109 -109
- package/src/components/chart-view/config/charts/bar.js +45 -45
- package/src/components/chart-view/config/charts/doughnut.js +43 -43
- package/src/components/chart-view/config/charts/index.js +9 -9
- package/src/components/chart-view/config/charts/line.js +57 -57
- package/src/components/chart-view/config/defaults/colors.js +19 -19
- package/src/components/chart-view/config/defaults/font.js +5 -5
- package/src/components/chart-view/config/defaults/index.js +2 -2
- package/src/components/chart-view/config/index.js +3 -3
- package/src/components/chart-view/config/plugins/index.js +3 -3
- package/src/components/chart-view/config/plugins/legend.js +9 -9
- package/src/components/chart-view/config/plugins/tooltip.js +15 -15
- package/src/components/chart-view/config/plugins/zoom.js +31 -31
- package/src/components/checkbox/QasCheckbox.vue +150 -150
- package/src/components/checkbox/QasCheckbox.yml +36 -36
- package/src/components/copy/QasCopy.vue +46 -46
- package/src/components/copy/QasCopy.yml +23 -23
- package/src/components/date/QasDate.vue +600 -600
- package/src/components/date/QasDate.yml +69 -69
- package/src/components/date/enums/DateMaskOptions.js +6 -6
- package/src/components/date-time-input/QasDateTimeInput.vue +269 -269
- package/src/components/date-time-input/QasDateTimeInput.yml +64 -64
- package/src/components/debugger/QasDebugger.vue +31 -31
- package/src/components/debugger/QasDebugger.yml +10 -10
- package/src/components/delete/QasDelete.vue +100 -100
- package/src/components/delete/QasDelete.yml +60 -60
- package/src/components/dialog/QasDialog.vue +217 -217
- package/src/components/dialog/QasDialog.yml +117 -117
- package/src/components/dialog/composables/use-cancel.js +40 -40
- package/src/components/dialog/composables/use-dynamic-components.js +86 -86
- package/src/components/dialog/composables/use-ok.js +45 -45
- package/src/components/dialog-router/QasDialogRouter.vue +86 -86
- package/src/components/dialog-router/QasDialogRouter.yml +23 -23
- package/src/components/drawer/QasDrawer.vue +118 -118
- package/src/components/drawer/QasDrawer.yml +58 -58
- package/src/components/empty-result-text/QasEmptyResultText.vue +18 -18
- package/src/components/empty-result-text/QasEmptyResultText.yml +14 -14
- package/src/components/expansion-item/QasExpansionItem.vue +291 -291
- package/src/components/expansion-item/QasExpansionItem.yml +76 -76
- package/src/components/field/QasField.vue +220 -220
- package/src/components/field/QasField.yml +36 -36
- package/src/components/filters/QasFilters.vue +472 -472
- package/src/components/filters/QasFilters.yml +171 -171
- package/src/components/filters/private/PvFiltersButton.vue +101 -101
- package/src/components/form-generator/QasFormGenerator.vue +274 -274
- package/src/components/form-generator/QasFormGenerator.yml +109 -109
- package/src/components/form-view/QasFormView.vue +484 -484
- package/src/components/form-view/QasFormView.yml +253 -253
- package/src/components/gallery/QasGallery.vue +243 -243
- package/src/components/gallery/QasGallery.yml +188 -188
- package/src/components/gallery/composables/use-delete.js +54 -54
- package/src/components/gallery/private/PvGalleryCarouselDialog.vue +92 -92
- package/src/components/gallery/private/PvGalleryDeleteDialog.vue +54 -54
- package/src/components/gallery-card/QasGalleryCard.vue +153 -153
- package/src/components/gallery-card/QasGalleryCard.yml +61 -61
- package/src/components/grabbable/QasGrabbable.vue +185 -185
- package/src/components/grabbable/QasGrabbable.yml +26 -26
- package/src/components/grid-generator/QasGridGenerator.vue +210 -210
- package/src/components/grid-generator/QasGridGenerator.yml +127 -127
- package/src/components/grid-item/QasGridItem.vue +89 -89
- package/src/components/grid-item/QasGridItem.yml +22 -22
- package/src/components/header/QasHeader.vue +152 -152
- package/src/components/header/QasHeader.yml +50 -50
- package/src/components/infinite-scroll/QasInfiniteScroll.vue +168 -168
- package/src/components/infinite-scroll/QasInfiniteScroll.yml +78 -78
- package/src/components/info/QasInfo.vue +155 -155
- package/src/components/info/QasInfo.yml +34 -34
- package/src/components/input/QasInput.vue +252 -252
- package/src/components/input/QasInput.yml +65 -65
- package/src/components/label/QasLabel.vue +61 -61
- package/src/components/label/QasLabel.yml +44 -44
- package/src/components/layout/QasLayout.vue +101 -101
- package/src/components/layout/QasLayout.yml +46 -46
- package/src/components/layout/private/PvLayoutNotificationCard.vue +86 -86
- package/src/components/layout/private/PvLayoutNotificationsDrawer.vue +140 -140
- package/src/components/list-items/QasListItems.vue +125 -125
- package/src/components/list-items/QasListItems.yml +71 -71
- package/src/components/list-view/QasListView.vue +302 -302
- package/src/components/list-view/QasListView.yml +169 -169
- package/src/components/map/QasMap.vue +75 -75
- package/src/components/map/QasMap.yml +33 -33
- package/src/components/nested-fields/QasNestedFields.vue +584 -584
- package/src/components/nested-fields/QasNestedFields.yml +296 -296
- package/src/components/numeric-input/QasNumericInput.vue +206 -206
- package/src/components/numeric-input/QasNumericInput.yml +85 -85
- package/src/components/option-group/QasOptionGroup.vue +54 -54
- package/src/components/option-group/QasOptionGroup.yml +30 -30
- package/src/components/page-header/QasPageHeader.vue +143 -143
- package/src/components/page-header/QasPageHeader.yml +42 -42
- package/src/components/pagination/QasPagination.vue +71 -71
- package/src/components/pagination/QasPagination.yml +4 -4
- package/src/components/password-input/QasPasswordInput.vue +110 -110
- package/src/components/password-input/QasPasswordInput.yml +111 -111
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.vue +71 -71
- package/src/components/password-strength-checker/QasPasswordStrengthChecker.yml +103 -103
- package/src/components/profile/QasProfile.vue +98 -98
- package/src/components/profile/QasProfile.yml +60 -60
- package/src/components/radio/QasRadio.vue +62 -62
- package/src/components/radio/QasRadio.yml +11 -11
- package/src/components/resizer/QasResizer.vue +90 -90
- package/src/components/resizer/QasResizer.yml +24 -24
- package/src/components/search-box/QasSearchBox.vue +294 -294
- package/src/components/search-box/QasSearchBox.yml +154 -154
- package/src/components/search-input/QasSearchInput.vue +106 -106
- package/src/components/search-input/QasSearchInput.yml +48 -48
- package/src/components/select/QasSelect.vue +514 -514
- package/src/components/select/QasSelect.yml +157 -157
- package/src/components/select-list/QasSelectList.vue +238 -238
- package/src/components/select-list/QasSelectList.yml +108 -108
- package/src/components/select-list/private/PvSelectListCheckbox.vue +31 -31
- package/src/components/select-list-dialog/QasSelectListDialog.vue +395 -395
- package/src/components/select-list-dialog/QasSelectListDialog.yml +108 -108
- package/src/components/signature-pad/QasSignaturePad.vue +122 -122
- package/src/components/signature-pad/QasSignaturePad.yml +53 -53
- package/src/components/signature-uploader/QasSignatureUploader.vue +164 -164
- package/src/components/signature-uploader/QasSignatureUploader.yml +37 -37
- package/src/components/single-view/QasSingleView.vue +175 -175
- package/src/components/single-view/QasSingleView.yml +131 -131
- package/src/components/sortable/QasSortable.vue +151 -151
- package/src/components/sortable/QasSortable.yml +65 -65
- package/src/components/status/QasStatus.test.js +11 -11
- package/src/components/status/QasStatus.vue +29 -29
- package/src/components/status/QasStatus.yml +10 -10
- package/src/components/stepper/QasStepper.vue +152 -152
- package/src/components/stepper/QasStepper.yml +35 -35
- package/src/components/stepper-form-view/QasStepperFormView.vue +84 -84
- package/src/components/stepper-form-view/QasStepperFormView.yml +58 -58
- package/src/components/table-generator/QasTableGenerator.vue +416 -416
- package/src/components/table-generator/QasTableGenerator.yml +94 -94
- package/src/components/tabs-generator/QasTabsGenerator.vue +196 -196
- package/src/components/tabs-generator/QasTabsGenerator.yml +53 -53
- package/src/components/text-truncate/QasTextTruncate.vue +274 -274
- package/src/components/text-truncate/QasTextTruncate.yml +60 -60
- package/src/components/timeline/QasTimeline.vue +140 -140
- package/src/components/timeline/QasTimeline.yml +36 -36
- package/src/components/toggle/QasToggle.vue +14 -14
- package/src/components/toggle/QasToggle.yml +5 -5
- package/src/components/toggle-visibility/QasToggleVisibility.vue +79 -79
- package/src/components/toggle-visibility/QasToggleVisibility.yml +30 -30
- package/src/components/transfer/QasTransfer.vue +239 -239
- package/src/components/transfer/QasTransfer.yml +60 -60
- package/src/components/tree-generator/QasTreeForm.vue +62 -62
- package/src/components/tree-generator/QasTreeGenerator.vue +488 -488
- package/src/components/tree-generator/QasTreeGenerator.yml +81 -81
- package/src/components/uploader/QasUploader.vue +645 -645
- package/src/components/uploader/QasUploader.yml +192 -192
- package/src/components/uploader/private/PvUploaderGalleryCard.vue +357 -357
- package/src/components/welcome/QasWelcome.vue +125 -125
- package/src/components/welcome/QasWelcome.yml +23 -23
- package/src/components/welcome/private/PvWelcomeShortcutCard.vue +58 -58
- package/src/components/whatsapp-link/QasWhatsappLink.vue +34 -34
- package/src/components/whatsapp-link/QasWhatsappLink.yml +18 -18
- package/src/composables/index.js +8 -8
- package/src/composables/private/index.js +3 -3
- package/src/composables/private/use-generator.js +174 -174
- package/src/composables/private/use-toggle-visibility.js +48 -48
- package/src/composables/private/use-view.js +186 -186
- package/src/composables/use-context.js +15 -15
- package/src/composables/use-form.js +32 -32
- package/src/composables/use-history.js +46 -46
- package/src/composables/use-notifications.js +128 -114
- package/src/composables/use-query-cache.js +60 -60
- package/src/composables/use-screen.js +42 -42
- package/src/css/base/font-face.scss +28 -28
- package/src/css/base/index.scss +1 -1
- package/src/css/components/base.scss +12 -12
- package/src/css/components/button.scss +116 -116
- package/src/css/components/checkbox.scss +14 -14
- package/src/css/components/editor.scss +7 -7
- package/src/css/components/field.scss +88 -88
- package/src/css/components/index.scss +10 -10
- package/src/css/components/item.scss +52 -52
- package/src/css/components/radio.scss +18 -18
- package/src/css/components/scrollbar.scss +20 -20
- package/src/css/components/tabs.scss +3 -3
- package/src/css/components/toggle.scss +13 -13
- package/src/css/mixins/index.scss +3 -3
- package/src/css/mixins/set-brand.scss +15 -15
- package/src/css/mixins/set-button.scss +26 -26
- package/src/css/mixins/set-typography.scss +8 -8
- package/src/css/plugins/index.scss +2 -2
- package/src/css/plugins/loading.scss +5 -5
- package/src/css/plugins/notify.scss +100 -100
- package/src/css/utils/background.scss +34 -34
- package/src/css/utils/border-radius.scss +29 -29
- package/src/css/utils/border.scss +42 -42
- package/src/css/utils/container.scss +36 -36
- package/src/css/utils/fonts.scss +5 -5
- package/src/css/utils/index.scss +10 -10
- package/src/css/utils/line-height.scss +19 -19
- package/src/css/utils/opacity.scss +5 -5
- package/src/css/utils/scroll.scss +21 -21
- package/src/css/utils/text.scss +15 -15
- package/src/css/utils/unset.scss +8 -8
- package/src/css/variables/button.scss +4 -4
- package/src/css/variables/index.scss +6 -6
- package/src/css/variables/scrollbar.scss +11 -11
- package/src/css/variables/separator.scss +2 -2
- package/src/css/variables/shadow.scss +3 -3
- package/src/css/variables/spacing.scss +98 -98
- package/src/css/variables/typography.scss +149 -149
- package/src/directives/Test.js +13 -13
- package/src/enums/Align.js +7 -7
- package/src/enums/Spacing.js +98 -98
- package/src/enums/Status.js +33 -33
- package/src/helpers/add-counter-suffix.js +3 -3
- package/src/helpers/base-64-to-blob.js +21 -21
- package/src/helpers/camelize-fields-name.js +15 -15
- package/src/helpers/construct-object.js +29 -29
- package/src/helpers/copy-to-clipboard.js +15 -15
- package/src/helpers/destroy-nested-children-by-key.js +33 -33
- package/src/helpers/download-file.js +21 -21
- package/src/helpers/filter-list-by-handle.js +31 -31
- package/src/helpers/filter-object-to-array.js +29 -29
- package/src/helpers/filter-object.js +34 -34
- package/src/helpers/filters.js +163 -163
- package/src/helpers/find-children-by-key.js +14 -14
- package/src/helpers/get-greatest-common-divisor.js +16 -16
- package/src/helpers/get-normalized-options.js +20 -20
- package/src/helpers/get-placeholder.js +19 -19
- package/src/helpers/get-required-label.js +3 -3
- package/src/helpers/get-slot-children-text.js +15 -15
- package/src/helpers/handle-process.js +13 -13
- package/src/helpers/images.js +28 -28
- package/src/helpers/index.js +25 -25
- package/src/helpers/is-empty.js +3 -3
- package/src/helpers/is-local-development.js +3 -3
- package/src/helpers/private/gutter-validator.js +15 -15
- package/src/helpers/private/has-parent-by-class-name.js +15 -15
- package/src/helpers/promise-handler.js +40 -40
- package/src/helpers/rules.js +7 -7
- package/src/helpers/set-scroll-on-grab.js +128 -128
- package/src/index.cjs.js +1 -1
- package/src/index.esm.js +4 -4
- package/src/index.scss +38 -38
- package/src/index.umd.js +2 -2
- package/src/mixins/context.js +8 -8
- package/src/mixins/delete.js +48 -48
- package/src/mixins/dialog-router.js +17 -17
- package/src/mixins/form.js +11 -11
- package/src/mixins/generator.js +94 -94
- package/src/mixins/index.js +17 -17
- package/src/mixins/password.js +86 -86
- package/src/mixins/search-filter.js +354 -354
- package/src/mixins/view.js +156 -156
- package/src/pages/ErrorComponent.vue +74 -74
- package/src/pages/Forbidden.vue +29 -29
- package/src/pages/NotFound.vue +29 -29
- package/src/pages/ServerError.vue +29 -29
- package/src/pages/Unauthorized.vue +29 -29
- package/src/plugins/delete/Delete.js +107 -107
- package/src/plugins/delete/Delete.yml +75 -75
- package/src/plugins/dialog/Dialog.js +14 -14
- package/src/plugins/dialog/Dialog.yml +10 -10
- package/src/plugins/index.js +13 -13
- package/src/plugins/notify-error/NotifyError.js +13 -13
- package/src/plugins/notify-error/NotifyError.yml +11 -11
- package/src/plugins/notify-success/NotifySuccess.js +13 -13
- package/src/plugins/notify-success/NotifySuccess.yml +11 -11
- package/src/plugins/screen/Screen.js +35 -35
- package/src/plugins/screen/Screen.yml +16 -16
- package/src/shared/date-config.js +26 -26
- package/src/shared/fuse-config.js +4 -4
- package/src/shared/notify-config.js +7 -7
- package/src/vue-plugin/third-party-component-handler.js +29 -29
- package/src/vue-plugin.js +282 -282
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<qas-drawer v-bind="drawerProps" v-model="model">
|
|
3
|
-
<div class="fixed-position">
|
|
4
|
-
<div class="justify-end row">
|
|
5
|
-
<qas-btn class="q-mb-xl" :disable="isAllNotificationsRead" icon="sym_r_check_circle" label="Marcar todas como lida" @click="markAsRead" />
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<qas-infinite-scroll v-model:list="notifications" v-bind="infiniteScrollProps">
|
|
9
|
-
<qas-list-items :list="notifications" :use-box="false" :use-clickable-item="false" :use-section-actions="false">
|
|
10
|
-
<template #item-section="{ item }">
|
|
11
|
-
<pv-layout-notification-card :notification="item" />
|
|
12
|
-
</template>
|
|
13
|
-
</qas-list-items>
|
|
14
|
-
</qas-infinite-scroll>
|
|
15
|
-
</div>
|
|
16
|
-
</qas-drawer>
|
|
17
|
-
</template>
|
|
18
|
-
|
|
19
|
-
<script setup>
|
|
20
|
-
import PvLayoutNotificationCard from './PvLayoutNotificationCard.vue'
|
|
21
|
-
import QasDrawer from '../../drawer/QasDrawer.vue'
|
|
22
|
-
import QasInfiniteScroll from '../../infinite-scroll/QasInfiniteScroll.vue'
|
|
23
|
-
|
|
24
|
-
import useNotifications, { onNotificationReceived } from '../../../composables/use-notifications'
|
|
25
|
-
|
|
26
|
-
import { promiseHandler } from '../../../helpers'
|
|
27
|
-
|
|
28
|
-
import { computed, ref, inject, onMounted } from 'vue'
|
|
29
|
-
|
|
30
|
-
defineOptions({ name: 'PvLayoutNotificationsDrawer' })
|
|
31
|
-
|
|
32
|
-
const props = defineProps({
|
|
33
|
-
model: {
|
|
34
|
-
type: Boolean
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
const emit = defineEmits(['update:modelValue'])
|
|
39
|
-
|
|
40
|
-
const axios = inject('axios')
|
|
41
|
-
|
|
42
|
-
const { setUnreadNotificationsCount } = useNotifications()
|
|
43
|
-
|
|
44
|
-
const hasMadeFirstFetch = ref(false)
|
|
45
|
-
const isMarkingNotificationsAsRead = ref(false)
|
|
46
|
-
|
|
47
|
-
const notifications = ref([])
|
|
48
|
-
|
|
49
|
-
onMounted(() => {
|
|
50
|
-
const notificationsUtilsChannel = new BroadcastChannel('notifications--utils')
|
|
51
|
-
|
|
52
|
-
notificationsUtilsChannel.onmessage = ({ data }) => {
|
|
53
|
-
if (data.type === 'markAllAsRead') onMarkAsReadSuccess()
|
|
54
|
-
}
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Quando o usuário ainda não abriu a central de notificações, a primeira vez que
|
|
59
|
-
* ele abrir vai obter esses dados via API, mesmo que ele tenha recebido a notificação
|
|
60
|
-
* em real time, após ele ter aberto as notificações pelo menos uma vez, todas
|
|
61
|
-
* notificações recebidas em real time serão incrementadas na central de
|
|
62
|
-
* notificação sem a necessidade de chamar a API e resetar a paginação (feita por scroll).
|
|
63
|
-
*/
|
|
64
|
-
onNotificationReceived(notification => {
|
|
65
|
-
if (!hasMadeFirstFetch.value) return
|
|
66
|
-
|
|
67
|
-
notifications.value.unshift(notification)
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
const infiniteScrollProps = {
|
|
71
|
-
limitPerPage: 30,
|
|
72
|
-
// os "165px" são referentes ao cabeçalho.
|
|
73
|
-
maxHeight: 'calc(100vh - 165px)',
|
|
74
|
-
url: 'users/me/notifications',
|
|
75
|
-
onFetchSuccess
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// computed
|
|
79
|
-
const model = computed({
|
|
80
|
-
get () {
|
|
81
|
-
return props.model
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
set (value) {
|
|
85
|
-
emit('update:modelValue', value)
|
|
86
|
-
}
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
const drawerProps = computed(() => {
|
|
90
|
-
return {
|
|
91
|
-
loading: isMarkingNotificationsAsRead.value,
|
|
92
|
-
title: 'Notificações'
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Se todas notificações estiverem lidas, então desabilitar o botão de "Marcar todas como lida"
|
|
98
|
-
*/
|
|
99
|
-
const isAllNotificationsRead = computed(() => !notifications.value.some(notification => !notification?.isRead))
|
|
100
|
-
|
|
101
|
-
// functions
|
|
102
|
-
async function markAsRead () {
|
|
103
|
-
const { data } = await promiseHandler(
|
|
104
|
-
axios.patch('/users/me/notifications', { markAllAsRead: true }),
|
|
105
|
-
{
|
|
106
|
-
useLoading: false,
|
|
107
|
-
errorMessage: 'Falha ao marcar todas notificações como lida. Por favor, tente novamente em alguns minutos.',
|
|
108
|
-
onLoading: isLoading => {
|
|
109
|
-
isMarkingNotificationsAsRead.value = isLoading
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
if (data) {
|
|
115
|
-
const notificationsUtilsChannel = new BroadcastChannel('notifications--utils')
|
|
116
|
-
|
|
117
|
-
notificationsUtilsChannel.postMessage({ type: 'markAllAsRead' })
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Ao marcar todas notificações como lida, é necessário percorrer todo o array
|
|
123
|
-
* de "notifications" e setar a prop "isRead" como "true", para não precisar chamar
|
|
124
|
-
* novamente a API para atualizar estes dados.
|
|
125
|
-
*/
|
|
126
|
-
function onMarkAsReadSuccess () {
|
|
127
|
-
notifications.value.forEach(notification => {
|
|
128
|
-
notification.isRead = true
|
|
129
|
-
})
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Zera o contador de notificações, responsável pelo ícone no QasAppUser.
|
|
133
|
-
*/
|
|
134
|
-
setUnreadNotificationsCount(0)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function onFetchSuccess () {
|
|
138
|
-
hasMadeFirstFetch.value = true
|
|
139
|
-
}
|
|
140
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<qas-drawer v-bind="drawerProps" v-model="model">
|
|
3
|
+
<div class="fixed-position">
|
|
4
|
+
<div class="justify-end row">
|
|
5
|
+
<qas-btn class="q-mb-xl" :disable="isAllNotificationsRead" icon="sym_r_check_circle" label="Marcar todas como lida" @click="markAsRead" />
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<qas-infinite-scroll v-model:list="notifications" v-bind="infiniteScrollProps">
|
|
9
|
+
<qas-list-items :list="notifications" :use-box="false" :use-clickable-item="false" :use-section-actions="false">
|
|
10
|
+
<template #item-section="{ item }">
|
|
11
|
+
<pv-layout-notification-card :notification="item" />
|
|
12
|
+
</template>
|
|
13
|
+
</qas-list-items>
|
|
14
|
+
</qas-infinite-scroll>
|
|
15
|
+
</div>
|
|
16
|
+
</qas-drawer>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script setup>
|
|
20
|
+
import PvLayoutNotificationCard from './PvLayoutNotificationCard.vue'
|
|
21
|
+
import QasDrawer from '../../drawer/QasDrawer.vue'
|
|
22
|
+
import QasInfiniteScroll from '../../infinite-scroll/QasInfiniteScroll.vue'
|
|
23
|
+
|
|
24
|
+
import useNotifications, { onNotificationReceived } from '../../../composables/use-notifications'
|
|
25
|
+
|
|
26
|
+
import { promiseHandler } from '../../../helpers'
|
|
27
|
+
|
|
28
|
+
import { computed, ref, inject, onMounted } from 'vue'
|
|
29
|
+
|
|
30
|
+
defineOptions({ name: 'PvLayoutNotificationsDrawer' })
|
|
31
|
+
|
|
32
|
+
const props = defineProps({
|
|
33
|
+
model: {
|
|
34
|
+
type: Boolean
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
const emit = defineEmits(['update:modelValue'])
|
|
39
|
+
|
|
40
|
+
const axios = inject('axios')
|
|
41
|
+
|
|
42
|
+
const { setUnreadNotificationsCount } = useNotifications()
|
|
43
|
+
|
|
44
|
+
const hasMadeFirstFetch = ref(false)
|
|
45
|
+
const isMarkingNotificationsAsRead = ref(false)
|
|
46
|
+
|
|
47
|
+
const notifications = ref([])
|
|
48
|
+
|
|
49
|
+
onMounted(() => {
|
|
50
|
+
const notificationsUtilsChannel = new BroadcastChannel('notifications--utils')
|
|
51
|
+
|
|
52
|
+
notificationsUtilsChannel.onmessage = ({ data }) => {
|
|
53
|
+
if (data.type === 'markAllAsRead') onMarkAsReadSuccess()
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Quando o usuário ainda não abriu a central de notificações, a primeira vez que
|
|
59
|
+
* ele abrir vai obter esses dados via API, mesmo que ele tenha recebido a notificação
|
|
60
|
+
* em real time, após ele ter aberto as notificações pelo menos uma vez, todas
|
|
61
|
+
* notificações recebidas em real time serão incrementadas na central de
|
|
62
|
+
* notificação sem a necessidade de chamar a API e resetar a paginação (feita por scroll).
|
|
63
|
+
*/
|
|
64
|
+
onNotificationReceived(notification => {
|
|
65
|
+
if (!hasMadeFirstFetch.value) return
|
|
66
|
+
|
|
67
|
+
notifications.value.unshift(notification)
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
const infiniteScrollProps = {
|
|
71
|
+
limitPerPage: 30,
|
|
72
|
+
// os "165px" são referentes ao cabeçalho.
|
|
73
|
+
maxHeight: 'calc(100vh - 165px)',
|
|
74
|
+
url: 'users/me/notifications',
|
|
75
|
+
onFetchSuccess
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// computed
|
|
79
|
+
const model = computed({
|
|
80
|
+
get () {
|
|
81
|
+
return props.model
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
set (value) {
|
|
85
|
+
emit('update:modelValue', value)
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
const drawerProps = computed(() => {
|
|
90
|
+
return {
|
|
91
|
+
loading: isMarkingNotificationsAsRead.value,
|
|
92
|
+
title: 'Notificações'
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Se todas notificações estiverem lidas, então desabilitar o botão de "Marcar todas como lida"
|
|
98
|
+
*/
|
|
99
|
+
const isAllNotificationsRead = computed(() => !notifications.value.some(notification => !notification?.isRead))
|
|
100
|
+
|
|
101
|
+
// functions
|
|
102
|
+
async function markAsRead () {
|
|
103
|
+
const { data } = await promiseHandler(
|
|
104
|
+
axios.patch('/users/me/notifications', { markAllAsRead: true }),
|
|
105
|
+
{
|
|
106
|
+
useLoading: false,
|
|
107
|
+
errorMessage: 'Falha ao marcar todas notificações como lida. Por favor, tente novamente em alguns minutos.',
|
|
108
|
+
onLoading: isLoading => {
|
|
109
|
+
isMarkingNotificationsAsRead.value = isLoading
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
if (data) {
|
|
115
|
+
const notificationsUtilsChannel = new BroadcastChannel('notifications--utils')
|
|
116
|
+
|
|
117
|
+
notificationsUtilsChannel.postMessage({ type: 'markAllAsRead' })
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Ao marcar todas notificações como lida, é necessário percorrer todo o array
|
|
123
|
+
* de "notifications" e setar a prop "isRead" como "true", para não precisar chamar
|
|
124
|
+
* novamente a API para atualizar estes dados.
|
|
125
|
+
*/
|
|
126
|
+
function onMarkAsReadSuccess () {
|
|
127
|
+
notifications.value.forEach(notification => {
|
|
128
|
+
notification.isRead = true
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Zera o contador de notificações, responsável pelo ícone no QasAppUser.
|
|
133
|
+
*/
|
|
134
|
+
setUnreadNotificationsCount(0)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function onFetchSuccess () {
|
|
138
|
+
hasMadeFirstFetch.value = true
|
|
139
|
+
}
|
|
140
|
+
</script>
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<component :is="component" class="qas-list-items" :class="classes">
|
|
3
|
-
<q-list separator>
|
|
4
|
-
<q-item v-for="(item, index) in props.list" :key="index" :clickable="props.useClickableItem" @click="onClick({ item, index }, true)">
|
|
5
|
-
<slot :index="index" :item="item" name="item">
|
|
6
|
-
<q-item-section>
|
|
7
|
-
<slot :index="index" :item="item" name="item-section">
|
|
8
|
-
<qas-label
|
|
9
|
-
v-if="item[props.labelKey]"
|
|
10
|
-
:label="item[props.labelKey]"
|
|
11
|
-
:margin="getLabelMargin(item)"
|
|
12
|
-
typography="h5"
|
|
13
|
-
/>
|
|
14
|
-
|
|
15
|
-
<div v-if="item[props.descriptionKey]" class="text-body1">
|
|
16
|
-
{{ item[props.descriptionKey] }}
|
|
17
|
-
</div>
|
|
18
|
-
</slot>
|
|
19
|
-
</q-item-section>
|
|
20
|
-
|
|
21
|
-
<q-item-section v-if="props.useSectionActions" side>
|
|
22
|
-
<slot :index="index" :item="item" name="item-section-side">
|
|
23
|
-
<qas-btn color="grey-10" :icon="props.icon" variant="tertiary" @click="onClick({ item, index })" />
|
|
24
|
-
</slot>
|
|
25
|
-
</q-item-section>
|
|
26
|
-
</slot>
|
|
27
|
-
</q-item>
|
|
28
|
-
</q-list>
|
|
29
|
-
</component>
|
|
30
|
-
</template>
|
|
31
|
-
|
|
32
|
-
<script setup>
|
|
33
|
-
import QasBtn from '../btn/QasBtn.vue'
|
|
34
|
-
|
|
35
|
-
import { computed } from 'vue'
|
|
36
|
-
|
|
37
|
-
defineOptions({ name: 'QasListItems' })
|
|
38
|
-
|
|
39
|
-
const props = defineProps({
|
|
40
|
-
descriptionKey: {
|
|
41
|
-
type: String,
|
|
42
|
-
default: 'description'
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
icon: {
|
|
46
|
-
type: String,
|
|
47
|
-
default: 'sym_r_chevron_right'
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
labelKey: {
|
|
51
|
-
type: String,
|
|
52
|
-
default: 'label'
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
list: {
|
|
56
|
-
default: () => [],
|
|
57
|
-
type: Array
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
useBox: {
|
|
61
|
-
type: Boolean,
|
|
62
|
-
default: true
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
useClickableItem: {
|
|
66
|
-
type: Boolean
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
useSectionActions: {
|
|
70
|
-
default: true,
|
|
71
|
-
type: Boolean
|
|
72
|
-
}
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
const emit = defineEmits(['click-item'])
|
|
76
|
-
|
|
77
|
-
const classes = computed(() => ({ 'qas-list-items--no-click': !props.useClickableItem }))
|
|
78
|
-
|
|
79
|
-
const component = computed(() => props.useBox ? 'qas-box' : 'div')
|
|
80
|
-
|
|
81
|
-
// functions
|
|
82
|
-
function onClick ({ item, index }, fromItem) {
|
|
83
|
-
/**
|
|
84
|
-
* se o click veio do q-item e "useClickableItem" for "false", ou
|
|
85
|
-
* se o click não veio do q-item e "useClickableItem" for "true", então retorna sem emitir.
|
|
86
|
-
*/
|
|
87
|
-
if ((fromItem && !props.useClickableItem) || (!fromItem && props.useClickableItem)) return
|
|
88
|
-
|
|
89
|
-
emit('click-item', { item, index })
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function getLabelMargin (item) {
|
|
93
|
-
return item[props.descriptionKey] ? 'xs' : 'none'
|
|
94
|
-
}
|
|
95
|
-
</script>
|
|
96
|
-
|
|
97
|
-
<style lang="scss">
|
|
98
|
-
.qas-list-items {
|
|
99
|
-
&--no-click {
|
|
100
|
-
.q-item {
|
|
101
|
-
.q-ripple {
|
|
102
|
-
display: none;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.q-list {
|
|
108
|
-
.q-item {
|
|
109
|
-
min-height: auto;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
& > .q-item {
|
|
113
|
-
padding: var(--qas-spacing-md) 0;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
& > .q-item:last-child {
|
|
117
|
-
padding-bottom: 0;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
& > .q-item:first-child {
|
|
121
|
-
padding-top: 0;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<component :is="component" class="qas-list-items" :class="classes">
|
|
3
|
+
<q-list separator>
|
|
4
|
+
<q-item v-for="(item, index) in props.list" :key="index" :clickable="props.useClickableItem" @click="onClick({ item, index }, true)">
|
|
5
|
+
<slot :index="index" :item="item" name="item">
|
|
6
|
+
<q-item-section>
|
|
7
|
+
<slot :index="index" :item="item" name="item-section">
|
|
8
|
+
<qas-label
|
|
9
|
+
v-if="item[props.labelKey]"
|
|
10
|
+
:label="item[props.labelKey]"
|
|
11
|
+
:margin="getLabelMargin(item)"
|
|
12
|
+
typography="h5"
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
<div v-if="item[props.descriptionKey]" class="text-body1">
|
|
16
|
+
{{ item[props.descriptionKey] }}
|
|
17
|
+
</div>
|
|
18
|
+
</slot>
|
|
19
|
+
</q-item-section>
|
|
20
|
+
|
|
21
|
+
<q-item-section v-if="props.useSectionActions" side>
|
|
22
|
+
<slot :index="index" :item="item" name="item-section-side">
|
|
23
|
+
<qas-btn color="grey-10" :icon="props.icon" variant="tertiary" @click="onClick({ item, index })" />
|
|
24
|
+
</slot>
|
|
25
|
+
</q-item-section>
|
|
26
|
+
</slot>
|
|
27
|
+
</q-item>
|
|
28
|
+
</q-list>
|
|
29
|
+
</component>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script setup>
|
|
33
|
+
import QasBtn from '../btn/QasBtn.vue'
|
|
34
|
+
|
|
35
|
+
import { computed } from 'vue'
|
|
36
|
+
|
|
37
|
+
defineOptions({ name: 'QasListItems' })
|
|
38
|
+
|
|
39
|
+
const props = defineProps({
|
|
40
|
+
descriptionKey: {
|
|
41
|
+
type: String,
|
|
42
|
+
default: 'description'
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
icon: {
|
|
46
|
+
type: String,
|
|
47
|
+
default: 'sym_r_chevron_right'
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
labelKey: {
|
|
51
|
+
type: String,
|
|
52
|
+
default: 'label'
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
list: {
|
|
56
|
+
default: () => [],
|
|
57
|
+
type: Array
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
useBox: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
default: true
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
useClickableItem: {
|
|
66
|
+
type: Boolean
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
useSectionActions: {
|
|
70
|
+
default: true,
|
|
71
|
+
type: Boolean
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const emit = defineEmits(['click-item'])
|
|
76
|
+
|
|
77
|
+
const classes = computed(() => ({ 'qas-list-items--no-click': !props.useClickableItem }))
|
|
78
|
+
|
|
79
|
+
const component = computed(() => props.useBox ? 'qas-box' : 'div')
|
|
80
|
+
|
|
81
|
+
// functions
|
|
82
|
+
function onClick ({ item, index }, fromItem) {
|
|
83
|
+
/**
|
|
84
|
+
* se o click veio do q-item e "useClickableItem" for "false", ou
|
|
85
|
+
* se o click não veio do q-item e "useClickableItem" for "true", então retorna sem emitir.
|
|
86
|
+
*/
|
|
87
|
+
if ((fromItem && !props.useClickableItem) || (!fromItem && props.useClickableItem)) return
|
|
88
|
+
|
|
89
|
+
emit('click-item', { item, index })
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function getLabelMargin (item) {
|
|
93
|
+
return item[props.descriptionKey] ? 'xs' : 'none'
|
|
94
|
+
}
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<style lang="scss">
|
|
98
|
+
.qas-list-items {
|
|
99
|
+
&--no-click {
|
|
100
|
+
.q-item {
|
|
101
|
+
.q-ripple {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.q-list {
|
|
108
|
+
.q-item {
|
|
109
|
+
min-height: auto;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
& > .q-item {
|
|
113
|
+
padding: var(--qas-spacing-md) 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
& > .q-item:last-child {
|
|
117
|
+
padding-bottom: 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
& > .q-item:first-child {
|
|
121
|
+
padding-top: 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
</style>
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
type: component
|
|
2
|
-
|
|
3
|
-
meta:
|
|
4
|
-
desc: Componente para listagem.
|
|
5
|
-
|
|
6
|
-
props:
|
|
7
|
-
description-key:
|
|
8
|
-
desc: Chave para acessar a descrição do item.
|
|
9
|
-
default: description
|
|
10
|
-
type: String
|
|
11
|
-
|
|
12
|
-
icon:
|
|
13
|
-
desc: Nome do ícone
|
|
14
|
-
default: sym_r_chevron_right
|
|
15
|
-
type: String
|
|
16
|
-
|
|
17
|
-
label-key:
|
|
18
|
-
desc: Chave para acessar o label do item.
|
|
19
|
-
default: label
|
|
20
|
-
type: String
|
|
21
|
-
|
|
22
|
-
list:
|
|
23
|
-
desc: Lista para ser selecionada.
|
|
24
|
-
default: []
|
|
25
|
-
type: Array
|
|
26
|
-
|
|
27
|
-
use-box:
|
|
28
|
-
desc: Controla se o vai ser um QasBox ou div.
|
|
29
|
-
type: Boolean
|
|
30
|
-
default: true
|
|
31
|
-
|
|
32
|
-
use-clickable-item:
|
|
33
|
-
desc: Controla se o item inteiro é clicável ou somente o button dentro do item.
|
|
34
|
-
type: Boolean
|
|
35
|
-
|
|
36
|
-
use-section-actions:
|
|
37
|
-
desc: Controla se exibe ou não seção de actions, onde fica o Ícone de redirecionamento.
|
|
38
|
-
default: true
|
|
39
|
-
type: Boolean
|
|
40
|
-
|
|
41
|
-
slots:
|
|
42
|
-
item-section:
|
|
43
|
-
desc: Slot para acessar seção da esquerda.
|
|
44
|
-
scope:
|
|
45
|
-
item:
|
|
46
|
-
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
47
|
-
type: Object
|
|
48
|
-
index:
|
|
49
|
-
desc: Posição do item na lista.
|
|
50
|
-
type: Number
|
|
51
|
-
|
|
52
|
-
item-section-side:
|
|
53
|
-
desc: Slot para acessar seção da direita, onde fica o Ícone.
|
|
54
|
-
scope:
|
|
55
|
-
item:
|
|
56
|
-
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
57
|
-
type: Object
|
|
58
|
-
index:
|
|
59
|
-
desc: Posição do item na lista.
|
|
60
|
-
type: Number
|
|
61
|
-
|
|
62
|
-
events:
|
|
63
|
-
'@click-item -> function ({ item, index })':
|
|
64
|
-
desc: Dispara toda vez que o item ou button (dependendo da prop "use-section-actions") é clicado.
|
|
65
|
-
params:
|
|
66
|
-
item:
|
|
67
|
-
desc: Item clicado
|
|
68
|
-
type: Object
|
|
69
|
-
index:
|
|
70
|
-
desc: Posição do item
|
|
71
|
-
type: Number
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para listagem.
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
description-key:
|
|
8
|
+
desc: Chave para acessar a descrição do item.
|
|
9
|
+
default: description
|
|
10
|
+
type: String
|
|
11
|
+
|
|
12
|
+
icon:
|
|
13
|
+
desc: Nome do ícone
|
|
14
|
+
default: sym_r_chevron_right
|
|
15
|
+
type: String
|
|
16
|
+
|
|
17
|
+
label-key:
|
|
18
|
+
desc: Chave para acessar o label do item.
|
|
19
|
+
default: label
|
|
20
|
+
type: String
|
|
21
|
+
|
|
22
|
+
list:
|
|
23
|
+
desc: Lista para ser selecionada.
|
|
24
|
+
default: []
|
|
25
|
+
type: Array
|
|
26
|
+
|
|
27
|
+
use-box:
|
|
28
|
+
desc: Controla se o vai ser um QasBox ou div.
|
|
29
|
+
type: Boolean
|
|
30
|
+
default: true
|
|
31
|
+
|
|
32
|
+
use-clickable-item:
|
|
33
|
+
desc: Controla se o item inteiro é clicável ou somente o button dentro do item.
|
|
34
|
+
type: Boolean
|
|
35
|
+
|
|
36
|
+
use-section-actions:
|
|
37
|
+
desc: Controla se exibe ou não seção de actions, onde fica o Ícone de redirecionamento.
|
|
38
|
+
default: true
|
|
39
|
+
type: Boolean
|
|
40
|
+
|
|
41
|
+
slots:
|
|
42
|
+
item-section:
|
|
43
|
+
desc: Slot para acessar seção da esquerda.
|
|
44
|
+
scope:
|
|
45
|
+
item:
|
|
46
|
+
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
47
|
+
type: Object
|
|
48
|
+
index:
|
|
49
|
+
desc: Posição do item na lista.
|
|
50
|
+
type: Number
|
|
51
|
+
|
|
52
|
+
item-section-side:
|
|
53
|
+
desc: Slot para acessar seção da direita, onde fica o Ícone.
|
|
54
|
+
scope:
|
|
55
|
+
item:
|
|
56
|
+
desc: Item dentro da listagem, vai depender do que foi passado.
|
|
57
|
+
type: Object
|
|
58
|
+
index:
|
|
59
|
+
desc: Posição do item na lista.
|
|
60
|
+
type: Number
|
|
61
|
+
|
|
62
|
+
events:
|
|
63
|
+
'@click-item -> function ({ item, index })':
|
|
64
|
+
desc: Dispara toda vez que o item ou button (dependendo da prop "use-section-actions") é clicado.
|
|
65
|
+
params:
|
|
66
|
+
item:
|
|
67
|
+
desc: Item clicado
|
|
68
|
+
type: Object
|
|
69
|
+
index:
|
|
70
|
+
desc: Posição do item
|
|
71
|
+
type: Number
|