Item size and layout are now managed by store

This commit is contained in:
Alicia Sykes 2021-10-30 13:45:47 +01:00
parent 513b1cd955
commit 168e52c251
5 changed files with 25 additions and 37 deletions

View File

@ -47,7 +47,6 @@ export default {
}, },
methods: { methods: {
updateIconSize(iconSize) { updateIconSize(iconSize) {
this.$emit('iconSizeUpdated', iconSize);
this.$store.commit(StoreKeys.SET_ITEM_SIZE, iconSize); this.$store.commit(StoreKeys.SET_ITEM_SIZE, iconSize);
}, },
tooltip(content) { tooltip(content) {

View File

@ -32,11 +32,6 @@ import IconVertical from '@/assets/interface-icons/layout-vertical.svg';
export default { export default {
name: 'LayoutSelector', name: 'LayoutSelector',
data() {
return {
input: '',
};
},
props: { props: {
displayLayout: String, displayLayout: String,
}, },
@ -47,7 +42,6 @@ export default {
}, },
methods: { methods: {
updateDisplayLayout(layout) { updateDisplayLayout(layout) {
this.$emit('layoutUpdated', layout);
this.$store.commit(StoreKeys.SET_ITEM_LAYOUT, layout); this.$store.commit(StoreKeys.SET_ITEM_LAYOUT, layout);
}, },
tooltip(content) { tooltip(content) {

View File

@ -7,8 +7,8 @@
<div class="options-outer"> <div class="options-outer">
<div :class="`options-container ${!settingsVisible ? 'hide' : ''}`"> <div :class="`options-container ${!settingsVisible ? 'hide' : ''}`">
<ThemeSelector /> <ThemeSelector />
<LayoutSelector :displayLayout="displayLayout" @layoutUpdated="updateDisplayLayout"/> <LayoutSelector :displayLayout="displayLayout" />
<ItemSizeSelector :iconSize="iconSize" @iconSizeUpdated="updateIconSize" /> <ItemSizeSelector :iconSize="iconSize" />
<ConfigLauncher /> <ConfigLauncher />
<AuthButtons v-if="userState != 'noone'" :userType="userState" /> <AuthButtons v-if="userState != 'noone'" :userType="userState" />
</div> </div>
@ -106,12 +106,6 @@ export default {
clearFilterInput() { clearFilterInput() {
this.$refs.SearchBar.clearFilterInput(); this.$refs.SearchBar.clearFilterInput();
}, },
updateDisplayLayout(layout) {
this.$emit('change-display-layout', layout);
},
updateIconSize(iconSize) {
this.$emit('change-icon-size', iconSize);
},
getInitialTheme() { getInitialTheme() {
return this.appConfig.theme || ''; return this.appConfig.theme || '';
}, },

View File

@ -86,6 +86,12 @@ const store = new Vuex.Store({
}); });
return foundSection; return foundSection;
}, },
layout(state) {
return state.config.appConfig.layout || 'auto';
},
iconSize(state) {
return state.config.appConfig.iconSize || 'medium';
},
}, },
mutations: { mutations: {
[SET_CONFIG](state, config) { [SET_CONFIG](state, config) {
@ -217,12 +223,15 @@ const store = new Vuex.Store({
}, },
[SET_ITEM_LAYOUT](state, layout) { [SET_ITEM_LAYOUT](state, layout) {
state.config.appConfig.layout = layout; state.config.appConfig.layout = layout;
InfoHandler('Layout updated', InfoKeys.VISUAL);
}, },
[SET_ITEM_SIZE](state, iconSize) { [SET_ITEM_SIZE](state, iconSize) {
state.config.appConfig.iconSize = iconSize; state.config.appConfig.iconSize = iconSize;
InfoHandler('Item size updated', InfoKeys.VISUAL);
}, },
[UPDATE_CUSTOM_CSS](state, customCss) { [UPDATE_CUSTOM_CSS](state, customCss) {
state.config.appConfig.customCss = customCss; state.config.appConfig.customCss = customCss;
InfoHandler('Custom colors updated', InfoKeys.VISUAL);
}, },
}, },
actions: { actions: {

View File

@ -4,8 +4,6 @@
<!-- Search bar, layout options and settings --> <!-- Search bar, layout options and settings -->
<SettingsContainer ref="filterComp" <SettingsContainer ref="filterComp"
@user-is-searchin="searching" @user-is-searchin="searching"
@change-display-layout="setLayoutOrientation"
@change-icon-size="setItemSize"
@change-modal-visibility="updateModalVisibility" @change-modal-visibility="updateModalVisibility"
:displayLayout="layout" :displayLayout="layout"
:iconSize="itemSizeBound" :iconSize="itemSizeBound"
@ -120,20 +118,22 @@ export default {
return sections.filter((section) => this.filterTiles(section.items, this.searchValue)); return sections.filter((section) => this.filterTiles(section.items, this.searchValue));
}, },
/* Updates layout (when button clicked), and saves in local storage */ /* Updates layout (when button clicked), and saves in local storage */
layoutOrientation: { layoutOrientation() {
get() { return this.appConfig.layout || Defaults.layout; }, return this.$store.getters.layout;
set: function setLayout(layout) {
localStorage.setItem(localStorageKeys.LAYOUT_ORIENTATION, layout);
this.layout = layout;
},
}, },
/* Updates icon size (when button clicked), and saves in local storage */ /* Updates icon size (when button clicked), and saves in local storage */
iconSize: { iconSize() {
get() { return this.appConfig.iconSize || Defaults.iconSize; }, return this.$store.getters.iconSize;
set: function setIconSize(iconSize) { },
localStorage.setItem(localStorageKeys.ICON_SIZE, iconSize); },
this.itemSizeBound = iconSize; watch: {
}, layoutOrientation(layout) {
localStorage.setItem(localStorageKeys.LAYOUT_ORIENTATION, layout);
this.layout = layout;
},
iconSize(size) {
localStorage.setItem(localStorageKeys.ICON_SIZE, size);
this.itemSizeBound = size;
}, },
}, },
methods: { methods: {
@ -158,14 +158,6 @@ export default {
getDisplayData(section) { getDisplayData(section) {
return !section.displayData ? {} : section.displayData; return !section.displayData ? {} : section.displayData;
}, },
/* Sets layout attribute, which is used by Section */
setLayoutOrientation(layout) {
this.layoutOrientation = layout;
},
/* Sets item size attribute, which is used by Section */
setItemSize(itemSize) {
this.iconSize = itemSize;
},
/* Update data when modal is open (so that key bindings can be disabled) */ /* Update data when modal is open (so that key bindings can be disabled) */
updateModalVisibility(modalState) { updateModalVisibility(modalState) {
this.$store.commit('SET_MODAL_OPEN', modalState); this.$store.commit('SET_MODAL_OPEN', modalState);