mirror of
https://github.com/penxio/penx.git
synced 2026-05-12 03:03:12 -04:00
feat: can delete view
This commit is contained in:
@@ -34,6 +34,9 @@ export interface IDatabaseContext {
|
||||
setViewIndex: Dispatch<SetStateAction<number>>
|
||||
|
||||
addView(viewType: ViewType): Promise<void>
|
||||
updateView(viewId: string, props: Partial<IViewNode['props']>): Promise<void>
|
||||
deleteView(viewId: string): Promise<void>
|
||||
|
||||
addRow(): Promise<void>
|
||||
addColumn(fieldType: FieldType): Promise<void>
|
||||
deleteColumn(columnId: string): Promise<void>
|
||||
@@ -41,7 +44,6 @@ export interface IDatabaseContext {
|
||||
updateColumnName(columnId: string, name: string): Promise<void>
|
||||
addOption(columnId: string, name: string): Promise<IOptionNode>
|
||||
deleteCellOption(cellId: string, optionId: string): Promise<void>
|
||||
updateView(viewId: string, props: Partial<IViewNode['props']>): Promise<void>
|
||||
}
|
||||
|
||||
export const databaseContext = createContext<IDatabaseContext>(
|
||||
@@ -70,6 +72,19 @@ export const DatabaseProvider = ({
|
||||
reloadNodes()
|
||||
}
|
||||
|
||||
async function updateView(
|
||||
viewId: string,
|
||||
props: Partial<IViewNode['props']>,
|
||||
) {
|
||||
await db.updateView(viewId, props)
|
||||
reloadNodes()
|
||||
}
|
||||
|
||||
async function deleteView(viewId: string) {
|
||||
await db.deleteView(viewId)
|
||||
reloadNodes()
|
||||
}
|
||||
|
||||
async function addRow() {
|
||||
await db.addRow(databaseId)
|
||||
reloadNodes()
|
||||
@@ -107,14 +122,6 @@ export const DatabaseProvider = ({
|
||||
reloadNodes()
|
||||
}
|
||||
|
||||
async function updateView(
|
||||
viewId: string,
|
||||
props: Partial<IViewNode['props']>,
|
||||
) {
|
||||
await db.updateView(viewId, props)
|
||||
reloadNodes()
|
||||
}
|
||||
|
||||
return (
|
||||
<Provider
|
||||
value={{
|
||||
@@ -123,6 +130,8 @@ export const DatabaseProvider = ({
|
||||
currentView: database.views[viewIndex] as IViewNode,
|
||||
setViewIndex,
|
||||
addView,
|
||||
deleteView,
|
||||
updateView,
|
||||
addRow,
|
||||
addColumn,
|
||||
deleteColumn,
|
||||
@@ -130,7 +139,6 @@ export const DatabaseProvider = ({
|
||||
updateColumnName,
|
||||
addOption,
|
||||
deleteCellOption,
|
||||
updateView,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
@@ -21,6 +21,7 @@ function Item({ children, viewType, ...rest }: ItemProps) {
|
||||
const ctx = useDatabaseContext()
|
||||
async function addColumn() {
|
||||
await ctx.addView(viewType)
|
||||
ctx.setViewIndex(ctx.views.length)
|
||||
close()
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ export const ViewMenu = ({ view, index }: ViewMenuProps) => {
|
||||
|
||||
function Content({ view, index }: ViewMenuProps) {
|
||||
const { close } = usePopoverContext()
|
||||
const { updateView } = useDatabaseContext()
|
||||
const { updateView, deleteView, setViewIndex } = useDatabaseContext()
|
||||
const [name, setName] = useState(view.props.name)
|
||||
|
||||
return (
|
||||
@@ -78,8 +78,10 @@ function Content({ view, index }: ViewMenuProps) {
|
||||
<MenuItem
|
||||
disabled={index === 0}
|
||||
gap2
|
||||
onClick={() => {
|
||||
onClick={async () => {
|
||||
if (index === 0) return
|
||||
await deleteView(view.id)
|
||||
setViewIndex(0)
|
||||
close()
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -935,6 +935,10 @@ class DB {
|
||||
})
|
||||
}
|
||||
|
||||
deleteView = async (viewId: string) => {
|
||||
await this.deleteNode(viewId)
|
||||
}
|
||||
|
||||
updateView = async (viewId: string, props: Partial<IViewNode['props']>) => {
|
||||
const view = await this.getNode(viewId)
|
||||
await this.updateNode(viewId, {
|
||||
|
||||
Reference in New Issue
Block a user