diff --git a/src/frontend/fields/list/flat-list.vue b/src/frontend/fields/list/flat-list.vue index 40f624d7..63437b2c 100644 --- a/src/frontend/fields/list/flat-list.vue +++ b/src/frontend/fields/list/flat-list.vue @@ -105,6 +105,7 @@ import type { FieldSpec } from '../../../types'; import Icon from '../../shared/icon.vue'; import AddItemButton from '../../shared/add-item-button.vue'; import { useWidgetsStore, useSharedStore, useModelStore } from '../../store'; +import { useListStateStore } from '../../store/list-state'; const props = defineProps({ field: { @@ -135,6 +136,7 @@ const emit = defineEmits(['addSet', 'removeSet']); const field = computed(() => props.field as FieldSpec); const fields = field.value.fields as FieldSpec[]; const widgets = useWidgetsStore(); +const listState = useListStateStore(); const shared = useSharedStore(); const model = useModelStore(); @@ -169,8 +171,8 @@ const hasSourceItem = (index: number): boolean => { // This does soft remove const toggleRemove = (index: number) => { - const isCurrentlyRemoved = widgets.isInRemovedList(props.fieldPath, index); - widgets.toggleRemovedIndex(props.fieldPath, index); + const isCurrentlyRemoved = listState.isInRemovedList(props.fieldPath, index); + listState.toggleRemovedIndex(props.fieldPath, index); if (!isCurrentlyRemoved) { const list = [...(model.getField(props.fieldPath, []) as Record[])]; @@ -180,7 +182,7 @@ const toggleRemove = (index: number) => { }; const isRemoved = (index: number): boolean => { - return widgets.isInRemovedList(props.fieldPath, index); + return listState.isInRemovedList(props.fieldPath, index); }; const isSubgridWidget = (widget: string): boolean => { diff --git a/src/frontend/fields/list/foldable-list.vue b/src/frontend/fields/list/foldable-list.vue index 6682e72b..3a5e6c7f 100644 --- a/src/frontend/fields/list/foldable-list.vue +++ b/src/frontend/fields/list/foldable-list.vue @@ -136,6 +136,7 @@ import type { PropType } from 'vue'; import type { FieldSpec } from '../../../types'; import Icon from '../../shared/icon.vue'; import { useModelStore, useWidgetsStore, useSharedStore } from '../../store'; +import { useListStateStore } from '../../store/list-state'; import AddItemButton from '../../shared/add-item-button.vue'; const props = defineProps({ @@ -168,6 +169,7 @@ const field = computed(() => props.field as FieldSpec); const fields = field.value.fields as FieldSpec[]; const model = useModelStore(); const widgets = useWidgetsStore(); +const listState = useListStateStore(); const shared = useSharedStore(); const canMutate = computed(() => { @@ -181,14 +183,14 @@ const isIsland = (type: string): boolean => { return singleWidgets.includes(type); }; -const toggleState = computed(() => widgets.getListToggles(props.fieldPath)); +const toggleState = computed(() => listState.getListToggles(props.fieldPath)); const ensureToggles = () => { const current = toggleState.value; if (current.length < props.listItems.length) { const needed = props.listItems.length - current.length; const fresh = [...current, ...new Array(needed).fill(true)]; - widgets.setListToggles(props.fieldPath, fresh); + listState.setListToggles(props.fieldPath, fresh); } }; @@ -202,12 +204,12 @@ const toggle = (index: number) => { const fresh = toggleState.value; fresh[index] = !fresh[index]; - widgets.setListToggles(props.fieldPath, fresh); + listState.setListToggles(props.fieldPath, fresh); }; const toggleRemove = (index: number) => { - const isCurrentlyRemoved = widgets.isInRemovedList(props.fieldPath, index); - widgets.toggleRemovedIndex(props.fieldPath, index); + const isCurrentlyRemoved = listState.isInRemovedList(props.fieldPath, index); + listState.toggleRemovedIndex(props.fieldPath, index); if (!isCurrentlyRemoved) { const list = [...(model.getField(props.fieldPath, []) as Record[])]; @@ -217,14 +219,14 @@ const toggleRemove = (index: number) => { const fresh = toggleState.value; if (fresh[index]) { fresh[index] = false; - widgets.setListToggles(props.fieldPath, fresh); + listState.setListToggles(props.fieldPath, fresh); } } }; const isRemoved = (index: number): boolean => { if (props.isReadOnly) return false; - return widgets.isInRemovedList(props.fieldPath, index); + return listState.isInRemovedList(props.fieldPath, index); }; const hasSourceItem = (index: number): boolean => { diff --git a/src/frontend/fields/markdown-field.vue b/src/frontend/fields/markdown-field.vue index 8d155352..7f382696 100644 --- a/src/frontend/fields/markdown-field.vue +++ b/src/frontend/fields/markdown-field.vue @@ -36,7 +36,7 @@