se-design 0.0.183 → 0.0.185
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/components/DatePicker/index.d.ts +3 -0
- package/dist/components/InputWithIcon/index.d.ts +3 -1
- package/dist/components/LabelChip/index.d.ts +1 -0
- package/dist/index17.js +109 -97
- package/dist/index17.js.map +1 -1
- package/dist/index49.js +193 -142
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +47 -39
- package/dist/index50.js.map +1 -1
- package/dist/index9.js +45 -32
- package/dist/index9.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,6 +11,9 @@ export interface DatePickerProps {
|
|
|
11
11
|
onApply?: (dateRange: DateRange) => void;
|
|
12
12
|
onClose?: () => void;
|
|
13
13
|
shouldAllowFutureDateSelection?: boolean;
|
|
14
|
+
maxDays?: number;
|
|
15
|
+
disablePastDates?: boolean;
|
|
16
|
+
singleDateSelection?: boolean;
|
|
14
17
|
minYearOption?: number;
|
|
15
18
|
showQuickActions?: boolean;
|
|
16
19
|
className?: string;
|
|
@@ -17,11 +17,13 @@ export interface InputWithIconProps {
|
|
|
17
17
|
leftIcon?: InputIconProps;
|
|
18
18
|
maxLength?: number | undefined;
|
|
19
19
|
onChange: (value: string) => void;
|
|
20
|
+
onClick?: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
20
21
|
placeholder?: string;
|
|
21
22
|
rightIcon?: InputIconProps;
|
|
22
23
|
style?: React.CSSProperties;
|
|
23
24
|
tag?: string;
|
|
24
25
|
type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search';
|
|
25
26
|
value: string;
|
|
27
|
+
className?: string;
|
|
26
28
|
}
|
|
27
|
-
export declare function InputWithIcon({ disabled, error, errorMessage, inputStyle, label, leftIcon, maxLength, onChange, placeholder, rightIcon, style, tag, type, value }: InputWithIconProps): React.JSX.Element;
|
|
29
|
+
export declare function InputWithIcon({ disabled, error, errorMessage, inputStyle, label, leftIcon, maxLength, onChange, onClick, placeholder, rightIcon, style, tag, type, value, className }: InputWithIconProps): React.JSX.Element;
|
package/dist/index17.js
CHANGED
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
function
|
|
4
|
-
return
|
|
5
|
-
for (var
|
|
6
|
-
var
|
|
7
|
-
for (var
|
|
1
|
+
import R, { forwardRef as K, useState as k, useRef as I, useEffect as N, useImperativeHandle as Q } from "react";
|
|
2
|
+
import U from "react-dom";
|
|
3
|
+
function E() {
|
|
4
|
+
return E = Object.assign ? Object.assign.bind() : function(g) {
|
|
5
|
+
for (var v = 1; v < arguments.length; v++) {
|
|
6
|
+
var c = arguments[v];
|
|
7
|
+
for (var f in c) ({}).hasOwnProperty.call(c, f) && (g[f] = c[f]);
|
|
8
8
|
}
|
|
9
|
-
return
|
|
10
|
-
},
|
|
9
|
+
return g;
|
|
10
|
+
}, E.apply(null, arguments);
|
|
11
11
|
}
|
|
12
|
-
const
|
|
13
|
-
className:
|
|
14
|
-
automationId:
|
|
15
|
-
position:
|
|
16
|
-
popoverContentAutomationId:
|
|
17
|
-
contentWidth:
|
|
18
|
-
renderPopoverContents:
|
|
19
|
-
renderPopoverSrcElement:
|
|
20
|
-
onPopoverToggle:
|
|
21
|
-
isPopoverOpen:
|
|
22
|
-
disabled:
|
|
23
|
-
isWithPortal:
|
|
24
|
-
...
|
|
25
|
-
},
|
|
26
|
-
const [
|
|
12
|
+
const tt = /* @__PURE__ */ K(({
|
|
13
|
+
className: g = "",
|
|
14
|
+
automationId: v = "",
|
|
15
|
+
position: c = "bottom-center",
|
|
16
|
+
popoverContentAutomationId: f = "",
|
|
17
|
+
contentWidth: L = "max",
|
|
18
|
+
renderPopoverContents: x,
|
|
19
|
+
renderPopoverSrcElement: X,
|
|
20
|
+
onPopoverToggle: S,
|
|
21
|
+
isPopoverOpen: H,
|
|
22
|
+
disabled: A = !1,
|
|
23
|
+
isWithPortal: p = !1,
|
|
24
|
+
...B
|
|
25
|
+
}, W) => {
|
|
26
|
+
const [i, u] = k(!1), [b, z] = k(c), [q, $] = k(!1), s = I(null), d = I(null), [D, h] = k({
|
|
27
27
|
top: 0,
|
|
28
28
|
left: 0
|
|
29
|
-
}),
|
|
30
|
-
if (!
|
|
29
|
+
}), w = (e = "bottom-center") => {
|
|
30
|
+
if (!s.current) return {
|
|
31
31
|
top: 0,
|
|
32
32
|
left: 0
|
|
33
33
|
};
|
|
34
|
-
|
|
34
|
+
let n = e;
|
|
35
|
+
const t = s.current.getBoundingClientRect(), l = window.innerWidth, a = window.innerHeight;
|
|
35
36
|
let o = 0, r = 0;
|
|
36
|
-
switch (
|
|
37
|
+
switch (n) {
|
|
37
38
|
case "bottom-left":
|
|
38
39
|
o = t.bottom, r = t.left;
|
|
39
40
|
break;
|
|
@@ -56,64 +57,75 @@ const K = /* @__PURE__ */ q(({
|
|
|
56
57
|
o = t.bottom, r = t.left;
|
|
57
58
|
break;
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
const T = d.current?.getBoundingClientRect(), _ = T?.width || 0, m = T?.height || 0;
|
|
61
|
+
if (r + _ > l && (r = Math.max(0, l - _)), r < 0 && (r = 0), o + m > a) {
|
|
62
|
+
const j = t.top, J = a - t.bottom;
|
|
63
|
+
j >= m || j > J ? (o = t.top - m, o < 0 && (o = 0)) : o = Math.max(0, a - m);
|
|
64
|
+
}
|
|
65
|
+
return o < 0 && (o = t.bottom, o + m > a && (o = Math.max(0, a - m))), {
|
|
60
66
|
top: o,
|
|
61
67
|
left: r
|
|
62
68
|
};
|
|
63
69
|
};
|
|
64
|
-
|
|
65
|
-
if (
|
|
66
|
-
return document.body.addEventListener("click",
|
|
67
|
-
if (
|
|
68
|
-
document.body.addEventListener("click",
|
|
70
|
+
N(() => {
|
|
71
|
+
if (S && S(i), i && !p)
|
|
72
|
+
return document.body.addEventListener("click", M), F(), () => document.body.removeEventListener("click", M);
|
|
73
|
+
if (i && p) {
|
|
74
|
+
document.body.addEventListener("click", P), window.addEventListener("scroll", P), window.addEventListener("resize", O);
|
|
69
75
|
const e = setTimeout(() => {
|
|
70
|
-
const t =
|
|
71
|
-
|
|
72
|
-
}, 0)
|
|
76
|
+
const t = w(b);
|
|
77
|
+
y(), t && h(t);
|
|
78
|
+
}, 0), n = setTimeout(() => {
|
|
79
|
+
const t = w(b);
|
|
80
|
+
t && h(t);
|
|
81
|
+
}, 10);
|
|
73
82
|
return () => {
|
|
74
|
-
document.body.removeEventListener("click",
|
|
83
|
+
document.body.removeEventListener("click", P), window.removeEventListener("scroll", P), window.removeEventListener("resize", O), clearTimeout(e), clearTimeout(n);
|
|
75
84
|
};
|
|
76
85
|
}
|
|
77
|
-
}, [
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
80
|
-
|
|
86
|
+
}, [i, p]);
|
|
87
|
+
const y = () => {
|
|
88
|
+
if (!s.current) {
|
|
89
|
+
$(!1);
|
|
81
90
|
return;
|
|
82
91
|
}
|
|
83
|
-
const e =
|
|
84
|
-
|
|
92
|
+
const e = s.current.getBoundingClientRect(), n = window.innerHeight, t = window.innerWidth, l = e.top < n && e.bottom > 0 && e.left < t && e.right > 0;
|
|
93
|
+
$(l);
|
|
85
94
|
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}, [
|
|
89
|
-
const
|
|
90
|
-
if (!
|
|
91
|
-
const e =
|
|
92
|
-
e?.bottom >
|
|
93
|
-
},
|
|
94
|
-
const
|
|
95
|
-
if (!
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
},
|
|
99
|
-
const
|
|
100
|
-
if (!
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
95
|
+
N(() => {
|
|
96
|
+
u(H ?? !1);
|
|
97
|
+
}, [H]);
|
|
98
|
+
const F = () => {
|
|
99
|
+
if (!d.current) return;
|
|
100
|
+
const e = d.current.getBoundingClientRect(), n = window.innerHeight;
|
|
101
|
+
e?.bottom > n ? z(c.includes("left") ? "top-left" : c.includes("right") ? "top-right" : "top-center") : e?.top < 0 && z(c.includes("left") ? "bottom-left" : c.includes("right") ? "bottom-right" : "bottom-center");
|
|
102
|
+
}, M = (e) => {
|
|
103
|
+
const n = s.current;
|
|
104
|
+
if (!n) return;
|
|
105
|
+
const t = e.target;
|
|
106
|
+
n.contains(t) || u(!1);
|
|
107
|
+
}, P = (e) => {
|
|
108
|
+
const n = s.current, t = d.current;
|
|
109
|
+
if (!n) return;
|
|
110
|
+
if (y(), e.type === "scroll" && i) {
|
|
111
|
+
const r = w(b);
|
|
112
|
+
r && h(r);
|
|
113
|
+
}
|
|
114
|
+
const l = e.target, a = n.contains(l), o = t?.contains(l);
|
|
115
|
+
!a && !o && u(!1);
|
|
116
|
+
}, O = () => {
|
|
117
|
+
if (i && p && s.current) {
|
|
118
|
+
y();
|
|
119
|
+
const e = w(b);
|
|
120
|
+
e && h(e);
|
|
109
121
|
}
|
|
110
|
-
},
|
|
111
|
-
|
|
122
|
+
}, C = () => {
|
|
123
|
+
u((e) => !e);
|
|
112
124
|
};
|
|
113
|
-
|
|
114
|
-
togglePopover:
|
|
125
|
+
Q(W, () => ({
|
|
126
|
+
togglePopover: C
|
|
115
127
|
}), []);
|
|
116
|
-
const
|
|
128
|
+
const G = {
|
|
117
129
|
"bottom-left": {
|
|
118
130
|
left: "0",
|
|
119
131
|
top: "100%"
|
|
@@ -140,49 +152,49 @@ const K = /* @__PURE__ */ q(({
|
|
|
140
152
|
transform: "translateX(-50%)",
|
|
141
153
|
bottom: "100%"
|
|
142
154
|
}
|
|
143
|
-
},
|
|
144
|
-
return /* @__PURE__ */
|
|
145
|
-
className: "se-design-popover-wrapper cursor-pointer relative" + (
|
|
146
|
-
ref:
|
|
155
|
+
}, V = B?.noBorder ? "" : "shadow-md border rounded-md";
|
|
156
|
+
return /* @__PURE__ */ R.createElement("div", E({
|
|
157
|
+
className: "se-design-popover-wrapper cursor-pointer relative" + (g.length > 0 ? ` ${g}` : "") + (i ? " open" : "") + (A ? " opacity-50 cursor-not-allowed pointer-events-none" : ""),
|
|
158
|
+
ref: s,
|
|
147
159
|
onClick: (e) => {
|
|
148
|
-
e.stopPropagation(),
|
|
160
|
+
e.stopPropagation(), C();
|
|
149
161
|
},
|
|
150
|
-
"data-automation-id":
|
|
151
|
-
},
|
|
152
|
-
displayPopover:
|
|
153
|
-
togglePopover:
|
|
154
|
-
}),
|
|
155
|
-
className: `popover-content absolute ${
|
|
162
|
+
"data-automation-id": v
|
|
163
|
+
}, B), X({
|
|
164
|
+
displayPopover: i,
|
|
165
|
+
togglePopover: C
|
|
166
|
+
}), i && !p && /* @__PURE__ */ R.createElement("div", {
|
|
167
|
+
className: `popover-content absolute ${V} z-[1000] ${L == "full" ? "w-full" : "w-max"}`,
|
|
156
168
|
style: {
|
|
157
169
|
borderColor: "var(--color-gray-200)",
|
|
158
170
|
color: "var(--color-gray-900)",
|
|
159
171
|
backgroundColor: "var(--color-white)",
|
|
160
|
-
...
|
|
172
|
+
...G[b]
|
|
161
173
|
},
|
|
162
174
|
onClick: (e) => e.stopPropagation(),
|
|
163
|
-
ref:
|
|
164
|
-
"data-automation-id":
|
|
165
|
-
},
|
|
166
|
-
closePopoverCb: () =>
|
|
167
|
-
})),
|
|
168
|
-
className: `popover-content-with-portal ${
|
|
175
|
+
ref: d,
|
|
176
|
+
"data-automation-id": f
|
|
177
|
+
}, x({
|
|
178
|
+
closePopoverCb: () => u(!1)
|
|
179
|
+
})), p && i && q && /* @__PURE__ */ U.createPortal(/* @__PURE__ */ R.createElement("div", {
|
|
180
|
+
className: `popover-content-with-portal ${V} ${L == "full" ? "w-full" : "w-max"}`,
|
|
169
181
|
style: {
|
|
170
182
|
position: "fixed",
|
|
171
|
-
top:
|
|
172
|
-
left:
|
|
183
|
+
top: D.top,
|
|
184
|
+
left: D.left,
|
|
173
185
|
zIndex: 1e3,
|
|
174
186
|
borderColor: "var(--color-gray-200)",
|
|
175
187
|
color: "var(--color-gray-900)",
|
|
176
188
|
backgroundColor: "var(--color-white)"
|
|
177
189
|
},
|
|
178
190
|
onClick: (e) => e.stopPropagation(),
|
|
179
|
-
ref:
|
|
180
|
-
"data-automation-id":
|
|
181
|
-
},
|
|
182
|
-
closePopoverCb: () =>
|
|
191
|
+
ref: d,
|
|
192
|
+
"data-automation-id": f
|
|
193
|
+
}, x({
|
|
194
|
+
closePopoverCb: () => u(!1)
|
|
183
195
|
})), document.body));
|
|
184
196
|
});
|
|
185
197
|
export {
|
|
186
|
-
|
|
198
|
+
tt as Popover
|
|
187
199
|
};
|
|
188
200
|
//# sourceMappingURL=index17.js.map
|
package/dist/index17.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index17.js","sources":["../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useState, useRef, ReactNode, useEffect, forwardRef, ForwardedRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\n\nexport interface PopoverHandle {\n togglePopover: () => void;\n}\n\nexport interface PopoverProps {\n className?: string;\n automationId?: string;\n popoverContentAutomationId?: string;\n renderPopoverContents: (props: { closePopoverCb: () => void }) => ReactNode;\n renderPopoverSrcElement: (props: { displayPopover: boolean; togglePopover: () => void }) => ReactNode;\n position?: 'bottom-center' | 'bottom-left' | 'bottom-right' | 'top-center' | 'top-left' | 'top-right';\n onPopoverToggle?: (displayPopover: boolean) => void;\n contentWidth?: 'full' | 'max';\n isPopoverOpen?: boolean;\n disabled?: boolean;\n isWithPortal?: boolean;\n noBorder?: boolean;\n}\n\nexport const Popover = forwardRef<PopoverHandle, PopoverProps>(\n (\n {\n className = '',\n automationId = '',\n position = 'bottom-center',\n popoverContentAutomationId = '',\n contentWidth = 'max',\n renderPopoverContents,\n renderPopoverSrcElement,\n onPopoverToggle,\n isPopoverOpen,\n disabled = false,\n isWithPortal = false,\n ...props\n },\n ref: ForwardedRef<PopoverHandle>\n ) => {\n const [displayPopover, setDisplayPopover] = useState(false);\n const [popoverPosition, setPopoverPosition] = useState(position);\n const [isSrcElementVisible, setIsSrcElementVisible] = useState(false);\n const srcElementRef = useRef<HTMLDivElement>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const [portalPosition, setPortalPosition] = useState({ top: 0, left: 0 });\n\n const calculatePositionOfPopover = (position: string = 'bottom-center') => {\n if (!srcElementRef.current) return { top: 0, left: 0 };\n\n const srcRect = srcElementRef.current.getBoundingClientRect();\n\n // Calculate position for portal\n let top = 0;\n let left = 0;\n\n switch (position) {\n case 'bottom-left':\n top = srcRect.bottom;\n left = srcRect.left;\n break;\n case 'bottom-right':\n top = srcRect.bottom;\n left = srcRect.right - srcRect.width * 0.5;\n break;\n case 'bottom-center':\n top = srcRect.bottom;\n left = srcRect.left + srcRect.width * 0.15;\n break;\n case 'top-left':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.left;\n break;\n case 'top-right':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.right - srcRect.width * 0.5;\n break;\n case 'top-center':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.left + srcRect.width * 0.15;\n break;\n default:\n top = srcRect.bottom;\n left = srcRect.left;\n break;\n }\n\n return { top, left };\n };\n\n useEffect(() => {\n if (onPopoverToggle) {\n onPopoverToggle(displayPopover);\n }\n\n if (displayPopover && !isWithPortal) {\n document.body.addEventListener('click', clickListener);\n checkPopoverPosition();\n return () => document.body.removeEventListener('click', clickListener);\n } else if (displayPopover && isWithPortal) {\n document.body.addEventListener('click', clickAndScrollListenerWithPortal);\n window.addEventListener('scroll', clickAndScrollListenerWithPortal);\n window.addEventListener('resize', resizeListenerWithPortal);\n\n const timeout = setTimeout(() => {\n const position = calculatePositionOfPopover(popoverPosition);\n checkSourceVisibility();\n checkPopoverPosition();\n if (position) {\n setPortalPosition(position);\n }\n }, 0);\n\n return () => {\n document.body.removeEventListener('click', clickAndScrollListenerWithPortal);\n window.removeEventListener('scroll', clickAndScrollListenerWithPortal);\n window.removeEventListener('resize', resizeListenerWithPortal);\n clearTimeout(timeout);\n };\n }\n }, [displayPopover, isWithPortal]);\n\n const checkSourceVisibility = () => {\n if (!srcElementRef.current) {\n setIsSrcElementVisible(false);\n return;\n }\n\n const rec = srcElementRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n const isVisible = rec.top < viewportHeight && rec.bottom > 0 && rec.left < viewportWidth && rec.right > 0;\n\n setIsSrcElementVisible(isVisible);\n };\n\n useEffect(() => {\n setDisplayPopover(isPopoverOpen ?? false);\n }, [isPopoverOpen]);\n\n //Function to check popover position\n const checkPopoverPosition = () => {\n if (!popoverContentRef.current) return;\n\n const popoverRect = popoverContentRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n\n if (popoverRect?.bottom > viewportHeight) {\n setPopoverPosition(\n position.includes('left') ? 'top-left' : position.includes('right') ? 'top-right' : 'top-center'\n );\n } else if (popoverRect?.top < 0) {\n // If popover extends beyond top of viewport, switch to bottom position\n setPopoverPosition(\n position.includes('left') ? 'bottom-left' : position.includes('right') ? 'bottom-right' : 'bottom-center'\n );\n }\n };\n\n const clickListener = (event: MouseEvent) => {\n const currentDropRef = srcElementRef.current;\n if (!currentDropRef) return;\n\n const target = event.target as Node;\n const isSourcePopover = currentDropRef.contains(target);\n // if clicked source is parent or the popover-content, do not toggle dropdown.\n if (!isSourcePopover) {\n setDisplayPopover(false);\n }\n };\n\n const clickAndScrollListenerWithPortal = (event: Event) => {\n const currentDropRef = srcElementRef.current;\n const currentPopoverRef = popoverContentRef.current;\n if (!currentDropRef) return;\n checkSourceVisibility();\n\n const target = event.target as Node;\n const isSourcePopover = currentDropRef.contains(target);\n const isPopoverContent = currentPopoverRef?.contains(target);\n\n // if clicked source is parent or the popover-content, do not toggle dropdown.\n if (!isSourcePopover && !isPopoverContent) {\n setDisplayPopover(false);\n }\n };\n\n const resizeListenerWithPortal = () => {\n if (displayPopover && isWithPortal && srcElementRef.current) {\n checkSourceVisibility();\n const position = calculatePositionOfPopover(popoverPosition);\n if (position) {\n setPortalPosition(position);\n }\n }\n };\n\n const togglePopover = () => {\n setDisplayPopover((displayPopover) => !displayPopover);\n };\n\n useImperativeHandle(ref, () => ({ togglePopover }), []);\n\n const popoverContentStyle = {\n 'bottom-left': { left: '0', top: '100%' },\n 'bottom-right': { right: '0', top: '100%' },\n 'bottom-center': { left: '50%', transform: 'translateX(-50%)', top: '100%' },\n 'top-left': { left: '0', bottom: '100%' },\n 'top-right': { right: '0', bottom: '100%' },\n 'top-center': { left: '50%', transform: 'translateX(-50%)', bottom: '100%' }\n };\n const popoverContentClasses = props?.noBorder ? '' : 'shadow-md border rounded-md';\n\n return (\n <div\n className={\n 'se-design-popover-wrapper cursor-pointer relative' +\n (className.length > 0 ? ` ${className}` : '') +\n (displayPopover ? ' open' : '') +\n (disabled ? ' opacity-50 cursor-not-allowed pointer-events-none' : '')\n }\n ref={srcElementRef}\n onClick={(e) => {\n e.stopPropagation();\n togglePopover();\n }}\n data-automation-id={automationId}\n {...props}\n >\n {renderPopoverSrcElement({ displayPopover, togglePopover })}\n\n {displayPopover && !isWithPortal && (\n <div\n className={`popover-content absolute ${popoverContentClasses} z-[1000] ${contentWidth == 'full' ? 'w-full' : 'w-max'}`}\n style={{\n borderColor: 'var(--color-gray-200)',\n color: 'var(--color-gray-900)',\n backgroundColor: 'var(--color-white)',\n ...popoverContentStyle[popoverPosition]\n }}\n onClick={(e) => e.stopPropagation()}\n ref={popoverContentRef}\n data-automation-id={popoverContentAutomationId}\n >\n {renderPopoverContents({ closePopoverCb: () => setDisplayPopover(false) })}\n </div>\n )}\n {isWithPortal &&\n displayPopover &&\n isSrcElementVisible &&\n ReactDOM.createPortal(\n <div\n className={`popover-content-with-portal ${popoverContentClasses} ${contentWidth == 'full' ? 'w-full' : 'w-max'}`}\n style={{\n position: 'fixed',\n top: portalPosition.top,\n left: portalPosition.left,\n zIndex: 1000,\n borderColor: 'var(--color-gray-200)',\n color: 'var(--color-gray-900)',\n backgroundColor: 'var(--color-white)'\n }}\n onClick={(e) => e.stopPropagation()}\n ref={popoverContentRef}\n data-automation-id={popoverContentAutomationId}\n >\n {renderPopoverContents({ closePopoverCb: () => setDisplayPopover(false) })}\n </div>,\n document.body\n )}\n </div>\n );\n }\n);\n"],"names":["Popover","className","automationId","position","popoverContentAutomationId","contentWidth","renderPopoverContents","renderPopoverSrcElement","onPopoverToggle","isPopoverOpen","disabled","isWithPortal","props","ref","displayPopover","setDisplayPopover","useState","popoverPosition","setPopoverPosition","isSrcElementVisible","setIsSrcElementVisible","srcElementRef","useRef","popoverContentRef","portalPosition","setPortalPosition","top","left","calculatePositionOfPopover","current","srcRect","getBoundingClientRect","bottom","right","width","height","useEffect","document","body","addEventListener","clickListener","checkPopoverPosition","removeEventListener","clickAndScrollListenerWithPortal","window","resizeListenerWithPortal","timeout","setTimeout","checkSourceVisibility","clearTimeout","rec","viewportHeight","innerHeight","viewportWidth","innerWidth","isVisible","popoverRect","includes","event","currentDropRef","target","contains","currentPopoverRef","isSourcePopover","isPopoverContent","togglePopover","useImperativeHandle","popoverContentStyle","transform","popoverContentClasses","noBorder","React","createElement","_extends","length","onClick","e","stopPropagation","style","borderColor","color","backgroundColor","closePopoverCb","ReactDOM","createPortal","zIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index17.js","sources":["../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useState, useRef, ReactNode, useEffect, forwardRef, ForwardedRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\n\nexport interface PopoverHandle {\n togglePopover: () => void;\n}\n\nexport interface PopoverProps {\n className?: string;\n automationId?: string;\n popoverContentAutomationId?: string;\n renderPopoverContents: (props: { closePopoverCb: () => void }) => ReactNode;\n renderPopoverSrcElement: (props: { displayPopover: boolean; togglePopover: () => void }) => ReactNode;\n position?: 'bottom-center' | 'bottom-left' | 'bottom-right' | 'top-center' | 'top-left' | 'top-right';\n onPopoverToggle?: (displayPopover: boolean) => void;\n contentWidth?: 'full' | 'max';\n isPopoverOpen?: boolean;\n disabled?: boolean;\n isWithPortal?: boolean;\n noBorder?: boolean;\n}\n\nexport const Popover = forwardRef<PopoverHandle, PopoverProps>(\n (\n {\n className = '',\n automationId = '',\n position = 'bottom-center',\n popoverContentAutomationId = '',\n contentWidth = 'max',\n renderPopoverContents,\n renderPopoverSrcElement,\n onPopoverToggle,\n isPopoverOpen,\n disabled = false,\n isWithPortal = false,\n ...props\n },\n ref: ForwardedRef<PopoverHandle>\n ) => {\n const [displayPopover, setDisplayPopover] = useState(false);\n const [popoverPosition, setPopoverPosition] = useState(position);\n const [isSrcElementVisible, setIsSrcElementVisible] = useState(false);\n const srcElementRef = useRef<HTMLDivElement>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const [portalPosition, setPortalPosition] = useState({ top: 0, left: 0 });\n\n const calculatePositionOfPopover = (position: string = 'bottom-center') => {\n if (!srcElementRef.current) return { top: 0, left: 0 };\n\n let localPosition = position;\n\n const srcRect = srcElementRef.current.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Calculate position for portal\n let top = 0;\n let left = 0;\n\n switch (localPosition) {\n case 'bottom-left':\n top = srcRect.bottom;\n left = srcRect.left;\n break;\n case 'bottom-right':\n top = srcRect.bottom;\n left = srcRect.right - srcRect.width * 0.5;\n break;\n case 'bottom-center':\n top = srcRect.bottom;\n left = srcRect.left + srcRect.width * 0.15;\n break;\n case 'top-left':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.left;\n break;\n case 'top-right':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.right - srcRect.width * 0.5;\n break;\n case 'top-center':\n top = srcRect.top - srcRect.height * 1.9;\n left = srcRect.left + srcRect.width * 0.15;\n break;\n default:\n top = srcRect.bottom;\n left = srcRect.left;\n break;\n }\n\n // Get popover dimensions if available\n const popoverRect = popoverContentRef.current?.getBoundingClientRect();\n const popoverWidth = popoverRect?.width || 0;\n const popoverHeight = popoverRect?.height || 0;\n\n // Adjust position to keep popover within viewport bounds\n // Horizontal adjustments\n if (left + popoverWidth > viewportWidth) {\n // Popover extends beyond right edge, shift it left\n left = Math.max(0, viewportWidth - popoverWidth);\n }\n if (left < 0) {\n // Popover extends beyond left edge, shift it right\n left = 0;\n }\n\n // Vertical adjustments\n if (top + popoverHeight > viewportHeight) {\n // Popover extends beyond bottom edge\n // Try to position it above the source element\n const spaceAbove = srcRect.top;\n const spaceBelow = viewportHeight - srcRect.bottom;\n \n if (spaceAbove >= popoverHeight || spaceAbove > spaceBelow) {\n // Position above if there's enough space or more space above\n top = srcRect.top - popoverHeight;\n // Ensure it doesn't go above viewport\n if (top < 0) {\n top = 0;\n }\n } else {\n // Keep at bottom but adjust to fit within viewport\n top = Math.max(0, viewportHeight - popoverHeight);\n }\n }\n if (top < 0) {\n // Popover extends beyond top edge, position it below the source element\n top = srcRect.bottom;\n // Ensure it doesn't go below viewport\n if (top + popoverHeight > viewportHeight) {\n top = Math.max(0, viewportHeight - popoverHeight);\n }\n }\n\n return { top, left };\n };\n\n\n \n\n useEffect(() => {\n if (onPopoverToggle) {\n onPopoverToggle(displayPopover);\n }\n\n if (displayPopover && !isWithPortal) {\n document.body.addEventListener('click', clickListener);\n checkPopoverPosition();\n return () => document.body.removeEventListener('click', clickListener);\n } else if (displayPopover && isWithPortal) {\n document.body.addEventListener('click', clickAndScrollListenerWithPortal);\n window.addEventListener('scroll', clickAndScrollListenerWithPortal);\n window.addEventListener('resize', resizeListenerWithPortal);\n\n // Initial position calculation\n const timeout1 = setTimeout(() => {\n const position = calculatePositionOfPopover(popoverPosition);\n checkSourceVisibility();\n \n if (position) {\n setPortalPosition(position);\n }\n }, 0);\n\n // Recalculate after popover is rendered to get accurate dimensions\n const timeout2 = setTimeout(() => {\n const position = calculatePositionOfPopover(popoverPosition);\n if (position) {\n setPortalPosition(position);\n }\n }, 10);\n\n return () => {\n document.body.removeEventListener('click', clickAndScrollListenerWithPortal);\n window.removeEventListener('scroll', clickAndScrollListenerWithPortal);\n window.removeEventListener('resize', resizeListenerWithPortal);\n clearTimeout(timeout1);\n clearTimeout(timeout2);\n };\n }\n }, [displayPopover, isWithPortal]);\n\n const checkSourceVisibility = () => {\n if (!srcElementRef.current) {\n setIsSrcElementVisible(false);\n return;\n }\n\n const rec = srcElementRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n const isVisible = rec.top < viewportHeight && rec.bottom > 0 && rec.left < viewportWidth && rec.right > 0;\n\n setIsSrcElementVisible(isVisible);\n };\n\n useEffect(() => {\n setDisplayPopover(isPopoverOpen ?? false);\n }, [isPopoverOpen]);\n\n //Function to check popover position\n const checkPopoverPosition = () => {\n if (!popoverContentRef.current) return;\n\n const popoverRect = popoverContentRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n\n if (popoverRect?.bottom > viewportHeight) {\n setPopoverPosition(\n position.includes('left') ? 'top-left' : position.includes('right') ? 'top-right' : 'top-center'\n );\n } else if (popoverRect?.top < 0) {\n // If popover extends beyond top of viewport, switch to bottom position\n setPopoverPosition(\n position.includes('left') ? 'bottom-left' : position.includes('right') ? 'bottom-right' : 'bottom-center'\n );\n }\n };\n\n const clickListener = (event: MouseEvent) => {\n const currentDropRef = srcElementRef.current;\n if (!currentDropRef) return;\n\n const target = event.target as Node;\n const isSourcePopover = currentDropRef.contains(target);\n // if clicked source is parent or the popover-content, do not toggle dropdown.\n if (!isSourcePopover) {\n setDisplayPopover(false);\n }\n };\n\n const clickAndScrollListenerWithPortal = (event: Event) => {\n const currentDropRef = srcElementRef.current;\n const currentPopoverRef = popoverContentRef.current;\n if (!currentDropRef) return;\n checkSourceVisibility();\n\n // Recalculate position on scroll\n if (event.type === 'scroll' && displayPopover) {\n const position = calculatePositionOfPopover(popoverPosition);\n if (position) {\n setPortalPosition(position);\n }\n }\n\n const target = event.target as Node;\n const isSourcePopover = currentDropRef.contains(target);\n const isPopoverContent = currentPopoverRef?.contains(target);\n\n // if clicked source is parent or the popover-content, do not toggle dropdown.\n if (!isSourcePopover && !isPopoverContent) {\n setDisplayPopover(false);\n }\n };\n\n const resizeListenerWithPortal = () => {\n if (displayPopover && isWithPortal && srcElementRef.current) {\n checkSourceVisibility();\n const position = calculatePositionOfPopover(popoverPosition);\n if (position) {\n setPortalPosition(position);\n }\n }\n };\n\n const togglePopover = () => {\n setDisplayPopover((displayPopover) => !displayPopover);\n };\n\n useImperativeHandle(ref, () => ({ togglePopover }), []);\n\n const popoverContentStyle = {\n 'bottom-left': { left: '0', top: '100%' },\n 'bottom-right': { right: '0', top: '100%' },\n 'bottom-center': { left: '50%', transform: 'translateX(-50%)', top: '100%' },\n 'top-left': { left: '0', bottom: '100%' },\n 'top-right': { right: '0', bottom: '100%' },\n 'top-center': { left: '50%', transform: 'translateX(-50%)', bottom: '100%' }\n };\n const popoverContentClasses = props?.noBorder ? '' : 'shadow-md border rounded-md';\n\n return (\n <div\n className={\n 'se-design-popover-wrapper cursor-pointer relative' +\n (className.length > 0 ? ` ${className}` : '') +\n (displayPopover ? ' open' : '') +\n (disabled ? ' opacity-50 cursor-not-allowed pointer-events-none' : '')\n }\n ref={srcElementRef}\n onClick={(e) => {\n e.stopPropagation();\n togglePopover();\n }}\n data-automation-id={automationId}\n {...props}\n >\n {renderPopoverSrcElement({ displayPopover, togglePopover })}\n\n {displayPopover && !isWithPortal && (\n <div\n className={`popover-content absolute ${popoverContentClasses} z-[1000] ${contentWidth == 'full' ? 'w-full' : 'w-max'}`}\n style={{\n borderColor: 'var(--color-gray-200)',\n color: 'var(--color-gray-900)',\n backgroundColor: 'var(--color-white)',\n ...popoverContentStyle[popoverPosition]\n }}\n onClick={(e) => e.stopPropagation()}\n ref={popoverContentRef}\n data-automation-id={popoverContentAutomationId}\n >\n {renderPopoverContents({ closePopoverCb: () => setDisplayPopover(false) })}\n </div>\n )}\n {isWithPortal &&\n displayPopover &&\n isSrcElementVisible &&\n ReactDOM.createPortal(\n <div\n className={`popover-content-with-portal ${popoverContentClasses} ${contentWidth == 'full' ? 'w-full' : 'w-max'}`}\n style={{\n position: 'fixed',\n top: portalPosition.top,\n left: portalPosition.left,\n zIndex: 1000,\n borderColor: 'var(--color-gray-200)',\n color: 'var(--color-gray-900)',\n backgroundColor: 'var(--color-white)'\n }}\n onClick={(e) => e.stopPropagation()}\n ref={popoverContentRef}\n data-automation-id={popoverContentAutomationId}\n >\n {renderPopoverContents({ closePopoverCb: () => setDisplayPopover(false) })}\n </div>,\n document.body\n )}\n </div>\n );\n }\n);\n"],"names":["Popover","className","automationId","position","popoverContentAutomationId","contentWidth","renderPopoverContents","renderPopoverSrcElement","onPopoverToggle","isPopoverOpen","disabled","isWithPortal","props","ref","displayPopover","setDisplayPopover","useState","popoverPosition","setPopoverPosition","isSrcElementVisible","setIsSrcElementVisible","srcElementRef","useRef","popoverContentRef","portalPosition","setPortalPosition","top","left","calculatePositionOfPopover","current","localPosition","srcRect","getBoundingClientRect","viewportWidth","window","innerWidth","viewportHeight","innerHeight","bottom","right","width","height","popoverRect","popoverWidth","popoverHeight","Math","max","spaceAbove","spaceBelow","useEffect","document","body","addEventListener","clickListener","checkPopoverPosition","removeEventListener","clickAndScrollListenerWithPortal","resizeListenerWithPortal","timeout1","setTimeout","checkSourceVisibility","timeout2","clearTimeout","rec","isVisible","includes","event","currentDropRef","target","contains","currentPopoverRef","type","isSourcePopover","isPopoverContent","togglePopover","useImperativeHandle","popoverContentStyle","transform","popoverContentClasses","noBorder","React","createElement","_extends","length","onClick","e","stopPropagation","style","borderColor","color","backgroundColor","closePopoverCb","ReactDOM","createPortal","zIndex"],"mappings":"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"}
|