@carbon/react
Version:
React components for the Carbon Design System
25 lines (20 loc) • 636 B
JavaScript
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
import { useState, useEffect, useMemo } from 'react';
const useComposedModalState = open => {
const [isOpen, setIsOpen] = useState(!!open);
const [wasOpen, setWasOpen] = useState(!!open);
// Keep track of modal open/close state
useEffect(() => {
if (open !== wasOpen) {
setIsOpen(!!open);
setWasOpen(!!open);
}
}, [open, wasOpen]);
return useMemo(() => [isOpen, setIsOpen], [isOpen]);
};
export { useComposedModalState };