UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 2.13 kB
{"version":3,"file":"use-modals-stack.cjs","names":[],"sources":["../../../src/components/Modal/use-modals-stack.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ninterface ModalStackReturnType<T extends string> {\n state: Record<T, boolean>;\n open: (id: T) => void;\n close: (id: T) => void;\n toggle: (id: T) => void;\n closeAll: () => void;\n register: (id: T) => { opened: boolean; onClose: () => void; stackId: T };\n}\n\nexport function useModalsStack<const T extends string>(modals: T[]): ModalStackReturnType<T> {\n const initialState = modals.reduce(\n (acc, modal) => ({ ...acc, [modal]: false }),\n {} as Record<T, boolean>\n );\n\n const [state, setState] = useState(initialState);\n\n const open = useCallback((modal: T) => {\n setState((current) => ({ ...current, [modal]: true }));\n }, []);\n\n const close = useCallback(\n (modal: T) => setState((current) => ({ ...current, [modal]: false })),\n []\n );\n\n const toggle = useCallback(\n (modal: T) => setState((current) => ({ ...current, [modal]: !current[modal] })),\n []\n );\n\n const closeAll = useCallback(() => setState(initialState), []);\n\n const register = useCallback(\n (modal: T) => ({\n opened: state[modal],\n onClose: () => close(modal),\n stackId: modal,\n }),\n [state]\n );\n\n return { state, open, close, closeAll, toggle, register };\n}\n\nexport const useDrawersStack = useModalsStack;\n"],"mappings":";;;;AAWA,SAAgB,eAAuC,QAAsC;CAC3F,MAAM,eAAe,OAAO,QACzB,KAAK,WAAW;EAAE,GAAG;GAAM,QAAQ;EAAO,GAC3C,EAAE,CACH;CAED,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,aAAa;CAEhD,MAAM,QAAA,GAAA,MAAA,cAAoB,UAAa;AACrC,YAAU,aAAa;GAAE,GAAG;IAAU,QAAQ;GAAM,EAAE;IACrD,EAAE,CAAC;CAEN,MAAM,SAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ;EAAO,EAAE,EACrE,EAAE,CACH;CAED,MAAM,UAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ,CAAC,QAAQ;EAAQ,EAAE,EAC/E,EAAE,CACH;AAaD,QAAO;EAAE;EAAO;EAAM;EAAO,WAAA,GAAA,MAAA,mBAXM,SAAS,aAAa,EAAE,EAAE,CAAC;EAWvB;EAAQ,WAAA,GAAA,MAAA,cAR5C,WAAc;GACb,QAAQ,MAAM;GACd,eAAe,MAAM,MAAM;GAC3B,SAAS;GACV,GACD,CAAC,MAAM,CACR;EAEwD;;AAG3D,MAAa,kBAAkB"}