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.
@@ -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;
@@ -13,6 +13,7 @@ type LabelChipProps = {
13
13
  onIconClick?: () => void;
14
14
  className?: string;
15
15
  disabled?: boolean;
16
+ iconColor?: string;
16
17
  };
17
18
  export declare const LabelChip: FC<LabelChipProps>;
18
19
  export {};
package/dist/index17.js CHANGED
@@ -1,39 +1,40 @@
1
- import h, { forwardRef as q, useState as m, useRef as O, useEffect as V, useImperativeHandle as A } from "react";
2
- import F from "react-dom";
3
- function w() {
4
- return w = Object.assign ? Object.assign.bind() : function(f) {
5
- for (var p = 1; p < arguments.length; p++) {
6
- var n = arguments[p];
7
- for (var s in n) ({}).hasOwnProperty.call(n, s) && (f[s] = n[s]);
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 f;
10
- }, w.apply(null, arguments);
9
+ return g;
10
+ }, E.apply(null, arguments);
11
11
  }
12
- const K = /* @__PURE__ */ q(({
13
- className: f = "",
14
- automationId: p = "",
15
- position: n = "bottom-center",
16
- popoverContentAutomationId: s = "",
17
- contentWidth: k = "max",
18
- renderPopoverContents: P,
19
- renderPopoverSrcElement: _,
20
- onPopoverToggle: y,
21
- isPopoverOpen: C,
22
- disabled: j = !1,
23
- isWithPortal: l = !1,
24
- ...E
25
- }, I) => {
26
- const [c, a] = m(!1), [v, R] = m(n), [N, L] = m(!1), i = O(null), u = O(null), [S, x] = m({
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
- }), z = (e = "bottom-center") => {
30
- if (!i.current) return {
29
+ }), w = (e = "bottom-center") => {
30
+ if (!s.current) return {
31
31
  top: 0,
32
32
  left: 0
33
33
  };
34
- const t = i.current.getBoundingClientRect();
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 (e) {
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
- return {
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
- V(() => {
65
- if (y && y(c), c && !l)
66
- return document.body.addEventListener("click", $), H(), () => document.body.removeEventListener("click", $);
67
- if (c && l) {
68
- document.body.addEventListener("click", d), window.addEventListener("scroll", d), window.addEventListener("resize", B);
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 = z(v);
71
- b(), H(), t && x(t);
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", d), window.removeEventListener("scroll", d), window.removeEventListener("resize", B), clearTimeout(e);
83
+ document.body.removeEventListener("click", P), window.removeEventListener("scroll", P), window.removeEventListener("resize", O), clearTimeout(e), clearTimeout(n);
75
84
  };
76
85
  }
77
- }, [c, l]);
78
- const b = () => {
79
- if (!i.current) {
80
- L(!1);
86
+ }, [i, p]);
87
+ const y = () => {
88
+ if (!s.current) {
89
+ $(!1);
81
90
  return;
82
91
  }
83
- const e = i.current.getBoundingClientRect(), t = window.innerHeight, o = window.innerWidth, r = e.top < t && e.bottom > 0 && e.left < o && e.right > 0;
84
- L(r);
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
- V(() => {
87
- a(C ?? !1);
88
- }, [C]);
89
- const H = () => {
90
- if (!u.current) return;
91
- const e = u.current.getBoundingClientRect(), t = window.innerHeight;
92
- e?.bottom > t ? R(n.includes("left") ? "top-left" : n.includes("right") ? "top-right" : "top-center") : e?.top < 0 && R(n.includes("left") ? "bottom-left" : n.includes("right") ? "bottom-right" : "bottom-center");
93
- }, $ = (e) => {
94
- const t = i.current;
95
- if (!t) return;
96
- const o = e.target;
97
- t.contains(o) || a(!1);
98
- }, d = (e) => {
99
- const t = i.current, o = u.current;
100
- if (!t) return;
101
- b();
102
- const r = e.target, M = t.contains(r), T = o?.contains(r);
103
- !M && !T && a(!1);
104
- }, B = () => {
105
- if (c && l && i.current) {
106
- b();
107
- const e = z(v);
108
- e && x(e);
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
- }, g = () => {
111
- a((e) => !e);
122
+ }, C = () => {
123
+ u((e) => !e);
112
124
  };
113
- A(I, () => ({
114
- togglePopover: g
125
+ Q(W, () => ({
126
+ togglePopover: C
115
127
  }), []);
116
- const X = {
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
- }, D = E?.noBorder ? "" : "shadow-md border rounded-md";
144
- return /* @__PURE__ */ h.createElement("div", w({
145
- className: "se-design-popover-wrapper cursor-pointer relative" + (f.length > 0 ? ` ${f}` : "") + (c ? " open" : "") + (j ? " opacity-50 cursor-not-allowed pointer-events-none" : ""),
146
- ref: i,
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(), g();
160
+ e.stopPropagation(), C();
149
161
  },
150
- "data-automation-id": p
151
- }, E), _({
152
- displayPopover: c,
153
- togglePopover: g
154
- }), c && !l && /* @__PURE__ */ h.createElement("div", {
155
- className: `popover-content absolute ${D} z-[1000] ${k == "full" ? "w-full" : "w-max"}`,
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
- ...X[v]
172
+ ...G[b]
161
173
  },
162
174
  onClick: (e) => e.stopPropagation(),
163
- ref: u,
164
- "data-automation-id": s
165
- }, P({
166
- closePopoverCb: () => a(!1)
167
- })), l && c && N && /* @__PURE__ */ F.createPortal(/* @__PURE__ */ h.createElement("div", {
168
- className: `popover-content-with-portal ${D} ${k == "full" ? "w-full" : "w-max"}`,
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: S.top,
172
- left: S.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: u,
180
- "data-automation-id": s
181
- }, P({
182
- closePopoverCb: () => a(!1)
191
+ ref: d,
192
+ "data-automation-id": f
193
+ }, x({
194
+ closePopoverCb: () => u(!1)
183
195
  })), document.body));
184
196
  });
185
197
  export {
186
- K as Popover
198
+ tt as Popover
187
199
  };
188
200
  //# sourceMappingURL=index17.js.map
@@ -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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"}