@hortiview/shared-components 1.8.1 → 1.10.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## [1.10.0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v1.9.0...v1.10.0) (2025-05-26)
2
+
3
+ ### Features
4
+
5
+ * add hint prop to BaseView and update story ([d466795](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/d4667958fe9739be4a9db3e249e31cbbc8387946))
6
+ * provide close button for alert banner ([52958aa](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/52958aa7f3bbfb3beab3fbf97147f81b236edafb))
7
+
8
+ ### Styles
9
+
10
+ * fix vertical divider in BaseView ([8b82d3a](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/8b82d3a0a19e215fe92ee46eeb83714a2e5df4e7))
11
+
12
+ ## [1.9.0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v1.8.1...v1.9.0) (2025-05-23)
13
+
14
+ ### Features
15
+
16
+ * add DetailContentWrapper component ([ccd43df](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/ccd43df9a05a28bd4b06317f0030a82037d7e898))
17
+ * add leadingIcon to modal header ([e2223f7](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/e2223f7ee40f01420502310fd14a4d32d8ceac6c))
18
+
19
+ ### Code Refactoring
20
+
21
+ * adjust icon type ([2fdd9fa](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/2fdd9faf68c9e14f6e4459d53645daab3071ce35))
22
+ * review comments ([8b57a7c](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/8b57a7c696b6a4dc43b5a8ccea5ca5365d188d62))
23
+
24
+ ### Styles
25
+
26
+ * move icon to the correct position ([0080a93](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/0080a937e27e052ff83e94ba7fe34850ccd4e924))
27
+
1
28
  ## [1.8.1](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v1.8.0...v1.8.1) (2025-05-09)
2
29
 
3
30
  ### Styles
