@hortiview/shared-components 2.10.0 → 2.10.1

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,11 @@
1
+ ## [2.10.1](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v2.10.0...v2.10.1) (2026-01-06)
2
+
3
+ ### Bug Fixes
4
+
5
+ * fixed basic heading padding ([1a88475](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/1a88475f36310c5be9911609f88ce11f74bc26b0))
6
+ * fixed last divider padding ([d9dd2c0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/d9dd2c0ed73092a2a66a006ed8ecc25b611e1f77))
7
+ * fixed page heading width ([324e596](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/324e59630df1d0e8d8c20f68e6b646380114e0a8))
8
+
1
9
  ## [2.10.0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v2.9.0...v2.10.0) (2026-01-06)
2
10
 
3
11
  ### Features
@@ -1 +1 @@
1
- ._basicHeading_imv0w_1{padding:.75rem;width:calc(100% - 1.75rem)}._actions_imv0w_6>button{max-height:48px}._invisible_imv0w_10{visibility:hidden}._leadingIcon_imv0w_14{margin-right:.5rem}._withAvatar_imv0w_18{margin-left:.25rem;padding-right:1rem;margin-top:0rem}._withAvatar_imv0w_18>._iconContainer_imv0w_24{scale:1.1}._iconContainer_imv0w_24{padding-right:.25rem}._cursor_imv0w_32{cursor:pointer}
1
+ ._basicHeading_14qaz_1{padding:.75rem 0}._basicHeading_14qaz_1>div:first-of-type{padding-left:1rem}._basicHeading_14qaz_1>div:last-of-type{padding-right:1rem}._basicHeading_14qaz_1._inList_14qaz_13>div:last-of-type{padding-right:.5rem!important}._actions_14qaz_17>button{max-height:48px}._actions_14qaz_17 button>span[class*=mdc-button__label]{width:max-content}._invisible_14qaz_25{visibility:hidden}._leadingIcon_14qaz_29{margin-right:.5rem}._withAvatar_14qaz_33{margin-left:.25rem;padding-right:1rem;margin-top:0rem}._withAvatar_14qaz_33>._iconContainer_14qaz_39{scale:1.1}._iconContainer_14qaz_39{padding-right:.5rem;display:flex;align-items:center}._cursor_14qaz_49{cursor:pointer}
@@ -1 +1 @@
1
- ._dividerContainer_v06ae_1{width:100%;padding:1rem 0}._fullWidth_v06ae_6{width:100%}._centerDefaultComponent_v06ae_10{margin:auto}._verticalDivider_v06ae_14{display:flex;align-self:stretch;height:auto;width:1px;background-color:var(--lmnt-theme-on-surface-stroke)}._mainGroup_v06ae_22{padding:1rem;border-radius:.5rem}._textAlignRight_v06ae_27{text-align:right}._typoColor_v06ae_31{color:var(--lmnt-theme-on-surface-inactive)}
1
+ ._dividerContainer_1bd14_1{width:100%;padding:1rem 0}._mainGroup_1bd14_6 ._dividerContainer_1bd14_1:last-of-type{padding-bottom:0}._mainGroup_1bd14_6{padding:1rem;border-radius:.5rem}._fullWidth_1bd14_15{width:100%}._centerDefaultComponent_1bd14_19{margin:auto}._verticalDivider_1bd14_23{display:flex;align-self:stretch;height:auto;width:1px;background-color:var(--lmnt-theme-on-surface-stroke)}._textAlignRight_1bd14_31{text-align:right}._typoColor_1bd14_35{color:var(--lmnt-theme-on-surface-inactive)}
@@ -1 +1 @@
1
- ._searchbar_gnvwc_1 button{color:var(--lmnt-theme-on-surface-inactive)!important}
1
+ ._searchbar_g83qp_1 button{color:var(--lmnt-theme-on-surface-inactive)!important}._searchbar_g83qp_1 div[class*=mdc-notched-outline__leading]{border-radius:.25rem 0 0 .25rem!important}._searchbar_g83qp_1 div[class*=mdc-notched-outline__trailing]{border-radius:0 .25rem .25rem 0!important}
@@ -1,17 +1,17 @@
1
- import { jsx as e, Fragment as l, jsxs as n } from "react/jsx-runtime";
1
+ import { jsx as e, Fragment as a, jsxs as n } from "react/jsx-runtime";
2
2
  import { D as G } from "../../index.es-Bus5gEri.js";
3
3
  import { G as s } from "../../index.es-DsGuBR0Z.js";
4
- import { P } from "../../index.es-Bo1Rhtyb.js";
4
+ import { P as V } from "../../index.es-Bo1Rhtyb.js";
5
5
  import { c as w } from "../../index-Cpb-8cAN.js";
6
6
  import { useMemo as d } from "react";
7
7
  import { BasicHeading as _ } from "../BasicHeading/BasicHeading.js";
