@clayui/modal
Advanced tools
+3
-3
| /** | ||
| * 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; |
+62
-41
| "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; |
+35
-14
| "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; |
+37
-30
| "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; |
+195
-154
| "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; |
+55
-46
| "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; | ||
| } |
+49
-94
| "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; |
+154
-108
| "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; |
+80
-70
| "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; |
+48
-22
| "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; |
+27
-14
| "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 || {}); |
+37
-35
| "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; | ||
| } |
+2
-2
| /** | ||
| * 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'; |
+31
-33
@@ -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 | ||
| }; |
+8
-26
@@ -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; |
+167
-144
@@ -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; |
+22
-36
@@ -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 }; |
+30
-11
@@ -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 | ||
| }; |
+110
-79
@@ -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 | ||
| }; |
+51
-66
@@ -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; |
+19
-18
@@ -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; |
+9
-11
@@ -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 | ||
| }; |
+11
-22
@@ -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 | ||
| }; |
+3
-3
| /** | ||
| * 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; |
+10
-10
| /** | ||
| * 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; |
+3
-3
| /** | ||
| * 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 }; |
+2
-2
| /** | ||
| * 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'; |
+19
-19
| /** | ||
| * 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; |
+2
-2
| /** | ||
| * 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 {}; |
+34
-35
| { | ||
| "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" | ||
| } |
+4
-4
@@ -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. |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Copyleft License
LicenseCopyleft license information was found.
Found 1 instance in 1 package
Mixed license
LicensePackage contains multiple licenses.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Non-permissive License
LicenseA license not known to be considered permissive was found.
Found 1 instance in 1 package
65036
4.94%1922
12.4%3
Infinity%70
-30%2
100%19
-5%1
Infinity%- Removed
Updated