diff --git a/quasar.config.ts b/quasar.config.ts
index e99ac3cb..a74297bc 100644
--- a/quasar.config.ts
+++ b/quasar.config.ts
@@ -347,7 +347,8 @@ export default defineConfig((ctx) => {
set plugins(value) {
this._plugins = value;
},
- iconSet: 'fontawesome-v5',
+ // iconSet: 'fontawesome-v5',
+ iconSet: 'material-icons',
lang: 'it', // Quasar language
},
diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts
index 9ca51971..031b5a88 100755
--- a/src/common/shared_vuejs.ts
+++ b/src/common/shared_vuejs.ts
@@ -132,6 +132,11 @@ export const shared_consts = {
CAROUSEL_IDISCIPLINE: 80,
CAROUSEL_HOME: 85,
CHECK_EMAIL: 100,
+ IMAGE_GALLERY: 101,
+ HEADING: 102,
+ LIST: 103,
+ CODE: 104,
+ DIVIDER: 105,
CAROUSEL_IMGS: 110,
OPENSTREETMAP: 120,
MAINVIEW: 130,
@@ -178,11 +183,7 @@ export const shared_consts = {
SECTION: 1000,
ROW: 1100,
COLUMN: 1200,
- IMAGE_GALLERY: 101,
- HEADING: 102,
- LIST: 103,
- CODE: 104,
- DIVIDER: 105,
+ PAGE_SECTION: 1500,
},
QUERYTYPE_MYGROUP: 1,
@@ -2085,6 +2086,11 @@ export const shared_consts = {
label: 'Scheda (IMG + Testo)',
icon: 'fas fa-id-card',
},
+ {
+ value: 1500,
+ label: 'Sezione Pagina',
+ icon: 'fas fa-newspaper',
+ },
/*
Disattivato perchè attualmente non funziona bene
{
diff --git a/src/components/CMyEditElem/CMyEditElem.ts b/src/components/CMyEditElem/CMyEditElem.ts
index ea458d05..f36bad99 100755
--- a/src/components/CMyEditElem/CMyEditElem.ts
+++ b/src/components/CMyEditElem/CMyEditElem.ts
@@ -260,7 +260,7 @@ export default defineComponent({
// @ts-ignore
label: page.title,
// @ts-ignore
- value: page.idPage,
+ value: page.path,
};
arrPages.value.push(rec);
}
@@ -820,6 +820,19 @@ export default defineComponent({
colorPicker.value.openDialog();
}
+ function removeFeature(index: number) {
+ myel.value.features.splice(index, 1);
+ saveElem();
+ }
+
+ function addFeature() {
+ myel.value.features.push({
+ name: 'Titolo',
+ description: 'sottotitolo',
+ icon: 'fas fa-heading',});
+ saveElem();
+ }
+
onMounted(mounted);
return {
@@ -890,6 +903,8 @@ export default defineComponent({
AddedNewElem,
openColorPicker,
colorPicker,
+ removeFeature,
+ addFeature,
};
},
});
diff --git a/src/components/CMyEditElem/CMyEditElem.vue b/src/components/CMyEditElem/CMyEditElem.vue
index ebbfc49b..4f11a3d2 100755
--- a/src/components/CMyEditElem/CMyEditElem.vue
+++ b/src/components/CMyEditElem/CMyEditElem.vue
@@ -2774,6 +2774,82 @@
+
+
+
+
+
+
+
+
+
+
+
Testo {{index + 1}}:
+
+
+
+
+
+
+
+
diff --git a/src/components/CMyElem/CMyElem.ts b/src/components/CMyElem/CMyElem.ts
index 2a8b097d..2bbefe33 100755
--- a/src/components/CMyElem/CMyElem.ts
+++ b/src/components/CMyElem/CMyElem.ts
@@ -6,6 +6,7 @@ import { IMyCard, IMyPage, IOperators } from '@src/model';
import { useGlobalStore } from '@store/globalStore';
import { CImgTitle } from '../CImgTitle/index';
+import { FeaturesSection } from '../FeaturesSection/index';
import { CImgPoster } from '@src/components/CImgPoster';
import CSection from '@src/components/CSection/CSection.vue';
import CRow from '@src/components/CRow/CRow.vue';
@@ -71,6 +72,7 @@ import { useRouter } from 'vue-router';
import { LatLng } from 'leaflet';
import { costanti } from '@costanti';
+import objectId from 'app/src/js/objectId';
export default defineComponent({
name: 'CMyElem',
@@ -114,6 +116,7 @@ export default defineComponent({
CDashGroup,
CMovements,
CGridOriz,
+ FeaturesSection,
CQRCode,
CCatalogList,
CSearchProduct,
@@ -207,6 +210,18 @@ export default defineComponent({
groups.push(cards.slice(i, i + currentCardsPerSlide.value));
}
+ if (!groups.length) {
+ groups.push([
+ {
+ _id: objectId(),
+ imagefile: '',
+ alt: '',
+ description: '',
+ vers_img: 0,
+ } as IMyCard,
+ ]);
+ }
+
return groups;
});
@@ -253,7 +268,7 @@ export default defineComponent({
$q,
t,
props.myelem,
- {idPage: props.idPage, path: props.path},
+ { idPage: props.idPage, path: props.path },
newtype.value
);
}
@@ -341,7 +356,6 @@ export default defineComponent({
shared_consts.MsgTeleg.SHARE_MSGREG,
true
);
-
}
// Classe per le colonne delle card
@@ -350,11 +364,11 @@ export default defineComponent({
return `col-${width}`;
}
-function updateCatalogoEmit(updatedCatalogo?: IOptCatalogo) {
- if (!updatedCatalogo) return;
- console.log('CMyElem: updateCatalogoEmit');
- myel.value.catalogo = updatedCatalogo;
-}
+ function updateCatalogoEmit(updatedCatalogo?: IOptCatalogo) {
+ if (!updatedCatalogo) return;
+ console.log('CMyElem: updateCatalogoEmit');
+ myel.value.catalogo = updatedCatalogo;
+ }
function naviga(path?: string): void {
if (path) {
diff --git a/src/components/CMyElem/CMyElem.vue b/src/components/CMyElem/CMyElem.vue
index 45c3641e..fa8f4868 100755
--- a/src/components/CMyElem/CMyElem.vue
+++ b/src/components/CMyElem/CMyElem.vue
@@ -129,7 +129,7 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/CMyElemAdd/CMyElemAdd.ts b/src/components/CMyElemAdd/CMyElemAdd.ts
index 3b909350..3d5b6ad5 100755
--- a/src/components/CMyElemAdd/CMyElemAdd.ts
+++ b/src/components/CMyElemAdd/CMyElemAdd.ts
@@ -121,13 +121,15 @@ export default defineComponent({
let neword = 0; // Ordinamento dell'elemento da aggiungere
let recfound = null; // Variabile per conservare l'elemento trovato
- // Gestisci il movimento sopra o sotto
- if (direz === -1) {
- // Sopra: ottieni l'elemento precedente, mantenendo l'ordinamento
- recfound = globalStore.getMyElemPrecThisElemId(props.idPage, elemsel._id);
- } else if (direz === 1) {
- // Sotto: ottieni l'elemento successivo, mantenendo l'ordinamento
- recfound = globalStore.getMyElemNextThisElemId(props.idPage, elemsel._id);
+ if (elemsel) {
+ // Gestisci il movimento sopra o sotto
+ if (direz === -1) {
+ // Sopra: ottieni l'elemento precedente, mantenendo l'ordinamento
+ recfound = globalStore.getMyElemPrecThisElemId(props.idPage, elemsel._id);
+ } else if (direz === 1) {
+ // Sotto: ottieni l'elemento successivo, mantenendo l'ordinamento
+ recfound = globalStore.getMyElemNextThisElemId(props.idPage, elemsel._id);
+ }
}
// Se è stato trovato un elemento precedente o successivo
diff --git a/src/components/CMyPageElem/CMyPageElem.ts b/src/components/CMyPageElem/CMyPageElem.ts
index 16e43376..1e123109 100755
--- a/src/components/CMyPageElem/CMyPageElem.ts
+++ b/src/components/CMyPageElem/CMyPageElem.ts
@@ -167,13 +167,22 @@ export default defineComponent({
const addAtEnd = () => {
visuadd.value = true;
- const last =
- myelems.value.length > 0 ? myelems.value[myelems.value.length - 1] : null;
- myElemSel.value = last;
- myElemParent.value = last;
+ if (myelems.value === null) {
+ myElemSel.value = myelemVoid.value;
+ myElemParent.value = myelemVoid.value;
+ } else {
+ const last = myelems.value[myelems.value.length - 1];
+ if (last) {
+ myElemSel.value = last;
+ myElemParent.value = last;
+ } else {
+ myElemSel.value = myelemVoid.value;
+ myElemParent.value = myelemVoid.value;
+ }
+ }
};
- const showOrder = ref(false)
+ const showOrder = ref(false);
const myelems = computed(() => {
if (myidPage.value) return globalStore.getMyElemsByIdPage(myidPage.value);
@@ -502,6 +511,7 @@ export default defineComponent({
function AddedNewElem(newrec: any) {
emit('selElemClick', newrec);
+ visuadd.value = false;
}
function getColClasses(col: any, rowOrCount?: any, idx = 0) {
diff --git a/src/components/CMyPageElem/CMyPageElem.vue b/src/components/CMyPageElem/CMyPageElem.vue
index 7bcd87e2..1863430b 100755
--- a/src/components/CMyPageElem/CMyPageElem.vue
+++ b/src/components/CMyPageElem/CMyPageElem.vue
@@ -369,22 +369,6 @@
/>
-
-
-
- Aggiungi Elemento
-
-
@@ -401,6 +385,23 @@
@selElemClick="selElemClick"
/>
+
+
+
+
+ Aggiungi Elemento
+
+
diff --git a/src/components/CMyVideoYoutube/CMyVideoYoutube.vue b/src/components/CMyVideoYoutube/CMyVideoYoutube.vue
index b7aa0cd0..7bc4931a 100755
--- a/src/components/CMyVideoYoutube/CMyVideoYoutube.vue
+++ b/src/components/CMyVideoYoutube/CMyVideoYoutube.vue
@@ -3,10 +3,7 @@
- Link YouTube non valido.
-
- Esempi accettati: https://youtu.be/ID, https://www.youtube.com/watch?v=ID
-
+ Inserire un link YouTube valido
diff --git a/src/components/FeaturesSection/FeaturesSection.scss b/src/components/FeaturesSection/FeaturesSection.scss
new file mode 100755
index 00000000..e69de29b
diff --git a/src/components/FeaturesSection/FeaturesSection.ts b/src/components/FeaturesSection/FeaturesSection.ts
new file mode 100755
index 00000000..5a1398cc
--- /dev/null
+++ b/src/components/FeaturesSection/FeaturesSection.ts
@@ -0,0 +1,43 @@
+import { defineComponent } from 'vue';
+
+// Importiamo icone da Quasar - esempio con quelle disponibili tramite Quasar Extras
+// Assicurati di averle abilitate in quasar.config.js
+import { IFeatSection } from 'app/src/model';
+import { tools } from 'app/src/store/Modules/tools';
+import { useQuasar } from 'quasar';
+
+export default defineComponent({
+ name: 'FeaturesSection',
+ props: {
+ title: {
+ type: String,
+ required: true,
+ },
+ isDark: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ subtitle: {
+ type: String,
+ required: false,
+ default: '',
+ },
+ description: {
+ type: String,
+ required: false,
+ default: '',
+ },
+ features: {
+ type: Array as () => IFeatSection[],
+ required: true,
+ },
+ },
+
+ setup(props) {
+
+ return {
+ tools,
+ };
+ },
+});
diff --git a/src/components/FeaturesSection/FeaturesSection.vue b/src/components/FeaturesSection/FeaturesSection.vue
new file mode 100755
index 00000000..3bc85f1a
--- /dev/null
+++ b/src/components/FeaturesSection/FeaturesSection.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
{{ description }}
+
+ {{ title }}
+
+
+ {{ subtitle }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ feature.name }}
+
+
+
+
+ {{ feature.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/FeaturesSection/index.ts b/src/components/FeaturesSection/index.ts
new file mode 100755
index 00000000..62b0e841
--- /dev/null
+++ b/src/components/FeaturesSection/index.ts
@@ -0,0 +1 @@
+export { default as FeaturesSection } from './FeaturesSection.vue'
diff --git a/src/css/app.scss b/src/css/app.scss
index df0ba6f2..47b1c0a8 100755
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -262,7 +262,7 @@ h3 {
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
- text-shadow: .25rem .25rem .5rem $grayshadow;
+ text-shadow: .0625rem .0625rem .125rem $grayshadow;
}
.text-subtitle3 {
diff --git a/src/model/GlobalStore.ts b/src/model/GlobalStore.ts
index 4cae0a38..a2b1be6e 100755
--- a/src/model/GlobalStore.ts
+++ b/src/model/GlobalStore.ts
@@ -199,6 +199,13 @@ export interface IMyElem {
rows?: any[]
columns?: any[]
elems?: any[]
+ features?: IFeatSection[]
+}
+
+export interface IFeatSection {
+ name?: string
+ icon?: string
+ description?: string
}
export interface IElemText {
diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts
index 0baa6e9b..b703b640 100644
--- a/src/store/globalStore.ts
+++ b/src/store/globalStore.ts
@@ -3079,10 +3079,19 @@ export const useGlobalStore = defineStore('GlobalStore', {
newrec.catalogo = this.createRaccoltaCataloghiVuoto();
} else if (newrec.type === shared_consts.ELEMTYPE.TEXT) {
newrec.container = "Inserisci qui il testo"
+ newrec.align = shared_consts.ALIGNTYPE.CEHTER
} else if (newrec.type === shared_consts.ELEMTYPE.HTML) {
newrec.containerHtml = "Inserisci qui il testo"
+ newrec.align = shared_consts.ALIGNTYPE.CEHTER
} else if (newrec.type === shared_consts.ELEMTYPE.IMAGEUPLOAD) {
- newrec.containerHtml
+ newrec.align = shared_consts.ALIGNTYPE.CEHTER
+ } else if (newrec.type === shared_consts.ELEMTYPE.BUTTON) {
+ newrec.container = "Bottone 1"
+ newrec.containerHtml = "primary"
+ newrec.container2 = "fas fa-home"
+ newrec.align = shared_consts.ALIGNTYPE.CEHTER
+ newrec.link = "https://www.pippo.it"
+ newrec.container3 = "_blank"
}
// Aggiungi il nuovo elemento alla struttura