8
- import { EmptyView as V } from "../EmptyView/EmptyView.js";
9
- import { ListArea as $ } from "../ListArea/ListArea.js";
10
- import { u as y } from "../../useBreakpoints-MzTZ0tCT.js";
11
- import { O as F } from "../../OfflineView-D168VIXv.js";
12
- import { useScrollableInfo as M } from "./BaseView.service.js";
13
- import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWidth_1a5ww_5", q = "_maxWidth_1a5ww_9", z = "_list_1a5ww_14", J = "_desktopList_1a5ww_23", K = "_noRoundedCorners_1a5ww_28", Q = "_detail_1a5ww_32", U = "_desktopDetail_1a5ww_40", i = {
14
- fullHeight: O,
8
+ import { EmptyView as $ } from "../EmptyView/EmptyView.js";
9
+ import { ListArea as y } from "../ListArea/ListArea.js";
10
+ import { u as F } from "../../useBreakpoints-MzTZ0tCT.js";
11
+ import { O as M } from "../../OfflineView-D168VIXv.js";
12
+ import { useScrollableInfo as O } from "./BaseView.service.js";
13
+ import '../../assets/BaseView.css';const P = "_fullHeight_1a5ww_1", T = "_fullWidth_1a5ww_5", q = "_maxWidth_1a5ww_9", z = "_list_1a5ww_14", J = "_desktopList_1a5ww_23", K = "_noRoundedCorners_1a5ww_28", Q = "_detail_1a5ww_32", U = "_desktopDetail_1a5ww_40", i = {
14
+ fullHeight: P,
15
15
  fullWidth: T,
16
16
  maxWidth: q,
17
17
  list: z,
@@ -21,19 +21,19 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
21
21
  desktopDetail: U
22
22
  }, dt = ({
23
23
  heading: c,
24
- action: m = /* @__PURE__ */ e(l, {}),
25
- hint: g = /* @__PURE__ */ e(l, {}),
26
- elements: a,
27
- emptyText: u,
24
+ action: u = /* @__PURE__ */ e(a, {}),
25
+ hint: g = /* @__PURE__ */ e(a, {}),
26
+ elements: l,
27
+ emptyText: m,
28
28
  hasSearch: v = !0,
29
29
  isSorted: D = !0,
30
30
  className: W,
31
31
  withAvatar: k = !1,
32
32
  listMaxHeight: x = "calc(100vh - 220px)",
33
- titleLevel: H = 5,
34
- detailTitleLevel: L,
33
+ titleLevel: L = 5,
34
+ detailTitleLevel: b,
35
35
  pathname: r,
36
- basicHeadingIcon: b,
36
+ basicHeadingIcon: H,
37
37
  isOnline: f = !0,
38
38
  offlineViewProps: h,
39
39
  noRoundedListItemEdges: p = !0,
@@ -41,7 +41,7 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
41
41
  searchPlaceholder: B,
42
42
  isGrouped: R = !1
43
43
  }) => {
44
- const { isDesktopNavbar: o } = y(), t = d(() => a.find((E) => E.route === r), [r, a]), C = d(() => f ? t?.component ? t.component : o ? /* @__PURE__ */ e(P, { className: i.fullWidth, children: /* @__PURE__ */ e(V, { title: u }) }) : /* @__PURE__ */ e(l, {}) : /* @__PURE__ */ e(F, { ...h, fullWidth: !0 }), [t?.component, u, o, f, h]), { showList: S, showDetail: A } = d(() => o ? { showList: !0, showDetail: !0 } : { showList: !t, showDetail: !!t }, [t, o]), { ref: I, hasScrolled: j } = M([
44
+ const { isDesktopNavbar: o } = F(), t = d(() => l.find((E) => E.route === r), [r, l]), C = d(() => f ? t?.component ? t.component : o ? /* @__PURE__ */ e(V, { className: i.fullWidth, children: /* @__PURE__ */ e($, { title: m }) }) : /* @__PURE__ */ e(a, {}) : /* @__PURE__ */ e(M, { ...h, fullWidth: !0 }), [t?.component, m, o, f, h]), { showList: I, showDetail: S } = d(() => o ? { showList: !0, showDetail: !0 } : { showList: !t, showDetail: !!t }, [t, o]), { ref: A, hasScrolled: j } = O([
45
45
  r,
46
46
  o
47
47
  ]);
@@ -52,7 +52,7 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
52
52
  className: `${i.fullHeight} ${W ?? ""}`,
53
53
  fullWidth: !0,
54
54
  children: [
55
- S && /* @__PURE__ */ n(
55
+ I && /* @__PURE__ */ n(
56
56
  s,
57
57
  {
58
58
  "data-testid": "show-list-container",
@@ -67,20 +67,21 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
67
67
  c && /* @__PURE__ */ e(
68
68
  _,
69
69
  {
70
- icon: b,
70
+ icon: H,
71
71
  "data-testid": "heading",
72
72
  heading: c,
73
- level: H,
73
+ level: L,
74
74
  marginBottom: 0,
75
- children: m
75
+ inList: !0,
76
+ children: u
76
77
  }
77
78
  ),
78
79
  g,
79
80
  /* @__PURE__ */ e(
80
- $,
81
+ y,
81
82
  {
82
83
  hasLastItemNoRoundedEdges: p,
83
- elements: a,
84
+ elements: l,
84
85
  hasSearch: v,
85
86
  maxHeight: x,
86
87
  isSorted: D,
@@ -93,7 +94,7 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
93
94
  ]
94
95
  }
95
96
  ),
96
- A && /* @__PURE__ */ n(
97
+ S && /* @__PURE__ */ n(
97
98
  s,
98
99
  {
99
100
  "data-testid": "show-details-container",
@@ -104,16 +105,15 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
104
105
  /* @__PURE__ */ e(
105
106
  _,
106
107
  {
107
- customHeaderPadding: "0.75rem 0.75rem 0.75rem 1rem",
108
108
  className: i.maxWidth,
109
109
  heading: t?.detailTitle ?? t?.title ?? "",
110
- level: L,
111
- icon: t?.hideIconInDetail === !0 ? void 0 : t?.icon,
110
+ level: b,
111
+ icon: t?.hideIconInDetail === !0 ? void 0 : t?.detailIcon ?? t?.icon,
112
112
  marginBottom: 0,
113
113
  invisibleButton: t?.detailAction === void 0,
114
114
  withAvatar: k,
115
115
  subHeading: t?.detailSubTitle,
116
- children: t?.detailAction ?? m
116
+ children: t?.detailAction ?? u
117
117
  }
118
118
  ),
119
119
  j && /* @__PURE__ */ e(G, {}),
@@ -123,7 +123,7 @@ import '../../assets/BaseView.css';const O = "_fullHeight_1a5ww_1", T = "_fullWi
123
123
  "data-testid": "base-view-show-details-scroll-component-group",
124
124
  fullWidth: !0,
125
125
  direction: "vertical",
126
- ref: I,
126
+ ref: A,
127
127
  children: C
128
128
  }
129
129
  )
@@ -1,8 +1,8 @@
1
1
  import { jsx as o, Fragment as s } from "react/jsx-runtime";
2
2
  import { a as n, s as e, f as p } from "../../react.esm-CX1WJ2Pp.js";
3
3
  import { a as l } from "../../useBreakpoints-MzTZ0tCT.js";
4
- import { BaseView as i } from "./BaseView.js";
5
- import { d as u, b as d, a as c, t as r, g as t } from "../../vi.CjhMlMwf-CKxPQtd6.js";
4
+ import { BaseView as r } from "./BaseView.js";
5
+ import { d as u, b as d, a as c, t as i, g as t } from "../../vi.CjhMlMwf-CKxPQtd6.js";
6
6
  u("BaseView Test", () => {
7
7
  d(() => {
8
8
  c.spyOn(l, "useBreakpoints").mockReturnValue({
@@ -16,6 +16,7 @@ u("BaseView Test", () => {
16
16
  {
17
17
  id: "1",
18
18
  title: "user.personal_information",
19
+ detailIcon: "border_clear",
19
20
  icon: "account_circle",
20
21
  route: "/personal-profile/personal-information",
21
22
  component: /* @__PURE__ */ o(s, { children: "Personal information selected" })
@@ -37,10 +38,10 @@ u("BaseView Test", () => {
37
38
  component: /* @__PURE__ */ o(s, { children: "Security selected" })
38
39
  }
39
40
  ];
40
- r("render BaseView with empty view and navigation list", () => {
41
+ i("render BaseView with empty view and navigation list", () => {
41
42
  n(
42
43
  /* @__PURE__ */ o(
43
- i,
44
+ r,
44
45
  {
45
46
  pathname: "/personal-profile",
46
47
  elements: a,
@@ -52,10 +53,10 @@ u("BaseView Test", () => {
52
53
  }
53
54
  )
54
55
  ), t(e.getByText("user.noselection")).toBeInTheDocument(), t(e.getByText("user.personal-profile")).toBeInTheDocument(), t(e.getByText("user.personal_information")).toBeInTheDocument(), t(e.getByText("user.data_privacy")).toBeInTheDocument(), t(e.getByText("user.security")).toBeInTheDocument();
55
- }), r("render BaseView with data and navigation list", () => {
56
+ }), i("render BaseView with data and navigation list", () => {
56
57
  n(
57
58
  /* @__PURE__ */ o(
58
- i,
59
+ r,
59
60
  {
60
61
  pathname: "/personal-profile/personal-information",
61
62
  elements: a,
@@ -67,11 +68,11 @@ u("BaseView Test", () => {
67
68
  basicHeadingIcon: "directions_car"
68
69
  }
69
70
  )
70
- ), t(e.getByText("Personal information selected")).toBeInTheDocument(), t(e.getAllByText("account_circle")).toHaveLength(2), t(e.getAllByText("user.personal_information")).toHaveLength(2), t(e.getByText("directions_car")).toBeInTheDocument();
71
- }), r("render BaseView with custom detail title and no detail icon", () => {
71
+ ), t(e.getByText("Personal information selected")).toBeInTheDocument(), t(e.getAllByText("user.personal_information")).toHaveLength(2), t(e.getByText("account_circle")).toBeInTheDocument(), t(e.getByText("border_clear")).toBeInTheDocument(), t(e.getByText("directions_car")).toBeInTheDocument();
72
+ }), i("render BaseView with custom detail title and no detail icon", () => {
72
73
  n(
73
74
  /* @__PURE__ */ o(
74
- i,
75
+ r,
75
76
  {
76
77
  pathname: "/personal-profile/data-privacy",
77
78
  elements: a,
@@ -83,7 +84,7 @@ u("BaseView Test", () => {
83
84
  }
84
85
  )
85
86
  ), t(e.getByText("Data Privacy selected")).toBeInTheDocument(), t(e.getByText("Data Privacy 2000")).toBeInTheDocument(), t(e.getAllByText("privacy_tip")).toHaveLength(1), t(e.getAllByText("user.data_privacy")).toHaveLength(1);
86
- }), r("hide empty view when screen is small", () => {
87
+ }), i("hide empty view when screen is small", () => {
87
88
  c.spyOn(l, "useBreakpoints").mockReturnValue({
88
89
  isMobile: !0,
89
90
  isTablet: !1,
@@ -91,7 +92,7 @@ u("BaseView Test", () => {
91
92
  isDesktopNavbar: !1
92
93
  }), n(
93
94
  /* @__PURE__ */ o(
94
- i,
95
+ r,
95
96
  {
96
97
  pathname: "/personal-profile/data-privacy",
97
98
  elements: a,
@@ -103,10 +104,10 @@ u("BaseView Test", () => {
103
104
  }
104
105
  )
105
106
  ), t(e.queryByText("user.noselection")).not.toBeInTheDocument();
106
- }), r("render BaseView with selected detail section", () => {
107
+ }), i("render BaseView with selected detail section", () => {
107
108
  n(
108
109
  /* @__PURE__ */ o(
109
- i,
110
+ r,
110
111
  {
111
112
  pathname: "/personal-profile/data-privacy",
112
113
  elements: a,
@@ -118,10 +119,10 @@ u("BaseView Test", () => {
118
119
  }
119
120
  )
120
121
  ), p.click(e.getAllByRole("option")[1]), t(e.getByText("Data Privacy selected")).toBeInTheDocument();
121
- }), r("renders only offline view when offline", () => {
122
+ }), i("renders only offline view when offline", () => {
122
123
  n(
123
124
  /* @__PURE__ */ o(
124
- i,
125
+ r,
125
126
  {
126
127
  pathname: "/personal-profile/personal-information",
127
128
  elements: a,
@@ -47,5 +47,10 @@ export type BasicHeadingProps = {
47
47
  * @default false
48
48
  */
49
49
  withAvatar?: boolean;
50
+ /**
51
+ * if true the header will have an avatar
52
+ * @default false
53
+ */
54
+ inList?: boolean;
50
55
  };
51
- export declare const BasicHeading: ({ children, marginBottom, heading, icon, className, subHeading, subHeadingLevel, invisibleButton, level, fontWeight, withAvatar, }: PropsWithChildren<BasicHeadingProps>) => import("react/jsx-runtime").JSX.Element;
56
+ export declare const BasicHeading: ({ children, marginBottom, heading, icon, className, subHeading, subHeadingLevel, invisibleButton, level, fontWeight, withAvatar, inList, }: PropsWithChildren<BasicHeadingProps>) => import("react/jsx-runtime").JSX.Element;
@@ -1,89 +1,94 @@
1
- import { jsxs as o, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
2
  import { G as t } from "../../index.es-DsGuBR0Z.js";
3
- import { I as u } from "../../index.es-DYs8W4jv.js";
4
- import { b as w, T as h } from "../../index.es-DCSgIiJH.js";
5
- import { c as I } from "../../index-Cpb-8cAN.js";
6
- import { Iconify as A } from "../Iconify/Iconify.js";
7
- import { AvailableCustomIcons as H } from "../../enums/AvailableCustomIcons.js";
3
+ import { I as A } from "../../index.es-DYs8W4jv.js";
4
+ import { b as I, T as z } from "../../index.es-DCSgIiJH.js";
5
+ import { c as d } from "../../index-Cpb-8cAN.js";
6
+ import { Iconify as H } from "../Iconify/Iconify.js";
7
+ import { AvailableCustomIcons as q } from "../../enums/AvailableCustomIcons.js";
8
8
  import { u as N } from "../../useBreakpoints-MzTZ0tCT.js";
9
- import { OverflowTooltip as x } from "../OverflowTooltip/OverflowTooltip.js";
10
- import '../../assets/BasicHeading.css';const C = "_basicHeading_imv0w_1", T = "_actions_imv0w_6", B = "_invisible_imv0w_10", j = "_leadingIcon_imv0w_14", k = "_withAvatar_imv0w_18", z = "_iconContainer_imv0w_24", n = {
11
- basicHeading: C,
9
+ import { OverflowTooltip as w } from "../OverflowTooltip/OverflowTooltip.js";
10
+ import '../../assets/BasicHeading.css';const x = "_basicHeading_14qaz_1", C = "_inList_14qaz_13", T = "_actions_14qaz_17", B = "_invisible_14qaz_25", L = "_leadingIcon_14qaz_29", W = "_withAvatar_14qaz_33", j = "_iconContainer_14qaz_39", n = {
11
+ basicHeading: x,
12
+ inList: C,
12
13
  actions: T,
13
14
  invisible: B,
14
- leadingIcon: j,
15
- withAvatar: k,
16
- iconContainer: z
17
- }, D = ({ icon: i }) => i ? typeof i != "string" ? /* @__PURE__ */ e("div", { className: n.iconContainer, children: i }) : i in H ? /* @__PURE__ */ e(
18
- A,
15
+ leadingIcon: L,
16
+ withAvatar: W,
17
+ iconContainer: j
18
+ }, k = ({ icon: i }) => i ? typeof i != "string" ? /* @__PURE__ */ e("div", { className: n.iconContainer, children: i }) : i in q ? /* @__PURE__ */ e(
19
+ H,
19
20
  {
20
21
  icon: i,
21
22
  className: n.leadingIcon,
22
23
  iconSize: "medium",
23
24
  iconType: "filled"
24
25
  }
25
- ) : /* @__PURE__ */ e(u, { iconSize: "medium", iconType: "filled", icon: i, className: n.leadingIcon }) : null, q = ({
26
+ ) : /* @__PURE__ */ e(A, { iconSize: "medium", iconType: "filled", icon: i, className: n.leadingIcon }) : null, J = ({
26
27
  children: i,
27
- marginBottom: s,
28
+ marginBottom: o,
28
29
  heading: a,
29
30
  icon: m,
30
- className: d,
31
- subHeading: p,
31
+ className: p,
32
+ subHeading: f,
32
33
  subHeadingLevel: g = 2,
33
- invisibleButton: f = !1,
34
+ invisibleButton: _ = !1,
34
35
  level: r = 5,
35
36
  fontWeight: c = 400,
36
- withAvatar: v = !1
37
+ withAvatar: u = !1,
38
+ inList: y = !1
37
39
  }) => {
38
- const { isDesktop: l } = N(), y = l ? r : r + 1, _ = c === "bold" ? 500 : c, b = typeof s == "number" ? `${s}px` : "2rem";
39
- return /* @__PURE__ */ o(
40
+ const { isDesktop: l } = N(), v = l ? r : r + 1, b = c === "bold" ? 500 : c, h = typeof o == "number" ? `${o}px` : "2rem";
41
+ return /* @__PURE__ */ s(
40
42
  t,
41
43
  {
42
44
  primaryAlign: "space-between",
43
45
  secondaryAlign: "center",
44
46
  gap: "none",
45
- className: n.basicHeading,
46
- style: { marginBottom: b },
47
+ className: d(n.basicHeading, y && n.inList),
48
+ style: { marginBottom: h },
47
49
  "data-testid": "HeaderContainer",
50
+ fullWidth: !0,
48
51
  children: [
49
- /* @__PURE__ */ o(
52
+ /* @__PURE__ */ s(
50
53
  t,
51
54
  {
52
55
  secondaryAlign: "center",
53
56
  gap: "none",
54
- className: `${v && l ? n.withAvatar : ""}`,
57
+ className: `${u && l ? n.withAvatar : ""}`,
58
+ fullWidth: !0,
55
59
  children: [
56
- /* @__PURE__ */ e(D, { icon: m }),
57
- /* @__PURE__ */ o(t, { direction: "vertical", gap: "none", children: [
58
- /* @__PURE__ */ e(x, { id: a, text: a, children: /* @__PURE__ */ e(
59
- w,
60
+ /* @__PURE__ */ e(k, { icon: m }),
61
+ /* @__PURE__ */ s(t, { direction: "vertical", gap: "none", fullWidth: !0, children: [
62
+ /* @__PURE__ */ e(w, { id: a, text: a, children: /* @__PURE__ */ e(
63
+ I,
60
64
  {
61
- level: y,
65
+ level: v,
62
66
  "data-testid": "Header",
63
- className: d ?? "",
64
- style: { fontWeight: _ },
67
+ className: p ?? "",
68
+ style: { fontWeight: b },
65
69
  children: a
66
70
  }
67
71
  ) }),
68
- /* @__PURE__ */ e(h, { level: g, children: p })
72
+ /* @__PURE__ */ e(z, { level: g, children: f })
69
73
  ] })
70
74
  ]
71
75
  }
72
76
  ),
73
- /* @__PURE__ */ e(
77
+ i ? /* @__PURE__ */ e(
74
78
  t,
75
79
  {
80
+ primaryAlign: "end",
76
81
  secondaryAlign: "center",
77
82
  gap: "dense",
78
- className: I(f && n.invisible, n.actions),
83
+ className: d(_ && n.invisible, n.actions),
79
84
  "data-testid": "RightPart",
80
85
  children: i
81
86
  }
82
- )
87
+ ) : null
83
88
  ]
84
89
  }
85
90
  );
86
91
  };
87
92
  export {
88
- q as BasicHeading
93
+ J as BasicHeading
89
94
  };
@@ -1,20 +1,20 @@
1
1
  import { jsx as o, Fragment as d } from "react/jsx-runtime";
2
2
  import { B as g } from "../../index.es-DUcI2Zyr.js";
3
- import { a as i, s as t } from "../../react.esm-CX1WJ2Pp.js";
4
- import { BasicHeading as a } from "./BasicHeading.js";
3
+ import { a, s as t } from "../../react.esm-CX1WJ2Pp.js";
4
+ import { BasicHeading as i } from "./BasicHeading.js";
5
5
  import { d as h, t as s, g as e } from "../../vi.CjhMlMwf-CKxPQtd6.js";
6
6
  h("BasicHeading-Test", () => {
7
7
  s("render small container without content", () => {
8
- i(/* @__PURE__ */ o(a, { heading: "Test" }));
8
+ a(/* @__PURE__ */ o(i, { heading: "Test" }));
9
9
  const n = t.getByTestId("HeaderContainer");
10
10
  e(n).toBeDefined();
11
11
  const r = t.getByTestId("Header");
12
12
  e(r).toBeDefined(), e(r).toHaveTextContent("Test");
13
- const c = t.getByTestId("RightPart");
14
- e(c).toBeDefined();
13
+ const c = t.queryByTestId("RightPart");
14
+ e(c).toBeNull();
15
15
  }), s("render large container with children", () => {
16
- i(
17
- /* @__PURE__ */ o(a, { heading: "Test", marginBottom: "large", children: /* @__PURE__ */ o(g, { children: "Extracontent" }) })
16
+ a(
17
+ /* @__PURE__ */ o(i, { heading: "Test", marginBottom: "large", children: /* @__PURE__ */ o(g, { children: "Extracontent" }) })
18
18
  );
19
19
  const n = t.getByTestId("HeaderContainer");
20
20
  e(n).toBeDefined();
@@ -23,13 +23,13 @@ h("BasicHeading-Test", () => {
23
23
  const c = t.getByTestId("RightPart");
24
24
  e(c).toBeDefined(), e(c).toContainHTML("<button");
25
25
  }), s("render with available custom icon", () => {
26
- i(/* @__PURE__ */ o(a, { heading: "Test", icon: "farm" }));
26
+ a(/* @__PURE__ */ o(i, { heading: "Test", icon: "farm" }));
27
27
  const n = t.getByTestId("farm");
28
28
  e(n).toBeInTheDocument();
29
29
  }), s("render with JSX element as icon", () => {
30
- i(/* @__PURE__ */ o(a, { heading: "Test", icon: /* @__PURE__ */ o(d, { children: "JSX" }) })), e(t.getByText("JSX")).toBeInTheDocument();
30
+ a(/* @__PURE__ */ o(i, { heading: "Test", icon: /* @__PURE__ */ o(d, { children: "JSX" }) })), e(t.getByText("JSX")).toBeInTheDocument();
31
31
  }), s("render with other icon", () => {
32
- i(/* @__PURE__ */ o(a, { heading: "Test", icon: "contact_support" }));
32
+ a(/* @__PURE__ */ o(i, { heading: "Test", icon: "contact_support" }));
33
33
  const n = document.querySelector("i");
34
34
  e(n).toHaveTextContent("contact_support");
35
35
  });
@@ -1,65 +1,65 @@
1
- import { jsxs as p, Fragment as v, jsx as t } from "react/jsx-runtime";
1
+ import { jsxs as p, Fragment as h, jsx as t } from "react/jsx-runtime";
2
2
  import { D as d } from "../../index.es-Bus5gEri.js";
3
3
  import { G as c } from "../../index.es-DsGuBR0Z.js";
4
4
  import { a as g, d as _ } from "../../index.es-DCSgIiJH.js";
5
5
  import { useMemo as f, Fragment as C } from "react";
6
6
  import { u as m } from "../../useBreakpoints-MzTZ0tCT.js";
7
- import '../../assets/InfoGroup.css';const y = "_dividerContainer_v06ae_1", D = "_centerDefaultComponent_v06ae_10", A = "_verticalDivider_v06ae_14", G = "_mainGroup_v06ae_22", N = "_textAlignRight_v06ae_27", R = "_typoColor_v06ae_31", o = {
7
+ import '../../assets/InfoGroup.css';const y = "_dividerContainer_1bd14_1", D = "_mainGroup_1bd14_6", b = "_centerDefaultComponent_1bd14_19", A = "_verticalDivider_1bd14_23", G = "_textAlignRight_1bd14_31", N = "_typoColor_1bd14_35", a = {
8
8
  dividerContainer: y,
9
- centerDefaultComponent: D,
9
+ mainGroup: D,
10
+ centerDefaultComponent: b,
10
11
  verticalDivider: A,
11
- mainGroup: G,
12
- textAlignRight: N,
13
- typoColor: R
12
+ textAlignRight: G,
13
+ typoColor: N
14
14
  }, j = ({ fields: r, bold: i }) => {
15
- const { isDesktop: a } = m(), e = !!r.length && Array.isArray(r.at(0)), n = f(() => e && a ? r.map((l, s) => /* @__PURE__ */ p(v, { children: [
16
- s != 0 && /* @__PURE__ */ t("span", { "data-testid": "test-divider", className: o.dividerContainer, children: /* @__PURE__ */ t(d, {}) }),
15
+ const { isDesktop: o } = m(), e = !!r.length && Array.isArray(r.at(0)), n = f(() => e && o ? r.map((l, s) => /* @__PURE__ */ p(h, { children: [
16
+ s != 0 && /* @__PURE__ */ t("span", { "data-testid": "test-divider", className: a.dividerContainer, children: /* @__PURE__ */ t(d, {}) }),
17
17
  /* @__PURE__ */ t(u, { fields: l, bold: i }),
18
18
  s === r.length - 1 && /* @__PURE__ */ t(
19
19
  "span",
20
20
  {
21
21
  "data-testid": "test-divider-end",
22
- className: o.dividerContainer,
22
+ className: a.dividerContainer,
23
23
  children: /* @__PURE__ */ t(d, {})
24
24
  }
25
25
  )
26
- ] })) : /* @__PURE__ */ t(u, { fields: r.flat(), bold: i }), [a, e, r, i]);
26
+ ] })) : /* @__PURE__ */ t(u, { fields: r.flat(), bold: i }), [o, e, r, i]);
27
27
  return /* @__PURE__ */ t(
28
28
  c,
29
29
  {
30
30
  "data-testid": "infoGroup",
31
31
  direction: "vertical",
32
32
  fullWidth: !0,
33
- className: o.mainGroup,
33
+ className: a.mainGroup,
34
34
  gap: "none",
35
35
  children: n
36
36
  }
37
37
  );
38
38
  }, u = ({ fields: r, bold: i }) => {
39
- const { isDesktop: a } = m();
39
+ const { isDesktop: o } = m();
40
40
  return /* @__PURE__ */ t(
41
41
  c,
42
42
  {
43
43
  "data-testid": "singleRow",
44
44
  fullWidth: !0,
45
- direction: a ? "horizontal" : "vertical",
45
+ direction: o ? "horizontal" : "vertical",
46
46
  secondaryAlign: "start",
47
47
  children: r.map((e, n) => {
48
- const l = a ? /* @__PURE__ */ t("div", { className: o.verticalDivider }) : /* @__PURE__ */ t(d, {});
48
+ const l = o ? /* @__PURE__ */ t("div", { className: a.verticalDivider }) : /* @__PURE__ */ t(d, {});
49
49
  return /* @__PURE__ */ p(C, { children: [
50
50
  n != 0 && l,
51
- /* @__PURE__ */ t(x, { field: e, bold: i, variant: e.componentVariant })
51
+ /* @__PURE__ */ t(R, { field: e, bold: i, variant: e.componentVariant })
52
52
  ] }, `${e.label ?? "label"}_${n}`);
53
53
  })
54
54
  }
55
55
  );
56
- }, x = ({
56
+ }, R = ({
57
57
  field: r,
58
58
  bold: i,
59
- variant: a = "default"
59
+ variant: o = "default"
60
60
  }) => {
61
- const { isDesktop: e } = m(), { component: n, value: l, label: s, themeColor: h } = r;
62
- return n && a === "default" ? /* @__PURE__ */ t(c, { fullWidth: !0, primaryAlign: "center", className: o.centerDefaultComponent, children: n }) : /* @__PURE__ */ p(
61
+ const { isDesktop: e } = m(), { component: n, value: l, label: s, themeColor: v } = r;
62
+ return n && o === "default" ? /* @__PURE__ */ t(c, { fullWidth: !0, primaryAlign: "center", className: a.centerDefaultComponent, children: n }) : /* @__PURE__ */ p(
63
63
  c,
64
64
  {
65
65
  fullWidth: !0,
@@ -68,15 +68,15 @@ import '../../assets/InfoGroup.css';const y = "_dividerContainer_v06ae_1", D = "
68
68
  gap: "none",
69
69
  primaryAlign: e ? "start" : "space-between",
70
70
  secondaryAlign: e ? "baseline" : "center",
71
- className: e ? "" : o.textAlignRight,
71
+ className: e ? "" : a.textAlignRight,
72
72
  children: [
73
- /* @__PURE__ */ t(g, { className: o.typoColor, children: s }),
74
- n ? /* @__PURE__ */ t(v, { children: n }) : /* @__PURE__ */ t(_, { level: 1, "data-testid": "infoGroupValue", themeColor: h, bold: i, children: l })
73
+ /* @__PURE__ */ t(g, { className: a.typoColor, children: s }),
74
+ n ? /* @__PURE__ */ t(h, { children: n }) : /* @__PURE__ */ t(_, { level: 1, "data-testid": "infoGroupValue", themeColor: v, bold: i, children: l })
75
75
  ]
76
76
  }
77
77
  );
78
78
  };
79
79
  export {
80
- x as Cell,
80
+ R as Cell,
81
81
  j as InfoGroup
82
82
  };
@@ -1,6 +1,6 @@
1
1
  import { TextfieldProps } from '@element-public/react-textfield';
2
2
 
3
- type SearchBarProps = Pick<TextfieldProps, 'placeholder' | 'dense' | 'className' | 'fullWidth'> & {
3
+ type SearchBarProps = Pick<TextfieldProps, 'placeholder' | 'dense' | 'className' | 'fullWidth' | 'label'> & {
4
4
  /**
5
5
  * the current search term
6
6
  */
@@ -10,5 +10,5 @@ type SearchBarProps = Pick<TextfieldProps, 'placeholder' | 'dense' | 'className'
10
10
  */
11
11
  setSearchTerm: (value: string) => void;
12
12
  };
13
- export declare const SearchBar: ({ className, dense, searchTerm, setSearchTerm, placeholder, fullWidth, }: SearchBarProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const SearchBar: ({ className, dense, searchTerm, setSearchTerm, placeholder, fullWidth, label }: SearchBarProps) => import("react/jsx-runtime").JSX.Element;
14
14
  export {};
@@ -1,28 +1,30 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { I as i } from "../../index.es-BzdG6flH.js";
3
- import { T as l } from "../../index.es-BLolvOHO.js";
4
- import '../../assets/SearchBar.css';const u = "_searchbar_gnvwc_1", b = {
5
- searchbar: u
6
- }, f = ({
2
+ import { I as l } from "../../index.es-BzdG6flH.js";
3
+ import { T as u } from "../../index.es-BLolvOHO.js";
4
+ import '../../assets/SearchBar.css';const b = "_searchbar_g83qp_1", d = {
5
+ searchbar: b
6
+ }, g = ({
7
7
  className: r = "",
8
- dense: n = !1,
8
+ dense: e = !1,
9
9
  searchTerm: t,
10
10
  setSearchTerm: a,
11
- placeholder: e,
12
- fullWidth: s = !0
11
+ placeholder: n,
12
+ fullWidth: s = !0,
13
+ label: c
13
14
  }) => /* @__PURE__ */ o(
14
- l,
15
+ u,
15
16
  {
16
17
  "data-testid": "search-bar-input",
17
- className: `${r ?? ""} ${b.searchbar}`,
18
- dense: n,
18
+ className: `${r ?? ""} ${d.searchbar}`,
19
+ dense: e,
20
+ label: c,
19
21
  variant: "outlined",
20
- placeholder: e,
22
+ placeholder: n,
21
23
  value: t,
22
- onChange: (c) => a(c.target.value),
24
+ onChange: (i) => a(i.target.value),
23
25
  fullWidth: s,
24
26
  trailingIcon: /* @__PURE__ */ o(
25
- i,
27
+ l,
26
28
  {
27
29
  "data-testid": "search-bar-icon-button",
28
30
  icon: t ? "close" : "search",
@@ -33,5 +35,5 @@ import '../../assets/SearchBar.css';const u = "_searchbar_gnvwc_1", b = {
33
35
  }
34
36
  );
35
37
  export {
36
- f as SearchBar
38
+ g as SearchBar
37
39
  };
@@ -31,7 +31,11 @@ export type BaseListElement = {
31
31
  */
32
32
  title: string;
33
33
  /**
34
- * the baseview normally show the title in the detail view, if you want to show a different title set this
34
+ * the baseview normally show the item icon in the detail view, if you want to show a different icon set this
35
+ */
36
+ detailIcon?: JSX.Element | string;
37
+ /**
38
+ * the baseview normally show the item title in the detail view, if you want to show a different title set this
35
39
  */
36
40
  detailTitle?: string;
37
41
  /**
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": "2.10.0",
4
+ "version": "2.10.1",
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>",