Files
nocodb/packages/nc-gui/composables/useExpandedFormDetached/index.ts
2025-03-15 13:32:53 +00:00

48 lines
1.1 KiB
TypeScript

import type { TableType, ViewType } from 'nocodb-sdk'
export interface UseExpandedFormDetachedProps {
'isOpen'?: boolean
'row': Row
'state'?: Record<string, any> | null
'meta': TableType
'loadRow'?: boolean
'useMetaFields'?: boolean
'rowId'?: string
'view'?: ViewType
'onCancel'?: Function
'onUpdate:modelValue'?: Function
'maintainDefaultViewOrder'?: boolean
'skipReload'?: boolean
'createdRecord'?: (row: Row['row']) => void
}
const [setup, use] = useInjectionState(() => {
return ref<UseExpandedFormDetachedProps[]>([])
})
export { setup as useExpandedFormDetachedProvider }
export function useExpandedFormDetached() {
let states = use()!
if (!states) {
states = setup()
}
const closeHook = createEventHook<void>()
const index = ref(-1)
const open = (props: UseExpandedFormDetachedProps) => {
states.value.push(props)
index.value = states.value.length - 1
}
const close = (i?: number) => {
states.value.splice(i || index.value, 1)
if (index.value === i || !i) closeHook.trigger()
}
return { states, open, close, onClose: closeHook.on }
}