@bildvitta/quasar-ui-asteroid 3.15.0-beta.11 → 3.15.0-beta.13
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-menu/QasActionsMenu.vue +19 -1
- package/src/components/actions-menu/composables/use-options-actions.js +0 -1
- package/src/components/form-generator/QasFormGenerator.vue +5 -1
- package/src/components/form-generator/QasFormGenerator.yml +4 -1
- package/src/components/grid-generator/QasGridGenerator.vue +68 -4
- package/src/components/grid-generator/QasGridGenerator.yml +13 -1
- package/src/composables/private/use-generator.js +22 -1
package/package.json
CHANGED
|
@@ -139,9 +139,27 @@ const primaryKey = computed(() => {
|
|
|
139
139
|
return props.splitName in fullList.value ? props.splitName : Object.keys(fullList.value)?.[0]
|
|
140
140
|
})
|
|
141
141
|
|
|
142
|
+
const defaultButtonPropsList = computed(() => {
|
|
143
|
+
const defaultButtonPropsList = {
|
|
144
|
+
useHoverOnWhiteColor: true,
|
|
145
|
+
useLabelOnSmallScreen: false
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const normalizedButtonPropsList = {}
|
|
149
|
+
|
|
150
|
+
for (const key in formattedList.value.buttonsList) {
|
|
151
|
+
normalizedButtonPropsList[key] = {
|
|
152
|
+
...defaultButtonPropsList,
|
|
153
|
+
...formattedList.value.buttonsList[key]
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return normalizedButtonPropsList
|
|
158
|
+
})
|
|
159
|
+
|
|
142
160
|
const btnDropdownProps = computed(() => {
|
|
143
161
|
return {
|
|
144
|
-
buttonsPropsList:
|
|
162
|
+
buttonsPropsList: defaultButtonPropsList.value,
|
|
145
163
|
disable: props.disable,
|
|
146
164
|
useSplit: hasSplit.value
|
|
147
165
|
}
|
|
@@ -15,7 +15,6 @@ export default function useOptionsActions ({ props, color }) {
|
|
|
15
15
|
options: {
|
|
16
16
|
color,
|
|
17
17
|
iconRight: 'sym_r_more_vert',
|
|
18
|
-
useLabelOnSmallScreen: false,
|
|
19
18
|
...props.buttonProps,
|
|
20
19
|
label: getLabel({ useLabel: props.useLabel, label: 'Opções' }) // label não pode ser sobrescrita.
|
|
21
20
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div :class="fieldsetClasses">
|
|
3
3
|
<div v-for="(fieldsetItem, fieldsetItemKey) in normalizedFields" :key="fieldsetItemKey" class="full-width">
|
|
4
4
|
<slot v-if="fieldsetItem.label" :name="`legend-${fieldsetItemKey}`">
|
|
5
|
-
<qas-label :label="fieldsetItem.label" />
|
|
5
|
+
<qas-label :label="fieldsetItem.label" :margin="getLabelMargin(fieldsetItem)" />
|
|
6
6
|
<div v-if="fieldsetItem.description" class="q-mb-md text-body1 text-grey-8">{{ fieldsetItem.description }}</div>
|
|
7
7
|
</slot>
|
|
8
8
|
|
|
@@ -180,4 +180,8 @@ function useFieldset ({ props }) {
|
|
|
180
180
|
hasFieldset
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
+
|
|
184
|
+
function getLabelMargin (fieldsetItem) {
|
|
185
|
+
return fieldsetItem.description ? 'sm' : 'md'
|
|
186
|
+
}
|
|
183
187
|
</script>
|
|
@@ -8,7 +8,7 @@ props:
|
|
|
8
8
|
desc: Colunas do grid de cada campo.
|
|
9
9
|
default: col-6
|
|
10
10
|
type: [Array, String, Object]
|
|
11
|
-
examples: ["[{ sm: 6, md: 12 }]", "{ name: { sm: 6, md: 12 } }", "12"]
|
|
11
|
+
examples: ["[{ sm: 6, md: 12 }]", "{ name: { sm: 6, md: 12 } }", "12", "{ sm: 6, md: 12 }"]
|
|
12
12
|
|
|
13
13
|
disable:
|
|
14
14
|
desc: Deixa os campos desabilitados enviando a prop "disable" para cada campo.
|
|
@@ -63,6 +63,9 @@ props:
|
|
|
63
63
|
default: []
|
|
64
64
|
type: Array
|
|
65
65
|
|
|
66
|
+
use-common-columns:
|
|
67
|
+
desc: Utilizado quando passar a estrutura da prop "columns" sendo um objeto onde seus breakpoints serão replicados para todos fields.
|
|
68
|
+
|
|
66
69
|
slots:
|
|
67
70
|
'field-[nome-da-chave]':
|
|
68
71
|
desc: Acessa o slot de um campo especifico.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div :class="classes">
|
|
3
|
-
<div v-for="(field, key) in fieldsByResult" :key="key" :class="
|
|
3
|
+
<div v-for="(field, key) in fieldsByResult" :key="key" :class="getContainerClass({ key })">
|
|
4
4
|
<slot :field="field" :name="`field-${field.name}`">
|
|
5
5
|
<slot :field="field" name="header">
|
|
6
|
-
<header :class="
|
|
6
|
+
<header :class="headerClass" :data-cy="`grid-generator-${field.name}-field`" :title="getTitle(field, 'label')">
|
|
7
7
|
{{ field.label }}
|
|
8
8
|
</header>
|
|
9
9
|
</slot>
|
|
10
10
|
|
|
11
11
|
<slot :field="field" name="content">
|
|
12
|
-
<div :class="
|
|
12
|
+
<div :class="contentClass" :data-cy="`grid-generator-${field.name}-result`" :title="getTitle(field, 'formattedResult')">
|
|
13
13
|
{{ field.formattedResult }}
|
|
14
14
|
</div>
|
|
15
15
|
</slot>
|
|
@@ -21,12 +21,15 @@
|
|
|
21
21
|
<script setup>
|
|
22
22
|
import useGenerator, { baseProps } from '../../composables/private/use-generator'
|
|
23
23
|
import { isEmpty, humanize } from '../../helpers'
|
|
24
|
+
import { useScreen } from '../../composables'
|
|
24
25
|
import { isObject } from 'lodash-es'
|
|
25
26
|
import { ref, computed, watch } from 'vue'
|
|
26
27
|
|
|
27
28
|
// define component name
|
|
28
29
|
defineOptions({ name: 'QasGridGenerator' })
|
|
29
30
|
|
|
31
|
+
const screen = useScreen()
|
|
32
|
+
|
|
30
33
|
// props
|
|
31
34
|
const props = defineProps({
|
|
32
35
|
...baseProps,
|
|
@@ -54,16 +57,65 @@ const props = defineProps({
|
|
|
54
57
|
useEmptyResult: {
|
|
55
58
|
default: true,
|
|
56
59
|
type: Boolean
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
useEllipsis: {
|
|
63
|
+
default: true,
|
|
64
|
+
type: Boolean
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
useInline: {
|
|
68
|
+
type: Boolean
|
|
57
69
|
}
|
|
58
70
|
})
|
|
59
71
|
|
|
60
72
|
// composables
|
|
61
|
-
const { classes, getFieldClass } = useGenerator({ props })
|
|
73
|
+
const { classes: useGeneratorClasses, getFieldClass } = useGenerator({ props })
|
|
62
74
|
|
|
63
75
|
// computed
|
|
64
76
|
const hasResult = computed(() => Object.keys(props.result).length)
|
|
65
77
|
const hasFields = computed(() => Object.keys(props.fields).length)
|
|
66
78
|
|
|
79
|
+
const contentClass = computed(() => {
|
|
80
|
+
if (!props.useEllipsis || (screen.isSmall && props.useEllipsis)) return props.contentClass
|
|
81
|
+
|
|
82
|
+
if (Array.isArray(props.contentClass)) {
|
|
83
|
+
return [...props.contentClass, 'ellipsis']
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (typeof props.contentClass === 'string') {
|
|
87
|
+
return `${props.contentClass} ellipsis`
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
...props.contentClass,
|
|
92
|
+
ellipsis: true
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
const headerClass = computed(() => {
|
|
97
|
+
if (!props.useEllipsis || (screen.isSmall && props.useEllipsis)) return props.headerClass
|
|
98
|
+
|
|
99
|
+
if (Array.isArray(props.headerClass)) {
|
|
100
|
+
return [...props.headerClass, 'ellipsis']
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (typeof props.headerClass === 'string') {
|
|
104
|
+
return `${props.headerClass} ellipsis`
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
...props.headerClass,
|
|
109
|
+
ellipsis: true
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
const classes = computed(() => {
|
|
114
|
+
if (props.useInline) return 'row q-col-gutter-md'
|
|
115
|
+
|
|
116
|
+
return useGeneratorClasses.value
|
|
117
|
+
})
|
|
118
|
+
|
|
67
119
|
const fieldsByResult = ref({})
|
|
68
120
|
|
|
69
121
|
/**
|
|
@@ -122,4 +174,16 @@ function getFieldsByResult () {
|
|
|
122
174
|
function setFieldsByResult () {
|
|
123
175
|
fieldsByResult.value = getFieldsByResult()
|
|
124
176
|
}
|
|
177
|
+
|
|
178
|
+
function getContainerClass ({ key }) {
|
|
179
|
+
if (props.useInline) {
|
|
180
|
+
return 'row justify-between col-12'
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return getFieldClass({ index: key, isGridGenerator: true })
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function getTitle (field, key) {
|
|
187
|
+
return props.useEllipsis ? field[key] : ''
|
|
188
|
+
}
|
|
125
189
|
</script>
|
|
@@ -8,7 +8,7 @@ props:
|
|
|
8
8
|
desc: Colunas do grid de cada campo.
|
|
9
9
|
default: col-6
|
|
10
10
|
type: [Array, String, Object]
|
|
11
|
-
examples: ["{ name: { sm: 6, md: 12 } }", "[{ sm: 6, md: 12 }]"]
|
|
11
|
+
examples: ["{ name: { sm: 6, md: 12 } }", "[{ sm: 6, md: 12 }]", "{ sm: 6, md: 12 }"]
|
|
12
12
|
|
|
13
13
|
content-class:
|
|
14
14
|
desc: Classe de cada "div" pai referente ao resultado.
|
|
@@ -48,6 +48,18 @@ props:
|
|
|
48
48
|
default: true
|
|
49
49
|
type: Boolean
|
|
50
50
|
|
|
51
|
+
use-ellipsis:
|
|
52
|
+
desc: Adiciona a classe "ellipsis" para o elemento do conteúdo.
|
|
53
|
+
default: true
|
|
54
|
+
type: Boolean
|
|
55
|
+
|
|
56
|
+
use-inline:
|
|
57
|
+
desc: Adiciona a disposição dos campos por linha, ou seja, header e content ocupando a linha toda.
|
|
58
|
+
type: Boolean
|
|
59
|
+
|
|
60
|
+
use-common-columns:
|
|
61
|
+
desc: Usado quando precisa passar a prop "columns" como objeto sendo que será o valor comum para todos fields
|
|
62
|
+
|
|
51
63
|
slots:
|
|
52
64
|
content:
|
|
53
65
|
desc: Slot para o conteúdo (content).
|
|
@@ -19,6 +19,10 @@ export const baseProps = {
|
|
|
19
19
|
default: Spacing.Lg,
|
|
20
20
|
type: [String, Boolean],
|
|
21
21
|
validator: gutterValidator
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
useCommonColumns: {
|
|
25
|
+
type: Boolean
|
|
22
26
|
}
|
|
23
27
|
}
|
|
24
28
|
|
|
@@ -86,7 +90,11 @@ export default function ({ props = {} }) {
|
|
|
86
90
|
for (const key in formattedColumns) {
|
|
87
91
|
const value = formattedColumns[key]
|
|
88
92
|
|
|
89
|
-
|
|
93
|
+
if (IRREGULAR_CLASSES.includes(value)) {
|
|
94
|
+
classes.push(value === 'col' ? profiles[key] : value)
|
|
95
|
+
} else {
|
|
96
|
+
classes.push(`${profiles[key]}-${value}`)
|
|
97
|
+
}
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
return [...classes, renamedClasses]
|
|
@@ -103,10 +111,23 @@ export default function ({ props = {} }) {
|
|
|
103
111
|
* @private
|
|
104
112
|
*/
|
|
105
113
|
function _handleColumnsByField ({ index, isGridGenerator }) {
|
|
114
|
+
/*
|
|
115
|
+
* Quando é passado o columns como um único objeto que será replicado para todos fields.
|
|
116
|
+
*/
|
|
117
|
+
if (props.useCommonColumns && Object.keys(props.columns).length) {
|
|
118
|
+
return _getBreakpoint(props.columns)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/*
|
|
122
|
+
* Quando não é passado columns, retornará o default.
|
|
123
|
+
*/
|
|
106
124
|
if (!props.columns[index]) {
|
|
107
125
|
return _getDefaultColumnClass(isGridGenerator)
|
|
108
126
|
}
|
|
109
127
|
|
|
128
|
+
/*
|
|
129
|
+
* Quando é passado um objeto por field.
|
|
130
|
+
*/
|
|
110
131
|
return _getBreakpoint(props.columns[index])
|
|
111
132
|
}
|
|
112
133
|
|