hook-modal
Advanced tools
Comparing version 0.1.0 to 0.1.1
@@ -1,1 +0,13 @@ | ||
export * from "./useModal"; | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__exportStar(require("./useModal"), exports); |
@@ -1,11 +0,15 @@ | ||
import { useEffect } from "react"; | ||
import { hideOthers } from "aria-hidden"; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useAriaHidden = void 0; | ||
var react_1 = require("react"); | ||
var aria_hidden_1 = require("aria-hidden"); | ||
// set aria-hidden attribute when the modal is opened | ||
export function useAriaHidden(ref, isOpen) { | ||
useEffect(() => { | ||
function useAriaHidden(ref, isOpen) { | ||
(0, react_1.useEffect)(function () { | ||
if (!isOpen || ref.current === null) { | ||
return; | ||
} | ||
return hideOthers(ref.current); | ||
return (0, aria_hidden_1.hideOthers)(ref.current); | ||
}, [ref, isOpen]); | ||
} | ||
exports.useAriaHidden = useAriaHidden; |
@@ -1,11 +0,15 @@ | ||
import { useEffect } from "react"; | ||
import { clearAllBodyScrollLocks, disableBodyScroll } from "body-scroll-lock"; | ||
export function useDisableScroll(ref, isOpen) { | ||
useEffect(() => { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useDisableScroll = void 0; | ||
var react_1 = require("react"); | ||
var body_scroll_lock_1 = require("body-scroll-lock"); | ||
function useDisableScroll(ref, isOpen) { | ||
(0, react_1.useEffect)(function () { | ||
if (!isOpen || ref.current === null) { | ||
return; | ||
} | ||
disableBodyScroll(ref.current); | ||
return clearAllBodyScrollLocks; | ||
(0, body_scroll_lock_1.disableBodyScroll)(ref.current); | ||
return body_scroll_lock_1.clearAllBodyScrollLocks; | ||
}, [ref, isOpen]); | ||
} | ||
exports.useDisableScroll = useDisableScroll; |
@@ -1,10 +0,13 @@ | ||
import { useEffect } from "react"; | ||
import { createFocusTrap } from "focus-trap"; | ||
export function useFocusTrap(options) { | ||
const { ref, isOpen, onClose, closeOnEsc, closeOnOutsideClick } = options; | ||
useEffect(() => { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useFocusTrap = void 0; | ||
var react_1 = require("react"); | ||
var focus_trap_1 = require("focus-trap"); | ||
function useFocusTrap(options) { | ||
var ref = options.ref, isOpen = options.isOpen, onClose = options.onClose, closeOnEsc = options.closeOnEsc, closeOnOutsideClick = options.closeOnOutsideClick; | ||
(0, react_1.useEffect)(function () { | ||
if (!isOpen || ref.current === null) { | ||
return; | ||
} | ||
const trap = createFocusTrap(ref.current, { | ||
var trap = (0, focus_trap_1.createFocusTrap)(ref.current, { | ||
onDeactivate: onClose, | ||
@@ -15,3 +18,3 @@ clickOutsideDeactivates: closeOnOutsideClick, | ||
trap.activate(); | ||
return () => { | ||
return function () { | ||
trap.deactivate(); | ||
@@ -21,1 +24,2 @@ }; | ||
} | ||
exports.useFocusTrap = useFocusTrap; |
@@ -1,16 +0,20 @@ | ||
import { useRef } from "react"; | ||
import { useAriaHidden } from "./useAriaHidden"; | ||
import { useDisableScroll } from "./useDisableScroll"; | ||
import { useFocusTrap } from "./useFocusTrap"; | ||
export function useModal(options) { | ||
const { isOpen, onClose, closeOnEsc = true, closeOnOutsideClick = true, } = options; | ||
const ref = useRef(null); | ||
useAriaHidden(ref, isOpen); | ||
useFocusTrap({ ref, isOpen, onClose, closeOnEsc, closeOnOutsideClick }); | ||
useDisableScroll(ref, isOpen); | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useModal = void 0; | ||
var react_1 = require("react"); | ||
var useAriaHidden_1 = require("./useAriaHidden"); | ||
var useDisableScroll_1 = require("./useDisableScroll"); | ||
var useFocusTrap_1 = require("./useFocusTrap"); | ||
function useModal(options) { | ||
var isOpen = options.isOpen, onClose = options.onClose, _a = options.closeOnEsc, closeOnEsc = _a === void 0 ? true : _a, _b = options.closeOnOutsideClick, closeOnOutsideClick = _b === void 0 ? true : _b; | ||
var ref = (0, react_1.useRef)(null); | ||
(0, useAriaHidden_1.useAriaHidden)(ref, isOpen); | ||
(0, useFocusTrap_1.useFocusTrap)({ ref: ref, isOpen: isOpen, onClose: onClose, closeOnEsc: closeOnEsc, closeOnOutsideClick: closeOnOutsideClick }); | ||
(0, useDisableScroll_1.useDisableScroll)(ref, isOpen); | ||
return { | ||
role: "dialog", | ||
"aria-modal": true, | ||
ref, | ||
ref: ref, | ||
}; | ||
} | ||
exports.useModal = useModal; |
{ | ||
"name": "hook-modal", | ||
"description": "React Hooks for building accessible modal", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"main": "dist/index.js", | ||
@@ -6,0 +6,0 @@ "author": "dqn <dqn270@gmail.com>", |
9194
113