@stenajs-webui/modal 21.24.2 → 21.24.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +38 -38
- package/dist/index.es.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.es.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode("._overlay_quvmp_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;top:0;left:0;right:0;bottom:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_quvmp_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1{background-color:#fff}}._overlay_quvmp_1 ._modal_quvmp_31{max-width:100%;outline:none;pointer-events:none}@media (max-width: 768px){._overlay_quvmp_1 ._modal_quvmp_31{width:100%}}._overlay_quvmp_1 ._content_quvmp_41{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);pointer-events:all;top:calc(var(--swui-metrics-space) * 2);width:var(--swui-modal-width);max-width:var(--swui-modal-max-width)}@media (max-width: 768px){._overlay_quvmp_1 ._content_quvmp_41{top:0;width:100%;max-width:100%}}._overlay_quvmp_1 ._content_quvmp_41{animation:_appear_quvmp_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_quvmp_1 ._content_quvmp_41{box-shadow:none;top:0}}._overlay_quvmp_1 ._content_quvmp_41:focus{outline:0}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle{cursor:move}._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle .draggable-modal-cancel,._overlay_quvmp_1 ._content_quvmp_41._isDraggable_quvmp_70 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_quvmp_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_quvmp_1{0%{opacity:0}to{opacity:1}}._footer_quvmp_101{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_quvmp_105{position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_quvmp_105{position:static;box-shadow:none}}._portal_17ze5_1{--drawer-width: 370px}._portal_17ze5_1 ._overlay_17ze5_4{position:fixed;top:0;right:0;bottom:0;left:0}._portal_17ze5_1 ._content_17ze5_9{box-shadow:var(--swui-shadow-modal);background:#fff;position:absolute;transition:transform var(--swui-animation-time-medium) ease-in-out}._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:var(--swui-metrics-space);border-radius:var(--swui-border-radius)}@media (max-width: 768px){._portal_17ze5_1 ._content_17ze5_9._floating_17ze5_15{margin:0;border-radius:0}}._portal_17ze5_1 ._content_17ze5_9:focus-visible{outline:unset}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{transform:translate(var(--translate-x-outside-screen, 0));overflow-y:auto;top:0;bottom:0}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._afterOpen_17ze5_36{transform:translate(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30._beforeClose_17ze5_40{transform:translate(var(--translate-x-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{transform:translateY(var(--translate-y-outside-screen, 0));overflow-x:auto;left:0;right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._afterOpen_17ze5_36,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._afterOpen_17ze5_36{transform:translateY(0)}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45._beforeClose_17ze5_40,._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46._beforeClose_17ze5_40{transform:translateY(var(--translate-y-outside-screen))}._portal_17ze5_1 ._content_17ze5_9._slideFromLeft_17ze5_29{--translate-x-outside-screen: -100%;width:var(--drawer-width);left:0}._portal_17ze5_1 ._content_17ze5_9._slideFromRight_17ze5_30{--translate-x-outside-screen: 100%;width:var(--drawer-width);right:0}._portal_17ze5_1 ._content_17ze5_9._slideFromTop_17ze5_45{--translate-y-outside-screen: -100%;height:var(--drawer-width);top:0}._portal_17ze5_1 ._content_17ze5_9._slideFromBottom_17ze5_46{--translate-y-outside-screen: 100%;height:var(--drawer-width);bottom:0}._overlay_r9tkq_1{--swui-modal-animation-time: var(--swui-animation-time-fast);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;top:0;left:0;right:0;bottom:0;background-color:var(--swui-modal-overlay-bg-color);overflow:auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;animation:_fadeIn_r9tkq_1 var(--swui-modal-animation-time) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_r9tkq_1{background-color:#fff}}._overlay_r9tkq_1 ._modal_r9tkq_31{max-width:100%;outline:none;pointer-events:none;padding:var(--swui-metrics-space)}._overlay_r9tkq_1 ._content_r9tkq_38{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);animation:_appear_r9tkq_1 var(--swui-animation-time-fast) cubic-bezier(.645,.045,.355,1) both}@media print{._overlay_r9tkq_1 ._content_r9tkq_38{box-shadow:none;top:0}}._overlay_r9tkq_1 ._content_r9tkq_38 :focus{outline:0}._overlay_r9tkq_1 ._content_r9tkq_38._isDraggable_r9tkq_61 .draggable-modal-handle{cursor:move}._overlay_r9tkq_1 ._content_r9tkq_38._isDraggable_r9tkq_61 .draggable-modal-handle .draggable-modal-cancel,._overlay_r9tkq_1 ._content_r9tkq_38._isDraggable_r9tkq_61 .draggable-modal-handle [role=tooltip]{cursor:initial}@keyframes _fadeIn_r9tkq_1{0%{background-color:var(--swui-hidden)}to{background-color:var(--swui-modal-overlay-bg-color)}}@keyframes _appear_r9tkq_1{0%{opacity:0}to{opacity:1}}._footer_r9tkq_92{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_r9tkq_96{position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_r9tkq_96{position:static;box-shadow:none}}._overlay_15dqv_1{--swui-modal-animation-time: var(--swui-animation-time-medium);--swui-modal-overlay-bg-color: var(--swui-overlay-bg-color);--swui-modal-content-bg-color: var(--swui-white);--swui-modal-width: 960px;--swui-modal-max-width: 100%;--swui-modal-header-border-color: var(--lhds-color-ui-300);--swui-modal-shadow: var(--swui-shadow-modal);--swui-modal-footer-shadow: var(--swui-shadow-modal);position:fixed;z-index:10;top:0;left:0;right:0;bottom:0;background-color:var(--swui-modal-overlay-bg-color);display:flex;flex-direction:column;justify-content:flex-start;align-items:center;opacity:0}._overlay_15dqv_1._afterOpen_15dqv_24:not(._beforeClose_15dqv_24){animation:_fadeIn_15dqv_1 var(--swui-modal-animation-time) forwards}._overlay_15dqv_1._beforeClose_15dqv_24{animation:_fadeOut_15dqv_1 var(--swui-modal-animation-time) forwards}@media print{._overlay_15dqv_1{background-color:#fff}}._overlay_15dqv_1 ._modal_15dqv_36{max-width:100%;outline:none;pointer-events:none;padding:calc(var(--swui-metrics-space) * 2);box-sizing:border-box;max-height:100%;transform:translateY(-100%)}@media (max-width: 768px){._overlay_15dqv_1 ._modal_15dqv_36{padding:0;width:100%}}._overlay_15dqv_1 ._modal_15dqv_36._afterOpen_15dqv_24:not(._beforeClose_15dqv_24){animation:_slideIn_15dqv_1 var(--swui-modal-animation-time) forwards}._overlay_15dqv_1 ._modal_15dqv_36._beforeClose_15dqv_24{animation:_slideOut_15dqv_1 var(--swui-modal-animation-time) forwards}._overlay_15dqv_1 ._content_15dqv_59{position:relative;display:block;background:var(--swui-modal-content-bg-color);box-shadow:var(--swui-modal-shadow);border-radius:var(--swui-border-radius-large);pointer-events:all;width:var(--swui-modal-width);max-width:var(--swui-modal-max-width);height:100%;overflow:hidden;overflow-y:auto}@media (max-width: 768px){._overlay_15dqv_1 ._content_15dqv_59{border-radius:0;width:100%;max-width:100%;min-height:100vh}}@media (min-width: 769px){._overlay_15dqv_1 ._content_15dqv_59{border-radius:var(--swui-border-radius-large)}._overlay_15dqv_1 ._content_15dqv_59::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box}._overlay_15dqv_1 ._content_15dqv_59::-webkit-scrollbar{width:16px}}@media print{._overlay_15dqv_1 ._content_15dqv_59{box-shadow:none;top:0}}._overlay_15dqv_1 ._content_15dqv_59 :focus{outline:0}@keyframes _fadeIn_15dqv_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_15dqv_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_15dqv_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_15dqv_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._footer_15dqv_148{background-color:var(--swui-modal-content-bg-color)}._stickyFooter_15dqv_152{position:sticky;bottom:0;box-shadow:var(--swui-modal-footer-shadow)}@media print{._stickyFooter_15dqv_152{position:static;box-shadow:none}}._modal_4fwgb_1{display:flex;justify-content:center;align-items:center;position:fixed;top:0;left:0;right:0;bottom:0;background-color:transparent}._overlay_4fwgb_13{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--swui-overlay-bg-color)}._alertDialog_14t8t_1{border:0;outline:0;border-radius:var(--swui-border-radius-large);margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}._alertDialog_14t8t_1:not([open]){display:none}._alertDialog_14t8t_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22[open]{animation:_slideOut_14t8t_1 .25s forwards}._alertDialog_14t8t_1::backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0d0e1080;animation:_fadeIn_14t8t_1 .25s forwards}._alertDialog_14t8t_1._closing_14t8t_22::backdrop{animation:_fadeOut_14t8t_1 .25s forwards}@keyframes _fadeIn_14t8t_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_14t8t_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_14t8t_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_14t8t_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}._drawerDialog_11g6r_1{max-height:100%;max-width:100%;border:0;outline:0;margin:0;padding:0;overflow-y:auto;overscroll-behavior:contain;box-shadow:#0003 0 0 10px 4px;position:fixed}._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{height:100%;top:0;bottom:0}._drawerDialog_11g6r_1._left_11g6r_13 ._contentWrapper_11g6r_19,._drawerDialog_11g6r_1._right_11g6r_14 ._contentWrapper_11g6r_19{height:100%}@media (max-width: 768px){._drawerDialog_11g6r_1._left_11g6r_13,._drawerDialog_11g6r_1._right_11g6r_14{width:-moz-fit-content;width:fit-content}}._drawerDialog_11g6r_1._left_11g6r_13{left:0;right:unset}._drawerDialog_11g6r_1._left_11g6r_13[open]{animation:_slideInLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._left_11g6r_13._closing_11g6r_36[open]{animation:_slideOutLeft_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14{left:unset;right:0}._drawerDialog_11g6r_1._right_11g6r_14[open]{animation:_slideInRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._right_11g6r_14._closing_11g6r_36[open]{animation:_slideOutRight_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{width:100%;left:0;right:0}@media (max-width: 768px){._drawerDialog_11g6r_1._top_11g6r_54,._drawerDialog_11g6r_1._bottom_11g6r_55{height:-moz-fit-content;height:fit-content}}._drawerDialog_11g6r_1._top_11g6r_54{top:0;bottom:unset}._drawerDialog_11g6r_1._top_11g6r_54[open]{animation:_slideInTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._top_11g6r_54._closing_11g6r_36[open]{animation:_slideOutTop_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55{top:unset;bottom:0}._drawerDialog_11g6r_1._bottom_11g6r_55[open]{animation:_slideInBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1._bottom_11g6r_55._closing_11g6r_36[open]{animation:_slideOutBottom_11g6r_1 .25s forwards}._drawerDialog_11g6r_1[open]{opacity:1;pointer-events:auto}@keyframes _slideInLeft_11g6r_1{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutLeft_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(-100%);opacity:1}}@keyframes _slideInTop_11g6r_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutTop_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(-100%);opacity:1}}@keyframes _slideInRight_11g6r_1{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _slideOutRight_11g6r_1{0%{transform:translate(0);opacity:0}to{transform:translate(100%);opacity:1}}@keyframes _slideInBottom_11g6r_1{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOutBottom_11g6r_1{0%{transform:translateY(0);opacity:0}to{transform:translateY(100%);opacity:1}}._modalDialog_1teni_1{border:0;outline:0;margin:auto;padding:0;overscroll-behavior:contain;opacity:0;pointer-events:none;box-shadow:#0003 0 0 10px 4px}@media (min-width: 769px){._modalDialog_1teni_1{border-radius:var(--swui-border-radius-large)}._modalDialog_1teni_1::-webkit-scrollbar-thumb{background-color:var(--lhds-color-ui-400);border:4px solid transparent;border-radius:8px;background-clip:padding-box}._modalDialog_1teni_1::-webkit-scrollbar{width:16px}}._modalDialog_1teni_1:not([open]){display:none}._modalDialog_1teni_1[open]{opacity:1;pointer-events:auto;animation:_slideIn_1teni_1 .25s forwards}._modalDialog_1teni_1._closing_1teni_36[open]{animation:_slideOut_1teni_1 .25s forwards}@media (max-width: 768px){._modalDialog_1teni_1{margin:0;width:100%;max-width:100%;height:100%;max-height:100%}}._modalDialog_1teni_1::backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0d0e1080;animation:_fadeIn_1teni_1 .25s forwards}._modalDialog_1teni_1._closing_1teni_36::backdrop{animation:_fadeOut_1teni_1 .25s forwards}@keyframes _fadeIn_1teni_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_1teni_1{0%{opacity:1}to{opacity:0}}@keyframes _slideIn_1teni_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _slideOut_1teni_1{0%{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}@media (max-width: 768px){._contentWrapper_1teni_100{width:100%;height:100%}}._modalActionButtons_s27nj_1{display:flex;flex-direction:row;gap:16px;justify-content:center}@media (max-width: 768px){._modalActionButtons_s27nj_1{flex-direction:column;justify-content:stretch}}._modalFooter_112wr_1._modalFooter_112wr_1{display:flex;align-items:center;overflow:hidden;background:var(--silver-lighter);border-radius:24px 24px 0 0;padding:0 calc((var(--swui-metrics-indent) * 5));flex-shrink:0}._modalFooter_112wr_1._modalFooter_112wr_1._sticky_112wr_10{position:sticky;bottom:0}")),document.head.appendChild(o)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
2
|
import B from "react-modal";
|
|
3
|
-
import { jsx as n, jsxs as
|
|
3
|
+
import { jsx as n, jsxs as m, Fragment as re } from "react/jsx-runtime";
|
|
4
4
|
import { useRef as k, createContext as ve, useReducer as we, useState as V, useCallback as x, useMemo as le, createElement as ae, useContext as Ie } from "react";
|
|
5
5
|
import be from "react-draggable";
|
|
6
6
|
import d from "classnames";
|
|
7
7
|
import { exhaustSwitchCase as Oe, Spacing as Q, Row as w, Space as ce, Heading as U, Column as Z, Box as q, Indent as Ne, Txt as $e, Text as Fe } from "@stenajs-webui/core";
|
|
8
|
-
import { Icon as _e, FlatButton as ke, stenaTimes as De, Spinner as qe, CloseButton as
|
|
8
|
+
import { Icon as _e, FlatButton as ke, stenaTimes as De, Spinner as qe, CloseButton as ue, CircledIcon as Be } from "@stenajs-webui/elements";
|
|
9
9
|
import { cssColor as xe } from "@stenajs-webui/theme";
|
|
10
10
|
const fn = (t) => {
|
|
11
11
|
B.setAppElement(t);
|
|
@@ -18,7 +18,7 @@ const fn = (t) => {
|
|
|
18
18
|
isDraggable: Se,
|
|
19
19
|
footer: Te,
|
|
20
20
|
stickyFooter: Ee
|
|
21
|
-
},
|
|
21
|
+
}, me = "draggable-modal-handle", fe = "draggable-modal-cancel", He = ({
|
|
22
22
|
width: t,
|
|
23
23
|
maxWidth: e,
|
|
24
24
|
draggable: o = !1,
|
|
@@ -35,7 +35,7 @@ const fn = (t) => {
|
|
|
35
35
|
children: /* @__PURE__ */ n(
|
|
36
36
|
be,
|
|
37
37
|
{
|
|
38
|
-
handle: `.${
|
|
38
|
+
handle: `.${me}`,
|
|
39
39
|
cancel: `.${fe}, button, [role="tooltip"]`,
|
|
40
40
|
bounds: ".ReactModal__Overlay",
|
|
41
41
|
disabled: !o,
|
|
@@ -58,7 +58,7 @@ const fn = (t) => {
|
|
|
58
58
|
)
|
|
59
59
|
}
|
|
60
60
|
);
|
|
61
|
-
}, Pe = "_portal_17ze5_1", Ge = "_overlay_17ze5_4", Ve = "_content_17ze5_9", Xe = "_floating_17ze5_15", Ye = "_slideFromLeft_17ze5_29", Je = "_slideFromRight_17ze5_30", Ke = "_afterOpen_17ze5_36", Qe = "_beforeClose_17ze5_40", Ue = "_slideFromTop_17ze5_45", Ze = "_slideFromBottom_17ze5_46",
|
|
61
|
+
}, Pe = "_portal_17ze5_1", Ge = "_overlay_17ze5_4", Ve = "_content_17ze5_9", Xe = "_floating_17ze5_15", Ye = "_slideFromLeft_17ze5_29", Je = "_slideFromRight_17ze5_30", Ke = "_afterOpen_17ze5_36", Qe = "_beforeClose_17ze5_40", Ue = "_slideFromTop_17ze5_45", Ze = "_slideFromBottom_17ze5_46", u = {
|
|
62
62
|
portal: Pe,
|
|
63
63
|
overlay: Ge,
|
|
64
64
|
content: Ve,
|
|
@@ -83,20 +83,20 @@ const fn = (t) => {
|
|
|
83
83
|
B,
|
|
84
84
|
{
|
|
85
85
|
closeTimeoutMS: 250,
|
|
86
|
-
portalClassName:
|
|
86
|
+
portalClassName: u.portal,
|
|
87
87
|
overlayClassName: {
|
|
88
|
-
base:
|
|
89
|
-
afterOpen:
|
|
90
|
-
beforeClose:
|
|
88
|
+
base: u.overlay,
|
|
89
|
+
afterOpen: u.afterOpen,
|
|
90
|
+
beforeClose: u.beforeClose
|
|
91
91
|
},
|
|
92
92
|
className: {
|
|
93
93
|
base: d(
|
|
94
|
-
|
|
94
|
+
u.content,
|
|
95
95
|
Re(s),
|
|
96
|
-
f &&
|
|
96
|
+
f && u.floating
|
|
97
97
|
),
|
|
98
|
-
afterOpen:
|
|
99
|
-
beforeClose:
|
|
98
|
+
afterOpen: u.afterOpen,
|
|
99
|
+
beforeClose: u.beforeClose
|
|
100
100
|
},
|
|
101
101
|
style: { content: { width: I, height: h, background: t }, overlay: { zIndex: e } },
|
|
102
102
|
parentSelector: c ? () => c : void 0,
|
|
@@ -107,15 +107,15 @@ const fn = (t) => {
|
|
|
107
107
|
}, Re = (t) => {
|
|
108
108
|
switch (t) {
|
|
109
109
|
case "left":
|
|
110
|
-
return
|
|
110
|
+
return u.slideFromLeft;
|
|
111
111
|
case "right":
|
|
112
|
-
return
|
|
112
|
+
return u.slideFromRight;
|
|
113
113
|
case "top":
|
|
114
|
-
return
|
|
114
|
+
return u.slideFromTop;
|
|
115
115
|
case "bottom":
|
|
116
|
-
return
|
|
116
|
+
return u.slideFromBottom;
|
|
117
117
|
default:
|
|
118
|
-
return Oe(t,
|
|
118
|
+
return Oe(t, u.slideFromLeft);
|
|
119
119
|
}
|
|
120
120
|
}, hn = ({
|
|
121
121
|
header: t,
|
|
@@ -129,19 +129,19 @@ const fn = (t) => {
|
|
|
129
129
|
top: 0,
|
|
130
130
|
zIndex: 100,
|
|
131
131
|
background: xe("--lhds-color-ui-50"),
|
|
132
|
-
children: /* @__PURE__ */
|
|
132
|
+
children: /* @__PURE__ */ m(
|
|
133
133
|
w,
|
|
134
134
|
{
|
|
135
135
|
justifyContent: "space-between",
|
|
136
136
|
alignItems: "center",
|
|
137
137
|
height: "48px",
|
|
138
138
|
children: [
|
|
139
|
-
/* @__PURE__ */
|
|
139
|
+
/* @__PURE__ */ m(w, { alignItems: "center", gap: 2, children: [
|
|
140
140
|
/* @__PURE__ */ n(ce, { num: 1 }),
|
|
141
141
|
s && /* @__PURE__ */ n(_e, { icon: s, size: 24 }),
|
|
142
142
|
/* @__PURE__ */ n(U, { variant: "h4", children: t })
|
|
143
143
|
] }),
|
|
144
|
-
/* @__PURE__ */
|
|
144
|
+
/* @__PURE__ */ m(w, { gap: 1, children: [
|
|
145
145
|
e,
|
|
146
146
|
/* @__PURE__ */ n(
|
|
147
147
|
ke,
|
|
@@ -185,13 +185,13 @@ const fn = (t) => {
|
|
|
185
185
|
}
|
|
186
186
|
)
|
|
187
187
|
}
|
|
188
|
-
), ct = "_overlay_15dqv_1", it = "_afterOpen_15dqv_24", dt = "_beforeClose_15dqv_24", _t = "_fadeIn_15dqv_1",
|
|
188
|
+
), ct = "_overlay_15dqv_1", it = "_afterOpen_15dqv_24", dt = "_beforeClose_15dqv_24", _t = "_fadeIn_15dqv_1", ut = "_fadeOut_15dqv_1", mt = "_modal_15dqv_36", ft = "_slideIn_15dqv_1", gt = "_slideOut_15dqv_1", ht = "_content_15dqv_59", pt = "_footer_15dqv_148", yt = "_stickyFooter_15dqv_152", $ = {
|
|
189
189
|
overlay: ct,
|
|
190
190
|
afterOpen: it,
|
|
191
191
|
beforeClose: dt,
|
|
192
192
|
fadeIn: _t,
|
|
193
|
-
fadeOut:
|
|
194
|
-
modal:
|
|
193
|
+
fadeOut: ut,
|
|
194
|
+
modal: mt,
|
|
195
195
|
slideIn: ft,
|
|
196
196
|
slideOut: gt,
|
|
197
197
|
content: ht,
|
|
@@ -250,7 +250,7 @@ const fn = (t) => {
|
|
|
250
250
|
shouldCloseOnEsc: s,
|
|
251
251
|
className: ie.modal,
|
|
252
252
|
overlayClassName: ie.overlay,
|
|
253
|
-
children: /* @__PURE__ */
|
|
253
|
+
children: /* @__PURE__ */ m(Z, { spacing: 2, alignItems: "center", children: [
|
|
254
254
|
/* @__PURE__ */ n(
|
|
255
255
|
q,
|
|
256
256
|
{
|
|
@@ -264,10 +264,10 @@ const fn = (t) => {
|
|
|
264
264
|
children: /* @__PURE__ */ n(qe, { size: "small" })
|
|
265
265
|
}
|
|
266
266
|
),
|
|
267
|
-
(t || e) && /* @__PURE__ */
|
|
267
|
+
(t || e) && /* @__PURE__ */ m(re, { children: [
|
|
268
268
|
/* @__PURE__ */ n(Q, {}),
|
|
269
|
-
/* @__PURE__ */
|
|
270
|
-
t && /* @__PURE__ */
|
|
269
|
+
/* @__PURE__ */ m(w, { indent: 2, children: [
|
|
270
|
+
t && /* @__PURE__ */ m(re, { children: [
|
|
271
271
|
/* @__PURE__ */ n(_e, { size: 14, icon: t, color: "white" }),
|
|
272
272
|
/* @__PURE__ */ n(Ne, {})
|
|
273
273
|
] }),
|
|
@@ -281,20 +281,20 @@ const fn = (t) => {
|
|
|
281
281
|
header: e,
|
|
282
282
|
headerText: o,
|
|
283
283
|
closeButtonClassName: s
|
|
284
|
-
}) => /* @__PURE__ */
|
|
284
|
+
}) => /* @__PURE__ */ m(
|
|
285
285
|
w,
|
|
286
286
|
{
|
|
287
287
|
spacing: 2,
|
|
288
288
|
indent: 2,
|
|
289
289
|
borderBottom: "1px solid var(--lhds-color-ui-300)",
|
|
290
|
-
className:
|
|
290
|
+
className: me,
|
|
291
291
|
children: [
|
|
292
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ m(w, { flex: 1, indent: !0, alignItems: "center", children: [
|
|
293
293
|
o && /* @__PURE__ */ n($e, { className: fe, size: "large", children: o }),
|
|
294
294
|
e
|
|
295
295
|
] }),
|
|
296
296
|
/* @__PURE__ */ n(q, { alignSelf: "flex-start", children: /* @__PURE__ */ n(
|
|
297
|
-
|
|
297
|
+
ue,
|
|
298
298
|
{
|
|
299
299
|
className: s,
|
|
300
300
|
onClick: t
|
|
@@ -314,7 +314,7 @@ const fn = (t) => {
|
|
|
314
314
|
footer: I,
|
|
315
315
|
disableStickyFooter: y = !1,
|
|
316
316
|
..._
|
|
317
|
-
}) => /* @__PURE__ */
|
|
317
|
+
}) => /* @__PURE__ */ m(
|
|
318
318
|
He,
|
|
319
319
|
{
|
|
320
320
|
..._,
|
|
@@ -553,7 +553,7 @@ const ge = ({
|
|
|
553
553
|
modalActionButtons: Zt
|
|
554
554
|
}, jt = ({
|
|
555
555
|
buttons: t
|
|
556
|
-
}) => /* @__PURE__ */
|
|
556
|
+
}) => /* @__PURE__ */ m(q, { width: "100%", children: [
|
|
557
557
|
/* @__PURE__ */ n(Q, {}),
|
|
558
558
|
/* @__PURE__ */ n("div", { className: Rt.modalActionButtons, children: t })
|
|
559
559
|
] }), en = ({ gap: t = 3, ...e }) => /* @__PURE__ */ n(q, { indent: 3, spacing: 3, gap: t, ...e }), tn = ({
|
|
@@ -576,7 +576,7 @@ const ge = ({
|
|
|
576
576
|
children: c,
|
|
577
577
|
maxWidth: f,
|
|
578
578
|
minWidth: g
|
|
579
|
-
}) => /* @__PURE__ */ n(tn, { children: /* @__PURE__ */
|
|
579
|
+
}) => /* @__PURE__ */ n(tn, { children: /* @__PURE__ */ m(
|
|
580
580
|
en,
|
|
581
581
|
{
|
|
582
582
|
flexDirection: "column",
|
|
@@ -596,9 +596,9 @@ const ge = ({
|
|
|
596
596
|
headingLevel: e,
|
|
597
597
|
headingSize: o,
|
|
598
598
|
onClickClose: s
|
|
599
|
-
}) => /* @__PURE__ */
|
|
599
|
+
}) => /* @__PURE__ */ m(w, { justifyContent: "space-between", children: [
|
|
600
600
|
t && /* @__PURE__ */ n(ge, { headingLevel: e, size: o, children: t }),
|
|
601
|
-
/* @__PURE__ */ n(
|
|
601
|
+
/* @__PURE__ */ n(ue, { onClick: s })
|
|
602
602
|
] }), nn = "_modalFooter_112wr_1", on = "_sticky_112wr_10", de = {
|
|
603
603
|
modalFooter: nn,
|
|
604
604
|
sticky: on
|
|
@@ -619,7 +619,7 @@ export {
|
|
|
619
619
|
pn as Alert,
|
|
620
620
|
He as BaseWindow,
|
|
621
621
|
fe as DRAGGABLE_CANCEL_CLASSNAME,
|
|
622
|
-
|
|
622
|
+
me as DRAGGABLE_HANDLE_CLASSNAME,
|
|
623
623
|
K as DialogContext,
|
|
624
624
|
gn as Drawer,
|
|
625
625
|
hn as DrawerHeader,
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalHeader.tsx","../src/building-blocks/ModalFooter.tsx"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\ninterface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\ninterface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Modal.module.css\";\nimport { CSSProperties } from \"react\";\n\nexport interface ModalProps extends ReactModal.Props {\n background?: string;\n onRequestClose?: () => void;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n ...reactModalProps\n}) => {\n const style = {\n overlay: { justifyContent: \"center\" },\n content: { \"--swui-modal-content-bg-color\": background } as CSSProperties,\n };\n\n return (\n <ReactModal\n overlayClassName={{\n base: styles.overlay,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: styles.modal,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>();\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>();\n const modalComponentProps = useRef<TProps>();\n const rejectRef = useRef<RejectCommand | undefined>();\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const onClose = useCallback(() => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }, [onReject]);\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { ReactNode } from \"react\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps {\n buttons: ReactNode;\n}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n buttons,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{buttons}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ gap = 3, ...props }) => {\n return <Box indent={3} spacing={3} gap={gap} {...props} />;\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\n\nexport interface InfoAlertProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n onRequestClose?: () => void;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n}) => {\n return (\n <ModalContainer>\n <ModalBody\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && <CircledIcon icon={icon} size={\"large\"} />}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons buttons={buttons} />}\n </ModalBody>\n </ModalContainer>\n );\n};\n","import * as React from \"react\";\nimport { HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport interface ModalHeaderProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n onClickClose?: () => void;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n}) => {\n return (\n <Row justifyContent={\"space-between\"}>\n {heading && (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n )}\n <CloseButton onClick={onClickClose} />\n </Row>\n );\n};\n","import { Row } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ModalFooter.module.css\";\nimport cx from \"classnames\";\n\nexport interface ModalFooterProps {\n children: ReactNode;\n sticky?: boolean;\n zIndex?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n children,\n sticky,\n zIndex = 4,\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n >\n {children}\n </Row>\n );\n};\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","Modal","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","WindowFooter","DialogContext","createContext","useDialog","component","ref","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","onResolve","onReject","className","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","rejectRef","isOpen","setIsOpen","useState","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","_a","_b","value","onClose","error","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","buttons","ModalBody","gap","ModalContainer","InfoAlert","heading","text","minWidth","CircledIcon","Text","ModalHeader","headingSize","onClickClose","ModalFooter","sticky"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalHeader.tsx","../src/building-blocks/ModalFooter.tsx"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\ninterface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\ninterface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Modal.module.css\";\nimport { CSSProperties } from \"react\";\n\nexport interface ModalProps extends ReactModal.Props {\n background?: string;\n onRequestClose?: () => void;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n ...reactModalProps\n}) => {\n const style = {\n overlay: { justifyContent: \"center\" },\n content: { \"--swui-modal-content-bg-color\": background } as CSSProperties,\n };\n\n return (\n <ReactModal\n overlayClassName={{\n base: styles.overlay,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: styles.modal,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>();\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>();\n const modalComponentProps = useRef<TProps>();\n const rejectRef = useRef<RejectCommand | undefined>();\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const onClose = useCallback(() => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }, [onReject]);\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { ReactNode } from \"react\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps {\n buttons: ReactNode;\n}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n buttons,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{buttons}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ gap = 3, ...props }) => {\n return <Box indent={3} spacing={3} gap={gap} {...props} />;\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\n\nexport interface InfoAlertProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n onRequestClose?: () => void;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n}) => {\n return (\n <ModalContainer>\n <ModalBody\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && <CircledIcon icon={icon} size={\"large\"} />}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons buttons={buttons} />}\n </ModalBody>\n </ModalContainer>\n );\n};\n","import * as React from \"react\";\nimport { HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport interface ModalHeaderProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n onClickClose?: () => void;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n}) => {\n return (\n <Row justifyContent={\"space-between\"}>\n {heading && (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n )}\n <CloseButton onClick={onClickClose} />\n </Row>\n );\n};\n","import { Row } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ModalFooter.module.css\";\nimport cx from \"classnames\";\n\nexport interface ModalFooterProps {\n children: ReactNode;\n sticky?: boolean;\n zIndex?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n children,\n sticky,\n zIndex = 4,\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n >\n {children}\n </Row>\n );\n};\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","Modal","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","WindowFooter","DialogContext","createContext","useDialog","component","ref","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","onResolve","onReject","className","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","rejectRef","isOpen","setIsOpen","useState","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","_a","_b","value","onClose","error","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","buttons","ModalBody","gap","ModalContainer","InfoAlert","heading","text","minWidth","CircledIcon","Text","ModalHeader","headingSize","onClickClose","ModalFooter","sticky"],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalHeader.tsx","../src/building-blocks/ModalFooter.tsx"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\ninterface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\ninterface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Modal.module.css\";\nimport { CSSProperties } from \"react\";\n\nexport interface ModalProps extends ReactModal.Props {\n background?: string;\n onRequestClose?: () => void;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n ...reactModalProps\n}) => {\n const style = {\n overlay: { justifyContent: \"center\" },\n content: { \"--swui-modal-content-bg-color\": background } as CSSProperties,\n };\n\n return (\n <ReactModal\n overlayClassName={{\n base: styles.overlay,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: styles.modal,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>();\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>();\n const modalComponentProps = useRef<TProps>();\n const rejectRef = useRef<RejectCommand | undefined>();\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const onClose = useCallback(() => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }, [onReject]);\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { ReactNode } from \"react\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps {\n buttons: ReactNode;\n}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n buttons,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{buttons}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ gap = 3, ...props }) => {\n return <Box indent={3} spacing={3} gap={gap} {...props} />;\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\n\nexport interface InfoAlertProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n onRequestClose?: () => void;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n}) => {\n return (\n <ModalContainer>\n <ModalBody\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && <CircledIcon icon={icon} size={\"large\"} />}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons buttons={buttons} />}\n </ModalBody>\n </ModalContainer>\n );\n};\n","import * as React from \"react\";\nimport { HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport interface ModalHeaderProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n onClickClose?: () => void;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n}) => {\n return (\n <Row justifyContent={\"space-between\"}>\n {heading && (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n )}\n <CloseButton onClick={onClickClose} />\n </Row>\n );\n};\n","import { Row } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ModalFooter.module.css\";\nimport cx from \"classnames\";\n\nexport interface ModalFooterProps {\n children: ReactNode;\n sticky?: boolean;\n zIndex?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n children,\n sticky,\n zIndex = 4,\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n >\n {children}\n </Row>\n );\n};\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","Modal","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","activeSpacing","activeIndent","WindowFooter","DialogContext","createContext","useDialog","component","ref","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","onResolve","onReject","className","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","rejectRef","isOpen","setIsOpen","useState","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","_a","_b","value","onClose","error","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","buttons","ModalBody","gap","ModalContainer","InfoAlert","heading","text","minWidth","CircledIcon","Text","ModalHeader","headingSize","onClickClose","ModalFooter","sticky"],"mappings":"gUAEaA,GAA0BC,GAAsC,CAC3EC,EAAW,cAAcD,CAAW,CACtC,6RCUaE,EAA6B,yBAC7BC,EAA6B,yBAE7BC,GAAwC,CAAC,CACpD,MAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,GACZ,SAAAC,EACA,GAAGC,CACL,IAAM,CACE,MAAAC,EAAUC,SAAO,IAAI,EAEzB,OAAAC,EAAA,IAACX,EAAA,CACC,iBAAkBY,EAAO,QACzB,UAAWA,EAAO,MACjB,GAAGJ,EAEJ,SAAAG,EAAA,IAACE,GAAA,CACC,OAAQ,IAAIZ,CAA0B,GACtC,OAAQ,IAAIC,CAA0B,6BACtC,OAAO,uBACP,SAAU,CAACI,EACX,QAAAG,EAEA,SAAAE,EAAA,IAAC,MAAA,CACC,MAAO,CACJ,qBAAiCP,EACjC,yBAAqCC,CACxC,EACA,UAAWS,EAAGF,EAAO,QAAS,CAC5B,CAACA,EAAO,WAAW,EAAGN,CAAA,CACvB,EACD,IAAKG,EAEJ,SAAAF,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAGN,uZCKaQ,GAAgC,CAAC,CAC5C,WAAAC,EACA,OAAAC,EACA,SAAAV,EACA,UAAAW,EAAY,OACZ,aAAAC,EACA,SAAAC,EACA,GAAGZ,CACL,IAAM,CACE,KAAA,CAAE,OAAAa,EAAQ,MAAAjB,CAAU,EAAAI,EAGxB,OAAAG,EAAA,IAACX,EAAA,CACC,eAAgB,IAChB,gBAAiBY,EAAO,OACxB,iBAAkB,CAChB,KAAMA,EAAO,QACb,UAAWA,EAAO,UAClB,YAAaA,EAAO,WACtB,EACA,UAAW,CACT,KAAME,EACJF,EAAO,QACPU,GAAqBJ,CAAS,EAC9BE,GAAYR,EAAO,QACrB,EACA,UAAWA,EAAO,UAClB,YAAaA,EAAO,WACtB,EACA,MAAO,CAAE,QAAS,CAAE,MAAAR,EAAO,OAAAiB,EAAQ,WAAAL,GAAc,QAAS,CAAE,OAAAC,EAAS,EACrE,eAAgBE,EAAe,IAAMA,EAAe,OACnD,GAAGX,EAEH,SAAAD,CAAA,CAAA,CAGP,EAEMe,GAAwBJ,GAAiC,CAC7D,OAAQA,EAAW,CACjB,IAAK,OACH,OAAON,EAAO,cAChB,IAAK,QACH,OAAOA,EAAO,eAChB,IAAK,MACH,OAAOA,EAAO,aAChB,IAAK,SACH,OAAOA,EAAO,gBAChB,QACS,OAAAW,oBAAkBL,EAAWN,EAAO,aAAa,CAC5D,CACF,EC/FaY,GAA4C,CAAC,CACxD,OAAAC,EACA,aAAAC,EACA,eAAAC,EACA,KAAAC,CACF,IAEIjB,EAAA,IAACkB,EAAA,QAAA,CACC,SAAU,SACV,IAAK,EACL,OAAQ,IACR,WAAYC,YAAS,oBAAoB,EAEzC,SAAAC,EAAA,KAACC,EAAA,IAAA,CACC,eAAgB,gBAChB,WAAY,SACZ,OAAQ,OAER,SAAA,CAAAD,EAAA,KAACC,EAAI,IAAA,CAAA,WAAY,SAAU,IAAK,EAC9B,SAAA,CAACrB,EAAAA,IAAAsB,EAAA,MAAA,CAAM,IAAK,CAAG,CAAA,EACdL,GAAQjB,EAAA,IAACuB,EAAK,KAAA,CAAA,KAAAN,EAAY,KAAM,GAAI,EACpCjB,EAAA,IAAAwB,EAAA,QAAA,CAAQ,QAAS,KAAO,SAAOV,EAAA,CAAA,EAClC,EACAM,EAAAA,KAACC,EAAAA,IAAI,CAAA,IAAK,EACP,SAAA,CAAAN,EACDf,EAAA,IAACyB,EAAA,WAAA,CACC,SAAUC,EAAA,WACV,QAASV,EACT,QAAS,QAAA,CACX,EACAhB,EAAAA,IAACsB,EAAM,MAAA,CAAA,IAAK,EAAK,CAAA,CAAA,EACnB,CAAA,CAAA,CACF,CAAA,CAAA,2RCrCAK,GAAQ,CAAE,QAAS,CAAE,eAAgB,QAAW,CAAA,EAEzCC,GAA8B,CAAC,CAC1C,SAAAhC,EACA,GAAGC,CACL,IAEIG,EAAA,IAACX,EAAA,CACC,iBAAkBY,EAAO,QACzB,UAAWA,EAAO,MAClB,MAAA0B,GACC,GAAG9B,EAEJ,SAAAG,EAAA,IAAC,MAAA,CACC,UAAWC,EAAO,QAClB,MAAO,CAAG,qBAAiC,aAAc,EAExD,SAAAL,CAAA,CACH,CAAA,CAAA,yYChBOiC,GAA8B,CAAC,CAC1C,SAAAjC,EACA,WAAAS,EACA,GAAGR,CACL,IAAM,CACJ,MAAM8B,EAAQ,CACZ,QAAS,CAAE,eAAgB,QAAS,EACpC,QAAS,CAAE,gCAAiCtB,CAAW,CAAA,EAIvD,OAAAL,EAAA,IAACX,EAAA,CACC,iBAAkB,CAChB,KAAMY,EAAO,QACb,YAAaA,EAAO,YACpB,UAAWA,EAAO,SACpB,EACA,UAAW,CACT,KAAMA,EAAO,MACb,YAAaA,EAAO,YACpB,UAAWA,EAAO,SACpB,EACA,MAAA0B,EACA,eAAgB,IACf,GAAG9B,EAEJ,SAAAG,EAAA,IAAC,MAAA,CACC,UAAWC,EAAO,QAClB,MAAO,CAAG,qBAAiC,aAAc,EAExD,SAAAL,CAAA,CACH,CAAA,CAAA,CAGN,sEC1BakC,GAA4C,CAAC,CACxD,eAAAC,EACA,WAAAC,EACA,0BAAAC,EAA4B,GAC5B,iBAAAC,EAAmB,GACnB,GAAGC,CACL,IAEInC,EAAA,IAACX,EAAA,CACE,GAAG8C,EACJ,OAAM,GACN,0BAAAF,EACA,iBAAAC,EACA,UAAWjC,GAAO,MAClB,iBAAkBA,GAAO,QAEzB,SAACmB,EAAAA,KAAAgB,EAAAA,OAAA,CAAO,QAAS,EAAG,WAAY,SAC9B,SAAA,CAAApC,EAAA,IAACqC,EAAA,IAAA,CACC,WAAY,SACZ,eAAgB,SAChB,MAAO,OACP,OAAQ,OACR,aAAc,MACd,WAAY,QACZ,OAAQ,QAER,SAAArC,EAAAA,IAACsC,EAAAA,QAAQ,CAAA,KAAM,OAAS,CAAA,CAAA,CAC1B,GACEP,GAAkBC,IAEhBZ,EAAA,KAAAmB,EAAA,SAAA,CAAA,SAAA,CAAAvC,EAAA,IAACkB,EAAQ,QAAA,EAAA,EACTE,EAAAA,KAACC,EAAAA,IAAI,CAAA,OAAQ,EACV,SAAA,CAAAU,GAEGX,EAAA,KAAAmB,WAAA,CAAA,SAAA,CAAAvC,MAACuB,EAAAA,MAAK,KAAM,GAAI,KAAMQ,EAAgB,MAAO,QAAS,QACrDS,EAAO,OAAA,EAAA,CAAA,EACV,EAEDR,GACEhC,EAAAA,IAAAwB,EAAA,QAAA,CAAQ,QAAS,KAAM,MAAO,QAC5B,SACHQ,EAAA,CAAA,EAEJ,CAAA,EACF,CAAA,EAEJ,CAAA,CAAA,ECjDOS,GAA4C,CAAC,CACxD,eAAAzB,EACA,OAAAF,EACA,WAAAkB,EACA,qBAAAU,CACF,IAEItB,EAAA,KAACC,EAAA,IAAA,CACC,QAAS,EACT,OAAQ,EACR,aAAc,qCACd,UAAW/B,EAEX,SAAA,CAAA8B,OAACC,EAAAA,KAAI,KAAM,EAAG,OAAM,GAAC,WAAY,SAC9B,SAAA,CAAAW,SACEW,EAAI,IAAA,CAAA,UAAWpD,EAA4B,KAAM,QAC/C,SACHyC,EAAA,EAEDlB,CAAA,EACH,EACAd,EAAAA,IAACqC,EAAAA,IAAI,CAAA,UAAW,aACd,SAAArC,EAAA,IAAC4C,EAAA,YAAA,CACC,UAAWF,EACX,QAAS1B,CAAA,CAAA,EAEb,CAAA,CAAA,CAAA,EC3BO6B,GAAgC,CAAC,CAC5C,OAAA/B,EACA,WAAAkB,EACA,SAAApC,EACA,QAAAkD,EACA,OAAAC,EACA,UAAApD,EAAY,GACZ,eAAAqB,EACA,qBAAA0B,EACA,OAAAM,EACA,oBAAAC,EAAsB,GACtB,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAgB,OAAOL,GAAY,SAAWA,EAAU,EACxDM,EAAe,OAAOL,GAAW,SAAWA,EAAS,EAGzD,OAAA3B,EAAA,KAAC5B,GAAA,CACE,GAAG0D,EACJ,eAAAlC,EACA,UAAArB,EAEA,SAAA,CAAAK,EAAA,IAACyC,GAAA,CACC,eAAAzB,EACA,OAAAF,EACA,WAAAkB,EACA,qBAAAU,CAAA,CACF,QACCL,EAAI,IAAA,CAAA,QAASc,EAAe,OAAQC,EAClC,SAAAxD,EACH,EACCoD,GACChD,EAAA,IAACqC,EAAA,IAAA,CACC,UAAWlC,EAAGF,EAAO,OAAQ,CAC3B,CAACA,EAAO,YAAY,EAAG,CAACgD,CAAA,CACzB,EAEA,SAAAD,CAAA,CACH,CAAA,CAAA,CAAA,CAIR,ECjDaK,GAA4C,CAAC,CAAE,SAAAzD,CAAS,IAClEI,MAAAoC,EAAAA,OAAA,CAAO,OAAQ,EAAG,QAAS,EACzB,SAAAxC,CACH,CAAA,ECDW0D,EAAgBC,EAAA,cAC3B,MACF,ECyCO,SAASC,EACdC,EACA,CACE,IAAAC,EACA,MAAAC,EACA,wBAAAC,EACA,iBAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,2BAAAC,EACA,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,WAAA/D,EACA,MAAAgE,EACA,WAAAC,EACA,YAAAC,CACF,EAC0C,CACpC,MAAAC,GAAWzE,SAA0B,IAAI,EACzC0E,EAAaf,GAAOc,GACpB,CAACE,EAAKC,EAAa,EAAIC,aAAYC,GAAMA,EAAI,EAAG,CAAC,EACjDC,EAAa/E,EAAAA,SACbgF,EAAahF,EAAAA,SACbiF,EAAsBjF,EAAAA,SACtBkF,EAAYlF,EAAAA,SAIZ,CAACmF,EAAQC,CAAS,EAAIC,WAAS,EAAK,EAIpC,CAACC,EAAgBC,CAAiB,EAAIF,WAAS,EAAK,EAIpD,CAACG,EAASC,CAAU,EAAIJ,WAAS,EAAK,EAEtCK,EAAOhC,EAEPiC,GAAOC,EAAA,YACVzC,GAAmB,SAClB,OAAA4B,EAAW,QAAU,IAAI,QACvB,CAACc,EAASC,KAAW,CACnBd,EAAW,QAAUa,EACrBX,EAAU,QAAUY,EACtB,CAAA,EAEFL,EAAW,EAAK,EAChBL,EAAU,EAAI,EACdG,EAAkB,EAAI,EACRX,KACdK,EAAoB,QAAU9B,EAC1BS,GACFmC,EAAArB,EAAW,UAAX,MAAAqB,EAAoB,aAEpBC,EAAAtB,EAAW,UAAX,MAAAsB,EAAoB,OAEfjB,EAAW,OACpB,EACA,CAACL,EAAYd,CAAK,CAAA,EAGdiC,EAAUD,EAAA,YACbK,GAAU,OAETR,EAAW,EAAI,EACfL,EAAU,EAAK,EACVnB,EAcH,WAAW,IAAM,OACfwB,EAAW,EAAK,EAChBF,EAAkB,EAAK,GACvBQ,EAAAf,EAAW,UAAX,MAAAe,EAAA,KAAAf,EAAqBiB,GACrBhB,EAAoB,QAAU,OAClBd,GAAA,MAAAA,KACX,GAAG,GAnBN4B,EAAArB,EAAW,UAAX,MAAAqB,EAAoB,iBAClB,eACA,IAAM,SACJN,EAAW,EAAK,EAChBF,EAAkB,EAAK,GACvBQ,EAAArB,EAAW,UAAX,MAAAqB,EAAoB,SACpBC,EAAAhB,EAAW,UAAX,MAAAgB,EAAA,KAAAhB,EAAqBiB,GACrBhB,EAAoB,QAAU,OAClBd,GAAA,MAAAA,GACd,EACA,CAAE,KAAM,EAAK,EAWnB,EACA,CAACO,EAAYP,EAAWF,CAAkB,CAAA,EAGtCiC,GAAUN,EAAAA,YAAY,IAAM,OAEhCH,EAAW,EAAK,EAChBL,EAAU,EAAK,EACfG,EAAkB,EAAK,GACvBQ,EAAAb,EAAU,UAAV,MAAAa,EAAA,KAAAb,GACWd,GAAA,MAAAA,IACXa,EAAoB,QAAU,MAAA,EAC7B,CAACb,CAAQ,CAAC,EAEP0B,EAASF,EAAA,YACZO,GAAU,OAETV,EAAW,EAAI,EACfL,EAAU,EAAK,EACVnB,EAcH,WAAW,IAAM,OACfwB,EAAW,EAAK,EAChBF,EAAkB,EAAK,GACvBQ,EAAAb,EAAU,UAAV,MAAAa,EAAA,KAAAb,EAAoBiB,GACT/B,GAAA,MAAAA,IACXa,EAAoB,QAAU,QAC7B,GAAG,GAnBNc,EAAArB,EAAW,UAAX,MAAAqB,EAAoB,iBAClB,eACA,IAAM,SACJN,EAAW,EAAK,EAChBF,EAAkB,EAAK,GACvBQ,EAAArB,EAAW,UAAX,MAAAqB,EAAoB,SACpBC,EAAAd,EAAU,UAAV,MAAAc,EAAA,KAAAd,EAAoBiB,GACT/B,GAAA,MAAAA,IACXa,EAAoB,QAAU,MAChC,EACA,CAAE,KAAM,EAAK,EAWnB,EACA,CAACP,EAAYT,EAAoBG,CAAQ,CAAA,EAGrCgC,GAAUR,EAAA,YACbS,GAAM,CACD,GAAAA,EAAE,SAAW3B,EAAW,QAC1B,OAGI,MAAA4B,EAAO5B,EAAW,QAAQ,sBAAsB,EAGpD4B,EAAK,KAAOD,EAAE,SACdA,EAAE,SAAWC,EAAK,IAAMA,EAAK,QAC7BA,EAAK,MAAQD,EAAE,SACfA,EAAE,SAAWC,EAAK,KAAOA,EAAK,OAGvBR,GAEX,EACA,CAACpB,EAAYoB,CAAM,CAAA,EAGfS,EAAeC,EAAA,QACnB,KAAO,CAAE,QAAAX,EAAS,OAAAC,IAClB,CAACA,EAAQD,CAAO,CAAA,EAgElB,MAAO,CA7DSW,EAAA,QACd,IACEvC,EACEhE,EAAA,IAAC6B,GAAA,CACC,OAAAqD,EACA,eAAgBW,EAChB,WAAAxF,EACA,aAAcgE,EACd,KAAM,CAAE,MAAO,GAAM,WAAAC,EAAY,YAAAC,CAAY,EAE7C,SAACvE,EAAA,IAAAsD,EAAc,SAAd,CAAuB,MAAOgD,EAC5B,SACCjB,GAAAmB,EAAA,cAACf,EAAM,CAAA,GAAIT,EAAoB,QAAoB,IAAAN,CAAU,CAAA,EAEjE,CAAA,CAAA,EAGF1E,EAAA,IAAC,SAAA,CACC,QAASiE,EAA6B,OAAYkC,GAClD,QAAAF,GACA,IAAKxB,EACL,UAAWtE,EAAGiE,EAAWmB,GAAW1B,CAAgB,EACpD,aAAYQ,EACZ,kBAAiBC,EACjB,mBAAkBC,EAClB,MAAO,CAAE,WAAAlE,EAAwB,GAAG0D,CAAY,EAEhD,SAAA/D,EAAA,IAAC,OAAI,MAAO8D,EAAqB,UAAWF,EACzC,SAAAyB,SACE/B,EAAc,SAAd,CAAuB,MAAOgD,EAC7B,yBAACb,EAAM,CAAA,GAAIT,EAAoB,QAAoB,IAAAN,EAAU,EAC/D,CAEJ,CAAA,CAAA,CACF,EAEJ,CACEV,EACAkB,EACAW,EACAxF,EACAgE,EACAC,EACAC,EACA+B,EACAjB,EACAI,EACAf,EACAT,EACAkC,GACAF,GACAxB,EACAL,EACAmB,EACA1B,EACAE,EACAD,EACAF,CACF,CAAA,EAGe,CAAE,KAAA8B,GAAM,OAAAG,CAAQ,CAAA,CACnC,CCnRO,MAAMY,GAAmB,IAEU,CAClC,MAAAC,EAAUC,aAAWrD,CAAa,EACxC,GAAIoD,GAAW,KACP,MAAA,IAAI,MAAM,mDAAmD,EAE9D,OAAAA,CACT,qNCNgB,SAAAE,GACdnD,EACAoD,EAC0C,CAC1C,OAAOrD,EAAmCC,EAAW,CACnD,GAAGoD,EACH,MAAO,GACP,iBAAkB1G,EAAG0G,GAAA,YAAAA,EAAS,iBAAkB5G,EAAO,OAAO,EAC9D,wBAAyBE,EACvB0G,GAAA,YAAAA,EAAS,wBACT5G,EAAO,cACT,EACA,UAAWE,EAAG0G,GAAA,YAAAA,EAAS,UAAW5G,EAAO,WAAW,CAAA,CACrD,CACH,olBCVO,SAAS6G,GACdrD,EACAlD,EAAuB,OACvBsG,EAC0C,CAC1C,OAAOrD,EAAmCC,EAAW,CACnD,GAAGoD,EACH,2BAA4B,GAC5B,MAAO,GACP,iBAAkB1G,EAAG0G,GAAA,YAAAA,EAAS,iBAAkB5G,EAAO,OAAO,EAC9D,wBAAyBE,EACvB0G,GAAA,YAAAA,EAAS,wBACT5G,EAAO,cACT,EACA,UAAWE,EAAG0G,GAAA,YAAAA,EAAS,UAAW5G,EAAO,aAAcA,EAAOM,CAAS,CAAC,CAAA,CACzE,CACH,2QCpBgB,SAAAwG,GACdtD,EACAoD,EAC0C,CAC1C,OAAOrD,EAAmCC,EAAW,CACnD,GAAGoD,EACH,MAAO,GACP,iBAAkB1G,EAAG0G,GAAA,YAAAA,EAAS,iBAAkB5G,EAAO,OAAO,EAC9D,wBAAyBE,EACvB0G,GAAA,YAAAA,EAAS,wBACT5G,EAAO,cACT,EACA,UAAWE,EAAG0G,GAAA,YAAAA,EAAS,UAAW5G,EAAO,WAAW,CAAA,CACrD,CACH,CCRO,MAAM+G,EAA4C,CAAC,CACxD,aAAAC,EAAe,KACf,KAAAC,EAAO,SACP,SAAAtH,CACF,IAEII,MAACwB,EAAAA,SAAQ,QAAS0F,IAAS,SAAW,KAAO,KAAM,GAAID,EACpD,SAAArH,CACH,CAAA,8DCVSuH,GAAwD,CAAC,CACpE,QAAAC,CACF,IAEIhG,EAAA,KAACiB,EAAI,IAAA,CAAA,MAAO,OACV,SAAA,CAAArC,EAAA,IAACkB,EAAQ,QAAA,EAAA,EACRlB,EAAA,IAAA,MAAA,CAAI,UAAWC,GAAO,mBAAqB,SAAQmH,EAAA,CACtD,CAAA,CAAA,ECXSC,GAAsC,CAAC,CAAE,IAAAC,EAAM,EAAG,GAAGpE,KACzDlD,MAACqC,EAAAA,KAAI,OAAQ,EAAG,QAAS,EAAG,IAAAiF,EAAW,GAAGpE,CAAO,CAAA,ECE7CqE,GAAgD,CAAC,CAC5D,SAAA3H,EACA,SAAAF,CACF,IAEIM,EAAA,IAACoC,EAAA,OAAA,CACC,KAAM,EACN,OAAQ,OACR,eAAgB,gBAChB,SAAA1C,EAEC,SAAAE,CAAA,CAAA,ECAM4H,GAAsC,CAAC,CAClD,KAAAvG,EACA,QAAAmG,EACA,QAAAK,EACA,KAAAC,EACA,SAAA9H,EACA,SAAAF,EACA,SAAAiI,CACF,UAEKJ,GACC,CAAA,SAAAnG,EAAA,KAACiG,GAAA,CACC,cAAe,SACf,WAAY,SACZ,SAAA3H,EACA,SAAAiI,EAEC,SAAA,CAAA1G,GAASjB,EAAA,IAAA4H,EAAA,YAAA,CAAY,KAAA3G,EAAY,KAAM,QAAS,EACjDjB,EAAAA,IAACgH,GAAc,SAAQS,CAAA,CAAA,EACtBC,GAAQ1H,EAAA,IAAC6H,OAAK,CAAA,UAAW,SAAW,SAAKH,EAAA,EACzC9H,EACAwH,GAAYpH,EAAA,IAAAmH,GAAA,CAAmB,QAAAC,CAAkB,CAAA,CAAA,CAAA,CAEtD,CAAA,CAAA,EC9BSU,GAA0C,CAAC,CACtD,QAAAL,EACA,aAAAR,EACA,YAAAc,EACA,aAAAC,CACF,IAEI5G,EAAA,KAACC,EAAI,IAAA,CAAA,eAAgB,gBAClB,SAAA,CAAAoG,GACEzH,EAAAA,IAAAgH,EAAA,CAAa,aAAAC,EAA4B,KAAMc,EAC7C,SACHN,EAAA,EAEFzH,EAAAA,IAAC4C,EAAY,YAAA,CAAA,QAASoF,CAAc,CAAA,CACtC,CAAA,CAAA,gFCdSC,GAA0C,CAAC,CACtD,SAAArI,EACA,OAAAsI,EACA,OAAA5H,EAAS,CACX,IAEIN,EAAA,IAACqB,EAAA,IAAA,CACC,UAAWlB,EAAGF,GAAO,YAAaiI,GAAUjI,GAAO,MAAM,EACzD,OAAQ,mCACR,OAAAK,EAEC,SAAAV,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/declarative-modals/DeclarativeModalSetup.ts","../src/declarative-modals/window/BaseWindow.tsx","../src/declarative-modals/drawer/Drawer.tsx","../src/declarative-modals/drawer/DrawerHeader.tsx","../src/declarative-modals/alert/Alert.tsx","../src/declarative-modals/modal/Modal.tsx","../src/declarative-modals/loading-modal/LoadingModal.tsx","../src/declarative-modals/window/WindowHeader.tsx","../src/declarative-modals/window/Window.tsx","../src/declarative-modals/window/WindowFooter.tsx","../src/dialog/DialogContext.ts","../src/dialog/UseDialog.tsx","../src/dialog/UseDialogPromise.ts","../src/dialog/alert/UseAlertDialog.ts","../src/dialog/drawer/UseDrawerDialog.ts","../src/dialog/modal/UseModalDialog.ts","../src/building-blocks/ModalHeading.tsx","../src/building-blocks/ModalActionButtons.tsx","../src/building-blocks/ModalBody.tsx","../src/building-blocks/ModalContainer.tsx","../src/ready-made-modals/InfoAlert.tsx","../src/building-blocks/ModalHeader.tsx","../src/building-blocks/ModalFooter.tsx"],"sourcesContent":["import ReactModal from \"react-modal\";\n\nexport const setupDeclarativeModals = (htmlElement: string | HTMLElement) => {\n ReactModal.setAppElement(htmlElement);\n};\n","import * as React from \"react\";\nimport { useRef } from \"react\";\nimport ReactModal from \"react-modal\";\nimport Draggable from \"react-draggable\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface BaseWindowProps extends ReactModal.Props {\n width?: string;\n maxWidth?: string;\n onRequestClose?: () => void;\n draggable?: boolean;\n}\n\nexport const DRAGGABLE_HANDLE_CLASSNAME = \"draggable-modal-handle\";\nexport const DRAGGABLE_CANCEL_CLASSNAME = \"draggable-modal-cancel\";\n\nexport const BaseWindow: React.FC<BaseWindowProps> = ({\n width,\n maxWidth,\n draggable = false,\n children,\n ...reactModalProps\n}) => {\n const nodeRef = useRef(null);\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n {...reactModalProps}\n >\n <Draggable\n handle={`.${DRAGGABLE_HANDLE_CLASSNAME}`}\n cancel={`.${DRAGGABLE_CANCEL_CLASSNAME}, button, [role=\"tooltip\"]`}\n bounds=\".ReactModal__Overlay\"\n disabled={!draggable}\n nodeRef={nodeRef}\n >\n <div\n style={{\n [\"--swui-modal-width\" as string]: width,\n [\"--swui-modal-max-width\" as string]: maxWidth,\n }}\n className={cx(styles.content, {\n [styles.isDraggable]: draggable,\n })}\n ref={nodeRef}\n >\n {children}\n </div>\n </Draggable>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport cx from \"classnames\";\nimport styles from \"./Drawer.module.css\";\nimport { exhaustSwitchCase, FlattenUnion } from \"@stenajs-webui/core\";\nimport {\n SlideFrom,\n SlideFromLeftRight,\n SlideFromTopBottom,\n} from \"../../common-types\";\n\nexport type DrawerProps = DrawerBaseLeftRight | DrawerBaseTopBottom;\n\ninterface DrawerBaseLeftRight extends DrawerBaseProps {\n width?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('left'|'right')}\n */\n slideFrom?: SlideFromLeftRight;\n}\n\ninterface DrawerBaseTopBottom extends DrawerBaseProps {\n height?: string;\n /**\n * Which direction the drawer will appear from.\n * @default left\n * @param {String('top'|'bottom')}\n */\n slideFrom?: SlideFromTopBottom;\n}\n\ninterface DrawerBaseProps\n extends Omit<\n ReactModal.Props,\n | \"closeTimeoutMS\"\n | \"portalClassName\"\n | \"overlayClassName\"\n | \"className\"\n | \"style\"\n | \"parentSelector\"\n > {\n background?: string;\n\n /**\n * When true, there will be a gap between the drawer and the viewport.\n */\n floating?: boolean;\n\n zIndex?: number;\n onRequestClose?: () => void;\n /**\n * Portal target, HTML element. If not set, portal is not used.\n */\n portalTarget?: HTMLElement | null;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n background,\n zIndex,\n children,\n slideFrom = \"left\",\n portalTarget,\n floating,\n ...reactModalProps\n}) => {\n const { height, width } = reactModalProps as FlattenUnion<DrawerProps>;\n\n return (\n <ReactModal\n closeTimeoutMS={250}\n portalClassName={styles.portal}\n overlayClassName={{\n base: styles.overlay,\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n className={{\n base: cx(\n styles.content,\n getClassNameForSlide(slideFrom),\n floating && styles.floating,\n ),\n afterOpen: styles.afterOpen,\n beforeClose: styles.beforeClose,\n }}\n style={{ content: { width, height, background }, overlay: { zIndex } }}\n parentSelector={portalTarget ? () => portalTarget : undefined}\n {...reactModalProps}\n >\n {children}\n </ReactModal>\n );\n};\n\nconst getClassNameForSlide = (slideFrom: SlideFrom): string => {\n switch (slideFrom) {\n case \"left\":\n return styles.slideFromLeft;\n case \"right\":\n return styles.slideFromRight;\n case \"top\":\n return styles.slideFromTop;\n case \"bottom\":\n return styles.slideFromBottom;\n default:\n return exhaustSwitchCase(slideFrom, styles.slideFromLeft);\n }\n};\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { Heading, Row, Space, Spacing } from \"@stenajs-webui/core\";\nimport { FlatButton, Icon, stenaTimes } from \"@stenajs-webui/elements\";\nimport { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { cssColor } from \"@stenajs-webui/theme\";\n\nexport interface DrawerHeaderProps {\n onRequestClose: () => void;\n header?: string;\n contentRight?: ReactNode;\n icon?: IconDefinition;\n}\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n header,\n contentRight,\n onRequestClose,\n icon,\n}) => {\n return (\n <Spacing\n position={\"sticky\"}\n top={0}\n zIndex={100}\n background={cssColor(\"--lhds-color-ui-50\")}\n >\n <Row\n justifyContent={\"space-between\"}\n alignItems={\"center\"}\n height={\"48px\"}\n >\n <Row alignItems={\"center\"} gap={2}>\n <Space num={1} />\n {icon && <Icon icon={icon} size={24} />}\n <Heading variant={\"h4\"}>{header}</Heading>\n </Row>\n <Row gap={1}>\n {contentRight}\n <FlatButton\n leftIcon={stenaTimes}\n onClick={onRequestClose}\n variant={\"danger\"}\n />\n <Space num={0.5} />\n </Row>\n </Row>\n </Spacing>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Alert.module.css\";\n\nexport interface AlertProps extends ReactModal.Props {\n onRequestClose?: () => void;\n}\n\nconst style = { overlay: { justifyContent: \"center\" } };\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n ...reactModalProps\n}) => {\n return (\n <ReactModal\n overlayClassName={styles.overlay}\n className={styles.modal}\n style={style}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import * as React from \"react\";\nimport ReactModal from \"react-modal\";\n\nimport styles from \"./Modal.module.css\";\nimport { CSSProperties } from \"react\";\n\nexport interface ModalProps extends ReactModal.Props {\n background?: string;\n onRequestClose?: () => void;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n background,\n ...reactModalProps\n}) => {\n const style = {\n overlay: { justifyContent: \"center\" },\n content: { \"--swui-modal-content-bg-color\": background } as CSSProperties,\n };\n\n return (\n <ReactModal\n overlayClassName={{\n base: styles.overlay,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n className={{\n base: styles.modal,\n beforeClose: styles.beforeClose,\n afterOpen: styles.afterOpen,\n }}\n style={style}\n closeTimeoutMS={250}\n {...reactModalProps}\n >\n <div\n className={styles.content}\n style={{ [\"--swui-modal-width\" as string]: \"fit-content\" }}\n >\n {children}\n </div>\n </ReactModal>\n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n Box,\n Column,\n Heading,\n Indent,\n Row,\n Spacing,\n} from \"@stenajs-webui/core\";\nimport { Icon, Spinner } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport ReactModal from \"react-modal\";\nimport styles from \"./LoadingModal.module.css\";\n\nexport interface LoadingModalProps extends Omit<ReactModal.Props, \"isOpen\"> {\n headerText?: string;\n headerIconLeft?: IconDefinition;\n}\n\nexport const LoadingModal: React.FC<LoadingModalProps> = ({\n headerIconLeft,\n headerText,\n shouldCloseOnOverlayClick = false,\n shouldCloseOnEsc = false,\n ...modalProps\n}) => {\n return (\n <ReactModal\n {...modalProps}\n isOpen\n shouldCloseOnOverlayClick={shouldCloseOnOverlayClick}\n shouldCloseOnEsc={shouldCloseOnEsc}\n className={styles.modal}\n overlayClassName={styles.overlay}\n >\n <Column spacing={2} alignItems={\"center\"}>\n <Box\n alignItems={\"center\"}\n justifyContent={\"center\"}\n width={\"64px\"}\n height={\"64px\"}\n borderRadius={\"50%\"}\n background={\"white\"}\n shadow={\"modal\"}\n >\n <Spinner size={\"small\"} />\n </Box>\n {(headerIconLeft || headerText) && (\n <>\n <Spacing />\n <Row indent={2}>\n {headerIconLeft && (\n <>\n <Icon size={14} icon={headerIconLeft} color={\"white\"} />\n <Indent />\n </>\n )}\n {headerText && (\n <Heading variant={\"h4\"} color={\"white\"}>\n {headerText}\n </Heading>\n )}\n </Row>\n </>\n )}\n </Column>\n </ReactModal>\n );\n};\n","import { CloseButton } from \"@stenajs-webui/elements\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport {\n DRAGGABLE_CANCEL_CLASSNAME,\n DRAGGABLE_HANDLE_CLASSNAME,\n} from \"./BaseWindow\";\nimport { Box, Row, Txt } from \"@stenajs-webui/core\";\n\nexport interface WindowHeaderProps {\n onRequestClose?: () => void;\n header?: ReactNode;\n headerText?: string;\n closeButtonClassName?: string;\n}\n\nexport const WindowHeader: React.FC<WindowHeaderProps> = ({\n onRequestClose,\n header,\n headerText,\n closeButtonClassName,\n}) => {\n return (\n <Row\n spacing={2}\n indent={2}\n borderBottom={\"1px solid var(--lhds-color-ui-300)\"}\n className={DRAGGABLE_HANDLE_CLASSNAME}\n >\n <Row flex={1} indent alignItems={\"center\"}>\n {headerText && (\n <Txt className={DRAGGABLE_CANCEL_CLASSNAME} size={\"large\"}>\n {headerText}\n </Txt>\n )}\n {header}\n </Row>\n <Box alignSelf={\"flex-start\"}>\n <CloseButton\n className={closeButtonClassName}\n onClick={onRequestClose}\n />\n </Box>\n </Row>\n );\n};\n","import { Box } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { BaseWindow, BaseWindowProps } from \"./BaseWindow\";\nimport { WindowHeader, WindowHeaderProps } from \"./WindowHeader\";\nimport cx from \"classnames\";\nimport styles from \"./Window.module.css\";\n\nexport interface WindowProps extends BaseWindowProps, WindowHeaderProps {\n spacing?: number;\n indent?: number;\n draggable?: boolean;\n footer?: React.ReactNode;\n disableStickyFooter?: boolean;\n}\n\nexport const Window: React.FC<WindowProps> = ({\n header,\n headerText,\n children,\n spacing,\n indent,\n draggable = false,\n onRequestClose,\n closeButtonClassName,\n footer,\n disableStickyFooter = false,\n ...props\n}) => {\n const activeSpacing = typeof spacing === \"number\" ? spacing : 1;\n const activeIndent = typeof indent === \"number\" ? indent : 1;\n\n return (\n <BaseWindow\n {...props}\n onRequestClose={onRequestClose}\n draggable={draggable}\n >\n <WindowHeader\n onRequestClose={onRequestClose}\n header={header}\n headerText={headerText}\n closeButtonClassName={closeButtonClassName}\n />\n <Box spacing={activeSpacing} indent={activeIndent}>\n {children}\n </Box>\n {footer && (\n <Box\n className={cx(styles.footer, {\n [styles.stickyFooter]: !disableStickyFooter,\n })}\n >\n {footer}\n </Box>\n )}\n </BaseWindow>\n );\n};\n","import { Column } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nexport interface WindowFooterProps {\n children?: ReactNode;\n}\n\nexport const WindowFooter: React.FC<WindowFooterProps> = ({ children }) => (\n <Column indent={2} spacing={2}>\n {children}\n </Column>\n);\n","import { createContext } from \"react\";\nimport { RejectCommand, ResolveCommand } from \"./DialogCommands\";\n\nexport interface DialogContextValue<TResolveValue> {\n resolve: ResolveCommand<TResolveValue>;\n reject: RejectCommand;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const DialogContext = createContext<DialogContextValue<any> | undefined>(\n undefined,\n);\n","import cx from \"classnames\";\nimport React, {\n CSSProperties,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { RejectCommand, ResolveCommand, ShowCommand } from \"./DialogCommands\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\nimport { Modal } from \"../declarative-modals/modal/Modal\";\n\ntype UseDialogCallbacks<TProps, TPromiseResolve> = {\n show: ShowCommand<TProps, TPromiseResolve>;\n reject: RejectCommand;\n};\n\nexport type UseDialogResult<TProps, TPromiseResolve> = [\n ReactNode,\n UseDialogCallbacks<TProps, TPromiseResolve>,\n];\n\nexport interface DialogOptions {\n divInsteadOfDialog?: boolean;\n background?: string;\n disableCloseOnClickOutside?: boolean;\n modal: boolean;\n className: string;\n closingClassName: string;\n contentWrapperClassName: string;\n contentWrapperStyle?: CSSProperties;\n dialogStyle?: CSSProperties;\n ref?: RefObject<HTMLDialogElement>;\n onResolve?: () => void;\n onReject?: () => void;\n /**\n * Sets aria-label on modal or dialog element.\n */\n label?: string;\n /**\n * Sets aria-labelledby on modal or dialog element.\n */\n labelledby?: string;\n /**\n * Sets aria-describedby on modal or dialog element.\n */\n describedby?: string;\n}\n\nexport function useDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n {\n ref,\n modal,\n contentWrapperClassName,\n closingClassName,\n contentWrapperStyle,\n dialogStyle,\n divInsteadOfDialog,\n disableCloseOnClickOutside,\n onResolve,\n onReject,\n className,\n background,\n label,\n labelledby,\n describedby,\n }: DialogOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n const localRef = useRef<HTMLDialogElement>(null);\n const currentRef = ref ?? localRef;\n const [key, forceRerender] = useReducer((x) => x + 1, 0);\n const promiseRef = useRef<Promise<TPromiseResolve | undefined>>();\n const resolveRef = useRef<ResolveCommand<TPromiseResolve> | undefined>();\n const modalComponentProps = useRef<TProps>();\n const rejectRef = useRef<RejectCommand | undefined>();\n /**\n * Used by Modal to control open/close with animation.\n */\n const [isOpen, setIsOpen] = useState(false);\n /**\n * Used by both Modal and dialog to decide if content is visible. When props is cleared, we can not render content that requires props.\n */\n const [contentVisible, setContentVisible] = useState(false);\n /**\n * Used by dialog to know if it is currently animating to closed state.\n */\n const [closing, setClosing] = useState(false);\n\n const Comp = component;\n\n const show = useCallback<ShowCommand<TProps, TPromiseResolve>>(\n (props?: TProps) => {\n promiseRef.current = new Promise<TPromiseResolve | undefined>(\n (resolve, reject) => {\n resolveRef.current = resolve;\n rejectRef.current = reject;\n },\n );\n setClosing(false);\n setIsOpen(true);\n setContentVisible(true);\n forceRerender();\n modalComponentProps.current = props;\n if (modal) {\n currentRef.current?.showModal();\n } else {\n currentRef.current?.show();\n }\n return promiseRef.current;\n },\n [currentRef, modal],\n );\n\n const resolve = useCallback<ResolveCommand<TPromiseResolve>>(\n (value) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n resolveRef.current?.(value);\n modalComponentProps.current = undefined;\n onResolve?.();\n }, 300);\n }\n },\n [currentRef, onResolve, divInsteadOfDialog],\n );\n\n const onClose = useCallback(() => {\n // Remove content immediately, since it cannot be animated when closed by browser.\n setClosing(false);\n setIsOpen(false);\n setContentVisible(false);\n rejectRef.current?.();\n onReject?.();\n modalComponentProps.current = undefined;\n }, [onReject]);\n\n const reject = useCallback<RejectCommand>(\n (error) => {\n // Trigger closing animation.\n setClosing(true);\n setIsOpen(false);\n if (!divInsteadOfDialog) {\n currentRef.current?.addEventListener(\n \"animationend\",\n () => {\n setClosing(false);\n setContentVisible(false);\n currentRef.current?.close();\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n },\n { once: true },\n );\n } else {\n setTimeout(() => {\n setClosing(false);\n setContentVisible(false);\n rejectRef.current?.(error);\n onReject?.();\n modalComponentProps.current = undefined;\n }, 300);\n }\n },\n [currentRef, divInsteadOfDialog, onReject],\n );\n\n const onClick = useCallback<MouseEventHandler<HTMLDialogElement>>(\n (e) => {\n if (e.target !== currentRef.current) {\n return;\n }\n\n const rect = currentRef.current.getBoundingClientRect();\n\n const clickedInsideDialog =\n rect.top <= e.clientY &&\n e.clientY <= rect.top + rect.height &&\n rect.left <= e.clientX &&\n e.clientX <= rect.left + rect.width;\n\n if (!clickedInsideDialog) {\n reject();\n }\n },\n [currentRef, reject],\n );\n\n const contextValue = useMemo(\n () => ({ resolve, reject }) as DialogContextValue<unknown>,\n [reject, resolve],\n );\n\n const element = useMemo<ReactNode>(\n () =>\n divInsteadOfDialog ? (\n <Modal\n isOpen={isOpen}\n onRequestClose={reject}\n background={background}\n contentLabel={label}\n aria={{ modal: true, labelledby, describedby }}\n >\n <DialogContext.Provider value={contextValue}>\n {contentVisible && (\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n )}\n </DialogContext.Provider>\n </Modal>\n ) : (\n <dialog\n onClick={disableCloseOnClickOutside ? undefined : onClick}\n onClose={onClose}\n ref={currentRef}\n className={cx(className, closing && closingClassName)}\n aria-label={label}\n aria-labelledby={labelledby}\n aria-describedby={describedby}\n style={{ background: background, ...dialogStyle }}\n >\n <div style={contentWrapperStyle} className={contentWrapperClassName}>\n {contentVisible && (\n <DialogContext.Provider value={contextValue}>\n <Comp {...(modalComponentProps.current as TProps)} key={key} />\n </DialogContext.Provider>\n )}\n </div>\n </dialog>\n ),\n [\n divInsteadOfDialog,\n isOpen,\n reject,\n background,\n label,\n labelledby,\n describedby,\n contextValue,\n contentVisible,\n Comp,\n key,\n disableCloseOnClickOutside,\n onClick,\n onClose,\n currentRef,\n className,\n closing,\n closingClassName,\n dialogStyle,\n contentWrapperStyle,\n contentWrapperClassName,\n ],\n );\n\n return [element, { show, reject }];\n}\n","import { useContext } from \"react\";\nimport { DialogContext, DialogContextValue } from \"./DialogContext\";\n\nexport const useDialogPromise = <\n TResolveValue = void,\n>(): DialogContextValue<TResolveValue> => {\n const context = useContext(DialogContext);\n if (context == null) {\n throw new Error(\"useDialogPromise is being used outside of dialog.\");\n }\n return context as DialogContextValue<TResolveValue>;\n};\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./AlertDialog.module.css\";\n\nexport function useAlertDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.alertDialog),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./DrawerDialog.module.css\";\nimport { SlideFrom } from \"../../common-types\";\n\ninterface DrawerOptions\n extends Partial<Omit<DialogOptions, \"disableCloseOnClickOutside\">> {}\n\nexport function useDrawerDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n slideFrom: SlideFrom = \"left\",\n options?: DrawerOptions,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n disableCloseOnClickOutside: true,\n modal: false,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.drawerDialog, styles[slideFrom]),\n });\n}\n","import * as React from \"react\";\nimport { DialogOptions, useDialog, UseDialogResult } from \"../UseDialog\";\nimport cx from \"classnames\";\nimport styles from \"./ModalDialog.module.css\";\n\nexport function useModalDialog<TProps, TPromiseResolve = void>(\n component: React.FC<TProps>,\n options?: Partial<DialogOptions>,\n): UseDialogResult<TProps, TPromiseResolve> {\n return useDialog<TProps, TPromiseResolve>(component, {\n ...options,\n modal: true,\n closingClassName: cx(options?.closingClassName, styles.closing),\n contentWrapperClassName: cx(\n options?.contentWrapperClassName,\n styles.contentWrapper,\n ),\n className: cx(options?.className, styles.modalDialog),\n });\n}\n","import * as React from \"react\";\nimport { Heading, HeadingVariant } from \"@stenajs-webui/core\";\n\nexport type ModalHeadingSizeVariant = \"medium\" | \"large\";\n\nexport interface ModalHeadingProps {\n size?: ModalHeadingSizeVariant;\n children: string;\n headingLevel?: HeadingVariant;\n}\n\nexport const ModalHeading: React.FC<ModalHeadingProps> = ({\n headingLevel = \"h2\",\n size = \"medium\",\n children,\n}) => {\n return (\n <Heading variant={size === \"medium\" ? \"h3\" : \"h1\"} as={headingLevel}>\n {children}\n </Heading>\n );\n};\n","import * as React from \"react\";\nimport styles from \"./ModalActionButtons.module.css\";\nimport { ReactNode } from \"react\";\nimport { Box, Spacing } from \"@stenajs-webui/core\";\n\nexport interface ModalActionButtonsProps {\n buttons: ReactNode;\n}\n\nexport const ModalActionButtons: React.FC<ModalActionButtonsProps> = ({\n buttons,\n}) => {\n return (\n <Box width={\"100%\"}>\n <Spacing />\n <div className={styles.modalActionButtons}>{buttons}</div>\n </Box>\n );\n};\n","import * as React from \"react\";\nimport { Box, BoxProps } from \"@stenajs-webui/core\";\n\nexport interface ModalBodyProps extends Omit<BoxProps, \"indent\" | \"spacing\"> {}\n\nexport const ModalBody: React.FC<ModalBodyProps> = ({ gap = 3, ...props }) => {\n return <Box indent={3} spacing={3} gap={gap} {...props} />;\n};\n","import * as React from \"react\";\nimport { BoxProps, Column } from \"@stenajs-webui/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport interface ModalContainerProps\n extends PropsWithChildren,\n Pick<BoxProps, \"maxWidth\"> {}\n\nexport const ModalContainer: React.FC<ModalContainerProps> = ({\n children,\n maxWidth,\n}) => {\n return (\n <Column\n flex={1}\n height={\"100%\"}\n justifyContent={\"space-between\"}\n maxWidth={maxWidth}\n >\n {children}\n </Column>\n );\n};\n","import * as React from \"react\";\nimport { PropsWithChildren, ReactNode } from \"react\";\nimport { Text } from \"@stenajs-webui/core\";\nimport { ModalHeading } from \"../building-blocks/ModalHeading\";\nimport { ModalActionButtons } from \"../building-blocks/ModalActionButtons\";\nimport { CircledIcon, MediumIcon } from \"@stenajs-webui/elements\";\nimport { ModalBody } from \"../building-blocks/ModalBody\";\nimport { ModalContainer } from \"../building-blocks/ModalContainer\";\n\nexport interface InfoAlertProps extends PropsWithChildren {\n heading: string;\n text?: string;\n buttons?: ReactNode;\n icon?: MediumIcon;\n onRequestClose?: () => void;\n maxWidth?: string;\n minWidth?: string;\n}\n\nexport const InfoAlert: React.FC<InfoAlertProps> = ({\n icon,\n buttons,\n heading,\n text,\n children,\n maxWidth,\n minWidth,\n}) => {\n return (\n <ModalContainer>\n <ModalBody\n flexDirection={\"column\"}\n alignItems={\"center\"}\n maxWidth={maxWidth}\n minWidth={minWidth}\n >\n {icon && <CircledIcon icon={icon} size={\"large\"} />}\n <ModalHeading>{heading}</ModalHeading>\n {text && <Text textAlign={\"center\"}>{text}</Text>}\n {children}\n {buttons && <ModalActionButtons buttons={buttons} />}\n </ModalBody>\n </ModalContainer>\n );\n};\n","import * as React from \"react\";\nimport { HeadingVariant, Row } from \"@stenajs-webui/core\";\nimport { ModalHeading, ModalHeadingSizeVariant } from \"./ModalHeading\";\nimport { CloseButton } from \"@stenajs-webui/elements\";\n\nexport interface ModalHeaderProps {\n heading?: string;\n headingSize?: ModalHeadingSizeVariant;\n headingLevel?: HeadingVariant;\n onClickClose?: () => void;\n}\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({\n heading,\n headingLevel,\n headingSize,\n onClickClose,\n}) => {\n return (\n <Row justifyContent={\"space-between\"}>\n {heading && (\n <ModalHeading headingLevel={headingLevel} size={headingSize}>\n {heading}\n </ModalHeading>\n )}\n <CloseButton onClick={onClickClose} />\n </Row>\n );\n};\n","import { Row } from \"@stenajs-webui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport styles from \"./ModalFooter.module.css\";\nimport cx from \"classnames\";\n\nexport interface ModalFooterProps {\n children: ReactNode;\n sticky?: boolean;\n zIndex?: number;\n}\n\nexport const ModalFooter: React.FC<ModalFooterProps> = ({\n children,\n sticky,\n zIndex = 4,\n}) => {\n return (\n <Row\n className={cx(styles.modalFooter, sticky && styles.sticky)}\n shadow={\"var(--swui-sticky-footer-shadow)\"}\n zIndex={zIndex}\n >\n {children}\n </Row>\n );\n};\n"],"names":["setupDeclarativeModals","htmlElement","ReactModal","DRAGGABLE_HANDLE_CLASSNAME","DRAGGABLE_CANCEL_CLASSNAME","BaseWindow","width","maxWidth","draggable","children","reactModalProps","nodeRef","useRef","jsx","styles","Draggable","cx","Drawer","background","zIndex","slideFrom","portalTarget","floating","height","getClassNameForSlide","exhaustSwitchCase","DrawerHeader","header","contentRight","onRequestClose","icon","Spacing","cssColor","jsxs","Row","Space","Icon","Heading","FlatButton","stenaTimes","style","Alert","Modal","LoadingModal","headerIconLeft","headerText","shouldCloseOnOverlayClick","shouldCloseOnEsc","modalProps","Column","Box","Spinner","Fragment","Indent","WindowHeader","closeButtonClassName","Txt","CloseButton","Window","spacing","indent","footer","disableStickyFooter","props","activeSpacing","activeIndent","WindowFooter","DialogContext","createContext","useDialog","component","ref","modal","contentWrapperClassName","closingClassName","contentWrapperStyle","dialogStyle","divInsteadOfDialog","disableCloseOnClickOutside","onResolve","onReject","className","label","labelledby","describedby","localRef","currentRef","key","forceRerender","useReducer","x","promiseRef","resolveRef","modalComponentProps","rejectRef","isOpen","setIsOpen","useState","contentVisible","setContentVisible","closing","setClosing","Comp","show","useCallback","resolve","reject","_a","_b","value","onClose","error","onClick","e","rect","contextValue","useMemo","createElement","useDialogPromise","context","useContext","useAlertDialog","options","useDrawerDialog","useModalDialog","ModalHeading","headingLevel","size","ModalActionButtons","buttons","ModalBody","gap","ModalContainer","InfoAlert","heading","text","minWidth","CircledIcon","Text","ModalHeader","headingSize","onClickClose","ModalFooter","sticky"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/modal",
|
|
3
|
-
"version": "21.24.
|
|
3
|
+
"version": "21.24.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "mattias800",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"deploy": "gh-pages -d example/build"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@stenajs-webui/core": "21.24.
|
|
37
|
-
"@stenajs-webui/elements": "21.24.
|
|
38
|
-
"@stenajs-webui/theme": "21.24.
|
|
36
|
+
"@stenajs-webui/core": "21.24.3",
|
|
37
|
+
"@stenajs-webui/elements": "21.24.3",
|
|
38
|
+
"@stenajs-webui/theme": "21.24.3",
|
|
39
39
|
"@types/react-modal": "^3.16.3",
|
|
40
40
|
"classnames": "^2.5.1",
|
|
41
41
|
"react-draggable": "4.4.6",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"files": [
|
|
63
63
|
"dist"
|
|
64
64
|
],
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "fa71f6ec2b3f9595996d209b9b0758bd6ef41b98"
|
|
66
66
|
}
|