@bildvitta/quasar-ui-asteroid 3.17.0-beta.2 → 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 +2 -2
- package/src/assets/sounds/nave-notification.mp3 +0 -0
- package/src/components/actions/QasActions.vue +1 -1
- package/src/components/app-menu/QasAppMenu.vue +6 -1
- package/src/components/avatar/QasAvatar.vue +7 -8
- package/src/components/board-generator/QasBoardGenerator.vue +407 -40
- package/src/components/board-generator/QasBoardGenerator.yml +53 -12
- package/src/components/btn-dropdown/QasBtnDropdown.vue +14 -1
- package/src/components/card/QasCard.vue +13 -4
- package/src/components/chart-view/QasChartView.vue +44 -20
- package/src/components/chart-view/QasChartView.yml +10 -0
- package/src/components/checkbox/QasCheckbox.vue +30 -9
- package/src/components/checkbox/QasCheckbox.yml +5 -0
- package/src/components/copy/QasCopy.vue +12 -2
- package/src/components/copy/QasCopy.yml +8 -0
- package/src/components/date-time-input/QasDateTimeInput.vue +1 -1
- package/src/components/dialog/QasDialog.vue +3 -3
- package/src/components/expansion-item/QasExpansionItem.vue +120 -34
- package/src/components/expansion-item/QasExpansionItem.yml +38 -5
- package/src/components/filters/QasFilters.vue +1 -1
- package/src/components/filters/private/PvFiltersButton.vue +1 -1
- package/src/components/form-generator/QasFormGenerator.vue +39 -27
- package/src/components/form-generator/QasFormGenerator.yml +3 -0
- package/src/components/grabbable/QasGrabbable.vue +14 -6
- package/src/components/grabbable/QasGrabbable.yml +4 -0
- package/src/components/grid-generator/QasGridGenerator.vue +67 -34
- package/src/components/grid-generator/QasGridGenerator.yml +15 -0
- package/src/components/header/QasHeader.vue +58 -12
- package/src/components/header/QasHeader.yml +5 -0
- package/src/components/infinite-scroll/QasInfiniteScroll.vue +16 -17
- package/src/components/infinite-scroll/QasInfiniteScroll.yml +7 -0
- package/src/components/list-items/QasListItems.vue +28 -4
- package/src/components/list-items/QasListItems.yml +10 -0
- package/src/components/list-view/QasListView.vue +17 -5
- package/src/components/list-view/QasListView.yml +9 -0
- package/src/components/nested-fields/QasNestedFields.vue +91 -36
- package/src/components/nested-fields/QasNestedFields.yml +23 -0
- package/src/components/radio/QasRadio.vue +24 -5
- package/src/components/radio/QasRadio.yml +6 -0
- package/src/components/select/QasSelect.vue +129 -5
- package/src/components/select/QasSelect.yml +11 -0
- package/src/components/stepper-form-view/QasStepperFormView.yml +1 -1
- package/src/components/table-generator/QasTableGenerator.vue +10 -1
- package/src/components/text-truncate/QasTextTruncate.vue +11 -4
- package/src/components/text-truncate/QasTextTruncate.yml +4 -0
- package/src/composables/private/use-generator.js +3 -9
- package/src/composables/use-notifications.js +14 -0
- package/src/css/components/field.scss +13 -6
- package/src/css/components/item.scss +5 -1
- package/src/enums/Spacing.js +33 -0
- package/src/helpers/set-scroll-on-grab.js +9 -1
|
@@ -20,19 +20,33 @@ props:
|
|
|
20
20
|
required: true
|
|
21
21
|
|
|
22
22
|
column-width:
|
|
23
|
-
desc: Largura da coluna
|
|
23
|
+
desc: Largura da coluna.
|
|
24
24
|
type: String
|
|
25
25
|
default: 288
|
|
26
26
|
|
|
27
|
+
confirm-dialog-props:
|
|
28
|
+
desc: Propriedade repassada ao `QasDialog` para confirmar um drag and drop. Caso não seja passado, não é usado dialog de confirmação. As ações de confirmar e cancelar são feitas por padrão no componente.
|
|
29
|
+
type: Object
|
|
30
|
+
default: {}
|
|
31
|
+
|
|
32
|
+
header-box-props:
|
|
33
|
+
desc: Propriedades repassadas ao `QasBox` do header.
|
|
34
|
+
type: Object
|
|
35
|
+
default: {}
|
|
36
|
+
|
|
27
37
|
headers:
|
|
28
38
|
desc: Lista de itens sendo cada um o header de cada coluna.
|
|
29
39
|
default: []
|
|
30
40
|
type: Array
|
|
31
|
-
|
|
41
|
+
|
|
32
42
|
height:
|
|
33
|
-
desc: Altura do container do board. Caso não seja passado um height, o
|
|
43
|
+
desc: Altura do container do board. Caso não seja passado um height, o cálculo é feito para ocupar a maior altura possível da página.
|
|
44
|
+
type: String
|
|
45
|
+
|
|
46
|
+
item-id-key:
|
|
47
|
+
desc: Identificador único do item a ser movido, sendo que será usado nas requisições realizadas pelo drop.
|
|
34
48
|
type: String
|
|
35
|
-
|
|
49
|
+
|
|
36
50
|
lazy-loading-fields-keys:
|
|
37
51
|
desc: Chaves dos campos que são lazy loading para o tratamento de merge das options.
|
|
38
52
|
type: Array
|
|
@@ -44,7 +58,7 @@ props:
|
|
|
44
58
|
default: 12
|
|
45
59
|
|
|
46
60
|
use-mark-raw:
|
|
47
|
-
desc: Define se os valores dos itens das colunas
|
|
61
|
+
desc: Define se os valores dos itens das colunas irão ser atribuídos utilizando o "markRaw", onde somente a primeira camada do model será reativa. (https://vuejs.org/api/reactivity-advanced.html#markraw)
|
|
48
62
|
type: Boolean
|
|
49
63
|
default: true
|
|
50
64
|
|
|
@@ -55,6 +69,30 @@ props:
|
|
|
55
69
|
examples: [v-model:results="resultsColumns"]
|
|
56
70
|
model: true
|
|
57
71
|
|
|
72
|
+
sortable-config:
|
|
73
|
+
desc: Configuração passada para a instância do SortableJS.
|
|
74
|
+
type: Object
|
|
75
|
+
default: "{ animation: 500, swapThreshold: 1, delay: 50, delayOnTouchOnly: true, emptyInsertThreshold: 0 }"
|
|
76
|
+
debugger: true
|
|
77
|
+
|
|
78
|
+
use-drag-and-drop-x:
|
|
79
|
+
desc: Controla se irá ter drag and drop no eixo X (entre colunas).
|
|
80
|
+
type: Boolean
|
|
81
|
+
|
|
82
|
+
use-drag-and-drop-y:
|
|
83
|
+
desc: Controla se irá ter drag and drop no eixo Y (mesma coluna, utilizado para ordenação de itens).
|
|
84
|
+
type: Boolean
|
|
85
|
+
|
|
86
|
+
update-position-url:
|
|
87
|
+
desc: URL usada para realizar o PATCH do drag and drop.
|
|
88
|
+
type: String
|
|
89
|
+
default: ''
|
|
90
|
+
|
|
91
|
+
update-position-params:
|
|
92
|
+
desc: Parâmetros customizados caso precise passar para a API de PATCH.
|
|
93
|
+
type: Object
|
|
94
|
+
default: {}
|
|
95
|
+
|
|
58
96
|
slots:
|
|
59
97
|
header-column:
|
|
60
98
|
desc: Slot para acessar o card do header de cada coluna.
|
|
@@ -63,9 +101,9 @@ slots:
|
|
|
63
101
|
desc: Fields referente à coluna atual do template.
|
|
64
102
|
type: Object
|
|
65
103
|
default: {}
|
|
66
|
-
|
|
104
|
+
|
|
67
105
|
header:
|
|
68
|
-
desc: Informações de cada item do header que foi fornecido através da prop "headers"
|
|
106
|
+
desc: Informações de cada item do header que foi fornecido através da prop "headers".
|
|
69
107
|
type: Object
|
|
70
108
|
default: {}
|
|
71
109
|
|
|
@@ -76,7 +114,7 @@ slots:
|
|
|
76
114
|
desc: Fields referente à coluna atual do template.
|
|
77
115
|
type: Object
|
|
78
116
|
default: {}
|
|
79
|
-
|
|
117
|
+
|
|
80
118
|
item:
|
|
81
119
|
desc: Informações de cada item da coluna que foi buscado através da API.
|
|
82
120
|
type: Object
|
|
@@ -98,14 +136,14 @@ events:
|
|
|
98
136
|
type: Object
|
|
99
137
|
|
|
100
138
|
header:
|
|
101
|
-
desc:
|
|
139
|
+
desc: Header da coluna atual.
|
|
102
140
|
type: Object
|
|
103
141
|
|
|
104
142
|
'@update:fetch-column-error -> function(error)':
|
|
105
143
|
desc: Dispara quando o "fetchColumn" cai em uma exceção.
|
|
106
144
|
params:
|
|
107
145
|
error:
|
|
108
|
-
desc: Retorna todos os dados "
|
|
146
|
+
desc: Retorna todos os dados "crus" respondidos na exceção do fetch.
|
|
109
147
|
type: Object
|
|
110
148
|
|
|
111
149
|
'@update:fetch-columns-success -> function()':
|
|
@@ -115,12 +153,15 @@ events:
|
|
|
115
153
|
desc: Dispara quando algum "fetchColumn" cai em uma exceção.
|
|
116
154
|
params:
|
|
117
155
|
error:
|
|
118
|
-
desc: Retorna todos os dados "
|
|
156
|
+
desc: Retorna todos os dados "crus" respondidos na exceção do fetch.
|
|
119
157
|
type: Object
|
|
120
158
|
|
|
159
|
+
'@update-success -> function()':
|
|
160
|
+
desc: Dispara quando o PATCH do drag and drop é com sucesso.
|
|
161
|
+
|
|
121
162
|
methods:
|
|
122
163
|
'fetchColumns: () => void':
|
|
123
164
|
desc: Busca todas colunas com base nos headers fornecidos.
|
|
124
165
|
|
|
125
166
|
'fetchColumn: (header) => void':
|
|
126
|
-
desc: Busca uma coluna
|
|
167
|
+
desc: Busca uma coluna específica com base no header fornecido.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
<div v-if="props.useSplit">
|
|
22
|
-
<qas-btn
|
|
22
|
+
<qas-btn v-bind="splittedButtonProps">
|
|
23
23
|
<q-menu v-if="hasDefaultSlot" anchor="bottom right" auto-close self="top right">
|
|
24
24
|
<div :class="classes.menuContent">
|
|
25
25
|
<slot />
|
|
@@ -103,6 +103,19 @@ const hasButtons = computed(() => !screen.isSmall || !props.useSplit)
|
|
|
103
103
|
const hasDefaultSlot = computed(() => !!slots.default)
|
|
104
104
|
const hasMenuOnLeftSide = computed(() => hasDefaultSlot.value && !props.useSplit && isSingleButton.value)
|
|
105
105
|
|
|
106
|
+
const splittedButtonProps = computed(() => {
|
|
107
|
+
const iconKey = screen.isSmall ? 'icon' : 'iconRight'
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
color: 'grey-10',
|
|
111
|
+
disable: props.disable,
|
|
112
|
+
[iconKey]: props.dropdownIcon,
|
|
113
|
+
variant: 'tertiary',
|
|
114
|
+
label: 'Opções',
|
|
115
|
+
useLabelOnSmallScreen: false
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
|
|
106
119
|
watch(() => props.menu, value => {
|
|
107
120
|
isMenuOpened.value = value
|
|
108
121
|
}, { immediate: true })
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
<div class="qas-card">
|
|
3
3
|
<qas-box class="rounded-borders-right" v-bind="boxProps">
|
|
4
4
|
<q-card class="column full-height overflow-hidden shadow-0">
|
|
5
|
-
<div class="items-center justify-between row">
|
|
6
|
-
<component :is="titleComponent" class="text-
|
|
5
|
+
<div class="full-width items-center justify-between no-wrap row">
|
|
6
|
+
<component :is="titleComponent" class="ellipsis text-h5 text-no-decoration" :class="titleClasses" :to="route">
|
|
7
7
|
<slot name="title">
|
|
8
8
|
{{ props.title }}
|
|
9
9
|
</slot>
|
|
10
10
|
</component>
|
|
11
11
|
|
|
12
|
-
<qas-actions-menu v-if="hasActions"
|
|
12
|
+
<qas-actions-menu v-if="hasActions" v-bind="formattedActionsMenuProps" />
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
<div class="q-my-sm qas-card__content">
|
|
@@ -66,8 +66,10 @@ const props = defineProps({
|
|
|
66
66
|
}
|
|
67
67
|
})
|
|
68
68
|
|
|
69
|
+
// consts
|
|
69
70
|
const isInsideBox = inject('isBox', false)
|
|
70
71
|
|
|
72
|
+
// computeds
|
|
71
73
|
const boxProps = computed(() => {
|
|
72
74
|
return {
|
|
73
75
|
outlined: isInsideBox,
|
|
@@ -89,7 +91,7 @@ const titleClasses = computed(() => {
|
|
|
89
91
|
}
|
|
90
92
|
})
|
|
91
93
|
|
|
92
|
-
const titleComponent = computed(() => hasRoute.value ? 'router-link' : '
|
|
94
|
+
const titleComponent = computed(() => hasRoute.value ? 'router-link' : 'h5')
|
|
93
95
|
|
|
94
96
|
const style = computed(() => {
|
|
95
97
|
if (!props.statusColor) return
|
|
@@ -106,6 +108,13 @@ const slots = useSlots()
|
|
|
106
108
|
const hasFooterSlot = computed(() => !!slots.footer)
|
|
107
109
|
|
|
108
110
|
const hasFooter = computed(() => hasFooterSlot.value || hasExpansion.value)
|
|
111
|
+
|
|
112
|
+
const formattedActionsMenuProps = computed(() => {
|
|
113
|
+
return {
|
|
114
|
+
...props.actionsMenuProps,
|
|
115
|
+
useLabel: false
|
|
116
|
+
}
|
|
117
|
+
})
|
|
109
118
|
</script>
|
|
110
119
|
|
|
111
120
|
<style lang="scss">
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
2
|
+
<component :is="parentComponent.is" v-bind="parentComponent.props">
|
|
3
|
+
<qas-header v-if="hasHeader" v-bind="headerProps">
|
|
4
|
+
<template #right>
|
|
5
|
+
<qas-filters v-bind="chartFiltersProps" />
|
|
6
|
+
</template>
|
|
7
|
+
</qas-header>
|
|
8
|
+
|
|
9
|
+
<div v-bind="parentComponentProps">
|
|
10
|
+
<component :is="chartComponent.is" v-if="showChart" v-bind="chartComponent.props" />
|
|
11
|
+
|
|
12
|
+
<div v-else-if="!isFetching">
|
|
13
|
+
<slot name="empty-results">
|
|
14
|
+
<qas-empty-result-text />
|
|
15
|
+
</slot>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<q-inner-loading :showing="isFetching">
|
|
19
|
+
<q-spinner color="grey" size="3em" />
|
|
20
|
+
</q-inner-loading>
|
|
15
21
|
</div>
|
|
16
|
-
|
|
17
|
-
<q-inner-loading :showing="isFetching">
|
|
18
|
-
<q-spinner color="grey" size="3em" />
|
|
19
|
-
</q-inner-loading>
|
|
20
|
-
</div>
|
|
22
|
+
</component>
|
|
21
23
|
</template>
|
|
22
24
|
|
|
23
25
|
<script>
|
|
@@ -69,6 +71,11 @@ export default {
|
|
|
69
71
|
type: Function
|
|
70
72
|
},
|
|
71
73
|
|
|
74
|
+
boxProps: {
|
|
75
|
+
default: () => ({}),
|
|
76
|
+
type: Object
|
|
77
|
+
},
|
|
78
|
+
|
|
72
79
|
colorsList: {
|
|
73
80
|
type: Array,
|
|
74
81
|
default: () => []
|
|
@@ -124,6 +131,11 @@ export default {
|
|
|
124
131
|
type: String
|
|
125
132
|
},
|
|
126
133
|
|
|
134
|
+
useBox: {
|
|
135
|
+
type: Boolean,
|
|
136
|
+
default: true
|
|
137
|
+
},
|
|
138
|
+
|
|
127
139
|
useFilterButton: {
|
|
128
140
|
type: Boolean
|
|
129
141
|
}
|
|
@@ -251,9 +263,11 @@ export default {
|
|
|
251
263
|
},
|
|
252
264
|
|
|
253
265
|
parentComponentProps () {
|
|
266
|
+
const hasMinHeight = this.isFetching || this.hasDataSets
|
|
267
|
+
|
|
254
268
|
return {
|
|
255
269
|
class: 'relative-position',
|
|
256
|
-
style: `min-height: ${this.height}`
|
|
270
|
+
style: `min-height: ${hasMinHeight ? this.height : 'auto'}`
|
|
257
271
|
}
|
|
258
272
|
},
|
|
259
273
|
|
|
@@ -308,6 +322,16 @@ export default {
|
|
|
308
322
|
label: this.title
|
|
309
323
|
}
|
|
310
324
|
}
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
parentComponent () {
|
|
328
|
+
return {
|
|
329
|
+
is: this.useBox ? 'qas-box' : 'div',
|
|
330
|
+
|
|
331
|
+
props: {
|
|
332
|
+
...(this.useBox && { ...this.boxProps })
|
|
333
|
+
}
|
|
334
|
+
}
|
|
311
335
|
}
|
|
312
336
|
},
|
|
313
337
|
|
|
@@ -326,7 +350,7 @@ export default {
|
|
|
326
350
|
this.handleFetchData()
|
|
327
351
|
},
|
|
328
352
|
|
|
329
|
-
|
|
353
|
+
beforeUnmount () {
|
|
330
354
|
this.unregisterChartJS()
|
|
331
355
|
},
|
|
332
356
|
|
|
@@ -10,6 +10,11 @@ props:
|
|
|
10
10
|
type: Function
|
|
11
11
|
examples: ['beforeFetch({ payload, resolve, done })']
|
|
12
12
|
|
|
13
|
+
box-props:
|
|
14
|
+
desc: Propriedades do "QasBox" que envolve o conteúdo.
|
|
15
|
+
default: {}
|
|
16
|
+
type: Object
|
|
17
|
+
|
|
13
18
|
colors-list:
|
|
14
19
|
desc: Lista de cores personalizadas para utilizar nos gráficos
|
|
15
20
|
default: []
|
|
@@ -65,6 +70,11 @@ props:
|
|
|
65
70
|
desc: Envia como parâmetro para a action "fetchList" do modulo correspondente a "entity".
|
|
66
71
|
type: String
|
|
67
72
|
|
|
73
|
+
use-box:
|
|
74
|
+
desc: Controla se o componente vai ter o QasBox englobando ou não.
|
|
75
|
+
default: true
|
|
76
|
+
type: Boolean
|
|
77
|
+
|
|
68
78
|
use-filter-button:
|
|
69
79
|
desc: Controla se o componente vai usar ou não o componente "QasFilters".
|
|
70
80
|
type: Boolean
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<!-- Single -->
|
|
4
|
-
<q-checkbox v-if="isSingle" v-model="model" v-bind="
|
|
4
|
+
<q-checkbox v-if="isSingle" v-model="model" v-bind="singleAttributes" dense>
|
|
5
5
|
<slot />
|
|
6
6
|
</q-checkbox>
|
|
7
7
|
|
|
8
8
|
<!-- Group -->
|
|
9
|
-
<div v-else
|
|
10
|
-
<div v-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
<div v-else>
|
|
10
|
+
<div v-if="hasCheckboxLabel" class="q-mb-sm text-body1">
|
|
11
|
+
{{ props.label }}
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div :class="classes">
|
|
15
|
+
<div v-for="(option, index) in props.options" :key="index">
|
|
16
|
+
<!-- Com children -->
|
|
17
|
+
<q-checkbox v-if="hasChildren(option)" :class="getCheckboxClass(option)" dense :label="option.label" :model-value="getModelValue(index)" @update:model-value="updateCheckbox($event, option, index)" />
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
<!-- Com children -->
|
|
20
|
+
<q-option-group v-if="hasChildren(option)" class="q-ml-xs q-mt-xs" dense :inline="props.inline" :model-value="props.modelValue" :options="option.children" type="checkbox" @update:model-value="updateChildren($event, option, index)" />
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
<!-- Sem children -->
|
|
23
|
+
<q-option-group v-else v-model="model" v-bind="attrs" dense :options="[option]" type="checkbox" />
|
|
24
|
+
</div>
|
|
19
25
|
</div>
|
|
20
26
|
</div>
|
|
21
27
|
</div>
|
|
@@ -30,6 +36,11 @@ defineOptions({
|
|
|
30
36
|
})
|
|
31
37
|
|
|
32
38
|
const props = defineProps({
|
|
39
|
+
label: {
|
|
40
|
+
default: '',
|
|
41
|
+
type: String
|
|
42
|
+
},
|
|
43
|
+
|
|
33
44
|
options: {
|
|
34
45
|
default: () => [],
|
|
35
46
|
type: Array
|
|
@@ -59,6 +70,8 @@ onMounted(handleParent)
|
|
|
59
70
|
// computed
|
|
60
71
|
const classes = computed(() => props.inline && 'flex q-gutter-x-sm')
|
|
61
72
|
|
|
73
|
+
const hasCheckboxLabel = computed(() => !!props.label)
|
|
74
|
+
|
|
62
75
|
const model = computed({
|
|
63
76
|
get () {
|
|
64
77
|
return props.modelValue
|
|
@@ -71,6 +84,14 @@ const model = computed({
|
|
|
71
84
|
|
|
72
85
|
const isSingle = computed(() => !props.options.length)
|
|
73
86
|
|
|
87
|
+
const singleAttributes = computed(() => {
|
|
88
|
+
return {
|
|
89
|
+
...attrs,
|
|
90
|
+
|
|
91
|
+
label: props.label
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
|
|
74
95
|
// watch
|
|
75
96
|
watch(() => props.options, handleParent)
|
|
76
97
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<span>
|
|
3
|
-
<slot>{{ props.text }}</slot>
|
|
3
|
+
<slot v-if="props.useText">{{ props.text }}</slot>
|
|
4
4
|
|
|
5
5
|
<qas-btn class="q-ml-xs" color="primary" :icon="props.icon" :loading="isLoading" variant="tertiary" @click.stop.prevent="copy">
|
|
6
6
|
<q-tooltip>Copiar</q-tooltip>
|
|
@@ -23,13 +23,23 @@ const props = defineProps({
|
|
|
23
23
|
text: {
|
|
24
24
|
required: true,
|
|
25
25
|
type: String
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
useText: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: true
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
rawText: {
|
|
34
|
+
default: '',
|
|
35
|
+
type: String
|
|
26
36
|
}
|
|
27
37
|
})
|
|
28
38
|
|
|
29
39
|
const isLoading = ref(false)
|
|
30
40
|
|
|
31
41
|
function copy () {
|
|
32
|
-
copyToClipboard(props.text, value => {
|
|
42
|
+
copyToClipboard(props.rawText || props.text, value => {
|
|
33
43
|
isLoading.value = value
|
|
34
44
|
})
|
|
35
45
|
}
|
|
@@ -13,3 +13,11 @@ props:
|
|
|
13
13
|
desc: Texto a ser copiado.
|
|
14
14
|
type: String
|
|
15
15
|
|
|
16
|
+
use-text:
|
|
17
|
+
desc: Controla se o texto será exibo ao lado do botão ou não.
|
|
18
|
+
type: Boolean
|
|
19
|
+
default: true
|
|
20
|
+
|
|
21
|
+
raw-text:
|
|
22
|
+
desc: Caso o texto a ser copiado precise ser diferente do texto a ser exibido, utilize esta propriedade.
|
|
23
|
+
type: String
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<qas-input ref="input" v-bind="attributes" v-model="currentValue" inputmode="numeric" :unmasked-value="false" @blur="validateDateTimeOnBlur" @focus="resetError" @update:model-value="updateModelValue">
|
|
3
3
|
<template #append>
|
|
4
|
-
<qas-btn v-if="!props.useTimeOnly" color="grey-10" :disable="attrs.readonly" icon="
|
|
4
|
+
<qas-btn v-if="!props.useTimeOnly" color="grey-10" :disable="attrs.readonly" icon="sym_r_calendar_today" variant="tertiary">
|
|
5
5
|
<q-popup-proxy ref="dateProxy" transition-hide="scale" transition-show="scale" v-bind="props.datePopupProxyProps">
|
|
6
6
|
<qas-date v-model="currentValue" v-bind="defaultDateProps" :mask="maskDate" width="290px" @update:model-value="updateModelValue" />
|
|
7
7
|
</q-popup-proxy>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<q-dialog ref="dialogRef" class="qas-dialog" :class="classes" data-cy="dialog" v-bind="dialogProps" :persistent="props.persistent" @update:model-value="updateModelValue">
|
|
3
|
-
<div class="bg-white q-pa-
|
|
4
|
-
<header v-if="hasHeader" class="q-mb-
|
|
3
|
+
<div class="bg-white q-pa-md" :style="style">
|
|
4
|
+
<header v-if="hasHeader" class="q-mb-md">
|
|
5
5
|
<slot name="header">
|
|
6
6
|
<div class="items-center justify-between row">
|
|
7
|
-
<
|
|
7
|
+
<qas-label data-cy="dialog-title" :label="props.card.title" margin="none" />
|
|
8
8
|
|
|
9
9
|
<qas-btn v-if="isInfoDialog" v-close-popup color="grey-10" data-cy="dialog-close-btn" icon="sym_r_close" variant="tertiary" />
|
|
10
10
|
</div>
|