@bildvitta/quasar-ui-asteroid 3.5.0-beta.8 → 3.5.0
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/components/actions/QasActions.vue +32 -6
- package/src/components/actions/QasActions.yml +11 -1
- package/src/components/actions-menu/QasActionsMenu.vue +28 -11
- package/src/components/actions-menu/QasActionsMenu.yml +13 -4
- package/src/components/alert/QasAlert.vue +1 -1
- package/src/components/app-bar/QasAppBar.vue +7 -3
- package/src/components/app-menu/QasAppMenu.vue +54 -9
- package/src/components/app-user/QasAppUser.vue +8 -4
- package/src/components/avatar/QasAvatar.vue +11 -2
- package/src/components/avatar/QasAvatar.yml +1 -1
- package/src/components/card/QasCard.vue +2 -2
- package/src/components/copy/QasCopy.vue +1 -1
- package/src/components/copy/QasCopy.yml +1 -1
- package/src/components/date-time-input/QasDateTimeInput.vue +67 -6
- package/src/components/delete/QasDelete.vue +0 -1
- package/src/components/dialog/QasDialog.vue +56 -28
- package/src/components/dialog/QasDialog.yml +0 -9
- package/src/components/filters/QasFilters.vue +7 -7
- package/src/components/form-view/QasFormView.vue +0 -1
- package/src/components/gallery/QasGallery.vue +3 -3
- package/src/components/gallery/private/PvGalleryCarouselDialog.vue +3 -3
- package/src/components/header-actions/QasHeaderActions.vue +62 -0
- package/src/components/header-actions/QasHeaderActions.yml +26 -0
- package/src/components/list-items/QasListItems.vue +1 -1
- package/src/components/list-items/QasListItems.yml +1 -1
- package/src/components/nested-fields/QasNestedFields.vue +4 -4
- package/src/components/nested-fields/QasNestedFields.yml +2 -2
- package/src/components/numeric-input/QasNumericInput.vue +9 -0
- package/src/components/page-header/QasPageHeader.vue +92 -17
- package/src/components/page-header/QasPageHeader.yml +19 -1
- package/src/components/pagination/QasPagination.vue +12 -1
- package/src/components/password-input/QasPasswordInput.vue +1 -1
- package/src/components/search-box/QasSearchBox.vue +3 -3
- package/src/components/select/QasSelect.vue +6 -5
- package/src/components/select-list/QasSelectList.vue +1 -1
- package/src/components/signature-pad/QasSignaturePad.vue +1 -1
- package/src/components/signature-uploader/QasSignatureUploader.vue +7 -8
- package/src/components/single-view/QasSingleView.vue +1 -1
- package/src/components/table-generator/QasTableGenerator.vue +29 -4
- package/src/components/tabs-generator/QasTabsGenerator.vue +140 -37
- package/src/components/tabs-generator/QasTabsGenerator.yml +4 -24
- package/src/components/tabs-generator/private/PvTabsGeneratorStatus.vue +32 -0
- package/src/components/text-truncate/QasTextTruncate.vue +0 -1
- package/src/components/transfer/QasTransfer.vue +2 -2
- package/src/components/tree-generator/QasTreeGenerator.vue +4 -5
- package/src/components/uploader/QasUploader.vue +8 -8
- package/src/components/welcome/QasWelcome.vue +108 -0
- package/src/components/welcome/QasWelcome.yml +14 -0
- package/src/components/welcome/private/PvWelcomeShortcutCard.vue +58 -0
- package/src/css/components/base.scss +8 -0
- package/src/css/components/item.scss +8 -3
- package/src/css/mixins/index.scss +1 -0
- package/src/css/mixins/set-typography.scss +8 -0
- package/src/css/variables/index.scss +1 -0
- package/src/css/variables/shadow.scss +3 -0
- package/src/css/variables/spacing.scss +15 -0
- package/src/css/variables/typography.scss +1 -1
- package/src/mixins/delete.js +0 -1
- package/src/plugins/notify-error/NotifyError.js +1 -1
- package/src/plugins/notify-success/NotifySuccess.js +1 -1
- package/src/shared/date-config.js +26 -0
- package/src/vue-plugin.js +6 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<qas-box>
|
|
3
3
|
<qas-input v-bind="attributes" ref="search" v-model="mx_search">
|
|
4
4
|
<template #append>
|
|
5
|
-
<q-icon color="primary" name="
|
|
5
|
+
<q-icon color="primary" name="sym_r_search" />
|
|
6
6
|
</template>
|
|
7
7
|
</qas-input>
|
|
8
8
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<slot v-if="showEmptyResult" name="empty-result">
|
|
21
21
|
<div class="absolute-center text-center">
|
|
22
|
-
<q-icon class="q-mb-sm text-center" color="primary" name="
|
|
22
|
+
<q-icon class="q-mb-sm text-center" color="primary" name="sym_r_search" size="38px" />
|
|
23
23
|
<div>{{ emptyResultText }}</div>
|
|
24
24
|
</div>
|
|
25
25
|
</slot>
|
|
@@ -112,7 +112,7 @@ export default {
|
|
|
112
112
|
return {
|
|
113
113
|
clearable: true,
|
|
114
114
|
disable: this.isDisabled,
|
|
115
|
-
debounce: this.useLazyLoading ?
|
|
115
|
+
debounce: this.useLazyLoading ? 1200 : 0,
|
|
116
116
|
outlined: true,
|
|
117
117
|
placeholder: this.placeholder,
|
|
118
118
|
hideBottomSpace: true,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<q-select v-model="model" v-bind="attributes">
|
|
3
3
|
<template v-if="isSearchable" #prepend>
|
|
4
|
-
<q-icon name="
|
|
4
|
+
<q-icon name="sym_r_search" />
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<template #no-option>
|
|
@@ -91,12 +91,13 @@ export default {
|
|
|
91
91
|
outlined: true,
|
|
92
92
|
...this.$attrs,
|
|
93
93
|
|
|
94
|
-
options: this.mx_filteredOptions,
|
|
95
|
-
useInput: this.isSearchable,
|
|
96
94
|
error: this.hasError,
|
|
95
|
+
inputDebounce: this.useLazyLoading ? 1200 : 0,
|
|
97
96
|
loading: this.hasLoading,
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
options: this.mx_filteredOptions,
|
|
98
|
+
useInput: this.isSearchable,
|
|
99
|
+
...(this.isSearchable && { onFilter: this.onFilter }),
|
|
100
|
+
...(this.useLazyLoading && { onVirtualScroll: this.mx_onVirtualScroll })
|
|
100
101
|
}
|
|
101
102
|
},
|
|
102
103
|
|
|
@@ -130,7 +130,7 @@ export default {
|
|
|
130
130
|
return {
|
|
131
131
|
dense: this.$qas.screen.isSmall,
|
|
132
132
|
useLabelOnSmallScreen: false,
|
|
133
|
-
icon: !this.$qas.screen.isSmall ? undefined : isSelected ? '
|
|
133
|
+
icon: !this.$qas.screen.isSmall ? undefined : isSelected ? 'sym_r_close' : 'sym_r_add',
|
|
134
134
|
label: isSelected ? 'Remover' : 'Adicionar',
|
|
135
135
|
outline: isSelected,
|
|
136
136
|
size: 'sm'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div ref="signatureContainer" class="qas-signature-pad relative-position">
|
|
3
3
|
<canvas :id="canvasId" :ref="$attrs.ref" class="qas-signature-pad__canvas rounded-borders vertical-bottom" :height="height" />
|
|
4
|
-
<qas-btn v-if="!empty" class="absolute-bottom-right q-mb-sm q-mr-sm" color="primary" dense icon="
|
|
4
|
+
<qas-btn v-if="!empty" class="absolute-bottom-right q-mb-sm q-mr-sm" color="primary" dense icon="sym_r_delete" round @click="clearSignature" />
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
7
|
<div>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<qas-uploader ref="uploader" v-model="model" :label="uploadLabel" :readonly="readonly" :use-resize="false"
|
|
3
|
+
<qas-uploader ref="uploader" v-model="model" :label="uploadLabel" v-bind="$attrs" :readonly="readonly" :use-resize="false">
|
|
4
4
|
<template #header="{ scope }">
|
|
5
5
|
<div class="cursor-pointer flex flex-center full-width justify-between no-border no-wrap q-gutter-xs text-white transparent" :class="headerClass" @click="openDialog">
|
|
6
6
|
<div class="col column items-start justify-center">
|
|
7
7
|
<div v-if="uploadLabel" class="q-uploader__title">{{ uploadLabel }}</div>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
<qas-btn v-if="!readonly" color="white" dense flat icon="
|
|
10
|
+
<qas-btn v-if="!readonly" color="white" dense flat icon="sym_r_add" round @click="openDialog" />
|
|
11
11
|
|
|
12
12
|
<qas-btn ref="forceUpload" class="hidden" @click="upload(scope)" />
|
|
13
13
|
<qas-btn ref="buttonCleanFiles" class="hidden" @click="scope.removeUploadedFiles" />
|
|
@@ -25,11 +25,6 @@
|
|
|
25
25
|
<qas-signature-pad ref="signaturePadModal" v-model:empty="isEmpty" :height="signaturePadHeight" />
|
|
26
26
|
</div>
|
|
27
27
|
</template>
|
|
28
|
-
|
|
29
|
-
<template #actions>
|
|
30
|
-
<qas-btn class="full-width" color="primary" :disable="isEmpty" label="Salvar" no-caps @click="getSignatureData" />
|
|
31
|
-
<qas-btn class="full-width q-mt-sm" color="primary" flat label="Cancelar" no-caps @click="closeSignature" />
|
|
32
|
-
</template>
|
|
33
28
|
</qas-dialog>
|
|
34
29
|
</div>
|
|
35
30
|
</template>
|
|
@@ -111,7 +106,11 @@ export default {
|
|
|
111
106
|
defaultDialogProps () {
|
|
112
107
|
return {
|
|
113
108
|
maxWidth: '620px',
|
|
114
|
-
...this.dialogProps
|
|
109
|
+
...this.dialogProps,
|
|
110
|
+
ok: {
|
|
111
|
+
label: 'Salvar',
|
|
112
|
+
onClick: () => this.getSignatureData()
|
|
113
|
+
}
|
|
115
114
|
}
|
|
116
115
|
},
|
|
117
116
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</template>
|
|
10
10
|
|
|
11
11
|
<div v-else-if="!mx_isFetching" class="q-my-xl text-center">
|
|
12
|
-
<q-icon class="q-mb-sm text-center" color="grey-7" name="
|
|
12
|
+
<q-icon class="q-mb-sm text-center" color="grey-7" name="sym_r_search" size="38px" />
|
|
13
13
|
<div class="text-grey-7">Nenhum item encontrado.</div>
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<qas-box class="q-px-lg q-py-md">
|
|
3
|
-
<q-table ref="table" class="bg-
|
|
3
|
+
<q-table ref="table" class="bg-white qas-table-generator text-grey-8" :class="tableClass" v-bind="attributes">
|
|
4
4
|
<template v-for="(_, name) in $slots" #[name]="context">
|
|
5
5
|
<slot v-if="hasBodySlot" name="body" :props="context" />
|
|
6
6
|
|
|
@@ -94,7 +94,7 @@ export default {
|
|
|
94
94
|
field: name,
|
|
95
95
|
label,
|
|
96
96
|
name,
|
|
97
|
-
headerClasses: 'text-
|
|
97
|
+
headerClasses: 'text-grey-9'
|
|
98
98
|
})
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -246,8 +246,33 @@ export default {
|
|
|
246
246
|
|
|
247
247
|
<style lang="scss">
|
|
248
248
|
.qas-table-generator {
|
|
249
|
-
.q-table
|
|
250
|
-
|
|
249
|
+
.q-table {
|
|
250
|
+
th {
|
|
251
|
+
@include set-typography($subtitle1);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
td,
|
|
255
|
+
th,
|
|
256
|
+
thead,
|
|
257
|
+
tr {
|
|
258
|
+
border-color: $grey-4;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
td {
|
|
262
|
+
@include set-typography($body1);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
tr {
|
|
266
|
+
transition: background-color var(--qas-generic-transition);
|
|
267
|
+
|
|
268
|
+
&:hover {
|
|
269
|
+
background-color: $grey-2;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
thead tr:hover {
|
|
274
|
+
background-color: white;
|
|
275
|
+
}
|
|
251
276
|
}
|
|
252
277
|
|
|
253
278
|
&--mobile {
|
|
@@ -1,52 +1,46 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
<div class="qas-tabs-generator">
|
|
3
|
+
<q-tabs v-model="model" active-color="primary" align="left" :breakpoint="0" content-class="text-grey-8" dense inline-label left-icon="sym_r_chevron_left" outside-arrows right-icon="sym_r_chevron_right">
|
|
4
|
+
<slot v-for="(tab, key) in formattedTabs" :item="tab" :name="`tab-${tab.value}`">
|
|
5
|
+
<q-tab :key="key" v-bind="getTabProps(tab)" class="text-body1" :name="tab.value" no-caps :ripple="false">
|
|
6
|
+
<slot :item="tab" :name="`tab-after-${tab.value}`">
|
|
7
|
+
<q-icon v-if="tab.icon" :name="tab.icon" size="sm" />
|
|
8
|
+
|
|
9
|
+
<pv-tabs-generator-status v-if="tab.status" :color="tab.status" />
|
|
10
|
+
|
|
11
|
+
<div class="q-ml-xs">
|
|
12
|
+
{{ getFormattedLabel(tab) }}
|
|
13
|
+
</div>
|
|
14
|
+
</slot>
|
|
15
|
+
</q-tab>
|
|
16
|
+
</slot>
|
|
17
|
+
</q-tabs>
|
|
18
|
+
</div>
|
|
11
19
|
</template>
|
|
12
20
|
|
|
13
21
|
<script>
|
|
22
|
+
import PvTabsGeneratorStatus from './private/PvTabsGeneratorStatus.vue'
|
|
23
|
+
|
|
14
24
|
import { extend } from 'quasar'
|
|
15
25
|
|
|
16
26
|
export default {
|
|
17
27
|
name: 'QasTabsGenerator',
|
|
18
28
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type: String
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
counterProps: {
|
|
26
|
-
default: () => ({}),
|
|
27
|
-
type: Object
|
|
28
|
-
},
|
|
29
|
+
components: {
|
|
30
|
+
PvTabsGeneratorStatus
|
|
31
|
+
},
|
|
29
32
|
|
|
33
|
+
props: {
|
|
30
34
|
counters: {
|
|
31
35
|
default: () => ({}),
|
|
32
36
|
type: Object
|
|
33
37
|
},
|
|
34
38
|
|
|
35
|
-
indicatorColor: {
|
|
36
|
-
default: 'primary',
|
|
37
|
-
type: String
|
|
38
|
-
},
|
|
39
|
-
|
|
40
39
|
modelValue: {
|
|
41
40
|
default: '',
|
|
42
41
|
type: [String, Number]
|
|
43
42
|
},
|
|
44
43
|
|
|
45
|
-
tabClass: {
|
|
46
|
-
default: 'text-primary',
|
|
47
|
-
type: String
|
|
48
|
-
},
|
|
49
|
-
|
|
50
44
|
tabs: {
|
|
51
45
|
default: () => ({}),
|
|
52
46
|
required: true,
|
|
@@ -57,14 +51,6 @@ export default {
|
|
|
57
51
|
emits: ['update:modelValue'],
|
|
58
52
|
|
|
59
53
|
computed: {
|
|
60
|
-
defaultCounterProps () {
|
|
61
|
-
return {
|
|
62
|
-
color: 'negative',
|
|
63
|
-
floating: true,
|
|
64
|
-
...this.counterProps
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
|
|
68
54
|
formattedTabs () {
|
|
69
55
|
const tabs = extend(true, {}, this.tabs)
|
|
70
56
|
|
|
@@ -83,9 +69,126 @@ export default {
|
|
|
83
69
|
},
|
|
84
70
|
|
|
85
71
|
set (value) {
|
|
72
|
+
const currentTab = Array.isArray(this.tabs)
|
|
73
|
+
? this.tabs.find(tab => tab?.value === value)
|
|
74
|
+
: this.formattedTabs[value]
|
|
75
|
+
|
|
76
|
+
if (currentTab?.disabled) return
|
|
77
|
+
|
|
86
78
|
this.$emit('update:modelValue', value)
|
|
87
79
|
}
|
|
88
80
|
}
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
methods: {
|
|
84
|
+
getFormattedLabel ({ label, counter, value }) {
|
|
85
|
+
const normalizedCount = this.counters[value] || counter
|
|
86
|
+
|
|
87
|
+
if (!normalizedCount) return label
|
|
88
|
+
|
|
89
|
+
const countString = String(normalizedCount)
|
|
90
|
+
|
|
91
|
+
return `${label} (${countString.padStart(2, '0')})`
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
getTabProps (tab) {
|
|
95
|
+
const { icon, label, ...payload } = tab
|
|
96
|
+
return payload
|
|
97
|
+
}
|
|
89
98
|
}
|
|
90
99
|
}
|
|
91
100
|
</script>
|
|
101
|
+
|
|
102
|
+
<style lang="scss">
|
|
103
|
+
.qas-tabs-generator {
|
|
104
|
+
.q-tabs {
|
|
105
|
+
&--scrollable {
|
|
106
|
+
.q-tab {
|
|
107
|
+
&:first-child {
|
|
108
|
+
padding-left: var(--qas-spacing-xs);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&:last-child {
|
|
112
|
+
padding-right: var(--qas-spacing-xs);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.q-tab {
|
|
118
|
+
&--inactive {
|
|
119
|
+
opacity: 1;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&__content {
|
|
123
|
+
position: relative;
|
|
124
|
+
|
|
125
|
+
&::before {
|
|
126
|
+
background: var(--q-primary);
|
|
127
|
+
bottom: 0;
|
|
128
|
+
content: '';
|
|
129
|
+
height: 2px;
|
|
130
|
+
left: 0;
|
|
131
|
+
position: absolute;
|
|
132
|
+
right: 0;
|
|
133
|
+
transform: scale(0);
|
|
134
|
+
transition: transform var(--qas-generic-transition);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&--active {
|
|
139
|
+
font-weight: 600;
|
|
140
|
+
|
|
141
|
+
.q-tab__content {
|
|
142
|
+
position: relative;
|
|
143
|
+
|
|
144
|
+
&::before {
|
|
145
|
+
transform: scale(100%);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
&:not(.q-tabs--scrollable .q-tab):first-child {
|
|
151
|
+
padding-left: 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
&:not(.q-tabs--scrollable .q-tab):last-child {
|
|
155
|
+
padding-right: 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
&:not(&--active) {
|
|
159
|
+
transition: color var(--qas-generic-transition);
|
|
160
|
+
|
|
161
|
+
&:not([disabled]):hover {
|
|
162
|
+
color: var(--q-primary-contrast) !important;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
&__icon {
|
|
167
|
+
font-size: 24px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&__arrow--faded {
|
|
171
|
+
color: $grey-6;
|
|
172
|
+
opacity: 1 !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
&__indicator {
|
|
176
|
+
display: none;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&__arrow:not(&--faded) {
|
|
181
|
+
color: $grey-9;
|
|
182
|
+
transition: color var(--qas-generic-transition);
|
|
183
|
+
|
|
184
|
+
&:hover {
|
|
185
|
+
color: var(--q-primary-contrast);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.q-focus-helper {
|
|
191
|
+
display: none;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
</style>
|
|
@@ -4,40 +4,20 @@ mixins:
|
|
|
4
4
|
- quasar/dist/api/QTabs.json
|
|
5
5
|
|
|
6
6
|
meta:
|
|
7
|
-
desc: Componente para gerar
|
|
7
|
+
desc: Componente para gerar tabs dinamicamente, implementa o QTab e QTabs.
|
|
8
8
|
|
|
9
9
|
props:
|
|
10
|
-
|
|
11
|
-
desc:
|
|
12
|
-
type: String
|
|
13
|
-
examples: ['primary', 'negative', 'positive']
|
|
14
|
-
|
|
15
|
-
counter-props:
|
|
16
|
-
desc: Contador de cada tags, funciona como um "notificação"
|
|
10
|
+
counters:
|
|
11
|
+
desc: Contador que ficará junto a label "Todos (24)"
|
|
17
12
|
default: {}
|
|
18
13
|
type: Object
|
|
19
|
-
examples: ["{
|
|
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
|
|
14
|
+
examples: ["{ all: 24 }"]
|
|
30
15
|
|
|
31
16
|
model-value:
|
|
32
17
|
desc: Model do componente, controla qual é a tab atual selecionada.
|
|
33
18
|
type: [String, Number]
|
|
34
19
|
model: true
|
|
35
20
|
|
|
36
|
-
tab-class:
|
|
37
|
-
desc: Classe do QTab
|
|
38
|
-
default: text-primary
|
|
39
|
-
type: String
|
|
40
|
-
|
|
41
21
|
tabs:
|
|
42
22
|
desc: Objeto ou Array contendo todas as tabs a serem geradas.
|
|
43
23
|
default: {}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="pv-tabs-generator-status" :class="backgroundClass" />
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script>
|
|
6
|
+
export default {
|
|
7
|
+
name: 'PvTabsGeneratorStatus',
|
|
8
|
+
|
|
9
|
+
inheritAttrs: false,
|
|
10
|
+
|
|
11
|
+
props: {
|
|
12
|
+
color: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: ''
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
computed: {
|
|
19
|
+
backgroundClass () {
|
|
20
|
+
return `bg-${this.color}`
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<style lang="scss">
|
|
27
|
+
.pv-tabs-generator-status {
|
|
28
|
+
border-radius: 100%;
|
|
29
|
+
height: 16px;
|
|
30
|
+
width: 16px;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
|
|
20
20
|
<div class="col-12 col-sm-auto items-center justify-center q-col-gutter-md row" :class="actionsClass">
|
|
21
21
|
<div>
|
|
22
|
-
<qas-btn :class="iconClass" dense :disabled="!firstQueue.length" flat icon="
|
|
22
|
+
<qas-btn :class="iconClass" dense :disabled="!firstQueue.length" flat icon="sym_r_arrow_circle_down" rounded @click="setSelectedFromClick(true)" />
|
|
23
23
|
<q-tooltip anchor="top middle" self="center middle">Selecionar</q-tooltip>
|
|
24
24
|
</div>
|
|
25
25
|
<div>
|
|
26
26
|
<div>
|
|
27
|
-
<qas-btn :class="iconClass" dense :disabled="!secondQueue.length" flat icon="
|
|
27
|
+
<qas-btn :class="iconClass" dense :disabled="!secondQueue.length" flat icon="sym_r_arrow_circle_up" rounded @click="setSelectedFromClick()" />
|
|
28
28
|
<q-tooltip anchor="bottom middle" self="center middle">Remover</q-tooltip>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
</span>
|
|
9
9
|
|
|
10
10
|
<span v-if="hasMenuButton(node)" class="q-ml-sm">
|
|
11
|
-
<qas-btn dense flat icon="
|
|
11
|
+
<qas-btn dense flat icon="sym_r_more_vert" round @click.stop>
|
|
12
12
|
<q-menu auto-close>
|
|
13
13
|
<q-list separator>
|
|
14
14
|
<q-item v-if="useAddButton" v-ripple class="qas-tree-generator__item" clickable @click="handleTreeFormDialog(node, true, tree)">
|
|
15
15
|
<q-item-section avatar>
|
|
16
|
-
<q-icon name="
|
|
16
|
+
<q-icon name="sym_r_add_circle_outline" />
|
|
17
17
|
</q-item-section>
|
|
18
18
|
|
|
19
19
|
<q-item-section>Adicionar subnível</q-item-section>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
<q-item v-if="useEditButton" v-ripple class="qas-tree-generator__item" clickable @click="handleTreeFormDialog(node)">
|
|
23
23
|
<q-item-section avatar>
|
|
24
|
-
<q-icon name="
|
|
24
|
+
<q-icon name="sym_r_edit" />
|
|
25
25
|
</q-item-section>
|
|
26
26
|
|
|
27
27
|
<q-item-section>Editar</q-item-section>
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
<q-item v-if="hasDestroyButton(node)" v-ripple class="qas-tree-generator__item" clickable @click="onDestroy(node)">
|
|
31
31
|
<q-item-section avatar>
|
|
32
|
-
<q-icon name="
|
|
32
|
+
<q-icon name="sym_r_highlight_off" />
|
|
33
33
|
</q-item-section>
|
|
34
34
|
|
|
35
35
|
<q-item-section>Excluir</q-item-section>
|
|
@@ -169,7 +169,6 @@ export default {
|
|
|
169
169
|
destroyDialogConfig () {
|
|
170
170
|
return {
|
|
171
171
|
card: {
|
|
172
|
-
title: 'Excluir ramo da árvore?',
|
|
173
172
|
description: 'Todas as informações serão perdidas. Deseja realmente continuar?'
|
|
174
173
|
},
|
|
175
174
|
ok: {
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
|
-
<qas-btn v-if="showAddFile" ref="buttonUpload" color="white" dense flat icon="
|
|
16
|
+
<qas-btn v-if="showAddFile" ref="buttonUpload" color="white" dense flat icon="sym_r_add" round @click="$refs.hiddenInput.click()" />
|
|
17
17
|
|
|
18
18
|
<input ref="hiddenInput" :accept="attributes.accept" class="qas-uploader__input" :multiple="isMultiple" type="file">
|
|
19
19
|
|
|
20
20
|
<qas-btn ref="buttonCleanFiles" class="hidden" color="white" @click="scope.removeUploadedFiles" />
|
|
21
|
-
<qas-btn v-if="scope.canUpload" color="white" dense flat icon="
|
|
22
|
-
<qas-btn v-if="scope.isUploading" color="white" dense flat icon="
|
|
21
|
+
<qas-btn v-if="scope.canUpload" color="white" dense flat icon="sym_r_cloud_upload" round @click="scope.upload" />
|
|
22
|
+
<qas-btn v-if="scope.isUploading" color="white" dense flat icon="sym_r_clear" round @click="scope.abort" />
|
|
23
23
|
</div>
|
|
24
24
|
</slot>
|
|
25
25
|
</template>
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<slot name="list" :scope="scope">
|
|
29
29
|
<div class="col-12 q-col-gutter-md row">
|
|
30
30
|
<div v-for="(file, index) in getFilesList(scope.files, scope)" :key="index" class="row" :class="itemClass">
|
|
31
|
-
<qas-avatar class="q-mr-sm" color="
|
|
31
|
+
<qas-avatar class="q-mr-sm" color="primary" icon="sym_r_attach_file" :image="file.url" rounded :text-color="getColorFileIcon(file)" />
|
|
32
32
|
|
|
33
33
|
<div class="col items-center no-wrap row">
|
|
34
34
|
<div class="column no-wrap" :class="{ col: isMultiple }">
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
<div v-if="file.isUploaded" class="text-caption">{{ file.progressLabel }} ({{ file.sizeLabel }})</div>
|
|
37
37
|
</div>
|
|
38
38
|
<div class="items-center q-ml-sm row">
|
|
39
|
-
<q-icon v-if="file.isFailed" color="negative" name="
|
|
40
|
-
<qas-btn v-if="!scope.readonly" dense flat icon="
|
|
39
|
+
<q-icon v-if="file.isFailed" color="negative" name="sym_r_warning" size="20px" />
|
|
40
|
+
<qas-btn v-if="!scope.readonly" dense flat icon="sym_r_delete" round @click="removeItem(index, scope, file)" />
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
<slot :context="self" name="custom-upload" />
|
|
50
50
|
|
|
51
51
|
<template v-if="hasErrorMessage" #after>
|
|
52
|
-
<q-icon color="negative" name="
|
|
52
|
+
<q-icon color="negative" name="sym_r_error" />
|
|
53
53
|
</template>
|
|
54
54
|
</q-field>
|
|
55
55
|
</template>
|
|
@@ -370,7 +370,7 @@ export default {
|
|
|
370
370
|
},
|
|
371
371
|
|
|
372
372
|
getColorFileIcon (file) {
|
|
373
|
-
return this.isFailed(file) ? 'negative' : '
|
|
373
|
+
return this.isFailed(file) ? 'negative' : 'white'
|
|
374
374
|
},
|
|
375
375
|
|
|
376
376
|
async addFiles () {
|