Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@clayui/modal

Package Overview
Dependencies
Maintainers
13
Versions
139
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@clayui/modal - npm Package Compare versions

Comparing version
3.156.0
to
3.157.0-alpha.1
+3
-3
lib/Body.d.ts
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -20,3 +20,3 @@ import React from 'react';

}
declare const Body: ({ children, className, iFrameProps, scrollable, url, ...otherProps }: IBodyProps) => React.JSX.Element;
declare function Body({ children, className, iFrameProps, scrollable, url, ...otherProps }: IBodyProps): React.JSX.Element;
export default Body;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Body_exports = {};
__export(Body_exports, {
default: () => Body_default
});
exports.default = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const Body = _ref => {
let {
children,
className,
iFrameProps = {},
scrollable,
url,
...otherProps
} = _ref;
const elementRef = (0, _react.useRef)(null);
(0, _react.useEffect)(() => {
const onKeyDown = event => {
if (elementRef.current && (event.key === 'ArrowUp' || event.key === 'ArrowDown') && !elementRef.current.contains(document.activeElement)) {
module.exports = __toCommonJS(Body_exports);
var import_classnames = __toESM(require("classnames"));
var import_react = __toESM(require("react"));
function Body({
children,
className,
iFrameProps = {},
scrollable,
url,
...otherProps
}) {
const elementRef = (0, import_react.useRef)(null);
(0, import_react.useEffect)(() => {
const onKeyDown = (event) => {
if (elementRef.current && (event.key === "ArrowUp" || event.key === "ArrowDown") && !elementRef.current.contains(document.activeElement)) {
if (event.defaultPrevented) {

@@ -35,19 +54,21 @@ return;

};
document.addEventListener('keydown', onKeyDown);
document.addEventListener("keydown", onKeyDown);
return () => {
document.removeEventListener('keydown', onKeyDown);
document.removeEventListener("keydown", onKeyDown);
};
}, [elementRef]);
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-body', className, {
'inline-scroller': scrollable,
'modal-body-iframe': url
}),
ref: elementRef,
tabIndex: scrollable ? -1 : undefined
}, otherProps), url ? /*#__PURE__*/_react.default.createElement("iframe", _extends({}, iFrameProps, {
src: url,
title: url
})) : children);
};
var _default = exports.default = Body;
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-body", className, {
"inline-scroller": scrollable,
"modal-body-iframe": url
}),
ref: elementRef,
tabIndex: scrollable ? -1 : void 0,
...otherProps
},
url ? /* @__PURE__ */ import_react.default.createElement("iframe", { ...iFrameProps, src: url, title: url }) : children
);
}
var Body_default = Body;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Context_exports = {};
__export(Context_exports, {
default: () => Context_default
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const context = /*#__PURE__*/_react.default.createContext({});
context.displayName = 'ClayModalContext';
var _default = exports.default = context;
module.exports = __toCommonJS(Context_exports);
var import_react = __toESM(require("react"));
const context = import_react.default.createContext({});
context.displayName = "ClayModalContext";
var Context_default = context;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Footer_exports = {};
__export(Footer_exports, {
default: () => Footer_default
});
exports.default = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const Footer = _ref => {
let {
className,
first,
last,
middle,
...otherProps
} = _ref;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-footer', className)
}, otherProps), /*#__PURE__*/_react.default.createElement("div", {
className: "modal-item-first"
}, first), /*#__PURE__*/_react.default.createElement("div", {
className: "modal-item"
}, middle), /*#__PURE__*/_react.default.createElement("div", {
className: "modal-item-last"
}, last));
};
var _default = exports.default = Footer;
module.exports = __toCommonJS(Footer_exports);
var import_classnames = __toESM(require("classnames"));
var import_react = __toESM(require("react"));
function Footer({ className, first, last, middle, ...otherProps }) {
return /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)("modal-footer", className), ...otherProps }, /* @__PURE__ */ import_react.default.createElement("div", { className: "modal-item-first" }, first), /* @__PURE__ */ import_react.default.createElement("div", { className: "modal-item" }, middle), /* @__PURE__ */ import_react.default.createElement("div", { className: "modal-item-last" }, last));
}
var Footer_default = Footer;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.TitleSection = exports.TitleIndicator = exports.Title = exports.SubtitleSection = exports.Subtitle = exports.ItemGroup = exports.Item = void 0;
var _button = _interopRequireDefault(require("@clayui/button"));
var _icon = _interopRequireDefault(require("@clayui/icon"));
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireDefault(require("react"));
var _Context = _interopRequireDefault(require("./Context"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const ItemGroup = _ref => {
let {
children,
className,
...otherProps
} = _ref;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-item-group', className)
}, otherProps), children);
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
exports.ItemGroup = ItemGroup;
const Item = _ref2 => {
let {
children,
className,
shrink,
...otherProps
} = _ref2;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-item', className, {
'modal-item-shrink': shrink
})
}, otherProps), children);
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
exports.Item = Item;
const TitleSection = _ref3 => {
let {
children,
className,
...otherProps
} = _ref3;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-title-section', className)
}, otherProps), children);
};
exports.TitleSection = TitleSection;
const Title = _ref4 => {
let {
children,
className,
...otherProps
} = _ref4;
const {
ariaLabelledby
} = _react.default.useContext(_Context.default);
return /*#__PURE__*/_react.default.createElement("h1", _extends({
className: (0, _classnames.default)('modal-title', className),
tabIndex: -1
}, otherProps, {
id: ariaLabelledby
}), children);
};
exports.Title = Title;
const TitleIndicator = _ref5 => {
let {
children,
className,
...otherProps
} = _ref5;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-title-indicator', className)
}, otherProps), children);
};
exports.TitleIndicator = TitleIndicator;
const SubtitleSection = _ref6 => {
let {
children,
className,
...otherProps
} = _ref6;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-subtitle-section', className)
}, otherProps), children);
};
exports.SubtitleSection = SubtitleSection;
const Subtitle = _ref7 => {
let {
children,
className,
...otherProps
} = _ref7;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-subtitle', className)
}, otherProps), children);
};
exports.Subtitle = Subtitle;
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Header_exports = {};
__export(Header_exports, {
Item: () => Item,
ItemGroup: () => ItemGroup,
Subtitle: () => Subtitle,
SubtitleSection: () => SubtitleSection,
Title: () => Title,
TitleIndicator: () => TitleIndicator,
TitleSection: () => TitleSection,
default: () => Header_default
});
module.exports = __toCommonJS(Header_exports);
var import_button = __toESM(require("@clayui/button"));
var import_icon = __toESM(require("@clayui/icon"));
var import_classnames = __toESM(require("classnames"));
var import_react = __toESM(require("react"));
var import_Context = __toESM(require("./Context"));
function ItemGroup({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-item-group", className),
...otherProps
},
children
);
}
function Item({ children, className, shrink, ...otherProps }) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-item", className, {
"modal-item-shrink": shrink
}),
...otherProps
},
children
);
}
function TitleSection({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-title-section", className),
...otherProps
},
children
);
}
function Title({
children,
className,
...otherProps
}) {
const { ariaLabelledby } = import_react.default.useContext(import_Context.default);
return /* @__PURE__ */ import_react.default.createElement(
"h1",
{
className: (0, import_classnames.default)("modal-title", className),
tabIndex: -1,
...otherProps,
id: ariaLabelledby
},
children
);
}
function TitleIndicator({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-title-indicator", className),
...otherProps
},
children
);
}
function SubtitleSection({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-subtitle-section", className),
...otherProps
},
children
);
}
function Subtitle({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-subtitle", className),
...otherProps
},
children
);
}
const ICON_MAP = {
danger: 'exclamation-full',
info: 'info-circle',
success: 'check-circle-full',
warning: 'warning-full'
danger: "exclamation-full",
info: "info-circle",
success: "check-circle-full",
warning: "warning-full"
};
const HighLevel = _ref8 => {
let {
children,
closeButtonAriaLabel = 'Close',
onClose,
spritemap,
status
} = _ref8;
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Title, null, status && /*#__PURE__*/_react.default.createElement(TitleIndicator, null, /*#__PURE__*/_react.default.createElement(_icon.default, {
spritemap: spritemap,
symbol: ICON_MAP[status]
})), children), /*#__PURE__*/_react.default.createElement(_button.default, {
"aria-label": closeButtonAriaLabel,
className: "close",
displayType: "unstyled",
onClick: onClose
}, /*#__PURE__*/_react.default.createElement(_icon.default, {
spritemap: spritemap,
symbol: "times"
})));
};
const ClayModalHeader = _ref9 => {
let {
children,
className,
...otherProps
} = _ref9;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-header', className)
}, otherProps), children);
};
const Header = _ref10 => {
let {
children,
closeButtonAriaLabel,
withTitle = true,
...otherProps
} = _ref10;
const {
onClose,
spritemap,
status
} = _react.default.useContext(_Context.default);
return /*#__PURE__*/_react.default.createElement(ClayModalHeader, otherProps, withTitle && /*#__PURE__*/_react.default.createElement(HighLevel, {
closeButtonAriaLabel: closeButtonAriaLabel,
onClose: onClose,
spritemap: spritemap,
status: status
}, children), !withTitle && children);
};
var _default = exports.default = Header;
function HighLevel({
children,
closeButtonAriaLabel = "Close",
onClose,
spritemap,
status
}) {
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(Title, null, status && /* @__PURE__ */ import_react.default.createElement(TitleIndicator, null, /* @__PURE__ */ import_react.default.createElement(
import_icon.default,
{
spritemap,
symbol: ICON_MAP[status]
}
)), children), /* @__PURE__ */ import_react.default.createElement(
import_button.default,
{
"aria-label": closeButtonAriaLabel,
className: "close",
displayType: "unstyled",
onClick: onClose
},
/* @__PURE__ */ import_react.default.createElement(import_icon.default, { spritemap, symbol: "times" })
));
}
function ClayModalHeader({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)("modal-header", className), ...otherProps }, children);
}
function Header({
children,
closeButtonAriaLabel,
withTitle = true,
...otherProps
}) {
const { onClose, spritemap, status } = import_react.default.useContext(import_Context.default);
return /* @__PURE__ */ import_react.default.createElement(ClayModalHeader, { ...otherProps }, withTitle && /* @__PURE__ */ import_react.default.createElement(
HighLevel,
{
closeButtonAriaLabel,
onClose,
spritemap,
status
},
children
), !withTitle && children);
}
var Header_default = Header;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Hook_exports = {};
__export(Hook_exports, {
useUserInteractions: () => useUserInteractions
});
exports.useUserInteractions = void 0;
var _shared = require("@clayui/shared");
var _react = _interopRequireWildcard(require("react"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* A hook that takes care of controlling click, keyup and keydown events
* respectively close the modal after a click on the overlay, close the
* modal by pressing the ESC key and control the focus within the Modal.
*/
const useUserInteractions = (modalElementRef, modalBodyElementRef, onClick, show, content) => {
const mouseEventTargetRef = _react.default.useRef(null);
module.exports = __toCommonJS(Hook_exports);
var import_shared = require("@clayui/shared");
var import_react = __toESM(require("react"));
function useUserInteractions(modalElementRef, modalBodyElementRef, onClick, show, content) {
const mouseEventTargetRef = import_react.default.useRef(null);
const getFocusableNodes = () => {
if (modalBodyElementRef.current) {
const nodes = modalBodyElementRef.current.querySelectorAll(_shared.FOCUSABLE_ELEMENTS);
return Object.keys(nodes).map(key => nodes[key]);
const nodes = modalBodyElementRef.current.querySelectorAll(
import_shared.FOCUSABLE_ELEMENTS
);
return Object.keys(nodes).map((key) => nodes[key]);
}
return [];
};
const handleKeydown = event => {
if (event.key === _shared.Keys.Esc && _shared.stack[_shared.stack.length - 1] === modalElementRef) {
const handleKeydown = (event) => {
if (event.key === import_shared.Keys.Esc && import_shared.stack[import_shared.stack.length - 1] === modalElementRef) {
onClick();
}
if (event.key === _shared.Keys.Tab) {
if (event.key === import_shared.Keys.Tab) {
if (modalElementRef.current && event.target !== null && !modalElementRef.current.contains(event.target)) {

@@ -39,3 +56,5 @@ modalBodyElementRef.current.focus();

const focusableNodes = getFocusableNodes();
const focusedItemIndex = focusableNodes.indexOf(document.activeElement);
const focusedItemIndex = focusableNodes.indexOf(
document.activeElement
);
if (event.shiftKey && focusedItemIndex === 0) {

@@ -52,10 +71,6 @@ focusableNodes[focusableNodes.length - 1].focus();

};
const handleDocumentMouseDown = event => {
// We keep the `event.target` to check later in the click event if
// the target is the same, otherwise, we are assuming that the element
// has been removed from the DOM.
const handleDocumentMouseDown = (event) => {
mouseEventTargetRef.current = event.target;
};
const handleDocumentMouseUp = event => {
const handleDocumentMouseUp = (event) => {
if (event.defaultPrevented) {

@@ -71,18 +86,12 @@ mouseEventTargetRef.current = null;

};
/**
* Just listen for keyup, keydown, and click when
* changeAttachEvent is true.
*/
(0, _react.useEffect)(() => {
document.addEventListener('keydown', handleKeydown);
document.addEventListener('mousedown', handleDocumentMouseDown);
document.addEventListener('mouseup', handleDocumentMouseUp);
(0, import_react.useEffect)(() => {
document.addEventListener("keydown", handleKeydown);
document.addEventListener("mousedown", handleDocumentMouseDown);
document.addEventListener("mouseup", handleDocumentMouseUp);
return () => {
document.removeEventListener('keydown', handleKeydown);
document.removeEventListener('mousedown', handleDocumentMouseDown);
document.removeEventListener('mouseup', handleDocumentMouseUp);
document.removeEventListener("keydown", handleKeydown);
document.removeEventListener("mousedown", handleDocumentMouseDown);
document.removeEventListener("mouseup", handleDocumentMouseUp);
};
}, [show, content]);
};
exports.useUserInteractions = useUserInteractions;
}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Body", {
enumerable: true,
get: function () {
return _Body.default;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var src_exports = {};
__export(src_exports, {
Body: () => import_Body.default,
ClayModalProvider: () => import_Provider.default,
Context: () => import_Provider.Context,
Header: () => import_Header.default,
Item: () => import_Header.Item,
ItemGroup: () => import_Header.ItemGroup,
Modal: () => import_Modal.default,
Subtitle: () => import_Header.Subtitle,
SubtitleSection: () => import_Header.SubtitleSection,
Title: () => import_Header.Title,
TitleIndicator: () => import_Header.TitleIndicator,
TitleSection: () => import_Header.TitleSection,
default: () => src_default,
useModal: () => import_useModal.useModal
});
Object.defineProperty(exports, "ClayModalProvider", {
enumerable: true,
get: function () {
return _Provider.default;
}
});
Object.defineProperty(exports, "Context", {
enumerable: true,
get: function () {
return _Provider.Context;
}
});
Object.defineProperty(exports, "Header", {
enumerable: true,
get: function () {
return _Header.default;
}
});
Object.defineProperty(exports, "Item", {
enumerable: true,
get: function () {
return _Header.Item;
}
});
Object.defineProperty(exports, "ItemGroup", {
enumerable: true,
get: function () {
return _Header.ItemGroup;
}
});
Object.defineProperty(exports, "Modal", {
enumerable: true,
get: function () {
return _Modal.default;
}
});
Object.defineProperty(exports, "Subtitle", {
enumerable: true,
get: function () {
return _Header.Subtitle;
}
});
Object.defineProperty(exports, "SubtitleSection", {
enumerable: true,
get: function () {
return _Header.SubtitleSection;
}
});
Object.defineProperty(exports, "Title", {
enumerable: true,
get: function () {
return _Header.Title;
}
});
Object.defineProperty(exports, "TitleIndicator", {
enumerable: true,
get: function () {
return _Header.TitleIndicator;
}
});
Object.defineProperty(exports, "TitleSection", {
enumerable: true,
get: function () {
return _Header.TitleSection;
}
});
exports.default = void 0;
Object.defineProperty(exports, "useModal", {
enumerable: true,
get: function () {
return _useModal.useModal;
}
});
var _Body = _interopRequireDefault(require("./Body"));
var _Header = _interopRequireWildcard(require("./Header"));
var _Modal = _interopRequireDefault(require("./Modal"));
var _Provider = _interopRequireWildcard(require("./Provider"));
var _useModal = require("./useModal");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
var _default = exports.default = _Modal.default;
module.exports = __toCommonJS(src_exports);
var import_Body = __toESM(require("./Body"));
var import_Header = __toESM(require("./Header"));
var import_Modal = __toESM(require("./Modal"));
var import_Provider = __toESM(require("./Provider"));
var import_useModal = require("./useModal");
var src_default = import_Modal.default;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Modal_exports = {};
__export(Modal_exports, {
default: () => Modal_default
});
exports.default = void 0;
var _shared = require("@clayui/shared");
var _ariaHidden = require("aria-hidden");
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var _warning = _interopRequireDefault(require("warning"));
var _Body = _interopRequireDefault(require("./Body"));
var _Context = _interopRequireDefault(require("./Context"));
var _Footer = _interopRequireDefault(require("./Footer"));
var _Header = _interopRequireWildcard(require("./Header"));
var _Hook = require("./Hook");
var _types = require("./types");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
module.exports = __toCommonJS(Modal_exports);
var import_shared = require("@clayui/shared");
var import_aria_hidden = require("aria-hidden");
var import_classnames = __toESM(require("classnames"));
var import_react = __toESM(require("react"));
var import_warning = __toESM(require("warning"));
var import_Body = __toESM(require("./Body"));
var import_Context = __toESM(require("./Context"));
var import_Footer = __toESM(require("./Footer"));
var import_Header = __toESM(require("./Header"));
var import_Hook = require("./Hook");
var import_types = require("./types");
const warningMessage = `You need to pass the 'observer' prop to ClayModal for everything to work fine, use the 'useModal' hook that exposes the observer.

@@ -36,30 +56,35 @@

let counter = 0;
const Modal = _ref => {
let {
center,
children,
className,
containerElementRef,
containerProps = {},
disableAutoClose = false,
observer,
role = 'dialog',
size,
spritemap,
status,
zIndex,
...otherProps
} = _ref;
const modalElementRef = (0, _react.useRef)(null);
const modalBodyElementRef = (0, _react.useRef)(null);
function Modal({
center,
children,
className,
containerElementRef,
containerProps = {},
disableAutoClose = false,
observer,
role = "dialog",
size,
spritemap,
status,
zIndex,
...otherProps
}) {
const modalElementRef = (0, import_react.useRef)(null);
const modalBodyElementRef = (0, import_react.useRef)(null);
const [show, content] = observer && observer.mutation ? observer.mutation : [false, false];
"production" !== "production" ? (0, _warning.default)(observer !== undefined, warningMessage) : void 0;
(0, _Hook.useUserInteractions)(modalElementRef, modalBodyElementRef, () => !disableAutoClose && observer.dispatch(_types.ObserverType.Close), show, content);
(0, _react.useEffect)(() => {
observer.dispatch(_types.ObserverType.RestoreFocus, document.activeElement);
observer.dispatch(_types.ObserverType.Open);
(0, import_warning.default)(observer !== void 0, warningMessage);
(0, import_Hook.useUserInteractions)(
modalElementRef,
modalBodyElementRef,
() => !disableAutoClose && observer.dispatch(import_types.ObserverType.Close),
show,
content
);
(0, import_react.useEffect)(() => {
observer.dispatch(import_types.ObserverType.RestoreFocus, document.activeElement);
observer.dispatch(import_types.ObserverType.Open);
}, []);
(0, _react.useEffect)(() => {
(0, import_react.useEffect)(() => {
if (modalBodyElementRef.current && show && content) {
const focusedElement = modalBodyElementRef.current.querySelector('h1');
const focusedElement = modalBodyElementRef.current.querySelector("h1");
if (focusedElement) {

@@ -72,74 +97,95 @@ focusedElement.focus();

}, [show, content]);
const ariaLabelledby = (0, _react.useMemo)(() => {
const ariaLabelledby = (0, import_react.useMemo)(() => {
counter++;
return `clay-modal-label-${counter}`;
}, []);
(0, _react.useEffect)(() => {
(0, import_react.useEffect)(() => {
if (show && content) {
_shared.stack.push(modalElementRef);
import_shared.stack.push(modalElementRef);
}
return () => {
const index = _shared.stack.indexOf(modalElementRef);
const index = import_shared.stack.indexOf(modalElementRef);
if (index >= 0) {
_shared.stack.splice(index, 1);
import_shared.stack.splice(index, 1);
}
};
}, [show, modalElementRef, content]);
(0, _react.useEffect)(() => {
if (modalElementRef.current && show && _shared.stack[_shared.stack.length - 1] === modalElementRef) {
// Hide everything from ARIA except the Modal Body
return (0, _ariaHidden.suppressOthers)(modalElementRef.current);
(0, import_react.useEffect)(() => {
if (modalElementRef.current && show && import_shared.stack[import_shared.stack.length - 1] === modalElementRef) {
return (0, import_aria_hidden.suppressOthers)(modalElementRef.current);
}
}, [show]);
return /*#__PURE__*/_react.default.createElement(_shared.ClayPortal, _extends({}, containerProps, {
containerRef: containerElementRef,
subPortalRef: modalElementRef
}), /*#__PURE__*/_react.default.createElement("div", {
"aria-hidden": "true",
className: (0, _classnames.default)('modal-backdrop fade', {
show
}),
style: {
zIndex
}
}), /*#__PURE__*/_react.default.createElement("div", _extends({}, otherProps, {
className: (0, _classnames.default)('fade modal d-block', className, {
show
}),
ref: modalElementRef,
style: {
zIndex: zIndex && zIndex + 10
}
}), /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('modal-dialog', {
[`modal-${size}`]: size,
[`modal-${status}`]: status,
'modal-dialog-centered': center
})
}, /*#__PURE__*/_react.default.createElement("div", {
"aria-labelledby": ariaLabelledby,
"aria-modal": "true",
className: "modal-content",
ref: modalBodyElementRef,
role: role,
tabIndex: -1
}, /*#__PURE__*/_react.default.createElement(_Context.default.Provider, {
value: {
ariaLabelledby,
onClose: () => observer.dispatch(_types.ObserverType.Close),
spritemap,
status
}
}, content && children)))));
};
Modal.Body = _Body.default;
Modal.Footer = _Footer.default;
Modal.Header = _Header.default;
Modal.Item = _Header.Item;
Modal.ItemGroup = _Header.ItemGroup;
Modal.Subtitle = _Header.Subtitle;
Modal.SubtitleSection = _Header.SubtitleSection;
Modal.Title = _Header.Title;
Modal.TitleIndicator = _Header.TitleIndicator;
Modal.TitleSection = _Header.TitleSection;
var _default = exports.default = Modal;
return /* @__PURE__ */ import_react.default.createElement(
import_shared.ClayPortal,
{
...containerProps,
containerRef: containerElementRef,
subPortalRef: modalElementRef
},
/* @__PURE__ */ import_react.default.createElement(
"div",
{
"aria-hidden": "true",
className: (0, import_classnames.default)("modal-backdrop fade", {
show
}),
style: { zIndex }
}
),
/* @__PURE__ */ import_react.default.createElement(
"div",
{
...otherProps,
className: (0, import_classnames.default)("fade modal d-block", className, {
show
}),
ref: modalElementRef,
style: { zIndex: zIndex && zIndex + 10 }
},
/* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-dialog", {
[`modal-${size}`]: size,
[`modal-${status}`]: status,
"modal-dialog-centered": center
})
},
/* @__PURE__ */ import_react.default.createElement(
"div",
{
"aria-labelledby": ariaLabelledby,
"aria-modal": "true",
className: "modal-content",
ref: modalBodyElementRef,
role,
tabIndex: -1
},
/* @__PURE__ */ import_react.default.createElement(
import_Context.default.Provider,
{
value: {
ariaLabelledby,
onClose: () => observer.dispatch(import_types.ObserverType.Close),
spritemap,
status
}
},
content && children
)
)
)
)
);
}
Modal.Body = import_Body.default;
Modal.Footer = import_Footer.default;
Modal.Header = import_Header.default;
Modal.Item = import_Header.Item;
Modal.ItemGroup = import_Header.ItemGroup;
Modal.Subtitle = import_Header.Subtitle;
Modal.SubtitleSection = import_Header.SubtitleSection;
Modal.Title = import_Header.Title;
Modal.TitleIndicator = import_Header.TitleIndicator;
Modal.TitleSection = import_Header.TitleSection;
var Modal_default = Modal;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Provider_exports = {};
__export(Provider_exports, {
Context: () => Context,
default: () => Provider_default
});
exports.default = exports.Context = void 0;
var _react = _interopRequireDefault(require("react"));
var _Modal = _interopRequireDefault(require("./Modal"));
var _useModal = require("./useModal");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
var Action;
(function (Action) {
Action["Close"] = "CLOSE";
Action["Open"] = "OPEN";
})(Action || (Action = {}));
module.exports = __toCommonJS(Provider_exports);
var import_react = __toESM(require("react"));
var import_Modal = __toESM(require("./Modal"));
var import_useModal = require("./useModal");
var Action = /* @__PURE__ */ ((Action2) => {
Action2["Close"] = "CLOSE";
Action2["Open"] = "OPEN";
return Action2;
})(Action || {});
const initialState = {
body: /*#__PURE__*/_react.default.createElement("div", null),
body: /* @__PURE__ */ import_react.default.createElement("div", null),
footer: [],
onClose: () => {},
onClose: () => {
},
visible: false
};
const reducer = (_state, action) => {
function reducer(_state, action) {
switch (action.type) {
case 1:
case Action.Open:
return {
...action.payload,
visible: true
};
case "OPEN" /* Open */:
return { ...action.payload, visible: true };
case 0:
case Action.Close:
case "CLOSE" /* Close */:
return initialState;

@@ -40,30 +61,14 @@ default:

}
};
const Context = exports.Context = /*#__PURE__*/_react.default.createContext([initialState, () => {}]);
const ModalProvider = _ref => {
let {
children,
spritemap
} = _ref;
const [{
visible,
...otherState
}, dispatch] = _react.default.useReducer(reducer, initialState);
const {
observer,
onClose
} = (0, _useModal.useModal)({
onClose: () => dispatch({
type: Action.Close
})
}
const Context = import_react.default.createContext([initialState, () => {
}]);
function ModalProvider({ children, spritemap }) {
const [{ visible, ...otherState }, dispatch] = import_react.default.useReducer(
reducer,
initialState
);
const { observer, onClose } = (0, import_useModal.useModal)({
onClose: () => dispatch({ type: "CLOSE" /* Close */ })
});
const {
body,
center,
footer = [],
header,
size,
status,
url
} = otherState;
const { body, center, footer = [], header, size, status, url } = otherState;
const [first, middle, last] = footer;

@@ -74,18 +79,23 @@ const state = {

};
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, visible && /*#__PURE__*/_react.default.createElement(_Modal.default, {
center: center,
observer: observer,
size: size,
spritemap: spritemap,
status: status
}, header && /*#__PURE__*/_react.default.createElement(_Modal.default.Header, null, header), /*#__PURE__*/_react.default.createElement(_Modal.default.Body, {
url: url
}, body), !!footer.length && /*#__PURE__*/_react.default.createElement(_Modal.default.Footer, {
first: first,
last: last,
middle: middle
})), /*#__PURE__*/_react.default.createElement(Context.Provider, {
value: [state, dispatch]
}, children));
};
var _default = exports.default = ModalProvider;
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, visible && /* @__PURE__ */ import_react.default.createElement(
import_Modal.default,
{
center,
observer,
size,
spritemap,
status
},
header && /* @__PURE__ */ import_react.default.createElement(import_Modal.default.Header, null, header),
/* @__PURE__ */ import_react.default.createElement(import_Modal.default.Body, { url }, body),
!!footer.length && /* @__PURE__ */ import_react.default.createElement(
import_Modal.default.Footer,
{
first,
last,
middle
}
)
), /* @__PURE__ */ import_react.default.createElement(Context.Provider, { value: [state, dispatch] }, children));
}
var Provider_default = ModalProvider;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Subtitle_exports = {};
__export(Subtitle_exports, {
default: () => Subtitle_default
});
exports.default = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const ItemGroup = _ref => {
let {
children,
className,
...otherProps
} = _ref;
return /*#__PURE__*/_react.default.createElement("div", _extends({
className: (0, _classnames.default)('modal-subtitle', className)
}, otherProps), children);
};
var _default = exports.default = ItemGroup;
module.exports = __toCommonJS(Subtitle_exports);
var import_classnames = __toESM(require("classnames"));
var import_react = __toESM(require("react"));
function ItemGroup({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: (0, import_classnames.default)("modal-subtitle", className),
...otherProps
},
children
);
}
var Subtitle_default = ItemGroup;
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var types_exports = {};
__export(types_exports, {
ObserverType: () => ObserverType
});
exports.ObserverType = void 0;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
let ObserverType = exports.ObserverType = void 0;
(function (ObserverType) {
ObserverType[ObserverType["Close"] = 0] = "Close";
ObserverType[ObserverType["Open"] = 1] = "Open";
ObserverType[ObserverType["RestoreFocus"] = 2] = "RestoreFocus";
})(ObserverType || (exports.ObserverType = ObserverType = {}));
module.exports = __toCommonJS(types_exports);
var ObserverType = /* @__PURE__ */ ((ObserverType2) => {
ObserverType2[ObserverType2["Close"] = 0] = "Close";
ObserverType2[ObserverType2["Open"] = 1] = "Open";
ObserverType2[ObserverType2["RestoreFocus"] = 2] = "RestoreFocus";
return ObserverType2;
})(ObserverType || {});
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var useModal_exports = {};
__export(useModal_exports, {
useModal: () => useModal
});
exports.useModal = void 0;
var _react = require("react");
var _types = require("./types");
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
const delay = fn => {
module.exports = __toCommonJS(useModal_exports);
var import_react = require("react");
var import_types = require("./types");
function delay(fn) {
return setTimeout(() => {
fn();
}, 100);
};
const modalOpenClassName = 'modal-open';
const useModal = function () {
let {
defaultOpen = false,
onClose
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const [open, setOpen] = (0, _react.useState)(defaultOpen);
const [visible, setVisible] = (0, _react.useState)([false, false]);
const timerIdRef = (0, _react.useRef)(null);
const restoreTriggerRef = (0, _react.useRef)(null);
/**
* Control the close of the modal to create the component's "unmount"
* animation and call the onClose prop with delay.
*/
}
const modalOpenClassName = "modal-open";
function useModal({ defaultOpen = false, onClose } = {}) {
const [open, setOpen] = (0, import_react.useState)(defaultOpen);
const [visible, setVisible] = (0, import_react.useState)([false, false]);
const timerIdRef = (0, import_react.useRef)(null);
const restoreTriggerRef = (0, import_react.useRef)(null);
const handleCloseModal = () => {

@@ -56,9 +59,9 @@ document.body.classList.remove(modalOpenClassName);

switch (type) {
case _types.ObserverType.Close:
case import_types.ObserverType.Close:
handleCloseModal();
break;
case _types.ObserverType.Open:
case import_types.ObserverType.Open:
handleOpenModal();
break;
case _types.ObserverType.RestoreFocus:
case import_types.ObserverType.RestoreFocus:
restoreTriggerRef.current = payload;

@@ -70,3 +73,3 @@ break;

};
const onOpenChange = (0, _react.useCallback)(value => {
const onOpenChange = (0, import_react.useCallback)((value) => {
if (value) {

@@ -78,3 +81,3 @@ handleOpenModal();

}, []);
(0, _react.useEffect)(() => {
(0, import_react.useEffect)(() => {
return () => {

@@ -96,3 +99,2 @@ document.body.classList.remove(modalOpenClassName);

};
};
exports.useModal = useModal;
}
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -5,0 +5,0 @@ import React from 'react';

@@ -1,22 +0,15 @@

function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import classNames from 'classnames';
import React, { useEffect, useRef } from 'react';
const Body = _ref => {
let {
children,
className,
iFrameProps = {},
scrollable,
url,
...otherProps
} = _ref;
import classNames from "classnames";
import React, { useEffect, useRef } from "react";
function Body({
children,
className,
iFrameProps = {},
scrollable,
url,
...otherProps
}) {
const elementRef = useRef(null);
useEffect(() => {
const onKeyDown = event => {
if (elementRef.current && (event.key === 'ArrowUp' || event.key === 'ArrowDown') && !elementRef.current.contains(document.activeElement)) {
const onKeyDown = (event) => {
if (elementRef.current && (event.key === "ArrowUp" || event.key === "ArrowDown") && !elementRef.current.contains(document.activeElement)) {
if (event.defaultPrevented) {

@@ -28,19 +21,24 @@ return;

};
document.addEventListener('keydown', onKeyDown);
document.addEventListener("keydown", onKeyDown);
return () => {
document.removeEventListener('keydown', onKeyDown);
document.removeEventListener("keydown", onKeyDown);
};
}, [elementRef]);
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-body', className, {
'inline-scroller': scrollable,
'modal-body-iframe': url
}),
ref: elementRef,
tabIndex: scrollable ? -1 : undefined
}, otherProps), url ? /*#__PURE__*/React.createElement("iframe", _extends({}, iFrameProps, {
src: url,
title: url
})) : children);
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-body", className, {
"inline-scroller": scrollable,
"modal-body-iframe": url
}),
ref: elementRef,
tabIndex: scrollable ? -1 : void 0,
...otherProps
},
url ? /* @__PURE__ */ React.createElement("iframe", { ...iFrameProps, src: url, title: url }) : children
);
}
var Body_default = Body;
export {
Body_default as default
};
export default Body;

@@ -1,9 +0,7 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import React from 'react';
const context = /*#__PURE__*/React.createContext({});
context.displayName = 'ClayModalContext';
export default context;
import React from "react";
const context = React.createContext({});
context.displayName = "ClayModalContext";
var Context_default = context;
export {
Context_default as default
};

@@ -1,27 +0,9 @@

function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import classNames from 'classnames';
import React from 'react';
const Footer = _ref => {
let {
className,
first,
last,
middle,
...otherProps
} = _ref;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-footer', className)
}, otherProps), /*#__PURE__*/React.createElement("div", {
className: "modal-item-first"
}, first), /*#__PURE__*/React.createElement("div", {
className: "modal-item"
}, middle), /*#__PURE__*/React.createElement("div", {
className: "modal-item-last"
}, last));
import classNames from "classnames";
import React from "react";
function Footer({ className, first, last, middle, ...otherProps }) {
return /* @__PURE__ */ React.createElement("div", { className: classNames("modal-footer", className), ...otherProps }, /* @__PURE__ */ React.createElement("div", { className: "modal-item-first" }, first), /* @__PURE__ */ React.createElement("div", { className: "modal-item" }, middle), /* @__PURE__ */ React.createElement("div", { className: "modal-item-last" }, last));
}
var Footer_default = Footer;
export {
Footer_default as default
};
export default Footer;

@@ -1,147 +0,170 @@

function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import ClayButton from '@clayui/button';
import ClayIcon from '@clayui/icon';
import classNames from 'classnames';
import React from 'react';
import Context from "./Context.js";
export const ItemGroup = _ref => {
let {
children,
className,
...otherProps
} = _ref;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-item-group', className)
}, otherProps), children);
};
export const Item = _ref2 => {
let {
children,
className,
shrink,
...otherProps
} = _ref2;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-item', className, {
'modal-item-shrink': shrink
})
}, otherProps), children);
};
export const TitleSection = _ref3 => {
let {
children,
className,
...otherProps
} = _ref3;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-title-section', className)
}, otherProps), children);
};
export const Title = _ref4 => {
let {
children,
className,
...otherProps
} = _ref4;
const {
ariaLabelledby
} = React.useContext(Context);
return /*#__PURE__*/React.createElement("h1", _extends({
className: classNames('modal-title', className),
tabIndex: -1
}, otherProps, {
id: ariaLabelledby
}), children);
};
export const TitleIndicator = _ref5 => {
let {
children,
className,
...otherProps
} = _ref5;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-title-indicator', className)
}, otherProps), children);
};
export const SubtitleSection = _ref6 => {
let {
children,
className,
...otherProps
} = _ref6;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-subtitle-section', className)
}, otherProps), children);
};
export const Subtitle = _ref7 => {
let {
children,
className,
...otherProps
} = _ref7;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-subtitle', className)
}, otherProps), children);
};
import ClayButton from "@clayui/button";
import ClayIcon from "@clayui/icon";
import classNames from "classnames";
import React from "react";
import Context from "./Context";
function ItemGroup({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-item-group", className),
...otherProps
},
children
);
}
function Item({ children, className, shrink, ...otherProps }) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-item", className, {
"modal-item-shrink": shrink
}),
...otherProps
},
children
);
}
function TitleSection({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-title-section", className),
...otherProps
},
children
);
}
function Title({
children,
className,
...otherProps
}) {
const { ariaLabelledby } = React.useContext(Context);
return /* @__PURE__ */ React.createElement(
"h1",
{
className: classNames("modal-title", className),
tabIndex: -1,
...otherProps,
id: ariaLabelledby
},
children
);
}
function TitleIndicator({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-title-indicator", className),
...otherProps
},
children
);
}
function SubtitleSection({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-subtitle-section", className),
...otherProps
},
children
);
}
function Subtitle({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-subtitle", className),
...otherProps
},
children
);
}
const ICON_MAP = {
danger: 'exclamation-full',
info: 'info-circle',
success: 'check-circle-full',
warning: 'warning-full'
danger: "exclamation-full",
info: "info-circle",
success: "check-circle-full",
warning: "warning-full"
};
const HighLevel = _ref8 => {
let {
children,
closeButtonAriaLabel = 'Close',
onClose,
spritemap,
status
} = _ref8;
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Title, null, status && /*#__PURE__*/React.createElement(TitleIndicator, null, /*#__PURE__*/React.createElement(ClayIcon, {
spritemap: spritemap,
symbol: ICON_MAP[status]
})), children), /*#__PURE__*/React.createElement(ClayButton, {
"aria-label": closeButtonAriaLabel,
className: "close",
displayType: "unstyled",
onClick: onClose
}, /*#__PURE__*/React.createElement(ClayIcon, {
spritemap: spritemap,
symbol: "times"
})));
function HighLevel({
children,
closeButtonAriaLabel = "Close",
onClose,
spritemap,
status
}) {
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Title, null, status && /* @__PURE__ */ React.createElement(TitleIndicator, null, /* @__PURE__ */ React.createElement(
ClayIcon,
{
spritemap,
symbol: ICON_MAP[status]
}
)), children), /* @__PURE__ */ React.createElement(
ClayButton,
{
"aria-label": closeButtonAriaLabel,
className: "close",
displayType: "unstyled",
onClick: onClose
},
/* @__PURE__ */ React.createElement(ClayIcon, { spritemap, symbol: "times" })
));
}
function ClayModalHeader({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement("div", { className: classNames("modal-header", className), ...otherProps }, children);
}
function Header({
children,
closeButtonAriaLabel,
withTitle = true,
...otherProps
}) {
const { onClose, spritemap, status } = React.useContext(Context);
return /* @__PURE__ */ React.createElement(ClayModalHeader, { ...otherProps }, withTitle && /* @__PURE__ */ React.createElement(
HighLevel,
{
closeButtonAriaLabel,
onClose,
spritemap,
status
},
children
), !withTitle && children);
}
var Header_default = Header;
export {
Item,
ItemGroup,
Subtitle,
SubtitleSection,
Title,
TitleIndicator,
TitleSection,
Header_default as default
};
const ClayModalHeader = _ref9 => {
let {
children,
className,
...otherProps
} = _ref9;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-header', className)
}, otherProps), children);
};
const Header = _ref10 => {
let {
children,
closeButtonAriaLabel,
withTitle = true,
...otherProps
} = _ref10;
const {
onClose,
spritemap,
status
} = React.useContext(Context);
return /*#__PURE__*/React.createElement(ClayModalHeader, otherProps, withTitle && /*#__PURE__*/React.createElement(HighLevel, {
closeButtonAriaLabel: closeButtonAriaLabel,
onClose: onClose,
spritemap: spritemap,
status: status
}, children), !withTitle && children);
};
export default Header;

@@ -1,24 +0,15 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import { FOCUSABLE_ELEMENTS, Keys, stack } from '@clayui/shared';
import React, { useEffect } from 'react';
/**
* A hook that takes care of controlling click, keyup and keydown events
* respectively close the modal after a click on the overlay, close the
* modal by pressing the ESC key and control the focus within the Modal.
*/
const useUserInteractions = (modalElementRef, modalBodyElementRef, onClick, show, content) => {
import { FOCUSABLE_ELEMENTS, Keys, stack } from "@clayui/shared";
import React, { useEffect } from "react";
function useUserInteractions(modalElementRef, modalBodyElementRef, onClick, show, content) {
const mouseEventTargetRef = React.useRef(null);
const getFocusableNodes = () => {
if (modalBodyElementRef.current) {
const nodes = modalBodyElementRef.current.querySelectorAll(FOCUSABLE_ELEMENTS);
return Object.keys(nodes).map(key => nodes[key]);
const nodes = modalBodyElementRef.current.querySelectorAll(
FOCUSABLE_ELEMENTS
);
return Object.keys(nodes).map((key) => nodes[key]);
}
return [];
};
const handleKeydown = event => {
const handleKeydown = (event) => {
if (event.key === Keys.Esc && stack[stack.length - 1] === modalElementRef) {

@@ -32,3 +23,5 @@ onClick();

const focusableNodes = getFocusableNodes();
const focusedItemIndex = focusableNodes.indexOf(document.activeElement);
const focusedItemIndex = focusableNodes.indexOf(
document.activeElement
);
if (event.shiftKey && focusedItemIndex === 0) {

@@ -45,10 +38,6 @@ focusableNodes[focusableNodes.length - 1].focus();

};
const handleDocumentMouseDown = event => {
// We keep the `event.target` to check later in the click event if
// the target is the same, otherwise, we are assuming that the element
// has been removed from the DOM.
const handleDocumentMouseDown = (event) => {
mouseEventTargetRef.current = event.target;
};
const handleDocumentMouseUp = event => {
const handleDocumentMouseUp = (event) => {
if (event.defaultPrevented) {

@@ -64,18 +53,15 @@ mouseEventTargetRef.current = null;

};
/**
* Just listen for keyup, keydown, and click when
* changeAttachEvent is true.
*/
useEffect(() => {
document.addEventListener('keydown', handleKeydown);
document.addEventListener('mousedown', handleDocumentMouseDown);
document.addEventListener('mouseup', handleDocumentMouseUp);
document.addEventListener("keydown", handleKeydown);
document.addEventListener("mousedown", handleDocumentMouseDown);
document.addEventListener("mouseup", handleDocumentMouseUp);
return () => {
document.removeEventListener('keydown', handleKeydown);
document.removeEventListener('mousedown', handleDocumentMouseDown);
document.removeEventListener('mouseup', handleDocumentMouseUp);
document.removeEventListener("keydown", handleKeydown);
document.removeEventListener("mousedown", handleDocumentMouseDown);
document.removeEventListener("mouseup", handleDocumentMouseUp);
};
}, [show, content]);
}
export {
useUserInteractions
};
export { useUserInteractions };

@@ -1,11 +0,30 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import Body from "./Body.js";
import Header, { Item, ItemGroup, Subtitle, SubtitleSection, Title, TitleIndicator, TitleSection } from "./Header.js";
import Modal from "./Modal.js";
import ClayModalProvider, { Context } from "./Provider.js";
import { useModal } from "./useModal.js";
export { ClayModalProvider, Modal, useModal, Context, Body, Header, Item, ItemGroup, Subtitle, SubtitleSection, Title, TitleIndicator, TitleSection };
export default Modal;
import Body from "./Body";
import Header, {
Item,
ItemGroup,
Subtitle,
SubtitleSection,
Title,
TitleIndicator,
TitleSection
} from "./Header";
import Modal from "./Modal";
import ClayModalProvider, { Context } from "./Provider";
import { useModal } from "./useModal";
var src_default = Modal;
export {
Body,
ClayModalProvider,
Context,
Header,
Item,
ItemGroup,
Modal,
Subtitle,
SubtitleSection,
Title,
TitleIndicator,
TitleSection,
src_default as default,
useModal
};

@@ -1,18 +0,20 @@

function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import { ClayPortal, stack } from '@clayui/shared';
import { suppressOthers } from 'aria-hidden';
import classNames from 'classnames';
import React, { useEffect, useMemo, useRef } from 'react';
import warning from 'warning';
import Body from "./Body.js";
import Context from "./Context.js";
import Footer from "./Footer.js";
import Header, { Item, ItemGroup, Subtitle, SubtitleSection, Title, TitleIndicator, TitleSection } from "./Header.js";
import { useUserInteractions } from "./Hook.js";
import { ObserverType } from "./types.js";
import { ClayPortal, stack } from "@clayui/shared";
import { suppressOthers } from "aria-hidden";
import classNames from "classnames";
import React, { useEffect, useMemo, useRef } from "react";
import warning from "warning";
import Body from "./Body";
import Context from "./Context";
import Footer from "./Footer";
import Header, {
Item,
ItemGroup,
Subtitle,
SubtitleSection,
Title,
TitleIndicator,
TitleSection
} from "./Header";
import { useUserInteractions } from "./Hook";
import { ObserverType } from "./types";
const warningMessage = `You need to pass the 'observer' prop to ClayModal for everything to work fine, use the 'useModal' hook that exposes the observer.

@@ -29,23 +31,28 @@

let counter = 0;
const Modal = _ref => {
let {
center,
children,
className,
containerElementRef,
containerProps = {},
disableAutoClose = false,
observer,
role = 'dialog',
size,
spritemap,
status,
zIndex,
...otherProps
} = _ref;
function Modal({
center,
children,
className,
containerElementRef,
containerProps = {},
disableAutoClose = false,
observer,
role = "dialog",
size,
spritemap,
status,
zIndex,
...otherProps
}) {
const modalElementRef = useRef(null);
const modalBodyElementRef = useRef(null);
const [show, content] = observer && observer.mutation ? observer.mutation : [false, false];
"production" !== "production" ? warning(observer !== undefined, warningMessage) : void 0;
useUserInteractions(modalElementRef, modalBodyElementRef, () => !disableAutoClose && observer.dispatch(ObserverType.Close), show, content);
warning(observer !== void 0, warningMessage);
useUserInteractions(
modalElementRef,
modalBodyElementRef,
() => !disableAutoClose && observer.dispatch(ObserverType.Close),
show,
content
);
useEffect(() => {

@@ -57,3 +64,3 @@ observer.dispatch(ObserverType.RestoreFocus, document.activeElement);

if (modalBodyElementRef.current && show && content) {
const focusedElement = modalBodyElementRef.current.querySelector('h1');
const focusedElement = modalBodyElementRef.current.querySelector("h1");
if (focusedElement) {

@@ -83,47 +90,68 @@ focusedElement.focus();

if (modalElementRef.current && show && stack[stack.length - 1] === modalElementRef) {
// Hide everything from ARIA except the Modal Body
return suppressOthers(modalElementRef.current);
}
}, [show]);
return /*#__PURE__*/React.createElement(ClayPortal, _extends({}, containerProps, {
containerRef: containerElementRef,
subPortalRef: modalElementRef
}), /*#__PURE__*/React.createElement("div", {
"aria-hidden": "true",
className: classNames('modal-backdrop fade', {
show
}),
style: {
zIndex
}
}), /*#__PURE__*/React.createElement("div", _extends({}, otherProps, {
className: classNames('fade modal d-block', className, {
show
}),
ref: modalElementRef,
style: {
zIndex: zIndex && zIndex + 10
}
}), /*#__PURE__*/React.createElement("div", {
className: classNames('modal-dialog', {
[`modal-${size}`]: size,
[`modal-${status}`]: status,
'modal-dialog-centered': center
})
}, /*#__PURE__*/React.createElement("div", {
"aria-labelledby": ariaLabelledby,
"aria-modal": "true",
className: "modal-content",
ref: modalBodyElementRef,
role: role,
tabIndex: -1
}, /*#__PURE__*/React.createElement(Context.Provider, {
value: {
ariaLabelledby,
onClose: () => observer.dispatch(ObserverType.Close),
spritemap,
status
}
}, content && children)))));
};
return /* @__PURE__ */ React.createElement(
ClayPortal,
{
...containerProps,
containerRef: containerElementRef,
subPortalRef: modalElementRef
},
/* @__PURE__ */ React.createElement(
"div",
{
"aria-hidden": "true",
className: classNames("modal-backdrop fade", {
show
}),
style: { zIndex }
}
),
/* @__PURE__ */ React.createElement(
"div",
{
...otherProps,
className: classNames("fade modal d-block", className, {
show
}),
ref: modalElementRef,
style: { zIndex: zIndex && zIndex + 10 }
},
/* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-dialog", {
[`modal-${size}`]: size,
[`modal-${status}`]: status,
"modal-dialog-centered": center
})
},
/* @__PURE__ */ React.createElement(
"div",
{
"aria-labelledby": ariaLabelledby,
"aria-modal": "true",
className: "modal-content",
ref: modalBodyElementRef,
role,
tabIndex: -1
},
/* @__PURE__ */ React.createElement(
Context.Provider,
{
value: {
ariaLabelledby,
onClose: () => observer.dispatch(ObserverType.Close),
spritemap,
status
}
},
content && children
)
)
)
)
);
}
Modal.Body = Body;

@@ -139,2 +167,5 @@ Modal.Footer = Footer;

Modal.TitleSection = TitleSection;
export default Modal;
var Modal_default = Modal;
export {
Modal_default as default
};

@@ -1,30 +0,23 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import React from 'react';
import ClayModal from "./Modal.js";
import { useModal } from "./useModal.js";
var Action;
(function (Action) {
Action["Close"] = "CLOSE";
Action["Open"] = "OPEN";
})(Action || (Action = {}));
import React from "react";
import ClayModal from "./Modal";
import { useModal } from "./useModal";
var Action = /* @__PURE__ */ ((Action2) => {
Action2["Close"] = "CLOSE";
Action2["Open"] = "OPEN";
return Action2;
})(Action || {});
const initialState = {
body: /*#__PURE__*/React.createElement("div", null),
body: /* @__PURE__ */ React.createElement("div", null),
footer: [],
onClose: () => {},
onClose: () => {
},
visible: false
};
const reducer = (_state, action) => {
function reducer(_state, action) {
switch (action.type) {
case 1:
case Action.Open:
return {
...action.payload,
visible: true
};
case "OPEN" /* Open */:
return { ...action.payload, visible: true };
case 0:
case Action.Close:
case "CLOSE" /* Close */:
return initialState;

@@ -34,30 +27,14 @@ default:

}
};
const Context = /*#__PURE__*/React.createContext([initialState, () => {}]);
const ModalProvider = _ref => {
let {
children,
spritemap
} = _ref;
const [{
visible,
...otherState
}, dispatch] = React.useReducer(reducer, initialState);
const {
observer,
onClose
} = useModal({
onClose: () => dispatch({
type: Action.Close
})
}
const Context = React.createContext([initialState, () => {
}]);
function ModalProvider({ children, spritemap }) {
const [{ visible, ...otherState }, dispatch] = React.useReducer(
reducer,
initialState
);
const { observer, onClose } = useModal({
onClose: () => dispatch({ type: "CLOSE" /* Close */ })
});
const {
body,
center,
footer = [],
header,
size,
status,
url
} = otherState;
const { body, center, footer = [], header, size, status, url } = otherState;
const [first, middle, last] = footer;

@@ -68,19 +45,27 @@ const state = {

};
return /*#__PURE__*/React.createElement(React.Fragment, null, visible && /*#__PURE__*/React.createElement(ClayModal, {
center: center,
observer: observer,
size: size,
spritemap: spritemap,
status: status
}, header && /*#__PURE__*/React.createElement(ClayModal.Header, null, header), /*#__PURE__*/React.createElement(ClayModal.Body, {
url: url
}, body), !!footer.length && /*#__PURE__*/React.createElement(ClayModal.Footer, {
first: first,
last: last,
middle: middle
})), /*#__PURE__*/React.createElement(Context.Provider, {
value: [state, dispatch]
}, children));
return /* @__PURE__ */ React.createElement(React.Fragment, null, visible && /* @__PURE__ */ React.createElement(
ClayModal,
{
center,
observer,
size,
spritemap,
status
},
header && /* @__PURE__ */ React.createElement(ClayModal.Header, null, header),
/* @__PURE__ */ React.createElement(ClayModal.Body, { url }, body),
!!footer.length && /* @__PURE__ */ React.createElement(
ClayModal.Footer,
{
first,
last,
middle
}
)
), /* @__PURE__ */ React.createElement(Context.Provider, { value: [state, dispatch] }, children));
}
var Provider_default = ModalProvider;
export {
Context,
Provider_default as default
};
export { Context };
export default ModalProvider;

@@ -1,19 +0,20 @@

function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import classNames from 'classnames';
import React from 'react';
const ItemGroup = _ref => {
let {
children,
className,
...otherProps
} = _ref;
return /*#__PURE__*/React.createElement("div", _extends({
className: classNames('modal-subtitle', className)
}, otherProps), children);
import classNames from "classnames";
import React from "react";
function ItemGroup({
children,
className,
...otherProps
}) {
return /* @__PURE__ */ React.createElement(
"div",
{
className: classNames("modal-subtitle", className),
...otherProps
},
children
);
}
var Subtitle_default = ItemGroup;
export {
Subtitle_default as default
};
export default ItemGroup;

@@ -1,11 +0,9 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
export let ObserverType;
(function (ObserverType) {
ObserverType[ObserverType["Close"] = 0] = "Close";
ObserverType[ObserverType["Open"] = 1] = "Open";
ObserverType[ObserverType["RestoreFocus"] = 2] = "RestoreFocus";
})(ObserverType || (ObserverType = {}));
var ObserverType = /* @__PURE__ */ ((ObserverType2) => {
ObserverType2[ObserverType2["Close"] = 0] = "Close";
ObserverType2[ObserverType2["Open"] = 1] = "Open";
ObserverType2[ObserverType2["RestoreFocus"] = 2] = "RestoreFocus";
return ObserverType2;
})(ObserverType || {});
export {
ObserverType
};

@@ -1,19 +0,10 @@

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
*/
import { useCallback, useEffect, useRef, useState } from 'react';
import { ObserverType } from "./types.js";
const delay = fn => {
import { useCallback, useEffect, useRef, useState } from "react";
import { ObserverType } from "./types";
function delay(fn) {
return setTimeout(() => {
fn();
}, 100);
};
const modalOpenClassName = 'modal-open';
export const useModal = function () {
let {
defaultOpen = false,
onClose
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
}
const modalOpenClassName = "modal-open";
function useModal({ defaultOpen = false, onClose } = {}) {
const [open, setOpen] = useState(defaultOpen);

@@ -23,7 +14,2 @@ const [visible, setVisible] = useState([false, false]);

const restoreTriggerRef = useRef(null);
/**
* Control the close of the modal to create the component's "unmount"
* animation and call the onClose prop with delay.
*/
const handleCloseModal = () => {

@@ -64,3 +50,3 @@ document.body.classList.remove(modalOpenClassName);

};
const onOpenChange = useCallback(value => {
const onOpenChange = useCallback((value) => {
if (value) {

@@ -89,2 +75,5 @@ handleOpenModal();

};
};
}
export {
useModal
};
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -23,3 +23,3 @@ import React from 'react';

}
declare const Footer: ({ className, first, last, middle, ...otherProps }: IFooterProps) => React.JSX.Element;
declare function Footer({ className, first, last, middle, ...otherProps }: IFooterProps): React.JSX.Element;
export default Footer;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
import React from 'react';
export declare const ItemGroup: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare function ItemGroup({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export interface IItemProps extends React.HTMLAttributes<HTMLDivElement> {

@@ -13,8 +13,8 @@ /**

}
export declare const Item: ({ children, className, shrink, ...otherProps }: IItemProps) => React.JSX.Element;
export declare const TitleSection: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare const Title: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare const TitleIndicator: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare const SubtitleSection: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare const Subtitle: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
export declare function Item({ children, className, shrink, ...otherProps }: IItemProps): React.JSX.Element;
export declare function TitleSection({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export declare function Title({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export declare function TitleIndicator({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export declare function SubtitleSection({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export declare function Subtitle({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export interface IHeaderProps extends React.HTMLAttributes<HTMLDivElement> {

@@ -31,3 +31,3 @@ /**

}
declare const Header: ({ children, closeButtonAriaLabel, withTitle, ...otherProps }: IHeaderProps) => React.JSX.Element;
declare function Header({ children, closeButtonAriaLabel, withTitle, ...otherProps }: IHeaderProps): React.JSX.Element;
export default Header;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -11,3 +11,3 @@ import React from 'react';

*/
declare const useUserInteractions: (modalElementRef: React.MutableRefObject<any>, modalBodyElementRef: React.MutableRefObject<any>, onClick: () => void, show: boolean, content: boolean) => void;
declare function useUserInteractions(modalElementRef: React.MutableRefObject<any>, modalBodyElementRef: React.MutableRefObject<any>, onClick: () => void, show: boolean, content: boolean): void;
export { useUserInteractions };
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -5,0 +5,0 @@ import Body from './Body';

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -29,6 +29,2 @@ import { IPortalBaseProps } from '@clayui/shared';

/**
* The size of element modal.
*/
size?: 'full-screen' | 'lg' | 'sm';
/**
* Observer is Modal's communication system with `useModal`

@@ -39,2 +35,6 @@ * hook, adds observer from `useModal` hook here.

/**
* The size of element modal.
*/
size?: 'full-screen' | 'lg' | 'sm';
/**
* Allows setting a custom z-index value, overriding the default one which is 1040, modal body z-index will be +10 of this value

@@ -44,15 +44,15 @@ */

}
declare const Modal: {
({ center, children, className, containerElementRef, containerProps, disableAutoClose, observer, role, size, spritemap, status, zIndex, ...otherProps }: IProps): React.JSX.Element;
Body: ({ children, className, iFrameProps, scrollable, url, ...otherProps }: import("./Body").IBodyProps) => React.JSX.Element;
Footer: ({ className, first, last, middle, ...otherProps }: import("./Footer").IFooterProps) => React.JSX.Element;
Header: ({ children, closeButtonAriaLabel, withTitle, ...otherProps }: import("./Header").IHeaderProps) => React.JSX.Element;
Item: ({ children, className, shrink, ...otherProps }: import("./Header").IItemProps) => React.JSX.Element;
ItemGroup: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
Subtitle: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
SubtitleSection: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
Title: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
TitleIndicator: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
TitleSection: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
};
declare function Modal({ center, children, className, containerElementRef, containerProps, disableAutoClose, observer, role, size, spritemap, status, zIndex, ...otherProps }: IProps): React.JSX.Element;
declare namespace Modal {
var Body: typeof import("./Body").default;
var Footer: typeof import("./Footer").default;
var Header: typeof import("./Header").default;
var Item: typeof import("./Header").Item;
var ItemGroup: typeof import("./Header").ItemGroup;
var Subtitle: typeof import("./Header").Subtitle;
var SubtitleSection: typeof import("./Header").SubtitleSection;
var Title: typeof import("./Header").Title;
var TitleIndicator: typeof import("./Header").TitleIndicator;
var TitleSection: typeof import("./Header").TitleSection;
}
export default Modal;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -52,4 +52,4 @@ import React from 'react';

declare type TAction = {
payload: TState;
type: Action.Open | 1;
payload: TState;
} | {

@@ -62,4 +62,4 @@ type: Action.Close | 0;

declare const Context: React.Context<TProvider>;
declare const ModalProvider: ({ children, spritemap }: IProps) => React.JSX.Element;
declare function ModalProvider({ children, spritemap }: IProps): React.JSX.Element;
export { Context };
export default ModalProvider;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
import React from 'react';
declare const ItemGroup: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
declare function ItemGroup({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
export default ItemGroup;
/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -5,0 +5,0 @@ export declare type Status = 'danger' | 'info' | 'success' | 'warning';

/**
* SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/

@@ -36,3 +36,3 @@ import { Observer } from './types';

};
export declare const useModal: ({ defaultOpen, onClose, }?: Props) => Return;
export declare function useModal({ defaultOpen, onClose }?: Props): Return;
export {};
{
"name": "@clayui/modal",
"version": "3.156.0",
"browserslist": [
"extends browserslist-config-clay"
],
"dependencies": {
"@clayui/button": "^3.157.0-alpha.1",
"@clayui/icon": "^3.157.0-alpha.1",
"@clayui/shared": "^3.157.0-alpha.1",
"aria-hidden": "^1.2.2",
"classnames": "2.3.1",
"warning": "^4.0.3"
},
"description": "ClayModal component",
"files": [
"lib"
],
"keywords": [
"clay",
"react"
],
"license": "BSD-3-Clause",
"main": "lib/cjs/index.js",
"name": "@clayui/modal",
"peerDependencies": {
"@clayui/css": "^3.157.0-alpha.1",
"react": "^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
},
"repository": "https://github.com/liferay/clay",
"main": "lib/cjs/index.js",
"scripts": {
"build": "yarn build:cjs && yarn build:esm",
"build:cjs": "cross-env NODE_ENV=production node ../build-package-esbuild.js --format=cjs --outdir=lib/cjs",
"build:esm": "cross-env NODE_ENV=production node ../build-package-esbuild.js --format=esm --outdir=lib/esm",
"buildTypes": "cross-env NODE_ENV=production tsc --project ./tsconfig.declarations.json",
"test": "jest --config ../../jest.config.js"
},
"version": "3.157.0-alpha.1",
"module": "lib/esm/index.js",

@@ -17,34 +47,3 @@ "exports": {

"types": "lib/index.d.ts",
"ts:main": "src/index.tsx",
"files": [
"lib"
],
"scripts": {
"build": "yarn build:cjs && yarn build:esm",
"build:cjs": "cross-env NODE_ENV=production babel src --root-mode upward --out-dir lib/cjs --extensions .ts,.tsx",
"build:esm": "cross-env NODE_ENV=production babel src --root-mode upward --out-dir lib/esm --extensions .ts,.tsx --env-name esm",
"buildTypes": "cross-env NODE_ENV=production tsc --project ./tsconfig.declarations.json",
"test": "jest --config ../../jest.config.js"
},
"keywords": [
"clay",
"react"
],
"dependencies": {
"@clayui/button": "^3.156.0",
"@clayui/icon": "^3.144.1",
"@clayui/shared": "^3.156.0",
"aria-hidden": "^1.2.2",
"classnames": "^2.2.6",
"warning": "^4.0.3"
},
"peerDependencies": {
"@clayui/css": "3.x",
"react": "^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
},
"browserslist": [
"extends browserslist-config-clay"
],
"gitHead": "55d9470c2c3c9253c7ba7f8dd8bd36fdef0ffe49"
"ts:main": "src/index.tsx"
}

@@ -5,5 +5,5 @@ # `@clayui/modal`

- [Documentation](https://clayui.com/docs/components/modal.html)
- [Changelog](./CHANGELOG.md)
- [Breaking change schedule](./BREAKING.md)
- [Documentation](https://clayui.com/docs/components/modal.html)
- [Changelog](./CHANGELOG.md)
- [Breaking change schedule](./BREAKING.md)

@@ -20,2 +20,2 @@ ## Install

We'd love to get contributions from you! Please, check our [Contributing Guidelines](https://github.com/liferay/clay/blob/master/CONTRIBUTING.md) to see how you can help us improve.
We'd love to get contributions from you! Please, check our [Contributing Guidelines](https://github.com/liferay/clay/blob/master/CONTRIBUTING.md) to see how you can help us improve.