Browse Source

Merge pull request #3037 from nocodb/fix/gui-v2-filter

fix: gui-v2 - sync filter auto save prop with localstorage
pull/3039/head
Pranav C 2 years ago committed by GitHub
parent
commit
55f9a1ab55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue
  2. 3
      packages/nc-gui-v2/composables/useGlobal/state.ts
  3. 1
      packages/nc-gui-v2/composables/useGlobal/types.ts

11
packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue

@ -1,5 +1,4 @@
<script setup lang="ts">
// todo: move to persisted state
import type ColumnFilter from './ColumnFilter.vue'
import { useState } from '#app'
import { IsLockedInj } from '~/context'
@ -9,10 +8,10 @@ import MdiMenuDownIcon from '~icons/mdi/menu-down'
const autoApplyFilter = useState('autoApplyFilter', () => false)
const isLocked = inject(IsLockedInj)
const { filterAutoSave } = useGlobal()
// todo: emit from child
const filtersLength = ref(0)
// todo: sync with store
const autosave = ref(true)
const filterComp = ref<typeof ColumnFilter>()
@ -38,11 +37,11 @@ const applyChanges = async () => {
<SmartsheetToolbarColumnFilter
ref="filterComp"
class="nc-table-toolbar-menu"
:auto-save="autosave"
:auto-save="filterAutoSave"
@update:filters-length="filtersLength = $event"
>
<div class="d-flex align-end mt-2 min-h-[30px]" @click.stop>
<a-checkbox id="col-filter-checkbox" v-model:checked="autosave" class="col-filter-checkbox" hide-details dense>
<a-checkbox id="col-filter-checkbox" v-model:checked="filterAutoSave" class="col-filter-checkbox" hide-details dense>
<span class="text-grey text-xs">
{{ $t('msg.info.filterAutoApply') }}
<!-- Auto apply -->
@ -50,7 +49,7 @@ const applyChanges = async () => {
</a-checkbox>
<div class="flex-1" />
<a-button v-show="!autosave" size="small" class="text-xs ml-2" @click="applyChanges"> Apply changes </a-button>
<a-button v-show="!filterAutoSave" size="small" class="text-xs ml-2" @click="applyChanges"> Apply changes </a-button>
</div>
</SmartsheetToolbarColumnFilter>
</template>

3
packages/nc-gui-v2/composables/useGlobal/state.ts

@ -56,10 +56,11 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
createdAt: new Date('2020-01-01T00:00:00.000Z').toISOString(),
isHidden: false,
},
filterAutoSave: true,
}
/** saves a reactive state, any change to these values will write/delete to localStorage */
const storage = useStorage<StoredState>(storageKey, initialState)
const storage = useStorage<StoredState>(storageKey, initialState, localStorage, { mergeDefaults: true })
/** force turn off of dark mode, regardless of previously stored settings */
storage.value.darkMode = false

1
packages/nc-gui-v2/composables/useGlobal/types.ts

@ -17,6 +17,7 @@ export interface StoredState {
lang: string
darkMode: boolean
feedbackForm: FeedbackForm
filterAutoSave: boolean
}
export type State = ToRefs<Omit<StoredState, 'token'>> & {

Loading…
Cancel
Save