diff --git a/components.d.ts b/components.d.ts index 65ca4e7839ddb4c9e2f01e9d90f50076f24aec89..88454d34c8c74b640da5264032b93b8c19405053 100644 --- a/components.d.ts +++ b/components.d.ts @@ -12,6 +12,9 @@ declare module 'vue' { CreateEntityMenu: typeof import('./src/components/CreateEntityMenu.vue')['default'] Divider: typeof import('primevue/divider')['default'] Drawer: typeof import('primevue/drawer')['default'] + EditImageEntityMenu: typeof import('./src/components/EditImageEntityMenu.vue')['default'] + EditTextEntityMenu: typeof import('./src/components/EditTextEntityMenu.vue')['default'] + ImageItem: typeof import('./src/components/entities/ImageItem.vue')['default'] LogoAndLabel: typeof import('./src/components/LogoAndLabel.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] @@ -19,6 +22,7 @@ declare module 'vue' { Splitter: typeof import('primevue/splitter')['default'] SplitterPanel: typeof import('primevue/splitterpanel')['default'] TextItem: typeof import('./src/components/entities/TextItem.vue')['default'] + Toast: typeof import('primevue/toast')['default'] Tree: typeof import('primevue/tree')['default'] UserInfoHeaderWithSettings: typeof import('./src/components/UserInfoHeaderWithSettings.vue')['default'] } diff --git a/package.json b/package.json index 0b289c80a2c2b323250bc1131b67c8042b580bdd..15be68437e82dca77bc43ba3806ab559e7188210 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@primevue/themes": "^4.0.4", + "@vueuse/components": "^10.11.1", "@vueuse/core": "^10.11.0", "@vueuse/integrations": "^10.11.0", "pinia": "^2.1.7", diff --git a/src/components/CreateEntityMenu.vue b/src/components/CreateEntityMenu.vue index 8f1f99f2ac104ef81c9168b2a4343c6262373294..2c70aad511232c5edaa8a7cc967a1a116443f9aa 100644 --- a/src/components/CreateEntityMenu.vue +++ b/src/components/CreateEntityMenu.vue @@ -1,8 +1,42 @@ + + + + diff --git a/src/components/entities/ImageItem.vue b/src/components/entities/ImageItem.vue new file mode 100644 index 0000000000000000000000000000000000000000..d9c5870c037f63d648e2ad4f18abcd654157e766 --- /dev/null +++ b/src/components/entities/ImageItem.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/helpers/index.ts b/src/helpers/index.ts index b53eb64c71a4c2ff969f00c6fca278eb01fcf02b..a36d3f01254a8fa62183ec0e92402578e20caf89 100644 --- a/src/helpers/index.ts +++ b/src/helpers/index.ts @@ -34,3 +34,28 @@ export const editEntity = (newState: IEntity, entityUuid: string) => { }); dataStore.editHomeEntities(prevState); }; + +export const deleteEntity = (entityUuid: string) => { + const dataStore = useDataStore(); + let prevState = dataStore.homeEntities; + prevState = prevState.filter((entity: IEntity) => entity.uuid !== entityUuid); + dataStore.editHomeEntities(prevState); +}; + +export const changeOrderHomeEntity = (entityUuid: string, direction: 'up' | 'down') => { + const dataStore = useDataStore(); + const prevState = dataStore.homeEntities; + const entityIndex = prevState.findIndex((entity: IEntity) => entity.uuid === entityUuid); + if (direction === 'up') { + [prevState[entityIndex], prevState[entityIndex - 1]] = [ + prevState[entityIndex - 1], + prevState[entityIndex] + ]; + } else { + [prevState[entityIndex], prevState[entityIndex + 1]] = [ + prevState[entityIndex + 1], + prevState[entityIndex] + ]; + } + dataStore.editHomeEntities(prevState); +}; diff --git a/src/interfaces/entities.ts b/src/interfaces/entities.ts index 5728cb7802117638a791c99049e9a8e72f76d2e1..fffff4dcf2cac2f6a843421db30a48da282a1cce 100644 --- a/src/interfaces/entities.ts +++ b/src/interfaces/entities.ts @@ -31,8 +31,9 @@ export interface IText { export interface IImage { type: 'image'; uuid: string; - name: string; + title: string; url: string; width: number; height: number; + position: 'left' | 'center' | 'right'; } diff --git a/src/modules/EntityItem.vue b/src/modules/EntityItem.vue index f485f616ced240558414dd1b054ab3d14c1c946c..01fb2f80f28637dcba4f31243172626a9f71e6c0 100644 --- a/src/modules/EntityItem.vue +++ b/src/modules/EntityItem.vue @@ -1,6 +1,7 @@