settings modal minimization API

This commit is contained in:
Henry Jameson 2026-06-11 12:21:21 +03:00
commit e30ff80995
5 changed files with 39 additions and 17 deletions

View file

@ -64,11 +64,6 @@ const SettingsModal = {
}), }),
} }
}, },
watch: {
$route(r) {
this.peekModal()
}
},
components: { components: {
Modal, Modal,
Popover, Popover,
@ -98,8 +93,11 @@ const SettingsModal = {
closeModal() { closeModal() {
useInterfaceStore().closeSettingsModal() useInterfaceStore().closeSettingsModal()
}, },
peekModal() { toggleMinimizeModal(state) {
useInterfaceStore().togglePeekSettingsModal() useInterfaceStore().toggleMinimizeSettingsModal()
},
minimizeModal() {
useInterfaceStore().setSettingsModalState('minimized')
}, },
importValidator(data) { importValidator(data) {
if (!Array.isArray(data._pleroma_settings_version)) { if (!Array.isArray(data._pleroma_settings_version)) {
@ -256,7 +254,7 @@ const SettingsModal = {
modalMode: (store) => store.settingsModalMode, modalMode: (store) => store.settingsModalMode,
modalOpenedOnceUser: (store) => store.settingsModalLoadedUser, modalOpenedOnceUser: (store) => store.settingsModalLoadedUser,
modalOpenedOnceAdmin: (store) => store.settingsModalLoadedAdmin, modalOpenedOnceAdmin: (store) => store.settingsModalLoadedAdmin,
modalPeeked: (store) => store.settingsModalState === 'minimized', modalMinimized: (store) => store.settingsModalState === 'minimized',
}), }),
expertLevel: { expertLevel: {
get() { get() {
@ -276,6 +274,11 @@ const SettingsModal = {
) )
}, },
}, },
watch: {
$route(r) {
this.minimizeModal()
}
},
} }
export default SettingsModal export default SettingsModal

View file

@ -300,7 +300,7 @@
} }
} }
&.peek { &.minimize {
.settings-modal-panel { .settings-modal-panel {
/* Explanation: /* Explanation:
* Modal is positioned vertically centered. * Modal is positioned vertically centered.

View file

@ -2,8 +2,8 @@
<Modal <Modal
:is-open="modalActivated" :is-open="modalActivated"
class="settings-modal" class="settings-modal"
:class="{ peek: modalPeeked }" :class="{ minimize: modalMinimized }"
:no-background="modalPeeked" :no-background="modalMinimized"
> >
<div class="settings-modal-panel panel"> <div class="settings-modal-panel panel">
<div class="panel-heading"> <div class="panel-heading">
@ -22,8 +22,8 @@
</transition> </transition>
<button <button
class="btn button-default" class="btn button-default"
:title="$t('general.peek')" :title="$t('general.minimize')"
@click="peekModal" @click="toggleMinimizeModal"
> >
<FAIcon <FAIcon
:icon="['far', 'window-minimize']" :icon="['far', 'window-minimize']"

View file

@ -591,7 +591,7 @@ const statuses = {
pagination, pagination,
}, },
) { ) {
commit('addNewStatuses', { return commit('addNewStatuses', {
statuses, statuses,
showImmediately, showImmediately,
timeline, timeline,
@ -683,7 +683,7 @@ const statuses = {
.then((status) => dispatch('addNewStatuses', { statuses: [status] })) .then((status) => dispatch('addNewStatuses', { statuses: [status] }))
}, },
unpinStatus({ rootState, dispatch }, statusId) { unpinStatus({ rootState, dispatch }, statusId) {
rootState.api.backendInteractor return rootState.api.backendInteractor
.unpinOwnStatus({ id: statusId }) .unpinOwnStatus({ id: statusId })
.then((status) => dispatch('addNewStatuses', { statuses: [status] })) .then((status) => dispatch('addNewStatuses', { statuses: [status] }))
}, },
@ -822,7 +822,7 @@ const statuses = {
'addNewUsers', 'addNewUsers',
data.statuses.map((s) => s.user).filter((u) => u), data.statuses.map((s) => s.user).filter((u) => u),
) )
store.commit('addNewStatuses', { statuses: data.statuses }) data.statuses = store.commit('addNewStatuses', { statuses: data.statuses })
return data return data
}) })
}, },

View file

@ -133,6 +133,23 @@ export const useInterfaceStore = defineStore('interface', {
} }
} }
}, },
setSettingsModalState(newState) {
const oldState = this.settingsModalState
const legal = (() => {
switch (oldState) {
case 'minimized':
return true
case 'visible':
return true
case 'hidden':
return newState === 'visible'
}
})()
if (legal) {
this.settingsModalState = newState
}
},
togglePeekSettingsModal() { togglePeekSettingsModal() {
switch (this.settingsModalState) { switch (this.settingsModalState) {
case 'minimized': case 'minimized':
@ -141,8 +158,10 @@ export const useInterfaceStore = defineStore('interface', {
case 'visible': case 'visible':
this.settingsModalState = 'minimized' this.settingsModalState = 'minimized'
return return
case 'hidden':
return
default: default:
throw new Error('Illegal minimization state of settings modal') throw new Error(`Illegal minimization state of settings modal: ${this.settingsModalState}`)
} }
}, },
clearSettingsModalTargetTab() { clearSettingsModalTargetTab() {