@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,67 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
mixins:
|
|
4
|
+
- quasar/dist/api/QTabs.json
|
|
5
|
+
|
|
6
|
+
meta:
|
|
7
|
+
desc: Componente para gerar tab dinamicamente, implementa o QTab e Qtabs.
|
|
8
|
+
|
|
9
|
+
props:
|
|
10
|
+
active-color:
|
|
11
|
+
desc: Cor da tab quando ela está ativa.
|
|
12
|
+
type: String
|
|
13
|
+
examples: ['primary', 'negative', 'positive']
|
|
14
|
+
|
|
15
|
+
counter-props:
|
|
16
|
+
desc: Contador de cada tags, funciona como um "notificação"
|
|
17
|
+
default: {}
|
|
18
|
+
type: Object
|
|
19
|
+
examples: ["{ tab: 2 }"]
|
|
20
|
+
|
|
21
|
+
fuse-options:
|
|
22
|
+
desc: Configurações do [fuse.js](https://fusejs.io/api/options.html).
|
|
23
|
+
default: { keys: ['label'] }
|
|
24
|
+
type: Object
|
|
25
|
+
|
|
26
|
+
indicator-color:
|
|
27
|
+
desc: Cor do indicador.
|
|
28
|
+
default: primary
|
|
29
|
+
type: String
|
|
30
|
+
|
|
31
|
+
model-value:
|
|
32
|
+
desc: Model do componente, controla qual é a tab atual selecionada.
|
|
33
|
+
type: String
|
|
34
|
+
|
|
35
|
+
tab-class:
|
|
36
|
+
desc: Classe do QTab
|
|
37
|
+
default: text-primary
|
|
38
|
+
type: String
|
|
39
|
+
|
|
40
|
+
tabs:
|
|
41
|
+
desc: Objeto contendo todas as tabs a serem geradas.
|
|
42
|
+
default: {}
|
|
43
|
+
type: Object
|
|
44
|
+
examples: ["{ tab1: 'tab1', tab2: 'tab2' }"]
|
|
45
|
+
|
|
46
|
+
slots:
|
|
47
|
+
'tab-[nome-da-chave]':
|
|
48
|
+
desc: Slot dinâmico gerado a partir das chave passada na prop "tabs", substitui todo o "q-tab".
|
|
49
|
+
scope:
|
|
50
|
+
item:
|
|
51
|
+
desc: Objeto com informações da tab atual
|
|
52
|
+
type: Object
|
|
53
|
+
|
|
54
|
+
'tab-after-[nome-da-chave]':
|
|
55
|
+
desc: Slot dinâmico gerado a partir das chave passada na prop "tabs", substitui o conteúdo dentro do "q-tab".
|
|
56
|
+
scope:
|
|
57
|
+
item:
|
|
58
|
+
desc: Objeto com informações da tab atual
|
|
59
|
+
type: Object
|
|
60
|
+
|
|
61
|
+
events:
|
|
62
|
+
'@update:model-value -> function(value)':
|
|
63
|
+
desc: Dispara quando o model-value altera, também usado para v-model.
|
|
64
|
+
params:
|
|
65
|
+
value:
|
|
66
|
+
desc: Novo valor do model.
|
|
67
|
+
type: String
|
|
@@ -4,15 +4,10 @@
|
|
|
4
4
|
<div ref="truncate" :class="truncateTextClass">
|
|
5
5
|
<slot>{{ text }}</slot>
|
|
6
6
|
</div>
|
|
7
|
-
<div v-if="
|
|
7
|
+
<div v-if="isTruncated" class="cursor-pointer text-primary" @click="toggleDialog">{{ seeMoreLabel }}</div>
|
|
8
8
|
</div>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<div class="row" :class="headerClass">
|
|
12
|
-
<div v-if="dialogTitle" class="text-bold text-subtitle1">{{ dialogTitle }}</div>
|
|
13
|
-
<qas-btn v-close-popup dense flat icon="close" rounded />
|
|
14
|
-
</div>
|
|
15
|
-
</template>
|
|
9
|
+
|
|
10
|
+
<qas-dialog v-model="showDialog" v-bind="defaultDialogProps">
|
|
16
11
|
<template #description>
|
|
17
12
|
<slot>
|
|
18
13
|
<div>{{ text }}</div>
|
|
@@ -23,20 +18,20 @@
|
|
|
23
18
|
</template>
|
|
24
19
|
|
|
25
20
|
<script>
|
|
26
|
-
import
|
|
27
|
-
import QasDialog from '../dialog/QasDialog'
|
|
28
|
-
import QasBtn from '../btn/QasBtn'
|
|
21
|
+
import screenMixin from '../../mixins/screen'
|
|
22
|
+
import QasDialog from '../dialog/QasDialog.vue'
|
|
29
23
|
|
|
30
24
|
export default {
|
|
25
|
+
name: 'QasTextTruncate',
|
|
26
|
+
|
|
31
27
|
components: {
|
|
32
|
-
QasDialog
|
|
33
|
-
QasBtn
|
|
28
|
+
QasDialog
|
|
34
29
|
},
|
|
35
30
|
|
|
36
|
-
mixins: [
|
|
31
|
+
mixins: [screenMixin],
|
|
37
32
|
|
|
38
33
|
props: {
|
|
39
|
-
|
|
34
|
+
dialogProps: {
|
|
40
35
|
type: Object,
|
|
41
36
|
default: () => ({
|
|
42
37
|
persistent: false
|
|
@@ -74,15 +69,28 @@ export default {
|
|
|
74
69
|
|
|
75
70
|
computed: {
|
|
76
71
|
truncateTextClass () {
|
|
77
|
-
return (this.
|
|
72
|
+
return (this.isTruncated || this.mx_isSmall) && 'ellipsis q-pr-sm'
|
|
78
73
|
},
|
|
79
74
|
|
|
80
|
-
|
|
75
|
+
isTruncated () {
|
|
81
76
|
return this.textWidth > this.maxPossibleWidth
|
|
82
77
|
},
|
|
83
78
|
|
|
84
79
|
headerClass () {
|
|
85
80
|
return this.dialogTitle ? 'justify-between' : 'justify-end'
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
defaultDialogProps () {
|
|
84
|
+
return {
|
|
85
|
+
cancel: false,
|
|
86
|
+
ok: false,
|
|
87
|
+
useCloseIcon: true,
|
|
88
|
+
...this.dialogProps,
|
|
89
|
+
card: {
|
|
90
|
+
title: this.dialogTitle,
|
|
91
|
+
description: this.text
|
|
92
|
+
}
|
|
93
|
+
}
|
|
86
94
|
}
|
|
87
95
|
},
|
|
88
96
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Trunca um texto baseado no tamanho do elemento pai e adiciona um rotulo "ver mais" que quando clicado mostra um dialog com o texto original completo (sem ser truncado).
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
dialog-props:
|
|
8
|
+
desc: Repassa todas props e eventos para o componente `QasDialog`.
|
|
9
|
+
type: Object
|
|
10
|
+
default: { persistent: false }
|
|
11
|
+
|
|
12
|
+
dialog-title:
|
|
13
|
+
desc: Seta o título do dialog.
|
|
14
|
+
type: String
|
|
15
|
+
|
|
16
|
+
max-width:
|
|
17
|
+
desc: Seta o tamanho máximo do texto.
|
|
18
|
+
type: Number
|
|
19
|
+
default: 0
|
|
20
|
+
|
|
21
|
+
see-more-label:
|
|
22
|
+
desc: Texto que vai aparecer para ser clicado quando o texto original for truncado.
|
|
23
|
+
type: String
|
|
24
|
+
default: Ver mais
|
|
25
|
+
|
|
26
|
+
text:
|
|
27
|
+
desc: Texto a ser truncado.
|
|
28
|
+
type: String
|
|
29
|
+
|
|
30
|
+
slots:
|
|
31
|
+
default:
|
|
32
|
+
desc: slot padrão que é utilizado para acessar o texto original (tanto o que é truncado quando o de dentro do dialog)
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="qas-transfer row" :class="gutterClass">
|
|
3
|
+
<div class="col-12" />
|
|
3
4
|
<div class="col-12 col-sm">
|
|
4
5
|
<qas-label :label="label" :quantity="optionsList.length" />
|
|
5
6
|
|
|
6
7
|
<qas-search-box form-mode :list="optionsList" v-bind="searchBoxProps">
|
|
7
8
|
<template #default="{ results }">
|
|
8
9
|
<q-list separator>
|
|
9
|
-
<q-item v-for="(item, index) in results" :key="index" :class="
|
|
10
|
+
<q-item v-for="(item, index) in results" :key="index" :class="getItemClass(item, true)" clickable @click="onSelectQueue(item, true)">
|
|
10
11
|
<slot name="item-first-column">
|
|
11
|
-
<q-item-section>{{ item
|
|
12
|
+
<q-item-section>{{ getItemLabel(item) }}</q-item-section>
|
|
12
13
|
</slot>
|
|
13
14
|
</q-item>
|
|
14
15
|
</q-list>
|
|
@@ -18,10 +19,8 @@
|
|
|
18
19
|
|
|
19
20
|
<div class="col-12 col-sm-auto items-center justify-center q-col-gutter-md row" :class="actionsClass">
|
|
20
21
|
<div>
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
<q-tooltip anchor="top middle" self="center middle">Selecionar</q-tooltip>
|
|
24
|
-
</div>
|
|
22
|
+
<qas-btn :class="iconClass" dense :disabled="!firstQueue.length" flat icon="o_arrow_circle_down" rounded @click="setSelectedFromClick(true)" />
|
|
23
|
+
<q-tooltip anchor="top middle" self="center middle">Selecionar</q-tooltip>
|
|
25
24
|
</div>
|
|
26
25
|
<div>
|
|
27
26
|
<div>
|
|
@@ -34,12 +33,12 @@
|
|
|
34
33
|
<div class="col-12 col-sm">
|
|
35
34
|
<qas-label label="Selecionadas" :quantity="selectedList.length" />
|
|
36
35
|
|
|
37
|
-
<qas-search-box v-bind="searchBoxProps" empty-list-height="300px" form-mode label="Selecionadas" :list="selectedList"
|
|
36
|
+
<qas-search-box v-bind="searchBoxProps" empty-list-height="300px" form-mode label="Selecionadas" :list="selectedList">
|
|
38
37
|
<template #default="{ results }">
|
|
39
38
|
<q-list separator>
|
|
40
|
-
<q-item v-for="(item, index) in results" :key="index" :class="
|
|
39
|
+
<q-item v-for="(item, index) in results" :key="index" :class="getItemClass(item)" clickable @click="onSelectQueue(item)">
|
|
41
40
|
<slot name="item-second-column">
|
|
42
|
-
<q-item-section>{{ item
|
|
41
|
+
<q-item-section>{{ getItemLabel(item) }}</q-item-section>
|
|
43
42
|
</slot>
|
|
44
43
|
</q-item>
|
|
45
44
|
</q-list>
|
|
@@ -50,19 +49,24 @@
|
|
|
50
49
|
</template>
|
|
51
50
|
|
|
52
51
|
<script>
|
|
52
|
+
import { screenMixin } from '../../mixins'
|
|
53
53
|
import { extend } from 'quasar'
|
|
54
54
|
|
|
55
|
-
import QasBtn from '../btn/QasBtn'
|
|
56
|
-
import QasLabel from '../label/QasLabel'
|
|
57
|
-
import QasSearchBox from '../search-box/QasSearchBox'
|
|
55
|
+
import QasBtn from '../btn/QasBtn.vue'
|
|
56
|
+
import QasLabel from '../label/QasLabel.vue'
|
|
57
|
+
import QasSearchBox from '../search-box/QasSearchBox.vue'
|
|
58
58
|
|
|
59
59
|
export default {
|
|
60
|
+
name: 'QasTransfer',
|
|
61
|
+
|
|
60
62
|
components: {
|
|
61
63
|
QasBtn,
|
|
62
64
|
QasLabel,
|
|
63
65
|
QasSearchBox
|
|
64
66
|
},
|
|
65
67
|
|
|
68
|
+
mixins: [screenMixin],
|
|
69
|
+
|
|
66
70
|
props: {
|
|
67
71
|
emitValue: {
|
|
68
72
|
type: Boolean
|
|
@@ -73,12 +77,6 @@ export default {
|
|
|
73
77
|
type: Object
|
|
74
78
|
},
|
|
75
79
|
|
|
76
|
-
hideEmptySlot: {
|
|
77
|
-
default: true,
|
|
78
|
-
type: Boolean
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
// TODO: Criar o "toLabel" para o slugar de selecionados.
|
|
82
80
|
label: {
|
|
83
81
|
default: '',
|
|
84
82
|
required: true,
|
|
@@ -90,22 +88,29 @@ export default {
|
|
|
90
88
|
type: String
|
|
91
89
|
},
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
modelValue: {
|
|
94
92
|
default: () => [],
|
|
95
93
|
type: Array
|
|
96
94
|
},
|
|
97
95
|
|
|
98
|
-
|
|
96
|
+
options: {
|
|
99
97
|
default: () => [],
|
|
100
98
|
type: Array
|
|
101
99
|
},
|
|
102
100
|
|
|
101
|
+
useEmptySlot: {
|
|
102
|
+
default: true,
|
|
103
|
+
type: Boolean
|
|
104
|
+
},
|
|
105
|
+
|
|
103
106
|
valueKey: {
|
|
104
107
|
default: 'value',
|
|
105
108
|
type: String
|
|
106
109
|
}
|
|
107
110
|
},
|
|
108
111
|
|
|
112
|
+
emits: ['update:modelValue'],
|
|
113
|
+
|
|
109
114
|
data () {
|
|
110
115
|
return {
|
|
111
116
|
firstQueue: [],
|
|
@@ -117,31 +122,21 @@ export default {
|
|
|
117
122
|
|
|
118
123
|
computed: {
|
|
119
124
|
actionsClass () {
|
|
120
|
-
return !this.
|
|
125
|
+
return !this.mx_isSmall && 'column'
|
|
121
126
|
},
|
|
122
127
|
|
|
123
128
|
gutterClass () {
|
|
124
|
-
return `q-col-gutter-${this.
|
|
129
|
+
return `q-col-gutter-${this.mx_untilLarge ? 'md' : 'xl'}`
|
|
125
130
|
},
|
|
126
131
|
|
|
127
132
|
iconClass () {
|
|
128
|
-
return !this.
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
isMedium () {
|
|
132
|
-
return this.$q.screen.lt.md
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
// TODO: Small seria se fosse sm.
|
|
136
|
-
isSmall () {
|
|
137
|
-
return this.$q.screen.xs
|
|
133
|
+
return !this.mx_isSmall && 'qas-transfer__icon'
|
|
138
134
|
},
|
|
139
135
|
|
|
140
136
|
searchBoxProps () {
|
|
141
137
|
return {
|
|
142
138
|
fuseOptions: this.fuseOptions,
|
|
143
|
-
|
|
144
|
-
list: this.options
|
|
139
|
+
useEmptySlot: this.useEmptySlot
|
|
145
140
|
}
|
|
146
141
|
}
|
|
147
142
|
},
|
|
@@ -155,8 +150,8 @@ export default {
|
|
|
155
150
|
immediate: true
|
|
156
151
|
},
|
|
157
152
|
|
|
158
|
-
|
|
159
|
-
handler (
|
|
153
|
+
modelValue: {
|
|
154
|
+
handler () {
|
|
160
155
|
this.setSelectedFromValue(true)
|
|
161
156
|
},
|
|
162
157
|
|
|
@@ -178,7 +173,18 @@ export default {
|
|
|
178
173
|
})
|
|
179
174
|
},
|
|
180
175
|
|
|
181
|
-
|
|
176
|
+
getItemClass (object, isFirst) {
|
|
177
|
+
return this[isFirst
|
|
178
|
+
? 'firstQueue'
|
|
179
|
+
: 'secondQueue'
|
|
180
|
+
].some(item => item[this.valueKey] === object[this.valueKey]) && 'bg-secondary'
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
getItemLabel (item) {
|
|
184
|
+
return item?.[this.labelKey]
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
getModelValue () {
|
|
182
188
|
const selectedList = extend(true, [], this.selectedList)
|
|
183
189
|
return this.emitValue ? selectedList.map(item => item[this.valueKey]) : selectedList
|
|
184
190
|
},
|
|
@@ -191,27 +197,20 @@ export default {
|
|
|
191
197
|
this[model] = []
|
|
192
198
|
},
|
|
193
199
|
|
|
194
|
-
itemClass (object, isFirst) {
|
|
195
|
-
return this[isFirst
|
|
196
|
-
? 'firstQueue'
|
|
197
|
-
: 'secondQueue'
|
|
198
|
-
].some(item => item[this.valueKey] === object[this.valueKey]) && 'bg-secondary'
|
|
199
|
-
},
|
|
200
|
-
|
|
201
200
|
onSelectQueue (item, isFirst) {
|
|
202
201
|
const model = isFirst ? 'firstQueue' : 'secondQueue'
|
|
203
202
|
const index = this[model].findIndex(selected => selected[this.valueKey] === item[this.valueKey])
|
|
204
203
|
|
|
205
|
-
|
|
204
|
+
~index ? this[model].splice(index, 1) : this[model].push(item)
|
|
206
205
|
},
|
|
207
206
|
|
|
208
207
|
setSelectedFromClick (isFirst) {
|
|
209
208
|
this.handleSelectedList(isFirst)
|
|
210
|
-
this.
|
|
209
|
+
this.updateModelValue()
|
|
211
210
|
},
|
|
212
211
|
|
|
213
212
|
setSelectedFromValue (isFirst) {
|
|
214
|
-
this.
|
|
213
|
+
this.modelValue.forEach(item => {
|
|
215
214
|
const selected = this.optionsList.find(option => {
|
|
216
215
|
return option[this.valueKey] === (this.emitValue ? item : item[this.valueKey])
|
|
217
216
|
})
|
|
@@ -224,8 +223,8 @@ export default {
|
|
|
224
223
|
this.handleSelectedList(isFirst)
|
|
225
224
|
},
|
|
226
225
|
|
|
227
|
-
|
|
228
|
-
return this.$emit('
|
|
226
|
+
updateModelValue () {
|
|
227
|
+
return this.$emit('update:modelValue', this.getModelValue())
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
230
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
type: component
|
|
2
|
+
|
|
3
|
+
meta:
|
|
4
|
+
desc: Componente para transferir itens entre 2 lista (colunas).
|
|
5
|
+
|
|
6
|
+
props:
|
|
7
|
+
emit-value:
|
|
8
|
+
desc: Controla como sera o retorno do model, se "true" será um array de string, se "false" array de objeto.
|
|
9
|
+
type: Boolean
|
|
10
|
+
|
|
11
|
+
model-value:
|
|
12
|
+
desc: Model do componente, controla quais itens estão na segunda coluna.
|
|
13
|
+
default: []
|
|
14
|
+
type: Array
|
|
15
|
+
|
|
16
|
+
fuse-options:
|
|
17
|
+
desc: Configurações do [fuse.js](https://fusejs.io/api/options.html).
|
|
18
|
+
default: { keys: ['label'] }
|
|
19
|
+
type: Object
|
|
20
|
+
|
|
21
|
+
label:
|
|
22
|
+
desc: Rotulo que vai ficar em cima da primeira coluna.
|
|
23
|
+
type: String
|
|
24
|
+
required: true
|
|
25
|
+
|
|
26
|
+
label-key:
|
|
27
|
+
desc: Nos options, você pode passar um array de objeto com qualquer chave/valor, esta prop serve para identificar qual será o equivalente ao "label".
|
|
28
|
+
default: label
|
|
29
|
+
type: String
|
|
30
|
+
|
|
31
|
+
options:
|
|
32
|
+
desc: Array de objetos com todos items que serão transferidos
|
|
33
|
+
default: []
|
|
34
|
+
type: Array
|
|
35
|
+
|
|
36
|
+
use-empty-slot:
|
|
37
|
+
desc: Prop que será repassada para o componente "QasSearchBox", basicamente esconde o slot "empty-result".
|
|
38
|
+
type: Boolean
|
|
39
|
+
default: true
|
|
40
|
+
|
|
41
|
+
value-key:
|
|
42
|
+
desc: Nos options, você pode passar um array de objeto com qualquer chave/valor, esta prop serve para identificar qual será o equivalente ao "value".
|
|
43
|
+
default: value
|
|
44
|
+
type: String
|
|
45
|
+
|
|
46
|
+
slots:
|
|
47
|
+
item-first-column:
|
|
48
|
+
desc: Slot para acessar cada item dentro do `q-item` da primeira coluna.
|
|
49
|
+
|
|
50
|
+
item-second-column:
|
|
51
|
+
desc: Slot para acessar cada item dentro do `q-item` da segunda coluna.
|
|
52
|
+
|
|
53
|
+
events:
|
|
54
|
+
'@update:model-value -> function(value)':
|
|
55
|
+
desc: Dispara quando o model-value altera, também usado para v-model.
|
|
56
|
+
params:
|
|
57
|
+
value:
|
|
58
|
+
desc: Novo valor do model (pode ser array de string ou objeto).
|
|
59
|
+
type: Array
|