@gamesberry/karmyc-core
Version:
A flexible and powerful layout management system for React applications
48 lines (47 loc) • 1.53 kB
TypeScript
import React from 'react';
import { StateCreator } from 'zustand';
import { ContextMenuItem, IContextMenuPosition } from '../types/context-menu-types';
import { RootStateType } from '../store';
/**
* État du menu contextuel.
*/
export interface ContextMenuState {
isVisible: boolean;
position: IContextMenuPosition;
items: ContextMenuItem[];
errors: string[];
targetId?: string;
metadata?: Record<string, any>;
menuClassName?: string;
customContextMenuContent?: React.ReactNode;
menuType?: 'default' | 'switchType' | 'custom';
}
/**
* Actions du menu contextuel.
*/
export interface ContextMenuActions {
openContextMenu: (payload: {
position: IContextMenuPosition;
items: ContextMenuItem[] | React.ReactNode;
targetId?: string;
metadata?: Record<string, any>;
}) => void;
openCustomContextMenu: (payload: {
position: IContextMenuPosition;
targetId?: string;
metadata?: Record<string, any>;
component: React.ReactNode;
}) => void;
closeContextMenu: () => void;
updateContextMenuPosition: (position: IContextMenuPosition) => void;
updateContextMenuItems: (items: ContextMenuItem[]) => void;
clearErrors: () => void;
}
export type ContextMenuSlice = {
contextMenu: ContextMenuState & ContextMenuActions;
};
export declare const initialState: ContextMenuState;
export declare const createContextMenuSlice: StateCreator<RootStateType, // le type global du store
[
], [
], ContextMenuSlice>;