@@ -1 +1 @@
1
- ._messageContainer_1seos_1{border-radius:.25rem;padding:.5rem 1rem;width:-moz-available;width:-webkit-fill-available;width:stretch}._info_1seos_9{border:1px solid var(--lmnt-theme-on-secondary-stroke);background:var(--lmnt-theme-secondary-50)}._danger_1seos_14{border:1px solid var(--lmnt-theme-on-danger-stroke);background:var(--lmnt-theme-danger-50)}._success_1seos_19{border:1px solid var(--lmnt-theme-on-success-stroke);background:var(--lmnt-theme-success-50)}._warning_1seos_24{border:1px solid var(--lmnt-utility-orange-surface);background:#f6a6491a}
1
+ ._messageContainer_1i2s1_1{border-radius:.25rem;padding:.75rem 1rem;width:-moz-available;width:-webkit-fill-available;width:stretch}._info_1i2s1_9{border:1px solid var(--lmnt-theme-on-secondary-stroke);background:var(--lmnt-theme-secondary-50)}._danger_1i2s1_14{border:1px solid var(--lmnt-theme-on-danger-stroke);background:var(--lmnt-theme-danger-50)}._success_1i2s1_19{border:1px solid var(--lmnt-theme-on-success-stroke);background:var(--lmnt-theme-success-50)}._warning_1i2s1_24{border:1px solid var(--lmnt-utility-orange-surface);background:#f6a6491a}._closeIcon_1i2s1_29{align-self:flex-start;margin-right:-.15rem}
@@ -1 +1 @@
1
- ._divider_dw2rc_1{margin:0 2rem}._maxWidth_dw2rc_5{max-width:55vw}._desktopList_dw2rc_9{width:30%}._mobileList_dw2rc_13{width:100%}._desktopDetail_dw2rc_17{width:70%}._mobileDetail_dw2rc_21{width:100%}
1
+ ._parentGroup_w7vsz_1{align-items:stretch}._divider_w7vsz_5{margin:0 1.5rem;align-self:stretch}._maxWidth_w7vsz_10{max-width:55vw}._desktopList_w7vsz_14{width:30%;align-self:stretch}._mobileList_w7vsz_19{width:100%}._desktopDetail_w7vsz_23{width:70%;align-self:stretch}._mobileDetail_w7vsz_28{width:100%}
@@ -0,0 +1 @@
1
+ ._formContainer_gf66t_1{width:100%;padding:1rem;border-radius:.5rem;background:var(--lmnt-theme-background)}
@@ -2,8 +2,15 @@ type AlertBannerProps = {
2
2
  text: string | JSX.Element;
3
3
  color?: 'danger' | 'info' | 'success' | 'warning';
4
4
  isOpen?: boolean;
5
- action?: JSX.Element;
6
5
  isBold?: boolean;
6
+ /**
7
+ * if defined, the close button will be displayed
8
+ */
9
+ onClose?: () => void;
10
+ /**
11
+ * @deprecated will be removed in the next major version - please use onClose if you need a close button
12
+ */
13
+ action?: JSX.Element;
7
14
  };
8
- export declare const AlertBanner: ({ text, color, isOpen, action, isBold, }: AlertBannerProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const AlertBanner: ({ text, color, isOpen, isBold, onClose, }: AlertBannerProps) => import("react/jsx-runtime").JSX.Element;
9
16
  export {};
@@ -1,34 +1,24 @@
1
- import { jsx as e, Fragment as c, jsxs as d } from "react/jsx-runtime";
1
+ import { jsx as n, Fragment as a, jsxs as t } from "react/jsx-runtime";
2
2
  import { G as l } from "../../index.es-DntoATwO.js";
3
+ import { I as _ } from "../../index.es-3043KTnb.js";
3
4
  import { b as m } from "../../index.es-CF_xy2ns.js";
4
- import { u as _ } from "../../useBreakpoints-MzTZ0tCT.js";
5
- import '../../assets/AlertBanner.css';const g = "_messageContainer_1seos_1", p = "_info_1seos_9", f = "_danger_1seos_14", u = "_success_1seos_19", y = "_warning_1seos_24", n = {
6
- messageContainer: g,
7
- info: p,
8
- danger: f,
9
- success: u,
10
- warning: y
5
+ import '../../assets/AlertBanner.css';const d = "_messageContainer_1i2s1_1", g = "_info_1i2s1_9", p = "_danger_1i2s1_14", f = "_success_1i2s1_19", u = "_warning_1i2s1_24", y = "_closeIcon_1i2s1_29", e = {
6
+ messageContainer: d,
7
+ info: g,
8
+ danger: p,
9
+ success: f,
10
+ warning: u,
11
+ closeIcon: y
11
12
  }, C = ({
12
13
  text: s,
13
14
  color: r = "info",
14
- isOpen: o = !0,
15
- action: i,
16
- isBold: t = !0
17
- }) => {
18
- const { isDesktop: a } = _();
19
- return o ? /* @__PURE__ */ e("div", { "data-testid": "alert-banner", className: `${n.messageContainer} ${n[r]}`, children: /* @__PURE__ */ d(
20
- l,
21
- {
22
- direction: a ? "horizontal" : "vertical",
23
- primaryAlign: "space-between",
24
- secondaryAlign: "center",
25
- children: [
26
- typeof s == "string" ? /* @__PURE__ */ e(m, { bold: t, level: 2, children: s }) : /* @__PURE__ */ e("div", { children: s }),
27
- i
28
- ]
29
- }
30
- ) }) : /* @__PURE__ */ e(c, {});
31
- };
15
+ isOpen: i = !0,
16
+ isBold: c = !0,
17
+ onClose: o
18
+ }) => i ? /* @__PURE__ */ n("div", { "data-testid": "alert-banner", className: `${e.messageContainer} ${e[r]}`, children: /* @__PURE__ */ t(l, { primaryAlign: "space-between", secondaryAlign: "top", gap: "dense", children: [
19
+ typeof s == "string" ? /* @__PURE__ */ n(m, { bold: c, level: 2, children: s }) : /* @__PURE__ */ n("div", { children: s }),
20
+ o && /* @__PURE__ */ n(_, { icon: "close", iconSize: "small", onClick: o, className: e.closeIcon })
21
+ ] }) }) : /* @__PURE__ */ n(a, {});
32
22
  export {
33
23
  C as AlertBanner
34
24
  };
@@ -1,32 +1,32 @@
1
1
  import { jsx as e, Fragment as m } from "react/jsx-runtime";
2
2
  import { a as t, s } from "../../react.esm-CX1WJ2Pp.js";
3
- import { a } from "../../useBreakpoints-MzTZ0tCT.js";
3
+ import { a as o } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { AlertBanner as n } from "./AlertBanner.js";
5
- import { d as p, b as c, v as l, t as r, g as o } from "../../vi.CjhMlMwf-BCJNwXvu.js";
5
+ import { d as p, b as c, v as l, t as r, g as a } from "../../vi.CjhMlMwf-BCJNwXvu.js";
6
6
  p("AlertBanner Test", () => {
7
7
  c(() => {
8
- l.spyOn(a, "useBreakpoints").mockReturnValue({
8
+ l.spyOn(o, "useBreakpoints").mockReturnValue({
9
9
  isMobile: !1,
10
10
  isTablet: !1,
11
11
  isDesktop: !0,
12
12
  isDesktopNavbar: !0
13
13
  });
14
14
  }), r("render AlertBanner with text", () => {
15
- t(/* @__PURE__ */ e(n, { text: "Test" })), o(s.getByText("Test")).toBeInTheDocument();
15
+ t(/* @__PURE__ */ e(n, { text: "Test" })), a(s.getByText("Test")).toBeInTheDocument();
16
16
  }), r("render AlertBanner with element", () => {
17
- t(/* @__PURE__ */ e(n, { text: /* @__PURE__ */ e(m, { children: "Element" }) })), o(s.getByText("Element")).toBeInTheDocument();
17
+ t(/* @__PURE__ */ e(n, { text: /* @__PURE__ */ e(m, { children: "Element" }) })), a(s.getByText("Element")).toBeInTheDocument();
18
18
  }), r("renders AlertBanner with vertical style (flex-direction: column) when screen is small", () => {
19
- l.spyOn(a, "useBreakpoints").mockReturnValue({
19
+ l.spyOn(o, "useBreakpoints").mockReturnValue({
20
20
  isMobile: !0,
21
21
  isTablet: !1,
22
22
  isDesktop: !1,
23
23
  isDesktopNavbar: !1
24
24
  }), t(/* @__PURE__ */ e(n, { text: "Test" }));
25
25
  const i = s.getByText("Test").closest(".lmnt.lmnt-group");
26
- o(i).toHaveStyle(
27
- "display: flex; flex-direction: column; justify-content: space-between; align-items: center; gap: 16px;"
26
+ a(i).toHaveStyle(
27
+ "display: flex; flex-direction: row; justify-content: space-between; align-items: baseline; gap: 8px;"
28
28
  );
29
29
  }), r("renders nothing when isOpen is false", () => {
30
- t(/* @__PURE__ */ e(n, { text: "Test", isOpen: !1 })), o(s.queryByText("Test")).not.toBeInTheDocument();
30
+ t(/* @__PURE__ */ e(n, { text: "Test", isOpen: !1 })), a(s.queryByText("Test")).not.toBeInTheDocument();
31
31
  });
32
32
  });
@@ -22,6 +22,10 @@ type BaseViewProps = {
22
22
  * action to be displayed in the headings ActionButton
23
23
  */
24
24
  action?: JSX.Element;
25
+ /**
26
+ * hint to be displayed below the heading
27
+ */
28
+ hint?: JSX.Element;
25
29
  /**
26
30
  * isSorted is true if the list should be sorted, @default true
27
31
  */
@@ -58,5 +62,5 @@ type BaseViewProps = {
58
62
  /**
59
63
  * `BaseView` is a layout component that displays a main (a list) and a detail section.
60
64
  */
61
- export declare const BaseView: ({ action, heading, elements, emptyText, hasSearch, isSorted, className, withAvatar, listMaxHeight, pathname, routerLinkElement, searchPlaceholder, }: BaseViewProps) => import("react/jsx-runtime").JSX.Element;
65
+ export declare const BaseView: ({ heading, action, hint, elements, emptyText, hasSearch, isSorted, className, withAvatar, listMaxHeight, pathname, routerLinkElement, searchPlaceholder, }: BaseViewProps) => import("react/jsx-runtime").JSX.Element;
62
66
  export {};
@@ -1,77 +1,89 @@
1
- import { jsx as e, Fragment as x, jsxs as s } from "react/jsx-runtime";
1
+ import { jsx as i, Fragment as d, jsxs as s } from "react/jsx-runtime";
2
2
  import { G as r } from "../../index.es-DntoATwO.js";
3
- import { useMemo as d } from "react";
3
+ import { useMemo as a } from "react";
4
4
  import { BasicHeading as u } from "../BasicHeading/BasicHeading.js";
5
5
  import { EmptyView as W } from "../EmptyView/EmptyView.js";
6
6
  import { ListArea as B } from "../ListArea/ListArea.js";
7
+ import { u as G } from "../../useBreakpoints-MzTZ0tCT.js";
7
8
  import { VerticalDivider as N } from "../VerticalDivider/VerticalDivider.js";
8
- import { u as A } from "../../useBreakpoints-MzTZ0tCT.js";
9
- import '../../assets/BaseView.css';const V = "_divider_dw2rc_1", j = "_maxWidth_dw2rc_5", E = "_desktopList_dw2rc_9", G = "_mobileList_dw2rc_13", H = "_desktopDetail_dw2rc_17", I = "_mobileDetail_dw2rc_21", o = {
9
+ import '../../assets/BaseView.css';const A = "_parentGroup_w7vsz_1", V = "_divider_w7vsz_5", j = "_maxWidth_w7vsz_10", E = "_desktopList_w7vsz_14", H = "_mobileList_w7vsz_19", I = "_desktopDetail_w7vsz_23", $ = "_mobileDetail_w7vsz_28", o = {
10
+ parentGroup: A,
10
11
  divider: V,
11
12
  maxWidth: j,
12
13
  desktopList: E,
13
- mobileList: G,
14
- desktopDetail: H,
15
- mobileDetail: I
14
+ mobileList: H,
15
+ desktopDetail: I,
16
+ mobileDetail: $
16
17
  }, P = ({
17
- action: l,
18
18
  heading: c,
19
- elements: a,
20
- emptyText: m,
21
- hasSearch: p = !0,
19
+ action: m = /* @__PURE__ */ i(d, {}),
20
+ hint: v = /* @__PURE__ */ i(d, {}),
21
+ elements: n,
22
+ emptyText: p,
23
+ hasSearch: _ = !0,
22
24
  isSorted: h = !0,
23
- className: _,
24
- withAvatar: v = !1,
25
- listMaxHeight: f = "calc(100vh - 200px)",
26
- pathname: n,
27
- routerLinkElement: w,
28
- searchPlaceholder: b
25
+ className: f,
26
+ withAvatar: b = !1,
27
+ listMaxHeight: w = "calc(100vh - 200px)",
28
+ pathname: l,
29
+ routerLinkElement: D,
30
+ searchPlaceholder: g
29
31
  }) => {
30
- const { isDesktopNavbar: i } = A(), t = d(() => a.find((L) => L.route === n), [n, a]), D = d(() => t?.component ?? (i ? /* @__PURE__ */ e(W, { subtitle: m }) : /* @__PURE__ */ e(x, {})), [t, i, m]), g = d(() => i ? !0 : !t, [t, i]), k = d(() => i ? !0 : t, [t, i]);
31
- return /* @__PURE__ */ s(r, { "data-testid": "base-view-container", className: _ ?? "", gap: "none", fullWidth: !0, children: [
32
- g && /* @__PURE__ */ e(r, { gap: "none", className: i ? o.desktopList : o.mobileList, children: /* @__PURE__ */ s(r, { direction: "vertical", fullWidth: !0, gap: i ? "standard" : "dense", children: [
33
- c && /* @__PURE__ */ e(u, { "data-testid": "heading", heading: c, level: 4, marginBottom: 0, children: l }),
34
- /* @__PURE__ */ e(
35
- B,
36
- {
37
- elements: a,
38
- hasSearch: p,
39
- maxHeight: f,
40
- isSorted: h,
41
- pathname: n,
42
- routerLinkElement: w,
43
- searchPlaceholder: b
44
- }
45
- )
46
- ] }) }),
47
- k && /* @__PURE__ */ s(
48
- r,
49
- {
50
- "data-testid": "details",
51
- gap: "none",
52
- className: i ? o.desktopDetail : o.mobileDetail,
53
- children: [
54
- i && /* @__PURE__ */ e(N, { className: o.divider, height: "100%" }),
55
- /* @__PURE__ */ s(r, { direction: "vertical", fullWidth: !0, children: [
56
- /* @__PURE__ */ e(
57
- u,
58
- {
59
- className: o.maxWidth,
60
- heading: t?.detailTitle ?? t?.title ?? "",
61
- level: 4,
62
- icon: t?.hideIconInDetail === !0 ? void 0 : t?.icon,
63
- marginBottom: 0,
64
- invisibleButton: t?.detailAction === void 0,
65
- withAvatar: v,
66
- children: t?.detailAction ?? l
67
- }
68
- ),
69
- D
70
- ] })
71
- ]
72
- }
73
- )
74
- ] });
32
+ const { isDesktopNavbar: e } = G(), t = a(() => n.find((z) => z.route === l), [l, n]), k = a(() => t?.component ?? (e ? /* @__PURE__ */ i(W, { subtitle: p }) : /* @__PURE__ */ i(d, {})), [t, e, p]), L = a(() => e ? !0 : !t, [t, e]), x = a(() => e ? !0 : t, [t, e]);
33
+ return /* @__PURE__ */ s(
34
+ r,
35
+ {
36
+ "data-testid": "base-view-container",
37
+ className: `${o.parentGroup} ${f ?? ""}`,
38
+ gap: "none",
39
+ fullWidth: !0,
40
+ children: [
41
+ L && /* @__PURE__ */ i(r, { gap: "none", className: e ? o.desktopList : o.mobileList, children: /* @__PURE__ */ s(r, { direction: "vertical", fullWidth: !0, gap: e ? "standard" : "dense", children: [
42
+ c && /* @__PURE__ */ i(u, { "data-testid": "heading", heading: c, level: 4, marginBottom: 0, children: m }),
43
+ v,
44
+ /* @__PURE__ */ i(
45
+ B,
46
+ {
47
+ elements: n,
48
+ hasSearch: _,
49
+ maxHeight: w,
50
+ isSorted: h,
51
+ pathname: l,
52
+ routerLinkElement: D,
53
+ searchPlaceholder: g
54
+ }
55
+ )
56
+ ] }) }),
57
+ x && /* @__PURE__ */ s(
58
+ r,
59
+ {
60
+ "data-testid": "details",
61
+ gap: "none",
62
+ className: e ? o.desktopDetail : o.mobileDetail,
63
+ children: [
64
+ e && /* @__PURE__ */ i(N, { className: o.divider, height: "100%" }),
65
+ /* @__PURE__ */ s(r, { direction: "vertical", fullWidth: !0, children: [
66
+ /* @__PURE__ */ i(
67
+ u,
68
+ {
69
+ className: o.maxWidth,
70
+ heading: t?.detailTitle ?? t?.title ?? "",
71
+ level: 4,
72
+ icon: t?.hideIconInDetail === !0 ? void 0 : t?.icon,
73
+ marginBottom: 0,
74
+ invisibleButton: t?.detailAction === void 0,
75
+ withAvatar: b,
76
+ children: t?.detailAction ?? m
77
+ }
78
+ ),
79
+ k
80
+ ] })
81
+ ]
82
+ }
83
+ )
84
+ ]
85
+ }
86
+ );
75
87
  };
76
88
  export {
77
89
  P as BaseView
@@ -0,0 +1,11 @@
1
+ import { PropsWithChildren } from 'react';
2
+
3
+ /**
4
+ * component to be used in the detail part from the base view
5
+ * @param heading - the heading to be displayed
6
+ * @param children - the children to which the background styling is being added
7
+ * @returns
8
+ */
9
+ export declare const DetailContentWrapper: ({ heading, children, }: PropsWithChildren<{
10
+ heading?: string;
11
+ }>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { jsxs as e, jsx as r, Fragment as n } from "react/jsx-runtime";
2
+ import { G as i } from "../../index.es-DntoATwO.js";
3
+ import { BasicHeading as a } from "../BasicHeading/BasicHeading.js";
4
+ import '../../assets/DetailContentWrapper.css';const m = "_formContainer_gf66t_1", s = {
5
+ formContainer: m
6
+ }, p = ({
7
+ heading: t,
8
+ children: o
9
+ }) => /* @__PURE__ */ e(i, { fullWidth: !0, direction: "vertical", gap: "dense", children: [
10
+ t ? /* @__PURE__ */ r(a, { heading: t, fontWeight: 500, marginBottom: 0, level: 5 }) : /* @__PURE__ */ r(n, {}),
11
+ /* @__PURE__ */ r("div", { className: s.formContainer, children: o })
12
+ ] });
13
+ export {
14
+ p as DetailContentWrapper
15
+ };
@@ -6,8 +6,8 @@ import { I as W } from "../../index.es-0lQcz8m1.js";
6
6
  import { S as j } from "../../index.es-8GOVkuo-.js";
7
7
  import { useState as v } from "react";
8
8
  import '../../assets/main.css';import '../../assets/Filter.css';/* empty css */
9
- import { u as k } from "../../useBreakpoints-MzTZ0tCT.js";
10
9
  import { Iconify as z } from "../Iconify/Iconify.js";
10
+ import { u as k } from "../../useBreakpoints-MzTZ0tCT.js";
11
11
  import "../../react-tooltip.min-DSY6KDqS.js";
12
12
  import "../../orderBy-Bd48bw88.js";
13
13
  import { SearchBar as G } from "../SearchBar/SearchBar.js";
@@ -22,8 +22,8 @@ import { M as bi, a as wi } from "../../component-neHBNHRu.js";
22
22
  import { c as Ga } from "../../component-DsB0poTj.js";
23
23
  import { a as Cl } from "../../util-DA21pZXj.js";
24
24
  import '../../assets/main.css';import '../../assets/GenericTable.css';/* empty css */
25
- import { u as Sl } from "../../useBreakpoints-MzTZ0tCT.js";
26
25
  import "../../isEmpty-B4GG2s-V.js";
26
+ import { u as Sl } from "../../useBreakpoints-MzTZ0tCT.js";
27
27
  import "../../react-tooltip.min-DSY6KDqS.js";
28
28
  import "../../uniqueId-NU3-C36A.js";
29
29
  import "react-hook-form";
@@ -1,5 +1,9 @@
1
- import { ModalProps } from '@element-public/react-modal';
1
+ import { ModalProps as ElementModalProps } from '@element-public/react-modal';
2
+ import { AvailableCustomIcons } from '../../enums/AvailableCustomIcons';
2
3
 
4
+ type ModalProps = ElementModalProps & React.HTMLProps<HTMLElement> & React.DOMAttributes<HTMLElement> & {
5
+ leadingIcon?: keyof typeof AvailableCustomIcons | string;
6
+ };
3
7
  /**
4
8
  * A custom modal providing a custom header and close button.
5
9
  * Which can be overridden by the user.
@@ -7,7 +11,9 @@ import { ModalProps } from '@element-public/react-modal';
7
11
  * @param title - The title of the modal.
8
12
  * @param headerActions - The actions to display in the header of the modal.
9
13
  * @param hideCloseIcon - If true, the close icon will be hidden. @default true.
14
+ * @param leadingIcon - Iconify icon string (material icons and custom icons)
10
15
  * @param - Other element props to pass to the modal.
11
16
  * @returns
12
17
  */
13
- export declare const Modal: ({ onClose, title, headerActions, hideCloseIcon, ...props }: ModalProps & React.HTMLProps<HTMLElement> & React.DOMAttributes<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const Modal: ({ onClose, title, headerActions, hideCloseIcon, leadingIcon, ...props }: ModalProps) => import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -1,14 +1,16 @@
1
- import { jsxs as ft, jsx as O } from "react/jsx-runtime";
1
+ import { jsxs as ft, jsx as _, Fragment as pt } from "react/jsx-runtime";
2
2
  import { G as V } from "../../index.es-DntoATwO.js";
3
3
  import { I as it } from "../../index.es-0lQcz8m1.js";
4
- import { _ as pt, c as B, P as s } from "../../identity-DLWZln-X.js";
5
- import u, { forwardRef as ht, useRef as et, useImperativeHandle as gt, useState as nt, useEffect as g, useCallback as z, useMemo as Y } from "react";
6
- import { i as Et, c as T, a as _t } from "../../index.es-da0cf7oE.js";
7
- import { b as at, c as ot, d as Ct } from "../../tslib.es6-BDCynO9F.js";
8
- import { M as St, a as vt } from "../../component-neHBNHRu.js";
9
- import { M as yt, c as Ot, m as Tt } from "../../component-DsB0poTj.js";
10
- import { A as At } from "../../animationframe-EMBh6XeO.js";
11
- import { T as bt } from "../../index.es-CF_xy2ns.js";
4
+ import { _ as ht, c as B, P as s } from "../../identity-DLWZln-X.js";
5
+ import d, { forwardRef as gt, useRef as et, useImperativeHandle as Et, useState as nt, useEffect as g, useCallback as z, useMemo as Y } from "react";
6
+ import { i as _t, c as A, a as Ct } from "../../index.es-da0cf7oE.js";
7
+ import { b as at, c as ot, d as St } from "../../tslib.es6-BDCynO9F.js";
8
+ import { M as vt, a as yt } from "../../component-neHBNHRu.js";
9
+ import { M as Ot, c as Tt, m as At } from "../../component-DsB0poTj.js";
10
+ import { A as bt } from "../../animationframe-EMBh6XeO.js";
11
+ import { P as Dt } from "../../index.es-D-CKRzIB.js";
12
+ import { T as It } from "../../index.es-CF_xy2ns.js";
13
+ import { Iconify as Nt } from "../Iconify/Iconify.js";
12
14
  import '../../assets/Modal.css';/**
13
15
  * @license
14
16
  * Copyright 2016 Google Inc.
@@ -31,19 +33,19 @@ import '../../assets/Modal.css';/**
31
33
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
34
  * THE SOFTWARE.
33
35
  */
34
- function It(i, e, t) {
36
+ function Lt(i, e, t) {
35
37
  return e(i, { initialFocusEl: t });
36
38
  }
37
- function Dt(i) {
39
+ function Ft(i) {
38
40
  return i ? i.scrollHeight > i.offsetHeight : !1;
39
41
  }
40
- function Nt(i) {
42
+ function Rt(i) {
41
43
  return i ? i.scrollTop === 0 : !1;
42
44
  }
43
- function Lt(i) {
45
+ function Bt(i) {
44
46
  return i ? Math.ceil(i.scrollHeight - i.scrollTop) === i.clientHeight : !1;
45
47
  }
46
- function Ft(i) {
48
+ function wt(i) {
47
49
  var e = /* @__PURE__ */ new Set();
48
50
  return [].forEach.call(i, function(t) {
49
51
  return e.add(t.offsetTop);
@@ -71,7 +73,7 @@ function Ft(i) {
71
73
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
72
74
  * THE SOFTWARE.
73
75
  */
74
- var j = "mdc-dom-focus-sentinel", Rt = (
76
+ var j = "mdc-dom-focus-sentinel", Mt = (
75
77
  /** @class */
76
78
  function() {
77
79
  function i(e, t) {
@@ -101,12 +103,12 @@ var j = "mdc-dom-focus-sentinel", Rt = (
101
103
  }, i.prototype.getFocusableElements = function(e) {
102
104
  var t = [].slice.call(e.querySelectorAll("[autofocus], [tabindex], a, input, textarea, select, button"));
103
105
  return t.filter(function(n) {
104
- var o = n.getAttribute("aria-disabled") === "true" || n.getAttribute("disabled") != null || n.getAttribute("hidden") != null || n.getAttribute("aria-hidden") === "true", a = n.tabIndex >= 0 && n.getBoundingClientRect().width > 0 && !n.classList.contains(j) && !o, d = !1;
106
+ var o = n.getAttribute("aria-disabled") === "true" || n.getAttribute("disabled") != null || n.getAttribute("hidden") != null || n.getAttribute("aria-hidden") === "true", a = n.tabIndex >= 0 && n.getBoundingClientRect().width > 0 && !n.classList.contains(j) && !o, f = !1;
105
107
  if (a) {
106
108
  var p = getComputedStyle(n);
107
- d = p.display === "none" || p.visibility === "hidden";
109
+ f = p.display === "none" || p.visibility === "hidden";
108
110
  }
109
- return a && !d;
111
+ return a && !f;
110
112
  });
111
113
  }, i.prototype.createSentinel = function() {
112
114
  var e = document.createElement("div");
@@ -169,7 +171,7 @@ var r = {
169
171
  // to prevent interactions with the content behind this scrim, and to capture
170
172
  // scrim clicks.
171
173
  SCRIM_HIDDEN: "mdc-dialog__scrim--hidden"
172
- }, C = {
174
+ }, S = {
173
175
  ACTION_ATTRIBUTE: "data-mdc-dialog-action",
174
176
  BUTTON_DEFAULT_ATTRIBUTE: "data-mdc-dialog-button-default",
175
177
  BUTTON_SELECTOR: ".mdc-dialog__button",
@@ -225,7 +227,7 @@ var rt = (
225
227
  at(e, i);
226
228
  function e(t) {
227
229
  var n = i.call(this, ot(ot({}, e.defaultAdapter), t)) || this;
228
- return n.dialogOpen = !1, n.isFullscreen = !1, n.animationFrame = 0, n.animationTimer = 0, n.escapeKeyAction = C.CLOSE_ACTION, n.scrimClickAction = C.CLOSE_ACTION, n.autoStackButtons = !0, n.areButtonsStacked = !1, n.suppressDefaultPressSelector = C.SUPPRESS_DEFAULT_PRESS_SELECTOR, n.animFrame = new At(), n.contentScrollHandler = function() {
230
+ return n.dialogOpen = !1, n.isFullscreen = !1, n.animationFrame = 0, n.animationTimer = 0, n.escapeKeyAction = S.CLOSE_ACTION, n.scrimClickAction = S.CLOSE_ACTION, n.autoStackButtons = !0, n.areButtonsStacked = !1, n.suppressDefaultPressSelector = S.SUPPRESS_DEFAULT_PRESS_SELECTOR, n.animFrame = new bt(), n.contentScrollHandler = function() {
229
231
  n.handleScrollEvent();
230
232
  }, n.windowResizeHandler = function() {
231
233
  n.layout();
@@ -241,7 +243,7 @@ var rt = (
241
243
  configurable: !0
242
244
  }), Object.defineProperty(e, "strings", {
243
245
  get: function() {
244
- return C;
246
+ return S;
245
247
  },
246
248
  enumerable: !1,
247
249
  configurable: !0
@@ -317,7 +319,7 @@ var rt = (
317
319
  }), e.prototype.init = function() {
318
320
  this.adapter.hasClass(r.STACKED) && this.setAutoStackButtons(!1), this.isFullscreen = this.adapter.hasClass(r.FULLSCREEN);
319
321
  }, e.prototype.destroy = function() {
320
- this.dialogOpen && this.close(C.DESTROY_ACTION), this.animationTimer && (clearTimeout(this.animationTimer), this.handleAnimationTimerEnd()), this.isFullscreen && this.adapter.deregisterContentEventHandler("scroll", this.contentScrollHandler), this.animFrame.cancelAll(), this.adapter.deregisterWindowEventHandler("resize", this.windowResizeHandler), this.adapter.deregisterWindowEventHandler("orientationchange", this.windowOrientationChangeHandler);
322
+ this.dialogOpen && this.close(S.DESTROY_ACTION), this.animationTimer && (clearTimeout(this.animationTimer), this.handleAnimationTimerEnd()), this.isFullscreen && this.adapter.deregisterContentEventHandler("scroll", this.contentScrollHandler), this.animFrame.cancelAll(), this.adapter.deregisterWindowEventHandler("resize", this.windowResizeHandler), this.adapter.deregisterWindowEventHandler("orientationchange", this.windowOrientationChangeHandler);
321
323
  }, e.prototype.open = function(t) {
322
324
  var n = this;
323
325
  this.dialogOpen = !0, this.adapter.notifyOpening(), this.adapter.addClass(r.OPENING), this.isFullscreen && this.adapter.registerContentEventHandler("scroll", this.contentScrollHandler), t && t.isAboveFullscreenDialog && this.adapter.addClass(r.SCRIM_HIDDEN), this.adapter.registerWindowEventHandler("resize", this.windowResizeHandler), this.adapter.registerWindowEventHandler("orientationchange", this.windowOrientationChangeHandler), this.runNextAnimationFrame(function() {
@@ -363,7 +365,7 @@ var rt = (
363
365
  t.layoutInternal();
364
366
  });
365
367
  }, e.prototype.handleClick = function(t) {
366
- var n = this.adapter.eventTargetMatches(t.target, C.SCRIM_SELECTOR);
368
+ var n = this.adapter.eventTargetMatches(t.target, S.SCRIM_SELECTOR);
367
369
  if (n && this.scrimClickAction !== "")
368
370
  this.close(this.scrimClickAction);
369
371
  else {
@@ -375,8 +377,8 @@ var rt = (
375
377
  if (n) {
376
378
  var o = this.adapter.getActionFromEvent(t);
377
379
  if (!o) {
378
- var a = t.composedPath ? t.composedPath()[0] : t.target, d = this.suppressDefaultPressSelector ? !this.adapter.eventTargetMatches(a, this.suppressDefaultPressSelector) : !0;
379
- n && d && this.adapter.clickDefaultButton();
380
+ var a = t.composedPath ? t.composedPath()[0] : t.target, f = this.suppressDefaultPressSelector ? !this.adapter.eventTargetMatches(a, this.suppressDefaultPressSelector) : !0;
381
+ n && f && this.adapter.clickDefaultButton();
380
382
  }
381
383
  }
382
384
  }, e.prototype.handleDocumentKeydown = function(t) {
@@ -407,7 +409,7 @@ var rt = (
407
409
  }, e.prototype.toggleScrollDividerFooter = function() {
408
410
  this.adapter.isScrollableContentAtBottom() ? this.adapter.hasClass(r.SCROLL_DIVIDER_FOOTER) && this.adapter.removeClass(r.SCROLL_DIVIDER_FOOTER) : this.adapter.addClass(r.SCROLL_DIVIDER_FOOTER);
409
411
  }, e;
410
- }(St)
412
+ }(vt)
411
413
  );
412
414
  /**
413
415
  * @license
@@ -431,7 +433,7 @@ var rt = (
431
433
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
432
434
  * THE SOFTWARE.
433
435
  */
434
- var m = rt.strings, Bt = (
436
+ var u = rt.strings, kt = (
435
437
  /** @class */
436
438
  function(i) {
437
439
  at(e, i);
@@ -475,36 +477,36 @@ var m = rt.strings, Bt = (
475
477
  return new e(t);
476
478
  }, e.prototype.initialize = function(t) {
477
479
  var n, o;
478
- t === void 0 && (t = function(E, _) {
479
- return new Rt(E, _);
480
+ t === void 0 && (t = function(E, C) {
481
+ return new Mt(E, C);
480
482
  });
481
- var a = this.root.querySelector(m.CONTAINER_SELECTOR);
483
+ var a = this.root.querySelector(u.CONTAINER_SELECTOR);
482
484
  if (!a)
483
- throw new Error("Dialog component requires a " + m.CONTAINER_SELECTOR + " container element");
484
- this.container = a, this.content = this.root.querySelector(m.CONTENT_SELECTOR), this.buttons = [].slice.call(this.root.querySelectorAll(m.BUTTON_SELECTOR)), this.defaultButton = this.root.querySelector("[" + m.BUTTON_DEFAULT_ATTRIBUTE + "]"), this.focusTrapFactory = t, this.buttonRipples = [];
485
+ throw new Error("Dialog component requires a " + u.CONTAINER_SELECTOR + " container element");
486
+ this.container = a, this.content = this.root.querySelector(u.CONTENT_SELECTOR), this.buttons = [].slice.call(this.root.querySelectorAll(u.BUTTON_SELECTOR)), this.defaultButton = this.root.querySelector("[" + u.BUTTON_DEFAULT_ATTRIBUTE + "]"), this.focusTrapFactory = t, this.buttonRipples = [];
485
487
  try {
486
- for (var d = Ct(this.buttons), p = d.next(); !p.done; p = d.next()) {
487
- var A = p.value;
488
- this.buttonRipples.push(new yt(A));
488
+ for (var f = St(this.buttons), p = f.next(); !p.done; p = f.next()) {
489
+ var v = p.value;
490
+ this.buttonRipples.push(new Ot(v));
489
491
  }
490
492
  } catch (E) {
491
493
  n = { error: E };
492
494
  } finally {
493
495
  try {
494
- p && !p.done && (o = d.return) && o.call(d);
496
+ p && !p.done && (o = f.return) && o.call(f);
495
497
  } finally {
496
498
  if (n) throw n.error;
497
499
  }
498
500
  }
499
501
  }, e.prototype.initialSyncWithDOM = function() {
500
502
  var t = this;
501
- this.focusTrap = It(this.container, this.focusTrapFactory, this.getInitialFocusEl() || void 0), this.handleClick = this.foundation.handleClick.bind(this.foundation), this.handleKeydown = this.foundation.handleKeydown.bind(this.foundation), this.handleDocumentKeydown = this.foundation.handleDocumentKeydown.bind(this.foundation), this.handleOpening = function() {
503
+ this.focusTrap = Lt(this.container, this.focusTrapFactory, this.getInitialFocusEl() || void 0), this.handleClick = this.foundation.handleClick.bind(this.foundation), this.handleKeydown = this.foundation.handleKeydown.bind(this.foundation), this.handleDocumentKeydown = this.foundation.handleDocumentKeydown.bind(this.foundation), this.handleOpening = function() {
502
504
  document.addEventListener("keydown", t.handleDocumentKeydown);
503
505
  }, this.handleClosing = function() {
504
506
  document.removeEventListener("keydown", t.handleDocumentKeydown);
505
- }, this.listen("click", this.handleClick), this.listen("keydown", this.handleKeydown), this.listen(m.OPENING_EVENT, this.handleOpening), this.listen(m.CLOSING_EVENT, this.handleClosing);
507
+ }, this.listen("click", this.handleClick), this.listen("keydown", this.handleKeydown), this.listen(u.OPENING_EVENT, this.handleOpening), this.listen(u.CLOSING_EVENT, this.handleClosing);
506
508
  }, e.prototype.destroy = function() {
507
- this.unlisten("click", this.handleClick), this.unlisten("keydown", this.handleKeydown), this.unlisten(m.OPENING_EVENT, this.handleOpening), this.unlisten(m.CLOSING_EVENT, this.handleClosing), this.handleClosing(), this.buttonRipples.forEach(function(t) {
509
+ this.unlisten("click", this.handleClick), this.unlisten("keydown", this.handleKeydown), this.unlisten(u.OPENING_EVENT, this.handleOpening), this.unlisten(u.CLOSING_EVENT, this.handleClosing), this.handleClosing(), this.buttonRipples.forEach(function(t) {
508
510
  t.destroy();
509
511
  }), i.prototype.destroy.call(this);
510
512
  }, e.prototype.layout = function() {
@@ -522,19 +524,19 @@ var m = rt.strings, Bt = (
522
524
  return t.root.classList.add(o);
523
525
  },
524
526
  areButtonsStacked: function() {
525
- return Ft(t.buttons);
527
+ return wt(t.buttons);
526
528
  },
527
529
  clickDefaultButton: function() {
528
530
  t.defaultButton && t.defaultButton.click();
529
531
  },
530
532
  eventTargetMatches: function(o, a) {
531
- return o ? Tt(o, a) : !1;
533
+ return o ? At(o, a) : !1;
532
534
  },
533
535
  getActionFromEvent: function(o) {
534
536
  if (!o.target)
535
537
  return "";
536
- var a = Ot(o.target, "[" + m.ACTION_ATTRIBUTE + "]");
537
- return a && a.getAttribute(m.ACTION_ATTRIBUTE);
538
+ var a = Tt(o.target, "[" + u.ACTION_ATTRIBUTE + "]");
539
+ return a && a.getAttribute(u.ACTION_ATTRIBUTE);
538
540
  },
539
541
  getInitialFocusEl: function() {
540
542
  return t.getInitialFocusEl();
@@ -543,19 +545,19 @@ var m = rt.strings, Bt = (
543
545
  return t.root.classList.contains(o);
544
546
  },
545
547
  isContentScrollable: function() {
546
- return Dt(t.content);
548
+ return Ft(t.content);
547
549
  },
548
550
  notifyClosed: function(o) {
549
- return t.emit(m.CLOSED_EVENT, o ? { action: o } : {});
551
+ return t.emit(u.CLOSED_EVENT, o ? { action: o } : {});
550
552
  },
551
553
  notifyClosing: function(o) {
552
- return t.emit(m.CLOSING_EVENT, o ? { action: o } : {});
554
+ return t.emit(u.CLOSING_EVENT, o ? { action: o } : {});
553
555
  },
554
556
  notifyOpened: function() {
555
- return t.emit(m.OPENED_EVENT, {});
557
+ return t.emit(u.OPENED_EVENT, {});
556
558
  },
557
559
  notifyOpening: function() {
558
- return t.emit(m.OPENING_EVENT, {});
560
+ return t.emit(u.OPENING_EVENT, {});
559
561
  },
560
562
  releaseFocus: function() {
561
563
  t.focusTrap.releaseFocus();
@@ -581,10 +583,10 @@ var m = rt.strings, Bt = (
581
583
  t.content instanceof HTMLElement && t.content.removeEventListener(o, a);
582
584
  },
583
585
  isScrollableContentAtTop: function() {
584
- return Nt(t.content);
586
+ return Rt(t.content);
585
587
  },
586
588
  isScrollableContentAtBottom: function() {
587
- return Lt(t.content);
589
+ return Bt(t.content);
588
590
  },
589
591
  registerWindowEventHandler: function(o, a) {
590
592
  window.addEventListener(o, a);
@@ -595,11 +597,11 @@ var m = rt.strings, Bt = (
595
597
  };
596
598
  return new rt(n);
597
599
  }, e.prototype.getInitialFocusEl = function() {
598
- return this.root.querySelector("[" + m.INITIAL_FOCUS_ATTRIBUTE + "]");
600
+ return this.root.querySelector("[" + u.INITIAL_FOCUS_ATTRIBUTE + "]");
599
601
  }, e;
600
- }(vt)
602
+ }(yt)
601
603
  );
602
- const wt = {
604
+ const Ht = {
603
605
  /**
604
606
  * An action button that will not automatically trigger a dismiss or accept. It is meant to be used only in certain circumstances where more control of the modal is required such as validating forms. If primaryButton is sent with actionButton, actionButton will be ignored.
605
607
  *
@@ -762,7 +764,7 @@ const wt = {
762
764
  * Defaults to **null**.
763
765
  */
764
766
  title: s.string
765
- }, Mt = {
767
+ }, Pt = {
766
768
  actionButton: null,
767
769
  backButton: null,
768
770
  badge: void 0,
@@ -786,30 +788,30 @@ const wt = {
786
788
  returnFocusSelector: null,
787
789
  scrollable: !1,
788
790
  title: null
789
- }, M = /* @__PURE__ */ ht((i, e) => {
791
+ }, M = /* @__PURE__ */ gt((i, e) => {
790
792
  const {
791
793
  actionButton: t,
792
794
  actionIcons: n,
793
795
  badge: o,
794
796
  backButton: a,
795
- children: d,
797
+ children: f,
796
798
  className: p,
797
- content: A,
799
+ content: v,
798
800
  defaultButton: E,
799
- dismissiveButton: _,
801
+ dismissiveButton: C,
800
802
  footerSupplemental: b,
801
803
  headerActions: J,
802
804
  hideCloseIcon: k,
803
805
  indicator: st,
804
- initialFocus: S,
806
+ initialFocus: y,
805
807
  mobileStackedButtons: H,
806
808
  modalSize: h,
807
- nextButton: v,
808
- noActions: y,
809
+ nextButton: O,
810
+ noActions: T,
809
811
  onClose: P,
810
812
  onClosed: U,
811
- onOpen: I,
812
- onOpened: D,
813
+ onOpen: D,
814
+ onOpened: I,
813
815
  open: Q,
814
816
  preventClose: x,
815
817
  preventPrimaryAccept: X,
@@ -819,36 +821,36 @@ const wt = {
819
821
  title: tt,
820
822
  ...lt
821
823
  } = i, N = et(), l = et();
822
- gt(e, () => N.current, []);
823
- const [K, ct] = nt(), [W, dt] = nt(() => v || a);
824
+ Et(e, () => N.current, []);
825
+ const [K, ct] = nt(), [W, dt] = nt(() => O || a);
824
826
  g(() => {
825
- dt(v || a);
826
- }, [v, a]);
827
+ dt(O || a);
828
+ }, [O, a]);
827
829
  const L = z(() => {
828
830
  ct(window.innerWidth <= 600);
829
831
  }, []);
830
832
  g(() => (L(), window.addEventListener("resize", L), () => {
831
833
  window.removeEventListener("resize", L);
832
- }), [L]), g(() => (l.current = Bt.attachTo(N.current), () => {
834
+ }), [L]), g(() => (l.current = kt.attachTo(N.current), () => {
833
835
  l.current.destroy();
834
836
  }), [l, N]), g(() => {
835
837
  l.current.foundation.setAutoStackButtons(H);
836
838
  }, [H]), g(() => {
837
- y && (l.current.foundation.adapter.trapFocus = () => {
839
+ T && (l.current.foundation.adapter.trapFocus = () => {
838
840
  });
839
- }, [y]), g(() => {
841
+ }, [T]), g(() => {
840
842
  l.current.scrimClickAction = x ? "" : "close", l.current.escapeKeyAction = x ? "" : "close";
841
843
  }, [x]);
842
- const F = z((f) => {
843
- P && P(f);
844
- }, [P]), R = z((f) => {
845
- G && Et(G), U && U(f);
844
+ const F = z((m) => {
845
+ P && P(m);
846
+ }, [P]), R = z((m) => {
847
+ G && _t(G), U && U(m);
846
848
  }, [G, U]);
847
- g(() => (l.current.unlisten("MDCDialog: opening", I), l.current.listen("MDCDialog: opening", I), () => {
848
- l.current.unlisten("MDCDialog: opening", I);
849
- }), [l, I]), g(() => (l.current.unlisten("MDCDialog:opened", D), l.current.listen("MDCDialog:opened", D), () => {
850
- l.current.unlisten("MDCDialog:opened", D);
851
- }), [l, D]), g(() => (l.current.unlisten("MDCDialog:closing", F), l.current.listen("MDCDialog:closing", F), () => {
849
+ g(() => (l.current.unlisten("MDCDialog: opening", D), l.current.listen("MDCDialog: opening", D), () => {
850
+ l.current.unlisten("MDCDialog: opening", D);
851
+ }), [l, D]), g(() => (l.current.unlisten("MDCDialog:opened", I), l.current.listen("MDCDialog:opened", I), () => {
852
+ l.current.unlisten("MDCDialog:opened", I);
853
+ }), [l, I]), g(() => (l.current.unlisten("MDCDialog:closing", F), l.current.listen("MDCDialog:closing", F), () => {
852
854
  l.current.unlisten("MDCDialog:closing", F);
853
855
  }), [l, F]), g(() => (l.current.unlisten("MDCDialog:closed", R), l.current.listen("MDCDialog:closed", R), () => {
854
856
  l.current.unlisten("MDCDialog:closed", R);
@@ -856,99 +858,108 @@ const wt = {
856
858
  Q ? l.current.open() : l.current.close();
857
859
  }, [l, Q]);
858
860
  const ut = Y(() => () => {
859
- const f = {
861
+ const m = {
860
862
  className: "lmnt-modal__button mdc-dialog__button",
861
863
  elevation: t?.props.elevation !== "default" ? t?.props.elevation : "flat",
862
864
  variant: t?.props.variant || "filled"
863
865
  };
864
- return E === "action" && (f["data-mdc-dialog-button-default"] = !0), S === "action" && (f["data-mdc-dialog-initial-focus"] = !0), f;
865
- }, [t?.props.elevation, t?.props.variant, E, S]), mt = Y(() => () => {
866
- const f = {
866
+ return E === "action" && (m["data-mdc-dialog-button-default"] = !0), y === "action" && (m["data-mdc-dialog-initial-focus"] = !0), m;
867
+ }, [t?.props.elevation, t?.props.variant, E, y]), mt = Y(() => () => {
868
+ const m = {
867
869
  className: "lmnt-modal__button mdc-dialog__button",
868
870
  "data-mdc-dialog-action": X ? "" : "accept",
869
871
  elevation: c?.props.elevation !== "default" ? c?.props.elevation : "flat",
870
872
  variant: c?.props.variant || "filled"
871
873
  };
872
- return E === "primary" && (f["data-mdc-dialog-button-default"] = !0), S === "primary" && (f["data-mdc-dialog-initial-focus"] = !0), f;
873
- }, [X, E, S, c?.props.elevation, c?.props.variant]);
874
- return /* @__PURE__ */ u.createElement("aside", pt({
874
+ return E === "primary" && (m["data-mdc-dialog-button-default"] = !0), y === "primary" && (m["data-mdc-dialog-initial-focus"] = !0), m;
875
+ }, [X, E, y, c?.props.elevation, c?.props.variant]);
876
+ return /* @__PURE__ */ d.createElement("aside", ht({
875
877
  ref: N,
876
878
  className: B("lmnt", "lmnt-modal", "mdc-dialog", Z && "lmnt-modal--scrollable mdc-dialog--scrollable", p),
877
879
  role: "alertdialog"
878
- }, lt), /* @__PURE__ */ u.createElement("div", {
879
- className: B("lmnt-modal__container", "mdc-dialog__container", h === "fullscreen" && "mdc-dialog--fullscreen", h === "max" && "lmnt-modal__max", h === "xlarge" && "lmnt-modal__xl", h === "large" && "lmnt-modal__lg", h === "medium" && "lmnt-modal__md", h === "small" && "lmnt-modal__sm", (h === "mobile" || K) && "lmnt-modal__mobile", h === "dialog" && "lmnt-modal__dialog", y && "lmnt-modal-no-actions")
880
- }, /* @__PURE__ */ u.createElement("div", {
880
+ }, lt), /* @__PURE__ */ d.createElement("div", {
881
+ className: B("lmnt-modal__container", "mdc-dialog__container", h === "fullscreen" && "mdc-dialog--fullscreen", h === "max" && "lmnt-modal__max", h === "xlarge" && "lmnt-modal__xl", h === "large" && "lmnt-modal__lg", h === "medium" && "lmnt-modal__md", h === "small" && "lmnt-modal__sm", (h === "mobile" || K) && "lmnt-modal__mobile", h === "dialog" && "lmnt-modal__dialog", T && "lmnt-modal-no-actions")
882
+ }, /* @__PURE__ */ d.createElement("div", {
881
883
  className: "lmnt-modal__surface mdc-dialog__surface"
882
- }, /* @__PURE__ */ u.createElement("header", {
883
- className: B("lmnt-modal__title", "mdc-dialog__title", (h === "dialog" || k) && "lmnt-modal_title-hide-close-icon", n && "lmnt-modal_title-actionsIcons", Z && "lmnt-modal__title-scrollable", (k || h === "dialog" || y) && "lmnt-modal--no-close-icon")
884
- }, !k && h !== "dialog" && !y && /* @__PURE__ */ u.createElement(it, {
884
+ }, /* @__PURE__ */ d.createElement("header", {
885
+ className: B("lmnt-modal__title", "mdc-dialog__title", (h === "dialog" || k) && "lmnt-modal_title-hide-close-icon", n && "lmnt-modal_title-actionsIcons", Z && "lmnt-modal__title-scrollable", (k || h === "dialog" || T) && "lmnt-modal--no-close-icon")
886
+ }, !k && h !== "dialog" && !T && /* @__PURE__ */ d.createElement(it, {
885
887
  className: "mdc-icon-button material-icons mdc-dialog__close",
886
888
  "data-mdc-dialog-action": "close",
887
889
  icon: "clear"
888
- }), tt && /* @__PURE__ */ u.createElement("div", null, tt), J && /* @__PURE__ */ u.createElement("div", {
890
+ }), tt && /* @__PURE__ */ d.createElement("div", null, tt), J && /* @__PURE__ */ d.createElement("div", {
889
891
  className: "lmnt-dialog__title-actions"
890
- }, J), o && /* @__PURE__ */ u.createElement("div", {
892
+ }, J), o && /* @__PURE__ */ d.createElement("div", {
891
893
  className: "lmnt-badge--modal",
892
894
  style: {
893
895
  marginLeft: "0"
894
896
  }
895
- }, o)), (A || d) && /* @__PURE__ */ u.createElement("section", {
897
+ }, o)), (v || f) && /* @__PURE__ */ d.createElement("section", {
896
898
  className: "lmnt-modal__content mdc-dialog__content"
897
- }, A || d), st, (t || a || _ || v || c || b) && /* @__PURE__ */ u.createElement("footer", {
899
+ }, v || f), st, (t || a || C || O || c || b) && /* @__PURE__ */ d.createElement("footer", {
898
900
  className: B("lmnt-modal__actions", "mdc-dialog__actions", K && "lmnt-dialog__actions__mobile", b && "lmnt-modal__actions--supplemental-btn", K && H && "lmnt-modal_actions-mobile-stacked")
899
- }, !W && b && /* @__PURE__ */ u.createElement("div", {
901
+ }, !W && b && /* @__PURE__ */ d.createElement("div", {
900
902
  className: "lmnt-dialog__actions__supplemental"
901
- }, T(b, () => {
902
- const f = {};
903
- return E === "footerSupplemental" && (f["data-mdc-dialog-button-default"] = !0), S === "footerSupplemental" && (f["data-mdc-dialog-initial-focus"] = !0), f;
904
- })), !W && (t || _ || c) && /* @__PURE__ */ u.createElement("div", {
903
+ }, A(b, () => {
904
+ const m = {};
905
+ return E === "footerSupplemental" && (m["data-mdc-dialog-button-default"] = !0), y === "footerSupplemental" && (m["data-mdc-dialog-initial-focus"] = !0), m;
906
+ })), !W && (t || C || c) && /* @__PURE__ */ d.createElement("div", {
905
907
  className: "lmnt-dialog__actions__right-align lmnt-modal_actions_button"
906
- }, _ && T(_, {
908
+ }, C && A(C, {
907
909
  variant: "text",
908
910
  className: "lmnt-modal__button mdc-dialog__button",
909
911
  "data-mdc-dialog-action": "close"
910
- }), t && !c && T(t, ut), c && T(c, mt)), W && /* @__PURE__ */ u.createElement("div", {
912
+ }), t && !c && A(t, ut), c && A(c, mt)), W && /* @__PURE__ */ d.createElement("div", {
911
913
  className: "lmnt-modal_actions_button lmnt-dialog__actions__directional"
912
- }, /* @__PURE__ */ u.createElement("div", null, _t(a, "lmnt-modal__button")), /* @__PURE__ */ u.createElement("div", null, T(v, {
914
+ }, /* @__PURE__ */ d.createElement("div", null, Ct(a, "lmnt-modal__button")), /* @__PURE__ */ d.createElement("div", null, A(O, {
913
915
  className: "lmnt-modal__button",
914
916
  "data-mdc-dialog-initial-focus": !0
915
- })))))), /* @__PURE__ */ u.createElement("div", {
917
+ })))))), /* @__PURE__ */ d.createElement("div", {
916
918
  className: "mdc-dialog__scrim"
917
919
  }));
918
920
  });
919
921
  M.displayName = "Modal";
920
- M.propTypes = wt;
921
- M.defaultProps = Mt;
922
- const kt = "_modal_18rd0_1", Ht = "_title_18rd0_6", Pt = "_titleWithoutCloseIcon_18rd0_18", $ = {
923
- modal: kt,
924
- title: Ht,
925
- titleWithoutCloseIcon: Pt
926
- }, Jt = ({
922
+ M.propTypes = Ht;
923
+ M.defaultProps = Pt;
924
+ const Ut = "_modal_18rd0_1", xt = "_title_18rd0_6", Gt = "_titleWithoutCloseIcon_18rd0_18", $ = {
925
+ modal: Ut,
926
+ title: xt,
927
+ titleWithoutCloseIcon: Gt
928
+ }, ee = ({
927
929
  onClose: i,
928
930
  title: e,
929
931
  headerActions: t,
930
932
  hideCloseIcon: n,
931
- ...o
933
+ leadingIcon: o,
934
+ ...a
932
935
  }) => {
933
- const a = Y(() => {
934
- const d = /* @__PURE__ */ ft(V, { primaryAlign: "center", secondaryAlign: "center", children: [
935
- !n && /* @__PURE__ */ O(it, { icon: "close", onClick: () => i?.(), type: "button" }),
936
- /* @__PURE__ */ O(bt, { level: 6, className: n ? $.titleWithoutCloseIcon : "", children: e })
936
+ const f = Y(() => {
937
+ const p = /* @__PURE__ */ ft(V, { primaryAlign: "center", secondaryAlign: "center", children: [
938
+ !n && /* @__PURE__ */ _(it, { icon: "close", onClick: () => i?.(), type: "button" }),
939
+ o ? /* @__PURE__ */ _(Dt, { customPadding: "0.25rem 0 0 0.75rem", children: /* @__PURE__ */ _(Nt, { icon: o }) }) : /* @__PURE__ */ _(pt, {}),
940
+ /* @__PURE__ */ _(
941
+ It,
942
+ {
943
+ level: 6,
944
+ className: n && !o ? $.titleWithoutCloseIcon : "",
945
+ children: e
946
+ }
947
+ )
937
948
  ] }, "base-group");
938
- return t ? Array.isArray(t) ? [d, /* @__PURE__ */ O(V, { children: t }, "action-group")] : [d, t] : d;
939
- }, [t, n, i, e]);
940
- return /* @__PURE__ */ O(
949
+ return t ? Array.isArray(t) ? [p, /* @__PURE__ */ _(V, { children: t }, "action-group")] : [p, t] : p;
950
+ }, [t, n, o, i, e]);
951
+ return /* @__PURE__ */ _(
941
952
  M,
942
953
  {
943
- ...o,
954
+ ...a,
944
955
  "data-testid": "modal",
945
- className: `${$.modal} ${$.title} ${o.className ?? ""}`,
956
+ className: `${$.modal} ${$.title} ${a.className ?? ""}`,
946
957
  hideCloseIcon: !0,
947
- headerActions: /* @__PURE__ */ O(V, { primaryAlign: "space-between", secondaryAlign: "center", children: a }, "header-group"),
958
+ headerActions: /* @__PURE__ */ _(V, { primaryAlign: "space-between", secondaryAlign: "center", children: f }, "header-group"),
948
959
  preventClose: !0
949
960
  }
950
961
  );
951
962
  };
952
963
  export {
953
- Jt as Modal
964
+ ee as Modal
954
965
  };
@@ -1,9 +1,9 @@
1
1
  import { jsx as i } from "react/jsx-runtime";
2
2
  import { P as r } from "../../index.es-D-CKRzIB.js";
3
3
  import '../../assets/main.css';/* empty css */
4
- import { u as m } from "../../useBreakpoints-MzTZ0tCT.js";
5
4
  import "react";
6
5
  import "../../isEmpty-B4GG2s-V.js";
6
+ import { u as m } from "../../useBreakpoints-MzTZ0tCT.js";
7
7
  import "../../react-tooltip.min-DSY6KDqS.js";
8
8
  import "../../orderBy-Bd48bw88.js";
9
9
  import "../../uniqueId-NU3-C36A.js";
package/dist/main.d.ts CHANGED
@@ -6,6 +6,7 @@ export { BlockView } from './components/BlockView/BlockView';
6
6
  export { ChipCard } from './components/ChipCard/ChipCard';
7
7
  export { ContextMenu } from './components/ContextMenu/ContextMenu';
8
8
  export { DeleteModal } from './components/DeleteModal/DeleteModal';
9
+ export { DetailContentWrapper } from './components/DetailContentWrapper/DetailContentWrapper';
9
10
  export { Disclaimer } from './components/Disclaimer/Disclaimer';
10
11
  export { EmptyView } from './components/EmptyView/EmptyView';
11
12
  export { Filter } from './components/Filter/Filter';
package/dist/main.js CHANGED
@@ -2,90 +2,92 @@ import './assets/main.css';/* empty css */
2
2
  import { AlertBanner as t } from "./components/AlertBanner/AlertBanner.js";
3
3
  import { BaseView as p } from "./components/BaseView/BaseView.js";
4
4
  import { BasicHeading as x } from "./components/BasicHeading/BasicHeading.js";
5
- import { BlockView as a } from "./components/BlockView/BlockView.js";
5
+ import { BlockView as i } from "./components/BlockView/BlockView.js";
6
6
  import { ChipCard as A } from "./components/ChipCard/ChipCard.js";
7
- import { ContextMenu as n } from "./components/ContextMenu/ContextMenu.js";
7
+ import { ContextMenu as c } from "./components/ContextMenu/ContextMenu.js";
8
8
  import { DeleteModal as d } from "./components/DeleteModal/DeleteModal.js";
9
- import { Disclaimer as G } from "./components/Disclaimer/Disclaimer.js";
10
- import { EmptyView as s } from "./components/EmptyView/EmptyView.js";
11
- import { Filter as F } from "./components/Filter/Filter.js";
12
- import { FormattedNumberDisplay as N } from "./components/FormattedNumberDisplay/FormattedNumberDisplay.js";
13
- import { GenericTable as C } from "./components/GenericTable/GenericTable.js";
14
- import { HashTabView as u } from "./components/HashTabView/HashTabView.js";
15
- import { HeaderFilter as T } from "./components/HeaderFilter/HeaderFilter.js";
16
- import { HealthCheckFailed as U } from "./components/HealthCheckFailed/HealthCheckFailed.js";
17
- import { Iconify as H } from "./components/Iconify/Iconify.js";
18
- import { InfoGroup as P } from "./components/InfoGroup/InfoGroup.js";
19
- import { ListArea as R } from "./components/ListArea/ListArea.js";
20
- import { LoadingSpinner as w } from "./components/LoadingSpinner/Default/LoadingSpinner.js";
21
- import { Modal as v } from "./components/Modal/Modal.js";
22
- import { ModulePadding as Y } from "./components/ModulePadding/ModulePadding.js";
23
- import { OverflowTooltip as z } from "./components/OverflowTooltip/OverflowTooltip.js";
24
- import { ScrollbarX as j, ScrollbarY as q } from "./components/Scrollbar/Scrollbar.js";
25
- import { SearchBar as Q } from "./components/SearchBar/SearchBar.js";
26
- import { Select as Z } from "./components/Select/Select.js";
27
- import { VerticalDivider as rr } from "./components/VerticalDivider/VerticalDivider.js";
28
- import { FormCheckBox as er } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
29
- import { FormDatePicker as mr } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
30
- import { FormNumber as fr } from "./components/FormComponents/FormNumber/FormNumber.js";
31
- import { FormRadio as ir } from "./components/FormComponents/FormRadio/FormRadio.js";
32
- import { FormSelect as lr } from "./components/FormComponents/FormSelect/FormSelect.js";
33
- import { FormSlider as cr } from "./components/FormComponents/FormSlider/FormSlider.js";
34
- import { FormText as Lr } from "./components/FormComponents/FormText/FormText.js";
35
- import { FormToggle as Er } from "./components/FormComponents/FormToggle/FormToggle.js";
36
- import { AvailableCustomIcons as Sr } from "./enums/AvailableCustomIcons.js";
37
- import { ThemeColor as _r } from "./enums/ThemeColor.js";
38
- import { u as Ir } from "./useBreakpoints-MzTZ0tCT.js";
39
- import { capitalizeFirstLetters as Dr, getNumberAsLocaleString as Cr, trimLeadingAndTrailingSpaces as gr } from "./services/UtilService.js";
40
- import { AVAILABLE_COUNTRY_KEYS as Br, AVAILABLE_LOCALES as Tr, ENGLISH_LANGUAGE_ID as br, GERMAN_LANGUAGE_ID as Ur, LANGUAGE_CODES_MAPPER as hr, LANGUAGE_ID_MAPPER as Hr, SPANISH_LANGUAGE_ID as Mr, TURKISH_LANGUAGE_ID as Pr } from "./types/Languages.js";
9
+ import { DetailContentWrapper as G } from "./components/DetailContentWrapper/DetailContentWrapper.js";
10
+ import { Disclaimer as s } from "./components/Disclaimer/Disclaimer.js";
11
+ import { EmptyView as F } from "./components/EmptyView/EmptyView.js";
12
+ import { Filter as N } from "./components/Filter/Filter.js";
13
+ import { FormattedNumberDisplay as C } from "./components/FormattedNumberDisplay/FormattedNumberDisplay.js";
14
+ import { GenericTable as u } from "./components/GenericTable/GenericTable.js";
15
+ import { HashTabView as T } from "./components/HashTabView/HashTabView.js";
16
+ import { HeaderFilter as U } from "./components/HeaderFilter/HeaderFilter.js";
17
+ import { HealthCheckFailed as H } from "./components/HealthCheckFailed/HealthCheckFailed.js";
18
+ import { Iconify as P } from "./components/Iconify/Iconify.js";
19
+ import { InfoGroup as R } from "./components/InfoGroup/InfoGroup.js";
20
+ import { ListArea as w } from "./components/ListArea/ListArea.js";
21
+ import { LoadingSpinner as v } from "./components/LoadingSpinner/Default/LoadingSpinner.js";
22
+ import { Modal as Y } from "./components/Modal/Modal.js";
23
+ import { ModulePadding as z } from "./components/ModulePadding/ModulePadding.js";
24
+ import { OverflowTooltip as X } from "./components/OverflowTooltip/OverflowTooltip.js";
25
+ import { ScrollbarX as q, ScrollbarY as J } from "./components/Scrollbar/Scrollbar.js";
26
+ import { SearchBar as Z } from "./components/SearchBar/SearchBar.js";
27
+ import { Select as rr } from "./components/Select/Select.js";
28
+ import { VerticalDivider as er } from "./components/VerticalDivider/VerticalDivider.js";
29
+ import { FormCheckBox as mr } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
30
+ import { FormDatePicker as fr } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
31
+ import { FormNumber as ar } from "./components/FormComponents/FormNumber/FormNumber.js";
32
+ import { FormRadio as lr } from "./components/FormComponents/FormRadio/FormRadio.js";
33
+ import { FormSelect as nr } from "./components/FormComponents/FormSelect/FormSelect.js";
34
+ import { FormSlider as Lr } from "./components/FormComponents/FormSlider/FormSlider.js";
35
+ import { FormText as Er } from "./components/FormComponents/FormText/FormText.js";
36
+ import { FormToggle as Sr } from "./components/FormComponents/FormToggle/FormToggle.js";
37
+ import { AvailableCustomIcons as _r } from "./enums/AvailableCustomIcons.js";
38
+ import { ThemeColor as Ir } from "./enums/ThemeColor.js";
39
+ import { u as Dr } from "./useBreakpoints-MzTZ0tCT.js";
40
+ import { capitalizeFirstLetters as gr, getNumberAsLocaleString as ur, trimLeadingAndTrailingSpaces as Br } from "./services/UtilService.js";
41
+ import { AVAILABLE_COUNTRY_KEYS as br, AVAILABLE_LOCALES as Ur, ENGLISH_LANGUAGE_ID as hr, GERMAN_LANGUAGE_ID as Hr, LANGUAGE_CODES_MAPPER as Mr, LANGUAGE_ID_MAPPER as Pr, SPANISH_LANGUAGE_ID as Vr, TURKISH_LANGUAGE_ID as Rr } from "./types/Languages.js";
41
42
  export {
42
- Br as AVAILABLE_COUNTRY_KEYS,
43
- Tr as AVAILABLE_LOCALES,
43
+ br as AVAILABLE_COUNTRY_KEYS,
44
+ Ur as AVAILABLE_LOCALES,
44
45
  t as AlertBanner,
45
- Sr as AvailableCustomIcons,
46
+ _r as AvailableCustomIcons,
46
47
  p as BaseView,
47
48
  x as BasicHeading,
48
- a as BlockView,
49
+ i as BlockView,
49
50
  A as ChipCard,
50
- n as ContextMenu,
51
+ c as ContextMenu,
51
52
  d as DeleteModal,
52
- G as Disclaimer,
53
- br as ENGLISH_LANGUAGE_ID,
54
- s as EmptyView,
55
- F as Filter,
56
- er as FormCheckBox,
57
- mr as FormDatePicker,
58
- fr as FormNumber,
59
- ir as FormRadio,
60
- lr as FormSelect,
61
- cr as FormSlider,
62
- Lr as FormText,
63
- Er as FormToggle,
64
- N as FormattedNumberDisplay,
65
- Ur as GERMAN_LANGUAGE_ID,
66
- C as GenericTable,
67
- u as HashTabView,
68
- T as HeaderFilter,
69
- U as HealthCheckFailed,
70
- H as Iconify,
71
- P as InfoGroup,
72
- hr as LANGUAGE_CODES_MAPPER,
73
- Hr as LANGUAGE_ID_MAPPER,
74
- R as ListArea,
75
- w as LoadingSpinner,
76
- v as Modal,
77
- Y as ModulePadding,
78
- z as OverflowTooltip,
79
- Mr as SPANISH_LANGUAGE_ID,
80
- j as ScrollbarX,
81
- q as ScrollbarY,
82
- Q as SearchBar,
83
- Z as Select,
84
- Pr as TURKISH_LANGUAGE_ID,
85
- _r as ThemeColor,
86
- rr as VerticalDivider,
87
- Dr as capitalizeFirstLetters,
88
- Cr as getNumberAsLocaleString,
89
- gr as trimLeadingAndTrailingSpaces,
90
- Ir as useBreakpoints
53
+ G as DetailContentWrapper,
54
+ s as Disclaimer,
55
+ hr as ENGLISH_LANGUAGE_ID,
56
+ F as EmptyView,
57
+ N as Filter,
58
+ mr as FormCheckBox,
59
+ fr as FormDatePicker,
60
+ ar as FormNumber,
61
+ lr as FormRadio,
62
+ nr as FormSelect,
63
+ Lr as FormSlider,
64
+ Er as FormText,
65
+ Sr as FormToggle,
66
+ C as FormattedNumberDisplay,
67
+ Hr as GERMAN_LANGUAGE_ID,
68
+ u as GenericTable,
69
+ T as HashTabView,
70
+ U as HeaderFilter,
71
+ H as HealthCheckFailed,
72
+ P as Iconify,
73
+ R as InfoGroup,
74
+ Mr as LANGUAGE_CODES_MAPPER,
75
+ Pr as LANGUAGE_ID_MAPPER,
76
+ w as ListArea,
77
+ v as LoadingSpinner,
78
+ Y as Modal,
79
+ z as ModulePadding,
80
+ X as OverflowTooltip,
81
+ Vr as SPANISH_LANGUAGE_ID,
82
+ q as ScrollbarX,
83
+ J as ScrollbarY,
84
+ Z as SearchBar,
85
+ rr as Select,
86
+ Rr as TURKISH_LANGUAGE_ID,
87
+ Ir as ThemeColor,
88
+ er as VerticalDivider,
89
+ gr as capitalizeFirstLetters,
90
+ ur as getNumberAsLocaleString,
91
+ Br as trimLeadingAndTrailingSpaces,
92
+ Dr as useBreakpoints
91
93
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hortiview/shared-components",
3
3
  "description": "This is a shared component library. It should used in the HortiView platform and its modules.",
4
- "version": "1.8.1",
4
+ "version": "1.10.0",
5
5
  "type": "module",
6
6
  "repository": "https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared",
7
7
  "author": "Falk Menge <falk.menge.ext@bayer.com>",