- migliorata grafica prodotti

This commit is contained in:
Surya Paolo
2023-12-31 14:34:11 +01:00
parent f88ee3f485
commit 29e18ca293
6 changed files with 429 additions and 306 deletions

View File

@@ -12,20 +12,25 @@
.prod_price { .prod_price {
font-size: 1.25rem; font-size: 1.25rem;
@media (max-width: 718px) {
font-size: 1rem;
}
} }
.prod_disp { .prod_disp {
font-size: 1.2rem; font-size: 1.2rem;
font-size: 1.2rem; @media (max-width: 718px) {
font-size: 1rem;
}
} }
.prod_preorder{ .prod_preorder{
font-size: 1.2rem; font-size: 1.2rem;
} @media (max-width: 718px) {
font-size: 1rem;
.prod_preorder{ }
font-size: 1.2rem;
} }
.prod_qtywarn { .prod_qtywarn {
@@ -62,3 +67,33 @@
.subtit_prod { .subtit_prod {
font-style: italic; font-style: italic;
} }
.icone_prod{
font-size: 1.25rem;
@media (max-width: 718px) {
font-size: 1rem;
}
}
.thumbnail {
max-width: 100%;
max-height: 100%;
}
.fullscreen-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: black;
display: flex;
align-items: center;
justify-content: center;
}
.fullscreen-image {
max-width: 100%;
max-height: 100%;
}

View File

@@ -53,6 +53,8 @@ export default defineComponent({
const site = ref(globalStore.site) const site = ref(globalStore.site)
const fullscreenImage = ref(<any>null)
let myorder = reactive(<IOrder>{ let myorder = reactive(<IOrder>{
idapp: process.env.APP_ID, idapp: process.env.APP_ID,
quantity: 0, quantity: 0,
@@ -77,6 +79,12 @@ export default defineComponent({
const endload = ref(false) const endload = ref(false)
const myproduct = ref(<IProduct>{}) const myproduct = ref(<IProduct>{})
const isFullScreen = ref(false)
const imageSrc = ref('URL_DEL_TUO_FILE_IMMAGINE')
const startX = ref(0)
const startY = ref(0)
const scale = ref(1)
const valoriopt = computed(() => (item: any, addall: boolean, addnone: boolean) => { const valoriopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
// console.log('valoriopt', item.table) // console.log('valoriopt', item.table)
return globalStore.getTableJoinByName(item.table, addall, addnone, item.filter) return globalStore.getTableJoinByName(item.table, addall, addnone, item.filter)
@@ -363,6 +371,41 @@ export default defineComponent({
return 0 return 0
} }
function toggleFullScreen() {
isFullScreen.value = !isFullScreen.value;
scale.value = 1;
}
function onTouchStart(e: any) {
startX.value = e.touches[0].pageX;
startY.value = e.touches[0].pageY;
}
function onTouchMove(e: any) {
const deltaX = e.touches[0].pageX - startX.value;
const deltaY = e.touches[0].pageY - startY.value;
// Calcola la distanza percorsa
const distance = Math.sqrt(deltaX ** 2 + deltaY ** 2);
// Imposta il fattore di scala in base alla distanza percorsa
scale.value = Math.min(Math.max(1, scale.value + distance / 100), 3);
// Salva le nuove coordinate di partenza
startX.value = e.touches[0].pageX;
startY.value = e.touches[0].pageY;
// Applica la trasformazione
if (fullscreenImage.value)
fullscreenImage.value.style.transform = `scale(${scale.value})`;
}
function onTouchEnd() {
// Ripristina la trasformazione quando l'utente solleva il dito
if (fullscreenImage.value)
fullscreenImage.value.fullscreenImage.style.transform = 'scale(1)';
}
onMounted(mounted) onMounted(mounted)
onBeforeUnmount(beforeDestroy) onBeforeUnmount(beforeDestroy)
@@ -402,6 +445,12 @@ export default defineComponent({
labelDataArrivoMerce, labelDataArrivoMerce,
getpercqtaraggiunta, getpercqtaraggiunta,
isOrdGas, isOrdGas,
isFullScreen,
toggleFullScreen,
onTouchStart,
onTouchMove,
onTouchEnd,
} }
} }
}) })

View File

@@ -12,93 +12,301 @@
v-if="!!myproduct && endload && !!myproduct.productInfo" v-if="!!myproduct && endload && !!myproduct.productInfo"
bordered bordered
> >
<q-img <q-card-section horizontal>
:src="`` + myproduct.productInfo.img" <q-img
:alt="myproduct.productInfo.name" :src="`` + myproduct.productInfo.img"
:class="getclimgproduct()" :alt="myproduct.productInfo.name"
></q-img> class="col-7 cursor-pointer"
@click="toggleFullScreen"
></q-img>
<q-btn
v-if="!complete"
fab
color="primary"
icon="fas fa-info"
class="absolute semi-transparent"
style="top: 0; right: 12px; transform: translateY(-90%)"
:to="`/product/` + myproduct._id + '/' + cosa"
/>
<q-list> <q-card-section>
<q-item> <q-list>
<q-btn <q-item>
v-if="!complete" <q-item-section avatar>
fab <q-icon
color="primary" color="moneygreen"
icon="fas fa-info" name="fas fa-euro-sign"
class="absolute semi-transparent" class="icone_prod"
style="top: 0; right: 12px; transform: translateY(-90%)" />
:to="`/product/` + myproduct._id + '/' + cosa" </q-item-section>
/>
<div class="row items-center centeritems"> <q-item-section>
<div class="text-h7 boldhigh"> <q-item-label>
{{ myproduct.productInfo.name }} <span class="prod_price" v-if="!!myproduct.price">{{
</div> myproduct.price ? myproduct.price.toFixed(2) : 0
<div class="product_code"> }}</span>
&nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }} <span v-if="!!myproduct.after_price">{{
</div> myproduct.after_price
}}</span>
</q-item-label>
<q-item-label
v-if="
myproduct.scontisticas && myproduct.scontisticas.length > 0
"
>
<div
class="prod_sconti"
v-for="(sconti, index) of myproduct.scontisticas"
:key="index"
>
{{ sconti.description }}
</div>
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar v-if="myproduct.productInfo.weight">
<q-icon name="fas fa-balance-scale" class="icone_prod" />
</q-item-section>
<q-item-section v-if="myproduct.productInfo.weight">
<q-item-label>
<span
class="text-black q-ml-xs text-h8"
v-if="myproduct.productInfo.unit"
>
{{ myproduct.productInfo.weight }}
{{
tools.getUnitsMeasure(myproduct.productInfo.unit, true)
}}</span
>
</q-item-label>
</q-item-section>
</q-item>
<q-item
v-if="
cosa === shared_consts.PROD.BOTTEGA ||
(cosa === shared_consts.PROD.GAS &&
products.getQtyAvailable(myproduct) > 0)
"
:clickable="tools.isManager()"
@click="
tools.isManager() &&
myproduct.QuantitaOrdinateInAttesa &&
myproduct.QuantitaOrdinateInAttesa > 0
? visuListDisponibili()
: null
"
>
<q-item-section avatar>
<q-icon color="green" name="fas fa-store" class="icone_prod" />
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod">
{{ t('ecomm.available') }}
</q-item-label>
<q-item-label>
<span class="prod_disp">
{{ products.getQtyAvailable(myproduct) }}
</span>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() &&
!!myproduct.QuantitaOrdinateInAttesa
"
>
{{
t('ecomm.qta_in_attesa', {
qty: myproduct.QuantitaOrdinateInAttesa,
})
}}
</div>
</div>
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-section avatar>
<q-icon
name="fas fa-store"
style="padding-right: 16px !important"
/>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-label> {{ t('ecomm.bloccati') }}: </q-item-label>
<q-item-label>
<span class="text-black q-ml-xs text-h8">
{{ products.getQtyBloccataAvailable(myproduct) }}</span
>
</q-item-label>
</q-item-section>
</q-item-section>
</q-item>
</q-list>
</q-card-section>
</q-card-section>
<q-card-section>
<div class="column items-center centeritems">
<div class="text-h7 boldhigh">
{{ myproduct.productInfo.name }}
</div> </div>
</q-item> <div class="product_code">
<q-item v-if="complete && myproduct.productInfo.description"> &nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }}
<div class="row items-center">
<div class="text-title text-grey-9">
<span
class="text-grey-7"
v-html="myproduct.productInfo.description"
></span>
</div>
</div> </div>
</q-item> </div>
</q-card-section>
<q-card-section v-if="complete && myproduct.productInfo.description">
<div class="row items-center">
<div class="text-title text-grey-9">
<span
class="text-grey-7"
v-html="myproduct.productInfo.description"
></span>
</div>
</div>
</q-card-section>
<q-card-section v-if="complete || getnumstore() > 1">
<div class="text-blue text-title row items-center q-mr-md centeritems">
<q-icon size="sm" name="fas fa-people-carry" class="q-mr-sm" />
{{ t('products.ritiro_presso') }}:
</div>
<div
class="text-green-6 text-title row items-center q-my-sm centeritems"
>
<div v-if="getnumstore() > 1">
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="storeSelected"
:options="getStorehouses()"
:label="t('products.magazzino') + `:`"
emit-value
map-options
>
</q-select>
</div>
<div v-else>
<span class="text-title text-center">{{
getSingleStorehouse()
}}</span>
</div>
</div>
</q-card-section>
<q-card-section
v-if="complete && myproduct.producer && myproduct.producer.city"
>
<div>
<div class="text-grey text-title row items-center q-mt-sm">
<q-icon name="map" class="q-mr-xs" />
{{ t('products.origine') }}:
<span class="text-blue q-ml-xs text-h8">
{{ myproduct.producer.city }} ({{
myproduct.producer.region
}})</span
>
</div>
</div>
<div
v-if="complete && myproduct.producer && myproduct.producer.name"
class="text-grey text-title row items-center"
>
<q-icon name="place" class="q-mr-xs" />
{{ t('products.producer') }}:
<span class="text-black q-ml-xs text-h8">
{{ myproduct.producer.name }}</span
>
</div>
</q-card-section>
<q-card-section v-if="myproduct.note">
<q-item> <q-item>
<q-item-section avatar> <q-item-section avatar>
<q-icon color="moneygreen" name="fas fa-euro-sign" /> <q-icon color="black" name="fas fa-book" />
</q-item-section>
<q-item-section>
<q-item-label class="">
<span v-html="myproduct.note"></span>
</q-item-label>
</q-item-section>
</q-item>
</q-card-section>
<q-card-section v-if="isOrdGas()">
<q-item
v-if="
products.getQtyBookableAvailable(myproduct) > 0 ||
myproduct.maxbookableGASQty > 0
"
:clickable="tools.isManager()"
@click="
tools.isManager() &&
myproduct.QuantitaPrenotateInAttesa &&
myproduct.QuantitaPrenotateInAttesa > 0
? visuListBookable()
: null
"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-edit" />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label class="subtit_prod"> <q-item-label class="subtit_prod">
{{ t('products.price') }} {{ t('ecomm.preorders') }}
</q-item-label> </q-item-label>
<q-item-label> <q-item-label>
<span class="prod_price" v-if="!!myproduct.price">{{ <span class="prod_preorder">
myproduct.price ? myproduct.price.toFixed(2) : 0 {{ products.getQtyBookableAvailable(myproduct) }}
}}</span> </span>
<span v-if="!!myproduct.after_price">{{ <div class="prod_qtywarn">
myproduct.after_price <div
}}</span> v-if="
</q-item-label> tools.isManager() && !!myproduct.QuantitaPrenotateInAttesa
<q-item-label "
v-if="myproduct.scontisticas && myproduct.scontisticas.length > 0" >
> {{
<div t('ecomm.qta_prenotate_in_attesa', {
class="prod_sconti" qty: myproduct.QuantitaPrenotateInAttesa,
v-for="(sconti, index) of myproduct.scontisticas" })
:key="index" }}
> </div>
{{ sconti.description }}
</div> </div>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section avatar v-if="myproduct.productInfo.weight"> <q-item-section
<q-icon v-if="
name="fas fa-balance-scale" tools.isManager() &&
style="padding-right: 16px !important" products.getQtyBloccataBookableAvailable(myproduct) > 0
/> "
</q-item-section> >
<q-item-section v-if="myproduct.productInfo.weight"> <q-item-section avatar>
<q-item-label> <q-icon
{{ t('products.weight') }} name="fas fa-store"
</q-item-label> style="padding-right: 16px !important"
<q-item-label> />
<span </q-item-section>
class="text-black q-ml-xs text-h8" <q-item-section>
v-if="myproduct.productInfo.unit" <q-item-label class="subtit_prod">
> {{ t('ecomm.bloccati') }}:
{{ myproduct.productInfo.weight }} </q-item-label>
{{ <q-item-label>
tools.getUnitsMeasure(myproduct.productInfo.unit, true) <span class="text-black q-ml-xs text-h8">
}}</span {{
> products.getQtyBloccataBookableAvailable(myproduct)
</q-item-label> }}</span
>
</q-item-label>
</q-item-section>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item v-if="myproduct.gasordines && myproduct.gasordines.length >= 1"> <q-item v-if="myproduct.gasordines && myproduct.gasordines.length >= 1">
@@ -136,22 +344,13 @@
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item v-if="myproduct.note">
<q-item-section avatar>
<q-icon color="black" name="fas fa-book" />
</q-item-section>
<q-item
v-if="
tools.isManager() && products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-section> <q-item-section>
<q-item-label class="">
<span v-html="myproduct.note"></span>
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-section avatar> <q-item-section avatar>
<q-icon <q-icon
name="fas fa-store" name="fas fa-store"
@@ -292,202 +491,12 @@
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</q-list> </q-card-section>
<div v-if="true">
<div v-if="complete && myproduct.producer && myproduct.producer.city">
<div class="text-grey text-title row items-center q-mt-sm">
<q-icon name="map" class="q-mr-xs" />
{{ t('products.origine') }}:
<span class="text-blue q-ml-xs text-h8">
{{ myproduct.producer.city }} ({{
myproduct.producer.region
}})</span
>
</div>
</div>
<div
v-if="complete && myproduct.producer && myproduct.producer.name"
class="text-grey text-title row items-center"
>
<q-icon name="place" class="q-mr-xs" />
{{ t('products.producer') }}:
<span class="text-black q-ml-xs text-h8">
{{ myproduct.producer.name }}</span
>
</div>
</div>
<!--<q-rating v-model="myproduct.stars" :max="5" size="32px" readonly/>--> <q-separator />
<div> <q-card-section>
<q-list> <div class="row justify-evenly">
<q-item
v-if="
cosa === shared_consts.PROD.BOTTEGA ||
(cosa === shared_consts.PROD.GAS &&
products.getQtyAvailable(myproduct) > 0)
"
:clickable="tools.isManager()"
@click="
tools.isManager() &&
myproduct.QuantitaOrdinateInAttesa &&
myproduct.QuantitaOrdinateInAttesa > 0
? visuListDisponibili()
: null
"
>
<q-item-section avatar>
<q-icon color="green" name="fas fa-store" />
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod">
{{ t('ecomm.available') }}
</q-item-label>
<q-item-label>
<span class="prod_disp">
{{ products.getQtyAvailable(myproduct) }}
</span>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() && !!myproduct.QuantitaOrdinateInAttesa
"
>
{{
t('ecomm.qta_in_attesa', {
qty: myproduct.QuantitaOrdinateInAttesa,
})
}}
</div>
</div>
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-section avatar>
<q-icon
name="fas fa-store"
style="padding-right: 16px !important"
/>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-label> {{ t('ecomm.bloccati') }}: </q-item-label>
<q-item-label>
<span class="text-black q-ml-xs text-h8">
{{ products.getQtyBloccataAvailable(myproduct) }}</span
>
</q-item-label>
</q-item-section>
</q-item-section>
</q-item>
<q-item
v-if="
products.getQtyBookableAvailable(myproduct) > 0 ||
myproduct.maxbookableGASQty > 0
"
:clickable="tools.isManager()"
@click="
tools.isManager() &&
myproduct.QuantitaPrenotateInAttesa &&
myproduct.QuantitaPrenotateInAttesa > 0
? visuListBookable()
: null
"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-edit" />
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod">
{{ t('ecomm.preorders') }}
</q-item-label>
<q-item-label>
<span class="prod_preorder">
{{ products.getQtyBookableAvailable(myproduct) }}
</span>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() && !!myproduct.QuantitaPrenotateInAttesa
"
>
{{
t('ecomm.qta_prenotate_in_attesa', {
qty: myproduct.QuantitaPrenotateInAttesa,
})
}}
</div>
</div>
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataBookableAvailable(myproduct) > 0
"
>
<q-item-section avatar>
<q-icon
name="fas fa-store"
style="padding-right: 16px !important"
/>
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod">
{{ t('ecomm.bloccati') }}:
</q-item-label>
<q-item-label>
<span class="text-black q-ml-xs text-h8">
{{
products.getQtyBloccataBookableAvailable(myproduct)
}}</span
>
</q-item-label>
</q-item-section>
</q-item-section>
</q-item>
</q-list>
<div v-if="complete || getnumstore() > 1">
<div
class="text-blue text-title row items-center q-mr-md centeritems"
>
<q-icon size="sm" name="fas fa-people-carry" class="q-mr-sm" />
{{ t('products.ritiro_presso') }}:
</div>
<div
class="text-green-6 text-title row items-center q-my-sm centeritems"
>
<div v-if="getnumstore() > 1">
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
outlined
v-model="storeSelected"
:options="getStorehouses()"
:label="t('products.magazzino') + `:`"
emit-value
map-options
>
</q-select>
</div>
<div v-else>
<span class="text-title text-center">{{
getSingleStorehouse()
}}</span>
</div>
</div>
</div>
<div class="row q-mb-sm no-wrap items-center centeritems">
<q-btn <q-btn
icon="fas fa-cart-arrow-down" icon="fas fa-cart-arrow-down"
:color="products.enableSubQty(myorder) ? 'negative' : 'grey'" :color="products.enableSubQty(myorder) ? 'negative' : 'grey'"
@@ -527,25 +536,19 @@
@click="addtoCart(true)" @click="addtoCart(true)"
> >
</q-btn> </q-btn>
</div>
<q-card-actions vertical align="center">
<q-btn <q-btn
v-if="myorder.quantity + myorder.quantitypreordered > 0" v-if="myorder.quantity + myorder.quantitypreordered > 0"
rounded rounded
icon="fas fa-shopping-cart" icon="fas fa-shopping-cart"
color="primary" color="primary"
:label="t('ecomm.btn_cassa')" :label="t('ecomm.btn_cassa')"
class="q-mb-sm" class="q-mb-xs q-mt-md"
to="/checkout" to="/checkout"
></q-btn> ></q-btn>
<!-- </div>
<q-btn :icon="iconWhishlist(myproduct)" flat color="primary" rounded label="Lista Desideri"> </q-card-section>
</q-btn>
-->
</q-card-actions>
</div>
</q-card> </q-card>
<q-dialog v-model="openlistorders"> <q-dialog v-model="openlistorders">
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-toolbar class="bg-primary text-white"> <q-toolbar class="bg-primary text-white">
@@ -581,9 +584,9 @@
</div> </div>
</td> </td>
<td class="text-center"> <td class="text-center">
<strong <strong>{{
>{{ ordcart.user.name }} {{ ordcart.user.surname }}</strong tools.getNomeUtenteEUsernameByRecUser(ordcart.user)
> }}</strong>
</td> </td>
<td class="text-center"> <td class="text-center">
<strong>{{ <strong>{{
@@ -628,6 +631,41 @@
</q-card-section> </q-card-section>
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog
v-model="isFullScreen"
position="top"
:maximized="true"
class="q-pt-none"
>
<div
v-if="isFullScreen"
class="fullscreen-container"
@touchmove.prevent
@click="toggleFullScreen"
>
<img
:src="`` + myproduct.productInfo.img"
:alt="myproduct.productInfo.name"
class="fullscreen-image"
@touchstart="onTouchStart"
@touchmove="onTouchMove"
@touchend="onTouchEnd"
ref="fullscreenImage"
/>
<br />
</div>
<div class="text-center">
<q-btn
class="q-ma-md"
@click="isFullScreen = false"
label="Chiudi"
rounded
color="primary"
icon="close"
></q-btn>
</div>
</q-dialog>
</div> </div>
</template> </template>

View File

@@ -355,9 +355,9 @@ h3 {
.myimgproduct{ .myimgproduct{
max-width: 100%; max-width: 100%;
height: 500px; height: 300px;
@media (max-width: 718px) { @media (max-width: 718px) {
height: 300px; height: 250px;
} }
} }

View File

@@ -1674,7 +1674,7 @@ const msg_it = {
ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.', ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.',
btn_cassa: 'Procedi all\'Ordine', btn_cassa: 'Procedi all\'Ordine',
btn_ordini: 'I tuoi Ordini', btn_ordini: 'I tuoi Ordini',
available: 'Disponibili', available: 'Disponib.',
preorders: 'Quantità Massima Pre-Ordinabili', preorders: 'Quantità Massima Pre-Ordinabili',
preord: 'Pre-Ordinate', preord: 'Pre-Ordinate',
di_cui_x_in_carrello: '(nel tuo carrello: {qty})', di_cui_x_in_carrello: '(nel tuo carrello: {qty})',

View File

@@ -9,7 +9,7 @@
<q-btn-toggle <q-btn-toggle
v-model="cosa" v-model="cosa"
push push
size="0.75rem" :size="tools.isMobile() ? '0.75rem' : '1rem'"
rounded rounded
glossy glossy
dense dense
@@ -59,6 +59,7 @@
<q-input <q-input
filled filled
stack-label stack-label
:dense="tools.isMobile() ? true : false"
:label="t('ecomm.code_o_text_search')" :label="t('ecomm.code_o_text_search')"
v-model="search" v-model="search"
class="q-ml-md" class="q-ml-md"
@@ -73,7 +74,7 @@
<q-btn <q-btn
:push="cat === reccat.value" :push="cat === reccat.value"
dense dense
size="0.70rem" :size="tools.isMobile() ? '0.70rem' : '1rem'"
:icon="reccat.icon" :icon="reccat.icon"
:color="reccat.color ? reccat.color : undefined" :color="reccat.color ? reccat.color : undefined"
:text-color="cat === reccat.value ? 'blue' : 'black'" :text-color="cat === reccat.value ? 'blue' : 'black'"
@@ -92,9 +93,9 @@
}) })
}}{{}} }}{{}}
</div> </div>
<div class="row"> <div class="row justify-around">
<div <div
class="q-pa-md row items-start q-gutter-md" class="q-pa-md row items-start"
v-for="(product, index) in getArrProducts" v-for="(product, index) in getArrProducts"
:key="index" :key="index"
> >